Function at 0x4aba50
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 [0x52ec00]
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 0x4b049d
mov ecx, dword [ebp + 0x20]
mov edx, ecx
shr edx, 0x16
and edx, 7
test ecx, 0x80000000
jne 0x4abb09
test dl, 1
jne 0x4abb09
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 0x4abb78
mov edx, 0xaaaa
test ecx, ecx
jne 0x4abb6f
mov edx, 0xfa
mov dword [esp + 0x22c], edx
jmp 0x4abb9f
test ecx, ecx
je 0x4abb89
mov dword [esp + 0x22c], 0xfa00
jmp 0x4abb9f
test dl, 1
mov edx, 0xa8a8
je 0x4abb98
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 0x4abbf2
cmp edx, 0x7fff0000
jne 0x4ac080
mov eax, dword [esp]
xor eax, edx
or eax, dword [esp + 0x48]
or eax, dword [esp + 0x44]
or eax, dword [esp + 0x40]
jne 0x4abcc4
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 0x4abca4
test ecx, ecx
je 0x4abc3a
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xfffffffc
jmp 0x4abc43
mov eax, dword [ebp + 0x34]
mov dword [eax], 4
test ebx, 0x400
je 0x4abc61
test ebx, 0x200
je 0x4abc5a
mov eax, str.INFINITY
jmp 0x4abc66
mov eax, str.infinity
jmp 0x4abc66
mov eax, str.Infinity
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x4abc7d
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x4abc72
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 0x4abe84
test ecx, ecx
je 0x4abcb6
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xffffffff
jmp 0x4abdbf
mov eax, dword [ebp + 0x34]
mov dword [eax], 1
jmp 0x4abdbf
test edx, edx
je 0x4abd7c
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 0x4abd33
test dword [esp], 0x8000
jne 0x4abd0a
shr ecx, 0x1e
mov eax, 0x10
shr eax, cl
add eax, 0xfffffff6
jmp 0x4abd18
mov eax, 0xfffffffb
test ecx, ecx
jne 0x4abd18
mov eax, 5
mov edx, dword [ebp + 0x34]
mov dword [edx], eax
test ebx, 0x200
je 0x4abd2c
mov eax, 0x5081c0
jmp 0x4abd41
mov eax, 0x5081c4
jmp 0x4abd41
mov eax, dword [ebp + 0x34]
mov dword [eax], 0
mov eax, 0x5081c8
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x4abd58
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x4abd4d
mov ebx, dword [ebp + 0x30]
mov ecx, edi
mov edx, 0xa
test dword [ebp + 0x20], 0x40000000
mov eax, dword [ebp + 0x24]
jne 0x4abd73
mov edx, 0
sub ecx, esi
mov dword [ebx], ecx
jmp 0x4abe84
test ecx, ecx
je 0x4abd8b
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xfffffffe
jmp 0x4abd94
mov eax, dword [ebp + 0x34]
mov dword [eax], 2
test dword [ebp + 0x20], 0x10000000
je 0x4abef3
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 0x4abdd5
mov dword [esp + 0x2c0], 1
jmp 0x4abe34
test byte [ebp + 0x20], 2
je 0x4abdf9
mov eax, dword [esp + 0x2c0]
inc eax
mov dword [esp + 0x2c0], eax
cmp eax, dword [ebp + 0x18]
jle 0x4abe12
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 0x4abe3b
jmp 0x4abe65
cmp dword [esp + 0x2c0], 0
jg 0x4abe34
mov edx, dword [ebp + 0x30]
mov eax, esi
mov byte [esi], 0x30
lea edi, [esi + 1]
mov dword [edx], 1
mov edx, 6
jmp 0x4abe84
dec dword [esp + 0x2c0]
mov edx, dword [esp + 0x2c0]
lea eax, [edx + 1]
cmp edx, 0x60
jle 0x4afe13
push eax
push 0x30
push esi
call fcn.004c6960
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 0x4abe84
mov edx, 0
mov ebx, dword [ebp + 0x28]
mov byte [edi], 0
test ebx, ebx
je 0x4abe94
mov ecx, eax
sub ecx, esi
mov dword [ebx], ecx
mov ecx, dword [ebp + 0x2c]
test ecx, ecx
je 0x4abea1
neg esi
add esi, edi
mov dword [ecx], esi
mov ecx, eax
test eax, eax
je 0x4abeb8
cmp ecx, edi
jae 0x4abeb8
movsx ebx, byte [ecx]
inc ecx
cmp ebx, 0x30
jne 0x4abebd
test ecx, ecx
jne 0x4abea7
mov edx, 0xb
mov ecx, dword [ebp + 0x38]
test ecx, ecx
je 0x4abec6
mov dword [ecx], edx
mov ecx, dword [esp + 0x8b8]
mov dword [esp + 0x8b8], 0
xor ecx, esp
cmp ecx, dword [0x52ec00]
jne 0x4afe0e
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 0x4abf46
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 0x4ac061
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 0x4abfdf
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 0x4abfae
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 0x4ac061
mov dword [esp], 0
mov eax, dword [esp]
mov edx, dword [esp + 4]
add edx, edx
inc eax
test edx, edx
jg 0x4abff4
mov dword [esp], eax
mov dword [esp + 4], edx
cmp dword [esp], 0
je 0x4ac061
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 0x4ac098
test ecx, ecx
je 0x4ac08f
mov edx, dword [ebp + 0x34]
mov dword [edx], 0xfffffffd
jmp 0x4ac098
mov edx, dword [ebp + 0x34]
mov dword [edx], 3
mov edx, ebx
and edx, 0x100
mov dword [esp + 0x228], edx
je 0x4ac31d
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 0x4ac124
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 0x4ac23f
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 0x4ac1bd
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 0x4ac18c
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 0x4ac23f
mov dword [esp], 0
mov eax, dword [esp]
mov edx, dword [esp + 0x10]
add edx, edx
inc eax
test edx, edx
jg 0x4ac1d2
mov dword [esp], eax
mov dword [esp + 0x10], edx
cmp dword [esp], 0
je 0x4ac23f
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 0x4ac26b
mov ecx, 3
test eax, eax
mov dword [esp + 0x844], edx
je 0x4ac27b
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 0x4ac2da
lea eax, [ecx + 0x30]
jmp 0x4ac2ec
cmp dword [esp + 0x230], 0
je 0x4ac2e9
lea eax, [ecx + 0x37]
jmp 0x4ac2ec
lea eax, [ecx + 0x57]
mov byte [edi], al
inc edi
test ebx, ebx
jle 0x4b00b4
dec ebx
test edx, edx
jne 0x4ac2c7
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x24]
jae 0x4afe4c
mov edx, 8
inc eax
mov dword [esp + 0x20], eax
mov esi, dword [esp + eax*4 + 0x838]
jmp 0x4ac2c7
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 0x4ac404
mov edi, dword [esp + 0x1f8]
neg edi
lea eax, [edi + 1]
mov dword [esp + 0x19c], eax
cmp dword [esp + 0x1b4], 0
je 0x4ac4a5
cmp dword [esp + 0x2c0], 0
jge 0x4ac43e
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 0x4ac48e
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 0x4ac47c
mov ebx, ecx
mov dword [edx], eax
mov dword [esp + 0x210], ebx
mov dword [esp + 0x2c4], esi
jmp 0x4ac4b1
cmp dword [esp + 0x2c4], 0
jle 0x4b00db
mov eax, edx
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
jmp 0x4ac4b1
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x19c]
mov dword [edx], eax
mov edi, eax
neg edi
jne 0x4ac69f
mov esi, dword [ebp + 0x14]
mov eax, esi
and eax, 0x7fff0000
mov edx, dword [ebp + 0x10]
shr eax, 0x10
je 0x4ac50d
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 0x4ac631
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 0x4ac58f
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 0x4ac56b
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], edx
mov edi, dword [esp + 0x1f8]
test esi, esi
jle 0x4ac631
mov dword [esp + 0xb8], 0
mov edx, dword [esp + 0xb8]
add esi, esi
inc edx
test esi, esi
jg 0x4ac5a9
mov dword [esp + 0xb8], edx
cmp dword [esp + 0xb8], 0
je 0x4ac631
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 0x4ac66e
mov edx, 3
mov esi, 0x71
test ebx, ebx
mov dword [esp + 0x848], ebx
je 0x4ac683
mov edx, 4
xor ebx, ebx
mov dword [esp + 0x20c], esi
mov dword [esp + 0x214], ebx
mov dword [esp + 0x1f8], edi
jmp 0x4af727
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 0x4ac721
cmp edi, 0x159
jle 0x4ac728
mov esi, 0x80
jmp 0x4ac73c
mov esi, 0x80
cmp dword [esp + 0x2c4], 0x11
jg 0x4ac73c
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 0x4ac7a7
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 0x4ac863
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 0x4ac7e9
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 0x4ac7d3
mov dword [esp + 0x1f4], ecx
test eax, eax
jle 0x4ac863
mov dword [esp + 0x170], 0
mov ecx, dword [esp + 0x170]
add eax, eax
inc ecx
test eax, eax
jg 0x4ac7ff
mov dword [esp + 0x170], ecx
cmp dword [esp + 0x170], 0
je 0x4ac863
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 0x4ac88d
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 0x4ac8ff
mov ebx, 4
mov edi, dword [esp + 0x1f8]
cmp dword [esp + 0x20c], 0x40
jne 0x4acfaa
mov eax, edi
lea edx, [eax + 0x2f]
cmp edx, 0x5e
ja 0x4ac988
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 + 0x508d1e]
mov dword [esp + 0x1e0], ecx
mov edi, dword [eax + 0x508b3c]
mov edx, dword [eax + 0x508b38]
mov dword [esp + 0x87c], edi
mov dword [esp + 0x880], edx
test edx, edx
jne 0x4b017f
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ac976
jmp 0x4af251
cmp dword [esp + 0x1f8], 0
js 0x4b01b0
mov ecx, eax
sar ecx, 3
movzx edx, word [ecx*2 + 0x508f02]
lea esi, [ecx + 1]
shr edx, 5
cmp edx, eax
jle 0x4ac9af
mov esi, ecx
movzx edx, word [esi*2 + 0x508f00]
mov ecx, edx
and ecx, 0x1f
shr edx, 5
neg edx
add edx, eax
mov eax, dword [ecx*8 + 0x508e84]
movsx edi, word [ecx*2 + 0x508f78]
mov dword [esp + 0x7fc], eax
mov dword [esp + 0x138], edi
mov eax, dword [ecx*8 + 0x508e80]
movsx ecx, word [edx*2 + 0x508d1e]
mov esi, dword [edx*8 + 0x508b3c]
mov edx, dword [edx*8 + 0x508b38]
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 0x4b019f
dec ecx
lea edi, [esp + ecx*4 + 0x878]
cmp dword [edi], 0
lea esi, [ecx*4]
je 0x4aca26
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 0x4acbc9
mov edx, ecx
shr edx, 1
je 0x4b0195
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 0x4acb52
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 0x4acbc9
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 0x4acc8c
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 0x4acbf9
mov eax, dword [esp + 0x3e0]
dec eax
jne 0x4acbdf
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 0x4ace15
mov dword [esp + 0x144], 0
shr edx, 1
mov dword [esp + 0x28c], edx
je 0x4b018b
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 0x4acd40
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 0x4ace13
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 0x4ace15
mov eax, dword [edi]
test eax, eax
jne 0x4ace26
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ace19
mov eax, dword [esp + 0x87c]
test eax, eax
jle 0x4acf01
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 0x4acef7
lea edx, [esi - 1]
shr edx, 1
je 0x4b0250
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 0x4ace7b
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 0x4aceef
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 0x4acef1
mov edx, dword [edi]
test edx, edx
je 0x4acf00
jmp 0x4acf0a
cmp dword [edi], 0
jne 0x4af251
dec esi
cmp esi, 2
jb 0x4af24a
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 0x4acf8b
mov dword [esp + 0x878], 0
mov esi, 1
cmp dword [esp + 0x87c], 0xffffffff
je 0x4acf4d
lea edi, [esp + 0x87c]
mov eax, dword [edi]
jmp 0x4acf60
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4acf4d
test esi, esi
je 0x4acf68
inc eax
mov dword [edi], eax
jmp 0x4af251
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x4af251
mov esi, 2
test edx, edx
jne 0x4b017f
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4acf98
jmp 0x4af251
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 0x4ad7ca
mov edx, dword [esp + 0x20c]
shr edx, 5
cmp dword [esp + 0x1f8], 0xfffff000
jle 0x4ad08a
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 0x4ad0f7
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 + 0x50897e]
mov esi, dword [ecx + 0x50866c]
mov dword [esp + 0x7bc], esi
mov esi, dword [ecx + 0x508668]
mov dword [esp + 0x7c0], esi
mov esi, dword [ecx + 0x508664]
mov ecx, dword [ecx + 0x508660]
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 0x4ad12d
mov eax, dword [esp + 0x1a0]
sar ecx, 1
dec eax
js 0x4ad788
mov dword [esp + 0x1a0], eax
mov eax, ecx
neg eax
cmp edi, eax
jg 0x4ad126
add edi, ecx
test esi, esi
je 0x4ad7a2
mov ebx, dword [esp + 0x1a0]
movsx eax, word [ebx*2 + 0x50897e]
shl ebx, 4
mov dword [esp + 0x168], eax
mov edx, dword [ebx + 0x50866c]
mov eax, dword [ebx + 0x508668]
mov dword [esp + 0x7fc], edx
mov dword [esp + 0x800], eax
mov edx, dword [ebx + 0x508664]
mov ebx, dword [ebx + 0x508660]
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 0x4ad201
mov eax, ebx
mov ecx, dword [esp + 0x16c]
dec eax
mov edi, dword [esp + 0x160]
mov dword [esp + ebx*4 + 0x5b8], 0
js 0x4ad365
mov eax, ebx
shr eax, 1
mov dword [esp + 0xf4], eax
je 0x4b021c
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 0x4ad2fd
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 0x4ad365
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 0x4ad43e
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 0x4ad39f
mov edx, dword [esp + 0x3b8]
mov eax, 4
dec edx
jne 0x4ad388
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 0x4ad5de
mov edx, eax
mov dword [esp + 0xf0], 0
shr edx, 1
mov dword [esp + 0x25c], edx
je 0x4b0212
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 0x4ad500
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 0x4ad5d5
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 0x4ad5de
mov edx, dword [esp + 0xe8]
mov ebx, dword [edx]
test ebx, ebx
jne 0x4ad609
mov edx, dword [esp + 0xec]
dec edx
lea eax, [esp + edx*4 + 0x7b8]
cmp dword [eax], 0
je 0x4ad5e9
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 0x4ad6c5
dec dword [esp + 0x164]
add edx, edx
mov dword [esp + 0x7bc], edx
cmp dword [esp + 0xec], 2
jb 0x4ad6c5
mov edx, dword [esp + 0xec]
lea ebx, [edx - 1]
shr ebx, 1
je 0x4b0208
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 0x4ad658
mov ecx, dword [esp + 0x16c]
lea edx, [esi + esi + 1]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x4ad6c5
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 0x4ad6da
mov esi, dword [esp + 0xec]
cmp esi, dword [esp + 0x15c]
jb 0x4ad779
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 0x4ad761
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 0x4ad73f
dec esi
lea edx, [esp + esi*4 + 0x7b8]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x4ad730
test esi, esi
je 0x4ad748
inc eax
mov dword [edx], eax
jmp 0x4ad779
inc dword [esp + 0x164]
mov esi, 1
mov dword [esp + 0x7bc], 0x80000000
jmp 0x4ad779
mov edx, esi
mov dword [esp + edx*4 + 0x7b8], eax
test eax, eax
jne 0x4ad779
dec esi
cmp dword [esp + esi*4 + 0x7b8], 0
je 0x4ad76e
sar ecx, 1
dec dword [esp + 0x1a0]
jns 0x4ad13d
mov dword [esp + 0x2bc], esi
mov ebx, dword [esp + 0x3f4]
mov ecx, dword [esp + 0x168]
jmp 0x4adf42
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 0x4ad0b1
cmp dword [esp + 0x1f8], 0x216
jle 0x4adf1b
mov edx, dword [esp + 0x20c]
shr edx, 5
cmp dword [esp + 0x1f8], 0x1000
jge 0x4ad848
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 0x4ad8b5
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 + 0x50899a]
mov esi, dword [ecx + 0x5087ec]
mov dword [esp + 0x7bc], esi
mov esi, dword [ecx + 0x5087e8]
mov dword [esp + 0x7c0], esi
mov esi, dword [ecx + 0x5087e4]
mov ecx, dword [ecx + 0x5087e0]
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 0x4ad8eb
mov eax, dword [esp + 0x14c]
sar ecx, 1
dec eax
js 0x4ad788
mov dword [esp + 0x14c], eax
cmp edi, ecx
jl 0x4ad8e4
sub edi, ecx
test esi, esi
je 0x4adef3
mov ebx, dword [esp + 0x14c]
movsx eax, word [ebx*2 + 0x50899a]
shl ebx, 4
mov dword [esp + 0x168], eax
mov edx, dword [ebx + 0x5087ec]
mov eax, dword [ebx + 0x5087e8]
mov dword [esp + 0x7fc], edx
mov dword [esp + 0x800], eax
mov edx, dword [ebx + 0x5087e4]
mov ebx, dword [ebx + 0x5087e0]
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 0x4ad9a3
mov eax, ebx
mov ecx, dword [esp + 0x100]
dec eax
mov edi, dword [esp + 0x160]
mov dword [esp + ebx*4 + 0x438], 0
js 0x4adaef
mov eax, ebx
shr eax, 1
mov dword [esp + 0x48], eax
je 0x4b023a
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 0x4ada8a
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 0x4adaef
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 0x4adbc8
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 0x4adb29
mov edx, dword [esp + 0x37c]
mov eax, 4
dec edx
jne 0x4adb12
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 0x4add39
mov edx, eax
mov dword [esp + 0x44], 0
shr edx, 1
mov dword [esp + 0x1ac], edx
je 0x4b0230
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 0x4adc70
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 0x4add33
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 0x4add39
mov edx, dword [esp + 0x3c]
mov ebx, dword [edx]
test ebx, ebx
jne 0x4add5b
mov edx, dword [esp + 0x40]
dec edx
lea eax, [esp + edx*4 + 0x7b8]
cmp dword [eax], 0
je 0x4add41
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 0x4ade11
dec dword [esp + 0x164]
add edx, edx
mov dword [esp + 0x7bc], edx
cmp dword [esp + 0x40], 2
jb 0x4ade11
mov edx, dword [esp + 0x40]
lea ebx, [edx - 1]
shr ebx, 1
je 0x4b0226
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 0x4adda4
mov ecx, dword [esp + 0x100]
lea edx, [esi + esi + 1]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x4ade11
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 0x4ade20
mov esi, dword [esp + 0x40]
cmp esi, dword [esp + 0xfc]
jb 0x4adecd
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 0x4adeb5
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 0x4ade93
mov dword [esp + 0x160], edi
dec esi
lea edx, [esp + esi*4 + 0x7b8]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x4ade7d
mov edi, dword [esp + 0x160]
test esi, esi
je 0x4ade9c
inc eax
mov dword [edx], eax
jmp 0x4adecd
inc dword [esp + 0x164]
mov esi, 1
mov dword [esp + 0x7bc], 0x80000000
jmp 0x4adecd
mov edx, esi
mov dword [esp + edx*4 + 0x7b8], eax
test eax, eax
jne 0x4adecd
dec esi
cmp dword [esp + esi*4 + 0x7b8], 0
je 0x4adec2
sar ecx, 1
dec dword [esp + 0x14c]
jns 0x4ad8fb
mov dword [esp + 0x2bc], esi
mov ebx, dword [esp + 0x3f4]
mov ecx, dword [esp + 0x168]
jmp 0x4adf42
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 0x4ad86f
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 0x4adfaf
movsx eax, word [edi*2 + 0x50897e]
shl edi, 4
mov dword [esp + 0x1e0], eax
mov edx, dword [edi + 0x50865c]
mov ecx, dword [edi + 0x508658]
mov esi, dword [edi + 0x508654]
mov edi, dword [edi + 0x508650]
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 0x4b0244
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4adf9d
jmp 0x4aecd3
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 0x4b041f
cmp edi, 0x37
jl 0x4ae097
mov edx, edi
sar edx, 3
mov dword [esp + 0x240], 4
movzx ecx, word [edx*2 + 0x5088c2]
lea esi, [edx + 1]
shr ecx, 5
cmp ecx, edi
jle 0x4ae044
mov esi, edx
movzx ecx, word [esi*2 + 0x5088c0]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
sub edi, ecx
movsx ecx, word [eax*2 + 0x5089a2]
shl eax, 4
mov edx, dword [eax + 0x50882c]
mov dword [esp + 0x7fc], edx
mov esi, dword [eax + 0x508828]
mov edx, dword [eax + 0x508824]
mov eax, dword [eax + 0x508820]
mov dword [esp + 0x800], esi
mov dword [esp + 0x804], edx
mov dword [esp + 0x808], eax
jmp 0x4ae0a2
mov dword [esp + 0x240], 0
cmp edi, 0x37
je 0x4b03c6
lea eax, [edi - 0x1b]
mov dword [esp + 0x98], eax
test eax, eax
jle 0x4b03b1
mov esi, eax
movsx eax, word [esi*2 + 0x508d1e]
mov edx, dword [esi*8 + 0x508b3c]
mov edi, dword [esi*8 + 0x508b38]
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 0x4b03a7
dec eax
cmp dword [esp + eax*4 + 0x778], 0
je 0x4ae0fe
mov dword [esp + 0x294], eax
mov edi, 0x1b
movsx edx, word [edi*2 + 0x508d1e]
mov esi, 2
mov dword [esp + 0x1e0], edx
mov edx, dword [edi*8 + 0x508b3c]
mov edi, dword [edi*8 + 0x508b38]
mov dword [esp + 0x87c], edx
mov dword [esp + 0x880], edi
test edi, edi
jne 0x4b039b
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ae14d
cmp dword [esp + 0x98], 0
jle 0x4ae76e
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 0x4ae289
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 0x4ae1fc
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 0x4ae372
mov edx, dword [esp + 0xa4]
shr edx, 1
mov dword [esp + 0xac], edx
je 0x4b0391
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 0x4ae305
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 0x4ae372
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 0x4ae457
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 0x4ae43b
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 0x4ae3b6
mov eax, dword [esp + 0x3a4]
mov edx, dword [esp + 0x294]
dec eax
jne 0x4ae397
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 0x4ae5c2
mov eax, esi
mov dword [esp + 0xa8], 0
shr eax, 1
je 0x4b0387
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 0x4ae500
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 0x4ae5b9
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 0x4ae5c2
mov edx, dword [esp + 0x9c]
mov edx, dword [edx]
test edx, edx
jne 0x4ae5ed
mov edx, dword [esp + 0xa0]
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x4ae5cd
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 0x4ae6a9
dec dword [esp + 0x1e0]
add edx, edx
mov dword [esp + 0x87c], edx
cmp dword [esp + 0xa0], 2
jb 0x4ae6a9
mov edx, dword [esp + 0xa0]
lea edi, [edx - 1]
shr edi, 1
je 0x4b037d
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 0x4ae63c
mov esi, dword [esp + 0x34c]
lea eax, [edx + edx + 1]
mov ecx, dword [esp + 0x168]
lea edx, [eax - 1]
cmp edx, esi
jae 0x4ae6a9
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 0x4ae6c6
mov esi, dword [esp + 0xa0]
cmp esi, edi
jb 0x4ae767
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 0x4ae74f
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 0x4ae726
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4ae717
test esi, esi
je 0x4ae72f
inc eax
mov dword [edi], eax
jmp 0x4ae76e
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x4ae76e
mov dword [edi], edx
cmp dword [esp + 8], 0
jne 0x4ae76e
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ae758
jmp 0x4ae76e
lea edi, [esp + esi*4 + 0x878]
cmp dword [esp + 0x240], 0
je 0x4aecd3
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 0x4ae7f2
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 0x4ae94a
mov edx, dword [esp + 0x70]
shr edx, 1
mov dword [esp + 0x74], edx
je 0x4b0373
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 0x4ae8e3
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 0x4ae94a
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 0x4aea2f
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 0x4aea13
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 0x4ae98e
mov eax, dword [esp + 0x390]
mov edx, dword [esp + 0x240]
dec eax
jne 0x4ae96f
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 0x4aeb61
mov edx, esi
mov dword [esp + 0x58], 0
shr edx, 1
je 0x4b0369
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 0x4aeac0
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 0x4aeb5b
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 0x4aeb61
mov edx, dword [esp + 0x54]
mov edx, dword [edx]
test edx, edx
jne 0x4aeb83
mov edx, dword [esp + 0x6c]
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x4aeb69
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 0x4aec27
dec dword [esp + 0x1e0]
add edx, edx
mov dword [esp + 0x87c], edx
cmp dword [esp + 0x6c], 2
jb 0x4aec27
mov edx, dword [esp + 0x6c]
lea ecx, [edx - 1]
shr ecx, 1
je 0x4b035f
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 0x4aebc1
mov esi, dword [esp + 0x34c]
lea edi, [edx + edx + 1]
lea edx, [edi - 1]
cmp edx, esi
jae 0x4aec27
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 0x4aec3e
mov esi, dword [esp + 0x6c]
cmp esi, eax
jb 0x4aeccc
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 0x4aecb7
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 0x4aec8e
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4aec7f
test esi, esi
je 0x4aec97
inc eax
mov dword [edi], eax
jmp 0x4aecd3
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x4aecd3
mov dword [edi], ecx
test ecx, ecx
jne 0x4aecd3
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4aecbd
jmp 0x4aecd3
lea edi, [esp + esi*4 + 0x878]
cmp dword [esp + 0x2bc], 0
je 0x4af251
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 0x4aedd8
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 0x4aed59
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov edx, ecx
mov dword [esp + ecx*4 + 0x638], 0
dec edx
js 0x4aee8e
mov edi, ecx
shr edi, 1
je 0x4b0355
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 0x4aee3b
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 0x4aee8e
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 0x4aef73
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
mov edx, dword [esp + 0x2bc]
mov esi, edx
test edx, edx
je 0x4aef57
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 0x4aeed2
mov eax, dword [esp + 0x3cc]
mov edx, dword [esp + 0x2bc]
dec eax
jne 0x4aeeac
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 0x4af0f9
mov ecx, esi
mov dword [esp + 0x114], 0
shr ecx, 1
je 0x4b034b
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 0x4af030
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 0x4af0f0
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 0x4af0f9
mov ecx, dword [esp + 0x110]
mov ecx, dword [ecx]
test ecx, ecx
jne 0x4af114
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x4af0fd
mov dword [esp + 0x110], eax
lea esi, [edx - 1]
mov ecx, dword [esp + 0x87c]
test ecx, ecx
jle 0x4af1c4
dec dword [esp + 0x1e0]
add ecx, ecx
mov dword [esp + 0x87c], ecx
cmp edx, 2
jb 0x4af1c4
lea ecx, [edx - 1]
shr ecx, 1
je 0x4b0341
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 0x4af157
mov edx, dword [esp + 0xc4]
lea eax, [edi + edi + 1]
mov esi, dword [esp + 0x34c]
lea ecx, [eax - 1]
cmp ecx, esi
jae 0x4af1c4
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 0x4af1dc
mov esi, edx
cmp esi, eax
jb 0x4af24a
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 0x4af235
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 0x4af228
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4af219
test esi, esi
jne 0x4acf60
jmp 0x4acf68
mov dword [edi], ecx
test ecx, ecx
jne 0x4af251
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4af23b
jmp 0x4af251
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 0x4af367
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 0x4af2df
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 0x4af456
mov edx, dword [esp + 0x1e4]
shr edx, 1
mov dword [esp + 0x1f0], edx
je 0x4b0337
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 0x4af3e9
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 0x4af456
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 0x4af51f
mov dword [esp + 0x1cc], edi
mov eax, esi
mov edi, eax
test eax, eax
je 0x4af511
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 0x4af48c
mov ebx, dword [esp + 0x3f4]
mov eax, dword [esp + 0x34c]
dec ebx
jne 0x4af466
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 0x4af65d
mov edx, dword [esp + 0x1e8]
shr edx, 1
mov dword [esp + 0x344], edx
mov edx, 0
je 0x4b032d
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 0x4af5a0
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 0x4af656
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 0x4af65d
mov edx, dword [esp + edi*4 + 0x838]
test edx, edx
jne 0x4b031a
dec edi
lea edx, [esp + edi*4 + 0x838]
cmp dword [edx], 0
je 0x4af665
mov dword [esp + 0x1ec], edx
mov edx, dword [esp + 0x83c]
test edx, edx
jle 0x4af716
add edx, edx
dec eax
mov dword [esp + 0x83c], edx
cmp edi, 2
jb 0x4af716
lea ebx, [edi - 1]
shr ebx, 1
je 0x4b025a
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 0x4af6ab
mov eax, dword [esp + 0x324]
lea ebx, [edx + edx + 1]
lea edx, [edi - 1]
lea esi, [ebx - 1]
cmp esi, edx
jae 0x4af719
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 0x4af719
lea edx, [edi - 1]
mov ebx, dword [esp + 0x1ec]
cmp dword [ebx], 0
je 0x4af727
mov edx, edi
test eax, eax
jg 0x4ac3f1
mov edi, eax
neg edi
je 0x4af84a
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 0x4af843
mov ebx, esi
shr ebx, 1
mov dword [esp + 0x328], ebx
je 0x4b0310
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 0x4af7a0
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 0x4af83c
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 0x4af843
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 0x4af862
mov ebx, 0x27
mov ecx, dword [esp + 0x1fc]
mov byte [eax], 0x30
mov dword [esp + 0x200], ecx
cmp ebx, dword [esp + 0x210]
jle 0x4afa88
sub ebx, dword [esp + 0x210]
je 0x4afa88
xor eax, eax
mov dword [esp + 0x338], ebx
xor esi, esi
mov dword [esp + 0x838], 0
test edx, edx
je 0x4afa51
mov ebx, dword [esp + edx*4 + 0x838]
mov ecx, 0
mov dword [esp + edx*4 + 0x838], 0
je 0x4afa42
mov ecx, edx
shr ecx, 1
mov dword [esp + 0x364], ecx
je 0x4b0264
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 0x4af90e
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 0x4afa3b
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 0x4afa42
mov ecx, dword [esp + edx*4 + 0x838]
cmp ecx, 1
mov ebx, dword [esp + 0x838]
sbb edx, 0
jmp 0x4afa53
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 0x4af898
mov dword [esp + 0x204], ebx
mov dword [esp + 0x200], ecx
jmp 0x4afa98
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 0x4afaff
xor eax, eax
cmp dword [esp + 0x30c], 0x80000000
setne al
mov dword [esp + 0x224], eax
jmp 0x4afb0a
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 0x4afddd
mov eax, edi
add eax, 0x80000001
cmp eax, 1
ja 0x4b02b6
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 0x4afd75
lea ecx, [edx - 1]
shr ecx, 1
mov dword [esp + 0x318], ecx
je 0x4b0300
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 0x4afc11
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 0x4b02e7
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 0x4afdad
xor edx, edx
cmp dword [esp + 0x30c], 0x80000000
setne dl
jmp 0x4afdaf
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 0x4b02b6
test ebx, ebx
je 0x4b02b6
cmp dword [esp + 0x20c], 0x80
jae 0x4b026e
mov dword [esp + 0x20c], 0x80
jmp 0x4ac75c
call fcn.004cba1b
mov ecx, eax
shr ecx, 1
je 0x4afe45
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 0x4afe20
lea ecx, [ebx + ebx + 1]
lea edx, [ecx - 1]
cmp edx, eax
jae 0x4abe5a
mov byte [ecx + esi - 1], 0x30
jmp 0x4abe5a
mov ecx, 1
jmp 0x4afe30
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 0x4afe7e
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 0x4afe86
mov dword [esp + 0x10], 0
mov edx, dword [esp + 0x20]
lea edx, [edx + 1]
cmp edx, ecx
ja 0x4aff19
sub ecx, edx
inc ecx
mov edx, ecx
mov dword [esp + 8], 0
shr edx, 1
mov dword [esp + 0xc], edx
je 0x4b0030
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 0x4afed7
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 0x4aff21
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 0x4aff21
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 0x4affc7
movsx edx, byte [edi - 1]
cmp edx, dword [esp + 0x1c]
jne 0x4affae
mov ecx, dword [esp + 0x1c]
dec edi
movsx edx, byte [edi - 1]
cmp edx, ecx
je 0x4affa5
cmp edx, 0x39
mov ecx, dword [esp + 0x18]
je 0x4affbc
mov ecx, 1
add edx, ecx
mov byte [edi - 1], dl
cmp edi, eax
je 0x4b003a
jmp 0x4affd5
cmp dword [esp + 0x2c4], 0
jle 0x4abdbf
test dword [ebp + 0x20], 0x80
je 0x4affed
cmp byte [edi - 1], 0x30
jne 0x4b0029
dec edi
cmp byte [edi - 1], 0x30
je 0x4affe4
jmp 0x4b0029
mov edx, dword [esp + 0x2c4]
sub edx, edi
lea ebx, [edx + eax - 1]
test ebx, ebx
jl 0x4b0029
lea edx, [ebx + 1]
mov dword [esp], edx
cmp ebx, 0x60
jle 0x4b0070
push dword [esp]
push 0x30
push edi
mov dword [esp + 0x208], eax
call fcn.004c6960
mov eax, dword [esp + 0x208]
add esp, 0xc
lea edi, [edi + ebx + 1]
xor edx, edx
jmp 0x4abe84
mov edx, 1
jmp 0x4afef9
mov edx, dword [ebp + 0x30]
dec eax
inc dword [edx]
cmp dword [esp + 0x228], 0
je 0x4b004d
mov byte [eax], 0x38
test byte [ebp + 0x20], 2
je 0x4affd5
mov ecx, dword [esp + 0x2c4]
inc ecx
mov edx, dword [ebp + 0x18]
cmp ecx, edx
jl 0x4b0064
mov ecx, edx
mov dword [esp + 0x2c4], ecx
jmp 0x4affd5
shr edx, 1
je 0x4b00ad
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 0x4b0084
mov esi, dword [esp + 0x334]
lea ecx, [ecx + ecx + 1]
lea edx, [ecx - 1]
cmp edx, dword [esp]
jae 0x4b0025
mov byte [edi + ecx - 1], 0x30
jmp 0x4b0025
mov ecx, 1
jmp 0x4b009b
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 0x4afe62
jmp 0x4afe86
cmp dword [esp + 0x194], 0
jne 0x4b010f
cmp dword [esp + 0x190], 0
je 0x4b00f9
cmp dword [esp + 0x2c4], 0
js 0x4b010f
cmp dword [esp + 0x230], 0
jne 0x4b0122
mov eax, edx
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
jmp 0x4ac4b1
mov eax, edx
mov edx, dword [ebp + 0x30]
mov esi, dword [esp + 0x334]
mov dword [edx], eax
jmp 0x4abdbf
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 0x4b016e
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 0x4abe84
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x19c]
mov dword [edx], eax
jmp 0x4abdbf
lea edi, [esp + 0x880]
jmp 0x4af251
mov edx, 1
jmp 0x4acdba
mov edi, 1
jmp 0x4acb99
mov esi, 8
lea edi, [esp + 0x880]
jmp 0x4aca3a
mov ecx, eax
neg ecx
mov esi, ecx
sar esi, 3
movzx edx, word [esi*2 + 0x508e00]
lea edi, [esi + 1]
shr edx, 5
cmp edx, ecx
jl 0x4b01cd
mov edi, esi
movzx edx, word [edi*2 + 0x508e00]
mov esi, edx
and esi, 0x1f
shr edx, 5
add edx, eax
movsx eax, word [esi*2 + 0x508f5a]
mov ecx, dword [esi*8 + 0x508d84]
mov dword [esp + 0x138], eax
mov dword [esp + 0x7fc], ecx
mov eax, dword [esi*8 + 0x508d80]
jmp 0x4ac9e7
mov edx, 1
jmp 0x4ad6a2
mov edx, 1
jmp 0x4ad57a
mov edx, 1
jmp 0x4ad333
mov edx, 1
jmp 0x4addee
mov edx, 1
jmp 0x4adce4
mov edx, 1
jmp 0x4adabd
lea edi, [esp + 0x888]
jmp 0x4aecd3
mov eax, 1
jmp 0x4acec5
mov ebx, 1
jmp 0x4af6ee
mov ecx, 1
jmp 0x4af9c0
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 0x4aff93
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 0x4aff93
xor edx, edx
cmp dword [esp + 0x30c], 0
setge dl
mov dword [esp + 0x218], edx
jmp 0x4afd75
mov dword [esp + 0x180], 1
jmp 0x4afce0
mov ecx, 1
jmp 0x4af80f
lea edx, [esp + edi*4 + 0x838]
mov dword [esp + 0x1ec], edx
jmp 0x4af679
mov ebx, 1
jmp 0x4af605
mov edx, 1
jmp 0x4af418
mov eax, 1
jmp 0x4af1a1
mov eax, 1
jmp 0x4af0a3
mov edx, 1
jmp 0x4aee6a
mov edi, 1
jmp 0x4aec04
mov eax, 1
jmp 0x4aeb22
mov edx, 1
jmp 0x4ae912
mov eax, 1
jmp 0x4ae686
mov eax, 1
jmp 0x4ae56c
mov edx, 1
jmp 0x4ae334
lea edi, [esp + 0x880]
jmp 0x4ae15a
mov edi, 0x1b
jmp 0x4ae115
xor eax, eax
mov dword [esp + 0x780], eax
mov dword [esp + 0x77c], eax
jmp 0x4ae115
movsx edx, word [0x5089a2]
xor eax, eax
mov dword [esp + 0x780], eax
mov dword [esp + 0x77c], eax
mov dword [esp + 0x1e0], edx
mov esi, dword [0x50882c]
mov edi, dword [0x508828]
mov eax, dword [0x508824]
mov edx, dword [0x508820]
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 0x4ae76e
mov edx, edi
neg edx
mov esi, edx
sar esi, 3
mov dword [esp + 0x240], 4
movzx ecx, word [esi*2 + 0x508740]
lea eax, [esi + 1]
shr ecx, 5
cmp ecx, edx
jl 0x4b0447
mov eax, esi
movzx ecx, word [eax*2 + 0x508740]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
add edi, ecx
movsx ecx, word [eax*2 + 0x508986]
shl eax, 4
mov edx, dword [eax + 0x5086ac]
mov dword [esp + 0x7fc], edx
mov esi, dword [eax + 0x5086a8]
mov edx, dword [eax + 0x5086a4]
mov eax, dword [eax + 0x5086a0]
mov dword [esp + 0x800], esi
mov dword [esp + 0x804], edx
mov dword [esp + 0x808], eax
jmp 0x4ae0a2
mov dword [esp + 0x848], eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
jmp 0x4abe1c