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

Disassembly:
endbr32
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 + 0x2bc], eax
xor eax, eax
mov edx, dword [ebp + 0x18]
mov ecx, dword [0x10234e38]
xor ecx, esp
mov dword [esp + 0x8b4], ecx
mov esi, dword [ebp + 0x24]
mov dword [esp + 0x834], eax
mov dword [esp + 0x848], 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 + 0x14], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x2c0], edx
test edx, edx
jle 0x10050306
mov ecx, dword [ebp + 0x20]
mov edx, ecx
shr edx, 0x16
and edx, 7
test ecx, 0x80000000
jne 0x1004b72d
test dl, 1
jne 0x1004b72d
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 0x1004b79c
mov edx, 0xaaaa
test ecx, ecx
jne 0x1004b793
mov edx, 0xfa
mov dword [esp + 0x22c], edx
jmp 0x1004b7c3
test ecx, ecx
je 0x1004b7ad
mov dword [esp + 0x22c], 0xfa00
jmp 0x1004b7c3
test dl, 1
mov edx, 0xa8a8
je 0x1004b7bc
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 + 0x2a4], 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 0x1004b816
cmp edx, 0x7fff0000
jne 0x1004bca4
mov eax, dword [esp]
xor eax, edx
or eax, dword [esp + 0x48]
or eax, dword [esp + 0x44]
or eax, dword [esp + 0x40]
jne 0x1004b8e8
xor eax, eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
mov dword [esp + 0x838], eax
test edx, edx
je 0x1004b8c8
test ecx, ecx
je 0x1004b85e
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xfffffffc
jmp 0x1004b867
mov eax, dword [ebp + 0x34]
mov dword [eax], 4
test ebx, 0x400
je 0x1004b885
test ebx, 0x200
je 0x1004b87e
mov eax, str.INFINITY
jmp 0x1004b88a
mov eax, str.infinity
jmp 0x1004b88a
mov eax, str.Infinity
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x1004b8a1
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x1004b896
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 0x1004baa8
test ecx, ecx
je 0x1004b8da
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xffffffff
jmp 0x1004b9e3
mov eax, dword [ebp + 0x34]
mov dword [eax], 1
jmp 0x1004b9e3
test edx, edx
je 0x1004b9a0
xor eax, eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
mov dword [esp + 0x838], eax
test ebx, 0x400
je 0x1004b957
test dword [esp], 0x8000
jne 0x1004b92e
shr ecx, 0x1e
mov eax, 0x10
shr eax, cl
add eax, 0xfffffff6
jmp 0x1004b93c
mov eax, 0xfffffffb
test ecx, ecx
jne 0x1004b93c
mov eax, 5
mov edx, dword [ebp + 0x34]
mov dword [edx], eax
test ebx, 0x200
je 0x1004b950
mov eax, 0x1020d674
jmp 0x1004b965
mov eax, 0x10215a60
jmp 0x1004b965
mov eax, dword [ebp + 0x34]
mov dword [eax], 0
mov eax, 0x10215a64
mov edi, esi
lea edx, [eax + 1]
movsx eax, byte [eax]
test eax, eax
je 0x1004b97c
mov byte [edi], al
inc edi
movsx eax, byte [edx]
inc edx
test eax, eax
jne 0x1004b971
mov ebx, dword [ebp + 0x30]
mov ecx, edi
mov edx, 0xa
test dword [ebp + 0x20], 0x40000000
mov eax, dword [ebp + 0x24]
jne 0x1004b997
mov edx, 0
sub ecx, esi
mov dword [ebx], ecx
jmp 0x1004baa8
test ecx, ecx
je 0x1004b9af
mov eax, dword [ebp + 0x34]
mov dword [eax], 0xfffffffe
jmp 0x1004b9b8
mov eax, dword [ebp + 0x34]
mov dword [eax], 2
test dword [ebp + 0x20], 0x10000000
je 0x1004bb17
xor eax, eax
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
mov dword [esp + 0x838], eax
test dword [ebp + 0x20], 0x80
je 0x1004b9f9
mov dword [esp + 0x2bc], 1
jmp 0x1004ba58
test byte [ebp + 0x20], 2
je 0x1004ba1d
mov eax, dword [esp + 0x2bc]
inc eax
mov dword [esp + 0x2bc], eax
cmp eax, dword [ebp + 0x18]
jle 0x1004ba36
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c0], eax
mov edx, dword [esp + 0x2c0]
mov edi, esi
lea eax, [edx - 1]
mov dword [esp + 0x2bc], eax
test edx, edx
jne 0x1004ba5f
jmp 0x1004ba89
cmp dword [esp + 0x2bc], 0
jg 0x1004ba58
mov edx, dword [ebp + 0x30]
mov eax, esi
mov byte [esi], 0x30
lea edi, [esi + 1]
mov dword [edx], 1
mov edx, 6
jmp 0x1004baa8
dec dword [esp + 0x2bc]
mov edx, dword [esp + 0x2bc]
lea eax, [edx + 1]
cmp edx, 0x60
jle 0x1004fbe3
push eax
push 0x30
push esi
call fcn.10061620
add esp, 0xc
mov eax, dword [esp + 0x2bc]
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 0x1004baa8
mov edx, 0
mov ebx, dword [ebp + 0x28]
mov byte [edi], 0
test ebx, ebx
je 0x1004bab8
mov ecx, eax
sub ecx, esi
mov dword [ebx], ecx
mov ecx, dword [ebp + 0x2c]
test ecx, ecx
je 0x1004bac5
neg esi
add esi, edi
mov dword [ecx], esi
mov ecx, eax
test eax, eax
je 0x1004badc
cmp ecx, edi
jae 0x1004badc
movsx ebx, byte [ecx]
inc ecx
cmp ebx, 0x30
jne 0x1004bae1
test ecx, ecx
jne 0x1004bacb
mov edx, 0xb
mov ecx, dword [ebp + 0x38]
test ecx, ecx
je 0x1004baea
mov dword [ecx], edx
mov ecx, dword [esp + 0x8b4]
mov dword [esp + 0x8b4], 0
xor ecx, esp
cmp ecx, dword [0x10234e38]
jne 0x1004fbde
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 0x1004bb6a
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 0x1004bc85
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x228], 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 + 0x228]
jne 0x1004bc03
mov ecx, edi
mov dword [esp + 0x228], ebx
xor edi, edi
mov dword [esp + 0x330], 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 0x1004bbd2
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 + 0x228]
mov esi, dword [esp + 0x330]
cmp dword [esp + 4], 0
jle 0x1004bc85
mov dword [esp], 0
mov eax, dword [esp]
mov edx, dword [esp + 4]
add edx, edx
inc eax
test edx, edx
jg 0x1004bc18
mov dword [esp], eax
mov dword [esp + 4], edx
cmp dword [esp], 0
je 0x1004bc85
mov dword [esp + 0x228], 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 + 0x228]
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 0x1004bcbc
test ecx, ecx
je 0x1004bcb3
mov edx, dword [ebp + 0x34]
mov dword [edx], 0xfffffffd
jmp 0x1004bcbc
mov edx, dword [ebp + 0x34]
mov dword [edx], 3
test ebx, 0x100
je 0x1004c0ee
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 + 0x10], ecx
je 0x1004bd3b
mov edi, dword [ebp + 0x10]
or edx, 0xffff0000
mov eax, edi
shl edx, 0xf
shr eax, 0x11
or edx, eax
mov eax, dword [ebp + 0xc]
mov ecx, eax
shl edi, 0xf
shr ecx, 0x11
or edi, ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x14], edx
mov edx, ecx
shl eax, 0xf
shr edx, 0x11
shl ecx, 0xf
or eax, edx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
jmp 0x1004be46
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x228], 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], 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 + 4], edi
or edx, eax
mov dword [esp + 8], ebx
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0x228]
mov edi, dword [esp]
jne 0x1004bdd0
mov dword [esp + 0x228], ebx
mov dword [esp + 0x330], esi
xor esi, esi
mov edx, dword [esp + 8]
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x10]
mov eax, edi
add ebx, 0xffffffe0
mov edi, ecx
mov ecx, edx
mov edx, esi
test eax, eax
je 0x1004bda3
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov ebx, dword [esp + 0x228]
mov esi, dword [esp + 0x330]
cmp dword [esp + 0x14], 0
jle 0x1004be46
mov dword [esp], 0
mov eax, dword [esp + 0x14]
mov edx, dword [esp]
add eax, eax
inc edx
test eax, eax
jg 0x1004bde5
mov dword [esp], edx
mov dword [esp + 0x14], eax
cmp dword [esp], 0
je 0x1004be46
neg edx
mov dword [esp + 0x228], ebx
mov ecx, edx
mov ebx, edi
shr ebx, cl
mov ecx, dword [esp]
mov eax, dword [esp + 4]
or dword [esp + 0x14], ebx
mov ebx, eax
shl edi, cl
mov ecx, edx
shr ebx, cl
add dword [esp + 0x10], edx
or edi, ebx
mov ecx, dword [esp]
shl eax, cl
mov ecx, edx
mov edx, dword [esp + 8]
mov ebx, edx
shr ebx, cl
mov ecx, dword [esp]
or eax, ebx
shl edx, cl
mov ebx, dword [esp + 0x228]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
xor ecx, ecx
mov edx, dword [esp + 0x14]
cmp ecx, edi
mov dword [esp + 0x838], edx
mov edx, 1
mov eax, dword [esp + 4]
adc edx, 0
test eax, eax
mov ecx, dword [esp + 0x10]
je 0x1004be6e
mov edx, 3
mov dword [esp + 0x83c], edi
lea ecx, [ecx - 0x3ffe]
mov edi, dword [esp + 8]
test edi, edi
mov dword [esp + 0x840], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x844], edi
je 0x1004be99
mov edx, 4
and eax, 2
mov dword [esp + 0x1b4], eax
jne 0x1004beb9
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x2c0], eax
mov dword [esp + 0x24], 3
jmp 0x1004bf23
cmp dword [esp + 0x2bc], 0
jl 0x1004ba40
mov eax, ecx
and eax, 3
mov edi, eax
neg edi
add edi, 4
test eax, eax
jne 0x1004bedc
mov edi, 0
mov dword [esp + 0x24], edi
test ecx, ecx
jle 0x1004febe
mov ecx, dword [esp + 0x10]
mov edi, dword [ebp + 0x18]
lea eax, [ecx - 0x3ffb]
sar eax, 1
shr eax, 0x1e
lea eax, [eax + ecx - 0x3ffb]
sar eax, 2
add eax, dword [esp + 0x2bc]
cmp eax, edi
jl 0x1004bf11
mov eax, edi
mov dword [esp + 0x2c0], eax
cmp dword [esp + 0x24], 0
je 0x1004c043
mov eax, dword [esp + edx*4 + 0x834]
mov edi, eax
mov ecx, dword [esp + 0x24]
neg ecx
mov dword [esp + 4], ecx
shl edi, cl
mov ecx, dword [esp + 0x24]
shr eax, cl
mov dword [esp + edx*4 + 0x838], edi
mov dword [esp + edx*4 + 0x834], eax
lea eax, [edx - 1]
cmp edx, 1
je 0x1004c031
mov ecx, eax
shr ecx, 1
mov dword [esp + 0xc], ecx
je 0x1004fc1c
mov dword [esp], eax
lea edi, [esp + edx*4 + 0x830]
xor ecx, ecx
mov dword [esp + 8], edx
mov dword [esp + 0x228], ebx
mov dword [esp + 0x330], esi
mov eax, edi
lea esi, [esi]
lea edi, [edi]
mov edi, dword [esp + 4]
lea edx, [ecx*8]
neg edx
inc ecx
mov dword [esp + 0x20], ecx
mov ecx, edi
mov esi, dword [eax + edx]
mov ebx, esi
shl ebx, cl
or dword [eax + edx + 4], ebx
mov ebx, dword [eax + edx - 4]
mov ecx, dword [esp + 0x24]
shr esi, cl
mov ecx, edi
mov edi, ebx
shl edi, cl
mov ecx, dword [esp + 0x24]
or esi, edi
shr ebx, cl
mov ecx, dword [esp + 0x20]
mov dword [eax + edx], esi
mov dword [eax + edx - 4], ebx
cmp ecx, dword [esp + 0xc]
jb 0x1004bf90
mov edx, dword [esp + 8]
lea edi, [ecx + ecx + 1]
mov ebx, dword [esp + 0x228]
mov eax, dword [esp]
mov esi, dword [esp + 0x330]
lea ecx, [edi - 1]
cmp ecx, eax
jae 0x1004c02a
sub eax, edi
mov ecx, dword [esp + 4]
mov edi, dword [esp + eax*4 + 0x838]
mov dword [esp], edi
shl edi, cl
or dword [esp + eax*4 + 0x83c], edi
mov ecx, dword [esp + 0x24]
mov edi, dword [esp]
shr edi, cl
mov dword [esp + eax*4 + 0x838], edi
mov edi, dword [esp + edx*4 + 0x838]
jmp 0x1004c031
mov edi, dword [esp + edx*4 + 0x838]
xor eax, eax
cmp eax, edi
mov ecx, dword [esp + 0x838]
mov dword [esp + 0x14], ecx
adc edx, 0
mov byte [esi], 0x30
lea edi, [esi + 1]
mov dword [esp + 0x20], 1
mov eax, edi
cmp dword [esp + 0x2c0], 0
jle 0x1004feb1
mov ecx, dword [esp + 0x2c0]
mov dword [esp + 0x228], ebx
mov dword [esp + 0x330], esi
mov dword [esp + 8], edx
lea ecx, [ecx - 1]
mov dword [esp], ecx
mov ecx, 8
mov dword [esp + 0x1fc], eax
mov ebx, dword [esp]
mov esi, dword [esp + 0x14]
mov eax, esi
dec ecx
shr eax, 0x1c
mov edx, eax
shl esi, 4
and edx, 1
cmp eax, 0xa
jge 0x1004c0ab
add eax, 0x30
jmp 0x1004c0bd
cmp dword [esp + 0x228], 0
je 0x1004c0ba
add eax, 0x37
jmp 0x1004c0bd
add eax, 0x57
mov byte [edi], al
inc edi
test ebx, ebx
jle 0x1004fe8a
dec ebx
test ecx, ecx
jne 0x1004c093
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 8]
jae 0x1004fc26
mov ecx, 8
inc eax
mov dword [esp + 0x20], eax
mov esi, dword [esp + eax*4 + 0x834]
jmp 0x1004c093
mov edi, dword [esp + 8]
test edi, edi
mov edx, dword [esp + 0xc]
mov dword [esp + 0x838], eax
mov eax, 0
mov dword [esp + 0x844], edx
setl al
mov ecx, dword [esp + 0x10]
add eax, 0x4d104d42
mov edx, dword [esp + 0x14]
mov dword [esp + 0x840], ecx
mov dword [esp + 0x83c], 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 + 0x2a4]
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 + 0x2a4], edx
xor edx, edx
mov dword [esp + 0x19c], eax
lea eax, [esi + 1]
and ebx, 0x14
mov dword [esp + 0x198], edx
mov dword [esp + 0x228], ebx
mov dword [esp + 0x190], ecx
mov dword [esp + 0x194], edi
mov dword [esp + 0x210], edx
mov dword [esp + 0x1fc], eax
mov dword [esp + 0x330], esi
jmp 0x1004c1d5
mov edi, dword [esp + 0x1f8]
neg edi
lea eax, [edi + 1]
mov dword [esp + 0x19c], eax
cmp dword [esp + 0x1b4], 0
je 0x1004c276
cmp dword [esp + 0x2bc], 0
jge 0x1004c20f
mov eax, dword [esp + 0x2bc]
neg eax
mov dword [esp + 0x198], eax
mov dword [esp + 0x210], eax
mov dword [esp + 0x2bc], 0
mov eax, dword [esp + 0x2bc]
mov edx, dword [esp + 0x19c]
lea ecx, [eax + edx]
mov dword [esp + 0x2c0], ecx
cmp ecx, dword [ebp + 0x18]
jle 0x1004c25f
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 0x1004c24d
mov ebx, ecx
mov dword [edx], eax
mov dword [esp + 0x210], ebx
mov dword [esp + 0x2c0], esi
jmp 0x1004c282
cmp dword [esp + 0x2c0], 0
jle 0x1004ff50
mov eax, edx
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
jmp 0x1004c282
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x19c]
mov dword [edx], eax
mov edi, eax
neg edi
jne 0x1004c470
mov esi, dword [ebp + 0x14]
mov eax, esi
and eax, 0x7fff0000
mov edx, dword [ebp + 0x10]
shr eax, 0x10
je 0x1004c2de
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 0x1004c402
mov ebx, dword [ebp + 0xc]
mov ecx, ebx
mov dword [esp + 0x320], 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 + 0x320]
jne 0x1004c360
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 0x1004c33c
mov dword [esp + 0x154], edi
mov dword [esp + 0x150], edx
mov edi, dword [esp + 0x1f8]
test esi, esi
jle 0x1004c402
mov dword [esp + 0xb8], 0
mov edx, dword [esp + 0xb8]
add esi, esi
inc edx
test esi, esi
jg 0x1004c37a
mov dword [esp + 0xb8], edx
cmp dword [esp + 0xb8], 0
je 0x1004c402
mov ecx, edx
neg ecx
add eax, ecx
mov dword [esp + 0x320], 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 + 0x320]
mov edi, dword [esp + 0x1f8]
mov esi, dword [esp + 0x18]
xor edx, edx
add eax, 0xffffc002
mov dword [esp + 0x838], esi
mov esi, dword [esp + 0x154]
cmp edx, esi
mov edx, 1
mov dword [esp + 0x83c], esi
adc edx, 0
mov esi, dword [esp + 0x150]
test esi, esi
mov dword [esp + 0x840], esi
je 0x1004c43f
mov edx, 3
mov esi, 0x71
test ebx, ebx
mov dword [esp + 0x844], ebx
je 0x1004c454
mov edx, 4
xor ebx, ebx
mov dword [esp + 0x20c], esi
mov dword [esp + 0x214], ebx
mov dword [esp + 0x1f8], edi
jmp 0x1004f4f7
xor eax, eax
mov dword [esp + 0x874], 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
cmp edi, 0xfffffeaa
jl 0x1004c4f2
cmp edi, 0x159
jle 0x1004c4f9
mov esi, 0x80
jmp 0x1004c50d
mov esi, 0x80
cmp dword [esp + 0x2c0], 0x11
jg 0x1004c50d
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 0x1004c578
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 0x1004c634
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 0x1004c5ba
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 0x1004c5a4
mov dword [esp + 0x1f4], ecx
test eax, eax
jle 0x1004c634
mov dword [esp + 0x170], 0
mov ecx, dword [esp + 0x170]
add eax, eax
inc ecx
test eax, eax
jg 0x1004c5d0
mov dword [esp + 0x170], ecx
cmp dword [esp + 0x170], 0
je 0x1004c634
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 + 0x838], eax
xor eax, eax
cmp eax, ebx
mov dword [esp + 0x83c], ebx
mov ebx, 1
adc ebx, 0
test esi, esi
mov dword [esp + 0x840], esi
je 0x1004c65e
mov ebx, 3
test edx, edx
mov dword [esp + 0x844], edx
mov dword [esp + 0x7f4], eax
mov dword [esp + 0x800], eax
mov dword [esp + 0x804], eax
mov dword [esp + 0x808], eax
mov dword [esp + 0x80c], eax
mov dword [esp + 0x810], eax
mov dword [esp + 0x814], eax
mov dword [esp + 0x818], eax
mov dword [esp + 0x81c], eax
mov dword [esp + 0x820], eax
mov dword [esp + 0x824], eax
mov dword [esp + 0x828], eax
mov dword [esp + 0x82c], eax
mov dword [esp + 0x830], eax
je 0x1004c6d0
mov ebx, 4
mov edi, dword [esp + 0x1f8]
cmp dword [esp + 0x20c], 0x40
jne 0x1004cd7a
mov eax, edi
lea edx, [eax + 0x2f]
cmp edx, 0x5e
ja 0x1004c759
mov esi, dword [esp + 0x19c]
xor eax, eax
mov dword [esp + 0x7fc], eax
mov dword [esp + 0x7f8], eax
mov edx, edi
lea eax, [esi*8]
neg eax
mov esi, 2
movsx ecx, word [edx*2 + 0x102165be]
mov dword [esp + 0x1e0], ecx
mov edi, dword [eax + 0x102163dc]
mov edx, dword [eax + 0x102163d8]
mov dword [esp + 0x878], edi
mov dword [esp + 0x87c], edx
test edx, edx
jne 0x1004ffe6
dec esi
lea edi, [esp + esi*4 + 0x874]
cmp dword [edi], 0
je 0x1004c747
jmp 0x1004f021
cmp dword [esp + 0x1f8], 0
js 0x10050017
mov ecx, eax
sar ecx, 3
movzx edx, word [ecx*2 + 0x102167a2]
lea esi, [ecx + 1]
shr edx, 5
cmp edx, eax
jle 0x1004c780
mov esi, ecx
movzx edx, word [esi*2 + 0x102167a0]
mov ecx, edx
and ecx, 0x1f
shr edx, 5
neg edx
add edx, eax
mov eax, dword [ecx*8 + 0x10216724]
movsx edi, word [ecx*2 + 0x10216818]
mov dword [esp + 0x7f8], eax
mov dword [esp + 0x138], edi
mov eax, dword [ecx*8 + 0x10216720]
movsx ecx, word [edx*2 + 0x102165be]
mov esi, dword [edx*8 + 0x102163dc]
mov edx, dword [edx*8 + 0x102163d8]
mov dword [esp + 0x7fc], eax
mov dword [esp + 0x13c], ecx
mov ecx, 2
mov dword [esp + 0x878], esi
mov dword [esp + 0x87c], edx
test edx, edx
jne 0x10050006
dec ecx
lea edi, [esp + ecx*4 + 0x874]
cmp dword [edi], 0
lea esi, [ecx*4]
je 0x1004c7f7
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 + 0x2f0], eax
mov edx, dword [esp + 0x134]
mov edi, dword [esp + 0x130]
mov eax, dword [esp + 0x7f8]
mov dword [esp + ecx*4 + 0x6b8], 0
mov dword [esp + ecx*4 + 0x678], edx
mov dword [esp + ecx*4 + 0x67c], edi
mov dword [esp + 0x2f4], eax
mov eax, dword [esp + 0x2f0]
mul dword [esp + 0x2f4]
mov dword [esp + 0x2f8], eax
mov dword [esp + 0x2fc], edx
mov edi, dword [esp + 0x2f8]
xor edx, edx
mov eax, dword [esp + ecx*4 + 0x678]
add eax, edi
cmp eax, edi
mov dword [esp + ecx*4 + 0x6b4], edx
setb dl
mov dword [esp + ecx*4 + 0x678], eax
mov eax, ecx
add edx, dword [esp + 0x2fc]
mov dword [esp + ecx*4 + 0x674], edx
dec eax
js 0x1004c99a
mov edx, ecx
shr edx, 1
je 0x1004fffc
mov dword [esp + 0x2d8], 0
lea edi, [esp + esi + 0x6b4]
mov dword [esp + 4], edi
lea edi, [esp + esi + 0x674]
mov dword [esp], edi
xor edi, edi
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x2dc], esi
mov dword [esp + 0x2d4], ecx
mov dword [esp + 0x3dc], eax
mov ecx, dword [esp]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0x2d8]
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 0x1004c923
mov dword [esp + 0x2d8], esi
mov edx, esi
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x2dc]
mov eax, dword [esp + 0x3dc]
lea edi, [edx + edx + 1]
mov ecx, dword [esp + 0x2d4]
lea edx, [edi - 1]
cmp edx, ecx
jae 0x1004c99a
shl edi, 2
xor edx, edx
neg edi
mov dword [esp + 0x3f0], ebx
lea ebx, [esp + esi + 0x6b4]
lea esi, [esp + esi + 0x674]
mov dword [edi + ebx], edx
mov dword [edi + esi], edx
mov ebx, dword [esp + 0x3f0]
test eax, eax
je 0x1004ca5d
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x2d4], ecx
mov dword [esp + 0x3dc], eax
mov esi, 2
lea ebx, [esp + eax*4 + 0x6b4]
lea ecx, [esp + eax*4 + 0x674]
mov eax, dword [esp + 0x3dc]
mov edi, dword [esp + esi*4 + 0x7f4]
mov dword [esp + 0x3d0], edi
mov edx, dword [esp + eax*4 + 0x874]
mov dword [esp + 0x3cc], edx
mov eax, dword [esp + 0x3cc]
mul dword [esp + 0x3d0]
mov dword [esp + 0x3d4], eax
mov dword [esp + 0x3d8], edx
mov edi, dword [esp + 0x3d4]
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 + 0x3d8]
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 0x1004c9ca
mov eax, dword [esp + 0x3dc]
dec eax
jne 0x1004c9b0
mov ebx, dword [esp + 0x3f0]
mov ecx, dword [esp + 0x2d4]
mov edx, dword [esp + 0x13c]
lea esi, [ecx + 2]
mov edi, dword [esp + 0x138]
mov eax, dword [esp + ecx*4 + 0x67c]
add edi, edx
mov dword [esp + 0x1e0], edi
lea edi, [esp + ecx*4 + 0x87c]
mov dword [edi], eax
lea edx, [ecx + 1]
mov dword [esp + 0x140], edx
cmp esi, 1
je 0x1004cbe5
mov dword [esp + 0x144], 0
shr edx, 1
mov dword [esp + 0x288], edx
je 0x1004fff2
xor edx, edx
lea eax, [esp + ecx*4 + 0x6b8]
mov dword [esp + 0xc0], eax
lea eax, [esp + ecx*4 + 0x678]
mov dword [esp + 0x280], eax
lea eax, [esp + ecx*4 + 0x878]
mov dword [esp + 0x284], eax
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x2d4], ecx
mov dword [esp + 0xbc], edi
mov dword [esp + 0x348], esi
mov ecx, edx
mov ebx, dword [esp + 0xc0]
mov eax, dword [esp + 0x144]
lea esi, [esi]
mov esi, dword [esp + 0x280]
inc edx
add eax, dword [ecx + ebx]
mov edi, dword [esp + 0x284]
mov dword [esp + 0x28c], 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 + 0x28c]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x288]
jb 0x1004cb10
mov dword [esp + 0x144], eax
lea edx, [edx + edx + 1]
mov ebx, dword [esp + 0x3f0]
mov edi, dword [esp + 0xbc]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x2d4]
lea eax, [edx - 1]
cmp eax, dword [esp + 0x140]
jae 0x1004cbe3
shl edx, 2
neg edx
mov dword [esp + 0x3f0], ebx
lea ebx, [esp + ecx*4 + 0x6b8]
mov eax, dword [esp + 0x144]
mov dword [esp + 0x348], esi
lea esi, [esp + ecx*4 + 0x678]
add eax, dword [edx + ebx + 4]
lea ecx, [esp + ecx*4 + 0x878]
add eax, dword [edx + esi + 4]
mov dword [edx + ecx + 4], eax
mov eax, dword [edi]
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
jmp 0x1004cbe5
mov eax, dword [edi]
test eax, eax
jne 0x1004cbf6
dec esi
lea edi, [esp + esi*4 + 0x874]
cmp dword [edi], 0
je 0x1004cbe9
mov eax, dword [esp + 0x878]
test eax, eax
jle 0x1004ccd1
mov ecx, dword [esp + 0x13c]
add eax, eax
mov edx, dword [esp + 0x138]
mov dword [esp + 0x878], eax
lea edx, [edx + ecx - 1]
mov dword [esp + 0x1e0], edx
cmp esi, 2
jb 0x1004ccc7
lea edx, [esi - 1]
shr edx, 1
je 0x100500b7
mov dword [esp + 0xbc], edi
xor ecx, ecx
mov dword [esp + 0x348], esi
mov eax, dword [esp + ecx*8 + 0x87c]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + ecx*8 + 0x878], esi
mov esi, dword [esp + ecx*8 + 0x880]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + ecx*8 + 0x87c], eax
mov dword [esp + ecx*8 + 0x880], esi
inc ecx
cmp ecx, edx
jb 0x1004cc4b
mov edi, dword [esp + 0xbc]
lea eax, [ecx + ecx + 1]
mov esi, dword [esp + 0x348]
lea edx, [eax - 1]
lea ecx, [esi - 1]
cmp edx, ecx
jae 0x1004ccbf
mov ecx, dword [esp + eax*4 + 0x878]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + eax*4 + 0x874], edx
mov dword [esp + eax*4 + 0x878], ecx
mov edx, dword [edi]
jmp 0x1004ccc1
mov edx, dword [edi]
test edx, edx
je 0x1004ccd0
jmp 0x1004ccda
cmp dword [edi], 0
jne 0x1004f021
dec esi
cmp esi, 2
jb 0x1004f01a
mov eax, dword [esp + 0x880]
shr eax, 0x1f
mov edx, dword [esp + 0x87c]
add edx, eax
mov dword [esp + 0x87c], edx
cmp edx, eax
jae 0x1004cd5b
mov dword [esp + 0x874], 0
mov esi, 1
cmp dword [esp + 0x878], 0xffffffff
je 0x1004cd1d
lea edi, [esp + 0x878]
mov eax, dword [edi]
jmp 0x1004cd30
dec esi
lea edi, [esp + esi*4 + 0x874]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x1004cd1d
test esi, esi
je 0x1004cd38
inc eax
mov dword [edi], eax
jmp 0x1004f021
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x878], 0x80000000
lea edi, [esp + 0x878]
jmp 0x1004f021
mov esi, 2
test edx, edx
jne 0x1004ffe6
dec esi
lea edi, [esp + esi*4 + 0x874]
cmp dword [edi], 0
je 0x1004cd68
jmp 0x1004f021
mov dword [esp + 0x7fc], eax
mov dword [esp + 0x7f8], eax
mov dword [esp + 0x7b4], eax
mov dword [esp + 0x7c8], eax
mov dword [esp + 0x7cc], eax
mov dword [esp + 0x7d0], eax
mov dword [esp + 0x7d4], eax
mov dword [esp + 0x7d8], eax
mov dword [esp + 0x7dc], eax
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
cmp dword [esp + 0x1f8], 0xfffffdea
jge 0x1004d59a
mov edx, dword [esp + 0x20c]
shr edx, 5
cmp dword [esp + 0x1f8], 0xfffff000
jle 0x1004ce5a
mov esi, 0x1000
mov dword [esp + 0x2b8], 0
mov dword [esp + 0x16c], esi
mov dword [esp + 0x160], edi
mov dword [esp + 0x7c4], eax
mov dword [esp + 0x7c0], eax
mov dword [esp + 0x7bc], eax
mov dword [esp + 0x7b8], eax
mov eax, 3
mov dword [esp + 0x168], ecx
mov esi, dword [esp + 0x2b8]
mov edi, dword [esp + 0x164]
jmp 0x1004cec7
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 + 0x1021621e]
mov esi, dword [ecx + 0x10215f0c]
mov dword [esp + 0x7b8], esi
mov esi, dword [ecx + 0x10215f08]
mov dword [esp + 0x7bc], esi
mov esi, dword [ecx + 0x10215f04]
mov ecx, dword [ecx + 0x10215f00]
mov dword [esp + 0x7c0], esi
mov esi, 4
mov dword [esp + 0x7c4], ecx
mov dword [esp + 0x164], edi
lea ecx, [edx - 1]
mov dword [esp + 0x158], ecx
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x15c], edx
mov ecx, dword [esp + 0x16c]
mov edi, dword [esp + 0x160]
jmp 0x1004cefd
mov eax, dword [esp + 0x1a0]
sar ecx, 1
dec eax
js 0x1004d558
mov dword [esp + 0x1a0], eax
mov eax, ecx
neg eax
cmp edi, eax
jg 0x1004cef6
add edi, ecx
test esi, esi
je 0x1004d572
mov ebx, dword [esp + 0x1a0]
movsx eax, word [ebx*2 + 0x1021621e]
shl ebx, 4
mov dword [esp + 0x168], eax
mov edx, dword [ebx + 0x10215f0c]
mov eax, dword [ebx + 0x10215f08]
mov dword [esp + 0x7f8], edx
mov dword [esp + 0x7fc], eax
mov edx, dword [ebx + 0x10215f04]
mov ebx, dword [ebx + 0x10215f00]
mov eax, dword [esp + esi*4 + 0x7b4]
mov dword [esp + 0x800], edx
mov dword [esp + 0x804], 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 + 0x574], eax
mov eax, 3
mov dword [esp + ebx*4 + 0x578], edx
mov dword [esp + 0x16c], ecx
mov ecx, eax
mov dword [esp + 0x160], edi
mov edx, dword [esp + esi*4 + 0x7b4]
mov edi, dword [esp + ecx*4 + 0x7f4]
mov dword [esp + ebx*4 + 0x5b4], 0
mov dword [esp + 0x2c4], edx
mov dword [esp + 0x2c8], edi
mov eax, dword [esp + 0x2c4]
mul dword [esp + 0x2c8]
mov dword [esp + 0x2cc], eax
mov dword [esp + 0x2d0], edx
mov edi, dword [esp + 0x2cc]
mov edx, dword [esp + ebx*4 + 0x574]
add edx, edi
cmp edx, edi
mov dword [esp + ebx*4 + 0x574], edx
mov edx, 0
setb dl
dec ebx
add edx, dword [esp + 0x2d0]
mov dword [esp + ebx*4 + 0x574], edx
dec ecx
jne 0x1004cfd1
mov eax, ebx
mov ecx, dword [esp + 0x16c]
dec eax
mov edi, dword [esp + 0x160]
mov dword [esp + ebx*4 + 0x5b4], 0
js 0x1004d135
mov eax, ebx
shr eax, 1
mov dword [esp + 0xf4], eax
je 0x10050083
xor eax, eax
lea edx, [esp + ebx*4 + 0x570]
mov dword [esp + 0xd4], edx
lea edx, [esp + ebx*4 + 0x5b0]
mov dword [esp + 0xd0], edx
mov dword [esp + 0x2b8], 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 0x1004d0cd
mov esi, dword [esp + 0x2b8]
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 0x1004d135
shl edx, 2
xor eax, eax
neg edx
mov dword [esp + 0x2b8], esi
lea esi, [esp + ebx*4 + 0x5b0]
lea ebx, [esp + ebx*4 + 0x570]
mov dword [edx + esi + 4], eax
mov dword [edx + ebx + 4], eax
mov esi, dword [esp + 0x2b8]
mov edx, esi
dec edx
je 0x1004d20e
mov dword [esp + 0x2b8], esi
mov eax, 4
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x160], edi
mov dword [esp + 0x3b4], edx
mov esi, eax
lea ebx, [esp + edx*4 + 0x5b4]
lea ecx, [esp + edx*4 + 0x574]
mov eax, dword [esp + 0x3b4]
mov edi, dword [esp + esi*4 + 0x7f4]
mov dword [esp + 0x3a8], edi
mov edx, dword [esp + eax*4 + 0x7b4]
mov dword [esp + 0x3a4], edx
mov eax, dword [esp + 0x3a4]
mul dword [esp + 0x3a8]
mov dword [esp + 0x3ac], eax
mov dword [esp + 0x3b0], edx
mov edi, dword [esp + 0x3ac]
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 + 0x3b0]
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 0x1004d16f
mov edx, dword [esp + 0x3b4]
mov eax, 4
dec edx
jne 0x1004d158
mov esi, dword [esp + 0x2b8]
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 + 0x7c4]
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 0x1004d3ae
mov edx, eax
mov dword [esp + 0xf0], 0
shr edx, 1
mov dword [esp + 0x258], edx
je 0x10050079
xor edx, edx
lea ebx, [esp + esi*4 + 0x7c0]
mov dword [esp + 0x254], ebx
lea ebx, [esp + esi*4 + 0x580]
mov dword [esp + 0xb4], ebx
lea ebx, [esp + esi*4 + 0x5c0]
mov dword [esp + 0x250], ebx
mov dword [esp + 0xb0], eax
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x2b8], 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 + 0x250]
inc edx
mov edi, dword [esp + 0x254]
mov dword [esp + 0x25c], 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 + 0x25c]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x258]
jb 0x1004d2d0
mov dword [esp + 0xf0], eax
lea edx, [edx + edx + 1]
mov esi, dword [esp + 0x2b8]
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0x16c]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x1004d3a5
shl edx, 2
lea ebx, [esp + esi*4 + 0x580]
neg edx
mov dword [esp + 0xb0], eax
mov dword [esp + 0x16c], ecx
lea ecx, [esp + esi*4 + 0x5c0]
mov eax, dword [esp + 0xf0]
lea esi, [esp + esi*4 + 0x7c0]
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 0x1004d3ae
mov edx, dword [esp + 0xe8]
mov ebx, dword [edx]
test ebx, ebx
jne 0x1004d3d9
mov edx, dword [esp + 0xec]
dec edx
lea eax, [esp + edx*4 + 0x7b4]
cmp dword [eax], 0
je 0x1004d3b9
mov dword [esp + 0xec], edx
mov dword [esp + 0xe8], eax
mov eax, edx
lea eax, [eax - 1]
mov edx, dword [esp + 0x7b8]
test edx, edx
jle 0x1004d495
dec dword [esp + 0x164]
add edx, edx
mov dword [esp + 0x7b8], edx
cmp dword [esp + 0xec], 2
jb 0x1004d495
mov edx, dword [esp + 0xec]
lea ebx, [edx - 1]
shr ebx, 1
je 0x1005006f
mov dword [esp + 0x16c], ecx
xor esi, esi
mov dword [esp + 0x160], edi
mov edx, dword [esp + esi*8 + 0x7bc]
mov ecx, edx
shr ecx, 0x1f
add edx, edx
or dword [esp + esi*8 + 0x7b8], ecx
mov ecx, dword [esp + esi*8 + 0x7c0]
mov edi, ecx
shr edi, 0x1f
add ecx, ecx
or edx, edi
mov dword [esp + esi*8 + 0x7bc], edx
mov dword [esp + esi*8 + 0x7c0], ecx
inc esi
cmp esi, ebx
jb 0x1004d428
mov ecx, dword [esp + 0x16c]
lea edx, [esi + esi + 1]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x1004d495
mov esi, dword [esp + edx*4 + 0x7b8]
mov ebx, esi
shr ebx, 0x1f
add esi, esi
or dword [esp + edx*4 + 0x7b4], ebx
mov dword [esp + edx*4 + 0x7b8], esi
mov edx, dword [esp + 0xe8]
mov esi, eax
cmp dword [edx], 0
je 0x1004d4aa
mov esi, dword [esp + 0xec]
cmp esi, dword [esp + 0x15c]
jb 0x1004d549
mov esi, dword [esp + 0x15c]
mov eax, esi
mov edx, dword [esp + eax*4 + 0x7b8]
shr edx, 0x1f
mov eax, dword [esp + eax*4 + 0x7b4]
add eax, edx
cmp eax, edx
jae 0x1004d531
mov edx, esi
mov esi, dword [esp + 0x158]
mov dword [esp + edx*4 + 0x7b4], eax
lea edx, [esp + edx*4 + 0x7b0]
mov dword [esp + 0x7b4], 0
mov eax, dword [edx]
cmp eax, 0xffffffff
jne 0x1004d50f
dec esi
lea edx, [esp + esi*4 + 0x7b4]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x1004d500
test esi, esi
je 0x1004d518
inc eax
mov dword [edx], eax
jmp 0x1004d549
inc dword [esp + 0x164]
mov esi, 1
mov dword [esp + 0x7b8], 0x80000000
jmp 0x1004d549
mov edx, esi
mov dword [esp + edx*4 + 0x7b4], eax
test eax, eax
jne 0x1004d549
dec esi
cmp dword [esp + esi*4 + 0x7b4], 0
je 0x1004d53e
sar ecx, 1
dec dword [esp + 0x1a0]
jns 0x1004cf0d
mov dword [esp + 0x2b8], esi
mov ebx, dword [esp + 0x3f0]
mov ecx, dword [esp + 0x168]
jmp 0x1004dd12
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x160], edi
mov ebx, dword [esp + 0x3f0]
mov eax, dword [esp + 0x1a0]
mov edx, dword [esp + 0x15c]
jmp 0x1004ce81
cmp dword [esp + 0x1f8], 0x216
jle 0x1004dceb
mov edx, dword [esp + 0x20c]
shr edx, 5
cmp dword [esp + 0x1f8], 0x1000
jge 0x1004d618
mov esi, 0x1000
mov dword [esp + 0x2b8], 0
mov dword [esp + 0x100], esi
mov dword [esp + 0x160], edi
mov dword [esp + 0x7c4], eax
mov dword [esp + 0x7c0], eax
mov dword [esp + 0x7bc], eax
mov dword [esp + 0x7b8], eax
mov eax, 3
mov dword [esp + 0x168], ecx
mov esi, dword [esp + 0x2b8]
mov edi, dword [esp + 0x164]
jmp 0x1004d685
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 + 0x1021623a]
mov esi, dword [ecx + 0x1021608c]
mov dword [esp + 0x7b8], esi
mov esi, dword [ecx + 0x10216088]
mov dword [esp + 0x7bc], esi
mov esi, dword [ecx + 0x10216084]
mov ecx, dword [ecx + 0x10216080]
mov dword [esp + 0x7c0], esi
mov esi, 4
mov dword [esp + 0x7c4], ecx
mov dword [esp + 0x164], edi
lea ecx, [edx - 1]
mov dword [esp + 0xf8], ecx
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0xfc], edx
mov ecx, dword [esp + 0x100]
mov edi, dword [esp + 0x160]
jmp 0x1004d6bb
mov eax, dword [esp + 0x14c]
sar ecx, 1
dec eax
js 0x1004d558
mov dword [esp + 0x14c], eax
cmp edi, ecx
jl 0x1004d6b4
sub edi, ecx
test esi, esi
je 0x1004dcc3
mov ebx, dword [esp + 0x14c]
movsx eax, word [ebx*2 + 0x1021623a]
shl ebx, 4
mov dword [esp + 0x168], eax
mov edx, dword [ebx + 0x1021608c]
mov eax, dword [ebx + 0x10216088]
mov dword [esp + 0x7f8], edx
mov dword [esp + 0x7fc], eax
mov edx, dword [ebx + 0x10216084]
mov ebx, dword [ebx + 0x10216080]
mov eax, dword [esp + esi*4 + 0x7b4]
mov dword [esp + 0x800], edx
mov dword [esp + 0x804], 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 + 0x3f4], eax
mov eax, 3
mov dword [esp + ebx*4 + 0x3f8], edx
mov dword [esp + 0x100], ecx
mov ecx, eax
mov dword [esp + 0x160], edi
mov edx, dword [esp + esi*4 + 0x7b4]
mov edi, dword [esp + ecx*4 + 0x7f4]
mov dword [esp + ebx*4 + 0x434], 0
mov dword [esp + 0x240], edx
mov dword [esp + 0x244], edi
mov eax, dword [esp + 0x240]
mul dword [esp + 0x244]
mov dword [esp + 0x248], eax
mov dword [esp + 0x24c], edx
mov edi, dword [esp + 0x248]
mov edx, dword [esp + ebx*4 + 0x3f4]
add edx, edi
cmp edx, edi
mov dword [esp + ebx*4 + 0x3f4], edx
mov edx, 0
setb dl
dec ebx
add edx, dword [esp + 0x24c]
mov dword [esp + ebx*4 + 0x3f4], edx
dec ecx
jne 0x1004d773
mov eax, ebx
mov ecx, dword [esp + 0x100]
dec eax
mov edi, dword [esp + 0x160]
mov dword [esp + ebx*4 + 0x434], 0
js 0x1004d8bf
mov eax, ebx
shr eax, 1
mov dword [esp + 0x48], eax
je 0x100500a1
xor eax, eax
lea edx, [esp + ebx*4 + 0x3f0]
mov dword [esp + 0x28], edx
lea edx, [esp + ebx*4 + 0x430]
mov dword [esp + 0x24], edx
mov dword [esp + 0x2b8], 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 0x1004d85a
mov esi, dword [esp + 0x2b8]
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 0x1004d8bf
shl edx, 2
xor eax, eax
neg edx
mov dword [esp + 0x2b8], esi
lea esi, [esp + ebx*4 + 0x430]
lea ebx, [esp + ebx*4 + 0x3f0]
mov dword [edx + esi + 4], eax
mov dword [edx + ebx + 4], eax
mov esi, dword [esp + 0x2b8]
mov edx, esi
dec edx
je 0x1004d998
mov dword [esp + 0x2b8], esi
mov eax, 4
mov dword [esp + 0x100], ecx
mov dword [esp + 0x160], edi
mov dword [esp + 0x378], edx
mov esi, eax
lea ebx, [esp + edx*4 + 0x434]
lea ecx, [esp + edx*4 + 0x3f4]
mov eax, dword [esp + 0x378]
mov edi, dword [esp + esi*4 + 0x7f4]
mov dword [esp + 0x36c], edi
mov edx, dword [esp + eax*4 + 0x7b4]
mov dword [esp + 0x368], edx
mov eax, dword [esp + 0x368]
mul dword [esp + 0x36c]
mov dword [esp + 0x370], eax
mov dword [esp + 0x374], edx
mov edi, dword [esp + 0x370]
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 + 0x374]
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 0x1004d8f9
mov edx, dword [esp + 0x378]
mov eax, 4
dec edx
jne 0x1004d8e2
mov esi, dword [esp + 0x2b8]
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 + 0x7c4]
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 0x1004db09
mov edx, eax
mov dword [esp + 0x44], 0
shr edx, 1
mov dword [esp + 0x1ac], edx
je 0x10050097
xor edx, edx
lea ebx, [esp + esi*4 + 0x400]
mov dword [esp + 0x10], ebx
lea ebx, [esp + esi*4 + 0x440]
mov dword [esp + 0x1a8], ebx
lea ebx, [esp + esi*4 + 0x7c0]
mov dword [esp + 0x1a4], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x100], ecx
mov dword [esp + 0x2b8], 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 0x1004da40
mov dword [esp + 0x44], eax
lea edx, [edx + edx + 1]
mov esi, dword [esp + 0x2b8]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x100]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x1004db03
shl edx, 2
lea ebx, [esp + esi*4 + 0x400]
neg edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x100], ecx
lea ecx, [esp + esi*4 + 0x440]
mov eax, dword [esp + 0x44]
lea esi, [esp + esi*4 + 0x7c0]
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 0x1004db09
mov edx, dword [esp + 0x3c]
mov ebx, dword [edx]
test ebx, ebx
jne 0x1004db2b
mov edx, dword [esp + 0x40]
dec edx
lea eax, [esp + edx*4 + 0x7b4]
cmp dword [eax], 0
je 0x1004db11
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], eax
mov eax, edx
lea eax, [eax - 1]
mov edx, dword [esp + 0x7b8]
test edx, edx
jle 0x1004dbe1
dec dword [esp + 0x164]
add edx, edx
mov dword [esp + 0x7b8], edx
cmp dword [esp + 0x40], 2
jb 0x1004dbe1
mov edx, dword [esp + 0x40]
lea ebx, [edx - 1]
shr ebx, 1
je 0x1005008d
mov dword [esp + 0x100], ecx
xor esi, esi
mov dword [esp + 0x160], edi
mov edx, dword [esp + esi*8 + 0x7bc]
mov ecx, edx
shr ecx, 0x1f
add edx, edx
or dword [esp + esi*8 + 0x7b8], ecx
mov ecx, dword [esp + esi*8 + 0x7c0]
mov edi, ecx
shr edi, 0x1f
add ecx, ecx
or edx, edi
mov dword [esp + esi*8 + 0x7bc], edx
mov dword [esp + esi*8 + 0x7c0], ecx
inc esi
cmp esi, ebx
jb 0x1004db74
mov ecx, dword [esp + 0x100]
lea edx, [esi + esi + 1]
mov edi, dword [esp + 0x160]
lea ebx, [edx - 1]
cmp ebx, eax
jae 0x1004dbe1
mov esi, dword [esp + edx*4 + 0x7b8]
mov ebx, esi
shr ebx, 0x1f
add esi, esi
or dword [esp + edx*4 + 0x7b4], ebx
mov dword [esp + edx*4 + 0x7b8], esi
mov edx, dword [esp + 0x3c]
mov esi, eax
cmp dword [edx], 0
je 0x1004dbf0
mov esi, dword [esp + 0x40]
cmp esi, dword [esp + 0xfc]
jb 0x1004dc9d
mov esi, dword [esp + 0xfc]
mov eax, esi
mov edx, dword [esp + eax*4 + 0x7b8]
shr edx, 0x1f
mov eax, dword [esp + eax*4 + 0x7b4]
add eax, edx
cmp eax, edx
jae 0x1004dc85
mov edx, esi
mov esi, dword [esp + 0xf8]
mov dword [esp + edx*4 + 0x7b4], eax
lea edx, [esp + edx*4 + 0x7b0]
mov dword [esp + 0x7b4], 0
mov eax, dword [edx]
cmp eax, 0xffffffff
jne 0x1004dc63
mov dword [esp + 0x160], edi
dec esi
lea edx, [esp + esi*4 + 0x7b4]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x1004dc4d
mov edi, dword [esp + 0x160]
test esi, esi
je 0x1004dc6c
inc eax
mov dword [edx], eax
jmp 0x1004dc9d
inc dword [esp + 0x164]
mov esi, 1
mov dword [esp + 0x7b8], 0x80000000
jmp 0x1004dc9d
mov edx, esi
mov dword [esp + edx*4 + 0x7b4], eax
test eax, eax
jne 0x1004dc9d
dec esi
cmp dword [esp + esi*4 + 0x7b4], 0
je 0x1004dc92
sar ecx, 1
dec dword [esp + 0x14c]
jns 0x1004d6cb
mov dword [esp + 0x2b8], esi
mov ebx, dword [esp + 0x3f0]
mov ecx, dword [esp + 0x168]
jmp 0x1004dd12
mov dword [esp + 0x100], ecx
mov dword [esp + 0x160], edi
mov ebx, dword [esp + 0x3f0]
mov eax, dword [esp + 0x14c]
mov edx, dword [esp + 0xfc]
jmp 0x1004d63f
mov dword [esp + 0x7c4], eax
mov dword [esp + 0x7c0], eax
mov dword [esp + 0x7bc], eax
mov dword [esp + 0x7b8], eax
mov dword [esp + 0x2b8], 0
lea eax, [edi + 0x1b]
cmp eax, 0x1a
ja 0x1004dd7f
movsx eax, word [edi*2 + 0x1021621e]
shl edi, 4
mov dword [esp + 0x1e0], eax
mov edx, dword [edi + 0x10215efc]
mov ecx, dword [edi + 0x10215ef8]
mov esi, dword [edi + 0x10215ef4]
mov edi, dword [edi + 0x10215ef0]
mov dword [esp + 0x878], edx
mov dword [esp + 0x87c], ecx
mov dword [esp + 0x880], esi
mov esi, 4
mov dword [esp + 0x884], edi
test edi, edi
jne 0x100500ab
dec esi
lea edi, [esp + esi*4 + 0x874]
cmp dword [edi], 0
je 0x1004dd6d
jmp 0x1004eaa3
xor eax, eax
mov dword [esp + 0x774], eax
mov dword [esp + 0x780], eax
mov dword [esp + 0x784], eax
mov dword [esp + 0x788], eax
mov dword [esp + 0x78c], eax
mov dword [esp + 0x790], eax
mov dword [esp + 0x794], eax
mov dword [esp + 0x798], eax
mov dword [esp + 0x79c], eax
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
test edi, edi
jl 0x10050288
cmp edi, 0x37
jl 0x1004de67
mov edx, edi
sar edx, 3
mov dword [esp + 0x23c], 4
movzx ecx, word [edx*2 + 0x10216162]
lea esi, [edx + 1]
shr ecx, 5
cmp ecx, edi
jle 0x1004de14
mov esi, edx
movzx ecx, word [esi*2 + 0x10216160]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
sub edi, ecx
movsx ecx, word [eax*2 + 0x10216242]
shl eax, 4
mov edx, dword [eax + 0x102160cc]
mov dword [esp + 0x7f8], edx
mov esi, dword [eax + 0x102160c8]
mov edx, dword [eax + 0x102160c4]
mov eax, dword [eax + 0x102160c0]
mov dword [esp + 0x7fc], esi
mov dword [esp + 0x800], edx
mov dword [esp + 0x804], eax
jmp 0x1004de72
mov dword [esp + 0x23c], 0
cmp edi, 0x37
je 0x1005022f
lea eax, [edi - 0x1b]
mov dword [esp + 0x98], eax
test eax, eax
jle 0x1005021a
mov esi, eax
movsx eax, word [esi*2 + 0x102165be]
mov edx, dword [esi*8 + 0x102163dc]
mov edi, dword [esi*8 + 0x102163d8]
mov dword [esp + 0x94], eax
mov eax, 2
mov dword [esp + 0x778], edx
mov dword [esp + 0x77c], edi
mov dword [esp + 0x290], eax
test edi, edi
jne 0x10050210
dec eax
cmp dword [esp + eax*4 + 0x774], 0
je 0x1004dece
mov dword [esp + 0x290], eax
mov edi, 0x1b
movsx edx, word [edi*2 + 0x102165be]
mov esi, 2
mov dword [esp + 0x1e0], edx
mov edx, dword [edi*8 + 0x102163dc]
mov edi, dword [edi*8 + 0x102163d8]
mov dword [esp + 0x878], edx
mov dword [esp + 0x87c], edi
test edi, edi
jne 0x10050204
dec esi
lea edi, [esp + esi*4 + 0x874]
cmp dword [edi], 0
je 0x1004df1d
cmp dword [esp + 0x98], 0
jle 0x1004e53e
mov eax, dword [esp + 0x290]
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 + 0x774]
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 + 0x4f4], edx
mov edx, dword [esp + 0x8c]
mov dword [esp + eax*4 + 0x4f8], edx
mov eax, dword [esp + 0x290]
dec eax
je 0x1004e059
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x348], esi
mov dword [esp + 0x168], ecx
mov ecx, eax
mov ebx, dword [esp + 0xa4]
mov edx, dword [edi]
mov esi, dword [esp + ecx*4 + 0x774]
mov dword [esp + ebx*4 + 0x534], 0
mov dword [esp + 0x2a8], edx
mov dword [esp + 0x2ac], esi
mov eax, dword [esp + 0x2a8]
mul dword [esp + 0x2ac]
mov dword [esp + 0x2b0], eax
mov dword [esp + 0x2b4], edx
mov esi, dword [esp + 0x2b0]
mov edx, dword [esp + ebx*4 + 0x4f4]
add edx, esi
cmp edx, esi
mov dword [esp + ebx*4 + 0x4f4], edx
mov edx, 0
setb dl
dec ebx
add edx, dword [esp + 0x2b4]
mov dword [esp + ebx*4 + 0x4f4], edx
dec ecx
jne 0x1004dfcc
mov dword [esp + 0xa4], ebx
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x168]
mov edx, dword [esp + 0xa4]
mov dword [esp + edx*4 + 0x534], 0
dec edx
js 0x1004e142
mov edx, dword [esp + 0xa4]
shr edx, 1
mov dword [esp + 0xac], edx
je 0x100501fa
mov edi, dword [esp + 0xa4]
xor eax, eax
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x348], esi
lea edx, [esp + edi*4 + 0x4f0]
mov dword [esp + 0x80], edx
lea edx, [esp + edi*4 + 0x530]
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 0x1004e0d5
mov ebx, dword [esp + 0x3f0]
lea edx, [eax + eax + 1]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x168]
lea edi, [edx - 1]
cmp edi, dword [esp + 0xa4]
jae 0x1004e142
shl edx, 2
xor eax, eax
mov edi, dword [esp + 0xa4]
neg edx
mov dword [esp + 0x3f0], ebx
lea ebx, [esp + edi*4 + 0x530]
mov dword [edx + ebx + 4], eax
lea ebx, [esp + edi*4 + 0x4f0]
mov dword [edx + ebx + 4], eax
mov ebx, dword [esp + 0x3f0]
mov eax, esi
dec eax
je 0x1004e227
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x348], esi
mov dword [esp + 0x168], ecx
mov edx, dword [esp + 0x290]
mov esi, edx
test edx, edx
je 0x1004e20b
mov dword [esp + 0x3a0], eax
lea ebx, [esp + eax*4 + 0x534]
lea ecx, [esp + eax*4 + 0x4f4]
mov eax, dword [esp + 0x3a0]
mov edi, dword [esp + esi*4 + 0x774]
mov dword [esp + 0x394], edi
mov edx, dword [esp + eax*4 + 0x874]
mov dword [esp + 0x390], edx
mov eax, dword [esp + 0x390]
mul dword [esp + 0x394]
mov dword [esp + 0x398], eax
mov dword [esp + 0x39c], edx
mov edi, dword [esp + 0x398]
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 + 0x39c]
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 0x1004e186
mov eax, dword [esp + 0x3a0]
mov edx, dword [esp + 0x290]
dec eax
jne 0x1004e167
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x168]
mov edi, dword [esp + 0x290]
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 + 0x874]
mov dword [esp + 0x9c], edi
cmp edx, 1
mov edx, dword [edi - 0x380]
mov dword [edi], edx
je 0x1004e392
mov eax, esi
mov dword [esp + 0xa8], 0
shr eax, 1
je 0x100501f0
xor edx, edx
lea edi, [esp + esi*4 + 0x4f4]
mov dword [esp + 0x78], edi
lea edi, [esp + esi*4 + 0x534]
mov dword [esp + 0x234], edi
lea edi, [esp + esi*4 + 0x874]
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x230], eax
mov dword [esp + 0x168], ecx
mov dword [esp + 0x348], esi
mov ecx, edx
mov ebx, dword [esp + 0x78]
mov eax, dword [esp + 0xa8]
mov esi, dword [esp + 0x234]
inc edx
mov dword [esp + 0x238], 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 + 0x238]
mov dword [ecx + edi - 4], esi
setb al
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x230]
jb 0x1004e2d0
mov dword [esp + 0xa8], eax
lea eax, [edx + edx + 1]
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x168]
lea edx, [eax - 1]
cmp edx, esi
jae 0x1004e389
shl eax, 2
lea edi, [esp + esi*4 + 0x4f4]
neg eax
mov dword [esp + 0x3f0], ebx
lea ebx, [esp + esi*4 + 0x534]
mov edx, dword [esp + 0xa8]
add edx, dword [eax + ebx + 4]
lea ebx, [esp + esi*4 + 0x874]
add edx, dword [eax + edi + 4]
mov dword [eax + ebx + 4], edx
mov edx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x3f0]
mov edx, dword [edx]
jmp 0x1004e392
mov edx, dword [esp + 0x9c]
mov edx, dword [edx]
test edx, edx
jne 0x1004e3bd
mov edx, dword [esp + 0xa0]
dec edx
lea eax, [esp + edx*4 + 0x874]
cmp dword [eax], 0
je 0x1004e39d
mov dword [esp + 0xa0], edx
mov dword [esp + 0x9c], eax
mov eax, edx
lea esi, [eax - 1]
mov edx, dword [esp + 0x878]
test edx, edx
jle 0x1004e479
dec dword [esp + 0x1e0]
add edx, edx
mov dword [esp + 0x878], edx
cmp dword [esp + 0xa0], 2
jb 0x1004e479
mov edx, dword [esp + 0xa0]
lea edi, [edx - 1]
shr edi, 1
je 0x100501e6
mov dword [esp + 0x348], esi
xor edx, edx
mov dword [esp + 0x168], ecx
mov eax, dword [esp + edx*8 + 0x87c]
mov ecx, eax
shr ecx, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x878], ecx
mov ecx, dword [esp + edx*8 + 0x880]
mov esi, ecx
shr esi, 0x1f
add ecx, ecx
or eax, esi
mov dword [esp + edx*8 + 0x87c], eax
mov dword [esp + edx*8 + 0x880], ecx
inc edx
cmp edx, edi
jb 0x1004e40c
mov esi, dword [esp + 0x348]
lea eax, [edx + edx + 1]
mov ecx, dword [esp + 0x168]
lea edx, [eax - 1]
cmp edx, esi
jae 0x1004e479
mov edi, dword [esp + eax*4 + 0x878]
mov edx, edi
shr edx, 0x1f
add edi, edi
or dword [esp + eax*4 + 0x874], edx
mov dword [esp + eax*4 + 0x878], edi
mov edx, dword [esp + 0x9c]
mov edi, dword [esp + 0x20c]
shr edi, 5
cmp dword [edx], 0
je 0x1004e496
mov esi, dword [esp + 0xa0]
cmp esi, edi
jb 0x1004e537
mov esi, edi
mov edx, esi
mov edi, dword [esp + edx*4 + 0x878]
shr edi, 0x1f
mov eax, edi
mov edi, edx
lea edi, [esp + edi*4 + 0x874]
mov edx, dword [edi]
add edx, eax
mov dword [esp + 8], edx
cmp edx, eax
jae 0x1004e51f
mov edx, esi
mov esi, dword [esp + 8]
mov dword [edi], esi
mov dword [esp + 0x874], 0
lea edi, [esp + edx*4 + 0x870]
mov eax, dword [edi]
lea esi, [edx - 1]
cmp eax, 0xffffffff
jne 0x1004e4f6
dec esi
lea edi, [esp + esi*4 + 0x874]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x1004e4e7
test esi, esi
je 0x1004e4ff
inc eax
mov dword [edi], eax
jmp 0x1004e53e
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x878], 0x80000000
lea edi, [esp + 0x878]
jmp 0x1004e53e
mov dword [edi], edx
cmp dword [esp + 8], 0
jne 0x1004e53e
dec esi
lea edi, [esp + esi*4 + 0x874]
cmp dword [edi], 0
je 0x1004e528
jmp 0x1004e53e
lea edi, [esp + esi*4 + 0x874]
cmp dword [esp + 0x23c], 0
je 0x1004eaa3
mov eax, dword [esp + 0x23c]
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 + 0x7f4]
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 + 0x474], edx
mov edx, dword [esp + 0x64]
mov dword [esp + eax*4 + 0x478], edx
mov edx, dword [esp + 0x23c]
lea eax, [edx - 1]
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x348], esi
mov dword [esp + 0x168], ecx
mov ecx, eax
mov ebx, dword [esp + 0x70]
mov edx, dword [edi]
mov esi, dword [esp + ecx*4 + 0x7f4]
mov dword [esp + ebx*4 + 0x4b4], 0
mov dword [esp + 0x270], edx
mov dword [esp + 0x274], esi
mov eax, dword [esp + 0x270]
mul dword [esp + 0x274]
mov dword [esp + 0x278], eax
mov dword [esp + 0x27c], edx
mov esi, dword [esp + 0x278]
mov edx, dword [esp + ebx*4 + 0x474]
add edx, esi
cmp edx, esi
mov dword [esp + ebx*4 + 0x474], edx
mov edx, 0
setb dl
dec ebx
add edx, dword [esp + 0x27c]
mov dword [esp + ebx*4 + 0x474], edx
dec ecx
jne 0x1004e5c2
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x168]
mov edx, dword [esp + 0x70]
mov dword [esp + edx*4 + 0x4b4], 0
dec edx
js 0x1004e71a
mov edx, dword [esp + 0x70]
shr edx, 1
mov dword [esp + 0x74], edx
je 0x100501dc
mov edi, dword [esp + 0x70]
xor eax, eax
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x348], esi
lea edx, [esp + edi*4 + 0x470]
mov dword [esp + 0x50], edx
lea edx, [esp + edi*4 + 0x4b0]
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 0x1004e6b3
mov ebx, dword [esp + 0x3f0]
lea edx, [eax + eax + 1]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x168]
lea edi, [edx - 1]
cmp edi, dword [esp + 0x70]
jae 0x1004e71a
shl edx, 2
xor eax, eax
mov edi, dword [esp + 0x70]
neg edx
mov dword [esp + 0x3f0], ebx
lea ebx, [esp + edi*4 + 0x4b0]
mov dword [edx + ebx + 4], eax
lea ebx, [esp + edi*4 + 0x470]
mov dword [edx + ebx + 4], eax
mov ebx, dword [esp + 0x3f0]
mov eax, esi
dec eax
je 0x1004e7ff
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x348], esi
mov dword [esp + 0x168], ecx
mov edx, dword [esp + 0x23c]
mov esi, edx
test edx, edx
je 0x1004e7e3
mov dword [esp + 0x38c], eax
lea ebx, [esp + eax*4 + 0x4b4]
lea ecx, [esp + eax*4 + 0x474]
mov eax, dword [esp + 0x38c]
mov edi, dword [esp + esi*4 + 0x7f4]
mov dword [esp + 0x380], edi
mov edx, dword [esp + eax*4 + 0x874]
mov dword [esp + 0x37c], edx
mov eax, dword [esp + 0x37c]
mul dword [esp + 0x380]
mov dword [esp + 0x384], eax
mov dword [esp + 0x388], edx
mov edi, dword [esp + 0x384]
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 + 0x388]
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 0x1004e75e
mov eax, dword [esp + 0x38c]
mov edx, dword [esp + 0x23c]
dec eax
jne 0x1004e73f
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x168]
add dword [esp + 0x1e0], ecx
mov edx, dword [esp + 0x23c]
mov ecx, dword [esp + 0x6c]
lea esi, [esi + edx - 1]
mov edx, dword [esp + ecx*4 + 0x474]
lea edi, [esp + ecx*4 + 0x874]
mov dword [esp + 0x54], edi
mov dword [edi], edx
cmp ecx, 1
je 0x1004e931
mov edx, esi
mov dword [esp + 0x58], 0
shr edx, 1
je 0x100501d2
xor eax, eax
lea ecx, [esp + esi*4 + 0x474]
mov dword [esp + 0x1c], ecx
lea ecx, [esp + esi*4 + 0x4b4]
lea edi, [esp + esi*4 + 0x874]
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x1bc], ecx
mov dword [esp + 0x1b8], edx
mov dword [esp + 0x348], 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 0x1004e890
mov dword [esp + 0x58], edx
lea eax, [eax + eax + 1]
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
lea edx, [eax - 1]
cmp edx, esi
jae 0x1004e92b
shl eax, 2
lea ecx, [esp + esi*4 + 0x4b4]
neg eax
lea edi, [esp + esi*4 + 0x474]
mov edx, dword [esp + 0x58]
add edx, dword [eax + ecx + 4]
lea ecx, [esp + esi*4 + 0x874]
add edx, dword [eax + edi + 4]
mov dword [eax + ecx + 4], edx
mov edx, dword [esp + 0x54]
mov edx, dword [edx]
jmp 0x1004e931
mov edx, dword [esp + 0x54]
mov edx, dword [edx]
test edx, edx
jne 0x1004e953
mov edx, dword [esp + 0x6c]
dec edx
lea eax, [esp + edx*4 + 0x874]
cmp dword [eax], 0
je 0x1004e939
mov dword [esp + 0x6c], edx
mov dword [esp + 0x54], eax
mov eax, edx
lea esi, [eax - 1]
mov edx, dword [esp + 0x878]
test edx, edx
jle 0x1004e9f7
dec dword [esp + 0x1e0]
add edx, edx
mov dword [esp + 0x878], edx
cmp dword [esp + 0x6c], 2
jb 0x1004e9f7
mov edx, dword [esp + 0x6c]
lea ecx, [edx - 1]
shr ecx, 1
je 0x100501c8
mov dword [esp + 0x348], esi
xor edx, edx
mov eax, dword [esp + edx*8 + 0x87c]
mov esi, eax
shr esi, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x878], esi
mov esi, dword [esp + edx*8 + 0x880]
mov edi, esi
shr edi, 0x1f
add esi, esi
or eax, edi
mov dword [esp + edx*8 + 0x87c], eax
mov dword [esp + edx*8 + 0x880], esi
inc edx
cmp edx, ecx
jb 0x1004e991
mov esi, dword [esp + 0x348]
lea edi, [edx + edx + 1]
lea edx, [edi - 1]
cmp edx, esi
jae 0x1004e9f7
mov ecx, dword [esp + edi*4 + 0x878]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
or dword [esp + edi*4 + 0x874], edx
mov dword [esp + edi*4 + 0x878], ecx
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x20c]
shr eax, 5
cmp dword [edx], 0
je 0x1004ea0e
mov esi, dword [esp + 0x6c]
cmp esi, eax
jb 0x1004ea9c
mov esi, eax
mov edx, dword [esp + eax*4 + 0x878]
shr edx, 0x1f
lea edi, [esp + eax*4 + 0x874]
mov ecx, dword [edi]
add ecx, edx
cmp ecx, edx
jae 0x1004ea87
mov dword [edi], ecx
lea edi, [esp + eax*4 + 0x870]
mov dword [esp + 0x874], 0
lea esi, [eax - 1]
mov eax, dword [edi]
cmp eax, 0xffffffff
jne 0x1004ea5e
dec esi
lea edi, [esp + esi*4 + 0x874]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x1004ea4f
test esi, esi
je 0x1004ea67
inc eax
mov dword [edi], eax
jmp 0x1004eaa3
inc dword [esp + 0x1e0]
mov esi, 1
mov dword [esp + 0x878], 0x80000000
lea edi, [esp + 0x878]
jmp 0x1004eaa3
mov dword [edi], ecx
test ecx, ecx
jne 0x1004eaa3
dec esi
lea edi, [esp + esi*4 + 0x874]
cmp dword [edi], 0
je 0x1004ea8d
jmp 0x1004eaa3
lea edi, [esp + esi*4 + 0x874]
cmp dword [esp + 0x2b8], 0
je 0x1004f021
mov eax, dword [esp + 0x2b8]
mov edx, dword [edi]
mov dword [esp + 0x118], edx
mov edx, dword [esp + eax*4 + 0x7b4]
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 + 0x5f4], edx
mov edx, dword [esp + 0x120]
mov eax, dword [esp + 0x2b8]
mov dword [esp + ecx*4 + 0x5f8], edx
dec eax
je 0x1004eba8
mov dword [esp + 0x3f0], ebx
mov ebx, eax
mov dword [esp + 0x348], esi
mov edx, dword [edi]
mov esi, dword [esp + ebx*4 + 0x7b4]
mov dword [esp + ecx*4 + 0x634], 0
mov dword [esp + 0x2e0], edx
mov dword [esp + 0x2e4], esi
mov eax, dword [esp + 0x2e0]
mul dword [esp + 0x2e4]
mov dword [esp + 0x2e8], eax
mov dword [esp + 0x2ec], edx
mov esi, dword [esp + 0x2e8]
mov edx, dword [esp + ecx*4 + 0x5f4]
add edx, esi
cmp edx, esi
mov dword [esp + ecx*4 + 0x5f4], edx
mov edx, 0
setb dl
dec ecx
add edx, dword [esp + 0x2ec]
mov dword [esp + ecx*4 + 0x5f4], edx
dec ebx
jne 0x1004eb29
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
mov edx, ecx
mov dword [esp + ecx*4 + 0x634], 0
dec edx
js 0x1004ec5e
mov edi, ecx
shr edi, 1
je 0x100501be
xor edx, edx
lea eax, [esp + ecx*4 + 0x5f0]
mov dword [esp + 0x10c], eax
lea eax, [esp + ecx*4 + 0x630]
mov dword [esp + 0x108], eax
xor eax, eax
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x104], ecx
mov dword [esp + 0x348], 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 0x1004ec0b
mov ebx, dword [esp + 0x3f0]
lea edx, [edx + edx + 1]
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x348]
lea edi, [edx - 1]
cmp edi, ecx
jae 0x1004ec5e
shl edx, 2
lea edi, [esp + ecx*4 + 0x630]
neg edx
lea ecx, [esp + ecx*4 + 0x5f0]
xor eax, eax
mov dword [edx + edi + 4], eax
mov dword [edx + ecx + 4], eax
mov eax, esi
dec eax
je 0x1004ed43
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x348], esi
mov edx, dword [esp + 0x2b8]
mov esi, edx
test edx, edx
je 0x1004ed27
mov dword [esp + 0x3c8], eax
lea ebx, [esp + eax*4 + 0x634]
mov dword [esp + 0x2b8], edx
lea ecx, [esp + eax*4 + 0x5f4]
mov eax, dword [esp + 0x3c8]
mov edi, dword [esp + esi*4 + 0x7b4]
mov dword [esp + 0x3bc], edi
mov edx, dword [esp + eax*4 + 0x874]
mov dword [esp + 0x3b8], edx
mov eax, dword [esp + 0x3b8]
mul dword [esp + 0x3bc]
mov dword [esp + 0x3c0], eax
mov dword [esp + 0x3c4], edx
mov edi, dword [esp + 0x3c0]
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 + 0x3c4]
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 0x1004eca2
mov eax, dword [esp + 0x3c8]
mov edx, dword [esp + 0x2b8]
dec eax
jne 0x1004ec7c
mov dword [esp + 0x2b8], edx
mov ebx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x348]
mov ecx, dword [esp + 0x2b8]
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 + 0x5f4]
lea edi, [esp + edx*4 + 0x874]
mov dword [esp + 0x110], edi
mov dword [edi], ecx
cmp edx, 1
je 0x1004eec9
mov ecx, esi
mov dword [esp + 0x114], 0
shr ecx, 1
je 0x100501b4
xor eax, eax
lea edi, [esp + esi*4 + 0x874]
mov dword [esp + 0x268], edi
lea edi, [esp + esi*4 + 0x5f4]
mov dword [esp + 0xc8], edi
lea edi, [esp + esi*4 + 0x634]
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x260], ecx
mov dword [esp + 0xc4], edx
mov dword [esp + 0x264], edi
mov dword [esp + 0x348], esi
mov ecx, eax
mov ebx, dword [esp + 0xc8]
mov edx, dword [esp + 0x114]
lea esi, [esi]
lea edi, [edi]
mov esi, dword [esp + 0x264]
inc eax
mov edi, dword [esp + 0x268]
mov dword [esp + 0x26c], 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 + 0x26c]
mov dword [ecx + edi - 4], esi
setb dl
add ecx, 0xfffffff8
cmp eax, dword [esp + 0x260]
jb 0x1004ee00
mov dword [esp + 0x114], edx
lea eax, [eax + eax + 1]
mov ebx, dword [esp + 0x3f0]
mov edx, dword [esp + 0xc4]
mov esi, dword [esp + 0x348]
lea ecx, [eax - 1]
cmp ecx, esi
jae 0x1004eec0
shl eax, 2
lea edi, [esp + esi*4 + 0x5f4]
neg eax
mov dword [esp + 0x3f0], ebx
lea ebx, [esp + esi*4 + 0x634]
mov ecx, dword [esp + 0x114]
add ecx, dword [eax + ebx + 4]
lea ebx, [esp + esi*4 + 0x874]
add ecx, dword [eax + edi + 4]
mov dword [eax + ebx + 4], ecx
mov ecx, dword [esp + 0x110]
mov ebx, dword [esp + 0x3f0]
mov ecx, dword [ecx]
jmp 0x1004eec9
mov ecx, dword [esp + 0x110]
mov ecx, dword [ecx]
test ecx, ecx
jne 0x1004eee4
dec edx
lea eax, [esp + edx*4 + 0x874]
cmp dword [eax], 0
je 0x1004eecd
mov dword [esp + 0x110], eax
lea esi, [edx - 1]
mov ecx, dword [esp + 0x878]
test ecx, ecx
jle 0x1004ef94
dec dword [esp + 0x1e0]
add ecx, ecx
mov dword [esp + 0x878], ecx
cmp edx, 2
jb 0x1004ef94
lea ecx, [edx - 1]
shr ecx, 1
je 0x100501aa
mov dword [esp + 0xc4], edx
xor edi, edi
mov dword [esp + 0x348], esi
mov eax, dword [esp + edi*8 + 0x87c]
mov edx, eax
shr edx, 0x1f
add eax, eax
or dword [esp + edi*8 + 0x878], edx
mov edx, dword [esp + edi*8 + 0x880]
mov esi, edx
shr esi, 0x1f
add edx, edx
or eax, esi
mov dword [esp + edi*8 + 0x87c], eax
mov dword [esp + edi*8 + 0x880], edx
inc edi
cmp edi, ecx
jb 0x1004ef27
mov edx, dword [esp + 0xc4]
lea eax, [edi + edi + 1]
mov esi, dword [esp + 0x348]
lea ecx, [eax - 1]
cmp ecx, esi
jae 0x1004ef94
mov edi, dword [esp + eax*4 + 0x878]
mov ecx, edi
shr ecx, 0x1f
add edi, edi
or dword [esp + eax*4 + 0x874], ecx
mov dword [esp + eax*4 + 0x878], edi
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x20c]
shr eax, 5
cmp dword [ecx], 0
je 0x1004efac
mov esi, edx
cmp esi, eax
jb 0x1004f01a
mov esi, eax
mov edx, dword [esp + eax*4 + 0x878]
shr edx, 0x1f
lea edi, [esp + eax*4 + 0x874]
mov ecx, dword [edi]
add ecx, edx
cmp ecx, edx
jae 0x1004f005
mov dword [edi], ecx
lea edi, [esp + eax*4 + 0x870]
mov dword [esp + 0x874], 0
lea esi, [eax - 1]
mov eax, dword [edi]
cmp eax, 0xffffffff
jne 0x1004eff8
dec esi
lea edi, [esp + esi*4 + 0x874]
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x1004efe9
test esi, esi
jne 0x1004cd30
jmp 0x1004cd38
mov dword [edi], ecx
test ecx, ecx
jne 0x1004f021
dec esi
lea edi, [esp + esi*4 + 0x874]
cmp dword [edi], 0
je 0x1004f00b
jmp 0x1004f021
lea edi, [esp + esi*4 + 0x874]
mov edi, dword [edi]
lea edx, [esi + ebx - 1]
mov ecx, dword [esp + ebx*4 + 0x834]
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 + 0x6f4]
mov dword [esp + 0x338], edx
mov dword [edx], ecx
mov ecx, dword [esp + 0x1d8]
mov dword [edx + 4], ecx
mov ecx, esi
dec ecx
je 0x1004f137
mov dword [esp + 0x348], esi
mov dword [esp + 0x1cc], edi
mov esi, dword [esp + 0x1e4]
mov eax, dword [esp + ebx*4 + 0x834]
mov edx, dword [esp + ecx*4 + 0x874]
mov dword [esp + esi*4 + 0x734], 0
mov dword [esp + 0x34c], eax
mov dword [esp + 0x350], edx
mov eax, dword [esp + 0x34c]
mul dword [esp + 0x350]
mov dword [esp + 0x354], eax
mov dword [esp + 0x358], edx
mov edi, dword [esp + 0x354]
xor edx, edx
mov eax, dword [esp + esi*4 + 0x6f4]
add eax, edi
cmp eax, edi
mov dword [esp + esi*4 + 0x6f4], eax
setb dl
dec esi
add edx, dword [esp + 0x358]
mov dword [esp + esi*4 + 0x6f4], edx
dec ecx
jne 0x1004f0af
mov dword [esp + 0x1e4], esi
mov edi, dword [esp + 0x1cc]
mov esi, dword [esp + 0x348]
mov edx, dword [esp + 0x1e4]
mov dword [esp + edx*4 + 0x734], 0
dec edx
js 0x1004f226
mov edx, dword [esp + 0x1e4]
shr edx, 1
mov dword [esp + 0x1f0], edx
je 0x100501a0
mov ecx, dword [esp + 0x1e4]
xor eax, eax
mov dword [esp + 0x3f0], ebx
mov dword [esp + 0x348], esi
lea edx, [esp + ecx*4 + 0x6f0]
mov dword [esp + 0x1c4], edx
lea edx, [esp + ecx*4 + 0x730]
mov dword [esp + 0x1c8], edx
mov dword [esp + 0x1cc], edi
xor edi, edi
mov edx, eax
mov ecx, dword [esp + 0x1c8]
mov ebx, dword [esp + 0x1c4]
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 0x1004f1b9
mov ebx, dword [esp + 0x3f0]
lea edx, [eax + eax + 1]
mov edi, dword [esp + 0x1cc]
mov esi, dword [esp + 0x348]
lea ecx, [edx - 1]
cmp ecx, dword [esp + 0x1e4]
jae 0x1004f226
shl edx, 2
xor eax, eax
mov dword [esp + 0x3f0], ebx
neg edx
mov ebx, dword [esp + 0x1e4]
lea ecx, [esp + ebx*4 + 0x730]
mov dword [edx + ecx + 4], eax
lea ecx, [esp + ebx*4 + 0x6f0]
mov dword [edx + ecx + 4], eax
mov ebx, dword [esp + 0x3f0]
dec ebx
je 0x1004f2ef
mov dword [esp + 0x1cc], edi
mov eax, esi
mov edi, eax
test eax, eax
je 0x1004f2e1
mov dword [esp + 0x3f0], ebx
lea esi, [esp + ebx*4 + 0x734]
mov dword [esp + 0x348], eax
lea ecx, [esp + ebx*4 + 0x6f4]
mov eax, dword [esp + 0x3f0]
mov ebx, dword [esp + edi*4 + 0x874]
mov dword [esp + 0x3e4], ebx
mov edx, dword [esp + eax*4 + 0x834]
mov dword [esp + 0x3e0], edx
mov eax, dword [esp + 0x3e0]
mul dword [esp + 0x3e4]
mov dword [esp + 0x3e8], eax
mov dword [esp + 0x3ec], edx
mov edx, dword [esp + 0x3e8]
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 + 0x3ec]
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 0x1004f25c
mov ebx, dword [esp + 0x3f0]
mov eax, dword [esp + 0x348]
dec ebx
jne 0x1004f236
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 + 0x6f4]
mov dword [esp + edi*4 + 0x834], edx
cmp edi, 1
je 0x1004f42d
mov edx, dword [esp + 0x1e8]
shr edx, 1
mov dword [esp + 0x340], edx
mov edx, 0
je 0x10050196
mov ecx, dword [esp + 0x1e8]
xor ebx, ebx
mov dword [esp + 0x320], eax
mov dword [esp + 0x1cc], edi
lea esi, [esp + ecx*4 + 0x834]
mov dword [esp + 0x33c], esi
lea esi, [esp + ecx*4 + 0x734]
mov eax, ebx
mov ecx, esi
lea esi, [esi]
lea edi, [edi]
mov esi, dword [esp + 0x338]
inc ebx
add edx, dword [eax + ecx]
mov edi, dword [esp + 0x33c]
mov dword [esp + 0x344], 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 + 0x344]
mov dword [eax + edi - 4], esi
setb dl
add eax, 0xfffffff8
cmp ebx, dword [esp + 0x340]
jb 0x1004f370
mov edi, dword [esp + 0x1cc]
lea ebx, [ebx + ebx + 1]
mov eax, dword [esp + 0x320]
lea esi, [ebx - 1]
cmp esi, dword [esp + 0x1e8]
jae 0x1004f426
shl ebx, 2
mov ecx, dword [esp + 0x338]
mov esi, dword [esp + 0x1e8]
sub ecx, ebx
mov dword [esp + 0x320], eax
neg ebx
lea eax, [esp + esi*4 + 0x734]
add edx, dword [ebx + eax + 4]
lea eax, [esp + esi*4 + 0x834]
add edx, dword [ecx + 4]
mov dword [ebx + eax + 4], edx
mov edx, dword [esp + edi*4 + 0x834]
mov eax, dword [esp + 0x320]
jmp 0x1004f42d
mov edx, dword [esp + edi*4 + 0x834]
test edx, edx
jne 0x10050183
dec edi
lea edx, [esp + edi*4 + 0x834]
cmp dword [edx], 0
je 0x1004f435
mov dword [esp + 0x1ec], edx
mov edx, dword [esp + 0x838]
test edx, edx
jle 0x1004f4e6
add edx, edx
dec eax
mov dword [esp + 0x838], edx
cmp edi, 2
jb 0x1004f4e6
lea ebx, [edi - 1]
shr ebx, 1
je 0x100500c1
mov dword [esp + 0x320], eax
xor edx, edx
mov eax, dword [esp + edx*8 + 0x83c]
mov ecx, eax
shr ecx, 0x1f
add eax, eax
or dword [esp + edx*8 + 0x838], ecx
mov ecx, dword [esp + edx*8 + 0x840]
mov esi, ecx
shr esi, 0x1f
add ecx, ecx
or eax, esi
mov dword [esp + edx*8 + 0x83c], eax
mov dword [esp + edx*8 + 0x840], ecx
inc edx
cmp edx, ebx
jb 0x1004f47b
mov eax, dword [esp + 0x320]
lea ebx, [edx + edx + 1]
lea edx, [edi - 1]
lea esi, [ebx - 1]
cmp esi, edx
jae 0x1004f4e9
mov ecx, dword [esp + ebx*4 + 0x838]
mov esi, ecx
shr esi, 0x1f
add ecx, ecx
or dword [esp + ebx*4 + 0x834], esi
mov dword [esp + ebx*4 + 0x838], ecx
jmp 0x1004f4e9
lea edx, [edi - 1]
mov ebx, dword [esp + 0x1ec]
cmp dword [ebx], 0
je 0x1004f4f7
mov edx, edi
test eax, eax
jg 0x1004c1c2
mov edi, eax
neg edi
je 0x1004f61a
mov ecx, edi
mov esi, dword [esp + edx*4 + 0x834]
neg ecx
mov ebx, esi
shl ebx, cl
mov ecx, edi
shr esi, cl
mov dword [esp + edx*4 + 0x838], ebx
mov dword [esp + edx*4 + 0x834], esi
lea esi, [edx - 1]
cmp edx, 1
je 0x1004f613
mov ebx, esi
shr ebx, 1
mov dword [esp + 0x324], ebx
je 0x10050179
xor ebx, ebx
lea ecx, [esp + edx*4 + 0x830]
mov dword [esp + 0x298], edx
mov dword [esp + 0x320], eax
mov dword [esp + 0x178], esi
mov dword [esp + 0x328], edi
mov edx, ebx
mov eax, ecx
mov esi, dword [edx + eax]
inc ebx
mov edi, dword [esp + 0x320]
mov ecx, edi
mov dword [esp + 0x32c], ebx
mov ebx, esi
shl ebx, cl
or dword [edx + eax + 4], ebx
mov ebx, dword [edx + eax - 4]
mov ecx, dword [esp + 0x328]
shr esi, cl
mov ecx, edi
mov edi, ebx
shl edi, cl
mov ecx, dword [esp + 0x328]
or esi, edi
shr ebx, cl
mov dword [edx + eax - 4], ebx
mov ebx, dword [esp + 0x32c]
mov dword [edx + eax], esi
add edx, 0xfffffff8
cmp ebx, dword [esp + 0x324]
jb 0x1004f570
mov edi, ecx
mov esi, dword [esp + 0x178]
lea ecx, [ebx + ebx + 1]
mov edx, dword [esp + 0x298]
mov eax, dword [esp + 0x320]
lea ebx, [ecx - 1]
cmp ebx, esi
jae 0x1004f60c
sub esi, ecx
mov ecx, eax
mov ebx, dword [esp + esi*4 + 0x838]
shl ebx, cl
mov ecx, edi
or dword [esp + esi*4 + 0x83c], ebx
shr dword [esp + esi*4 + 0x838], cl
mov ebx, dword [esp + edx*4 + 0x838]
jmp 0x1004f613
mov ebx, dword [esp + edx*4 + 0x838]
xor eax, eax
cmp eax, ebx
adc edx, 0
mov ebx, dword [esp + 0x2c0]
cmp ebx, 0x27
mov eax, dword [esp + 0x330]
jle 0x1004f632
mov ebx, 0x27
mov ecx, dword [esp + 0x1fc]
mov byte [eax], 0x30
mov dword [esp + 0x200], ecx
cmp ebx, dword [esp + 0x210]
jle 0x1004f858
sub ebx, dword [esp + 0x210]
je 0x1004f858
xor eax, eax
mov dword [esp + 0x334], ebx
xor esi, esi
mov dword [esp + 0x834], 0
test edx, edx
je 0x1004f821
mov ebx, dword [esp + edx*4 + 0x834]
mov ecx, 0
mov dword [esp + edx*4 + 0x834], 0
je 0x1004f812
mov ecx, edx
shr ecx, 1
mov dword [esp + 0x360], ecx
je 0x100500cb
xor ecx, ecx
lea edi, [esp + edx*4 + 0x834]
mov dword [esp + 0x294], ecx
mov dword [esp + 0x35c], ecx
mov dword [esp + 0x298], edx
mov dword [esp + 0x2a0], eax
mov dword [esp + 0x29c], esi
mov edx, dword [esp + 0x294]
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 + 0x364], 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 + 0x364]
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 + 0x35c]
add esi, eax
mov ebx, dword [edx + ecx - 8]
mov dword [edx + ecx - 8], esi
add edx, 0xfffffff8
mov esi, dword [esp + 0x35c]
cmp esi, dword [esp + 0x360]
jb 0x1004f6de
mov ecx, esi
mov eax, dword [esp + 0x2a0]
lea ecx, [ecx + ecx + 1]
mov esi, dword [esp + 0x29c]
mov edx, dword [esp + 0x298]
lea edi, [ecx - 1]
cmp edi, edx
jae 0x1004f80b
neg ecx
lea edi, [ebx + ebx*4]
add ecx, edx
cmp edi, ebx
mov dword [esp + 0x298], edx
mov edx, 0
mov dword [esp + 0x29c], esi
mov dword [esp + 0x2a0], eax
mov eax, edx
mov esi, dword [esp + ecx*4 + 0x838]
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 + 0x838], esi
setb dl
shr edi, 0x1f
or ebx, edi
add ebx, edx
mov edx, dword [esp + 0x298]
mov dword [esp + ecx*4 + 0x834], ebx
mov eax, dword [esp + 0x2a0]
mov esi, dword [esp + 0x29c]
mov ecx, dword [esp + edx*4 + 0x834]
jmp 0x1004f812
mov ecx, dword [esp + edx*4 + 0x834]
cmp ecx, 1
mov ebx, dword [esp + 0x834]
sbb edx, 0
jmp 0x1004f823
xor ebx, ebx
mov edi, dword [esp + 0x330]
lea ecx, [ebx + 0x30]
add eax, 0x35269
mov byte [esi + edi + 1], cl
lea ecx, [esi + edi + 2]
inc esi
cmp esi, dword [esp + 0x334]
jb 0x1004f668
mov dword [esp + 0x204], ebx
mov dword [esp + 0x200], ecx
jmp 0x1004f868
mov eax, dword [esp + 0x834]
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 + 0x838]
mov ebx, dword [esp + 0x214]
shl ebx, cl
mov dword [esp + 0x220], eax
mov dword [esp + 0x21c], ecx
add eax, 0x80000000
mov dword [esp + 0x308], eax
je 0x1004f8cf
xor eax, eax
cmp dword [esp + 0x308], 0x80000000
setne al
mov dword [esp + 0x224], eax
jmp 0x1004f8da
mov dword [esp + 0x224], 0
xor eax, eax
cmp dword [esp + 0x308], 0
mov dword [esp + 0x300], edx
mov edx, eax
setns dl
mov ecx, dword [esp + 0x2a4]
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 + 0x300]
setbe al
cmp esi, 0x20
jb 0x1004fbad
mov eax, edi
add eax, 0x80000001
cmp eax, 1
ja 0x1005011e
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 + 0x304], ebx
mov eax, ebx
mov dword [esp + 0x17c], edx
cmp edx, 1
jle 0x1004fb45
lea ecx, [edx - 1]
shr ecx, 1
mov dword [esp + 0x314], ecx
je 0x10050169
xor esi, esi
lea ecx, [esp + edx*4 + 0x834]
mov dword [esp + 0x318], ecx
xor ecx, ecx
mov dword [esp + 0x310], ecx
mov dword [esp + 0x300], edx
mov dword [esp + 0x30c], eax
mov dword [esp + 0x174], ebx
inc esi
xor ebx, ebx
mov dword [esp + 0x31c], esi
xor eax, eax
mov esi, dword [esp + 0x318]
mov edx, dword [esp + 0x308]
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 + 0x308], edx
mov edx, dword [esp + 0x30c]
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 + 0x30c], edx
mov edx, dword [esp + 0x304]
neg edx
add edx, edi
cmp edx, edi
mov edi, dword [esp + 0x300]
seta al
neg eax
add eax, esi
cmp eax, esi
mov eax, dword [esp + 0x310]
mov esi, dword [esp + 0x31c]
seta bl
mov dword [esp + 0x304], ebx
lea edx, [eax + edi - 2]
add eax, 0xfffffffe
mov dword [esp + 0x310], eax
cmp esi, dword [esp + 0x314]
jb 0x1004f9e1
mov dword [esp + 0x17c], edx
lea ecx, [esi + esi + 1]
mov edx, edi
mov eax, dword [esp + 0x30c]
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 0x10050150
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 + 0x838]
test esi, esi
setne cl
add eax, esi
cmp eax, esi
mov eax, dword [esp + 0x304]
setb bl
neg eax
add eax, esi
mov dword [esp + 0x30c], ebx
cmp eax, esi
mov ebx, dword [esp + 0x180]
mov eax, 0
seta al
neg ebx
or dword [esp + 0x308], ecx
mov ecx, 0
mov dword [esp + 0x304], 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 + 0x30c]
mov edx, dword [esp + 0x17c]
mov ecx, dword [esp + edx*4 + 0x834]
add eax, ecx
sub ecx, dword [esp + 0x304]
xor eax, ecx
shr eax, 0x1f
cmp dword [esp + 0x308], 0
je 0x1004fb7d
xor edx, edx
cmp dword [esp + 0x308], 0x80000000
setne dl
jmp 0x1004fb7f
xor edx, edx
mov esi, dword [esp + 0x2a4]
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 0x1005011e
test ebx, ebx
je 0x1005011e
cmp dword [esp + 0x20c], 0x80
jae 0x100500d5
mov dword [esp + 0x20c], 0x80
jmp 0x1004c52d
call fcn.101a6152
mov ecx, eax
shr ecx, 1
je 0x1004fc15
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 0x1004fbf0
lea ecx, [ebx + ebx + 1]
lea edx, [ecx - 1]
cmp edx, eax
jae 0x1004ba7e
mov byte [ecx + esi - 1], 0x30
jmp 0x1004ba7e
mov ecx, 1
jmp 0x1004fc00
mov edi, 1
jmp 0x1004bff1
mov dword [esp + 4], edx
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x1fc]
mov esi, dword [esp + 0x330]
cmp edx, dword [esp + 0x20]
jbe 0x1004fc58
mov ecx, dword [esp + 0x20]
inc ecx
mov dword [esp + 0x20], ecx
mov ebx, dword [esp + ecx*4 + 0x834]
mov dword [esp + 0x14], ebx
jmp 0x1004fc60
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x20]
lea ecx, [ecx + 1]
cmp ecx, edx
ja 0x1004fcf3
sub edx, ecx
inc edx
mov ecx, edx
mov dword [esp + 8], 0
shr ecx, 1
mov dword [esp + 0xc], ecx
je 0x1004fe12
mov ebx, dword [esp + 0x20]
xor ecx, ecx
mov dword [esp + 0x200], edi
mov dword [esp + 0x330], esi
mov edi, dword [esp + 0xc]
lea ebx, [esp + ebx*4 + 0x838]
mov dword [esp], ebx
mov ebx, dword [esp + 8]
mov esi, dword [esp]
or ebx, dword [esi + ecx*8]
or ebx, dword [esi + ecx*8 + 4]
inc ecx
cmp ecx, edi
jb 0x1004fcb1
mov dword [esp + 8], ebx
lea ecx, [ecx + ecx + 1]
mov edi, dword [esp + 0x200]
mov esi, dword [esp + 0x330]
lea ebx, [ecx - 1]
cmp ebx, edx
jae 0x1004fcfb
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 8]
lea ecx, [ecx + edx + 1]
or ebx, dword [esp + ecx*4 + 0x830]
mov dword [esp + 8], ebx
jmp 0x1004fcfb
mov dword [esp + 8], 0
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x2a4]
shr edx, 0x1c
and edx, 0xfffffff8
mov dword [esp + 0x200], edi
mov edi, dword [ebp + 0x30]
mov dword [esp + 0x1fc], eax
lea eax, [ebx + ecx - 0x3ffe]
mov ebx, dword [esp + 4]
mov dword [edi], eax
mov edi, dword [esp + 0x14]
test edi, 0x7fffffff
mov ecx, dword [esp + 8]
lea eax, [edx + ebx*2]
mov ebx, 0
mov edx, ebx
setne dl
or ecx, edx
mov edx, dword [esp + 0x22c]
setne bl
shr edi, 0x1f
add eax, edi
mov edi, dword [esp + 0x200]
lea ecx, [eax + ebx*4]
mov eax, dword [esp + 0x1fc]
shr edx, cl
mov ecx, 4
and edx, 1
test edx, edx
je 0x1004fda9
movsx edx, byte [edi - 1]
cmp edx, dword [esp + 0x1c]
jne 0x1004fd90
mov ebx, dword [esp + 0x1c]
dec edi
movsx edx, byte [edi - 1]
cmp edx, ebx
je 0x1004fd87
cmp edx, 0x39
mov ebx, dword [esp + 0x18]
je 0x1004fd9e
mov ebx, 1
add edx, ebx
mov byte [edi - 1], dl
cmp edi, eax
je 0x1004fe1c
jmp 0x1004fdb7
cmp dword [esp + 0x2c0], 0
jle 0x1004b9e3
test dword [ebp + 0x20], 0x80
je 0x1004fdcf
cmp byte [edi - 1], 0x30
jne 0x1004fe0b
dec edi
cmp byte [edi - 1], 0x30
je 0x1004fdc6
jmp 0x1004fe0b
mov edx, dword [esp + 0x2c0]
sub edx, edi
lea ebx, [edx + eax - 1]
test ebx, ebx
jl 0x1004fe0b
lea edx, [ebx + 1]
mov dword [esp], edx
cmp ebx, 0x60
jle 0x1004fe49
push dword [esp]
push 0x30
push edi
mov dword [esp + 0x208], eax
call fcn.10061620
mov eax, dword [esp + 0x208]
add esp, 0xc
lea edi, [edi + ebx + 1]
xor edx, edx
jmp 0x1004baa8
mov ecx, 1
jmp 0x1004fcd3
mov edx, dword [ebp + 0x30]
dec eax
add dword [edx], ecx
cmp dword [esp + 0x1b4], 0
je 0x1004fdb7
mov ecx, dword [esp + 0x2c0]
inc ecx
mov edx, dword [ebp + 0x18]
cmp ecx, edx
jl 0x1004fe3d
mov ecx, edx
mov dword [esp + 0x2c0], ecx
jmp 0x1004fdb7
shr edx, 1
je 0x1004fe83
mov dword [esp + 0x330], 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 0x1004fe5d
mov esi, dword [esp + 0x330]
lea ecx, [ecx + ecx + 1]
lea edx, [ecx - 1]
cmp edx, dword [esp]
jae 0x1004fe07
mov byte [edi + ecx - 1], 0x30
jmp 0x1004fe07
mov ecx, 1
jmp 0x1004fe74
mov dword [esp + 4], edx
mov dword [esp + 0x14], esi
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x1fc]
mov esi, dword [esp + 0x330]
test ecx, ecx
je 0x1004fc3c
jmp 0x1004fc60
mov dword [esp + 4], 0
jmp 0x1004fc60
mov edi, ecx
mov dword [esp + 8], edx
mov eax, dword [ebp + 0x18]
mov edx, dword [esp + 0x2bc]
cmp eax, edx
jl 0x1004fed4
mov eax, edx
sar edi, 1
shr edi, 0x1e
mov edx, dword [esp + 0x10]
lea edi, [edi + edx - 0x3ffe]
mov edx, dword [esp + 8]
sar edi, 2
add edi, eax
shl eax, 2
neg eax
mov dword [esp + 0x2c0], edi
mov dword [esp], eax
cmp ecx, eax
jge 0x1004bf18
cmp dword [esp + 0x2c0], 0
jns 0x1004bf18
mov ecx, dword [esp + 0x2a4]
shr ecx, 0x1c
and ecx, 0xfffffff8
add ecx, 4
mov eax, dword [esp + 0x22c]
shr eax, cl
add dword [esp], 4
test al, 1
je 0x1004b9e3
lea eax, [esi + 1]
mov edi, dword [ebp + 0x30]
mov edx, dword [esp]
mov byte [esi], 0x31
mov dword [edi], edx
mov edi, eax
xor edx, edx
mov eax, esi
jmp 0x1004baa8
cmp dword [esp + 0x194], 0
jne 0x1004ff84
cmp dword [esp + 0x190], 0
je 0x1004ff6e
cmp dword [esp + 0x2c0], 0
js 0x1004ff84
cmp dword [esp + 0x228], 0
jne 0x1004ff97
mov eax, edx
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
jmp 0x1004c282
mov eax, edx
mov edx, dword [ebp + 0x30]
mov esi, dword [esp + 0x330]
mov dword [edx], eax
jmp 0x1004b9e3
mov ecx, dword [esp + 0x2a4]
add ecx, 4
mov edx, dword [esp + 0x22c]
shr edx, cl
mov eax, dword [esp + 0x1fc]
mov esi, dword [esp + 0x330]
test dl, 1
je 0x1004ffd5
mov edi, dword [esp + 0x2bc]
xor edx, edx
test edi, edi
sete dl
sub edx, edi
mov dword [esp], edx
jmp 0x1004ff3a
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x19c]
mov dword [edx], eax
jmp 0x1004b9e3
lea edi, [esp + 0x87c]
jmp 0x1004f021
mov edx, 1
jmp 0x1004cb8a
mov edi, 1
jmp 0x1004c96a
mov esi, 8
lea edi, [esp + 0x87c]
jmp 0x1004c80b
mov ecx, eax
neg ecx
mov esi, ecx
sar esi, 3
movzx edx, word [esi*2 + 0x102166a0]
lea edi, [esi + 1]
shr edx, 5
cmp edx, ecx
jl 0x10050034
mov edi, esi
movzx edx, word [edi*2 + 0x102166a0]
mov esi, edx
and esi, 0x1f
shr edx, 5
add edx, eax
movsx eax, word [esi*2 + 0x102167fa]
mov ecx, dword [esi*8 + 0x10216624]
mov dword [esp + 0x138], eax
mov dword [esp + 0x7f8], ecx
mov eax, dword [esi*8 + 0x10216620]
jmp 0x1004c7b8
mov edx, 1
jmp 0x1004d472
mov edx, 1
jmp 0x1004d34a
mov edx, 1
jmp 0x1004d103
mov edx, 1
jmp 0x1004dbbe
mov edx, 1
jmp 0x1004dab4
mov edx, 1
jmp 0x1004d88d
lea edi, [esp + 0x884]
jmp 0x1004eaa3
mov eax, 1
jmp 0x1004cc95
mov ebx, 1
jmp 0x1004f4be
mov ecx, 1
jmp 0x1004f790
mov edx, dword [esp + 0x2a4]
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 ecx, 1
mov esi, dword [esp + 0x330]
and edx, 1
mov dword [esp + 0x1c], 0x39
mov dword [esp + 0x18], ecx
jmp 0x1004fd75
mov ecx, 1
mov edx, dword [esp + 0x208]
mov eax, dword [esp + 0x1fc]
mov edi, dword [esp + 0x200]
mov esi, dword [esp + 0x330]
mov dword [esp + 0x1c], 0x39
mov dword [esp + 0x18], ecx
jmp 0x1004fd75
xor edx, edx
cmp dword [esp + 0x308], 0
setge dl
mov dword [esp + 0x218], edx
jmp 0x1004fb45
mov dword [esp + 0x180], 1
jmp 0x1004fab0
mov ecx, 1
jmp 0x1004f5df
lea edx, [esp + edi*4 + 0x834]
mov dword [esp + 0x1ec], edx
jmp 0x1004f449
mov ebx, 1
jmp 0x1004f3d5
mov edx, 1
jmp 0x1004f1e8
mov eax, 1
jmp 0x1004ef71
mov eax, 1
jmp 0x1004ee73
mov edx, 1
jmp 0x1004ec3a
mov edi, 1
jmp 0x1004e9d4
mov eax, 1
jmp 0x1004e8f2
mov edx, 1
jmp 0x1004e6e2
mov eax, 1
jmp 0x1004e456
mov eax, 1
jmp 0x1004e33c
mov edx, 1
jmp 0x1004e104
lea edi, [esp + 0x87c]
jmp 0x1004df2a
mov edi, 0x1b
jmp 0x1004dee5
xor eax, eax
mov dword [esp + 0x77c], eax
mov dword [esp + 0x778], eax
jmp 0x1004dee5
movsx edx, word [0x10216242]
xor eax, eax
mov dword [esp + 0x77c], eax
mov dword [esp + 0x778], eax
mov dword [esp + 0x1e0], edx
mov esi, dword [0x102160cc]
mov edi, dword [0x102160c8]
mov eax, dword [0x102160c4]
mov edx, dword [0x102160c0]
mov dword [esp + 0x878], esi
mov esi, 4
mov dword [esp + 0x87c], edi
lea edi, [esp + 0x884]
mov dword [edi - 4], eax
mov dword [edi], edx
jmp 0x1004e53e
mov edx, edi
neg edx
mov esi, edx
sar esi, 3
mov dword [esp + 0x23c], 4
movzx ecx, word [esi*2 + 0x10215fe0]
lea eax, [esi + 1]
shr ecx, 5
cmp ecx, edx
jl 0x100502b0
mov eax, esi
movzx ecx, word [eax*2 + 0x10215fe0]
mov eax, ecx
and eax, 0x1f
shr ecx, 5
add edi, ecx
movsx ecx, word [eax*2 + 0x10216226]
shl eax, 4
mov edx, dword [eax + 0x10215f4c]
mov dword [esp + 0x7f8], edx
mov esi, dword [eax + 0x10215f48]
mov edx, dword [eax + 0x10215f44]
mov eax, dword [eax + 0x10215f40]
mov dword [esp + 0x7fc], esi
mov dword [esp + 0x800], edx
mov dword [esp + 0x804], eax
jmp 0x1004de72
mov dword [esp + 0x844], eax
mov dword [esp + 0x840], eax
mov dword [esp + 0x83c], eax
mov dword [esp + 0x838], eax
jmp 0x1004ba40