Function at 0x4a9df0
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 [0x543b10]
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 0x4ae83d
mov ecx, dword [ebp + 0x20]
mov edx, ecx
shr edx, 0x16
and edx, 7
test ecx, 0x80000000
jne 0x4a9ea9
test dl, 1
jne 0x4a9ea9
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 0x4a9f18
mov edx, 0xaaaa
test ecx, ecx
jne 0x4a9f0f
mov edx, 0xfa
mov dword [esp + 0x22c], edx
jmp 0x4a9f3f
test ecx, ecx
je 0x4a9f29
mov dword [esp + 0x22c], 0xfa00
jmp 0x4a9f3f
test dl, 1
mov edx, 0xa8a8
je 0x4a9f38
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 0x4a9f92
cmp edx, 0x7fff0000
jne 0x4aa420
mov eax, dword [esp]
xor eax, edx
or eax, dword [esp + 0x48]
or eax, dword [esp + 0x44]
or eax, dword [esp + 0x40]
jne 0x4aa064
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 0x4aa044
test ecx, ecx
je 0x4a9fda
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xfffffffc
jmp 0x4a9fe3
mov eax, dword [ebp + 0x34]
mov dword [eax], 4
test ebx, 0x400
je 0x4aa001
test ebx, 0x200
je 0x4a9ffa
mov eax, str.INFINITY
jmp 0x4aa006
mov eax, str.infinity
jmp 0x4aa006
mov eax, str.Infinity
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x4aa01d
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x4aa012
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 0x4aa224
test ecx, ecx
je 0x4aa056
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xffffffff
jmp 0x4aa15f
mov eax, dword [ebp + 0x34]
mov dword [eax], 1
jmp 0x4aa15f
test edx, edx
je 0x4aa11c
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 0x4aa0d3
test dword [esp], 0x8000
jne 0x4aa0aa
shr ecx, 0x1e
mov eax, 0x10
shr eax, cl
add eax, 0xfffffff6
jmp 0x4aa0b8
mov eax, 0xfffffffb
test ecx, ecx
jne 0x4aa0b8
mov eax, 5
mov edx, dword [ebp + 0x34]
mov dword [edx], eax
test ebx, 0x200
je 0x4aa0cc
mov eax, 0x50a960
jmp 0x4aa0e1
mov eax, 0x50a964
jmp 0x4aa0e1
mov eax, dword [ebp + 0x34]
mov dword [eax], 0
mov eax, 0x50a968
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x4aa0f8
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x4aa0ed
mov ebx, dword [ebp + 0x30]
mov ecx, edi
mov edx, 0xa
test dword [ebp + 0x20], 0x40000000
mov eax, dword [ebp + 0x24]
jne 0x4aa113
mov edx, 0
sub ecx, esi
mov dword [ebx], ecx
jmp 0x4aa224
test ecx, ecx
je 0x4aa12b
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xfffffffe
jmp 0x4aa134
mov eax, dword [ebp + 0x34]
mov dword [eax], 2
test dword [ebp + 0x20], 0x10000000
je 0x4aa293
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 0x4aa175
mov dword [esp + 0x2c0], 1
jmp 0x4aa1d4
test byte [ebp + 0x20], 2
je 0x4aa199
mov eax, dword [esp + 0x2c0]
inc eax
mov dword [esp + 0x2c0], eax
cmp eax, dword [ebp + 0x18]
jle 0x4aa1b2
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 0x4aa1db
jmp 0x4aa205
cmp dword [esp + 0x2c0], 0
jg 0x4aa1d4
mov edx, dword [ebp + 0x30]
mov eax, esi
mov byte [esi], 0x30
lea edi, [esi + 1]
mov dword [edx], 1
mov edx, 6
jmp 0x4aa224
dec dword [esp + 0x2c0]
mov edx, dword [esp + 0x2c0]
lea eax, [edx + 1]
cmp edx, 0x60
jle 0x4ae1b3
push eax
push 0x30
push esi
call fcn.004ca8b0
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 0x4aa224
mov edx, 0
mov ebx, dword [ebp + 0x28]
mov byte [edi], 0
test ebx, ebx
je 0x4aa234
mov ecx, eax
sub ecx, esi
mov dword [ebx], ecx
mov ecx, dword [ebp + 0x2c]
test ecx, ecx
je 0x4aa241
neg esi
add esi, edi
mov dword [ecx], esi
mov ecx, eax
test eax, eax
je 0x4aa258
cmp ecx, edi
jae 0x4aa258
movsx ebx, byte [ecx]
inc ecx
cmp ebx, 0x30
jne 0x4aa25d
test ecx, ecx
jne 0x4aa247
mov edx, 0xb
mov ecx, dword [ebp + 0x38]
test ecx, ecx
je 0x4aa266
mov dword [ecx], edx
mov ecx, dword [esp + 0x8b8]
mov dword [esp + 0x8b8], 0
xor ecx, esp
cmp ecx, dword [0x543b10]
jne 0x4ae1ae
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 0x4aa2e6
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 0x4aa401
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 0x4aa37f
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 0x4aa34e
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 0x4aa401
mov dword [esp], 0
mov eax, dword [esp]
mov edx, dword [esp + 4]
add edx, edx
inc eax
test edx, edx
jg 0x4aa394
mov dword [esp], eax
mov dword [esp + 4], edx
cmp dword [esp], 0
je 0x4aa401
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 0x4aa438
test ecx, ecx
je 0x4aa42f
mov edx, dword [ebp + 0x34]
mov dword [edx], 0xfffffffd
jmp 0x4aa438
mov edx, dword [ebp + 0x34]
mov dword [edx], 3
mov edx, ebx
and edx, 0x100
mov dword [esp + 0x228], edx
je 0x4aa6bd
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 0x4aa4c4
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 0x4aa5df
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 0x4aa55d
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 0x4aa52c
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 0x4aa5df
mov dword [esp], 0
mov eax, dword [esp]
mov edx, dword [esp + 0x10]
add edx, edx
inc eax
test edx, edx
jg 0x4aa572
mov dword [esp], eax
mov dword [esp + 0x10], edx
cmp dword [esp], 0
je 0x4aa5df
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 0x4aa60b
mov ecx, 3
test eax, eax
mov dword [esp + 0x844], edx
je 0x4aa61b
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 0x4aa67a
lea eax, [ecx + 0x30]
jmp 0x4aa68c
cmp dword [esp + 0x230], 0
je 0x4aa689
lea eax, [ecx + 0x37]
jmp 0x4aa68c
lea eax, [ecx + 0x57]
mov byte [edi], al
inc edi
test ebx, ebx
jle 0x4ae454
dec ebx
test edx, edx
jne 0x4aa667
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x24]
jae 0x4ae1ec
mov edx, 8
inc eax
mov dword [esp + 0x20], eax
mov esi, dword [esp + eax*4 + 0x838]
jmp 0x4aa667
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 0x4aa7a4
mov edi, dword [esp + 0x1f8]
neg edi
lea eax, [edi + 1]
mov dword [esp + 0x19c], eax
cmp dword [esp + 0x1b4], 0
je 0x4aa845
cmp dword [esp + 0x2c0], 0
jge 0x4aa7de
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 0x4aa82e
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 0x4aa81c
mov ebx, ecx
mov dword [edx], eax
mov dword [esp + 0x210], ebx
mov dword [esp + 0x2c4], esi
jmp 0x4aa851
cmp dword [esp + 0x2c4], 0
jle 0x4ae47b
mov eax, edx
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
jmp 0x4aa851
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x19c]
mov dword [edx], eax
mov edi, eax
neg edi
jne 0x4aaa3f
mov esi, dword [ebp + 0x14]
mov eax, esi
and eax, 0x7fff0000
mov edx, dword [ebp + 0x10]
shr eax, 0x10
je 0x4aa8ad
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 0x4aa9d1
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 0x4aa92f
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 0x4aa90b
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], edx
mov edi, dword [esp + 0x1f8]
test esi, esi
jle 0x4aa9d1
mov dword [esp + 0xb8], 0
mov edx, dword [esp + 0xb8]
add esi, esi
inc edx
test esi, esi
jg 0x4aa949
mov dword [esp + 0xb8], edx
cmp dword [esp + 0xb8], 0
je 0x4aa9d1
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 0x4aaa0e
mov edx, 3
mov esi, 0x71
test ebx, ebx
mov dword [esp + 0x848], ebx
je 0x4aaa23
mov edx, 4
xor ebx, ebx
mov dword [esp + 0x20c], esi
mov dword [esp + 0x214], ebx
mov dword [esp + 0x1f8], edi
jmp 0x4adac7
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 0x4aaac1
cmp edi, 0x159
jle 0x4aaac8
mov esi, 0x80
jmp 0x4aaadc
mov esi, 0x80
cmp dword [esp + 0x2c4], 0x11
jg 0x4aaadc
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 0x4aab47
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 0x4aac03
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 0x4aab89
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 0x4aab73
mov dword [esp + 0x1f4], ecx
test eax, eax
jle 0x4aac03
mov dword [esp + 0x170], 0
mov ecx, dword [esp + 0x170]
add eax, eax
inc ecx
test eax, eax
jg 0x4aab9f
mov dword [esp + 0x170], ecx
cmp dword [esp + 0x170], 0
je 0x4aac03
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 0x4aac2d
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 0x4aac9f
mov ebx, 4
mov edi, dword [esp + 0x1f8]
cmp dword [esp + 0x20c], 0x40
jne 0x4ab34a
mov eax, edi
lea edx, [eax + 0x2f]
cmp edx, 0x5e
ja 0x4aad28
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 + 0x50b4be]
mov dword [esp + 0x1e0], ecx
mov edi, dword [eax + 0x50b2dc]
mov edx, dword [eax + 0x50b2d8]
mov dword [esp + 0x87c], edi
mov dword [esp + 0x880], edx
test edx, edx
jne 0x4ae51f
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4aad16
jmp 0x4ad5f1
cmp dword [esp + 0x1f8], 0
js 0x4ae550
mov ecx, eax
sar ecx, 3
movzx edx, word [ecx*2 + 0x50b6a2]
lea esi, [ecx + 1]
shr edx, 5
cmp edx, eax
jle 0x4aad4f
mov esi, ecx
movzx edx, word [esi*2 + 0x50b6a0]
mov ecx, edx
and ecx, 0x1f
shr edx, 5
neg edx
add edx, eax
mov eax, dword [ecx*8 + 0x50b624]
movsx edi, word [ecx*2 + 0x50b718]
mov dword [esp + 0x7fc], eax
mov dword [esp + 0x138], edi
mov eax, dword [ecx*8 + 0x50b620]
movsx ecx, word [edx*2 + 0x50b4be]
mov esi, dword [edx*8 + 0x50b2dc]
mov edx, dword [edx*8 + 0x50b2d8]
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 0x4ae53f
dec ecx
lea edi, [esp + ecx*4 + 0x878]
cmp dword [edi], 0
lea esi, [ecx*4]
je 0x4aadc6
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 0x4aaf69
mov edx, ecx
shr edx, 1
je 0x4ae535
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 0x4aaef2
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 0x4aaf69
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 0x4ab02c
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 0x4aaf99
mov eax, dword [esp + 0x3e0]
dec eax
jne 0x4aaf7f
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 0x4ab1b5
mov dword [esp + 0x144], 0
shr edx, 1
mov dword [esp + 0x28c], edx
je 0x4ae52b
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 0x4ab0e0
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 0x4ab1b3
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 0x4ab1b5
mov eax, dword [edi]
test eax, eax
jne 0x4ab1c6
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ab1b9
mov eax, dword [esp + 0x87c]
test eax, eax
jle 0x4ab2a1
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 0x4ab297
lea edx, [esi - 1]
shr edx, 1
je 0x4ae5f0
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 0x4ab21b
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 0x4ab28f
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 0x4ab291
mov edx, dword [edi]
test edx, edx
je 0x4ab2a0
jmp 0x4ab2aa
cmp dword [edi], 0
jne 0x4ad5f1
dec esi
cmp esi, 2
jb 0x4ad5ea
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 0x4ab32b
mov dword [esp + 0x878], 0
mov esi, 1
cmp dword [esp + 0x87c], 0xffffffff
je 0x4ab2ed
lea edi, [esp + 0x87c]
mov eax, dword [edi]
jmp 0x4ab300
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4ab2ed
test esi, esi
je 0x4ab308
inc eax
mov dword [edi], eax
jmp 0x4ad5f1
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x4ad5f1
mov esi, 2
test edx, edx
jne 0x4ae51f
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ab338
jmp 0x4ad5f1
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 0x4abb6a
mov edx, dword [esp + 0x20c]
shr edx, 5
cmp dword [esp + 0x1f8], 0xfffff000
jle 0x4ab42a
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 0x4ab497
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 + 0x50b11e]
mov esi, dword [ecx + 0x50ae0c]
mov dword [esp + 0x7bc], esi
mov esi, dword [ecx + 0x50ae08]
mov dword [esp + 0x7c0], esi
mov esi, dword [ecx + 0x50ae04]
mov ecx, dword [ecx + 0x50ae00]
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 0x4ab4cd
mov eax, dword [esp + 0x1a0]
sar ecx, 1
dec eax
js 0x4abb28
mov dword [esp + 0x1a0], eax
mov eax, ecx
neg eax
cmp edi, eax
jg 0x4ab4c6
add edi, ecx
test esi, esi
je 0x4abb42
mov ebx, dword [esp + 0x1a0]
movsx eax, word [ebx*2 + 0x50b11e]
shl ebx, 4
mov dword [esp + 0x168], eax
mov edx, dword [ebx + 0x50ae0c]
mov eax, dword [ebx + 0x50ae08]
mov dword [esp + 0x7fc], edx
mov dword [esp + 0x800], eax
mov edx, dword [ebx + 0x50ae04]
mov ebx, dword [ebx + 0x50ae00]
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 0x4ab5a1
mov eax, ebx
mov ecx, dword [esp + 0x16c]
dec eax
mov edi, dword [esp + 0x160]
mov dword [esp + ebx*4 + 0x5b8], 0
js 0x4ab705
mov eax, ebx
shr eax, 1
mov dword [esp + 0xf4], eax
je 0x4ae5bc
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 0x4ab69d
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 0x4ab705
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 0x4ab7de
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 0x4ab73f
mov edx, dword [esp + 0x3b8]
mov eax, 4
dec edx
jne 0x4ab728
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 0x4ab97e
mov edx, eax
mov dword [esp + 0xf0], 0
shr edx, 1
mov dword [esp + 0x25c], edx
je 0x4ae5b2
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 0x4ab8a0
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 0x4ab975
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 0x4ab97e
mov edx, dword [esp + 0xe8]
mov ebx, dword [edx]
test ebx, ebx
jne 0x4ab9a9
mov edx, dword [esp + 0xec]
dec edx
lea eax, [esp + edx*4 + 0x7b8]
cmp dword [eax], 0
je 0x4ab989
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 0x4aba65
dec dword [esp + 0x164]
add edx, edx
mov dword [esp + 0x7bc], edx
cmp dword [esp + 0xec], 2
jb 0x4aba65
mov edx, dword [esp + 0xec]
lea ebx, [edx - 1]
shr ebx, 1
je 0x4ae5a8
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 0x4ab9f8
mov ecx, dword [esp + 0x16c]
lea edx, [esi + esi + 1]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x4aba65
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 0x4aba7a
mov esi, dword [esp + 0xec]
cmp esi, dword [esp + 0x15c]
jb 0x4abb19
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 0x4abb01
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 0x4abadf
dec esi
lea edx, [esp + esi*4 + 0x7b8]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x4abad0
test esi, esi
je 0x4abae8
inc eax
mov dword [edx], eax
jmp 0x4abb19
inc dword [esp + 0x164]
mov esi, 1
mov dword [esp + 0x7bc], 0x80000000
jmp 0x4abb19
mov edx, esi
mov dword [esp + edx*4 + 0x7b8], eax
test eax, eax
jne 0x4abb19
dec esi
cmp dword [esp + esi*4 + 0x7b8], 0
je 0x4abb0e
sar ecx, 1
dec dword [esp + 0x1a0]
jns 0x4ab4dd
mov dword [esp + 0x2bc], esi
mov ebx, dword [esp + 0x3f4]
mov ecx, dword [esp + 0x168]
jmp 0x4ac2e2
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 0x4ab451
cmp dword [esp + 0x1f8], 0x216
jle 0x4ac2bb
mov edx, dword [esp + 0x20c]
shr edx, 5
cmp dword [esp + 0x1f8], 0x1000
jge 0x4abbe8
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 0x4abc55
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 + 0x50b13a]
mov esi, dword [ecx + 0x50af8c]
mov dword [esp + 0x7bc], esi
mov esi, dword [ecx + 0x50af88]
mov dword [esp + 0x7c0], esi
mov esi, dword [ecx + 0x50af84]
mov ecx, dword [ecx + 0x50af80]
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 0x4abc8b
mov eax, dword [esp + 0x14c]
sar ecx, 1
dec eax
js 0x4abb28
mov dword [esp + 0x14c], eax
cmp edi, ecx
jl 0x4abc84
sub edi, ecx
test esi, esi
je 0x4ac293
mov ebx, dword [esp + 0x14c]
movsx eax, word [ebx*2 + 0x50b13a]
shl ebx, 4
mov dword [esp + 0x168], eax
mov edx, dword [ebx + 0x50af8c]
mov eax, dword [ebx + 0x50af88]
mov dword [esp + 0x7fc], edx
mov dword [esp + 0x800], eax
mov edx, dword [ebx + 0x50af84]
mov ebx, dword [ebx + 0x50af80]
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 0x4abd43
mov eax, ebx
mov ecx, dword [esp + 0x100]
dec eax
mov edi, dword [esp + 0x160]
mov dword [esp + ebx*4 + 0x438], 0
js 0x4abe8f
mov eax, ebx
shr eax, 1
mov dword [esp + 0x48], eax
je 0x4ae5da
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 0x4abe2a
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 0x4abe8f
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 0x4abf68
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 0x4abec9
mov edx, dword [esp + 0x37c]
mov eax, 4
dec edx
jne 0x4abeb2
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 0x4ac0d9
mov edx, eax
mov dword [esp + 0x44], 0
shr edx, 1
mov dword [esp + 0x1ac], edx
je 0x4ae5d0
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 0x4ac010
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 0x4ac0d3
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 0x4ac0d9
mov edx, dword [esp + 0x3c]
mov ebx, dword [edx]
test ebx, ebx
jne 0x4ac0fb
mov edx, dword [esp + 0x40]
dec edx
lea eax, [esp + edx*4 + 0x7b8]
cmp dword [eax], 0
je 0x4ac0e1
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 0x4ac1b1
dec dword [esp + 0x164]
add edx, edx
mov dword [esp + 0x7bc], edx
cmp dword [esp + 0x40], 2
jb 0x4ac1b1
mov edx, dword [esp + 0x40]
lea ebx, [edx - 1]
shr ebx, 1
je 0x4ae5c6
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 0x4ac144
mov ecx, dword [esp + 0x100]
lea edx, [esi + esi + 1]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x4ac1b1
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 0x4ac1c0
mov esi, dword [esp + 0x40]
cmp esi, dword [esp + 0xfc]
jb 0x4ac26d
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 0x4ac255
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 0x4ac233
mov dword [esp + 0x160], edi
dec esi
lea edx, [esp + esi*4 + 0x7b8]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x4ac21d
mov edi, dword [esp + 0x160]
test esi, esi
je 0x4ac23c
inc eax
mov dword [edx], eax
jmp 0x4ac26d
inc dword [esp + 0x164]
mov esi, 1
mov dword [esp + 0x7bc], 0x80000000
jmp 0x4ac26d
mov edx, esi
mov dword [esp + edx*4 + 0x7b8], eax
test eax, eax
jne 0x4ac26d
dec esi
cmp dword [esp + esi*4 + 0x7b8], 0
je 0x4ac262
sar ecx, 1
dec dword [esp + 0x14c]
jns 0x4abc9b
mov dword [esp + 0x2bc], esi
mov ebx, dword [esp + 0x3f4]
mov ecx, dword [esp + 0x168]
jmp 0x4ac2e2
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 0x4abc0f
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 0x4ac34f
movsx eax, word [edi*2 + 0x50b11e]
shl edi, 4
mov dword [esp + 0x1e0], eax
mov edx, dword [edi + 0x50adfc]
mov ecx, dword [edi + 0x50adf8]
mov esi, dword [edi + 0x50adf4]
mov edi, dword [edi + 0x50adf0]
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 0x4ae5e4
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ac33d
jmp 0x4ad073
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 0x4ae7bf
cmp edi, 0x37
jl 0x4ac437
mov edx, edi
sar edx, 3
mov dword [esp + 0x240], 4
movzx ecx, word [edx*2 + 0x50b062]
lea esi, [edx + 1]
shr ecx, 5
cmp ecx, edi
jle 0x4ac3e4
mov esi, edx
movzx ecx, word [esi*2 + 0x50b060]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
sub edi, ecx
movsx ecx, word [eax*2 + 0x50b142]
shl eax, 4
mov edx, dword [eax + 0x50afcc]
mov dword [esp + 0x7fc], edx
mov esi, dword [eax + 0x50afc8]
mov edx, dword [eax + 0x50afc4]
mov eax, dword [eax + 0x50afc0]
mov dword [esp + 0x800], esi
mov dword [esp + 0x804], edx
mov dword [esp + 0x808], eax
jmp 0x4ac442
mov dword [esp + 0x240], 0
cmp edi, 0x37
je 0x4ae766
lea eax, [edi - 0x1b]
mov dword [esp + 0x98], eax
test eax, eax
jle 0x4ae751
mov esi, eax
movsx eax, word [esi*2 + 0x50b4be]
mov edx, dword [esi*8 + 0x50b2dc]
mov edi, dword [esi*8 + 0x50b2d8]
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 0x4ae747
dec eax
cmp dword [esp + eax*4 + 0x778], 0
je 0x4ac49e
mov dword [esp + 0x294], eax
mov edi, 0x1b
movsx edx, word [edi*2 + 0x50b4be]
mov esi, 2
mov dword [esp + 0x1e0], edx
mov edx, dword [edi*8 + 0x50b2dc]
mov edi, dword [edi*8 + 0x50b2d8]
mov dword [esp + 0x87c], edx
mov dword [esp + 0x880], edi
test edi, edi
jne 0x4ae73b
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ac4ed
cmp dword [esp + 0x98], 0
jle 0x4acb0e
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 0x4ac629
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 0x4ac59c
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 0x4ac712
mov edx, dword [esp + 0xa4]
shr edx, 1
mov dword [esp + 0xac], edx
je 0x4ae731
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 0x4ac6a5
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 0x4ac712
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 0x4ac7f7
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 0x4ac7db
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 0x4ac756
mov eax, dword [esp + 0x3a4]
mov edx, dword [esp + 0x294]
dec eax
jne 0x4ac737
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 0x4ac962
mov eax, esi
mov dword [esp + 0xa8], 0
shr eax, 1
je 0x4ae727
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 0x4ac8a0
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 0x4ac959
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 0x4ac962
mov edx, dword [esp + 0x9c]
mov edx, dword [edx]
test edx, edx
jne 0x4ac98d
mov edx, dword [esp + 0xa0]
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x4ac96d
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 0x4aca49
dec dword [esp + 0x1e0]
add edx, edx
mov dword [esp + 0x87c], edx
cmp dword [esp + 0xa0], 2
jb 0x4aca49
mov edx, dword [esp + 0xa0]
lea edi, [edx - 1]
shr edi, 1
je 0x4ae71d
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 0x4ac9dc
mov esi, dword [esp + 0x34c]
lea eax, [edx + edx + 1]
mov ecx, dword [esp + 0x168]
lea edx, [eax - 1]
cmp edx, esi
jae 0x4aca49
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 0x4aca66
mov esi, dword [esp + 0xa0]
cmp esi, edi
jb 0x4acb07
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 0x4acaef
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 0x4acac6
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4acab7
test esi, esi
je 0x4acacf
inc eax
mov dword [edi], eax
jmp 0x4acb0e
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x4acb0e
mov dword [edi], edx
cmp dword [esp + 8], 0
jne 0x4acb0e
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4acaf8
jmp 0x4acb0e
lea edi, [esp + esi*4 + 0x878]
cmp dword [esp + 0x240], 0
je 0x4ad073
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 0x4acb92
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 0x4accea
mov edx, dword [esp + 0x70]
shr edx, 1
mov dword [esp + 0x74], edx
je 0x4ae713
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 0x4acc83
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 0x4accea
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 0x4acdcf
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 0x4acdb3
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 0x4acd2e
mov eax, dword [esp + 0x390]
mov edx, dword [esp + 0x240]
dec eax
jne 0x4acd0f
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 0x4acf01
mov edx, esi
mov dword [esp + 0x58], 0
shr edx, 1
je 0x4ae709
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 0x4ace60
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 0x4acefb
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 0x4acf01
mov edx, dword [esp + 0x54]
mov edx, dword [edx]
test edx, edx
jne 0x4acf23
mov edx, dword [esp + 0x6c]
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x4acf09
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 0x4acfc7
dec dword [esp + 0x1e0]
add edx, edx
mov dword [esp + 0x87c], edx
cmp dword [esp + 0x6c], 2
jb 0x4acfc7
mov edx, dword [esp + 0x6c]
lea ecx, [edx - 1]
shr ecx, 1
je 0x4ae6ff
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 0x4acf61
mov esi, dword [esp + 0x34c]
lea edi, [edx + edx + 1]
lea edx, [edi - 1]
cmp edx, esi
jae 0x4acfc7
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 0x4acfde
mov esi, dword [esp + 0x6c]
cmp esi, eax
jb 0x4ad06c
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 0x4ad057
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 0x4ad02e
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4ad01f
test esi, esi
je 0x4ad037
inc eax
mov dword [edi], eax
jmp 0x4ad073
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x87c], 0x80000000
lea edi, [esp + 0x87c]
jmp 0x4ad073
mov dword [edi], ecx
test ecx, ecx
jne 0x4ad073
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ad05d
jmp 0x4ad073
lea edi, [esp + esi*4 + 0x878]
cmp dword [esp + 0x2bc], 0
je 0x4ad5f1
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 0x4ad178
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 0x4ad0f9
mov ebx, dword [esp + 0x3f4]
mov esi, dword [esp + 0x34c]
mov edx, ecx
mov dword [esp + ecx*4 + 0x638], 0
dec edx
js 0x4ad22e
mov edi, ecx
shr edi, 1
je 0x4ae6f5
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 0x4ad1db
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 0x4ad22e
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 0x4ad313
mov dword [esp + 0x3f4], ebx
mov dword [esp + 0x34c], esi
mov edx, dword [esp + 0x2bc]
mov esi, edx
test edx, edx
je 0x4ad2f7
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 0x4ad272
mov eax, dword [esp + 0x3cc]
mov edx, dword [esp + 0x2bc]
dec eax
jne 0x4ad24c
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 0x4ad499
mov ecx, esi
mov dword [esp + 0x114], 0
shr ecx, 1
je 0x4ae6eb
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 0x4ad3d0
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 0x4ad490
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 0x4ad499
mov ecx, dword [esp + 0x110]
mov ecx, dword [ecx]
test ecx, ecx
jne 0x4ad4b4
dec edx
lea eax, [esp + edx*4 + 0x878]
cmp dword [eax], 0
je 0x4ad49d
mov dword [esp + 0x110], eax
lea esi, [edx - 1]
mov ecx, dword [esp + 0x87c]
test ecx, ecx
jle 0x4ad564
dec dword [esp + 0x1e0]
add ecx, ecx
mov dword [esp + 0x87c], ecx
cmp edx, 2
jb 0x4ad564
lea ecx, [edx - 1]
shr ecx, 1
je 0x4ae6e1
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 0x4ad4f7
mov edx, dword [esp + 0xc4]
lea eax, [edi + edi + 1]
mov esi, dword [esp + 0x34c]
lea ecx, [eax - 1]
cmp ecx, esi
jae 0x4ad564
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 0x4ad57c
mov esi, edx
cmp esi, eax
jb 0x4ad5ea
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 0x4ad5d5
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 0x4ad5c8
dec esi
lea edi, [esp + esi*4 + 0x878]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4ad5b9
test esi, esi
jne 0x4ab300
jmp 0x4ab308
mov dword [edi], ecx
test ecx, ecx
jne 0x4ad5f1
dec esi
lea edi, [esp + esi*4 + 0x878]
cmp dword [edi], 0
je 0x4ad5db
jmp 0x4ad5f1
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 0x4ad707
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 0x4ad67f
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 0x4ad7f6
mov edx, dword [esp + 0x1e4]
shr edx, 1
mov dword [esp + 0x1f0], edx
je 0x4ae6d7
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 0x4ad789
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 0x4ad7f6
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 0x4ad8bf
mov dword [esp + 0x1cc], edi
mov eax, esi
mov edi, eax
test eax, eax
je 0x4ad8b1
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 0x4ad82c
mov ebx, dword [esp + 0x3f4]
mov eax, dword [esp + 0x34c]
dec ebx
jne 0x4ad806
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 0x4ad9fd
mov edx, dword [esp + 0x1e8]
shr edx, 1
mov dword [esp + 0x344], edx
mov edx, 0
je 0x4ae6cd
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 0x4ad940
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 0x4ad9f6
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 0x4ad9fd
mov edx, dword [esp + edi*4 + 0x838]
test edx, edx
jne 0x4ae6ba
dec edi
lea edx, [esp + edi*4 + 0x838]
cmp dword [edx], 0
je 0x4ada05
mov dword [esp + 0x1ec], edx
mov edx, dword [esp + 0x83c]
test edx, edx
jle 0x4adab6
add edx, edx
dec eax
mov dword [esp + 0x83c], edx
cmp edi, 2
jb 0x4adab6
lea ebx, [edi - 1]
shr ebx, 1
je 0x4ae5fa
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 0x4ada4b
mov eax, dword [esp + 0x324]
lea ebx, [edx + edx + 1]
lea edx, [edi - 1]
lea esi, [ebx - 1]
cmp esi, edx
jae 0x4adab9
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 0x4adab9
lea edx, [edi - 1]
mov ebx, dword [esp + 0x1ec]
cmp dword [ebx], 0
je 0x4adac7
mov edx, edi
test eax, eax
jg 0x4aa791
mov edi, eax
neg edi
je 0x4adbea
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 0x4adbe3
mov ebx, esi
shr ebx, 1
mov dword [esp + 0x328], ebx
je 0x4ae6b0
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 0x4adb40
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 0x4adbdc
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 0x4adbe3
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 0x4adc02
mov ebx, 0x27
mov ecx, dword [esp + 0x1fc]
mov byte [eax], 0x30
mov dword [esp + 0x200], ecx
cmp ebx, dword [esp + 0x210]
jle 0x4ade28
sub ebx, dword [esp + 0x210]
je 0x4ade28
xor eax, eax
mov dword [esp + 0x338], ebx
xor esi, esi
mov dword [esp + 0x838], 0
test edx, edx
je 0x4addf1
mov ebx, dword [esp + edx*4 + 0x838]
mov ecx, 0
mov dword [esp + edx*4 + 0x838], 0
je 0x4adde2
mov ecx, edx
shr ecx, 1
mov dword [esp + 0x364], ecx
je 0x4ae604
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 0x4adcae
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 0x4adddb
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 0x4adde2
mov ecx, dword [esp + edx*4 + 0x838]
cmp ecx, 1
mov ebx, dword [esp + 0x838]
sbb edx, 0
jmp 0x4addf3
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 0x4adc38
mov dword [esp + 0x204], ebx
mov dword [esp + 0x200], ecx
jmp 0x4ade38
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 0x4ade9f
xor eax, eax
cmp dword [esp + 0x30c], 0x80000000
setne al
mov dword [esp + 0x224], eax
jmp 0x4adeaa
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 0x4ae17d
mov eax, edi
add eax, 0x80000001
cmp eax, 1
ja 0x4ae656
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 0x4ae115
lea ecx, [edx - 1]
shr ecx, 1
mov dword [esp + 0x318], ecx
je 0x4ae6a0
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 0x4adfb1
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 0x4ae687
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 0x4ae14d
xor edx, edx
cmp dword [esp + 0x30c], 0x80000000
setne dl
jmp 0x4ae14f
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 0x4ae656
test ebx, ebx
je 0x4ae656
cmp dword [esp + 0x20c], 0x80
jae 0x4ae60e
mov dword [esp + 0x20c], 0x80
jmp 0x4aaafc
call fcn.004cf95b
mov ecx, eax
shr ecx, 1
je 0x4ae1e5
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 0x4ae1c0
lea ecx, [ebx + ebx + 1]
lea edx, [ecx - 1]
cmp edx, eax
jae 0x4aa1fa
mov byte [ecx + esi - 1], 0x30
jmp 0x4aa1fa
mov ecx, 1
jmp 0x4ae1d0
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 0x4ae21e
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 0x4ae226
mov dword [esp + 0x10], 0
mov edx, dword [esp + 0x20]
lea edx, [edx + 1]
cmp edx, ecx
ja 0x4ae2b9
sub ecx, edx
inc ecx
mov edx, ecx
mov dword [esp + 8], 0
shr edx, 1
mov dword [esp + 0xc], edx
je 0x4ae3d0
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 0x4ae277
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 0x4ae2c1
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 0x4ae2c1
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 0x4ae367
movsx edx, byte [edi - 1]
cmp edx, dword [esp + 0x1c]
jne 0x4ae34e
mov ecx, dword [esp + 0x1c]
dec edi
movsx edx, byte [edi - 1]
cmp edx, ecx
je 0x4ae345
cmp edx, 0x39
mov ecx, dword [esp + 0x18]
je 0x4ae35c
mov ecx, 1
add edx, ecx
mov byte [edi - 1], dl
cmp edi, eax
je 0x4ae3da
jmp 0x4ae375
cmp dword [esp + 0x2c4], 0
jle 0x4aa15f
test dword [ebp + 0x20], 0x80
je 0x4ae38d
cmp byte [edi - 1], 0x30
jne 0x4ae3c9
dec edi
cmp byte [edi - 1], 0x30
je 0x4ae384
jmp 0x4ae3c9
mov edx, dword [esp + 0x2c4]
sub edx, edi
lea ebx, [edx + eax - 1]
test ebx, ebx
jl 0x4ae3c9
lea edx, [ebx + 1]
mov dword [esp], edx
cmp ebx, 0x60
jle 0x4ae410
push dword [esp]
push 0x30
push edi
mov dword [esp + 0x208], eax
call fcn.004ca8b0
mov eax, dword [esp + 0x208]
add esp, 0xc
lea edi, [edi + ebx + 1]
xor edx, edx
jmp 0x4aa224
mov edx, 1
jmp 0x4ae299
mov edx, dword [ebp + 0x30]
dec eax
inc dword [edx]
cmp dword [esp + 0x228], 0
je 0x4ae3ed
mov byte [eax], 0x38
test byte [ebp + 0x20], 2
je 0x4ae375
mov ecx, dword [esp + 0x2c4]
inc ecx
mov edx, dword [ebp + 0x18]
cmp ecx, edx
jl 0x4ae404
mov ecx, edx
mov dword [esp + 0x2c4], ecx
jmp 0x4ae375
shr edx, 1
je 0x4ae44d
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 0x4ae424
mov esi, dword [esp + 0x334]
lea ecx, [ecx + ecx + 1]
lea edx, [ecx - 1]
cmp edx, dword [esp]
jae 0x4ae3c5
mov byte [edi + ecx - 1], 0x30
jmp 0x4ae3c5
mov ecx, 1
jmp 0x4ae43b
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 0x4ae202
jmp 0x4ae226
cmp dword [esp + 0x194], 0
jne 0x4ae4af
cmp dword [esp + 0x190], 0
je 0x4ae499
cmp dword [esp + 0x2c4], 0
js 0x4ae4af
cmp dword [esp + 0x230], 0
jne 0x4ae4c2
mov eax, edx
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
jmp 0x4aa851
mov eax, edx
mov edx, dword [ebp + 0x30]
mov esi, dword [esp + 0x334]
mov dword [edx], eax
jmp 0x4aa15f
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 0x4ae50e
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 0x4aa224
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x19c]
mov dword [edx], eax
jmp 0x4aa15f
lea edi, [esp + 0x880]
jmp 0x4ad5f1
mov edx, 1
jmp 0x4ab15a
mov edi, 1
jmp 0x4aaf39
mov esi, 8
lea edi, [esp + 0x880]
jmp 0x4aadda
mov ecx, eax
neg ecx
mov esi, ecx
sar esi, 3
movzx edx, word [esi*2 + 0x50b5a0]
lea edi, [esi + 1]
shr edx, 5
cmp edx, ecx
jl 0x4ae56d
mov edi, esi
movzx edx, word [edi*2 + 0x50b5a0]
mov esi, edx
and esi, 0x1f
shr edx, 5
add edx, eax
movsx eax, word [esi*2 + 0x50b6fa]
mov ecx, dword [esi*8 + 0x50b524]
mov dword [esp + 0x138], eax
mov dword [esp + 0x7fc], ecx
mov eax, dword [esi*8 + 0x50b520]
jmp 0x4aad87
mov edx, 1
jmp 0x4aba42
mov edx, 1
jmp 0x4ab91a
mov edx, 1
jmp 0x4ab6d3
mov edx, 1
jmp 0x4ac18e
mov edx, 1
jmp 0x4ac084
mov edx, 1
jmp 0x4abe5d
lea edi, [esp + 0x888]
jmp 0x4ad073
mov eax, 1
jmp 0x4ab265
mov ebx, 1
jmp 0x4ada8e
mov ecx, 1
jmp 0x4add60
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 0x4ae333
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 0x4ae333
xor edx, edx
cmp dword [esp + 0x30c], 0
setge dl
mov dword [esp + 0x218], edx
jmp 0x4ae115
mov dword [esp + 0x180], 1
jmp 0x4ae080
mov ecx, 1
jmp 0x4adbaf
lea edx, [esp + edi*4 + 0x838]
mov dword [esp + 0x1ec], edx
jmp 0x4ada19
mov ebx, 1
jmp 0x4ad9a5
mov edx, 1
jmp 0x4ad7b8
mov eax, 1
jmp 0x4ad541
mov eax, 1
jmp 0x4ad443
mov edx, 1
jmp 0x4ad20a
mov edi, 1
jmp 0x4acfa4
mov eax, 1
jmp 0x4acec2
mov edx, 1
jmp 0x4accb2
mov eax, 1
jmp 0x4aca26
mov eax, 1
jmp 0x4ac90c
mov edx, 1
jmp 0x4ac6d4
lea edi, [esp + 0x880]
jmp 0x4ac4fa
mov edi, 0x1b
jmp 0x4ac4b5
xor eax, eax
mov dword [esp + 0x780], eax
mov dword [esp + 0x77c], eax
jmp 0x4ac4b5
movsx edx, word [0x50b142]
xor eax, eax
mov dword [esp + 0x780], eax
mov dword [esp + 0x77c], eax
mov dword [esp + 0x1e0], edx
mov esi, dword [0x50afcc]
mov edi, dword [0x50afc8]
mov eax, dword [0x50afc4]
mov edx, dword [0x50afc0]
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 0x4acb0e
mov edx, edi
neg edx
mov esi, edx
sar esi, 3
mov dword [esp + 0x240], 4
movzx ecx, word [esi*2 + 0x50aee0]
lea eax, [esi + 1]
shr ecx, 5
cmp ecx, edx
jl 0x4ae7e7
mov eax, esi
movzx ecx, word [eax*2 + 0x50aee0]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
add edi, ecx
movsx ecx, word [eax*2 + 0x50b126]
shl eax, 4
mov edx, dword [eax + 0x50ae4c]
mov dword [esp + 0x7fc], edx
mov esi, dword [eax + 0x50ae48]
mov edx, dword [eax + 0x50ae44]
mov eax, dword [eax + 0x50ae40]
mov dword [esp + 0x800], esi
mov dword [esp + 0x804], edx
mov dword [esp + 0x808], eax
jmp 0x4ac442
mov dword [esp + 0x848], eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
jmp 0x4aa1bc