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

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0x864
mov eax, dword [esp + 0x884]
mov dword [esp + 0x27c], eax
xor eax, eax
mov ecx, dword [esp + 0x880]
mov edx, dword [0x7adbc0]
xor edx, esp
mov dword [esp + 0x860], edx
mov esi, dword [esp + 0x88c]
mov dword [esp + 0x7e0], eax
mov dword [esp + 0x7ec], eax
mov dword [esp + 0x7f0], eax
mov dword [esp + 0x7f4], eax
mov dword [esp + 0x7f8], eax
mov dword [esp + 0x7fc], eax
mov dword [esp + 0x800], eax
mov dword [esp + 0x804], eax
mov dword [esp + 0x808], eax
mov dword [esp + 0x80c], eax
mov dword [esp + 0x810], eax
mov dword [esp + 0x814], eax
mov dword [esp + 0x818], eax
mov dword [esp + 0x81c], eax
mov dword [esp + 4], eax
mov dword [esp + 0x280], ecx
test ecx, ecx
jle 0x651e79
mov edx, dword [esp + 0x888]
mov ebp, edx
shr ebp, 0x16
and ebp, 7
test edx, 0x80000000
jne 0x64d93d
test ebp, 1
jne 0x64d93d
xor ebp, ebp
mov edi, dword [esp + 0x888]
mov ebx, edi
and ebx, 0x80002000
xor ecx, ecx
mov edx, edi
cmp ebx, 0x80002000
mov ebx, ecx
sete bl
and edx, 0x80001000
cmp edx, 0x80001000
mov edx, ecx
sete dl
and edi, 0x80000800
cmp edi, 0x80000800
sete cl
shl ebx, 0xa
shl edx, 9
shl ecx, 8
or ebx, edx
or ebx, ecx
mov edx, ebp
bts ebx, ebp
and edx, 2
test ebp, 4
je 0x64d9af
test edx, edx
mov edx, 0xaaaa
jne 0x64d9a6
mov edx, 0xfa
mov dword [esp + 0x210], edx
jmp 0x64d9d9
test edx, edx
je 0x64d9c0
mov dword [esp + 0x210], 0xfa00
jmp 0x64d9d9
mov edx, 0xa8a8
test ebp, 1
je 0x64d9d2
mov edx, 0
mov dword [esp + 0x210], edx
fld qword [esp + 0x878]
mov edi, dword [esp + 0x87c]
mov ecx, edi
and ecx, 0x80000000
mov ebp, edi
xor ebp, ecx
mov edx, ebp
fstp qword [esp + 8]
mov dword [esp + 0xc], ebp
fld qword [esp + 8]
shr edx, 4
add edx, 0xfc010000
fstp qword [esp + 0x214]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x268], ebp
mov dword [esp + 0x264], ebp
and edi, 0x7ff00000
jne 0x64dc4b
mov eax, dword [esp + 8]
or eax, ebp
jne 0x64da69
xor eax, eax
mov dword [esp + 0x7e8], eax
mov dword [esp + 0x7e4], eax
test ecx, ecx
je 0x64da5a
mov eax, dword [esp + 0x89c]
mov dword [eax], 0xffffffff
jmp 0x64daaa
mov eax, dword [esp + 0x89c]
mov dword [eax], 1
jmp 0x64daaa
test ecx, ecx
je 0x64da7c
mov eax, dword [esp + 0x89c]
mov dword [eax], 0xfffffffe
jmp 0x64da89
mov eax, dword [esp + 0x89c]
mov dword [eax], 2
test dword [esp + 0x888], 0x10000000
je 0x64db9b
xor eax, eax
mov dword [esp + 0x7e8], eax
mov dword [esp + 0x7e4], eax
test dword [esp + 0x888], 0x80
je 0x64dac4
mov dword [esp + 0x27c], 1
jmp 0x64db36
test byte [esp + 0x888], 2
je 0x64daf4
mov eax, dword [esp + 0x27c]
inc eax
mov dword [esp + 0x27c], eax
cmp eax, dword [esp + 0x880]
jle 0x64db0d
mov eax, dword [esp + 0x880]
mov dword [esp + 0x280], eax
mov edx, dword [esp + 0x280]
mov edi, esi
lea eax, [edx - 1]
mov dword [esp + 0x27c], eax
test edx, edx
jne 0x64db3d
jmp 0x64db67
cmp dword [esp + 0x27c], 0
jg 0x64db36
mov edx, dword [esp + 0x898]
mov ebp, esi
mov byte [esi], 0x30
lea edi, [esi + 1]
mov dword [edx], 1
mov edx, 6
jmp 0x64dda9
dec dword [esp + 0x27c]
mov edx, dword [esp + 0x27c]
lea eax, [edx + 1]
cmp edx, 0x60
jle 0x651827
push eax
push 0x30
push esi
call fcn.0065d380
add esp, 0xc
mov eax, dword [esp + 0x27c]
lea edi, [esi + eax + 1]
mov eax, dword [esp + 0x898]
mov edx, 0xb
test dword [esp + 0x888], 0x40000000
mov ebp, dword [esp + 0x88c]
mov dword [eax], 1
jne 0x64dda9
mov edx, 0
jmp 0x64dda9
fld qword [esp + 0x214]
mov edx, ebp
and edx, 0x7ff00000
fstp st(0)
shr edx, 0x14
je 0x64dbcb
mov ecx, dword [esp + 0x878]
mov eax, ecx
shl ebp, 0xb
shr eax, 0x15
shl ecx, 0xb
or ebp, eax
mov dword [esp + 4], ecx
jmp 0x64dc35
test ebp, ebp
je 0x64dc14
shl ebp, 0xc
mov dword [esp], 0
test ebp, ebp
jle 0x64dbea
mov eax, dword [esp]
add ebp, ebp
inc eax
test ebp, ebp
jg 0x64dbe0
mov dword [esp], eax
mov eax, dword [esp]
mov edx, eax
add eax, 0xc
neg edx
mov ecx, eax
neg ecx
mov edi, dword [esp + 0x878]
shr edi, cl
mov ecx, eax
or ebp, edi
mov edi, dword [esp + 0x878]
shl edi, cl
mov dword [esp + 4], edi
jmp 0x64dc35
mov ebp, dword [esp + 0x878]
xor edx, edx
test ebp, ebp
jle 0x64dc28
add ebp, ebp
inc edx
test ebp, ebp
jg 0x64dc21
add edx, 0x14
mov dword [esp + 4], 0
neg edx
shr ebp, 0xf
shl edx, 0x10
movzx eax, bp
add edx, 0xfc010000
or edx, eax
jmp 0x64de44
cmp edi, 0x7ff00000
jne 0x64de24
mov edx, ebp
xor eax, eax
xor edx, 0x7ff00000
mov dword [esp + 0x7e8], eax
mov dword [esp + 0x7e4], eax
or edx, dword [esp + 0x878]
jne 0x64dd09
test ecx, ecx
je 0x64dc8f
mov eax, dword [esp + 0x89c]
mov dword [eax], 0xfffffffc
jmp 0x64dc9c
mov eax, dword [esp + 0x89c]
mov dword [eax], 4
test ebx, 0x400
je 0x64dcba
test ebx, 0x200
je 0x64dcb3
mov eax, str.INFINITY
jmp 0x64dcbf
mov eax, str.infinity
jmp 0x64dcbf
mov eax, str.Infinity
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x64dcd6
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x64dccb
mov ebx, dword [esp + 0x898]
mov edx, edi
mov ecx, dword [esp + 0x888]
sub edx, esi
and ecx, 0x40000000
shr ecx, 0x1d
mov dword [ebx], edx
mov edx, 4
shl edx, cl
mov ebp, dword [esp + 0x88c]
add edx, 0xfffffffc
jmp 0x64dda9
test ebx, 0x400
je 0x64dd55
test ebp, 0x80000
jne 0x64dd28
shr ecx, 0x1e
mov eax, 0x10
shr eax, cl
add eax, 0xfffffff6
jmp 0x64dd36
mov eax, 0xfffffffb
test ecx, ecx
jne 0x64dd36
mov eax, 5
mov edx, dword [esp + 0x89c]
mov dword [edx], eax
test ebx, 0x200
je 0x64dd4e
mov eax, 0x74c1a0
jmp 0x64dd67
mov eax, 0x74c1a4
jmp 0x64dd67
mov eax, dword [esp + 0x89c]
mov dword [eax], 0
mov eax, 0x74c1a8
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x64dd7e
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x64dd73
mov ebx, dword [esp + 0x898]
mov ecx, edi
mov edx, 0xa
test dword [esp + 0x888], 0x40000000
mov ebp, dword [esp + 0x88c]
jne 0x64dda5
mov edx, 0
sub ecx, esi
mov dword [ebx], ecx
mov ebx, dword [esp + 0x890]
mov byte [edi], 0
test ebx, ebx
je 0x64ddbd
mov ecx, ebp
sub ecx, esi
mov dword [ebx], ecx
mov ecx, dword [esp + 0x894]
test ecx, ecx
je 0x64ddce
neg esi
add esi, edi
mov dword [ecx], esi
mov ecx, ebp
test ebp, ebp
je 0x64dde5
cmp ecx, edi
jae 0x64dde5
movsx ebx, byte [ecx]
inc ecx
cmp ebx, 0x30
jne 0x64ddea
test ecx, ecx
jne 0x64ddd4
mov edx, 0xb
mov ecx, dword [esp + 0x8a0]
test ecx, ecx
je 0x64ddf7
mov dword [ecx], edx
mov ecx, dword [esp + 0x860]
mov dword [esp + 0x860], 0
xor ecx, esp
cmp ecx, dword [0x7adbc0]
jne 0x651860
mov eax, ebp
add esp, 0x864
pop ebp
pop ebx
pop edi
pop esi
ret
test ecx, ecx
je 0x64de37
mov ecx, dword [esp + 0x89c]
mov dword [ecx], 0xfffffffd
jmp 0x64de44
mov ecx, dword [esp + 0x89c]
mov dword [ecx], 3
mov ecx, ebx
and ecx, 0x100
mov dword [esp + 0x1e0], ecx
je 0x64dfe9
fld qword [esp + 0x214]
and ebx, 0x200
mov eax, ebx
xor eax, 0x200
shr eax, 4
mov ecx, dword [esp + 0x1c]
and ecx, 0x7ff00000
fstp st(0)
lea edx, [eax + 0x46]
add eax, 8
mov dword [esp + 0x14], edx
shr ecx, 0x14
mov dword [esp + 0x10], ecx
je 0x64deb6
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x878]
or ecx, 0xfff00000
mov edx, ebp
shl ecx, 0xb
shr edx, 0x15
or ecx, edx
mov dword [esp + 0x1c], ecx
shl ebp, 0xb
jmp 0x64df3f
cmp dword [esp + 0x1c], 0
je 0x64df04
mov edx, dword [esp + 0x1c]
shl edx, 0xc
mov dword [esp + 0x1c], edx
test edx, edx
mov edx, 0
jle 0x64dee0
mov ebp, dword [esp + 0x1c]
add ebp, ebp
inc edx
test ebp, ebp
jg 0x64ded5
mov dword [esp + 0x1c], ebp
mov ebp, edx
add edx, 0xc
mov ecx, edx
neg ebp
mov dword [esp + 0x10], ebp
neg ecx
mov ebp, dword [esp + 0x878]
mov edi, ebp
shr edi, cl
mov ecx, edx
or dword [esp + 0x1c], edi
shl ebp, cl
jmp 0x64df3f
mov edx, dword [esp + 0x878]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], 0
test edx, edx
jle 0x64df30
mov ecx, edx
mov edx, dword [esp + 0x10]
add ecx, ecx
inc edx
test ecx, ecx
jg 0x64df21
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + 0x10]
xor ebp, ebp
add edx, 0x14
neg edx
mov dword [esp + 0x10], edx
xor edx, edx
test ebp, ebp
mov ecx, dword [esp + 0x880]
lea edi, [esi + 1]
mov dword [esp + 0x7e8], ebp
setne dl
mov ebp, dword [esp + 0x1c]
inc edx
mov dword [esp + 0x7e4], ebp
mov ebp, edi
mov dword [esp], 1
mov byte [esi], 0x30
mov dword [esp + 0x1e4], ebp
mov dword [esp + 0x2f8], esi
mov dword [esp + 0x18], edx
lea edx, [ecx - 1]
mov dword [esp + 4], eax
mov ecx, 8
mov dword [esp + 0x21c], ebx
mov ebp, dword [esp]
mov esi, dword [esp + 0x1c]
mov ebx, esi
dec ecx
shr ebx, 0x1c
shl esi, 4
cmp ebx, 0xa
jge 0x64dfae
lea eax, [ebx + 0x30]
jmp 0x64dfc0
cmp dword [esp + 0x21c], 0
je 0x64dfbd
lea eax, [ebx + 0x37]
jmp 0x64dfc0
lea eax, [ebx + 0x57]
mov byte [edi], al
inc edi
test edx, edx
jle 0x651a9d
dec edx
test ecx, ecx
jne 0x64df9b
cmp ebp, dword [esp + 0x18]
jae 0x651865
inc ebp
mov ecx, 8
mov esi, dword [esp + ebp*4 + 0x7e0]
jmp 0x64df9b
test edx, edx
mov dword [esp + 0x7e4], eax
mov eax, 0
setl al
mov ebp, dword [esp + 4]
add eax, 0x4d104d42
mov dword [esp + 0x7e8], ebp
mov dword [esp + 0x168], edx
mov dword [esp + 0x16c], eax
mov eax, dword [esp + 0x168]
imul dword [esp + 0x16c]
mov dword [esp + 0x170], edx
fld qword [esp + 0x214]
mov ecx, ebx
movsx edx, word [esp + 0x172]
lea ebp, [esi + 1]
inc edx
and ecx, 2
mov dword [esp + 0x180], edx
mov edx, ebx
mov eax, dword [esp + 0x87c]
and edx, 0x41
shr eax, 0x1c
and ebx, 0x14
and eax, 0xfffffff8
xor edi, edi
mov dword [esp + 0x1e8], eax
mov eax, dword [esp + 0x888]
mov dword [esp + 0x17c], edi
and eax, 2
mov dword [esp + 0x21c], ebx
mov dword [esp + 0x174], edx
mov dword [esp + 0x178], ecx
mov dword [esp + 0x1e4], ebp
mov dword [esp + 0x2f8], esi
jmp 0x64e0c8
fld qword [esp + 0x214]
mov ebp, dword [esp + 0x1d8]
neg ebp
mov eax, dword [esp + 0x14c]
mov edi, dword [esp + 0x1f4]
lea edx, [ebp + 1]
mov dword [esp + 0x180], edx
test eax, eax
je 0x64e162
cmp dword [esp + 0x27c], 0
jge 0x64e0f5
mov edi, dword [esp + 0x27c]
neg edi
mov dword [esp + 0x17c], edi
mov dword [esp + 0x27c], 0
mov edx, dword [esp + 0x27c]
mov ecx, dword [esp + 0x180]
lea ebx, [edx + ecx]
mov dword [esp + 0x280], ebx
cmp ebx, dword [esp + 0x880]
jle 0x64e147
mov edx, ecx
sub ebx, dword [esp + 0x880]
neg ebx
mov ecx, dword [esp + 0x898]
add ebx, dword [esp + 0x17c]
test edi, edi
mov ebp, dword [esp + 0x880]
mov dword [ecx], edx
je 0x64e13e
mov edi, ebx
mov dword [esp + 0x280], ebp
jmp 0x64e172
cmp dword [esp + 0x280], 0
jle 0x651ac7
mov edx, ecx
mov ecx, dword [esp + 0x898]
mov dword [ecx], edx
jmp 0x64e172
mov ecx, dword [esp + 0x898]
mov edx, dword [esp + 0x180]
mov dword [ecx], edx
mov ebp, edx
neg ebp
jne 0x64e25d
mov edx, dword [esp + 0x268]
and edx, 0x7ff00000
shr edx, 0x14
je 0x64e1b1
mov ebx, dword [esp + 0x268]
mov esi, dword [esp + 0x878]
or ebx, 0xfff00000
mov ecx, esi
shl ebx, 0xb
shr ecx, 0x15
shl esi, 0xb
or ebx, ecx
jmp 0x64e230
cmp dword [esp + 0x268], 0
je 0x64e215
mov ebx, dword [esp + 0x268]
shl ebx, 0xc
mov dword [esp + 0x10], 0
test ebx, ebx
jle 0x64e1e0
mov edx, dword [esp + 0x10]
add ebx, ebx
inc edx
test ebx, ebx
jg 0x64e1d5
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x10]
mov esi, edx
add edx, 0xc
neg esi
mov ecx, edx
neg ecx
mov dword [esp + 0x2f4], esi
mov esi, dword [esp + 0x878]
shr esi, cl
mov ecx, edx
or ebx, esi
mov esi, dword [esp + 0x878]
shl esi, cl
mov edx, dword [esp + 0x2f4]
jmp 0x64e230
mov ebx, dword [esp + 0x878]
xor edx, edx
test ebx, ebx
jle 0x64e229
add ebx, ebx
inc edx
test ebx, ebx
jg 0x64e222
add edx, 0x14
xor esi, esi
neg edx
test esi, esi
mov dword [esp + 0x7e4], ebx
mov ebx, 0
setne bl
add edx, 0xfffffc02
inc ebx
mov dword [esp + 0x7e8], esi
mov dword [esp + 0x270], ebx
xor ebx, ebx
jmp 0x64e4d9
cmp dword [esp + 0x280], 0xf
jge 0x64e27b
cmp ebp, 0xfffffece
jl 0x64e27b
cmp ebp, 0x132
jle 0x64e34f
xor edx, edx
mov dword [esp + 0x820], edx
mov dword [esp + 0x824], edx
mov dword [esp + 0x828], edx
mov dword [esp + 0x82c], edx
mov dword [esp + 0x830], edx
mov dword [esp + 0x834], edx
mov dword [esp + 0x838], edx
mov dword [esp + 0x83c], edx
mov dword [esp + 0x840], edx
mov dword [esp + 0x844], edx
mov dword [esp + 0x848], edx
mov dword [esp + 0x84c], edx
mov dword [esp + 0x850], edx
mov dword [esp + 0x854], edx
mov dword [esp + 0x858], edx
mov dword [esp + 0x85c], edx
cmp ebp, 0xfffffeaa
jl 0x64e346
cmp ebp, 0x159
jg 0x64e346
mov esi, 0x80
cmp dword [esp + 0x280], 0x11
jg 0x64e311
mov esi, 0x40
xor ebx, ebx
cmp esi, 0x80
setne bl
mov dword [esp + 0x1f0], esi
mov dword [esp + 0x1f8], ebx
mov dword [esp + 0x1d8], ebp
mov dword [esp + 0x14c], eax
mov dword [esp + 0x1f4], edi
fstp st(0)
jmp 0x64eba8
mov esi, 0x80
xor ebx, ebx
jmp 0x64e31c
cmp ebp, 0xffffffd1
jge 0x64e393
mov ecx, ebp
neg ecx
mov ebx, ecx
sar ebx, 3
movzx edx, word [ebx*2 + 0x74d500]
lea esi, [ebx + 1]
shr edx, 5
cmp edx, ecx
jl 0x64e371
mov esi, ebx
movzx ecx, word [esi*2 + 0x74d500]
mov edx, ecx
shr ecx, 5
and edx, 0x1f
add ecx, ebp
fld qword [edx*8 + 0x74d460]
fmul qword [ecx*8 + 0x74d2d8]
jmp 0x64e3dc
cmp ebp, 0x2f
jle 0x64e3d5
mov ecx, ebp
sar ecx, 3
movzx edx, word [ecx*2 + 0x74d5e2]
lea ebx, [ecx + 1]
shr edx, 5
cmp edx, ebp
jle 0x64e3b1
mov ebx, ecx
movzx edx, word [ebx*2 + 0x74d5e0]
mov esi, edx
shr edx, 5
and esi, 0x1f
neg edx
add edx, ebp
fld qword [esi*8 + 0x74d560]
fmul qword [edx*8 + 0x74d2d8]
jmp 0x64e3dc
fld qword [ebp*8 + 0x74d2d8]
fmul st(1)
fstp qword [esp + 0x398]
mov edx, dword [esp + 0x39c]
mov dword [esp + 8], edx
and edx, 0x7ff00000
mov ecx, dword [esp + 0x398]
mov dword [esp + 4], ecx
shr edx, 0x14
je 0x64e427
mov esi, dword [esp + 8]
or esi, 0xfff00000
mov ebx, ecx
shl esi, 0xb
shr ebx, 0x15
shl ecx, 0xb
or esi, ebx
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
jmp 0x64e4a6
cmp dword [esp + 8], 0
je 0x64e47b
mov edx, dword [esp + 8]
shl edx, 0xc
mov dword [esp + 8], edx
mov dword [esp], 0
test edx, edx
jle 0x64e455
mov ecx, dword [esp]
add edx, edx
inc ecx
test edx, edx
jg 0x64e447
mov dword [esp + 8], edx
mov dword [esp], ecx
mov ecx, dword [esp]
mov edx, ecx
add ecx, 0xc
neg edx
mov esi, dword [esp + 4]
mov ebx, esi
mov dword [esp], ecx
neg ecx
shr ebx, cl
mov ecx, dword [esp]
shl esi, cl
or dword [esp + 8], ebx
mov dword [esp + 4], esi
jmp 0x64e4a6
mov edx, ecx
mov dword [esp + 8], edx
test edx, edx
mov edx, 0
jle 0x64e499
mov ebx, dword [esp + 8]
add ebx, ebx
inc edx
test ebx, ebx
jg 0x64e48e
mov dword [esp + 8], ebx
add edx, 0x14
mov dword [esp + 4], 0
neg edx
mov ebx, dword [esp + 4]
test ebx, ebx
mov dword [esp + 0x7e8], ebx
mov ebx, 0
setne bl
add edx, 0xfffffc02
mov esi, dword [esp + 8]
inc ebx
mov dword [esp + 0x7e4], esi
mov dword [esp + 0x270], ebx
mov ebx, 1
mov esi, 0x35
mov dword [esp + 0x14c], eax
mov dword [esp + 0x1f0], esi
mov dword [esp + 0x1f8], ebx
mov dword [esp + 0x1d8], ebp
mov dword [esp + 0x1f4], edi
mov eax, dword [esp + 0x270]
fstp st(0)
test edx, edx
jg 0x64e0a0
mov edi, edx
neg edi
je 0x64e62c
mov ecx, edi
lea esi, [eax - 1]
mov ebp, dword [esp + eax*4 + 0x7e0]
neg ecx
mov ebx, ebp
shl ebx, cl
mov ecx, edi
shr ebp, cl
mov dword [esp + eax*4 + 0x7e4], ebx
mov dword [esp + eax*4 + 0x7e0], ebp
cmp eax, 1
je 0x64e625
mov ecx, esi
shr ecx, 1
je 0x651e6f
xor ebp, ebp
lea ebx, [esp + eax*4 + 0x7dc]
mov dword [esp + 0x184], esi
mov dword [esp + 0x2ec], ecx
mov dword [esp + 0x2f0], edi
mov dword [esp + 0x270], eax
mov dword [esp + 0x2f4], edx
mov esi, ebp
nop
lea esi, [esi]
lea edi, [edi]
mov edi, dword [esi + ebx]
mov eax, edi
mov edx, dword [esp + 0x2f4]
mov ecx, edx
shl eax, cl
inc ebp
or dword [esi + ebx + 4], eax
mov eax, dword [esi + ebx - 4]
mov ecx, dword [esp + 0x2f0]
shr edi, cl
mov ecx, edx
mov edx, eax
shl edx, cl
mov ecx, dword [esp + 0x2f0]
or edi, edx
shr eax, cl
mov dword [esi + ebx], edi
mov dword [esi + ebx - 4], eax
add esi, 0xfffffff8
cmp ebp, dword [esp + 0x2ec]
jb 0x64e590
mov esi, dword [esp + 0x184]
lea ebp, [ebp + ebp + 1]
mov edi, ecx
mov eax, dword [esp + 0x270]
mov edx, dword [esp + 0x2f4]
lea ebx, [ebp - 1]
cmp ebx, esi
jae 0x64e61e
sub esi, ebp
mov ecx, edx
mov ebx, dword [esp + esi*4 + 0x7e4]
shl ebx, cl
mov ecx, edi
or dword [esp + esi*4 + 0x7e8], ebx
shr dword [esp + esi*4 + 0x7e4], cl
mov ebx, dword [esp + eax*4 + 0x7e4]
jmp 0x64e625
mov ebx, dword [esp + eax*4 + 0x7e4]
xor edx, edx
cmp edx, ebx
adc eax, 0
mov edx, dword [esp + 0x280]
cmp edx, 0x27
mov edi, dword [esp + 0x2f8]
jle 0x64e644
mov edx, 0x27
mov byte [edi], 0x30
mov edi, dword [esp + 0x1e4]
cmp edx, dword [esp + 0x1f4]
jle 0x64e82f
sub edx, dword [esp + 0x1f4]
je 0x64e82f
xor ebp, ebp
mov dword [esp + 0x2fc], edx
xor ecx, ecx
mov dword [esp + 0x7e0], 0
test eax, eax
je 0x64e805
mov ebx, dword [esp + eax*4 + 0x7e0]
mov edx, 0
mov dword [esp + eax*4 + 0x7e0], 0
je 0x64e7f6
mov edi, eax
shr edi, 1
je 0x651b84
xor esi, esi
lea edx, [esp + eax*4 + 0x7e0]
mov dword [esp + 0x270], eax
mov dword [esp + 0x278], ebp
mov dword [esp + 0x31c], edi
mov dword [esp + 0x274], ecx
mov eax, esi
xor ebp, ebp
lea edi, [ebx + ebx*4]
xor ecx, ecx
cmp edi, ebx
setb cl
inc esi
shr ebx, 0x1e
add ebx, ecx
mov ecx, dword [eax + edx - 4]
add ebx, ebx
mov dword [esp + 0x324], ecx
mov ecx, dword [eax + edx]
mov dword [esp + 0x320], esi
mov esi, edi
shr esi, 0x1f
or ebx, esi
lea esi, [edi + edi]
lea edi, [ecx + edi*2]
xor ecx, ecx
cmp edi, esi
mov esi, dword [esp + 0x324]
setb cl
add ebx, ecx
mov dword [eax + edx], edi
lea edi, [esi + esi*4]
cmp edi, esi
lea ecx, [ebx + edi*2]
mov ebx, ebp
setb bl
shr esi, 0x1e
add esi, ebx
mov ebx, edi
add edi, edi
add esi, esi
cmp ecx, edi
mov dword [eax + edx - 4], ecx
mov ecx, ebp
setb cl
shr ebx, 0x1f
or esi, ebx
mov ebx, dword [eax + edx - 8]
add esi, ecx
mov dword [eax + edx - 8], esi
add eax, 0xfffffff8
mov esi, dword [esp + 0x320]
cmp esi, dword [esp + 0x31c]
jb 0x64e6d4
mov ebp, dword [esp + 0x278]
lea edx, [esi + esi + 1]
mov ecx, dword [esp + 0x274]
mov eax, dword [esp + 0x270]
lea esi, [edx - 1]
cmp esi, eax
jae 0x64e7ef
neg edx
add edx, eax
mov dword [esp + 0x278], ebp
lea ebp, [ebx + ebx*4]
cmp ebp, ebx
mov dword [esp + 0x274], ecx
mov esi, dword [esp + edx*4 + 0x7e4]
lea edi, [esi + ebp*2]
mov esi, 0
mov ecx, esi
setb cl
shr ebx, 0x1e
add ebx, ecx
lea ecx, [ebp + ebp]
cmp edi, ecx
mov ecx, esi
mov dword [esp + edx*4 + 0x7e4], edi
setb cl
add ebx, ebx
shr ebp, 0x1f
or ebx, ebp
add ebx, ecx
mov dword [esp + edx*4 + 0x7e0], ebx
mov edx, dword [esp + eax*4 + 0x7e0]
mov ebp, dword [esp + 0x278]
mov ecx, dword [esp + 0x274]
jmp 0x64e7f6
mov edx, dword [esp + eax*4 + 0x7e0]
cmp edx, 1
mov ebx, dword [esp + 0x7e0]
sbb eax, 0
jmp 0x64e807
xor ebx, ebx
mov esi, dword [esp + 0x2f8]
lea edx, [ebx + 0x30]
add ebp, 0x35269
mov byte [ecx + esi + 1], dl
lea edi, [ecx + esi + 2]
inc ecx
cmp ecx, dword [esp + 0x2fc]
jb 0x64e673
jmp 0x64e838
mov ebx, dword [esp + 0x7e0]
xor ebp, ebp
mov eax, dword [esp + 0x1f0]
add ebp, 0xffff
shr ebp, 0x10
mov byte [edi], 0
lea edx, [eax + 0x1f]
mov esi, edx
and esi, 0xffffffe0
mov ecx, esi
sub ecx, eax
add ecx, ebp
mov ebp, dword [esp + 0x1f8]
shl ebp, cl
mov dword [esp + 0x20c], ebp
mov ebp, dword [esp + 0x7e4]
mov dword [esp + 0x204], ebp
mov dword [esp + 0x200], ecx
add ebp, 0x80000000
je 0x64e89a
xor eax, eax
cmp ebp, 0x80000000
setne al
mov dword [esp + 0x208], eax
jmp 0x64e8a5
mov dword [esp + 0x208], 0
mov dword [esp + 0x2e4], edx
xor edx, edx
xor eax, eax
test ebp, ebp
mov ecx, dword [esp + 0x1e8]
setns al
and ebx, 1
mov dword [esp + 0x1fc], eax
sub esi, dword [esp + 0x200]
add eax, ecx
lea ecx, [eax + ebx*2]
mov eax, dword [esp + 0x208]
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x210]
shr eax, cl
and eax, 1
mov dword [esp + 0x1ec], eax
mov ecx, dword [esp + 0x204]
mov eax, dword [esp + 0x20c]
lea ecx, [eax + ecx - 0x80000000]
add eax, eax
cmp ecx, eax
setbe dl
mov dword [esp + 0x2e0], edx
mov edx, dword [esp + 0x2e4]
cmp esi, 0x20
jb 0x64eb60
mov eax, dword [esp + 0x204]
add eax, 0x80000001
cmp eax, 1
ja 0x651e25
mov ecx, dword [esp + 0x200]
mov eax, ecx
shr edx, 5
shr eax, 5
sub edx, eax
mov esi, dword [esp + 0x1f8]
shl esi, cl
mov dword [esp + 0x20c], esi
mov dword [esp + 0x2e0], esi
mov dword [esp + 0x2dc], esi
mov dword [esp + 0x188], edx
cmp edx, 1
jle 0x64eafb
lea eax, [edx - 1]
shr eax, 1
mov dword [esp + 0x2d8], eax
je 0x651e5f
xor eax, eax
lea ecx, [esp + edx*4 + 0x7e0]
mov dword [esp + 0x2d4], ecx
xor ecx, ecx
mov dword [esp + 0x164], edi
mov dword [esp + 0x2e4], edx
mov dword [esp + 0x160], ebx
mov edi, ecx
mov esi, dword [esp + 0x2d4]
xor ebx, ebx
inc eax
mov dword [esp + 0x2e8], eax
xor eax, eax
mov edx, dword [ecx + esi]
test edx, edx
mov esi, dword [ecx + esi - 4]
setne al
add ecx, 0xfffffff8
or ebp, eax
xor eax, eax
test esi, esi
setne al
or ebp, eax
mov eax, dword [esp + 0x2e0]
add eax, edx
cmp eax, edx
mov eax, ebx
setb al
add eax, esi
cmp eax, esi
mov eax, ebx
setb al
mov dword [esp + 0x2e0], eax
mov eax, dword [esp + 0x2dc]
neg eax
add eax, edx
cmp eax, edx
mov edx, ebx
mov eax, dword [esp + 0x2e4]
seta dl
neg edx
add edx, esi
cmp edx, esi
lea edx, [edi + eax - 2]
mov eax, dword [esp + 0x2e8]
seta bl
add edi, 0xfffffffe
mov dword [esp + 0x2dc], ebx
cmp eax, dword [esp + 0x2d8]
jb 0x64e9b1
mov dword [esp + 0x188], edx
lea eax, [eax + eax + 1]
mov edx, dword [esp + 0x2e4]
mov ebx, dword [esp + 0x160]
mov edi, dword [esp + 0x164]
mov dword [esp + 0x18c], eax
mov eax, dword [esp + 0x18c]
lea esi, [edx - 1]
lea ecx, [eax - 1]
cmp ecx, esi
jae 0x651e4c
mov esi, eax
mov eax, edx
sub eax, esi
mov dword [esp + 0x164], edi
neg esi
mov ecx, dword [esp + 0x2e0]
mov dword [esp + 0x160], ebx
xor ebx, ebx
mov edi, dword [esp + eax*4 + 0x7e4]
xor eax, eax
test edi, edi
lea edx, [edx + esi]
setne al
add ecx, edi
cmp ecx, edi
mov dword [esp + 0x188], edx
setb bl
xor ecx, ecx
mov dword [esp + 0x2e0], ebx
mov ebx, dword [esp + 0x2dc]
neg ebx
add ebx, edi
cmp ebx, edi
mov ebx, dword [esp + 0x160]
seta cl
or ebp, eax
mov eax, 0
setge al
mov edi, dword [esp + 0x164]
mov dword [esp + 0x2dc], ecx
mov dword [esp + 0x1fc], eax
mov edx, dword [esp + 0x188]
mov eax, dword [esp + 0x2e0]
mov ecx, dword [esp + edx*4 + 0x7e0]
add eax, ecx
sub ecx, dword [esp + 0x2dc]
xor eax, ecx
shr eax, 0x1f
mov dword [esp + 0x2e0], eax
test ebp, ebp
je 0x64eb36
xor eax, eax
cmp ebp, 0x80000000
setne al
jmp 0x64eb38
xor eax, eax
mov edx, dword [esp + 0x1e8]
lea ebp, [edx + ebx*2]
add ebp, dword [esp + 0x1fc]
lea ecx, [ebp + eax*4]
mov eax, dword [esp + 0x210]
shr eax, cl
and eax, 1
mov dword [esp + 0x1ec], eax
cmp dword [esp + 0x2e0], 0
je 0x651e25
cmp dword [esp + 0x20c], 0
je 0x651e25
cmp dword [esp + 0x1f0], 0x80
jae 0x651dee
mov eax, 0x40
cmp dword [esp + 0x1f0], 0x40
jb 0x64eba1
mov eax, 0x80
mov dword [esp + 0x1f0], eax
fld qword [esp + 0x214]
mov eax, dword [esp + 0x264]
and eax, 0x7ff00000
fstp st(0)
shr eax, 0x14
mov dword [esp + 0x1d4], eax
je 0x64ebee
mov eax, dword [esp + 0x264]
mov ebx, dword [esp + 0x878]
or eax, 0xfff00000
mov edx, ebx
shl eax, 0xb
shr edx, 0x15
shl ebx, 0xb
or eax, edx
jmp 0x64ec74
cmp dword [esp + 0x264], 0
je 0x64ec34
mov eax, dword [esp + 0x264]
xor edx, edx
shl eax, 0xc
test eax, eax
jle 0x64ec0f
add eax, eax
inc edx
test eax, eax
jg 0x64ec08
mov ebx, edx
add edx, 0xc
mov ecx, edx
neg ebx
mov dword [esp + 0x1d4], ebx
neg ecx
mov ebx, dword [esp + 0x878]
mov ebp, ebx
shr ebp, cl
mov ecx, edx
shl ebx, cl
or eax, ebp
jmp 0x64ec74
mov eax, dword [esp + 0x878]
mov dword [esp + 0x1d4], 0
test eax, eax
jle 0x64ec5f
mov edx, dword [esp + 0x1d4]
add eax, eax
inc edx
test eax, eax
jg 0x64ec51
mov dword [esp + 0x1d4], edx
mov edx, dword [esp + 0x1d4]
xor ebx, ebx
add edx, 0x14
neg edx
mov dword [esp + 0x1d4], edx
test ebx, ebx
mov dword [esp + 0x7e4], eax
mov eax, 0
mov dword [esp + 0x7a0], eax
mov dword [esp + 0x7ac], eax
mov dword [esp + 0x7b0], eax
mov dword [esp + 0x7b4], eax
mov dword [esp + 0x7b8], eax
mov dword [esp + 0x7bc], eax
mov dword [esp + 0x7c0], eax
mov dword [esp + 0x7c4], eax
mov dword [esp + 0x7c8], eax
mov dword [esp + 0x7cc], eax
mov dword [esp + 0x7d0], eax
mov dword [esp + 0x7d4], eax
mov dword [esp + 0x7d8], eax
mov dword [esp + 0x7dc], eax
setne al
mov dword [esp + 0x7e8], ebx
mov dword [esp + 0x1dc], eax
mov ecx, dword [esp + 0x1d8]
cmp dword [esp + 0x1f0], 0x40
lea edx, [eax + 1]
mov dword [esp + 0x1d0], edx
jne 0x64f2e9
mov eax, ecx
lea edx, [eax + 0x2f]
cmp edx, 0x5e
ja 0x64ed7f
mov edx, dword [esp + 0x180]
xor esi, esi
mov edi, 2
mov dword [esp + 0x7a8], esi
mov dword [esp + 0x7a4], esi
lea ebx, [edx*8]
neg ebx
movsx esi, word [eax*2 + 0x74ccfe]
mov ecx, dword [ebx + 0x74cb1c]
mov ebp, dword [ebx + 0x74cb18]
mov dword [esp + 0x824], ecx
mov dword [esp + 0x828], ebp
test ebp, ebp
jne 0x651b8e
dec edi
lea ecx, [esp + edi*4 + 0x820]
cmp dword [ecx], 0
je 0x64ed6d
jmp 0x65138c
cmp dword [esp + 0x1d8], 0
jl 0x651bc9
mov ebx, eax
mov eax, ebx
sar eax, 3
movzx edx, word [eax*2 + 0x74cee2]
lea ecx, [eax + 1]
shr edx, 5
cmp edx, ebx
jle 0x64eda8
mov ecx, eax
movzx edx, word [ecx*2 + 0x74cee0]
mov edi, edx
and edi, 0x1f
shr edx, 5
neg edx
add edx, ebx
movsx ebp, word [edi*2 + 0x74cf58]
mov esi, dword [edi*8 + 0x74ce64]
mov eax, dword [edi*8 + 0x74ce60]
mov dword [esp + 0x144], ebp
mov dword [esp + 0x7a4], esi
movsx ecx, word [edx*2 + 0x74ccfe]
mov ebx, dword [edx*8 + 0x74cb1c]
mov edx, dword [edx*8 + 0x74cb18]
mov dword [esp + 0x7a8], eax
mov dword [esp + 0x140], ecx
mov dword [esp + 0x824], ebx
mov ebx, 2
mov dword [esp + 0x828], edx
test edx, edx
jne 0x651bb8
dec ebx
lea ebp, [esp + ebx*4 + 0x820]
cmp dword [ebp], 0
lea ecx, [ebx*4]
je 0x64ee1f
mov dword [esp + 0x134], eax
mov eax, dword [ebp]
mov dword [esp + 0x130], eax
mov eax, dword [esp + 0x130]
mul dword [esp + 0x134]
mov dword [esp + 0x138], eax
mov dword [esp + 0x13c], edx
mov eax, dword [ebp]
mov edx, dword [esp + 0x13c]
mov ebp, dword [esp + 0x138]
mov esi, dword [esp + 0x7a4]
mov dword [esp + ebx*4 + 0x664], 0
mov dword [esp + 0x2c4], eax
mov dword [esp + ebx*4 + 0x624], edx
mov dword [esp + ebx*4 + 0x628], ebp
mov dword [esp + 0x2c8], esi
mov eax, dword [esp + 0x2c4]
mul dword [esp + 0x2c8]
mov dword [esp + 0x2cc], eax
mov dword [esp + 0x2d0], edx
mov ebp, dword [esp + 0x2cc]
xor eax, eax
mov esi, dword [esp + ebx*4 + 0x624]
add esi, ebp
cmp esi, ebp
mov ebp, ebx
mov dword [esp + ebx*4 + 0x660], eax
setb al
add eax, dword [esp + 0x2d0]
mov dword [esp + ebx*4 + 0x624], esi
dec ebp
mov dword [esp + ebx*4 + 0x620], eax
js 0x64ef82
mov esi, ebx
shr esi, 1
je 0x651bae
xor edi, edi
lea edx, [esp + ecx + 0x660]
mov dword [esp + 0x2a8], ecx
lea eax, [esp + ecx + 0x620]
mov dword [esp + 0x2ac], ebp
mov dword [esp + 0x2b0], ebx
xor ebx, ebx
lea ecx, [edi*8]
inc edi
neg ecx
mov dword [edx + ecx - 4], ebx
mov dword [eax + ecx - 4], ebx
mov dword [edx + ecx - 8], ebx
mov dword [eax + ecx - 8], ebx
cmp edi, esi
jb 0x64ef29
mov ecx, dword [esp + 0x2a8]
lea eax, [edi + edi + 1]
mov ebp, dword [esp + 0x2ac]
mov ebx, dword [esp + 0x2b0]
lea edx, [eax - 1]
cmp edx, ebx
jae 0x64ef82
shl eax, 2
lea edx, [esp + ecx + 0x660]
neg eax
lea ecx, [esp + ecx + 0x620]
xor esi, esi
mov dword [eax + edx], esi
mov dword [eax + ecx], esi
test ebp, ebp
je 0x64f024
mov dword [esp + 0x2b0], ebx
mov ebx, 2
lea esi, [esp + ebp*4 + 0x660]
lea ecx, [esp + ebp*4 + 0x620]
mov eax, dword [esp + ebp*4 + 0x820]
mov edx, dword [esp + ebx*4 + 0x7a0]
mov dword [esp + 0x378], eax
mov dword [esp + 0x37c], edx
mov eax, dword [esp + 0x378]
mul dword [esp + 0x37c]
mov dword [esp + 0x380], eax
mov dword [esp + 0x384], edx
mov edx, dword [esp + 0x380]
mov edi, dword [ecx + ebx*4]
add edi, edx
mov dword [ecx + ebx*4], edi
xor eax, eax
cmp edi, edx
mov edi, 0
setb al
add eax, dword [esp + 0x384]
mov edx, dword [ecx + ebx*4 - 4]
add edx, eax
cmp edx, eax
mov eax, edi
mov dword [ecx + ebx*4 - 4], edx
setb al
add dword [esi + ebx*4 - 8], eax
dec ebx
jne 0x64efa4
dec ebp
jne 0x64ef91
mov ebx, dword [esp + 0x2b0]
mov eax, dword [esp + 0x140]
lea edx, [ebx + 2]
mov esi, dword [esp + 0x144]
lea ecx, [esp + ebx*4 + 0x828]
mov dword [esp + 0x148], ecx
lea edi, [ebx + 1]
add esi, eax
mov eax, dword [ecx - 0x200]
mov dword [ecx], eax
cmp edx, 1
je 0x64f174
mov eax, edi
shr eax, 1
mov dword [esp + 0x260], eax
mov eax, 0
je 0x651ba4
xor ecx, ecx
lea ebp, [esp + ebx*4 + 0x824]
mov dword [esp + 0xd0], ebp
lea ebp, [esp + ebx*4 + 0x624]
mov dword [esp + 0xd4], ebp
lea ebp, [esp + ebx*4 + 0x664]
mov dword [esp + 0x25c], ebp
mov dword [esp + 0x308], edi
mov dword [esp + 0x2b0], ebx
mov dword [esp + 0x1a8], esi
mov dword [esp + 0xcc], edx
mov edi, ecx
mov ebp, dword [esp + 0xd4]
mov ebx, dword [esp + 0xd0]
mov esi, dword [esp + 0x25c]
inc ecx
mov edx, dword [edi + ebp]
add eax, dword [edi + esi]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [edi + ebx], edx
mov edx, eax
setb dl
add edx, dword [edi + esi - 4]
mov esi, dword [edi + ebp - 4]
add esi, edx
cmp esi, edx
mov dword [edi + ebx - 4], esi
setb al
add edi, 0xfffffff8
cmp ecx, dword [esp + 0x260]
jb 0x64f0c7
mov edi, dword [esp + 0x308]
lea ecx, [ecx + ecx + 1]
mov esi, dword [esp + 0x1a8]
mov edx, dword [esp + 0xcc]
mov ebx, dword [esp + 0x2b0]
lea ebp, [ecx - 1]
cmp ebp, edi
jae 0x64f16b
shl ecx, 2
lea ebp, [esp + ebx*4 + 0x664]
neg ecx
mov dword [esp + 0x308], edi
lea edi, [esp + ebx*4 + 0x624]
lea ebx, [esp + ebx*4 + 0x824]
add eax, dword [ecx + ebp + 4]
add eax, dword [ecx + edi + 4]
mov dword [ecx + ebx + 4], eax
mov eax, dword [esp + 0x148]
mov edi, dword [esp + 0x308]
mov eax, dword [eax]
jmp 0x64f174
mov eax, dword [esp + 0x148]
mov eax, dword [eax]
test eax, eax
jne 0x64f18f
dec edx
lea eax, [esp + edx*4 + 0x820]
cmp dword [eax], 0
je 0x64f178
mov dword [esp + 0x148], eax
lea edi, [edx - 1]
mov ebx, dword [esp + 0x824]
test ebx, ebx
jle 0x64f238
mov ecx, dword [esp + 0x140]
add ebx, ebx
mov eax, dword [esp + 0x144]
mov dword [esp + 0x824], ebx
lea esi, [eax + ecx - 1]
cmp edx, 2
jb 0x64f238
lea ebx, [edx - 1]
shr ebx, 1
je 0x651b9a
mov dword [esp + 0xcc], edx
xor ecx, ecx
mov eax, dword [esp + ecx*8 + 0x828]
mov edx, eax
shr edx, 0x1f
add eax, eax
or dword [esp + ecx*8 + 0x824], edx
mov edx, dword [esp + ecx*8 + 0x82c]
mov ebp, edx
shr ebp, 0x1f
add edx, edx
or eax, ebp
mov dword [esp + ecx*8 + 0x828], eax
mov dword [esp + ecx*8 + 0x82c], edx
inc ecx
cmp ecx, ebx
jb 0x64f1d2
mov edx, dword [esp + 0xcc]
lea ebx, [ecx + ecx + 1]
lea eax, [ebx - 1]
cmp eax, edi
jae 0x64f238
mov ecx, dword [esp + ebx*4 + 0x824]
mov eax, ecx
shr eax, 0x1f
add ecx, ecx
or dword [esp + ebx*4 + 0x820], eax
mov dword [esp + ebx*4 + 0x824], ecx
mov eax, dword [esp + 0x148]
cmp dword [eax], 0
je 0x64f246
mov edi, edx
cmp edi, 2
jb 0x651385
mov eax, dword [esp + 0x82c]
shr eax, 0x1f
mov edx, dword [esp + 0x828]
add edx, eax
mov dword [esp + 0x828], edx
cmp edx, eax
jae 0x64f2ca
mov dword [esp + 0x820], 0
mov edi, 1
cmp dword [esp + 0x824], 0xffffffff
je 0x64f292
lea ecx, [esp + 0x824]
mov eax, dword [ecx]
jmp 0x64f2a5
dec edi
lea ecx, [esp + edi*4 + 0x820]
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x64f292
test edi, edi
je 0x64f2ad
inc eax
mov dword [ecx], eax
jmp 0x65138c
mov dword [esp + 0x824], 0x80000000
inc esi
mov edi, 1
lea ecx, [esp + 0x824]
jmp 0x65138c
mov edi, 2
test edx, edx
jne 0x651b8e
dec edi
lea ecx, [esp + edi*4 + 0x820]
cmp dword [ecx], 0
je 0x64f2d7
jmp 0x65138c
xor eax, eax
mov dword [esp + 0x7a8], eax
mov dword [esp + 0x7a4], eax
mov dword [esp + 0x760], eax
mov dword [esp + 0x774], eax
mov dword [esp + 0x778], eax
mov dword [esp + 0x77c], eax
mov dword [esp + 0x780], eax
mov dword [esp + 0x784], eax
mov dword [esp + 0x788], eax
mov dword [esp + 0x78c], eax
mov dword [esp + 0x790], eax
mov dword [esp + 0x794], eax
mov dword [esp + 0x798], eax
mov dword [esp + 0x79c], eax
cmp dword [esp + 0x1d8], 0xfffffdea
jge 0x64fa82
mov eax, dword [esp + 0x1f0]
shr eax, 5
cmp dword [esp + 0x1d8], 0xfffff000
jle 0x64f3af
xor edx, edx
mov edi, 0x1000
mov dword [esp + 0x154], ebp
xor ebx, ebx
mov dword [esp + 0x770], edx
mov esi, 3
mov dword [esp + 0x76c], edx
mov dword [esp + 0x768], edx
mov dword [esp + 0x764], edx
mov ebp, dword [esp + 0x150]
jmp 0x64f40e
mov edx, ecx
mov edi, 0x1000
mov dword [esp + 0x154], ebp
mov esi, 3
lea ecx, [edx + 0x1000]
mov edx, esi
shl edx, 4
movsx ebp, word [esi*2 + 0x74c95e]
mov ebx, dword [edx + 0x74c64c]
mov dword [esp + 0x764], ebx
mov ebx, dword [edx + 0x74c648]
mov dword [esp + 0x768], ebx
mov ebx, dword [edx + 0x74c644]
mov edx, dword [edx + 0x74c640]
mov dword [esp + 0x76c], ebx
mov ebx, 4
mov dword [esp + 0x770], edx
mov dword [esp + 0x150], ebp
lea edx, [eax - 1]
mov dword [esp + 0x158], edx
mov dword [esp + 0x15c], eax
sar edi, 1
dec esi
js 0x64fa6a
mov eax, edi
neg eax
cmp ecx, eax
jg 0x64f426
add ecx, edi
test ebx, ebx
je 0x64fa76
mov ebp, esi
shl ebp, 4
movsx eax, word [esi*2 + 0x74c95e]
mov dword [esp + 0x154], eax
mov edx, dword [ebp + 0x74c64c]
mov eax, dword [ebp + 0x74c648]
mov dword [esp + 0x7a4], edx
mov dword [esp + 0x7a8], eax
mov edx, dword [ebp + 0x74c644]
mov ebp, dword [ebp + 0x74c640]
mov eax, dword [esp + ebx*4 + 0x760]
mov dword [esp + 0x7ac], edx
mov dword [esp + 0x7b0], ebp
mov dword [esp + 0xe8], ebp
lea ebp, [ebx + 3]
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0xe4]
mul dword [esp + 0xe8]
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], edx
mov eax, dword [esp + 0xf0]
mov edx, dword [esp + 0xec]
mov dword [esp + ebp*4 + 0x520], eax
mov eax, 3
mov dword [esp + ebp*4 + 0x524], edx
mov dword [esp + 0xfc], esi
xor esi, esi
mov dword [esp + 0xf8], edi
mov dword [esp + 0xf4], ecx
mov ecx, eax
mov edx, dword [esp + ebx*4 + 0x760]
mov edi, dword [esp + ecx*4 + 0x7a0]
mov dword [esp + ebp*4 + 0x560], 0
mov dword [esp + 0x298], edx
mov dword [esp + 0x29c], edi
mov eax, dword [esp + 0x298]
mul dword [esp + 0x29c]
mov dword [esp + 0x2a0], eax
mov dword [esp + 0x2a4], edx
mov edx, dword [esp + 0x2a0]
mov eax, esi
mov edi, dword [esp + ebp*4 + 0x520]
add edi, edx
cmp edi, edx
mov dword [esp + ebp*4 + 0x520], edi
setb al
dec ebp
add eax, dword [esp + 0x2a4]
mov dword [esp + ebp*4 + 0x520], eax
dec ecx
jne 0x64f4f7
mov eax, ebp
mov esi, dword [esp + 0xfc]
dec eax
mov edi, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf4]
mov dword [esp + ebp*4 + 0x560], 0
js 0x64f65f
mov eax, ebp
shr eax, 1
mov dword [esp + 0x10c], eax
je 0x651c37
xor eax, eax
lea edx, [esp + ebp*4 + 0x51c]
mov dword [esp + 0xe0], edx
lea edx, [esp + ebp*4 + 0x55c]
mov dword [esp + 0xdc], edx
mov dword [esp + 0xd8], ebp
mov dword [esp + 0xfc], esi
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf8], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp + 0xdc]
mov ebp, dword [esp + 0xe0]
mov esi, dword [esp + 0x10c]
inc eax
mov dword [edx + ecx], edi
mov dword [edx + ebp], edi
mov dword [edx + ecx - 4], edi
mov dword [edx + ebp - 4], edi
add edx, 0xfffffff8
cmp eax, esi
jb 0x64f5f7
mov ebp, dword [esp + 0xd8]
lea edx, [eax + eax + 1]
mov esi, dword [esp + 0xfc]
mov edi, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf4]
lea eax, [edx - 1]
cmp eax, ebp
jae 0x64f65f
shl edx, 2
xor eax, eax
neg edx
mov dword [esp + 0x294], ebx
lea ebx, [esp + ebp*4 + 0x55c]
lea ebp, [esp + ebp*4 + 0x51c]
mov dword [edx + ebx + 4], eax
mov dword [edx + ebp + 4], eax
mov ebx, dword [esp + 0x294]
mov ebp, ebx
dec ebp
je 0x64f733
mov dword [esp + 0x294], ebx
mov eax, 4
mov dword [esp + 0xfc], esi
mov dword [esp + 0xf8], edi
mov dword [esp + 0xf4], ecx
mov ebx, eax
lea esi, [esp + ebp*4 + 0x560]
lea ecx, [esp + ebp*4 + 0x520]
mov eax, dword [esp + ebp*4 + 0x760]
mov edx, dword [esp + ebx*4 + 0x7a0]
mov dword [esp + 0x358], eax
mov dword [esp + 0x35c], edx
mov eax, dword [esp + 0x358]
mul dword [esp + 0x35c]
mov dword [esp + 0x360], eax
mov dword [esp + 0x364], edx
mov edx, dword [esp + 0x360]
mov edi, dword [ecx + ebx*4]
add edi, edx
mov dword [ecx + ebx*4], edi
xor eax, eax
cmp edi, edx
mov edi, 0
setb al
add eax, dword [esp + 0x364]
mov edx, dword [ecx + ebx*4 - 4]
add edx, eax
cmp edx, eax
mov eax, edi
mov dword [ecx + ebx*4 - 4], edx
setb al
add dword [esi + ebx*4 - 8], eax
dec ebx
jne 0x64f699
mov eax, 4
dec ebp
jne 0x64f689
mov ebx, dword [esp + 0x294]
mov esi, dword [esp + 0xfc]
mov edi, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf4]
mov ebp, dword [esp + 0x150]
lea edx, [ebx + 4]
add ebp, dword [esp + 0x154]
lea eax, [esp + ebx*4 + 0x770]
mov dword [esp + 0x150], ebp
mov ebp, dword [eax - 0x240]
mov dword [esp + 0x104], edx
mov dword [esp + 0x100], eax
mov dword [eax], ebp
lea eax, [ebx + 3]
cmp edx, 1
je 0x64f8c6
mov edx, eax
mov dword [esp + 0x108], 0
shr edx, 1
mov dword [esp + 0x240], edx
je 0x651c2d
xor ebp, ebp
lea edx, [esp + ebx*4 + 0x76c]
mov dword [esp + 0xb8], edx
lea edx, [esp + ebx*4 + 0x52c]
mov dword [esp + 0xb4], edx
lea edx, [esp + ebx*4 + 0x56c]
mov dword [esp + 0x294], ebx
mov dword [esp + 0xbc], eax
mov dword [esp + 0xf8], edi
mov dword [esp + 0xf4], ecx
mov dword [esp + 0x23c], edx
mov dword [esp + 0xfc], esi
mov edi, ebp
mov ebx, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb8]
mov eax, dword [esp + 0x108]
mov esi, dword [esp + 0x23c]
inc ebp
mov edx, dword [edi + ebx]
add eax, dword [edi + esi]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [edi + ecx], edx
mov edx, eax
setb dl
add edx, dword [edi + esi - 4]
mov esi, dword [edi + ebx - 4]
add esi, edx
cmp esi, edx
mov dword [edi + ecx - 4], esi
setb al
add edi, 0xfffffff8
cmp ebp, dword [esp + 0x240]
jb 0x64f7f6
mov dword [esp + 0x108], eax
lea edx, [ebp + ebp + 1]
mov ebx, dword [esp + 0x294]
mov eax, dword [esp + 0xbc]
mov esi, dword [esp + 0xfc]
mov edi, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf4]
lea ebp, [edx - 1]
cmp ebp, eax
jae 0x64f8bd
shl edx, 2
lea ebp, [esp + ebx*4 + 0x56c]
neg edx
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 0xfc], esi
lea esi, [esp + ebx*4 + 0x52c]
add eax, dword [edx + ebp + 4]
lea ebx, [esp + ebx*4 + 0x76c]
add eax, dword [edx + esi + 4]
mov dword [edx + ebx + 4], eax
mov edx, dword [esp + 0x100]
mov eax, dword [esp + 0xbc]
mov esi, dword [esp + 0xfc]
mov ebp, dword [edx]
jmp 0x64f8c6
mov edx, dword [esp + 0x100]
mov ebp, dword [edx]
test ebp, ebp
jne 0x64f8f1
mov edx, dword [esp + 0x104]
dec edx
lea eax, [esp + edx*4 + 0x760]
cmp dword [eax], 0
je 0x64f8d1
mov dword [esp + 0x104], edx
mov dword [esp + 0x100], eax
mov eax, edx
lea eax, [eax - 1]
mov edx, dword [esp + 0x764]
test edx, edx
jle 0x64f9ad
dec dword [esp + 0x150]
add edx, edx
mov dword [esp + 0x764], edx
cmp dword [esp + 0x104], 2
jb 0x64f9ad
mov edx, dword [esp + 0x104]
lea ebp, [edx - 1]
shr ebp, 1
je 0x651c23
mov dword [esp + 0xf8], edi
xor ebx, ebx
mov dword [esp + 0xf4], ecx
mov edx, dword [esp + ebx*8 + 0x768]
mov ecx, edx
shr ecx, 0x1f
add edx, edx
or dword [esp + ebx*8 + 0x764], ecx
mov ecx, dword [esp + ebx*8 + 0x76c]
mov edi, ecx
shr edi, 0x1f
add ecx, ecx
or edx, edi
mov dword [esp + ebx*8 + 0x768], edx
mov dword [esp + ebx*8 + 0x76c], ecx
inc ebx
cmp ebx, ebp
jb 0x64f940
mov edi, dword [esp + 0xf8]
lea edx, [ebx + ebx + 1]
mov ecx, dword [esp + 0xf4]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x64f9ad
mov ebp, dword [esp + edx*4 + 0x764]
mov ebx, ebp
shr ebx, 0x1f
add ebp, ebp
or dword [esp + edx*4 + 0x760], ebx
mov dword [esp + edx*4 + 0x764], ebp
mov edx, dword [esp + 0x100]
mov ebx, eax
cmp dword [edx], 0
je 0x64f9c2
mov ebx, dword [esp + 0x104]
cmp ebx, dword [esp + 0x15c]
jb 0x64fa61
mov ebx, dword [esp + 0x15c]
mov eax, ebx
mov edx, dword [esp + eax*4 + 0x764]
shr edx, 0x1f
mov eax, dword [esp + eax*4 + 0x760]
add eax, edx
cmp eax, edx
jae 0x64fa49
mov edx, ebx
mov ebx, dword [esp + 0x158]
mov dword [esp + edx*4 + 0x760], eax
lea edx, [esp + edx*4 + 0x75c]
mov dword [esp + 0x760], 0
mov eax, dword [edx]
cmp eax, 0xffffffff
jne 0x64fa27
dec ebx
lea edx, [esp + ebx*4 + 0x760]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x64fa18
test ebx, ebx
je 0x64fa30
inc eax
mov dword [edx], eax
jmp 0x64fa61
inc dword [esp + 0x150]
mov ebx, 1
mov dword [esp + 0x764], 0x80000000
jmp 0x64fa61
mov edx, ebx
mov dword [esp + edx*4 + 0x760], eax
test eax, eax
jne 0x64fa61
dec ebx
cmp dword [esp + ebx*4 + 0x760], 0
je 0x64fa56
sar edi, 1
dec esi
jns 0x64f42f
mov ebp, dword [esp + 0x154]
jmp 0x650117
mov eax, dword [esp + 0x15c]
jmp 0x64f3c8
cmp dword [esp + 0x1d8], 0x216
jle 0x6500f9
mov eax, dword [esp + 0x1f0]
shr eax, 5
cmp dword [esp + 0x1d8], 0x1000
jge 0x64fae4
xor edx, edx
mov edi, 0x1000
mov dword [esp + 0x154], ebp
xor ebx, ebx
mov dword [esp + 0x770], edx
mov esi, 3
mov dword [esp + 0x76c], edx
mov dword [esp + 0x768], edx
mov dword [esp + 0x764], edx
mov ebp, dword [esp + 0x150]
jmp 0x64fb43
mov edx, ecx
mov edi, 0x1000
mov dword [esp + 0x154], ebp
mov esi, 3
lea ecx, [edx - 0x1000]
mov edx, esi
shl edx, 4
movsx ebp, word [esi*2 + 0x74c97a]
mov ebx, dword [edx + 0x74c7cc]
mov dword [esp + 0x764], ebx
mov ebx, dword [edx + 0x74c7c8]
mov dword [esp + 0x768], ebx
mov ebx, dword [edx + 0x74c7c4]
mov edx, dword [edx + 0x74c7c0]
mov dword [esp + 0x76c], ebx
mov ebx, 4
mov dword [esp + 0x770], edx
mov dword [esp + 0x150], ebp
lea edx, [eax - 1]
mov dword [esp + 0x110], edx
mov dword [esp + 0x114], eax
sar edi, 1
dec esi
js 0x64fa6a
cmp ecx, edi
jl 0x64fb5b
sub ecx, edi
test ebx, ebx
je 0x6500ed
mov ebp, esi
shl ebp, 4
movsx eax, word [esi*2 + 0x74c97a]
mov dword [esp + 0x154], eax
mov edx, dword [ebp + 0x74c7cc]
mov eax, dword [ebp + 0x74c7c8]
mov dword [esp + 0x7a4], edx
mov dword [esp + 0x7a8], eax
mov edx, dword [ebp + 0x74c7c4]
mov ebp, dword [ebp + 0x74c7c0]
mov eax, dword [esp + ebx*4 + 0x760]
mov dword [esp + 0x7ac], edx
mov dword [esp + 0x7b0], ebp
mov dword [esp + 0x30], ebp
lea ebp, [ebx + 3]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mul dword [esp + 0x30]
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov dword [esp + ebp*4 + 0x3a0], eax
mov eax, 3
mov dword [esp + ebp*4 + 0x3a4], edx
mov dword [esp + 0x40], esi
xor esi, esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0xf4], ecx
mov ecx, eax
mov edx, dword [esp + ebx*4 + 0x760]
mov edi, dword [esp + ecx*4 + 0x7a0]
mov dword [esp + ebp*4 + 0x3e0], 0
mov dword [esp + 0x22c], edx
mov dword [esp + 0x230], edi
mov eax, dword [esp + 0x22c]
mul dword [esp + 0x230]
mov dword [esp + 0x234], eax
mov dword [esp + 0x238], edx
mov edx, dword [esp + 0x234]
mov eax, esi
mov edi, dword [esp + ebp*4 + 0x3a0]
add edi, edx
cmp edi, edx
mov dword [esp + ebp*4 + 0x3a0], edi
setb al
dec ebp
add eax, dword [esp + 0x238]
mov dword [esp + ebp*4 + 0x3a0], eax
dec ecx
jne 0x64fc0a
mov eax, ebp
mov esi, dword [esp + 0x40]
dec eax
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0xf4]
mov dword [esp + ebp*4 + 0x3e0], 0
js 0x64fd48
mov eax, ebp
shr eax, 1
mov dword [esp + 0x50], eax
je 0x651c55
xor eax, eax
lea edx, [esp + ebp*4 + 0x39c]
mov dword [esp + 0x28], edx
lea edx, [esp + ebp*4 + 0x3dc]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], ebp
mov dword [esp + 0x40], esi
mov dword [esp + 0xf4], ecx
mov dword [esp + 0x3c], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
mov esi, dword [esp + 0x50]
inc eax
mov dword [edx + ecx], edi
mov dword [edx + ebp], edi
mov dword [edx + ecx - 4], edi
mov dword [edx + ebp - 4], edi
add edx, 0xfffffff8
cmp eax, esi
jb 0x64fce9
mov ebp, dword [esp + 0x20]
lea edx, [eax + eax + 1]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0xf4]
lea eax, [edx - 1]
cmp eax, ebp
jae 0x64fd48
shl edx, 2
xor eax, eax
neg edx
mov dword [esp + 0x294], ebx
lea ebx, [esp + ebp*4 + 0x3dc]
lea ebp, [esp + ebp*4 + 0x39c]
mov dword [edx + ebx + 4], eax
mov dword [edx + ebp + 4], eax
mov ebx, dword [esp + 0x294]
mov ebp, ebx
dec ebp
je 0x64fe10
mov dword [esp + 0x294], ebx
mov eax, 4
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0xf4], ecx
mov ebx, eax
lea esi, [esp + ebp*4 + 0x3e0]
lea ecx, [esp + ebp*4 + 0x3a0]
mov eax, dword [esp + ebp*4 + 0x760]
mov edx, dword [esp + ebx*4 + 0x7a0]
mov dword [esp + 0x328], eax
mov dword [esp + 0x32c], edx
mov eax, dword [esp + 0x328]
mul dword [esp + 0x32c]
mov dword [esp + 0x330], eax
mov dword [esp + 0x334], edx
mov edx, dword [esp + 0x330]
mov edi, dword [ecx + ebx*4]
add edi, edx
mov dword [ecx + ebx*4], edi
xor eax, eax
cmp edi, edx
mov edi, 0
setb al
add eax, dword [esp + 0x334]
mov edx, dword [ecx + ebx*4 - 4]
add edx, eax
cmp edx, eax
mov eax, edi
mov dword [ecx + ebx*4 - 4], edx
setb al
add dword [esi + ebx*4 - 8], eax
dec ebx
jne 0x64fd7c
mov eax, 4
dec ebp
jne 0x64fd6c
mov ebx, dword [esp + 0x294]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0xf4]
mov ebp, dword [esp + 0x150]
lea edx, [ebx + 4]
add ebp, dword [esp + 0x154]
lea eax, [esp + ebx*4 + 0x770]
mov dword [esp + 0x150], ebp
mov ebp, dword [eax - 0x3c0]
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], eax
mov dword [eax], ebp
lea eax, [ebx + 3]
cmp edx, 1
je 0x64ff5b
mov edx, eax
mov dword [esp + 0x4c], 0
shr edx, 1
mov dword [esp + 0x194], edx
je 0x651c4b
xor ebp, ebp
lea edx, [esp + ebx*4 + 0x3ac]
mov dword [esp + 0x14], edx
lea edx, [esp + ebx*4 + 0x3ec]
mov dword [esp + 0x190], edx
lea edx, [esp + ebx*4 + 0x76c]
mov dword [esp + 0x294], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x3c], edi
mov dword [esp + 0xf4], ecx
mov dword [esp + 0x40], esi
mov edi, ebp
mov ebx, edx
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x190]
inc ebp
mov edx, dword [edi + ecx]
add eax, dword [edi + esi]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [edi + ebx], edx
mov edx, eax
setb dl
add edx, dword [edi + esi - 4]
mov esi, dword [edi + ecx - 4]
add esi, edx
cmp esi, edx
mov dword [edi + ebx - 4], esi
setb al
add edi, 0xfffffff8
cmp ebp, dword [esp + 0x194]
jb 0x64feac
mov dword [esp + 0x4c], eax
lea edx, [ebp + ebp + 1]
mov ebx, dword [esp + 0x294]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0xf4]
lea ebp, [edx - 1]
cmp ebp, eax
jae 0x64ff55
shl edx, 2
lea ebp, [esp + ebx*4 + 0x3ec]
neg edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x40], esi
lea esi, [esp + ebx*4 + 0x3ac]
add eax, dword [edx + ebp + 4]
lea ebx, [esp + ebx*4 + 0x76c]
add eax, dword [edx + esi + 4]
mov dword [edx + ebx + 4], eax
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x40]
mov ebp, dword [edx]
jmp 0x64ff5b
mov edx, dword [esp + 0x44]
mov ebp, dword [edx]
test ebp, ebp
jne 0x64ff7d
mov edx, dword [esp + 0x48]
dec edx
lea eax, [esp + edx*4 + 0x760]
cmp dword [eax], 0
je 0x64ff63
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], eax
mov eax, edx
lea eax, [eax - 1]
mov edx, dword [esp + 0x764]
test edx, edx
jle 0x65002d
dec dword [esp + 0x150]
add edx, edx
mov dword [esp + 0x764], edx
cmp dword [esp + 0x48], 2
jb 0x65002d
mov edx, dword [esp + 0x48]
lea ebp, [edx - 1]
shr ebp, 1
je 0x651c41
mov dword [esp + 0x3c], edi
xor ebx, ebx
mov dword [esp + 0xf4], ecx
mov edx, dword [esp + ebx*8 + 0x768]
mov ecx, edx
shr ecx, 0x1f
add edx, edx
or dword [esp + ebx*8 + 0x764], ecx
mov ecx, dword [esp + ebx*8 + 0x76c]
mov edi, ecx
shr edi, 0x1f
add ecx, ecx
or edx, edi
mov dword [esp + ebx*8 + 0x768], edx
mov dword [esp + ebx*8 + 0x76c], ecx
inc ebx
cmp ebx, ebp
jb 0x64ffc3
mov edi, dword [esp + 0x3c]
lea edx, [ebx + ebx + 1]
mov ecx, dword [esp + 0xf4]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x65002d
mov ebp, dword [esp + edx*4 + 0x764]
mov ebx, ebp
shr ebx, 0x1f
add ebp, ebp
or dword [esp + edx*4 + 0x760], ebx
mov dword [esp + edx*4 + 0x764], ebp
mov edx, dword [esp + 0x44]
mov ebx, eax
cmp dword [edx], 0
je 0x65003c
mov ebx, dword [esp + 0x48]
cmp ebx, dword [esp + 0x114]
jb 0x6500db
mov ebx, dword [esp + 0x114]
mov eax, ebx
mov edx, dword [esp + eax*4 + 0x764]
shr edx, 0x1f
mov eax, dword [esp + eax*4 + 0x760]
add eax, edx
cmp eax, edx
jae 0x6500c3
mov edx, ebx
mov ebx, dword [esp + 0x110]
mov dword [esp + edx*4 + 0x760], eax
lea edx, [esp + edx*4 + 0x75c]
mov dword [esp + 0x760], 0
mov eax, dword [edx]
cmp eax, 0xffffffff
jne 0x6500a1
dec ebx
lea edx, [esp + ebx*4 + 0x760]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x650092
test ebx, ebx
je 0x6500aa
inc eax
mov dword [edx], eax
jmp 0x6500db
inc dword [esp + 0x150]
mov ebx, 1
mov dword [esp + 0x764], 0x80000000
jmp 0x6500db
mov edx, ebx
mov dword [esp + edx*4 + 0x760], eax
test eax, eax
jne 0x6500db
dec ebx
cmp dword [esp + ebx*4 + 0x760], 0
je 0x6500d0
sar edi, 1
dec esi
jns 0x64fb64
mov ebp, dword [esp + 0x154]
jmp 0x650117
mov eax, dword [esp + 0x114]
jmp 0x64fafd
mov dword [esp + 0x770], eax
xor ebx, ebx
mov dword [esp + 0x76c], eax
mov dword [esp + 0x768], eax
mov dword [esp + 0x764], eax
lea eax, [ecx + 0x1b]
cmp eax, 0x1a
ja 0x65017d
movsx esi, word [ecx*2 + 0x74c95e]
mov edi, 4
shl ecx, 4
mov eax, dword [ecx + 0x74c63c]
mov edx, dword [ecx + 0x74c638]
mov ebp, dword [ecx + 0x74c634]
mov ecx, dword [ecx + 0x74c630]
mov dword [esp + 0x824], eax
mov dword [esp + 0x828], edx
mov dword [esp + 0x82c], ebp
mov dword [esp + 0x830], ecx
test ecx, ecx
jne 0x651c5f
dec edi
lea ecx, [esp + edi*4 + 0x820]
cmp dword [ecx], 0
je 0x65016b
jmp 0x650e97
xor eax, eax
mov dword [esp + 0x720], eax
mov dword [esp + 0x72c], eax
mov dword [esp + 0x730], eax
mov dword [esp + 0x734], eax
mov dword [esp + 0x738], eax
mov dword [esp + 0x73c], eax
mov dword [esp + 0x740], eax
mov dword [esp + 0x744], eax
mov dword [esp + 0x748], eax
mov dword [esp + 0x74c], eax
mov dword [esp + 0x750], eax
mov dword [esp + 0x754], eax
mov dword [esp + 0x758], eax
mov dword [esp + 0x75c], eax
test ecx, ecx
jl 0x651d70
cmp ecx, 0x37
jl 0x650265
mov edx, ecx
sar edx, 3
mov dword [esp + 0x228], 4
movzx ebp, word [edx*2 + 0x74c8a2]
lea esi, [edx + 1]
shr ebp, 5
cmp ebp, ecx
jle 0x650212
mov esi, edx
movzx edi, word [esi*2 + 0x74c8a0]
mov eax, edi
and eax, 0x1f
shr edi, 5
sub ecx, edi
movsx ebp, word [eax*2 + 0x74c982]
shl eax, 4
mov edx, dword [eax + 0x74c80c]
mov esi, dword [eax + 0x74c808]
mov edi, dword [eax + 0x74c804]
mov eax, dword [eax + 0x74c800]
mov dword [esp + 0x7a4], edx
mov dword [esp + 0x7a8], esi
mov dword [esp + 0x7ac], edi
mov dword [esp + 0x7b0], eax
jmp 0x650270
mov dword [esp + 0x228], 0
cmp ecx, 0x37
je 0x651d1a
lea eax, [ecx - 0x1b]
test eax, eax
jle 0x651d05
movsx edx, word [eax*2 + 0x74ccfe]
mov edi, 2
mov ecx, dword [eax*8 + 0x74cb1c]
mov esi, dword [eax*8 + 0x74cb18]
mov dword [esp + 0xa4], edx
mov dword [esp + 0x724], ecx
mov dword [esp + 0x728], esi
mov dword [esp + 0x26c], edi
test esi, esi
jne 0x651cfb
mov edx, edi
dec edx
cmp dword [esp + edx*4 + 0x720], 0
je 0x6502c5
mov dword [esp + 0x26c], edx
mov ecx, 0x1b
movsx esi, word [ecx*2 + 0x74ccfe]
mov edi, 2
mov edx, dword [ecx*8 + 0x74cb1c]
mov ecx, dword [ecx*8 + 0x74cb18]
mov dword [esp + 0x824], edx
mov dword [esp + 0x828], ecx
test ecx, ecx
jne 0x651cef
dec edi
lea ecx, [esp + edi*4 + 0x820]
cmp dword [ecx], 0
je 0x65030d
test eax, eax
jle 0x650936
mov eax, dword [esp + 0x26c]
lea edx, [eax + edi - 1]
mov dword [esp + 0xa8], edx
mov edx, dword [ecx]
mov eax, dword [esp + eax*4 + 0x720]
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x90]
mul dword [esp + 0x94]
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x9c]
mov dword [esp + eax*4 + 0x4a0], edx
mov edx, dword [esp + 0x98]
mov dword [esp + eax*4 + 0x4a4], edx
mov eax, dword [esp + 0x26c]
dec eax
je 0x650453
mov dword [esp + 0x294], ebx
mov dword [esp + 0x308], edi
mov dword [esp + 0x1a8], esi
xor esi, esi
mov dword [esp + 0x154], ebp
mov ebp, ecx
mov ebx, dword [esp + 0xa8]
mov ecx, eax
mov edx, dword [ebp]
mov edi, dword [esp + ecx*4 + 0x720]
mov dword [esp + ebx*4 + 0x4e0], 0
mov dword [esp + 0x284], edx
mov dword [esp + 0x288], edi
mov eax, dword [esp + 0x284]
mul dword [esp + 0x288]
mov dword [esp + 0x28c], eax
mov dword [esp + 0x290], edx
mov edx, dword [esp + 0x28c]
mov eax, esi
mov edi, dword [esp + ebx*4 + 0x4a0]
add edi, edx
cmp edi, edx
mov dword [esp + ebx*4 + 0x4a0], edi
setb al
dec ebx
add eax, dword [esp + 0x290]
mov dword [esp + ebx*4 + 0x4a0], eax
dec ecx
jne 0x6503c1
mov dword [esp + 0xa8], ebx
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
mov ebx, dword [esp + 0x294]
mov ebp, dword [esp + 0x154]
mov eax, dword [esp + 0xa8]
mov dword [esp + eax*4 + 0x4e0], 0
dec eax
js 0x650542
mov eax, dword [esp + 0xa8]
shr eax, 1
mov dword [esp + 0xb0], eax
je 0x651ce5
mov ecx, dword [esp + 0xa8]
xor eax, eax
mov dword [esp + 0x294], ebx
mov dword [esp + 0x154], ebp
lea edx, [esp + ecx*4 + 0x49c]
mov dword [esp + 0x8c], edx
lea edx, [esp + ecx*4 + 0x4dc]
mov dword [esp + 0x88], edx
mov dword [esp + 0x1a8], esi
xor esi, esi
mov edx, eax
mov ecx, dword [esp + 0x88]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0xb0]
inc eax
mov dword [edx + ecx], esi
mov dword [edx + ebx], esi
mov dword [edx + ecx - 4], esi
mov dword [edx + ebx - 4], esi
add edx, 0xfffffff8
cmp eax, ebp
jb 0x6504d5
mov esi, dword [esp + 0x1a8]
lea edx, [eax + eax + 1]
mov ebx, dword [esp + 0x294]
mov ebp, dword [esp + 0x154]
lea eax, [edx - 1]
cmp eax, dword [esp + 0xa8]
jae 0x650542
shl edx, 2
xor eax, eax
mov dword [esp + 0x308], edi
neg edx
mov edi, dword [esp + 0xa8]
lea ecx, [esp + edi*4 + 0x4dc]
mov dword [edx + ecx + 4], eax
lea ecx, [esp + edi*4 + 0x49c]
mov dword [edx + ecx + 4], eax
mov edi, dword [esp + 0x308]
mov ecx, edi
dec ecx
je 0x650622
mov dword [esp + 0x308], edi
mov dword [esp + 0x1a8], esi
mov dword [esp + 0x294], ebx
mov dword [esp + 0x154], ebp
mov eax, dword [esp + 0x26c]
mov ebp, eax
test eax, eax
je 0x6505ff
lea ebx, [esp + ecx*4 + 0x4e0]
lea esi, [esp + ecx*4 + 0x4a0]
mov eax, dword [esp + ecx*4 + 0x820]
mov edx, dword [esp + ebp*4 + 0x720]
mov dword [esp + 0x348], eax
mov dword [esp + 0x34c], edx
mov eax, dword [esp + 0x348]
mul dword [esp + 0x34c]
mov dword [esp + 0x350], eax
mov dword [esp + 0x354], edx
mov edx, dword [esp + 0x350]
mov edi, dword [esi + ebp*4]
add edi, edx
mov dword [esi + ebp*4], edi
xor eax, eax
cmp edi, edx
mov edi, 0
setb al
add eax, dword [esp + 0x354]
mov edx, dword [esi + ebp*4 - 4]
add edx, eax
cmp edx, eax
mov eax, edi
mov dword [esi + ebp*4 - 4], edx
setb al
add dword [ebx + ebp*4 - 8], eax
dec ebp
jne 0x650586
mov eax, dword [esp + 0x26c]
dec ecx
jne 0x65056e
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
mov ebx, dword [esp + 0x294]
mov ebp, dword [esp + 0x154]
mov eax, dword [esp + 0x26c]
add esi, dword [esp + 0xa4]
lea edx, [edi + eax]
lea edi, [edi + eax - 1]
mov eax, dword [esp + edx*4 + 0x4a0]
lea ecx, [esp + edx*4 + 0x820]
mov dword [esp + 0xa0], ecx
mov dword [ecx], eax
cmp edx, 1
je 0x65079d
mov eax, edi
mov dword [esp + 0xac], 0
shr eax, 1
mov dword [esp + 0x224], eax
je 0x651cdb
xor eax, eax
lea ecx, [esp + edi*4 + 0x4a0]
mov dword [esp + 0x80], ecx
lea ecx, [esp + edi*4 + 0x4e0]
mov dword [esp + 0x220], ecx
lea ecx, [esp + edi*4 + 0x820]
mov dword [esp + 0x84], edx
mov dword [esp + 0x308], edi
mov dword [esp + 0x294], ebx
mov dword [esp + 0x154], ebp
mov dword [esp + 0x1a8], esi
mov edi, eax
mov ebp, ecx
mov ebx, dword [esp + 0x80]
mov edx, dword [esp + 0xac]
mov esi, dword [esp + 0x220]
inc eax
mov ecx, dword [edi + ebx]
add edx, dword [edi + esi]
add ecx, edx
cmp ecx, edx
mov edx, 0
mov dword [edi + ebp], ecx
mov ecx, edx
setb cl
add ecx, dword [edi + esi - 4]
mov esi, dword [edi + ebx - 4]
add esi, ecx
cmp esi, ecx
mov dword [edi + ebp - 4], esi
setb dl
add edi, 0xfffffff8
cmp eax, dword [esp + 0x224]
jb 0x6506cd
mov dword [esp + 0xac], edx
lea ecx, [eax + eax + 1]
mov edx, dword [esp + 0x84]
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
mov ebx, dword [esp + 0x294]
mov ebp, dword [esp + 0x154]
lea eax, [ecx - 1]
cmp eax, edi
jae 0x650794
shl ecx, 2
neg ecx
mov dword [esp + 0x84], edx
lea edx, [esp + edi*4 + 0x4e0]
mov eax, dword [esp + 0xac]
mov dword [esp + 0x1a8], esi
lea esi, [esp + edi*4 + 0x4a0]
add eax, dword [ecx + edx + 4]
lea edx, [esp + edi*4 + 0x820]
add eax, dword [ecx + esi + 4]
mov dword [ecx + edx + 4], eax
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x84]
mov esi, dword [esp + 0x1a8]
mov eax, dword [ecx]
jmp 0x65079d
mov eax, dword [esp + 0xa0]
mov eax, dword [eax]
test eax, eax
jne 0x6507b8
dec edx
lea eax, [esp + edx*4 + 0x820]
cmp dword [eax], 0
je 0x6507a1
mov dword [esp + 0xa0], eax
lea edi, [edx - 1]
mov eax, dword [esp + 0x824]
test eax, eax
jle 0x65087e
add eax, eax
dec esi
mov dword [esp + 0x824], eax
cmp edx, 2
jb 0x65087e
lea ecx, [edx - 1]
shr ecx, 1
je 0x651cd1
mov dword [esp + 0x1a8], esi
xor eax, eax
mov dword [esp + 0x294], ebx
mov dword [esp + 0x154], ebp
mov ebx, dword [esp + eax*8 + 0x828]
mov ebp, ebx
shr ebp, 0x1f
add ebx, ebx
or dword [esp + eax*8 + 0x824], ebp
mov ebp, dword [esp + eax*8 + 0x82c]
mov esi, ebp
shr esi, 0x1f
add ebp, ebp
or ebx, esi
mov dword [esp + eax*8 + 0x828], ebx
mov dword [esp + eax*8 + 0x82c], ebp
inc eax
cmp eax, ecx
jb 0x6507fc
mov esi, dword [esp + 0x1a8]
lea eax, [eax + eax + 1]
mov ebx, dword [esp + 0x294]
mov ebp, dword [esp + 0x154]
lea ecx, [eax - 1]
cmp ecx, edi
jae 0x65087e
mov ecx, dword [esp + eax*4 + 0x824]
mov dword [esp + 0x84], edx
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + eax*4 + 0x820], edx
mov dword [esp + eax*4 + 0x824], ecx
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0xa0]
cmp dword [eax], 0
je 0x65088c
mov edi, edx
mov edx, dword [esp + 0x1f0]
shr edx, 5
cmp edi, edx
jb 0x65092f
mov edi, edx
mov eax, edx
mov edx, dword [esp + eax*4 + 0x824]
shr edx, 0x1f
mov ecx, eax
lea ecx, [esp + ecx*4 + 0x820]
mov eax, dword [ecx]
add eax, edx
mov dword [esp + 0xc], eax
cmp eax, edx
jae 0x650917
mov eax, edi
mov edi, dword [esp + 0xc]
mov dword [ecx], edi
mov dword [esp + 0x820], 0
lea ecx, [esp + eax*4 + 0x81c]
lea edi, [eax - 1]
mov eax, dword [ecx]
cmp eax, 0xffffffff
jne 0x6508f4
dec edi
lea ecx, [esp + edi*4 + 0x820]
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x6508e5
test edi, edi
je 0x6508fd
inc eax
mov dword [ecx], eax
jmp 0x650936
mov dword [esp + 0x824], 0x80000000
inc esi
mov edi, 1
lea ecx, [esp + 0x824]
jmp 0x650936
mov dword [ecx], eax
cmp dword [esp + 0xc], 0
jne 0x650936
dec edi
lea ecx, [esp + edi*4 + 0x820]
cmp dword [ecx], 0
je 0x650920
jmp 0x650936
lea ecx, [esp + edi*4 + 0x820]
cmp dword [esp + 0x228], 0
je 0x650e97
mov eax, dword [esp + 0x228]
lea edx, [edi + eax]
mov dword [esp + 0x74], edx
lea edx, [edi + eax - 1]
mov dword [esp + 0x78], edx
mov edx, dword [ecx]
mov eax, dword [esp + eax*4 + 0x7a0]
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 + 0x78]
mov edx, dword [esp + 0x70]
mov dword [esp + eax*4 + 0x420], edx
mov edx, dword [esp + 0x6c]
mov dword [esp + eax*4 + 0x424], edx
mov eax, dword [esp + 0x228]
lea eax, [eax - 1]
mov dword [esp + 0x1a8], esi
mov dword [esp + 0x308], edi
xor edi, edi
mov dword [esp + 0x294], ebx
mov ebx, ecx
mov dword [esp + 0x154], ebp
mov ecx, eax
mov esi, dword [esp + 0x78]
mov edx, dword [ebx]
mov dword [esp + 0x24c], edx
mov edx, dword [esp + ecx*4 + 0x7a0]
mov dword [esp + esi*4 + 0x460], 0
mov dword [esp + 0x250], edx
mov eax, dword [esp + 0x24c]
mul dword [esp + 0x250]
mov dword [esp + 0x254], eax
mov dword [esp + 0x258], edx
mov edx, dword [esp + 0x254]
mov eax, edi
mov ebp, dword [esp + esi*4 + 0x420]
add ebp, edx
cmp ebp, edx
mov dword [esp + esi*4 + 0x420], ebp
setb al
dec esi
add eax, dword [esp + 0x258]
mov dword [esp + esi*4 + 0x420], eax
dec ecx
jne 0x6509c5
mov dword [esp + 0x78], esi
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
mov ebx, dword [esp + 0x294]
mov ebp, dword [esp + 0x154]
mov eax, dword [esp + 0x78]
mov dword [esp + eax*4 + 0x460], 0
dec eax
js 0x650b21
mov eax, dword [esp + 0x78]
shr eax, 1
mov dword [esp + 0x7c], eax
je 0x651cc7
mov ecx, dword [esp + 0x78]
xor eax, eax
mov dword [esp + 0x294], ebx
mov dword [esp + 0x154], ebp
lea edx, [esp + ecx*4 + 0x41c]
mov dword [esp + 0x58], edx
lea edx, [esp + ecx*4 + 0x45c]
mov dword [esp + 0x54], edx
mov dword [esp + 0x1a8], esi
xor esi, esi
mov edx, eax
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
mov ebp, dword [esp + 0x7c]
inc eax
mov dword [edx + ecx], esi
mov dword [edx + ebx], esi
mov dword [edx + ecx - 4], esi
mov dword [edx + ebx - 4], esi
add edx, 0xfffffff8
cmp eax, ebp
jb 0x650aba
mov esi, dword [esp + 0x1a8]
lea edx, [eax + eax + 1]
mov ebx, dword [esp + 0x294]
mov ebp, dword [esp + 0x154]
lea eax, [edx - 1]
cmp eax, dword [esp + 0x78]
jae 0x650b21
shl edx, 2
xor eax, eax
mov dword [esp + 0x308], edi
neg edx
mov edi, dword [esp + 0x78]
lea ecx, [esp + edi*4 + 0x45c]
mov dword [edx + ecx + 4], eax
lea ecx, [esp + edi*4 + 0x41c]
mov dword [edx + ecx + 4], eax
mov edi, dword [esp + 0x308]
mov ecx, edi
dec ecx
je 0x650c01
mov dword [esp + 0x308], edi
mov dword [esp + 0x1a8], esi
mov dword [esp + 0x294], ebx
mov dword [esp + 0x154], ebp
mov eax, dword [esp + 0x228]
mov ebp, eax
test eax, eax
je 0x650bde
lea ebx, [esp + ecx*4 + 0x460]
lea esi, [esp + ecx*4 + 0x420]
mov eax, dword [esp + ecx*4 + 0x820]
mov edx, dword [esp + ebp*4 + 0x7a0]
mov dword [esp + 0x338], eax
mov dword [esp + 0x33c], edx
mov eax, dword [esp + 0x338]
mul dword [esp + 0x33c]
mov dword [esp + 0x340], eax
mov dword [esp + 0x344], edx
mov edx, dword [esp + 0x340]
mov edi, dword [esi + ebp*4]
add edi, edx
mov dword [esi + ebp*4], edi
xor eax, eax
cmp edi, edx
mov edi, 0
setb al
add eax, dword [esp + 0x344]
mov edx, dword [esi + ebp*4 - 4]
add edx, eax
cmp edx, eax
mov eax, edi
mov dword [esi + ebp*4 - 4], edx
setb al
add dword [ebx + ebp*4 - 8], eax
dec ebp
jne 0x650b65
mov eax, dword [esp + 0x228]
dec ecx
jne 0x650b4d
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
mov ebx, dword [esp + 0x294]
mov ebp, dword [esp + 0x154]
mov eax, dword [esp + 0x228]
add esi, ebp
mov edx, dword [esp + 0x74]
lea edi, [edi + eax - 1]
mov eax, dword [esp + edx*4 + 0x420]
lea ecx, [esp + edx*4 + 0x820]
mov dword [esp + 0x5c], ecx
mov dword [ecx], eax
cmp edx, 1
je 0x650d23
mov eax, edi
mov dword [esp + 0x60], 0
shr eax, 1
je 0x651cbd
xor ecx, ecx
lea edx, [esp + edi*4 + 0x420]
mov dword [esp + 0x1c], edx
lea ebp, [esp + edi*4 + 0x820]
lea edx, [esp + edi*4 + 0x460]
mov dword [esp + 0x198], eax
mov dword [esp + 0x308], edi
mov dword [esp + 0x294], ebx
mov dword [esp + 0x19c], edx
mov dword [esp + 0x1a8], esi
mov edi, ecx
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x19c]
inc ecx
mov edx, dword [edi + ebx]
add eax, dword [edi + esi]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [edi + ebp], edx
mov edx, eax
setb dl
add edx, dword [edi + esi - 4]
mov esi, dword [edi + ebx - 4]
add esi, edx
cmp esi, edx
mov dword [edi + ebp - 4], esi
setb al
add edi, 0xfffffff8
cmp ecx, dword [esp + 0x198]
jb 0x650c89
mov dword [esp + 0x60], eax
lea edx, [ecx + ecx + 1]
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
mov ebx, dword [esp + 0x294]
lea eax, [edx - 1]
cmp eax, edi
jae 0x650d1d
shl edx, 2
lea ecx, [esp + edi*4 + 0x460]
neg edx
lea ebp, [esp + edi*4 + 0x420]
mov eax, dword [esp + 0x60]
add eax, dword [edx + ecx + 4]
lea ecx, [esp + edi*4 + 0x820]
add eax, dword [edx + ebp + 4]
mov dword [edx + ecx + 4], eax
mov edx, dword [esp + 0x5c]
mov eax, dword [edx]
jmp 0x650d23
mov eax, dword [esp + 0x5c]
mov eax, dword [eax]
test eax, eax
jne 0x650d45
mov edx, dword [esp + 0x74]
dec edx
lea eax, [esp + edx*4 + 0x820]
cmp dword [eax], 0
je 0x650d2b
mov dword [esp + 0x74], edx
mov dword [esp + 0x5c], eax
mov eax, edx
lea edi, [eax - 1]
mov eax, dword [esp + 0x824]
test eax, eax
jle 0x650de3
add eax, eax
dec esi
mov dword [esp + 0x824], eax
cmp dword [esp + 0x74], 2
jb 0x650de3
mov eax, dword [esp + 0x74]
lea edx, [eax - 1]
shr edx, 1
je 0x651cb3
mov dword [esp + 0x294], ebx
xor ecx, ecx
mov eax, dword [esp + ecx*8 + 0x828]
mov ebx, eax
shr ebx, 0x1f
add eax, eax
or dword [esp + ecx*8 + 0x824], ebx
mov ebx, dword [esp + ecx*8 + 0x82c]
mov ebp, ebx
shr ebp, 0x1f
add ebx, ebx
or eax, ebp
mov dword [esp + ecx*8 + 0x828], eax
mov dword [esp + ecx*8 + 0x82c], ebx
inc ecx
cmp ecx, edx
jb 0x650d7d
mov ebx, dword [esp + 0x294]
lea ecx, [ecx + ecx + 1]
lea eax, [ecx - 1]
cmp eax, edi
jae 0x650de3
mov edx, dword [esp + ecx*4 + 0x824]
mov eax, edx
shr eax, 0x1f
add edx, edx
or dword [esp + ecx*4 + 0x820], eax
mov dword [esp + ecx*4 + 0x824], edx
mov eax, dword [esp + 0x5c]
mov ebp, dword [esp + 0x1f0]
shr ebp, 5
cmp dword [eax], 0
je 0x650dfa
mov edi, dword [esp + 0x74]
cmp edi, ebp
jb 0x650e90
mov edi, ebp
mov eax, dword [esp + ebp*4 + 0x824]
shr eax, 0x1f
lea ecx, [esp + ebp*4 + 0x820]
mov edx, dword [ecx]
add edx, eax
cmp edx, eax
jae 0x650e7b
mov dword [ecx], edx
lea ecx, [esp + ebp*4 + 0x81c]
mov dword [esp + 0x820], 0
lea edi, [ebp - 1]
mov eax, dword [ecx]
cmp eax, 0xffffffff
jne 0x650e58
mov dword [esp + 0x294], ebx
dec edi
lea ecx, [esp + edi*4 + 0x820]
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x650e42
mov ebx, dword [esp + 0x294]
test edi, edi
je 0x650e61
inc eax
mov dword [ecx], eax
jmp 0x650e97
mov dword [esp + 0x824], 0x80000000
inc esi
mov edi, 1
lea ecx, [esp + 0x824]
jmp 0x650e97
mov dword [ecx], edx
test edx, edx
jne 0x650e97
dec edi
lea ecx, [esp + edi*4 + 0x820]
cmp dword [ecx], 0
je 0x650e81
jmp 0x650e97
lea ecx, [esp + edi*4 + 0x820]
test ebx, ebx
je 0x65138c
mov eax, dword [ecx]
lea ebp, [ebx + edi - 1]
mov edx, dword [esp + ebx*4 + 0x760]
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], edx
mov eax, dword [esp + 0x120]
mul dword [esp + 0x124]
mov dword [esp + 0x128], eax
mov dword [esp + 0x12c], edx
mov eax, dword [esp + 0x12c]
mov dword [esp + ebp*4 + 0x5a0], eax
mov eax, ebx
mov edx, dword [esp + 0x128]
mov dword [esp + ebp*4 + 0x5a4], edx
dec eax
je 0x650f99
mov dword [esp + 0x308], edi
mov dword [esp + 0x1a8], esi
xor esi, esi
mov dword [esp + 0x294], ebx
mov ebx, ecx
mov ecx, eax
mov edx, dword [ebx]
mov edi, dword [esp + ecx*4 + 0x760]
mov dword [esp + ebp*4 + 0x5e0], 0
mov dword [esp + 0x2b4], edx
mov dword [esp + 0x2b8], edi
mov eax, dword [esp + 0x2b4]
mul dword [esp + 0x2b8]
mov dword [esp + 0x2bc], eax
mov dword [esp + 0x2c0], edx
mov edx, dword [esp + 0x2bc]
mov eax, esi
mov edi, dword [esp + ebp*4 + 0x5a0]
add edi, edx
cmp edi, edx
mov dword [esp + ebp*4 + 0x5a0], edi
setb al
dec ebp
add eax, dword [esp + 0x2c0]
mov dword [esp + ebp*4 + 0x5a0], eax
dec ecx
jne 0x650f16
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
mov ebx, dword [esp + 0x294]
mov eax, ebp
mov dword [esp + ebp*4 + 0x5e0], 0
dec eax
js 0x651041
mov edx, ebp
shr edx, 1
je 0x651ca9
xor ecx, ecx
lea eax, [esp + ebp*4 + 0x59c]
mov dword [esp + 0x118], eax
lea eax, [esp + ebp*4 + 0x5dc]
mov dword [esp + 0x1a8], esi
mov dword [esp + 0x294], ebx
mov dword [esp + 0x308], edi
xor edi, edi
mov ebx, ecx
mov esi, dword [esp + 0x118]
inc ecx
mov dword [ebx + eax], edi
mov dword [ebx + esi], edi
mov dword [ebx + eax - 4], edi
mov dword [ebx + esi - 4], edi
add ebx, 0xfffffff8
cmp ecx, edx
jb 0x650fee
mov edi, dword [esp + 0x308]
lea edx, [ecx + ecx + 1]
mov esi, dword [esp + 0x1a8]
mov ebx, dword [esp + 0x294]
lea eax, [edx - 1]
cmp eax, ebp
jae 0x651041
shl edx, 2
lea ecx, [esp + ebp*4 + 0x5dc]
neg edx
lea ebp, [esp + ebp*4 + 0x59c]
xor eax, eax
mov dword [edx + ecx + 4], eax
mov dword [edx + ebp + 4], eax
mov ecx, edi
dec ecx
je 0x651107
mov dword [esp + 0x308], edi
mov dword [esp + 0x1a8], esi
mov edi, ebx
test ebx, ebx
je 0x6510f2
mov dword [esp + 0x294], ebx
lea esi, [esp + ecx*4 + 0x5e0]
lea ebp, [esp + ecx*4 + 0x5a0]
mov eax, dword [esp + ecx*4 + 0x820]
mov edx, dword [esp + edi*4 + 0x760]
mov dword [esp + 0x368], eax
mov dword [esp + 0x36c], edx
mov eax, dword [esp + 0x368]
mul dword [esp + 0x36c]
mov dword [esp + 0x370], eax
mov dword [esp + 0x374], edx
mov edx, dword [esp + 0x370]
mov ebx, dword [ebp + edi*4]
add ebx, edx
mov dword [ebp + edi*4], ebx
xor eax, eax
cmp ebx, edx
mov ebx, 0
setb al
add eax, dword [esp + 0x374]
mov edx, dword [ebp + edi*4 - 4]
add edx, eax
cmp edx, eax
mov eax, ebx
mov dword [ebp + edi*4 - 4], edx
setb al
add dword [esi + edi*4 - 8], eax
dec edi
jne 0x651077
mov ebx, dword [esp + 0x294]
dec ecx
jne 0x651058
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
add esi, dword [esp + 0x150]
lea ecx, [edi + ebx]
mov eax, dword [esp + ecx*4 + 0x5a0]
lea edi, [edi + ebx - 1]
lea ebx, [esp + ecx*4 + 0x820]
mov dword [ebx], eax
cmp ecx, 1
je 0x651248
mov ebp, edi
mov dword [esp + 0x11c], 0
shr ebp, 1
je 0x651c9f
xor edx, edx
lea eax, [esp + edi*4 + 0x5a0]
mov dword [esp + 0xc8], eax
lea eax, [esp + edi*4 + 0x5e0]
mov dword [esp + 0x244], ebp
mov dword [esp + 0xc4], ecx
mov dword [esp + 0x308], edi
mov dword [esp + 0x248], eax
lea eax, [esp + edi*4 + 0x820]
mov dword [esp + 0xc0], ebx
mov dword [esp + 0x1a8], esi
mov edi, edx
mov ebp, dword [esp + 0xc8]
mov ecx, dword [esp + 0x11c]
mov esi, dword [esp + 0x248]
inc edx
mov ebx, dword [edi + ebp]
add ecx, dword [edi + esi]
add ebx, ecx
cmp ebx, ecx
mov ecx, 0
mov dword [edi + eax], ebx
mov ebx, ecx
setb bl
add ebx, dword [edi + esi - 4]
mov esi, dword [edi + ebp - 4]
add esi, ebx
cmp esi, ebx
mov dword [edi + eax - 4], esi
setb cl
add edi, 0xfffffff8
cmp edx, dword [esp + 0x244]
jb 0x65119b
mov dword [esp + 0x11c], ecx
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
lea eax, [edx - 1]
cmp eax, edi
jae 0x651246
shl edx, 2
lea ebp, [esp + edi*4 + 0x5a0]
neg edx
mov dword [esp + 0xc4], ecx
lea ecx, [esp + edi*4 + 0x5e0]
mov eax, dword [esp + 0x11c]
add eax, dword [edx + ecx + 4]
lea ecx, [esp + edi*4 + 0x820]
add eax, dword [edx + ebp + 4]
mov dword [edx + ecx + 4], eax
mov eax, dword [ebx]
mov ecx, dword [esp + 0xc4]
jmp 0x651248
mov eax, dword [ebx]
test eax, eax
jne 0x65125c
dec ecx
lea ebx, [esp + ecx*4 + 0x820]
cmp dword [ebx], 0
je 0x65124c
lea edi, [ecx - 1]
mov eax, dword [esp + 0x824]
test eax, eax
jle 0x651306
add eax, eax
dec esi
mov dword [esp + 0x824], eax
cmp ecx, 2
jb 0x651306
lea edx, [ecx - 1]
shr edx, 1
je 0x651c95
mov dword [esp + 0x308], edi
xor ebp, ebp
mov dword [esp + 0x1a8], esi
mov eax, dword [esp + ebp*8 + 0x828]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + ebp*8 + 0x824], esi
mov esi, dword [esp + ebp*8 + 0x82c]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + ebp*8 + 0x828], eax
mov dword [esp + ebp*8 + 0x82c], esi
inc ebp
cmp ebp, edx
jb 0x651299
mov edi, dword [esp + 0x308]
lea eax, [ebp + ebp + 1]
mov esi, dword [esp + 0x1a8]
lea edx, [eax - 1]
cmp edx, edi
jae 0x651306
mov ebp, dword [esp + eax*4 + 0x824]
mov edx, ebp
shr edx, 0x1f
add ebp, ebp
or dword [esp + eax*4 + 0x820], edx
mov dword [esp + eax*4 + 0x824], ebp
cmp dword [ebx], 0
mov ebx, dword [esp + 0x1f0]
je 0x651314
mov edi, ecx
shr ebx, 5
cmp edi, ebx
jb 0x651385
mov edi, ebx
mov eax, dword [esp + ebx*4 + 0x824]
shr eax, 0x1f
lea ecx, [esp + ebx*4 + 0x820]
mov edx, dword [ecx]
add edx, eax
cmp edx, eax
jae 0x651370
mov dword [ecx], edx
lea ecx, [esp + ebx*4 + 0x81c]
mov dword [esp + 0x820], 0
lea edi, [ebx - 1]
mov eax, dword [ecx]
cmp eax, 0xffffffff
jne 0x651363
dec edi
lea ecx, [esp + edi*4 + 0x820]
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x651354
test edi, edi
jne 0x64f2a5
jmp 0x64f2ad
mov dword [ecx], edx
test edx, edx
jne 0x65138c
dec edi
lea ecx, [esp + edi*4 + 0x820]
cmp dword [ecx], 0
je 0x651376
jmp 0x65138c
lea ecx, [esp + edi*4 + 0x820]
mov ebx, dword [ecx]
mov ecx, dword [esp + 0x1dc]
mov eax, dword [esp + 0x1d0]
mov dword [esp + 0x1bc], ebx
lea ebx, [edi + ecx + 1]
mov edx, dword [esp + eax*4 + 0x7e0]
lea ecx, [ebx - 1]
mov dword [esp + 0x1c8], ecx
mov dword [esp + 0x1b8], edx
mov eax, dword [esp + 0x1b8]
mul dword [esp + 0x1bc]
mov dword [esp + 0x1c0], eax
mov dword [esp + 0x1c4], edx
mov ebp, dword [esp + 0x1c0]
lea eax, [esp + ebx*4 + 0x69c]
mov dword [eax + 4], ebp
mov ebp, edi
mov edx, dword [esp + 0x1c4]
mov dword [eax], edx
dec ebp
je 0x6514b2
mov dword [esp + 0x1ac], ebx
mov dword [esp + 0x1b0], eax
mov dword [esp + 0x308], edi
mov dword [esp + 0x1a8], esi
xor esi, esi
mov ebx, dword [esp + 0x1d0]
mov eax, dword [esp + ebx*4 + 0x7e0]
mov edx, dword [esp + ebp*4 + 0x820]
mov dword [esp + ecx*4 + 0x6e0], 0
mov dword [esp + 0x30c], eax
mov dword [esp + 0x310], edx
mov eax, dword [esp + 0x30c]
mul dword [esp + 0x310]
mov dword [esp + 0x314], eax
mov dword [esp + 0x318], edx
mov edx, dword [esp + 0x314]
mov eax, esi
mov edi, dword [esp + ecx*4 + 0x6a0]
add edi, edx
cmp edi, edx
mov dword [esp + ecx*4 + 0x6a0], edi
setb al
dec ecx
add eax, dword [esp + 0x318]
mov dword [esp + ecx*4 + 0x6a0], eax
dec ebp
jne 0x651423
mov eax, dword [esp + 0x1b0]
mov ebx, dword [esp + 0x1ac]
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
mov edx, ecx
mov dword [esp + ecx*4 + 0x6e0], 0
dec edx
js 0x651586
mov edx, ecx
shr edx, 1
mov dword [esp + 0x1cc], edx
je 0x651c8b
xor edx, edx
lea ebp, [esp + ecx*4 + 0x69c]
mov dword [esp + 0x1a4], ebp
lea ebp, [esp + ecx*4 + 0x6dc]
mov dword [esp + 0x1b4], ecx
mov dword [esp + 0x1ac], ebx
mov dword [esp + 0x1a8], esi
mov dword [esp + 0x308], edi
xor edi, edi
mov ecx, edx
mov ebx, ebp
mov ebp, dword [esp + 0x1a4]
mov esi, dword [esp + 0x1cc]
inc edx
mov dword [ecx + ebx], edi
mov dword [ecx + ebp], edi
mov dword [ecx + ebx - 4], edi
mov dword [ecx + ebp - 4], edi
add ecx, 0xfffffff8
cmp edx, esi
jb 0x65151e
mov ecx, dword [esp + 0x1b4]
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 0x1ac]
mov edi, dword [esp + 0x308]
mov esi, dword [esp + 0x1a8]
lea ebp, [edx - 1]
cmp ebp, ecx
jae 0x651586
shl edx, 2
lea ebp, [esp + ecx*4 + 0x6dc]
neg edx
lea ecx, [esp + ecx*4 + 0x69c]
mov dword [esp + 0x1b0], eax
xor eax, eax
mov dword [edx + ebp + 4], eax
mov dword [edx + ecx + 4], eax
mov eax, dword [esp + 0x1b0]
cmp dword [esp + 0x1dc], 0
je 0x651666
mov dword [esp + 0x1b0], eax
mov dword [esp + 0x1ac], ebx
mov dword [esp + 0x1a8], esi
mov ecx, dword [esp + 0x1dc]
mov esi, edi
test edi, edi
je 0x65164a
mov dword [esp + 0x308], edi
lea ebx, [esp + ecx*4 + 0x6e0]
lea ebp, [esp + ecx*4 + 0x6a0]
mov eax, dword [esp + ecx*4 + 0x7e0]
mov edx, dword [esp + esi*4 + 0x820]
mov dword [esp + 0x388], eax
mov dword [esp + 0x38c], edx
mov eax, dword [esp + 0x388]
mul dword [esp + 0x38c]
mov dword [esp + 0x390], eax
mov dword [esp + 0x394], edx
mov edx, dword [esp + 0x390]
mov edi, dword [ebp + esi*4]
add edi, edx
mov dword [ebp + esi*4], edi
xor eax, eax
cmp edi, edx
mov edi, 0
setb al
add eax, dword [esp + 0x394]
mov edx, dword [ebp + esi*4 - 4]
add edx, eax
cmp edx, eax
mov eax, edi
mov dword [ebp + esi*4 - 4], edx
setb al
add dword [ebx + esi*4 - 8], eax
dec esi
jne 0x6515cf
mov edi, dword [esp + 0x308]
dec ecx
jne 0x6515b0
mov eax, dword [esp + 0x1b0]
mov ebx, dword [esp + 0x1ac]
mov esi, dword [esp + 0x1a8]
mov edx, dword [esp + 0x1d4]
mov ebp, dword [esp + ebx*4 + 0x6a0]
mov dword [esp + ebx*4 + 0x7e0], ebp
lea edx, [esi + edx - 0x3fe]
cmp ebx, 1
je 0x651760
mov esi, dword [esp + 0x1c8]
xor ecx, ecx
shr esi, 1
je 0x651c81
xor ebp, ebp
lea edi, [esp + ebx*4 + 0x7dc]
mov dword [esp + 0x1a0], edi
lea edi, [esp + ebx*4 + 0x6dc]
mov dword [esp + 0x304], edi
mov dword [esp + 0x1ac], ebx
mov dword [esp + 0x300], esi
mov dword [esp + 0x2f4], edx
mov edi, ebp
mov ebx, dword [esp + 0x1a0]
mov esi, dword [esp + 0x304]
inc ebp
mov edx, dword [edi + eax]
add ecx, dword [edi + esi]
add edx, ecx
cmp edx, ecx
mov ecx, 0
mov dword [edi + ebx], edx
mov edx, ecx
setb dl
add edx, dword [edi + esi - 4]
mov esi, dword [edi + eax - 4]
add esi, edx
cmp esi, edx
mov dword [edi + ebx - 4], esi
setb cl
add edi, 0xfffffff8
cmp ebp, dword [esp + 0x300]
jb 0x6516d8
mov ebx, dword [esp + 0x1ac]
lea ebp, [ebp + ebp + 1]
mov edx, dword [esp + 0x2f4]
lea esi, [ebp - 1]
cmp esi, dword [esp + 0x1c8]
jae 0x651759
shl ebp, 2
lea esi, [esp + ebx*4 + 0x6dc]
sub eax, ebp
neg ebp
add ecx, dword [ebp + esi + 4]
add ecx, dword [eax + 4]
lea eax, [esp + ebx*4 + 0x7dc]
mov dword [ebp + eax + 4], ecx
mov ebp, dword [eax + 4]
jmp 0x651760
mov ebp, dword [esp + ebx*4 + 0x7e0]
test ebp, ebp
jne 0x651c75
dec ebx
lea ebp, [esp + ebx*4 + 0x7e0]
cmp dword [ebp], 0
je 0x651768
mov eax, dword [esp + 0x7e4]
test eax, eax
jle 0x651813
add eax, eax
dec edx
mov dword [esp + 0x7e4], eax
cmp ebx, 2
jb 0x651813
lea esi, [ebx - 1]
shr esi, 1
je 0x651c6b
mov dword [esp + 0x2f4], edx
xor edi, edi
mov eax, dword [esp + edi*8 + 0x7e8]
mov edx, eax
shr edx, 0x1f
add eax, eax
or dword [esp + edi*8 + 0x7e4], edx
mov edx, dword [esp + edi*8 + 0x7ec]
mov ecx, edx
shr ecx, 0x1f
add edx, edx
or eax, ecx
mov dword [esp + edi*8 + 0x7e8], eax
mov dword [esp + edi*8 + 0x7ec], edx
inc edi
cmp edi, esi
jb 0x6517a8
mov edx, dword [esp + 0x2f4]
lea esi, [edi + edi + 1]
lea eax, [ebx - 1]
lea edi, [esi - 1]
cmp edi, eax
jae 0x651816
mov ecx, dword [esp + esi*4 + 0x7e4]
mov edi, ecx
shr edi, 0x1f
add ecx, ecx
or dword [esp + esi*4 + 0x7e0], edi
mov dword [esp + esi*4 + 0x7e4], ecx
jmp 0x651816
lea eax, [ebx - 1]
cmp dword [ebp], 0
je 0x64e50a
mov eax, ebx
jmp 0x64e50a
mov ecx, eax
shr ecx, 1
je 0x651859
xor ebx, ebx
mov edx, 0x30
mov byte [esi + ebx*2], dl
mov byte [esi + ebx*2 + 1], dl
inc ebx
cmp ebx, ecx
jb 0x651834
lea ecx, [ebx + ebx + 1]
lea edx, [ecx - 1]
cmp edx, eax
jae 0x64db5c
mov byte [ecx + esi - 1], 0x30
jmp 0x64db5c
mov ecx, 1
jmp 0x651844
call fcn.00693023
mov dword [esp], ebp
mov dword [esp + 8], ebx
mov eax, dword [esp + 4]
mov ebp, dword [esp + 0x1e4]
mov esi, dword [esp + 0x2f8]
mov edx, dword [esp]
cmp edx, dword [esp + 0x18]
jae 0x651898
inc edx
mov dword [esp], edx
mov ecx, dword [esp + edx*4 + 0x7e0]
mov dword [esp + 0x1c], ecx
jmp 0x6518a0
mov dword [esp + 0x1c], 0
mov edx, dword [esp]
lea ecx, [edx + 1]
cmp ecx, dword [esp + 0x18]
ja 0x65190f
mov edx, dword [esp + 0x18]
sub edx, ecx
inc edx
mov dword [esp + 0x18], edx
shr edx, 1
mov dword [esp + 0xc], edx
mov edx, 0
je 0x651a07
mov ebx, dword [esp]
xor ecx, ecx
mov dword [esp + 0x2f8], esi
mov esi, dword [esp + 0xc]
lea ebx, [esp + ebx*4 + 0x7e4]
or edx, dword [ebx + ecx*8]
or edx, dword [ebx + ecx*8 + 4]
inc ecx
cmp ecx, esi
jb 0x6518df
mov esi, dword [esp + 0x2f8]
lea ecx, [ecx + ecx + 1]
lea ebx, [ecx - 1]
cmp ebx, dword [esp + 0x18]
jae 0x651911
mov ebx, dword [esp]
lea ecx, [ecx + ebx + 1]
or edx, dword [esp + ecx*4 + 0x7dc]
jmp 0x651911
xor edx, edx
mov ebx, dword [esp + 0x87c]
shr ebx, 0x1c
mov dword [esp + 4], eax
and ebx, 0xfffffff8
mov eax, dword [esp + 8]
and eax, 1
mov dword [esp + 0x1e4], ebp
mov ebp, dword [esp + 0x1c]
test ebp, 0x7fffffff
lea ecx, [ebx + eax*2]
mov eax, 0
mov ebx, eax
setne bl
or edx, ebx
mov edx, dword [esp + 0x210]
setne al
shr ebp, 0x1f
add ecx, ebp
mov ebp, dword [esp + 0x1e4]
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x10]
shr edx, cl
add eax, 0xfffffc02
mov ecx, dword [esp + 0x898]
and edx, 1
mov dword [ecx], eax
mov eax, dword [esp + 4]
test edx, edx
je 0x6519ad
movsx edx, byte [edi - 1]
cmp edx, dword [esp + 0x14]
jne 0x651998
mov ecx, dword [esp + 0x14]
dec edi
movsx edx, byte [edi - 1]
cmp edx, ecx
je 0x65198f
cmp edx, 0x39
je 0x6519a2
mov eax, 1
add edx, eax
mov byte [edi - 1], dl
cmp edi, ebp
je 0x651a11
jmp 0x6519bb
cmp dword [esp + 0x280], 0
jle 0x64daaa
test dword [esp + 0x888], 0x80
je 0x6519d7
cmp byte [edi - 1], 0x30
jne 0x651a00
dec edi
cmp byte [edi - 1], 0x30
je 0x6519ce
jmp 0x651a00
mov edx, dword [esp + 0x280]
sub edx, edi
lea ebx, [edx + ebp - 1]
test ebx, ebx
jl 0x651a00
lea eax, [ebx + 1]
cmp ebx, 0x60
jle 0x651a54
push eax
push 0x30
push edi
call fcn.0065d380
add esp, 0xc
lea edi, [edi + ebx + 1]
xor edx, edx
jmp 0x64dda9
mov ecx, 1
jmp 0x6518f6
mov edx, dword [esp + 0x898]
dec ebp
inc dword [edx]
cmp dword [esp + 0x1e0], 0
je 0x651a29
mov byte [ebp], 0x38
test byte [esp + 0x888], 2
je 0x6519bb
mov ecx, dword [esp + 0x280]
inc ecx
mov edx, dword [esp + 0x880]
cmp ecx, edx
jl 0x651a48
mov ecx, edx
mov dword [esp + 0x280], ecx
jmp 0x6519bb
mov edx, eax
shr edx, 1
je 0x651a96
mov dword [esp + 0x2f8], esi
xor ecx, ecx
mov esi, edx
mov edx, 0x30
mov byte [edi + ecx*2], dl
mov byte [edi + ecx*2 + 1], dl
inc ecx
cmp ecx, esi
jb 0x651a6a
mov esi, dword [esp + 0x2f8]
lea ecx, [ecx + ecx + 1]
lea edx, [ecx - 1]
cmp edx, eax
jae 0x6519fc
mov byte [ecx + edi - 1], 0x30
jmp 0x6519fc
mov ecx, 1
jmp 0x651a81
mov dword [esp], ebp
mov dword [esp + 0x1c], esi
mov dword [esp + 8], ebx
mov eax, dword [esp + 4]
mov ebp, dword [esp + 0x1e4]
mov esi, dword [esp + 0x2f8]
test ecx, ecx
je 0x65187e
jmp 0x6518a0
cmp dword [esp + 0x178], 0
jne 0x651b07
cmp dword [esp + 0x174], 0
je 0x651ae5
cmp dword [esp + 0x280], 0
js 0x651b07
cmp dword [esp + 0x21c], 0
jne 0x651b20
mov edx, dword [esp + 0x898]
mov ebp, ecx
mov dword [edx], ebp
neg ebp
je 0x64e17c
jmp 0x64e267
fstp st(0)
mov edx, dword [esp + 0x898]
mov eax, ecx
mov esi, dword [esp + 0x2f8]
mov dword [edx], eax
jmp 0x64daaa
fstp st(0)
mov ecx, dword [esp + 0x1e8]
add ecx, 4
mov edx, dword [esp + 0x210]
shr edx, cl
mov ebp, dword [esp + 0x1e4]
mov esi, dword [esp + 0x2f8]
test dl, 1
je 0x651b6f
mov edx, dword [esp + 0x27c]
xor eax, eax
test edx, edx
mov ecx, dword [esp + 0x898]
sete al
mov edi, ebp
mov byte [esi], 0x31
sub eax, edx
mov dword [ecx], eax
xor edx, edx
mov ebp, esi
jmp 0x64dda9
mov edx, dword [esp + 0x898]
mov eax, dword [esp + 0x180]
mov dword [edx], eax
jmp 0x64daaa
mov edx, 1
jmp 0x64e77f
lea ecx, [esp + 0x828]
jmp 0x65138c
mov ebx, 1
jmp 0x64f215
mov ecx, 1
jmp 0x64f125
mov eax, 1
jmp 0x64ef60
mov ecx, 8
lea ebp, [esp + 0x828]
jmp 0x64ee34
mov ebp, eax
mov eax, ebp
neg eax
mov ecx, eax
sar ecx, 3
movzx edx, word [ecx*2 + 0x74cde0]
lea ebx, [ecx + 1]
shr edx, 5
cmp edx, eax
jl 0x651be8
mov ebx, ecx
movzx edx, word [ebx*2 + 0x74cde0]
mov eax, edx
and eax, 0x1f
shr edx, 5
add edx, ebp
movsx esi, word [eax*2 + 0x74cf3a]
mov edi, dword [eax*8 + 0x74cd64]
mov eax, dword [eax*8 + 0x74cd60]
mov dword [esp + 0x144], esi
mov dword [esp + 0x7a4], edi
jmp 0x64ede0
mov edx, 1
jmp 0x64f98a
mov edx, 1
jmp 0x64f862
mov edx, 1
jmp 0x64f62d
mov edx, 1
jmp 0x65000a
mov edx, 1
jmp 0x64ff0c
mov edx, 1
jmp 0x64fd16
lea ecx, [esp + 0x830]
jmp 0x650e97
mov esi, 1
jmp 0x6517eb
lea ebp, [esp + ebx*4 + 0x7e0]
jmp 0x651776
mov ebp, 1
jmp 0x651728
mov edx, 1
jmp 0x651554
mov eax, 1
jmp 0x6512e3
mov edx, 1
jmp 0x651200
mov edx, 1
jmp 0x65101d
mov ecx, 1
jmp 0x650dc0
mov edx, 1
jmp 0x650ce4
mov edx, 1
jmp 0x650ae9
mov eax, 1
jmp 0x65084d
mov ecx, 1
jmp 0x650739
mov edx, 1
jmp 0x650504
lea ecx, [esp + 0x828]
jmp 0x65031a
mov ecx, 0x1b
jmp 0x6502dc
xor edx, edx
mov dword [esp + 0x728], edx
mov dword [esp + 0x724], edx
jmp 0x6502dc
mov eax, dword [0x74c80c]
xor esi, esi
mov edx, dword [0x74c808]
mov ecx, dword [0x74c804]
mov edi, dword [0x74c800]
mov dword [esp + 0x728], esi
mov dword [esp + 0x724], esi
movsx esi, word [0x74c982]
mov dword [esp + 0x824], eax
mov dword [esp + 0x828], edx
mov dword [esp + 0x82c], ecx
lea ecx, [esp + 0x830]
mov dword [ecx], edi
mov edi, 4
jmp 0x650936
mov edx, ecx
neg edx
mov esi, edx
sar esi, 3
mov dword [esp + 0x228], 4
movzx ebp, word [esi*2 + 0x74c720]
lea edi, [esi + 1]
shr ebp, 5
cmp ebp, edx
jl 0x651d98
mov edi, esi
movzx ebp, word [edi*2 + 0x74c720]
mov eax, ebp
and eax, 0x1f
shr ebp, 5
add ecx, ebp
movsx ebp, word [eax*2 + 0x74c966]
shl eax, 4
mov edx, dword [eax + 0x74c68c]
mov esi, dword [eax + 0x74c688]
mov edi, dword [eax + 0x74c684]
mov eax, dword [eax + 0x74c680]
mov dword [esp + 0x7a4], edx
mov dword [esp + 0x7a8], esi
mov dword [esp + 0x7ac], edi
mov dword [esp + 0x7b0], eax
jmp 0x650270
mov edx, dword [esp + 0x1e8]
mov eax, 1
mov ebp, dword [esp + 0x1e4]
mov esi, dword [esp + 0x2f8]
mov dword [esp + 0x14], 0x39
lea ecx, [edx + ebx*2 + 1]
mov edx, dword [esp + 0x210]
shr edx, cl
and edx, 1
jmp 0x65197d
mov edx, dword [esp + 0x1ec]
mov eax, 1
mov ebp, dword [esp + 0x1e4]
mov esi, dword [esp + 0x2f8]
mov dword [esp + 0x14], 0x39
jmp 0x65197d
xor eax, eax
test ebp, ebp
setge al
mov dword [esp + 0x1fc], eax
jmp 0x64eafb
mov dword [esp + 0x18c], 1
jmp 0x64ea69
mov ebp, 1
jmp 0x64e5f1
mov dword [esp + 0x7e8], eax
mov dword [esp + 0x7e4], eax
jmp 0x64db17