Function at 0x51f480
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 0x51fe3e
sub esp, 0x84
mov eax, dword [esp + 0x9c]
test eax, eax
jne 0x51fd5d
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 + 0xc]
mov edx, dword [esp + 8]
test edx, edx
jne 0x51fd11
mov ebx, dword [esp + 0x9c]
test ebx, ebx
jne 0x51fd08
cmp al, 0x30
je 0x51faf5
mov ebp, 0xa
xor esi, esi
mov dword [esp + 0x78], ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], esi
mov byte [esp + 0x2f], al
mov dword [esp + 0x54], ebp
mov dword [esp], ebp
call fcn.0051f3e0
mov eax, dword [esp + 4]
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x30], ecx
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x90]
mov edi, dword [esp + 0x88]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x38], eax
mov dword [esp + 0x60], ecx
xor ecx, ecx
mov dword [esp + 0x34], ecx
xor ecx, ecx
mov dword [esp + 0x8c], ecx
xor ecx, ecx
mov dword [esp + 0x3c], ecx
mov ecx, 0xffffffff
mov dword [esp + 0x58], ecx
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
jmp 0x51f5a4
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x58]
mov byte [esp + 0x2f], cl
mov dword [esp + 0x38], eax
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x90]
mov ebp, edx
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x78], edi
mov dword [esp + 0x90], esi
movzx eax, byte [esp + 0xa0]
test al, al
je 0x51faeb
movzx esi, byte [esp + 0x2f]
xchg esi, eax
cmp al, 0x2e
xchg esi, eax
je 0x51f9e4
xchg esi, eax
cmp al, 0x30
xchg esi, eax
jb 0x51f992
xchg esi, eax
cmp al, 0x39
xchg esi, eax
ja 0x51f992
add esi, 0xffffffd0
xchg esi, eax
movzx eax, al
xchg esi, eax
cmp esi, edx
jae 0x51f941
mov byte [esp + 0xa0], al
mov ebx, dword [esp + 0x3c]
imul ebx, edx
add ebx, esi
mov ebp, dword [esp + 0x34]
inc ebp
cmp ecx, ebp
je 0x51f8ef
mov esi, dword [esp + 0x90]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x90], esi
mov dword [esp + 0x34], ebp
mov dword [esp + 0x78], edi
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 + 0x38]
inc eax
movzx ecx, byte [esp + 4]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
test ebx, ebx
je 0x51f577
cmp dword [0xb7d820], ebx
je 0x51f6ac
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], ebx
mov dword [esp + 0xbc], edx
add esp, 0x84
ret
mov dword [esp + 0x50], eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x4c], ebx
mov dword [esp], ebx
mov dword [esp + 4], edx
mov eax, dword [0xb7d824]
mov dword [esp + 8], eax
call fcn.00402f30
movzx eax, byte [esp + 0xc]
test al, al
je 0x51f8de
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x90]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x58]
xor eax, eax
mov dword [esp + 0x5c], eax
xor ecx, ecx
mov dword [esp + 0x78], ecx
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x58], eax
test eax, eax
jne 0x51f7f9
mov ecx, dword [esp + 0x9c]
test ecx, ecx
jne 0x51f7f3
mov edx, dword [esp + 0x54]
cmp edx, 8
jne 0x51f78b
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x78]
mov edx, 0xa
mov ebx, 1
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], ecx
add esp, 0x84
ret
test ecx, ecx
je 0x51f7dd
nop
lea eax, [0x7c34e0]
mov dword [esp], eax
call fcn.00409f80
mov edi, dword [esp + 4]
mov dword [edi + 4], 0x1c
mov eax, dword [0xb91180]
test eax, eax
jne 0x51f7d0
lea eax, [0x82074f]
mov dword [edi], eax
lea eax, [0x8b3870]
mov ecx, edi
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
jmp 0x51f747
lea eax, [0x82074f]
call fcn.0044f0d0
jmp 0x51f7bb
cmp edx, 8
jne 0x51f78f
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x78]
mov ebx, dword [esp + 0x58]
jmp 0x51f747
mov edx, dword [esp + 0x54]
jmp 0x51f78d
mov dword [esp + 0x38], edi
test ecx, ecx
jg 0x51f875
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
call fcn.00516bb0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x38]
test ebx, ebx
jl 0x51f86f
mov ebp, dword [esp + 0x58]
sub ebx, ebp
mov dword [esp + 0xa4], edx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], ebx
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xbc], eax
add esp, 0x84
ret
mov ebx, dword [esp + 0x58]
jmp 0x51f82b
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x70], ebp
mov dword [esp + 0x3c], esi
mov eax, dword [esp + 0x54]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0051f430
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x70]
mov dword [esp], ecx
mov edx, dword [esp + 0x44]
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x48]
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 + 0x3c]
mov dword [esp + 0x1c], eax
call fcn.005173b0
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
jmp 0x51f801
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x74]
mov ebx, dword [esp + 0x4c]
jmp 0x51f664
mov dword [esp], edi
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x90]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ebx
call fcn.005173b0
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
xor ebp, ebp
xor ebx, ebx
mov dword [esp + 0x8c], eax
jmp 0x51f619
mov dword [esp + 0x74], ebp
mov dword [esp + 0x5c], ebx
mov eax, dword [esp + 0x94]
mov eax, dword [eax + 0x14]
mov ecx, dword [esp + 0x98]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x90]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x74]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x38]
jmp 0x51f711
xchg esi, eax
cmp al, 0x61
xchg esi, eax
jb 0x51f9ad
xchg esi, eax
cmp al, 0x7a
xchg esi, eax
ja 0x51f9ad
add esi, 0xffffffa9
xchg esi, eax
movzx eax, al
xchg esi, eax
jmp 0x51f5ed
xchg esi, eax
cmp al, 0x41
xchg esi, eax
jb 0x51f9da
xchg esi, eax
cmp al, 0x5a
xchg esi, eax
ja 0x51f9da
cmp edx, 0x24
jg 0x51f9cd
add esi, 0xffffffc9
xchg esi, eax
movzx eax, al
xchg esi, eax
jmp 0x51f5ed
add esi, 0xffffffe3
xchg esi, eax
movzx eax, al
xchg esi, eax
jmp 0x51f5ed
mov esi, 0x3f
jmp 0x51f5ed
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 + 0xc]
mov edx, dword [esp + 8]
test edx, edx
jne 0x51fa2c
mov edi, dword [esp + 0x78]
mov esi, eax
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x58], ebx
mov ebp, ecx
mov ebx, edx
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x54]
xor eax, eax
jmp 0x51f5cf
cmp dword [0xb7d820], edx
je 0x51fa80
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov eax, dword [esp + 0x54]
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], ecx
add esp, 0x84
ret
mov dword [esp + 0x74], ecx
mov dword [esp + 0x4c], edx
mov dword [esp], edx
mov dword [esp + 4], ecx
mov eax, dword [0xb7d824]
mov dword [esp + 8], eax
call fcn.00402f30
movzx eax, byte [esp + 0xc]
test al, al
je 0x51fade
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x90]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x3c]
mov edi, eax
xor eax, eax
mov dword [esp + 0x5c], eax
xor ecx, ecx
mov dword [esp + 0x78], ecx
mov eax, edi
mov ecx, dword [esp + 0x34]
jmp 0x51f711
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x4c]
jmp 0x51fa34
movzx esi, byte [esp + 0x2f]
jmp 0x51f5cf
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 + 0xc]
mov edx, dword [esp + 8]
test edx, edx
je 0x51fbff
cmp dword [0xb7d820], edx
je 0x51fb74
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0xa
mov dword [esp + 0xb4], 1
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], ecx
add esp, 0x84
ret
mov dword [esp + 0x78], ecx
mov dword [esp + 0x5c], edx
mov dword [esp], edx
mov dword [esp + 4], ecx
mov eax, dword [0xb7d824]
mov dword [esp + 8], eax
call fcn.00402f30
movzx eax, byte [esp + 0xc]
test al, al
jne 0x51fba5
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x5c]
jmp 0x51fb28
mov eax, dword [esp + 0x88]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], 0
mov eax, dword [esp + 0x90]
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], 0xa
mov dword [esp + 0xb4], 1
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 0
add esp, 0x84
ret
movzx ebx, byte [esp + 0xa0]
test bl, bl
je 0x51fcfe
mov ebp, 0xa
cmp al, 0x58
ja 0x51fceb
cmp al, 0x42
jne 0x51fcd8
mov ebp, 2
mov dword [esp + 0x58], ebp
cmp ebp, 2
jne 0x51fcbf
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 + 0xc]
mov edx, dword [esp + 8]
test edx, edx
jne 0x51fc73
xor ebx, ebx
mov ebp, dword [esp + 0x58]
mov esi, ebx
mov ebx, dword [esp + 0x9c]
jmp 0x51f4f9
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov eax, dword [esp + 0x58]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], ecx
add esp, 0x84
ret
cmp ebp, 8
jne 0x51fcc8
xor ebx, ebx
jmp 0x51fc61
cmp ebp, 0x10
je 0x51fc38
mov ebx, 1
jmp 0x51fc61
cmp al, 0x58
jne 0x51fc2b
mov ebp, 0x10
jmp 0x51fc2b
cmp al, 0x62
je 0x51fc26
cmp al, 0x78
je 0x51fce1
jmp 0x51fc2b
mov ebp, 8
jmp 0x51fc14
mov ebp, ebx
xor esi, esi
jmp 0x51f4f9
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], ecx
add esp, 0x84
ret
movzx ecx, byte [esp + 0xa0]
test cl, cl
je 0x51fda3
xor edx, edx
test dl, dl
jne 0x51f4af
test cl, cl
je 0x51fd9f
cmp eax, 2
jne 0x51fd8b
mov edx, 1
test dl, dl
jne 0x51f4af
jmp 0x51fdb4
cmp eax, 0xa
jne 0x51fd97
mov edx, 1
jmp 0x51fd81
cmp eax, 0x10
sete dl
jmp 0x51fd81
xor edx, edx
jmp 0x51fd81
cmp eax, 2
jl 0x51fdb0
cmp eax, 0x3e
setle dl
jmp 0x51fd6b
xor edx, edx
jmp 0x51fd6b
mov dword [esp], eax
call fcn.004078c0
mov eax, dword [esp + 4]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
lea ecx, [0x7ab300]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], eax
lea eax, [0x81c4bd]
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.004bd7c0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00407990
mov eax, dword [esp + 8]
lea ecx, [0x7abe80]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00429580
ud2
call fcn.0044d880
jmp fcn.0051f480