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

Disassembly:
mov ecx, dword [0x98d270]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0xc4]
cmp eax, dword [ecx + 8]
jbe 0x477686
sub esp, 0x144
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], 0
mov dword [esp + 0x16c], 0
mov eax, dword [esp + 0x14c]
test eax, eax
je 0x476ee2
mov ecx, dword [esp + 0x15c]
test ecx, ecx
jne 0x476b3d
lea ecx, [0x967ec0]
mov edx, dword [ecx + 0x20]
test edx, edx
jne 0x476b4a
lea edx, [0x967f40]
mov ebx, dword [ecx + 0x18]
cmp ebx, 3
jg 0x476ea6
jl 0x476e6a
mov dword [esp + 0xe4], ecx
mov dword [esp + 0xcc], edx
mov ebx, dword [ecx + 4]
test ebx, ebx
jne 0x476b7a
mov ebx, dword [esp + 0x148]
jmp 0x476baf
mov edx, dword [ecx]
mov dword [esp], edx
mov dword [esp + 4], ebx
mov edx, dword [esp + 0x148]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
call fcn.004766a0
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x476e32
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov ebx, eax
mov eax, ecx
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00477890
mov eax, dword [esp + 0x14]
test eax, eax
je 0x476bcb
mov ecx, dword [esp + 0x18]
xor edx, edx
jmp 0x476bdf
mov edx, dword [esp + 0xc]
test edx, edx
jbe 0x47767c
mov edx, dword [esp + 8]
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
test eax, eax
jne 0x476e10
mov dword [esp + 0xc8], edx
mov eax, dword [esp + 0xcc]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x476c0f
mov ebx, dword [eax + 4]
jmp 0x476c4a
mov eax, dword [esp + 0x150]
mov dword [esp], eax
mov eax, dword [esp + 0x154]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x158]
mov dword [esp + 8], eax
call fcn.00476010
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xcc]
mov edx, dword [esp + 0xc8]
test ecx, ecx
jne 0x476c52
xor ecx, ecx
jmp 0x476ca8
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.00477890
mov eax, dword [esp + 0x14]
test eax, eax
je 0x476c6e
mov ecx, dword [esp + 0x18]
xor edx, edx
jmp 0x476c82
mov edx, dword [esp + 0xc]
test edx, edx
jbe 0x477673
mov edx, dword [esp + 8]
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
test eax, eax
jne 0x476dee
mov eax, dword [esp + 0xcc]
mov ecx, edx
mov edx, dword [esp + 0xc8]
mov dword [esp + 0xd8], ecx
mov ebx, dword [esp + 0xe4]
mov ebp, dword [ebx + 4]
test ebp, ebp
jne 0x476cc1
xor ebp, ebp
jmp 0x476d0b
mov eax, dword [ebx]
mov dword [esp], eax
mov dword [esp + 4], ebp
call fcn.00477890
mov eax, dword [esp + 0x14]
test eax, eax
je 0x476cdf
mov ecx, dword [esp + 0x18]
xor edx, edx
jmp 0x476cf3
mov edx, dword [esp + 0xc]
test edx, edx
jbe 0x47766a
mov edx, dword [esp + 8]
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
test eax, eax
jne 0x476dcc
mov ebp, edx
mov dword [esp + 0xd4], ebp
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x58], 0
lea eax, [esp + 0x44]
mov dword [esp], eax
lea eax, [esp + 0x40]
mov dword [esp + 4], eax
lea eax, [esp + 0x58]
mov dword [esp + 8], eax
call fcn.0047cfc0
mov eax, dword [esp + 0x44]
cmp eax, 6
jae 0x476d56
mov eax, 1
jmp 0x476d64
jne 0x476d62
cmp dword [esp + 0x40], 1
setbe al
jmp 0x476d64
xor eax, eax
mov byte [esp + 0x37], al
call fcn.0047b790
mov eax, dword [esp + 0xcc]
mov ecx, dword [eax + 0x2c]
mov edx, dword [esp]
mov dword [esp + 0x3c], edx
test ecx, ecx
jne 0x476d84
mov ecx, edx
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0xe4]
mov edx, dword [eax + 0x18]
mov dword [esp + 0x54], edx
lea ebx, [0x6bd120]
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], edx
call fcn.0044e050
mov eax, dword [esp + 0xc]
mov dword [esp + 0xe0], eax
mov ecx, dword [esp + 0xe4]
mov edx, dword [ecx + 0x18]
mov dword [esp + 0x64], edx
xor ebx, ebx
jmp 0x476f1f
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
call fcn.00437b50
add esp, 0x144
ret
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
call fcn.00437b50
add esp, 0x144
ret
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
call fcn.00437b50
add esp, 0x144
ret
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
call fcn.00437b50
add esp, 0x144
ret
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
lea eax, [0x773c08]
mov dword [esp + 0x168], eax
lea eax, [0x7730f4]
mov dword [esp + 0x16c], eax
call fcn.00437b50
add esp, 0x144
ret
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
lea eax, [0x773c08]
mov dword [esp + 0x168], eax
lea eax, [0x7730f8]
mov dword [esp + 0x16c], eax
call fcn.00437b50
add esp, 0x144
ret
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
lea eax, [0x773c08]
mov dword [esp + 0x168], eax
lea eax, [0x7730f8]
mov dword [esp + 0x16c], eax
call fcn.00437b50
add esp, 0x144
ret
inc ebx
cmp ebx, edx
jge 0x47705d
mov ebp, dword [ecx + 0x18]
cmp ebx, ebp
jae 0x477661
mov ebp, dword [ecx + 0x14]
mov ebp, dword [ebp + ebx*4]
test ebp, ebp
jbe 0x476f1e
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
cmp esi, edi
je 0x476f6f
movzx edx, byte [esp + 0x37]
test dl, dl
je 0x476f74
mov dword [esp + 0x60], ebp
and ebp, 0x10000003
cmp ebp, 3
jne 0x476f69
mov ebp, dword [esp + 0x60]
mov esi, edi
jmp 0x476f74
mov ebp, dword [esp + 0x60]
jmp 0x476f74
movzx edx, byte [esp + 0x37]
mov edx, dword [esp + 0x54]
cmp ebx, edx
jae 0x477658
mov dword [esp + 0x4c], ebx
mov dword [esp], edi
mov dword [esp + 4], ebp
mov dword [esp + 8], esi
lea ecx, [eax + ebx*4]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 0
mov byte [esp + 0x14], 1
mov dword [esp + 0x18], 2
call fcn.0047afb0
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x477025
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0xe0]
mov edx, dword [ecx + eax*4]
mov dword [esp + 0x5c], edx
lea ebx, [0x6d2360]
mov dword [esp], ebx
call fcn.0040c4f0
mov eax, dword [esp + 4]
lea ecx, [0x477710]
mov dword [eax], ecx
mov edx, dword [esp + 0x38]
mov dword [eax + 4], edx
mov ebx, dword [esp + 0x5c]
mov dword [eax + 8], ebx
mov dword [esp], eax
call fcn.004374e0
test eax, eax
jne 0x477019
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x4c]
jmp 0x476f1e
call fcn.00437b50
add esp, 0x144
ret
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
call fcn.00437b50
add esp, 0x144
ret
lea edi, [esp + 0xfc]
xor eax, eax
call fcn.00468c1e
mov dword [esp], 2
call fcn.004793e0
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov dword [esp + 0x140], ecx
mov dword [esp + 0x168], edx
mov dword [esp + 0x16c], ebx
test ebp, ebp
jne 0x4772a5
mov eax, dword [esp + 0x140]
mov dword [esp + 0xe8], 0
mov dword [esp + 0xec], 0
lea ecx, [0x4776d0]
mov dword [esp + 0xe8], ecx
mov dword [esp + 0xec], eax
lea eax, [esp + 0xe8]
mov dword [esp + 0xb0], eax
lea eax, [esp + 0xa4]
mov dword [esp], eax
call fcn.004375c0
test eax, eax
jne 0x477299
mov dword [esp + 0xfc], 0x48
mov dword [esp + 0x128], 0x100
mov edx, dword [esp + 0xcc]
movzx ebx, byte [edx]
test bl, bl
je 0x477133
mov dword [esp + 0x128], 0x101
mov word [esp + 0x12c], 0
mov ebx, dword [edx + 0x2c]
test ebx, ebx
je 0x4771a1
lea eax, [edx + 0x2c]
mov ecx, dword [esp + 0x140]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 8], 0x20000
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 4
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
call fcn.0047ca00
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
test edx, edx
jne 0x477277
mov edx, dword [esp + 0xcc]
mov ebx, dword [esp + 0x54]
test ebx, ebx
jbe 0x47764f
mov ebp, dword [esp + 0xe0]
mov esi, dword [ebp]
mov dword [esp + 0x134], esi
cmp ebx, 1
jbe 0x477643
mov esi, dword [ebp + 4]
mov dword [esp + 0x138], esi
cmp ebx, 2
jbe 0x477637
mov eax, dword [ebp + 8]
mov dword [esp + 0x13c], eax
mov eax, dword [edx + 0x24]
lea ecx, [ebx + eax]
mov esi, dword [edx + 0x20]
cmp ebx, ecx
jb 0x4771f5
mov edi, ebx
jmp 0x47723d
mov dword [esp + 0x64], eax
mov dword [esp + 0xdc], esi
mov dword [esp], ebp
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
lea ecx, [0x6bd120]
mov dword [esp + 0x10], ecx
call fcn.0044e1d0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0xdc]
mov edi, dword [esp + 0x54]
mov ebp, eax
mov ebx, edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x50], ecx
mov dword [esp + 0xd0], ebp
lea edx, [ebp + edi*4]
mov dword [esp], edx
mov dword [esp + 4], esi
shl eax, 2
mov dword [esp + 8], eax
call fcn.00469320
mov eax, dword [esp + 0xd0]
movzx ecx, byte [esp + 0x37]
mov edx, dword [esp + 0x50]
xor ebx, ebx
jmp 0x4772c8
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
call fcn.00437b50
add esp, 0x144
ret
call fcn.00437b50
add esp, 0x144
ret
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
call fcn.00437b50
add esp, 0x144
ret
inc ebx
cmp ebx, edx
jge 0x4772e7
mov ebp, dword [eax + ebx*4]
test cl, cl
je 0x4772c7
and ebp, 0x10000003
cmp ebp, 3
jne 0x4772c7
mov dword [eax + ebx*4], 0
jmp 0x4772c7
xor ecx, ecx
xor ebx, ebx
jmp 0x4772ee
inc ecx
cmp ecx, edx
jge 0x477307
mov ebp, dword [eax + ecx*4]
test ebp, ebp
je 0x4772ed
cmp ebx, edx
jae 0x47762e
mov dword [eax + ebx*4], ebp
inc ebx
jmp 0x4772ed
mov edx, dword [esp + 0x54]
cmp ebx, edx
ja 0x477627
test ebx, ebx
je 0x477327
mov ebp, dword [esp + 0xcc]
movzx esi, byte [ebp + 0x1c]
xor esi, 1
jmp 0x477330
mov ebp, dword [esp + 0xcc]
xor esi, esi
xchg esi, eax
mov byte [esp + 0x36], al
xchg esi, eax
mov dword [esp + 0x48], ebx
xchg esi, eax
test al, al
xchg esi, eax
je 0x4773c6
test ebx, ebx
jbe 0x47761e
mov ecx, dword [esp + 0x140]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 8], 0x20002
mov dword [esp + 0xc], eax
shl ebx, 2
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
call fcn.0047ca00
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
test edx, edx
je 0x4773c6
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
call fcn.00437b50
add esp, 0x144
ret
mov eax, dword [esp + 0xe4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call fcn.00476100
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
test edx, edx
jne 0x4775fc
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov eax, dword [esp + 0xcc]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x10]
or ecx, 0x80400
test edx, edx
je 0x4774b6
mov ebp, dword [eax + 0x14]
mov esi, dword [eax + 0x18]
mov dword [esp], edx
mov edx, dword [esp + 0xc8]
mov dword [esp + 4], edx
mov edx, dword [esp + 0xd8]
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], esi
movzx edx, byte [esp + 0x36]
mov byte [esp + 0x14], dl
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ebx
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0xfc]
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x70]
mov dword [esp + 0x28], ecx
call fcn.00479ab0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
jmp 0x477523
mov edx, dword [eax + 0x14]
mov ebp, dword [eax + 0x18]
mov esi, dword [esp + 0xc8]
mov dword [esp], esi
mov esi, dword [esp + 0xd8]
mov dword [esp + 4], esi
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebp
movzx edx, byte [esp + 0x36]
mov byte [esp + 0x10], dl
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0xfc]
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x70]
mov dword [esp + 0x24], ecx
call fcn.0047ad60
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], ecx
mov eax, dword [esp + 0x168]
test eax, eax
jne 0x4775da
mov eax, dword [esp + 0x74]
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0
lea ecx, [0x477690]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x68]
mov dword [esp + 0x8c], eax
lea eax, [esp + 0x80]
mov dword [esp], eax
call fcn.004375c0
test eax, eax
jne 0x4775ce
mov eax, dword [esp + 0xd0]
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x160], eax
mov dword [esp + 0x164], ecx
mov dword [esp + 0x168], 0
mov dword [esp + 0x16c], 0
call fcn.00437b50
add esp, 0x144
ret
call fcn.00437b50
add esp, 0x144
ret
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
call fcn.00437b50
add esp, 0x144
ret
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
call fcn.00437b50
add esp, 0x144
ret
xor eax, eax
mov ecx, eax
call fcn.00468a00
mov ecx, ebx
call fcn.00468a40
mov eax, ebx
mov ecx, edx
call fcn.00468a00
mov eax, 2
mov ecx, eax
call fcn.00468a00
mov eax, 1
mov ecx, eax
call fcn.00468a00
xor eax, eax
mov ecx, eax
call fcn.00468a00
mov eax, ebx
mov ecx, edx
call fcn.00468a00
mov eax, ebx
mov ecx, ebp
call fcn.00468a00
xor eax, eax
mov ecx, eax
call fcn.00468a00
xor eax, eax
mov ecx, eax
call fcn.00468a00
xor eax, eax
mov ecx, eax
call fcn.00468a00
nop
call fcn.00467590
jmp fcn.00476ad0