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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x16c
mov dword [ebp - 0xcc], eax
mov eax, dword [eax]
mov dword [ebp - 0xfc], edx
mov dword [ebp - 0xd8], ecx
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0xcc]
cmp dword [eax + 0x24], 0
jne 0x643831
mov eax, dword [ebp - 0xe0]
cmp byte [eax + 0x49], 0
jne 0x643831
test ecx, ecx
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0xec], 0
je 0x642d04
test byte [ecx + 9], 2
je 0x642d04
cmp dword [ecx + 0x34], 0
jne 0x642d04
mov eax, dword [ecx]
mov edx, ecx
mov dword [ecx], 0
mov dword [ebp - 0xec], eax
mov eax, dword [ebp - 0xe0]
call fcn.005f09d2
mov dword [ebp - 0xd8], 0
mov edx, dword [ebp - 0xfc]
mov eax, dword [ebp - 0xcc]
call fcn.006401af
test eax, eax
mov esi, eax
je 0x6438ad
mov edx, dword [eax + 0x48]
mov eax, dword [ebp - 0xe0]
call fcn.005e0b4f
mov edi, dword [ebp - 0xe0]
mov dword [ebp - 0xe8], eax
shl eax, 4
mov edx, 0x12
add eax, dword [edi + 0x10]
mov eax, dword [eax]
mov dword [esp], 0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xcc]
mov ecx, dword [esi]
call fcn.0060bc4d
test eax, eax
mov edi, eax
mov dword [ebp - 0xd4], 0
jne 0x6438b7
mov eax, dword [esi + 0x24]
mov ecx, 0x74
mov edx, esi
mov dword [esp], 0
mov dword [ebp - 0x120], eax
lea eax, [ebp - 0xbc]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xcc]
call fcn.005e86ad
mov dword [ebp - 0x104], eax
mov eax, dword [esi + 0xc]
mov edx, esi
mov dword [ebp - 0x128], eax
mov eax, dword [ebp - 0xcc]
call fcn.006357d2
test eax, eax
mov ebx, eax
mov dword [ebp - 0xd4], edi
jne 0x6438b7
mov ecx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0xcc]
mov edx, esi
call fcn.00609e81
test eax, eax
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0xd4], ebx
jne 0x6438b7
mov eax, dword [ebp - 0xcc]
call fcn.005feb3a
test eax, eax
mov dword [ebp - 0xd0], eax
je 0x6438b7
mov eax, dword [ebp - 0xcc]
cmp byte [eax + 0x12], 0
jne 0x642e23
mov eax, dword [ebp - 0xd0]
or byte [eax + 0x94], 0x20
cmp dword [ebp - 0xd8], 0
mov ecx, dword [ebp - 0xe8]
setne dl
cmp dword [ebp - 0x104], 0
setne al
or edx, eax
mov eax, dword [ebp - 0xcc]
movzx edx, dl
call fcn.006244de
cmp dword [ebp + 8], 0
jne 0x64392a
cmp dword [ebp - 0xd8], 0
je 0x64392a
mov eax, dword [ebp - 0xcc]
cmp dword [eax + 0x104], 0
jne 0x64392a
mov eax, dword [ebp - 0xd8]
cmp dword [eax + 0x40], 0
jne 0x64392a
mov eax, dword [ebp - 0xcc]
mov edx, esi
mov eax, dword [eax]
mov dword [ebp - 0x100], eax
mov eax, dword [ebp - 0xcc]
call fcn.005e0caa
test eax, eax
jne 0x64392a
cmp dword [esi + 0x38], 0
jne 0x64392a
mov eax, dword [ebp + 0xc]
cmp eax, 0xb
mov dword [ebp - 0xf0], eax
jne 0x642ef2
cmp word [esi + 0x28], 0
mov dword [ebp - 0xf0], 2
js 0x642ef2
movzx eax, byte [esi + 0x30]
mov dword [ebp - 0xf0], eax
cmp eax, 0xb
mov eax, 2
cmovne eax, dword [ebp - 0xf0]
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0xd8]
mov ecx, dword [eax + 0x20]
cmp dword [ecx], 1
jne 0x64392a
cmp dword [ecx + 0x1c], 0
jne 0x64392a
cmp dword [eax + 0x24], 0
jne 0x64392a
cmp dword [eax + 0x30], 0
jne 0x64392a
cmp dword [eax + 0x28], 0
jne 0x64392a
cmp dword [eax + 0x3c], 0
jne 0x64392a
cmp dword [eax + 0x34], 0
jne 0x64392a
test byte [eax + 8], 1
jne 0x64392a
mov eax, dword [eax]
cmp dword [eax], 1
jne 0x64392a
mov eax, dword [eax + 4]
cmp byte [eax], 0xa8
jne 0x64392a
mov eax, dword [ebp - 0xcc]
add ecx, 8
xor edx, edx
call fcn.0063f65e
test eax, eax
mov edi, eax
je 0x64392a
cmp esi, eax
je 0x64392a
mov edx, dword [esi + 0x24]
mov eax, dword [eax + 0x24]
shr edx, 5
shr eax, 5
xor edx, 1
xor eax, 1
and edx, 1
and eax, 1
cmp dl, al
jne 0x64392a
cmp dword [edi + 0x38], 0
jne 0x64392a
cmp dword [edi + 0xc], 0
jne 0x64392a
movsx eax, word [esi + 0x2a]
cmp ax, word [edi + 0x2a]
jne 0x64392a
mov ebx, dword [edi + 0x28]
cmp word [esi + 0x28], bx
jne 0x64392a
xor ebx, ebx
mov dword [ebp - 0xdc], eax
cmp ebx, dword [ebp - 0xdc]
jge 0x64308b
mov ecx, dword [esi + 4]
mov eax, ebx
shl eax, 4
add ecx, eax
add eax, dword [edi + 4]
mov edx, eax
mov al, byte [eax + 0xd]
cmp byte [ecx + 0xd], al
jne 0x64392a
mov eax, dword [edx + 8]
mov dword [ebp - 0xe4], edx
mov dword [ebp - 0xd4], ecx
mov dword [esp + 4], eax
mov eax, dword [ecx + 8]
mov dword [esp], eax
call fcn.005de437
test eax, eax
jne 0x64392a
mov ecx, dword [ebp - 0xd4]
mov edx, dword [ebp - 0xe4]
cmp byte [ecx + 0xc], 0
je 0x643043
cmp byte [edx + 0xc], 0
je 0x64392a
test ebx, ebx
jle 0x643085
mov ecx, dword [ecx + 4]
mov eax, dword [edx + 4]
test ecx, ecx
sete dl
test eax, eax
sete byte [ebp - 0xd4]
cmp dl, byte [ebp - 0xd4]
jne 0x64392a
test ecx, ecx
je 0x643085
mov eax, dword [eax + 8]
mov dword [esp + 4], eax
mov eax, dword [ecx + 8]
mov dword [esp], eax
call fcn.0066e3f8
test eax, eax
jne 0x64392a
inc ebx
jmp 0x642fda
mov ebx, dword [esi + 8]
mov dword [ebp - 0xf8], 0
test ebx, ebx
je 0x6430df
cmp byte [ebx + 0x36], 0
mov eax, 1
mov ecx, dword [edi + 8]
cmove eax, dword [ebp - 0xf8]
mov dword [ebp - 0xf8], eax
test ecx, ecx
je 0x64392a
mov edx, ecx
mov eax, ebx
mov dword [ebp - 0xd4], ecx
call fcn.0066fba9
test eax, eax
jne 0x643922
mov ecx, dword [ebp - 0xd4]
mov ecx, dword [ecx + 0x14]
jmp 0x6430b5
mov edx, dword [esi + 0x18]
test edx, edx
jne 0x6430f6
mov eax, dword [ebp - 0x100]
mov eax, dword [eax + 0x1c]
test ah, 0x40
jne 0x64310a
jmp 0x643114
mov eax, dword [edi + 0x18]
or ecx, 0xffffffff
call fcn.0060cf23
test eax, eax
je 0x6430e6
jmp 0x64392a
cmp dword [esi + 0x10], 0
jne 0x64392a
test al, 0x80
jne 0x64392a
mov edx, dword [edi + 0x48]
mov eax, dword [ebp - 0x100]
call fcn.005e0b4f
mov dword [ebp - 0x110], eax
mov eax, dword [ebp - 0xcc]
call fcn.005feb3a
mov edx, dword [ebp - 0x110]
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0xcc]
call fcn.006244ab
mov eax, dword [ebp - 0xcc]
mov ebx, dword [ebp - 0xcc]
mov ecx, esi
mov edx, dword [ebp - 0xe8]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0xdc], eax
inc eax
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0xdc]
add eax, 2
mov dword [ebx + 0x28], eax
mov eax, ebx
call fcn.005ed916
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp - 0xcc]
call fcn.005e0318
mov dword [ebp - 0x108], eax
mov eax, dword [ebp - 0xcc]
call fcn.005e0318
mov ecx, dword [ebp - 0xe8]
mov dword [ebp - 0xf4], eax
mov edx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xcc]
mov dword [esp + 4], 0x6e
mov dword [esp], esi
call fcn.0060a5d1
mov eax, dword [ebp - 0x100]
mov dword [ebp - 0x114], 0
test byte [eax + 0x18], 4
jne 0x643257
cmp word [esi + 0x28], 0
jns 0x6431f6
cmp dword [esi + 8], 0
jne 0x643215
cmp dword [ebp - 0xf8], 0
jne 0x643215
mov eax, dword [ebp - 0xf0]
mov dword [ebp - 0x114], 0
dec eax
cmp eax, 1
jbe 0x643257
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xd4]
mov edx, 0x24
mov dword [esp], 0
call fcn.005fea9e
mov ebx, eax
mov eax, dword [ebp - 0xd4]
mov edx, 0xb
call fcn.005feb60
mov dword [ebp - 0x114], eax
mov eax, dword [ebp - 0xd4]
mov edx, ebx
call fcn.005ebc9e
test byte [edi + 0x24], 0x20
jne 0x643469
mov ecx, dword [ebp - 0x110]
mov edx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xcc]
mov dword [esp + 4], 0x6d
mov dword [esp], edi
call fcn.0060a5d1
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xd4]
mov edx, 0x24
mov dword [esp], 0
call fcn.005fea9e
cmp word [esi + 0x28], 0
mov dword [ebp - 0x118], eax
mov eax, dword [ebp - 0xf4]
js 0x64334c
mov dword [esp], eax
mov ecx, dword [ebp - 0xdc]
mov edx, 0x81
mov eax, dword [ebp - 0xd4]
call fcn.005fea9e
mov dword [ebp - 0xf8], eax
mov eax, dword [ebp - 0xf4]
mov edx, 0x1f
mov ecx, dword [ebp - 0xe4]
mov dword [esp], 0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xd4]
call fcn.005fea3d
mov edx, dword [ebp - 0xf0]
mov ebx, eax
mov eax, dword [ebp - 0xcc]
mov ecx, esi
call fcn.0066fb2b
mov eax, dword [ebp - 0xd4]
mov edx, ebx
call fcn.005ebc9e
cmp dword [ebp - 0x11c], 0
jle 0x64337e
mov eax, dword [ebp - 0xcc]
mov ebx, dword [ebp - 0xf4]
mov edx, 0x98
mov ecx, dword [ebp - 0x11c]
mov eax, dword [eax + 8]
mov dword [esp], ebx
call fcn.005fea9e
jmp 0x64337e
cmp dword [esi + 8], 0
mov dword [esp], eax
jne 0x643362
mov ecx, dword [ebp - 0xe4]
mov edx, 0x79
jmp 0x64336d
mov ecx, dword [ebp - 0xdc]
mov edx, 0x81
mov eax, dword [ebp - 0xd4]
call fcn.005fea9e
mov dword [ebp - 0xf8], eax
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp - 0xdc]
mov edx, 0x80
mov dword [esp + 4], 1
mov bl, 0x29
mov dword [esp], eax
mov eax, dword [ebp - 0xd4]
call fcn.005fea3d
mov eax, dword [ebp - 0x100]
test byte [eax + 0x18], 4
je 0x6433cb
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xd4]
mov edx, 0x83
mov bl, 0x39
call fcn.005fef65
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xe4]
mov edx, 0x7a
mov dword [esp + 0xc], 0xfffffffa
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
mov eax, dword [ebp - 0xd4]
call fcn.005febb9
mov eax, dword [ebp - 0xd4]
movzx edx, bl
call fcn.005df9da
mov eax, dword [ebp - 0xf8]
mov ecx, dword [ebp - 0xdc]
mov edx, 5
mov dword [esp], eax
mov eax, dword [ebp - 0xd4]
call fcn.005fea9e
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xd4]
mov edx, 0x75
mov dword [esp], 0
call fcn.005fea9e
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xd4]
mov edx, 0x75
mov dword [esp], 0
call fcn.005fea9e
jmp 0x6434b5
mov eax, dword [esi]
mov ecx, dword [esi + 0x1c]
mov edx, dword [ebp - 0xe8]
mov dword [esp], 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xcc]
call fcn.005fe7f9
mov eax, dword [edi]
mov ecx, dword [edi + 0x1c]
mov edx, dword [ebp - 0x110]
mov dword [esp], 0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xcc]
call fcn.005fe7f9
mov dword [ebp - 0x118], 0
mov eax, dword [esi + 8]
mov dword [ebp - 0xf8], eax
cmp dword [ebp - 0xf8], 0
je 0x64370d
mov eax, dword [edi + 8]
mov dword [ebp - 0xf0], eax
cmp dword [ebp - 0xf0], 0
je 0x644b9e
mov edx, dword [ebp - 0xf0]
mov eax, dword [ebp - 0xf8]
call fcn.0066fba9
test eax, eax
jne 0x643501
mov eax, dword [ebp - 0xf0]
mov eax, dword [eax + 0x14]
jmp 0x6434ce
mov eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0xdc]
mov edx, 0x6d
xor ebx, ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xf0]
mov eax, dword [eax + 0x2c]
mov dword [esp], eax
mov eax, dword [ebp - 0xd4]
call fcn.005fea3d
mov edx, dword [ebp - 0xf0]
mov eax, dword [ebp - 0xcc]
call fcn.0060a5ab
mov eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0xe4]
mov edx, 0x6e
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xf8]
mov eax, dword [eax + 0x2c]
mov dword [esp], eax
mov eax, dword [ebp - 0xd4]
call fcn.005fea3d
mov edx, dword [ebp - 0xf8]
mov eax, dword [ebp - 0xcc]
call fcn.0060a5ab
mov eax, dword [ebp - 0xd4]
mov edx, 1
call fcn.005df9da
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xd4]
mov edx, 0x24
mov dword [esp], 0
call fcn.005fea9e
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp - 0x108]
mov edx, 0x80
mov ecx, dword [ebp - 0xdc]
mov dword [esp + 4], 1
mov dword [esp], eax
mov eax, dword [ebp - 0xd4]
call fcn.005fea3d
mov eax, dword [ebp - 0x100]
test byte [eax + 0x18], 4
je 0x643642
mov eax, dword [ebp - 0xf0]
xor ebx, ebx
movzx edx, word [eax + 0x34]
cmp ebx, edx
jge 0x64361f
mov eax, dword [ebp - 0xf0]
mov dword [ebp - 0x124], edx
mov eax, dword [eax + 0x20]
mov eax, dword [eax + ebx*4]
mov dword [esp], 0x61ea927c
mov dword [esp + 4], eax
call fcn.005de437
test eax, eax
mov edx, dword [ebp - 0x124]
je 0x643627
cmp ebx, edx
je 0x64362a
xor ebx, ebx
jmp 0x643642
inc ebx
jmp 0x6435ef
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xd4]
mov edx, 0x83
mov bl, 0x10
call fcn.005fef65
test byte [edi + 0x24], 0x20
je 0x643664
mov eax, dword [ebp - 0xf8]
mov dl, bl
or edx, 1
mov al, byte [eax + 0x38]
mov byte [ebp - 0xf0], al
and eax, 3
cmp al, 2
cmove ebx, edx
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp - 0xe4]
mov edx, 0x85
or ebx, 8
mov dword [esp], eax
mov eax, dword [ebp - 0xd4]
call fcn.005fea9e
mov eax, dword [ebp - 0xd4]
movzx edx, bl
call fcn.005df9da
mov eax, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0xdc]
mov edx, 5
inc eax
mov dword [esp], eax
mov eax, dword [ebp - 0xd4]
call fcn.005fea9e
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0xd4]
call fcn.005ebc9e
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xd4]
mov edx, 0x75
mov dword [esp], 0
call fcn.005fea9e
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xd4]
mov edx, 0x75
mov dword [esp], 0
call fcn.005fea9e
mov eax, dword [ebp - 0xf8]
mov eax, dword [eax + 0x14]
jmp 0x6434b8
cmp dword [ebp - 0x118], 0
je 0x643727
mov edx, dword [ebp - 0x118]
mov eax, dword [ebp - 0xd4]
call fcn.005ebc9e
mov edx, dword [ebp - 0xf4]
mov eax, dword [ebp - 0xcc]
call fcn.005e83dc
mov edx, dword [ebp - 0x108]
mov eax, dword [ebp - 0xcc]
call fcn.005e83dc
cmp dword [ebp - 0x114], 0
je 0x6437a9
mov eax, dword [ebp - 0xcc]
call fcn.0066f505
mov eax, dword [ebp - 0xd4]
xor ecx, ecx
mov dword [esp], 0
mov edx, 0x45
call fcn.005fea9e
mov edx, dword [ebp - 0x114]
mov eax, dword [ebp - 0xd4]
call fcn.005ebc9e
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xd4]
mov edx, 0x75
mov dword [esp], 0
call fcn.005fea9e
jmp 0x64392a
mov dword [ebp - 0xd4], 0
mov dword [ebp - 0x100], 0
mov eax, dword [ebp - 0xcc]
cmp byte [eax + 0x12], 0
jne 0x6437d4
cmp dword [eax + 0x78], 0
jne 0x6437d4
call fcn.0066f505
cmp dword [ebp - 0x100], 0
je 0x6438b7
mov ecx, dword [ebp - 0x100]
mov eax, dword [ebp - 0xd0]
mov edx, 0x51
mov dword [esp], 1
call fcn.005fea9e
mov eax, dword [ebp - 0xd0]
mov edx, 1
call fcn.005efafd
mov eax, dword [ebp - 0xd0]
mov dword [esp + 4], 0
xor ecx, ecx
mov dword [esp], 0x61e9bd34
xor edx, edx
call fcn.005fde25
jmp 0x6438b7
mov dword [ebp - 0xd4], 0
mov dword [ebp - 0xec], 0
jmp 0x6438b7
inc ebx
cmp ebx, dword [ebp - 0xf0]
mov eax, dword [ebp + 8]
mov edi, dword [eax]
jl 0x643a06
mov eax, dword [ebp - 0xf8]
mov dword [ebp - 0xd4], ecx
mov ebx, dword [edi + eax]
mov eax, ebx
call fcn.005e82b3
test eax, eax
jne 0x643a5e
mov eax, dword [ebp - 0xfc]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0x61e9bc80
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xcc]
mov dword [esp], eax
call fcn.00608748
mov eax, dword [ebp - 0xcc]
mov byte [eax + 0x11], 1
mov dword [ebp - 0xd4], 0
mov edx, dword [ebp - 0xfc]
mov eax, dword [ebp - 0xe0]
call fcn.005f1360
mov edx, dword [ebp - 0xec]
mov eax, dword [ebp - 0xe0]
call fcn.005f0ac2
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 0xe0]
call fcn.005f0b54
mov edx, dword [ebp - 0xd8]
mov eax, dword [ebp - 0xe0]
call fcn.005f09d2
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0xe0]
call fcn.005ec510
mov edx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xe0]
call fcn.005ec136
add esp, 0x16c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [ebx + 0x14]
jmp 0x643098
mov edx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xcc]
mov ecx, esi
call fcn.005ed916
mov dword [ebp - 0x114], eax
mov eax, dword [ebp - 0xcc]
cmp dword [esi + 0x38], 0
mov ebx, dword [ebp - 0xcc]
mov edx, dword [eax + 0x2c]
lea eax, [edx + 1]
mov dword [ebp - 0x108], eax
movsx eax, word [esi + 0x2a]
mov dword [ebp - 0xf0], eax
lea eax, [edx + eax + 1]
mov dword [ebx + 0x2c], eax
je 0x644aee
lea edi, [edx + 2]
inc eax
mov dword [ebp - 0xdc], edi
mov edi, dword [ebp - 0xcc]
mov dword [edi + 0x2c], eax
mov eax, dword [ebp - 0x120]
and eax, 0x20
mov dword [ebp - 0x138], eax
mov eax, dword [esi + 0x24]
shr eax, 7
xor eax, 1
and eax, 1
cmp dword [ebp + 8], 0
mov byte [ebp - 0xd4], al
je 0x643a84
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
mov dword [ebp - 0xf4], eax
xor eax, eax
cmp eax, dword [ebp - 0xf4]
jge 0x6439da
mov edi, dword [ebp + 8]
mov edx, dword [edi]
mov dword [edx + eax*8 + 4], 0xffffffff
inc eax
jmp 0x6439c2
mov dword [ebp - 0xe4], 0xffffffff
xor ecx, ecx
cmp ecx, dword [ebp - 0xf4]
jge 0x643a8e
lea eax, [ecx*8]
xor ebx, ebx
mov dword [ebp - 0xf8], eax
jmp 0x643848
mov eax, ebx
add edi, dword [ebp - 0xf8]
mov dword [ebp - 0x100], ecx
shl eax, 4
add eax, dword [esi + 4]
mov edx, dword [eax]
mov eax, dword [edi]
call fcn.005de405
test eax, eax
mov ecx, dword [ebp - 0x100]
jne 0x643847
mov dword [edi + 4], ebx
mov edi, dword [ebp - 0xd4]
cmp ecx, ebx
cmovne edi, eax
mov eax, edi
mov byte [ebp - 0xd4], al
movsx eax, word [esi + 0x28]
cmp ebx, eax
mov eax, dword [ebp - 0xe4]
cmove eax, ecx
mov dword [ebp - 0xe4], eax
jmp 0x643a7e
cmp dword [ebp - 0x138], 0
mov ecx, dword [ebp - 0xd4]
jne 0x643877
mov dword [ebp - 0xe4], ecx
mov byte [ebp - 0xd4], 0
inc ecx
jmp 0x6439e6
mov dword [ebp - 0xe4], 0xffffffff
mov eax, dword [ebp - 0xdc]
inc eax
cmp dword [ebp - 0xd8], 0
mov dword [ebp - 0x12c], eax
je 0x643d69
mov eax, dword [ebp - 0xcc]
mov edx, 0xd
mov eax, dword [eax + 0x2c]
lea ebx, [eax + 1]
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0xcc]
mov ecx, ebx
mov dword [eax + 0x2c], ebx
mov eax, dword [ebp - 0xd0]
mov edi, dword [eax + 0x88]
mov dword [esp], 0
lea eax, [edi + 1]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea3d
cmp byte [ebp - 0xd4], 0
mov eax, dword [ebp - 0x10c]
lea ecx, [ebp - 0xb8]
cmovne eax, dword [ebp - 0x12c]
mov edx, dword [ebp - 0xd8]
mov byte [ebp - 0xb8], 0xd
mov dword [ebp - 0xb4], ebx
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0xb0], eax
movsx eax, word [esi + 0x2a]
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0xcc]
call fcn.006288e8
test eax, eax
mov dword [ebp - 0xd4], 0
jne 0x6438b7
mov ecx, dword [ebp - 0xe0]
mov dword [ebp - 0xd4], eax
cmp byte [ecx + 0x49], 0
jne 0x6438b7
mov eax, dword [ebp - 0xcc]
cmp dword [eax + 0x24], 0
jne 0x6438b7
mov eax, dword [ebp - 0xb0]
mov edx, ebx
mov dword [ebp - 0x110], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fef81
mov eax, dword [ebp - 0xd0]
mov edx, edi
call fcn.005ebc9e
mov eax, dword [ebp - 0xd8]
cmp dword [ebp - 0x104], 0
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [ebp - 0xf0], eax
jne 0x643c61
mov eax, dword [ebp - 0xcc]
xor edi, edi
call fcn.005feb3a
cmp dword [esi + 0x38], 0
mov dword [ebp - 0xd4], eax
mov eax, dword [eax + 0x88]
mov dword [ebp - 0xf4], eax
je 0x643bf9
mov eax, dword [ebp - 0xcc]
mov edx, dword [esi + 0x40]
mov eax, dword [eax]
call fcn.005e871b
mov edi, eax
mov ebx, 1
cmp dword [ebp - 0xf4], ebx
jle 0x643c4b
mov eax, dword [ebp - 0xd4]
mov edx, ebx
call fcn.005df9f3
mov dl, byte [eax]
cmp dl, 0x6d
jne 0x643c3e
mov ecx, dword [ebp - 0xe8]
cmp ecx, dword [eax + 0xc]
jne 0x643c48
mov edx, dword [eax + 8]
cmp edx, dword [esi + 0x1c]
je 0x643c61
mov eax, dword [esi + 8]
test eax, eax
je 0x643c48
cmp edx, dword [eax + 0x2c]
je 0x643c61
mov eax, dword [eax + 0x14]
jmp 0x643c30
cmp dl, 0xa4
jne 0x643c48
cmp dword [eax + 0x10], edi
je 0x643c61
inc ebx
jmp 0x643bfe
mov byte [ebp - 0xf4], 0
mov dword [ebp - 0xe8], 0
jmp 0x643de0
mov eax, dword [ebp - 0xcc]
mov edi, dword [ebp - 0xcc]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0xe8], eax
inc eax
mov dword [edi + 0x28], eax
mov eax, edi
call fcn.005e0318
mov edi, eax
mov eax, dword [ebp - 0xcc]
call fcn.005e0318
mov ebx, eax
mov eax, dword [ebp - 0xf0]
mov ecx, dword [ebp - 0xe8]
mov edx, 0x71
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea9e
mov ecx, dword [ebp - 0xb4]
mov eax, dword [ebp - 0xd0]
mov edx, 0xe
call fcn.005fef65
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0xf0]
mov edx, 0x66
mov ecx, dword [ebp - 0x110]
mov dword [esp + 4], edi
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea3d
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xd0]
mov edx, 0x79
mov dword [esp], ebx
call fcn.005fea9e
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xd0]
mov edx, 0x7a
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.005fea3d
mov edx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xd0]
call fcn.005ff00e
mov edx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xd0]
call fcn.005ebc9e
mov eax, dword [ebp - 0xcc]
mov edx, edi
call fcn.005e83dc
mov eax, dword [ebp - 0xcc]
mov edx, ebx
call fcn.005e83dc
mov byte [ebp - 0xf4], 1
jmp 0x643de0
mov eax, dword [ebp - 0xd8]
lea ebx, [ebp - 0x80]
mov ecx, 8
cmp dword [ebp - 0xec], 0
mov edi, ebx
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x80], eax
je 0x643dbb
mov eax, dword [ebp - 0xec]
mov edx, dword [ebp - 0xec]
mov eax, dword [eax]
mov dword [ebp - 0xf0], eax
mov eax, ebx
call fcn.00608ab6
test eax, eax
mov dword [ebp - 0xd4], 0
je 0x643dc5
jmp 0x6438b7
mov dword [ebp - 0xf0], 0
mov dword [ebp - 0x110], 0
mov byte [ebp - 0xf4], 0
mov dword [ebp - 0xe8], 0xffffffff
cmp dword [ebp + 8], 0
sete cl
cmp dword [ebp - 0xf0], 0
jle 0x643dfe
test cl, cl
je 0x643dfe
movsx eax, word [esi + 0x28]
mov dword [ebp - 0xe4], eax
movsx eax, word [esi + 0x2a]
xor edi, edi
xor ebx, ebx
cmp ebx, eax
jge 0x643e1f
mov edx, ebx
inc ebx
shl edx, 4
add edx, dword [esi + 4]
mov dl, byte [edx + 0xf]
shr dl, 1
and edx, 1
add edi, edx
jmp 0x643e06
cmp dword [ebp - 0xf0], 0
je 0x643e71
test cl, cl
je 0x643e71
sub eax, edi
cmp dword [ebp - 0xf0], eax
je 0x643eae
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xfc]
mov esi, dword [ebp - 0xf0]
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0x61e9bca0
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xcc]
mov dword [esp + 0x14], esi
mov dword [esp], eax
call fcn.00608748
jmp 0x6438ad
cmp dword [ebp + 8], 0
je 0x643eae
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
cmp dword [ebp - 0xf0], eax
je 0x643eae
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xf0]
mov dword [esp + 4], 0x61e9bcd4
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xcc]
mov dword [esp], eax
call fcn.00608748
jmp 0x6438ad
mov eax, dword [ebp - 0xe0]
mov dword [ebp - 0x100], 0
test byte [eax + 0x1c], 0x80
je 0x643f04
mov eax, dword [ebp - 0xcc]
cmp byte [eax + 0x12], 0
jne 0x643f04
cmp dword [eax + 0x78], 0
jne 0x643f04
mov eax, dword [eax + 0x2c]
xor ecx, ecx
mov edx, 0x46
inc eax
mov dword [ebp - 0x100], eax
mov eax, dword [ebp - 0xcc]
mov edi, dword [ebp - 0x100]
mov dword [eax + 0x2c], edi
mov eax, dword [ebp - 0xd0]
mov dword [esp], edi
call fcn.005fea9e
cmp dword [ebp - 0x128], 0
mov dword [ebp - 0xd4], 0
jne 0x643fbc
lea eax, [ebp - 0xc0]
mov ecx, 0x6e
mov edx, esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0xffffffff
mov dword [esp + 0x10], eax
lea eax, [ebp - 0xc4]
mov dword [esp], 0
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xcc]
call fcn.0060a66d
lea edx, [eax*4 + 4]
mov ebx, eax
mov eax, dword [ebp - 0xe0]
xor ecx, ecx
call fcn.005ed6f3
test eax, eax
mov dword [ebp - 0xd4], eax
je 0x6438b7
mov ecx, dword [esi + 8]
xor eax, eax
cmp eax, ebx
jge 0x643fbc
mov edi, dword [ebp - 0xcc]
mov edi, dword [edi + 0x2c]
lea edx, [edi + 1]
mov dword [ebp - 0xf8], edi
mov edi, dword [ebp - 0xcc]
mov dword [edi + 0x2c], edx
mov edi, dword [ebp - 0xd4]
mov dword [edi + eax*4], edx
mov edi, dword [ebp - 0xcc]
inc eax
movzx edx, word [ecx + 0x34]
mov ecx, dword [ecx + 0x14]
add dword [edi + 0x2c], edx
jmp 0x643f81
cmp dword [ebp + 0x10], 0
je 0x644209
mov eax, dword [ebp - 0xc4]
mov edi, dword [ebp - 0xfc]
mov ebx, dword [ebp - 0xfc]
mov dword [edi + 0x34], eax
mov edi, dword [ebp + 0x10]
mov edx, dword [edi]
mov dword [edi + 0x14], ebx
mov dword [edi + 0x1c], eax
mov ebx, dword [ebp - 0x12c]
mov eax, dword [ebp - 0xc0]
test edx, edx
mov dword [edi + 0x18], ebx
mov dword [edi + 0x20], eax
je 0x644209
lea ebx, [ebp - 0xa0]
xor eax, eax
mov ecx, 8
mov edi, ebx
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0xfc]
mov dword [ebp - 0x9c], eax
mov eax, ebx
call fcn.00608ab6
test eax, eax
jne 0x644209
mov eax, dword [ebp + 0x10]
mov edx, dword [eax + 4]
mov eax, ebx
call fcn.00608a10
test eax, eax
jne 0x644209
mov eax, dword [ebp - 0xfc]
mov ebx, dword [eax + 0x18]
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
test byte [ebx + 0x24], 0x20
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp - 0xfc]
mov eax, dword [eax + 0x34]
mov dword [ebp - 0x11c], eax
jne 0x644094
mov eax, dword [ebp - 0x10c]
cmp dword [eax], 1
jne 0x644094
mov eax, dword [eax + 4]
cmp byte [eax], 0x9e
jne 0x644094
cmp word [eax + 0x20], 0xffff
je 0x644209
lea edx, [ebp - 0x80]
xor eax, eax
mov ecx, 0x1a
mov edi, edx
mov dword [ebp - 0x124], edx
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x4c]
mov edi, dword [ebp - 0x11c]
mov byte [ebp - 0x80], 0x66
mov byte [ebp - 0x4c], 0x9e
mov dword [ebp - 0x74], eax
mov ebx, dword [ebx + 8]
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x130], eax
test ebx, ebx
je 0x6441f3
cmp byte [ebx + 0x36], 0
je 0x6441eb
mov edi, dword [ebp - 0x10c]
movzx eax, word [ebx + 0x32]
cmp dword [edi], eax
jne 0x6441eb
mov ecx, dword [ebx + 0x24]
test ecx, ecx
jne 0x644104
movzx eax, word [ebx + 0x32]
xor edi, edi
mov dword [ebp - 0x120], eax
jmp 0x6441b0
mov eax, dword [ebp + 0x10]
mov edx, dword [eax + 4]
test edx, edx
je 0x6441eb
mov eax, dword [ebp - 0x11c]
mov dword [esp], eax
mov eax, dword [ebp - 0xcc]
call fcn.0060ccae
test eax, eax
jne 0x6441eb
jmp 0x6440f3
mov eax, dword [ebx + 0x20]
mov eax, dword [eax + edi*4]
mov dword [ebp - 0x78], eax
mov eax, dword [ebx + 4]
mov ax, word [eax + edi*2]
cmp ax, 0xfffe
jne 0x6441be
imul eax, edi, 0x18
add eax, dword [ebx + 0x28]
mov eax, dword [eax + 4]
cmp byte [eax], 0x66
mov dword [ebp - 0xf8], eax
je 0x644169
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x124]
mov dword [ebp - 0xf8], eax
mov dword [ebp - 0x118], 0
imul eax, dword [ebp - 0x118], 0x18
mov ecx, dword [ebp - 0x10c]
mov edx, dword [ecx + eax + 4]
mov eax, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0xf8]
mov dword [esp], eax
mov eax, dword [ebp - 0xcc]
call fcn.0060ccae
dec eax
jg 0x6441cd
mov ecx, dword [ebp - 0x118]
cmp dword [ebp - 0x120], ecx
jle 0x6441eb
inc edi
cmp dword [ebp - 0x120], edi
jg 0x644130
jmp 0x6441e3
mov ecx, dword [ebp - 0x130]
mov word [ebp - 0x2c], ax
mov dword [ebp - 0x74], ecx
jmp 0x64415d
inc dword [ebp - 0x118]
mov ecx, dword [ebp - 0x118]
cmp dword [ebp - 0x120], ecx
jg 0x644173
jmp 0x6441eb
mov eax, dword [ebp + 0x10]
mov dword [eax + 0x10], ebx
jmp 0x644209
mov ebx, dword [ebx + 0x14]
jmp 0x6440c8
mov eax, dword [ebp - 0xcc]
mov dword [esp + 4], 0x61e9bced
mov dword [esp], eax
call fcn.00608748
cmp byte [ebp - 0xf4], 0
je 0x64423c
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xd0]
mov edx, 0x24
call fcn.005fef65
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp - 0xd0]
mov eax, dword [eax + 0x88]
jmp 0x644261
cmp dword [ebp - 0xd8], 0
je 0x644269
mov ecx, dword [ebp - 0xb4]
mov eax, dword [ebp - 0xd0]
mov edx, 0xe
call fcn.005fef65
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0x120], eax
jmp 0x64427d
mov dword [ebp - 0x120], 0
mov dword [ebp - 0x10c], 0
mov eax, dword [ebp - 0xd0]
mov eax, dword [eax + 0xc]
call fcn.005fe8cc
test byte [ebp - 0xbc], 1
mov dword [ebp - 0x124], eax
je 0x644572
movsx edx, word [esi + 0x2a]
mov eax, dword [ebp - 0xcc]
inc edx
call fcn.005e033f
cmp dword [ebp - 0xe4], 0
mov dword [ebp - 0xf8], eax
jns 0x6442d8
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
or ecx, 0xffffffff
mov edx, 0x46
call fcn.005fea9e
jmp 0x644385
cmp byte [ebp - 0xf4], 0
je 0x64430c
mov eax, dword [ebp - 0xf8]
mov ecx, dword [ebp - 0xe8]
mov edx, 0x5a
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xe4]
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea3d
jmp 0x64432e
imul eax, dword [ebp - 0xe4], 0x18
mov ebx, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xf8]
mov edx, dword [ebx + eax + 4]
mov eax, dword [ebp - 0xcc]
call fcn.0062d1f5
mov ecx, dword [ebp - 0xf8]
mov eax, dword [ebp - 0xd0]
mov edx, 0x33
call fcn.005fef65
mov ebx, eax
mov eax, dword [ebp - 0xf8]
or ecx, 0xffffffff
mov edx, 0x46
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea9e
mov eax, dword [ebp - 0xd0]
mov edx, ebx
call fcn.005ebc9e
mov ecx, dword [ebp - 0xf8]
mov eax, dword [ebp - 0xd0]
mov edx, 0xf
call fcn.005fef65
mov eax, dword [ebp - 0xf8]
xor edi, edi
mov dword [ebp - 0x11c], 0
inc eax
mov dword [ebp - 0x134], eax
mov dword [ebp - 0x118], eax
mov al, byte [ebp - 0xf4]
xor eax, 1
mov byte [ebp - 0x13d], al
movsx eax, word [esi + 0x2a]
cmp dword [ebp - 0x11c], eax
jge 0x6444f3
cmp dword [ebp + 8], 0
je 0x6443e9
mov eax, dword [ebp + 8]
xor edi, edi
mov eax, dword [eax + 4]
cmp edi, eax
jge 0x6443e9
mov ebx, dword [ebp + 8]
mov edx, dword [ebx]
mov ebx, dword [ebp - 0x11c]
cmp ebx, dword [edx + edi*8 + 4]
je 0x6443e9
inc edi
jmp 0x6443d1
cmp byte [ebp - 0x13d], 0
je 0x6443fb
cmp dword [ebp - 0xec], 0
je 0x644409
cmp dword [ebp + 8], 0
je 0x64442e
mov eax, dword [ebp + 8]
cmp edi, dword [eax + 4]
jl 0x64442e
mov eax, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x118]
shl eax, 4
add eax, dword [esi + 4]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0xcc]
call fcn.0062d1f5
jmp 0x6444db
cmp byte [ebp - 0xf4], 0
je 0x64445c
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0xe8]
mov edx, 0x5a
mov dword [esp], edi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea3d
jmp 0x6444db
imul eax, edi, 0x18
mov ebx, dword [ebp - 0xec]
mov ecx, dword [ebp - 0x118]
mov ebx, dword [ebx + eax + 4]
mov eax, dword [ebp - 0xcc]
mov eax, dword [eax + 8]
mov edx, ebx
mov dword [ebp - 0x13c], eax
mov eax, dword [ebp - 0xcc]
call fcn.0062d1f5
mov eax, dword [ebp - 0xcc]
mov edx, 0x4e
mov eax, dword [eax + 0x2c]
inc eax
mov dword [ebp - 0x130], eax
mov eax, dword [ebp - 0xcc]
mov ecx, dword [ebp - 0x130]
mov dword [eax + 0x2c], ecx
mov dword [esp], ecx
mov eax, dword [ebp - 0x13c]
mov ecx, dword [ebp - 0x118]
call fcn.005fea9e
mov al, byte [ebx]
and dword [ebx + 4], 0xffffefff
mov byte [ebx], 0xa4
mov byte [ebx + 0x26], al
mov eax, dword [ebp - 0x130]
mov dword [ebx + 0x1c], eax
cmp dword [ebp + 8], 1
adc edi, 0
inc dword [ebp - 0x11c]
inc dword [ebp - 0x118]
jmp 0x6443b3
cmp dword [ebp - 0x128], 0
jne 0x64450f
mov ecx, dword [ebp - 0x134]
mov eax, dword [ebp - 0xd0]
mov edx, esi
call fcn.005fecc5
mov eax, dword [ebp - 0x124]
mov edi, dword [ebp - 0xf8]
mov ecx, 0x74
mov edx, dword [ebp - 0x104]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
movsx eax, word [esi + 0x2a]
mov dword [esp + 8], esi
mov dword [esp + 4], 1
mov dword [esp], 0
sub edi, eax
mov eax, edi
dec eax
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xcc]
call fcn.006428cb
movsx ecx, word [esi + 0x2a]
mov edx, dword [ebp - 0xf8]
mov eax, dword [ebp - 0xcc]
inc ecx
call fcn.005e83fd
cmp dword [ebp - 0x128], 0
jne 0x6449db
cmp dword [esi + 0x38], 0
je 0x6445a0
mov eax, dword [ebp - 0x108]
xor ecx, ecx
mov edx, 0x49
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea9e
cmp dword [ebp - 0xe4], 0
js 0x64467a
cmp byte [ebp - 0xf4], 0
je 0x6445e4
mov eax, dword [ebp - 0xdc]
mov ecx, dword [ebp - 0xe8]
mov edx, 0x5a
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xe4]
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea3d
jmp 0x644aff
cmp dword [ebp - 0xd8], 0
je 0x644617
mov eax, dword [ebp - 0xdc]
mov ecx, dword [ebp - 0xe4]
mov edx, 0x4e
add ecx, dword [ebp - 0x110]
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea9e
jmp 0x644aff
imul eax, dword [ebp - 0xe4], 0x18
mov edi, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xdc]
mov edx, dword [edi + eax + 4]
mov eax, dword [ebp - 0xcc]
call fcn.0062d1f5
mov eax, dword [ebp - 0xd0]
or edx, 0xffffffff
call fcn.005df9f3
cmp byte [eax], 0x49
jne 0x644aff
cmp dword [esi + 0x38], 0
jne 0x644aff
mov edi, dword [ebp - 0xdc]
mov byte [eax], 0x79
mov edx, dword [ebp - 0xc4]
mov dword [eax + 8], edi
mov edi, dword [ebp - 0x114]
mov dword [eax + 4], edx
mov dword [eax + 0xc], edi
jmp 0x6446d6
cmp dword [esi + 0x38], 0
jne 0x644689
cmp dword [ebp - 0x138], 0
je 0x6446ad
mov eax, dword [ebp - 0xdc]
xor ecx, ecx
mov edx, 0x49
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea9e
mov byte [ebp - 0xf8], 0
jmp 0x6446dd
mov eax, dword [ebp - 0x114]
mov ecx, dword [ebp - 0xc4]
mov edx, 0x79
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xdc]
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea3d
mov byte [ebp - 0xf8], 1
cmp dword [ebp - 0x114], 0
jle 0x644708
mov eax, dword [ebp - 0xcc]
mov ebx, dword [ebp - 0xdc]
mov edx, 0x98
mov ecx, dword [ebp - 0x114]
mov eax, dword [eax + 8]
mov dword [esp], ebx
call fcn.005fea9e
mov eax, dword [ebp - 0xdc]
mov dword [ebp - 0x114], 0
xor ebx, ebx
inc eax
mov dword [ebp - 0x118], eax
movsx eax, word [esi + 0x2a]
cmp ebx, eax
jge 0x644844
mov eax, dword [ebp - 0x118]
lea ecx, [eax + ebx]
movsx eax, word [esi + 0x28]
cmp ebx, eax
jne 0x644753
mov eax, dword [ebp - 0xd0]
mov edx, 0x4a
call fcn.005fef65
jmp 0x64483e
cmp dword [ebp + 8], 0
je 0x644763
mov eax, dword [ebp + 8]
mov edi, dword [eax + 4]
xor eax, eax
jmp 0x644790
mov edx, ebx
mov eax, ebx
sub eax, dword [ebp - 0x114]
shl edx, 4
add edx, dword [esi + 4]
test byte [edx + 0xf], 2
je 0x644794
inc dword [ebp - 0x114]
or eax, 0xffffffff
jmp 0x644794
mov edx, dword [ebp + 8]
mov edx, dword [edx]
cmp ebx, dword [edx + eax*8 + 4]
je 0x644794
inc eax
cmp eax, edi
jl 0x644784
mov edx, eax
shr edx, 0x1f
jne 0x6447b2
cmp dword [ebp - 0xf0], 0
je 0x6447b2
cmp dword [ebp + 8], 0
je 0x6447ca
mov edx, dword [ebp + 8]
cmp eax, dword [edx + 4]
jl 0x6447ca
mov eax, ebx
shl eax, 4
add eax, dword [esi + 4]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0xcc]
call fcn.0062d246
jmp 0x64483e
cmp byte [ebp - 0xf4], 0
je 0x6447f2
mov dword [esp + 4], ecx
mov dword [esp], eax
mov edx, 0x5a
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xd0]
call fcn.005fea3d
jmp 0x64483e
cmp dword [ebp - 0xd8], 0
je 0x644826
mov edi, dword [ebp - 0x12c]
cmp dword [ebp - 0x110], edi
je 0x64483e
add eax, dword [ebp - 0x110]
mov dword [esp], ecx
mov edx, 0x4f
mov ecx, eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea9e
jmp 0x64483e
imul eax, eax, 0x18
mov edi, dword [ebp - 0xec]
mov edx, dword [edi + eax + 4]
mov eax, dword [ebp - 0xcc]
call fcn.0062d1f5
inc ebx
jmp 0x644721
cmp dword [esi + 0x38], 0
je 0x6448c7
mov edx, dword [esi + 0x40]
mov eax, dword [ebp - 0xe0]
call fcn.005e871b
mov ebx, eax
mov eax, dword [ebp - 0xcc]
mov edx, esi
call fcn.00612617
mov eax, dword [ebp - 0x108]
mov dword [esp + 0xc], 0xfffffff4
mov ecx, 1
mov dword [esp + 8], ebx
mov edx, 0xa
mov dword [esp + 4], eax
movsx eax, word [esi + 0x2a]
add eax, 2
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005febb9
movzx eax, word [ebp + 0xc]
cmp dword [ebp + 0xc], 0xb
mov edx, 2
cmovne edx, eax
mov eax, dword [ebp - 0xd0]
call fcn.005df9da
mov eax, dword [ebp - 0xcc]
call fcn.005e094f
jmp 0x6449db
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp - 0xd4]
mov edx, esi
mov dword [esp + 0x20], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x24], eax
lea eax, [ebp - 0x80]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp - 0x124]
mov dword [esp + 0x18], eax
movzx eax, byte [ebp + 0xc]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0xe4]
not eax
shr eax, 0x1f
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xc0]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xc4]
mov dword [esp], eax
mov eax, dword [ebp - 0xcc]
call fcn.006711a6
mov eax, dword [ebp - 0x108]
xor ecx, ecx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov edx, esi
mov dword [esp], eax
mov eax, dword [ebp - 0xcc]
call fcn.00640201
cmp dword [ebp - 0x80], 0
mov eax, 1
je 0x644994
xor eax, eax
cmp dword [ebp - 0x104], 0
jne 0x644994
mov edi, dword [ebp - 0xe0]
mov eax, 1
test byte [edi + 0x1d], 0x40
je 0x644994
mov eax, esi
call fcn.005e09ba
test eax, eax
sete al
movzx eax, al
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0xd4]
mov edx, esi
movzx edi, byte [ebp - 0xf8]
mov ecx, dword [ebp - 0xc4]
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 0x10], edi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xc0]
mov dword [esp], eax
mov eax, dword [ebp - 0xcc]
call fcn.0066f0b8
cmp dword [ebp - 0x100], 0
je 0x644a01
mov ecx, dword [ebp - 0x100]
mov eax, dword [ebp - 0xd0]
mov edx, 0x53
mov dword [esp], 1
call fcn.005fea9e
cmp dword [ebp - 0x104], 0
je 0x644a55
mov eax, dword [ebp - 0x124]
mov ecx, 0x74
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xdc]
movsx edx, word [esi + 0x2a]
mov dword [esp + 8], esi
mov dword [esp + 4], 2
mov dword [esp], 0
dec eax
sub eax, edx
mov edx, dword [ebp - 0x104]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xcc]
call fcn.006428cb
mov edx, dword [ebp - 0x124]
mov eax, dword [ebp - 0xd0]
call fcn.005df9c0
cmp byte [ebp - 0xf4], 0
je 0x644aba
mov eax, dword [ebp - 0x120]
mov ecx, dword [ebp - 0xe8]
mov edx, 5
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea9e
mov edx, dword [ebp - 0x10c]
mov eax, dword [ebp - 0xd0]
call fcn.005ebc9e
mov ecx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xd0]
mov edx, 0x75
call fcn.005fef65
jmp 0x6437bd
cmp dword [ebp - 0xd8], 0
je 0x6437bd
mov edx, dword [ebp - 0x120]
mov eax, dword [ebp - 0xd0]
call fcn.005ff00e
mov edx, dword [ebp - 0x10c]
mov eax, dword [ebp - 0xd0]
call fcn.005ebc9e
jmp 0x6437bd
mov eax, dword [ebp - 0x108]
mov dword [ebp - 0xdc], eax
jmp 0x643989
cmp dword [esi + 0x38], 0
jne 0x644b55
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xd0]
mov edx, 0x33
call fcn.005fef65
mov ebx, eax
mov eax, dword [ebp - 0x114]
mov ecx, dword [ebp - 0xc4]
mov edx, 0x79
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xdc]
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea3d
mov eax, dword [ebp - 0xd0]
mov edx, ebx
call fcn.005ebc9e
jmp 0x644b83
mov eax, dword [ebp - 0xd0]
mov ecx, dword [ebp - 0xdc]
mov edx, 0x32
mov eax, dword [eax + 0x88]
mov dword [ebp - 0xf8], eax
add eax, 2
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call fcn.005fea9e
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xd0]
mov edx, 0xf
call fcn.005fef65
jmp 0x6446a4
mov eax, dword [0x2c]
ud2