Function at 0x643950
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x50]
cmp eax, dword [ecx + 8]
jbe 0x644c68
sub esp, 0xd0
mov eax, dword [esp + 0xd4]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
cmp edx, ecx
je 0x6439e8
test ecx, ecx
je 0x6439e8
cmp ecx, 0x22
je 0x6439e8
cmp ecx, 0xd
je 0x6439e8
cmp ecx, 0xa
je 0x6439e8
cmp ecx, 0xd800
jb 0x6439a9
lea ebx, [ecx - 0xe000]
cmp ebx, 0x101fff
ja 0x6439e8
cmp ecx, 0xfffd
je 0x6439e8
test edx, edx
je 0x6439e2
cmp edx, 0x22
je 0x6439e8
cmp edx, 0xd
je 0x6439e8
cmp edx, 0xa
je 0x6439e8
cmp edx, 0xd800
jb 0x6439da
lea ecx, [edx - 0xe000]
cmp ecx, 0x101fff
ja 0x6439e8
cmp edx, 0xfffd
je 0x6439e8
xor ecx, ecx
xor edx, edx
jmp 0x643a35
mov eax, dword [0xa1d410]
mov ecx, dword [0xa1d414]
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe8], 0
mov dword [esp + 0xec], 0
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], ecx
add esp, 0xd0
ret
mov edx, ecx
mov ecx, eax
mov eax, dword [esp + 0xd4]
test ecx, ecx
jne 0x643af5
mov dword [esp], eax
call fcn.006435e0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0xd4]
mov ebx, dword [edx + 4]
mov ebp, dword [esp + 8]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0xc]
test ebx, ebx
jne 0x643a6b
xor ebx, ebx
jmp 0x643ac9
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0xa4], esi
mov dword [esp + 0xac], ecx
mov dword [esp + 0x50], eax
mov dword [esp], esi
mov dword [esp + 4], ebp
mov dword [esp + 8], edi
call fcn.00489ca0
mov eax, dword [esp + 0xd4]
mov ecx, dword [eax + 4]
cmp dword [esp + 0xc], ecx
sete cl
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0xd4]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0xa4]
mov edi, dword [esp + 0x40]
mov ebx, ecx
mov ecx, dword [esp + 0xac]
test bl, bl
jne 0x643a2a
test eax, eax
jne 0x643b06
test ebp, ebp
je 0x643ae9
lea ebx, [esi + ebp - 1]
cmp byte [ebx], 0xa
jne 0x643ae9
mov ebx, 1
jmp 0x643aeb
xor ebx, ebx
cmp ebx, ebp
je 0x643a2a
jmp 0x643b06
mov eax, ecx
mov ecx, edx
xor edi, edi
xor ebp, ebp
xor esi, esi
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x50], eax
mov ebx, dword [0xa1d4c4]
cmp dword [0xa1d4c0], eax
jne 0x643b6c
mov dword [esp + 0x7c], edi
mov dword [esp + 0x78], ebp
mov dword [esp + 0xcc], esi
mov dword [esp + 0xc8], ecx
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00403670
movzx eax, byte [esp + 0xc]
test al, al
jne 0x643c17
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xd4]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0xcc]
mov edi, dword [esp + 0x7c]
mov ebx, dword [edx]
test ebx, ebx
jge 0x643b79
mov ebx, 0xffffffff
jmp 0x643bdb
cmp ebx, 0x7f
jg 0x643b85
mov ebx, 1
jmp 0x643bdb
cmp ebx, 0x7ff
jg 0x643b94
mov ebx, 2
jmp 0x643bdb
lea eax, [ebx - 0xd800]
cmp eax, 0x7ff
ja 0x643bac
mov eax, dword [esp + 0x50]
mov ebx, 0xffffffff
jmp 0x643bdb
cmp ebx, 0xffff
jg 0x643bbf
mov eax, dword [esp + 0x50]
mov ebx, 3
jmp 0x643bdb
cmp ebx, 0x10ffff
jg 0x643bd2
mov eax, dword [esp + 0x50]
mov ebx, 4
jmp 0x643bdb
mov eax, dword [esp + 0x50]
mov ebx, 0xffffffff
mov dword [esp + 0x28], ebx
mov ebx, dword [edx + 0x14]
mov dword [esp + 0x2c], ebx
mov dword [edx + 0x30], 0
mov dword [edx + 0x3c], 0
mov dword [edx + 0x48], 0
mov ebx, dword [edx + 0x14]
mov dword [esp + 0x98], eax
mov eax, 1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x98]
jmp 0x643c8f
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe8], 0
mov dword [esp + 0xec], 0
mov eax, dword [esp + 0x50]
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0xf4], eax
add esp, 0xd0
ret
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x90], edx
mov edx, ebp
mov ebp, esi
mov esi, edx
mov edx, dword [esp + 0xd4]
mov edx, edi
mov edi, ebx
mov ebx, edx
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x50], eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0xac], ecx
movzx eax, byte [edx + 0xd]
test al, al
jne 0x643caf
mov eax, dword [esp + 0x38]
jmp 0x643d56
mov dword [esp + 0x74], edi
mov dword [esp + 0x70], ebp
mov dword [esp + 0xc4], esi
mov dword [esp], esi
mov dword [esp + 4], ebp
mov dword [esp + 8], edi
lea eax, [0x841d34]
mov dword [esp + 0xc], eax
mov byte [esp + 0x10], 1
call fcn.0049a750
mov eax, dword [esp + 0x14]
test eax, eax
jge 0x643d17
mov eax, dword [esp + 0x70]
test eax, eax
je 0x643d04
mov ecx, dword [esp + 0xc4]
lea edx, [ecx + eax - 1]
cmp byte [edx], 0xa
jne 0x643d0b
mov edx, 1
jmp 0x643d0d
mov ecx, dword [esp + 0xc4]
xor edx, edx
mov ebx, dword [esp + 0x38]
sub ebx, edx
mov edx, eax
jmp 0x643d26
mov ecx, dword [esp + 0xc4]
mov edx, dword [esp + 0x70]
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x74]
sub edi, eax
sub edx, eax
mov ebp, edi
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and edi, eax
lea esi, [edi + ecx]
add eax, ebx
mov ecx, dword [esp + 0xac]
mov ebx, dword [esp + 0x34]
mov edi, ebp
mov ebp, edx
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x48], eax
test ebp, ebp
je 0x643d67
cmp byte [esi], 0x22
je 0x64401a
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0xa4], esi
mov eax, dword [edx]
mov dword [esp], esi
mov dword [esp + 4], ebp
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
call fcn.0049a5f0
mov eax, dword [esp + 0x10]
test eax, eax
jl 0x643da3
mov edx, dword [esp + 0xa4]
mov ebp, dword [esp + 0x3c]
mov ecx, eax
jmp 0x643dcf
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x643dc2
mov edx, dword [esp + 0xa4]
lea ebx, [edx + ecx - 1]
cmp byte [ebx], 0xa
jne 0x643dc9
mov ebx, 1
jmp 0x643dcb
mov edx, dword [esp + 0xa4]
xor ebx, ebx
mov ebp, ecx
sub ecx, ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], ecx
mov ebx, dword [esp + 0xd4]
movzx esi, byte [ebx + 0xc]
xchg esi, eax
test al, al
xchg esi, eax
jne 0x643e27
mov dword [esp], edx
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x40]
mov dword [esp + 8], eax
mov byte [esp + 0xc], 0x22
call fcn.004028b0
mov eax, dword [esp + 0x10]
test eax, eax
jge 0x6441b8
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0xa4]
mov ebx, dword [esp + 0xd4]
mov ebp, dword [esp + 0x3c]
mov esi, dword [ebx + 0x30]
lea edi, [ecx + esi]
mov ebp, dword [ebx + 0x34]
mov eax, dword [ebx + 0x2c]
cmp ebp, edi
jae 0x643e74
mov dword [esp + 0x7c], esi
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebp
mov dword [esp + 0xc], ecx
lea eax, [0x67e920]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0xa4]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x78], edi
mov dword [esp + 0xcc], eax
lea ebx, [eax + esi]
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call fcn.0045fe60
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xd4]
mov dword [ecx + 0x30], eax
mov edx, dword [esp + 0x7c]
mov dword [ecx + 0x34], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x643ec1
mov edx, dword [esp + 0xcc]
mov dword [ecx + 0x2c], edx
jmp 0x643ed4
lea edi, [ecx + 0x2c]
mov edx, eax
mov eax, dword [esp + 0xcc]
call fcn.0045f670
mov eax, edx
mov edx, dword [ecx + 0x40]
mov ebx, dword [ecx + 0x3c]
inc ebx
mov ebp, dword [ecx + 0x38]
cmp edx, ebx
jae 0x643f40
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
mov dword [esp + 0xc], 1
lea eax, [0x67dee0]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x40], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x643f29
mov dword [ebx + 0x38], eax
jmp 0x643f31
lea edi, [ebx + 0x38]
call fcn.0045f670
mov ebx, ecx
mov ebp, eax
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xd4]
mov dword [ecx + 0x3c], ebx
mov dword [ebp + ebx*4 - 4], eax
mov eax, dword [ecx + 0x48]
inc eax
mov edx, dword [ecx + 0x44]
mov ebx, dword [ecx + 0x4c]
cmp ebx, eax
jb 0x643f5d
mov ebx, dword [esp + 0x44]
test ebx, ebx
jmp 0x643fc5
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x68e520]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x4c], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x643faa
mov dword [ebx + 0x44], eax
mov edx, dword [esp + 0x44]
test edx, edx
jmp 0x643fb8
lea edi, [ebx + 0x44]
call fcn.0045f670
mov edx, dword [esp + 0x44]
test edx, edx
mov ebx, edx
mov edx, eax
mov eax, ecx
mov ecx, dword [esp + 0xd4]
mov dword [ecx + 0x48], eax
lea ebp, [edx + eax*8 - 8]
mov esi, dword [esp + 0x34]
mov dword [ebp], esi
lea eax, [edx + eax*8 - 4]
mov edx, dword [esp + 0x48]
mov dword [eax], edx
jl 0x644199
mov ebp, dword [esp + 0x28]
lea edi, [ebp + ebx]
mov eax, ebp
mov ebp, dword [esp + 0x40]
sub ebp, edi
mov ebx, ebp
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ebp, edi
mov esi, dword [esp + 0xa4]
add ebp, esi
mov esi, dword [esp + 0x3c]
sub esi, edi
add edx, edi
mov edi, dword [esp + 0x34]
jmp 0x643c58
dec edi
mov dword [esp + 0x40], edi
dec ebp
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and edi, 1
add esi, edi
lea edi, [eax + 1]
jmp 0x64424e
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x28]
sub eax, edx
dec eax
mov dword [esp + 0x40], eax
neg eax
sar eax, 0x1f
and eax, edx
mov ebp, dword [esp + 0x64]
sub ebp, edx
mov dword [esp + 0x78], ebp
mov esi, dword [esp + 0xa4]
add eax, esi
mov dword [esp + 0xa4], eax
mov esi, dword [esp + 0x6c]
lea esi, [esi + edx + 1]
mov dword [esp + 0x38], esi
mov edi, dword [ecx + 0x40]
mov edx, dword [ecx + 0x3c]
inc edx
mov eax, dword [ecx + 0x38]
mov ebx, dword [ecx + 0x30]
cmp edi, edx
jae 0x6440eb
mov dword [esp + 0x6c], ebx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 1
lea eax, [0x67dee0]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x40], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x6440ce
mov dword [ebx + 0x38], eax
jmp 0x6440d6
lea edi, [ebx + 0x38]
call fcn.0045f670
mov ebx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x38]
mov edx, ecx
mov ecx, dword [esp + 0xd4]
mov dword [ecx + 0x3c], edx
mov dword [eax + edx*4 - 4], ebx
mov eax, dword [ecx + 0x48]
inc eax
mov edx, dword [ecx + 0x44]
mov ebx, dword [ecx + 0x4c]
cmp ebx, eax
jae 0x64415d
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x68e520]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x4c], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x644147
mov dword [ebx + 0x44], eax
jmp 0x64414f
lea edi, [ebx + 0x44]
call fcn.0045f670
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x38]
mov edx, eax
mov eax, ecx
mov ecx, ebx
mov dword [ecx + 0x48], eax
lea edi, [edx + eax*8 - 8]
mov ebx, edi
mov edi, dword [esp + 0x34]
mov dword [ebx], edi
lea edi, [edx + eax*8 - 4]
mov eax, edi
mov edi, dword [esp + 0x48]
mov dword [eax], edi
lea edi, [ebp - 1]
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x40]
mov esi, edi
mov ebp, dword [esp + 0xa4]
mov edi, dword [esp + 0x7c]
mov edx, dword [esp + 0x38]
jmp 0x643c58
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0xd4]
xor ebx, ebx
xor eax, eax
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0xac]
jmp 0x644a71
mov dword [esp + 0x24], eax
lea eax, [0x699540]
mov dword [esp], eax
call fcn.0040af90
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x2c]
mov dword [eax], ecx
mov edx, dword [esp + 0xd4]
mov ebx, dword [edx + 0x14]
mov dword [eax + 4], ebx
mov ebx, dword [esp + 0x48]
mov ebp, dword [esp + 0x24]
add ebx, ebp
mov dword [eax + 8], ebx
mov ebx, dword [0xa1d3f4]
mov ebp, dword [0xa1d3f0]
mov dword [eax + 0xc], ebp
mov ebp, dword [0xa43e50]
test ebp, ebp
jne 0x64420c
mov dword [eax + 0x10], ebx
jmp 0x64421a
lea edi, [eax + 0x10]
mov ebp, eax
mov eax, ebx
call fcn.0045f670
mov eax, ebp
lea ebx, [0x8954fc]
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0xac]
jmp 0x644a71
mov dword [esp + 0x40], edx
mov dword [esp + 0x50], ebx
mov ebx, ecx
mov ecx, dword [esp + 0xac]
mov ecx, ebp
mov ebp, esi
mov esi, ecx
mov ecx, dword [esp + 0xac]
mov dword [esp + 0xa4], esi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0xac], ecx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x38], edi
mov dword [esp], esi
mov dword [esp + 4], ebp
mov eax, dword [esp + 0x40]
mov dword [esp + 8], eax
mov byte [esp + 0xc], 0x22
call fcn.004028b0
mov eax, dword [esp + 0x10]
test eax, eax
jl 0x644564
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0xd4]
mov edx, dword [ecx + 0x30]
lea ebx, [eax + edx]
mov ebp, dword [ecx + 0x34]
mov esi, dword [ecx + 0x2c]
cmp ebp, ebx
jae 0x6442de
mov dword [esp + 0x78], edx
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], eax
lea ecx, [0x67e920]
mov dword [esp + 0x10], ecx
call fcn.00447800
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x78], ebp
mov dword [esp + 0x6c], ebx
mov dword [esp + 0xcc], esi
lea ecx, [esi + edx]
mov dword [esp], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0045fe60
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0xd4]
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x78]
mov dword [ecx + 0x34], eax
mov eax, dword [0xa43e50]
lea edi, [ecx + 0x2c]
mov dword [esp + 0xc0], edi
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x20]
sub edx, ebx
mov ebp, dword [esp + 0x40]
sub ebp, ebx
mov dword [esp + 0x78], ebp
lea esi, [ebp - 1]
mov dword [esp + 0x40], esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
lea ebp, [ebx + 1]
and ebp, esi
mov esi, dword [esp + 0xa4]
add ebp, esi
mov esi, dword [esp + 0x38]
lea edi, [ebx + esi]
mov dword [esp + 0x6c], edi
lea edi, [esi + ebx + 1]
mov dword [esp + 0x68], edi
test eax, eax
jne 0x644381
mov eax, dword [esp + 0xcc]
mov dword [ecx + 0x2c], eax
jmp 0x644394
mov eax, dword [esp + 0xcc]
mov edi, dword [esp + 0xc0]
call fcn.0045f670
mov dword [esp + 0xa4], ebp
mov dword [esp + 0x64], edx
nop
mov dword [esp], ebp
lea eax, [edx - 1]
mov dword [esp + 0x3c], eax
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 8], ecx
call fcn.00489ca0
mov eax, dword [esp + 0xc]
cmp eax, 0x22
jne 0x644475
mov eax, dword [esp + 0xd4]
mov ecx, dword [eax + 0x30]
inc ecx
mov edx, dword [eax + 0x2c]
mov ebx, dword [eax + 0x34]
cmp ebx, ecx
jae 0x644434
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x67e920]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x34], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x644424
mov dword [ebx + 0x2c], eax
jmp 0x644430
mov edi, dword [esp + 0xc0]
call fcn.0045f670
mov edx, eax
mov eax, ebx
mov dword [eax + 0x30], ecx
mov byte [ecx + edx - 1], 0x22
mov ecx, dword [esp + 0x78]
lea esi, [ecx - 2]
mov ecx, dword [esp + 0x64]
add ecx, 0xfffffffe
mov edx, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and esi, 1
mov ebx, dword [esp + 0xa4]
lea ebp, [ebx + esi]
mov ebx, dword [esp + 0x20]
mov esi, ecx
mov ecx, dword [esp + 0x38]
lea edi, [ecx + ebx + 2]
jmp 0x644557
mov ecx, dword [esp + 0xd4]
cmp dword [ecx], eax
je 0x644036
mov eax, dword [esp + 0x64]
cmp eax, 1
je 0x6444a4
mov edx, dword [esp + 0xa4]
lea eax, [eax + edx - 2]
cmp byte [eax], 0xa
jne 0x6444ab
mov eax, 1
jmp 0x6444ad
mov edx, dword [esp + 0xa4]
xor eax, eax
mov ebx, dword [esp + 0x3c]
cmp eax, ebx
je 0x64479b
movzx eax, byte [ecx + 0xc]
test al, al
je 0x64472d
mov eax, dword [ecx + 0x30]
inc eax
mov ebp, dword [ecx + 0x2c]
mov esi, dword [ecx + 0x34]
cmp esi, eax
jae 0x64453c
mov dword [esp], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov dword [esp + 0xc], 1
lea eax, [0x67e920]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x34], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x64451a
mov dword [ebx + 0x2c], eax
jmp 0x644526
mov edi, dword [esp + 0xc0]
call fcn.0045f670
mov edx, dword [esp + 0xa4]
mov ebx, dword [esp + 0x3c]
mov ebp, eax
mov eax, ecx
mov ecx, dword [esp + 0xd4]
mov dword [ecx + 0x30], eax
mov byte [eax + ebp - 1], 0x22
mov eax, ecx
mov edx, dword [esp + 0x40]
mov esi, ebx
mov ebp, dword [esp + 0xa4]
mov edi, dword [esp + 0x68]
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x50]
jmp 0x644230
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x6448cd
mov ecx, dword [esp + 0xd4]
mov edx, dword [ecx + 0x30]
lea ebx, [edx + eax]
mov ebp, dword [ecx + 0x34]
mov esi, dword [ecx + 0x2c]
cmp ebp, ebx
jae 0x6445bd
mov dword [esp + 0x78], edx
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], eax
lea ecx, [0x67e920]
mov dword [esp + 0x10], ecx
call fcn.00447800
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x78], ebp
mov dword [esp + 0xcc], esi
mov dword [esp + 0x6c], ebx
lea ecx, [esi + edx]
mov dword [esp], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0045fe60
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0xd4]
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x78]
mov dword [ecx + 0x34], eax
mov eax, dword [0xa43e50]
test eax, eax
jne 0x644611
mov eax, dword [esp + 0xcc]
mov dword [ecx + 0x2c], eax
jmp 0x644620
lea edi, [ecx + 0x2c]
mov eax, dword [esp + 0xcc]
call fcn.0045f670
mov eax, dword [esp + 0x50]
test eax, eax
jne 0x6448ae
mov dword [esp], ecx
call fcn.006435e0
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
add edx, ebx
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov dword [esp + 0xa8], esi
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
test ebx, ebx
je 0x644685
mov edx, eax
mov eax, dword [esp + 0x7c]
inc eax
mov dword [esp + 0x88], eax
mov eax, 1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x88]
jmp 0x64468f
mov dword [esp + 0x38], edx
mov edx, eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x7c], eax
mov eax, dword [0xa1d4c4]
cmp dword [0xa1d4c0], ebp
jne 0x64470a
mov dword [esp + 0xcc], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0xbc], esi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x58], ebx
mov dword [esp], ebp
mov ecx, dword [esp + 0xa8]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00403670
movzx eax, byte [esp + 0xc]
test al, al
je 0x6446f0
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0xcc]
mov ebx, dword [esp + 0x58]
xor edi, edi
xor esi, esi
jmp 0x64470a
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0xcc]
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0xbc]
mov eax, dword [esp + 0xd4]
mov ebp, edx
mov dword [esp + 0xac], esi
mov edx, ecx
mov esi, ebx
mov ecx, dword [esp + 0x7c]
mov ebx, edi
mov edi, dword [esp + 0x38]
jmp 0x644230
lea eax, [0x699540]
mov dword [esp], eax
call fcn.0040af90
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x2c]
mov dword [eax], ecx
mov edx, dword [esp + 0xd4]
mov ebx, dword [edx + 0x14]
mov dword [eax + 4], ebx
mov ebx, dword [esp + 0x6c]
mov dword [eax + 8], ebx
mov ebx, dword [0xa1d404]
mov ebp, dword [0xa1d400]
mov dword [eax + 0xc], ebp
mov ebp, dword [0xa43e50]
test ebp, ebp
jne 0x644777
mov dword [eax + 0x10], ebx
jmp 0x644785
lea edi, [eax + 0x10]
mov ebp, eax
mov eax, ebx
call fcn.0045f670
mov eax, ebp
lea ebx, [0x8954fc]
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0xac]
jmp 0x644a71
mov eax, dword [ecx + 0x40]
mov edx, dword [ecx + 0x3c]
inc edx
mov ebx, dword [ecx + 0x38]
mov ebp, dword [ecx + 0x30]
cmp eax, edx
jae 0x64480e
mov dword [esp + 0x7c], ebp
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 1
lea eax, [0x67dee0]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x40], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x6447f7
mov dword [ebx + 0x38], eax
jmp 0x6447ff
lea edi, [ebx + 0x38]
call fcn.0045f670
mov ebp, dword [esp + 0x7c]
mov edx, ecx
mov ebx, eax
mov ecx, dword [esp + 0xd4]
mov dword [ecx + 0x3c], edx
mov dword [ebx + edx*4 - 4], ebp
mov eax, dword [ecx + 0x48]
inc eax
mov edx, dword [ecx + 0x44]
mov ebx, dword [ecx + 0x4c]
cmp ebx, eax
jae 0x644878
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x68e520]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x4c], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x64486a
mov dword [ebx + 0x44], eax
jmp 0x644872
lea edi, [ebx + 0x44]
call fcn.0045f670
mov edx, eax
mov eax, ecx
mov ecx, ebx
mov dword [ecx + 0x48], eax
lea ebx, [edx + eax*8 - 8]
mov ebp, dword [esp + 0x34]
mov dword [ebx], ebp
lea edx, [edx + eax*8 - 4]
mov ebx, dword [esp + 0x48]
mov dword [edx], ebx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0xd4]
xor ebx, ebx
xor eax, eax
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0xac]
jmp 0x644a71
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0xd4]
xor ebx, ebx
xor eax, eax
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0xac]
jmp 0x644a71
mov eax, dword [esp + 0xd4]
movzx ecx, byte [eax + 0xc]
test cl, cl
je 0x6448e2
mov ecx, dword [esp + 0x50]
jmp 0x6448ee
mov ecx, dword [esp + 0x50]
test ecx, ecx
je 0x644a07
mov edx, dword [eax + 0x40]
mov ebx, dword [eax + 0x3c]
inc ebx
mov ebp, dword [eax + 0x38]
mov esi, dword [eax + 0x30]
cmp edx, ebx
jae 0x644965
mov dword [esp + 0x7c], esi
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
mov dword [esp + 0xc], 1
lea eax, [0x67dee0]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x40], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x64494a
mov dword [ebx + 0x38], eax
jmp 0x644952
lea edi, [ebx + 0x38]
call fcn.0045f670
mov esi, dword [esp + 0x7c]
mov ebx, ecx
mov ebp, eax
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0x50]
mov dword [eax + 0x3c], ebx
mov dword [ebp + ebx*4 - 4], esi
mov edx, dword [eax + 0x48]
inc edx
mov ebx, dword [eax + 0x44]
mov ebp, dword [eax + 0x4c]
cmp ebp, edx
jae 0x6449d8
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x68e520]
mov dword [esp + 0x10], eax
call fcn.00447800
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xd4]
mov dword [ebx + 0x4c], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x6449c1
mov dword [ebx + 0x44], eax
jmp 0x6449c9
lea edi, [ebx + 0x44]
call fcn.0045f670
mov edx, ecx
mov ebx, eax
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0x50]
mov dword [eax + 0x48], edx
lea ebp, [ebx + edx*8 - 8]
mov esi, dword [esp + 0x34]
mov dword [ebp], esi
lea edx, [ebx + edx*8 - 4]
mov ebx, dword [esp + 0x48]
mov dword [edx], ebx
mov ecx, dword [esp + 0x2c]
mov edx, eax
xor ebx, ebx
xor eax, eax
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0xac]
jmp 0x644a71
lea eax, [0x699540]
mov dword [esp], eax
call fcn.0040af90
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x2c]
mov dword [eax], ecx
mov edx, dword [esp + 0x7c]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x38]
mov dword [eax + 8], edx
mov edx, dword [0xa1d404]
mov ebx, dword [0xa1d400]
mov dword [eax + 0xc], ebx
mov ebx, dword [0xa43e50]
test ebx, ebx
jne 0x644a4b
mov dword [eax + 0x10], edx
jmp 0x644a59
lea edi, [eax + 0x10]
mov ebx, eax
mov eax, edx
call fcn.0045f670
mov eax, ebx
mov edx, dword [esp + 0xd4]
lea ebx, [0x8954fc]
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0xac]
test ebx, ebx
jne 0x644a79
mov ebx, ebp
mov eax, esi
mov dword [esp + 0xb0], eax
mov dword [esp + 0x54], ebx
mov ecx, dword [edx + 0x2c]
mov ebp, dword [edx + 0x30]
mov dword [esp], 0
mov dword [esp + 4], ecx
mov dword [esp + 8], ebp
call fcn.0044b280
mov eax, dword [esp + 0xd4]
mov ecx, dword [eax + 0x3c]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0xe0]
cmp ebx, ecx
jl 0x644ac0
mov ecx, dword [esp + 0xd8]
jmp 0x644af9
mov dword [esp + 0xa0], edx
mov dword [esp + 0x7c], ecx
lea eax, [0x67e720]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ecx
call fcn.00447740
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0xa0]
mov ecx, eax
mov ebx, dword [esp + 0x7c]
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xb8], ecx
mov dword [esp + 0x7c], ebx
mov ebp, dword [eax + 0x3c]
mov dword [esp + 0x78], ebp
mov esi, dword [eax + 0x38]
mov dword [esp + 0xb4], esi
xor edi, edi
xor edi, edi
mov dword [esp + 0x30], edi
xor edi, edi
jmp 0x644b52
inc edi
mov ecx, dword [esp + 0xb8]
mov esi, dword [esp + 0xb4]
mov ebp, dword [esp + 0x78]
mov ebx, dword [esp + 0x74]
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x80]
cmp edi, ebp
jge 0x644b97
mov ebx, dword [esi + edi*4]
mov dword [esp + 0x74], ebx
lea esi, [ecx + edi*8 + 4]
mov ebp, dword [esp + 0x30]
sub ebx, ebp
mov dword [esi], ebx
lea esi, [ecx + edi*8]
mov ecx, dword [0xa43e50]
neg ebx
sar ebx, 0x1f
and ebp, ebx
lea ebx, [edx + ebp]
test ecx, ecx
jne 0x644b84
mov dword [esi], ebx
jmp 0x644b21
mov ecx, edi
mov edi, esi
mov ebp, eax
mov eax, ebx
call fcn.0045f670
mov eax, ebp
mov edi, ecx
jmp 0x644b21
mov edx, dword [eax + 8]
test edx, edx
jle 0x644c2e
cmp edx, ebp
je 0x644c21
mov eax, dword [esp + 0x54]
test eax, eax
je 0x644bba
mov edx, dword [esp + 0xb0]
jmp 0x644c3e
lea eax, [0x699540]
mov dword [esp], eax
call fcn.0040af90
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x2c]
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], 1
mov ecx, dword [0xa1d3fc]
mov edx, dword [0xa1d3f8]
mov dword [eax + 0xc], edx
mov edx, dword [0xa43e50]
test edx, edx
jne 0x644bfa
mov dword [eax + 0x10], ecx
jmp 0x644c08
lea edi, [eax + 0x10]
mov edx, eax
mov eax, ecx
call fcn.0045f670
mov eax, edx
mov ecx, dword [esp + 0xb8]
mov ebx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x78]
mov edx, eax
lea eax, [0x8954fc]
jmp 0x644c3e
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0xb0]
jmp 0x644c3e
jne 0x644c33
mov dword [eax + 8], ebp
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0xb0]
mov dword [esp + 0xe4], ecx
mov dword [esp + 0xe8], ebp
mov dword [esp + 0xec], ebx
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], edx
add esp, 0xd0
ret
call fcn.0045e260
jmp fcn.00643950