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

Disassembly:
sub esp, 0x98
push ebx
or eax, 0xffffffff
push ebp
mov ebp, dword [esp + 0xa4]
mov ebx, dword [ebp]
push esi
xor esi, esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], eax
xor eax, eax
cmp dword [ebp + 0x40], esi
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0xac]
push edi
mov dword [esp + 0x24], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], ebx
jne 0x477b64
cmp byte [ebx + 0x1e], 0
jne 0x477b64
cmp dword [eax + 0xc], esi
je 0x477b64
push ebp
call fcn.0046d7f0
mov edi, eax
add esp, 4
cmp edi, esi
mov dword [esp + 0x10], edi
je 0x477b64
mov esi, dword [edi + 0x48]
mov ecx, ebx
call fcn.004323a0
mov ecx, dword [ebx + 8]
mov edx, dword [edi + 4]
mov dword [esp + 0x58], eax
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*8]
push eax
push 0
push edx
push 0x12
mov eax, ebp
call fcn.00440600
add esp, 0x10
test eax, eax
jne 0x477b64
push 0x6a
xor ebx, ebx
mov eax, edi
call 0x432a00
xor ecx, ecx
cmp dword [edi + 0x1c], ecx
mov dword [esp + 0x3c], eax
setne cl
push eax
mov eax, edi
mov dword [esp + 0x6c], ecx
mov ecx, ebp
call fcn.00441790
add esp, 8
test eax, eax
jne 0x477b64
push edi
push ebp
call fcn.00471ae0
add esp, 8
test eax, eax
jne 0x477b64
mov edi, ebp
call fcn.00442a00
test eax, eax
mov dword [esp + 0x14], eax
je 0x477b64
cmp byte [ebp + 0x13], bl
mov esi, eax
jne 0x476ca2
mov byte [esi + 0x89], 1
mov ebx, dword [esp + 0xb8]
test ebx, ebx
jne 0x476cb7
cmp dword [esp + 0x38], ebx
jne 0x476cb7
xor eax, eax
jmp 0x476cbc
mov eax, 1
mov edi, dword [esp + 0x58]
push eax
mov eax, edi
mov ecx, ebp
call fcn.0045fe60
add esp, 4
cmp dword [esp + 0x38], 0
je 0x476ce1
mov eax, dword [ebp + 0x44]
mov dword [esp + 0x40], eax
add eax, 1
mov dword [ebp + 0x44], eax
cmp dword [esp + 0xbc], 0
jne 0x476d10
mov edx, dword [esp + 0xc0]
mov eax, dword [esp + 0x10]
push edi
push edx
push eax
push ebp
mov eax, ebx
call fcn.0046d850
add esp, 0x10
test eax, eax
jne 0x477b64
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push ecx
mov edx, edi
mov ecx, ebp
call fcn.00447de0
add esp, 4
test ebx, ebx
mov dword [esp + 0x48], eax
je 0x476f0f
mov edi, 1
add dword [ebp + 0x48], edi
mov eax, dword [ebp + 0x48]
xor ebx, ebx
push ebx
push eax
push ebx
push 0x31
mov dword [esp + 0x2c], eax
call fcn.00438870
add dword [ebp + 0x48], edi
mov edi, dword [esi + 0xc]
mov eax, dword [ebp + 0x48]
push ebx
add edi, 2
push eax
lea edx, [edi - 1]
push edx
push 0x31
mov byte [esp + 0x94], 0xa
mov dword [esp + 0x98], eax
mov byte [esp + 0x95], bl
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa0], ebx
call fcn.00438870
push ebx
push ebx
push ebx
push 0x61
call fcn.00438870
mov ecx, dword [esp + 0xe8]
mov ebx, eax
lea eax, [esp + 0xa4]
push eax
push ecx
push ebp
call fcn.0046e600
add esp, 0x3c
test eax, eax
jne 0x477b64
cmp dword [ebp + 0x40], eax
jne 0x477b64
mov edx, dword [esp + 0x50]
cmp byte [edx + 0x1e], al
jne 0x477b64
mov esi, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x20]
push eax
push 1
push 0x31
call fcn.00438870
mov ecx, dword [esp + 0x88]
push 0
push 0
push ecx
push 0x3d
call fcn.00438870
push 0
push 2
push 2
push 0x28
call fcn.00438870
add esp, 0x30
mov eax, ebx
mov ecx, esi
call fcn.0042ff10
cmp dword [esp + 0x38], 0
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0xb8]
mov ecx, dword [eax]
mov dword [esp + 0x6c], edx
mov edx, dword [ecx]
mov dword [esp + 0x2c], edx
jne 0x476e42
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x58]
push eax
push ecx
push esi
mov eax, edi
call 0x432100
add esp, 0xc
test eax, eax
je 0x476fb3
mov edi, dword [ebp + 0x44]
lea edx, [edi + 1]
mov eax, ebp
mov dword [esp + 0x4c], 1
mov dword [esp + 0x30], edi
mov dword [ebp + 0x44], edx
call fcn.004312a0
mov ebx, eax
mov eax, ebp
call fcn.004312a0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x2c]
push 0
push eax
push edi
push 0x74
call fcn.00438870
mov ecx, dword [esp + 0x88]
push 0
push 0
push ecx
push 0x3d
call fcn.00438870
mov edx, dword [esp + 0x3c]
push 0
push 0
push edx
push 0xb
mov dword [esp + 0x58], eax
call fcn.00438870
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x5c]
push ebx
push eax
push ecx
push 0x5a
call fcn.00438870
mov edx, dword [esp + 0x60]
add esp, 0x40
push 0
push edx
push edi
push 0x1b
call fcn.00438870
mov eax, dword [esp + 0x30]
push eax
push ebx
push edi
push 0x6e
call fcn.00438870
mov ecx, dword [esp + 0x48]
push 0
push ecx
push 0
push 0x61
call fcn.00438870
mov eax, dword [esp + 0x6c]
add esp, 0x30
mov ecx, esi
call fcn.0042ff10
mov eax, ebx
mov ecx, ebp
call fcn.004312c0
mov eax, dword [esp + 0x20]
call fcn.004312c0
jmp 0x476fb3
xor eax, eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0xb4]
xor edi, edi
cmp eax, edi
mov dword [esp + 0x84], ebp
mov dword [esp + 0x30], 0xffffffff
je 0x476f70
mov eax, dword [eax]
jmp 0x476f72
xor eax, eax
cmp eax, edi
mov dword [esp + 0x2c], eax
jle 0x476fb3
mov dword [esp + 0x20], edi
mov edi, edi
mov edx, dword [esp + 0xb4]
mov eax, dword [edx + 0xc]
mov ecx, dword [esp + 0x20]
mov ebx, dword [ecx + eax]
lea esi, [esp + 0x84]
call fcn.0044c2d0
test eax, eax
jne 0x477b64
add dword [esp + 0x20], 0x10
add edi, 1
cmp edi, dword [esp + 0x2c]
jl 0x476f80
mov edx, dword [esp + 0x10]
test byte [edx + 0x22], 0x10
je 0x476fe3
mov ecx, dword [edx + 0xc]
test ecx, ecx
jle 0x476fe3
mov eax, dword [edx + 0x10]
mov esi, dword [esp + 0x24]
add eax, 0x13
mov edi, edi
xor ebx, ebx
cmp byte [eax], bl
setne bl
add eax, 0x14
add esi, ebx
sub ecx, 1
jne 0x476fd0
jmp 0x476fe7
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0xbc]
test ecx, ecx
jne 0x47702f
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x477182
mov eax, dword [edx + 0xc]
mov edi, eax
sub edi, esi
cmp ecx, edi
je 0x477177
mov edx, ecx
push edx
push eax
mov eax, dword [esp + 0xb8]
push 0
push eax
push 0x745654
mov edi, ebp
call fcn.0043e070
add esp, 0x14
jmp 0x477b64
mov esi, dword [ecx + 4]
cmp dword [esp + 0x2c], esi
je 0x477052
mov ecx, dword [esp + 0x2c]
push esi
push ecx
push 0x745638
mov edi, ebp
call fcn.0043e070
add esp, 0xc
jmp 0x477b64
xor eax, eax
test esi, esi
jle 0x47706e
or esi, 0xffffffff
jmp 0x477060
mov edi, dword [ecx]
mov dword [edi + eax*8 + 4], esi
add eax, 1
cmp eax, dword [ecx + 4]
jl 0x477060
xor eax, eax
cmp dword [ecx + 4], eax
mov dword [esp + 0x18], eax
jle 0x477182
lea ecx, [ecx]
mov edi, dword [edx + 0xc]
xor esi, esi
test edi, edi
jle 0x4770de
mov ecx, dword [ecx]
mov ebx, dword [edx + 0x10]
lea eax, [ecx + eax*8]
mov dword [esp + 0x3c], eax
mov eax, dword [eax]
mov dword [esp + 0x28], eax
jmp 0x4770a0
mov edx, dword [ebx]
mov ecx, dword [esp + 0x28]
call fcn.0042b3f0
test eax, eax
je 0x4770bf
add esi, 1
add ebx, 0x14
cmp esi, edi
jl 0x4770a0
mov edx, dword [esp + 0x10]
jmp 0x4770d7
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x10]
mov dword [ecx + 4], esi
cmp esi, dword [edx + 8]
jne 0x4770d7
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0xbc]
cmp esi, dword [edx + 0xc]
jl 0x477132
mov ecx, dword [esp + 0xbc]
mov edx, dword [ecx]
mov edi, dword [esp + 0x18]
mov esi, dword [edx + edi*8]
mov edx, 0x74249c
mov ecx, esi
call fcn.0042b3f0
test eax, eax
je 0x477123
mov edx, 0x742494
mov ecx, esi
call fcn.0042b3f0
test eax, eax
je 0x477123
mov edx, 0x742490
mov ecx, esi
call fcn.0042b3f0
test eax, eax
jne 0x477148
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x34], edi
mov eax, dword [esp + 0x18]
add eax, 1
cmp eax, dword [ecx + 4]
mov dword [esp + 0x18], eax
jl 0x477080
jmp 0x477182
mov eax, dword [esp + 0xbc]
mov ecx, dword [eax]
mov edx, dword [ecx + edi*8]
mov eax, dword [esp + 0xb0]
push edx
push 0
push eax
push 0x745618
mov edi, ebp
call fcn.0043e070
add esp, 0x10
add dword [ebp + 0x40], 1
jmp 0x477b64
test ecx, ecx
jle 0x477182
mov ecx, dword [edx + 8]
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x38], 0
mov esi, dword [esp + 0x14]
je 0x4771b3
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0xc]
push 0
push eax
push 0
push 0x66
call fcn.00438870
mov ecx, dword [esp + 0x50]
push 0
push 0
push ecx
push 0x73
call fcn.00438870
add esp, 0x20
mov ebx, dword [esp + 0x50]
test byte [ebx + 0xc], 0x80
je 0x4771da
add dword [ebp + 0x48], 1
mov eax, dword [ebp + 0x48]
push 0
push eax
push 0
push 0x31
mov dword [esp + 0x80], eax
call fcn.00438870
add esp, 0x10
cmp dword [esp + 0x64], 0
jne 0x477235
mov eax, dword [ebp + 0x44]
push 0xa
push eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x18]
push ebp
call fcn.0044dfc0
mov edi, eax
add esp, 0xc
lea ecx, [edi*4 + 4]
mov esi, ebx
call fcn.00436e30
test eax, eax
mov dword [esp + 0x54], eax
je 0x477b64
xor eax, eax
test edi, edi
jle 0x477231
mov edx, dword [esp + 0x54]
mov edi, edi
add dword [ebp + 0x48], 1
mov ecx, dword [ebp + 0x48]
mov dword [edx + eax*4], ecx
add eax, 1
cmp eax, edi
jl 0x477220
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x4c]
test edi, edi
je 0x47725d
mov edx, dword [esp + 0x30]
push 0
push 0
push edx
push 0x78
call fcn.00438870
mov dword [esp + 0x70], eax
mov eax, dword [esi + 0xc]
add esp, 0x10
mov dword [esp + 0x5c], eax
jmp 0x477292
cmp dword [esp + 0xb8], 0
je 0x477292
mov ecx, dword [esp + 0x78]
push 0
push 0
push ecx
push 0x3d
call fcn.00438870
mov edx, dword [esp + 0x2c]
push 0
push 0
push edx
push 0xb
mov dword [esp + 0x7c], eax
call fcn.00438870
add esp, 0x20
mov dword [esp + 0x60], eax
add dword [ebp + 0x48], 1
mov eax, dword [ebp + 0x48]
mov edx, dword [esp + 0x10]
mov ebx, dword [edx + 0xc]
lea ecx, [eax + 1]
lea eax, [ebx + eax + 1]
mov dword [ebp + 0x48], eax
test byte [edx + 0x22], 0x10
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x18], ecx
je 0x4772c5
add ecx, 1
add eax, 1
mov dword [esp + 0x18], ecx
mov dword [ebp + 0x48], eax
mov eax, esi
call fcn.004388f0
test byte [esp + 0x38], 1
mov dword [esp + 0x20], eax
je 0x47754b
mov al, byte [ebp + 0x15]
test al, al
jne 0x4772eb
add dword [ebp + 0x48], 1
mov eax, dword [ebp + 0x48]
jmp 0x4772f7
sub al, 1
mov byte [ebp + 0x15], al
movzx eax, al
mov eax, dword [ebp + eax*4 + 0x18]
mov ecx, dword [esp + 0x34]
test ecx, ecx
mov dword [esp + 0x24], eax
jge 0x477314
push 0
push eax
push 0xffffffffffffffff
push 0x31
call fcn.00438870
add esp, 0x10
jmp 0x477380
test edi, edi
je 0x47732b
push eax
push ecx
mov ecx, dword [esp + 0x38]
push ecx
push 3
call fcn.00438870
add esp, 0x10
jmp 0x477380
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0x34]
mov ecx, dword [eax + 0xc]
mov edi, dword [esp + 0x24]
shl edx, 4
mov eax, dword [edx + ecx]
mov ecx, ebp
call fcn.00439af0
mov esi, dword [esp + 0x14]
push 0
push 0
push edi
push 0x47
call fcn.00438870
push 0
push edi
push 0xffffffffffffffff
push 0x31
mov ebx, eax
call fcn.00438870
mov eax, ebx
mov ecx, esi
call fcn.0042ff10
push 0
push 0
push edi
push 0x27
call fcn.00438870
add esp, 0x30
mov esi, dword [esp + 0x10]
mov edx, dword [esi + 0xc]
push edx
mov ecx, ebp
call fcn.004312e0
xor edi, edi
add esp, 4
cmp dword [esi + 0xc], edi
mov dword [esp + 0x28], eax
jle 0x47746a
mov ebx, eax
mov dword [esp + 0x1c], edi
jmp 0x4773b0
mov ecx, dword [esp + 0xbc]
test ecx, ecx
jne 0x4773db
mov eax, edi
cmp dword [esp + 0x4c], 0
je 0x477437
mov esi, dword [esp + 0x14]
push ebx
push eax
mov eax, dword [esp + 0x38]
push eax
push 3
call fcn.00438870
add esp, 0x10
jmp 0x477452
mov edx, dword [ecx + 4]
xor eax, eax
test edx, edx
jle 0x4773fe
mov ecx, dword [ecx]
add ecx, 4
lea esp, [esp]
cmp dword [ecx], edi
je 0x4773fe
add eax, 1
add ecx, 8
cmp eax, edx
jl 0x4773f0
cmp eax, edx
jl 0x4773bd
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x10]
mov edx, dword [esp + 0x1c]
mov eax, dword [ecx + edx + 4]
push ebx
push eax
push ebp
call fcn.00453f20
add esp, 0xc
cmp eax, ebx
je 0x477452
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x477452
push 0
push ebx
push eax
push 9
call fcn.00438870
add esp, 0x10
jmp 0x477452
mov ecx, dword [esp + 0xb4]
mov edx, dword [ecx + 0xc]
shl eax, 4
mov eax, dword [eax + edx]
push eax
mov eax, ebp
call fcn.00439b20
add esp, 4
mov ecx, dword [esp + 0x10]
add dword [esp + 0x1c], 0x14
add edi, 1
add ebx, 1
cmp edi, dword [ecx + 0xc]
jl 0x4773b0
mov al, byte [ebp + 0x15]
test al, al
jne 0x47747a
add dword [ebp + 0x48], 1
mov ebx, dword [ebp + 0x48]
jmp 0x477486
sub al, 1
movzx edx, al
mov byte [ebp + 0x15], al
mov ebx, dword [ebp + edx*4 + 0x18]
mov edi, dword [esp + 0x10]
mov eax, dword [edi + 0xc]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x14]
push ebx
push eax
push ecx
push 0x5a
call fcn.00438870
add esp, 0x10
cmp dword [esp + 0x64], 0
jne 0x4774b6
mov edx, esi
push edx
mov eax, edi
call fcn.0043adb0
add esp, 4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
push eax
push ebx
push ecx
push 0x6e
call fcn.00438870
add esp, 0x10
test ebx, ebx
je 0x4774e8
cmp byte [ebp + 0x15], 8
jae 0x4774e8
mov ecx, ebp
call fcn.00431110
movzx edx, byte [ebp + 0x15]
mov dword [ebp + edx*4 + 0x18], ebx
add byte [ebp + 0x15], 1
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x477509
cmp byte [ebp + 0x15], 8
jae 0x477509
mov ecx, ebp
call fcn.00431110
movzx eax, byte [ebp + 0x15]
mov dword [ebp + eax*4 + 0x18], ebx
add byte [ebp + 0x15], 1
mov eax, dword [edi + 0xc]
cmp eax, dword [ebp + 0x38]
jle 0x47751b
mov ecx, dword [esp + 0x28]
mov dword [ebp + 0x38], eax
mov dword [ebp + 0x3c], ecx
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x40]
push 0
push 0
push edx
push eax
push 0xffffffffffffffff
push ecx
push edi
push 1
push 0
push 0x6a
push ebp
call fcn.00476850
add esp, 0x2c
test eax, eax
jne 0x477b64
cmp dword [esp + 0x64], 0
jne 0x477937
mov edi, dword [esp + 0x10]
test byte [edi + 0x22], 0x10
mov ebx, dword [esp + 0x14]
je 0x477579
mov edx, dword [esp + 0x3c]
push 0
push edx
push 0
push 0x75
mov esi, ebx
call fcn.00438870
add esp, 0x10
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x47769a
cmp dword [esp + 0x4c], 0
je 0x4775f0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x30]
push ecx
push eax
push edx
push 3
mov esi, ebx
call fcn.00438870
add esp, 0x10
mov eax, dword [esp + 0x10]
test byte [eax + 0x22], 0x10
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
push 0
mov esi, ebx
jne 0x477675
push 0
push edi
push 0x47
call fcn.00438870
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
push ecx
push edi
push edx
push 0x1b
mov dword [esp + 0x48], eax
call fcn.00438870
mov eax, dword [esp + 0x48]
add esp, 0x20
mov ecx, ebx
call fcn.0042ff10
jmp 0x477687
cmp dword [esp + 0xb8], 0
je 0x47760c
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x6c]
push 0
push ecx
add edx, eax
push edx
push 9
jmp 0x477599
mov ecx, dword [esp + 0xb4]
mov eax, dword [esp + 0x34]
mov edx, dword [ecx + 0xc]
mov edi, dword [esp + 0x18]
shl eax, 4
mov eax, dword [eax + edx]
mov ecx, ebp
call fcn.00439af0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0xc]
sub eax, 1
call fcn.0042ff50
test eax, eax
je 0x4775a3
cmp byte [eax], 0x75
jne 0x4775a3
mov ecx, dword [esp + 0x10]
test byte [ecx + 0x22], 0x10
jne 0x4775a3
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x14]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x48]
mov ecx, edi
mov byte [eax], 0x1b
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
jmp 0x4776cc
mov eax, dword [ebx + 0xc]
add eax, 2
push eax
push edi
push 0x46
call fcn.00438870
add esp, 0x10
push 0
push 0
push edi
push 0x27
mov esi, ebx
call fcn.00438870
add esp, 0x10
jmp 0x4776d4
test byte [edi + 0x22], 0x10
mov edi, dword [esp + 0x18]
mov esi, ebx
je 0x4776b7
push 0
push edi
push 0
push 0x75
call fcn.00438870
add esp, 0x10
jmp 0x4776d4
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
push ecx
push edi
push edx
push 0x1b
call fcn.00438870
add esp, 0x10
mov dword [esp + 0x68], 1
cmp dword [esp + 0x48], 0
jle 0x4776f0
mov eax, dword [esp + 0x48]
mov esi, dword [ebp + 0xc]
push 0
push edi
push eax
push 0x2e
call fcn.00438870
add esp, 0x10
mov ecx, dword [esp + 0x10]
xor eax, eax
cmp dword [ecx + 0xc], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], eax
jle 0x4777a0
mov dword [esp + 0x1c], eax
add edi, 1
mov edi, edi
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
cmp esi, dword [eax + 8]
jne 0x477728
push 0
push edi
push 0
push 0x75
mov esi, ebx
jmp 0x477778
mov ecx, dword [esp + 0xbc]
test ecx, ecx
jne 0x477837
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x1c]
cmp byte [edx + eax + 0x13], cl
je 0x47782f
add dword [esp + 0x24], 1
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x10]
mov edx, dword [esp + 0x1c]
mov eax, dword [ecx + edx + 4]
push edi
push eax
push ebp
call fcn.00453f20
add esp, 0xc
cmp eax, edi
je 0x477780
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x477780
push 0
push edi
push eax
push 9
call fcn.00438870
add esp, 0x10
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
add dword [esp + 0x1c], 0x14
add eax, 1
add edi, 1
cmp eax, dword [ecx + 0xc]
mov dword [esp + 0x18], eax
jl 0x477710
mov edx, dword [esp + 0x10]
test byte [edx + 0x22], 0x10
je 0x4778d6
mov edi, edx
push edi
mov esi, ebp
call fcn.0043b630
mov eax, dword [edi + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 0xc]
push ecx
add eax, 2
push eax
push 1
push 0x7b
mov esi, ebx
call fcn.00438870
mov ecx, dword [ebx + 0x14]
mov edi, dword [ebx]
add esp, 0x14
test ecx, ecx
je 0x4778c6
cmp byte [edi + 0x1e], 0
jne 0x4778c6
test eax, eax
jge 0x477800
mov eax, dword [ebx + 0xc]
sub eax, 1
js 0x477937
lea edx, [eax + eax*4]
movsx eax, byte [ecx + edx*4 + 1]
lea esi, [ecx + edx*4]
mov ecx, dword [esi + 0x10]
call fcn.00438bf0
mov eax, dword [esp + 0x28]
xor ecx, ecx
cmp eax, ecx
mov dword [esi + 0x10], ecx
jne 0x4778bd
mov dword [esi + 0x10], ecx
mov byte [esi + 1], cl
jmp 0x477937
mov eax, esi
sub eax, dword [esp + 0x24]
jmp 0x47785a
mov edx, dword [ecx + 4]
xor eax, eax
test edx, edx
jle 0x477862
mov ecx, dword [ecx]
add ecx, 4
cmp dword [ecx], esi
je 0x477853
add eax, 1
add ecx, 8
cmp eax, edx
jl 0x477845
mov ecx, dword [esp + 0xbc]
test eax, eax
jl 0x47774d
cmp dword [esp + 0x2c], 0
je 0x47774d
test ecx, ecx
je 0x47787a
cmp eax, dword [ecx + 4]
jge 0x47774d
cmp dword [esp + 0x4c], 0
je 0x477891
mov ecx, dword [esp + 0x30]
push edi
push eax
push ecx
push 3
mov esi, ebx
jmp 0x477778
cmp dword [esp + 0xb8], 0
je 0x4778a8
mov edx, dword [esp + 0x6c]
add eax, edx
mov esi, ebx
jmp 0x477772
mov ecx, dword [esp + 0xb4]
mov edx, dword [ecx + 0xc]
shl eax, 4
mov eax, dword [eax + edx]
jmp 0x47775c
mov dword [esi + 0x10], eax
mov byte [esi + 1], 0xf6
jmp 0x477937
mov ecx, dword [esp + 0x28]
mov eax, 0xfffffff6
call fcn.00438bf0
jmp 0x477937
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0xc0]
mov esi, dword [esp + 0x54]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x44]
xor edx, edx
cmp dword [esp + 0x34], edx
push eax
push ecx
setge dl
push 0
mov ecx, ebp
push edx
mov edx, dword [esp + 0x20]
push esi
push edi
push ebx
call fcn.0045a240
add esp, 0x1c
test byte [esp + 0x38], 2
je 0x477919
mov eax, dword [esp + 0x40]
jmp 0x47791c
or eax, 0xffffffff
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x10]
push ecx
push eax
push 0
push edi
push ebx
push edx
mov eax, esi
mov ecx, ebp
call fcn.00448040
add esp, 0x18
mov eax, dword [esp + 0x50]
test byte [eax + 0xc], 0x80
mov esi, dword [esp + 0x14]
je 0x477958
mov ecx, dword [esp + 0x70]
push 0
push 1
push ecx
push 0x2b
call fcn.00438870
add esp, 0x10
cmp dword [esp + 0x38], 0
je 0x477997
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x40]
push 0
push 0
push edx
mov edx, dword [esp + 0x1c]
push eax
push 0xffffffffffffffff
push ecx
push edx
push 2
push 0
push 0x6a
push ebp
call fcn.00476850
add esp, 0x2c
test eax, eax
jne 0x477b64
mov esi, dword [esp + 0x14]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x4779b0
mov ecx, dword [esp + 0x20]
lea edx, [ecx*4 + 4]
mov ecx, dword [esi + 0xc]
sub eax, edx
mov dword [eax], ecx
cmp dword [esp + 0x4c], 0
je 0x4779fb
mov edx, dword [esp + 0x5c]
mov edi, dword [esp + 0x30]
push 0
push edx
push edi
push 0x6b
call fcn.00438870
mov eax, dword [esp + 0x70]
add esp, 0x10
test eax, eax
jl 0x4779ea
mov edx, dword [esi + 0xc]
cmp edx, eax
jle 0x4779ea
mov ecx, dword [esi + 0x14]
cmp dword [esp + 0xb8], 0
je 0x477a35
mov ecx, dword [esp + 0x5c]
push 0
push ecx
push 0
push 0x61
call fcn.00438870
mov eax, dword [esp + 0x70]
add esp, 0x10
test eax, eax
jl 0x477a35
mov edx, dword [esi + 0xc]
cmp edx, eax
jle 0x477a35
mov ecx, dword [esi + 0x14]
test ecx, ecx
je 0x477a35
lea eax, [eax + eax*4]
mov dword [ecx + eax*4 + 8], edx