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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x51f9bf
sub esp, 0x64
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x74]
cmp eax, ecx
je 0x51f4b9
xor edx, edx
jmp 0x51f4e0
mov eax, dword [esp + 0x70]
mov dword [esp], eax
mov edx, dword [esp + 0x78]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call fcn.00402870
movzx eax, byte [esp + 0xc]
mov ecx, dword [esp + 0x74]
mov edx, eax
mov eax, dword [esp + 0x7c]
test dl, dl
jne 0x51f4ef
mov edx, dword [esp + 0x80]
test edx, edx
jne 0x51f509
mov eax, dword [esp + 0x68]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x88], eax
add esp, 0x64
ret
mov eax, dword [esp + 0x68]
mov dword [esp], eax
mov edx, dword [esp + 0x6c]
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x70]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
call fcn.0051d590
mov eax, dword [esp + 0x10]
test eax, eax
je 0x51f625
mov ecx, dword [esp + 0x80]
test ecx, ecx
jl 0x51f546
cmp ecx, eax
jg 0x51f546
mov eax, ecx
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
nop
lea ecx, [esp + 0x54]
mov dword [esp + 0x54], ecx
mov edx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x74]
sub edx, ebx
imul edx, eax
mov esi, dword [esp + 0x6c]
add edx, esi
test edx, edx
jl 0x51f9a6
mov dword [esp + 0x40], eax
mov edi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x60]
mov dword [esp + 0x3c], ebp
sub ebp, edi
cmp ebp, edx
jge 0x51f61b
mov dword [esp + 0x30], edi
lea eax, [0x67e920]
mov dword [esp], eax
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x3c]
lea ecx, [edx + ecx*2]
mov dword [esp + 0x34], ecx
mov dword [esp + 8], ecx
call fcn.00447740
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x30]
cmp edx, ebx
jl 0x51f5db
mov edx, ebx
cmp ecx, eax
je 0x51f5fb
mov dword [esp + 0x50], eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call fcn.0045fe60
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x5c], ebx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x60], ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0x54]
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
xor ebp, ebp
xor edi, edi
jmp 0x51f6a1
mov eax, dword [esp + 0x68]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x88], eax
add esp, 0x64
ret
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], ebx
mov dword [esp + 0x4c], esi
add eax, esi
mov dword [esp], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call fcn.0045fe60
mov eax, dword [esp + 0x38]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x2c]
lea ebp, [eax + 1]
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x74]
lea edi, [ebx + eax]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x40]
mov eax, ecx
lea ecx, [esp + 0x54]
mov edx, dword [esp + 0x68]
mov esi, dword [esp + 0x6c]
cmp ebp, eax
jge 0x51f884
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x20], edi
test ebx, ebx
jne 0x51f700
test ebp, ebp
jle 0x51f74d
sub esi, edi
mov ecx, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and esi, edi
lea ebx, [edx + esi]
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.00489e30
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x20]
lea edi, [eax + ecx]
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0x54]
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x74]
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x6c]
jmp 0x51f74d
sub esi, edi
mov ecx, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and esi, edi
lea ebp, [edx + esi]
mov dword [esp], ebp
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
call fcn.0051fc10
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
lea edi, [eax + ecx]
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0x54]
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x74]
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x28], edi
mov esi, dword [esp + 0x20]
sub edi, esi
mov dword [esp + 0x24], edi
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and esi, edi
add esi, edx
nop
mov edi, dword [esp + 0x54]
test edi, edi
je 0x51f77a
cmp edi, ecx
je 0x51f77e
jmp 0x51f98e
mov dword [esp + 0x54], ecx
mov edi, dword [esp + 0x5c]
mov edx, dword [esp + 0x24]
lea eax, [edi + edx]
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x58]
cmp ebx, eax
jae 0x51f7d3
mov dword [esp + 0x48], esi
mov dword [esp + 0x3c], edi
mov dword [esp], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], edx
lea eax, [0x67e920]
mov dword [esp + 0x10], eax
call fcn.00447800
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x4c], ebp
lea ecx, [ebp + edi]
mov dword [esp], ecx
mov dword [esp + 4], esi
mov dword [esp + 8], edx
call fcn.0045fe60
mov eax, dword [esp + 0x38]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x58], eax
nop
nop
mov eax, dword [esp + 0x54]
test eax, eax
je 0x51f822
lea ecx, [esp + 0x54]
cmp eax, ecx
je 0x51f82e
jmp 0x51f976
lea eax, [esp + 0x54]
mov dword [esp + 0x54], eax
lea ecx, [esp + 0x54]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x7c]
lea ebx, [edx + eax]
mov ebp, dword [esp + 0x60]
mov esi, dword [esp + 0x58]
cmp ebp, ebx
jae 0x51f63f
mov dword [esp + 0x3c], eax
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], edx
lea eax, [0x67e920]
mov dword [esp + 0x10], eax
call fcn.00447800
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x7c]
jmp 0x51f63f
sub esi, edi
mov eax, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and edi, esi
add edx, edi
nop
mov ebx, dword [esp + 0x54]
test ebx, ebx
je 0x51f8a7
cmp ebx, ecx
je 0x51f8ab
jmp 0x51f95e
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x5c]
lea ebx, [ecx + eax]
mov ebp, dword [esp + 0x60]
mov esi, dword [esp + 0x58]
cmp ebp, ebx
jae 0x51f900
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x44], edx
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], eax
lea ecx, [0x67e920]
mov dword [esp + 0x10], ecx
call fcn.00447800
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x40], ebp
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x4c], esi
add ecx, esi
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call fcn.0045fe60
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x5c], eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x58], ecx
mov edx, ecx
neg ecx
cmp eax, ecx
ja 0x51f950
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], eax
add esp, 0x64
ret
test edx, edx
je 0x51f959
call fcn.004585c0
call fcn.00458600
lea eax, [0x67e720]
mov dword [esp], eax
lea eax, [0x894f30]
mov dword [esp + 4], eax
call fcn.00433690
lea eax, [0x67e720]
mov dword [esp], eax
lea eax, [0x894f30]
mov dword [esp + 4], eax
call fcn.00433690
lea eax, [0x67e720]
mov dword [esp], eax
lea eax, [0x894f30]
mov dword [esp + 4], eax
call fcn.00433690
lea eax, [0x67e720]
mov dword [esp], eax
lea eax, [0x895018]
mov dword [esp + 4], eax
call fcn.00433690
nop
call fcn.0045e260
jmp fcn.0051f490