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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x50985c
sub esp, 0x58
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x90]
cmp eax, ecx
jne 0x509843
mov ebx, dword [esp + 0x78]
cmp ecx, ebx
jne 0x509843
mov ebp, dword [esp + 0x84]
cmp ebp, ecx
jne 0x509843
shl ecx, 1
mov edx, dword [esp + 0x64]
cmp ecx, edx
jg 0x509786
ja 0x50983e
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x54], edi
mov dword [esp + 0x2c], edx
mov dword [esp], edi
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call fcn.00508990
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x6c]
mov ebx, dword [esp + 0x90]
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x48], eax
xor eax, eax
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x48]
jmp 0x509564
mov ecx, dword [esp + 0x30]
inc ecx
mov edx, dword [esp + 0x74]
mov ebx, dword [esp + 0x78]
mov ebp, dword [esp + 0x6c]
mov edx, ebp
mov ebx, dword [esp + 0x90]
mov ebp, edi
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
mov esi, dword [esp + 0x30]
cmp esi, ebx
jge 0x509692
cmp esi, ecx
jae 0x509837
mov ebp, dword [eax + esi*4]
mov dword [esp + 0x34], ebp
lea ebp, [esi + ebx]
cmp ebp, edi
ja 0x50982e
cmp esi, ebp
ja 0x509825
mov dword [esp + 0x44], ebp
mov eax, esi
shl esi, 2
sub edi, eax
mov dword [esp + 0x40], edi
mov ebp, edi
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and esi, edi
mov edi, dword [esp + 0x54]
add esi, edi
mov dword [esp + 0x50], esi
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov ecx, dword [esp + 0x68]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x18], edx
call fcn.0051aa10
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
cmp ecx, edx
jae 0x50981c
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x54]
mov edx, dword [eax + ecx*4]
mov ebx, dword [esp + 0x50]
mov dword [esp], ebx
mov ebx, dword [esp + 0x90]
mov dword [esp + 4], ebx
mov ebp, dword [esp + 0x40]
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x80]
mov dword [esp + 0xc], ebp
mov esi, dword [esp + 0x84]
mov dword [esp + 0x10], esi
mov edi, dword [esp + 0x88]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x8c]
imul edx, edi
mov dword [esp + 0x18], edx
call fcn.0051aa10
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
add edx, ecx
lea ebx, [edx + eax]
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0x28]
cmp ebp, esi
jae 0x509813
mov edi, dword [esp + 0x54]
mov dword [edi + ebp*4], ebx
cmp edx, ecx
jae 0x509687
mov eax, 1
jmp 0x509530
cmp ebx, eax
jb 0x50967d
xor eax, eax
jmp 0x509530
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x509737
cmp ebx, edi
ja 0x50980a
mov ecx, dword [esp + 0x28]
cmp ebx, ecx
ja 0x509803
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
sub edi, ebx
mov edx, edi
xchg edi, ebx
neg ebx
xchg edi, ebx
mov esi, ebx
shl ebx, 2
sar edi, 0x1f
and ebx, edi
add ebx, ebp
mov dword [esp + 0xc], ebx
sub ecx, esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x20], ecx
call fcn.0051a890
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x2c]
cmp ecx, edx
ja 0x5097ee
mov eax, dword [esp + 0x54]
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], ecx
mov dword [esp + 0x9c], edx
add esp, 0x58
ret
cmp ebx, edi
ja 0x5097fa
mov ecx, dword [esp + 0x28]
cmp ebx, ecx
ja 0x5097f3
sub ecx, ebx
mov edx, edi
sub edi, ebx
xchg edi, ebx
neg ebx
xchg edi, ebx
mov eax, ebx
shl ebx, 2
sar edi, 0x1f
and ebx, edi
lea esi, [ebp + ebx]
cmp eax, ecx
jle 0x509782
test ebx, ebx
je 0x509707
mov dword [esp], ebp
mov dword [esp + 4], esi
shl ecx, 2
mov dword [esp + 8], ecx
call fcn.004579b0
jmp 0x509707
mov ecx, eax
jmp 0x509769
cmp ecx, 1
jne 0x5097bc
lea eax, [0x8eb040]
mov dword [esp], eax
mov dword [esp + 4], 1
mov dword [esp + 8], 1
call fcn.00440500
mov edi, dword [esp + 0xc]
mov ecx, 1
mov edx, 1
jmp 0x5094df
mov dword [esp + 0x28], ecx
lea eax, [0x8eb040]
mov dword [esp], eax
mov dword [esp + 4], ecx
lea eax, [ecx + 4]
mov dword [esp + 0x2c], eax
mov dword [esp + 8], eax
call fcn.00440500
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
jmp 0x5094df
call fcn.004570a0
mov eax, ebx
call fcn.004570c0
mov ecx, ebx
mov edx, edi
call fcn.004570a0
mov eax, ebx
call fcn.004570c0
mov ecx, ebx
mov edx, edi
call fcn.004570a0
mov eax, ebp
mov ecx, esi
call fcn.00457060
mov eax, ecx
mov ecx, edx
call fcn.00457060
mov eax, esi
mov ecx, ebp
call fcn.004570c0
mov ecx, ebp
mov edx, edi
call fcn.004570a0
mov eax, esi
call fcn.00457060
call fcn.004570a0
lea eax, [0x8eba40]
mov dword [esp], eax
lea eax, [0xa45488]
mov dword [esp + 4], eax
call fcn.0042cff0
nop
call fcn.004557a0
jmp fcn.00509480