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

Disassembly:
mov eax, 0x3e9c
call fcn.00697010
mov eax, dword [0x7dcee0]
xor eax, esp
mov dword [esp + 0x3e98], eax
mov eax, dword [esp + 0x3ea8]
mov ecx, dword [esp + 0x3eac]
mov edx, dword [esp + 0x3ebc]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x3eac]
mov ebp, dword [esi + 0xb0]
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 0x34]
mov dword [esp + 0x4c], eax
push edi
mov edi, dword [esi]
lea ebx, [esi + 4]
mov eax, ebp
mov dword [esp + 0x1c], esi
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x28], 0
mov dword [esp + 0x58], ebp
mov dword [esp + 0x14], ebx
call fcn.00643f00
push 0x80
lea ecx, [esp + 0xd0]
push 0
push ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x74], 0x1312d00
call fcn.00695690
push 0x10
push ebx
mov ecx, edi
lea eax, [esp + 0xc0]
call fcn.00643790
push 0x14
push ebx
mov ecx, edi
lea eax, [esp + 0xa8]
call fcn.00643790
push 0x14
push ebx
mov ecx, edi
lea eax, [esp + 0x90]
call fcn.00643790
mov ecx, ebx
lea eax, [esp + 0x3eb0]
call fcn.00644e10
mov edx, dword [esp + 0x80]
mov ecx, dword [esp + 0x3eec]
push edx
lea eax, [esi + 0xf0]
push eax
push ecx
lea edx, [esp + 0x3ebc]
push edx
mov edx, dword [esp + 0x84]
lea eax, [esp + 0xa0]
push eax
mov eax, dword [esp + 0x98]
lea ecx, [esp + 0xc4]
push ecx
push edx
push eax
lea ecx, [esp + 0x190]
push ecx
mov eax, esi
call fcn.00644390
add esp, 0x48
cmp byte [esi + 8], 0
mov eax, ebp
setne byte [esp + 0x12]
call fcn.00643ef0
mov edx, dword [esp + 0x40]
mov dword [edx], eax
cmp byte [esi + 8], 0
je 0x6474a8
mov eax, ebp
call fcn.00643cd0
jmp 0x6474ad
mov eax, 0x30
push eax
push ebx
mov dword [esp + 0x6c], eax
call fcn.00644f20
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x6474ce
mov dword [esp + 0x28], 0x40
jmp 0x6486a0
mov edi, 0x11
lea eax, [esp + 0xac]
call fcn.00645900
lea eax, [esp + 0xac]
call fcn.00643800
mov ecx, dword [esp + 0x3eb4]
movq xmm0, qword [ecx]
movq qword [eax], xmm0
movq xmm0, qword [ecx + 8]
movq qword [eax + 8], xmm0
cmp dword [ebx], 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x4c], 0
jne 0x6486a0
lea esp, [esp]
mov edx, dword [esp + 0x2c]
mov eax, edx
call fcn.00644f10
test al, al
je 0x647543
mov ebx, dword [esp + 0x4c]
neg ebx
sbb bl, bl
and bl, 0xfd
add bl, 0xe
mov byte [esp + 0x13], bl
jmp 0x647567
call fcn.00644ee0
mov byte [esp + 0x13], al
cmp al, 0xb
je 0x647554
cmp al, 0xe
jne 0x647563
mov eax, dword [esp + 0x1c]
cmp byte [eax + 8], 0
je 0x647563
mov byte [esp + 0x13], 0
mov bl, byte [esp + 0x13]
mov eax, dword [esp + 0x1c]
add eax, 4
cmp dword [eax], 0
mov dword [esp + 0x14], eax
jne 0x6486a0
sub dword [esp + 0x68], 1
je 0x64854b
movzx esi, bl
cmp esi, 0x1f
ja case.default.0x647592
jmp dword [esi*4 + 0x6486fc]
mov esi, dword [esp + 0x1c]
cmp byte [esi + 8], 0
je case.0x647592.0
cmp byte [esi + 0x5d], 0
jne 0x64854b
mov edx, ebp
call fcn.00645050
test eax, eax
jl case.0x647592.0
mov dword [esi + 0x78], eax
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov esi, dword [esp + 0x1c]
cmp byte [esi + 8], 0
je case.0x647592.0
cmp dword [esi + 0x60], 0
je 0x64854b
mov ebx, dword [esi + 0x80]
mov ecx, dword [esi + 0x78]
mov eax, dword [esi + 0x7c]
push ebx
lea edi, [esi + 0x5c]
push ecx
mov ecx, edi
call fcn.00641570
add esp, 8
test al, al
je 0x647623
mov ecx, dword [esi + 0x7c]
mov edx, dword [esi + 0x78]
push ebx
push ecx
push edx
call fcn.00641320
add esp, 0xc
mov dword [esp + 0x28], eax
test eax, eax
jne 0x6486a0
mov edx, ebp
call fcn.00645050
cmp eax, dword [esp + 0x64]
ja 0x64854b
push eax
push ebp
push edi
call fcn.006471d0
add esp, 0xc
mov byte [esi + 0x5d], 1
jmp 0x647520
lea eax, [esp + 0x3e8c]
call fcn.00644e30
test al, al
jne case.0x647592.0
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x1c]
push 0
lea eax, [esp + 0x16]
push eax
push ecx
lea edx, [esp + 0x98]
push edx
push ebp
mov eax, esi
call fcn.00646f70
mov eax, dword [esi + 0xb0]
add esp, 0x14
cmp byte [eax + 0x231], 0
jne 0x6486a0
mov eax, ebp
call fcn.00645270
jmp 0x647520
lea eax, [esp + 0x3e8c]
call fcn.00644e30
test al, al
jne case.0x647592.0
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x1c]
push 0
lea ecx, [esp + 0x16]
push ecx
push edx
lea eax, [esp + 0x78]
push eax
push ebp
mov eax, esi
call fcn.00646f70
mov ecx, dword [esi + 0xb0]
add esp, 0x14
cmp byte [ecx + 0x231], 0
jne 0x6486a0
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
cmp eax, 1
jbe 0x647717
cmp byte [esp + 0x12], 0
jne 0x647717
xor esi, esi
mov edx, ebp
call fcn.006450e0
add eax, dword [esp + 0x54]
mov edx, dword [esp + 0x40]
mov dword [edx], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0xb0]
cmp byte [ecx + 0x231], 0
mov byte [esp + 0x12], 1
jne 0x6486a0
mov edx, ebp
call fcn.00645090
mov ecx, dword [esp + 0x3ec8]
mov edx, dword [esp + 0x3ec4]
add ecx, eax
push ecx
mov dword [esp + 0x3ecc], ecx
push edx
jmp 0x647fcd
mov ecx, ebp
call fcn.00644fc0
xor edi, edi
mov dword [esp + 0x14], eax
test eax, eax
jbe 0x6477b4
mov ebx, dword [esp + 0x3ec4]
mov esi, edi
mov edx, ebp
call fcn.006450e0
lea esi, [edi + 1]
add ebx, eax
call fcn.006450e0
mov ecx, dword [esp + 0x3ec8]
add ecx, eax
push ecx
push ebx
lea eax, [esp + 0x154]
mov dword [esp + 0x3ed0], ecx
call fcn.00646b50
add edi, 2
add esp, 8
cmp edi, dword [esp + 0x14]
jb 0x647770
mov dword [esp + 0x3ec4], ebx
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
cmp bl, 6
sete bl
mov edi, eax
xor esi, esi
test edi, edi
jbe 0x647819
mov edx, ebp
call fcn.006450e0
test bl, bl
je 0x6477e9
add dword [esp + 0x3ec4], eax
jmp 0x6477f0
add dword [esp + 0x3ec8], eax
mov ecx, dword [esp + 0x3ec8]
mov edx, dword [esp + 0x3ec4]
push ecx
test bl, bl
push edx
lea eax, [esp + 0x154]
sete bl
call fcn.00646b50
inc esi
add esp, 8
cmp esi, edi
jb 0x6477d5
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
xor edi, edi
mov dword [esp + 0x18], eax
cmp eax, 6
jb 0x6478ea
jmp 0x647840
mov esi, edi
mov edx, ebp
call fcn.006450e0
mov ebx, eax
add ebx, dword [esp + 0x3ec4]
lea esi, [edi + 1]
call fcn.006450e0
add eax, dword [esp + 0x3ec8]
lea esi, [edi + 2]
mov dword [esp + 0x20], eax
call fcn.006450e0
add eax, ebx
lea esi, [edi + 3]
mov dword [esp + 0x14], eax
call fcn.006450e0
add eax, dword [esp + 0x20]
lea esi, [edi + 4]
mov dword [esp + 0x44], eax
call fcn.006450e0
add eax, dword [esp + 0x14]
lea esi, [edi + 5]
mov dword [esp + 0x24], eax
call fcn.006450e0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
mov esi, eax
mov eax, dword [esp + 0x44]
add esi, eax
push esi
push ecx
push eax
mov eax, dword [esp + 0x2c]
push edx
push eax
push ebx
lea eax, [esp + 0x164]
call fcn.00646cd0
mov ecx, dword [esp + 0x3c]
add edi, 6
lea edx, [edi + 6]
add esp, 0x18
mov dword [esp + 0x3ec4], ecx
mov dword [esp + 0x3ec8], esi
cmp edx, dword [esp + 0x18]
jbe 0x647840
mov bl, byte [esp + 0x13]
cmp bl, 0x18
jne 0x647931
mov esi, edi
mov edx, ebp
call fcn.006450e0
mov ebx, dword [esp + 0x3ec4]
add ebx, eax
lea esi, [edi + 1]
mov dword [esp + 0x3ec4], ebx
call fcn.006450e0
mov ecx, dword [esp + 0x3ec8]
add ecx, eax
push ecx
push ebx
lea eax, [esp + 0x154]
mov dword [esp + 0x3ed0], ecx
call fcn.00646b50
add esp, 8
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov eax, dword [esp + 0x4c]
cmp eax, 0x10
jg 0x64854b
lea esi, [eax + 1]
mov ecx, esi
lea edx, [esp + 0xac]
call fcn.00645920
mov edi, eax
mov edx, ebp
mov dword [esp + 0x2c], edi
call fcn.00645050
mov edx, dword [esp + 0x58]
push eax
mov ecx, edi
cmp bl, 0x1d
je 0x64797b
call fcn.00643ea0
jmp 0x647980
call fcn.00643e50
add esp, 4
test eax, eax
jne 0x64854b
mov dword [esp + 0x4c], esi
jmp 0x647520
mov ecx, dword [esp + 0x4c]
cmp ecx, 1
jl 0x64854b
dec ecx
lea edx, [esp + 0xac]
mov dword [esp + 0x4c], ecx
call fcn.00645920
mov dword [esp + 0x2c], eax
jmp 0x647520
mov edx, dword [esp + 0x2c]
call fcn.00644ee0
movzx edx, al
lea ecx, [edx - 1]
cmp ecx, 0x24
ja case.0x6479da.3
movzx ecx, byte [ecx + 0x648794]
jmp dword [ecx*4 + 0x64877c]
push 0
push 0x791804
jmp 0x647a2e
push 0
push 0x791fe0
lea edx, [esp + 0x154]
push edx
lea eax, [esp + 0x3ed4]
push eax
lea ecx, [esp + 0x3ed4]
push ecx
push ebp
call fcn.00647060
add esp, 0x18
mov eax, ebp
call fcn.00645270
jmp 0x647520
push 0
push 0x791fec
jmp 0x647a2e
push 1
push 0x791ff8
lea edx, [esp + 0x154]
push edx
lea eax, [esp + 0x3ed4]
push eax
lea ecx, [esp + 0x3ed4]
push ecx
push ebp
call fcn.00647060
add esp, 0x18
jmp 0x647520
mov ecx, dword [esp + 0x1c]
cmp byte [ecx + 8], 0
jne case.0x647592.0
cmp al, 0x26
jae case.0x647592.0
cmp edx, 0x1e
ja case.0x647592.0
jmp dword [edx*4 + 0x6487bc]
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
test eax, eax
je 0x647aa5
test esi, esi
je 0x647aa5
mov eax, 1
push eax
mov eax, ebp
call fcn.00644fd0
add esp, 4
jmp 0x647520
xor eax, eax
push eax
mov eax, ebp
call fcn.00644fd0
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
test eax, eax
jne 0x647add
test esi, esi
jne 0x647add
push eax
mov eax, ebp
call fcn.00644fd0
add esp, 4
jmp 0x647520
mov eax, 1
push eax
mov eax, ebp
call fcn.00644fd0
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
xor edx, edx
test eax, eax
sete dl
mov eax, ebp
push edx
call fcn.00644fd0
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
test eax, eax
jge 0x64853b
neg eax
push eax
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
add eax, esi
push eax
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
sub eax, esi
push eax
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
push esi
push eax
call fcn.00615650
push eax
mov eax, ebp
call fcn.00645010
add esp, 0xc
jmp 0x647520
mov edx, ebp
call fcn.00645090
neg eax
push eax
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
xor ecx, ecx
cmp eax, esi
sete cl
mov eax, ebp
push ecx
call fcn.00644fd0
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
jmp 0x647520
mov edx, ebp
call fcn.00645050
mov esi, eax
call fcn.00645090
cmp esi, 0x1f
ja 0x647520
mov dword [esp + esi*4 + 0xcc], eax
jmp 0x647520
mov edx, ebp
call fcn.00645050
cmp eax, 0x1f
ja 0x647520
mov edx, dword [esp + eax*4 + 0xcc]
push edx
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
mov edi, eax
call fcn.00645090
mov ebx, eax
call fcn.00645090
cmp edi, esi
jle 0x647c4c
mov eax, ebx
push eax
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edi, dword [esp + 0x58]
mov eax, dword [edi + 0x2e0]
mov ecx, dword [eax + 0x288]
mov esi, ecx
and esi, 0xffff
inc esi
call fcn.00641b10
mov ecx, dword [edi + 0x2e0]
mov dword [ecx + 0x288], eax
push esi
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
push esi
push eax
call fcn.006425d0
push eax
mov eax, ebp
call fcn.00645010
add esp, 0xc
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov edi, eax
test edi, edi
jle 0x647d06
push edi
push edi
call fcn.00615650
lea esi, [eax + edi + 1]
sar esi, 1
add esp, 8
cmp esi, edi
je 0x647d08
lea esp, [esp]
push esi
push edi
mov ebx, esi
call fcn.00615650
lea esi, [eax + esi + 1]
sar esi, 1
add esp, 8
cmp esi, ebx
jne 0x647ce0
push esi
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
xor esi, esi
push esi
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
push esi
mov eax, ebp
call fcn.00645010
push esi
mov eax, ebp
call fcn.00645010
add esp, 8
jmp 0x647520
mov edx, ebp
call fcn.00645090
mov esi, eax
call fcn.00645090
mov edi, eax
push esi
mov eax, ebp
call fcn.00645010
push edi
mov eax, ebp
call fcn.00645010
add esp, 8
jmp 0x647520
mov edx, ebp
call fcn.00645050
mov ecx, ebp
mov edx, eax
call fcn.00644fc0
test eax, eax
jbe 0x647520
test edx, edx
jl 0x647d87
cmp edx, eax
jb 0x647d85
xor eax, eax
jmp 0x647d88
sub eax, edx
dec eax
mov esi, eax
mov edx, ebp
call fcn.006450e0
push eax
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov edx, ebp
call fcn.00645050
mov esi, eax
call fcn.00645050
push esi
push eax
push ebp
call fcn.006451a0
add esp, 0xc
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
cmp eax, 1
jbe 0x647ddf
lea eax, [esp + 0x3e8c]
call fcn.00644e30
test al, al
jne case.0x647592.0
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x1c]
push 0
lea edx, [esp + 0x16]
push edx
push eax
lea ecx, [esp + 0x78]
push ecx
push ebp
mov eax, esi
call fcn.00646f70
mov edx, dword [esi + 0xb0]
add esp, 0x14
cmp byte [edx + 0x231], 0
jne 0x6486a0
cmp bl, 0x13
jne 0x647e52
lea eax, [esp + 0x6c]
call fcn.006437f0
mov ecx, eax
lea eax, [esp + 0x8c]
call fcn.006437f0
mov edx, dword [esp + 0x2c]
add ecx, eax
push edx
mov eax, ecx
lea edi, [esp + 0x3e90]
call fcn.00646f40
add esp, 4
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov eax, dword [esp + 0x50]
push eax
lea ecx, [esp + 0x2eac]
push ecx
lea edx, [esp + 0x1f94]
mov edi, esi
push edx
lea esi, [esp + 0x2f60]
call fcn.00644010
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x3e7c]
call fcn.00644e10
lea eax, [esp + 0x78]
call fcn.006437f0
mov ecx, eax
lea eax, [esp + 0x98]
call fcn.006437f0
mov edx, dword [esp + 0x38]
add ecx, eax
push edx
mov eax, ecx
lea edi, [esp + 0x3e80]
call fcn.00646f40
push 0
push 0
mov eax, edi
push eax
lea ecx, [esp + 0x88]
push ecx
lea edx, [esp + 0xac]
push edx
mov eax, esi
push eax
call fcn.006467e0
add esp, 0x28
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
cmp eax, 2
jbe 0x647f05
cmp byte [esp + 0x12], 0
jne 0x647f05
xor esi, esi
mov edx, ebp
call fcn.006450e0
add eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x40]
mov dword [ecx], eax
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0xb0]
cmp byte [eax + 0x231], 0
mov byte [esp + 0x12], 1
jne 0x6486a0
mov edx, ebp
call fcn.00645090
mov esi, dword [esp + 0x3ec8]
add esi, eax
mov dword [esp + 0x3ec8], esi
call fcn.00645090
mov ecx, dword [esp + 0x3ec4]
add ecx, eax
push esi
push ecx
mov dword [esp + 0x3ecc], ecx
lea ecx, [esp + 0x154]
push ecx
call fcn.006472d0
add esp, 0xc
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
cmp eax, 1
jbe 0x647f91
cmp byte [esp + 0x12], 0
jne 0x647f91
xor esi, esi
mov edx, ebp
call fcn.006450e0
add eax, dword [esp + 0x54]
mov edx, dword [esp + 0x40]
mov dword [edx], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0xb0]
cmp byte [ecx + 0x231], 0
mov byte [esp + 0x12], 1
jne 0x6486a0
mov edx, ebp
call fcn.00645090
mov ecx, dword [esp + 0x3ec4]
mov edx, dword [esp + 0x3ec8]
add ecx, eax
push edx
mov dword [esp + 0x3ec8], ecx
push ecx
lea eax, [esp + 0x154]
push eax
call fcn.006472d0
add esp, 0xc
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
xor edi, edi
mov dword [esp + 0x18], eax
cmp eax, 6
jbe 0x64804c
lea ebx, [edi + 6]
mov edi, edi
mov esi, edi
mov edx, ebp
call fcn.006450e0
add dword [esp + 0x3ec4], eax
lea esi, [ebx - 5]
call fcn.006450e0
mov ecx, dword [esp + 0x3ec8]
add ecx, eax
push ecx
mov dword [esp + 0x3ecc], ecx
mov ecx, dword [esp + 0x3ec8]
push ecx
lea eax, [esp + 0x154]
call fcn.00646b50
add ebx, 2
add esp, 8
add edi, 2
cmp ebx, dword [esp + 0x18]
jb 0x648000
cmp edi, dword [esp + 0x18]
jae 0x6480f9
mov esi, edi
mov edx, ebp
call fcn.006450e0
mov ebx, eax
add ebx, dword [esp + 0x3ec4]
lea esi, [edi + 1]
call fcn.006450e0
add eax, dword [esp + 0x3ec8]
lea esi, [edi + 2]
mov dword [esp + 0x20], eax
call fcn.006450e0
add eax, ebx
lea esi, [edi + 3]
mov dword [esp + 0x14], eax
call fcn.006450e0
add eax, dword [esp + 0x20]
lea esi, [edi + 4]
mov dword [esp + 0x44], eax
call fcn.006450e0
add eax, dword [esp + 0x14]
lea esi, [edi + 5]
mov dword [esp + 0x24], eax
call fcn.006450e0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov esi, eax
mov eax, dword [esp + 0x44]
add esi, eax
push esi
push edx
push eax
mov eax, dword [esp + 0x20]
push eax
push ecx
push ebx
lea eax, [esp + 0x164]
call fcn.00646cd0
mov edx, dword [esp + 0x3c]
add edi, 6
add esp, 0x18
mov dword [esp + 0x3ec4], edx
mov dword [esp + 0x3ec8], esi
cmp edi, dword [esp + 0x18]
jb 0x648056
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
mov ecx, eax
and ecx, 0xfffffffd
sub eax, ecx
mov edi, eax
mov dword [esp + 0x20], ecx
cmp edi, ecx
jae 0x6481c7
mov eax, dword [esp + 0x20]
sub eax, edi
test al, 1
je 0x648142
mov esi, edi
mov edx, ebp
call fcn.006450e0
add eax, dword [esp + 0x3ec4]
inc edi
mov dword [esp + 0x18], eax
jmp 0x64814d
mov ecx, dword [esp + 0x3ec4]
mov dword [esp + 0x18], ecx
mov esi, edi
mov edx, ebp
call fcn.006450e0
add eax, dword [esp + 0x3ec8]
lea esi, [edi + 1]
mov dword [esp + 0x14], eax
call fcn.006450e0
mov ebx, eax
add ebx, dword [esp + 0x18]
lea esi, [edi + 2]
call fcn.006450e0
add eax, dword [esp + 0x14]
lea esi, [edi + 3]
mov dword [esp + 0x24], eax
call fcn.006450e0
mov edx, dword [esp + 0x14]
mov esi, eax
mov eax, dword [esp + 0x24]
add esi, eax
push esi
push ebx
push eax
mov eax, dword [esp + 0x24]
push ebx
push edx
push eax
lea eax, [esp + 0x164]
call fcn.00646cd0
add edi, 4
add esp, 0x18
mov dword [esp + 0x3ec4], ebx
mov dword [esp + 0x3ec8], esi
cmp edi, dword [esp + 0x20]
jb 0x648121
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
mov ecx, eax
and ecx, 0xfffffffd
sub eax, ecx
mov edi, eax
mov dword [esp + 0x14], ecx
cmp edi, ecx
jae 0x648297
nop
mov ecx, dword [esp + 0x14]
sub ecx, edi
test cl, 1
je 0x648212
mov esi, edi
mov edx, ebp
call fcn.006450e0
add eax, dword [esp + 0x3ec8]
inc edi
mov dword [esp + 0x18], eax
jmp 0x64821d
mov edx, dword [esp + 0x3ec8]
mov dword [esp + 0x18], edx
mov esi, edi
mov edx, ebp
call fcn.006450e0
mov ebx, eax
add ebx, dword [esp + 0x3ec4]
lea esi, [edi + 1]
mov dword [esp + 0x24], ebx
call fcn.006450e0
add eax, ebx
lea esi, [edi + 2]
mov dword [esp + 0x20], eax
call fcn.006450e0
mov ebx, eax
add ebx, dword [esp + 0x18]
lea esi, [edi + 3]
call fcn.006450e0
mov ecx, dword [esp + 0x24]
mov esi, eax
mov eax, dword [esp + 0x20]
push ebx
add esi, eax
push esi
push ebx
push eax
mov eax, dword [esp + 0x28]
push eax
push ecx
lea eax, [esp + 0x164]
call fcn.00646cd0
add edi, 4
add esp, 0x18
mov dword [esp + 0x3ec4], esi
mov dword [esp + 0x3ec8], ebx
cmp edi, dword [esp + 0x14]
jb 0x6481f0
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov ecx, ebp
call fcn.00644fc0
cmp bl, 0x1f
sete dl
mov ecx, eax
and ecx, 0xfffffffd
sub eax, ecx
mov edi, eax
mov dword [esp + 0x14], ecx
cmp edi, ecx
jae 0x64847e
lea eax, [edi + 4]
lea ecx, [edi + 3]
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ecx
lea eax, [edi + 2]
lea ecx, [edi + 1]
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], ecx
jmp 0x6482e7
mov dl, byte [esp + 0x13]
test dl, dl
mov esi, edi
mov edx, ebp
je 0x64838f
call fcn.006450e0
mov edx, dword [esp + 0x3ec8]
add eax, dword [esp + 0x3ec4]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x24], edx
mov edx, ebp
mov dword [esp + 0x20], eax
call fcn.006450e0
mov esi, dword [esp + 0x30]
mov ebx, eax
add ebx, dword [esp + 0x20]
call fcn.006450e0
add eax, dword [esp + 0x3ec8]
mov esi, dword [esp + 0x34]
mov dword [esp + 0x48], eax
call fcn.006450e0
add eax, dword [esp + 0x48]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
sub eax, edi
cmp eax, 5
jne 0x648383
mov esi, dword [esp + 0x38]
call fcn.006450e0
add eax, ebx
mov dword [esp + 0x44], eax
mov esi, dword [esp + 0x44]
mov eax, 1
add dword [esp + 0x3c], eax
add dword [esp + 0x30], eax
add dword [esp + 0x34], eax
add edi, eax
add dword [esp + 0x38], eax
mov byte [esp + 0x13], 0
jmp 0x648426
mov esi, ebx
mov byte [esp + 0x13], 0
jmp 0x648426
mov ecx, dword [esp + 0x3ec4]
mov dword [esp + 0x20], ecx
call fcn.006450e0
add eax, dword [esp + 0x3ec8]
mov esi, dword [esp + 0x3c]
mov edx, ebp
mov dword [esp + 0x24], eax
call fcn.006450e0
mov esi, dword [esp + 0x30]
mov ebx, eax
add ebx, dword [esp + 0x3ec4]
call fcn.006450e0
add eax, dword [esp + 0x24]
mov esi, dword [esp + 0x34]
mov dword [esp + 0x48], eax
call fcn.006450e0
mov edx, dword [esp + 0x14]
add eax, ebx
sub edx, edi
mov dword [esp + 0x44], eax
cmp edx, 5
jne 0x648415
mov esi, dword [esp + 0x38]
mov edx, ebp
call fcn.006450e0
add eax, dword [esp + 0x48]
mov dword [esp + 0x18], eax
mov eax, 1
add dword [esp + 0x3c], eax
add dword [esp + 0x30], eax
add dword [esp + 0x34], eax
add edi, eax
add dword [esp + 0x38], eax
jmp 0x64841d
mov eax, dword [esp + 0x48]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x44]
mov byte [esp + 0x13], 1
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x24]
push esi
push edx
push ebx
push eax
push ecx
lea eax, [esp + 0x164]
call fcn.00646cd0
mov edx, dword [esp + 0x30]
mov eax, 4
add dword [esp + 0x54], eax
add dword [esp + 0x48], eax
add dword [esp + 0x4c], eax
add dword [esp + 0x50], eax
add edi, eax
add esp, 0x18
mov dword [esp + 0x3ec4], esi
mov dword [esp + 0x3ec8], edx
cmp edi, dword [esp + 0x14]
jb 0x6482e3
mov eax, ebp
call fcn.00645270
jmp 0x647520
mov edx, dword [esp + 0x2c]
call fcn.00644ee0
mov esi, eax
call fcn.00644ee0
cwde
shl esi, 8
movsx ecx, si
or eax, ecx
push eax
mov eax, ebp
call fcn.00644fd0
add esp, 4
jmp 0x647520
cmp bl, 0xf6
ja 0x6484ce
add esi, 0xffffff75
push esi
mov eax, ebp
call fcn.00644fd0
add esp, 4
jmp 0x647520
mov edx, dword [esp + 0x2c]
call fcn.00644ee0
cmp bl, 0xfa
ja 0x6484f6
shl esi, 8
lea eax, [eax + esi - 0xf694]
push eax
mov eax, ebp
call fcn.00644fd0
add esp, 4
jmp 0x647520
cmp bl, 0xfe
ja 0x648517
shl esi, 8
mov ecx, 0xfa94
sub ecx, esi
sub ecx, eax
push ecx
mov eax, ebp
call fcn.00644fd0
add esp, 4
jmp 0x647520
mov esi, eax
call fcn.00644ee0
mov edi, eax
call fcn.00644ee0
mov ebx, eax
call fcn.00644ee0
shl esi, 8
or esi, edi
shl esi, 8
or esi, ebx
shl esi, 8
or eax, esi
push eax
mov eax, ebp
call fcn.00645010
add esp, 4
jmp 0x647520
mov dword [esp + 0x28], 0x12
jmp 0x6486a0
mov ecx, ebp
call fcn.00644fc0
cmp eax, 1
je 0x64856e
call fcn.00644fc0
cmp eax, 5
jne 0x648588
cmp byte [esp + 0x12], 0
jne 0x648588
xor esi, esi
mov edx, ebp
call fcn.006450e0
add eax, dword [esp + 0x54]
mov edx, dword [esp + 0x40]
mov dword [edx], eax
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0xb0]
cmp byte [eax + 0x231], 0
jne 0x6486a0
lea esi, [esp + 0x14c]
call fcn.00646ec0
cmp byte [edi + 8], 0
jne 0x6486a0
mov ecx, ebp
call fcn.00644fc0
cmp eax, 1
jbe 0x6486a0
cmp byte [esp + 0x3ec0], 0
jne 0x64854b
mov edx, ebp
call fcn.00645050
mov edi, eax
call fcn.00645050
mov ebx, eax
call fcn.00645090
mov dword [esp + 0x3ec8], eax
call fcn.00645090
mov dword [esp + 0x3ec4], eax
mov eax, edi
mov edi, dword [esp + 0x58]
lea esi, [esp + 0x3e70]
mov ecx, edi
call fcn.00646350
test eax, eax
je 0x64861c
mov dword [esp + 0x28], eax
jmp 0x6486a0
mov edx, dword [esp + 0x3ec8]
mov eax, dword [esp + 0x3ec4]
lea ecx, [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x60]
push edx
mov edx, dword [esp + 0x68]
push eax
push 1
push ecx
mov ecx, dword [esp + 0x30]
push edx
lea eax, [esp + 0x3e88]
push eax
push ecx
call fcn.00647360
add esp, 0x20
lea eax, [esp + 0x3e70]
mov edx, edi
call fcn.006463c0
lea esi, [esp + 0x3e70]
mov eax, ebx
mov ecx, edi
call fcn.00646350
test eax, eax
jne 0x648613
mov ecx, dword [esp + 0x60]
lea edx, [esp + 0x50]
push edx
push eax
push eax
mov eax, dword [esp + 0x68]
push 1
push eax
mov eax, dword [esp + 0x30]
push ecx
mov edx, esi
push edx
push eax
call fcn.00647360
add esp, 0x20
mov eax, esi
mov edx, edi
call fcn.006463c0
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
call fcn.00643810
lea eax, [esp + 0x14c]
call fcn.006444f0
lea esi, [esp + 0x6c]
call fcn.006437c0
lea esi, [esp + 0x8c]
call fcn.006437c0
lea esi, [esp + 0xac]
call fcn.006437c0
mov esi, ebp
call fcn.00644f90
mov ecx, dword [esp + 0x3ea8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0069528d
add esp, 0x3e9c
ret