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

Disassembly:
sub esp, 0x35c
push ebx
push ebp
push esi
push edi
mov esi, ecx
mov ecx, dword [esi + 0xa7964]
push 0
mov ebp, 0x18
mov ebx, 3
mov byte [esp + 0x28], 0xff
call fcn.0049e220
cmp eax, 0x1c
ja case.0x45a849.15
xor ecx, ecx
mov cl, byte [eax + 0x45d278]
jmp dword [ecx*4 + 0x45d238]
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 2
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 1
call fcn.0049e220
mov bl, byte [esi + 0xa7981]
push eax
mov ecx, esi
mov byte [esi + 0xa7981], 1
call fcn.0045da10
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa7981], bl
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov al, byte [esi + 0xa7980]
test al, al
je 0x45a8e4
mov al, byte [esi + 0xa7981]
test al, al
je 0x45a8ca
mov edx, dword [esi + 0xa7990]
mov eax, dword [esi + 0xa7994]
neg edx
shl edx, 1
add eax, edx
jmp 0x45a90d
mov eax, dword [esi + 0xa798c]
mov ecx, dword [esi + 0xa7994]
neg eax
shl eax, 1
add ecx, eax
mov dword [esi + 0xa7994], ecx
jmp 0x45a913
mov eax, dword [esi + 0xa7978]
cmp eax, 1
jne 0x45a8fa
mov eax, dword [esi + 0xa7994]
add eax, 0xffffffe2
jmp 0x45a90d
cmp eax, 2
mov eax, dword [esi + 0xa7994]
jne 0x45a90a
add eax, 0xffffffeb
jmp 0x45a90d
add eax, 0xffffffdc
mov dword [esi + 0xa7994], eax
mov eax, dword [esi + 0xa7970]
cmp dword [esi + 0xa7994], eax
jge 0x45aeff
mov ecx, dword [esi + 0xa7964]
mov dword [esi + 0xa7994], eax
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov eax, dword [esi + 0xa7994]
inc eax
cmp eax, 0xb40
jae 0x45aeff
mov cl, byte [esi + eax + 0xa6db4]
test cl, cl
jne 0x45a97c
inc eax
cmp eax, 0xb40
jb 0x45a953
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7974]
cmp eax, ecx
jl 0x45a988
mov eax, ecx
mov ecx, dword [esi + 0xa7964]
mov dword [esi + 0xa7994], eax
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov cl, byte [esi + 0xa79a0]
mov edx, dword [esi + 0xa7968]
neg cl
sbb ecx, ecx
and ecx, 0x30
add ecx, edx
mov edi, ecx
jmp 0x45aef2
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 2
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 1
call fcn.0049e220
mov edi, eax
cmp edi, 0x31
jl 0x45aeff
cmp edi, 0x3e
jg 0x45aeff
mov al, byte [esi + edi*8 + 0xa7770]
sub edi, 0x31
test al, al
je 0x45aeff
mov ecx, esi
call fcn.0045e2e0
mov edx, dword [esi + edi*8 + 0xa78f4]
mov ecx, dword [esi + 0xa7964]
mov dword [esi + 0xa7998], edx
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, esi
call fcn.0045e2e0
mov al, byte [esi + 0xa79a2]
test al, al
je 0x45aaa6
cmp dword [esi + 0xa79a8], 1
jle 0x45aa88
mov eax, dword [esi + 0xa79a4]
push eax
lea edx, [esi + 0xa79ac]
lea ecx, [eax + 1]
push edx
mov dword [esi + 0xa79a4], ecx
call fcn.0049ca70
add esp, 4
push eax
push str._s__02d.png
call fcn.0049cbc0
mov ecx, dword [esi + 8]
add esp, 0xc
push eax
lea eax, [esi + 0x2b8]
push eax
call fcn.00408e20
push 0xff
push 0xff
push 0xff
lea ecx, [esi + 0x2b8]
push ecx
mov ecx, dword [esi + 8]
call fcn.00408d30
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa79a2], 0
mov dword [esi + 0xa7998], 0
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov eax, dword [esi + 0xa799c]
test eax, eax
je 0x45aaf4
mov ecx, esi
call fcn.0045e2e0
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov edx, dword [esi + 0xa7970]
mov ecx, dword [esi + 0xa7964]
mov dword [esi + 0xa7994], edx
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa7987], 1
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 4
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 1
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 2
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 3
lea edi, [eax + eax*4]
call fcn.0049e220
mov cl, byte [esi + 0xa7980]
test cl, cl
lea eax, [eax + edi*2 - 0x14d0]
je 0x45abaf
mov ecx, dword [esi + 0xa7990]
imul ecx, eax
shl ecx, 1
mov dword [esi + 0xa7994], ecx
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7978]
cmp ecx, 1
jne 0x45abef
lea eax, [eax + eax*4]
lea ecx, [eax + eax*8]
shl ecx, 3
mov eax, 0x2aaaaaab
imul ecx
mov ecx, dword [esi + 0xa7964]
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esi + 0xa7994], edx
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
lea eax, [eax + eax*4]
cmp ecx, 2
lea ecx, [eax + eax*8]
jne 0x45ac2a
shl ecx, 3
mov eax, 0x78787879
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [esi + 0xa7964]
mov dword [esi + 0xa7994], edx
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
shl ecx, 3
mov eax, 0x66666667
imul ecx
mov ecx, dword [esi + 0xa7964]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esi + 0xa7994], edx
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
mov ecx, dword [esi + 0xa7964]
dec eax
push eax
call fcn.0049e220
cmp eax, 0x3f
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
mov edi, 1
call fcn.0049e250
dec eax
cmp eax, edi
jle 0x45aeff
mov ecx, dword [esi + 0xa7964]
push edi
call fcn.0049e220
cmp eax, 0x31
jl 0x45acd0
cmp eax, 0x3e
jg 0x45acd0
mov edx, dword [esi + 0xa7968]
lea ecx, [edi - 1]
imul edx, ecx
mov ecx, dword [esi + 0xa7998]
sub eax, 0x31
add edx, ecx
mov dword [esi + eax*8 + 0xa78f4], edx
mov byte [esi + eax*8 + 0xa78f8], 1
mov ecx, dword [esi + 0xa7964]
inc edi
call fcn.0049e250
dec eax
cmp edi, eax
jl 0x45ac94
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 2
jl 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 1
call fcn.0049e220
sub eax, 0x56
je 0x45ad48
dec eax
jne 0x45aeff
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa798a], 0
mov byte [esi + 0xa7988], 0
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa798a], 1
mov byte [esi + 0xa7988], 1
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 2
jl 0x45d22c
mov ecx, dword [esi + 0xa7964]
mov edi, 1
push edi
call fcn.0049e220
cmp eax, 0x73
ja case.0x45a849.10
xor ecx, ecx
mov cl, byte [eax + 0x45d338]
jmp dword [ecx*4 + 0x45d298]
mov ecx, dword [esi + 0xa7964]
push edi
call fcn.0049e220
mov cl, byte [esi + 0xa7980]
test cl, cl
je 0x45adc7
mov cl, byte [esi + 0xa7989]
jmp 0x45adcd
mov cl, byte [esi + 0xa7987]
test cl, cl
je 0x45add3
add eax, eax
test eax, eax
jle 0x45ae83
mov ebx, eax
mov edi, 2
mov ecx, dword [esi + 0xa7994]
cmp ecx, dword [esi + 0xa7974]
jge 0x45ae7c
mov al, byte [esi + 0xa7985]
test al, al
je 0x45ae32
mov edx, dword [esi + 0xa799c]
push 0xff
push 0xff
shl edx, 5
lea eax, [edx + esi]
mov edx, dword [eax + 0x2dc]
push 0xff
push edx
push edi
push 0
push ecx
mov ecx, dword [esi + 8]
add eax, 0x2d8
push eax
call fcn.00408db0
mov al, byte [esi + 0xa7984]
test al, al
je 0x45ae6f
mov ecx, dword [esi + 0xa799c]
mov eax, dword [esi + 0xa7994]
push 0xff
push 0xff
push 0xff
push edi
push edi
push 0x62
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
add dword [esi + 0xa7994], edi
mov byte [esi + 0xa79a1], 1
dec ebx
jne 0x45ade2
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 4
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea ebx, [eax + eax*4]
call fcn.0049e220
lea eax, [eax + ebx*2 - 0x210]
cmp eax, edi
jl 0x45aeff
cmp eax, 0x63
jg 0x45aeff
mov edi, dword [esi + 0xa7968]
imul edi, eax
mov al, byte [esi + 0xa79a0]
neg al
sbb eax, eax
and eax, 0x30
add edi, eax
mov ecx, esi
call fcn.0045e2e0
add dword [esi + 0xa7998], edi
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 6
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 4
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 5
lea edi, [eax + eax*4]
call fcn.0049e220
lea eax, [eax + edi*2 - 0xd050]
test eax, eax
jl 0x45af8d
cmp eax, 0x270f
jg 0x45af8d
mov ecx, dword [esi + 0xa7970]
lea edx, [ecx + eax*2]
mov dword [esi + 0xa7994], edx
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa7983], 1
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa7983], 0
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa7982], 0
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 3
jl 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
cmp eax, 0x32
je 0x45b0b4
cmp eax, 0x39
mov ecx, dword [esi + 0xa7964]
jne 0x45af05
call fcn.0049e250
cmp eax, 4
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 3
call fcn.0049e220
test eax, eax
jne 0x45b07a
mov al, byte [esi + 0xa796c]
test al, al
je 0x45b06b
mov dword [esi + 0xa7968], 0x3c
jmp 0x45aeff
mov dword [esi + 0xa7968], 0x2d
jmp 0x45aeff
cmp eax, edi
jl 0x45aeff
cmp eax, 0xff
jg 0x45aeff
lea eax, [eax + eax*4]
lea ecx, [eax + eax*8]
shl ecx, 3
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esi + 0xa7968], edx
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 5
jl 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 3
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
mov edi, eax
push 4
shl edi, 8
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
add edi, eax
mov dword [esp + 0x20], edi
call fcn.0049e250
lea ecx, [edi + 5]
cmp eax, ecx
jne 0x45d22c
cmp dword [esi + 0xa7978], 1
jne 0x45b113
mov eax, 3
jmp 0x45b126
cmp dword [esi + 0xa7968], 0x2d
jne 0x45b121
mov ebx, 2
mov eax, 4
mov cl, byte [esi + 0xa7987]
test cl, cl
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 4
je 0x45b143
lea edx, [eax + eax]
mov dword [esp + 0x10], edx
mov al, byte [esi + 0xa7988]
test al, al
je 0x45b160
xor ebp, ebp
mov dword [esp + 0x14], 8
add ebx, ebx
mov byte [esi + 0xa79a0], 1
test edi, edi
mov dword [esp + 0x1c], 0
jle 0x45c9a6
mov edi, dword [esp + 0x24]
mov eax, dword [esi + 0xa7994]
cmp eax, 0xb40
jge 0x45b3e5
mov cl, byte [esi + 0xa7985]
test cl, cl
je 0x45b1ca
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0xa799c]
push 0xff
push 0xff
push 0xff
push 0x60
push ecx
mov ecx, dword [esi + 8]
push 0
push eax
shl edx, 5
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
mov byte [esp + 0x24], 0
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
add ecx, 5
push ecx
mov ecx, dword [esi + 0xa7964]
call fcn.0049e220
test al, 0x80
mov dword [esp + 0x18], eax
je 0x45b21b
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebp + ebp]
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov eax, dword [esp + 0x18]
test al, 0x40
je 0x45b256
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebx + ebp]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov eax, dword [esp + 0x18]
test al, 0x20
je 0x45b292
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebp + ebx*2]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov eax, dword [esp + 0x18]
test al, 0x10
je 0x45b2d2
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
lea ecx, [ebp + ebx*2]
push eax
mov eax, dword [esi + 0xa7994]
mov edx, ebx
add edx, ecx
mov ecx, dword [esi + 0xa799c]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
mov eax, dword [esp + 0x18]
test al, 8
je 0x45b30e
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
mov eax, dword [esi + 0xa7994]
push ecx
mov ecx, dword [esi + 0xa799c]
lea edx, [ebp + ebx*4]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
mov eax, dword [esp + 0x18]
test al, 4
je 0x45b34e
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
push ecx
mov ecx, dword [esi + 0xa7994]
lea edx, [ebp + ebx*4]
mov eax, ebx
add eax, edx
mov edx, dword [esi + 0xa799c]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
mov eax, dword [esp + 0x18]
test al, 2
je 0x45b38d
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
lea eax, [ebx + ebx*2]
lea ecx, [ebp + eax*2]
mov eax, dword [esi + 0xa799c]
push edx
mov edx, dword [esi + 0xa7994]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov eax, dword [esp + 0x18]
test al, 1
je 0x45b3cc
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebx*8]
sub ecx, ebx
add ecx, ebp
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov eax, dword [esi + 0xa7994]
mov edx, dword [esp + 0x10]
add eax, edx
mov dword [esi + 0xa7994], eax
mov byte [esi + 0xa79a1], 1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x45b174
jmp 0x45c9a6
mov byte [esi + 0xa7982], 1
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
mov ecx, dword [esi + 0xa7964]
dec eax
push eax
call fcn.0049e220
cmp eax, 0x2e
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
mov ebp, 2
call fcn.0049e250
cmp eax, ebp
jle 0x45aeff
lea ebx, [ebp + 2]
lea ecx, [ebx - 1]
push ecx
mov ecx, dword [esi + 0xa7964]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push ebp
mov edi, eax
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea edx, [eax + eax*4]
lea eax, [edi + edx*2]
push ebx
lea edi, [eax + eax*4]
call fcn.0049e220
lea ecx, [eax + edi*2 - 0x14d0]
cmp ecx, 1
jl 0x45b4ba
cmp ecx, 0x89
jg 0x45b4ba
mov al, byte [esi + 0xa7980]
dec ecx
test al, al
je 0x45b4a5
mov eax, dword [esi + 0xa7990]
imul eax, ecx
shl eax, 1
jmp 0x45b4ab
lea eax, [ecx + ecx*8]
shl eax, 2
cmp eax, 0xb40
jae 0x45b4ba
mov byte [eax + esi + 0xa6db4], 1
mov ecx, dword [esi + 0xa7964]
add ebp, 4
call fcn.0049e250
cmp ebp, eax
jl 0x45b444
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
mov ecx, dword [esi + 0xa7964]
dec eax
push eax
call fcn.0049e220
cmp eax, 0x2e
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
mov ebp, 2
call fcn.0049e250
cmp eax, ebp
jle 0x45aeff
mov ecx, dword [esi + 0xa7964]
lea ebx, [ebp + 2]
lea eax, [ebx - 1]
push eax
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push ebp
mov edi, eax
call fcn.0049e220
lea ecx, [eax + eax*4]
lea eax, [edi + ecx*2]
mov ecx, dword [esi + 0xa7964]
push ebx
lea edi, [eax + eax*4]
call fcn.0049e220
lea ecx, [eax + edi*2 - 0x14d0]
cmp ecx, 1
jl 0x45b584
cmp ecx, 0x89
jg 0x45b584
mov al, byte [esi + 0xa7980]
dec ecx
test al, al
je 0x45b56f
mov eax, dword [esi + 0xa7990]
imul eax, ecx
shl eax, 1
jmp 0x45b575
lea eax, [ecx + ecx*8]
shl eax, 2
cmp eax, 0xb40
jae 0x45b584
mov byte [eax + esi + 0xa6db4], 0
mov ecx, dword [esi + 0xa7964]
add ebp, 4
call fcn.0049e250
cmp ebp, eax
jl 0x45b50e
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 0x24
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
mov ebx, eax
call fcn.0049e220
cmp ebx, 0x78
jl 0x45aeff
cmp ebx, 0x7a
jg 0x45aeff
cmp eax, 0x21
jl 0x45aeff
cmp eax, 0x7e
jg 0x45aeff
sub ebx, 0x78
sub eax, 0x21
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], ebx
mov ebp, 4
lea ebx, [esp + eax + 0x3c]
mov edi, 2
mov ecx, dword [esi + 0xa7964]
mov eax, ebp
push eax
inc ebp
call fcn.0049e220
mov edx, eax
shr edx, 7
and dl, 1
mov byte [ebx - 0x10], dl
mov ecx, eax
shr ecx, 6
and cl, 1
mov byte [ebx], cl
mov edx, eax
shr edx, 5
and dl, 1
mov byte [ebx + 0x10], dl
mov ecx, eax
shr ecx, 4
and cl, 1
mov byte [ebx + 0x20], cl
mov edx, eax
shr edx, 3
and dl, 1
mov byte [ebx + 0x30], dl
mov ecx, eax
mov edx, eax
shr ecx, 2
shr edx, 1
and cl, 1
mov byte [ebx + 0x40], cl
and dl, 1
and al, 1
mov byte [ebx + 0x50], dl
mov byte [ebx + 0x60], al
add ebx, 0x80
dec edi
jne 0x45b61b
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, 0x10
mov dword [esp + 0x1c], eax
jl 0x45b612
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*2]
shl ecx, 4
sub ecx, eax
lea eax, [edx + ecx*2]
lea ebp, [eax + eax*2]
xor ebx, ebx
shl ebp, 4
mov dword [esp + 0x1c], ebp
lea edi, [esp + 0x2c]
jmp 0x45b6ba
mov ebp, dword [esp + 0x1c]
mov eax, 0x55555556
imul ebx
mov eax, edx
shr eax, 0x1f
add edx, eax
add edx, ebp
lea ebp, [edx + edx*2]
xor ecx, ecx
shl ebp, 4
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
mov al, byte [edi + ecx]
add edx, ebp
inc ecx
cmp ecx, 0x30
mov byte [edx + esi + 0x83b4], al
jl 0x45b6d2
inc ebx
add edi, 0x10
cmp ebx, 0x30
jl 0x45b6b6
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 0x4c
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
mov ebx, eax
call fcn.0049e220
cmp ebx, 0x78
jl 0x45aeff
cmp ebx, 0x7a
jg 0x45aeff
cmp eax, 0x21
jl 0x45aeff
cmp eax, 0x7e
jg 0x45aeff
sub ebx, 0x78
sub eax, 0x21
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], ebx
mov ebp, 4
lea ebx, [esp + eax + 0x144]
mov edi, 3
mov ecx, dword [esi + 0xa7964]
mov eax, ebp
push eax
inc ebp
call fcn.0049e220
mov ecx, eax
shr ecx, 7
and cl, 1
mov byte [ebx - 0x18], cl
mov edx, eax
shr edx, 6
and dl, 1
mov byte [ebx], dl
mov ecx, eax
shr ecx, 5
and cl, 1
mov byte [ebx + 0x18], cl
mov edx, eax
shr edx, 4
and dl, 1
mov byte [ebx + 0x30], dl
mov ecx, eax
shr ecx, 3
and cl, 1
mov byte [ebx + 0x48], cl
mov edx, eax
mov ecx, eax
shr edx, 2
shr ecx, 1
and dl, 1
mov byte [ebx + 0x60], dl
and cl, 1
and al, 1
mov byte [ebx + 0x78], cl
mov byte [ebx + 0x90], al
add ebx, 0xc0
dec edi
jne 0x45b77f
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, 0x18
mov dword [esp + 0x1c], eax
jl 0x45b773
mov eax, dword [esp + 0x24]
lea edx, [eax + eax*2]
shl edx, 4
sub edx, eax
mov eax, dword [esp + 0x18]
lea eax, [eax + edx*2]
lea ebx, [eax + eax*2]
xor ebp, ebp
shl ebx, 4
mov dword [esp + 0x1c], ebx
lea edi, [esp + 0x12c]
jmp 0x45b828
mov ebx, dword [esp + 0x1c]
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
add eax, ebx
lea ebx, [eax + eax*2]
xor ecx, ecx
shl ebx, 4
mov eax, ecx
cdq
sub eax, edx
mov dl, byte [edi + ecx]
sar eax, 1
add eax, ebx
inc ecx
cmp ecx, 0x30
mov byte [eax + esi + 0x83b4], dl
jl 0x45b839
inc ebp
add edi, 0x18
cmp ebp, 0x30
jl 0x45b824
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 5
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 4
lea edi, [eax + eax*4]
call fcn.0049e220
lea eax, [eax + edi*2 - 0x14d0]
test eax, eax
jl 0x45aeff
cmp eax, 0x3e7
jg 0x45aeff
mov cl, byte [esi + 0xa7980]
test cl, cl
je 0x45b8d5
mov edx, dword [esi + 0xa7990]
imul edx, eax
shl edx, 1
jmp 0x45b8ef
lea eax, [eax + eax*4]
lea ecx, [eax + eax*8]
shl ecx, 3
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 0xb40
jge 0x45aeff
mov dword [esi + 0xa7974], edx
jmp 0x45aeff
mov dword [esi + 0xa7968], 0x3c
mov byte [esi + 0xa796c], 1
jmp 0x45aeff
mov ecx, 0x2d0
xor eax, eax
lea edi, [esi + 0xa6db4]
rep stosd dword es:[edi], eax
jmp 0x45aeff
mov dword [esi + 0xa7968], 0x2d
mov byte [esi + 0xa796c], 0
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 4
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea edi, [eax + eax*4]
call fcn.0049e220
lea eax, [eax + edi*2 - 0x210]
test eax, eax
jl 0x45aeff
cmp eax, 0x63
jg 0x45aeff
mov ecx, 0x1c
xor eax, eax
lea edi, [esi + 0xa78f4]
rep stosd dword es:[edi], eax
jmp 0x45aeff
mov dword [esi + 0xa7978], edi
mov byte [esi + 0xa7987], 0
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 4
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea ebx, [eax + eax*4]
call fcn.0049e220
lea eax, [eax + ebx*2 - 0x210]
cmp eax, edi
jl 0x45aeff
cmp eax, 0x63
jg 0x45aeff
mov ecx, 0x1c
xor eax, eax
lea edi, [esi + 0xa78f4]
rep stosd dword es:[edi], eax
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 6
jl 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 4
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 5
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea edi, [eax + edi*2 - 0xd050]
call fcn.0049e250
lea ecx, [edi + edi + 6]
cmp eax, ecx
jne 0x45d22c
mov ecx, dword [esi + 0xa7978]
xor eax, eax
mov ebx, 1
cmp ecx, ebx
mov cl, byte [esi + 0xa7987]
setne al
mov dword [esp + 0x14], 4
add eax, 3
test cl, cl
mov dword [esp + 0x10], eax
je 0x45bab9
lea edx, [eax + eax]
mov dword [esp + 0x10], edx
mov al, byte [esi + 0xa7988]
test al, al
je 0x45bad9
mov dword [esp + 0x14], 8
xor ebp, ebp
mov ebx, 2
mov byte [esi + 0xa79a0], 1
add edi, edi
test edi, edi
mov dword [esp + 0x28], edi
jle 0x45bf90
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], 7
mov eax, dword [esi + 0xa7994]
cmp eax, 0xb40
jge 0x45bf76
mov cl, byte [esi + 0xa7985]
test cl, cl
je 0x45bb49
mov ecx, dword [esp + 0x10]
mov edx, dword [esi + 0xa799c]
push 0xff
push 0xff
push 0xff
push 0x60
push ecx
mov ecx, dword [esi + 8]
push 0
push eax
shl edx, 5
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
mov byte [esp + 0x24], 0
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
dec ecx
push ecx
mov ecx, dword [esi + 0xa7964]
call fcn.0049e220
mov edx, dword [esp + 0x1c]
mov ecx, dword [esi + 0xa7964]
push edx
mov dword [esp + 0x1c], eax
call fcn.0049e220
mov dword [esp + 0x20], eax
test byte [esp + 0x18], 0x80
je 0x45bbab
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
mov eax, dword [esi + 0xa7994]
push ecx
mov ecx, dword [esi + 0xa799c]
lea edx, [ebp + ebp]
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x18], 0x40
je 0x45bbe5
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
mov eax, dword [esi + 0xa7994]
push ecx
mov ecx, dword [esi + 0xa799c]
lea edx, [ebx + ebp]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x18], 0x20
je 0x45bc24
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
push ecx
mov ecx, dword [esi + 0xa7994]
lea edx, [ebp + ebx*2]
mov eax, ebx
add eax, edx
mov edx, dword [esi + 0xa799c]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 0x10
je 0x45bc5f
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
mov ecx, dword [esi + 0xa7994]
push edx
mov edx, dword [esi + 0xa799c]
lea eax, [ebp + ebx*4]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 8
je 0x45bc9d
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
lea eax, [ebx + ebx*2]
lea ecx, [ebp + eax*2]
mov eax, dword [esi + 0xa799c]
push edx
mov edx, dword [esi + 0xa7994]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 4
je 0x45bcdf
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebx*8]
sub ecx, ebx
add ecx, ebp
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 2
je 0x45bd1e
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
lea ecx, [ebp + ebx*8]
push eax
mov eax, dword [esi + 0xa7994]
mov edx, ebx
add edx, ecx
mov ecx, dword [esi + 0xa799c]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x18], 1
je 0x45bd5c
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
push ecx
mov ecx, dword [esi + 0xa7994]
lea edx, [ebx + ebx*4]
lea eax, [ebp + edx*2]
mov edx, dword [esi + 0xa799c]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x20], 0x80
je 0x45bd9a
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
lea eax, [ebx + ebx*2]
lea ecx, [ebp + eax*4]
mov eax, dword [esi + 0xa799c]
push edx
mov edx, dword [esi + 0xa7994]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x20], 0x40
je 0x45bdda
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
push eax
lea ecx, [ebx + ebx*2]
lea edx, [ebx + ebp]
lea eax, [edx + ecx*4]
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x20], 0x20
je 0x45be1a
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
mov ecx, dword [esi + 0xa7994]
mov eax, ebx
shl eax, 4
sub eax, ebx
push edx
mov edx, dword [esi + 0xa799c]
add eax, ebp
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x20], 0x10
je 0x45be58
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
mov ecx, dword [esi + 0xa7994]
push edx
mov edx, dword [esi + 0xa799c]
mov eax, ebx
shl eax, 4
add eax, ebp
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x20], 8
je 0x45be96
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
lea eax, [ebx + ebx*8]
lea ecx, [ebp + eax*2]
mov eax, dword [esi + 0xa799c]
push edx
mov edx, dword [esi + 0xa7994]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x20], 4
je 0x45bed6
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
push eax
lea ecx, [ebx + ebx*8]
lea edx, [ebx + ebp]
lea eax, [edx + ecx*2]
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x20], 2
je 0x45bf1c
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
lea eax, [ebx*8]
sub eax, ebx
lea ecx, [ebp + eax*2]
add eax, ecx
push edx
mov edx, dword [esi + 0xa7994]
shl eax, 1
push eax
mov eax, dword [esi + 0xa799c]
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x20], 1
je 0x45bf5d
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
push eax
lea ecx, [ebx + ebx*4]
lea edx, [ebx + ecx*2]
mov ecx, dword [esi + 0xa7994]
lea eax, [ebp + edx*2]
mov edx, dword [esi + 0xa799c]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
mov eax, dword [esi + 0xa7994]
mov ecx, dword [esp + 0x10]
add eax, ecx
mov dword [esi + 0xa7994], eax
mov byte [esi + 0xa79a1], 1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
add eax, 2
mov dword [esp + 0x1c], eax
add eax, 0xfffffff9
cmp eax, ecx
jl 0x45baf3
mov dl, byte [esi + 0xa79a0]
neg dl
sbb edx, edx
and edx, 0x18
add edx, 0x18
shl edx, 1
mov edi, edx
jmp 0x45aef2
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
mov ebp, 4
cmp eax, ebp
jl 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
mov ebx, eax
push 3
shl ebx, 8
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
add ebx, eax
call fcn.0049e250
lea ecx, [ebx + ebx*2 + 4]
cmp eax, ecx
jne 0x45d22c
test ebx, ebx
jle 0x45c512
mov edi, dword [esp + 0x24]
mov dword [esp + 0x14], 5
mov dword [esp + 0x1c], ebx
mov eax, dword [esi + 0xa7994]
cmp eax, 0xb40
jge 0x45c4f8
mov cl, byte [esi + 0xa7985]
test cl, cl
je 0x45c063
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 8]
push 0xff
push 0xff
push 0xff
push 0x60
push ebp
push 0
push eax
shl edx, 5
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
mov byte [esp + 0x24], 0
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
dec ecx
push ecx
mov ecx, dword [esi + 0xa7964]
call fcn.0049e220
mov edx, dword [esp + 0x14]
mov ecx, dword [esi + 0xa7964]
push edx
mov ebx, eax
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
inc eax
push eax
call fcn.0049e220
test bl, 0x80
mov dword [esp + 0x18], eax
je 0x45c0cc
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x30
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 0x40
je 0x45c0f9
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x32
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 0x20
je 0x45c126
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x34
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 0x10
je 0x45c153
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x36
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 8
je 0x45c180
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x38
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 4
je 0x45c1ad
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x3a
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 2
je 0x45c1da
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x3c
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 1
je 0x45c207
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x3e
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
mov bl, byte [esp + 0x20]
test bl, 0x80
je 0x45c238
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x40
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 0x40
je 0x45c265
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x42
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 0x20
je 0x45c292
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x44
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 0x10
je 0x45c2bf
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x46
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 8
je 0x45c2ec
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x48
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 4
je 0x45c319
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x4a
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 2
je 0x45c346
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x4c
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test bl, 1
je 0x45c373
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x4e
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 0x80
je 0x45c3a2
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x50
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 0x40
je 0x45c3d1
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x52
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 0x20
je 0x45c400
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x54
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 0x10
je 0x45c42f
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x56
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 8
je 0x45c45e
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x58
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 4
je 0x45c48d
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x5a
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 2
je 0x45c4bc
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x5c
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 1
je 0x45c4eb
mov edx, dword [esi + 0xa799c]
mov ecx, dword [esi + 0xa7994]
push edi
push edi
push edi
push 2
push ebp
push 0x5e
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
add dword [esi + 0xa7994], ebp
mov byte [esi + 0xa79a1], 1
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
add ecx, 3
dec eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], eax
jne 0x45c011
mov cl, byte [esi + 0xa79a0]
neg cl
sbb ecx, ecx
and ecx, 0x18
add ecx, 0x18
shl ecx, 1
mov edi, ecx
jmp 0x45aef2
mov byte [esi + 0xa7980], 1
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 5
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 4
lea edi, [eax + eax*4]
call fcn.0049e220
lea eax, [eax + edi*2 - 0x14d0]
test eax, eax
jl 0x45aeff
cmp eax, 0x3e7
jg 0x45aeff
mov cl, byte [esi + 0xa7980]
test cl, cl
je 0x45c5ac
mov edx, dword [esi + 0xa7990]
imul edx, eax
shl edx, 1
jmp 0x45c5c6
lea eax, [eax + eax*4]
lea ecx, [eax + eax*8]
shl ecx, 3
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 0xb40
jge 0x45aeff
mov dword [esi + 0xa7970], edx
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 6
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 4
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 5
call fcn.0049e220
push eax
mov ecx, esi
call fcn.0045da10
jmp 0x45aeff
mov byte [esi + 0xa7980], 0
jmp 0x45aeff
mov dword [esi + 0xa7978], 2
mov byte [esi + 0xa7987], 0
jmp 0x45aeff
mov dword [esi + 0xa7978], 0
mov byte [esi + 0xa7987], 0
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 7
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 4
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 5
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 6
lea edi, [eax + edi*2 - 0xd050]
call fcn.0049e220
mov dword [esp + 0x18], eax
cmp dword [esi + 0xa7978], 1
jne 0x45c6e9
mov eax, 3
jmp 0x45c6fc
cmp dword [esi + 0xa7968], 0x2d
jne 0x45c6f7
mov ebx, 2
mov eax, 4
mov cl, byte [esi + 0xa7987]
test cl, cl
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 4
je 0x45c719
lea ecx, [eax + eax]
mov dword [esp + 0x10], ecx
mov al, byte [esi + 0xa7988]
test al, al
je 0x45c736
xor ebp, ebp
mov dword [esp + 0x14], 8
add ebx, ebx
mov byte [esi + 0xa79a0], 1
test edi, edi
jle 0x45c9a6
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x24]
mov eax, dword [esi + 0xa7994]
cmp eax, 0xb40
jge 0x45c99c
mov cl, byte [esi + 0xa7985]
test cl, cl
je 0x45c79c
mov edx, dword [esp + 0x10]
push 0xff
push 0xff
push 0xff
push 0x60
push edx
push 0
push eax
mov eax, dword [esi + 0xa799c]
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov byte [esp + 0x24], 0
mov edi, dword [esp + 0x24]
test byte [esp + 0x18], 0x80
je 0x45c7d5
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebp + ebp]
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 0x40
je 0x45c80f
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebx + ebp]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 0x20
je 0x45c84a
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebp + ebx*2]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 0x10
je 0x45c889
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
lea ecx, [ebp + ebx*2]
push eax
mov eax, dword [esi + 0xa7994]
mov edx, ebx
add edx, ecx
mov ecx, dword [esi + 0xa799c]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x18], 8
je 0x45c8c4
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
mov eax, dword [esi + 0xa7994]
push ecx
mov ecx, dword [esi + 0xa799c]
lea edx, [ebp + ebx*4]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x18], 4
je 0x45c903
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
push ecx
mov ecx, dword [esi + 0xa7994]
lea edx, [ebp + ebx*4]
mov eax, ebx
add eax, edx
mov edx, dword [esi + 0xa799c]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 2
je 0x45c941
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
lea eax, [ebx + ebx*2]
lea ecx, [ebp + eax*2]
mov eax, dword [esi + 0xa799c]
push edx
mov edx, dword [esi + 0xa7994]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 1
je 0x45c983
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebx*8]
sub ecx, ebx
add ecx, ebp
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov eax, dword [esi + 0xa7994]
mov edx, dword [esp + 0x10]
add eax, edx
mov dword [esi + 0xa7994], eax
mov byte [esi + 0xa79a1], 1
dec dword [esp + 0x1c]
jne 0x45c746
mov al, byte [esi + 0xa79a0]
neg al
sbb eax, eax
and eax, 8
add eax, 8
imul eax, ebx
shl eax, 1
mov edi, eax
jmp 0x45aef2
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 8
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 4
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi*2]
push 5
lea edi, [eax + eax*4]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 6
lea edi, [eax + edi*2 - 0xd050]
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 7
mov dword [esp + 0x1c], eax
call fcn.0049e220
mov ecx, dword [esi + 0xa7978]
mov dword [esp + 0x20], eax
xor eax, eax
mov ebx, 1
cmp ecx, ebx
mov cl, byte [esi + 0xa7987]
setne al
mov dword [esp + 0x14], 4
add eax, 3
test cl, cl
mov dword [esp + 0x10], eax
je 0x45ca74
lea ecx, [eax + eax]
mov dword [esp + 0x10], ecx
mov al, byte [esi + 0xa7988]
test al, al
je 0x45ca94
mov dword [esp + 0x14], 8
xor ebp, ebp
mov ebx, 2
mov byte [esi + 0xa79a0], 1
lea eax, [edi + edi]
test eax, eax
jle 0x45cf0e
mov edi, dword [esp + 0x24]
inc eax
shr eax, 1
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0xa7994]
cmp eax, 0xb40
jge 0x45cf04
mov cl, byte [esi + 0xa7985]
test cl, cl
je 0x45cb00
mov edx, dword [esp + 0x10]
push 0xff
push 0xff
push 0xff
push 0x60
push edx
push 0
push eax
mov eax, dword [esi + 0xa799c]
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov byte [esp + 0x24], 0
mov edi, dword [esp + 0x24]
test byte [esp + 0x18], 0x80
je 0x45cb39
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebp + ebp]
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 0x40
je 0x45cb73
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
mov edx, dword [esi + 0xa7994]
push eax
mov eax, dword [esi + 0xa799c]
lea ecx, [ebx + ebp]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 0x20
je 0x45cbb2
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
lea ecx, [ebp + ebx*2]
push eax
mov eax, dword [esi + 0xa7994]
mov edx, ebx
add edx, ecx
mov ecx, dword [esi + 0xa799c]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x18], 0x10
je 0x45cbed
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
mov eax, dword [esi + 0xa7994]
push ecx
mov ecx, dword [esi + 0xa799c]
lea edx, [ebp + ebx*4]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x18], 8
je 0x45cc2b
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
push ecx
mov ecx, dword [esi + 0xa7994]
lea edx, [ebx + ebx*2]
lea eax, [ebp + edx*2]
mov edx, dword [esi + 0xa799c]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 4
je 0x45cc6d
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
mov ecx, dword [esi + 0xa7994]
push edx
mov edx, dword [esi + 0xa799c]
lea eax, [ebx*8]
sub eax, ebx
add eax, ebp
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x18], 2
je 0x45ccac
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
lea eax, [ebp + ebx*8]
push edx
mov edx, dword [esi + 0xa7994]
mov ecx, ebx
add ecx, eax
mov eax, dword [esi + 0xa799c]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
test byte [esp + 0x18], 1
je 0x45ccea
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edi
push edi
push edi
push edx
lea ecx, [ebx + ebx*4]
lea edx, [ebp + ecx*2]
mov ecx, dword [esi + 0xa799c]
push eax
mov eax, dword [esi + 0xa7994]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x20], 0x80
je 0x45cd28
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
push ecx
mov ecx, dword [esi + 0xa7994]
lea edx, [ebx + ebx*2]
lea eax, [ebp + edx*4]
mov edx, dword [esi + 0xa799c]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x20], 0x40
je 0x45cd68
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
push edx
lea eax, [ebx + ebx*2]
lea ecx, [ebx + ebp]
lea edx, [ecx + eax*4]
mov ecx, dword [esi + 0xa799c]
mov eax, dword [esi + 0xa7994]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x20], 0x20
je 0x45cda8
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
mov eax, dword [esi + 0xa7994]
mov edx, ebx
shl edx, 4
push ecx
mov ecx, dword [esi + 0xa799c]
sub edx, ebx
add edx, ebp
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x20], 0x10
je 0x45cde6
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
mov eax, dword [esi + 0xa7994]
push ecx
mov ecx, dword [esi + 0xa799c]
mov edx, ebx
shl edx, 4
add edx, ebp
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x20], 8
je 0x45ce24
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
push ecx
mov ecx, dword [esi + 0xa7994]
lea edx, [ebx + ebx*8]
lea eax, [ebp + edx*2]
mov edx, dword [esi + 0xa799c]
shl eax, 1
push eax
shl edx, 5
push ecx
mov ecx, dword [esi + 8]
lea eax, [edx + esi + 0x2d8]
push eax
call fcn.00408db0
test byte [esp + 0x20], 4
je 0x45ce64
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
push ecx
push edx
lea eax, [ebx + ebx*8]
lea ecx, [ebx + ebp]
lea edx, [ecx + eax*2]
mov ecx, dword [esi + 0xa799c]
mov eax, dword [esi + 0xa7994]
shl edx, 1
push edx
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x20], 2
je 0x45ceaa
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
lea eax, [ebx*8]
sub eax, ebx
lea edx, [ebp + eax*2]
push ecx
mov ecx, dword [esi + 0xa799c]
add eax, edx
shl eax, 1
push eax
mov eax, dword [esi + 0xa7994]
shl ecx, 5
lea edx, [ecx + esi + 0x2d8]
mov ecx, dword [esi + 8]
push eax
push edx
call fcn.00408db0
test byte [esp + 0x20], 1
je 0x45ceeb
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edi
push edi
push edi
push eax
push ecx
lea edx, [ebx + ebx*4]
lea eax, [ebx + edx*2]
mov edx, dword [esi + 0xa7994]
lea ecx, [ebp + eax*2]
mov eax, dword [esi + 0xa799c]
shl ecx, 1
push ecx
shl eax, 5
lea ecx, [eax + esi + 0x2d8]
push edx
push ecx
mov ecx, dword [esi + 8]
call fcn.00408db0
mov eax, dword [esi + 0xa7994]
mov edx, dword [esp + 0x10]
add eax, edx
mov dword [esi + 0xa7994], eax
mov byte [esi + 0xa79a1], 1
dec dword [esp + 0x1c]
jne 0x45caaa
mov al, byte [esi + 0xa79a0]
neg al
sbb eax, eax
and eax, 0x18
add eax, 0x18
shl eax, 1
mov edi, eax
jmp 0x45aef2
mov byte [esi + 0xa7984], 1
jmp 0x45aeff
mov byte [esi + 0xa7984], 0
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 4
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
mov edi, eax
push 2
shl edi, 8
call fcn.0049e220
add edi, eax
movsx eax, di
cmp eax, 0xfffffa60
jl 0x45aeff
cmp eax, 0x5a0
jg 0x45aeff
lea ecx, [eax + eax]
add dword [esi + 0xa7994], ecx
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 3
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
cmp eax, 0x31
jne 0x45aeff
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x1c]
jmp 0x45aeff
mov byte [esi + 0xa7983], 1
jmp 0x45aeff
mov byte [esi + 0xa7983], 0
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 3
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
sub eax, 0x30
je case.0x45a849.10
dec eax
mov ecx, dword [esi + 0xa7964]
je 0x45d0ce
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 3
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
sub eax, 0x30
je 0x45d07a
dec eax
je 0x45d06f
dec eax
jne 0x45aeff
mov dword [esi + 0xa797c], 0xffffffff
jmp 0x45aeff
mov dword [esi + 0xa797c], edi
jmp 0x45aeff
mov dword [esi + 0xa797c], 0
jmp 0x45aeff
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 2
jl 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 1
call fcn.0049e220
add eax, 0xffffffb6
cmp eax, 0x27
ja case.0x45a849.10
xor ecx, ecx
mov cl, byte [eax + 0x45d3c8]
jmp dword [ecx*4 + 0x45d3ac]
mov byte [esi + 0xa7986], 1
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa7986], 0
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 4
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
mov edi, eax
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea edx, [eax + edi + 0x18]
mov dword [esi + 0xa798c], edx
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
call fcn.0049e250
cmp eax, 4
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
push 2
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
push 3
mov edi, eax
call fcn.0049e220
mov ecx, dword [esi + 0xa7964]
lea eax, [eax + edi + 0xc]
mov dword [esi + 0xa7990], eax
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa7989], 1
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esi + 0xa7964]
mov byte [esi + 0xa7989], 0
call fcn.0049e1a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
mov al, byte [esi + 0xa7980]
test al, al
mov ecx, dword [esi + 0xa7964]
je 0x45d21f
call fcn.0049e250
cmp eax, 2
jne 0x45d22c
mov ecx, dword [esi + 0xa7964]
call fcn.0049e1f0
mov ecx, dword [esi + 0xa7964]
mov edi, eax
shl edi, 8
call fcn.0049e1f0
add edi, eax
push edi
mov ecx, esi
call fcn.0045da10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret
call fcn.0049e1f0
push eax
mov ecx, esi
call fcn.0045da10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x35c
ret