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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x38]
cmp eax, dword [ecx + 8]
jbe 0x51ae6e
sub esp, 0xb8
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xe4]
mov edx, eax
sub eax, ecx
lea ebx, [ecx - 1]
cmp ebx, ecx
jae 0x51ae67
nop
mov ebp, dword [esp + 0xe0]
mov esi, dword [ebp + ecx*4 - 4]
nop
nop
nop
cmp esi, 0x10000
jb 0x51adf0
shr esi, 0x10
mov edi, 0x10
cmp esi, 0x100
jb 0x51a62e
shr esi, 8
add edi, 8
cmp esi, 0x100
jae 0x51ae60
mov dword [esp + 0x6c], eax
mov dword [esp + 0x74], ebx
mov dword [esp + 0x68], edi
lea eax, [0xb4f740]
movzx eax, byte [eax + esi]
mov dword [esp + 0x70], eax
mov dword [esp], ecx
call fcn.0051a480
mov eax, dword [esp + 4]
mov dword [esp + 0x9c], eax
mov ecx, dword [eax]
mov dword [esp + 0xa4], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x4c], edx
mov ebx, dword [eax + 8]
mov dword [esp + 0x50], ebx
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov ebp, dword [esp + 0xe0]
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0xe4]
mov dword [esp + 0x10], ebp
mov esi, dword [esp + 0xe8]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x70]
lea esi, [edi + esi - 0x20]
xchg esi, ebx
neg ebx
xchg esi, ebx
mov dword [esp + 0x70], esi
mov dword [esp + 0x18], esi
call fcn.00528950
nop
mov eax, dword [esp + 0xd8]
lea ecx, [eax + 1]
mov edx, dword [esp + 0xd0]
cmp ecx, edx
jg 0x51ad7b
test ecx, ecx
jl 0x51ae59
mov ebx, dword [esp + 0xc8]
cmp eax, edx
ja 0x51ae52
mov dword [esp + 0xb0], ebx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edx
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x18], ecx
call fcn.00528950
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0xd8]
mov edx, dword [esp + 0x3c]
cmp ecx, edx
jae 0x51ae4b
mov ebx, dword [esp + 0xb0]
mov dword [ebx + ecx*4], eax
nop
mov eax, dword [esp + 0xc4]
test eax, eax
jle 0x51ad69
lea ecx, [eax - 1]
cmp ecx, eax
jae 0x51ae44
mov ecx, dword [esp + 0xbc]
lea ebp, [ecx + eax*4 - 4]
mov esi, dword [esp + 0x40]
lea edi, [esi - 1]
cmp edi, esi
jae 0x51ae44
lea edi, [ebx + esi*4 - 4]
cmp ebp, edi
xchg ebp, ebx
sete bl
xchg ebp, ebx
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x51ad5b
xor eax, eax
xor ecx, ecx
nop
mov ebp, dword [esp + 0x6c]
lea edi, [ebp + 1]
cmp edi, ecx
jg 0x51acf4
test edi, edi
jl 0x51ae3d
mov dword [esp + 0x30], ecx
mov dword [esp + 0xac], eax
mov dword [esp + 0x2c], edi
mov edx, dword [esp + 0xe4]
lea ebx, [edx + 1]
mov dword [esp], ebx
call fcn.0051a480
mov eax, dword [esp + 4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
mov ebx, dword [eax]
mov ebp, dword [esp + 0x74]
mov esi, dword [esp + 0x4c]
cmp ebp, esi
jae 0x51ae36
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa8], ebx
mov ebp, dword [esp + 0xe4]
mov edi, dword [esp + 0xa4]
mov eax, dword [edi + ebp*4 - 4]
mov dword [esp + 0x48], eax
jmp 0x51aa40
mov dword [esp + 0x80], eax
mov dword [esp + 0x54], edi
mov dword [esp], eax
mov ecx, dword [esp + 0x44]
mov dword [esp + 4], ecx
call fcn.00528830
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x44]
mov ebp, dword [esp + 0x38]
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0xe4]
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0xb0]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x64], eax
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x60], ecx
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x84]
nop
mov esi, dword [esp + 0x64]
cmp eax, esi
jbe 0x51abaf
mov eax, 1
test al, al
je 0x51aba2
mov eax, dword [esp + 0x60]
dec eax
mov ecx, dword [esp + 0x48]
lea edi, [esi + ecx]
cmp edi, esi
jae 0x51a832
mov ebp, dword [esp + 0x5c]
cmp edx, ebp
ja 0x51ae13
mov dword [esp + 0x60], eax
mov ecx, dword [esp + 0xa8]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov ebx, dword [esp + 0xa4]
mov dword [esp + 0xc], ebx
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x10], esi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.005289f0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0x58]
cmp ecx, edx
jae 0x51ae0c
mov ebx, dword [esp + 0xa8]
mov dword [ebx + ecx*4], eax
mov eax, dword [esp + 0x6c]
lea ebp, [eax + edx]
test ebp, ebp
jl 0x51ae05
cmp eax, ebp
ja 0x51ae05
mov esi, dword [esp + 0x40]
cmp ebp, esi
ja 0x51ae05
sub esi, eax
mov edi, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
shl eax, 2
sar esi, 0x1f
and esi, eax
mov eax, dword [esp + 0xb0]
add esi, eax
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x3c]
cmp ebp, eax
ja 0x51ae05
mov dword [esp + 0x7c], edi
mov dword [esp + 0xb4], esi
mov dword [esp], esi
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp + 0xc], esi
sub eax, ebp
mov dword [esp + 0x78], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x20], edx
call fcn.005288b0
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x51ab1e
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x2c]
cmp ecx, edx
jae 0x51adf7
mov ebx, dword [esp + 0xac]
mov dword [ebx + ecx*4], eax
lea eax, [ecx - 1]
mov ecx, dword [esp + 0xb0]
mov ebp, dword [esp + 0x48]
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0xa8]
mov ebp, dword [esp + 0xe4]
mov esi, edi
mov edi, dword [esp + 0xa4]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x6c]
test edx, edx
jl 0x51abd4
lea esi, [ebp + edx]
mov edi, dword [esp + 0x3c]
cmp esi, edi
jae 0x51ae2f
mov dword [esp + 0x74], esi
mov ebx, dword [esp + 0xb0]
mov esi, dword [ebx + esi*4]
cmp esi, eax
je 0x51abc2
lea ecx, [edx + ebp - 1]
cmp ecx, edi
jae 0x51ae28
mov ecx, dword [ebx + ecx*4]
mov dword [esp], esi
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00528850
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xe4]
lea ebx, [edx - 2]
mov ebp, dword [esp + 0x4c]
cmp ebx, ebp
jae 0x51ae21
mov dword [esp + 0x60], eax
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0xa4]
mov ebx, dword [ecx + edx*4 - 8]
mov dword [esp + 0x44], ebx
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00528830
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xe4]
mov ebx, dword [esp + 0x6c]
lea ebp, [ebx + edx - 2]
mov esi, dword [esp + 0x3c]
cmp ebp, esi
jae 0x51ae1a
mov edi, dword [esp + 0xb0]
mov ebp, dword [edi + ebp*4]
mov dword [esp + 0x38], ebp
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x94]
jmp 0x51a8b1
mov eax, dword [esp + 0x74]
test eax, eax
jl 0x51adfe
mov ecx, dword [esp + 0x6c]
cmp ecx, eax
ja 0x51adfe
mov eax, dword [esp + 0xb4]
mov dword [esp], eax
mov ecx, dword [esp + 0xe4]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x7c]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x1c], edx
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x20], ebx
call fcn.00528870
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0xb0]
mov edx, dword [ecx + eax*4]
add edx, dword [esp + 0x24]
mov dword [ecx + eax*4], edx
mov eax, dword [esp + 0x60]
dec eax
jmp 0x51a9e9
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x60]
jmp 0x51a8df
jne 0x51abbb
cmp ecx, ebp
seta al
jmp 0x51a8c3
xor eax, eax
jmp 0x51a8c3
mov ecx, eax
mov edx, ebp
mov ebx, dword [esp + 0x6c]
mov eax, 0xffffffff
jmp 0x51a8df
nop
lea eax, [0xb7dc78]
mov dword [esp], eax
lea ecx, [0x810480]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x9c]
mov dword [esp + 8], edx
call fcn.00463ce0
nop
lea eax, [0xb7dc78]
mov dword [esp], eax
lea eax, [0x810480]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 8], eax
call fcn.00463ce0
mov eax, dword [esp + 0xac]
mov dword [esp], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
call fcn.00516bb0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x74], eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0xc]
mov dword [esp + 0xb4], edx
mov ebx, dword [esp + 0xb0]
mov dword [esp], ebx
mov ebp, dword [esp + 0x3c]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x40]
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], esi
mov edi, dword [esp + 0x70]
mov dword [esp + 0x18], edi
call fcn.005289a0
mov eax, dword [esp + 0xb0]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 8], eax
call fcn.00516bb0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0xb4]
mov dword [esp + 0xec], ebx
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0xf0], ebx
mov ebx, dword [esp + 0x74]
mov dword [esp + 0xf4], ebx
mov dword [esp + 0xf8], edx
mov dword [esp + 0xfc], ecx
mov dword [esp + 0x100], eax
add esp, 0xb8
ret
test ebp, ebp
jne 0x51ad29
lea eax, [0x7ab600]
mov dword [esp], eax
mov dword [esp + 4], 1
mov dword [esp + 8], 1
call fcn.0043a890
mov eax, dword [esp + 0xc]
mov ecx, 1
mov edi, 1
jmp 0x51a7c4
mov dword [esp + 0x2c], edi
lea eax, [0x7ab600]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [ebp + 5]
mov dword [esp + 0x30], eax
mov dword [esp + 8], eax
call fcn.0043a890
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
jmp 0x51a7c4
mov eax, ecx
mov ecx, dword [esp + 0xc4]
jmp 0x51a7ac
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp + 0x40]
xor ebp, ebp
jmp 0x51a79e
test eax, eax
jne 0x51adb7
lea eax, [0x7ab600]
mov dword [esp], eax
mov dword [esp + 4], 1
mov dword [esp + 8], 1
call fcn.0043a890
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0xd8]
mov ecx, 1
mov edx, 1
jmp 0x51a6f2
mov dword [esp + 0x28], ecx
lea edx, [0x7ab600]
mov dword [esp], edx
mov dword [esp + 4], ecx
lea ebx, [eax + 5]
mov dword [esp + 0x34], ebx
mov dword [esp + 8], ebx
call fcn.0043a890
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
jmp 0x51a6f2
xor edi, edi
jmp 0x51a620
call fcn.004287c0
ud2
call fcn.004288c0
ud2
call fcn.004288c0
ud2
call fcn.004287c0
ud2
call fcn.004288c0
ud2
call fcn.004287c0
ud2
call fcn.004287c0
ud2
call fcn.004287c0
ud2
call fcn.004287c0
ud2
call fcn.004287c0
ud2
call fcn.004288c0
ud2
call fcn.004287c0
ud2
call fcn.004287c0
ud2
call fcn.004288c0
ud2
call fcn.004288c0
ud2
call fcn.004287c0
ud2
call fcn.004287c0
ud2
call fcn.0044d880
jmp fcn.0051a5c0