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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x3b4
xor esi, esi
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x18c], eax
mov dword [esp + 0x9c], ecx
mov edx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x20]
mov dword [esp + 0xa4], edx
mov dword [esp + 0x188], ebx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x184], eax
mov edx, dword [0x7adbc0]
xor edx, esp
mov dword [esp + 0x3b0], edx
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x2e0], esi
mov dword [esp + 0x2e4], esi
mov dword [esp + 0x2e8], esi
mov dword [esp + 0x2ec], esi
mov dword [esp + 0x2f0], esi
mov dword [esp + 0x2f4], esi
mov dword [esp + 0x2f8], esi
mov dword [esp + 0x2fc], esi
mov dword [esp + 0x33c], esi
mov dword [esp + 0x300], esi
mov dword [esp + 0x340], esi
mov dword [esp + 0x304], esi
mov dword [esp + 0x344], esi
mov dword [esp + 0x308], esi
mov dword [esp + 0x348], esi
mov dword [esp + 0x30c], esi
mov dword [esp + 0x34c], esi
mov dword [esp + 0x310], esi
mov dword [esp + 0x350], esi
mov dword [esp + 0x314], esi
mov dword [esp + 0x354], esi
mov dword [esp + 0x318], esi
mov dword [esp + 0x358], esi
mov dword [esp + 0x31c], esi
mov dword [esp + 0x35c], esi
mov dword [esp + 0x3ac], esi
mov dword [esp + 0x3a8], esi
mov dword [esp + 0x3a0], esi
mov dword [esp + 0x3a4], esi
mov dword [esp + 0x320], esi
mov dword [esp + 0x324], esi
mov dword [esp + 0x328], esi
mov dword [esp + 0x32c], esi
mov dword [esp + 0x330], esi
mov dword [esp + 0x334], esi
mov dword [esp + 0x338], esi
test ebx, 0x8010000
je 0x6490b2
test dword [esp + 0x188], 0x10000
je 0x6490ab
lea eax, [ebp + 0x2b]
and eax, 0xfffffffc
movsx esi, byte [eax]
jmp 0x6490b7
mov esi, 0x2c
jmp 0x6490b7
mov esi, 0x2e
cmp dword [esp + 0xa4], 0
jle 0x64d855
mov ecx, ebx
mov eax, ecx
and eax, 0x80
mov edx, ecx
mov ebx, eax
and edx, 0x80000000
shl eax, 0x18
and edx, eax
shl ebx, 4
shr edx, 0x13
or ebx, edx
movsx eax, byte [edi]
test cl, 0x20
je 0x649123
lea edx, [eax - 9]
cmp edx, 4
ja 0x64d849
mov edx, dword [esp + 0xa4]
lea eax, [edi + 1]
mov edi, eax
dec edx
je 0x64d81a
movsx eax, byte [eax]
lea ecx, [eax - 9]
cmp ecx, 4
jbe 0x649100
cmp eax, 0x20
je 0x649100
mov dword [esp + 0xa4], edx
mov dword [esp + 0x98], edi
cmp eax, 0x2d
jne 0x649134
add ebx, 8
jmp 0x649139
cmp eax, 0x2b
jne 0x64914a
add ebx, 2
inc edi
dec dword [esp + 0xa4]
je 0x64cd1b
xor edx, edx
mov eax, 9
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x90], edx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x160], edx
mov dword [esp + 0x28], 5
mov dword [esp + 0x14], 1
mov dword [esp + 0x10], edx
mov dword [esp + 0x94], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x60], esi
movsx edx, byte [edi]
lea eax, [edx - 0x2b]
cmp eax, 0x4d
ja 0x64944b
movzx eax, word [eax*2 + 0x74c1c4]
add eax, 0x6491ac
jmp eax
cmp edx, 9
jne 0x649460
test byte [esp + 0x188], 1
jne 0x64955b
jmp 0x64947d
cmp edx, 0x20
jne 0x64947d
test byte [esp + 0x188], 2
jne 0x64955b
test byte [esp + 0x188], 0x40
jne 0x6494a0
cmp edx, dword [esp + 0x60]
jne 0x64d13a
test bl, 1
jne 0x64d13a
mov dword [esp + 0x78], 0
or ebx, 1
jmp 0x64955b
mov edx, 0x30
cmp dword [esp + 0x74], 0
je 0x649548
add edx, 0xffffffd0
or ebx, 4
xor eax, eax
mov ecx, ebx
and ecx, 0x201
cmp ecx, 0x200
mov esi, dword [esp + 0x78]
sete al
neg eax
mov ecx, dword [esp + 0x94]
inc dword [esp + 0x74]
lea eax, [esi + eax + 1]
mov dword [esp + 0x78], eax
cmp ecx, dword [esp + 0x2c]
je 0x64950c
mov esi, dword [esp + 0x90]
mov eax, esi
mov ecx, dword [esp + 0x14]
shl eax, cl
inc dword [esp + 0x94]
lea eax, [eax + esi*8]
add eax, edx
mov dword [esp + 0x90], eax
jmp 0x64955b
mov eax, dword [esp + 0x7c]
cmp eax, dword [esp + 0x28]
jae 0x64953f
mov ecx, eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x90], edx
mov dword [esp + ecx*4 + 0x2e4], eax
inc ecx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x94], 1
jmp 0x64955b
or dword [esp + 0x160], edx
jmp 0x64955b
mov eax, ebx
or ebx, 4
and eax, 1
add dword [esp + 0x78], eax
xor eax, 1
add dword [esp + 0x10], eax
inc edi
dec dword [esp + 0xa4]
jne 0x64918e
mov edx, dword [esp + 0x94]
mov dword [esp + 0x60], 0
mov esi, edi
test bl, 4
mov eax, ebx
jne 0x649588
mov esi, dword [esp + 0x98]
and eax, 0x40
je 0x64958f
mov esi, edi
test dword [esp + 0x188], 0x8000
je 0x6495cf
test dword [esp + 0x188], 0x80000000
je 0x6495ba
cmp dword [esp + 0xa4], 0
je 0x6495cf
cmp byte [edi], 0
jne 0x6495c4
jmp 0x6495cf
cmp dword [esp + 0xa4], 0
je 0x6495cf
or ebx, 0x3000000
jmp 0x64cae2
mov ecx, ebx
and ecx, 0x200
mov dword [esp], ecx
je 0x6495e6
mov ecx, ebx
and ecx, 0x54
cmp ecx, 0x54
jne 0x6495c4
cmp dword [esp + 0x74], 0
jne 0x649628
mov eax, ebx
and eax, 0xc
cmp eax, 0xc
jne 0x649602
xor dword [esp + 0x3ac], 0x80000000
mov eax, dword [esp + 0x188]
mov edx, ebx
and eax, 0x28000
or edx, 0x3000000
cmp eax, 0x28000
jne 0x64cae2
mov ebx, edx
jmp 0x64cae2
test bl, 0x20
je 0x649631
test eax, eax
je 0x6495c4
test bl, 0x10
je 0x64968a
cmp dword [esp + 0x2c], 6
jbe 0x649657
mov eax, ebx
and eax, 8
mov dword [esp + 0x28], eax
test ebx, 0x80
jne 0x64c704
jmp 0x64c59b
mov ecx, dword [esp + 0x60]
mov eax, ecx
neg eax
test ebx, 0x80
jne 0x649669
mov eax, ecx
test dword [esp + 0x188], 0x400
mov ecx, dword [esp + 0xa0]
jne 0x649682
mov ecx, 0
sub eax, ecx
mov dword [esp + 0xc], eax
jmp 0x649697
mov eax, dword [esp + 0xa0]
neg eax
mov dword [esp + 0xc], eax
cmp dword [esp], 0
je 0x649917
shl edx, 2
neg edx
mov ecx, edx
shl dword [esp + 0x90], cl
cmp dword [esp + 0x74], 8
ja 0x649703
mov dword [esp + 8], 0
cmp dword [esp + 0x90], 0
jle 0x6496e5
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 8]
add eax, eax
inc edx
test eax, eax
jg 0x6496d3
mov dword [esp + 0x90], eax
mov dword [esp + 8], edx
mov eax, dword [esp + 0x90]
mov dword [esp + 0x324], eax
mov dword [esp + 0x104], 1
jmp 0x6498f8
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x90]
lea edx, [eax + 1]
mov dword [esp + 0x104], edx
mov dword [esp + edx*4 + 0x2e0], ecx
test ecx, ecx
jne 0x649737
mov eax, edx
dec eax
cmp dword [esp + eax*4 + 0x2e0], 0
je 0x649725
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0x2e4]
mov dword [esp + 8], 0
test eax, eax
jle 0x649876
mov edx, dword [esp + 8]
add eax, eax
inc edx
test eax, eax
jg 0x649752
mov dword [esp + 8], edx
mov dword [esp + 0x2e4], eax
cmp dword [esp + 8], 0
je 0x649876
mov dword [esp + 0x324], eax
cmp dword [esp + 0x104], 1
jbe 0x6498f8
mov eax, dword [esp + 0x104]
lea edx, [eax - 1]
shr edx, 1
je 0x64d146
mov ecx, dword [esp + 8]
xor eax, eax
neg ecx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
mov dword [esp + 4], ecx
mov dword [esp], edx
mov dword [esp + 0xcc], esi
lea esi, [esi]
mov esi, dword [esp + eax*8 + 0x2e8]
mov edx, esi
mov edi, dword [esp + 4]
mov ecx, edi
shr edx, cl
mov ebx, dword [esp + 8]
mov ecx, ebx
or dword [esp + eax*8 + 0x324], edx
mov edx, dword [esp + eax*8 + 0x2ec]
shl esi, cl
mov ecx, edi
mov edi, edx
shr edi, cl
mov ecx, ebx
shl edx, cl
or esi, edi
mov dword [esp + eax*8 + 0x328], esi
mov dword [esp + eax*8 + 0x32c], edx
inc eax
cmp eax, dword [esp]
jb 0x6497c0
mov ebx, dword [esp + 0xc8]
lea eax, [eax + eax + 1]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov dword [esp], eax
mov eax, dword [esp]
mov edx, dword [esp + 0x104]
lea ecx, [eax - 1]
lea eax, [edx - 1]
cmp ecx, eax
jae 0x6498f8
mov edx, dword [esp]
mov ecx, dword [esp + 8]
mov dword [esp + 0xc8], ebx
neg ecx
mov eax, dword [esp + edx*4 + 0x2e4]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 8]
or dword [esp + edx*4 + 0x320], ebx
shl eax, cl
mov dword [esp + edx*4 + 0x324], eax
mov ebx, dword [esp + 0xc8]
jmp 0x6498f8
cmp dword [esp + 0x104], 0
je 0x6498f8
cmp dword [esp + 0x104], 0x18
jle 0x64d152
mov dword [esp + 0xc8], ebx
lea eax, [esp + 0x2e0]
mov ebx, dword [eax - 0x1dc]
lea ecx, [esp + 0x320]
sub ecx, eax
lea edx, [ebx*4]
xor ebx, ebx
xor eax, eax
cmp ecx, edx
setg al
neg ecx
cmp ecx, edx
setg bl
or eax, ebx
mov ebx, dword [esp + 0xc8]
je 0x64d152
mov eax, dword [esp + 0x104]
lea ecx, [esp + 0x2e4]
lea edx, [eax*4]
lea eax, [esp + 0x324]
push edx
push ecx
push eax
call fcn.0065d430
add esp, 0xc
mov edx, dword [esp + 0x74]
sub edx, dword [esp + 0x78]
mov eax, dword [esp + 0xc]
lea ecx, [eax + edx*4]
sub ecx, dword [esp + 8]
mov dword [esp + 0x108], ecx
jmp 0x64c20f
test bl, 1
je 0x649926
mov eax, dword [esp + 0x78]
sub dword [esp + 0xc], eax
jmp 0x649931
sub eax, dword [esp + 0x9c]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x74]
add eax, ecx
cmp eax, 0xffffec9b
jge 0x649950
mov eax, ebx
and eax, 8
mov dword [esp + 0x28], eax
jmp 0x64c704
cmp eax, 0x1345
jle 0x649965
mov eax, ebx
and eax, 8
mov dword [esp + 0x28], eax
jmp 0x64c59b
mov eax, dword [esp + 0x74]
mov dword [esp + 0xc8], ebx
lea ebx, [eax - 0x36]
test ebx, ebx
mov ebx, ecx
lea ecx, [ebx + eax - 0x36]
jg 0x64997f
mov ecx, ebx
mov ebx, dword [esp + 0xc8]
mov dword [esp + 0xa0], ecx
cmp eax, 9
ja 0x64cb76
mov dword [esp + 0x108], 0
cmp dword [esp + 0x90], 0
jle 0x6499ce
mov eax, dword [esp + 0x108]
mov edx, dword [esp + 0x90]
add edx, edx
inc eax
test edx, edx
jg 0x6499b9
mov dword [esp + 0x108], eax
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x108]
neg edx
mov eax, dword [esp + 0x90]
add edx, 0x20
mov dword [esp + 0x324], eax
mov dword [esp + 0x108], edx
mov dword [esp + 0x104], 1
cmp dword [esp + 0xa0], 0
je 0x64c20f
xor eax, eax
mov dword [esp + 0x360], eax
mov dword [esp + 0x36c], eax
mov dword [esp + 0x370], eax
mov dword [esp + 0x374], eax
mov dword [esp + 0x378], eax
mov dword [esp + 0x37c], eax
mov dword [esp + 0x380], eax
mov dword [esp + 0x384], eax
mov dword [esp + 0x388], eax
mov dword [esp + 0x38c], eax
mov dword [esp + 0x390], eax
mov dword [esp + 0x394], eax
mov dword [esp + 0x398], eax
mov dword [esp + 0x39c], eax
cmp dword [esp + 0x104], 4
jb 0x649b5a
mov eax, dword [esp + 0x334]
shr eax, 0x1f
mov edx, dword [esp + 0x330]
add edx, eax
mov dword [esp + 0x330], edx
cmp edx, eax
jae 0x649b29
mov eax, 3
mov dword [esp + 0x320], 0
mov dword [esp + 0x104], eax
cmp dword [esp + 0x32c], 0xffffffff
je 0x649ace
lea eax, [esp + 0x32c]
mov dword [eax - 0x29c], eax
mov eax, dword [eax]
jmp 0x649af7
mov edx, eax
dec edx
lea ecx, [esp + edx*4 + 0x320]
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x649ad0
mov dword [esp + 0x104], edx
mov dword [esp + 0x90], ecx
cmp dword [esp + 0x104], 0
je 0x649b03
mov edx, dword [esp + 0x90]
inc eax
mov dword [edx], eax
jmp 0x649b6f
inc dword [esp + 0x108]
lea eax, [esp + 0x324]
mov dword [eax], 0x80000000
mov dword [eax - 0x220], 1
mov dword [eax - 0x294], eax
jmp 0x649b6f
mov eax, 4
mov dword [esp + 0x104], eax
test edx, edx
jne 0x64d214
dec eax
lea edx, [esp + eax*4 + 0x320]
cmp dword [edx], 0
je 0x649b3d
mov dword [esp + 0x104], eax
mov dword [esp + 0x90], edx
jmp 0x649b6f
mov eax, dword [esp + 0x104]
lea edx, [esp + eax*4 + 0x320]
mov dword [esp + 0x90], edx
xor eax, eax
mov dword [esp + 0x260], eax
mov dword [esp + 0x264], eax
mov dword [esp + 0x268], eax
mov dword [esp + 0x26c], eax
mov dword [esp + 0x270], eax
mov dword [esp + 0x274], eax
mov dword [esp + 0x278], eax
mov dword [esp + 0x27c], eax
mov dword [esp + 0x280], eax
mov dword [esp + 0x284], eax
mov dword [esp + 0x288], eax
mov dword [esp + 0x28c], eax
mov dword [esp + 0x290], eax
mov dword [esp + 0x294], eax
mov dword [esp + 0x298], eax
mov dword [esp + 0x29c], eax
mov dword [esp + 0x2a0], eax
mov dword [esp + 0x2b4], eax
mov dword [esp + 0x2b8], eax
mov dword [esp + 0x2bc], eax
mov dword [esp + 0x2c0], eax
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x2cc], eax
mov dword [esp + 0x2d0], eax
mov dword [esp + 0x2d4], eax
mov dword [esp + 0x2d8], eax
mov dword [esp + 0x2dc], eax
cmp dword [esp + 0xa0], 0xfffffdea
jge 0x64a2a5
mov dword [esp + 0x368], eax
mov dword [esp + 0x364], eax
cmp dword [esp + 0xa0], 0xfffff000
jle 0x649cae
mov edx, 0x1000
lea ecx, [esp + 0xe0]
mov dword [ecx], eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
lea esi, [esp + 0x2b0]
mov dword [esi], eax
mov dword [esi - 4], eax
mov dword [esi - 8], eax
mov dword [esi - 0xc], eax
mov eax, 3
mov dword [esp + 0xa4], edi
mov dword [esp + 0x78], edx
mov ecx, dword [ecx]
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0xa0]
jmp 0x649d26
add dword [esp + 0xa0], 0x1000
mov edx, 0x1000
mov dword [esp + 0xc8], ebx
mov eax, 3
mov dword [esp + 0xa4], edi
mov dword [esp + 0x78], edx
mov dword [esp + 0xcc], esi
mov ebx, dword [esp + 0xa0]
mov edx, eax
shl edx, 4
movsx esi, word [eax*2 + 0x74c95e]
mov ecx, dword [edx + 0x74c64c]
mov dword [esp + 0x2a4], ecx
lea ecx, [edx + 0x74c648]
mov edi, dword [ecx]
mov ecx, dword [ecx - 4]
mov edx, dword [edx + 0x74c640]
mov dword [esp + 0x2a8], edi
lea edi, [esp + 0x2ac]
mov dword [edi], ecx
mov ecx, 4
mov dword [edi + 4], edx
mov dword [esp + 0x74], esi
mov edx, dword [esp + 0x78]
jmp 0x649d38
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x78]
sar edx, 1
dec eax
js 0x64a274
mov dword [esp + 0x2c], eax
mov dword [esp + 0x78], edx
mov eax, dword [esp + 0x78]
neg eax
cmp ebx, eax
jg 0x649d30
add ebx, dword [esp + 0x78]
test ecx, ecx
je 0x64a29c
mov eax, dword [esp + 0x2c]
movsx esi, word [eax*2 + 0x74c95e]
shl eax, 4
mov dword [esp + 0x60], esi
mov edx, dword [eax + 0x74c64c]
mov edi, dword [eax + 0x74c648]
mov dword [esp + 0x264], edx
mov dword [esp + 0x268], edi
mov esi, dword [eax + 0x74c644]
mov edx, dword [eax + 0x74c640]
mov edi, dword [esp + ecx*4 + 0x2a0]
mov dword [esp + 0x26c], esi
lea esi, [ecx + 3]
mov dword [esp + 0x270], edx
mov dword [esp + 0x54], edx
mov dword [esp + 0x50], edi
mov eax, dword [esp + 0x50]
mul dword [esp + 0x54]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edx
mov eax, dword [esp + 0x5c]
mov edi, 3
mov edx, dword [esp + 0x58]
mov dword [esp + esi*4 + 0x1a0], eax
mov dword [esp + esi*4 + 0x1a4], edx
mov dword [esp + 0xa0], ebx
mov eax, dword [esp + ecx*4 + 0x2a0]
mov edx, dword [esp + edi*4 + 0x260]
mov dword [esp + esi*4 + 0x1e0], 0
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], edx
mov eax, dword [esp + 0xe4]
mul dword [esp + 0xe8]
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], edx
mov eax, dword [esp + 0xec]
xor ebx, ebx
mov edx, dword [esp + esi*4 + 0x1a0]
add edx, eax
cmp edx, eax
mov dword [esp + esi*4 + 0x1a0], edx
setb bl
dec esi
add ebx, dword [esp + 0xf0]
mov dword [esp + esi*4 + 0x1a0], ebx
dec edi
jne 0x649dea
mov eax, esi
mov ebx, dword [esp + 0xa0]
dec eax
mov dword [esp + esi*4 + 0x1e0], 0
js 0x649f08
mov edx, esi
shr edx, 1
je 0x64d23a
xor eax, eax
lea edi, [esp + esi*4 + 0x19c]
mov dword [esp + 0xc], edi
lea edi, [esp + esi*4 + 0x1dc]
mov dword [esp + 8], edi
xor edi, edi
mov dword [esp + 0xe0], ecx
mov dword [esp + 0x10], esi
mov dword [esp + 0xa0], ebx
mov ecx, eax
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0xc]
inc eax
mov dword [ecx + ebx], edi
mov dword [ecx + esi], edi
mov dword [ecx + ebx - 4], edi
mov dword [ecx + esi - 4], edi
add ecx, 0xfffffff8
cmp eax, edx
jb 0x649eb8
mov ecx, dword [esp + 0xe0]
lea edx, [eax + eax + 1]
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0xa0]
lea eax, [edx - 1]
cmp eax, esi
jae 0x649f08
shl edx, 2
lea edi, [esp + esi*4 + 0x1dc]
neg edx
lea esi, [esp + esi*4 + 0x19c]
xor eax, eax
mov dword [edx + edi + 4], eax
mov dword [edx + esi + 4], eax
mov edx, ecx
dec edx
je 0x649fd3
mov dword [esp + 0xe0], ecx
mov eax, 4
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x12c], edx
mov ecx, eax
lea ebx, [esp + edx*4 + 0x1e0]
lea esi, [esp + edx*4 + 0x1a0]
mov eax, dword [esp + 0x12c]
mov edi, dword [esp + ecx*4 + 0x260]
mov dword [esp + 0x168], edi
mov edx, dword [esp + eax*4 + 0x2a0]
mov dword [esp + 0x164], edx
mov eax, dword [esp + 0x164]
mul dword [esp + 0x168]
mov dword [esp + 0x16c], eax
mov dword [esp + 0x170], edx
mov edi, dword [esp + 0x16c]
mov edx, dword [esi + ecx*4]
add edx, edi
mov dword [esi + ecx*4], edx
xor eax, eax
cmp edx, edi
mov edx, 0
setb al
add eax, dword [esp + 0x170]
mov edi, dword [esi + ecx*4 - 4]
add edi, eax
cmp edi, eax
mov dword [esi + ecx*4 - 4], edi
setb dl
add dword [ebx + ecx*4 - 8], edx
dec ecx
jne 0x649f3b
mov edx, dword [esp + 0x12c]
mov eax, 4
dec edx
jne 0x649f24
mov ecx, dword [esp + 0xe0]
mov ebx, dword [esp + 0xa0]
mov esi, dword [esp + 0x74]
lea edx, [ecx + 4]
add esi, dword [esp + 0x60]
lea eax, [esp + ecx*4 + 0x2b0]
mov edi, dword [eax - 0x100]
mov dword [esp + 0x74], esi
lea esi, [ecx + 3]
mov dword [esp + 0x28], edx
mov dword [esp + 0x14], eax
mov dword [eax], edi
cmp edx, 1
je 0x64a106
mov eax, esi
xor edx, edx
shr eax, 1
mov dword [esp + 0x98], eax
je 0x64d230
xor eax, eax
lea edi, [esp + ecx*4 + 0x2ac]
mov dword [esp + 0x94], edi
lea edi, [esp + ecx*4 + 0x1ac]
mov dword [esp + 4], edi
lea edi, [esp + ecx*4 + 0x1ec]
mov dword [esp + 0xe0], ecx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x7c], edi
mov dword [esp], esi
mov ecx, eax
mov ebx, dword [esp + 4]
lea esi, [esi]
lea edi, [edi]
mov esi, dword [esp + 0x7c]
inc eax
mov edi, dword [esp + 0x94]
mov dword [esp + 0x9c], eax
add edx, dword [ecx + esi]
mov eax, dword [ecx + ebx]
add eax, edx
cmp eax, edx
mov edx, 0
mov dword [ecx + edi], eax
mov eax, edx
setb al
add eax, dword [ecx + esi - 4]
mov esi, dword [ecx + ebx - 4]
add esi, eax
cmp esi, eax
mov eax, dword [esp + 0x9c]
mov dword [ecx + edi - 4], esi
setb dl
add ecx, 0xfffffff8
cmp eax, dword [esp + 0x98]
jb 0x64a060
mov ecx, dword [esp + 0xe0]
lea eax, [eax + eax + 1]
mov esi, dword [esp]
mov ebx, dword [esp + 0xa0]
lea edi, [eax - 1]
cmp edi, esi
jae 0x64a100
shl eax, 2
lea edi, [esp + ecx*4 + 0x1ac]
neg eax
mov dword [esp], esi
lea esi, [esp + ecx*4 + 0x1ec]
lea ecx, [esp + ecx*4 + 0x2ac]
add edx, dword [eax + esi + 4]
add edx, dword [eax + edi + 4]
mov dword [eax + ecx + 4], edx
mov eax, dword [esp + 0x14]
mov esi, dword [esp]
mov edi, dword [eax]
jmp 0x64a106
mov eax, dword [esp + 0x14]
mov edi, dword [eax]
test edi, edi
jne 0x64a128
mov edx, dword [esp + 0x28]
dec edx
lea eax, [esp + edx*4 + 0x2a0]
cmp dword [eax], 0
je 0x64a10e
mov dword [esp + 0x28], edx
mov dword [esp + 0x14], eax
mov eax, edx
lea esi, [eax - 1]
mov eax, dword [esp + 0x2a4]
test eax, eax
jle 0x64a1c9
dec dword [esp + 0x74]
add eax, eax
mov dword [esp + 0x2a4], eax
cmp dword [esp + 0x28], 2
jb 0x64a1c9
mov eax, dword [esp + 0x28]
lea ecx, [eax - 1]
shr ecx, 1
je 0x64d226
mov dword [esp + 0xa0], ebx
xor edx, edx
mov eax, dword [esp + edx*8 + 0x2a8]
mov ebx, eax
shr ebx, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x2a4], ebx
mov ebx, dword [esp + edx*8 + 0x2ac]
mov edi, ebx
shr edi, 0x1f
add ebx, ebx
or eax, edi
mov dword [esp + edx*8 + 0x2a8], eax
mov dword [esp + edx*8 + 0x2ac], ebx
inc edx
cmp edx, ecx
jb 0x64a163
mov ebx, dword [esp + 0xa0]
lea ecx, [edx + edx + 1]
lea eax, [ecx - 1]
cmp eax, esi
jae 0x64a1c9
mov edx, dword [esp + ecx*4 + 0x2a4]
mov eax, edx
shr eax, 0x1f
add edx, edx
or dword [esp + ecx*4 + 0x2a0], eax
mov dword [esp + ecx*4 + 0x2a4], edx
mov eax, dword [esp + 0x14]
mov ecx, esi
cmp dword [eax], 0
je 0x64a1d8
mov ecx, dword [esp + 0x28]
cmp ecx, 4
jb 0x64a266
mov eax, dword [esp + 0x2b4]
shr eax, 0x1f
mov edx, dword [esp + 0x2b0]
add edx, eax
mov dword [esp + 0x2b0], edx
cmp edx, eax
jae 0x64a252
mov dword [esp + 0x2a0], 0
mov ecx, 3
cmp dword [esp + 0x2ac], 0xffffffff
je 0x64a224
lea edx, [esp + 0x2ac]
mov eax, dword [edx]
jmp 0x64a237
dec ecx
lea edx, [esp + ecx*4 + 0x2a0]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x64a224
test ecx, ecx
je 0x64a23c
inc eax
mov dword [edx], eax
jmp 0x64a266
inc dword [esp + 0x74]
mov ecx, 1
mov dword [esp + 0x2a4], 0x80000000
jmp 0x64a266
mov ecx, 4
test edx, edx
jne 0x64a266
dec ecx
cmp dword [esp + ecx*4 + 0x2a0], 0
je 0x64a25b
sar dword [esp + 0x78], 1
dec dword [esp + 0x2c]
jns 0x649d49
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xe0], ecx
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
jmp 0x64a93d
mov eax, dword [esp + 0x2c]
jmp 0x649ce3
cmp dword [esp + 0xa0], 0x216
jle 0x64a91a
mov dword [esp + 0x368], eax
mov dword [esp + 0x364], eax
cmp dword [esp + 0xa0], 0x1000
jge 0x64a31e
mov edx, 0x1000
lea ecx, [esp + 0xe0]
mov dword [ecx], eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
lea esi, [esp + 0x2b0]
mov dword [esi], eax
mov dword [esi - 4], eax
mov dword [esi - 8], eax
mov dword [esi - 0xc], eax
mov eax, 3
mov dword [esp + 0xa4], edi
mov dword [esp + 0x7c], edx
mov ecx, dword [ecx]
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0xa0]
jmp 0x64a396
add dword [esp + 0xa0], 0xfffff000
mov edx, 0x1000
mov dword [esp + 0xc8], ebx
mov eax, 3
mov dword [esp + 0xa4], edi
mov dword [esp + 0x7c], edx
mov dword [esp + 0xcc], esi
mov ebx, dword [esp + 0xa0]
mov edx, eax
shl edx, 4
movsx esi, word [eax*2 + 0x74c97a]
mov ecx, dword [edx + 0x74c7cc]
mov dword [esp + 0x2a4], ecx
lea ecx, [edx + 0x74c7c8]
mov edi, dword [ecx]
mov ecx, dword [ecx - 4]
mov edx, dword [edx + 0x74c7c0]
mov dword [esp + 0x2a8], edi
lea edi, [esp + 0x2ac]
mov dword [edi], ecx
mov ecx, 4
mov dword [edi + 4], edx
mov dword [esp + 0x74], esi
mov edx, dword [esp + 0x7c]
jmp 0x64a3a8
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
sar edx, 1
dec eax
js 0x64a274
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
cmp ebx, dword [esp + 0x7c]
jl 0x64a3a0
sub ebx, dword [esp + 0x7c]
test ecx, ecx
je 0x64a911
mov eax, dword [esp + 0x78]
movsx esi, word [eax*2 + 0x74c97a]
shl eax, 4
mov dword [esp + 0x60], esi
mov edx, dword [eax + 0x74c7cc]
mov edi, dword [eax + 0x74c7c8]
mov dword [esp + 0x264], edx
mov dword [esp + 0x268], edi
mov esi, dword [eax + 0x74c7c4]
mov edx, dword [eax + 0x74c7c0]
mov edi, dword [esp + ecx*4 + 0x2a0]
mov dword [esp + 0x26c], esi
lea esi, [ecx + 3]
mov dword [esp + 0x270], edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x18]
mul dword [esp + 0x1c]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x24]
mov edi, 3
mov edx, dword [esp + 0x20]
mov dword [esp + esi*4 + 0x1a0], eax
mov dword [esp + esi*4 + 0x1a4], edx
mov dword [esp + 0xa0], ebx
mov eax, dword [esp + ecx*4 + 0x2a0]
mov edx, dword [esp + edi*4 + 0x260]
mov dword [esp + esi*4 + 0x1e0], 0
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], edx
mov eax, dword [esp + 0xa8]
mul dword [esp + 0xac]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], edx
mov eax, dword [esp + 0xb0]
xor ebx, ebx
mov edx, dword [esp + esi*4 + 0x1a0]
add edx, eax
cmp edx, eax
mov dword [esp + esi*4 + 0x1a0], edx
setb bl
dec esi
add ebx, dword [esp + 0xb4]
mov dword [esp + esi*4 + 0x1a0], ebx
dec edi
jne 0x64a456
mov eax, esi
mov ebx, dword [esp + 0xa0]
dec eax
mov dword [esp + esi*4 + 0x1e0], 0
js 0x64a574
mov edx, esi
shr edx, 1
je 0x64d258
xor eax, eax
lea edi, [esp + esi*4 + 0x19c]
mov dword [esp + 0x10], edi
lea edi, [esp + esi*4 + 0x1dc]
mov dword [esp + 0xc], edi
xor edi, edi
mov dword [esp + 0xe0], ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0xa0], ebx
mov ecx, eax
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
inc eax
mov dword [ecx + ebx], edi
mov dword [ecx + esi], edi
mov dword [ecx + ebx - 4], edi
mov dword [ecx + esi - 4], edi
add ecx, 0xfffffff8
cmp eax, edx
jb 0x64a524
mov ecx, dword [esp + 0xe0]
lea edx, [eax + eax + 1]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0xa0]
lea eax, [edx - 1]
cmp eax, esi
jae 0x64a574
shl edx, 2
lea edi, [esp + esi*4 + 0x1dc]
neg edx
lea esi, [esp + esi*4 + 0x19c]
xor eax, eax
mov dword [edx + edi + 4], eax
mov dword [edx + esi + 4], eax
mov edx, ecx
dec edx
je 0x64a63f
mov dword [esp + 0xe0], ecx
mov eax, 4
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x12c], edx
mov ecx, eax
lea ebx, [esp + edx*4 + 0x1e0]
lea esi, [esp + edx*4 + 0x1a0]
mov eax, dword [esp + 0x12c]
mov edi, dword [esp + ecx*4 + 0x260]
mov dword [esp + 0x120], edi
mov edx, dword [esp + eax*4 + 0x2a0]
mov dword [esp + 0x11c], edx
mov eax, dword [esp + 0x11c]
mul dword [esp + 0x120]
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], edx
mov edi, dword [esp + 0x124]
mov edx, dword [esi + ecx*4]
add edx, edi
mov dword [esi + ecx*4], edx
xor eax, eax
cmp edx, edi
mov edx, 0
setb al
add eax, dword [esp + 0x128]
mov edi, dword [esi + ecx*4 - 4]
add edi, eax
cmp edi, eax
mov dword [esi + ecx*4 - 4], edi
setb dl
add dword [ebx + ecx*4 - 8], edx
dec ecx
jne 0x64a5a7
mov edx, dword [esp + 0x12c]
mov eax, 4
dec edx
jne 0x64a590
mov ecx, dword [esp + 0xe0]
mov ebx, dword [esp + 0xa0]
mov edx, dword [esp + 0x74]
lea esi, [esp + ecx*4 + 0x2b0]
add edx, dword [esp + 0x60]
lea eax, [ecx + 3]
mov dword [esp + 0x74], edx
lea edx, [ecx + 4]
mov edi, dword [esi - 0x100]
mov dword [esi], edi
mov dword [esp + 0x28], eax
cmp edx, 1
je 0x64a786
mov dword [esp + 0x2c], 0
shr eax, 1
mov dword [esp + 0x98], eax
je 0x64d24e
xor eax, eax
lea edi, [esp + ecx*4 + 0x1ac]
mov dword [esp + 8], edi
lea edi, [esp + ecx*4 + 0x1ec]
mov dword [esp + 0x94], edi
lea edi, [esp + ecx*4 + 0x2ac]
mov dword [esp + 0xe0], ecx
mov dword [esp], edx
mov dword [esp + 0xa0], ebx
mov dword [esp + 4], esi
mov ecx, eax
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0x2c]
lea esi, [esi]
lea edi, [edi]
mov esi, dword [esp + 0x94]
inc eax
mov dword [esp + 0x9c], eax
add edx, dword [ecx + esi]
mov eax, dword [ecx + ebx]
add eax, edx
cmp eax, edx
mov edx, 0
mov dword [ecx + edi], eax
mov eax, edx
setb al
add eax, dword [ecx + esi - 4]
mov esi, dword [ecx + ebx - 4]
add esi, eax
cmp esi, eax
mov eax, dword [esp + 0x9c]
mov dword [ecx + edi - 4], esi
setb dl
add ecx, 0xfffffff8
cmp eax, dword [esp + 0x98]
jb 0x64a6d0
mov dword [esp + 0x2c], edx
lea edi, [eax + eax + 1]
mov ecx, dword [esp + 0xe0]
mov esi, dword [esp + 4]
mov edx, dword [esp]
mov ebx, dword [esp + 0xa0]
lea eax, [edi - 1]
cmp eax, dword [esp + 0x28]
jae 0x64a784
shl edi, 2
neg edi
mov dword [esp], edx
lea edx, [esp + ecx*4 + 0x1ec]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xa0], ebx
lea ebx, [esp + ecx*4 + 0x1ac]
add eax, dword [edi + edx + 4]
lea ecx, [esp + ecx*4 + 0x2ac]
add eax, dword [edi + ebx + 4]
mov dword [edi + ecx + 4], eax
mov edi, dword [esi]
mov edx, dword [esp]
mov ebx, dword [esp + 0xa0]
jmp 0x64a786
mov edi, dword [esi]
test edi, edi
jne 0x64a79e
dec edx
lea esi, [esp + edx*4 + 0x2a0]
cmp dword [esi], 0
je 0x64a78a
lea eax, [edx - 1]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x2a4]
test eax, eax
jle 0x64a845
dec dword [esp + 0x74]
add eax, eax
mov dword [esp + 0x2a4], eax
cmp edx, 2
jb 0x64a845
lea edi, [edx - 1]
shr edi, 1
je 0x64d244
mov dword [esp], edx
xor ecx, ecx
mov dword [esp + 0xa0], ebx
mov eax, dword [esp + ecx*8 + 0x2a8]
mov edx, eax
shr edx, 0x1f
add eax, eax
or dword [esp + ecx*8 + 0x2a4], edx
mov edx, dword [esp + ecx*8 + 0x2ac]
mov ebx, edx
shr ebx, 0x1f
add edx, edx
or eax, ebx
mov dword [esp + ecx*8 + 0x2a8], eax
mov dword [esp + ecx*8 + 0x2ac], edx
inc ecx
cmp ecx, edi
jb 0x64a7da
mov edx, dword [esp]
lea eax, [ecx + ecx + 1]
mov ebx, dword [esp + 0xa0]
lea ecx, [eax - 1]
cmp ecx, dword [esp + 0x28]
jae 0x64a845
mov edi, dword [esp + eax*4 + 0x2a4]
mov ecx, edi
shr ecx, 0x1f
add edi, edi
or dword [esp + eax*4 + 0x2a0], ecx
mov dword [esp + eax*4 + 0x2a4], edi
cmp dword [esi], 0
mov ecx, dword [esp + 0x28]
je 0x64a850
mov ecx, edx
cmp ecx, 4
jb 0x64a8de
mov eax, dword [esp + 0x2b4]
shr eax, 0x1f
mov edx, dword [esp + 0x2b0]
add edx, eax
mov dword [esp + 0x2b0], edx
cmp edx, eax
jae 0x64a8ca
mov dword [esp + 0x2a0], 0
mov ecx, 3
cmp dword [esp + 0x2ac], 0xffffffff
je 0x64a89c
lea edx, [esp + 0x2ac]
mov eax, dword [edx]
jmp 0x64a8af
dec ecx
lea edx, [esp + ecx*4 + 0x2a0]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x64a89c
test ecx, ecx
je 0x64a8b4
inc eax
mov dword [edx], eax
jmp 0x64a8de
inc dword [esp + 0x74]
mov ecx, 1
mov dword [esp + 0x2a4], 0x80000000
jmp 0x64a8de
mov ecx, 4
test edx, edx
jne 0x64a8de
dec ecx
cmp dword [esp + ecx*4 + 0x2a0], 0
je 0x64a8d3
sar dword [esp + 0x7c], 1
dec dword [esp + 0x78]
jns 0x64a3b9
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xe0], ecx
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
jmp 0x64a93d
mov eax, dword [esp + 0x78]
jmp 0x64a353
mov dword [esp + 0x2b0], eax
mov dword [esp + 0x2ac], eax
mov dword [esp + 0x2a8], eax
mov dword [esp + 0x2a4], eax
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0xa0]
lea edx, [eax + 0x1b]
cmp edx, 0x1a
ja 0x64a9b6
movsx edx, word [eax*2 + 0x74c95e]
shl eax, 4
mov dword [esp + 0x14], edx
mov ecx, dword [eax + 0x74c63c]
mov dword [esp + 0x364], ecx
mov edx, dword [eax + 0x74c638]
mov ecx, dword [eax + 0x74c634]
mov eax, dword [eax + 0x74c630]
mov dword [esp + 0x370], eax
mov dword [esp + 0x368], edx
mov dword [esp + 0x36c], ecx
test eax, eax
mov eax, 4
mov dword [esp + 0x7c], eax
jne 0x64d262
dec eax
lea ecx, [esp + eax*4 + 0x360]
cmp dword [ecx], 0
je 0x64a9a0
mov dword [esp + 0x7c], eax
jmp 0x64b709
xor eax, eax
mov dword [esp + 0x220], eax
mov dword [esp + 0x22c], eax
mov dword [esp + 0x230], eax
mov dword [esp + 0x234], eax
mov dword [esp + 0x238], eax
mov dword [esp + 0x23c], eax
mov dword [esp + 0x240], eax
mov dword [esp + 0x244], eax
mov dword [esp + 0x248], eax
mov dword [esp + 0x24c], eax
mov dword [esp + 0x250], eax
mov dword [esp + 0x254], eax
mov dword [esp + 0x258], eax
mov dword [esp + 0x25c], eax
cmp dword [esp + 0xa0], 0
jl 0x64d42b
cmp dword [esp + 0xa0], 0x37
jl 0x64aaca
mov edx, dword [esp + 0xa0]
mov dword [esp + 0xc8], ebx
mov ebx, edx
sar ebx, 3
mov dword [esp + 0x78], 4
movzx ecx, word [ebx*2 + 0x74c8a2]
lea eax, [ebx + 1]
shr ecx, 5
cmp ecx, edx
jle 0x64aa65
mov eax, ebx
movzx ecx, word [eax*2 + 0x74c8a0]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
sub edx, ecx
mov dword [esp + 0xa0], edx
movsx edx, word [eax*2 + 0x74c982]
shl eax, 4
mov dword [esp + 0x60], edx
mov ebx, dword [eax + 0x74c80c]
mov edx, dword [eax + 0x74c808]
mov ecx, dword [eax + 0x74c804]
mov eax, dword [eax + 0x74c800]
mov dword [esp + 0x264], ebx
mov dword [esp + 0x268], edx
mov dword [esp + 0x26c], ecx
mov dword [esp + 0x270], eax
mov ebx, dword [esp + 0xc8]
jmp 0x64aad2
mov dword [esp + 0x78], 0
cmp dword [esp + 0xa0], 0x37
je 0x64d3c9
mov eax, dword [esp + 0xa0]
lea edx, [eax - 0x1b]
test edx, edx
jle 0x64d3b4
movsx eax, word [edx*2 + 0x74ccfe]
mov dword [esp + 0xc], eax
mov ecx, dword [edx*8 + 0x74cb1c]
mov eax, dword [edx*8 + 0x74cb18]
mov dword [esp + 0x224], ecx
mov ecx, 2
mov dword [esp + 0x228], eax
mov dword [esp + 0x28], ecx
test eax, eax
jne 0x64d3a4
mov eax, ecx
dec eax
cmp dword [esp + eax*4 + 0x220], 0
je 0x64ab2d
mov dword [esp + 0x28], eax
mov dword [esp + 0xa0], 0x1b
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x7c], 2
movsx ecx, word [eax*2 + 0x74ccfe]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax*8 + 0x74cb1c]
mov eax, dword [eax*8 + 0x74cb18]
mov dword [esp + 0x364], ecx
mov dword [esp + 0x368], eax
test eax, eax
jne 0x64d398
mov eax, dword [esp + 0x7c]
dec eax
lea ecx, [esp + eax*4 + 0x360]
cmp dword [ecx], 0
je 0x64ab8a
mov dword [esp + 0x7c], eax
test edx, edx
jle 0x64b149
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x7c]
lea edx, [eax + edx - 1]
mov dword [esp + 0x10], edx
mov edx, dword [ecx]
mov eax, dword [esp + eax*4 + 0x220]
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x40]
mul dword [esp + 0x44]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x4c]
mov dword [esp + eax*4 + 0x1a0], edx
mov edx, dword [esp + 0x48]
mov dword [esp + eax*4 + 0x1a4], edx
mov eax, dword [esp + 0x28]
dec eax
je 0x64aca0
mov dword [esp + 0xcc], esi
mov dword [esp + 0xc8], ebx
mov ebx, ecx
mov dword [esp + 0xa4], edi
mov ecx, eax
mov esi, dword [esp + 0x10]
mov edx, dword [ebx]
mov edi, dword [esp + ecx*4 + 0x220]
mov dword [esp + esi*4 + 0x1e0], 0
mov dword [esp + 0xd0], edx
mov dword [esp + 0xd4], edi
mov eax, dword [esp + 0xd0]
mul dword [esp + 0xd4]
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], edx
mov edi, dword [esp + 0xd8]
mov edx, dword [esp + esi*4 + 0x1a0]
add edx, edi
cmp edx, edi
mov dword [esp + esi*4 + 0x1a0], edx
mov edx, 0
setb dl
dec esi
add edx, dword [esp + 0xdc]
mov dword [esp + esi*4 + 0x1a0], edx
dec ecx
jne 0x64ac16
mov dword [esp + 0x10], esi
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x1e0], 0
dec eax
js 0x64ad6c
mov eax, dword [esp + 0x10]
shr eax, 1
mov dword [esp + 8], eax
je 0x64d38e
mov ecx, dword [esp + 0x10]
xor eax, eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
lea edx, [esp + ecx*4 + 0x19c]
mov dword [esp + 4], edx
lea edx, [esp + ecx*4 + 0x1dc]
mov dword [esp], edx
mov dword [esp + 0xa4], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 8]
inc eax
mov dword [edx + ecx], edi
mov dword [edx + ebx], edi
mov dword [edx + ecx - 4], edi
mov dword [edx + ebx - 4], edi
add edx, 0xfffffff8
cmp eax, esi
jb 0x64ad05
mov ebx, dword [esp + 0xc8]
lea edx, [eax + eax + 1]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea eax, [edx - 1]
cmp eax, dword [esp + 0x10]
jae 0x64ad6c
shl edx, 2
xor eax, eax
mov dword [esp + 0xc8], ebx
neg edx
mov ebx, dword [esp + 0x10]
lea ecx, [esp + ebx*4 + 0x1dc]
mov dword [edx + ecx + 4], eax
lea ecx, [esp + ebx*4 + 0x19c]
mov dword [edx + ecx + 4], eax
mov ebx, dword [esp + 0xc8]
mov eax, dword [esp + 0x7c]
dec eax
je 0x64ae41
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
mov dword [esp + 0xcc], esi
mov edx, dword [esp + 0x28]
mov esi, edx
test edx, edx
je 0x64ae25
mov dword [esp], eax
lea ebx, [esp + eax*4 + 0x1e0]
lea ecx, [esp + eax*4 + 0x1a0]
mov eax, dword [esp]
mov edi, dword [esp + esi*4 + 0x220]
mov dword [esp + 0x154], edi
mov edx, dword [esp + eax*4 + 0x360]
mov dword [esp + 0x150], edx
mov eax, dword [esp + 0x150]
mul dword [esp + 0x154]
mov dword [esp + 0x158], eax
mov dword [esp + 0x15c], edx
mov edi, dword [esp + 0x158]
mov edx, dword [ecx + esi*4]
add edx, edi
mov dword [ecx + esi*4], edx
xor eax, eax
cmp edx, edi
mov edx, 0
setb al
add eax, dword [esp + 0x15c]
mov edi, dword [ecx + esi*4 - 4]
add edi, eax
cmp edi, eax
mov dword [ecx + esi*4 - 4], edi
setb dl
add dword [ebx + esi*4 - 8], edx
dec esi
jne 0x64adab
mov eax, dword [esp]
mov edx, dword [esp + 0x28]
dec eax
jne 0x64ad90
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov edx, dword [esp + 0x14]
add edx, dword [esp + 0xc]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x7c]
lea eax, [ecx + edx]
mov dword [esp + 8], eax
lea ecx, [ecx + edx - 1]
mov dword [esp + 0x7c], ecx
lea edx, [esp + eax*4 + 0x360]
mov dword [esp + 4], edx
cmp eax, 1
mov eax, dword [edx - 0x1c0]
mov dword [edx], eax
je 0x64afa0
mov eax, ecx
mov dword [esp + 0xc], 0
shr eax, 1
mov dword [esp + 0x2c], eax
je 0x64d384
mov eax, ecx
xor edx, edx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
lea ecx, [esp + eax*4 + 0x1a0]
mov dword [esp], ecx
lea ecx, [esp + eax*4 + 0x1e0]
mov dword [esp + 0x28], ecx
lea eax, [esp + eax*4 + 0x360]
mov dword [esp + 0x10], eax
mov dword [esp + 0xcc], esi
mov ecx, edx
mov ebx, dword [esp]
mov eax, dword [esp + 0xc]
nop
lea esi, [esi]
mov esi, dword [esp + 0x28]
inc edx
mov edi, dword [esp + 0x10]
mov dword [esp], edx
add eax, dword [ecx + esi]
mov edx, dword [ecx + ebx]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [ecx + edi], edx
mov edx, eax
setb dl
add edx, dword [ecx + esi - 4]
mov esi, dword [ecx + ebx - 4]
add esi, edx
cmp esi, edx
mov edx, dword [esp]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x2c]
jb 0x64aee0
mov dword [esp + 0xc], eax
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea eax, [edx - 1]
cmp eax, dword [esp + 0x7c]
jae 0x64af9a
shl edx, 2
mov dword [esp + 0xa4], edi
neg edx
mov edi, dword [esp + 0x7c]
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc8], ebx
lea ecx, [esp + edi*4 + 0x1e0]
add eax, dword [edx + ecx + 4]
lea ebx, [esp + edi*4 + 0x1a0]
add eax, dword [edx + ebx + 4]
lea ecx, [esp + edi*4 + 0x360]
mov dword [edx + ecx + 4], eax
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov eax, dword [edx]
jmp 0x64afa0
mov eax, dword [esp + 4]
mov eax, dword [eax]
test eax, eax
jne 0x64afc6
mov edx, dword [esp + 8]
dec edx
lea eax, [esp + edx*4 + 0x360]
cmp dword [eax], 0
je 0x64afa8
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, edx
lea edx, [eax - 1]
mov dword [esp + 0x7c], edx
mov eax, dword [esp + 0x364]
test eax, eax
jle 0x64b07b
dec dword [esp + 0x14]
add eax, eax
mov dword [esp + 0x364], eax
cmp dword [esp + 8], 2
jb 0x64b07b
mov eax, dword [esp + 8]
lea ecx, [eax - 1]
shr ecx, 1
je 0x64d37a
mov dword [esp + 0xa4], edi
xor edx, edx
mov dword [esp + 0xcc], esi
mov eax, dword [esp + edx*8 + 0x368]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x364], esi
mov esi, dword [esp + edx*8 + 0x36c]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + edx*8 + 0x368], eax
mov dword [esp + edx*8 + 0x36c], esi
inc edx
cmp edx, ecx
jb 0x64b00c
mov edi, dword [esp + 0xa4]
lea eax, [edx + edx + 1]
mov esi, dword [esp + 0xcc]
lea edx, [eax - 1]
cmp edx, dword [esp + 0x7c]
jae 0x64b07b
mov ecx, dword [esp + eax*4 + 0x364]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + eax*4 + 0x360], edx
mov dword [esp + eax*4 + 0x364], ecx
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x7c]
cmp dword [eax], 0
je 0x64b08c
mov edx, dword [esp + 8]
mov dword [esp + 0x7c], edx
cmp edx, 4
jb 0x64b140
mov eax, dword [esp + 0x374]
shr eax, 0x1f
mov edx, dword [esp + 0x370]
add edx, eax
mov dword [esp + 0x370], edx
cmp edx, eax
jae 0x64b11c
mov eax, 3
mov dword [esp + 0x360], 0
mov dword [esp + 0x7c], eax
cmp dword [esp + 0x36c], 0xffffffff
je 0x64b0e0
lea ecx, [esp + 0x36c]
mov eax, dword [ecx]
jmp 0x64b0fc
mov edx, eax
dec edx
lea ecx, [esp + edx*4 + 0x360]
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x64b0e2
mov dword [esp + 0x7c], edx
cmp dword [esp + 0x7c], 0
je 0x64b101
inc eax
mov dword [ecx], eax
jmp 0x64b149
inc dword [esp + 0x14]
lea ecx, [esp + 0x364]
mov dword [ecx], 0x80000000
mov dword [esp + 0x7c], 1
jmp 0x64b149
mov eax, 4
mov dword [esp + 0x7c], eax
test edx, edx
jne 0x64d26e
dec eax
lea ecx, [esp + eax*4 + 0x360]
cmp dword [ecx], 0
je 0x64b12d
mov dword [esp + 0x7c], eax
jmp 0x64b149
mov eax, edx
lea ecx, [esp + eax*4 + 0x360]
cmp dword [esp + 0x78], 0
je 0x64b709
mov dword [esp + 0xc8], ebx
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x7c]
lea edx, [ebx + eax]
mov dword [esp + 8], edx
lea edx, [ebx + eax - 1]
mov dword [esp + 0xc], edx
mov edx, dword [ecx]
mov eax, dword [esp + eax*4 + 0x260]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
mov ebx, dword [esp + 0xc8]
mov eax, dword [esp + 0x30]
mul dword [esp + 0x34]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x3c]
mov dword [esp + eax*4 + 0x1a0], edx
mov edx, dword [esp + 0x38]
mov dword [esp + eax*4 + 0x1a4], edx
mov eax, dword [esp + 0x78]
lea eax, [eax - 1]
mov dword [esp + 0xcc], esi
mov dword [esp + 0xc8], ebx
mov ebx, ecx
mov dword [esp + 0xa4], edi
mov ecx, eax
mov esi, dword [esp + 0xc]
mov edx, dword [ebx]
mov edi, dword [esp + ecx*4 + 0x260]
mov dword [esp + esi*4 + 0x1e0], 0
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], edi
mov eax, dword [esp + 0xb8]
mul dword [esp + 0xbc]
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], edx
mov edi, dword [esp + 0xc0]
mov edx, dword [esp + esi*4 + 0x1a0]
add edx, edi
cmp edx, edi
mov dword [esp + esi*4 + 0x1a0], edx
mov edx, 0
setb dl
dec esi
add edx, dword [esp + 0xc4]
mov dword [esp + esi*4 + 0x1a0], edx
dec ecx
jne 0x64b1d8
mov dword [esp + 0xc], esi
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x1e0], 0
dec eax
js 0x64b32e
mov eax, dword [esp + 0xc]
shr eax, 1
mov dword [esp + 0x10], eax
je 0x64d370
mov ecx, dword [esp + 0xc]
xor eax, eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
lea edx, [esp + ecx*4 + 0x19c]
mov dword [esp + 4], edx
lea edx, [esp + ecx*4 + 0x1dc]
mov dword [esp], edx
mov dword [esp + 0xa4], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0x10]
inc eax
mov dword [edx + ecx], edi
mov dword [edx + ebx], edi
mov dword [edx + ecx - 4], edi
mov dword [edx + ebx - 4], edi
add edx, 0xfffffff8
cmp eax, esi
jb 0x64b2c7
mov ebx, dword [esp + 0xc8]
lea edx, [eax + eax + 1]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea eax, [edx - 1]
cmp eax, dword [esp + 0xc]
jae 0x64b32e
shl edx, 2
xor eax, eax
mov dword [esp + 0xc8], ebx
neg edx
mov ebx, dword [esp + 0xc]
lea ecx, [esp + ebx*4 + 0x1dc]
mov dword [edx + ecx + 4], eax
lea ecx, [esp + ebx*4 + 0x19c]
mov dword [edx + ecx + 4], eax
mov ebx, dword [esp + 0xc8]
mov eax, dword [esp + 0x7c]
dec eax
je 0x64b403
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
mov dword [esp + 0xcc], esi
mov edx, dword [esp + 0x78]
mov esi, edx
test edx, edx
je 0x64b3e7
mov dword [esp], eax
lea ebx, [esp + eax*4 + 0x1e0]
lea ecx, [esp + eax*4 + 0x1a0]
mov eax, dword [esp]
mov edi, dword [esp + esi*4 + 0x260]
mov dword [esp + 0x134], edi
mov edx, dword [esp + eax*4 + 0x360]
mov dword [esp + 0x130], edx
mov eax, dword [esp + 0x130]
mul dword [esp + 0x134]
mov dword [esp + 0x138], eax
mov dword [esp + 0x13c], edx
mov edi, dword [esp + 0x138]
mov edx, dword [ecx + esi*4]
add edx, edi
mov dword [ecx + esi*4], edx
xor eax, eax
cmp edx, edi
mov edx, 0
setb al
add eax, dword [esp + 0x13c]
mov edi, dword [ecx + esi*4 - 4]
add edi, eax
cmp edi, eax
mov dword [ecx + esi*4 - 4], edi
setb dl
add dword [ebx + esi*4 - 8], edx
dec esi
jne 0x64b36d
mov eax, dword [esp]
mov edx, dword [esp + 0x78]
dec eax
jne 0x64b352
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0x60]
mov dword [esp + 0x14], eax
lea eax, [edx + ecx - 1]
mov edx, dword [esp + 8]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + edx*4 + 0x1a0]
lea ecx, [esp + edx*4 + 0x360]
mov dword [esp + 4], ecx
mov dword [ecx], eax
cmp edx, 1
je 0x64b560
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xc], 0
shr eax, 1
mov dword [esp + 0x2c], eax
je 0x64d366
mov eax, dword [esp + 0x7c]
xor edx, edx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
lea ecx, [esp + eax*4 + 0x1a0]
mov dword [esp], ecx
lea ecx, [esp + eax*4 + 0x1e0]
mov dword [esp + 0x28], ecx
lea eax, [esp + eax*4 + 0x360]
mov dword [esp + 0x10], eax
mov dword [esp + 0xcc], esi
mov ecx, edx
mov ebx, dword [esp]
mov eax, dword [esp + 0xc]
lea esi, [esi]
mov esi, dword [esp + 0x28]
inc edx
mov edi, dword [esp + 0x10]
mov dword [esp], edx
add eax, dword [ecx + esi]
mov edx, dword [ecx + ebx]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [ecx + edi], edx
mov edx, eax
setb dl
add edx, dword [ecx + esi - 4]
mov esi, dword [ecx + ebx - 4]
add esi, edx
cmp esi, edx
mov edx, dword [esp]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x2c]
jb 0x64b4a0
mov dword [esp + 0xc], eax
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea eax, [edx - 1]
cmp eax, dword [esp + 0x7c]
jae 0x64b55a
shl edx, 2
mov dword [esp + 0xa4], edi
neg edx
mov edi, dword [esp + 0x7c]
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc8], ebx
lea ecx, [esp + edi*4 + 0x1e0]
add eax, dword [edx + ecx + 4]
lea ebx, [esp + edi*4 + 0x1a0]
add eax, dword [edx + ebx + 4]
lea ecx, [esp + edi*4 + 0x360]
mov dword [edx + ecx + 4], eax
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov eax, dword [edx]
jmp 0x64b560
mov eax, dword [esp + 4]
mov eax, dword [eax]
test eax, eax
jne 0x64b586
mov edx, dword [esp + 8]
dec edx
lea eax, [esp + edx*4 + 0x360]
cmp dword [eax], 0
je 0x64b568
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, edx
lea edx, [eax - 1]
mov dword [esp + 0x7c], edx
mov eax, dword [esp + 0x364]
test eax, eax
jle 0x64b63b
dec dword [esp + 0x14]
add eax, eax
mov dword [esp + 0x364], eax
cmp dword [esp + 8], 2
jb 0x64b63b
mov eax, dword [esp + 8]
lea ecx, [eax - 1]
shr ecx, 1
je 0x64d35c
mov dword [esp + 0xa4], edi
xor edx, edx
mov dword [esp + 0xcc], esi
mov eax, dword [esp + edx*8 + 0x368]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x364], esi
mov esi, dword [esp + edx*8 + 0x36c]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + edx*8 + 0x368], eax
mov dword [esp + edx*8 + 0x36c], esi
inc edx
cmp edx, ecx
jb 0x64b5cc
mov edi, dword [esp + 0xa4]
lea eax, [edx + edx + 1]
mov esi, dword [esp + 0xcc]
lea edx, [eax - 1]
cmp edx, dword [esp + 0x7c]
jae 0x64b63b
mov ecx, dword [esp + eax*4 + 0x364]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + eax*4 + 0x360], edx
mov dword [esp + eax*4 + 0x364], ecx
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x7c]
cmp dword [eax], 0
je 0x64b64c
mov edx, dword [esp + 8]
mov dword [esp + 0x7c], edx
cmp edx, 4
jb 0x64b700
mov eax, dword [esp + 0x374]
shr eax, 0x1f
mov edx, dword [esp + 0x370]
add edx, eax
mov dword [esp + 0x370], edx
cmp edx, eax
jae 0x64b6dc
mov eax, 3
mov dword [esp + 0x360], 0
mov dword [esp + 0x7c], eax
cmp dword [esp + 0x36c], 0xffffffff
je 0x64b6a0
lea ecx, [esp + 0x36c]
mov eax, dword [ecx]
jmp 0x64b6bc
mov edx, eax
dec edx
lea ecx, [esp + edx*4 + 0x360]
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x64b6a2
mov dword [esp + 0x7c], edx
cmp dword [esp + 0x7c], 0
je 0x64b6c1
inc eax
mov dword [ecx], eax
jmp 0x64b709
inc dword [esp + 0x14]
lea ecx, [esp + 0x364]
mov dword [ecx], 0x80000000
mov dword [esp + 0x7c], 1
jmp 0x64b709
mov eax, 4
mov dword [esp + 0x7c], eax
test edx, edx
jne 0x64d262
dec eax
lea ecx, [esp + eax*4 + 0x360]
cmp dword [ecx], 0
je 0x64b6ed
mov dword [esp + 0x7c], eax
jmp 0x64b709
mov eax, edx
lea ecx, [esp + eax*4 + 0x360]
cmp dword [esp + 0xe0], 0
je 0x64bcc9
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0x7c]
lea edx, [eax + edx - 1]
mov dword [esp + 8], edx
mov edx, dword [ecx]
mov eax, dword [esp + eax*4 + 0x2a0]
mov dword [esp + 0x64], edx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x64]
mul dword [esp + 0x68]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x70]
mov dword [esp + eax*4 + 0x1a0], edx
mov edx, dword [esp + 0x6c]
mov dword [esp + eax*4 + 0x1a4], edx
mov eax, dword [esp + 0xe0]
dec eax
je 0x64b81a
mov dword [esp + 0xcc], esi
mov dword [esp + 0xc8], ebx
mov ebx, ecx
mov dword [esp + 0xa4], edi
mov ecx, eax
mov esi, dword [esp + 8]
mov edx, dword [ebx]
mov edi, dword [esp + ecx*4 + 0x2a0]
mov dword [esp + esi*4 + 0x1e0], 0
mov dword [esp + 0xf4], edx
mov dword [esp + 0xf8], edi
mov eax, dword [esp + 0xf4]
mul dword [esp + 0xf8]
mov dword [esp + 0xfc], eax
mov dword [esp + 0x100], edx
mov edi, dword [esp + 0xfc]
mov edx, dword [esp + esi*4 + 0x1a0]
add edx, edi
cmp edx, edi
mov dword [esp + esi*4 + 0x1a0], edx
mov edx, 0
setb dl
dec esi
add edx, dword [esp + 0x100]
mov dword [esp + esi*4 + 0x1a0], edx
dec ecx
jne 0x64b790
mov dword [esp + 8], esi
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 8]
mov dword [esp + eax*4 + 0x1e0], 0
dec eax
js 0x64b8e6
mov eax, dword [esp + 8]
shr eax, 1
mov dword [esp + 0xc], eax
je 0x64d352
mov ecx, dword [esp + 8]
xor eax, eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
lea edx, [esp + ecx*4 + 0x19c]
mov dword [esp + 4], edx
lea edx, [esp + ecx*4 + 0x1dc]
mov dword [esp], edx
mov dword [esp + 0xa4], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0xc]
inc eax
mov dword [edx + ecx], edi
mov dword [edx + ebx], edi
mov dword [edx + ecx - 4], edi
mov dword [edx + ebx - 4], edi
add edx, 0xfffffff8
cmp eax, esi
jb 0x64b87f
mov ebx, dword [esp + 0xc8]
lea edx, [eax + eax + 1]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea eax, [edx - 1]
cmp eax, dword [esp + 8]
jae 0x64b8e6
shl edx, 2
xor eax, eax
mov dword [esp + 0xc8], ebx
neg edx
mov ebx, dword [esp + 8]
lea ecx, [esp + ebx*4 + 0x1dc]
mov dword [edx + ecx + 4], eax
lea ecx, [esp + ebx*4 + 0x19c]
mov dword [edx + ecx + 4], eax
mov ebx, dword [esp + 0xc8]
mov eax, dword [esp + 0x7c]
dec eax
je 0x64b9c1
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
mov dword [esp + 0xcc], esi
mov edx, dword [esp + 0xe0]
mov esi, edx
test edx, edx
je 0x64b9a5
mov dword [esp], eax
lea ebx, [esp + eax*4 + 0x1e0]
lea ecx, [esp + eax*4 + 0x1a0]
mov eax, dword [esp]
mov edi, dword [esp + esi*4 + 0x2a0]
mov dword [esp + 0x178], edi
mov edx, dword [esp + eax*4 + 0x360]
mov dword [esp + 0x174], edx
mov eax, dword [esp + 0x174]
mul dword [esp + 0x178]
mov dword [esp + 0x17c], eax
mov dword [esp + 0x180], edx
mov edi, dword [esp + 0x17c]
mov edx, dword [ecx + esi*4]
add edx, edi
mov dword [ecx + esi*4], edx
xor eax, eax
cmp edx, edi
mov edx, 0
setb al
add eax, dword [esp + 0x180]
mov edi, dword [ecx + esi*4 - 4]
add edi, eax
cmp edi, eax
mov dword [ecx + esi*4 - 4], edi
setb dl
add dword [ebx + esi*4 - 8], edx
dec esi
jne 0x64b928
mov eax, dword [esp]
mov edx, dword [esp + 0xe0]
dec eax
jne 0x64b90d
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov edx, dword [esp + 0x14]
add edx, dword [esp + 0x74]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0xe0]
mov ecx, dword [esp + 0x7c]
lea eax, [ecx + edx]
mov dword [esp + 8], eax
lea ecx, [ecx + edx - 1]
mov dword [esp + 0x7c], ecx
lea edx, [esp + eax*4 + 0x360]
mov dword [esp + 4], edx
cmp eax, 1
mov eax, dword [edx - 0x1c0]
mov dword [edx], eax
je 0x64bb20
mov eax, ecx
mov dword [esp + 0xc], 0
shr eax, 1
mov dword [esp + 0x2c], eax
je 0x64d348
mov eax, ecx
xor edx, edx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
lea ecx, [esp + eax*4 + 0x360]
mov dword [esp + 0x28], ecx
lea ecx, [esp + eax*4 + 0x1a0]
mov dword [esp], ecx
lea eax, [esp + eax*4 + 0x1e0]
mov dword [esp + 0x10], eax
mov dword [esp + 0xcc], esi
mov ecx, edx
mov ebx, dword [esp]
mov eax, dword [esp + 0xc]
nop
lea esi, [esi]
mov esi, dword [esp + 0x10]
inc edx
mov edi, dword [esp + 0x28]
mov dword [esp], edx
add eax, dword [ecx + esi]
mov edx, dword [ecx + ebx]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [ecx + edi], edx
mov edx, eax
setb dl
add edx, dword [ecx + esi - 4]
mov esi, dword [ecx + ebx - 4]
add esi, edx
cmp esi, edx
mov edx, dword [esp]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x2c]
jb 0x64ba60
mov dword [esp + 0xc], eax
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea eax, [edx - 1]
cmp eax, dword [esp + 0x7c]
jae 0x64bb1a
shl edx, 2
mov dword [esp + 0xa4], edi
neg edx
mov edi, dword [esp + 0x7c]
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc8], ebx
lea ecx, [esp + edi*4 + 0x1e0]
add eax, dword [edx + ecx + 4]
lea ebx, [esp + edi*4 + 0x1a0]
add eax, dword [edx + ebx + 4]
lea ecx, [esp + edi*4 + 0x360]
mov dword [edx + ecx + 4], eax
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov eax, dword [edx]
jmp 0x64bb20
mov eax, dword [esp + 4]
mov eax, dword [eax]
test eax, eax
jne 0x64bb46
mov edx, dword [esp + 8]
dec edx
lea eax, [esp + edx*4 + 0x360]
cmp dword [eax], 0
je 0x64bb28
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, edx
lea edx, [eax - 1]
mov dword [esp + 0x7c], edx
mov eax, dword [esp + 0x364]
test eax, eax
jle 0x64bbfb
dec dword [esp + 0x14]
add eax, eax
mov dword [esp + 0x364], eax
cmp dword [esp + 8], 2
jb 0x64bbfb
mov eax, dword [esp + 8]
lea ecx, [eax - 1]
shr ecx, 1
je 0x64d33e
mov dword [esp + 0xa4], edi
xor edx, edx
mov dword [esp + 0xcc], esi
mov eax, dword [esp + edx*8 + 0x368]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x364], esi
mov esi, dword [esp + edx*8 + 0x36c]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + edx*8 + 0x368], eax
mov dword [esp + edx*8 + 0x36c], esi
inc edx
cmp edx, ecx
jb 0x64bb8c
mov edi, dword [esp + 0xa4]
lea eax, [edx + edx + 1]
mov esi, dword [esp + 0xcc]
lea edx, [eax - 1]
cmp edx, dword [esp + 0x7c]
jae 0x64bbfb
mov ecx, dword [esp + eax*4 + 0x364]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + eax*4 + 0x360], edx
mov dword [esp + eax*4 + 0x364], ecx
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x7c]
cmp dword [eax], 0
je 0x64bc0c
mov edx, dword [esp + 8]
mov dword [esp + 0x7c], edx
cmp edx, 4
jb 0x64bcc0
mov eax, dword [esp + 0x374]
shr eax, 0x1f
mov edx, dword [esp + 0x370]
add edx, eax
mov dword [esp + 0x370], edx
cmp edx, eax
jae 0x64bc9c
mov eax, 3
mov dword [esp + 0x360], 0
mov dword [esp + 0x7c], eax
cmp dword [esp + 0x36c], 0xffffffff
je 0x64bc60
lea ecx, [esp + 0x36c]
mov eax, dword [ecx]
jmp 0x64bc7c
mov edx, eax
dec edx
lea ecx, [esp + edx*4 + 0x360]
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x64bc62
mov dword [esp + 0x7c], edx
cmp dword [esp + 0x7c], 0
je 0x64bc81
inc eax
mov dword [ecx], eax
jmp 0x64bcc9
inc dword [esp + 0x14]
lea ecx, [esp + 0x364]
mov dword [ecx], 0x80000000
mov dword [esp + 0x7c], 1
jmp 0x64bcc9
mov eax, 4
mov dword [esp + 0x7c], eax
test edx, edx
jne 0x64d27a
dec eax
lea ecx, [esp + eax*4 + 0x360]
cmp dword [ecx], 0
je 0x64bcad
mov dword [esp + 0x7c], eax
jmp 0x64bcc9
mov eax, edx
lea ecx, [esp + eax*4 + 0x360]
mov eax, dword [ecx]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x104]
lea edx, [ecx + eax]
mov dword [esp + 8], edx
lea edx, [ecx + eax - 1]
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x90]
mov eax, dword [ecx]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x80]
mul dword [esp + 0x84]
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x88]
mov dword [esp + ecx*4 + 0x1a0], eax
mov dword [esp + ecx*4 + 0x1a4], edx
mov ecx, dword [esp + 0x7c]
dec ecx
je 0x64bdea
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
mov dword [esp + 0xa4], edi
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x90]
mov eax, dword [esi]
mov edx, dword [esp + ecx*4 + 0x360]
mov dword [esp + ebx*4 + 0x1e0], 0
mov dword [esp + 0x10c], eax
mov dword [esp + 0x110], edx
mov eax, dword [esp + 0x10c]
mul dword [esp + 0x110]
mov dword [esp + 0x114], eax
mov dword [esp + 0x118], edx
mov edi, dword [esp + 0x114]
xor edx, edx
mov eax, dword [esp + ebx*4 + 0x1a0]
add eax, edi
cmp eax, edi
mov dword [esp + ebx*4 + 0x1a0], eax
setb dl
dec ebx
add edx, dword [esp + 0x118]
mov dword [esp + ebx*4 + 0x1a0], edx
dec ecx
jne 0x64bd63
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x1e0], 0
dec eax
js 0x64beb6
mov eax, dword [esp + 0xc]
shr eax, 1
mov dword [esp + 0x10], eax
je 0x64d334
mov ecx, dword [esp + 0xc]
xor eax, eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
lea edx, [esp + ecx*4 + 0x19c]
mov dword [esp + 4], edx
lea edx, [esp + ecx*4 + 0x1dc]
mov dword [esp], edx
mov dword [esp + 0xa4], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0x10]
inc eax
mov dword [edx + ecx], edi
mov dword [edx + ebx], edi
mov dword [edx + ecx - 4], edi
mov dword [edx + ebx - 4], edi
add edx, 0xfffffff8
cmp eax, esi
jb 0x64be4f
mov ebx, dword [esp + 0xc8]
lea edx, [eax + eax + 1]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea eax, [edx - 1]
cmp eax, dword [esp + 0xc]
jae 0x64beb6
shl edx, 2
xor eax, eax
mov dword [esp + 0xc8], ebx
neg edx
mov ebx, dword [esp + 0xc]
lea ecx, [esp + ebx*4 + 0x1dc]
mov dword [edx + ecx + 4], eax
lea ecx, [esp + ebx*4 + 0x19c]
mov dword [edx + ecx + 4], eax
mov ebx, dword [esp + 0xc8]
mov eax, dword [esp + 0x104]
dec eax
je 0x64bf8e
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
mov dword [esp + 0xcc], esi
mov edx, dword [esp + 0x7c]
mov esi, edx
test edx, edx
je 0x64bf72
mov dword [esp], eax
lea ebx, [esp + eax*4 + 0x1e0]
lea ecx, [esp + eax*4 + 0x1a0]
mov eax, dword [esp]
mov edi, dword [esp + esi*4 + 0x360]
mov dword [esp + 0x194], edi
mov edx, dword [esp + eax*4 + 0x320]
mov dword [esp + 0x190], edx
mov eax, dword [esp + 0x190]
mul dword [esp + 0x194]
mov dword [esp + 0x198], eax
mov dword [esp + 0x19c], edx
mov edi, dword [esp + 0x198]
mov edx, dword [ecx + esi*4]
add edx, edi
mov dword [ecx + esi*4], edx
xor eax, eax
cmp edx, edi
mov edx, 0
setb al
add eax, dword [esp + 0x19c]
mov edi, dword [ecx + esi*4 - 4]
add edi, eax
cmp edi, eax
mov dword [ecx + esi*4 - 4], edi
setb dl
add dword [ebx + esi*4 - 8], edx
dec esi
jne 0x64bef8
mov eax, dword [esp]
mov edx, dword [esp + 0x7c]
dec eax
jne 0x64bedd
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x108]
add eax, dword [esp + 0x14]
mov dword [esp + 0x108], eax
lea eax, [edx + ecx - 1]
mov edx, dword [esp + 8]
mov dword [esp + 0x104], eax
mov eax, dword [esp + edx*4 + 0x1a0]
lea ecx, [esp + edx*4 + 0x320]
mov dword [esp + 4], ecx
mov dword [ecx], eax
cmp edx, 1
je 0x64c106
mov eax, dword [esp + 0x104]
mov dword [esp + 0xc], 0
shr eax, 1
mov dword [esp + 0x28], eax
je 0x64d32a
mov eax, dword [esp + 0x104]
xor edx, edx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
lea ecx, [esp + eax*4 + 0x320]
mov dword [esp + 0x14], ecx
lea ecx, [esp + eax*4 + 0x1a0]
mov dword [esp], ecx
lea eax, [esp + eax*4 + 0x1e0]
mov dword [esp + 0x10], eax
mov dword [esp + 0xcc], esi
mov ecx, edx
mov ebx, dword [esp]
mov eax, dword [esp + 0xc]
lea esi, [esi]
mov esi, dword [esp + 0x10]
inc edx
mov edi, dword [esp + 0x14]
mov dword [esp], edx
add eax, dword [ecx + esi]
mov edx, dword [ecx + ebx]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [ecx + edi], edx
mov edx, eax
setb dl
add edx, dword [ecx + esi - 4]
mov esi, dword [ecx + ebx - 4]
add esi, edx
cmp esi, edx
mov edx, dword [esp]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x28]
jb 0x64c040
mov dword [esp + 0xc], eax
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea eax, [edx - 1]
cmp eax, dword [esp + 0x104]
jae 0x64c100
shl edx, 2
mov dword [esp + 0xa4], edi
neg edx
mov edi, dword [esp + 0x104]
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc8], ebx
lea ecx, [esp + edi*4 + 0x1e0]
add eax, dword [edx + ecx + 4]
lea ebx, [esp + edi*4 + 0x1a0]
add eax, dword [edx + ebx + 4]
lea ecx, [esp + edi*4 + 0x320]
mov dword [edx + ecx + 4], eax
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov eax, dword [edx]
jmp 0x64c106
mov eax, dword [esp + 4]
mov eax, dword [eax]
test eax, eax
jne 0x64c130
mov ecx, dword [esp + 8]
dec ecx
lea edx, [esp + ecx*4 + 0x320]
mov eax, dword [edx]
test eax, eax
je 0x64c10e
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov edx, ecx
lea ecx, [edx - 1]
mov dword [esp + 0x104], ecx
mov edx, dword [esp + 0x324]
test edx, edx
jle 0x64c1f9
dec dword [esp + 0x108]
add edx, edx
mov dword [esp + 0x324], edx
cmp dword [esp + 8], 2
jb 0x64c1f3
mov eax, dword [esp + 8]
lea ecx, [eax - 1]
shr ecx, 1
je 0x64d286
mov dword [esp + 0xa4], edi
xor edx, edx
mov dword [esp + 0xcc], esi
mov eax, dword [esp + edx*8 + 0x328]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x324], esi
mov esi, dword [esp + edx*8 + 0x32c]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + edx*8 + 0x328], eax
mov dword [esp + edx*8 + 0x32c], esi
inc edx
cmp edx, ecx
jb 0x64c179
mov edi, dword [esp + 0xa4]
lea eax, [edx + edx + 1]
mov esi, dword [esp + 0xcc]
lea edx, [eax - 1]
cmp edx, dword [esp + 0x104]
jae 0x64c1f3
mov ecx, dword [esp + eax*4 + 0x324]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + eax*4 + 0x320], edx
mov dword [esp + eax*4 + 0x324], ecx
mov eax, dword [esp + 4]
mov eax, dword [eax]
jmp 0x64c1f9
mov eax, dword [esp + 4]
mov eax, dword [eax]
test eax, eax
mov eax, dword [esp + 0x104]
je 0x64c208
mov eax, dword [esp + 8]
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0x188]
mov ecx, eax
shr ecx, 0x16
and eax, 0x80000000
and ecx, 7
or eax, ecx
jne 0x64c22c
mov ecx, 6
mov eax, ecx
and eax, 2
test cl, 4
je 0x64c24a
test eax, eax
mov eax, 0xaaaa
jne 0x64c244
mov eax, 0xfa
mov dword [esp + 8], eax
jmp 0x64c26b
test eax, eax
je 0x64c258
mov dword [esp + 8], 0xfa00
jmp 0x64c26b
mov eax, 0xa8a8
test cl, 1
je 0x64c267
mov eax, 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x108]
lea edx, [eax + 0x406e]
mov dword [esp + 0x78], edx
cmp edx, 0x71
jle 0x64c28b
mov dword [esp + 0x78], 0x71
jmp 0x64c296
cmp dword [esp + 0x78], 0
js 0x649942
mov eax, dword [esp + 0x78]
mov edx, eax
and eax, 0x1f
mov dword [esp + 0x78], eax
mov eax, 0
setne al
sar edx, 5
mov dword [esp + 0x74], edx
mov dword [esp + 4], eax
add edx, eax
mov dword [esp + 0x60], edx
cmp edx, dword [esp + 0x104]
jbe 0x64c2de
add ecx, 0xfffffffe
test ecx, 0xfffffffd
je 0x64c2de
mov eax, ebx
and eax, 8
mov dword [esp + 0x28], eax
jmp 0x64c58a
mov eax, dword [esp + 0x104]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + edx*4 + 0x320]
mov dword [esp + 0x104], edx
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x78], 0
je 0x64c3ff
mov edx, dword [esp + 0x78]
neg edx
mov eax, ecx
mov dword [esp + 0xc8], ebx
mov ebx, eax
lea ecx, [edx + 0x1f]
add edx, 0x20
shr ebx, cl
and ebx, 1
mov dword [esp], ecx
mov ecx, edx
mov dword [esp + 0xc], ebx
mov ebx, 1
shl ebx, cl
mov edx, 1
mov dword [esp + 0x2c], ebx
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp]
and ebx, 1
shl edx, cl
dec edx
and edx, eax
mov eax, dword [esp + 0x28]
or dword [esp + 0x160], edx
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0xc8]
cmp eax, dword [esp + 0x60]
jbe 0x64c4da
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x74]
lea edx, [edx + eax + 1]
cmp edx, dword [esp + 0x28]
ja 0x64c4da
mov eax, dword [esp + 0x28]
sub eax, edx
inc eax
mov dword [esp + 0x28], eax
shr eax, 1
mov dword [esp + 4], eax
je 0x64d290
mov dword [esp], edx
lea ecx, [esp + edx*4 + 0x320]
xor eax, eax
mov dword [esp + 0xcc], esi
mov edx, dword [esp + 0x160]
mov esi, dword [esp + 4]
or edx, dword [ecx + eax*8]
or edx, dword [ecx + eax*8 + 4]
inc eax
cmp eax, esi
jb 0x64c3b5
mov dword [esp + 0x160], edx
lea ecx, [eax + eax + 1]
mov edx, dword [esp]
mov esi, dword [esp + 0xcc]
lea eax, [ecx - 1]
cmp eax, dword [esp + 0x28]
jae 0x64c4da
add edx, ecx
mov eax, dword [esp + 0x160]
or eax, dword [esp + edx*4 + 0x31c]
mov dword [esp + 0x160], eax
jmp 0x64c4da
mov edx, ecx
mov ecx, dword [esp + 0x60]
and edx, 1
mov dword [esp + 0x10], edx
mov edx, dword [esp + ecx*4 + 0x324]
mov eax, edx
shr eax, 0x1f
add edx, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x74]
or dword [esp + 0x160], edx
lea eax, [ecx + eax + 1]
cmp eax, dword [esp + 0x28]
jae 0x64c4d2
mov edx, dword [esp + 4]
mov eax, ecx
lea edx, [eax + edx + 2]
add eax, 2
cmp eax, dword [esp + 0x28]
ja 0x64c4d2
mov eax, dword [esp + 0x28]
sub eax, edx
inc eax
mov dword [esp + 0x28], eax
shr eax, 1
mov dword [esp + 4], eax
je 0x64d29a
mov dword [esp], edx
lea ecx, [esp + edx*4 + 0x320]
xor eax, eax
mov dword [esp + 0xcc], esi
mov edx, dword [esp + 0x160]
mov esi, dword [esp + 4]
or edx, dword [ecx + eax*8]
or edx, dword [ecx + eax*8 + 4]
inc eax
cmp eax, esi
jb 0x64c487
mov dword [esp + 0x160], edx
lea ecx, [eax + eax + 1]
mov edx, dword [esp]
mov esi, dword [esp + 0xcc]
mov dword [esp + 0x2c], 1
lea eax, [ecx - 1]
cmp eax, dword [esp + 0x28]
jae 0x64c4da
add edx, ecx
mov eax, dword [esp + 0x160]
or eax, dword [esp + edx*4 + 0x31c]
mov dword [esp + 0x160], eax
jmp 0x64c4da
mov dword [esp + 0x2c], 1
mov ecx, dword [esp + 0xc]
xor eax, eax
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x160], 0
setne al
lea edx, [ecx + edx*2]
mov ecx, ebx
and ecx, 8
mov dword [esp + 0x28], ecx
lea ecx, [ecx + eax*4]
add ecx, edx
mov edx, dword [esp + 8]
shr edx, cl
test dl, 1
je 0x64c58a
cmp dword [esp + 0x60], 0
je 0x64c563
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
add eax, edx
mov dword [esp + 0x14], eax
cmp eax, edx
jae 0x64d2d3
mov edx, dword [esp + 0x60]
mov dword [esp + edx*4 + 0x320], eax
mov dword [esp + 0x320], 0
mov edx, dword [esp + 0x104]
dec edx
mov eax, dword [esp + edx*4 + 0x320]
cmp eax, 0xffffffff
je 0x64c545
mov dword [esp + 0x104], edx
cmp dword [esp + 0x104], 0
jne 0x64c582
inc dword [esp + 0x108]
mov dword [esp + 0x324], 0x80000000
mov dword [esp + 0x104], 1
jmp 0x64c58a
inc eax
mov dword [esp + edx*4 + 0x320], eax
cmp dword [esp + 0x108], 0x4000
jle 0x64c6d5
mov eax, dword [esp + 0x188]
and eax, 0x1c00000
cmp eax, 0x400000
je 0x64c696
cmp eax, 0x1000000
jne 0x64c5f7
cmp dword [esp + 0x28], 0
je 0x64c63c
mov eax, dword [0x74d0f0]
mov dword [esp + 0x3a0], eax
mov edx, dword [0x74d0f4]
mov ecx, dword [0x74d0f8]
mov eax, dword [0x74d0fc]
mov dword [esp + 0x3a4], edx
mov dword [esp + 0x3a8], ecx
mov dword [esp + 0x3ac], eax
jmp 0x64cae2
cmp eax, 0x800000
jne 0x64c63c
cmp dword [esp + 0x28], 0
jne 0x64c63c
mov eax, dword [0x74d0e0]
mov dword [esp + 0x3a0], eax
mov edx, dword [0x74d0e4]
mov ecx, dword [0x74d0e8]
mov eax, dword [0x74d0ec]
mov dword [esp + 0x3a4], edx
mov dword [esp + 0x3a8], ecx
mov dword [esp + 0x3ac], eax
jmp 0x64cae2
cmp dword [esp + 0x28], 0
je 0x64c64a
mov eax, 0x74d070
jmp 0x64c64f
mov eax, 0x74d060
mov edx, dword [eax]
mov dword [esp + 0x3a0], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x3a8], edx
mov edx, ebx
or edx, 0x8000000
test dword [esp + 0x188], 0x2000
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x3a4], ecx
mov dword [esp + 0x3ac], eax
je 0x64cae2
mov ebx, edx
jmp 0x64cae2
cmp dword [esp + 0x28], 0
je 0x64c6a4
mov eax, 0x74d0f0
jmp 0x64c6a9
mov eax, 0x74d0e0
mov edx, dword [eax]
mov dword [esp + 0x3a0], edx
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x3a4], ecx
mov dword [esp + 0x3a8], edx
mov dword [esp + 0x3ac], eax
jmp 0x64cae2
cmp dword [esp + 0x108], 0xffffc002
jg 0x64c7f4
cmp dword [esp + 0x108], 0xffffbf93
jl 0x64c704
test dword [esp + 0x188], 0x10000000
je 0x64c7f4
mov eax, dword [esp + 0x188]
and eax, 0x1c00000
cmp eax, 0x1000000
jne 0x64c755
cmp dword [esp + 0x28], 0
jne 0x64c79a
mov eax, dword [0x74d080]
mov dword [esp + 0x3a0], eax
mov edx, dword [0x74d084]
mov ecx, dword [0x74d088]
mov eax, dword [0x74d08c]
mov dword [esp + 0x3a4], edx
mov dword [esp + 0x3a8], ecx
mov dword [esp + 0x3ac], eax
jmp 0x64cae2
cmp eax, 0x800000
jne 0x64c79a
cmp dword [esp + 0x28], 0
je 0x64c79a
mov eax, dword [0x74d090]
mov dword [esp + 0x3a0], eax
mov edx, dword [0x74d094]
mov ecx, dword [0x74d098]
mov eax, dword [0x74d09c]
mov dword [esp + 0x3a4], edx
mov dword [esp + 0x3a8], ecx
mov dword [esp + 0x3ac], eax
jmp 0x64cae2
cmp dword [esp + 0x28], 0
je 0x64c7a8
mov eax, 0x74d030
jmp 0x64c7ad
mov eax, 0x74d020
mov edx, dword [eax]
mov dword [esp + 0x3a0], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x3a8], edx
mov edx, ebx
or edx, 0x9000000
test dword [esp + 0x188], 0x4000
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x3a4], ecx
mov dword [esp + 0x3ac], eax
je 0x64cae2
mov ebx, edx
jmp 0x64cae2
mov eax, dword [esp + 0x324]
mov dword [esp + 8], eax
cmp dword [esp + 0x104], 2
jae 0x64c813
mov dword [esp + 0x10], 0
jmp 0x64c81e
mov eax, dword [esp + 0x328]
mov dword [esp + 0x10], eax
cmp dword [esp + 0x104], 3
jae 0x64c832
mov dword [esp + 0xc], 0
jmp 0x64c83d
mov eax, dword [esp + 0x32c]
mov dword [esp + 0xc], eax
cmp dword [esp + 0x104], 4
jae 0x64c851
mov dword [esp + 0x14], 0
jmp 0x64c85c
mov eax, dword [esp + 0x330]
mov dword [esp + 0x14], eax
cmp dword [esp + 0x108], 0xffffc002
jle 0x64c8d5
mov edx, dword [esp + 0xc]
mov dword [esp + 0xc8], ebx
mov ebx, edx
mov eax, dword [esp + 0x14]
shr eax, 0xf
shl ebx, 0x11
or eax, ebx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
mov ebx, eax
shr edx, 0xf
shl ebx, 0x11
mov ecx, dword [esp + 0x108]
or edx, ebx
mov ebx, dword [esp + 8]
shl ecx, 0x10
mov dword [esp + 0xc], edx
mov edx, ebx
shr ebx, 0xf
add ecx, 0x3ffe0000
and ebx, 0xfffeffff
shr eax, 0xf
or ebx, ecx
shl edx, 0x11
mov dword [esp + 8], ebx
or eax, edx
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0xc8]
jmp 0x64caa5
mov eax, dword [esp + 0x108]
neg eax
mov dword [esp + 0x108], eax
lea edx, [eax - 0x3fee]
mov dword [esp + 4], edx
cmp edx, 0x20
jl 0x64ca2c
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x108]
mov edx, dword [esp + 0x10]
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 8]
lea edx, [eax - 0x400e]
mov dword [esp + 0x10], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], 0
cmp edx, 0x20
jl 0x64ca2c
mov edx, ecx
mov ecx, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [ecx - 0x402e]
mov dword [esp + 0xc], edx
mov dword [esp + 4], eax
mov dword [esp + 0x10], 0
cmp eax, 0x20
jl 0x64d2c6
mov eax, edx
mov edx, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0
lea ecx, [edx - 0x404e]
mov dword [esp + 4], ecx
cmp ecx, 0x20
jl 0x64d2b7
mov eax, edx
mov dword [esp + 0x14], 0
lea edx, [eax - 0x406e]
mov dword [esp + 4], edx
cmp edx, 0x20
jl 0x64d2a4
mov dword [esp + 0x14], 0
lea edx, [eax - 0x408e]
mov dword [esp + 4], edx
cmp edx, 0x20
jl 0x64d2a4
mov dword [esp + 0x14], 0
lea edx, [eax - 0x40ae]
mov dword [esp + 4], edx
cmp edx, 0x20
jl 0x64d2a4
mov dword [esp + 0x14], 0
lea edx, [eax - 0x40ce]
mov dword [esp + 4], edx
cmp edx, 0x20
jl 0x64d2a4
lea edx, [eax - 0x40ee]
mov dword [esp + 4], edx
cmp edx, 0x20
jl 0x64ca1a
lea edx, [eax - 0x410e]
mov dword [esp + 4], edx
cmp edx, 0x20
jl 0x64ca1a
mov eax, edx
add eax, 0xffffffe0
cmp eax, 0x20
jge 0x64ca0e
mov dword [esp + 4], eax
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], eax
mov dword [esp + 8], eax
cmp dword [esp + 4], 0
je 0x64caa5
mov dword [esp + 0xc8], ebx
mov ebx, dword [esp + 4]
mov ecx, ebx
mov dword [esp + 0xa4], edi
mov edi, ebx
neg edi
mov dword [esp], edi
mov edx, dword [esp + 0xc]
mov eax, edx
mov edi, dword [esp + 0x14]
shr edi, cl
mov ecx, dword [esp]
shl eax, cl
mov ecx, ebx
or edi, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], edi
mov edi, eax
shr edx, cl
mov ecx, dword [esp]
shl edi, cl
mov ecx, ebx
or edx, edi
mov edi, dword [esp + 8]
mov dword [esp + 0xc], edx
mov edx, edi
shr eax, cl
mov ecx, dword [esp]
shl edx, cl
mov ecx, ebx
shr edi, cl
or eax, edx
mov dword [esp + 8], edi
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x3a0], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x3a4], edx
mov edx, eax
or edx, 0x80000000
cmp dword [esp + 0x28], 0
mov ecx, dword [esp + 0x10]
jne 0x64cad4
mov edx, eax
mov dword [esp + 0x3a8], ecx
mov dword [esp + 0x3ac], edx
cmp dword [esp + 0x184], 0
je 0x64cb0d
test dword [esp + 0x188], 0x40000
je 0x64cb04
mov eax, dword [esp + 0x184]
mov dword [eax], esi
jmp 0x64cb0d
mov eax, dword [esp + 0x184]
mov dword [eax], edi
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x64cb19
shr ebx, 0x18
mov dword [eax], ebx
mov esi, dword [esp + 0x18c]
mov eax, dword [esp + 0x3a0]
mov edx, dword [esp + 0x3a4]
mov ecx, dword [esp + 0x3a8]
mov ebx, dword [esp + 0x3ac]
mov dword [esi], eax
mov dword [esi + 4], edx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
mov ecx, dword [esp + 0x3b0]
mov dword [esp + 0x3b0], 0
xor ecx, esp
cmp ecx, dword [0x7adbc0]
jne 0x64d0f0
mov eax, esi
add esp, 0x3b4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
mov dword [esp + ecx*4 + 0x2e4], eax
lea eax, [ecx + 1]
mov dword [esp + 0x104], eax
cmp eax, 2
mov eax, dword [esp + 0x2e4]
mov dword [esp + 0x1a4], eax
mov eax, dword [0x74d124]
jb 0x64d4f0
mov ecx, 2
je 0x64cbd7
mov dword [esp + 0xa4], edi
mov dword [esp + 0xc8], ebx
mov ebx, eax
mov dword [esp + 0xcc], esi
xor eax, eax
mov edi, dword [esp + 0x104]
jmp 0x64cbfc
mov dword [esp + 0xa4], edi
xor eax, eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
mov edi, dword [esp + 0x104]
mov ebx, dword [edx*4 + 0x74d100]
mov dword [esp + 0x94], edx
mov edx, dword [esp + 0x1a4]
cmp ecx, 1
jle 0x64d813
mov dword [esp + 0x1a4], 0
mov esi, 1
mov dword [esp + 0x104], edi
mov dword [esp + 0x144], edx
mov dword [esp + 0x140], ebx
mov eax, dword [esp + 0x140]
mul dword [esp + 0x144]
mov dword [esp + 0x148], eax
mov dword [esp + 0x14c], edx
mov edi, dword [esp + 0x148]
mov eax, dword [esp + esi*4 + 0x1a0]
add eax, edi
cmp eax, edi
mov dword [esp + esi*4 + 0x1a0], eax
mov eax, 0
setb al
add eax, dword [esp + 0x14c]
mov edx, dword [esp + esi*4 + 0x1a4]
mov dword [esp + esi*4 + 0x1a4], eax
inc esi
cmp esi, ecx
jl 0x64cc2a
mov edi, dword [esp + 0x104]
xor eax, eax
mov esi, dword [esp + 0x1a4]
mov edx, dword [esp + ecx*4 + 0x2e0]
add esi, edx
mov dword [esp + 0x1a4], esi
cmp esi, edx
jae 0x64ccf9
mov dword [esp + ecx*4 + 0x1a4], 0
mov edx, 2
cmp dword [esp + 0x1a8], 0xffffffff
je 0x64ccd8
lea edx, [esp + 0x1a8]
mov esi, dword [edx]
jmp 0x64ccf6
mov dword [esp + edx*4 + 0x1a0], 0
inc edx
lea eax, [esp + edx*4 + 0x1a0]
mov esi, dword [eax]
cmp esi, 0xffffffff
je 0x64ccd8
mov edx, eax
xor eax, eax
inc esi
mov dword [edx], esi
inc ecx
cmp ecx, edi
ja 0x64d4d4
jne 0x64cc03
lea esi, [esi]
mov edx, dword [esp + 0x94]
jmp 0x64cbf5
xor edx, edx
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x90], edx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x160], edx
jmp 0x649570
call fcn.00693023
mov dword [esp + 0xa4], esi
mov edx, dword [esp]
jmp 0x64947d
mov edx, dword [esp + 0x94]
jmp 0x649570
mov dword [esp], 1
jmp 0x649823
mov eax, dword [esp + 0x104]
shr eax, 1
mov dword [esp + 4], eax
je 0x64d20b
mov ecx, dword [esp + 0x104]
xor edx, edx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
lea eax, [esp + ecx*4 + 0x320]
mov dword [esp], eax
lea eax, [esp + ecx*4 + 0x2e0]
mov dword [esp + 0xa4], edi
mov ebx, edx
mov esi, dword [esp]
mov ecx, dword [esp + 4]
mov edi, dword [ebx + eax]
inc edx
mov dword [ebx + esi], edi
mov edi, dword [ebx + eax - 4]
mov dword [ebx + esi - 4], edi
add ebx, 0xfffffff8
cmp edx, ecx
jb 0x64d19d
mov ebx, dword [esp + 0xc8]
lea eax, [edx + edx + 1]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov dword [esp], eax
mov eax, dword [esp]
lea edx, [eax - 1]
cmp edx, dword [esp + 0x104]
jae 0x6498f8
mov ecx, eax
shl ecx, 2
mov edx, dword [esp + 0x104]
neg ecx
lea eax, [esp + edx*4 + 0x2e0]
mov eax, dword [ecx + eax + 4]
lea edx, [esp + edx*4 + 0x320]
mov dword [ecx + edx + 4], eax
jmp 0x6498f8
mov dword [esp], 1
jmp 0x64d1cf
lea eax, [esp + 0x330]
mov dword [eax - 0x2a0], eax
jmp 0x649b6f
mov ecx, 1
jmp 0x64a1a6
mov eax, 1
jmp 0x64a0c5
mov edx, 1
jmp 0x649ee4
mov eax, 1
jmp 0x64a820
mov edi, 1
jmp 0x64a739
mov edx, 1
jmp 0x64a550
lea ecx, [esp + 0x370]
jmp 0x64b709
lea ecx, [esp + 0x370]
jmp 0x64b149
lea ecx, [esp + 0x370]
jmp 0x64bcc9
mov eax, 1
jmp 0x64c1c3
mov ecx, 1
jmp 0x64c3d6
mov ecx, 1
jmp 0x64c4a8
xor eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], eax
mov dword [esp + 8], eax
jmp 0x64ca2c
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 8], eax
jmp 0x64ca2c
mov dword [esp + 8], 0
jmp 0x64ca2c
cmp dword [esp + 0x78], 0
je 0x64d2f6
mov ecx, dword [esp + 0x60]
mov eax, edx
dec eax
not eax
mov edx, dword [esp + 0x14]
and edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + ecx*4 + 0x320], edx
jmp 0x64d301
mov edx, dword [esp + 0x60]
mov dword [esp + edx*4 + 0x320], eax
cmp dword [esp + 0x14], 0
jne 0x64c58a
mov eax, dword [esp + 0x104]
dec eax
cmp dword [esp + eax*4 + 0x320], 0
je 0x64d313
mov dword [esp + 0x104], eax
jmp 0x64c58a
mov edx, 1
jmp 0x64c09f
mov edx, 1
jmp 0x64be7e
mov eax, 1
jmp 0x64bbd6
mov edx, 1
jmp 0x64babf
mov edx, 1
jmp 0x64b8ae
mov eax, 1
jmp 0x64b616
mov edx, 1
jmp 0x64b4ff
mov edx, 1
jmp 0x64b2f6
mov eax, 1
jmp 0x64b056
mov edx, 1
jmp 0x64af3f
mov edx, 1
jmp 0x64ad34
lea ecx, [esp + 0x368]
jmp 0x64ab9b
mov dword [esp + 0xa0], 0x1b
jmp 0x64ab47
xor eax, eax
mov dword [esp + 0x228], eax
mov dword [esp + 0x224], eax
jmp 0x64ab47
movsx edx, word [0x74c982]
xor eax, eax
mov ecx, dword [0x74c80c]
mov dword [esp + 0x228], eax
mov dword [esp + 0x224], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x364], ecx
mov eax, dword [0x74c808]
mov edx, dword [0x74c804]
mov ecx, dword [0x74c800]
mov dword [esp + 0x368], eax
mov dword [esp + 0x36c], edx
mov dword [esp + 0x370], ecx
lea ecx, [esp + 0x370]
mov dword [esp + 0x7c], 4
jmp 0x64b149
mov edx, dword [esp + 0xa0]
mov dword [esp + 0xc8], ebx
mov ebx, edx
neg ebx
mov dword [esp + 0xa4], edi
mov edi, ebx
sar edi, 3
mov dword [esp + 0x78], 4
movzx ecx, word [edi*2 + 0x74c720]
lea eax, [edi + 1]
shr ecx, 5
cmp ecx, ebx
jl 0x64d465
mov eax, edi
movzx ecx, word [eax*2 + 0x74c720]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
add edx, ecx
mov dword [esp + 0xa0], edx
movsx edx, word [eax*2 + 0x74c966]
shl eax, 4
mov dword [esp + 0x60], edx
mov ebx, dword [eax + 0x74c68c]
mov edi, dword [eax + 0x74c688]
mov edx, dword [eax + 0x74c684]
mov eax, dword [eax + 0x74c680]
mov dword [esp + 0x264], ebx
mov dword [esp + 0x268], edi
mov dword [esp + 0x26c], edx
mov dword [esp + 0x270], eax
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
jmp 0x64aad2
mov dword [esp + 0x104], edi
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0x104]
cmp dword [esp + eax*4 + 0x1a0], 0
jne 0x64d7f6
mov dword [esp + 0xcc], esi
mov esi, eax
dec esi
lea eax, [esp + esi*4 + 0x1a0]
mov ecx, dword [eax]
lea edx, [esi*4]
test ecx, ecx
je 0x64d50e
mov dword [esp + 0x104], esi
mov dword [esp + 4], ecx
mov esi, dword [esp + 0xcc]
mov dword [esp + 0xc], 0
cmp dword [esp + 4], 0
jle 0x64d567
mov dword [esp + 0xcc], esi
mov esi, dword [esp + 0xc]
add ecx, ecx
inc esi
test ecx, ecx
jg 0x64d54f
mov dword [esp + 4], ecx
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0xcc]
mov dword [eax], ecx
mov eax, dword [esp + 0x104]
shl eax, 5
mov ecx, dword [esp + 0xc]
sub eax, ecx
mov dword [esp + 0x108], eax
test ecx, ecx
je 0x64d6cf
mov eax, dword [esp + 4]
mov dword [esp + 0x324], eax
mov eax, dword [esp + 0x104]
lea ecx, [eax - 1]
mov dword [esp], ecx
cmp eax, 1
je 0x64d7aa
lea eax, [esp + edx + 0x320]
mov edx, ecx
mov dword [esp + 8], eax
shr edx, 1
mov dword [esp + 0x2c], edx
je 0x64d7e0
mov ecx, dword [esp + 0x104]
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xa4], edi
lea edx, [esp + ecx*4 + 0x19c]
mov dword [esp + 0x28], edx
lea ecx, [ecx*4 - 4]
neg ecx
mov edx, dword [esp + 0xc]
add ecx, dword [esp + 8]
neg edx
mov dword [esp + 0x10], ecx
mov dword [esp + 4], edx
mov dword [esp + 0xcc], esi
nop
lea esi, [esi]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x10]
mov ebx, dword [edi + ebx]
mov edx, ebx
shr edx, cl
mov ecx, dword [esp + 0x28]
or dword [esi + eax*8], edx
mov edx, dword [edi + ecx - 4]
add edi, 0xfffffff8
mov dword [esp + 0x14], edi
mov edi, edx
mov ecx, dword [esp + 0xc]
shl ebx, cl
mov ecx, dword [esp + 4]
shr edi, cl
mov ecx, dword [esp + 0xc]
or ebx, edi
shl edx, cl
mov dword [esi + eax*8 + 4], ebx
mov dword [esi + eax*8 + 8], edx
inc eax
cmp eax, dword [esp + 0x2c]
jb 0x64d610
mov ebx, dword [esp + 0xc8]
lea eax, [eax + eax + 1]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
lea edx, [eax - 1]
cmp edx, dword [esp]
jae 0x64d7b5
mov edx, eax
mov dword [esp + 0xc8], ebx
mov ebx, dword [esp]
sub edx, ebx
sub ebx, eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xa4], edi
neg ecx
mov eax, dword [esp + ebx*4 + 0x1a4]
mov edi, eax
mov ebx, dword [esp + 8]
shr edi, cl
mov ecx, dword [esp + 0xc]
shl eax, cl
or dword [ebx + edx*4 - 4], edi
mov dword [ebx + edx*4], eax
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xa4]
jmp 0x64d7b5
cmp dword [esp + 0x104], 0
je 0x64d7aa
mov eax, dword [esp + 0x104]
lea ecx, [esp + edx + 0x320]
mov dword [esp + 8], ecx
shr eax, 1
mov dword [esp + 4], eax
je 0x64d7ea
mov ecx, dword [esp + 0x104]
xor eax, eax
neg edx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], esi
lea ecx, [esp + ecx*4 + 0x1a0]
mov dword [esp], ecx
add edx, dword [esp + 8]
mov ecx, eax
mov ebx, dword [esp]
mov esi, dword [esp + 4]
mov dword [esp + 0xa4], edi
mov edi, dword [ecx + ebx]
mov dword [edx + eax*8 + 4], edi
mov edi, dword [ecx + ebx - 4]
add ecx, 0xfffffff8
mov dword [edx + eax*8 + 8], edi
inc eax
cmp eax, esi
jb 0x64d732
mov ebx, dword [esp + 0xc8]
lea eax, [eax + eax + 1]
mov edi, dword [esp + 0xa4]
mov esi, dword [esp + 0xcc]
mov dword [esp], eax
mov eax, dword [esp]
lea edx, [eax - 1]
cmp edx, dword [esp + 0x104]
jae 0x64d7b5
mov edx, eax
mov eax, dword [esp + 0x104]
mov dword [esp + 0xc8], ebx
lea ecx, [edx*4]
sub edx, eax
neg ecx
lea ebx, [esp + eax*4 + 0x1a0]
mov eax, dword [esp + 8]
mov ecx, dword [ecx + ebx + 4]
mov dword [eax + edx*4], ecx
mov ebx, dword [esp + 0xc8]
jmp 0x64d7b5
lea eax, [esp + edx + 0x320]
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
cmp dword [eax], 0
jne 0x6499fa
mov eax, dword [esp + 0x104]
dec eax
cmp dword [esp + eax*4 + 0x320], 0
je 0x64d7c9
mov dword [esp + 0x104], eax
jmp 0x6499fa
mov eax, 1
jmp 0x64d677
mov dword [esp], 1
jmp 0x64d765
mov eax, dword [esp + 0x7c]
lea edx, [eax*4 + 4]
lea eax, [esp + edx + 0x1a0]
mov ecx, dword [eax]
mov dword [esp + 4], ecx
jmp 0x64d535
mov esi, eax
jmp 0x64cc9f
mov dword [esp + 0xa4], edx
xor edx, edx
mov dword [esp + 0x98], eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x90], edx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x160], edx
jmp 0x649570
mov edx, dword [esp + 0xa4]
jmp 0x649117
xor esi, esi
mov ebx, 0x6000000
jmp 0x64cae2