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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x4c
mov ebp, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
test ebp, ebp
je 0x404fc7
mov cl, byte [esi]
cmp cl, 0x2b
jne 0x404fcb
xor eax, eax
inc eax
jmp 0x404fd3
xor eax, eax
jmp 0x404fd3
xor eax, eax
cmp cl, 0x2d
sete al
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx + 0x14]
not edx
mov ecx, 0x424510
test edx, 0x3000
jne 0x40500c
lea edx, [eax + 2]
mov ecx, 0x42450d
mov dword [esp + 4], edx
cmp edx, ebp
ja 0x40500c
cmp byte [esi + eax], 0x30
jne 0x40500c
movzx edx, byte [eax + esi + 1]
or edx, 0x20
cmp edx, 0x78
je 0x405010
mov dword [esp + 4], eax
push ecx
push esi
call fcn.0040e440
add esp, 8
mov esi, eax
lea edi, [esp + 0x32]
mov word [edi], 0x2e
call fcn.0040e17b
mov eax, dword [eax]
mov al, byte [eax]
mov byte [edi], al
push edi
mov edi, dword [esp + 0x7c]
push edi
call fcn.0040e440
add esp, 8
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax + 4]
lea edi, [esp + 0x10]
mov dword [edi + 4], ecx
mov eax, dword [ecx]
call dword [eax + 4]
push edi
call fcn.00402da6
add esp, 4
mov dword [esp + 8], eax
mov dword [esp], edi
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x405080
mov eax, dword [ecx]
call dword [eax + 8]
test eax, eax
je 0x405080
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], eax
xorps xmm0, xmm0
movups xmmword [esp + 0x10], xmm0
cmp ebp, 0x7fffffff
jae 0x4055bb
cmp ebp, 7
mov edi, dword [esp + 0x78]
ja 0x4050d3
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], 7
test ebp, ebp
je 0x4050cb
mov eax, ebp
add eax, ebp
lea ecx, [esp + 0x10]
push eax
push 0
push ecx
call fcn.00409850
add esp, 0xc
lea eax, [esp + ebp*2]
add eax, 0x10
jmp 0x405145
mov dword [esp + 0x24], 7
or ebp, 7
cmp ebp, 0x7ffffffe
jbe 0x4050f2
mov ebx, 0x7ffffffe
mov eax, 0xfffffffe
jmp 0x40510b
cmp ebp, 0xb
mov ebx, 0xa
cmovae ebx, ebp
lea eax, [ebx + ebx]
add eax, 2
cmp ebx, 0x7ff
jb 0x405113
push eax
call fcn.0040223e
jmp 0x40511c
push eax
call fcn.00405864
add esp, 4
mov edi, eax
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], ebx
lea eax, [ebp + ebp]
push eax
push 0
push edi
call fcn.00409850
add esp, 0xc
lea eax, [edi + ebp*2]
mov edi, dword [esp + 0x78]
mov word [eax], 0
cmp dword [esp + 0x24], 8
jb 0x405158
mov eax, dword [esp + 0x10]
mov dword [esp], eax
lea eax, [edi + ebp]
mov ecx, dword [esp + 8]
mov edx, dword [ecx]
push dword [esp]
push eax
push edi
call dword [edx + 0x2c]
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax + 4]
lea ebx, [esp + 0x34]
mov dword [ebx + 4], ecx
mov eax, dword [ecx]
call dword [eax + 4]
push ebx
call fcn.004045fe
add esp, 4
mov ebp, eax
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x4051a2
mov eax, dword [ecx]
call dword [eax + 8]
test eax, eax
je 0x4051a2
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
mov eax, dword [ebp]
mov ecx, ebp
push ebx
call dword [eax + 0x14]
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x10]
mov word [esp], ax
mov eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x7c]
je 0x4051e2
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0xc]
cmp dword [esp + 0x24], 8
jb 0x4051d6
mov ecx, dword [esp + 0x10]
jmp 0x4051da
lea ecx, [esp + 0x10]
mov esi, dword [esp + 0xc]
mov word [ecx + esi*2], ax
cmp dword [esp + 0x48], 0x10
jb 0x4051ed
mov ebx, dword [esp + 0x34]
movsx eax, byte [ebx]
mov ecx, eax
dec cl
cmp cl, 0x7d
ja 0x4052b0
mov ecx, esi
sub ecx, dword [esp + 4]
cmp ecx, eax
jbe 0x4052b0
movzx ecx, word [esp]
mov dword [esp + 0xc], ecx
lea ebp, [esp + 0x10]
sub esi, eax
mov ecx, dword [esp + 0x20]
mov eax, ecx
sub eax, esi
jb 0x4055b6
mov edx, dword [esp + 0x24]
cmp edx, ecx
jne 0x405259
sub esp, 0x14
mov al, byte [esp + 0x3c]
mov byte [esp + 4], al
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
xor eax, eax
inc eax
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov dword [esp], eax
mov ecx, ebp
call fcn.00404d2c
jmp 0x40528f
inc ecx
mov dword [esp + 0x20], ecx
mov edi, ebp
cmp edx, 8
jb 0x405269
mov ebp, dword [esp + 0x10]
lea edx, [esi*2]
add edx, ebp
lea ebp, [ebp + esi*2 + 2]
lea eax, [eax + eax + 2]
push eax
push edx
push ebp
call fcn.004092d0
add esp, 0xc
movzx eax, word [esp]
mov word [ebp - 2], ax
mov ebp, edi
cmp byte [ebx + 1], 0
jle 0x405296
inc ebx
movsx eax, byte [ebx]
mov ecx, eax
dec cl
cmp cl, 0x7d
ja 0x4052b0
mov ecx, esi
sub ecx, dword [esp + 4]
cmp ecx, eax
ja 0x405217
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x70]
mov edi, dword [edx + 0x20]
xor eax, eax
mov ebp, edi
mov dword [esp + 0xc], ecx
sub ebp, ecx
cmovb ebp, eax
mov ecx, dword [edx + 0x24]
cmp edi, 1
sbb ecx, 0
lea ecx, [esp + 0x68]
cmovl ebp, eax
mov eax, 0x1c0
and eax, dword [edx + 0x14]
cmp eax, 0x40
je 0x405319
cmp eax, 0x100
jne 0x405343
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov ecx, ebx
mov byte [esp], bl
cmp dword [esp + 4], 0
mov dword [esp + 0x2c], edi
je 0x4053da
cmp dword [esp + 0x24], 8
jb 0x4053ab
mov ecx, dword [esp + 0x10]
jmp 0x4053af
mov eax, dword [ecx]
mov esi, dword [ecx + 4]
mov ebx, eax
cmp dword [esp + 4], 0
mov dword [esp + 8], eax
je 0x40544e
cmp dword [esp + 0x24], 8
jb 0x405423
mov ecx, dword [esp + 0x10]
jmp 0x405427
mov eax, dword [ecx]
mov esi, dword [ecx + 4]
mov ecx, eax
mov byte [esp], al
test ebp, ebp
je 0x405380
mov ecx, dword [esp + 0xc]
cmp ecx, edi
mov edx, edi
cmovb edi, ecx
sub edi, edx
movzx ebp, word [esp + 0x74]
test esi, esi
je 0x405379
mov ecx, esi
push ebp
mov ebx, eax
call fcn.00403472
cmp ax, 0xffff
mov eax, ebx
jne 0x40537d
mov byte [esp], 1
inc edi
jne 0x405363
and eax, 0xffffff00
cmp dword [esp + 4], 0
je 0x4053a0
cmp dword [esp + 0x24], 8
jb 0x405461
mov ebp, dword [esp + 0x10]
jmp 0x405465
mov ecx, eax
movzx eax, byte [esp]
jmp 0x405495
lea ecx, [esp + 0x10]
mov dword [esp + 8], ecx
xor edi, edi
test esi, esi
je 0x4053cf
mov eax, dword [esp + 8]
movzx eax, word [eax + edi*2]
mov ecx, esi
push eax
call fcn.00403472
cmp ax, 0xffff
jne 0x4053d3
mov byte [esp], 1
inc edi
cmp dword [esp + 4], edi
jne 0x4053b5
and ebx, 0xffffff00
test ebp, ebp
je 0x405419
mov dword [esp + 8], ebx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
mov edi, ecx
cmovb edi, eax
sub edi, ecx
movzx ebp, word [esp + 0x74]
test esi, esi
je 0x405410
mov ecx, esi
push ebp
call fcn.00403472
cmp ax, 0xffff
jne 0x405414
mov byte [esp], 1
inc edi
jne 0x4053fe
jmp 0x40548d
movzx eax, byte [esp]
or ebx, eax
mov eax, ebx
jmp 0x405499
lea ecx, [esp + 0x10]
mov dword [esp], ecx
xor edi, edi
test esi, esi
je 0x405445
mov eax, dword [esp]
movzx eax, word [eax + edi*2]
mov ecx, esi
push eax
call fcn.00403472
cmp ax, 0xffff
jne 0x405447
mov bl, 1
inc edi
cmp dword [esp + 4], edi
jne 0x40542c
movzx eax, bl
mov ecx, dword [esp + 8]
and ecx, 0xffffff00
or ecx, eax
mov eax, ecx
jmp 0x40549b
lea ebp, [esp + 0x10]
mov dword [esp + 8], eax
xor edi, edi
test esi, esi
je 0x405482
movzx eax, word [ebp + edi*2]
mov ecx, esi
push eax
call fcn.00403472
cmp ax, 0xffff
jne 0x405486
mov byte [esp], 1
inc edi
cmp dword [esp + 4], edi
jne 0x40546b
movzx eax, byte [esp]
mov ecx, dword [esp + 8]
or ecx, eax
mov eax, ecx
xor ebp, ebp
lea ecx, [esp + 0x68]
mov dword [ecx], eax
mov dword [ecx + 4], esi
mov ecx, eax
mov byte [esp], al
mov ecx, dword [esp + 4]
cmp dword [esp + 0xc], ecx
je 0x4054f5
cmp dword [esp + 0x24], 8
jb 0x4054c0
mov ebx, dword [esp + 0x10]
jmp 0x4054c4
lea ebx, [esp + 0x10]
test esi, esi
je 0x4054e2
mov edi, eax
mov eax, dword [esp + 4]
movzx eax, word [ebx + eax*2]
mov ecx, esi
push eax
call fcn.00403472
cmp ax, 0xffff
mov eax, edi
jne 0x4054e6
mov byte [esp], 1
mov ecx, dword [esp + 4]
inc ecx
mov dword [esp + 4], ecx
cmp dword [esp + 0xc], ecx
jne 0x4054c4
and eax, 0xffffff00
mov edi, eax
xor eax, eax
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0x24], eax
mov dword [ecx + 0x20], eax
test ebp, ebp
je 0x40552a
movzx ebx, word [esp + 0x74]
test esi, esi
je 0x405523
mov ecx, esi
push ebx
call fcn.00403472
cmp ax, 0xffff
jne 0x405527
mov byte [esp], 1
dec ebp
jne 0x405511
movzx eax, byte [esp]
or edi, eax
mov eax, dword [esp + 0x64]
mov dword [eax], edi
mov edi, eax
mov dword [eax + 4], esi
mov eax, dword [esp + 0x48]
cmp eax, 0x10
jb 0x405571
mov ecx, dword [esp + 0x34]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x405567
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x4055c0
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00405899
add esp, 8
mov eax, dword [esp + 0x24]
cmp eax, 8
jb 0x4055ac
mov ecx, dword [esp + 0x10]
lea esi, [eax + eax]
add esi, 2
cmp esi, 0x1000
jb 0x4055a2
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x4055c0
add eax, eax
add eax, 0x25
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00405899
add esp, 8
mov eax, edi
add esp, 0x4c
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.00404efa
call fcn.004028b2
call fcn.0040db24
int3