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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 4]
cmp eax, dword [ecx + 8]
jbe 0x5175ca
sub esp, 0x84
mov eax, dword [esp + 0x9c]
test eax, eax
jne 0x5174fd
mov eax, dword [esp + 0x94]
mov ecx, dword [eax + 0x10]
mov edx, dword [esp + 0x98]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 8]
movzx ecx, byte [esp + 4]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x9c]
test ebx, ebx
jne 0x5174e7
test eax, eax
je 0x5173bd
mov ebp, 0xa
mov esi, 0x2e
xor edi, edi
xor ebp, ebp
mov dword [esp + 0x34], ebp
mov ebp, 0xa
mov dword [esp + 0x58], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0x54], edi
mov dword [esp + 0x30], esi
mov byte [esp + 0x2f], cl
mov dword [esp + 0x50], ebp
mov dword [esp], ebp
call fcn.00516e00
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x98]
mov ebx, dword [esp + 0x94]
mov ebp, dword [esp + 0x9c]
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x88]
mov dword [esp + 0x6c], eax
xor eax, eax
mov byte [esp + 0x2e], al
mov eax, dword [esp + 0x54]
mov dword [esp + 0x40], eax
mov dword [esp + 0x64], ecx
xor ecx, ecx
mov dword [esp + 0x3c], ecx
xor ecx, ecx
mov dword [esp + 0x8c], ecx
xor ecx, ecx
mov dword [esp + 0x44], ecx
mov ecx, 0xffffffff
mov dword [esp + 0x54], ecx
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x64]
jmp 0x51701e
mov dword [esp + 0x78], edi
mov byte [esp + 0x2e], al
mov byte [esp + 0xa0], cl
mov ebp, dword [ebx + 0x10]
mov dword [esp], edx
call ebp
movzx eax, byte [esp + 4]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x98]
mov ebp, dword [esp + 0x94]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x9c]
mov ebx, ebp
mov ebp, edi
mov esi, dword [esp + 0x50]
mov dword [esp + 0x58], ecx
mov byte [esp + 0x2f], al
mov byte [esp + 0x5c], al
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x40], eax
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x98]
mov dword [esp + 0x74], edi
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x51717e
movzx eax, byte [esp + 0x2f]
cmp al, 0x2e
jne 0x5173b0
movzx ecx, byte [esp + 0xa0]
test cl, cl
je 0x517077
mov eax, dword [esp + 0x30]
cmp eax, 0x5f
sete al
movzx ecx, byte [esp + 0x2e]
or eax, ecx
xor ecx, ecx
mov ecx, 0x2e
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x54], ecx
xor ecx, ecx
jmp 0x516fae
cmp al, 0x5f
jne 0x5170ac
test ebp, ebp
jne 0x5170ac
mov eax, dword [esp + 0x30]
cmp eax, 0x30
setne al
movzx esi, byte [esp + 0x2e]
or eax, esi
mov esi, 0x5f
mov esi, dword [esp + 0x40]
mov dword [esp + 0x4c], esi
mov esi, 0x5f
mov dword [esp + 0x30], esi
jmp 0x516fae
lea ebp, [eax - 0x30]
xchg ebp, eax
cmp al, 9
xchg ebp, eax
ja 0x517364
xchg ebp, ebx
movzx eax, bl
xchg ebp, ebx
cmp eax, esi
jae 0x517176
mov ebp, dword [esp + 0x44]
imul ebp, esi
add eax, ebp
mov ebp, dword [esp + 0x3c]
inc ebp
mov esi, dword [esp + 0x38]
cmp esi, ebp
je 0x517103
mov esi, dword [esp + 0x40]
inc esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x44], eax
mov ebp, dword [esp + 0x9c]
movzx eax, byte [esp + 0x2e]
mov esi, 0x30
jmp 0x5170a3
mov dword [esp], edi
mov ecx, dword [esp + 0x8c]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x90]
mov dword [esp + 8], edx
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
call fcn.0050f590
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x98]
mov ebx, dword [esp + 0x94]
mov esi, dword [esp + 0x38]
xor ebp, ebp
mov dword [esp + 0x90], ecx
mov dword [esp + 0x8c], eax
xor eax, eax
movzx ecx, byte [esp + 0xa0]
jmp 0x5170df
mov eax, dword [ebx + 0x14]
mov dword [esp], edx
call eax
mov eax, dword [esp + 0x58]
cmp dword [0x81bb70], eax
je 0x51732b
mov ecx, dword [esp + 0x78]
test eax, eax
je 0x517303
mov edx, dword [esp + 0x40]
test edx, edx
jne 0x5171bb
mov ebx, dword [esp + 0x34]
cmp ebx, 0x30
je 0x5172b4
mov eax, dword [0x81bbc0]
mov ecx, dword [0x81bbc4]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x58], eax
mov ebx, dword [esp + 0x3c]
test ebx, ebx
jg 0x517255
mov ebx, dword [esp + 0x90]
mov ebp, dword [esp + 0x8c]
mov esi, dword [esp + 0x74]
mov dword [esp], esi
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
call fcn.0050ed70
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x54]
test ebx, ebx
jl 0x51724f
mov ebp, dword [esp + 0x40]
sub ebx, ebp
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xac], edx
mov eax, dword [esp + 0x50]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], ebx
mov eax, dword [esp + 0x58]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xbc], eax
add esp, 0x84
ret
mov ebx, dword [esp + 0x40]
jmp 0x51720b
mov eax, dword [esp + 0x50]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00516e50
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x74]
mov dword [esp], ecx
mov edx, dword [esp + 0x8c]
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x90]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x1c], eax
call fcn.0050f590
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
jmp 0x5171e1
mov edx, dword [esp + 0x74]
mov dword [esp + 0xa4], edx
mov dword [esp + 0xa8], 0
mov edx, dword [esp + 0x90]
mov dword [esp + 0xac], edx
mov dword [esp + 0xb0], 0xa
mov dword [esp + 0xb4], 1
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], ecx
add esp, 0x84
ret
movzx edx, byte [esp + 0x2e]
test dl, dl
je 0x51731d
mov eax, dword [0x81bbb8]
mov ecx, dword [0x81bbbc]
jmp 0x51719a
mov edx, dword [esp + 0x30]
cmp edx, 0x5f
je 0x51730c
jmp 0x51719a
mov dword [esp], eax
mov ecx, dword [esp + 0x78]
mov dword [esp + 4], ecx
mov edx, dword [0x81bb74]
mov dword [esp + 8], edx
call fcn.00403830
movzx eax, byte [esp + 0xc]
test al, al
je 0x517357
xor eax, eax
xor ecx, ecx
jmp 0x517192
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x78]
jmp 0x517192
lea ebp, [eax - 0x61]
xchg ebp, eax
cmp al, 0x19
xchg ebp, eax
ja 0x51737d
lea ebp, [eax - 0x57]
xchg ebp, ebx
movzx eax, bl
xchg ebp, ebx
jmp 0x5170c1
lea ebp, [eax - 0x41]
xchg ebp, eax
cmp al, 0x19
xchg ebp, eax
ja 0x5173a6
cmp esi, 0x24
jg 0x517397
add eax, 0xffffffc9
movzx eax, al
jmp 0x5170c1
lea ebp, [eax - 0x1d]
xchg ebp, ebx
movzx eax, bl
xchg ebp, ebx
jmp 0x5170c1
mov eax, 0x3f
jmp 0x5170c1
movzx ecx, byte [esp + 0xa0]
jmp 0x517077
cmp cl, 0x30
jne 0x516f09
mov eax, dword [esp + 0x94]
mov ecx, dword [eax + 0x10]
mov edx, dword [esp + 0x98]
mov dword [esp], edx
call ecx
movzx eax, byte [esp + 4]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
test ecx, ecx
je 0x51741f
mov ebx, 0xa
mov ebp, 1
xor esi, esi
mov edi, ebp
mov dword [esp + 0x34], esi
mov ebp, ebx
mov esi, 0x30
mov ebx, dword [esp + 0x9c]
mov ebx, eax
mov eax, ecx
mov ecx, ebx
mov ebx, dword [esp + 0x9c]
jmp 0x516f20
cmp al, 0x58
ja 0x5174d2
cmp al, 0x42
jne 0x517488
mov ebx, 0x62
mov ebp, 2
test ebx, ebx
je 0x517481
cmp ebx, 0x30
jne 0x51744c
xor esi, esi
mov edi, ebx
mov ebx, ebp
mov ebp, esi
mov esi, edi
jmp 0x5173f9
mov dword [esp + 0x34], ebx
mov dword [esp + 0x54], ebp
mov eax, dword [esp + 0x94]
mov ecx, dword [eax + 0x10]
mov edx, dword [esp + 0x98]
mov dword [esp], edx
call ecx
movzx eax, byte [esp + 4]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x54]
jmp 0x517440
mov esi, 1
jmp 0x517442
cmp al, 0x4f
jne 0x517499
mov ebx, 0x6f
mov ebp, 8
jmp 0x517437
cmp al, 0x58
jne 0x5174aa
mov ebx, 0x78
mov ebp, 0x10
jmp 0x517437
movzx ebx, byte [esp + 0xa0]
test bl, bl
je 0x5174c6
xor ebp, ebp
mov esi, 0xa
mov ebx, ebp
mov ebp, esi
jmp 0x517437
mov ebp, 0x30
mov esi, 8
jmp 0x5174bd
cmp al, 0x62
je 0x51742d
cmp al, 0x6f
je 0x51748d
cmp al, 0x78
je 0x51749e
jmp 0x5174aa
mov ebp, ebx
mov esi, 0x2e
xor edi, edi
xor ebp, ebp
mov dword [esp + 0x34], ebp
mov ebp, ebx
jmp 0x516f20
movzx ecx, byte [esp + 0xa0]
test cl, cl
je 0x517531
je 0x517541
cmp eax, 2
je 0x516ecf
cmp eax, 8
je 0x516ecf
cmp eax, 0xa
je 0x516ecf
cmp eax, 0x10
je 0x516ecf
jmp 0x517541
lea edx, [eax - 2]
cmp edx, 0x3c
jbe 0x516ecf
test cl, cl
jmp 0x517509
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp], eax
call fcn.00408b00
mov eax, dword [esp + 4]
lea ecx, [0x633240]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], eax
lea eax, [0x6761bc]
mov dword [esp], eax
mov dword [esp + 4], 0x16
lea eax, [esp + 0x7c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 1
mov dword [esp + 0x10], 1
call fcn.004ac250
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00408c10
mov eax, dword [esp + 8]
lea ecx, [0x633ac0]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00430630
nop
call fcn.00459790
jmp fcn.00516ea0