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

Disassembly:
mov ecx, dword [0x6d0e30]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0x60]
cmp eax, dword [ecx + 8]
jbe 0x51fc38
sub esp, 0xe0
mov edx, dword [esp + 0xe4]
mov ebx, dword [edx + 0x80]
lea ebp, [ebx + 1]
mov esi, dword [edx + 0x84]
mov edi, dword [edx + 0x88]
nop
mov dword [edx + 0x80], ebp
inc dword [edx + 0x88]
dec dword [edx + 0x64]
mov ecx, dword [edx + 0x58]
mov eax, dword [edx + 0x60]
cmp ecx, eax
jbe 0x51fc32
mov ecx, dword [edx + 0x54]
movzx ecx, byte [ecx + eax]
test cl, 0x80
jne 0x51f22b
mov ecx, 1
jmp 0x51f260
mov ebp, ecx
and ecx, 0xffffffe0
cmp cl, 0xc0
jne 0x51f23c
mov ecx, 2
jmp 0x51f260
mov ecx, ebp
and ebp, 0xfffffff0
xchg ebp, eax
cmp al, 0xe0
xchg ebp, eax
jne 0x51f24f
mov ecx, 3
jmp 0x51f260
and ecx, 0xfffffff8
cmp cl, 0xf0
jne 0x51f25e
mov ecx, 4
jmp 0x51f260
xor ecx, ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], esi
add eax, ecx
mov dword [edx + 0x60], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp], edx
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
lea eax, [esp + 0x38]
mov dword [esp + 0x10], eax
call fcn.0051fc50
movzx eax, byte [esp + 0x14]
test al, al
je 0x51f67d
mov eax, dword [esp + 0x3c]
cmp eax, 4
je 0x51f2bf
xor eax, eax
jmp 0x51f2de
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
lea ecx, [0x57bf33]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.004030e0
movzx eax, byte [esp + 0xc]
test al, al
jne 0x51f50b
mov eax, dword [esp + 0x3c]
cmp eax, 3
jne 0x51f476
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
lea ecx, [0x57bd70]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.004030e0
movzx eax, byte [esp + 0xc]
test al, al
je 0x51f476
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov eax, dword [esp + 0xe4]
mov dword [esp], eax
mov ecx, dword [esp + 0x28]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x20]
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0xc], ebx
lea ebp, [esp + 0x44]
mov dword [esp + 0x10], ebp
lea ebp, [esp + 0x2c]
mov dword [esp + 0x14], ebp
call fcn.00520470
movzx eax, byte [esp + 0x18]
test al, al
je 0x51f467
mov ecx, dword [esp + 0xe4]
mov edx, dword [ecx + 0x88]
mov ebx, dword [ecx + 0x80]
mov ebp, dword [ecx + 0x84]
lea edi, [esp + 0x50]
lea esi, [0x5b6ba8]
call fcn.0046514c
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x54], ecx
mov eax, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x58], ecx
mov esi, ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebp
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x48]
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebp
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x88], edx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x90], ebp
mov edi, dword [esp + 0xe8]
test byte [edi], al
mov edx, dword [0x6d0ed8]
test edx, edx
je 0x51f457
lea eax, [0x56fb40]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x50]
mov dword [esp + 8], eax
call fcn.004113d0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0xe8]
mov edx, esi
lea esi, [esp + 0x50]
call fcn.0046514c
jmp 0x51f627
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
nop
mov eax, dword [esp + 0xe4]
mov dword [eax], 3
mov dword [eax + 0x24], 0x1a
mov ecx, dword [0x6d0ed8]
test ecx, ecx
je 0x51f49f
mov ecx, dword [eax + 0x20]
call fcn.00464af0
mov dword [edi], ecx
lea ecx, [0x582540]
mov dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x28]
mov dword [eax + 0x28], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 0x2c], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + 0x30], ecx
mov dword [eax + 8], 0x1c
mov ecx, dword [0x6d0ed8]
test ecx, ecx
je 0x51f4d8
mov ecx, dword [eax + 4]
call fcn.00464af0
mov dword [edi], ecx
lea ecx, [0x58304a]
mov dword [eax + 4], ecx
mov ecx, dword [eax + 0x84]
mov edx, dword [eax + 0x88]
mov ebx, dword [eax + 0x80]
mov dword [eax + 0x14], ebx
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], edx
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
mov byte [esp + 0x1e], 0
mov byte [esp + 0x1d], 0
mov eax, dword [esp + 0xe4]
mov dword [esp], eax
mov ecx, dword [esp + 0x28]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x20]
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0xc], ebx
lea ebp, [esp + 0x1e]
mov dword [esp + 0x10], ebp
lea ebp, [esp + 0x1d]
mov dword [esp + 0x14], ebp
call fcn.0051ff10
movzx eax, byte [esp + 0x18]
test al, al
je 0x51f66e
mov ecx, dword [esp + 0xe4]
mov edx, dword [ecx + 0x88]
mov ebx, dword [ecx + 0x80]
mov ebp, dword [ecx + 0x84]
lea edi, [esp + 0x98]
lea esi, [0x5b6b60]
call fcn.0046514c
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x9c], ecx
mov eax, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0xa0], ecx
mov esi, ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xac], ebp
mov dword [esp + 0xb0], edx
movzx edx, byte [esp + 0x1e]
mov byte [esp + 0xdd], dl
movzx edx, byte [esp + 0x1d]
mov byte [esp + 0xde], dl
mov edi, dword [esp + 0xe8]
test byte [edi], al
mov edx, dword [0x6d0ed8]
test edx, edx
je 0x51f619
lea eax, [0x56fb40]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x98]
mov dword [esp + 8], eax
call fcn.004113d0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0xe8]
mov edx, esi
lea esi, [esp + 0x98]
call fcn.0046514c
mov ebx, dword [esp + 0xe4]
mov ebp, dword [ebx + 0x64]
test ebp, ebp
jg 0x51f68c
mov dword [esp], ebx
mov dword [esp + 4], 1
call fcn.00518b70
movzx eax, byte [esp + 8]
test al, al
je 0x51f65f
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0xe4]
jmp 0x51f68c
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
mov ecx, dword [ebx + 0x58]
mov ebp, dword [ebx + 0x60]
cmp ecx, ebp
jbe 0x51fc2b
mov esi, dword [ebx + 0x54]
movzx ebp, byte [esi + ebp]
xchg ebp, eax
cmp al, 0x20
xchg ebp, eax
je 0x51f6b3
xchg ebp, eax
cmp al, 9
xchg ebp, eax
jne 0x51f76a
nop
inc dword [ebx + 0x80]
inc dword [ebx + 0x88]
mov ebp, dword [ebx + 0x64]
dec ebp
mov dword [ebx + 0x64], ebp
mov ecx, dword [ebx + 0x58]
mov esi, dword [ebx + 0x60]
cmp ecx, esi
jbe 0x51fc24
mov edi, dword [ebx + 0x54]
movzx edi, byte [edi + esi]
xchg edi, eax
test al, 0x80
xchg edi, eax
jne 0x51f6ea
mov ecx, 1
jmp 0x51f721
mov ecx, edi
and edi, 0xffffffe0
xchg edi, eax
cmp al, 0xc0
xchg edi, eax
jne 0x51f6fd
mov ecx, 2
jmp 0x51f721
mov edi, ecx
and ecx, 0xfffffff0
cmp cl, 0xe0
jne 0x51f70e
mov ecx, 3
jmp 0x51f721
and edi, 0xfffffff8
xchg edi, eax
cmp al, 0xf0
xchg edi, eax
jne 0x51f71f
mov ecx, 4
jmp 0x51f721
xor ecx, ecx
add esi, ecx
mov dword [ebx + 0x60], esi
test ebp, ebp
jg 0x51f68c
mov dword [esp], ebx
mov dword [esp + 4], 1
call fcn.00518b70
movzx eax, byte [esp + 8]
test al, al
je 0x51f75b
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0xe4]
jmp 0x51f68c
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
xchg ebp, eax
cmp al, 0x23
xchg ebp, eax
je 0x51fa2c
mov ecx, dword [ebx + 0x58]
mov ebp, dword [ebx + 0x60]
cmp ebp, ecx
jae 0x51fa25
mov esi, dword [ebx + 0x54]
movzx edi, byte [esi + ebp]
xchg edi, eax
cmp al, 0xd
xchg edi, eax
je 0x51f87b
xchg edi, eax
cmp al, 0xa
xchg edi, eax
jne 0x51f7a6
xchg edi, eax
cmp al, 0xd
xchg edi, eax
jmp 0x51f87b
xchg edi, eax
cmp al, 0xc2
xchg edi, eax
jne 0x51f7cf
lea edx, [ebp + 1]
cmp ecx, edx
jbe 0x51fa1e
lea edx, [ebp + esi + 1]
cmp byte [edx], 0x85
jne 0x51f7cb
xchg edi, eax
cmp al, 0xd
xchg edi, eax
jmp 0x51f87b
mov edx, dword [esp + 0x20]
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
jne 0x51f86c
lea edx, [ebp + 1]
cmp ecx, edx
jbe 0x51fa17
lea eax, [ebp + esi + 1]
movzx eax, byte [eax]
cmp al, 0x80
jne 0x51f821
lea ebx, [ebp + 2]
cmp ecx, ebx
jbe 0x51fa10
lea ebx, [ebp + esi + 2]
cmp byte [ebx], 0xa8
jne 0x51f813
xchg edi, eax
cmp al, 0xd
xchg edi, eax
mov ebx, dword [esp + 0xe4]
jmp 0x51f87b
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
mov ebx, dword [esp + 0xe4]
jmp 0x51f826
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
jne 0x51f864
cmp ecx, edx
jbe 0x51fa09
cmp al, 0x80
jne 0x51f85a
lea eax, [ebp + 2]
cmp ecx, eax
jbe 0x51fa04
lea edx, [ebp + esi + 2]
cmp byte [edx], 0xa9
jne 0x51f850
xchg edi, eax
cmp al, 0xd
xchg edi, eax
jmp 0x51f87b
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
jmp 0x51f86c
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
jmp 0x51f86c
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
xchg edi, eax
test al, al
xchg edi, eax
jne 0x51f963
xchg edi, eax
cmp al, 0xd
xchg edi, eax
je 0x51f915
xchg edi, eax
cmp al, 0xa
xchg edi, eax
je 0x51f915
xchg edi, eax
cmp al, 0xc2
xchg edi, eax
jne 0x51f8a7
lea eax, [ebp + 1]
cmp ecx, eax
jbe 0x51f9ff
lea edx, [ebp + esi + 1]
cmp byte [edx], 0x85
je 0x51f915
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
jne 0x51f954
lea eax, [ebp + 1]
cmp ecx, eax
jbe 0x51f9fa
lea edx, [ebp + esi + 1]
movzx edx, byte [edx]
cmp dl, 0x80
jne 0x51f8ed
mov byte [esp + 0x1f], dl
lea edx, [ebp + 2]
cmp ecx, edx
jbe 0x51f9f3
lea edx, [ebp + esi + 2]
cmp byte [edx], 0xa8
je 0x51f915
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
movzx edx, byte [esp + 0x1f]
jmp 0x51f8f2
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
jne 0x51f954
cmp ecx, eax
jbe 0x51f9ee
cmp dl, 0x80
jne 0x51f954
lea eax, [ebp + 2]
cmp ecx, eax
jbe 0x51f9e9
lea eax, [ebp + esi + 2]
cmp byte [eax], 0xa9
jne 0x51f954
cmp dword [ebx + 0x64], 2
jge 0x51f93b
mov dword [esp], ebx
mov dword [esp + 4], 2
call fcn.00518b70
movzx eax, byte [esp + 8]
test al, al
je 0x51f945
mov ebx, dword [esp + 0xe4]
mov dword [esp], ebx
call fcn.0051b230
jmp 0x51f954
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
mov byte [esp + 0xec], 1
add esp, 0xe0
ret
nop
mov dword [ebx], 3
mov dword [ebx + 0x24], 0x1a
mov ecx, dword [0x6d0ed8]
test ecx, ecx
je 0x51f985
mov ecx, dword [ebx + 0x20]
call fcn.00464af0
mov dword [edi], ecx
lea ecx, [0x582540]
mov dword [ebx + 0x20], ecx
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x2c], edx
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x30], eax
mov dword [ebx + 8], 0x2b
mov eax, dword [0x6d0ed8]
test eax, eax
je 0x51f9b6
mov eax, dword [ebx + 4]
call fcn.00464af0
mov dword [edi], eax
lea eax, [0x58723d]
mov dword [ebx + 4], eax
mov eax, dword [ebx + 0x80]
mov ecx, dword [ebx + 0x84]
mov edx, dword [ebx + 0x88]
mov dword [ebx + 0x14], eax
mov dword [ebx + 0x18], ecx
mov dword [ebx + 0x1c], edx
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
call fcn.00464b70
call fcn.00464b70
mov eax, edx
call fcn.00464b70
call fcn.00464b70
call fcn.00464b70
call fcn.00464b70
mov eax, edx
call fcn.00464b70
mov eax, ebx
call fcn.00464b70
mov eax, edx
call fcn.00464b70
mov eax, edx
call fcn.00464b70
mov eax, ebp
call fcn.00464b70
mov ecx, dword [ebx + 0x58]
mov ebp, dword [ebx + 0x60]
cmp ecx, ebp
jbe 0x51fc1d
mov esi, dword [ebx + 0x54]
movzx edi, byte [esi + ebp]
xchg edi, eax
cmp al, 0xd
xchg edi, eax
je 0x51f775
xchg edi, eax
cmp al, 0xa
xchg edi, eax
je 0x51f775
xchg edi, eax
cmp al, 0xc2
xchg edi, eax
jne 0x51fa7a
lea edx, [ebp + 1]
cmp ecx, edx
jbe 0x51fc16
lea edx, [esi + ebp + 1]
cmp byte [edx], 0x85
je 0x51fbbc
mov edx, dword [esp + 0x20]
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
jne 0x51fb0a
lea edx, [ebp + 1]
cmp ecx, edx
jbe 0x51fc0f
lea eax, [esi + ebp + 1]
movzx eax, byte [eax]
cmp al, 0x80
jne 0x51fac2
lea ebx, [ebp + 2]
cmp ecx, ebx
jbe 0x51fc08
lea ebx, [esi + ebp + 2]
cmp byte [ebx], 0xa8
je 0x51fbc5
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
mov ebx, dword [esp + 0xe4]
jmp 0x51fac7
xchg edi, eax
cmp al, 0xe2
xchg edi, eax
jne 0x51fb02
cmp ecx, edx
jbe 0x51fc01
cmp al, 0x80
jne 0x51faf8
lea eax, [ebp + 2]
cmp ecx, eax
jbe 0x51fbfc
lea edx, [esi + ebp + 2]
cmp byte [edx], 0xa9
je 0x51fbd9
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
jmp 0x51fb0a
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
jmp 0x51fb0a
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
xchg edi, eax
test al, al
xchg edi, eax
je 0x51f775
nop
inc dword [ebx + 0x80]
inc dword [ebx + 0x88]
mov ebp, dword [ebx + 0x64]
dec ebp
mov dword [ebx + 0x64], ebp
mov ecx, dword [ebx + 0x58]
mov esi, dword [ebx + 0x60]
cmp ecx, esi
jbe 0x51fbf5
mov edi, dword [ebx + 0x54]
movzx edi, byte [edi + esi]
xchg edi, eax
test al, 0x80
xchg edi, eax
jne 0x51fb4b
mov ecx, 1
jmp 0x51fb82
mov ecx, edi
and edi, 0xffffffe0
xchg edi, eax
cmp al, 0xc0
xchg edi, eax
jne 0x51fb5e
mov ecx, 2
jmp 0x51fb82
mov edi, ecx
and ecx, 0xfffffff0
cmp cl, 0xe0
jne 0x51fb6f
mov ecx, 3
jmp 0x51fb82
and edi, 0xfffffff8
xchg edi, eax
cmp al, 0xf0
xchg edi, eax
jne 0x51fb80
mov ecx, 4
jmp 0x51fb82
xor ecx, ecx
add esi, ecx
mov dword [ebx + 0x60], esi
test ebp, ebp
jg 0x51fa2c
mov dword [esp], ebx
mov dword [esp + 4], 1
call fcn.00518b70
movzx eax, byte [esp + 8]
test al, al
je 0x51fbe6
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0xe4]
jmp 0x51fa2c
mov edx, dword [esp + 0x20]
jmp 0x51f775
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0xe4]
jmp 0x51f775
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
jmp 0x51f775
mov byte [esp + 0xec], 0
add esp, 0xe0
ret
mov eax, esi
call fcn.00464b70
call fcn.00464b70
mov eax, edx
call fcn.00464b70
mov eax, ebx
call fcn.00464b70
mov eax, edx
call fcn.00464b70
mov eax, edx
call fcn.00464b70
mov eax, ebp
call fcn.00464b70
mov eax, esi
call fcn.00464b70
mov eax, ebp
call fcn.00464b70
call fcn.00464b70
nop
call fcn.004636f0
jmp fcn.0051f1c0