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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5ac
mov eax, dword [0x534014]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, ecx
push esi
push edi
push 3
mov eax, dword [ebx + 0x4c]
mov esi, dword [eax + 4]
mov ecx, esi
mov dword [ebp - 0x570], esi
mov eax, dword [esi]
call dword [eax + 0xc]
mov edi, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x568], edi
test edi, edi
jle 0x470c53
mov dword [ebp - 0x578], 4
cmp edi, 4
jge 0x46f8bc
mov ecx, dword [ebx + 0x4c]
call fcn.00455d60
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00426f36
mov esp, ebp
pop ebp
ret 4
mov eax, dword [esi]
lea ecx, [ebp - 0x578]
push ecx
lea ecx, [ebp - 0x5a8]
push ecx
push 0
push 3
mov ecx, esi
call dword [eax + 0x14]
test eax, eax
je 0x470c19
cmp dword [ebp - 0x5a8], 0xffffffff
je 0x46fa00
push 1
lea eax, [ebx + 0x24c]
push 1
push eax
call fcn.0052bdd0
add esp, 0xc
test eax, eax
jne 0x46f91e
mov ecx, dword [ebx + 0x4c]
call fcn.00455e90
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00426f36
mov esp, ebp
pop ebp
ret 4
mov dword [ebx + 0x224], 1
mov eax, 0xffff
mov dword [ebp - 0x594], 0xffffffff
mov word [ebp - 0x590], ax
mov dword [ebp - 0x58c], 0
mov dword [ebp - 0x588], 0
mov dword [ebp - 0x584], 0
mov dword [ebp - 0x580], 0
mov dword [ebp - 0x578], 0x18
cmp edi, 0x18
jl 0x46f89f
mov eax, dword [esi]
lea ecx, [ebp - 0x578]
push ecx
lea ecx, [ebp - 0x594]
push ecx
push 0
push 3
mov ecx, esi
call dword [eax + 0x14]
test eax, eax
je 0x470c19
movzx eax, word [ebp - 0x594]
mov word [ebx + 0x1d8], ax
movzx eax, word [ebp - 0x592]
mov word [ebx + 0x1dc], ax
movzx eax, word [ebp - 0x590]
mov word [ebx + 0x1e0], ax
mov eax, dword [ebp - 0x58c]
mov dword [ebx + 0x1e4], eax
mov eax, dword [ebp - 0x588]
mov dword [ebx + 0x1e8], eax
mov eax, dword [ebp - 0x584]
mov dword [ebx + 0x1ec], eax
mov eax, dword [ebp - 0x580]
mov dword [ebp - 0x574], 0
mov dword [ebx + 0x1f0], eax
jmp 0x46fa73
mov dword [ebp - 0x578], 0x40
cmp edi, 0x40
jl 0x46f89f
mov eax, dword [esi]
mov ecx, esi
mov edx, dword [eax + 0x14]
lea eax, [ebp - 0x578]
push eax
lea eax, [ebx + 0x1cc]
push eax
push 0
push 3
call edx
test eax, eax
je 0x470c19
mov esi, dword [ebx + 0x1d0]
mov dword [ebp - 0x574], esi
cmp esi, 0x13091f3
jb 0x46f89f
mov eax, dword [ebx + 0x4c]
cmp dword [eax + 0x214], 0x13091f3
jb 0x46f89f
mov dword [ebx + 0x224], 0
cmp esi, 0x130ba2e
jae 0x46fa7d
mov dword [ebx + 0x200], 0
mov edx, dword [ebx + 0x3bc]
movzx ecx, word [ebx + 0x204]
test edx, edx
je 0x46faaf
mov al, byte [ebx + 0x3c4]
and ecx, 0xfffb
and al, 1
movzx eax, al
shl ax, 2
or ax, cx
mov word [ebx + 0x204], ax
jmp 0x46fabb
shr cl, 2
and cl, 1
mov byte [ebx + 0x3c4], cl
mov eax, dword [ebp - 0x578]
mov edi, dword [ebx + 0x1e4]
mov dword [ebp - 0x54c], eax
mov eax, dword [ebx + 0x1fc]
mov ecx, dword [ebp - 0x54c]
add eax, edi
add eax, dword [ebx + 0x1f4]
add eax, dword [ebx + 0x1f0]
add eax, dword [ebx + 0x1ec]
add eax, dword [ebx + 0x1e8]
add eax, ecx
add eax, dword [ebx + 0x200]
cmp dword [ebp - 0x568], eax
jne 0x46f89f
test edx, edx
je 0x46fb3a
mov ecx, dword [ebx + 0x4c]
cmp dword [ecx + 0x214], 0x1306c1f
jne 0x46fb34
cmp dword [ebp + 8], 0
je 0x46fc01
mov dword [ecx + 0x214], 0x1312e94
mov edi, dword [ebx + 0x1e4]
mov ecx, dword [ebp - 0x54c]
test edi, edi
jle 0x470117
mov eax, dword [ebp - 0x568]
sub eax, ecx
cmp eax, edi
jl 0x46f89f
cmp dword [ebp - 0x574], 0x130ba2e
lea edx, [ebx + 0x60]
mov byte [ebp - 0x559], 0
jae 0x46ff36
xor eax, eax
mov dword [ebp - 0x58c], 0
xor esi, esi
mov dword [ebp - 0x560], eax
push edi
mov ecx, edx
mov dword [ebp - 0x558], esi
mov dword [ebp - 0x594], esi
mov dword [ebp - 0x590], eax
mov dword [ebp - 0x588], eax
mov dword [ebp - 0x584], eax
mov word [ebp - 0x580], 0x101
call fcn.0045f4e0
test eax, eax
je 0x46ff12
mov esi, dword [ebx + 0x1e4]
lea edx, [ebx + 0x1e4]
test esi, esi
js 0x46ff12
jle 0x46fc1f
push esi
lea ecx, [ebp - 0x594]
call fcn.004548b0
mov ecx, dword [ebp - 0x594]
mov dword [ebp - 0x558], ecx
test eax, eax
je 0x46ff12
mov edi, dword [ebp - 0x590]
lea edx, [ebx + 0x1e4]
mov dword [ebp - 0x560], edi
jmp 0x46fc23
push 0
push 0xb
call fcn.00455e80
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00426f36
mov esp, ebp
pop ebp
ret 4
xor edi, edi
xor ecx, ecx
lea eax, [esi + edi]
mov dword [ebp - 0x550], eax
test ecx, ecx
jne 0x46fc3e
xor eax, eax
mov dword [ebp - 0x558], ecx
mov dword [ebp - 0x550], eax
mov ecx, dword [ebp - 0x570]
push edx
push edi
push dword [ebp - 0x54c]
mov eax, dword [ecx]
push 3
call dword [eax + 0x14]
test eax, eax
jne 0x46fc64
mov ecx, dword [ebx + 0x4c]
call fcn.00455ea0
jmp 0x46ff1a
mov edx, dword [ebp - 0x550]
cmp edi, edx
jae 0x46fed4
lea esi, [edi + 0x30]
mov eax, esi
cmp eax, edx
jae 0x46fc8a
jmp 0x46fc80
cmp byte [eax], 0
je 0x46fc97
inc eax
cmp eax, edx
jb 0x46fc80
mov ecx, dword [ebx + 0x4c]
call fcn.00455d60
jmp 0x46ff1a
mov ecx, esi
lea eax, [ecx + 1]
mov dword [ebp - 0x548], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x46fca2
sub ecx, dword [ebp - 0x548]
lea eax, [edi + 0x31]
add eax, ecx
cmp eax, edx
jae 0x46fc8a
cmp byte [eax], 0
je 0x46fccf
inc eax
cmp eax, edx
jb 0x46fcb8
mov ecx, dword [ebx + 0x4c]
call fcn.00455d60
jmp 0x46ff1a
mov ecx, esi
lea eax, [ecx + 1]
mov dword [ebp - 0x548], eax
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x46fce0
sub ecx, dword [ebp - 0x548]
add ecx, 0x31
add ecx, edi
test esi, esi
je 0x46fe9f
test ecx, ecx
jne 0x46fd03
mov ecx, 0x401692
mov edx, esi
lea edi, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x46fd08
sub edx, edi
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x46fd14
sub ecx, edi
lea edi, [edx + 0x45]
add edi, ecx
lea ecx, [ebx + 0x60]
and edi, 0xfffffffc
jl 0x46fd36
mov eax, dword [ecx + 8]
sub eax, dword [ecx + 4]
add eax, dword [ecx]
cmp edi, eax
jle 0x46fd47
push edi
call fcn.004548b0
test eax, eax
je 0x46fe93
lea ecx, [ebx + 0x60]
mov eax, dword [ecx + 4]
push edi
push 0
push eax
mov dword [ebp - 0x548], eax
call fcn.00427ec0
mov ecx, dword [ebx + 0x64]
add esp, 0xc
add ecx, edi
cmp dword [ebx + 0x60], 0
jne 0x46fd70
mov dword [ebx + 0x60], 0
xor ecx, ecx
mov edi, dword [ebp - 0x560]
mov dword [ebx + 0x64], ecx
mov edx, dword [ebp - 0x548]
test edx, edx
je 0x46fe99
mov cx, word [edx + 0x20]
mov dword [edx + 4], 0xffff
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0xffffffff
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0xffff
mov dword [edx + 0x18], 0
mov dword [edx + 0x1c], 0
mov dword [edx], 0
movzx eax, word [edi + 4]
mov word [edx + 4], ax
mov eax, dword [edi + 8]
mov dword [edx + 8], eax
mov eax, dword [edi + 0xc]
mov dword [edx + 0xc], eax
mov eax, dword [edi + 0x10]
mov dword [edx + 0x10], eax
movzx eax, word [edi + 0x14]
mov word [edx + 0x14], ax
mov eax, 0xff00
and cx, ax
movzx eax, word [edi + 0x18]
and ax, 1
or cx, ax
mov word [edx + 0x20], cx
mov ecx, esi
mov al, byte [edi + 0x19]
mov byte [edx + 0x21], al
movzx eax, word [edi + 0x1a]
mov word [edx + 0x22], ax
mov eax, dword [edi + 0x1c]
mov dword [edx + 0x24], eax
mov eax, dword [edi + 0x20]
mov dword [edx + 0x28], eax
mov dword [edx + 0x2c], 0
movzx eax, word [edi + 0x28]
mov word [edx + 0x30], ax
xor eax, eax
mov word [edx + 0x32], ax
mov dword [edx + 0x34], eax
mov dword [edx + 0x38], eax
mov dword [edx + 0x3c], eax
lea eax, [ecx + 1]
mov dword [ebp - 0x548], eax
mov edi, edi
mov al, byte [ecx]
inc ecx
test al, al
jne 0x46fe40
sub ecx, dword [ebp - 0x548]
lea eax, [edi + 0x31]
add eax, ecx
mov ecx, eax
mov dword [ebp - 0x56c], eax
lea eax, [ecx + 1]
mov dword [ebp - 0x548], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x46fe63
mov eax, dword [ebp - 0x56c]
sub ecx, dword [ebp - 0x548]
add eax, 4
add eax, ecx
and eax, 0xfffffffc
sub eax, edi
sub eax, 0x30
push eax
lea eax, [edx + 0x40]
push esi
push eax
call fcn.0042fd00
add esp, 0xc
jmp 0x46fe99
mov edi, dword [ebp - 0x560]
mov edx, dword [ebp - 0x550]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x46fea2
sub esi, ecx
add edi, 0x31
add esi, edi
mov ecx, esi
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x46feb5
sub ecx, edi
lea edi, [ecx + 4]
add edi, esi
and edi, 0xfffffffc
mov dword [ebp - 0x560], edi
cmp edi, edx
jb 0x46fc72
mov eax, dword [ebp - 0x54c]
lea edi, [ebx + 0x60]
add eax, dword [ebx + 0x1e4]
mov esi, dword [edi]
mov dword [ebp - 0x54c], eax
mov eax, dword [edi + 4]
sub eax, esi
mov dword [ebx + 0x1e4], eax
mov eax, dword [ebp - 0x558]
test eax, eax
je 0x46ffb2
push eax
call fcn.00426f44
add esp, 4
jmp 0x46ffb2
mov ecx, dword [ebx + 0x4c]
call fcn.00455e90
mov eax, dword [ebp - 0x558]
test eax, eax
je 0x46f8a7
push eax
call fcn.00426f44
add esp, 4
jmp 0x46f8a7
mov eax, dword [edx + 8]
lea ecx, [edx + 4]
sub eax, dword [ecx]
add eax, dword [edx]
mov dword [ebp - 0x548], ecx
cmp edi, eax
jle 0x46ff63
push edi
mov ecx, edx
call fcn.004548b0
test eax, eax
je 0x46f901
mov ecx, dword [ebp - 0x548]
lea edx, [ebx + 0x60]
cmp dword [edx], 0
mov esi, dword [ecx]
lea eax, [edi + esi]
jne 0x46ff75
mov dword [edx], 0
xor eax, eax
mov dword [ecx], eax
lea edi, [ebx + 0x1e4]
mov ecx, dword [ebp - 0x570]
push edi
push esi
push dword [ebp - 0x54c]
mov eax, dword [ecx]
push 3
call dword [eax + 0x14]
test eax, eax
je 0x470c19
mov eax, dword [ebp - 0x54c]
add eax, dword [edi]
lea edi, [ebx + 0x60]
mov dword [ebp - 0x54c], eax
mov byte [ebp - 0x559], 1
mov ecx, dword [ebx + 0x4c]
mov eax, dword [ecx]
call dword [eax + 0x5c]
test eax, eax
jne 0x46ffd1
push edi
call fcn.0046ded0
add esp, 4
test eax, eax
je 0x46f901
mov esi, dword [edi]
mov edi, dword [ebx + 0x64]
cmp esi, edi
jae 0x470117
lea esp, [esp]
cmp byte [ebp - 0x559], 0
mov dword [ebp - 0x5ac], esi
je 0x470037
lea ecx, [esi + 0x40]
mov eax, ecx
cmp eax, edi
jae 0x46f89f
lea esp, [esp]
cmp byte [eax], 0
je 0x47000f
inc eax
cmp eax, edi
jb 0x470000
jmp 0x46f89f
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x470012
sub ecx, edx
lea eax, [esi + 0x41]
add eax, ecx
cmp eax, edi
jae 0x46f89f
cmp byte [eax], 0
je 0x470037
inc eax
cmp eax, edi
jb 0x470028
jmp 0x46f89f
mov dword [esi], 0
lea ecx, [ebx + 0x78]
mov eax, 0xfffe
lea edx, [ecx + 4]
and word [esi + 0x20], ax
xor eax, eax
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], eax
mov eax, dword [ecx + 8]
sub eax, dword [edx]
add eax, dword [ecx]
mov dword [ebp - 0x548], edx
cmp eax, 4
jge 0x47007e
push 4
call fcn.004548b0
test eax, eax
je 0x46f901
mov edx, dword [ebp - 0x548]
lea ecx, [ebx + 0x78]
mov eax, dword [edx]
mov dword [ebp - 0x548], eax
add eax, 4
cmp dword [ecx], 0
jne 0x470096
mov dword [ecx], 0
xor eax, eax
mov dword [edx], eax
lea eax, [ebp - 0x5ac]
push 4
push eax
push dword [ebp - 0x548]
call fcn.00454cd0
lea ecx, [esi + 0x40]
add esp, 0xc
mov edx, ecx
lea eax, [edx + 1]
mov dword [ebp - 0x548], eax
lea ecx, [ecx]
mov al, byte [edx]
inc edx
test al, al
jne 0x4700c0
sub edx, dword [ebp - 0x548]
lea eax, [ecx + 1]
mov dword [ebp - 0x548], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4700d6
sub ecx, dword [ebp - 0x548]
add ecx, 0x41
add ecx, esi
lea eax, [ecx + 1]
mov dword [ebp - 0x548], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4700f1
sub ecx, dword [ebp - 0x548]
lea eax, [edx + 5]
inc word [ebx + 0x58]
add eax, ecx
and eax, 0xfffffffc
add esi, 0x40
add esi, eax
cmp esi, edi
jb 0x46ffe0
mov ecx, dword [ebx + 0x1e8]
mov edx, dword [ebp - 0x568]
mov edi, dword [ebp - 0x54c]
test ecx, ecx
jle 0x4703eb
mov eax, edx
sub eax, edi
cmp eax, ecx
jl 0x46f89f
mov esi, edi
mov dword [ebx + 0xa8], edi
add edi, ecx
mov dword [ebp - 0x554], esi
cmp dword [ebx + 0x3bc], 0
mov dword [ebp - 0x54c], edi
je 0x4703eb
cmp dword [ebx + 0x90], 0
lea edi, [ebx + 0x90]
jne 0x4703e5
mov eax, dword [ebx + 0x4c]
lea edx, [ebp - 0x550]
push edx
lea edx, [ebp - 0x548]
push edx
mov ecx, dword [eax + 4]
mov dword [ebp - 0x550], 4
push esi
push 3
mov eax, dword [ecx]
mov dword [ebp - 0x57c], ecx
call dword [eax + 0x14]
test eax, eax
jne 0x4701b0
mov ecx, dword [ebx + 0x4c]
call fcn.00455ea0
jmp 0x46f8a7
mov eax, dword [ebp - 0x548]
cmp eax, 0xf12eba2d
je 0x47030d
cmp eax, 0xf13151e4
je 0x470312
mov eax, 0xcccccccd
mov byte [ebx + 0x158], 1
mul dword [ebx + 0x1e8]
push 0
shr edx, 4
mov ecx, edi
mov dword [ebp - 0x558], edx
lea eax, [edx*8]
sub eax, edx
shl eax, 2
push eax
mov dword [ebp - 0x550], eax
call fcn.004535d0
test eax, eax
jne 0x470214
mov ecx, dword [ebx + 0x4c]
call fcn.00455e90
jmp 0x46f8a7
mov eax, dword [ebp - 0x558]
mov esi, dword [edi]
mov dword [ebp - 0x550], 0x14
test eax, eax
je 0x4702ee
mov edi, edi
mov ecx, dword [ebp - 0x57c]
lea edx, [ebp - 0x550]
push edx
dec eax
mov dword [ebp - 0x590], 0xffff
lea edx, [ebp - 0x590]
mov dword [ebp - 0x558], eax
mov eax, dword [ecx]
push edx
push dword [ebp - 0x554]
mov dword [ebp - 0x58c], 0
push 3
mov dword [ebp - 0x588], 0xffffffff
mov dword [ebp - 0x584], 0
mov dword [ebp - 0x580], 0xffff
call dword [eax + 0x14]
test eax, eax
je 0x4702f9
movzx eax, word [ebp - 0x590]
add dword [ebp - 0x554], 0x14
mov word [esi], ax
mov eax, dword [ebp - 0x58c]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x588]
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x584]
mov dword [esi + 0xc], eax
movzx eax, word [ebp - 0x580]
mov word [esi + 0x10], ax
xor eax, eax
mov word [esi + 2], ax
mov word [esi + 0x12], ax
mov eax, dword [ebp - 0x558]
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
add esi, 0x1c
test eax, eax
jne 0x470230
mov dword [ebx + 0x154], esi
jmp 0x4703df
mov ecx, dword [ebx + 0x4c]
call fcn.00455ea0
mov ecx, edi
call fcn.00450a40
jmp 0x46f8a7
cmp eax, 0xf13151e4
mov ecx, dword [ebx + 0x1e8]
sete al
add esi, dword [ebp - 0x550]
inc al
sub ecx, dword [ebp - 0x550]
mov byte [ebx + 0x158], al
mov dword [ebp - 0x56c], ecx
mov dword [ebp - 0x550], ecx
js 0x470207
mov eax, dword [edi + 8]
lea edx, [edi + 4]
sub eax, dword [edx]
add eax, dword [edi]
cmp ecx, eax
jle 0x470368
push ecx
mov ecx, edi
call fcn.004548b0
test eax, eax
je 0x470207
mov ecx, dword [ebp - 0x56c]
lea edx, [edi + 4]
mov eax, dword [edx]
add eax, ecx
mov ecx, dword [edi]
mov dword [ebp - 0x554], ecx
test ecx, ecx
jne 0x470382
mov dword [edi], ecx
xor eax, eax
mov dword [ebp - 0x554], ecx
mov ecx, dword [ebp - 0x57c]
mov dword [edx], eax
lea edx, [ebp - 0x550]
push edx
push dword [ebp - 0x554]
mov eax, dword [ecx]
push esi
push 3
call dword [eax + 0x14]
test eax, eax
jne 0x4703d3
mov ecx, dword [ebx + 0x4c]
call fcn.00455ea0
mov eax, dword [edi]
test eax, eax
je 0x4703ba
push eax
call fcn.00426f44
add esp, 4
mov dword [edi + 4], 0
mov dword [edi], 0
mov dword [edi + 8], 0
jmp 0x46f8a7
mov eax, dword [ebx + 0x94]
mov dword [ebx + 0x154], eax
mov edx, dword [ebp - 0x568]
mov edi, dword [ebp - 0x54c]
mov esi, dword [ebx + 0x1ec]
test esi, esi
je 0x470485
mov eax, edx
sub eax, edi
cmp eax, esi
jl 0x46f89f
cmp dword [ebx + 0x3bc], 0
jne 0x470479
lea edi, [ebx + 0x124]
test esi, esi
js 0x46f901
mov eax, dword [edi + 8]
lea ecx, [edi + 4]
sub eax, dword [ecx]
add eax, dword [edi]
cmp esi, eax
jle 0x47043d
push esi
mov ecx, edi
call fcn.004548b0
test eax, eax
je 0x46f901
lea ecx, [edi + 4]
mov eax, dword [ecx]
mov edx, dword [edi]
add eax, esi
test edx, edx
jne 0x47044b
mov dword [edi], edx
xor eax, eax
mov esi, dword [ebp - 0x570]
mov edi, dword [ebp - 0x54c]
mov dword [ecx], eax
lea ecx, [ebx + 0x1ec]
push ecx
mov eax, dword [esi]
mov ecx, esi
push edx
push edi
push 3
call dword [eax + 0x14]
test eax, eax
je 0x470c19
mov edx, dword [ebp - 0x568]
add edi, dword [ebx + 0x1ec]
mov dword [ebp - 0x54c], edi
mov ecx, dword [ebx + 0x1f0]
lea esi, [ebx + 0x1f0]
test ecx, ecx
jle 0x470932
mov eax, edx
sub eax, edi
cmp eax, ecx
jl 0x46f89f
cmp ecx, 0x7fffffff
ja 0x470207
push 0x4011f8
push ecx
call fcn.00427398
add esp, 8
mov dword [ebp - 0x560], eax
test eax, eax
je 0x470207
push 0
push 0
push eax
call fcn.00454cd0
push 0
call fcn.00426f44
mov ecx, dword [ebp - 0x570]
add esp, 0x10
mov eax, dword [ecx]
push esi
push dword [ebp - 0x560]
push edi
push 3
call dword [eax + 0x14]
test eax, eax
jne 0x470515
mov ecx, dword [ebx + 0x4c]
call fcn.00455ea0
push dword [ebp - 0x560]
call fcn.00426f44
add esp, 4
jmp 0x46f8a7
mov ecx, dword [esi]
add edi, ecx
mov edx, dword [ebp - 0x560]
mov dword [ebp - 0x54c], edi
mov dword [ebp - 0x554], ecx
lea edi, [ecx + edx]
mov dword [ebp - 0x56c], edi
cmp ecx, 4
jb 0x470557
movzx eax, word [ebx + 0x58]
cmp word [edx], ax
jne 0x470557
movzx esi, word [edx + 2]
add edx, 4
test ax, ax
jne 0x470572
test si, si
je 0x47084e
mov ecx, dword [ebx + 0x4c]
call fcn.00455d60
push dword [ebp - 0x560]
call fcn.00426f44
add esp, 4
jmp 0x46f8a7
mov esi, eax
lea eax, [esi + esi]
lea edi, [eax + edx]
lea eax, [edx + eax*2]
mov dword [ebp - 0x550], edi
cmp edx, edi
mov dword [ebp - 0x598], eax
mov edi, dword [ebp - 0x56c]
jae 0x470557
cmp dword [ebp - 0x550], eax
jae 0x470557
movzx eax, word [ebx + 0x58]
xor edx, edx
mov dword [ebp - 0x548], edx
cmp dx, ax
jae 0x4705c5
mov ecx, dword [ebp - 0x550]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
add edx, eax
sub esi, 1
jne 0x4705b2
mov ecx, dword [ebp - 0x554]
mov esi, dword [ebp - 0x598]
lea edx, [esi + edx*4]
mov dword [ebp - 0x564], edx
cmp dword [ebp - 0x550], esi
ja 0x470557
lea eax, [edx + 1]
cmp esi, eax
jae 0x470557
sub ecx, edx
add ecx, dword [ebp - 0x560]
mov dword [ebp - 0x554], ecx
je 0x47062b
push dword [ebp - 0x554]
lea ecx, [ebx + 0x13c]
call fcn.0045f4e0
test eax, eax
jne 0x47062b
mov ecx, dword [ebx + 0x4c]
call fcn.00455e90
push dword [ebp - 0x560]
call fcn.00426f44
add esp, 4
jmp 0x46f8a7
movzx eax, word [ebx + 0x58]
xor esi, esi
xor edx, edx
mov dword [ebp - 0x57c], 0
cmp si, ax
mov dword [ebp - 0x558], edx
jae 0x47084e
mov ecx, dword [ebp - 0x550]
movzx esi, dx
lea ecx, [ecx + esi*2]
mov dword [ebp - 0x548], ecx
movzx ecx, word [ecx]
mov dword [ebp - 0x554], ecx
movzx edx, cx
cmp word [ebp - 0x558], ax
jae 0x47055f
mov eax, dword [ebx + 0x15c]
mov esi, dword [eax + esi*4]
test esi, esi
je 0x47055f
cmp cx, word [esi + 0x30]
jbe 0x4706e4
mov eax, dword [esi + 0x34]
test eax, eax
je 0x4706a4
push eax
call fcn.00426f44
mov ecx, dword [ebp - 0x554]
add esp, 4
movzx eax, cx
mov edx, 4
xor ecx, ecx
mov dword [ebp - 0x59c], eax
mul edx
push 0x4011f8
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00427398
add esp, 8
mov dword [esi + 0x34], eax
test eax, eax
je 0x470610
mov ecx, dword [ebp - 0x554]
mov eax, dword [ebp - 0x59c]
jmp 0x4706e6
mov eax, edx
shl eax, 2
push eax
push 0
push dword [esi + 0x34]
mov word [esi + 0x30], cx
call fcn.00427ec0
mov ecx, dword [ebp - 0x548]
xor eax, eax
xor edx, edx
mov dword [ebp - 0x554], eax
add esp, 0xc
movzx ecx, word [ecx]
cmp dx, cx
jae 0x470830
jmp 0x470720
mov ecx, dword [ebp - 0x598]
movzx eax, ax
add eax, dword [ebp - 0x57c]
mov esi, dword [ecx + eax*4]
add esi, dword [ebp - 0x564]
mov dword [ebp - 0x59c], esi
cmp dword [ebp - 0x564], esi
ja 0x470557
cmp esi, edi
jae 0x470557
mov ecx, dword [ebx + 0x4c]
mov eax, dword [ecx]
call dword [eax + 0x5c]
test eax, eax
jne 0x4707dc
cmp esi, edi
jae 0x470557
movzx eax, byte [esi]
add eax, esi
cmp eax, edi
jae 0x470557
movzx esi, byte [esi]
mov eax, dword [ebp - 0x59c]
inc eax
push esi
push eax
lea eax, [ebp - 0x104]
push eax
lea edi, [esi + 1]
call fcn.0042fd00
push 0x400
lea eax, [ebp - 0x504]
mov byte [ebp + esi - 0x104], 0
push eax
lea eax, [ebp - 0x104]
push edi
push eax
call fcn.0046a120
add esp, 0x1c
lea eax, [ebp - 0x504]
mov ecx, ebx
push eax
push dword [ebp - 0x554]
push dword [ebp - 0x558]
call fcn.0046d3f0
test eax, eax
je 0x47055f
mov edi, dword [ebp - 0x56c]
jmp 0x470811
mov eax, esi
cmp eax, edi
jae 0x470557
cmp byte [eax], 0
je 0x4707f5
inc eax
cmp eax, edi
jb 0x4707e6
jmp 0x470557
push esi
push dword [ebp - 0x554]
mov ecx, ebx
push dword [ebp - 0x558]
call fcn.0046d3f0
test eax, eax
je 0x47055f
mov ecx, dword [ebp - 0x548]
mov eax, dword [ebp - 0x554]
inc eax
mov dword [ebp - 0x554], eax
movzx ecx, word [ecx]
cmp ax, cx
jb 0x470720
mov edx, dword [ebp - 0x558]
movzx eax, cx
inc edx
add dword [ebp - 0x57c], eax
movzx eax, word [ebx + 0x58]
mov ecx, eax
cmp dx, ax
jmp 0x470640
cmp dword [ebx + 0x3bc], 0
jne 0x470924
mov eax, dword [ebx + 0x30c]
lea esi, [ebx + 0x30c]
test eax, eax
je 0x470874
push eax
call fcn.00426f44
add esp, 4
push 0x4011f8
push 1
mov dword [esi + 4], 0
mov dword [esi], 0
mov dword [esi + 8], 0
call fcn.00427398
add esp, 8
test eax, eax
jne 0x4708a2
mov dword [esi + 4], eax
mov dword [esi], eax
jmp 0x4708c5
mov edx, dword [esi]
mov dword [esi], eax
mov dword [esi + 4], eax
cmp edx, eax
je 0x4708be
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x4708be
push eax
push edx
push dword [esi + 0x10]
call ecx
add esp, 0xc
mov dword [esi + 8], 1
push 0
lea ecx, [esi + 0x40]
call fcn.00455ec0
mov eax, dword [esi + 0x40]
test eax, eax
je 0x4708ed
push eax
call fcn.00426f44
add esp, 4
mov dword [esi + 0x40], 0
mov dword [esi + 0x48], 0
push 0
lea ecx, [esi + 0x4c]
call fcn.00455ec0
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x470915
push eax
call fcn.00426f44
add esp, 4
mov dword [esi + 0x4c], 0
mov dword [esi + 0x54], 0
lea ecx, [esi + 0x70]
call fcn.0046d790
mov ecx, esi
call fcn.00458fd0
push dword [ebp - 0x560]
call fcn.00426f44
add esp, 4
mov ecx, dword [ebx + 0x1f4]
mov esi, dword [ebp - 0x568]
mov edx, dword [ebp - 0x54c]
test ecx, ecx
jle 0x47095c
mov eax, esi
sub eax, edx
cmp eax, ecx
jl 0x46f89f
add edx, ecx
mov dword [ebp - 0x54c], edx
mov ecx, dword [ebx + 0x200]
test ecx, ecx
jle 0x470bc5
mov eax, esi
sub eax, edx
cmp eax, ecx
jl 0x46f89f
cmp ecx, 0x7fffffff
ja 0x470207
push 0x4011f8
push ecx
call fcn.00427398
mov esi, eax
add esp, 8
mov dword [ebp - 0x598], esi
test esi, esi
je 0x470207
push 0
push 0
push esi
call fcn.00454cd0
push 0
call fcn.00426f44
mov ecx, dword [ebp - 0x570]
lea edx, [ebx + 0x200]
add esp, 0x10
mov edi, esi
mov eax, dword [ecx]
push edx
push esi
push dword [ebp - 0x54c]
push 3
call dword [eax + 0x14]
test eax, eax
jne 0x4709eb
mov ecx, dword [ebx + 0x4c]
call fcn.00455ea0
push esi
call fcn.00426f44
add esp, 4
jmp 0x46f8a7
mov eax, dword [ebx + 0x200]
lea esi, [ebx + 0x25c]
add dword [ebp - 0x54c], eax
lea ecx, [esi + 0x18]
mov dword [ebp - 0x548], eax
mov eax, dword [esi]
mov dword [esi + 4], eax
call fcn.00456920
push 0
lea ecx, [esi + 0x40]
mov dword [esi + 0x6c], 0
mov dword [esi + 0x68], 0
mov dword [esi + 0x64], 0
mov byte [esi + 0x61], 0
mov byte [esi + 0x63], 1
call fcn.00455ec0
cmp dword [ebp - 0x548], 8
jb 0x470bb7
mov ecx, dword [ebp - 0x598]
mov byte [esi + 0x60], 0
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x564], edx
mov edx, dword [ebp - 0x548]
mov dword [ebp - 0x5a0], eax
cmp eax, 0xeffeeffe
jne 0x470aa1
mov eax, dword [ebp - 0x564]
test eax, eax
je 0x470aa1
cmp eax, 2
ja 0x470bb7
cmp eax, dword [esi + 0xac]
jae 0x470a93
mov byte [esi + 0x60], 1
lea edi, [ecx + 8]
sub edx, 8
jmp 0x470aa5
mov dword [esi + 0xac], eax
lea edi, [ecx + 8]
sub edx, 8
jmp 0x470aa5
mov byte [esi + 0x60], 1
lea eax, [edx + edi]
mov dword [ebp - 0x56c], eax
mov eax, dword [esi + 4]
sub eax, dword [esi]
jne 0x470bb7
cmp edx, 4
jb 0x470bb7
mov ecx, dword [edi]
lea eax, [edx - 4]
add edi, 4
mov dword [ebp - 0x548], ecx
cmp ecx, eax
jg 0x470bb7
test ecx, ecx
js 0x470bb7
test edi, edi
je 0x470bb7
mov eax, dword [esi + 8]
sub eax, dword [esi + 4]
add eax, dword [esi]
cmp ecx, eax
jle 0x470b0a
push ecx
mov ecx, esi
call fcn.004548b0
test eax, eax
je 0x470bb7
mov ecx, dword [ebp - 0x548]
mov edx, dword [esi + 4]
mov dword [ebp - 0x564], edx
add edx, ecx
cmp dword [esi], 0
jne 0x470b22
mov dword [esi], 0
xor edx, edx
push ecx
mov dword [esi + 4], edx
push edi
push dword [ebp - 0x564]
call fcn.00454cd0
add edi, dword [ebp - 0x548]
add esp, 0xc
mov eax, dword [ebp - 0x56c]
sub eax, edi
cmp eax, 4
jb 0x470bb7
mov ecx, dword [edi]
add edi, 4
mov dword [ebp - 0x564], ecx
cmp ecx, 0x20000000
ja 0x470bb7
shl ecx, 2
add eax, 0xfffffffc
cmp eax, ecx
jb 0x470bb7
push dword [ebp - 0x564]
lea ecx, [esi + 0x4c]
call fcn.00455ec0
test eax, eax
je 0x470bb7
mov eax, dword [esi + 0x50]
shl eax, 2
push eax
push edi
push dword [esi + 0x4c]
call fcn.0042fd00
mov eax, dword [esi + 0x50]
add esp, 0xc
lea ecx, [edi + eax*4]
mov eax, dword [ebp - 0x56c]
sub eax, ecx
cmp eax, 4
jb 0x470bb7
mov eax, dword [ecx]
mov ecx, dword [esi + 0x50]
mov dword [esi + 0x58], eax
cmp eax, ecx
jae 0x470bb7
cmp byte [esi + 0x60], 0
je 0x470bb7
push ecx
mov ecx, esi
call fcn.00458b50
push dword [ebp - 0x598]
call fcn.00426f44
add esp, 4
mov eax, dword [ebx + 0x1fc]
test eax, eax
jle 0x470c36
mov edx, dword [ebp - 0x568]
mov ecx, dword [ebp - 0x54c]
sub edx, ecx
cmp edx, eax
jl 0x46f89f
cmp eax, 0x16
jl 0x470bef
mov eax, 0x16
mov esi, dword [ebp - 0x570]
mov dword [ebp - 0x564], eax
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
lea eax, [ebp - 0x564]
push eax
lea eax, [ebx + 0x20c]
push eax
push ecx
push 3
mov ecx, esi
call edx
test eax, eax
jne 0x470c3c
mov ecx, dword [ebx + 0x4c]
call fcn.00455ea0
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00426f36
mov esp, ebp
pop ebp
ret 4
mov esi, dword [ebp - 0x570]
cmp dword [ebp - 0x574], 0x1310977
sbb eax, eax
neg eax
mov dword [ebx + 0xb0], eax
mov eax, dword [ebp + 8]
test eax, eax
je 0x470d26
mov ecx, ebx
call fcn.0046d960
test eax, eax
je 0x46f8a7
mov eax, dword [ebx + 0x4c]
test byte [eax + 0x2e1], 2
je 0x470c80
mov dword [ebx + 0xac], 1
push 0x40
lea eax, [ebp - 0x544]
mov dword [ebp - 0x574], 3
push 0
push eax
call fcn.00427ec0
add esp, 0xc
mov dword [ebp - 0x544], 0xffffffff
mov eax, 0xffff
mov dword [ebp - 0x540], 0x1310977
lea ecx, [ebp - 0x574]
mov word [ebp - 0x538], ax
mov word [ebp - 0x534], ax
push ecx
push 0x40
mov word [ebp - 0x530], ax
lea ecx, [ebp - 0x544]
mov eax, dword [esi]
push ecx
push 3
mov ecx, esi
call dword [eax + 0x20]
test eax, eax
je 0x470cfa
mov eax, dword [esi]
lea ecx, [ebp - 0x574]
push ecx
mov ecx, esi
call dword [eax + 0x30]
test eax, eax
jne 0x470d26
mov eax, dword [ebp - 0x574]
mov ecx, dword [ebx + 0x4c]
push 0
push dword [eax*4 + 0x407ee8]
call fcn.00455e80
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00426f36
mov esp, ebp
pop ebp
ret 4
cmp dword [ebx + 0x3bc], 0
je 0x470e3d
mov eax, dword [ebx]
lea ecx, [ebp - 0x564]
push ecx
mov ecx, ebx
call dword [eax + 0x14]
test eax, eax
je 0x46f8a7
mov eax, dword [ebx]
lea ecx, [ebp - 0x59c]
push ecx
mov ecx, ebx
call dword [eax + 0x18]
test eax, eax
je 0x46f8a7
mov eax, dword [ebp - 0x564]
mov ecx, ebx
mov dword [ebx + 0x160], eax
mov eax, dword [ebp - 0x59c]
mov dword [ebx + 0x164], eax
call fcn.00469cb0
test eax, eax
je 0x46f8a7
mov ecx, ebx
call fcn.00469c70
xor eax, eax
lea esi, [ebx + 0x124]
mov dword [ebp - 0x5a4], eax
mov eax, dword [esi + 8]
sub eax, dword [esi + 4]
add eax, dword [esi]
cmp eax, 4
jge 0x470db9
push 4
mov ecx, esi
call fcn.004548b0
test eax, eax
je 0x46f901
cmp dword [esi], 0
mov ecx, dword [esi + 4]
lea eax, [ecx + 4]
jne 0x470dcc
mov dword [esi], 0
xor eax, eax
mov dword [esi + 4], eax
lea eax, [ebp - 0x5a4]
push 4
push eax
push ecx
call fcn.00454cd0
mov eax, 0xfffe
add esp, 0xc
and word [ebx + 0x204], ax
mov eax, dword [ebx + 0x4c]
test byte [eax + 0x2e0], 8
je 0x470e2e
mov ecx, ebx
call fcn.00469cb0
push 0xffffc
lea ecx, [ebx + 0x478]
call fcn.00457170
mov dword [ebx + 0x484], eax
test eax, eax
je 0x46f901
push 0xffffc
push 0
push eax
call fcn.00427ec0
add esp, 0xc
mov ecx, ebx
call fcn.00470e80
test eax, eax
je 0x46f8a7
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00426f36
mov esp, ebp
pop ebp
ret 4