File trigona_be6dfedd91e1ebc81d58a61b05b0ef93322425b247636a0f7f5c3eeebbc52edd.exe
Function:
    00406940
    00406940fn_406940:
    00406940push rsi
    00406941push rbx
    00406942sub rsp, 40
    00406946mov rbx, rcx
    00406949xor esi, esi
    0040694bmovzx rax, [rbx+8]
    00406950cmp ax, -10319
    00406955jb 0x40698b
    00406957cmp ax, -10317
    0040695cja 0x40698b
    0040695eand ax, -10318
    00406963cmp ax, -10318
    00406968jne 0x406972
    0040696amov rcx, rbx
    0040696dcall [rbx+40]
    00406970mov esi, eax
    00406972
    00406972loc_406972:
    00406972test esi, esi
    00406974jne 0x40697e
    00406976mov rcx, rbx
    00406979call [rbx+56]
    0040697cmov esi, eax
    0040697e
    0040697eloc_40697e:
    0040697etest esi, esi
    00406980je 0x4069a1
    00406982mov ecx, esi
    00406984call fn_405a70
    00406989jmp 0x4069a1
    0040698b
    0040698bloc_40698b:
    0040698blea rax, [rip+0x5e716]
    00406992cmp rbx, rax
    00406995je 0x4069a1
    00406997mov ecx, 103
    0040699ccall fn_405a70
    004069a1
    004069a1loc_4069a1:
    004069a1mov eax, esi
    004069a3add rsp, 40
    004069a7pop rbx
    004069a8pop rsi
    004069a9ret
    00406940
    004069aa
    004069aa // align 0x10
    004069b0
    004069b0fn_4069b0:
    004069b0test rdx, rdx
    004069b3jle 0x406afb
    004069b9mov eax, [rip+0x5f04d]
    004069bftest eax, 512
    004069c4jne 0x406aed
    004069camovzx rax, r8b
    004069cecmp rdx, 16
    004069d2jl 0x406acc
    004069d8test rax, rax
    004069dbje 0x4069f1
    004069ddmov r8, rax
    004069e0shl rax, 8
    004069e4or rax, r8
    004069e7mov r8, rax
    004069eashl rax, 16
    004069eeor rax, r8
    004069f1
    004069f1loc_4069f1:
    004069f1movd x0, eax
    004069f5shufps x0, x0, 0
    004069f9mov r8, rcx
    004069fcand r8, 15
    00406a00je 0x406a17
    00406a02sub r8, 16
    00406a06add rdx, r8
    00406a09sub rcx, r8
    00406a0cnop
    00406a0d
    00406a0dloc_406a0d:
    00406a0dmov [rcx+r8], al
    00406a11add r8, 1
    00406a15jne 0x406a0d
    00406a17
    00406a17loc_406a17:
    00406a17mov r8, 128
    00406a1ecmp rdx, r8
    00406a21jl 0x406a5f
    00406a23sub rdx, r8
    00406a26nop [rax]
    00406a2d
    00406a2dloc_406a2d:
    00406a2dmovdqa [rcx], x0
    00406a31movdqa [rcx+16], x0
    00406a36movdqa [rcx+32], x0
    00406a3bmovdqa [rcx+48], x0
    00406a40movdqa [rcx+64], x0
    00406a45movdqa [rcx+80], x0
    00406a4amovdqa [rcx+96], x0
    00406a4fmovdqa [rcx+112], x0
    00406a54add rcx, r8
    00406a57sub rdx, r8
    00406a5ajg 0x406a2d
    00406a5cadd rdx, r8
    00406a5f
    00406a5floc_406a5f:
    00406a5fshr r8, 1
    00406a62cmp rdx, r8
    00406a65jl 0x406a8b
    00406a67sub rdx, r8
    00406a6anop [rax]
    00406a6d
    00406a6dloc_406a6d:
    00406a6dmovdqa [rcx], x0
    00406a71movdqa [rcx+16], x0
    00406a76movdqa [rcx+32], x0
    00406a7bmovdqa [rcx+48], x0
    00406a80add rcx, r8
    00406a83sub rdx, r8
    00406a86jg 0x406a6d
    00406a88add rdx, r8
    00406a8b
    00406a8bloc_406a8b:
    00406a8bshr r8, 1
    00406a8ecmp rdx, r8
    00406a91jl 0x406ab1
    00406a93sub rdx, r8
    00406a96nop [rax]
    00406a9d
    00406a9dloc_406a9d:
    00406a9dmovdqa [rcx], x0
    00406aa1movdqa [rcx+16], x0
    00406aa6add rcx, r8
    00406aa9sub rdx, r8
    00406aacjg 0x406a9d
    00406aaeadd rdx, r8
    00406ab1
    00406ab1loc_406ab1:
    00406ab1shr r8, 1
    00406ab4cmp rdx, r8
    00406ab7jl 0x406acc
    00406ab9sub rdx, r8
    00406abcnop
    00406abd
    00406abdloc_406abd:
    00406abdmovdqa [rcx], x0
    00406ac1add rcx, r8
    00406ac4sub rdx, r8
    00406ac7jg 0x406abd
    00406ac9add rdx, r8
    00406acc
    00406accloc_406acc:
    00406acctest rdx, rdx
    00406acfje 0x406afb
    00406ad1add rcx, rdx
    00406ad4neg rdx
    00406ad7nop [rax+rax]
    00406add
    00406addloc_406add:
    00406addmov [rcx+rdx], al
    00406ae0add rdx, 1
    00406ae4jne 0x406add
    00406ae6ret
    00406ae7
    00406ae7 66 0f 1f 44 00 00 f..D..
    00406aed
    00406aedloc_406aed:
    00406aedpush rdi
    00406aeecld
    00406aefmov rdi, rcx
    00406af2mov rcx, rdx
    00406af5mov al, r8b
    00406af8rep stosb [rdi], al
    00406afapop rdi
    00406afb
    00406afbloc_406afb:
    00406afbret
    004069b0
    00406afc
    00406afc // align 0x10
    00406b00
    00406b00fn_406b00:
    00406b00push rbx
    00406b01sub rsp, 32
    00406b05mov rbx, rcx
    00406b08lea rax, [rip+0x5e599]
    00406b0fcmp rbx, rax
    00406b12jne 0x406b28
    00406b14movzx ax, [rip+0x5251f]
    00406b1cmov [rbx+10], ax
    00406b20mov rcx, rbx
    00406b23call fn_406340
    00406b28
    00406b28loc_406b28:
    00406b28cmp [rbx+8], -10319
    00406b2esete bl
    00406b31test bl, bl
    00406b33jne 0x406b3f
    00406b35mov ecx, 104
    00406b3acall fn_405a70
    00406b3f
    00406b3floc_406b3f:
    00406b3fmov eax, ebx
    00406b41add rsp, 32
    00406b45pop rbx
    00406b46ret
    00406b00
    00406b47
    00406b47 // align 0x10
    00406b50
    00406b50fn_406b50:
    00406b50push rdi
    00406b51push rsi
    00406b52push rbx
    00406b53sub rsp, 32
    00406b57mov rbx, rcx
    00406b5amov rsi, rdx
    00406b5dmov dil, 26
    00406b60mov [rsi], 1
    00406b63cmp [rbx+8], -10319
    00406b69je 0x406b77
    00406b6bmov rcx, rbx
    00406b6ecall fn_406b00
    00406b73test al, al
    00406b75je 0x406be1
    00406b77
    00406b77loc_406b77:
    00406b77mov eax, [rbx+16]
    00406b7acmp eax, [rbx+20]
    00406b7djb 0x406bb9
    00406b7fmov rcx, rbx
    00406b82call [rbx+40]
    00406b85test eax, eax
    00406b87je 0x406b92
    00406b89mov ecx, eax
    00406b8bcall fn_405a70
    00406b90jmp 0x406be1
    00406b92
    00406b92loc_406b92:
    00406b92mov eax, [rbx+16]
    00406b95cmp eax, [rbx+20]
    00406b98jb 0x406bb9
    00406b9amovzx rcx, [rbx+10]
    00406b9ftest cx, 1
    00406ba4je 0x406be1
    00406ba6mov rcx, [rbx+24]
    00406baamov eax, eax
    00406bacmov [rcx+rax], 26
    00406bb0lea rax, [rbx+20]
    00406bb4add [rax], 1
    00406bb7jmp 0x406be1
    00406bb9
    00406bb9loc_406bb9:
    00406bb9mov rax, [rbx+24]
    00406bbdmov ecx, [rbx+16]
    00406bc0movzx rdi, [rax+rcx]
    00406bc5movzx rax, [rbx+10]
    00406bcatest ax, 1
    00406bcfje 0x406bd7
    00406bd1cmp dil, 26
    00406bd5je 0x406be1
    00406bd7
    00406bd7loc_406bd7:
    00406bd7lea rax, [rbx+16]
    00406bdbadd [rax], 1
    00406bdemov [rsi], 0
    00406be1
    00406be1loc_406be1:
    00406be1mov eax, edi
    00406be4add rsp, 32
    00406be8pop rbx
    00406be9pop rsi
    00406beapop rdi
    00406bebret
    00406b50
    00406bec
    00406bec // align 0x10
    00406bf0
    00406bf0fn_406bf0:
    00406bf0push rdi
    00406bf1push rsi
    00406bf2push rbx
    00406bf3sub rsp, 32
    00406bf7mov rbx, rcx
    00406bfamov rsi, rdx
    00406bfdmov di, 26
    00406c01mov [rsi], 1
    00406c04cmp [rbx+8], -10319
    00406c0aje 0x406c18
    00406c0cmov rcx, rbx
    00406c0fcall fn_406b00
    00406c14test al, al
    00406c16je 0x406c82
    00406c18
    00406c18loc_406c18:
    00406c18mov eax, [rbx+16]
    00406c1bcmp eax, [rbx+20]
    00406c1ejb 0x406c5a
    00406c20mov rcx, rbx
    00406c23call [rbx+40]
    00406c26test eax, eax
    00406c28je 0x406c33
    00406c2amov ecx, eax
    00406c2ccall fn_405a70
    00406c31jmp 0x406c82
    00406c33
    00406c33loc_406c33:
    00406c33mov eax, [rbx+16]
    00406c36cmp eax, [rbx+20]
    00406c39jb 0x406c5a
    00406c3bmovzx rcx, [rbx+10]
    00406c40test cx, 1
    00406c45je 0x406c82
    00406c47mov rcx, [rbx+24]
    00406c4bmov eax, eax
    00406c4dmov [rcx+rax], 26
    00406c51lea rax, [rbx+20]
    00406c55add [rax], 1
    00406c58jmp 0x406c82
    00406c5a
    00406c5aloc_406c5a:
    00406c5amov rax, [rbx+24]
    00406c5emov ecx, [rbx+16]
    00406c61movzx rdi, [rax+rcx]
    00406c66movzx rax, [rbx+10]
    00406c6btest ax, 1
    00406c70je 0x406c78
    00406c72cmp di, 26
    00406c76je 0x406c82
    00406c78
    00406c78loc_406c78:
    00406c78lea rax, [rbx+16]
    00406c7cadd [rax], 2
    00406c7fmov [rsi], 0
    00406c82
    00406c82loc_406c82:
    00406c82mov eax, edi
    00406c84add rsp, 32
    00406c88pop rbx
    00406c89pop rsi
    00406c8apop rdi
    00406c8bret
    00406bf0
    00406c8c
    00406c8c // align 0x10
    00406c90
    00406c90fn_406c90:
    00406c90push rbp
    00406c91push rbx
    00406c92sub rsp, 120
    00406c96mov rbp, rsp
    00406c99mov [rbp+56], rcx
    00406c9dmov [rbp+64], rdx
    00406ca1mov [rbp+76], r8w
    00406ca6mov [rbp+96], 0
    00406caenop
    00406cafmov rax, [rbp+64]
    00406cb3mov [rax], 0
    00406cb6mov rax, [rbp+56]
    00406cbamovzx rax, [rax+746]
    00406cc2test al, al
    00406cc4jge 0x406d2f
    00406cc6mov rcx, [rbp+56]
    00406ccacmp [rcx+747], 0
    00406cd1je 0x406ce0
    00406cd3mov rax, [rbp+56]
    00406cd7mov [rax+746], 0
    00406cdejmp 0x406d2f
    00406ce0
    00406ce0loc_406ce0:
    00406ce0lea rcx, [rbp+89]
    00406ce4mov edx, 6
    00406ce9mov r8, [rbp+56]
    00406cedlea r8, [r8+748]
    00406cf4movsx r9, al
    00406cf8neg r9l
    00406cfbmovzx rax, [rbp+76]
    00406d00movzx eax, ax
    00406d03mov [rsp+32], eax
    00406d07call fn_40bf50
    00406d0cmov ebx, eax
    00406d0emov rax, [rbp+56]
    00406d12mov [rax+746], bl
    00406d18lea rcx, [rbp+89]
    00406d1cmov rax, [rbp+56]
    00406d20lea rdx, [rax+748]
    00406d27movsxd r8, ebx
    00406d2acall fn_405ac0
    00406d2f
    00406d2floc_406d2f:
    00406d2fmov rax, [rbp+56]
    00406d33cmp [rax+746], 0
    00406d3ajle 0x406d59
    00406d3cmov rcx, [rbp+56]
    00406d40movzx rax, [rcx+747]
    00406d48movzx rax, [rcx+rax+748]
    00406d51mov [rbp+79], al
    00406d54jmp 0x406e72
    00406d59
    00406d59loc_406d59:
    00406d59movzx rax, [rbp+76]
    00406d5emov rcx, [rbp+56]
    00406d62cmp [rcx+744], ax
    00406d69jne 0x406d98
    00406d6bmov rcx, [rbp+56]
    00406d6fmov rdx, [rbp+64]
    00406d73call fn_406b50
    00406d78mov [rbp+79], al
    00406d7bmov rax, [rbp+64]
    00406d7fcmp [rax], 0
    00406d82jne 0x406e71
    00406d88mov rax, [rbp+56]
    00406d8clea rax, [rax+16]
    00406d90sub [rax], 1
    00406d93jmp 0x406e71
    00406d98
    00406d98loc_406d98:
    00406d98mov ebx, 1
    00406d9dmov rcx, [rbp+56]
    00406da1mov rdx, [rbp+64]
    00406da5call fn_406ef0
    00406daamov [rbp+106], ax
    00406daemov rax, [rbp+64]
    00406db2cmp [rax], 0
    00406db5jne 0x406e6c
    00406dbbmovzx rax, [rbp+106]
    00406dc0cmp ax, -10240
    00406dc5jb 0x406dfb
    00406dc7cmp ax, -9216
    00406dccjae 0x406dfb
    00406dceadd ebx, 1
    00406dd1mov rcx, [rbp+56]
    00406dd5call fn_407220
    00406ddamov rcx, [rbp+56]
    00406ddemov rdx, [rbp+64]
    00406de2call fn_406ef0
    00406de7mov [rbp+108], ax
    00406debmov rax, [rbp+64]
    00406defcmp [rax], 0
    00406df2je 0x406dfb
    00406df4mov al, 26
    00406df6mov [rbp+79], al
    00406df9jmp 0x406e72
    00406dfb
    00406dfbloc_406dfb:
    00406dfbmov rcx, [rbp+56]
    00406dffcall fn_407220
    00406e04lea rcx, [rbp+96]
    00406e08lea rdx, [rbp+106]
    00406e0cmov r8l, ebx
    00406e0fmovzx r9, [rbp+76]
    00406e14call fn_40c2b0
    00406e19mov rcx, [rbp+96]
    00406e1dcall fn_40c570
    00406e22mov ebx, eax
    00406e24test ebx, ebx
    00406e26jne 0x406e2f
    00406e28xor eax, eax
    00406e2amov [rbp+79], al
    00406e2djmp 0x406e71
    00406e2f
    00406e2floc_406e2f:
    00406e2flea rcx, [rbp+96]
    00406e33call fn_40c690
    00406e38mov rcx, rax
    00406e3bmov rax, [rbp+56]
    00406e3flea rdx, [rax+748]
    00406e46movsxd r8, ebx
    00406e49call fn_405ac0
    00406e4emov rax, [rbp+56]
    00406e52mov [rax+747], 0
    00406e59mov [rax+746], bl
    00406e5fmov rax, [rbp+96]
    00406e63movzx rax, [rax]
    00406e67mov [rbp+79], al
    00406e6ajmp 0x406e71
    00406e6c
    00406e6cloc_406e6c:
    00406e6cmov al, 26
    00406e6emov [rbp+79], al
    00406e71
    00406e71loc_406e71:
    00406e71nop
    00406e72
    00406e72loc_406e72:
    00406e72lea rcx, [rbp+96]
    00406e76call fn_40bd40
    00406e7bmovzx rax, [rbp+79]
    00406e80lea rsp, [rbp+120]
    00406e84pop rbx
    00406e85pop rbp
    00406e86ret
    00406c90
    00406e87
    00406e87 90 48 8d 04 05 00 00 00 00 .H.......
    00406e90
    00406e90fn_406e90:
    00406e90push rbp
    00406e91sub rsp, 32
    00406e95mov rbp, rsp
    00406e98lea rcx, [rdx+96]
    00406e9ccall fn_40bd40
    00406ea1lea rsp, [rbp+32]
    00406ea5pop rbp
    00406ea6ret
    00406e90
    00406ea7
    00406ea7 // align 0x10
    00406eb0
    00406eb0fn_406eb0:
    00406eb0cmp [rcx+746], 0
    00406eb7jle 0x406edc
    00406eb9lea rax, [rcx+747]
    00406ec0add [rax], 1
    00406ec3movzx rax, [rcx+746]
    00406ecbcmp al, [rcx+747]
    00406ed1jne 0x406ee3
    00406ed3mov [rcx+746], 0
    00406edajmp 0x406ee3
    00406edc
    00406edcloc_406edc:
    00406edclea rax, [rcx+16]
    00406ee0add [rax], 1
    00406ee3
    00406ee3loc_406ee3:
    00406ee3ret
    00406eb0
    00406ee4
    00406ee4 // align 0x10
    00406ef0
    00406ef0fn_406ef0:
    00406ef0push rbp
    00406ef1push rdi
    00406ef2push rsi
    00406ef3push rbx
    00406ef4sub rsp, 120
    00406ef8mov rbp, rsp
    00406efbmov [rbp+56], rcx
    00406effmov [rbp+64], rdx
    00406f03mov [rbp+96], 0
    00406f0bmov [rbp+88], 0
    00406f13nop
    00406f14mov rax, [rbp+64]
    00406f18mov [rax], 0
    00406f1bmov rax, [rbp+56]
    00406f1fmovzx rax, [rax+746]
    00406f27test al, al
    00406f29jle 0x406f9a
    00406f2bmov rcx, [rbp+56]
    00406f2fcmp [rcx+747], 0
    00406f36je 0x406f45
    00406f38mov rax, [rbp+56]
    00406f3cmov [rax+746], 0
    00406f43jmp 0x406f9a
    00406f45
    00406f45loc_406f45:
    00406f45lea rcx, [rbp+108]
    00406f49mov edx, 2
    00406f4emov r8, [rbp+56]
    00406f52lea r8, [r8+748]
    00406f59movsx r9, al
    00406f5dmov eax, [rip+0x5eab5]
    00406f63mov [rsp+32], eax
    00406f67call fn_40bfa0
    00406f6cmov edi, eax
    00406f6emov eax, edi
    00406f71neg al
    00406f73mov rcx, [rbp+56]
    00406f77mov [rcx+746], al
    00406f7dlea rcx, [rbp+108]
    00406f81mov rax, [rbp+56]
    00406f85lea rdx, [rax+748]
    00406f8cmov r8l, edi
    00406f8fadd r8l, r8l
    00406f92movsxd r8, r8l
    00406f95call fn_405ac0
    00406f9a
    00406f9aloc_406f9a:
    00406f9amov rax, [rbp+56]
    00406f9ecmp [rax+746], 0
    00406fa5jge 0x406fc5
    00406fa7mov rcx, [rbp+56]
    00406fabmovzx rax, [rcx+747]
    00406fb3movzx rax, [rcx+2*rax+748]
    00406fbcmov [rbp+78], ax
    00406fc0jmp 0x4071cf
    00406fc5
    00406fc5loc_406fc5:
    00406fc5mov rax, [rbp+56]
    00406fc9cmp [rax+744], 1200
    00406fd2jne 0x407002
    00406fd4mov rcx, [rbp+56]
    00406fd8mov rdx, [rbp+64]
    00406fdccall fn_406bf0
    00406fe1mov [rbp+78], ax
    00406fe5mov rax, [rbp+64]
    00406fe9cmp [rax], 0
    00406fecjne 0x4071ce
    00406ff2mov rax, [rbp+56]
    00406ff6lea rax, [rax+16]
    00406ffasub [rax], 2
    00406ffdjmp 0x4071ce
    00407002
    00407002loc_407002:
    00407002mov rcx, [rbp+56]
    00407006mov rdx, [rbp+64]
    0040700acall fn_406b50
    0040700fmov ebx, eax
    00407011mov rax, [rbp+64]
    00407015cmp [rax], 0
    00407018je 0x407027
    0040701amov ax, 26
    0040701emov [rbp+78], ax
    00407022jmp 0x4071cf
    00407027
    00407027loc_407027:
    00407027mov rax, [rbp+56]
    0040702bcmp [rax+744], -535
    00407034jne 0x4070d5
    0040703amov eax, ebx
    0040703csub al, -64
    0040703fcmp al, 31
    00407042ja 0x40705f
    00407044mov edx, 1
    00407049movzx rcx, al
    0040704dand ecx, 127
    00407050shl edx, cl
    00407052mov eax, [rip+448]
    00407058test edx, eax
    0040705asetne al
    0040705djmp 0x407061
    0040705f
    0040705floc_40705f:
    0040705fxor eax, eax
    00407061
    00407061loc_407061:
    00407061test al, al
    00407063je 0x40706f
    00407065mov edi, 2
    0040706ajmp 0x4070f2
    0040706f
    0040706floc_40706f:
    0040706fmov eax, ebx
    00407071sub al, -32
    00407074cmp al, 15
    00407077ja 0x407097
    00407079mov dx, 1
    0040707dmovzx cx, al
    00407081and cx, 127
    00407085shl edx, cl
    00407087movzx rax, [rip+397]
    0040708ftest dx, ax
    00407092setne al
    00407095jmp 0x407099
    00407097
    00407097loc_407097:
    00407097xor eax, eax
    00407099
    00407099loc_407099:
    00407099test al, al
    0040709bje 0x4070a4
    0040709dmov edi, 3
    004070a2jmp 0x4070f2
    004070a4
    004070a4loc_4070a4:
    004070a4mov ecx, ebx
    004070a6sub cl, -16
    004070a9cmp cl, 7
    004070acja 0x4070c1
    004070aemov al, 1
    004070b0shl eax, cl
    004070b2movzx rcx, [rip+356]
    004070batest al, cl
    004070bcsetne al
    004070bfjmp 0x4070c3
    004070c1
    004070c1loc_4070c1:
    004070c1xor eax, eax
    004070c3
    004070c3loc_4070c3:
    004070c3test al, al
    004070c5je 0x4070ce
    004070c7mov edi, 4
    004070ccjmp 0x4070f2
    004070ce
    004070celoc_4070ce:
    004070cemov edi, 1
    004070d3jmp 0x4070f2
    004070d5
    004070d5loc_4070d5:
    004070d5mov ecx, [rip+0x5e93d]
    004070dbmov edx, ebx
    004070ddcall IsDBCSLeadByteEx
    004070e2test eax, eax
    004070e4je 0x4070ed
    004070e6mov edi, 2
    004070ebjmp 0x4070f2
    004070ed
    004070edloc_4070ed:
    004070edmov edi, 1
    004070f2
    004070f2loc_4070f2:
    004070f2lea rcx, [rbp+96]
    004070f6mov edx, edi
    004070f8xor r8, r8
    004070fbcall fn_40cf30
    00407100lea rcx, [rbp+96]
    00407104mov rax, [rbp+56]
    00407108movzx rdx, [rax+744]
    00407110xor r8, r8
    00407113call fn_40dfb0
    00407118lea rcx, [rbp+96]
    0040711ccall fn_40c690
    00407121mov [rax], bl
    00407123mov esi, 2
    00407128sub edi, 1
    0040712btest edi, edi
    0040712djle 0x407158
    0040712f
    0040712floc_40712f:
    0040712fmov rcx, [rbp+56]
    00407133mov rdx, [rbp+64]
    00407137call fn_406b50
    0040713cmov ebx, eax
    0040713elea rcx, [rbp+96]
    00407142call fn_40c690
    00407147movsxd rcx, esi
    0040714amov [rax+rcx-1], bl
    0040714eadd esi, 1
    00407151sub edi, 1
    00407154test edi, edi
    00407156jg 0x40712f
    00407158
    00407158loc_407158:
    00407158nop
    00407159lea rcx, [rbp+88]
    0040715dmov rdx, [rbp+96]
    00407161call fn_40d7f0
    00407166mov rcx, [rbp+88]
    0040716acall fn_40c560
    0040716fmov edi, eax
    00407171test edi, edi
    00407173jle 0x4071c8
    00407175lea rcx, [rbp+88]
    00407179call fn_40c680
    0040717emov rcx, rax
    00407181mov rax, [rbp+56]
    00407185lea rdx, [rax+748]
    0040718cmov r8l, edi
    0040718fadd r8l, r8l
    00407192movsxd r8, r8l
    00407195call fn_405ac0
    0040719amov rax, [rbp+56]
    0040719emov [rax+747], 0
    004071a5mov rcx, [rbp+88]
    004071a9call fn_40c560
    004071aeneg al
    004071b0mov rcx, [rbp+56]
    004071b4mov [rcx+746], al
    004071bamov rax, [rbp+88]
    004071bemovzx rax, [rax]
    004071c2mov [rbp+78], ax
    004071c6jmp 0x4071ce
    004071c8
    004071c8loc_4071c8:
    004071c8xor eax, eax
    004071camov [rbp+78], ax
    004071ce
    004071celoc_4071ce:
    004071cenop
    004071cf
    004071cfloc_4071cf:
    004071cflea rcx, [rbp+88]
    004071d3call fn_40bcf0
    004071d8lea rcx, [rbp+96]
    004071dccall fn_40bd40
    004071e1movzx rax, [rbp+78]
    004071e6lea rsp, [rbp+120]
    004071eapop rbx
    004071ebpop rsi
    004071ecpop rdi
    004071edpop rbp
    004071eeret
    00406ef0
    004071ef
    004071ef // align 0x10
    004071f0
    004071f0fn_4071f0:
    004071f0push rbp
    004071f1push rbx
    004071f2sub rsp, 40
    004071f6mov rbp, rsp
    004071f9mov rbx, rdx
    004071fclea rcx, [rbx+88]
    00407200call fn_40bcf0
    00407205lea rcx, [rbx+96]
    00407209call fn_40bd40
    0040720elea rsp, [rbp+40]
    00407212pop rbx
    00407213pop rbp
    00407214ret
    004071f0
    00407215
    00407215 00 00 00 fc ff ff ff ff ff 1f cc ...........
    00407220
    00407220fn_407220:
    00407220cmp [rcx+746], 0
    00407227jge 0x407252
    00407229lea rax, [rcx+747]
    00407230add [rax], 1
    00407233movsx rax, [rcx+746]
    0040723bneg eax
    0040723dmovzx rdx, [rcx+747]
    00407245cmp eax, edx
    00407247jne 0x407259
    00407249mov [rcx+746], 0
    00407250jmp 0x407259
    00407252
    00407252loc_407252:
    00407252lea rax, [rcx+16]
    00407256add [rax], 2
    00407259
    00407259loc_407259:
    00407259ret
    00407220
    0040725a
    0040725a // align 0x10
    00407260
    00407260fn_407260:
    00407260mov [rcx+748], 13
    00407267mov [rcx+749], 10
    0040726emov [rcx+746], 2
    00407275mov [rcx+747], 0
    0040727cret
    00407260
    0040727d
    0040727d // align 0x10
    00407280
    00407280fn_407280:
    00407280push rbp
    00407281push r14
    00407283push r13
    00407285push rdi
    00407286push rsi
    00407287push rbx
    00407288sub rsp, 56
    0040728cmov rbp, rsp
    0040728fmov rbx, rcx
    00407292mov rsi, rdx
    00407295mov edi, r8l
    00407298mov r13, r9
    0040729bmov r14, rbx
    0040729emov [r13], 0
    004072a6cmp [rbx+8], -10319
    004072acje 0x4072be
    004072aemov rcx, rbx
    004072b1call fn_406b00
    004072b6test al, al
    004072b8je 0x407355
    004072be
    004072beloc_4072be:
    004072betest edi, edi
    004072c0jle 0x407355
    004072c6cmp [rbp+144], 0
    004072cejne 0x4072df
    004072d0movzx rax, [rip+0x5e740]
    004072d8mov [rbp+144], ax
    004072df
    004072dfloc_4072df:
    004072dftest edi, edi
    004072e1jle 0x407354
    004072e3
    004072e3loc_4072e3:
    004072e3mov rcx, rbx
    004072e6lea rdx, [rbp+47]
    004072eamovzx r8, [rbp+144]
    004072f2call fn_406c90
    004072f7cmp [rbp+47], 0
    004072fbjne 0x407355
    004072fdcmp al, 10
    00407300je 0x407355
    00407302cmp al, 13
    00407305jne 0x40733a
    00407307mov rcx, rbx
    0040730acall fn_406eb0
    0040730fmov rcx, rbx
    00407312lea rdx, [rbp+47]
    00407316movzx r8, [rbp+144]
    0040731ecall fn_406c90
    00407323cmp al, 10
    00407326jne 0x407350
    00407328mov rcx, rbx
    0040732bcall fn_406eb0
    00407330mov rcx, rbx
    00407333call fn_407260
    00407338jmp 0x407355
    0040733a
    0040733aloc_40733a:
    0040733amov [rsi], al
    0040733cmov rcx, rbx
    0040733fcall fn_406eb0
    00407344add rsi, 1
    00407348sub edi, 1
    0040734badd [r13], 1
    00407350
    00407350loc_407350:
    00407350test edi, edi
    00407352jg 0x4072e3
    00407354
    00407354loc_407354:
    00407354nop
    00407355
    00407355loc_407355:
    00407355mov rax, r14
    00407358lea rsp, [rbp+56]
    0040735cpop rbx
    0040735dpop rsi
    0040735epop rdi
    0040735fpop r13
    00407361pop r14
    00407363pop rbp
    00407364ret
    00407280
    00407365
    00407365 // align 0x10
    00407370
    00407370fn_407370:
    00407370push rbp
    00407371push r14
    00407373push r13
    00407375push rdi
    00407376push rsi
    00407377push rbx
    00407378sub rsp, 72
    0040737cmov rbp, rsp
    0040737fmov rbx, rcx
    00407382mov rsi, rdx
    00407385mov edi, r8l
    00407388mov r13, r9
    0040738bcmp [rbx+746], 0
    00407392je 0x4073ba
    00407394mov rcx, rbx
    00407397mov rdx, rsi
    0040739amov r8l, edi
    0040739dmov r9, r13
    004073a0movzx rax, [rbx+744]
    004073a8mov [rsp+32], ax
    004073adcall fn_407280
    004073b2mov r14, rax
    004073b5jmp 0x407442
    004073ba
    004073baloc_4073ba:
    004073bamov r14, rbx
    004073bdmov [r13], 0
    004073c5cmp [rbx+8], -10319
    004073cbje 0x4073d9
    004073cdmov rcx, rbx
    004073d0call fn_406b00
    004073d5test al, al
    004073d7je 0x407442
    004073d9
    004073d9loc_4073d9:
    004073d9test edi, edi
    004073dbjle 0x407442
    004073ddtest edi, edi
    004073dfjle 0x407441
    004073e1
    004073e1loc_4073e1:
    004073e1mov rcx, rbx
    004073e4lea rdx, [rbp+63]
    004073e8call fn_406b50
    004073edcmp [rbp+63], 0
    004073f1jne 0x407442
    004073f3cmp al, 10
    004073f6jne 0x407401
    004073f8lea rax, [rbx+16]
    004073fcsub [rax], 1
    004073ffjmp 0x407442
    00407401
    00407401loc_407401:
    00407401cmp al, 13
    00407404jne 0x40742f
    00407406mov rcx, rbx
    00407409lea rdx, [rbp+63]
    0040740dcall fn_406b50
    00407412cmp al, 26
    00407415je 0x407442
    00407417cmp al, 10
    0040741ajne 0x407426
    0040741cmov rcx, rbx
    0040741fcall fn_407260
    00407424jmp 0x407442
    00407426
    00407426loc_407426:
    00407426lea rax, [rbx+16]
    0040742asub [rax], 1
    0040742djmp 0x40743d
    0040742f
    0040742floc_40742f:
    0040742fmov [rsi], al
    00407431add rsi, 1
    00407435sub edi, 1
    00407438add [r13], 1
    0040743d
    0040743dloc_40743d:
    0040743dtest edi, edi
    0040743fjg 0x4073e1
    00407441
    00407441loc_407441:
    00407441nop
    00407442
    00407442loc_407442:
    00407442mov rax, r14
    00407445lea rsp, [rbp+72]
    00407449pop rbx
    0040744apop rsi
    0040744bpop rdi
    0040744cpop r13
    0040744epop r14
    00407450pop rbp
    00407451ret
    00407370
    00407452
    00407452 // align 0x10
    00407460
    00407460fn_407460:
    00407460push rbp
    00407461push r14
    00407463push r13
    00407465push rdi
    00407466push rsi
    00407467push rbx
    00407468sub rsp, 72
    0040746cmov rbp, rsp
    0040746fmov rbx, rcx
    00407472mov rsi, rdx
    00407475mov edi, r8l
    00407478mov r13, r9
    0040747bcmp [rbx+746], 0
    00407482je 0x4074aa
    00407484mov rcx, rbx
    00407487mov rdx, rsi
    0040748amov r8l, edi
    0040748dmov r9, r13
    00407490movzx rax, [rbx+744]
    00407498mov [rsp+32], ax
    0040749dcall fn_407280
    004074a2mov r14, rax
    004074a5jmp 0x407531
    004074aa
    004074aaloc_4074aa:
    004074aamov r14, rbx
    004074admov [r13], 0
    004074b5cmp [rbx+8], -10319
    004074bbje 0x4074c9
    004074bdmov rcx, rbx
    004074c0call fn_406b00
    004074c5test al, al
    004074c7je 0x407531
    004074c9
    004074c9loc_4074c9:
    004074c9test edi, edi
    004074cbjle 0x407531
    004074cdtest edi, edi
    004074cfjle 0x407530
    004074d1
    004074d1loc_4074d1:
    004074d1mov rcx, rbx
    004074d4lea rdx, [rbp+63]
    004074d8call fn_406bf0
    004074ddcmp [rbp+63], 0
    004074e1jne 0x407531
    004074e3cmp ax, 10
    004074e7jne 0x4074f2
    004074e9lea rax, [rbx+16]
    004074edsub [rax], 2
    004074f0jmp 0x407531
    004074f2
    004074f2loc_4074f2:
    004074f2cmp ax, 13
    004074f6jne 0x40751d
    004074f8mov rcx, rbx
    004074fblea rdx, [rbp+63]
    004074ffcall fn_406bf0
    00407504cmp ax, 10
    00407508jne 0x407514
    0040750amov rcx, rbx
    0040750dcall fn_407260
    00407512jmp 0x407531
    00407514
    00407514loc_407514:
    00407514lea rax, [rbx+16]
    00407518sub [rax], 2
    0040751bjmp 0x40752c
    0040751d
    0040751dloc_40751d:
    0040751dmov [rsi], ax
    00407520add rsi, 2
    00407524sub edi, 1
    00407527add [r13], 1
    0040752c
    0040752cloc_40752c:
    0040752ctest edi, edi
    0040752ejg 0x4074d1
    00407530
    00407530loc_407530:
    00407530nop
    00407531
    00407531loc_407531:
    00407531mov rax, r14
    00407534lea rsp, [rbp+72]
    00407538pop rbx
    00407539pop rsi
    0040753apop rdi
    0040753bpop r13
    0040753dpop r14
    0040753fpop rbp
    00407540ret
    00407460
    00407541
    00407541 // align 0x10
    00407550
    00407550fn_407550:
    00407550push rbp
    00407551sub rsp, 96
    00407555mov rbp, rsp
    00407558mov [rbp+40], rcx
    0040755cmov [rbp+48], rdx
    00407560mov [rbp+62], r8w
    00407565mov [rbp+80], 0
    0040756dmov [rbp+72], 0
    00407575mov [rbp+64], 0
    0040757dnop
    0040757emov rcx, [rbp+48]
    00407582call fn_40bd40
    00407587mov rax, [rbp+40]
    0040758bcmp [rax+744], 0
    00407593jne 0x40759e
    00407595mov rcx, [rbp+40]
    00407599call fn_406b00
    0040759e
    0040759eloc_40759e:
    0040759emov rax, [rbp+40]
    004075a2cmp [rax+744], 1200
    004075abjne 0x4075d1
    004075admov rcx, [rbp+40]
    004075b1lea rdx, [rbp+64]
    004075b5call fn_407750
    004075bamov rcx, [rbp+48]
    004075bemov rdx, [rbp+64]
    004075c2movzx r8, [rbp+62]
    004075c7call fn_40cff0
    004075ccjmp 0x4076f7
    004075d1
    004075d1loc_4075d1:
    004075d1lea rcx, [rbp+72]
    004075d5mov edx, 255
    004075daxor r8, r8
    004075ddcall fn_40cf30
    004075e2lea rcx, [rbp+72]
    004075e6mov rax, [rbp+40]
    004075eamovzx rdx, [rax+744]
    004075f2xor r8, r8
    004075f5call fn_40dfb0
    004075falea rcx, [rbp+72]
    004075fecall fn_40c690
    00407603mov rcx, [rbp+40]
    00407607mov rdx, rax
    0040760amov r8l, 255
    00407610lea r9, [rbp+92]
    00407614call fn_407370
    00407619lea rcx, [rbp+72]
    0040761dmov edx, [rbp+92]
    00407620xor r8, r8
    00407623call fn_40cf30
    00407628lea rcx, [rbp+80]
    0040762cmov rdx, [rbp+72]
    00407630call fn_40c520
    00407635cmp [rbp+92], 255
    0040763cjne 0x4076ab
    0040763e
    0040763eloc_40763e:
    0040763elea rcx, [rbp+72]
    00407642mov edx, 255
    00407647xor r8, r8
    0040764acall fn_40cf30
    0040764flea rcx, [rbp+72]
    00407653mov rax, [rbp+40]
    00407657movzx rdx, [rax+744]
    0040765fxor r8, r8
    00407662call fn_40dfb0
    00407667lea rcx, [rbp+72]
    0040766bcall fn_40c690
    00407670mov rcx, [rbp+40]
    00407674mov rdx, rax
    00407677mov r8l, 255
    0040767dlea r9, [rbp+92]
    00407681call fn_407370
    00407686lea rcx, [rbp+72]
    0040768amov edx, [rbp+92]
    0040768dxor r8, r8
    00407690call fn_40cf30
    00407695lea rcx, [rbp+80]
    00407699mov rdx, [rbp+72]
    0040769dcall fn_40c910
    004076a2cmp [rbp+92], 255
    004076a9je 0x40763e
    004076ab
    004076abloc_4076ab:
    004076abnop
    004076acmovzx rax, [rbp+62]
    004076b1mov rcx, [rbp+40]
    004076b5cmp ax, [rcx+744]
    004076bcmov [rbp+62], ax
    004076c0je 0x4076ea
    004076c2cmp [rbp+80], 0
    004076c7je 0x4076f7
    004076c9lea rcx, [rbp+64]
    004076cdmov rdx, [rbp+80]
    004076d1call fn_40d7f0
    004076d6mov rcx, [rbp+48]
    004076damov rdx, [rbp+64]
    004076demovzx r8, [rbp+62]
    004076e3call fn_40cff0
    004076e8jmp 0x4076f7
    004076ea
    004076ealoc_4076ea:
    004076eamov rcx, [rbp+48]
    004076eemov rdx, [rbp+80]
    004076f2call fn_40c4a0
    004076f7
    004076f7loc_4076f7:
    004076f7nop
    004076f8lea rcx, [rbp+64]
    004076fccall fn_40bcf0
    00407701lea rcx, [rbp+72]
    00407705mov edx, 2
    0040770acall fn_40be20
    0040770flea rsp, [rbp+96]
    00407713pop rbp
    00407714ret
    00407550
    00407715
    00407715 48 8b c0 48 8d 04 05 00 00 00 00 H..H.......
    00407720
    00407720fn_407720:
    00407720push rbp
    00407721push rbx
    00407722sub rsp, 40
    00407726mov rbp, rsp
    00407729mov rbx, rdx
    0040772clea rcx, [rbx+64]
    00407730call fn_40bcf0
    00407735lea rcx, [rbx+72]
    00407739mov edx, 2
    0040773ecall fn_40be20
    00407743lea rsp, [rbp+40]
    00407747pop rbx
    00407748pop rbp
    00407749ret
    00407720
    0040774a
    0040774a // align 0x10
    00407750
    00407750fn_407750:
    00407750push rbp
    00407751sub rsp, 80
    00407755mov rbp, rsp
    00407758mov [rbp+32], rcx
    0040775cmov [rbp+40], rdx
    00407760mov [rbp+64], 0
    00407768mov [rbp+56], 0
    00407770nop
    00407771mov rcx, [rbp+40]
    00407775call fn_40bcf0
    0040777amov rax, [rbp+32]
    0040777ecmp [rax+744], 0
    00407786jne 0x407791
    00407788mov rcx, [rbp+32]
    0040778ccall fn_406b00
    00407791
    00407791loc_407791:
    00407791mov rax, [rbp+32]
    00407795movzx rax, [rax+744]
    0040779dcmp ax, 1200
    004077a2jne 0x40784a
    004077a8lea rcx, [rbp+64]
    004077acmov edx, 255
    004077b1call fn_40d8d0
    004077b6mov rcx, [rbp+32]
    004077bamov rdx, [rbp+64]
    004077bemov r8l, 255
    004077c4lea r9, [rbp+76]
    004077c8call fn_407460
    004077cdlea rcx, [rbp+64]
    004077d1mov edx, [rbp+76]
    004077d4call fn_40d8d0
    004077d9mov rcx, [rbp+40]
    004077ddmov rdx, [rbp+64]
    004077e1call fn_40c360
    004077e6cmp [rbp+76], 255
    004077edjne 0x407847
    004077ef
    004077efloc_4077ef:
    004077eflea rcx, [rbp+64]
    004077f3mov edx, 255
    004077f8call fn_40d8d0
    004077fdmov rcx, [rbp+64]
    00407801call fn_40d710
    00407806mov rcx, [rbp+32]
    0040780amov rdx, rax
    0040780dmov r8l, 255
    00407813lea r9, [rbp+76]
    00407817call fn_407460
    0040781clea rcx, [rbp+64]
    00407820mov edx, [rbp+76]
    00407823call fn_40d8d0
    00407828mov rcx, [rbp+40]
    0040782cmov rdx, [rbp+64]
    00407830call fn_40d9b0
    00407835lea rcx, [rbp+64]
    00407839call fn_40bcf0
    0040783ecmp [rbp+76], 255
    00407845je 0x4077ef
    00407847
    00407847loc_407847:
    00407847nop
    00407848jmp 0x40786e
    0040784a
    0040784aloc_40784a:
    0040784amov rcx, [rbp+32]
    0040784elea rdx, [rbp+56]
    00407852mov r8l, eax
    00407855call fn_407550
    0040785acmp [rbp+56], 0
    0040785fje 0x40786e
    00407861mov rcx, [rbp+40]
    00407865mov rdx, [rbp+56]
    00407869call fn_40d7f0
    0040786e
    0040786eloc_40786e:
    0040786enop
    0040786flea rcx, [rbp+56]
    00407873call fn_40bd40
    00407878lea rcx, [rbp+64]
    0040787ccall fn_40bcf0
    00407881lea rsp, [rbp+80]
    00407885pop rbp
    00407886ret
    00407750
    00407887
    00407887 90 48 8d 04 05 00 00 00 00 .H.......
    00407890
    00407890fn_407890:
    00407890push rbp
    00407891push rbx
    00407892sub rsp, 40
    00407896mov rbp, rsp
    00407899mov rbx, rdx
    0040789clea rcx, [rbx+56]
    004078a0call fn_40bd40
    004078a5lea rcx, [rbx+64]
    004078a9call fn_40bcf0
    004078aelea rsp, [rbp+40]
    004078b2pop rbx
    004078b3pop rbp
    004078b4ret
    00407890
    004078b5
    004078b5 // align 0x10
    004078c0
    004078c0fn_4078c0:
    004078c0push rbp
    004078c1push rsi
    004078c2push rbx
    004078c3sub rsp, 48
    004078c7mov rbp, rsp
    004078camov rbx, rcx
    004078cdmov rcx, rbx
    004078d0lea rdx, [rbp+47]
    004078d4movzx r8, [rip+0x5e13c]
    004078dccall fn_406c90
    004078e1mov esi, eax
    004078e4mov rcx, rbx
    004078e7call fn_406eb0
    004078ec
    004078ecloc_4078ec:
    004078eccmp sil, 10
    004078f0je 0x40794c
    004078f2cmp [rbp+47], 0
    004078f6jne 0x40794c
    004078f8cmp sil, 13
    004078fcjne 0x40792b
    004078femov rcx, rbx
    00407901lea rdx, [rbp+47]
    00407905movzx r8, [rip+0x5e10b]
    0040790dcall fn_406c90
    00407912mov esi, eax
    00407915mov rcx, rbx
    00407918call fn_406eb0
    0040791dcmp sil, 10
    00407921je 0x40794c
    00407923cmp [rbp+47], 0
    00407927jne 0x40794c
    00407929jmp 0x4078ec
    0040792b
    0040792bloc_40792b:
    0040792bmov rcx, rbx
    0040792elea rdx, [rbp+47]
    00407932movzx r8, [rip+0x5e0de]
    0040793acall fn_406c90
    0040793fmov esi, eax
    00407942mov rcx, rbx
    00407945call fn_406eb0
    0040794ajmp 0x4078ec
    0040794c
    0040794cloc_40794c:
    0040794cnop
    0040794dlea rsp, [rbp+48]
    00407951pop rbx
    00407952pop rsi
    00407953pop rbp
    00407954ret
    004078c0
    00407955
    00407955 // align 0x10
    00407960
    00407960fn_407960:
    00407960push r14
    00407962push r13
    00407964push rdi
    00407965push rsi
    00407966push rbx
    00407967sub rsp, 48
    0040796bmov [rsp+40], rcx
    00407970mov rbx, rdx
    00407973mov edi, 1
    00407978xor r13, r13
    0040797bxor esi, esi
    0040797dmov r14b, 1
    00407980mov rax, [rsp+40]
    00407985test rax, rax
    00407988jne 0x407998
    0040798amov [rbx], 1
    00407990jmp 0x407b30
    00407995
    00407995loc_407995:
    00407995add edi, 1
    00407998
    00407998loc_407998:
    00407998movsxd rax, edi
    0040799bmov rcx, [rsp+40]
    004079a0cmp [rcx+2*rax-2], 32
    004079a6je 0x407995
    004079a8movsxd rax, edi
    004079abmov rcx, [rsp+40]
    004079b0movzx rax, [rcx+2*rax-2]
    004079b6cmp ax, 45
    004079bajne 0x4079c4
    004079bcmov r13b, 1
    004079bfadd edi, 1
    004079c2jmp 0x4079cd
    004079c4
    004079c4loc_4079c4:
    004079c4cmp ax, 43
    004079c8jne 0x4079cd
    004079caadd edi, 1
    004079cd
    004079cdloc_4079cd:
    004079cdmovsxd rax, edi
    004079d0mov rcx, [rsp+40]
    004079d5cmp [rcx+2*rax-2], 48
    004079dbjne 0x407a0a
    004079ddmov rcx, [rsp+40]
    004079e2call fn_40c560
    004079e7cmp edi, eax
    004079e9jge 0x407a0a
    004079ebmov eax, edi
    004079edadd eax, 1
    004079f0movsxd rax, eax
    004079f3mov rcx, [rsp+40]
    004079f8movzx rax, [rcx+2*rax-2]
    004079fecmp ax, 88
    00407a02je 0x407a3a
    00407a04cmp ax, 120
    00407a08je 0x407a3a
    00407a0a
    00407a0aloc_407a0a:
    00407a0amovsxd rax, edi
    00407a0dmov rcx, [rsp+40]
    00407a12cmp [rcx+2*rax-2], 36
    00407a18je 0x407a3a
    00407a1amovsxd rax, edi
    00407a1dmov rcx, [rsp+40]
    00407a22cmp [rcx+2*rax-2], 88
    00407a28je 0x407a3a
    00407a2amovsxd rax, edi
    00407a2dmov rcx, [rsp+40]
    00407a32cmp [rcx+2*rax-2], 120
    00407a38jne 0x407ab9
    00407a3a
    00407a3aloc_407a3a:
    00407a3amovsxd rax, edi
    00407a3dmov rcx, [rsp+40]
    00407a42cmp [rcx+2*rax-2], 48
    00407a48jne 0x407a4d
    00407a4aadd edi, 1
    00407a4d
    00407a4dloc_407a4d:
    00407a4dadd edi, 1
    00407a50
    00407a50loc_407a50:
    00407a50movsxd rax, edi
    00407a53mov rcx, [rsp+40]
    00407a58movzx rax, [rcx+2*rax-2]
    00407a5emov ecx, eax
    00407a60sub cx, 48
    00407a64cmp cx, 10
    00407a68jb 0x407a80
    00407a6asub cx, 17
    00407a6ecmp cx, 6
    00407a72jb 0x407a88
    00407a74sub cx, 32
    00407a78cmp cx, 6
    00407a7cjae 0x407aaf
    00407a7ejmp 0x407a90
    00407a80
    00407a80loc_407a80:
    00407a80movzx eax, ax
    00407a83sub eax, 48
    00407a86jmp 0x407a96
    00407a88
    00407a88loc_407a88:
    00407a88movzx eax, ax
    00407a8badd eax, -55
    00407a8ejmp 0x407a96
    00407a90
    00407a90loc_407a90:
    00407a90movzx eax, ax
    00407a93add eax, -87
    00407a96
    00407a96loc_407a96:
    00407a96test esi, esi
    00407a98jl 0x407aaf
    00407a9acmp esi, 0xfffffff
    00407aa0jg 0x407aaf
    00407aa2shl esi, 4
    00407aa5add esi, eax
    00407aa7add edi, 1
    00407aaaxor r14, r14
    00407aadjmp 0x407a50
    00407aaf
    00407aafloc_407aaf:
    00407aafnop
    00407ab0test r13b, r13b
    00407ab3je 0x407b0e
    00407ab5neg esi
    00407ab7jmp 0x407b0e
    00407ab9
    00407ab9loc_407ab9:
    00407ab9movsxd rax, edi
    00407abcmov rcx, [rsp+40]
    00407ac1movzx rax, [rcx+2*rax-2]
    00407ac7mov ecx, eax
    00407ac9sub cx, 48
    00407acdcmp cx, 10
    00407ad1jae 0x407af5
    00407ad3movzx eax, ax
    00407ad6sub eax, 48
    00407ad9test esi, esi
    00407adbjl 0x407af5
    00407addcmp esi, 0xccccccc
    00407ae3jg 0x407af5
    00407ae5add esi, esi
    00407ae7lea rsi, [rsi+4*rsi]
    00407aebadd esi, eax
    00407aedadd edi, 1
    00407af0xor r14, r14
    00407af3jmp 0x407ab9
    00407af5
    00407af5loc_407af5:
    00407af5nop
    00407af6test r13b, r13b
    00407af9je 0x407afd
    00407afbneg esi
    00407afd
    00407afdloc_407afd:
    00407afdtest esi, esi
    00407affje 0x407b0e
    00407b01test esi, esi
    00407b03setl al
    00407b06cmp r13b, al
    00407b09je 0x407b0e
    00407b0bsub edi, 1
    00407b0e
    00407b0eloc_407b0e:
    00407b0emovsxd rax, edi
    00407b11mov rcx, [rsp+40]
    00407b16cmp [rcx+2*rax-2], 0
    00407b1csetne al
    00407b1for al, r14b
    00407b22test al, al
    00407b24je 0x407b2a
    00407b26mov [rbx], edi
    00407b28jmp 0x407b30
    00407b2a
    00407b2aloc_407b2a:
    00407b2amov [rbx], 0
    00407b30
    00407b30loc_407b30:
    00407b30mov eax, esi
    00407b32add rsp, 48
    00407b36pop rbx
    00407b37pop rsi
    00407b38pop rdi
    00407b39pop r13
    00407b3bpop r14
    00407b3dret
    00407960
    00407b3e
    00407b3e // align 0x10
    00407b40
    00407b40fn_407b40:
    00407b40push rbx
    00407b41sub rsp, 32
    00407b45mov rbx, rcx
    00407b48lea rax, [rip+0x5d851]
    00407b4fcmp rbx, rax
    00407b52je 0x407b60
    00407b54lea rax, [rip+0x5db3d]
    00407b5bcmp rbx, rax
    00407b5ejne 0x407b74
    00407b60
    00407b60loc_407b60:
    00407b60movzx ax, [rip+0x514d3]
    00407b68mov [rbx+10], ax
    00407b6cmov rcx, rbx
    00407b6fcall fn_406360
    00407b74
    00407b74loc_407b74:
    00407b74cmp [rbx+8], -10318
    00407b7asete bl
    00407b7dtest bl, bl
    00407b7fjne 0x407b8b
    00407b81mov ecx, 105
    00407b86call fn_405a70
    00407b8b
    00407b8bloc_407b8b:
    00407b8bmov eax, ebx
    00407b8dadd rsp, 32
    00407b91pop rbx
    00407b92ret
    00407b40
    00407b93
    00407b93 // align 0x10
    00407ba0
    00407ba0fn_407ba0:
    00407ba0push r14
    00407ba2push r13
    00407ba4push rdi
    00407ba5push rsi
    00407ba6push rbx
    00407ba7sub rsp, 32
    00407babmov rbx, rcx
    00407baemov rsi, rdx
    00407bb1mov edi, r8l
    00407bb4mov r13, rbx
    00407bb7cmp [rbx+8], -10318
    00407bbdje 0x407bcb
    00407bbfmov rcx, rbx
    00407bc2call fn_407b40
    00407bc7test al, al
    00407bc9je 0x407c43
    00407bcb
    00407bcbloc_407bcb:
    00407bcbmov ecx, [rbx+16]
    00407bcemov rax, [rbx+24]
    00407bd2mov edx, ecx
    00407bd4lea rax, [rax+rdx]
    00407bd8mov r14l, [rbx+12]
    00407bdcsub r14l, ecx
    00407bdfcmp r14l, edi
    00407be2jg 0x407c2e
    00407be4
    00407be4loc_407be4:
    00407be4lea rcx, [rbx+16]
    00407be8add [rcx], r14l
    00407bebsub edi, r14l
    00407beemovsxd r14, r14l
    00407bf1mov rcx, rsi
    00407bf4mov rdx, rax
    00407bf7mov r8, r14
    00407bfacall fn_405ac0
    00407bffadd rsi, r14
    00407c02mov rcx, rbx
    00407c05call [rbx+40]
    00407c08test eax, eax
    00407c0aje 0x407c15
    00407c0cmov ecx, eax
    00407c0ecall fn_405a70
    00407c13jmp 0x407c43
    00407c15
    00407c15loc_407c15:
    00407c15mov ecx, [rbx+16]
    00407c18mov rax, [rbx+24]
    00407c1cmov edx, ecx
    00407c1elea rax, [rax+rdx]
    00407c22mov r14l, [rbx+12]
    00407c26sub r14l, ecx
    00407c29cmp r14l, edi
    00407c2cjle 0x407be4
    00407c2e
    00407c2eloc_407c2e:
    00407c2enop
    00407c2flea rcx, [rbx+16]
    00407c33add [rcx], edi
    00407c35mov rcx, rsi
    00407c38mov rdx, rax
    00407c3bmovsxd r8, edi
    00407c3ecall fn_405ac0
    00407c43
    00407c43loc_407c43:
    00407c43mov rax, r13
    00407c46add rsp, 32
    00407c4apop rbx
    00407c4bpop rsi
    00407c4cpop rdi
    00407c4dpop r13
    00407c4fpop r14
    00407c51ret
    00407ba0
    00407c52
    00407c52 // align 0x10
    00407c60
    00407c60fn_407c60:
    00407c60push rbp
    00407c61sub rsp, 80
    00407c65mov rbp, rsp
    00407c68mov [rbp+40], rcx
    00407c6cmov [rbp+52], edx
    00407c6fmov [rbp+72], 0
    00407c77nop
    00407c78mov rax, [rbp+40]
    00407c7cmov [rbp+56], rax
    00407c80mov eax, [rbp+52]
    00407c83cmp eax, 64
    00407c86jle 0x407ce9
    00407c88lea rcx, [rbp+72]
    00407c8cmov edx, 64
    00407c91xor r8, r8
    00407c94call fn_40cf30
    00407c99lea rcx, [rbp+72]
    00407c9dcall fn_40c690
    00407ca2mov rcx, rax
    00407ca5mov edx, 64
    00407caamov r8w, 32
    00407cafcall fn_4069b0
    00407cb4mov eax, [rbp+52]
    00407cb7cmp eax, 64
    00407cbajle 0x407ce8
    00407cbc
    00407cbcloc_407cbc:
    00407cbcmov rcx, [rbp+40]
    00407cc0mov rdx, [rbp+72]
    00407cc4call fn_407fe0
    00407cc9call fn_414a40
    00407ccecmp [rax+528], 0
    00407cd5jne 0x407d37
    00407cd7mov eax, [rbp+52]
    00407cdasub eax, 64
    00407cddmov [rbp+52], eax
    00407ce0mov eax, [rbp+52]
    00407ce3cmp eax, 64
    00407ce6jg 0x407cbc
    00407ce8
    00407ce8loc_407ce8:
    00407ce8nop
    00407ce9
    00407ce9loc_407ce9:
    00407ce9mov eax, [rbp+52]
    00407cectest eax, eax
    00407ceejle 0x407d36
    00407cf0lea rcx, [rbp+72]
    00407cf4mov edx, [rbp+52]
    00407cf7xor r8, r8
    00407cfacall fn_40cf30
    00407cfflea rcx, [rbp+72]
    00407d03call fn_40c690
    00407d08mov rcx, rax
    00407d0bmov edx, [rbp+52]
    00407d0emovsxd rdx, edx
    00407d11mov r8w, 32
    00407d16call fn_4069b0
    00407d1bmov rcx, [rbp+40]
    00407d1fmov rdx, [rbp+72]
    00407d23call fn_407fe0
    00407d28call fn_414a40
    00407d2dcmp [rax+528], 0
    00407d34jne 0x407d37
    00407d36
    00407d36loc_407d36:
    00407d36nop
    00407d37
    00407d37loc_407d37:
    00407d37lea rcx, [rbp+72]
    00407d3bcall fn_40bd40
    00407d40mov rax, [rbp+56]
    00407d44lea rsp, [rbp+80]
    00407d48pop rbp
    00407d49ret
    00407c60
    00407d4a
    00407d4a 64 48 8d 44 20 00 dH.D .
    00407d50
    00407d50fn_407d50:
    00407d50push rbp
    00407d51sub rsp, 32
    00407d55mov rbp, rsp
    00407d58lea rcx, [rdx+72]
    00407d5ccall fn_40bd40
    00407d61lea rsp, [rbp+32]
    00407d65pop rbp
    00407d66ret
    00407d50
    00407d67
    00407d67 // align 0x10
    00407d70
    00407d70fn_407d70:
    00407d70push rbp
    00407d71sub rsp, 64
    00407d75mov rbp, rsp
    00407d78mov [rbp+40], rcx
    00407d7cmov [rbp+56], 0
    00407d84nop
    00407d85lea rcx, [rbp+56]
    00407d89mov rax, [rbp+40]
    00407d8dmov rax, [rax+48]
    00407d91lea rdx, [rax+748]
    00407d98mov rax, [rbp+40]
    00407d9cmov rax, [rax+48]
    00407da0movsx r8, [rax+746]
    00407da8mov r9l, [rip+0x5dc69]
    00407dafcall fn_40c0d0
    00407db4mov rax, [rbp+40]
    00407db8mov rcx, [rax+48]
    00407dbcmov rdx, [rbp+56]
    00407dc0call fn_4080c0
    00407dc5mov rax, [rbp+40]
    00407dc9mov rax, [rax+48]
    00407dcdmov [rax+746], 0
    00407dd4mov rax, [rbp+40]
    00407dd8mov rax, [rax+48]
    00407ddcmov [rax+747], 0
    00407de3nop
    00407de4lea rcx, [rbp+56]
    00407de8call fn_40bcf0
    00407dedlea rsp, [rbp+64]
    00407df1pop rbp
    00407df2ret
    00407d70
    00407df3
    00407df3 48 8d 44 20 00 48 8d 04 05 00 00 00 00 H.D .H.......
    00407e00
    00407e00fn_407e00:
    00407e00push rbp
    00407e01sub rsp, 32
    00407e05mov rbp, rsp
    00407e08lea rcx, [rdx+56]
    00407e0ccall fn_40bcf0
    00407e11lea rsp, [rbp+32]
    00407e15pop rbp
    00407e16ret
    00407e00
    00407e17
    00407e17 // align 0x10
    00407e20
    00407e20fn_407e20:
    00407e20push rbp
    00407e21sub rsp, 32
    00407e25mov rbp, rsp
    00407e28mov [rbp+48], rcx
    00407e2cmov [rbp+56], dl
    00407e2fmov rax, [rbp+48]
    00407e33cmp [rax+744], 0
    00407e3bjne 0x407e46
    00407e3dmov rcx, [rbp+48]
    00407e41call fn_407b40
    00407e46
    00407e46loc_407e46:
    00407e46mov rax, [rbp+48]
    00407e4amovzx eax, [rax+744]
    00407e51cmp eax, [rip+0x5dbc1]
    00407e57jne 0x407e71
    00407e59mov rcx, [rbp+48]
    00407e5dlea rdx, [rbp+56]
    00407e61mov r8l, 1
    00407e67call fn_407ba0
    00407e6cjmp 0x407fcd
    00407e71
    00407e71loc_407e71:
    00407e71mov rax, [rbp+48]
    00407e75cmp [rax+746], 0
    00407e7cjne 0x407f72
    00407e82mov rax, [rbp+48]
    00407e86mov [rax+746], 1
    00407e8dcmp [rip+0x5db81], 65001
    00407e97jne 0x407f48
    00407e9dmovzx rax, [rbp+56]
    00407ea2mov ecx, eax
    00407ea4sub cl, -64
    00407ea7cmp cl, 31
    00407eaaja 0x407ec7
    00407eacmov edx, 1
    00407eb1movzx rcx, cl
    00407eb5and ecx, 127
    00407eb8shl edx, cl
    00407ebamov ecx, [rip+276]
    00407ec0test edx, ecx
    00407ec2setne cl
    00407ec5jmp 0x407ec9
    00407ec7
    00407ec7loc_407ec7:
    00407ec7xor ecx, ecx
    00407ec9
    00407ec9loc_407ec9:
    00407ec9test cl, cl
    00407ecbje 0x407edd
    00407ecdmov rax, [rbp+48]
    00407ed1mov [rax+746], 2
    00407ed8jmp 0x407f67
    00407edd
    00407eddloc_407edd:
    00407eddmov ecx, eax
    00407edfsub cl, -32
    00407ee2cmp cl, 15
    00407ee5ja 0x407f05
    00407ee7mov dx, 1
    00407eebmovzx cx, cl
    00407eefand cx, 127
    00407ef3shl edx, cl
    00407ef5movzx rcx, [rip+219]
    00407efdtest dx, cx
    00407f00setne cl
    00407f03jmp 0x407f07
    00407f05
    00407f05loc_407f05:
    00407f05xor ecx, ecx
    00407f07
    00407f07loc_407f07:
    00407f07test cl, cl
    00407f09je 0x407f18
    00407f0bmov rax, [rbp+48]
    00407f0fmov [rax+746], 3
    00407f16jmp 0x407f67
    00407f18
    00407f18loc_407f18:
    00407f18mov ecx, eax
    00407f1asub cl, -16
    00407f1dcmp cl, 7
    00407f20ja 0x407f35
    00407f22mov al, 1
    00407f24shl eax, cl
    00407f26movzx rcx, [rip+172]
    00407f2etest al, cl
    00407f30setne al
    00407f33jmp 0x407f37
    00407f35
    00407f35loc_407f35:
    00407f35xor eax, eax
    00407f37
    00407f37loc_407f37:
    00407f37test al, al
    00407f39je 0x407f67
    00407f3bmov rax, [rbp+48]
    00407f3fmov [rax+746], 4
    00407f46jmp 0x407f67
    00407f48
    00407f48loc_407f48:
    00407f48mov ecx, [rip+0x5daca]
    00407f4emovzx rdx, [rbp+56]
    00407f53call IsDBCSLeadByteEx
    00407f58test eax, eax
    00407f5aje 0x407f67
    00407f5cmov rax, [rbp+48]
    00407f60mov [rax+746], 2
    00407f67
    00407f67loc_407f67:
    00407f67mov rax, [rbp+48]
    00407f6bmov [rax+747], 0
    00407f72
    00407f72loc_407f72:
    00407f72mov rax, [rbp+48]
    00407f76cmp [rax+746], 0
    00407f7djle 0x407fc9
    00407f7fmov rax, [rbp+48]
    00407f83mov rcx, [rbp+48]
    00407f87movzx rcx, [rcx+747]
    00407f8fmovzx rdx, [rbp+56]
    00407f94mov [rax+rcx+748], dl
    00407f9bmov rax, [rbp+48]
    00407f9flea rax, [rax+747]
    00407fa6add [rax], 1
    00407fa9mov rax, [rbp+48]
    00407fadmov rcx, [rbp+48]
    00407fb1movzx rax, [rax+747]
    00407fb9cmp al, [rcx+746]
    00407fbfjne 0x407fc9
    00407fc1mov rcx, rbp
    00407fc4call fn_407d70
    00407fc9
    00407fc9loc_407fc9:
    00407fc9mov rax, [rbp+48]
    00407fcd
    00407fcdloc_407fcd:
    00407fcdlea rsp, [rbp+32]
    00407fd1pop rbp
    00407fd2ret
    00407e20
    00407fd3
    00407fd3 00 fc ff ff ff ff ff 1f cc cc cc cc cc .............
    00407fe0
    00407fe0fn_407fe0:
    00407fe0push rbp
    00407fe1push rbx
    00407fe2sub rsp, 72
    00407fe6mov rbp, rsp
    00407fe9mov [rbp+32], rcx
    00407fedmov [rbp+40], rdx
    00407ff1mov [rbp+56], 0
    00407ff9nop
    00407ffamov rcx, [rbp+32]
    00407ffecall fn_4062b0
    00408003mov rax, [rbp+32]
    00408007mov [rbp+48], rax
    0040800bmov rax, [rbp+40]
    0040800ftest rax, rax
    00408012je 0x408089
    00408014mov rax, [rbp+32]
    00408018cmp [rax+744], 0
    00408020jne 0x40802b
    00408022mov rcx, [rbp+32]
    00408026call fn_407b40
    0040802b
    0040802bloc_40802b:
    0040802bmov rax, [rbp+32]
    0040802fmovzx rax, [rax+744]
    00408037mov rcx, [rbp+40]
    0040803bcmp ax, [rcx-12]
    0040803fjne 0x40806b
    00408041mov rcx, [rbp+40]
    00408045call fn_40ce10
    0040804amov rbx, rax
    0040804dmov rcx, [rbp+40]
    00408051call fn_40c570
    00408056mov rcx, [rbp+32]
    0040805amov rdx, rbx
    0040805dmov r8l, eax
    00408060call fn_407ba0
    00408065mov [rbp+48], rax
    00408069jmp 0x408089
    0040806b
    0040806bloc_40806b:
    0040806blea rcx, [rbp+56]
    0040806fmov rdx, [rbp+40]
    00408073call fn_40d7f0
    00408078mov rcx, [rbp+32]
    0040807cmov rdx, [rbp+56]
    00408080call fn_4080c0
    00408085mov [rbp+48], rax
    00408089
    00408089loc_408089:
    00408089nop
    0040808alea rcx, [rbp+56]
    0040808ecall fn_40bcf0
    00408093mov rax, [rbp+48]
    00408097lea rsp, [rbp+72]
    0040809bpop rbx
    0040809cpop rbp
    0040809dret
    00407fe0
    0040809e
    0040809e 48 90 H.
    004080a0
    004080a0fn_4080a0:
    004080a0push rbp
    004080a1sub rsp, 32
    004080a5mov rbp, rsp
    004080a8lea rcx, [rdx+56]
    004080accall fn_40bcf0
    004080b1lea rsp, [rbp+32]
    004080b5pop rbp
    004080b6ret
    004080a0
    004080b7
    004080b7 // align 0x10
    004080c0
    004080c0fn_4080c0:
    004080c0sub rsp, 40
    004080c4xor r8, r8
    004080c7call fn_4080e0
    004080ccadd rsp, 40
    004080d0ret
    004080c0
    004080d1
    004080d1 // align 0x10
    004080e0
    004080e0fn_4080e0:
    004080e0push rbp
    004080e1push rbx
    004080e2sub rsp, 88
    004080e6mov rbp, rsp
    004080e9mov [rbp+32], rcx
    004080edmov [rbp+40], rdx
    004080f1mov [rbp+52], r8l
    004080f5mov [rbp+72], 0
    004080fdnop
    004080femov rax, [rbp+40]
    00408102test rax, rax
    00408105jne 0x40811c
    00408107mov rcx, [rbp+32]
    0040810bmov edx, [rbp+52]
    0040810ecall fn_407c60
    00408113mov [rbp+56], rax
    00408117jmp 0x4081e3
    0040811c
    0040811cloc_40811c:
    0040811cmov rax, [rbp+32]
    00408120cmp [rax+744], 0
    00408128jne 0x408133
    0040812amov rcx, [rbp+32]
    0040812ecall fn_407b40
    00408133
    00408133loc_408133:
    00408133mov rax, [rbp+32]
    00408137movzx rax, [rax+744]
    0040813fcmp ax, 1200
    00408144jne 0x408180
    00408146mov rcx, [rbp+40]
    0040814acall fn_40c560
    0040814fmov ebx, eax
    00408151mov rcx, [rbp+32]
    00408155mov edx, [rbp+52]
    00408158sub edx, ebx
    0040815acall fn_407c60
    0040815fmov rcx, [rbp+40]
    00408163call fn_40d710
    00408168mov rcx, [rbp+32]
    0040816cmov rdx, rax
    0040816fmov r8l, ebx
    00408172add r8l, r8l
    00408175call fn_407ba0
    0040817amov [rbp+56], rax
    0040817ejmp 0x4081e3
    00408180
    00408180loc_408180:
    00408180cmp [rip+0x50ee0], 0
    00408188je 0x40819e
    0040818amov rcx, [rbp+32]
    0040818emov rdx, [rbp+40]
    00408192call [rip+0x50ed0]
    00408198mov [rbp+56], rax
    0040819cjmp 0x4081e3
    0040819e
    0040819eloc_40819e:
    0040819elea rcx, [rbp+72]
    004081a2mov rdx, [rbp+40]
    004081a6mov r8l, eax
    004081a9call fn_40cff0
    004081aemov rcx, [rbp+72]
    004081b2call fn_40c570
    004081b7mov ebx, eax
    004081b9mov rcx, [rbp+32]
    004081bdmov edx, [rbp+52]
    004081c0sub edx, ebx
    004081c2call fn_407c60
    004081c7lea rcx, [rbp+72]
    004081cbcall fn_40c690
    004081d0mov rcx, [rbp+32]
    004081d4mov rdx, rax
    004081d7mov r8l, ebx
    004081dacall fn_407ba0
    004081dfmov [rbp+56], rax
    004081e3
    004081e3loc_4081e3:
    004081e3nop
    004081e4lea rcx, [rbp+72]
    004081e8call fn_40bd40
    004081edmov rax, [rbp+56]
    004081f1lea rsp, [rbp+88]
    004081f5pop rbx
    004081f6pop rbp
    004081f7ret
    004080e0
    004081f8
    004081f8 48 8d 04 05 00 00 00 00 H.......
    00408200
    00408200fn_408200:
    00408200push rbp
    00408201sub rsp, 32
    00408205mov rbp, rsp
    00408208lea rcx, [rdx+72]
    0040820ccall fn_40bd40
    00408211lea rsp, [rbp+32]
    00408215pop rbp
    00408216ret
    00408200
    00408217
    00408217 // align 0x10
    00408220
    00408220fn_408220:
    00408220push rsi
    00408221push rbx
    00408222sub rsp, 40
    00408226mov rbx, rcx
    00408229movzx rax, [rbx+10]
    0040822etest ax, 1
    00408233je 0x40823f
    00408235mov rcx, rbx
    00408238mov dl, 13
    0040823acall fn_407e20
    0040823f
    0040823floc_40823f:
    0040823fmov rcx, rbx
    00408242mov dl, 10
    00408244call fn_407e20
    00408249mov rsi, rax
    0040824cmov rcx, rbx
    0040824fcall fn_406920
    00408254mov rax, rsi
    00408257add rsp, 40
    0040825bpop rbx
    0040825cpop rsi
    0040825dret
    00408220
    0040825e
    0040825e // align 0x10
    00408260
    00408260fn_408260:
    00408260push rbp
    00408261sub rsp, 16
    00408265mov rbp, rsp
    00408268mov [rbp+12], ecx
    0040826bldmxcsr [rbp+12]
    0040826flea rsp, [rbp+16]
    00408273pop rbp
    00408274ret
    00408260
    00408275
    00408275 // align 0x10
    00408280
    00408280fn_408280:
    00408280push rbp
    00408281sub rsp, 16
    00408285mov rbp, rsp
    00408288movsd_xmm [rbp+40], x1
    0040828dmov [rbp+48], r8
    00408291mov [rbp+56], r9
    00408295mov rax, [rbp+40]
    00408299and rax, 0xfffffffff8000000
    004082a0mov [rbp+8], rax
    004082a4movsd_xmm x1, [rbp+40]
    004082a9subsd x1, [rbp+8]
    004082aecmp [rbp+56], 0
    004082b3jne 0x4082ca
    004082b5movsd_xmm x0, [rbp+8]
    004082bamulsd x0, [rbp+48]
    004082bfmulsd x1, [rbp+48]
    004082c4addsd x0, x1
    004082c8jmp 0x4082f8
    004082ca
    004082caloc_4082ca:
    004082camovapd x0, x1
    004082cemulsd x0, [rbp+56]
    004082d3movsd_xmm x2, [rbp+8]
    004082d8mulsd x2, [rbp+56]
    004082ddaddsd x0, x2
    004082e1mulsd x1, [rbp+48]
    004082e6addsd x0, x1
    004082eamovsd_xmm x1, [rbp+8]
    004082efmulsd x1, [rbp+48]
    004082f4addsd x0, x1
    004082f8
    004082f8loc_4082f8:
    004082f8lea rsp, [rbp+16]
    004082fcpop rbp
    004082fdret
    00408280
    004082fe
    004082fe // align 0x10
    00408300
    00408300fn_408300:
    00408300push rbp
    00408301push rdi
    00408302push rsi
    00408303push rbx
    00408304sub rsp, 56
    00408308mov rbp, rsp
    0040830bmovdqa [rbp+32], x6
    00408310movapd x6, x0
    00408314mov ebx, edx
    00408316mov ecx, 2048
    0040831bmov edx, 2048
    00408320call fn_405fc0
    00408325mov edi, eax
    00408327test ebx, ebx
    00408329jle 0x408405
    0040832fcmp ebx, 632
    00408335jl 0x408350
    00408337mov ecx, 8
    0040833cmov dl, 1
    0040833ecall fn_405ee0
    00408343movsd_xmm x6, [rip+453]
    0040834bjmp 0x4084fe
    00408350
    00408350loc_408350:
    00408350mov esi, ebx
    00408352and esi, 31
    00408355test esi, esi
    00408357je 0x40838b
    00408359movsxd rsi, esi
    0040835cmov rcx, rbp
    0040835fmovapd x1, x6
    00408363lea rax, [rip+0x51cd6]
    0040836amov rdx, rsi
    0040836dadd rdx, rdx
    00408370mov r8, [rax+8*rdx]
    00408374lea rax, [rip+0x51ccd]
    0040837badd rsi, rsi
    0040837emov r9, [rax+8*rsi]
    00408382call fn_408280
    00408387movapd x6, x0
    0040838b
    0040838bloc_40838b:
    0040838bshr ebx, 5
    0040838etest ebx, ebx
    00408390je 0x4084e4
    00408396mov esi, ebx
    00408398and esi, 7
    0040839btest esi, esi
    0040839dje 0x4083d1
    0040839fmovsxd rsi, esi
    004083a2mov rcx, rbp
    004083a5movapd x1, x6
    004083a9lea rax, [rip+0x52090]
    004083b0mov rdx, rsi
    004083b3add rdx, rdx
    004083b6mov r8, [rax+8*rdx]
    004083balea rax, [rip+0x52087]
    004083c1add rsi, rsi
    004083c4mov r9, [rax+8*rsi]
    004083c8call fn_408280
    004083cdmovapd x6, x0
    004083d1
    004083d1loc_4083d1:
    004083d1mov esi, ebx
    004083d3shr esi, 3
    004083d6test esi, esi
    004083d8jle 0x4083ff
    004083da
    004083daloc_4083da:
    004083damov rcx, rbp
    004083ddmovapd x1, x6
    004083e1mov r8, [rip+0x52158]
    004083e8mov r9, [rip+0x52159]
    004083efcall fn_408280
    004083f4movapd x6, x0
    004083f8sub esi, 1
    004083fbtest esi, esi
    004083fdjg 0x4083da
    004083ff
    004083ffloc_4083ff:
    004083ffnop
    00408400jmp 0x4084e4
    00408405
    00408405loc_408405:
    00408405test ebx, ebx
    00408407jge 0x4084e4
    0040840dneg ebx
    0040840fcmp ebx, 632
    00408415jl 0x408430
    00408417mov ecx, 16
    0040841cmov dl, 1
    0040841ecall fn_405ee0
    00408423movsd_xmm x6, [rip+237]
    0040842bjmp 0x4084fe
    00408430
    00408430loc_408430:
    00408430mov esi, ebx
    00408432and esi, 31
    00408435test esi, esi
    00408437je 0x40846b
    00408439movsxd rsi, esi
    0040843cmov rcx, rbp
    0040843fmovapd x1, x6
    00408443lea rax, [rip+0x51df6]
    0040844amov rdx, rsi
    0040844dadd rdx, rdx
    00408450mov r8, [rax+8*rdx]
    00408454lea rax, [rip+0x51ded]
    0040845badd rsi, rsi
    0040845emov r9, [rax+8*rsi]
    00408462call fn_408280
    00408467movapd x6, x0
    0040846b
    0040846bloc_40846b:
    0040846bshr ebx, 5
    0040846etest ebx, ebx
    00408470je 0x4084e4
    00408472mov esi, ebx
    00408474and esi, 7
    00408477test esi, esi
    00408479je 0x4084ad
    0040847bmovsxd rsi, esi
    0040847emov rcx, rbp
    00408481movapd x1, x6
    00408485lea rax, [rip+0x52034]
    0040848cmov rdx, rsi
    0040848fadd rdx, rdx
    00408492mov r8, [rax+8*rdx]
    00408496lea rax, [rip+0x5202b]
    0040849dadd rsi, rsi
    004084a0mov r9, [rax+8*rsi]
    004084a4call fn_408280
    004084a9movapd x6, x0
    004084ad
    004084adloc_4084ad:
    004084admov esi, ebx
    004084afshr esi, 3
    004084b2test esi, esi
    004084b4jle 0x4084e3
    004084b6
    004084b6loc_4084b6:
    004084b6mov rcx, rbp
    004084b9movapd x1, x6
    004084bdmov r8, [rip+0x5208c]
    004084c4mov r9, [rip+0x5208d]
    004084cbcall fn_408280
    004084d0movapd x6, x0
    004084d4mulsd x6, [rip+0x52084]
    004084dcsub esi, 1
    004084dftest esi, esi
    004084e1jg 0x4084b6
    004084e3
    004084e3loc_4084e3:
    004084e3nop
    004084e4
    004084e4loc_4084e4:
    004084e4call fn_406080
    004084e9mov ecx, eax
    004084eband ecx, -2049
    004084f1and edi, 2048
    004084f7or ecx, edi
    004084f9call fn_408260
    004084fe
    004084feloc_4084fe:
    004084femovapd x0, x6
    00408502movdqa x6, [rbp+32]
    00408507lea rsp, [rbp+56]
    0040850bpop rbx
    0040850cpop rsi
    0040850dpop rdi
    0040850epop rbp
    0040850fret
    00408300
    00408510
    00408510 00 00 00 00 00 00 f0 7f 00 00 00 00 00 00 00 00 ................
    00408520
    00408520fn_408520:
    00408520mov r10, rbx
    00408523mov r9, rcx
    00408526mov eax, edx
    00408528mov ecx, r8l
    0040852bcpuid
    0040852dmov [r9], eax
    00408530mov [r9+4], ebx
    00408534mov [r9+8], ecx
    00408538mov [r9+12], edx
    0040853cmov rbx, r10
    0040853fret
    00408520
    00408540
    00408540fn_408540:
    00408540push rbx
    00408541sub rsp, 32
    00408545mov rbx, rcx
    00408548mov rcx, rbx
    0040854bcall fn_408520
    00408550mov rax, rbx
    00408553add rsp, 32
    00408557pop rbx
    00408558ret
    00408540
    00408559
    00408559 // align 0x10
    00408560
    00408560fn_408560:
    00408560push r13
    00408562push rdi
    00408563push rsi
    00408564push rbx
    00408565sub rsp, 56
    00408569xor ebx, ebx
    0040856blea r13, [rip+0x5d426]
    00408572
    00408572loc_408572:
    00408572lea rcx, [rsp+32]
    00408577mov edx, ebx
    00408579xor r8, r8
    0040857ccall fn_408540
    00408581mov rdi, r13
    00408584lea rsi, [rsp+32]
    00408589movsq [rdi], [rsi]
    0040858bmovsq [rdi], [rsi]
    0040858dadd ebx, 1
    00408590add r13, 16
    00408594cmp ebx, 8
    00408597jne 0x408572
    00408599nop
    0040859aadd rsp, 56
    0040859epop rbx
    0040859fpop rsi
    004085a0pop rdi
    004085a1pop r13
    004085a3ret
    00408560
    004085a4
    004085a4 // align 0x10
    004085b0
    004085b0fn_4085b0:
    004085b0sub rsp, 40
    004085b4mov [rip+0x5cade], 3
    004085becall fn_406020
    004085c3and ax, 7999
    004085c8mov [rip+0x50a61], ax
    004085cfadd rsp, 40
    004085d3ret
    004085b0
    004085d4
    004085d4 // align 0x10
    004085e0
    004085e0fn_4085e0:
    004085e0ldmxcsr [rip+0x50a4d]
    004085e7ret
    004085e0
    004085e8
    004085e8 // align 0x10
    004085f0
    004085f0fn_4085f0:
    004085f0push rbp
    004085f1sub rsp, 32
    004085f5mov rbp, rsp
    004085f8mov cl, 5
    004085famov rdx, [rbp+40]
    004085fecall fn_4059c0
    00408603lea rsp, [rbp+32]
    00408607pop rbp
    00408608ret
    004085f0
    00408609
    00408609 // align 0x10
    00408610
    00408610fn_408610:
    00408610push rbp
    00408611push rdi
    00408612push rsi
    00408613push rbx
    00408614sub rsp, 104
    00408618mov rbp, rsp
    0040861bmov [rbp+56], rcx
    0040861fmov [rbp+64], rdx
    00408623mov [rbp+88], 0
    0040862bnop
    0040862clea rcx, [rbp+88]
    00408630mov rdx, [rbp+56]
    00408634call fn_4145c0
    00408639mov rcx, [rbp+88]
    0040863dcall fn_40d710
    00408642mov rbx, rax
    00408645mov rcx, [rbp+88]
    00408649call fn_40c560
    0040864emov esi, eax
    00408650mov rcx, [rbp+64]
    00408654call fn_40d710
    00408659mov rdi, rax
    0040865cmov rcx, [rbp+64]
    00408660call fn_40c560
    00408665mov ecx, [rip+0x5d3b5]
    0040866bmov edx, 1
    00408670mov r8, rbx
    00408673mov r9l, esi
    00408676mov [rsp+32], rdi
    0040867bmov [rsp+40], eax
    0040867fcall CompareStringW
    00408684cmp eax, 2
    00408687sete al
    0040868amov [rbp+79], al
    0040868dnop
    0040868elea rcx, [rbp+88]
    00408692call fn_40bcf0
    00408697movzx rax, [rbp+79]
    0040869clea rsp, [rbp+104]
    004086a0pop rbx
    004086a1pop rsi
    004086a2pop rdi
    004086a3pop rbp
    004086a4ret
    00408610
    004086a5
    004086a5 48 8b c0 48 8d 04 05 00 00 00 00 H..H.......
    004086b0
    004086b0fn_4086b0:
    004086b0push rbp
    004086b1sub rsp, 32
    004086b5mov rbp, rsp
    004086b8lea rcx, [rdx+88]
    004086bccall fn_40bcf0
    004086c1lea rsp, [rbp+32]
    004086c5pop rbp
    004086c6ret
    004086b0
    004086c7
    004086c7 // align 0x10
    004086d0
    004086d0fn_4086d0:
    004086d0push rbp
    004086d1push rsi
    004086d2push rbx
    004086d3sub rsp, 1072
    004086damov rbp, rsp
    004086ddmov rbx, rdx
    004086e0mov eax, 65001
    004086e5xor edx, edx
    004086e7lea r8, [rcx+1]
    004086ebmovzx r9, [rcx]
    004086eflea rcx, [rbp+560]
    004086f6mov [rsp+32], rcx
    004086fbmov [rsp+40], 256
    00408703mov ecx, eax
    00408705call MultiByteToWideChar
    0040870amov esi, eax
    0040870cmov ecx, 65001
    00408711xor edx, edx
    00408713lea r8, [rbx+1]
    00408717movzx r9, [rbx]
    0040871blea rax, [rbp+48]
    0040871fmov [rsp+32], rax
    00408724mov [rsp+40], 256
    0040872ccall MultiByteToWideChar
    00408731mov ecx, [rip+0x5d2e9]
    00408737mov edx, 1
    0040873clea r8, [rbp+560]
    00408743mov r9l, esi
    00408746lea r10, [rbp+48]
    0040874amov [rsp+32], r10
    0040874fmov [rsp+40], eax
    00408753call CompareStringW
    00408758cmp eax, 2
    0040875bsete al
    0040875elea rsp, [rbp+1072]
    00408765pop rbx
    00408766pop rsi
    00408767pop rbp
    00408768ret
    004086d0
    00408769
    00408769 // align 0x10
    00408770
    00408770fn_408770:
    00408770push rdi
    00408771push rsi
    00408772push rbx
    00408773sub rsp, 32
    00408777mov rbx, rcx
    0040877amov rsi, rdx
    0040877dmovzx rdi, [rsi]
    00408781mov rcx, rbx
    00408784mov edx, edi
    00408786call fn_40d8d0
    0040878bmov rax, [rbx]
    0040878ejmp 0x4087a3
    00408790
    00408790loc_408790:
    00408790movzx cx, [rsi+rdi]
    00408795cmp cl, -128
    00408798jae 0x4087a8
    0040879amov [rax+2*rdi-2], cx
    0040879fsub rdi, 1
    004087a3
    004087a3loc_4087a3:
    004087a3test rdi, rdi
    004087a6jg 0x408790
    004087a8
    004087a8loc_4087a8:
    004087a8nop
    004087a9test rdi, rdi
    004087acjle 0x4087b9
    004087aemov rcx, rbx
    004087b1mov rdx, rsi
    004087b4call fn_4145c0
    004087b9
    004087b9loc_4087b9:
    004087b9mov rax, rbx
    004087bcadd rsp, 32
    004087c0pop rbx
    004087c1pop rsi
    004087c2pop rdi
    004087c3ret
    00408770
    004087c4
    004087c4 // align 0x10
    004087d0
    004087d0fn_4087d0:
    004087d0push r13
    004087d2push rdi
    004087d3push rsi
    004087d4push rbx
    004087d5sub rsp, 40
    004087d9mov rbx, rcx
    004087dcmov rsi, rdx
    004087dfmovzx rdi, [rbx]
    004087e3lea r13, [rbx+1]
    004087e7mov rcx, rsi
    004087eacall fn_40d710
    004087efmovzx cx, [r13]
    004087f5movzx rdx, [rax]
    004087f9jmp 0x408811
    004087fb
    004087fbloc_4087fb:
    004087fbadd rax, 2
    004087ffadd r13, 1
    00408803sub dil, 1
    00408807movzx cx, [r13]
    0040880dmovzx rdx, [rax]
    00408811
    00408811loc_408811:
    00408811test dil, dil
    00408814jbe 0x408847
    00408816test dx, dx
    00408819je 0x408847
    0040881bmov r8l, edx
    0040881etest r8w, -128
    00408824jne 0x408847
    00408826mov r8l, ecx
    00408829test r8w, 128
    0040882fjne 0x408847
    00408831mov r8l, ecx
    00408834or r8w, 32
    00408839mov r9l, edx
    0040883cor r9w, 32
    00408841cmp r8w, r9w
    00408845je 0x4087fb
    00408847
    00408847loc_408847:
    00408847test dx, dx
    0040884aje 0x40886b
    0040884ctest dx, -128
    00408851jne 0x40885e
    00408853test cx, 128
    00408858jne 0x40885e
    0040885axor eax, eax
    0040885cjmp 0x408871
    0040885e
    0040885eloc_40885e:
    0040885emov rcx, rbx
    00408861mov rdx, rsi
    00408864call fn_408610
    00408869jmp 0x408871
    0040886b
    0040886bloc_40886b:
    0040886btest dil, dil
    0040886esete al
    00408871
    00408871loc_408871:
    00408871add rsp, 40
    00408875pop rbx
    00408876pop rsi
    00408877pop rdi
    00408878pop r13
    0040887aret
    004087d0
    0040887b
    0040887b // align 0x10
    00408880
    00408880fn_408880:
    00408880sub rsp, 40
    00408884movzx rax, [rcx]
    00408888cmp al, [rdx]
    0040888aje 0x408893
    0040888cxor eax, eax
    0040888ejmp 0x40893e
    00408893
    00408893loc_408893:
    00408893movzx r9, al
    00408897shr r9l, 2
    0040889blea rax, [rcx+1]
    0040889flea r8, [rdx+1]
    004088a3test r9l, r9l
    004088a6jle 0x4088ee
    004088a8
    004088a8loc_4088a8:
    004088a8mov r10, rax
    004088abmov r11l, [r10]
    004088aetest r11l, 0xffffffff80808080
    004088b5jne 0x4088c3
    004088b7mov r11l, [r8]
    004088batest r11l, 0xffffffff80808080
    004088c1je 0x4088ca
    004088c3
    004088c3loc_4088c3:
    004088c3call fn_4086d0
    004088c8jmp 0x40893e
    004088ca
    004088caloc_4088ca:
    004088camov r10l, [r10]
    004088cdxor r10l, [r8]
    004088d0test r10l, 0x5f5f5f5f
    004088d7je 0x4088dd
    004088d9xor eax, eax
    004088dbjmp 0x40893e
    004088dd
    004088ddloc_4088dd:
    004088ddadd rax, 4
    004088e1add r8, 4
    004088e5sub r9l, 1
    004088e9test r9l, r9l
    004088ecjg 0x4088a8
    004088ee
    004088eeloc_4088ee:
    004088eenop
    004088efmovzx r9, [rcx]
    004088f3and r9b, 3
    004088f7movzx r9, r9b
    004088fbtest r9l, r9l
    004088fejle 0x40893b
    00408900
    00408900loc_408900:
    00408900movzx r10, [rax]
    00408904and r10b, 128
    00408908test r10b, r10b
    0040890bjne 0x408912
    0040890dtest r10b, r10b
    00408910je 0x408919
    00408912
    00408912loc_408912:
    00408912call fn_4086d0
    00408917jmp 0x40893e
    00408919
    00408919loc_408919:
    00408919movzx r10, [rax]
    0040891dxor r10b, [r8]
    00408920test r10b, 95
    00408924je 0x40892a
    00408926xor eax, eax
    00408928jmp 0x40893e
    0040892a
    0040892aloc_40892a:
    0040892aadd rax, 1
    0040892eadd r8, 1
    00408932sub r9l, 1
    00408936test r9l, r9l
    00408939jg 0x408900
    0040893b
    0040893bloc_40893b:
    0040893bnop
    0040893cmov al, 1
    0040893e
    0040893eloc_40893e:
    0040893eadd rsp, 40
    00408942ret
    00408880
    00408943
    00408943 // align 0x10
    00408950
    00408950TObject.ClassType:
    00408950mov rax, [rcx]
    00408953ret
    00408950
    00408954
    00408954 // align 0x10