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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x8c4
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x2c0], eax
xor eax, eax
mov edx, dword [ebp + 0x18]
mov ecx, dword [0x7adbc0]
xor ecx, esp
mov dword [esp + 0x8b8], ecx
mov esi, dword [ebp + 0x24]
mov dword [esp + 0x838], eax
mov dword [esp + 0x84c], eax
mov dword [esp + 0x850], eax
mov dword [esp + 0x854], eax
mov dword [esp + 0x858], eax
mov dword [esp + 0x85c], eax
mov dword [esp + 0x860], eax
mov dword [esp + 0x864], eax
mov dword [esp + 0x868], eax
mov dword [esp + 0x86c], eax
mov dword [esp + 0x870], eax
mov dword [esp + 0x874], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x2c4], edx
test edx, edx
jle 0x648f0d
mov ecx, dword [ebp + 0x20]
mov edx, ecx
shr edx, 0x16
and edx, 7
test ecx, 0x80000000
jne 0x644579
test dl, 1
jne 0x644579
xor edx, edx
mov edi, dword [ebp + 0x20]
mov ebx, edi
and ebx, 0x80002000
xor ecx, ecx
mov dword [esp], eax
mov eax, edi
cmp ebx, 0x80002000
mov ebx, ecx
sete bl
and eax, 0x80001000
cmp eax, 0x80001000
mov eax, ecx
sete al
and edi, 0x80000800
cmp edi, 0x80000800
sete cl
shl ebx, 0xa
shl eax, 9
shl ecx, 8
or ebx, eax
or ebx, ecx
mov ecx, edx
bts ebx, edx
and ecx, 2
mov eax, dword [esp]
test dl, 4
je 0x6445e8
mov edx, 0xaaaa
test ecx, ecx
jne 0x6445df
mov edx, 0xfa
mov dword [esp + 0x22c], edx
jmp 0x64460f
test ecx, ecx
je 0x6445f9
mov dword [esp + 0x22c], 0xfa00
jmp 0x64460f
test dl, 1
mov edx, 0xa8a8
je 0x644608
mov edx, 0
mov dword [esp + 0x22c], edx
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x44], edx
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x48], edx
mov edx, dword [ebp + 0x14]
mov edi, edx
mov dword [esp + 0x40], ecx
mov ecx, edx
and ecx, 0x80000000
xor edi, ecx
mov dword [esp + 0x2a8], edx
mov dword [esp], edi
mov dword [esp + 0x4c], edi
mov dword [ebp + 0x14], edi
lea edi, [edi - 0x3fff0000]
mov dword [esp + 8], edi
and edx, 0x7fff0000
je 0x644662
cmp edx, 0x7fff0000
jne 0x644af0
mov eax, dword [esp]
xor eax, edx
or eax, dword [esp + 0x48]
or eax, dword [esp + 0x44]
or eax, dword [esp + 0x40]
jne 0x644734
xor eax, eax
mov dword [esp + 0x848], eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
test edx, edx
je 0x644714
test ecx, ecx
je 0x6446aa
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xfffffffc
jmp 0x6446b3
mov eax, dword [ebp + 0x34]
mov dword [eax], 4
test ebx, 0x400
je 0x6446d1
test ebx, 0x200
je 0x6446ca
mov eax, str.INFINITY
jmp 0x6446d6
mov eax, str.infinity
jmp 0x6446d6
mov eax, str.Infinity
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x6446ed
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x6446e2
mov ebx, dword [ebp + 0x30]
mov edx, edi
mov ecx, dword [ebp + 0x20]
sub edx, esi
and ecx, 0x40000000
shr ecx, 0x1d
mov dword [ebx], edx
mov edx, 4
shl edx, cl
mov eax, dword [ebp + 0x24]
add edx, 0xfffffffc
jmp 0x6448f4
test ecx, ecx
je 0x644726
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xffffffff
jmp 0x64482f
mov eax, dword [ebp + 0x34]
mov dword [eax], 1
jmp 0x64482f
test edx, edx
je 0x6447ec
xor eax, eax
mov dword [esp + 0x848], eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
test ebx, 0x400
je 0x6447a3
test dword [esp], 0x8000
jne 0x64477a
shr ecx, 0x1e
mov eax, 0x10
shr eax, cl
add eax, 0xfffffff6
jmp 0x644788
mov eax, 0xfffffffb
test ecx, ecx
jne 0x644788
mov eax, 5
mov edx, dword [ebp + 0x34]
mov dword [edx], eax
test ebx, 0x200
je 0x64479c
mov eax, 0x74c1a0
jmp 0x6447b1
mov eax, 0x74c1a4
jmp 0x6447b1
mov eax, dword [ebp + 0x34]
mov dword [eax], 0
mov eax, 0x74c1a8
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x6447c8
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x6447bd
mov ebx, dword [ebp + 0x30]
mov ecx, edi
mov edx, 0xa
test dword [ebp + 0x20], 0x40000000
mov eax, dword [ebp + 0x24]
jne 0x6447e3
mov edx, 0
sub ecx, esi
mov dword [ebx], ecx
jmp 0x6448f4
test ecx, ecx
je 0x6447fb
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xfffffffe
jmp 0x644804
mov eax, dword [ebp + 0x34]
mov dword [eax], 2
test dword [ebp + 0x20], 0x10000000
je 0x644963
xor eax, eax
mov dword [esp + 0x848], eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
test dword [ebp + 0x20], 0x80
je 0x644845
mov dword [esp + 0x2c0], 1
jmp 0x6448a4
test byte [ebp + 0x20], 2
je 0x644869
mov eax, dword [esp + 0x2c0]
inc eax
mov dword [esp + 0x2c0], eax
cmp eax, dword [ebp + 0x18]
jle 0x644882
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c4], eax
mov edx, dword [esp + 0x2c4]
mov edi, esi
lea eax, [edx - 1]
mov dword [esp + 0x2c0], eax
test edx, edx
jne 0x6448ab
jmp 0x6448d5
cmp dword [esp + 0x2c0], 0
jg 0x6448a4
mov edx, dword [ebp + 0x30]
mov eax, esi
mov byte [esi], 0x30
lea edi, [esi + 1]
mov dword [edx], 1
mov edx, 6
jmp 0x6448f4
dec dword [esp + 0x2c0]
mov edx, dword [esp + 0x2c0]
lea eax, [edx + 1]
cmp edx, 0x60
jle 0x648883
push eax
push 0x30
push esi
call fcn.0065d380
add esp, 0xc
mov eax, dword [esp + 0x2c0]
lea edi, [esi + eax + 1]
mov eax, dword [ebp + 0x30]
mov edx, 0xb
test dword [ebp + 0x20], 0x40000000
mov dword [eax], 1
mov eax, dword [ebp + 0x24]
jne 0x6448f4
mov edx, 0
mov ebx, dword [ebp + 0x28]
mov byte [edi], 0
test ebx, ebx
je 0x644904
mov ecx, eax
sub ecx, esi
mov dword [ebx], ecx
mov ecx, dword [ebp + 0x2c]
test ecx, ecx
je 0x644911
neg esi
add esi, edi
mov dword [ecx], esi
mov ecx, eax
test eax, eax
je 0x644928
cmp ecx, edi
jae 0x644928
movsx ebx, byte [ecx]
inc ecx
cmp ebx, 0x30
jne 0x64492d
test ecx, ecx
jne 0x644917
mov edx, 0xb
mov ecx, dword [ebp + 0x38]
test ecx, ecx
je 0x644936
mov dword [ecx], edx
mov ecx, dword [esp + 0x8b8]
mov dword [esp + 0x8b8], 0
xor ecx, esp
cmp ecx, dword [0x7adbc0]
jne 0x64887e
add esp, 0x8c4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0x14]
mov edi, edx
and edi, 0x7fff0000
shr edi, 0x10
mov dword [esp + 8], edi
je 0x6449b6
mov ecx, dword [ebp + 0x10]
mov eax, ecx
shl edx, 0xf
shr eax, 0x11
or edx, eax
mov eax, dword [ebp + 0xc]
mov edi, eax
shl ecx, 0xf
shr edi, 0x11
or ecx, edi
mov edi, dword [ebp + 8]
mov dword [esp + 4], edx
mov edx, edi
shl eax, 0xf
shr edx, 0x11
shl edi, 0xf
or eax, edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
jmp 0x644ad1
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x230], ebx
mov ebx, edi
mov ecx, dword [ebp + 0x10]
mov eax, ecx
shl ecx, 0x10
shr ebx, 0x10
or ecx, ebx
mov ebx, dword [ebp + 8]
mov dword [esp + 0x14], ecx
mov ecx, ebx
shl edi, 0x10
shr ecx, 0x10
shl edx, 0x10
or edi, ecx
shr eax, 0x10
shl ebx, 0x10
mov dword [esp + 0xc], ebx
or edx, eax
mov dword [esp + 0x10], edi
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x230]
jne 0x644a4f
mov ecx, edi
mov dword [esp + 0x230], ebx
xor edi, edi
mov dword [esp + 0x334], esi
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 8]
mov eax, ebx
add esi, 0xffffffe0
mov ebx, ecx
mov ecx, edx
mov edx, edi
test eax, eax
je 0x644a1e
mov dword [esp + 0x14], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov ebx, dword [esp + 0x230]
mov esi, dword [esp + 0x334]
cmp dword [esp + 4], 0
jle 0x644ad1
mov dword [esp], 0
mov eax, dword [esp]
mov edx, dword [esp + 4]
add edx, edx
inc eax
test edx, edx
jg 0x644a64
mov dword [esp], eax
mov dword [esp + 4], edx
cmp dword [esp], 0
je 0x644ad1
mov dword [esp + 0x230], ebx
mov ebx, eax
mov ecx, ebx
mov edx, dword [esp + 0x14]
neg ecx
mov edi, edx
shr edi, cl
add dword [esp + 8], ecx
mov eax, dword [esp + 0x10]
mov dword [esp], ecx
mov ecx, ebx
or dword [esp + 4], edi
mov edi, eax
shl edx, cl
mov ecx, dword [esp]
shr edi, cl
mov ecx, ebx
or edx, edi
mov edi, dword [esp + 0xc]
mov dword [esp + 0x14], edx
mov edx, edi
shl eax, cl
mov ecx, dword [esp]
shr edx, cl
mov ecx, ebx
shl edi, cl
or eax, edx
mov ebx, dword [esp + 0x230]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [esp + 4]
mov edx, dword [esp + 8]
shr eax, 0xf
shl edx, 0x10
movzx eax, ax
add edx, 0xc0010000
or edx, eax
mov dword [esp + 8], edx
jmp 0x644b08
test ecx, ecx
je 0x644aff
mov edx, dword [ebp + 0x34]
mov dword [edx], 0xfffffffd
jmp 0x644b08
mov edx, dword [ebp + 0x34]
mov dword [edx], 3
mov edx, ebx
and edx, 0x100
mov dword [esp + 0x228], edx
je 0x644d8d
and ebx, 0x200
mov eax, ebx
xor eax, 0x200
shr eax, 4
mov edx, dword [ebp + 0x14]
lea edi, [eax + 0x46]
mov ecx, edx
and ecx, 0x7fff0000
add eax, 8
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], eax
shr ecx, 0x10
mov dword [esp + 0x14], ecx
je 0x644b94
mov ecx, dword [ebp + 0x10]
or edx, 0xffff0000
mov eax, ecx
shl edx, 0xf
shr eax, 0x11
or edx, eax
mov eax, dword [ebp + 0xc]
mov edi, eax
shl ecx, 0xf
shr edi, 0x11
or ecx, edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x10], edx
mov edx, edi
shl eax, 0xf
shr edx, 0x11
shl edi, 0xf
or eax, edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], edi
jmp 0x644caf
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x230], ebx
mov ebx, edi
mov ecx, dword [ebp + 0x10]
mov eax, ecx
shl ecx, 0x10
shr ebx, 0x10
or ecx, ebx
mov ebx, dword [ebp + 8]
mov dword [esp + 4], ecx
mov ecx, ebx
shl edi, 0x10
shr ecx, 0x10
shl edx, 0x10
or edi, ecx
shr eax, 0x10
shl ebx, 0x10
mov dword [esp + 0xc], ebx
or edx, eax
mov dword [esp + 8], edi
mov dword [esp + 0x10], edx
mov ebx, dword [esp + 0x230]
jne 0x644c2d
mov edx, edi
mov dword [esp + 0x230], ebx
xor edi, edi
mov dword [esp + 0x334], esi
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
mov esi, ecx
add ebx, 0xffffffe0
mov ecx, edx
mov edx, eax
mov eax, edi
test esi, esi
je 0x644bfc
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov ebx, dword [esp + 0x230]
mov esi, dword [esp + 0x334]
cmp dword [esp + 0x10], 0
jle 0x644caf
mov dword [esp], 0
mov eax, dword [esp]
mov edx, dword [esp + 0x10]
add edx, edx
inc eax
test edx, edx
jg 0x644c42
mov dword [esp], eax
mov dword [esp + 0x10], edx
cmp dword [esp], 0
je 0x644caf
mov dword [esp + 0x230], ebx
mov ebx, eax
mov ecx, ebx
mov edx, dword [esp + 4]
neg ecx
mov edi, edx
shr edi, cl
add dword [esp + 0x14], ecx
mov eax, dword [esp + 8]
mov dword [esp], ecx
mov ecx, ebx
or dword [esp + 0x10], edi
mov edi, eax
shl edx, cl
mov ecx, dword [esp]
shr edi, cl
mov ecx, ebx
or edx, edi
mov edi, dword [esp + 0xc]
mov dword [esp + 4], edx
mov edx, edi
shl eax, cl
mov ecx, dword [esp]
shr edx, cl
mov ecx, ebx
shl edi, cl
or eax, edx
mov ebx, dword [esp + 0x230]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edi
xor eax, eax
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 4]
cmp eax, edi
mov dword [esp + 0x83c], ecx
mov ecx, 1
mov edx, dword [esp + 8]
adc ecx, 0
test edx, edx
mov eax, dword [esp + 0xc]
je 0x644cdb
mov ecx, 3
test eax, eax
mov dword [esp + 0x844], edx
je 0x644ceb
mov ecx, 4
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x840], edi
lea edi, [esi + 1]
mov dword [esp + 0x848], eax
mov eax, edi
mov byte [esi], 0x30
lea edx, [edx - 1]
mov dword [esp], edx
mov edx, 8
mov dword [esp + 0x230], ebx
mov dword [esp + 0x334], esi
mov dword [esp + 0x20], 1
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1fc], eax
mov ebx, dword [esp]
mov esi, dword [esp + 0x10]
mov ecx, esi
dec edx
shr ecx, 0x1c
shl esi, 4
cmp ecx, 0xa
jge 0x644d4a
lea eax, [ecx + 0x30]
jmp 0x644d5c
cmp dword [esp + 0x230], 0
je 0x644d59
lea eax, [ecx + 0x37]
jmp 0x644d5c
lea eax, [ecx + 0x57]
mov byte [edi], al
inc edi
test ebx, ebx
jle 0x648b24
dec ebx
test edx, edx
jne 0x644d37
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x24]
jae 0x6488bc
mov edx, 8
inc eax
mov dword [esp + 0x20], eax
mov esi, dword [esp + eax*4 + 0x838]
jmp 0x644d37
mov edi, dword [esp + 8]
test edi, edi
mov edx, dword [esp + 0xc]
mov dword [esp + 0x83c], eax
mov eax, 0
mov dword [esp + 0x848], edx
setl al
mov ecx, dword [esp + 0x10]
add eax, 0x4d104d42
mov edx, dword [esp + 0x14]
mov dword [esp + 0x844], ecx
mov dword [esp + 0x840], edx
mov dword [esp + 0x184], edi
mov dword [esp + 0x188], eax
mov eax, dword [esp + 0x184]
imul dword [esp + 0x188]
mov dword [esp + 0x18c], edx
mov edx, dword [esp + 0x2a8]
mov edi, ebx
mov ecx, dword [ebp + 0x20]
and edi, 2
shr edx, 0x1c
and ecx, 2
mov dword [esp + 0x1b4], ecx
mov ecx, ebx
movsx eax, word [esp + 0x18e]
and edx, 0xfffffff8
inc eax
and ecx, 0x41
mov dword [esp + 0x2a8], edx
xor edx, edx
mov dword [esp + 0x19c], eax
lea eax, [esi + 1]
and ebx, 0x14
mov dword [esp + 0x198], edx
mov dword [esp + 0x230], ebx
mov dword [esp + 0x190], ecx
mov dword [esp + 0x194], edi
mov dword [esp + 0x210], edx
mov dword [esp + 0x1fc], eax
mov dword [esp + 0x334], esi
jmp 0x644e74
mov edi, dword [esp + 0x1f8]
neg edi
lea eax, [edi + 1]
mov dword [esp + 0x19c], eax
cmp dword [esp + 0x1b4], 0
je 0x644f15
cmp dword [esp + 0x2c0], 0
jge 0x644eae
mov eax, dword [esp + 0x2c0]
neg eax
mov dword [esp + 0x198], eax
mov dword [esp + 0x210], eax
mov dword [esp + 0x2c0], 0
mov eax, dword [esp + 0x2c0]
mov edx, dword [esp + 0x19c]
lea ecx, [eax + edx]
mov dword [esp + 0x2c4], ecx
cmp ecx, dword [ebp + 0x18]
jle 0x644efe
mov eax, edx
sub ecx, dword [ebp + 0x18]
neg ecx
mov ebx, dword [esp + 0x210]
add ecx, dword [esp + 0x198]
test ebx, ebx
mov edx, dword [ebp + 0x30]
mov esi, dword [ebp + 0x18]
je 0x644eec
mov ebx, ecx
mov dword [edx], eax
mov dword [esp + 0x210], ebx
mov dword [esp + 0x2c4], esi
jmp 0x644f21
cmp dword [esp + 0x2c4], 0
jle 0x648b4b
mov eax, edx
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
jmp 0x644f21
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x19c]
mov dword [edx], eax
mov edi, eax
neg edi
jne 0x64510f
mov esi, dword [ebp + 0x14]
mov eax, esi
and eax, 0x7fff0000
mov edx, dword [ebp + 0x10]
shr eax, 0x10
je 0x644f7d
or esi, 0xffff0000
mov ebx, edx
shl esi, 0xf
shr ebx, 0x11
mov ecx, dword [ebp + 0xc]
or esi, ebx
mov ebx, ecx
shl edx, 0xf
shr ebx, 0x11
or edx, ebx
mov ebx, dword [ebp + 8]
mov dword [esp + 0x154], edx
mov edx, ebx
shl ecx, 0xf
shr edx, 0x11
or ecx, edx
mov dword [esp + 0x150], ecx
shl ebx, 0xf
jmp 0x6450a1
mov ebx, dword [ebp + 0xc]
mov ecx, ebx
mov dword [esp + 0x324], eax
mov eax, edx
shl edx, 0x10
shr ecx, 0x10
or edx, ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x154], edx
mov edx, ecx
shl ebx, 0x10
shr edx, 0x10
or ebx, edx
mov dword [esp + 0x150], ebx
mov ebx, ecx
shl esi, 0x10
shr eax, 0x10
shl ebx, 0x10
or esi, eax
mov eax, dword [esp + 0x324]
jne 0x644fff
mov dword [esp + 0x1f8], edi
xor ecx, ecx
mov edx, dword [esp + 0x150]
mov edi, dword [esp + 0x154]
mov esi, edi
add eax, 0xffffffe0
mov edi, edx
mov edx, ebx
mov ebx, ecx
test esi, esi
je 0x644fdb
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], edx
mov edi, dword [esp + 0x1f8]
test esi, esi
jle 0x6450a1
mov dword [esp + 0xb8], 0
mov edx, dword [esp + 0xb8]
add esi, esi
inc edx
test esi, esi
jg 0x645019
mov dword [esp + 0xb8], edx
cmp dword [esp + 0xb8], 0
je 0x6450a1
mov ecx, edx
neg ecx
add eax, ecx
mov dword [esp + 0x324], eax
mov eax, dword [esp + 0x154]
mov dword [esp + 0x1f8], edi
mov edi, eax
shr edi, cl
or esi, edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ecx
mov ecx, edx
mov esi, dword [esp + 0x150]
mov edi, esi
shl eax, cl
mov ecx, dword [esp + 0x14]
shr edi, cl
mov ecx, edx
or eax, edi
mov dword [esp + 0x154], eax
mov eax, ebx
shl esi, cl
mov ecx, dword [esp + 0x14]
shr eax, cl
mov ecx, edx
or esi, eax
mov dword [esp + 0x150], esi
shl ebx, cl
mov eax, dword [esp + 0x324]
mov edi, dword [esp + 0x1f8]
mov esi, dword [esp + 0x18]
xor edx, edx
add eax, 0xffffc002
mov dword [esp + 0x83c], esi
mov esi, dword [esp + 0x154]
cmp edx, esi
mov edx, 1
mov dword [esp + 0x840], esi
adc edx, 0
mov esi, dword [esp + 0x150]
test esi, esi
mov dword [esp + 0x844], esi
je 0x6450de
mov edx, 3
mov esi, 0x71
test ebx, ebx
mov dword [esp + 0x848], ebx
je 0x6450f3
mov edx, 4
xor ebx, ebx
mov dword [esp + 0x20c], esi
mov dword [esp + 0x214], ebx
mov dword [esp + 0x1f8], edi
jmp 0x648197
xor eax, eax
mov dword [esp + 0x878], eax
mov dword [esp + 0x87c], eax
mov dword [esp + 0x880], eax
mov dword [esp + 0x884], eax
mov dword [esp + 0x888], eax
mov dword [esp + 0x88c], eax
mov dword [esp + 0x890], eax
mov dword [esp + 0x894], eax
mov dword [esp + 0x898], eax
mov dword [esp + 0x89c], eax
mov dword [esp + 0x8a0], eax
mov dword [esp + 0x8a4], eax
mov dword [esp + 0x8a8], eax
mov dword [esp + 0x8ac], eax
mov dword [esp + 0x8b0], eax
mov dword [esp + 0x8b4], eax
cmp edi, 0xfffffeaa
jl 0x645191
cmp edi, 0x159
jle 0x645198
mov esi, 0x80
jmp 0x6451ac
mov esi, 0x80
cmp dword [esp + 0x2c4], 0x11
jg 0x6451ac
mov esi, 0x40
xor ebx, ebx
cmp esi, 0x80
mov dword [esp + 0x20c], esi
setne bl
mov dword [esp + 0x214], ebx
mov dword [esp + 0x1f8], edi
mov eax, dword [ebp + 0x14]
mov ecx, eax
and ecx, 0x7fff0000
mov edx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
shr ecx, 0x10
mov dword [esp + 0x1f4], ecx
je 0x645217
or eax, 0xffff0000
mov ecx, ebx
shl eax, 0xf
mov edi, esi
shr ecx, 0x11
or eax, ecx
mov ecx, edx
shl ebx, 0xf
shr edi, 0x11
shl esi, 0xf
or ebx, edi
shr ecx, 0x11
shl edx, 0xf
or esi, ecx
jmp 0x6452d3
mov edi, esi
mov ecx, ebx
shl ebx, 0x10
shr edi, 0x10
or ebx, edi
mov edi, edx
shl esi, 0x10
shr edi, 0x10
shl eax, 0x10
or esi, edi
shr ecx, 0x10
shl edx, 0x10
or eax, ecx
jne 0x645259
mov ecx, dword [esp + 0x1f4]
xor edi, edi
mov eax, ebx
add ecx, 0xffffffe0
mov ebx, esi
mov esi, edx
mov edx, edi
test eax, eax
je 0x645243
mov dword [esp + 0x1f4], ecx
test eax, eax
jle 0x6452d3
mov dword [esp + 0x170], 0
mov ecx, dword [esp + 0x170]
add eax, eax
inc ecx
test eax, eax
jg 0x64526f
mov dword [esp + 0x170], ecx
cmp dword [esp + 0x170], 0
je 0x6452d3
mov dword [esp + 0x148], edx
mov edi, ebx
mov edx, ecx
neg edx
mov ecx, edx
shr edi, cl
mov ecx, dword [esp + 0x170]
or eax, edi
shl ebx, cl
mov ecx, edx
mov edi, esi
shr edi, cl
add dword [esp + 0x1f4], edx
or ebx, edi
mov ecx, dword [esp + 0x170]
shl esi, cl
mov ecx, edx
mov edx, dword [esp + 0x148]
mov edi, edx
shr edi, cl
mov ecx, dword [esp + 0x170]
or esi, edi
shl edx, cl
mov dword [esp + 0x83c], eax
xor eax, eax
cmp eax, ebx
mov dword [esp + 0x840], ebx
mov ebx, 1
adc ebx, 0
test esi, esi
mov dword [esp + 0x844], esi
je 0x6452fd
mov ebx, 3
test edx, edx
mov dword [esp + 0x848], edx
mov dword [esp + 0x7f8], 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 + 0x820], eax
mov dword [esp + 0x824], eax
mov dword [esp + 0x828], eax
mov dword [esp + 0x82c], eax
mov dword [esp + 0x830], eax
mov dword [esp + 0x834], eax
je 0x64536f
mov ebx, 4
mov edi, dword [esp + 0x1f8]
cmp dword [esp + 0x20c], 0x40
jne 0x645a1a
mov eax, edi
lea edx, [eax + 0x2f]
cmp edx, 0x5e
ja 0x6453f8
mov esi, dword [esp + 0x19c]
xor eax, eax
mov dword [esp + 0x800], eax
mov dword [esp + 0x7fc], eax
mov edx, edi
lea eax, [esi*8]
neg eax
mov esi, 2
movsx ecx, word [edx*2 + 0x74ccfe]
mov dword [esp + 0x1e0], ecx
mov edi, dword [eax + 0x74cb1c]
mov edx, dword [eax + 0x74cb18]
mov dword [esp + 0x87c], edi
mov dword [esp + 0x880], edx
test edx, edx
jne 0x648bef
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x6453e6
jmp 0x647cc1
cmp dword [esp + 0x1f8], 0
js 0x648c20
mov ecx, eax
sar ecx, 3
movzx edx, word [ecx*2 + 0x74cee2]
lea esi, [ecx + 1]
shr edx, 5
cmp edx, eax
jle 0x64541f
mov esi, ecx
movzx edx, word [esi*2 + 0x74cee0]
mov ecx, edx
and ecx, 0x1f
shr edx, 5
neg edx
add edx, eax
mov eax, dword [ecx*8 + 0x74ce64]
movsx edi, word [ecx*2 + 0x74cf58]
mov dword [esp + 0x7fc], eax
mov dword [esp + 0x138], edi
mov eax, dword [ecx*8 + 0x74ce60]
movsx ecx, word [edx*2 + 0x74ccfe]
mov esi, dword [edx*8 + 0x74cb1c]
mov edx, dword [edx*8 + 0x74cb18]
mov dword [esp + 0x800], eax
mov dword [esp + 0x13c], ecx
mov ecx, 2
mov dword [esp + 0x87c], esi
mov dword [esp + 0x880], edx
test edx, edx
jne 0x648c0f
dec ecx
lea edi, [esp + ecx*4 + 0x878]
cmp dword [edi], 0
lea esi, [ecx*4]
je 0x645496
mov dword [esp + 0x12c], eax
mov eax, dword [edi]
mov dword [esp + 0x128], eax
mov eax, dword [esp + 0x128]
mul dword [esp + 0x12c]
mov dword [esp + 0x130], eax
mov dword [esp + 0x134], edx
mov eax, dword [edi]
mov dword [esp + 0x2f4], eax
mov edx, dword [esp + 0x134]
mov edi, dword [esp + 0x130]
mov eax, dword [esp + 0x7fc]
mov dword [esp + ecx*4 + 0x6bc], 0
mov dword [esp + ecx*4 + 0x67c], edx
mov dword [esp + ecx*4 + 0x680], edi
mov dword [esp + 0x2f8], eax
mov eax, dword [esp + 0x2f4]
mul dword [esp + 0x2f8]
mov dword [esp + 0x2fc], eax
mov dword [esp + 0x300], edx
mov edi, dword [esp + 0x2fc]
xor edx, edx
mov eax, dword [esp + ecx*4 + 0x67c]
add eax, edi
cmp eax, edi
mov dword [esp + ecx*4 + 0x6b8], edx
setb dl
mov dword [esp + ecx*4 + 0x67c], eax
mov eax, ecx
add edx, dword [esp + 0x300]
mov dword [esp + ecx*4 + 0x678], edx
dec eax
js 0x645639
mov edx, ecx
shr edx, 1
je 0x648c05
mov dword [esp + 0x2dc], 0
lea edi, [esp + esi + 0x6b8]
mov dword [esp + 4], edi
lea edi, [esp + esi + 0x678]
mov dword [esp], edi
xor edi, edi
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x2e0], esi
mov dword [esp + 0x2d8], ecx
mov dword [esp + 0x3e0], eax
mov ecx, dword [esp]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0x2dc]
lea eax, [esi*8]
inc esi
neg eax
mov dword [ebx + eax - 4], edi
mov dword [ecx + eax - 4], edi
mov dword [ebx + eax - 8], edi
mov dword [ecx + eax - 8], edi
cmp esi, edx
jb 0x6455c2
mov dword [esp + 0x2dc], esi
mov edx, esi
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x2e0]
mov eax, dword [esp + 0x3e0]
lea edi, [edx + edx + 1]
mov ecx, dword [esp + 0x2d8]
lea edx, [edi - 1]
cmp edx, ecx
jae 0x645639
shl edi, 2
xor edx, edx
neg edi
mov dword [esp + 0x3f4], ebx
lea ebx, [esp + esi + 0x6b8]
lea esi, [esp + esi + 0x678]
mov dword [edi + ebx], edx
mov dword [edi + esi], edx
mov ebx, dword [esp + 0x3f4]
test eax, eax
je 0x6456fc
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x2d8], ecx
mov dword [esp + 0x3e0], eax
mov esi, 2
lea ebx, [esp + eax*4 + 0x6b8]
lea ecx, [esp + eax*4 + 0x678]
mov eax, dword [esp + 0x3e0]
mov edi, dword [esp + esi*4 + 0x7f8]
mov dword [esp + 0x3d4], edi
mov edx, dword [esp + eax*4 + 0x878]
mov dword [esp + 0x3d0], edx
mov eax, dword [esp + 0x3d0]
mul dword [esp + 0x3d4]
mov dword [esp + 0x3d8], eax
mov dword [esp + 0x3dc], edx
mov edi, dword [esp + 0x3d8]
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 + 0x3dc]
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 0x645669
mov eax, dword [esp + 0x3e0]
dec eax
jne 0x64564f
mov ebx, dword [esp + 0x3f4]
mov ecx, dword [esp + 0x2d8]
mov edx, dword [esp + 0x13c]
lea esi, [ecx + 2]
mov edi, dword [esp + 0x138]
mov eax, dword [esp + ecx*4 + 0x680]
add edi, edx
mov dword [esp + 0x1e0], edi
lea edi, [esp + ecx*4 + 0x880]
mov dword [edi], eax
lea edx, [ecx + 1]
mov dword [esp + 0x140], edx
cmp esi, 1
je 0x645885
mov dword [esp + 0x144], 0
shr edx, 1
mov dword [esp + 0x28c], edx
je 0x648bfb
xor edx, edx
lea eax, [esp + ecx*4 + 0x6bc]
mov dword [esp + 0xc0], eax
lea eax, [esp + ecx*4 + 0x67c]
mov dword [esp + 0x288], eax
lea eax, [esp + ecx*4 + 0x87c]
mov dword [esp + 0x284], eax
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x2d8], ecx
mov dword [esp + 0xbc], edi
mov dword [esp + 0x34c], esi
mov ecx, edx
mov ebx, dword [esp + 0xc0]
mov eax, dword [esp + 0x144]
nop
lea esi, [esi]
mov esi, dword [esp + 0x288]
inc edx
add eax, dword [ecx + ebx]
mov edi, dword [esp + 0x284]
mov dword [esp + 0x290], edx
mov edx, dword [ecx + esi]
add edx, eax
cmp edx, eax
mov eax, 0
mov dword [ecx + edi], edx
mov edx, eax
setb dl
add edx, dword [ecx + ebx - 4]
mov esi, dword [ecx + esi - 4]
add esi, edx
cmp esi, edx
mov edx, dword [esp + 0x290]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x28c]
jb 0x6457b0
mov dword [esp + 0x144], eax
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 0x3f4]
mov edi, dword [esp + 0xbc]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x2d8]
lea eax, [edx - 1]
cmp eax, dword [esp + 0x140]
jae 0x645883
shl edx, 2
neg edx
mov dword [esp + 0x3f4], ebx
lea ebx, [esp + ecx*4 + 0x6bc]
mov eax, dword [esp + 0x144]
mov dword [esp + 0x34c], esi
lea esi, [esp + ecx*4 + 0x67c]
add eax, dword [edx + ebx + 4]
lea ecx, [esp + ecx*4 + 0x87c]
add eax, dword [edx + esi + 4]
mov dword [edx + ecx + 4], eax
mov eax, dword [edi]
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
jmp 0x645885
mov eax, dword [edi]
test eax, eax
jne 0x645896
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x645889
mov eax, dword [esp + 0x87c]
test eax, eax
jle 0x645971
mov ecx, dword [esp + 0x13c]
add eax, eax
mov edx, dword [esp + 0x138]
mov dword [esp + 0x87c], eax
lea edx, [edx + ecx - 1]
mov dword [esp + 0x1e0], edx
cmp esi, 2
jb 0x645967
lea edx, [esi - 1]
shr edx, 1
je 0x648cc0
mov dword [esp + 0xbc], edi
xor ecx, ecx
mov dword [esp + 0x34c], esi
mov eax, dword [esp + ecx*8 + 0x880]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + ecx*8 + 0x87c], esi
mov esi, dword [esp + ecx*8 + 0x884]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + ecx*8 + 0x880], eax
mov dword [esp + ecx*8 + 0x884], esi
inc ecx
cmp ecx, edx
jb 0x6458eb
mov edi, dword [esp + 0xbc]
lea eax, [ecx + ecx + 1]
mov esi, dword [esp + 0x34c]
lea edx, [eax - 1]
lea ecx, [esi - 1]
cmp edx, ecx
jae 0x64595f
mov ecx, dword [esp + eax*4 + 0x87c]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + eax*4 + 0x878], edx
mov dword [esp + eax*4 + 0x87c], ecx
mov edx, dword [edi]
jmp 0x645961
mov edx, dword [edi]
test edx, edx
je 0x645970
jmp 0x64597a
cmp dword [edi], 0
jne 0x647cc1
dec esi
cmp esi, 2
jb 0x647cba
mov eax, dword [esp + 0x884]
shr eax, 0x1f
mov edx, dword [esp + 0x880]
add edx, eax
mov dword [esp + 0x880], edx
cmp edx, eax
jae 0x6459fb
mov dword [esp + 0x878], 0
mov esi, 1
cmp dword [esp + 0x87c], 0xffffffff
je 0x6459bd
lea edi, [esp + 0x87c]
mov eax, dword [edi]
jmp 0x6459d0
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x6459bd
test esi, esi
je 0x6459d8
inc eax
mov dword [edi], eax
jmp 0x647cc1
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x647cc1
mov esi, 2
test edx, edx
jne 0x648bef
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x645a08
jmp 0x647cc1
mov dword [esp + 0x800], eax
mov dword [esp + 0x7fc], eax
mov dword [esp + 0x7b8], 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
mov dword [esp + 0x7e0], eax
mov dword [esp + 0x7e4], eax
mov dword [esp + 0x7e8], eax
mov dword [esp + 0x7ec], eax
mov dword [esp + 0x7f0], eax
mov dword [esp + 0x7f4], eax
cmp dword [esp + 0x1f8], 0xfffffdea
jge 0x64623a
mov edx, dword [esp + 0x20c]
shr edx, 5
cmp dword [esp + 0x1f8], 0xfffff000
jle 0x645afa
mov esi, 0x1000
mov dword [esp + 0x2bc], 0
mov dword [esp + 0x16c], esi
mov dword [esp + 0x160], edi
mov dword [esp + 0x7c8], eax
mov dword [esp + 0x7c4], eax
mov dword [esp + 0x7c0], eax
mov dword [esp + 0x7bc], eax
mov eax, 3
mov dword [esp + 0x168], ecx
mov esi, dword [esp + 0x2bc]
mov edi, dword [esp + 0x164]
jmp 0x645b67
mov eax, edi
mov esi, 0x1000
mov dword [esp + 0x168], ecx
mov dword [esp + 0x16c], esi
lea edi, [eax + 0x1000]
mov eax, 3
mov dword [esp + 0x160], edi
mov ecx, eax
shl ecx, 4
movsx edi, word [eax*2 + 0x74c95e]
mov esi, dword [ecx + 0x74c64c]
mov dword [esp + 0x7bc], esi
mov esi, dword [ecx + 0x74c648]
mov dword [esp + 0x7c0], esi
mov esi, dword [ecx + 0x74c644]
mov ecx, dword [ecx + 0x74c640]
mov dword [esp + 0x7c4], esi
mov esi, 4
mov dword [esp + 0x7c8], ecx
mov dword [esp + 0x164], edi
lea ecx, [edx - 1]
mov dword [esp + 0x158], ecx
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x15c], edx
mov ecx, dword [esp + 0x16c]
mov edi, dword [esp + 0x160]
jmp 0x645b9d
mov eax, dword [esp + 0x1a0]
sar ecx, 1
dec eax
js 0x6461f8
mov dword [esp + 0x1a0], eax
mov eax, ecx
neg eax
cmp edi, eax
jg 0x645b96
add edi, ecx
test esi, esi
je 0x646212
mov ebx, dword [esp + 0x1a0]
movsx eax, word [ebx*2 + 0x74c95e]
shl ebx, 4
mov dword [esp + 0x168], eax
mov edx, dword [ebx + 0x74c64c]
mov eax, dword [ebx + 0x74c648]
mov dword [esp + 0x7fc], edx
mov dword [esp + 0x800], eax
mov edx, dword [ebx + 0x74c644]
mov ebx, dword [ebx + 0x74c640]
mov eax, dword [esp + esi*4 + 0x7b8]
mov dword [esp + 0x804], edx
mov dword [esp + 0x808], ebx
mov dword [esp + 0xdc], ebx
lea ebx, [esi + 3]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xd8]
mul dword [esp + 0xdc]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], edx
mov eax, dword [esp + 0xe4]
mov edx, dword [esp + 0xe0]
mov dword [esp + ebx*4 + 0x578], eax
mov eax, 3
mov dword [esp + ebx*4 + 0x57c], edx
mov dword [esp + 0x16c], ecx
mov ecx, eax
mov dword [esp + 0x160], edi
mov edx, dword [esp + esi*4 + 0x7b8]
mov edi, dword [esp + ecx*4 + 0x7f8]
mov dword [esp + ebx*4 + 0x5b8], 0
mov dword [esp + 0x2c8], edx
mov dword [esp + 0x2cc], edi
mov eax, dword [esp + 0x2c8]
mul dword [esp + 0x2cc]
mov dword [esp + 0x2d0], eax
mov dword [esp + 0x2d4], edx
mov edi, dword [esp + 0x2d0]
mov edx, dword [esp + ebx*4 + 0x578]
add edx, edi
cmp edx, edi
mov dword [esp + ebx*4 + 0x578], edx
mov edx, 0
setb dl
dec ebx
add edx, dword [esp + 0x2d4]
mov dword [esp + ebx*4 + 0x578], edx
dec ecx
jne 0x645c71
mov eax, ebx
mov ecx, dword [esp + 0x16c]
dec eax
mov edi, dword [esp + 0x160]
mov dword [esp + ebx*4 + 0x5b8], 0
js 0x645dd5
mov eax, ebx
shr eax, 1
mov dword [esp + 0xf4], eax
je 0x648c8c
xor eax, eax
lea edx, [esp + ebx*4 + 0x574]
mov dword [esp + 0xd4], edx
lea edx, [esp + ebx*4 + 0x5b4]
mov dword [esp + 0xd0], edx
mov dword [esp + 0x2bc], esi
mov dword [esp + 0xcc], ebx
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x160], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp + 0xd0]
mov ebx, dword [esp + 0xd4]
mov esi, dword [esp + 0xf4]
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 0x645d6d
mov esi, dword [esp + 0x2bc]
lea edx, [eax + eax + 1]
mov ebx, dword [esp + 0xcc]
mov ecx, dword [esp + 0x16c]
mov edi, dword [esp + 0x160]
lea eax, [edx - 1]
cmp eax, ebx
jae 0x645dd5
shl edx, 2
xor eax, eax
neg edx
mov dword [esp + 0x2bc], esi
lea esi, [esp + ebx*4 + 0x5b4]
lea ebx, [esp + ebx*4 + 0x574]
mov dword [edx + esi + 4], eax
mov dword [edx + ebx + 4], eax
mov esi, dword [esp + 0x2bc]
mov edx, esi
dec edx
je 0x645eae
mov dword [esp + 0x2bc], esi
mov eax, 4
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x160], edi
mov dword [esp + 0x3b8], edx
mov esi, eax
lea ebx, [esp + edx*4 + 0x5b8]
lea ecx, [esp + edx*4 + 0x578]
mov eax, dword [esp + 0x3b8]
mov edi, dword [esp + esi*4 + 0x7f8]
mov dword [esp + 0x3ac], edi
mov edx, dword [esp + eax*4 + 0x7b8]
mov dword [esp + 0x3a8], edx
mov eax, dword [esp + 0x3a8]
mul dword [esp + 0x3ac]
mov dword [esp + 0x3b0], eax
mov dword [esp + 0x3b4], edx
mov edi, dword [esp + 0x3b0]
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 + 0x3b4]
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 0x645e0f
mov edx, dword [esp + 0x3b8]
mov eax, 4
dec edx
jne 0x645df8
mov esi, dword [esp + 0x2bc]
mov ecx, dword [esp + 0x16c]
mov edi, dword [esp + 0x160]
mov ebx, dword [esp + 0x164]
lea edx, [esi + 4]
add ebx, dword [esp + 0x168]
lea eax, [esp + esi*4 + 0x7c8]
mov dword [esp + 0x164], ebx
mov ebx, dword [eax - 0x240]
mov dword [esp + 0xec], edx
mov dword [esp + 0xe8], eax
mov dword [eax], ebx
lea eax, [esi + 3]
cmp edx, 1
je 0x64604e
mov edx, eax
mov dword [esp + 0xf0], 0
shr edx, 1
mov dword [esp + 0x25c], edx
je 0x648c82
xor edx, edx
lea ebx, [esp + esi*4 + 0x7c4]
mov dword [esp + 0x258], ebx
lea ebx, [esp + esi*4 + 0x584]
mov dword [esp + 0xb4], ebx
lea ebx, [esp + esi*4 + 0x5c4]
mov dword [esp + 0x254], ebx
mov dword [esp + 0xb0], eax
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x2bc], esi
mov dword [esp + 0x160], edi
mov ecx, edx
mov ebx, dword [esp + 0xb4]
mov eax, dword [esp + 0xf0]
lea esi, [esi]
lea edi, [edi]
mov esi, dword [esp + 0x254]
inc edx
mov edi, dword [esp + 0x258]
mov dword [esp + 0x260], 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 + 0x260]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x25c]
jb 0x645f70
mov dword [esp + 0xf0], eax
lea edx, [edx + edx + 1]
mov esi, dword [esp + 0x2bc]
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0x16c]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x646045
shl edx, 2
lea ebx, [esp + esi*4 + 0x584]
neg edx
mov dword [esp + 0xb0], eax
mov dword [esp + 0x16c], ecx
lea ecx, [esp + esi*4 + 0x5c4]
mov eax, dword [esp + 0xf0]
lea esi, [esp + esi*4 + 0x7c4]
add eax, dword [edx + ecx + 4]
add eax, dword [edx + ebx + 4]
mov dword [edx + esi + 4], eax
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0x16c]
mov ebx, dword [edx]
jmp 0x64604e
mov edx, dword [esp + 0xe8]
mov ebx, dword [edx]
test ebx, ebx
jne 0x646079
mov edx, dword [esp + 0xec]
dec edx
lea eax, [esp + edx*4 + 0x7b8]
cmp dword [eax], 0
je 0x646059
mov dword [esp + 0xec], edx
mov dword [esp + 0xe8], eax
mov eax, edx
lea eax, [eax - 1]
mov edx, dword [esp + 0x7bc]
test edx, edx
jle 0x646135
dec dword [esp + 0x164]
add edx, edx
mov dword [esp + 0x7bc], edx
cmp dword [esp + 0xec], 2
jb 0x646135
mov edx, dword [esp + 0xec]
lea ebx, [edx - 1]
shr ebx, 1
je 0x648c78
mov dword [esp + 0x16c], ecx
xor esi, esi
mov dword [esp + 0x160], edi
mov edx, dword [esp + esi*8 + 0x7c0]
mov ecx, edx
shr ecx, 0x1f
add edx, edx
or dword [esp + esi*8 + 0x7bc], ecx
mov ecx, dword [esp + esi*8 + 0x7c4]
mov edi, ecx
shr edi, 0x1f
add ecx, ecx
or edx, edi
mov dword [esp + esi*8 + 0x7c0], edx
mov dword [esp + esi*8 + 0x7c4], ecx
inc esi
cmp esi, ebx
jb 0x6460c8
mov ecx, dword [esp + 0x16c]
lea edx, [esi + esi + 1]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x646135
mov esi, dword [esp + edx*4 + 0x7bc]
mov ebx, esi
shr ebx, 0x1f
add esi, esi
or dword [esp + edx*4 + 0x7b8], ebx
mov dword [esp + edx*4 + 0x7bc], esi
mov edx, dword [esp + 0xe8]
mov esi, eax
cmp dword [edx], 0
je 0x64614a
mov esi, dword [esp + 0xec]
cmp esi, dword [esp + 0x15c]
jb 0x6461e9
mov esi, dword [esp + 0x15c]
mov eax, esi
mov edx, dword [esp + eax*4 + 0x7bc]
shr edx, 0x1f
mov eax, dword [esp + eax*4 + 0x7b8]
add eax, edx
cmp eax, edx
jae 0x6461d1
mov edx, esi
mov esi, dword [esp + 0x158]
mov dword [esp + edx*4 + 0x7b8], eax
lea edx, [esp + edx*4 + 0x7b4]
mov dword [esp + 0x7b8], 0
mov eax, dword [edx]
cmp eax, 0xffffffff
jne 0x6461af
dec esi
lea edx, [esp + esi*4 + 0x7b8]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x6461a0
test esi, esi
je 0x6461b8
inc eax
mov dword [edx], eax
jmp 0x6461e9
inc dword [esp + 0x164]
mov esi, 1
mov dword [esp + 0x7bc], 0x80000000
jmp 0x6461e9
mov edx, esi
mov dword [esp + edx*4 + 0x7b8], eax
test eax, eax
jne 0x6461e9
dec esi
cmp dword [esp + esi*4 + 0x7b8], 0
je 0x6461de
sar ecx, 1
dec dword [esp + 0x1a0]
jns 0x645bad
mov dword [esp + 0x2bc], esi
mov ebx, dword [esp + 0x3f4]
mov ecx, dword [esp + 0x168]
jmp 0x6469b2
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x160], edi
mov ebx, dword [esp + 0x3f4]
mov eax, dword [esp + 0x1a0]
mov edx, dword [esp + 0x15c]
jmp 0x645b21
cmp dword [esp + 0x1f8], 0x216
jle 0x64698b
mov edx, dword [esp + 0x20c]
shr edx, 5
cmp dword [esp + 0x1f8], 0x1000
jge 0x6462b8
mov esi, 0x1000
mov dword [esp + 0x2bc], 0
mov dword [esp + 0x100], esi
mov dword [esp + 0x160], edi
mov dword [esp + 0x7c8], eax
mov dword [esp + 0x7c4], eax
mov dword [esp + 0x7c0], eax
mov dword [esp + 0x7bc], eax
mov eax, 3
mov dword [esp + 0x168], ecx
mov esi, dword [esp + 0x2bc]
mov edi, dword [esp + 0x164]
jmp 0x646325
mov eax, edi
mov esi, 0x1000
mov dword [esp + 0x168], ecx
mov dword [esp + 0x100], esi
lea edi, [eax - 0x1000]
mov eax, 3
mov dword [esp + 0x160], edi
mov ecx, eax
shl ecx, 4
movsx edi, word [eax*2 + 0x74c97a]
mov esi, dword [ecx + 0x74c7cc]
mov dword [esp + 0x7bc], esi
mov esi, dword [ecx + 0x74c7c8]
mov dword [esp + 0x7c0], esi
mov esi, dword [ecx + 0x74c7c4]
mov ecx, dword [ecx + 0x74c7c0]
mov dword [esp + 0x7c4], esi
mov esi, 4
mov dword [esp + 0x7c8], ecx
mov dword [esp + 0x164], edi
lea ecx, [edx - 1]
mov dword [esp + 0xf8], ecx
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0xfc], edx
mov ecx, dword [esp + 0x100]
mov edi, dword [esp + 0x160]
jmp 0x64635b
mov eax, dword [esp + 0x14c]
sar ecx, 1
dec eax
js 0x6461f8
mov dword [esp + 0x14c], eax
cmp edi, ecx
jl 0x646354
sub edi, ecx
test esi, esi
je 0x646963
mov ebx, dword [esp + 0x14c]
movsx eax, word [ebx*2 + 0x74c97a]
shl ebx, 4
mov dword [esp + 0x168], eax
mov edx, dword [ebx + 0x74c7cc]
mov eax, dword [ebx + 0x74c7c8]
mov dword [esp + 0x7fc], edx
mov dword [esp + 0x800], eax
mov edx, dword [ebx + 0x74c7c4]
mov ebx, dword [ebx + 0x74c7c0]
mov eax, dword [esp + esi*4 + 0x7b8]
mov dword [esp + 0x804], edx
mov dword [esp + 0x808], ebx
mov dword [esp + 0x30], ebx
lea ebx, [esi + 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 + ebx*4 + 0x3f8], eax
mov eax, 3
mov dword [esp + ebx*4 + 0x3fc], edx
mov dword [esp + 0x100], ecx
mov ecx, eax
mov dword [esp + 0x160], edi
mov edx, dword [esp + esi*4 + 0x7b8]
mov edi, dword [esp + ecx*4 + 0x7f8]
mov dword [esp + ebx*4 + 0x438], 0
mov dword [esp + 0x244], edx
mov dword [esp + 0x248], edi
mov eax, dword [esp + 0x244]
mul dword [esp + 0x248]
mov dword [esp + 0x24c], eax
mov dword [esp + 0x250], edx
mov edi, dword [esp + 0x24c]
mov edx, dword [esp + ebx*4 + 0x3f8]
add edx, edi
cmp edx, edi
mov dword [esp + ebx*4 + 0x3f8], edx
mov edx, 0
setb dl
dec ebx
add edx, dword [esp + 0x250]
mov dword [esp + ebx*4 + 0x3f8], edx
dec ecx
jne 0x646413
mov eax, ebx
mov ecx, dword [esp + 0x100]
dec eax
mov edi, dword [esp + 0x160]
mov dword [esp + ebx*4 + 0x438], 0
js 0x64655f
mov eax, ebx
shr eax, 1
mov dword [esp + 0x48], eax
je 0x648caa
xor eax, eax
lea edx, [esp + ebx*4 + 0x3f4]
mov dword [esp + 0x28], edx
lea edx, [esp + ebx*4 + 0x434]
mov dword [esp + 0x24], edx
mov dword [esp + 0x2bc], esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x100], ecx
mov dword [esp + 0x160], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x48]
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 0x6464fa
mov esi, dword [esp + 0x2bc]
lea edx, [eax + eax + 1]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x100]
mov edi, dword [esp + 0x160]
lea eax, [edx - 1]
cmp eax, ebx
jae 0x64655f
shl edx, 2
xor eax, eax
neg edx
mov dword [esp + 0x2bc], esi
lea esi, [esp + ebx*4 + 0x434]
lea ebx, [esp + ebx*4 + 0x3f4]
mov dword [edx + esi + 4], eax
mov dword [edx + ebx + 4], eax
mov esi, dword [esp + 0x2bc]
mov edx, esi
dec edx
je 0x646638
mov dword [esp + 0x2bc], esi
mov eax, 4
mov dword [esp + 0x100], ecx
mov dword [esp + 0x160], edi
mov dword [esp + 0x37c], edx
mov esi, eax
lea ebx, [esp + edx*4 + 0x438]
lea ecx, [esp + edx*4 + 0x3f8]
mov eax, dword [esp + 0x37c]
mov edi, dword [esp + esi*4 + 0x7f8]
mov dword [esp + 0x370], edi
mov edx, dword [esp + eax*4 + 0x7b8]
mov dword [esp + 0x36c], edx
mov eax, dword [esp + 0x36c]
mul dword [esp + 0x370]
mov dword [esp + 0x374], eax
mov dword [esp + 0x378], edx
mov edi, dword [esp + 0x374]
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 + 0x378]
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 0x646599
mov edx, dword [esp + 0x37c]
mov eax, 4
dec edx
jne 0x646582
mov esi, dword [esp + 0x2bc]
mov ecx, dword [esp + 0x100]
mov edi, dword [esp + 0x160]
mov ebx, dword [esp + 0x164]
lea edx, [esi + 4]
add ebx, dword [esp + 0x168]
lea eax, [esp + esi*4 + 0x7c8]
mov dword [esp + 0x164], ebx
mov ebx, dword [eax - 0x3c0]
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], eax
mov dword [eax], ebx
lea eax, [esi + 3]
cmp edx, 1
je 0x6467a9
mov edx, eax
mov dword [esp + 0x44], 0
shr edx, 1
mov dword [esp + 0x1ac], edx
je 0x648ca0
xor edx, edx
lea ebx, [esp + esi*4 + 0x404]
mov dword [esp + 0x10], ebx
lea ebx, [esp + esi*4 + 0x444]
mov dword [esp + 0x1a8], ebx
lea ebx, [esp + esi*4 + 0x7c4]
mov dword [esp + 0x1a4], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x100], ecx
mov dword [esp + 0x2bc], esi
mov dword [esp + 0x160], edi
mov ecx, edx
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x44]
nop
lea esi, [esi]
mov esi, dword [esp + 0x1a8]
inc edx
mov edi, dword [esp + 0x1a4]
mov dword [esp + 0x1b0], 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 + 0x1b0]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x1ac]
jb 0x6466e0
mov dword [esp + 0x44], eax
lea edx, [edx + edx + 1]
mov esi, dword [esp + 0x2bc]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x100]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x6467a3
shl edx, 2
lea ebx, [esp + esi*4 + 0x404]
neg edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x100], ecx
lea ecx, [esp + esi*4 + 0x444]
mov eax, dword [esp + 0x44]
lea esi, [esp + esi*4 + 0x7c4]
add eax, dword [edx + ecx + 4]
add eax, dword [edx + ebx + 4]
mov dword [edx + esi + 4], eax
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x100]
mov ebx, dword [edx]
jmp 0x6467a9
mov edx, dword [esp + 0x3c]
mov ebx, dword [edx]
test ebx, ebx
jne 0x6467cb
mov edx, dword [esp + 0x40]
dec edx
lea eax, [esp + edx*4 + 0x7b8]
cmp dword [eax], 0
je 0x6467b1
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], eax
mov eax, edx
lea eax, [eax - 1]
mov edx, dword [esp + 0x7bc]
test edx, edx
jle 0x646881
dec dword [esp + 0x164]
add edx, edx
mov dword [esp + 0x7bc], edx
cmp dword [esp + 0x40], 2
jb 0x646881
mov edx, dword [esp + 0x40]
lea ebx, [edx - 1]
shr ebx, 1
je 0x648c96
mov dword [esp + 0x100], ecx
xor esi, esi
mov dword [esp + 0x160], edi
mov edx, dword [esp + esi*8 + 0x7c0]
mov ecx, edx
shr ecx, 0x1f
add edx, edx
or dword [esp + esi*8 + 0x7bc], ecx
mov ecx, dword [esp + esi*8 + 0x7c4]
mov edi, ecx
shr edi, 0x1f
add ecx, ecx
or edx, edi
mov dword [esp + esi*8 + 0x7c0], edx
mov dword [esp + esi*8 + 0x7c4], ecx
inc esi
cmp esi, ebx
jb 0x646814
mov ecx, dword [esp + 0x100]
lea edx, [esi + esi + 1]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x646881
mov esi, dword [esp + edx*4 + 0x7bc]
mov ebx, esi
shr ebx, 0x1f
add esi, esi
or dword [esp + edx*4 + 0x7b8], ebx
mov dword [esp + edx*4 + 0x7bc], esi
mov edx, dword [esp + 0x3c]
mov esi, eax
cmp dword [edx], 0
je 0x646890
mov esi, dword [esp + 0x40]
cmp esi, dword [esp + 0xfc]
jb 0x64693d
mov esi, dword [esp + 0xfc]
mov eax, esi
mov edx, dword [esp + eax*4 + 0x7bc]
shr edx, 0x1f
mov eax, dword [esp + eax*4 + 0x7b8]
add eax, edx
cmp eax, edx
jae 0x646925
mov edx, esi
mov esi, dword [esp + 0xf8]
mov dword [esp + edx*4 + 0x7b8], eax
lea edx, [esp + edx*4 + 0x7b4]
mov dword [esp + 0x7b8], 0
mov eax, dword [edx]
cmp eax, 0xffffffff
jne 0x646903
mov dword [esp + 0x160], edi
dec esi
lea edx, [esp + esi*4 + 0x7b8]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x6468ed
mov edi, dword [esp + 0x160]
test esi, esi
je 0x64690c
inc eax
mov dword [edx], eax
jmp 0x64693d
inc dword [esp + 0x164]
mov esi, 1
mov dword [esp + 0x7bc], 0x80000000
jmp 0x64693d
mov edx, esi
mov dword [esp + edx*4 + 0x7b8], eax
test eax, eax
jne 0x64693d
dec esi
cmp dword [esp + esi*4 + 0x7b8], 0
je 0x646932
sar ecx, 1
dec dword [esp + 0x14c]
jns 0x64636b
mov dword [esp + 0x2bc], esi
mov ebx, dword [esp + 0x3f4]
mov ecx, dword [esp + 0x168]
jmp 0x6469b2
mov dword [esp + 0x100], ecx
mov dword [esp + 0x160], edi
mov ebx, dword [esp + 0x3f4]
mov eax, dword [esp + 0x14c]
mov edx, dword [esp + 0xfc]
jmp 0x6462df
mov dword [esp + 0x7c8], eax
mov dword [esp + 0x7c4], eax
mov dword [esp + 0x7c0], eax
mov dword [esp + 0x7bc], eax
mov dword [esp + 0x2bc], 0
lea eax, [edi + 0x1b]
cmp eax, 0x1a
ja 0x646a1f
movsx eax, word [edi*2 + 0x74c95e]
shl edi, 4
mov dword [esp + 0x1e0], eax
mov edx, dword [edi + 0x74c63c]
mov ecx, dword [edi + 0x74c638]
mov esi, dword [edi + 0x74c634]
mov edi, dword [edi + 0x74c630]
mov dword [esp + 0x87c], edx
mov dword [esp + 0x880], ecx
mov dword [esp + 0x884], esi
mov esi, 4
mov dword [esp + 0x888], edi
test edi, edi
jne 0x648cb4
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x646a0d
jmp 0x647743
xor eax, eax
mov dword [esp + 0x778], 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
mov dword [esp + 0x7a0], eax
mov dword [esp + 0x7a4], eax
mov dword [esp + 0x7a8], eax
mov dword [esp + 0x7ac], eax
mov dword [esp + 0x7b0], eax
mov dword [esp + 0x7b4], eax
test edi, edi
jl 0x648e8f
cmp edi, 0x37
jl 0x646b07
mov edx, edi
sar edx, 3
mov dword [esp + 0x240], 4
movzx ecx, word [edx*2 + 0x74c8a2]
lea esi, [edx + 1]
shr ecx, 5
cmp ecx, edi
jle 0x646ab4
mov esi, edx
movzx ecx, word [esi*2 + 0x74c8a0]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
sub edi, ecx
movsx ecx, word [eax*2 + 0x74c982]
shl eax, 4
mov edx, dword [eax + 0x74c80c]
mov dword [esp + 0x7fc], edx
mov esi, dword [eax + 0x74c808]
mov edx, dword [eax + 0x74c804]
mov eax, dword [eax + 0x74c800]
mov dword [esp + 0x800], esi
mov dword [esp + 0x804], edx
mov dword [esp + 0x808], eax
jmp 0x646b12
mov dword [esp + 0x240], 0
cmp edi, 0x37
je 0x648e36
lea eax, [edi - 0x1b]
mov dword [esp + 0x98], eax
test eax, eax
jle 0x648e21
mov esi, eax
movsx eax, word [esi*2 + 0x74ccfe]
mov edx, dword [esi*8 + 0x74cb1c]
mov edi, dword [esi*8 + 0x74cb18]
mov dword [esp + 0x94], eax
mov eax, 2
mov dword [esp + 0x77c], edx
mov dword [esp + 0x780], edi
mov dword [esp + 0x294], eax
test edi, edi
jne 0x648e17
dec eax
cmp dword [esp + eax*4 + 0x778], 0
je 0x646b6e
mov dword [esp + 0x294], eax
mov edi, 0x1b
movsx edx, word [edi*2 + 0x74ccfe]
mov esi, 2
mov dword [esp + 0x1e0], edx
mov edx, dword [edi*8 + 0x74cb1c]
mov edi, dword [edi*8 + 0x74cb18]
mov dword [esp + 0x87c], edx
mov dword [esp + 0x880], edi
test edi, edi
jne 0x648e0b
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x646bbd
cmp dword [esp + 0x98], 0
jle 0x6471de
mov eax, dword [esp + 0x294]
lea edx, [eax + esi - 1]
mov dword [esp + 0xa4], edx
mov edx, dword [edi]
mov dword [esp + 0x84], edx
mov edx, dword [esp + eax*4 + 0x778]
mov dword [esp + 0x88], edx
mov eax, dword [esp + 0x84]
mul dword [esp + 0x88]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], edx
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0x90]
mov dword [esp + eax*4 + 0x4f8], edx
mov edx, dword [esp + 0x8c]
mov dword [esp + eax*4 + 0x4fc], edx
mov eax, dword [esp + 0x294]
dec eax
je 0x646cf9
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
mov dword [esp + 0x168], ecx
mov ecx, eax
mov ebx, dword [esp + 0xa4]
mov edx, dword [edi]
mov esi, dword [esp + ecx*4 + 0x778]
mov dword [esp + ebx*4 + 0x538], 0
mov dword [esp + 0x2ac], edx
mov dword [esp + 0x2b0], esi
mov eax, dword [esp + 0x2ac]
mul dword [esp + 0x2b0]
mov dword [esp + 0x2b4], eax
mov dword [esp + 0x2b8], edx
mov esi, dword [esp + 0x2b4]
mov edx, dword [esp + ebx*4 + 0x4f8]
add edx, esi
cmp edx, esi
mov dword [esp + ebx*4 + 0x4f8], edx
mov edx, 0
setb dl
dec ebx
add edx, dword [esp + 0x2b8]
mov dword [esp + ebx*4 + 0x4f8], edx
dec ecx
jne 0x646c6c
mov dword [esp + 0xa4], ebx
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x168]
mov edx, dword [esp + 0xa4]
mov dword [esp + edx*4 + 0x538], 0
dec edx
js 0x646de2
mov edx, dword [esp + 0xa4]
shr edx, 1
mov dword [esp + 0xac], edx
je 0x648e01
mov edi, dword [esp + 0xa4]
xor eax, eax
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
lea edx, [esp + edi*4 + 0x4f4]
mov dword [esp + 0x80], edx
lea edx, [esp + edi*4 + 0x534]
mov dword [esp + 0x7c], edx
xor edi, edi
mov dword [esp + 0x168], ecx
mov edx, eax
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x80]
mov esi, dword [esp + 0xac]
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 0x646d75
mov ebx, dword [esp + 0x3f4]
lea edx, [eax + eax + 1]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x168]
lea edi, [edx - 1]
cmp edi, dword [esp + 0xa4]
jae 0x646de2
shl edx, 2
xor eax, eax
mov edi, dword [esp + 0xa4]
neg edx
mov dword [esp + 0x3f4], ebx
lea ebx, [esp + edi*4 + 0x534]
mov dword [edx + ebx + 4], eax
lea ebx, [esp + edi*4 + 0x4f4]
mov dword [edx + ebx + 4], eax
mov ebx, dword [esp + 0x3f4]
mov eax, esi
dec eax
je 0x646ec7
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
mov dword [esp + 0x168], ecx
mov edx, dword [esp + 0x294]
mov esi, edx
test edx, edx
je 0x646eab
mov dword [esp + 0x3a4], eax
lea ebx, [esp + eax*4 + 0x538]
lea ecx, [esp + eax*4 + 0x4f8]
mov eax, dword [esp + 0x3a4]
mov edi, dword [esp + esi*4 + 0x778]
mov dword [esp + 0x398], edi
mov edx, dword [esp + eax*4 + 0x878]
mov dword [esp + 0x394], edx
mov eax, dword [esp + 0x394]
mul dword [esp + 0x398]
mov dword [esp + 0x39c], eax
mov dword [esp + 0x3a0], edx
mov edi, dword [esp + 0x39c]
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 + 0x3a0]
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 0x646e26
mov eax, dword [esp + 0x3a4]
mov edx, dword [esp + 0x294]
dec eax
jne 0x646e07
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x168]
mov edi, dword [esp + 0x294]
mov edx, dword [esp + 0x1e0]
add edx, dword [esp + 0x94]
mov dword [esp + 0x1e0], edx
lea edx, [esi + edi]
mov dword [esp + 0xa0], edx
lea esi, [esi + edi - 1]
lea edi, [esp + edx*4 + 0x878]
mov dword [esp + 0x9c], edi
cmp edx, 1
mov edx, dword [edi - 0x380]
mov dword [edi], edx
je 0x647032
mov eax, esi
mov dword [esp + 0xa8], 0
shr eax, 1
je 0x648df7
xor edx, edx
lea edi, [esp + esi*4 + 0x4f8]
mov dword [esp + 0x78], edi
lea edi, [esp + esi*4 + 0x538]
mov dword [esp + 0x238], edi
lea edi, [esp + esi*4 + 0x878]
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x234], eax
mov dword [esp + 0x168], ecx
mov dword [esp + 0x34c], esi
mov ecx, edx
mov ebx, dword [esp + 0x78]
mov eax, dword [esp + 0xa8]
mov esi, dword [esp + 0x238]
inc edx
mov dword [esp + 0x23c], 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 + 0x23c]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x234]
jb 0x646f70
mov dword [esp + 0xa8], eax
lea eax, [edx + edx + 1]
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x168]
lea edx, [eax - 1]
cmp edx, esi
jae 0x647029
shl eax, 2
lea edi, [esp + esi*4 + 0x4f8]
neg eax
mov dword [esp + 0x3f4], ebx
lea ebx, [esp + esi*4 + 0x538]
mov edx, dword [esp + 0xa8]
add edx, dword [eax + ebx + 4]
lea ebx, [esp + esi*4 + 0x878]
add edx, dword [eax + edi + 4]
mov dword [eax + ebx + 4], edx
mov edx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x3f4]
mov edx, dword [edx]
jmp 0x647032
mov edx, dword [esp + 0x9c]
mov edx, dword [edx]
test edx, edx
jne 0x64705d
mov edx, dword [esp + 0xa0]
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x64703d
mov dword [esp + 0xa0], edx
mov dword [esp + 0x9c], eax
mov eax, edx
lea esi, [eax - 1]
mov edx, dword [esp + 0x87c]
test edx, edx
jle 0x647119
dec dword [esp + 0x1e0]
add edx, edx
mov dword [esp + 0x87c], edx
cmp dword [esp + 0xa0], 2
jb 0x647119
mov edx, dword [esp + 0xa0]
lea edi, [edx - 1]
shr edi, 1
je 0x648ded
mov dword [esp + 0x34c], esi
xor edx, edx
mov dword [esp + 0x168], ecx
mov eax, dword [esp + edx*8 + 0x880]
mov ecx, eax
shr ecx, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x87c], ecx
mov ecx, dword [esp + edx*8 + 0x884]
mov esi, ecx
shr esi, 0x1f
add ecx, ecx
or eax, esi
mov dword [esp + edx*8 + 0x880], eax
mov dword [esp + edx*8 + 0x884], ecx
inc edx
cmp edx, edi
jb 0x6470ac
mov esi, dword [esp + 0x34c]
lea eax, [edx + edx + 1]
mov ecx, dword [esp + 0x168]
lea edx, [eax - 1]
cmp edx, esi
jae 0x647119
mov edi, dword [esp + eax*4 + 0x87c]
mov edx, edi
shr edx, 0x1f
add edi, edi
or dword [esp + eax*4 + 0x878], edx
mov dword [esp + eax*4 + 0x87c], edi
mov edx, dword [esp + 0x9c]
mov edi, dword [esp + 0x20c]
shr edi, 5
cmp dword [edx], 0
je 0x647136
mov esi, dword [esp + 0xa0]
cmp esi, edi
jb 0x6471d7
mov esi, edi
mov edx, esi
mov edi, dword [esp + edx*4 + 0x87c]
shr edi, 0x1f
mov eax, edi
mov edi, edx
lea edi, [esp + edi*4 + 0x878]
mov edx, dword [edi]
add edx, eax
mov dword [esp + 8], edx
cmp edx, eax
jae 0x6471bf
mov edx, esi
mov esi, dword [esp + 8]
mov dword [edi], esi
mov dword [esp + 0x878], 0
lea edi, [esp + edx*4 + 0x874]
mov eax, dword [edi]
lea esi, [edx - 1]
cmp eax, 0xffffffff
jne 0x647196
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x647187
test esi, esi
je 0x64719f
inc eax
mov dword [edi], eax
jmp 0x6471de
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x6471de
mov dword [edi], edx
cmp dword [esp + 8], 0
jne 0x6471de
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x6471c8
jmp 0x6471de
lea edi, [esp + esi*4 + 0x878]
cmp dword [esp + 0x240], 0
je 0x647743
mov eax, dword [esp + 0x240]
lea edx, [esi + eax]
mov dword [esp + 0x6c], edx
lea edx, [esi + eax - 1]
mov dword [esp + 0x70], edx
mov edx, dword [edi]
mov dword [esp + 0x5c], edx
mov edx, dword [esp + eax*4 + 0x7f8]
mov dword [esp + 0x60], edx
mov eax, dword [esp + 0x5c]
mul dword [esp + 0x60]
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], edx
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x68]
mov dword [esp + eax*4 + 0x478], edx
mov edx, dword [esp + 0x64]
mov dword [esp + eax*4 + 0x47c], edx
mov edx, dword [esp + 0x240]
lea eax, [edx - 1]
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
mov dword [esp + 0x168], ecx
mov ecx, eax
mov ebx, dword [esp + 0x70]
mov edx, dword [edi]
mov esi, dword [esp + ecx*4 + 0x7f8]
mov dword [esp + ebx*4 + 0x4b8], 0
mov dword [esp + 0x274], edx
mov dword [esp + 0x278], esi
mov eax, dword [esp + 0x274]
mul dword [esp + 0x278]
mov dword [esp + 0x27c], eax
mov dword [esp + 0x280], edx
mov esi, dword [esp + 0x27c]
mov edx, dword [esp + ebx*4 + 0x478]
add edx, esi
cmp edx, esi
mov dword [esp + ebx*4 + 0x478], edx
mov edx, 0
setb dl
dec ebx
add edx, dword [esp + 0x280]
mov dword [esp + ebx*4 + 0x478], edx
dec ecx
jne 0x647262
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x168]
mov edx, dword [esp + 0x70]
mov dword [esp + edx*4 + 0x4b8], 0
dec edx
js 0x6473ba
mov edx, dword [esp + 0x70]
shr edx, 1
mov dword [esp + 0x74], edx
je 0x648de3
mov edi, dword [esp + 0x70]
xor eax, eax
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
lea edx, [esp + edi*4 + 0x474]
mov dword [esp + 0x50], edx
lea edx, [esp + edi*4 + 0x4b4]
mov dword [esp + 0x4c], edx
xor edi, edi
mov dword [esp + 0x168], ecx
mov edx, eax
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x74]
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 0x647353
mov ebx, dword [esp + 0x3f4]
lea edx, [eax + eax + 1]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x168]
lea edi, [edx - 1]
cmp edi, dword [esp + 0x70]
jae 0x6473ba
shl edx, 2
xor eax, eax
mov edi, dword [esp + 0x70]
neg edx
mov dword [esp + 0x3f4], ebx
lea ebx, [esp + edi*4 + 0x4b4]
mov dword [edx + ebx + 4], eax
lea ebx, [esp + edi*4 + 0x474]
mov dword [edx + ebx + 4], eax
mov ebx, dword [esp + 0x3f4]
mov eax, esi
dec eax
je 0x64749f
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
mov dword [esp + 0x168], ecx
mov edx, dword [esp + 0x240]
mov esi, edx
test edx, edx
je 0x647483
mov dword [esp + 0x390], eax
lea ebx, [esp + eax*4 + 0x4b8]
lea ecx, [esp + eax*4 + 0x478]
mov eax, dword [esp + 0x390]
mov edi, dword [esp + esi*4 + 0x7f8]
mov dword [esp + 0x384], edi
mov edx, dword [esp + eax*4 + 0x878]
mov dword [esp + 0x380], edx
mov eax, dword [esp + 0x380]
mul dword [esp + 0x384]
mov dword [esp + 0x388], eax
mov dword [esp + 0x38c], edx
mov edi, dword [esp + 0x388]
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 + 0x38c]
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 0x6473fe
mov eax, dword [esp + 0x390]
mov edx, dword [esp + 0x240]
dec eax
jne 0x6473df
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x168]
add dword [esp + 0x1e0], ecx
mov edx, dword [esp + 0x240]
mov ecx, dword [esp + 0x6c]
lea esi, [esi + edx - 1]
mov edx, dword [esp + ecx*4 + 0x478]
lea edi, [esp + ecx*4 + 0x878]
mov dword [esp + 0x54], edi
mov dword [edi], edx
cmp ecx, 1
je 0x6475d1
mov edx, esi
mov dword [esp + 0x58], 0
shr edx, 1
je 0x648dd9
xor eax, eax
lea ecx, [esp + esi*4 + 0x478]
mov dword [esp + 0x1c], ecx
lea ecx, [esp + esi*4 + 0x4b8]
lea edi, [esp + esi*4 + 0x878]
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x1bc], ecx
mov dword [esp + 0x1b8], edx
mov dword [esp + 0x34c], esi
mov ecx, eax
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x58]
lea esi, [esi]
lea edi, [edi]
mov esi, dword [esp + 0x1bc]
inc eax
mov dword [esp + 0x1c0], 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 + 0x1c0]
mov dword [ecx + edi - 4], esi
setb dl
add ecx, 0xfffffff8
cmp eax, dword [esp + 0x1b8]
jb 0x647530
mov dword [esp + 0x58], edx
lea eax, [eax + eax + 1]
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
lea edx, [eax - 1]
cmp edx, esi
jae 0x6475cb
shl eax, 2
lea ecx, [esp + esi*4 + 0x4b8]
neg eax
lea edi, [esp + esi*4 + 0x478]
mov edx, dword [esp + 0x58]
add edx, dword [eax + ecx + 4]
lea ecx, [esp + esi*4 + 0x878]
add edx, dword [eax + edi + 4]
mov dword [eax + ecx + 4], edx
mov edx, dword [esp + 0x54]
mov edx, dword [edx]
jmp 0x6475d1
mov edx, dword [esp + 0x54]
mov edx, dword [edx]
test edx, edx
jne 0x6475f3
mov edx, dword [esp + 0x6c]
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x6475d9
mov dword [esp + 0x6c], edx
mov dword [esp + 0x54], eax
mov eax, edx
lea esi, [eax - 1]
mov edx, dword [esp + 0x87c]
test edx, edx
jle 0x647697
dec dword [esp + 0x1e0]
add edx, edx
mov dword [esp + 0x87c], edx
cmp dword [esp + 0x6c], 2
jb 0x647697
mov edx, dword [esp + 0x6c]
lea ecx, [edx - 1]
shr ecx, 1
je 0x648dcf
mov dword [esp + 0x34c], esi
xor edx, edx
mov eax, dword [esp + edx*8 + 0x880]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x87c], esi
mov esi, dword [esp + edx*8 + 0x884]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + edx*8 + 0x880], eax
mov dword [esp + edx*8 + 0x884], esi
inc edx
cmp edx, ecx
jb 0x647631
mov esi, dword [esp + 0x34c]
lea edi, [edx + edx + 1]
lea edx, [edi - 1]
cmp edx, esi
jae 0x647697
mov ecx, dword [esp + edi*4 + 0x87c]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + edi*4 + 0x878], edx
mov dword [esp + edi*4 + 0x87c], ecx
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x20c]
shr eax, 5
cmp dword [edx], 0
je 0x6476ae
mov esi, dword [esp + 0x6c]
cmp esi, eax
jb 0x64773c
mov esi, eax
mov edx, dword [esp + eax*4 + 0x87c]
shr edx, 0x1f
lea edi, [esp + eax*4 + 0x878]
mov ecx, dword [edi]
add ecx, edx
cmp ecx, edx
jae 0x647727
mov dword [edi], ecx
lea edi, [esp + eax*4 + 0x874]
mov dword [esp + 0x878], 0
lea esi, [eax - 1]
mov eax, dword [edi]
cmp eax, 0xffffffff
jne 0x6476fe
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x6476ef
test esi, esi
je 0x647707
inc eax
mov dword [edi], eax
jmp 0x647743
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x647743
mov dword [edi], ecx
test ecx, ecx
jne 0x647743
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x64772d
jmp 0x647743
lea edi, [esp + esi*4 + 0x878]
cmp dword [esp + 0x2bc], 0
je 0x647cc1
mov eax, dword [esp + 0x2bc]
mov edx, dword [edi]
mov dword [esp + 0x118], edx
mov edx, dword [esp + eax*4 + 0x7b8]
lea ecx, [eax + esi - 1]
mov dword [esp + 0x11c], edx
mov eax, dword [esp + 0x118]
mul dword [esp + 0x11c]
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], edx
mov edx, dword [esp + 0x124]
mov dword [esp + ecx*4 + 0x5f8], edx
mov edx, dword [esp + 0x120]
mov eax, dword [esp + 0x2bc]
mov dword [esp + ecx*4 + 0x5fc], edx
dec eax
je 0x647848
mov dword [esp + 0x3f4], ebx
mov ebx, eax
mov dword [esp + 0x34c], esi
mov edx, dword [edi]
mov esi, dword [esp + ebx*4 + 0x7b8]
mov dword [esp + ecx*4 + 0x638], 0
mov dword [esp + 0x2e4], edx
mov dword [esp + 0x2e8], esi
mov eax, dword [esp + 0x2e4]
mul dword [esp + 0x2e8]
mov dword [esp + 0x2ec], eax
mov dword [esp + 0x2f0], edx
mov esi, dword [esp + 0x2ec]
mov edx, dword [esp + ecx*4 + 0x5f8]
add edx, esi
cmp edx, esi
mov dword [esp + ecx*4 + 0x5f8], edx
mov edx, 0
setb dl
dec ecx
add edx, dword [esp + 0x2f0]
mov dword [esp + ecx*4 + 0x5f8], edx
dec ebx
jne 0x6477c9
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov edx, ecx
mov dword [esp + ecx*4 + 0x638], 0
dec edx
js 0x6478fe
mov edi, ecx
shr edi, 1
je 0x648dc5
xor edx, edx
lea eax, [esp + ecx*4 + 0x5f4]
mov dword [esp + 0x10c], eax
lea eax, [esp + ecx*4 + 0x634]
mov dword [esp + 0x108], eax
xor eax, eax
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x104], ecx
mov dword [esp + 0x34c], esi
xor esi, esi
mov ecx, dword [esp + 0x108]
mov ebx, dword [esp + 0x10c]
inc edx
mov dword [eax + ecx], esi
mov dword [eax + ebx], esi
mov dword [eax + ecx - 4], esi
mov dword [eax + ebx - 4], esi
add eax, 0xfffffff8
cmp edx, edi
jb 0x6478ab
mov ebx, dword [esp + 0x3f4]
lea edx, [edx + edx + 1]
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x34c]
lea edi, [edx - 1]
cmp edi, ecx
jae 0x6478fe
shl edx, 2
lea edi, [esp + ecx*4 + 0x634]
neg edx
lea ecx, [esp + ecx*4 + 0x5f4]
xor eax, eax
mov dword [edx + edi + 4], eax
mov dword [edx + ecx + 4], eax
mov eax, esi
dec eax
je 0x6479e3
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
mov edx, dword [esp + 0x2bc]
mov esi, edx
test edx, edx
je 0x6479c7
mov dword [esp + 0x3cc], eax
lea ebx, [esp + eax*4 + 0x638]
mov dword [esp + 0x2bc], edx
lea ecx, [esp + eax*4 + 0x5f8]
mov eax, dword [esp + 0x3cc]
mov edi, dword [esp + esi*4 + 0x7b8]
mov dword [esp + 0x3c0], edi
mov edx, dword [esp + eax*4 + 0x878]
mov dword [esp + 0x3bc], edx
mov eax, dword [esp + 0x3bc]
mul dword [esp + 0x3c0]
mov dword [esp + 0x3c4], eax
mov dword [esp + 0x3c8], edx
mov edi, dword [esp + 0x3c4]
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 + 0x3c8]
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 0x647942
mov eax, dword [esp + 0x3cc]
mov edx, dword [esp + 0x2bc]
dec eax
jne 0x64791c
mov dword [esp + 0x2bc], edx
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov ecx, dword [esp + 0x2bc]
mov edx, dword [esp + 0x1e0]
add edx, dword [esp + 0x164]
mov dword [esp + 0x1e0], edx
lea edx, [esi + ecx]
lea esi, [esi + ecx - 1]
mov ecx, dword [esp + edx*4 + 0x5f8]
lea edi, [esp + edx*4 + 0x878]
mov dword [esp + 0x110], edi
mov dword [edi], ecx
cmp edx, 1
je 0x647b69
mov ecx, esi
mov dword [esp + 0x114], 0
shr ecx, 1
je 0x648dbb
xor eax, eax
lea edi, [esp + esi*4 + 0x878]
mov dword [esp + 0x26c], edi
lea edi, [esp + esi*4 + 0x5f8]
mov dword [esp + 0xc8], edi
lea edi, [esp + esi*4 + 0x638]
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x264], ecx
mov dword [esp + 0xc4], edx
mov dword [esp + 0x268], edi
mov dword [esp + 0x34c], esi
mov ecx, eax
mov ebx, dword [esp + 0xc8]
mov edx, dword [esp + 0x114]
lea esi, [esi]
lea edi, [edi]
mov esi, dword [esp + 0x268]
inc eax
mov edi, dword [esp + 0x26c]
mov dword [esp + 0x270], 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 + 0x270]
mov dword [ecx + edi - 4], esi
setb dl
add ecx, 0xfffffff8
cmp eax, dword [esp + 0x264]
jb 0x647aa0
mov dword [esp + 0x114], edx
lea eax, [eax + eax + 1]
mov ebx, dword [esp + 0x3f4]
mov edx, dword [esp + 0xc4]
mov esi, dword [esp + 0x34c]
lea ecx, [eax - 1]
cmp ecx, esi
jae 0x647b60
shl eax, 2
lea edi, [esp + esi*4 + 0x5f8]
neg eax
mov dword [esp + 0x3f4], ebx
lea ebx, [esp + esi*4 + 0x638]
mov ecx, dword [esp + 0x114]
add ecx, dword [eax + ebx + 4]
lea ebx, [esp + esi*4 + 0x878]
add ecx, dword [eax + edi + 4]
mov dword [eax + ebx + 4], ecx
mov ecx, dword [esp + 0x110]
mov ebx, dword [esp + 0x3f4]
mov ecx, dword [ecx]
jmp 0x647b69
mov ecx, dword [esp + 0x110]
mov ecx, dword [ecx]
test ecx, ecx
jne 0x647b84
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x647b6d
mov dword [esp + 0x110], eax
lea esi, [edx - 1]
mov ecx, dword [esp + 0x87c]
test ecx, ecx
jle 0x647c34
dec dword [esp + 0x1e0]
add ecx, ecx
mov dword [esp + 0x87c], ecx
cmp edx, 2
jb 0x647c34
lea ecx, [edx - 1]
shr ecx, 1
je 0x648db1
mov dword [esp + 0xc4], edx
xor edi, edi
mov dword [esp + 0x34c], esi
mov eax, dword [esp + edi*8 + 0x880]
mov edx, eax
shr edx, 0x1f
add eax, eax
or dword [esp + edi*8 + 0x87c], edx
mov edx, dword [esp + edi*8 + 0x884]
mov esi, edx
shr esi, 0x1f
add edx, edx
or eax, esi
mov dword [esp + edi*8 + 0x880], eax
mov dword [esp + edi*8 + 0x884], edx
inc edi
cmp edi, ecx
jb 0x647bc7
mov edx, dword [esp + 0xc4]
lea eax, [edi + edi + 1]
mov esi, dword [esp + 0x34c]
lea ecx, [eax - 1]
cmp ecx, esi
jae 0x647c34
mov edi, dword [esp + eax*4 + 0x87c]
mov ecx, edi
shr ecx, 0x1f
add edi, edi
or dword [esp + eax*4 + 0x878], ecx
mov dword [esp + eax*4 + 0x87c], edi
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x20c]
shr eax, 5
cmp dword [ecx], 0
je 0x647c4c
mov esi, edx
cmp esi, eax
jb 0x647cba
mov esi, eax
mov edx, dword [esp + eax*4 + 0x87c]
shr edx, 0x1f
lea edi, [esp + eax*4 + 0x878]
mov ecx, dword [edi]
add ecx, edx
cmp ecx, edx
jae 0x647ca5
mov dword [edi], ecx
lea edi, [esp + eax*4 + 0x874]
mov dword [esp + 0x878], 0
lea esi, [eax - 1]
mov eax, dword [edi]
cmp eax, 0xffffffff
jne 0x647c98
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x647c89
test esi, esi
jne 0x6459d0
jmp 0x6459d8
mov dword [edi], ecx
test ecx, ecx
jne 0x647cc1
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x647cab
jmp 0x647cc1
lea edi, [esp + esi*4 + 0x878]
mov edi, dword [edi]
lea edx, [esi + ebx - 1]
mov ecx, dword [esp + ebx*4 + 0x838]
mov dword [esp + 0x1d4], edi
lea edi, [esi + ebx]
mov dword [esp + 0x1e8], edx
mov dword [esp + 0x1e4], edx
mov dword [esp + 0x1d0], ecx
mov eax, dword [esp + 0x1d0]
mul dword [esp + 0x1d4]
mov dword [esp + 0x1d8], eax
mov dword [esp + 0x1dc], edx
mov edx, dword [esp + 0x1e8]
mov ecx, dword [esp + 0x1dc]
lea edx, [esp + edx*4 + 0x6f8]
mov dword [esp + 0x33c], edx
mov dword [edx], ecx
mov ecx, dword [esp + 0x1d8]
mov dword [edx + 4], ecx
mov ecx, esi
dec ecx
je 0x647dd7
mov dword [esp + 0x34c], esi
mov dword [esp + 0x1cc], edi
mov esi, dword [esp + 0x1e4]
mov eax, dword [esp + ebx*4 + 0x838]
mov edx, dword [esp + ecx*4 + 0x878]
mov dword [esp + esi*4 + 0x738], 0
mov dword [esp + 0x350], eax
mov dword [esp + 0x354], edx
mov eax, dword [esp + 0x350]
mul dword [esp + 0x354]
mov dword [esp + 0x358], eax
mov dword [esp + 0x35c], edx
mov edi, dword [esp + 0x358]
xor edx, edx
mov eax, dword [esp + esi*4 + 0x6f8]
add eax, edi
cmp eax, edi
mov dword [esp + esi*4 + 0x6f8], eax
setb dl
dec esi
add edx, dword [esp + 0x35c]
mov dword [esp + esi*4 + 0x6f8], edx
dec ecx
jne 0x647d4f
mov dword [esp + 0x1e4], esi
mov edi, dword [esp + 0x1cc]
mov esi, dword [esp + 0x34c]
mov edx, dword [esp + 0x1e4]
mov dword [esp + edx*4 + 0x738], 0
dec edx
js 0x647ec6
mov edx, dword [esp + 0x1e4]
shr edx, 1
mov dword [esp + 0x1f0], edx
je 0x648da7
mov ecx, dword [esp + 0x1e4]
xor eax, eax
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
lea edx, [esp + ecx*4 + 0x6f4]
mov dword [esp + 0x1c8], edx
lea edx, [esp + ecx*4 + 0x734]
mov dword [esp + 0x1c4], edx
mov dword [esp + 0x1cc], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp + 0x1c4]
mov ebx, dword [esp + 0x1c8]
mov esi, dword [esp + 0x1f0]
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 0x647e59
mov ebx, dword [esp + 0x3f4]
lea edx, [eax + eax + 1]
mov edi, dword [esp + 0x1cc]
mov esi, dword [esp + 0x34c]
lea ecx, [edx - 1]
cmp ecx, dword [esp + 0x1e4]
jae 0x647ec6
shl edx, 2
xor eax, eax
mov dword [esp + 0x3f4], ebx
neg edx
mov ebx, dword [esp + 0x1e4]
lea ecx, [esp + ebx*4 + 0x734]
mov dword [edx + ecx + 4], eax
lea ecx, [esp + ebx*4 + 0x6f4]
mov dword [edx + ecx + 4], eax
mov ebx, dword [esp + 0x3f4]
dec ebx
je 0x647f8f
mov dword [esp + 0x1cc], edi
mov eax, esi
mov edi, eax
test eax, eax
je 0x647f81
mov dword [esp + 0x3f4], ebx
lea esi, [esp + ebx*4 + 0x738]
mov dword [esp + 0x34c], eax
lea ecx, [esp + ebx*4 + 0x6f8]
mov eax, dword [esp + 0x3f4]
mov ebx, dword [esp + edi*4 + 0x878]
mov dword [esp + 0x3e8], ebx
mov edx, dword [esp + eax*4 + 0x838]
mov dword [esp + 0x3e4], edx
mov eax, dword [esp + 0x3e4]
mul dword [esp + 0x3e8]
mov dword [esp + 0x3ec], eax
mov dword [esp + 0x3f0], edx
mov edx, dword [esp + 0x3ec]
mov ebx, dword [ecx + edi*4]
add ebx, edx
mov dword [ecx + edi*4], ebx
xor eax, eax
cmp ebx, edx
mov ebx, 0
setb al
add eax, dword [esp + 0x3f0]
mov edx, dword [ecx + edi*4 - 4]
add edx, eax
cmp edx, eax
mov dword [ecx + edi*4 - 4], edx
setb bl
add dword [esi + edi*4 - 8], ebx
dec edi
jne 0x647efc
mov ebx, dword [esp + 0x3f4]
mov eax, dword [esp + 0x34c]
dec ebx
jne 0x647ed6
mov edi, dword [esp + 0x1cc]
mov eax, dword [esp + 0x1f4]
mov edx, dword [esp + 0x1e0]
lea eax, [eax + edx - 0x3ffe]
mov edx, dword [esp + edi*4 + 0x6f8]
mov dword [esp + edi*4 + 0x838], edx
cmp edi, 1
je 0x6480cd
mov edx, dword [esp + 0x1e8]
shr edx, 1
mov dword [esp + 0x344], edx
mov edx, 0
je 0x648d9d
mov ecx, dword [esp + 0x1e8]
xor ebx, ebx
mov dword [esp + 0x324], eax
mov dword [esp + 0x1cc], edi
lea esi, [esp + ecx*4 + 0x838]
mov dword [esp + 0x340], esi
lea esi, [esp + ecx*4 + 0x738]
mov eax, ebx
mov ecx, esi
lea esi, [esi]
lea edi, [edi]
mov esi, dword [esp + 0x33c]
inc ebx
add edx, dword [eax + ecx]
mov edi, dword [esp + 0x340]
mov dword [esp + 0x348], ebx
mov ebx, dword [eax + esi]
add ebx, edx
cmp ebx, edx
mov edx, 0
mov dword [eax + edi], ebx
mov ebx, edx
setb bl
add ebx, dword [eax + ecx - 4]
mov esi, dword [eax + esi - 4]
add esi, ebx
cmp esi, ebx
mov ebx, dword [esp + 0x348]
mov dword [eax + edi - 4], esi
setb dl
add eax, 0xfffffff8
cmp ebx, dword [esp + 0x344]
jb 0x648010
mov edi, dword [esp + 0x1cc]
lea ebx, [ebx + ebx + 1]
mov eax, dword [esp + 0x324]
lea esi, [ebx - 1]
cmp esi, dword [esp + 0x1e8]
jae 0x6480c6
shl ebx, 2
mov ecx, dword [esp + 0x33c]
mov esi, dword [esp + 0x1e8]
sub ecx, ebx
mov dword [esp + 0x324], eax
neg ebx
lea eax, [esp + esi*4 + 0x738]
add edx, dword [ebx + eax + 4]
lea eax, [esp + esi*4 + 0x838]
add edx, dword [ecx + 4]
mov dword [ebx + eax + 4], edx
mov edx, dword [esp + edi*4 + 0x838]
mov eax, dword [esp + 0x324]
jmp 0x6480cd
mov edx, dword [esp + edi*4 + 0x838]
test edx, edx
jne 0x648d8a
dec edi
lea edx, [esp + edi*4 + 0x838]
cmp dword [edx], 0
je 0x6480d5
mov dword [esp + 0x1ec], edx
mov edx, dword [esp + 0x83c]
test edx, edx
jle 0x648186
add edx, edx
dec eax
mov dword [esp + 0x83c], edx
cmp edi, 2
jb 0x648186
lea ebx, [edi - 1]
shr ebx, 1
je 0x648cca
mov dword [esp + 0x324], eax
xor edx, edx
mov eax, dword [esp + edx*8 + 0x840]
mov ecx, eax
shr ecx, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x83c], ecx
mov ecx, dword [esp + edx*8 + 0x844]
mov esi, ecx
shr esi, 0x1f
add ecx, ecx
or eax, esi
mov dword [esp + edx*8 + 0x840], eax
mov dword [esp + edx*8 + 0x844], ecx
inc edx
cmp edx, ebx
jb 0x64811b
mov eax, dword [esp + 0x324]
lea ebx, [edx + edx + 1]
lea edx, [edi - 1]
lea esi, [ebx - 1]
cmp esi, edx
jae 0x648189
mov ecx, dword [esp + ebx*4 + 0x83c]
mov esi, ecx
shr esi, 0x1f
add ecx, ecx
or dword [esp + ebx*4 + 0x838], esi
mov dword [esp + ebx*4 + 0x83c], ecx
jmp 0x648189
lea edx, [edi - 1]
mov ebx, dword [esp + 0x1ec]
cmp dword [ebx], 0
je 0x648197
mov edx, edi
test eax, eax
jg 0x644e61
mov edi, eax
neg edi
je 0x6482ba
mov ecx, edi
mov esi, dword [esp + edx*4 + 0x838]
neg ecx
mov ebx, esi
shl ebx, cl
mov ecx, edi
shr esi, cl
mov dword [esp + edx*4 + 0x83c], ebx
mov dword [esp + edx*4 + 0x838], esi
lea esi, [edx - 1]
cmp edx, 1
je 0x6482b3
mov ebx, esi
shr ebx, 1
mov dword [esp + 0x328], ebx
je 0x648d80
xor ebx, ebx
lea ecx, [esp + edx*4 + 0x834]
mov dword [esp + 0x29c], edx
mov dword [esp + 0x324], eax
mov dword [esp + 0x178], esi
mov dword [esp + 0x32c], edi
mov edx, ebx
mov eax, ecx
mov esi, dword [edx + eax]
inc ebx
mov edi, dword [esp + 0x324]
mov ecx, edi
mov dword [esp + 0x330], ebx
mov ebx, esi
shl ebx, cl
or dword [edx + eax + 4], ebx
mov ebx, dword [edx + eax - 4]
mov ecx, dword [esp + 0x32c]
shr esi, cl
mov ecx, edi
mov edi, ebx
shl edi, cl
mov ecx, dword [esp + 0x32c]
or esi, edi
shr ebx, cl
mov dword [edx + eax - 4], ebx
mov ebx, dword [esp + 0x330]
mov dword [edx + eax], esi
add edx, 0xfffffff8
cmp ebx, dword [esp + 0x328]
jb 0x648210
mov edi, ecx
mov esi, dword [esp + 0x178]
lea ecx, [ebx + ebx + 1]
mov edx, dword [esp + 0x29c]
mov eax, dword [esp + 0x324]
lea ebx, [ecx - 1]
cmp ebx, esi
jae 0x6482ac
sub esi, ecx
mov ecx, eax
mov ebx, dword [esp + esi*4 + 0x83c]
shl ebx, cl
mov ecx, edi
or dword [esp + esi*4 + 0x840], ebx
shr dword [esp + esi*4 + 0x83c], cl
mov ebx, dword [esp + edx*4 + 0x83c]
jmp 0x6482b3
mov ebx, dword [esp + edx*4 + 0x83c]
xor eax, eax
cmp eax, ebx
adc edx, 0
mov ebx, dword [esp + 0x2c4]
cmp ebx, 0x27
mov eax, dword [esp + 0x334]
jle 0x6482d2
mov ebx, 0x27
mov ecx, dword [esp + 0x1fc]
mov byte [eax], 0x30
mov dword [esp + 0x200], ecx
cmp ebx, dword [esp + 0x210]
jle 0x6484f8
sub ebx, dword [esp + 0x210]
je 0x6484f8
xor eax, eax
mov dword [esp + 0x338], ebx
xor esi, esi
mov dword [esp + 0x838], 0
test edx, edx
je 0x6484c1
mov ebx, dword [esp + edx*4 + 0x838]
mov ecx, 0
mov dword [esp + edx*4 + 0x838], 0
je 0x6484b2
mov ecx, edx
shr ecx, 1
mov dword [esp + 0x364], ecx
je 0x648cd4
xor ecx, ecx
lea edi, [esp + edx*4 + 0x838]
mov dword [esp + 0x298], ecx
mov dword [esp + 0x360], ecx
mov dword [esp + 0x29c], edx
mov dword [esp + 0x2a4], eax
mov dword [esp + 0x2a0], esi
mov edx, dword [esp + 0x298]
mov ecx, edi
xor eax, eax
lea esi, [ebx + ebx*4]
cmp esi, ebx
mov edi, esi
setb al
shr ebx, 0x1e
add ebx, eax
shr edi, 0x1f
add ebx, ebx
or ebx, edi
mov edi, dword [edx + ecx]
mov eax, dword [edx + ecx - 4]
mov dword [esp + 0x368], ebx
lea ebx, [esi + esi]
lea esi, [edi + esi*2]
mov dword [edx + ecx], esi
cmp esi, ebx
mov esi, eax
mov ebx, 0
setb bl
mov edi, dword [esp + 0x368]
add edi, ebx
lea eax, [esi + esi*4]
xor ebx, ebx
cmp eax, esi
setb bl
shr esi, 0x1e
lea edi, [edi + eax*2]
add esi, ebx
mov ebx, eax
add eax, eax
add esi, esi
cmp edi, eax
mov eax, 0
mov dword [edx + ecx - 4], edi
setb al
shr ebx, 0x1f
or esi, ebx
inc dword [esp + 0x360]
add esi, eax
mov ebx, dword [edx + ecx - 8]
mov dword [edx + ecx - 8], esi
add edx, 0xfffffff8
mov esi, dword [esp + 0x360]
cmp esi, dword [esp + 0x364]
jb 0x64837e
mov ecx, esi
mov eax, dword [esp + 0x2a4]
lea ecx, [ecx + ecx + 1]
mov esi, dword [esp + 0x2a0]
mov edx, dword [esp + 0x29c]
lea edi, [ecx - 1]
cmp edi, edx
jae 0x6484ab
neg ecx
lea edi, [ebx + ebx*4]
add ecx, edx
cmp edi, ebx
mov dword [esp + 0x29c], edx
mov edx, 0
mov dword [esp + 0x2a0], esi
mov dword [esp + 0x2a4], eax
mov eax, edx
mov esi, dword [esp + ecx*4 + 0x83c]
setb al
shr ebx, 0x1e
add ebx, eax
lea eax, [edi + edi]
add ebx, ebx
lea esi, [esi + edi*2]
cmp esi, eax
mov dword [esp + ecx*4 + 0x83c], esi
setb dl
shr edi, 0x1f
or ebx, edi
add ebx, edx
mov edx, dword [esp + 0x29c]
mov dword [esp + ecx*4 + 0x838], ebx
mov eax, dword [esp + 0x2a4]
mov esi, dword [esp + 0x2a0]
mov ecx, dword [esp + edx*4 + 0x838]
jmp 0x6484b2
mov ecx, dword [esp + edx*4 + 0x838]
cmp ecx, 1
mov ebx, dword [esp + 0x838]
sbb edx, 0
jmp 0x6484c3
xor ebx, ebx
mov edi, dword [esp + 0x334]
lea ecx, [ebx + 0x30]
add eax, 0x35269
mov byte [esi + edi + 1], cl
lea ecx, [esi + edi + 2]
inc esi
cmp esi, dword [esp + 0x338]
jb 0x648308
mov dword [esp + 0x204], ebx
mov dword [esp + 0x200], ecx
jmp 0x648508
mov eax, dword [esp + 0x838]
mov dword [esp + 0x204], eax
xor eax, eax
mov edx, ecx
add eax, 0xffff
mov ebx, dword [esp + 0x20c]
shr eax, 0x10
mov byte [edx], 0
lea edx, [ebx + 0x1f]
mov esi, edx
and esi, 0xffffffe0
mov ecx, esi
sub ecx, ebx
add ecx, eax
mov eax, dword [esp + 0x83c]
mov ebx, dword [esp + 0x214]
shl ebx, cl
mov dword [esp + 0x220], eax
mov dword [esp + 0x21c], ecx
add eax, 0x80000000
mov dword [esp + 0x30c], eax
je 0x64856f
xor eax, eax
cmp dword [esp + 0x30c], 0x80000000
setne al
mov dword [esp + 0x224], eax
jmp 0x64857a
mov dword [esp + 0x224], 0
xor eax, eax
cmp dword [esp + 0x30c], 0
mov dword [esp + 0x304], edx
mov edx, eax
setns dl
mov ecx, dword [esp + 0x2a8]
mov edi, dword [esp + 0x204]
and edi, 1
mov dword [esp + 0x218], edx
add edx, ecx
mov ecx, dword [esp + 0x224]
mov dword [esp + 0x204], edi
sub esi, dword [esp + 0x21c]
lea edi, [edx + edi*2]
mov edx, dword [esp + 0x22c]
lea ecx, [edi + ecx*4]
mov edi, dword [esp + 0x220]
shr edx, cl
lea ecx, [ebx + ebx]
and edx, 1
mov dword [esp + 0x208], edx
lea edx, [ebx + edi - 0x80000000]
cmp edx, ecx
mov edx, dword [esp + 0x304]
setbe al
cmp esi, 0x20
jb 0x64884d
mov eax, edi
add eax, 0x80000001
cmp eax, 1
ja 0x648d26
mov ecx, dword [esp + 0x21c]
mov eax, ecx
shr edx, 5
shr eax, 5
mov ebx, dword [esp + 0x214]
sub edx, eax
shl ebx, cl
mov dword [esp + 0x308], ebx
mov eax, ebx
mov dword [esp + 0x17c], edx
cmp edx, 1
jle 0x6487e5
lea ecx, [edx - 1]
shr ecx, 1
mov dword [esp + 0x318], ecx
je 0x648d70
xor esi, esi
lea ecx, [esp + edx*4 + 0x838]
mov dword [esp + 0x31c], ecx
xor ecx, ecx
mov dword [esp + 0x314], ecx
mov dword [esp + 0x304], edx
mov dword [esp + 0x310], eax
mov dword [esp + 0x174], ebx
inc esi
xor ebx, ebx
mov dword [esp + 0x320], esi
xor eax, eax
mov esi, dword [esp + 0x31c]
mov edx, dword [esp + 0x30c]
mov edi, dword [ecx + esi]
test edi, edi
mov esi, dword [ecx + esi - 4]
setne al
add ecx, 0xfffffff8
or edx, eax
xor eax, eax
test esi, esi
setne al
or edx, eax
xor eax, eax
mov dword [esp + 0x30c], edx
mov edx, dword [esp + 0x310]
add edx, edi
cmp edx, edi
mov edx, ebx
setb dl
add edx, esi
cmp edx, esi
mov edx, ebx
setb dl
mov dword [esp + 0x310], edx
mov edx, dword [esp + 0x308]
neg edx
add edx, edi
cmp edx, edi
mov edi, dword [esp + 0x304]
seta al
neg eax
add eax, esi
cmp eax, esi
mov eax, dword [esp + 0x314]
mov esi, dword [esp + 0x320]
seta bl
mov dword [esp + 0x308], ebx
lea edx, [eax + edi - 2]
add eax, 0xfffffffe
mov dword [esp + 0x314], eax
cmp esi, dword [esp + 0x318]
jb 0x648681
mov dword [esp + 0x17c], edx
lea ecx, [esi + esi + 1]
mov edx, edi
mov eax, dword [esp + 0x310]
mov ebx, dword [esp + 0x174]
mov dword [esp + 0x180], ecx
mov ecx, dword [esp + 0x180]
lea edi, [edx - 1]
lea esi, [ecx - 1]
cmp esi, edi
jae 0x648d57
mov edi, edx
sub edi, dword [esp + 0x180]
mov dword [esp + 0x174], ebx
xor ebx, ebx
xor ecx, ecx
mov esi, dword [esp + edi*4 + 0x83c]
test esi, esi
setne cl
add eax, esi
cmp eax, esi
mov eax, dword [esp + 0x308]
setb bl
neg eax
add eax, esi
mov dword [esp + 0x310], ebx
cmp eax, esi
mov ebx, dword [esp + 0x180]
mov eax, 0
seta al
neg ebx
or dword [esp + 0x30c], ecx
mov ecx, 0
mov dword [esp + 0x308], eax
setge cl
mov dword [esp + 0x218], ecx
add edx, ebx
mov dword [esp + 0x17c], edx
mov ebx, dword [esp + 0x174]
mov eax, dword [esp + 0x310]
mov edx, dword [esp + 0x17c]
mov ecx, dword [esp + edx*4 + 0x838]
add eax, ecx
sub ecx, dword [esp + 0x308]
xor eax, ecx
shr eax, 0x1f
cmp dword [esp + 0x30c], 0
je 0x64881d
xor edx, edx
cmp dword [esp + 0x30c], 0x80000000
setne dl
jmp 0x64881f
xor edx, edx
mov esi, dword [esp + 0x2a8]
mov edi, dword [esp + 0x204]
lea ecx, [esi + edi*2]
add ecx, dword [esp + 0x218]
lea ecx, [ecx + edx*4]
mov edx, dword [esp + 0x22c]
shr edx, cl
and edx, 1
mov dword [esp + 0x208], edx
test eax, eax
je 0x648d26
test ebx, ebx
je 0x648d26
cmp dword [esp + 0x20c], 0x80
jae 0x648cde
mov dword [esp + 0x20c], 0x80
jmp 0x6451cc
call fcn.00693023
mov ecx, eax
shr ecx, 1
je 0x6488b5
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 0x648890
lea ecx, [ebx + ebx + 1]
lea edx, [ecx - 1]
cmp edx, eax
jae 0x6448ca
mov byte [ecx + esi - 1], 0x30
jmp 0x6448ca
mov ecx, 1
jmp 0x6488a0
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x1fc]
mov esi, dword [esp + 0x334]
cmp ecx, dword [esp + 0x20]
jbe 0x6488ee
mov edx, dword [esp + 0x20]
inc edx
mov dword [esp + 0x20], edx
mov ebx, dword [esp + edx*4 + 0x838]
mov dword [esp + 0x10], ebx
jmp 0x6488f6
mov dword [esp + 0x10], 0
mov edx, dword [esp + 0x20]
lea edx, [edx + 1]
cmp edx, ecx
ja 0x648989
sub ecx, edx
inc ecx
mov edx, ecx
mov dword [esp + 8], 0
shr edx, 1
mov dword [esp + 0xc], edx
je 0x648aa0
mov ebx, dword [esp + 0x20]
xor edx, edx
mov dword [esp + 0x200], edi
mov dword [esp + 0x334], esi
mov edi, dword [esp + 0xc]
lea ebx, [esp + ebx*4 + 0x83c]
mov dword [esp], ebx
mov ebx, dword [esp + 8]
mov esi, dword [esp]
or ebx, dword [esi + edx*8]
or ebx, dword [esi + edx*8 + 4]
inc edx
cmp edx, edi
jb 0x648947
mov dword [esp + 8], ebx
lea edx, [edx + edx + 1]
mov edi, dword [esp + 0x200]
mov esi, dword [esp + 0x334]
lea ebx, [edx - 1]
cmp ebx, ecx
jae 0x648991
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 8]
lea edx, [edx + ecx + 1]
or ebx, dword [esp + edx*4 + 0x834]
mov dword [esp + 8], ebx
jmp 0x648991
mov dword [esp + 8], 0
mov ebx, dword [esp + 0x2a8]
shr ebx, 0x1c
mov ecx, dword [esp + 4]
and ebx, 0xfffffff8
and ecx, 1
mov dword [esp + 0x200], edi
mov dword [esp + 0x1fc], eax
mov edi, dword [esp + 0x10]
xor edx, edx
test edi, 0x7fffffff
lea eax, [ebx + ecx*2]
mov ecx, 0
setne dl
mov ebx, dword [esp + 8]
or ebx, edx
mov edx, dword [esp + 0x22c]
setne cl
shr edi, 0x1f
add eax, edi
mov edi, dword [ebp + 0x30]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x14]
shr edx, cl
add eax, 0xffffc002
mov dword [edi], eax
and edx, 1
mov eax, dword [esp + 0x1fc]
mov edi, dword [esp + 0x200]
test edx, edx
je 0x648a37
movsx edx, byte [edi - 1]
cmp edx, dword [esp + 0x1c]
jne 0x648a1e
mov ecx, dword [esp + 0x1c]
dec edi
movsx edx, byte [edi - 1]
cmp edx, ecx
je 0x648a15
cmp edx, 0x39
mov ecx, dword [esp + 0x18]
je 0x648a2c
mov ecx, 1
add edx, ecx
mov byte [edi - 1], dl
cmp edi, eax
je 0x648aaa
jmp 0x648a45
cmp dword [esp + 0x2c4], 0
jle 0x64482f
test dword [ebp + 0x20], 0x80
je 0x648a5d
cmp byte [edi - 1], 0x30
jne 0x648a99
dec edi
cmp byte [edi - 1], 0x30
je 0x648a54
jmp 0x648a99
mov edx, dword [esp + 0x2c4]
sub edx, edi
lea ebx, [edx + eax - 1]
test ebx, ebx
jl 0x648a99
lea edx, [ebx + 1]
mov dword [esp], edx
cmp ebx, 0x60
jle 0x648ae0
push dword [esp]
push 0x30
push edi
mov dword [esp + 0x208], eax
call fcn.0065d380
mov eax, dword [esp + 0x208]
add esp, 0xc
lea edi, [edi + ebx + 1]
xor edx, edx
jmp 0x6448f4
mov edx, 1
jmp 0x648969
mov edx, dword [ebp + 0x30]
dec eax
inc dword [edx]
cmp dword [esp + 0x228], 0
je 0x648abd
mov byte [eax], 0x38
test byte [ebp + 0x20], 2
je 0x648a45
mov ecx, dword [esp + 0x2c4]
inc ecx
mov edx, dword [ebp + 0x18]
cmp ecx, edx
jl 0x648ad4
mov ecx, edx
mov dword [esp + 0x2c4], ecx
jmp 0x648a45
shr edx, 1
je 0x648b1d
mov dword [esp + 0x334], 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 0x648af4
mov esi, dword [esp + 0x334]
lea ecx, [ecx + ecx + 1]
lea edx, [ecx - 1]
cmp edx, dword [esp]
jae 0x648a95
mov byte [edi + ecx - 1], 0x30
jmp 0x648a95
mov ecx, 1
jmp 0x648b0b
mov dword [esp + 4], ecx
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x1fc]
mov esi, dword [esp + 0x334]
test edx, edx
je 0x6488d2
jmp 0x6488f6
cmp dword [esp + 0x194], 0
jne 0x648b7f
cmp dword [esp + 0x190], 0
je 0x648b69
cmp dword [esp + 0x2c4], 0
js 0x648b7f
cmp dword [esp + 0x230], 0
jne 0x648b92
mov eax, edx
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
jmp 0x644f21
mov eax, edx
mov edx, dword [ebp + 0x30]
mov esi, dword [esp + 0x334]
mov dword [edx], eax
jmp 0x64482f
mov ecx, dword [esp + 0x2a8]
add ecx, 4
mov edx, dword [esp + 0x22c]
shr edx, cl
mov eax, dword [esp + 0x1fc]
mov esi, dword [esp + 0x334]
test dl, 1
je 0x648bde
mov edx, dword [esp + 0x2c0]
test edx, edx
mov ecx, dword [ebp + 0x30]
mov edi, eax
mov eax, 0
sete al
mov byte [esi], 0x31
sub eax, edx
mov dword [ecx], eax
xor edx, edx
mov eax, esi
jmp 0x6448f4
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x19c]
mov dword [edx], eax
jmp 0x64482f
lea edi, [esp + 0x880]
jmp 0x647cc1
mov edx, 1
jmp 0x64582a
mov edi, 1
jmp 0x645609
mov esi, 8
lea edi, [esp + 0x880]
jmp 0x6454aa
mov ecx, eax
neg ecx
mov esi, ecx
sar esi, 3
movzx edx, word [esi*2 + 0x74cde0]
lea edi, [esi + 1]
shr edx, 5
cmp edx, ecx
jl 0x648c3d
mov edi, esi
movzx edx, word [edi*2 + 0x74cde0]
mov esi, edx
and esi, 0x1f
shr edx, 5
add edx, eax
movsx eax, word [esi*2 + 0x74cf3a]
mov ecx, dword [esi*8 + 0x74cd64]
mov dword [esp + 0x138], eax
mov dword [esp + 0x7fc], ecx
mov eax, dword [esi*8 + 0x74cd60]
jmp 0x645457
mov edx, 1
jmp 0x646112
mov edx, 1
jmp 0x645fea
mov edx, 1
jmp 0x645da3
mov edx, 1
jmp 0x64685e
mov edx, 1
jmp 0x646754
mov edx, 1
jmp 0x64652d
lea edi, [esp + 0x888]
jmp 0x647743
mov eax, 1
jmp 0x645935
mov ebx, 1
jmp 0x64815e
mov ecx, 1
jmp 0x648430
mov edx, dword [esp + 0x2a8]
mov ecx, dword [esp + 0x204]
mov eax, dword [esp + 0x1fc]
mov edi, dword [esp + 0x200]
lea ecx, [edx + ecx*2 + 1]
mov edx, dword [esp + 0x22c]
shr edx, cl
mov esi, dword [esp + 0x334]
and edx, 1
mov dword [esp + 0x1c], 0x39
mov dword [esp + 0x18], 1
jmp 0x648a03
mov edx, dword [esp + 0x208]
mov eax, dword [esp + 0x1fc]
mov edi, dword [esp + 0x200]
mov esi, dword [esp + 0x334]
mov dword [esp + 0x1c], 0x39
mov dword [esp + 0x18], 1
jmp 0x648a03
xor edx, edx
cmp dword [esp + 0x30c], 0
setge dl
mov dword [esp + 0x218], edx
jmp 0x6487e5
mov dword [esp + 0x180], 1
jmp 0x648750
mov ecx, 1
jmp 0x64827f
lea edx, [esp + edi*4 + 0x838]
mov dword [esp + 0x1ec], edx
jmp 0x6480e9
mov ebx, 1
jmp 0x648075
mov edx, 1
jmp 0x647e88
mov eax, 1
jmp 0x647c11
mov eax, 1
jmp 0x647b13
mov edx, 1
jmp 0x6478da
mov edi, 1
jmp 0x647674
mov eax, 1
jmp 0x647592
mov edx, 1
jmp 0x647382
mov eax, 1
jmp 0x6470f6
mov eax, 1
jmp 0x646fdc
mov edx, 1
jmp 0x646da4
lea edi, [esp + 0x880]
jmp 0x646bca
mov edi, 0x1b
jmp 0x646b85
xor eax, eax
mov dword [esp + 0x780], eax
mov dword [esp + 0x77c], eax
jmp 0x646b85
movsx edx, word [0x74c982]
xor eax, eax
mov dword [esp + 0x780], eax
mov dword [esp + 0x77c], eax
mov dword [esp + 0x1e0], edx
mov esi, dword [0x74c80c]
mov edi, dword [0x74c808]
mov eax, dword [0x74c804]
mov edx, dword [0x74c800]
mov dword [esp + 0x87c], esi
mov esi, 4
mov dword [esp + 0x880], edi
lea edi, [esp + 0x888]
mov dword [edi - 4], eax
mov dword [edi], edx
jmp 0x6471de
mov edx, edi
neg edx
mov esi, edx
sar esi, 3
mov dword [esp + 0x240], 4
movzx ecx, word [esi*2 + 0x74c720]
lea eax, [esi + 1]
shr ecx, 5
cmp ecx, edx
jl 0x648eb7
mov eax, esi
movzx ecx, word [eax*2 + 0x74c720]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
add edi, ecx
movsx ecx, word [eax*2 + 0x74c966]
shl eax, 4
mov edx, dword [eax + 0x74c68c]
mov dword [esp + 0x7fc], edx
mov esi, dword [eax + 0x74c688]
mov edx, dword [eax + 0x74c684]
mov eax, dword [eax + 0x74c680]
mov dword [esp + 0x800], esi
mov dword [esp + 0x804], edx
mov dword [esp + 0x808], eax
jmp 0x646b12
mov dword [esp + 0x848], eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
jmp 0x64488c