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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x8b0
mov eax, dword [0x4b9170]
mov ecx, dword [ebp + 0x18]
xor eax, ebp
cmp ecx, 0x10000
mov dword [esp + 0x8a8], eax
jb 0x409ce5
mov eax, ecx
cmp ecx, 0x1000000
jb 0x409cfe
shr eax, 0x18
mov eax, dword [eax*4 + 0x49e59c]
add eax, 0x18
jmp 0x409d17
test ecx, 0xff00
je 0x409d0d
mov eax, ecx
shr eax, 8
mov eax, dword [eax*4 + 0x49e59c]
add eax, 8
jmp 0x409d17
shr eax, 0x10
mov eax, dword [eax*4 + 0x49e59c]
add eax, 0x10
jmp 0x409d17
movzx eax, cl
mov eax, dword [eax*4 + 0x49e59c]
mov edx, ecx
mov ecx, dword [ebp + 0x14]
neg edx
mov dword [esp + 0x8c], edx
mov esi, ecx
mov edi, ecx
mov ecx, dword [ebp + 0x10]
shr esi, 0x12
and edi, 0x3ffff
mov dword [esp + 0x88], esi
mov dword [esp + 0x84], edi
mov ecx, dword [ecx]
mov ecx, dword [ecx + esi*4]
cmp dword [ecx + edi*4], edx
jle 0x40cdde
add eax, eax
mov ecx, 0x55555556
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x1c]
mov edi, dword [ebp + 8]
imul ecx
mov ecx, dword [ebp + 0x14]
mov eax, edx
shr eax, 0x1f
add eax, edx
add esi, ebx
mov edx, eax
mov eax, ecx
not eax
mov dword [esp + 0x64], eax
mov eax, ecx
neg eax
mov dword [esp + 0x94], eax
lea eax, [ecx + 1]
mov dword [esp + 0x90], eax
mov eax, dword [ebp + 0x18]
add ecx, eax
mov dword [esp + 0x4c], eax
mov eax, esi
mov dword [esp + 0x80], ecx
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x70], eax
sub eax, ebx
mov dword [esp + 0x48], eax
xor eax, eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x10], edx
xor eax, eax
mov edx, ecx
mov ecx, edx
mov esi, edx
mov ebx, edx
mov edx, dword [ebp + 0x10]
shr ecx, 0x12
and esi, 0x3ffff
mov edx, dword [edx]
mov ecx, dword [edx + ecx*4]
mov ecx, dword [ecx + esi*4]
test ecx, ecx
js 0x409ebc
test eax, eax
je 0x409df8
lea esi, [eax + ebx]
mov edi, esi
and esi, 0x3ffff
shr edi, 0x12
mov edx, dword [edx + edi*4]
mov edi, dword [ebp + 8]
mov dword [edx + esi*4], eax
add ecx, dword [ebp + 0xc]
mov edx, dword [edi]
mov eax, ecx
and ecx, 0x3ffff
shr eax, 0x12
mov eax, dword [edx + eax*4]
mov edx, dword [eax + ecx*4]
add edx, dword [esp + 0x90]
mov ecx, edx
sub ecx, ebx
cmp ecx, 2
jl 0x409ec4
mov esi, ecx
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ebx
push 0x800
push 0xff
lea eax, [esp + 0xb0]
push eax
call fcn.0047b380
add esp, 0xc
mov eax, 0xfffff800
xor ecx, ecx
mov dword [esp + eax + 0x8ac], ecx
mov dword [esp + eax + 0x8a8], ecx
mov dword [esp + eax + 0x8b4], ecx
mov dword [esp + eax + 0x8b0], ecx
mov dword [esp + eax + 0x8bc], ecx
mov dword [esp + eax + 0x8b8], ecx
add eax, 0x20
jne 0x409e4d
mov edx, dword [esp + 0x10]
mov eax, esi
cmp esi, 0x10000
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x9c], ecx
jb 0x409ed6
cmp eax, 0x1000000
jb 0x409eec
shr eax, 0x18
mov eax, dword [eax*4 + 0x49e59c]
add eax, 0x18
jmp 0x409f05
sub ebx, ecx
add eax, ecx
mov edx, ebx
jmp 0x409ece
xor eax, eax
cmp ecx, 1
sete al
neg eax
mov ebx, dword [ebp + 0xc]
jmp 0x40cd3c
test eax, 0xff00
je 0x409efb
shr eax, 8
mov eax, dword [eax*4 + 0x49e59c]
add eax, 8
jmp 0x409f05
shr eax, 0x10
mov eax, dword [eax*4 + 0x49e59c]
add eax, 0x10
jmp 0x409f05
movzx eax, al
mov eax, dword [eax*4 + 0x49e59c]
mov ecx, dword [esp + 0x78]
mov esi, dword [ebp + 0x10]
mov edi, dword [esp + 0x7c]
mov ebx, dword [esp + 0x70]
mov dword [esp], eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x14], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x18], ecx
xor ecx, ecx
dec ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp]
test ecx, ecx
mov dword [esp + 0x10], edx
mov dword [esp + 4], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x1c], edi
js 0x40a10b
mov eax, dword [esp + 0x14]
mov dword [esp], ecx
mov esi, edi
mov ebx, 0x3ffff
mov ecx, eax
sub ecx, edi
shr edi, 0x12
mov dword [esp + 0x58], edi
mov edi, esi
mov dword [esp + 0x68], ecx
and edi, ebx
cmp ecx, 9
mov dword [esp + 0x60], edi
mov edi, esi
lea esi, [esi + 1]
jge 0x40a1ba
cmp esi, eax
jae 0x40a335
mov ecx, esi
mov esi, dword [esp + 0xc]
mov eax, edi
mov edx, ecx
mov edi, 0x3ffff
shr ecx, 0x12
mov dword [esp + 0x30], edx
and edx, edi
mov edi, dword [esi]
mov esi, 0x3ffff
mov ecx, dword [edi + ecx*4]
mov ebx, dword [ecx + edx*4]
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and edx, esi
mov esi, 0x3ffff
mov ecx, dword [edi + ecx*4]
mov dword [esp + 0x28], ebx
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 4]
add edx, dword [esp + 4]
add ebx, ecx
mov ecx, ebx
and ebx, esi
shr ecx, 0x12
mov dword [esp + 8], ecx
mov esi, edx
shr esi, 0x12
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
mov esi, dword [esi]
mov dword [esp], esi
mov esi, dword [esp]
mov esi, dword [esi + ecx*4]
mov ecx, dword [esp + 8]
mov dword [esp + 0x34], esi
mov esi, dword [esp]
mov dword [esp], ebx
mov ecx, dword [esi + ecx*4]
mov esi, 0x3ffff
and edx, esi
mov esi, dword [esp + 0x34]
mov ecx, dword [ecx + ebx*4]
sub ecx, dword [esi + edx*4]
jns 0x40a0b2
mov dword [esp + 0x34], ecx
mov edx, eax
shr eax, 0x12
mov ecx, 0x3ffff
mov eax, dword [edi + eax*4]
mov esi, edx
and esi, ecx
mov eax, dword [eax + esi*4]
lea esi, [edx + 1]
mov ebx, esi
and esi, ecx
shr ebx, 0x12
mov edi, dword [edi + ebx*4]
mov dword [edi + esi*4], eax
lea eax, [edx - 1]
cmp eax, dword [esp + 0x1c]
jb 0x40a0ab
mov ecx, dword [esp + 0xc]
mov esi, eax
mov ebx, eax
shr esi, 0x12
and ebx, 0x3ffff
mov edi, dword [ecx]
mov esi, dword [edi + esi*4]
mov ebx, dword [esi + ebx*4]
test ebx, ebx
js 0x40a02d
mov ecx, dword [esp + 0x18]
add ebx, dword [esp + 4]
mov ecx, dword [ecx]
mov esi, ebx
and ebx, 0x3ffff
shr esi, 0x12
mov esi, dword [ecx + esi*4]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 8]
mov ecx, dword [ecx + esi*4]
mov esi, dword [esp]
mov ecx, dword [ecx + esi*4]
mov esi, dword [esp + 0x34]
sub ecx, dword [esi + ebx*4]
js 0x40a029
jmp 0x40a0af
mov ecx, dword [esp + 0x34]
dec edx
mov eax, edx
test ecx, ecx
jne 0x40a0cf
mov esi, dword [esp + 0xc]
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and edx, 0x3ffff
mov esi, dword [esi]
mov ecx, dword [esi + ecx*4]
not dword [ecx + edx*4]
mov esi, dword [esp + 0xc]
inc eax
mov edi, dword [esp + 0x28]
mov ecx, eax
and eax, 0x3ffff
shr ecx, 0x12
mov edx, dword [esi]
mov ecx, dword [edx + ecx*4]
mov dword [ecx + eax*4], edi
mov eax, dword [esp + 0x30]
lea ecx, [eax + 1]
cmp ecx, dword [esp + 0x14]
jne 0x409f9b
mov ebx, dword [ebp + 0xc]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
jmp 0x40b9bb
cmp ecx, 0xfffffffe
je 0x40a341
cmp ecx, 0xffffffff
jne 0x40a3e5
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x14]
mov edx, ebx
mov ebx, edi
mov edi, esi
sub edx, dword [esp + 0x48]
add eax, ecx
mov esi, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x34], edx
push eax
lea eax, [esp + 0x9c]
push eax
lea eax, [esp + 0xa8]
push eax
push esi
push dword [esp + 0x3c]
push ebx
push edi
push ebx
push edi
call fcn.0040cdf4
add esp, 0x24
mov eax, dword [esp + 0xa4]
cmp eax, esi
jae 0x40ac67
cmp ebx, eax
jae 0x40ac67
add eax, dword [esp + 0x64]
mov edx, ebx
mov edi, dword [esp + 0xc]
mov ecx, edx
mov esi, edx
mov ebx, 0x3ffff
inc edx
shr ecx, 0x12
and esi, ebx
mov edi, dword [edi]
mov ecx, dword [edi + ecx*4]
mov edi, dword [ebp + 8]
mov ecx, dword [ecx + esi*4]
mov edi, dword [edi]
add ecx, dword [ebp + 0xc]
mov esi, ecx
and ecx, ebx
shr esi, 0x12
mov esi, dword [edi + esi*4]
mov dword [esi + ecx*4], eax
mov ecx, dword [esp + 0xa4]
cmp edx, ecx
jb 0x40a17a
jmp 0x40ac69
dec eax
mov dword [esp + 0x30], esi
mov esi, eax
mov edx, eax
mov dword [esp + 0x34], eax
shr esi, 0x12
and edx, ebx
cmp dword [esp], 0
je 0x40a3ff
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x24], esi
mov dword [esp + 0x50], edx
mov eax, ecx
shr eax, 1
add eax, edi
cmp ecx, 0x200
mov dword [esp + 0x40], eax
jg 0x40a7b8
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 4]
cmp ecx, 0x20
jg 0x40aece
mov ecx, dword [esi]
mov eax, dword [esp + 0x58]
mov edx, 0x3ffff
mov edi, 0x3ffff
mov dword [esp + 8], ecx
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x60]
mov eax, dword [eax + ecx*4]
add eax, ebx
mov ecx, eax
and eax, edx
mov edx, dword [esp + 0x18]
shr ecx, 0x12
mov edx, dword [edx]
mov ecx, dword [edx + ecx*4]
mov esi, edx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x40]
mov eax, dword [ecx + eax*4]
mov ecx, edx
shr ecx, 0x12
mov dword [esp + 0x38], eax
mov eax, edx
and eax, edi
mov edi, dword [esp + 8]
mov ecx, dword [edi + ecx*4]
mov edi, 0x3ffff
mov eax, dword [ecx + eax*4]
add eax, ebx
mov ecx, eax
and eax, edi
mov edi, dword [esp + 0x38]
shr ecx, 0x12
mov ecx, dword [esi + ecx*4]
mov esi, 0x3ffff
cmp edi, dword [ecx + eax*4]
mov eax, dword [esp + 0x1c]
mov ecx, edx
mov edi, 0x3ffff
cmovle edx, eax
cmovg ecx, eax
mov dword [esp + 0x40], edx
mov edx, ebx
mov ebx, ecx
mov eax, ecx
and ebx, edi
mov edi, dword [esp + 8]
shr eax, 0x12
mov eax, dword [edi + eax*4]
mov edi, dword [eax + ebx*4]
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x24]
mov eax, dword [eax]
add edi, edx
mov eax, dword [eax + ebx*4]
mov ebx, dword [esp + 0x50]
mov eax, dword [eax + ebx*4]
add eax, edx
mov edx, dword [esp + 0xc]
mov ebx, eax
and eax, esi
mov esi, dword [esp + 0x28]
shr ebx, 0x12
mov ebx, dword [esi + ebx*4]
mov eax, dword [ebx + eax*4]
mov ebx, edi
shr ebx, 0x12
mov ebx, dword [esi + ebx*4]
mov dword [esp + 0x24], eax
mov eax, 0x3ffff
and edi, eax
mov eax, dword [esp + 0x24]
cmp dword [ebx + edi*4], eax
mov edi, edx
jle 0x40b1db
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 8]
mov esi, 0x3ffff
mov ecx, ebx
and ebx, esi
mov esi, dword [esp + 0x28]
shr ecx, 0x12
mov ecx, dword [edi + ecx*4]
mov ecx, dword [ecx + ebx*4]
add ecx, dword [esp + 4]
mov edi, ecx
shr edi, 0x12
mov edi, dword [esi + edi*4]
mov esi, 0x3ffff
and ecx, esi
cmp dword [edi + ecx*4], eax
mov ecx, dword [esp + 0x34]
cmovg ecx, dword [esp + 0x40]
jmp 0x40ac5b
mov ebx, dword [ebp + 0xc]
mov esi, dword [esp + 0xc]
jmp 0x40b9bb
mov eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x50], eax
shl eax, 5
mov edx, dword [esp + eax + 0xb0]
mov ebx, dword [esp + eax + 0xbc]
mov ecx, dword [esp + eax + 0xb4]
cmp dword [esp + eax + 0xc0], 0
mov dword [esp + 0x30], edx
mov dword [esp + 0xa0], edx
mov edx, dword [esp + eax + 0xb8]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x40], edx
mov dword [esp + 0x98], edx
je 0x40b395
mov eax, dword [esp + 0x3c]
mov edx, ecx
mov ecx, dword [esp + 4]
test eax, eax
js 0x40a3bb
shl eax, 5
mov dword [esp + eax + 0xc0], 0xffffffff
mov eax, dword [esp + 0x64]
mov ebx, dword [esp + 0x18]
sub ecx, dword [ebp + 0xc]
dec edx
add eax, ebx
mov dword [esp + 4], ecx
mov dword [esp + 0x28], eax
xor eax, eax
dec eax
cmp edx, edi
jae 0x40b3e2
mov dword [esp + 8], eax
jmp 0x40b4c3
mov eax, edi
mov ecx, edi
shr eax, 0x12
and ecx, 0x3ffff
mov dword [esp + 0x58], eax
mov dword [esp + 0x60], ecx
jmp 0x40b9b8
mov ecx, dword [esp + 0x68]
test cl, 1
mov ebx, ecx
jne 0x40a4b9
lea eax, [ecx - 1]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0xc]
mov dword [esp + 8], eax
shr eax, 0x1f
lea eax, [ecx + eax - 1]
sar eax, 1
add eax, edi
mov edi, 0x3ffff
mov ecx, eax
and eax, edi
mov edi, dword [esi]
mov esi, edx
shr ecx, 0x12
mov dword [esp + 0x50], esi
mov edx, dword [edi + ecx*4]
mov dword [esp + 0x30], edi
mov edi, dword [edx + eax*4]
mov edx, dword [esp + 4]
mov dword [esp + 0x28], edi
add edi, edx
mov edx, 0x3ffff
mov ebx, edi
and edi, edx
mov edx, dword [esp + 0x18]
shr ebx, 0x12
mov edx, dword [edx]
mov ebx, dword [edx + ebx*4]
mov edi, dword [ebx + edi*4]
mov ebx, dword [esp + 0x30]
mov dword [esp], edi
mov edi, dword [esp + 0x24]
mov edi, dword [ebx + edi*4]
mov ebx, dword [esp + 4]
mov esi, dword [edi + esi*4]
add ebx, esi
mov dword [esp + 0x30], esi
mov esi, ebx
shr esi, 0x12
mov edx, dword [edx + esi*4]
mov esi, 0x3ffff
and ebx, esi
mov esi, dword [esp]
cmp esi, dword [edx + ebx*4]
jge 0x40a4b5
mov edx, dword [esp + 0x50]
mov esi, dword [esp + 0x28]
mov dword [edi + edx*4], esi
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x30]
mov edx, dword [edx]
mov ecx, dword [edx + ecx*4]
mov dword [ecx + eax*4], esi
mov ebx, dword [esp + 8]
mov edi, ebx
mov dword [esp + 8], ebx
shr edi, 1
mov eax, dword [esp + 0x1c]
lea edx, [edi + edi - 1]
mov dword [esp + 0x40], edi
lea esi, [edi + eax - 1]
mov eax, 0x3ffff
dec edi
mov ecx, esi
and esi, eax
mov eax, dword [esp + 0xc]
shr ecx, 0x12
cmp edx, ebx
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + esi*4]
mov dword [esp + 0x38], eax
jge 0x40a5f9
mov ecx, eax
mov eax, dword [esp + 4]
mov dword [esp + 0x50], edi
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x24]
add eax, ecx
mov ecx, 0x3ffff
mov esi, eax
and eax, ecx
mov ecx, dword [esp + 0x18]
shr esi, 0x12
mov ecx, dword [ecx]
mov esi, dword [ecx + esi*4]
mov dword [esp], ecx
mov eax, dword [esi + eax*4]
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x1c]
mov ecx, 0x3ffff
lea eax, [edx + ebx]
mov esi, eax
and eax, ecx
mov ecx, dword [esp + 4]
shr esi, 0x12
mov esi, dword [edi + esi*4]
mov eax, dword [esi + eax*4]
add eax, ecx
mov ecx, 0x3ffff
mov esi, eax
and eax, ecx
mov ecx, dword [esp]
shr esi, 0x12
mov esi, dword [ecx + esi*4]
mov esi, dword [esi + eax*4]
lea eax, [edx + ebx + 1]
mov ebx, 0x3ffff
mov ecx, eax
and eax, ebx
mov ebx, dword [esp]
shr ecx, 0x12
mov ecx, dword [edi + ecx*4]
mov eax, dword [ecx + eax*4]
add eax, dword [esp + 4]
mov ecx, eax
shr ecx, 0x12
mov ecx, dword [ebx + ecx*4]
mov ebx, 0x3ffff
and eax, ebx
mov ecx, dword [ecx + eax*4]
lea eax, [edx + 1]
cmp esi, ecx
cmovl esi, ecx
cmovge eax, edx
cmp esi, dword [esp + 0x28]
jle 0x40a5ff
mov edx, dword [esp + 0x1c]
mov ecx, 0x3ffff
lea esi, [eax + edx]
mov ebx, esi
and esi, ecx
mov ecx, dword [esp + 0x30]
shr ebx, 0x12
mov dword [esp], ebx
mov ebx, dword [edi + ebx*4]
add ecx, edx
mov edx, ecx
shr edx, 0x12
mov ebx, dword [ebx + esi*4]
mov edx, dword [edi + edx*4]
mov edi, 0x3ffff
and ecx, edi
mov edi, dword [esp + 0xc]
mov dword [edx + ecx*4], ebx
mov ebx, dword [esp + 8]
lea edx, [eax + eax + 1]
mov edi, dword [edi]
cmp edx, ebx
jge 0x40a624
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x30], eax
mov ecx, dword [ecx]
mov dword [esp], ecx
jmp 0x40a52d
mov edx, dword [esp + 0x40]
jmp 0x40a633
mov esi, dword [esp + 0x30]
mov dword [esp + 0x24], edi
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x50]
add esi, dword [esp + 0x1c]
mov ecx, esi
and esi, 0x3ffff
shr ecx, 0x12
jmp 0x40a633
mov dword [esp + 0x24], edi
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp]
mov eax, dword [esp + 0x24]
cmp edx, 1
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x38]
mov dword [eax + esi*4], ecx
jg 0x40a4c1
test byte [esp + 0x68], 1
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
jne 0x40b6e5
mov eax, dword [esi]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 8]
mov dword [esp + 0x28], 0
mov edx, dword [eax + ecx*4]
mov ecx, dword [esp + 0x60]
add esi, edi
mov edi, esi
shr edi, 0x12
mov eax, dword [eax + edi*4]
mov ebx, dword [edx + ecx*4]
mov dword [esp], ebx
mov ebx, 0x3ffff
and esi, ebx
mov ebx, dword [esp]
mov eax, dword [eax + esi*4]
mov dword [edx + ecx*4], eax
mov edx, dword [esp + 0xc]
mov eax, dword [edx]
mov eax, dword [eax + edi*4]
mov dword [eax + esi*4], ebx
mov eax, dword [esp + 0x58]
mov ebx, dword [edx]
mov eax, dword [ebx + eax*4]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esp + 4]
lea eax, [ecx + eax]
mov dword [esp + 0x38], ecx
mov ecx, 0x3ffff
mov edx, eax
and eax, ecx
mov ecx, dword [esp + 0x18]
shr edx, 0x12
xor esi, esi
inc esi
mov ecx, dword [ecx]
mov edx, dword [ecx + edx*4]
mov dword [esp], ecx
mov eax, dword [edx + eax*4]
mov dword [esp + 0x24], eax
mov edi, dword [esp + 0x1c]
mov ecx, 0x3ffff
mov dword [esp + 0x30], ebx
lea eax, [esi + edi]
mov edx, eax
and eax, ecx
mov ecx, dword [esp + 4]
shr edx, 0x12
mov edx, dword [ebx + edx*4]
mov eax, dword [edx + eax*4]
add eax, ecx
mov ecx, 0x3ffff
mov edx, eax
and eax, ecx
mov ecx, dword [esp]
shr edx, 0x12
mov edx, dword [ecx + edx*4]
mov eax, dword [edx + eax*4]
lea edx, [esi + edi + 1]
mov edi, 0x3ffff
mov ecx, edx
and edx, edi
mov edi, 0x3ffff
shr ecx, 0x12
mov ecx, dword [ebx + ecx*4]
mov ebx, dword [esp]
mov ecx, dword [ecx + edx*4]
add ecx, dword [esp + 4]
mov edx, ecx
and ecx, edi
shr edx, 0x12
mov edx, dword [ebx + edx*4]
mov ecx, dword [edx + ecx*4]
lea edx, [esi + 1]
cmp eax, ecx
cmovl eax, ecx
cmovge edx, esi
cmp eax, dword [esp + 0x24]
jle 0x40b6c0
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x28]
mov edi, 0x3ffff
lea ecx, [edx + esi]
add ebx, esi
mov eax, ecx
and ecx, edi
mov edi, dword [esp + 0x30]
mov esi, ebx
shr esi, 0x12
shr eax, 0x12
mov esi, dword [edi + esi*4]
mov edi, dword [edi + eax*4]
mov dword [esp], esi
mov esi, 0x3ffff
mov edi, dword [edi + ecx*4]
and ebx, esi
mov esi, dword [esp]
mov dword [esi + ebx*4], edi
mov ebx, dword [esp + 0xc]
lea esi, [edx + edx + 1]
cmp esi, dword [esp + 8]
mov ebx, dword [ebx]
jge 0x40b6d7
mov eax, dword [esp + 0x18]
mov dword [esp + 0x28], edx
mov eax, dword [eax]
mov dword [esp], eax
jmp 0x40a6db
mov eax, dword [esp + 0xc]
mov ebx, ecx
mov edx, 0x3ffff
shr ebx, 3
mov ecx, dword [eax]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x28], ecx
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x60]
mov eax, dword [eax + ecx*4]
add eax, dword [esp + 4]
mov ecx, eax
and eax, edx
mov edx, dword [esp + 0x18]
shr ecx, 0x12
mov edx, dword [edx]
mov ecx, dword [edx + ecx*4]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x28]
mov eax, dword [ecx + eax*4]
lea ecx, [ebx + edi]
mov esi, ecx
mov edi, ecx
shr esi, 0x12
mov esi, dword [edx + esi*4]
mov dword [esp + 0x38], eax
mov eax, 0x3ffff
and edi, eax
mov esi, dword [esi + edi*4]
add esi, dword [esp + 4]
mov edi, esi
and esi, eax
mov eax, dword [esp + 8]
shr edi, 0x12
mov edi, dword [eax + edi*4]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x38], ebx
cmp eax, dword [edi + esi*4]
mov eax, dword [esp + 0x1c]
mov esi, ecx
cmovg esi, eax
cmovle ecx, eax
mov eax, esi
mov dword [esp + 0x6c], ecx
mov ecx, 0x3ffff
mov dword [esp + 0x5c], esi
shr eax, 0x12
and esi, ecx
mov ecx, 0x3ffff
mov eax, dword [edx + eax*4]
mov edi, dword [eax + esi*4]
mov eax, dword [esp + 0x1c]
lea ebx, [eax + ebx*2]
mov eax, dword [esp + 4]
mov esi, ebx
mov dword [esp + 0x54], ebx
and ebx, ecx
mov ecx, edx
shr esi, 0x12
mov esi, dword [edx + esi*4]
mov edx, 0x3ffff
add edi, eax
mov esi, dword [esi + ebx*4]
add esi, eax
mov eax, 0x3ffff
mov ebx, esi
and esi, edx
mov edx, dword [esp + 8]
shr ebx, 0x12
mov ebx, dword [edx + ebx*4]
mov esi, dword [ebx + esi*4]
mov ebx, edi
and edi, eax
mov eax, edx
mov edx, ecx
shr ebx, 0x12
mov ebx, dword [eax + ebx*4]
cmp dword [ebx + edi*4], esi
jle 0x40a8ee
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x28]
mov eax, esi
mov esi, 0x3ffff
mov edi, ecx
mov ebx, ecx
shr edi, 0x12
and ebx, esi
mov edi, dword [edx + edi*4]
mov edx, dword [esp + 0x28]
mov edi, dword [edi + ebx*4]
add edi, dword [esp + 4]
mov ebx, edi
and edi, esi
mov esi, dword [esp + 8]
shr ebx, 0x12
mov ebx, dword [esi + ebx*4]
mov esi, dword [esp + 0x54]
cmp dword [ebx + edi*4], eax
cmovg esi, ecx
mov dword [esp + 0x5c], esi
mov edi, dword [esp + 0x40]
mov esi, 0x3ffff
mov ecx, edi
sub ecx, dword [esp + 0x38]
mov eax, ecx
mov ebx, ecx
shr eax, 0x12
and ebx, esi
mov eax, dword [edx + eax*4]
mov eax, dword [eax + ebx*4]
mov ebx, 0x3ffff
add eax, dword [esp + 4]
mov esi, eax
and eax, ebx
mov ebx, dword [esp + 8]
shr esi, 0x12
mov esi, dword [ebx + esi*4]
mov ebx, edi
shr ebx, 0x12
mov eax, dword [esi + eax*4]
mov esi, 0x3ffff
mov dword [esp + 0x54], eax
mov eax, edx
mov edx, edi
and edx, esi
mov esi, dword [eax + ebx*4]
mov ebx, dword [esp + 8]
mov eax, 0x3ffff
mov edx, dword [esi + edx*4]
add edx, dword [esp + 4]
mov esi, edx
and edx, eax
mov eax, dword [esp + 0x54]
shr esi, 0x12
mov esi, dword [ebx + esi*4]
mov ebx, edi
cmp eax, dword [esi + edx*4]
mov eax, dword [esp + 0x38]
mov edx, 0x3ffff
cmovg ebx, ecx
cmovg ecx, edi
add edi, eax
mov eax, ebx
mov dword [esp + 0x54], ebx
and ebx, edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x40], edi
shr eax, 0x12
mov eax, dword [edx + eax*4]
mov esi, dword [eax + ebx*4]
mov eax, edi
mov ebx, 0x3ffff
shr eax, 0x12
and edi, ebx
mov ebx, dword [esp + 4]
mov eax, dword [edx + eax*4]
mov edx, 0x3ffff
add esi, ebx
mov eax, dword [eax + edi*4]
add eax, ebx
mov ebx, 0x3ffff
mov edi, eax
and eax, edx
mov edx, dword [esp + 8]
shr edi, 0x12
mov edi, dword [edx + edi*4]
mov eax, dword [edi + eax*4]
mov edi, esi
and esi, ebx
mov ebx, dword [esp + 4]
shr edi, 0x12
mov edi, dword [edx + edi*4]
mov dword [esp + 0x6c], eax
cmp dword [edi + esi*4], eax
mov eax, dword [esp + 0x38]
lea edx, [eax + eax]
jle 0x40aa1b
mov edi, dword [esp + 0x28]
mov ebx, ecx
mov eax, ecx
mov esi, 0x3ffff
shr ebx, 0x12
and eax, esi
mov edi, dword [edi + ebx*4]
mov ebx, dword [esp + 4]
mov eax, dword [edi + eax*4]
add eax, ebx
mov edi, eax
and eax, esi
mov esi, dword [esp + 8]
shr edi, 0x12
mov edi, dword [esi + edi*4]
mov esi, dword [esp + 0x6c]
cmp dword [edi + eax*4], esi
mov esi, dword [esp + 0x40]
cmovg esi, ecx
mov dword [esp + 0x54], esi
mov ecx, dword [esp + 0x34]
mov edi, 0x3ffff
mov eax, ecx
sub ecx, edx
mov esi, ecx
mov edx, ecx
sub eax, dword [esp + 0x38]
and esi, edi
mov edi, dword [esp + 0x2c]
shr edx, 0x12
mov dword [esp + 0x40], eax
mov eax, 0x3ffff
mov edi, dword [edi]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x38], edi
mov edx, dword [edx + esi*4]
add edx, ebx
mov ebx, dword [esp + 0x40]
mov esi, edx
and edx, eax
mov eax, dword [esp + 8]
shr esi, 0x12
mov esi, dword [eax + esi*4]
mov eax, dword [esi + edx*4]
mov esi, ebx
mov edx, 0x3ffff
shr esi, 0x12
and ebx, edx
mov edx, 0x3ffff
mov esi, dword [edi + esi*4]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x6c]
mov esi, dword [esi + ebx*4]
add esi, dword [esp + 4]
mov ebx, esi
and esi, edx
mov edx, dword [esp + 8]
shr ebx, 0x12
mov ebx, dword [edx + ebx*4]
cmp eax, dword [ebx + esi*4]
mov eax, dword [esp + 0x40]
mov ebx, eax
cmovg ebx, ecx
cmovg ecx, eax
mov eax, ebx
mov dword [esp + 0x40], ecx
mov esi, ebx
mov ecx, 0x3ffff
shr eax, 0x12
and esi, ecx
mov ecx, dword [esp + 4]
mov eax, dword [edi + eax*4]
mov edi, 0x3ffff
mov eax, dword [eax + esi*4]
add eax, ecx
mov esi, eax
and eax, edi
shr esi, 0x12
mov esi, dword [edx + esi*4]
mov edx, dword [esp + 0x38]
mov edi, dword [esi + eax*4]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x50]
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 8]
mov dword [esp + 0x24], edi
mov eax, dword [eax + esi*4]
add eax, ecx
mov ecx, 0x3ffff
mov esi, eax
and eax, ecx
shr esi, 0x12
mov esi, dword [edx + esi*4]
mov eax, dword [esi + eax*4]
cmp edi, eax
jle 0x40ab6e
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x38]
mov edi, 0x3ffff
mov edx, ecx
mov esi, ecx
shr edx, 0x12
and esi, edi
mov edx, dword [ebx + edx*4]
mov ebx, dword [esp + 4]
mov edx, dword [edx + esi*4]
add edx, ebx
mov esi, edx
and edx, edi
mov edi, dword [esp + 8]
shr esi, 0x12
mov esi, dword [edi + esi*4]
cmp dword [esi + edx*4], eax
mov edx, dword [esp + 0x34]
mov esi, 0x3ffff
cmovg edx, ecx
mov ecx, dword [esp + 0x38]
mov eax, edx
shr eax, 0x12
mov eax, dword [ecx + eax*4]
mov ecx, edx
and ecx, esi
mov eax, dword [eax + ecx*4]
add eax, ebx
mov ebx, edx
mov ecx, eax
and eax, esi
shr ecx, 0x12
mov ecx, dword [edi + ecx*4]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x24], eax
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x5c]
mov edx, dword [esp + 0x28]
mov esi, 0x3ffff
mov edi, 0x3ffff
mov eax, ebx
mov ecx, ebx
shr eax, 0x12
and ecx, esi
mov eax, dword [edx + eax*4]
mov eax, dword [eax + ecx*4]
add eax, dword [esp + 4]
mov ecx, eax
and eax, esi
mov esi, dword [esp + 8]
shr ecx, 0x12
mov ecx, dword [esi + ecx*4]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x54]
mov ecx, eax
mov esi, eax
shr ecx, 0x12
and esi, edi
mov edi, 0x3ffff
mov ecx, dword [edx + ecx*4]
mov ecx, dword [ecx + esi*4]
add ecx, dword [esp + 4]
mov esi, ecx
and ecx, edi
mov edi, dword [esp + 8]
shr esi, 0x12
mov esi, dword [edi + esi*4]
mov edi, dword [esp + 0x34]
cmp edi, dword [esi + ecx*4]
mov ecx, eax
mov edi, 0x3ffff
cmovg ecx, ebx
cmovg ebx, eax
mov eax, ecx
mov esi, ecx
shr eax, 0x12
and esi, edi
mov edi, 0x3ffff
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 8]
mov eax, dword [eax + esi*4]
add eax, dword [esp + 4]
mov esi, eax
and eax, edi
shr esi, 0x12
mov esi, dword [edx + esi*4]
mov edx, dword [esp + 0x24]
cmp dword [esi + eax*4], edx
mov edx, dword [esp + 0xc]
mov edi, edx
jle 0x40b1db
mov ecx, dword [esp + 0x28]
mov eax, ebx
mov esi, 0x3ffff
mov edi, dword [esp + 8]
shr eax, 0x12
mov eax, dword [ecx + eax*4]
mov ecx, ebx
and ecx, esi
mov eax, dword [eax + ecx*4]
add eax, dword [esp + 4]
mov ecx, eax
and eax, esi
mov esi, dword [esp + 0x24]
shr ecx, 0x12
mov ecx, dword [edi + ecx*4]
cmp dword [ecx + eax*4], esi
mov ecx, dword [esp + 0x38]
cmovg ecx, ebx
mov edi, dword [esp + 0x2c]
cmovg edi, edx
jmp 0x40b1db
mov ecx, eax
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x9c]
mov eax, ebx
mov dword [esp], esi
sub eax, esi
mov dword [esp + 0x28], eax
jbe 0x40ace9
cmp ecx, esi
jae 0x40ace9
mov edx, dword [esp + 0xa0]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x30], edx
mov edx, dword [ebp + 0xc]
add eax, esi
mov esi, 0x3ffff
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov edi, ecx
mov ebx, ecx
inc ecx
shr edi, 0x12
and ebx, esi
mov eax, dword [eax]
mov eax, dword [eax + edi*4]
mov eax, dword [eax + ebx*4]
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx]
add eax, edx
mov edi, eax
and eax, esi
shr edi, 0x12
cmp dword [esp], ecx
mov edi, dword [ebx + edi*4]
mov ebx, dword [esp + 8]
mov dword [edi + eax*4], ebx
jne 0x40aca2
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp]
jmp 0x40aced
mov edx, dword [esp + 0x20]
mov eax, esi
sub eax, ecx
cmp eax, 2
jl 0x40adbc
mov eax, edx
mov esi, edx
mov edx, dword [esp + 0xa4]
xor edi, edi
shl eax, 5
mov dword [esp + eax + 0xa8], edi
mov dword [esp + eax + 0xac], edi
mov dword [esp + eax + 0xb4], edx
mov edx, dword [esp + 0xa0]
mov dword [esp + eax + 0xb0], edx
mov edx, dword [esp + 0x9c]
mov dword [esp + eax + 0xbc], edx
mov edx, dword [esp + 0x98]
mov dword [esp + eax + 0xb8], edx
mov edx, dword [esp + 0x34]
mov dword [esp + eax + 0xc0], edi
mov dword [esp + eax + 0xc4], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + eax + 0xcc], edx
mov edx, dword [esp + 0x18]
mov dword [esp + eax + 0xc8], edx
mov edx, dword [esp + 0xc]
mov dword [esp + eax + 0xd0], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + eax + 0xd4], edi
mov dword [esp + eax + 0xd8], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + eax + 0xdc], ebx
mov ebx, dword [esp + 4]
mov dword [esp + eax + 0xe0], 0xfffffffe
mov dword [esp + 0x3c], esi
mov dword [esp + eax + 0xe4], edx
lea edx, [esi + 2]
mov dword [esp + 0x20], edx
jmp 0x40adc4
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
mov edx, ecx
sub edx, edi
cmp edx, eax
jle 0x40ae4c
cmp eax, 2
jl 0x40b62e
mov ecx, dword [esp + 0x20]
mov esi, eax
mov eax, dword [esp + 0x18]
shl ecx, 5
cmp edx, 0x10000
mov dword [esp + ecx + 0xa8], eax
mov eax, dword [esp + 0xc]
mov dword [esp + ecx + 0xac], ebx
mov dword [esp + ecx + 0xb0], eax
mov dword [esp + ecx + 0xb4], edi
mov eax, dword [esp + 0xa4]
mov edi, dword [esp + 0xa0]
mov dword [esp + ecx + 0xbc], eax
mov dword [esp + ecx + 0xb8], edi
jb 0x40bf92
cmp edx, 0x1000000
jb 0x40c6d4
shr edx, 0x18
mov edx, dword [edx*4 + 0x49e59c]
add edx, 0x18
jmp 0x40c7f0
cmp edx, 2
jl 0x40b69c
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
shl eax, 5
mov dword [esp + eax + 0xa8], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + eax + 0xac], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + eax + 0xb4], esi
mov esi, dword [esp + 0x98]
cmp ebx, 0x10000
mov dword [esp + eax + 0xb0], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + eax + 0xb8], esi
mov esi, dword [esp + 0x14]
mov dword [esp + eax + 0xbc], esi
jb 0x40bfb0
cmp ebx, 0x1000000
jb 0x40c6e6
shr ebx, 0x18
mov esi, dword [ebx*4 + 0x49e59c]
add esi, 0x18
jmp 0x40c887
mov eax, dword [esp + 0x34]
shr ecx, 2
mov edx, 0x3ffff
sub eax, ecx
add ecx, edi
mov ebx, ecx
mov dword [esp + 0x28], eax
mov eax, ecx
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 4]
and ebx, edx
mov edx, dword [esi]
shr eax, 0x12
mov eax, dword [edx + eax*4]
mov dword [esp + 0x38], edx
mov edx, 0x3ffff
mov eax, dword [eax + ebx*4]
add eax, ecx
mov esi, eax
and eax, edx
mov edx, dword [esp + 0x18]
shr esi, 0x12
mov edx, dword [edx]
mov esi, dword [edx + esi*4]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x40]
mov eax, dword [esi + eax*4]
mov esi, 0x3ffff
mov ebx, edx
shr ebx, 0x12
mov dword [esp + 0x54], eax
mov eax, edx
and eax, esi
mov esi, dword [esp + 0x38]
mov ebx, dword [esi + ebx*4]
mov esi, dword [esp + 0x28]
mov eax, dword [ebx + eax*4]
add eax, ecx
mov ecx, 0x3ffff
mov ebx, eax
and eax, ecx
mov ecx, dword [esp + 8]
shr ebx, 0x12
mov ebx, dword [ecx + ebx*4]
mov ecx, dword [esp + 0x54]
cmp ecx, dword [ebx + eax*4]
mov ecx, dword [esp + 0x5c]
mov ebx, dword [esp + 4]
mov eax, ecx
cmovle ecx, edx
cmovg eax, edx
mov edx, esi
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0x54], eax
mov eax, 0x3ffff
shr edx, 0x12
and esi, eax
mov eax, dword [esp + 0x2c]
mov edi, dword [eax]
mov eax, 0x3ffff
mov edx, dword [edi + edx*4]
mov edx, dword [edx + esi*4]
add edx, ebx
mov esi, edx
and edx, eax
mov eax, dword [esp + 0x24]
shr esi, 0x12
mov esi, dword [ecx + esi*4]
mov edx, dword [esi + edx*4]
mov esi, dword [edi + eax*4]
mov eax, dword [esp + 0x50]
mov esi, dword [esi + eax*4]
add esi, ebx
mov ebx, 0x3ffff
mov eax, esi
and esi, ebx
mov ebx, dword [esp + 0x54]
shr eax, 0x12
mov eax, dword [ecx + eax*4]
cmp edx, dword [eax + esi*4]
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov ecx, eax
cmovle eax, esi
mov dword [esp + 0x28], eax
mov eax, ebx
cmovg ecx, esi
shr eax, 0x12
mov dword [esp + 0x24], ecx
mov ecx, 0x3ffff
mov eax, dword [edx + eax*4]
and ebx, ecx
mov ecx, dword [esp + 4]
mov edx, 0x3ffff
mov eax, dword [eax + ebx*4]
mov ebx, dword [esp + 8]
add eax, ecx
mov esi, eax
and eax, edx
shr esi, 0x12
mov esi, dword [ebx + esi*4]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x24]
mov esi, eax
shr esi, 0x12
mov esi, dword [edi + esi*4]
mov edi, eax
and edi, edx
mov esi, dword [esi + edi*4]
add esi, ecx
mov ecx, dword [esp + 0x34]
mov edi, esi
and esi, edx
shr edi, 0x12
mov edi, dword [ebx + edi*4]
cmp ecx, dword [edi + esi*4]
mov ecx, dword [esp + 0x5c]
mov esi, dword [esp + 4]
cmovg eax, dword [esp + 0x54]
mov ebx, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x28]
cmovg ebx, eax
cmovg eax, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xc]
mov edx, eax
cmovg edx, ecx
cmovg ecx, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x34], edx
mov ecx, dword [ecx + eax*4]
mov eax, dword [esp + 0x60]
mov ecx, dword [ecx + eax*4]
mov eax, 0x3ffff
add ecx, esi
mov edi, ecx
and ecx, eax
mov eax, dword [esp + 8]
shr edi, 0x12
mov edi, dword [eax + edi*4]
mov eax, ebx
shr eax, 0x12
mov ecx, dword [edi + ecx*4]
mov edi, dword [edx]
mov edx, ebx
mov eax, dword [edi + eax*4]
mov edi, 0x3ffff
and edx, edi
mov eax, dword [eax + edx*4]
add eax, esi
mov esi, dword [esp + 8]
mov edx, eax
and eax, edi
shr edx, 0x12
mov edx, dword [esi + edx*4]
mov esi, dword [esp + 0x1c]
cmp ecx, dword [edx + eax*4]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x34]
mov ecx, esi
mov edi, edx
cmovg ecx, ebx
cmovg ebx, esi
mov esi, 0x3ffff
cmovg edi, eax
cmovg eax, edx
mov edx, dword [edi]
mov dword [esp + 0x34], eax
mov eax, ecx
shr eax, 0x12
mov eax, dword [edx + eax*4]
mov edx, ecx
and edx, esi
mov eax, dword [eax + edx*4]
add eax, dword [esp + 4]
mov edx, eax
and eax, esi
mov esi, dword [esp + 8]
shr edx, 0x12
mov edx, dword [esi + edx*4]
mov esi, dword [esp + 0x24]
mov eax, dword [edx + eax*4]
mov edx, esi
shr edx, 0x12
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax]
mov eax, dword [eax + edx*4]
mov edx, esi
mov esi, 0x3ffff
and edx, esi
mov eax, dword [eax + edx*4]
add eax, dword [esp + 4]
mov edx, eax
and eax, esi
mov esi, dword [esp + 8]
shr edx, 0x12
mov edx, dword [esi + edx*4]
mov esi, dword [esp + 0x38]
cmp esi, dword [edx + eax*4]
mov esi, ebx
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
cmovg esi, dword [esp + 0x28]
cmovg eax, ebx
cmovle edi, ebx
cmovle ecx, dword [esp + 0x24]
mov edx, dword [eax]
mov dword [esp + 0x34], eax
mov ebx, esi
mov dword [esp + 0x28], esi
shr ebx, 0x12
mov eax, dword [edx + ebx*4]
mov edx, esi
mov ebx, 0x3ffff
mov esi, dword [esp + 8]
and edx, ebx
mov eax, dword [eax + edx*4]
add eax, dword [esp + 4]
mov edx, eax
and eax, ebx
shr edx, 0x12
mov edx, dword [esi + edx*4]
mov eax, dword [edx + eax*4]
mov edx, ecx
shr edx, 0x12
mov dword [esp + 0x24], eax
mov eax, dword [edi]
mov eax, dword [eax + edx*4]
mov edx, ecx
and edx, ebx
mov ebx, 0x3ffff
mov eax, dword [eax + edx*4]
add eax, dword [esp + 4]
mov edx, eax
and eax, ebx
mov ebx, dword [esp + 0x24]
shr edx, 0x12
mov edx, dword [esi + edx*4]
cmp ebx, dword [edx + eax*4]
mov edx, dword [esp + 0xc]
cmovle edi, dword [esp + 0x34]
cmovle ecx, dword [esp + 0x28]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa0], edi
mov ebx, 0x3ffff
mov eax, dword [edx]
mov edx, dword [esp + 0x58]
mov esi, dword [edi]
mov edi, dword [esp + 0x60]
mov eax, dword [eax + edx*4]
mov edx, ecx
and ecx, ebx
shr edx, 0x12
mov edx, dword [esi + edx*4]
mov esi, dword [eax + edi*4]
mov ecx, dword [edx + ecx*4]
mov dword [eax + edi*4], ecx
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0xa4]
mov eax, dword [eax]
mov edx, ecx
and ecx, ebx
mov ebx, dword [esp + 0xc]
shr edx, 0x12
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 4]
mov dword [eax + ecx*4], esi
mov ecx, dword [esp + 0x58]
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + edi*4]
mov edi, dword [ecx]
add eax, edx
mov esi, eax
shr esi, 0x12
mov esi, dword [edi + esi*4]
mov edi, 0x3ffff
and eax, edi
mov esi, dword [esi + eax*4]
push esi
lea eax, [esp + 0x9c]
push eax
lea eax, [esp + 0xa8]
push eax
push dword [esp + 0x20]
push dword [esp + 0x3c]
push dword [esp + 0x44]
push ebx
push dword [esp + 0x38]
push ebx
call fcn.0040cdf4
add esp, 0x24
mov eax, dword [esp + 0x9c]
mov ebx, dword [esp + 0xa4]
mov ecx, dword [esp + 0x68]
mov edx, eax
sub edx, ebx
cmp ecx, edx
jne 0x40b2d7
mov eax, dword [esp + 0x4c]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
cmp eax, ecx
jge 0x40b353
mov edx, dword [esp + 0x10]
mov eax, dword [ebp + 0x18]
mov esi, dword [esp + 0xc]
test edx, edx
je 0x40bf15
mov ecx, dword [esp + 0x4c]
dec edx
add ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x68]
jmp 0x40b35b
mov dword [esp + 8], eax
mov eax, dword [esp + 0xa0]
mov ecx, 0x3ffff
mov edi, ebx
shr edi, 0x12
mov dword [esp + 0x28], eax
mov eax, ebx
and ebx, ecx
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx]
mov ecx, dword [ecx + edi*4]
mov edi, dword [ecx + ebx*4]
mov ecx, 0x3ffff
add edi, dword [ebp + 0xc]
mov ebx, edi
and edi, ecx
mov ecx, dword [ebp + 8]
shr ebx, 0x12
mov ecx, dword [ecx]
mov ebx, dword [ecx + ebx*4]
cmp dword [ebx + edi*4], esi
mov ebx, dword [esp + 0x1c]
mov edi, 0xffffffff
je 0x40c019
cmp edx, 0x10000
jb 0x40bd2d
cmp edx, 0x1000000
jb 0x40c000
shr edx, 0x18
mov edi, dword [edx*4 + 0x49e59c]
add edi, 0x18
jmp 0x40c019
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x1c]
cmp ecx, 0x10000
mov dword [esp + 0x4c], eax
mov dword [esp + 0x10], edx
jb 0x40b3c0
mov eax, ecx
cmp ecx, 0x1000000
jb 0x40bf01
shr eax, 0x18
mov edx, ecx
mov ecx, dword [eax*4 + 0x49e59c]
add ecx, 0x18
jmp 0x40bfef
mov eax, dword [esp + 4]
dec ecx
mov dword [esp], ecx
sub eax, dword [ebp + 0xc]
cmp ecx, edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x64]
lea eax, [ebx + eax]
mov dword [esp + 8], eax
jae 0x40bd4b
mov edx, dword [esp + 0x10]
jmp 0x40bdda
test ecx, 0xff00
je 0x40bfe3
mov eax, ecx
mov edx, ecx
shr eax, 8
mov ecx, dword [eax*4 + 0x49e59c]
add ecx, 8
jmp 0x40bfef
mov dword [esp + 8], eax
mov dword [esp + 0x24], eax
mov ecx, dword [esi]
mov eax, edi
shr eax, 0x12
mov eax, dword [ecx + eax*4]
mov ecx, edi
and ecx, 0x3ffff
mov ecx, dword [eax + ecx*4]
mov ebx, ecx
sub ebx, dword [esp + 4]
js 0x40b4ba
mov dword [esp], edx
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov edx, dword [edx]
lea esi, [ebx + eax]
mov eax, esi
and esi, 0x3ffff
shr eax, 0x12
mov dword [esp + 0x34], eax
mov edx, dword [edx + eax*4]
mov eax, dword [esp + 0x28]
cmp dword [edx + esi*4], eax
jne 0x40b4b3
mov eax, dword [esp]
add ecx, dword [ebp + 0xc]
inc eax
mov dword [esp], eax
shr eax, 0x12
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x30]
mov edx, dword [eax]
mov eax, dword [esp + 0x38]
mov eax, dword [edx + eax*4]
mov edx, dword [esp]
mov dword [esp + 0x38], eax
mov eax, 0x3ffff
and edx, eax
mov eax, dword [esp + 0x38]
mov dword [eax + edx*4], ebx
mov eax, 0x3ffff
mov edx, ecx
and ecx, eax
mov eax, dword [ebp + 8]
shr edx, 0x12
mov ebx, dword [eax]
mov eax, dword [esp]
mov edx, dword [ebx + edx*4]
mov ecx, dword [edx + ecx*4]
mov edx, eax
sub edx, dword [ebp + 0x14]
mov dword [esp + 0x38], ecx
cmp dword [esp + 0x24], ecx
mov ecx, dword [esp + 8]
cmovne ecx, edx
mov edx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 8], ecx
mov eax, dword [ebx + eax*4]
mov dword [eax + esi*4], ecx
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0xc]
mov dword [esp + 0x24], ecx
jmp 0x40b4ba
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
inc edi
cmp edi, edx
jbe 0x40b3ea
cmp edx, dword [esp + 0x1c]
mov dword [esp], edx
jb 0x40b52c
xor eax, eax
mov esi, edx
dec eax
mov ecx, esi
mov edi, 0x3ffff
mov edx, eax
mov eax, esi
mov ebx, dword [esp + 8]
and ecx, edi
mov edi, dword [esp + 0x30]
shr eax, 0x12
mov edi, dword [edi]
mov eax, dword [edi + eax*4]
mov edi, 0x3ffff
mov ecx, dword [eax + ecx*4]
add ecx, dword [ebp + 0xc]
mov eax, ecx
and ecx, edi
mov edi, dword [ebp + 8]
shr eax, 0x12
mov edi, dword [edi]
mov edi, dword [edi + eax*4]
mov eax, dword [edi + ecx*4]
cmp edx, eax
mov edx, dword [esp + 0x94]
lea edx, [edx + esi]
cmove edx, ebx
cmp edx, eax
je 0x40b521
mov dword [edi + ecx*4], edx
dec esi
mov dword [esp + 8], edx
cmp esi, dword [esp + 0x1c]
jae 0x40b4d1
mov eax, dword [esp]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x14]
inc eax
cmp eax, dword [esp + 0x18]
mov dword [esp], eax
jae 0x40be9b
dec edi
xor eax, eax
dec eax
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x2c]
mov eax, edi
shr eax, 0x12
mov ecx, dword [ecx]
mov eax, dword [ecx + eax*4]
mov ecx, edi
and ecx, 0x3ffff
mov eax, dword [eax + ecx*4]
mov ecx, eax
sub ecx, esi
js 0x40b61b
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x14], edi
lea edi, [ecx + edx]
mov edx, dword [esi]
mov esi, dword [esp + 0x28]
mov ebx, edi
and edi, 0x3ffff
shr ebx, 0x12
mov edx, dword [edx + ebx*4]
cmp dword [edx + edi*4], esi
jne 0x40b60f
mov esi, dword [esp + 0x18]
add eax, dword [ebp + 0xc]
dec esi
mov dword [esp + 0x18], esi
shr esi, 0x12
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0xc]
mov dword [esp + 0xc], ebx
mov ebx, 0x3ffff
mov esi, dword [esi]
mov edx, dword [esi + edx*4]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x18]
mov esi, edx
and esi, ebx
mov ebx, dword [esp + 0x30]
mov dword [ebx + esi*4], ecx
mov esi, 0x3ffff
mov ecx, eax
and eax, esi
mov esi, dword [ebp + 8]
shr ecx, 0x12
mov esi, dword [esi]
mov ecx, dword [esi + ecx*4]
mov eax, dword [ecx + eax*4]
mov ecx, edx
mov edx, dword [esp + 8]
sub ecx, dword [ebp + 0x14]
cmp dword [esp + 0x1c], eax
mov dword [esp + 0x1c], eax
cmovne edx, ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 8], edx
mov ecx, dword [esi + ecx*4]
mov dword [ecx + edi*4], edx
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
dec edi
cmp dword [esp], eax
jb 0x40b551
jmp 0x40be9b
cmp edx, 2
jge 0x40c8a1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40cd51
dec eax
mov edx, dword [esp + 0x10]
mov dword [esp + 0x20], eax
shl eax, 5
mov ecx, dword [esp + eax + 0xa8]
mov ebx, dword [esp + eax + 0xac]
mov esi, dword [esp + eax + 0xb0]
mov edi, dword [esp + eax + 0xb4]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + eax + 0xb8]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + eax + 0xbc]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + eax + 0xc0]
mov eax, dword [esp + eax + 0xc4]
mov dword [esp + 0x3c], eax
jmp 0x409f40
cmp eax, 2
jl 0x40bfce
mov esi, dword [esp + 0x98]
mov edx, dword [esp + 0x10]
cmp eax, 0x10000
jb 0x40c83a
jmp 0x40c81a
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x30]
add ecx, dword [esp + 0x1c]
mov eax, ecx
and ecx, 0x3ffff
shr eax, 0x12
mov esi, dword [esp + 0xc]
mov eax, dword [ebx + eax*4]
mov edx, dword [esp + 0x38]
mov dword [eax + ecx*4], edx
mov esi, dword [esi]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 8]
mov ebx, 0x3ffff
mov ecx, dword [esi + eax*4]
mov dword [esp + 0x38], edx
mov dword [esp], ecx
mov ecx, dword [esp + 0x1c]
lea ecx, [edx + ecx - 1]
mov edi, ecx
and ecx, ebx
mov ebx, eax
shr edi, 0x12
mov dword [esp + 0x5c], ecx
cmp edx, 2
mov eax, dword [esi + edi*4]
mov esi, dword [esp]
mov dword [esp + 0x40], edi
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x60]
mov edi, dword [esi + ecx*4]
mov dword [esi + ecx*4], eax
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0xc]
mov eax, dword [edi]
mov dword [esp + 0x24], eax
mov eax, dword [eax + ebx*4]
mov esi, dword [eax + ecx*4]
lea eax, [edx - 1]
mov dword [esp + 8], eax
mov dword [esp + 0x68], esi
je 0x40b876
mov eax, dword [esp + 4]
mov ecx, 0x3ffff
mov edx, dword [esp + 0x24]
mov dword [esp + 0x30], 0
add eax, esi
mov esi, eax
and eax, ecx
mov ecx, dword [esp + 0x18]
shr esi, 0x12
xor edi, edi
inc edi
mov ecx, dword [ecx]
mov esi, dword [ecx + esi*4]
mov dword [esp], ecx
mov eax, dword [esi + eax*4]
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x1c]
mov ecx, 0x3ffff
lea eax, [edi + ebx]
mov esi, eax
and eax, ecx
mov ecx, dword [esp + 4]
shr esi, 0x12
mov esi, dword [edx + esi*4]
mov eax, dword [esi + eax*4]
add eax, ecx
mov ecx, 0x3ffff
mov esi, eax
and eax, ecx
mov ecx, dword [esp]
shr esi, 0x12
mov esi, dword [ecx + esi*4]
mov eax, dword [esi + eax*4]
lea esi, [edi + ebx + 1]
mov ebx, 0x3ffff
mov ecx, esi
and esi, ebx
mov ebx, dword [esp]
shr ecx, 0x12
mov ecx, dword [edx + ecx*4]
mov ecx, dword [ecx + esi*4]
add ecx, dword [esp + 4]
mov esi, ecx
shr esi, 0x12
mov esi, dword [ebx + esi*4]
mov ebx, 0x3ffff
and ecx, ebx
mov ecx, dword [esi + ecx*4]
lea esi, [edi + 1]
cmp eax, ecx
cmovl eax, ecx
cmovge esi, edi
cmp eax, dword [esp + 0x28]
jle 0x40b853
mov edi, dword [esp + 0x1c]
mov eax, 0x3ffff
lea ecx, [esi + edi]
mov ebx, ecx
and ecx, eax
mov eax, dword [esp + 0x30]
shr ebx, 0x12
add eax, edi
mov edi, eax
shr edi, 0x12
mov edi, dword [edx + edi*4]
mov edx, dword [edx + ebx*4]
mov dword [esp], edi
mov edi, 0x3ffff
mov edx, dword [edx + ecx*4]
and eax, edi
mov edi, dword [esp]
mov dword [edi + eax*4], edx
mov edx, dword [esp + 0xc]
lea edi, [esi + esi + 1]
cmp edi, dword [esp + 8]
mov edx, dword [edx]
jge 0x40b86e
mov eax, dword [esp + 0x18]
mov dword [esp + 0x30], esi
mov eax, dword [eax]
mov dword [esp], eax
jmp 0x40b786
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], edx
add ecx, eax
mov ebx, ecx
and ecx, 0x3ffff
shr ebx, 0x12
jmp 0x40b872
mov dword [esp + 0x24], edx
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x5c]
cmp dword [esp + 0x38], 2
mov eax, dword [esi + ebx*4]
mov esi, dword [esp + 0x68]
mov dword [eax + ecx*4], esi
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x50]
mov eax, dword [edi]
mov eax, dword [eax + ecx*4]
mov dword [eax + edx*4], esi
mov esi, edi
jg 0x40b6e5
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x2c]
cmp edi, ecx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xa4], ecx
jae 0x40b9b4
mov edx, ecx
mov esi, 0x3ffff
mov eax, ecx
dec ecx
mov dword [esp + 0x30], ebx
and edx, esi
mov esi, dword [ebx]
shr eax, 0x12
mov eax, dword [esi + eax*4]
mov esi, dword [esp + 0x18]
mov eax, dword [eax + edx*4]
mov esi, dword [esi]
add eax, dword [esp + 4]
mov edx, eax
shr edx, 0x12
mov edx, dword [esi + edx*4]
mov esi, 0x3ffff
and eax, esi
cmp edi, ecx
mov eax, dword [edx + eax*4]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x98], ebx
mov dword [esp + 0x28], eax
jbe 0x40b91a
mov ebx, dword [esp + 0x30]
jmp 0x40b990
mov edx, ecx
mov eax, 0x3ffff
mov esi, ecx
mov dword [esp + 0x34], ecx
and edx, eax
mov eax, dword [esp + 0x30]
shr esi, 0x12
mov edi, dword [eax]
mov eax, dword [edi + esi*4]
mov dword [esp + 8], eax
mov edi, dword [eax + edx*4]
mov eax, dword [esp + 4]
lea ebx, [edi + eax]
mov eax, dword [esp + 0x18]
mov ecx, ebx
shr ecx, 0x12
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x34]
mov dword [esp], eax
mov eax, 0x3ffff
and ebx, eax
mov eax, dword [esp + 0x28]
mov esi, dword [esp]
cmp dword [esi + ebx*4], eax
jne 0x40b982
dec ecx
mov eax, dword [esp + 8]
not edi
cmp dword [esp + 0x1c], ecx
mov dword [eax + edx*4], edi
mov dword [esp + 0x9c], ecx
jbe 0x40b91a
mov ebx, dword [esp + 0x98]
mov ecx, dword [esp + 0x9c]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xa4], ecx
cmp edi, ecx
jb 0x40b8c7
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
jmp 0x40b9b8
mov edx, dword [esp + 0x10]
mov ebx, dword [ebp + 0xc]
mov eax, dword [esi]
mov ecx, dword [esp + 0x58]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x60]
cmp dword [eax + ecx*4], 0
js 0x40ba4c
mov dword [esp + 0xa0], esi
mov dword [esp + 0xa4], edi
mov eax, dword [esi]
mov edx, edi
mov ecx, edi
mov esi, edi
mov edi, 0x3ffff
shr edx, 0x12
and esi, edi
sub ecx, dword [ebp + 0x14]
mov eax, dword [eax + edx*4]
mov eax, dword [eax + esi*4]
mov esi, dword [ebp + 8]
mov esi, dword [esi]
add eax, ebx
mov edx, eax
and eax, edi
shr edx, 0x12
mov edx, dword [esi + edx*4]
mov dword [edx + eax*4], ecx
mov edi, dword [esp + 0xa4]
inc edi
cmp edi, dword [esp + 0x14]
mov dword [esp + 0xa4], edi
jae 0x40ba41
mov esi, dword [esp + 0xa0]
mov ecx, edi
mov edx, edi
shr ecx, 0x12
and edx, 0x3ffff
mov eax, dword [esi]
mov ecx, dword [eax + ecx*4]
cmp dword [ecx + edx*4], 0
jns 0x40b9de
jmp 0x40ba48
mov esi, dword [esp + 0xa0]
mov edx, dword [esp + 0x10]
cmp edi, dword [esp + 0x14]
jae 0x40bb1d
mov dword [esp + 0xa0], esi
mov dword [esp + 0xa4], edi
mov edx, edi
mov dword [esp + 0xc], esi
mov dword [esp + 0x1c], edi
mov ecx, dword [esi]
mov eax, edx
mov ebx, 0x3ffff
shr eax, 0x12
and edx, ebx
mov eax, dword [ecx + eax*4]
not dword [eax + edx*4]
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa0]
lea edx, [eax + 1]
mov dword [esp + 0xa4], edx
mov esi, edx
mov edi, edx
mov ecx, dword [ecx]
shr esi, 0x12
and edi, ebx
mov esi, dword [ecx + esi*4]
mov esi, dword [esi + edi*4]
test esi, esi
js 0x40ba70
mov ecx, dword [ebp + 0xc]
lea edi, [esi + ecx]
mov ecx, 0x3ffff
add esi, dword [esp + 4]
mov ebx, edi
and edi, ecx
mov ecx, dword [ebp + 8]
shr ebx, 0x12
mov ecx, dword [ecx]
mov ebx, dword [ecx + ebx*4]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx]
mov edi, dword [ebx + edi*4]
mov ebx, esi
shr ebx, 0x12
mov ecx, dword [ecx + ebx*4]
mov ebx, 0x3ffff
and esi, ebx
mov ebx, dword [esp + 0x1c]
cmp edi, dword [ecx + esi*4]
mov esi, dword [esp + 0x14]
mov ecx, 0xffffffff
je 0x40bb5f
sub edx, ebx
inc edx
cmp edx, 0x10000
jb 0x40bb2f
cmp edx, 0x1000000
jb 0x40bb46
shr edx, 0x18
mov ecx, dword [edx*4 + 0x49e59c]
add ecx, 0x18
jmp 0x40bb5f
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40cd18
dec eax
jmp 0x40bead
test edx, 0xff00
je 0x40bb55
shr edx, 8
mov ecx, dword [edx*4 + 0x49e59c]
add ecx, 8
jmp 0x40bb5f
shr edx, 0x10
mov ecx, dword [edx*4 + 0x49e59c]
add ecx, 0x10
jmp 0x40bb5f
movzx ecx, dl
mov ecx, dword [ecx*4 + 0x49e59c]
add eax, 2
mov dword [esp], ecx
cmp eax, esi
mov dword [esp + 0xa4], eax
jae 0x40bc09
mov esi, dword [esp + 0xc]
mov edi, dword [ebp + 8]
cmp ebx, eax
mov dword [esp + 0x98], esi
mov dword [esp + 0x9c], ebx
jae 0x40bc09
mov edx, dword [esi]
mov ecx, ebx
add eax, dword [esp + 0x64]
shr ecx, 0x12
mov ecx, dword [edx + ecx*4]
mov edx, ebx
mov ebx, 0x3ffff
and edx, ebx
mov ebx, dword [esp + 8]
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0xc]
mov edx, ecx
shr edx, 0x12
mov edx, dword [ebx + edx*4]
mov ebx, 0x3ffff
and ecx, ebx
mov dword [edx + ecx*4], eax
mov edx, dword [esp + 0x1c]
inc edx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x9c], edx
cmp edx, ecx
jae 0x40bc0b
mov ecx, dword [edi]
mov edi, dword [esp + 0xc]
mov esi, edx
mov ebx, 0x3ffff
shr esi, 0x12
mov edi, dword [edi]
mov esi, dword [edi + esi*4]
mov edi, edx
inc edx
and edi, ebx
mov esi, dword [esi + edi*4]
add esi, dword [ebp + 0xc]
mov edi, esi
and esi, ebx
shr edi, 0x12
mov ecx, dword [ecx + edi*4]
mov edi, dword [ebp + 8]
mov dword [ecx + esi*4], eax
jmp 0x40bbc5
mov ecx, eax
mov edi, dword [esp + 0x1c]
mov eax, ecx
sub eax, edi
cmp dword [esp + 0x4c], eax
jge 0x40bc39
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 4]
test edx, edx
je 0x40bcdc
mov esi, edx
mov edx, dword [esp + 0x4c]
dec esi
mov dword [esp + 0x10], esi
add edx, dword [ebp + 0x18]
jmp 0x40bc41
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0x14]
sub edx, eax
mov dword [esp + 0x4c], edx
mov edx, esi
sub edx, ecx
cmp eax, edx
jle 0x40caa8
mov eax, dword [esp + 0x48]
cmp edx, 2
lea eax, [ebx + eax]
jl 0x40cb26
mov esi, dword [esp + 0x20]
mov edx, esi
inc esi
shl edx, 5
mov dword [esp + 0x20], esi
mov dword [esp + edx + 0xac], eax
mov eax, dword [esp + 0x18]
mov dword [esp + edx + 0xa8], eax
mov eax, dword [esp + 0xc]
mov dword [esp + edx + 0xb0], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + edx + 0xb4], edi
mov edi, dword [esp]
mov dword [esp + edx + 0xbc], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + edx + 0xb8], eax
mov dword [esp + edx + 0xc0], edi
mov edi, dword [esp + 0x3c]
mov esi, eax
mov dword [esp + edx + 0xc4], edi
mov edx, dword [esp + 0x10]
mov edi, ecx
mov ecx, 0xfffffffd
jmp 0x409f40
mov esi, dword [esp + 0x3c]
test esi, esi
js 0x40bcf8
mov edx, esi
shl edx, 5
mov dword [esp + edx + 0xc0], 0xffffffff
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
add dword [esp + 0x44], eax
sub esi, ecx
cmp esi, 2
jl 0x40bd1c
mov esi, dword [esp + 0xa0]
mov edi, ecx
xor edx, edx
mov ecx, 0xfffffffd
jmp 0x409f40
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x40bf3b
jmp 0x40cd24
test edx, 0xff00
je 0x40c00f
shr edx, 8
mov edi, dword [edx*4 + 0x49e59c]
add edi, 8
jmp 0x40c019
mov edx, dword [esp + 0x10]
mov ecx, dword [esi]
mov eax, edi
shr eax, 0x12
mov eax, dword [ecx + eax*4]
mov ecx, edi
and ecx, 0x3ffff
mov eax, dword [eax + ecx*4]
sub eax, dword [esp + 4]
js 0x40bdd0
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x1c], edi
mov ebx, dword [esp + 8]
mov edi, dword [edx]
lea esi, [eax + ecx]
mov ecx, esi
and esi, 0x3ffff
shr ecx, 0x12
mov edi, dword [edi + ecx*4]
cmp dword [edi + esi*4], ebx
jne 0x40bdc4
mov edi, dword [esp]
inc edi
mov ebx, edi
shr ebx, 0x12
mov dword [esp], ebx
mov ebx, dword [esp + 0x30]
mov edx, dword [esp]
mov dword [esp], edi
mov ebx, dword [ebx]
mov edx, dword [ebx + edx*4]
mov ebx, edi
sub edi, dword [ebp + 0x14]
and ebx, 0x3ffff
mov dword [edx + ebx*4], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov dword [eax + esi*4], edi
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
inc edi
cmp edi, dword [esp]
jbe 0x40bd4f
mov ebx, dword [esp]
mov esi, dword [esp + 0x14]
inc ebx
mov dword [esp], ebx
cmp ebx, dword [esp + 0x18]
mov ebx, dword [esp + 4]
jae 0x40be9b
dec esi
mov ecx, dword [esp + 0x2c]
mov eax, esi
mov dword [esp + 0x14], esi
shr eax, 0x12
mov ecx, dword [ecx]
mov eax, dword [ecx + eax*4]
mov ecx, esi
and ecx, 0x3ffff
mov eax, dword [eax + ecx*4]
sub eax, ebx
js 0x40be77
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov ebx, dword [esp + 8]
mov edi, dword [edx]
lea esi, [eax + ecx]
mov ecx, esi
and esi, 0x3ffff
shr ecx, 0x12
mov edi, dword [edi + ecx*4]
cmp dword [edi + esi*4], ebx
jne 0x40be7d
mov edi, dword [esp + 0x18]
dec edi
mov ebx, edi
shr ebx, 0x12
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x1c]
mov ebx, dword [ebx]
mov edx, dword [ebx + edx*4]
mov ebx, edi
and ebx, 0x3ffff
mov dword [edx + ebx*4], eax
mov eax, dword [ebp + 8]
mov edx, edi
mov ebx, dword [esp + 4]
sub edx, dword [ebp + 0x14]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov dword [eax + esi*4], edx
mov edx, dword [esp + 0x10]
jmp 0x40be89
mov edi, dword [esp + 0x18]
jmp 0x40be89
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 4]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x18], edi
dec esi
cmp dword [esp], edi
jb 0x40bdf4
cmp dword [esp + 0x50], 0
je 0x40cd24
mov eax, dword [esp + 0x20]
add eax, 0xfffffffe
mov dword [esp + 0x20], eax
shl eax, 5
mov ecx, dword [esp + eax + 0xa8]
mov ebx, dword [esp + eax + 0xac]
mov esi, dword [esp + eax + 0xb0]
mov edi, dword [esp + eax + 0xb4]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + eax + 0xb8]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + eax + 0xbc]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + eax + 0xc0]
mov eax, dword [esp + eax + 0xc4]
mov dword [esp + 0x3c], eax
jmp 0x409f40
shr eax, 0x10
mov edx, ecx
mov ecx, dword [eax*4 + 0x49e59c]
add ecx, 0x10
jmp 0x40bfef
mov eax, dword [esp + 0x3c]
test eax, eax
js 0x40bf2b
shl eax, 5
mov dword [esp + eax + 0xc0], 0xffffffff
mov eax, dword [esp + 0x20]
add dword [esp + 0x44], ecx
test eax, eax
je 0x40cd4b
dec eax
xor edx, edx
mov dword [esp + 0x20], eax
shl eax, 5
mov ecx, dword [esp + eax + 0xa8]
mov ebx, dword [esp + eax + 0xac]
mov esi, dword [esp + eax + 0xb0]
mov edi, dword [esp + eax + 0xb4]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + eax + 0xb8]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + eax + 0xbc]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + eax + 0xc0]
mov eax, dword [esp + eax + 0xc4]
mov dword [esp + 0x3c], eax
jmp 0x409f40
test edx, 0xff00
je 0x40c7e6
shr edx, 8
mov edx, dword [edx*4 + 0x49e59c]
add edx, 8
jmp 0x40c7f0
test ebx, 0xff00
je 0x40c87d
shr ebx, 8
mov esi, dword [ebx*4 + 0x49e59c]
add esi, 8
jmp 0x40c887
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
test eax, eax
jne 0x40bb29
jmp 0x40cd24
movzx eax, cl
mov edx, ecx
mov ecx, dword [eax*4 + 0x49e59c]
sub dword [esp + 0x4c], edx
add ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x10]
jmp 0x409f40
shr edx, 0x10
mov edi, dword [edx*4 + 0x49e59c]
add edi, 0x10
jmp 0x40c019
movzx edx, dl
mov edi, dword [edx*4 + 0x49e59c]
mov dword [esp + 0x24], edi
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x30]
cmp ebx, eax
mov ebx, eax
jae 0x40c0a3
mov eax, dword [esp + 0xc]
mov edx, dword [eax]
mov eax, dword [esp + 0x60]
mov edx, dword [edx + esi*4]
mov edx, dword [edx + eax*4]
mov eax, ebx
mov ebx, dword [ebp + 0xc]
add eax, dword [esp + 0x64]
add edx, ebx
mov esi, edx
and edx, 0x3ffff
mov ebx, eax
shr esi, 0x12
mov ecx, dword [ecx + esi*4]
mov dword [ecx + edx*4], eax
mov eax, edi
mov edx, dword [esp + 0xa4]
cmp edi, edx
mov edi, 0x3ffff
jae 0x40c0a5
mov esi, dword [esp + 0xc]
mov edx, eax
mov ecx, dword [ebp + 8]
shr edx, 0x12
mov esi, dword [esi]
mov ecx, dword [ecx]
mov edx, dword [esi + edx*4]
mov esi, eax
inc eax
and esi, edi
mov edx, dword [edx + esi*4]
add edx, dword [ebp + 0xc]
mov esi, edx
and edx, edi
shr esi, 0x12
mov ecx, dword [ecx + esi*4]
mov dword [ecx + edx*4], ebx
mov edx, dword [esp + 0xa4]
cmp eax, edx
jb 0x40c06b
jmp 0x40c0a5
mov edx, ebx
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x1c]
sub ecx, eax
mov dword [esp + 0x34], ecx
jbe 0x40c126
cmp edx, eax
jae 0x40c126
mov ecx, eax
mov eax, dword [esp + 0x64]
mov esi, dword [ebp + 8]
add eax, ecx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x28], eax
mov eax, 0x3ffff
mov ecx, dword [esp + 0x28]
mov edi, edx
mov ebx, edx
inc edx
shr edi, 0x12
and ebx, eax
mov ecx, dword [ecx]
mov ecx, dword [ecx + edi*4]
mov ecx, dword [ecx + ebx*4]
mov ebx, dword [esi]
add ecx, dword [ebp + 0xc]
mov edi, ecx
and ecx, eax
shr edi, 0x12
cmp dword [esp + 8], edx
mov edi, dword [ebx + edi*4]
mov ebx, dword [esp + 0x30]
mov dword [edi + ecx*4], ebx
jne 0x40c0dc
mov edx, dword [esp + 0xa4]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp]
mov eax, dword [esp + 8]
jmp 0x40c12d
mov ebx, dword [esp + 4]
mov ecx, dword [esp]
sub eax, edx
dec ecx
cmp eax, 2
jl 0x40c15f
cmp dword [esp + 0x4c], eax
mov dword [esp], ecx
jge 0x40c28b
mov esi, dword [esp + 0x10]
test esi, esi
je 0x40c6b2
mov ecx, dword [esp + 0x4c]
dec esi
mov dword [esp + 0x10], esi
add ecx, dword [ebp + 0x18]
jmp 0x40c28f
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x34]
mov esi, edx
sub esi, edi
cmp esi, ebx
jle 0x40c1f9
cmp ebx, 2
jl 0x40c482
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov dword [esp], ecx
mov ebx, dword [esp + 4]
mov dword [esp + 0x44], eax
mov ecx, esi
inc esi
shl ecx, 5
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + ecx + 0xa8], edx
mov edx, dword [esp + 0xc]
mov dword [esp + ecx + 0xac], ebx
mov dword [esp + ecx + 0xb0], edx
mov edx, dword [esp + 0xa4]
mov dword [esp + ecx + 0xb4], edi
mov edi, dword [esp]
mov dword [esp + ecx + 0xbc], edx
mov edx, dword [esp + 0xa0]
mov dword [esp + ecx + 0xb8], edx
mov dword [esp + ecx + 0xc0], edi
mov dword [esp + ecx + 0xc4], esi
mov ecx, dword [esp]
mov esi, dword [esp + 0x98]
jmp 0x40c5ac
cmp esi, 2
jl 0x40c4b3
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
mov dword [esp], ecx
mov ebx, dword [esp + 4]
mov dword [esp + 0x44], eax
mov ecx, edi
inc edi
shl ecx, 5
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + ecx + 0xa8], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + ecx + 0xac], ebx
mov dword [esp + ecx + 0xb4], esi
mov esi, dword [esp + 0x98]
mov dword [esp + ecx + 0xb0], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + ecx + 0xb8], esi
mov esi, dword [esp + 0x14]
mov dword [esp + ecx + 0xbc], esi
mov esi, dword [esp]
mov dword [esp + ecx + 0xc0], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + ecx + 0xc4], esi
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp]
jmp 0x40c6a1
mov ecx, dword [esp + 0x4c]
sub ecx, eax
mov esi, edx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x34]
sub esi, edi
cmp esi, ecx
jle 0x40c388
cmp esi, eax
jle 0x40c4da
cmp ecx, eax
jle 0x40c912
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
mov eax, esi
add esi, 2
shl eax, 5
mov dword [esp + 0x20], esi
mov dword [esp + eax + 0xa8], edi
mov dword [esp + eax + 0xac], ebx
mov dword [esp + eax + 0xb0], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + eax + 0xb4], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + eax + 0xbc], ecx
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0xc], ecx
mov dword [esp + eax + 0xb8], ecx
mov ecx, dword [esp]
mov esi, dword [esp + 0xc]
mov dword [esp + eax + 0xc0], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + eax + 0xc4], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + eax + 0xc8], edi
mov dword [esp + eax + 0xcc], ebx
mov edi, dword [esp + 0x2c]
add ebx, dword [esp + 0x48]
mov dword [esp + eax + 0xd4], ecx
mov ecx, dword [esp + 0x98]
mov dword [esp + eax + 0xd0], ecx
mov dword [esp + eax + 0xd8], edi
mov edi, dword [esp + 0x14]
mov dword [esp + 0x2c], ecx
mov dword [esp + eax + 0xdc], edi
mov edi, dword [esp]
mov dword [esp + eax + 0xe0], edi
mov edi, dword [esp + 0x3c]
mov dword [esp + eax + 0xe4], edi
jmp 0x40c46b
cmp ecx, eax
mov ecx, dword [esp + 0x18]
jle 0x40c5b9
cmp esi, eax
mov dword [esp + 0x18], ecx
jle 0x40c9b5
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x2c]
mov eax, edi
add edi, 2
shl eax, 5
mov dword [esp + 0x20], edi
mov dword [esp + eax + 0xa8], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + eax + 0xac], ebx
mov dword [esp + eax + 0xb4], ecx
mov ecx, dword [esp + 0x98]
mov dword [esp + eax + 0xb0], ecx
mov dword [esp + eax + 0xb8], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp]
mov dword [esp + eax + 0xbc], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + eax + 0xc0], ecx
mov dword [esp + eax + 0xc4], esi
mov esi, dword [esp + 0x18]
mov dword [esp + eax + 0xc8], esi
mov esi, dword [esp + 0xc]
mov dword [esp + eax + 0xcc], ebx
add ebx, dword [esp + 0x48]
mov dword [esp + eax + 0xd0], esi
mov esi, dword [esp + 0x1c]
mov dword [esp + eax + 0xd4], esi
mov esi, dword [esp + 0xa4]
mov dword [esp + eax + 0xdc], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + eax + 0xd8], esi
mov dword [esp + eax + 0xe0], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + eax + 0xe4], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 8]
mov edi, edx
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
jmp 0x409f40
cmp esi, 2
jl 0x40c6f8
mov esi, ecx
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 4]
mov dword [esp + 0x44], eax
mov dword [esp + 0x2c], ecx
mov ecx, esi
mov esi, dword [esp + 0xc]
jmp 0x409f40
cmp dword [esp + 0x34], 2
jl 0x40c763
mov esi, dword [esp + 0x98]
mov edi, dword [esp + 8]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 4]
mov dword [esp + 0x44], eax
jmp 0x409f40
cmp ecx, 2
jl 0x40ca5a
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0xa4]
mov esi, dword [esp + 0x9c]
mov eax, edi
add ecx, ebx
mov dword [esp + 0x30], edx
add edi, 2
shl eax, 5
mov dword [esp + 0x20], edi
mov dword [esp + eax + 0xac], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + eax + 0xa8], ecx
mov dword [esp + eax + 0xb4], edx
mov edx, dword [esp + 0xa0]
mov dword [esp + eax + 0xb0], edx
mov dword [esp + 0x28], edx
mov dword [esp + eax + 0xbc], esi
mov esi, dword [esp + 0x98]
mov edx, dword [esp + 0x24]
mov dword [esp + eax + 0xb8], esi
mov dword [esp + eax + 0xc0], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + eax + 0xc4], edx
mov dword [esp + eax + 0xc8], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + eax + 0xcc], ebx
mov dword [esp + eax + 0xd0], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + eax + 0xd4], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + eax + 0xdc], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + eax + 0xd8], ecx
mov ecx, dword [esp]
mov dword [esp + eax + 0xe0], ecx
mov dword [esp + eax + 0xe4], edx
mov edi, dword [esp + 8]
mov edx, dword [esp + 0x10]
jmp 0x409f40
cmp esi, 2
jl 0x40ca6b
mov ebx, dword [esp + 0x20]
mov edi, ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 4]
mov eax, ebx
add ecx, esi
mov esi, dword [esp + 0x9c]
add ebx, 2
shl eax, 5
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 4]
mov dword [esp + eax + 0xac], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + eax + 0xa8], edi
mov edi, dword [esp + 0x98]
mov dword [esp + eax + 0xb4], ecx
mov ecx, dword [esp + 0xa0]
mov dword [esp + eax + 0xb0], ecx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + eax + 0xbc], esi
mov dword [esp + eax + 0xb8], edi
mov dword [esp + eax + 0xc0], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + eax + 0xc4], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + eax + 0xc8], ecx
mov ecx, dword [esp + 4]
mov dword [esp + eax + 0xcc], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + eax + 0xd4], esi
mov dword [esp + eax + 0xd0], edi
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x1c]
mov dword [esp + eax + 0xd8], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + eax + 0xdc], ecx
mov ecx, dword [esp]
mov dword [esp + eax + 0xe0], ecx
mov dword [esp + eax + 0xe4], esi
mov esi, dword [esp + 8]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
jmp 0x409f40
mov ecx, dword [esp + 0x3c]
add eax, dword [esp + 0x44]
test ecx, ecx
js 0x40c6cc
shl ecx, 5
mov dword [esp + ecx + 0xc0], 0xffffffff
mov ecx, dword [esp]
jmp 0x40c163
shr edx, 0x10
mov edx, dword [edx*4 + 0x49e59c]
add edx, 0x10
jmp 0x40c7f0
shr ebx, 0x10
mov esi, dword [ebx*4 + 0x49e59c]
add esi, 0x10
jmp 0x40c887
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x40cd55
dec ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x20], ecx
shl ecx, 5
mov edx, dword [esp + ecx + 0xa8]
mov ebx, dword [esp + ecx + 0xac]
mov esi, dword [esp + ecx + 0xb0]
mov edi, dword [esp + ecx + 0xb4]
mov dword [esp + 0x18], edx
mov edx, dword [esp + ecx + 0xb8]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + ecx + 0xbc]
mov dword [esp + 0x14], edx
mov edx, dword [esp + ecx + 0xc0]
mov ecx, dword [esp + ecx + 0xc4]
mov dword [esp + 0x3c], ecx
mov ecx, edx
mov edx, dword [esp + 0x10]
jmp 0x409f40
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
test ecx, ecx
je 0x40cd28
dec ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x20], ecx
shl ecx, 5
mov esi, dword [esp + ecx + 0xa8]
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + ecx + 0xac]
mov edi, dword [esp + ecx + 0xb4]
mov dword [esp + 0x18], esi
mov esi, dword [esp + ecx + 0xb0]
mov dword [esp + 0xc], esi
mov esi, dword [esp + ecx + 0xb8]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + ecx + 0xbc]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + ecx + 0xc0]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0xc]
mov dword [esp], ecx
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + ecx + 0xc4]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp]
jmp 0x409f40
movzx eax, dl
mov edx, dword [eax*4 + 0x49e59c]
mov eax, esi
mov esi, dword [esp + 0x3c]
mov dword [esp + ecx + 0xc0], edx
inc dword [esp + 0x20]
cmp eax, 0x10000
mov dword [esp + ecx + 0xc4], esi
mov esi, dword [esp + 0x98]
jb 0x40c836
mov edx, dword [esp + 0x10]
cmp eax, 0x1000000
jb 0x40c856
shr eax, 0x18
mov edi, dword [esp]
mov ecx, dword [eax*4 + 0x49e59c]
add ecx, 0x18
jmp 0x409f40
mov edx, dword [esp + 0x10]
test eax, 0xff00
je 0x40c86b
shr eax, 8
mov edi, dword [esp]
mov ecx, dword [eax*4 + 0x49e59c]
add ecx, 8
jmp 0x409f40
shr eax, 0x10
mov edi, dword [esp]
mov ecx, dword [eax*4 + 0x49e59c]
add ecx, 0x10
jmp 0x409f40
movzx eax, al
mov edi, dword [esp]
mov ecx, dword [eax*4 + 0x49e59c]
jmp 0x409f40
movzx esi, bl
mov esi, dword [esi*4 + 0x49e59c]
mov dword [esp + eax + 0xc0], esi
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 4]
inc dword [esp + 0x20]
mov dword [esp + eax + 0xc4], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + 0x2c], esi
cmp edx, 0x10000
jb 0x40c8cf
mov esi, dword [esp + 0xc]
cmp edx, 0x1000000
jb 0x40c8ea
shr edx, 0x18
mov edx, dword [edx*4 + 0x49e59c]
add edx, 0x18
jmp 0x40c903
mov esi, dword [esp + 0xc]
test edx, 0xff00
je 0x40c8f9
shr edx, 8
mov edx, dword [edx*4 + 0x49e59c]
add edx, 8
jmp 0x40c903
shr edx, 0x10
mov edx, dword [edx*4 + 0x49e59c]
add edx, 0x10
jmp 0x40c903
movzx eax, dl
mov edx, dword [eax*4 + 0x49e59c]
mov dword [esp + 0x14], ecx
mov ecx, edx
mov edx, dword [esp + 0x10]
jmp 0x409f40
mov esi, dword [esp + 0x20]
mov eax, ecx
mov ecx, esi
mov dword [esp + 0x20], esi
shl ecx, 5
cmp eax, 2
lea eax, [esi + 1]
mov esi, dword [esp + 0x18]
mov dword [esp + ecx + 0xa8], esi
mov esi, dword [esp + 0xc]
mov dword [esp + ecx + 0xac], ebx
mov dword [esp + ecx + 0xb0], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + ecx + 0xb4], edi
mov edi, dword [esp + 0xa4]
mov dword [esp + 0xc], esi
mov dword [esp + ecx + 0xb8], esi
mov esi, dword [esp]
mov dword [esp + ecx + 0xbc], edi
mov dword [esp + 0x1c], edi
mov dword [esp + ecx + 0xc0], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + ecx + 0xc4], esi
mov ecx, dword [esp + 0x48]
lea ecx, [ebx + ecx]
jge 0x40cb44
mov esi, dword [esp + 8]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x98]
mov ebx, ecx
mov ecx, dword [esp + 0x24]
mov edi, edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x2c], eax
jmp 0x40c6a5
mov eax, ebx
mov ebx, dword [esp + 0x20]
mov edi, ebx
mov dword [esp + 0x20], ebx
shl edi, 5
cmp esi, 2
mov esi, dword [esp]
mov dword [esp + edi + 0xa8], ecx
mov dword [esp + edi + 0xac], eax
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x30], eax
mov dword [esp + edi + 0xb4], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + edi + 0xb0], ecx
mov dword [esp + edi + 0xb8], eax
mov eax, dword [esp + 0x14]
mov dword [esp + edi + 0xbc], eax
mov dword [esp + edi + 0xc0], esi
mov esi, dword [esp + 0x3c]
lea eax, [ebx + 1]
mov ebx, dword [esp + 4]
mov dword [esp + edi + 0xc4], esi
mov edi, dword [esp + 0x48]
lea ebx, [ebx + edi]
jge 0x40cba9
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 8]
mov edi, edx
mov esi, dword [esp + 0xa0]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x24]
jmp 0x409f40
mov eax, dword [esp + 0x48]
cmp esi, 2
lea eax, [ebx + eax]
jl 0x40ca7d
jmp 0x40cc20
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x34], 2
lea eax, [ebx + eax]
jge 0x40cc9f
mov ecx, dword [esp + 8]
mov ebx, eax
mov eax, dword [esp + 0x98]
mov edi, edx
mov esi, dword [esp + 0xa0]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
jmp 0x409f40
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x2c]
mov eax, esi
inc esi
shl eax, 5
mov dword [esp + 0x20], esi
mov dword [esp + eax + 0xa8], edx
mov edx, dword [esp + 0xa4]
mov dword [esp + eax + 0xac], ebx
add ebx, dword [esp + 0x48]
mov dword [esp + eax + 0xb4], edx
mov edx, dword [esp + 0xa0]
mov dword [esp + eax + 0xb0], edx
mov dword [esp + eax + 0xb8], edi
mov edi, dword [esp + 0x14]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ecx
mov dword [esp + eax + 0xbc], edi
mov edi, dword [esp + 0x3c]
mov dword [esp + eax + 0xc0], 0xfffffffd
mov dword [esp + eax + 0xc4], edi
mov edi, dword [esp + 0x1c]
jmp 0x40cb37
mov edx, dword [esp + 0xa0]
mov ebx, eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
jmp 0x409f3d
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
shl eax, 5
add dword [esp + 0x20], 2
mov dword [esp + eax + 0xac], ecx
mov dword [esp + eax + 0xa8], edi
mov dword [esp + eax + 0xb4], edx
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x9c]
mov dword [esp + eax + 0xb0], edi
mov dword [esp + eax + 0xbc], edx
mov edx, esi
mov esi, dword [esp + 0x98]
mov edi, dword [esp + 0x24]
mov dword [esp + eax + 0xb8], esi
mov dword [esp + eax + 0xc0], edi
mov dword [esp + eax + 0xc4], edx
jmp 0x40cd0b
mov edi, dword [esp + 0x18]
shl eax, 5
mov dword [esp + 0x14], edx
add dword [esp + 0x20], 2
mov edx, dword [esp + 0x10]
mov dword [esp + eax + 0xac], ebx
mov ebx, dword [esp + 4]
mov dword [esp + eax + 0xa8], edi
mov edi, dword [esp + 0xa4]
mov dword [esp + eax + 0xb4], edi
mov edi, dword [esp + 0xa0]
mov dword [esp + eax + 0xb0], edi
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x30]
mov dword [esp + eax + 0xb8], ecx
mov dword [esp + eax + 0xbc], edi
mov edi, dword [esp + 0x24]
mov dword [esp + eax + 0xc0], edi
mov dword [esp + eax + 0xc4], esi
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
jmp 0x409f3d
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x14], edx
mov ecx, esi
mov dword [esp + 0x2c], edi
inc esi
shl ecx, 5
mov dword [esp + 0x20], esi
mov dword [esp + ecx + 0xac], eax
mov eax, dword [esp + 0x18]
mov dword [esp + ecx + 0xa8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + ecx + 0xb0], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + ecx + 0xb4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + ecx + 0xbc], eax
mov eax, dword [esp + 0x98]
mov dword [esp + ecx + 0xb8], eax
mov eax, dword [esp + 0x24]
mov dword [esp + ecx + 0xc0], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + ecx + 0xc4], eax
jmp 0x40cb37
mov edx, dword [esp + 0x20]
mov esi, ecx
mov edi, dword [esp + 0x3c]
mov ecx, edx
inc edx
shl ecx, 5
mov dword [esp + 0x20], edx
mov dword [esp + ecx + 0xac], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + ecx + 0xa8], esi
mov esi, dword [esp + 0x98]
mov dword [esp + ecx + 0xb4], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + ecx + 0xb0], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + ecx + 0xb8], esi
mov dword [esp + ecx + 0xbc], eax
mov eax, dword [esp + 0x24]
mov dword [esp + ecx + 0xc0], eax
mov dword [esp + ecx + 0xc4], edi
mov edi, dword [esp + 8]
mov edx, dword [esp + 0x10]
jmp 0x409f3d
mov eax, dword [esp + 0x44]
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
jmp 0x40cd2e
mov eax, dword [esp + 0x44]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
test eax, eax
jne 0x40cd5b
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
sub eax, edx
cmp edx, dword [esp + 0x80]
jb 0x409dbb
jmp 0x40cd76
mov eax, dword [esp + 0x44]
jmp 0x40cd2e
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
jmp 0x40cd28
mov ecx, dword [esp + 0x74]
add ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x80]
jb 0x409daf
jmp 0x40cd9c
test eax, eax
je 0x40cd94
add edx, eax
mov ecx, edx
and edx, 0x3ffff
mov esi, edx
mov edx, dword [ebp + 0x10]
shr ecx, 0x12
mov edx, dword [edx]
mov ecx, dword [edx + ecx*4]
mov dword [ecx + esi*4], eax
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x74]
test eax, eax
mov eax, dword [esp + 0x70]
je 0x40cdde
add eax, eax
mov ecx, dword [esp + 0x88]
mov esi, edi
mov edi, edx
mov edx, dword [esp + 0x84]
sub eax, ebx
mov dword [esp + 0x70], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x8c]
cmp dword [eax + edx*4], ecx
mov eax, dword [esp + 0x70]
mov edx, edi
mov edi, esi
jg 0x409da0
mov ecx, dword [esp + 0x8a8]
xor ecx, ebp
call fcn.004771d1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret