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

Disassembly:
sub esp, 0x54
mov eax, dword [esp + 0x58]
xor edx, edx
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x70]
dec eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
lea ebx, [edi*8]
mov dword [esp + 0x28], ebx
test eax, eax
jle 0x10153e36
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x2c], esi
lea ecx, [ebx + esi]
mov dword [esp + 0x30], ecx
mov ebx, dword [0x10b47804]
mov ebp, eax
mov dword [esp + 0x34], ebp
cmp ebp, edx
jle 0x10153bc7
imul eax, edi
mov ebx, edi
lea edi, [ebp*8 - 8]
neg ebx
imul edi, dword [esp + 0x70]
shl ebx, 3
mov dword [esp + 0x50], ebx
add edi, esi
lea ecx, [esi + eax*8]
mov dword [esp + 0x44], edi
add eax, edx
mov dword [esp + 0x24], ecx
lea ecx, [esi + eax*8]
lea eax, [ebp - 1]
mov dword [esp + 0x3c], ecx
imul eax, dword [esp + 0x70]
add eax, edx
lea eax, [esi + eax*8]
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 4]
mov esi, dword [ecx]
cdq
xor eax, edx
xor esi, edx
sub esi, edx
sbb eax, edx
mov edx, dword [esp + 0x20]
mov ecx, eax
mov eax, dword [edx]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 4]
cdq
xor eax, edx
xor dword [esp + 0x10], edx
sub dword [esp + 0x10], edx
sbb eax, edx
cmp eax, ecx
jg 0x10153b96
jl 0x10153b2b
cmp dword [esp + 0x10], esi
jae 0x10153b96
mov ecx, dword [esp + 0x68]
test ecx, ecx
jle 0x10153b6a
mov eax, dword [esp + 0x24]
mov ebx, edi
mov ebp, ecx
nop dword [eax + eax]
mov esi, dword [eax]
lea eax, [eax + 8]
mov edi, dword [eax - 4]
lea ebx, [ebx + 8]
mov ecx, dword [ebx - 8]
mov edx, dword [ebx - 4]
mov dword [eax - 8], ecx
mov dword [eax - 4], edx
mov dword [ebx - 8], esi
mov dword [ebx - 4], edi
sub ebp, 1
jne 0x10153b40
mov ebx, dword [esp + 0x50]
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x74]
mov eax, dword [ecx + ebp*8 - 8]
mov edx, dword [ecx + ebp*8]
mov esi, dword [ecx + ebp*8 + 4]
mov ecx, dword [ecx + ebp*8 - 4]
mov dword [edi + ebp*8], eax
mov eax, edi
mov edi, dword [esp + 0x44]
mov dword [eax + ebp*8 + 4], ecx
mov dword [eax + ebp*8 - 8], edx
mov dword [eax + ebp*8 - 4], esi
mov ecx, dword [esp + 0x3c]
dec ebp
add dword [esp + 0x20], ebx
add ecx, ebx
add dword [esp + 0x24], ebx
add edi, ebx
mov dword [esp + 0x34], ebp
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x44], edi
cmp ebp, dword [esp + 0x14]
jg 0x10153af5
mov esi, dword [esp + 0x6c]
mov ebx, dword [0x10b47804]
mov ebp, dword [esp + 0x68]
xorps xmm0, xmm0
xor ecx, ecx
movlpd qword [esp + 0x5c], xmm0
test ebp, ebp
jle 0x10153ca9
cmp ebp, 4
jb 0x10153c58
cmp ebx, 6
jl 0x10153c58
mov edx, ebp
xorps xmm1, xmm1
mov ebp, dword [esp + 0x1c]
and edx, 0xfffffffc
xorps xmm2, xmm2
nop word [eax + eax]
lea eax, [ecx + ebp]
add ecx, 4
vpabsq xmm0, xmmword [esi + eax*8]
vpmaxsq xmm1, xmm1, xmm0
vpabsq xmm0, xmmword [esi + eax*8 + 0x10]
vpmaxsq xmm2, xmm2, xmm0
cmp ecx, edx
jl 0x10153c00
mov ebp, dword [esp + 0x68]
vpmaxsq xmm1, xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
vpmaxsq xmm0, xmm1, xmm0
movd edi, xmm0
psrldq xmm0, 4
movd ebx, xmm0
mov dword [esp + 0x5c], edi
mov dword [esp + 0x60], ebx
cmp ecx, ebp
jge 0x10153c91
jmp 0x10153c60
mov ebx, dword [esp + 0x60]
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x6c]
add eax, ecx
mov esi, dword [esi + eax*8]
mov eax, dword [edx + eax*8 + 4]
cdq
xor eax, edx
xor esi, edx
sub esi, edx
sbb eax, edx
cmp eax, ebx
jl 0x10153c88
jg 0x10153c84
cmp esi, edi
jbe 0x10153c88
mov edi, esi
mov ebx, eax
mov esi, dword [esp + 0x6c]
inc ecx
cmp ecx, ebp
jl 0x10153c60
test ebx, ebx
jl 0x10153ca9
jg 0x10153c9f
cmp edi, 0x400000
jb 0x10153ca9
mov eax, 0x20
lea ecx, [eax + 0x60]
jmp 0x10153cb0
mov eax, 1
mov ecx, eax
mov edx, ecx
mov dword [esp + 0x44], eax
imul edx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x48], edx
cmp edx, eax
jge 0x10153e10
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x28]
add edi, 8
lea eax, [eax + edx*8]
imul edi, edx
add eax, 8
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x24], eax
lea eax, [ebx + 1]
imul eax, edx
add edi, esi
mov dword [esp + 0x5c], edi
add eax, ebx
lea edx, [esi + eax*8]
mov dword [esp + 0x4c], edx
nop
mov ebx, dword [edi]
mov eax, ebx
mov ebp, dword [edi + 4]
or eax, ebp
je 0x1015401f
push 0
push ecx
push dword [edx + 4]
push dword [edx]
call fcn.10511aa0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x34], edx
test eax, eax
jle 0x10153d9b
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x3c], eax
nop dword [eax + eax]
push 0
push dword [esp + 0x48]
push dword [edi + 4]
push dword [edi]
call fcn.10511aa0
push dword [esp + 0x34]
push dword [esp + 0x14]
push edx
push eax
call fcn.10511b50
push ebp
push ebx
push edx
push eax
call fcn.10511aa0
push 0
push dword [esp + 0x58]
push edx
push eax
call fcn.10511b50
sub dword [esi], eax
lea edi, [edi + 8]
sbb dword [esi + 4], edx
lea esi, [esi + 8]
sub dword [esp + 0x3c], 1
jne 0x10153d50
mov edi, dword [esp + 0x5c]
push dword [esp + 0x34]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x78]
push dword [esp + 0x14]
push dword [ecx + eax*8 + 4]
push dword [ecx + eax*8]
call fcn.10511b50
push ebp
push ebx
push edx
push eax
call fcn.10511aa0
push 0
push dword [esp + 0x24]
push edx
push eax
call fcn.10511b50
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x28]
sub dword [ecx], eax
mov eax, dword [esp + 0x48]
sbb dword [ecx + 4], edx
add ecx, 8
mov edx, dword [esp + 0x4c]
inc eax
add dword [esp + 0x24], ebx
add edx, ebx
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
cmp eax, dword [esp + 0x18]
jl 0x10153d10
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
jmp 0x10153e14
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x70]
inc edx
add dword [esp + 0x1c], edi
add dword [esp + 0x2c], ebx
add dword [esp + 0x30], ebx
mov dword [esp + 0x14], edx
cmp edx, eax
jge 0x10153e36
mov esi, dword [esp + 0x6c]
jmp 0x10153aa0
mov edx, eax
mov dword [esp + 0x50], edx
test edx, edx
js 0x10154012
mov esi, dword [esp + 0x6c]
mov eax, 0xfffffff8
sub eax, ebx
mov ecx, edx
add ebx, 8
imul ecx, edi
mov edi, dword [esp + 0x78]
xor ebp, ebp
imul ebx, edx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x4c], ebp
lea eax, [edi + edx*8]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x44], eax
add ebx, esi
sub dword [esp + 0x74], edi
mov dword [esp + 0x48], ebx
nop dword [eax]
mov eax, dword [ebx]
or eax, dword [ebx + 4]
je 0x1015401f
xorps xmm0, xmm0
lea edi, [edx + 1]
movlpd qword [esp + 0x54], xmm0
movlpd qword [esp + 0x3c], xmm0
movlpd qword [esp + 0x34], xmm0
cmp edi, dword [esp + 0x18]
jg 0x10153faa
mov ebx, dword [esp + 0x40]
cmp ebp, 2
mov ebp, dword [esp + 0x3c]
jl 0x10153f50
lea eax, [ecx + edx]
lea esi, [esi + eax*8]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x1c], eax
add esi, 8
mov eax, dword [esp + 0x54]
mov dword [esp + 0x68], eax
push dword [esi + 4]
mov eax, dword [esp + 0x7c]
push dword [esi]
push dword [eax + edi*8 + 4]
push dword [eax + edi*8]
call fcn.10511b50
push 0
push 0x10000
push edx
push eax
call fcn.10511aa0
push dword [esi + 0xc]
add dword [esp + 0x6c], eax
mov eax, dword [esp + 0x7c]
push dword [esi + 8]
adc dword [esp + 0x24], edx
push dword [eax + edi*8 + 0xc]
push dword [eax + edi*8 + 8]
call fcn.10511b50
push 0
push 0x10000
push edx
push eax
call fcn.10511aa0
mov ecx, dword [esp + 0x18]
lea esi, [esi + 0x10]
add ebp, eax
adc ebx, edx
add edi, 2
lea eax, [ecx - 1]
cmp edi, eax
jle 0x10153ed7
cmp edi, ecx
jle 0x10153f62
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
jmp 0x10153f94
mov eax, dword [esp + 0x58]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x68], eax
jmp 0x10153f6a
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x6c]
lea eax, [ecx + edi]
mov ecx, dword [esp + 0x78]
push dword [ecx + edi*8 + 4]
push dword [ecx + edi*8]
push dword [esi + eax*8 + 4]
push dword [esi + eax*8]
call fcn.10511b50
push 0
push 0x10000
push edx
push eax
call fcn.10511aa0
mov esi, eax
add ebp, dword [esp + 0x68]
adc ebx, dword [esp + 0x1c]
add esi, ebp
mov ebp, dword [esp + 0x4c]
adc edx, ebx
mov ebx, dword [esp + 0x48]
jmp 0x10153fb2
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x74]
push dword [ebx + 4]
push dword [ebx]
mov ecx, dword [eax + edi]
mov eax, dword [eax + edi + 4]
sub ecx, esi
sbb eax, edx
shld eax, ecx, 0x10
shl ecx, 0x10
push eax
push ecx
call fcn.10511aa0
mov ecx, dword [esp + 0x30]
inc ebp
sub ecx, dword [esp + 0x70]
add ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x6c]
mov dword [edi + 4], edx
mov edx, dword [esp + 0x50]
dec edx
mov dword [edi], eax
sub edi, 8
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x30], ecx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x44], edi
test edx, edx
jns 0x10153e80
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x54
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x54
ret