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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x46ef90
push eax
mov dword fs:[0], esp
sub esp, 0x60
push ebx
push esi
push edi
mov edi, dword [ebp + 0x30]
test edi, edi
je 0x4171ac
mov eax, dword [ebp + 0x20]
mov al, byte [eax]
cmp al, 0x2b
je 0x4171a5
cmp al, 0x2d
jne 0x4171ac
mov esi, 1
jmp 0x4171ae
xor esi, esi
mov ebx, dword [ebp + 0x18]
mov ecx, ebx
mov dword [esp + 0x18], esi
call fcn.00405780
and eax, 0x3000
cmp eax, 0x3000
mov eax, dword [ebp + 0x20]
je 0x4171d2
mov ecx, 0x47bfa8
jmp 0x4171f8
lea ecx, [esi + 2]
cmp ecx, edi
ja 0x4171f3
cmp byte [esi + eax], 0x30
jne 0x4171f3
mov dl, byte [esi + eax + 1]
cmp dl, 0x78
je 0x4171ed
cmp dl, 0x58
jne 0x4171f3
mov esi, ecx
mov dword [esp + 0x18], esi
mov ecx, 0x47bfac
push ecx
push eax
call fcn.00450420
mov dword [esp + 0x30], eax
mov eax, 0x2e
mov word [esp + 0x1c], ax
call fcn.0045063e
mov ecx, dword [eax]
lea eax, [esp + 0x1c]
mov cl, byte [ecx]
push eax
push dword [ebp + 0x20]
mov byte [esp + 0x24], cl
call fcn.00450420
add esp, 0x10
mov dword [esp + 0x20], eax
lea eax, [esp + 0x2c]
push eax
mov ecx, ebx
call fcn.0040d590
push eax
mov dword [esp + 0x78], 0
call fcn.0040fca0
add esp, 4
lea ecx, [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x74], 0xffffffff
call fcn.00406e70
mov eax, dword [esp + 0x1c]
push 0x30
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x30]
movzx eax, ax
lea ecx, [esp + 0x13]
mov dword [esp + 0x24], eax
call fcn.00402cb0
lea ecx, [esp + 0x38]
push eax
call fcn.004077e0
lea ecx, [esp + 0x38]
push 0
push 0
call fcn.00407d70
lea ecx, [esp + 0x38]
cmp edi, 0xffffffff
jne 0x4172a2
call fcn.00407a80
push 0
push edi
call fcn.00407e10
test al, al
je 0x4172c6
push 0
push edi
push 0
lea ecx, [esp + 0x44]
call fcn.00417c00
push edi
lea ecx, [esp + 0x3c]
call fcn.00407f30
lea ecx, [esp + 0x38]
mov dword [esp + 0x74], 1
call fcn.00407990
mov ecx, dword [ebp + 0x20]
mov edx, dword [esp + 0x1c]
push eax
mov edx, dword [edx]
lea eax, [ecx + edi]
push eax
push ecx
mov ecx, dword [esp + 0x28]
call dword [edx + 0x2c]
lea eax, [esp + 0x2c]
push eax
mov ecx, ebx
call fcn.0040d590
push eax
mov byte [esp + 0x78], 2
call fcn.004184b0
mov ebx, eax
add esp, 4
lea ecx, [esp + 0x2c]
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x74], 1
call fcn.00406e70
lea eax, [esp + 0x50]
push eax
mov ecx, ebx
call fcn.00417b80
mov byte [esp + 0x74], 3
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x10]
mov ecx, dword [esp + 0x28]
movzx eax, ax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x20]
cmp eax, edi
jne 0x41735d
push dword [esp + 0x24]
mov eax, dword [ebp + 0x24]
push eax
lea ebx, [ecx + eax]
push ecx
lea ecx, [esp + 0x44]
call fcn.00417020
jmp 0x4173b8
mov esi, dword [esp + 0x24]
mov edi, dword [ebp + 0x24]
push esi
push dword [ebp + 0x2c]
lea ebx, [eax + edi]
push ecx
lea ecx, [esp + 0x44]
call fcn.00417020
mov eax, dword [esp + 0x20]
push esi
push dword [ebp + 0x28]
inc eax
push eax
lea ecx, [esp + 0x44]
call fcn.00417020
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ecx, [esp + 0x38]
movzx esi, ax
call fcn.00407990
mov ecx, dword [esp + 0x20]
push dword [esp + 0x24]
mov word [eax + ecx*2], si
push edi
push ecx
lea ecx, [esp + 0x44]
call fcn.00417020
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0x50]
call fcn.004082e0
mov edi, eax
mov al, byte [edi]
cmp al, 0x7f
je 0x417490
lea ecx, [ecx]
test al, al
jle 0x417490
movsx ecx, al
mov eax, ebx
sub eax, esi
cmp ecx, eax
jae 0x417490
sub ebx, ecx
mov ecx, dword [esp + 0x48]
cmp ecx, ebx
jb 0x4174d6
or eax, 0xffffffff
sub eax, ecx
cmp eax, 1
jbe 0x4174cd
lea eax, [ecx + 1]
push 0
push eax
lea ecx, [esp + 0x40]
mov dword [esp + 0x30], eax
call fcn.00407e10
test al, al
je 0x41747c
mov eax, dword [esp + 0x48]
sub eax, ebx
push eax
lea ecx, [esp + 0x3c]
lea esi, [ebx + ebx]
call fcn.00407990
add eax, esi
push eax
lea ecx, [esp + 0x40]
call fcn.00407990
add eax, 2
add eax, esi
push eax
call fcn.004078d0
mov eax, dword [esp + 0x3c]
movzx eax, ax
add esp, 0xc
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x3c]
call fcn.00407990
add eax, esi
push eax
call fcn.00407f10
add esp, 8
lea ecx, [esp + 0x38]
push dword [esp + 0x28]
call fcn.00407f30
mov esi, dword [esp + 0x18]
cmp byte [edi + 1], 0
lea eax, [edi + 1]
cmovg edi, eax
mov al, byte [edi]
cmp al, 0x7f
jne 0x4173d0
lea ecx, [esp + 0x38]
call fcn.00407840
mov ebx, dword [ebp + 0x18]
mov edi, eax
mov ecx, ebx
mov dword [esp + 0x28], edi
call fcn.00409b50
test edx, edx
jl 0x4174df
jg 0x4174b3
test eax, eax
je 0x4174df
mov ecx, ebx
call fcn.00409b50
cmp eax, edi
jbe 0x4174df
mov ecx, ebx
call fcn.00409b50
mov edi, eax
sub edi, dword [esp + 0x28]
jmp 0x4174e1
lea ecx, [esp + 0x38]
call fcn.00407a80
lea ecx, [esp + 0x38]
call fcn.00407890
xor edi, edi
mov ecx, ebx
call fcn.00405780
and eax, 0x1c0
cmp eax, 0x40
je 0x417575
cmp eax, 0x100
je 0x417530
mov ebx, dword [ebp + 8]
push edi
push dword [ebp + 0x1c]
lea eax, [esp + 0x38]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push eax
push ebx
call fcn.00417b10
mov ecx, dword [eax]
mov dword [ebp + 0x10], ecx
mov eax, dword [eax + 4]
add esp, 0x18
lea ecx, [esp + 0x38]
mov dword [ebp + 0x14], eax
xor edi, edi
call fcn.00407990
jmp 0x417581
lea ecx, [esp + 0x38]
call fcn.00407990
mov ebx, dword [ebp + 8]
push esi
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push ebx
call fcn.00417aa0
mov ecx, dword [eax]
push edi
push dword [ebp + 0x1c]
mov dword [ebp + 0x10], ecx
mov ecx, dword [eax + 4]
mov dword [ebp + 0x14], ecx
push dword [eax + 4]
push dword [eax]
lea eax, [esp + 0x58]
push eax
push ebx
call fcn.00417b10
add esp, 0x30
xor edi, edi
jmp 0x417597
lea ecx, [esp + 0x38]
call fcn.00407990
mov ebx, dword [ebp + 8]
push esi
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push ebx
call fcn.00417aa0
add esp, 0x18
mov ecx, dword [eax]
mov dword [ebp + 0x10], ecx
mov eax, dword [eax + 4]
lea ecx, [esp + 0x38]
mov dword [ebp + 0x14], eax
call fcn.00407990
mov ecx, dword [esp + 0x28]
sub ecx, esi
push ecx
lea eax, [eax + esi*2]
push eax
push dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push dword [ebp + 0x10]
push eax
push ebx
call fcn.00417aa0
mov edx, dword [eax]
mov ecx, dword [ebp + 0x18]
add esp, 0x18
mov dword [ebp + 0x10], edx
mov eax, dword [eax + 4]
push 0
push 0
mov dword [ebp + 0x14], eax
call fcn.00409b10
mov esi, dword [ebp + 0xc]
push edi
push dword [ebp + 0x1c]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push esi
push ebx
call fcn.00417b10
add esp, 0x18
lea ecx, [esp + 0x50]
call fcn.00408190
lea ecx, [esp + 0x38]
call fcn.00407790
mov ecx, dword [esp + 0x6c]
pop edi
mov eax, esi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret