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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xd8
mov eax, dword [0x65e374]
xor eax, esp
mov dword [esp + 0xd4], eax
mov dword [esp + 0x28], edx
mov eax, ecx
mov ecx, dword [ebp + 8]
xorps xmm5, xmm5
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x5c], edx
mov edx, dword [ebp + 0x10]
push esi
movzx esi, byte [eax + 0x14]
mov dword [esp + 0x5c], edx
inc esi
mov edx, dword [ebp + 0x14]
push edi
mov dword [esp + 0x50], edx
lea edi, [ecx*4 + 4]
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
movsd qword [esp + 0x68], xmm5
imul esi, edi
call fcn.0052aa10
test eax, eax
jne 0x531a97
test esi, esi
jle 0x531a97
mov eax, esi
cdq
push edx
push eax
call fcn.004b7920
mov edx, eax
add esp, 8
mov dword [esp + 0x20], edx
test edx, edx
je 0x531a97
mov ecx, dword [esp + 0x10]
push esi
push 0
push edx
movzx eax, byte [ecx + 0x14]
imul eax, edi
add eax, edx
mov dword [esp + 0x28], eax
call fcn.005d05b0
mov eax, dword [esp + 0x1c]
xor edi, edi
add esp, 0xc
mov dword [esp + 0x28], edi
mov cl, byte [eax + 0x14]
test cl, cl
je 0x53164c
mov esi, dword [esp + 0x20]
xor edx, edx
mov dword [esp + 0x24], edx
nop dword [eax]
movzx eax, cl
mov ecx, dword [esp + 0x20]
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x14]
xor ecx, ecx
mov dword [esi], edx
test eax, eax
jle 0x531614
mov edi, eax
nop word [eax + eax]
mov eax, dword [esi]
mov dword [eax + ecx*4], ecx
inc ecx
cmp ecx, edi
jl 0x531600
mov edx, dword [esi]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
push dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
push dword [esp + 0x34]
push edi
push eax
call fcn.00531390
mov eax, dword [esp + 0x20]
inc edi
mov edx, dword [esp + 0x34]
add esp, 0x10
add edx, dword [esp + 0x14]
add esi, 4
mov dword [esp + 0x28], edi
mov cl, byte [eax + 0x14]
movzx eax, cl
mov dword [esp + 0x24], edx
cmp edi, eax
jl 0x5315e0
movzx eax, cl
mov dword [esp + 0x48], eax
mov dword [esp + 0x1c], 0
test cl, cl
je 0x5318f4
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
dec esi
mov dword [esp + 0x28], esi
mov eax, dword [edi + 0x10]
movzx ecx, byte [edi + 0x17]
sub eax, 4
cdq
idiv ecx
mov ecx, eax
mov eax, 0x55555556
imul ecx
mov eax, dword [esp + 0x14]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
xor eax, eax
mov edx, dword [esp + 0x4c]
xor ecx, ecx
xorps xmm5, xmm5
xorps xmm6, xmm6
xorps xmm7, xmm7
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], edx
cmp edx, dword [esp + 0x34]
jg 0x5318c2
mov al, byte [edi + 0x16]
mov edx, dword [esp + 0x2c]
mov byte [esp + 0x1b], al
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax]
lea eax, [eax + eax*2]
shl eax, 4
mov dword [esp + 0x54], eax
mov eax, dword [edx]
mov edx, dword [esp + 0x38]
mov eax, dword [eax + esi*4]
lea esi, [eax + eax*2]
movzx eax, byte [edi + 0x15]
shl esi, 4
add eax, 0xfffffffe
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x54]
movups xmm0, xmmword [eax + ecx]
movups xmmword [esp + 0xa0], xmm0
movups xmm0, xmmword [eax + ecx + 0x10]
movups xmmword [esp + 0xb0], xmm0
movups xmm0, xmmword [eax + ecx + 0x20]
movups xmmword [esp + 0xc0], xmm0
movups xmm0, xmmword [esi + ecx]
movups xmmword [esp + 0x70], xmm0
movups xmm0, xmmword [esi + ecx + 0x10]
movups xmmword [esp + 0x80], xmm0
movups xmm0, xmmword [esi + ecx + 0x20]
mov esi, 1
movups xmmword [esp + 0x90], xmm0
cmp dword [esp + 0x28], esi
jle 0x5317a2
mov edi, dword [esp + 0x2c]
mov edi, dword [edi]
add edi, 4
mov eax, dword [edi]
lea eax, [eax + eax*2]
shl eax, 4
add eax, ecx
mov ecx, dword [esp + 0x10]
cmp esi, edx
lea edx, [esp + 0xa0]
push eax
jl 0x531784
lea edx, [esp + 0x74]
call fcn.00530cc0
mov edx, dword [esp + 0x3c]
inc esi
mov ecx, dword [esp + 0x34]
add esp, 4
add edi, 4
cmp esi, dword [esp + 0x28]
jl 0x531766
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x58]
xorps xmm2, xmm2
mov cl, byte [esp + 0x1b]
mov eax, edx
nop
test cl, cl
jne 0x5317ce
movss xmm0, dword [esp + eax*4 + 0xac]
movss xmm1, dword [esp + eax*4 + 0xa8]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
jmp 0x5317e8
movd xmm0, dword [esp + eax*4 + 0xac]
movd xmm1, dword [esp + eax*4 + 0xa8]
cvtdq2pd xmm0, xmm0
cvtdq2pd xmm1, xmm1
sub eax, 2
subsd xmm0, xmm1
addsd xmm2, xmm0
jns 0x5317b0
addsd xmm2, xmm5
mov eax, edx
xorps xmm5, xmm5
nop
test cl, cl
jne 0x531818
movss xmm0, dword [esp + eax*4 + 0x7c]
movss xmm1, dword [esp + eax*4 + 0x78]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
jmp 0x53182c
movd xmm0, dword [esp + eax*4 + 0x7c]
movd xmm1, dword [esp + eax*4 + 0x78]
cvtdq2pd xmm0, xmm0
cvtdq2pd xmm1, xmm1
sub eax, 2
subsd xmm0, xmm1
addsd xmm5, xmm0
jns 0x531800
push ecx
lea eax, [esp + 0x74]
mov ecx, edi
push eax
lea edx, [esp + 0xa8]
addsd xmm5, xmm2
call fcn.00530d60
add esp, 8
lea edx, [esp + 0x70]
mov ecx, edi
movaps xmm2, xmm0
call fcn.00530bc0
lea edx, [esp + 0xa0]
movaps xmm3, xmm0
call fcn.00530bc0
mov edx, dword [esp + 0x38]
addsd xmm3, xmm0
cmp edx, dword [esp + 0x4c]
je 0x531895
comisd xmm6, xmm2
ja 0x531895
ucomisd xmm2, xmm6
lahf
test ah, 0x44
jp 0x5318a3
comisd xmm7, xmm3
jbe 0x5318a3
mov ecx, edx
movaps xmm6, xmm2
mov dword [esp + 0x24], ecx
movaps xmm7, xmm3
jmp 0x5318a7
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x5c]
inc edx
mov dword [esp + 0x38], edx
cmp edx, dword [esp + 0x34]
jle 0x531701
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x5318d2
movsd xmm0, qword [esp + 0x68]
comisd xmm0, xmm5
jbe 0x5318e0
mov dword [esp + 0x40], eax
movsd qword [esp + 0x68], xmm5
mov dword [esp + 0x3c], ecx
add dword [esp + 0x2c], 4
inc eax
mov dword [esp + 0x1c], eax
cmp eax, dword [esp + 0x48]
jl 0x5316a5
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x50]
mov eax, dword [esi + ecx*4]
mov eax, dword [eax]
lea eax, [eax + eax*2]
add eax, eax
movups xmm0, xmmword [edx + eax*8]
movups xmmword [edi], xmm0
movups xmm0, xmmword [edx + eax*8 + 0x10]
movups xmmword [edi + 0x10], xmm0
movups xmm0, xmmword [edx + eax*8 + 0x20]
movups xmmword [edi + 0x20], xmm0
mov eax, dword [esi + ecx*4]
xor edi, edi
mov ecx, dword [esp + 0x3c]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x44]
lea eax, [eax + eax*2]
add eax, eax
movups xmm0, xmmword [edx + eax*8]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [edx + eax*8 + 0x10]
movups xmmword [ecx + 0x10], xmm0
movups xmm0, xmmword [edx + eax*8 + 0x20]
mov eax, ecx
movups xmmword [eax + 0x20], xmm0
cmp dword [esp + 0x14], edi
jle 0x531a12
cmp edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x60]
cmovl eax, dword [esp + 0x50]
cmovl ecx, dword [esp + 0x64]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x1c], ecx
mov eax, dword [esi + eax*4]
mov eax, dword [eax + edi*4]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [ecx + 0x18]
mov ecx, dword [esp + 0x10]
movzx esi, byte [eax + 2]
movzx eax, byte [eax + 3]
shl esi, 8
add esi, eax
mov eax, dword [ecx + 0x10]
movzx ecx, byte [ecx + 0x17]
sub eax, 4
cdq
idiv ecx
cmp esi, eax
jge 0x5319e7
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
push esi
push dword [esp + 0x38]
call fcn.0052f080
lea edx, [esi + 1]
add esp, 8
mov esi, dword [esp + 0x1c]
mov eax, edx
shr eax, 8
mov ecx, dword [esi + 0x18]
mov byte [ecx + 2], al
mov byte [ecx + 3], dl
mov dword [esi + 0x14], 1
push dword [esp + 0x34]
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x14]
call fcn.00530cc0
mov edx, dword [esp + 0x34]
inc edi
mov esi, dword [esp + 0x24]
add esp, 4
mov eax, dword [esp + 0x44]
cmp edi, dword [esp + 0x14]
jl 0x531961
cmp dword [0x6609b8], 0
je 0x531a77
mov eax, dword [0x6658b0]
test eax, eax
je 0x531a2e
push eax
call dword [0x660a10]
add esp, 4
push esi
call dword [0x6609ec]
sub dword [0x6656d8], eax
add esp, 4
dec dword [0x6656fc]
push esi
call dword [0x6609e4]
mov eax, dword [0x6658b0]
add esp, 4
test eax, eax
je 0x531a81
push eax
call dword [0x660a18]
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0xd4]
xor ecx, esp
call fcn.005b8427
mov esp, ebp
pop ebp
ret
push esi
call dword [0x6609e4]
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0xd4]
xor ecx, esp
call fcn.005b8427
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0xdc]
mov eax, 7
pop edi
pop esi
xor ecx, esp
call fcn.005b8427
mov esp, ebp
pop ebp
ret