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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov edx, dword [ebp + 8]
sub esp, 0xa4
mov edx, dword [edx]
push ebx
push esi
push edi
test edx, edx
je 0x52b23d
mov eax, dword [edx + 0x20]
jmp 0x52b23f
xor eax, eax
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
mov dword [esp + 0x6c], eax
mov ecx, dword [ebx + 8]
mov eax, ecx
mov edi, dword [esi + 8]
shr eax, 0x1f
mov ebx, dword [ebx + 0xc]
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
movd xmm0, edi
addsd xmm1, qword [eax*8 + 0x605690]
cvtdq2pd xmm0, xmm0
mov eax, edi
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x605690]
mov eax, ebx
shr eax, 0x1f
divsd xmm1, xmm0
movsd qword [esp + 0x48], xmm1
movd xmm1, ebx
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [eax*8 + 0x605690]
mov eax, dword [esi + 0xc]
movd xmm0, eax
shr eax, 0x1f
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x605690]
mov eax, dword [ebp + 0xc]
divsd xmm1, xmm0
mov eax, dword [eax]
dec eax
add eax, ecx
mov dword [esp + 0x5c], eax
movsd qword [esp + 0x78], xmm1
test edx, edx
je 0x52b2de
cmp dword [edx + 0x18], 0
jbe 0x52b2de
mov eax, dword [edx + 0x1c]
mov dword [esp + 0x70], eax
jmp 0x52b2e6
mov dword [esp + 0x70], 0
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov edx, 0xc
mov eax, dword [eax + 4]
dec eax
add eax, ebx
mov dword [esp + 0x74], eax
mov eax, edi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00577ad5
movsd xmm4, qword [0x604d48]
xor edx, edx
movsd xmm5, qword [0x604f50]
add esp, 4
xorps xmm3, xmm3
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x58], eax
cmp dword [esi + 8], edx
jbe 0x52b3a4
movsd xmm2, qword [esp + 0x48]
mov edi, eax
nop word [eax + eax]
mov eax, dword [ebx]
movd xmm1, edx
cvtdq2pd xmm1, xmm1
mov dword [esp + 0x48], eax
addsd xmm1, xmm4
mulsd xmm1, xmm2
subsd xmm1, xmm4
comisd xmm3, xmm1
jbe 0x52b365
movaps xmm1, xmm3
jmp 0x52b37b
cvttsd2si ecx, xmm1
add eax, ecx
mov dword [esp + 0x48], eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
mulsd xmm1, xmm5
mov ecx, 0x100
inc edx
cvttsd2si eax, xmm1
mov dword [esp + 0x4c], eax
sub ecx, eax
movq xmm0, qword [esp + 0x48]
movq qword [edi], xmm0
mov dword [edi + 8], ecx
add edi, 0xc
cmp edx, dword [esi + 8]
jb 0x52b340
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test eax, eax
je 0x52b3b6
mov cl, byte [eax + 0x24]
mov byte [esp + 0x2b], cl
jmp 0x52b3bb
mov byte [esp + 0x2b], 0
xor eax, eax
mov dword [esp + 0x68], eax
cmp dword [esi + 0xc], eax
jbe 0x52bcce
nop word [eax + eax]
mov edi, dword [ebx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm4
mulsd xmm0, qword [esp + 0x78]
subsd xmm0, xmm4
comisd xmm3, xmm0
jbe 0x52b3f4
movaps xmm0, xmm3
jmp 0x52b406
cvttsd2si eax, xmm0
add edi, eax
movd xmm1, eax
cvtdq2pd xmm1, xmm1
subsd xmm0, xmm1
mulsd xmm0, xmm5
call fcn.005a08e0
mov edx, edi
mov ecx, eax
imul edx, dword [esp + 0x6c]
mov eax, 0x100
sub eax, ecx
mov dword [esp + 0x44], ecx
xor ebx, ebx
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x10]
add edx, dword [esp + 0x70]
cmp edi, dword [esp + 0x74]
mov edi, dword [esi + 4]
cmovl ebx, dword [esp + 0x6c]
add edi, dword [esp + 0x68]
add ebx, edx
mov eax, dword [eax]
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], ebx
test eax, eax
je 0x52b460
cmp edi, dword [eax + 0x18]
jae 0x52b460
mov ecx, dword [eax + 0x20]
imul ecx, edi
add ecx, dword [eax + 0x1c]
jmp 0x52b462
xor ecx, ecx
cmp byte [esp + 0x2b], 0
mov eax, dword [esi]
lea eax, [ecx + eax*4]
mov dword [esp + 0x20], eax
je 0x52bb25
mov ecx, dword [ebp + 0x18]
cmp ecx, 2
je 0x52b95f
test ecx, ecx
jne 0x52b6f9
mov dword [esp + 0x38], ecx
cmp dword [esi + 8], ecx
jbe 0x52bca6
mov eax, dword [esp + 0x58]
mov dword [esp + 0x48], eax
nop
movq xmm0, qword [eax]
mov edi, dword [eax + 8]
movq qword [esp + 0x80], xmm0
mov esi, dword [esp + 0x80]
mov eax, dword [edx + esi*4]
mov ecx, dword [ebx + esi*4]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], eax
cmp esi, dword [esp + 0x5c]
jge 0x52b4d5
mov edx, dword [edx + esi*4 + 4]
mov esi, dword [ebx + esi*4 + 4]
jmp 0x52b4e1
mov dword [esp + 0x1c], eax
mov edx, eax
mov dword [esp + 0x1c], ecx
mov esi, ecx
mov ebx, edi
mov dword [esp + 0x2c], esi
imul ebx, dword [esp + 0x40]
imul edi, dword [esp + 0x44]
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x14], edi
mov edi, ebx
imul edi, dword [esp + 0x40]
imul ebx, dword [esp + 0x44]
mov dword [esp + 0x3c], edi
mov edi, ecx
shr edi, 0x18
imul edi, dword [esp + 0x14]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x1c], edi
mov edi, esi
shr edi, 0x18
imul edi, ebx
mov ebx, dword [esp + 0x1c]
add ebx, edi
mov edi, edx
shr edi, 0x18
imul edi, dword [esp + 0x3c]
add ebx, edi
mov edi, eax
shr edi, 0x18
imul edi, dword [esp + 0x24]
add ebx, edi
mov edi, dword [esp + 0x10]
shr ebx, 0x10
mov dword [esp + 0x1c], ebx
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
imul ebx, dword [esp + 0x14]
shr ecx, 8
movzx ecx, cl
imul ecx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, esi
shr ebx, 0x10
movzx esi, bl
mov ebx, edx
imul esi, edi
shr ebx, 0x10
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2c]
add dword [esp + 0x18], esi
movzx esi, bl
mov ebx, eax
imul esi, dword [esp + 0x3c]
shr ebx, 0x10
shr eax, 8
movzx eax, al
imul eax, dword [esp + 0x24]
add dword [esp + 0x18], esi
movzx esi, bl
imul esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
add ebx, esi
shr ebx, 0x10
mov dword [esp + 0x18], ebx
mov ebx, ecx
shr ebx, 8
movzx esi, bl
mov ebx, edx
imul esi, edi
shr ebx, 8
add dword [esp + 0x10], esi
movzx esi, bl
imul esi, dword [esp + 0x3c]
add dword [esp + 0x10], esi
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
shr dword [esp + 0x10], 0x10
movzx eax, al
imul eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x34]
movzx eax, al
imul eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
add dword [esp + 0x14], eax
movzx eax, cl
mov ecx, dword [esp + 0x14]
imul eax, edi
mov edi, dword [esp + 0x20]
add ecx, eax
movzx eax, dl
imul eax, dword [esp + 0x3c]
add ecx, eax
shr ecx, 0x10
mov dword [esp + 0x14], ecx
test ebx, ebx
je 0x52b6c5
cmp ebx, 0xff
je 0x52b6b1
movzx ecx, byte [edi + 2]
mov esi, 0xff
mov eax, dword [esp + 0x18]
sub esi, ebx
imul eax, ebx
imul ecx, esi
add ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [edi + 1]
mov eax, dword [esp + 0x10]
imul eax, ebx
imul ecx, esi
shr edx, 7
mov byte [edi + 2], dl
add ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [edi]
mov eax, dword [esp + 0x14]
imul eax, ebx
imul ecx, esi
shr edx, 7
mov byte [edi + 1], dl
imul ebx, ebx
add ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [edi + 3]
mov eax, 0x80808081
imul ecx, esi
shr edx, 7
mov byte [edi], dl
add ecx, ebx
mul ecx
shr edx, 7
mov byte [edi + 3], dl
jmp 0x52b6c5
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov byte [edi + 2], bl
mov byte [edi + 1], al
mov byte [edi], cl
mov byte [edi + 3], 0xff
mov ecx, dword [esp + 0x38]
add edi, 4
mov esi, dword [ebp + 0x14]
inc ecx
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x60]
add eax, 0xc
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x20], edi
cmp ecx, dword [esi + 8]
jb 0x52b4a0
jmp 0x52bca6
cmp ecx, 1
jne 0x52bca6
cmp dword [esi + 8], 0
mov dword [esp + 0x30], 0
jbe 0x52bca6
mov eax, dword [esp + 0x58]
mov dword [esp + 0x2c], eax
nop dword [eax]
movq xmm0, qword [eax]
mov edi, dword [eax + 8]
movq qword [esp + 0x8c], xmm0
mov esi, dword [esp + 0x8c]
mov eax, dword [edx + esi*4]
mov ecx, dword [ebx + esi*4]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], eax
cmp esi, dword [esp + 0x5c]
jge 0x52b755
mov edx, dword [edx + esi*4 + 4]
mov esi, dword [ebx + esi*4 + 4]
jmp 0x52b761
mov dword [esp + 0x1c], eax
mov edx, eax
mov dword [esp + 0x1c], ecx
mov esi, ecx
mov ebx, edi
mov dword [esp + 0x48], esi
imul ebx, dword [esp + 0x40]
imul edi, dword [esp + 0x44]
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x14], edi
mov edi, ebx
imul edi, dword [esp + 0x40]
imul ebx, dword [esp + 0x44]
mov dword [esp + 0x1c], edi
mov edi, ecx
shr edi, 0x18
imul edi, dword [esp + 0x14]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x3c], edi
mov edi, esi
shr edi, 0x18
imul edi, ebx
mov ebx, dword [esp + 0x3c]
add ebx, edi
mov edi, edx
shr edi, 0x18
imul edi, dword [esp + 0x1c]
add ebx, edi
mov edi, eax
shr edi, 0x18
imul edi, dword [esp + 0x24]
add ebx, edi
mov edi, dword [esp + 0x10]
shr ebx, 0x10
mov dword [esp + 0x3c], ebx
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
imul ebx, dword [esp + 0x14]
shr ecx, 8
movzx ecx, cl
imul ecx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, esi
shr ebx, 0x10
movzx esi, bl
mov ebx, edx
imul esi, edi
shr ebx, 0x10
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x48]
add dword [esp + 0x18], esi
movzx esi, bl
mov ebx, eax
imul esi, dword [esp + 0x1c]
shr ebx, 0x10
shr eax, 8
movzx eax, al
imul eax, dword [esp + 0x24]
add dword [esp + 0x18], esi
movzx esi, bl
imul esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
add ebx, esi
shr ebx, 0x10
mov dword [esp + 0x18], ebx
mov ebx, ecx
shr ebx, 8
movzx esi, bl
mov ebx, edx
imul esi, edi
shr ebx, 8
movzx ecx, cl
imul ecx, edi
add dword [esp + 0x10], esi
movzx esi, bl
imul esi, dword [esp + 0x1c]
add dword [esp + 0x10], esi
add dword [esp + 0x10], eax
shr dword [esp + 0x10], 0x10
movzx eax, dl
imul eax, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x20]
movzx eax, al
imul eax, dword [esp + 0x14]
add ecx, eax
mov eax, dword [esp + 0x34]
movzx eax, al
imul eax, dword [esp + 0x24]
add ecx, eax
shr ecx, 0x10
mov dword [esp + 0x48], ecx
test ebx, ebx
je 0x52b92b
cmp ebx, 0xff
je 0x52b917
movzx ecx, byte [edi + 2]
mov esi, 0xff
sub esi, ebx
mov eax, 0x80808081
imul ecx, esi
mul ecx
movzx ecx, byte [edi + 1]
mov eax, dword [esp + 0x18]
shr edx, 7
add dl, al
imul ecx, esi
mov byte [edi + 2], dl
mov eax, 0x80808081
mul ecx
movzx ecx, byte [edi]
mov eax, 0x80808081
shr edx, 7
add dl, byte [esp + 0x10]
imul ecx, esi
mov byte [edi + 1], dl
mul ecx
movzx ecx, byte [edi + 3]
mov eax, 0x80808081
shr edx, 7
add dl, byte [esp + 0x48]
imul ecx, esi
mov byte [edi], dl
mul ecx
shr edx, 7
add dl, bl
mov byte [edi + 3], dl
jmp 0x52b92b
mov eax, dword [esp + 0x18]
mov byte [edi + 2], al
mov eax, dword [esp + 0x10]
mov byte [edi + 1], al
mov byte [edi], cl
mov byte [edi + 3], 0xff
mov ecx, dword [esp + 0x30]
add edi, 4
mov esi, dword [ebp + 0x14]
inc ecx
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x60]
add eax, 0xc
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], edi
cmp ecx, dword [esi + 8]
jb 0x52b720
jmp 0x52bca6
cmp dword [esi + 8], 0
mov dword [esp + 0x2c], 0
jbe 0x52bca6
mov eax, dword [esp + 0x58]
mov dword [esp + 0x24], eax
nop dword [eax]
movq xmm0, qword [eax]
mov edi, dword [eax + 8]
movq qword [esp + 0x98], xmm0
mov esi, dword [esp + 0x98]
mov eax, dword [edx + esi*4]
mov ecx, dword [ebx + esi*4]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
cmp esi, dword [esp + 0x5c]
jge 0x52b9b5
mov edx, dword [edx + esi*4 + 4]
mov esi, dword [ebx + esi*4 + 4]
jmp 0x52b9c1
mov dword [esp + 0x1c], eax
mov edx, eax
mov dword [esp + 0x1c], ecx
mov esi, ecx
mov ebx, edi
mov dword [esp + 0x38], esi
imul ebx, dword [esp + 0x40]
imul edi, dword [esp + 0x44]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0x18], edi
mov edi, ebx
imul ebx, dword [esp + 0x44]
imul edi, dword [esp + 0x40]
mov dword [esp + 0x48], ebx
mov ebx, ecx
shr ebx, 0x18
imul ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], edi
mov edi, eax
shr edi, 0x18
imul edi, dword [esp + 0x10]
add ebx, edi
mov edi, esi
shr edi, 0x18
imul edi, dword [esp + 0x48]
add ebx, edi
mov edi, edx
shr edi, 0x18
imul edi, dword [esp + 0x1c]
add ebx, edi
mov edi, dword [esp + 0x20]
shr ebx, 0x10
mov byte [edi + 3], bl
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
imul ebx, dword [esp + 0x18]
shr ecx, 8
mov dword [esp + 0x14], ebx
mov ebx, eax
shr ebx, 0x10
movzx edi, bl
mov ebx, esi
imul edi, dword [esp + 0x10]
shr ebx, 0x10
movzx esi, bl
mov ebx, edx
shr ebx, 0x10
shr eax, 8
add dword [esp + 0x14], edi
mov edi, dword [esp + 0x48]
imul esi, edi
movzx eax, al
imul eax, dword [esp + 0x10]
add dword [esp + 0x14], esi
movzx esi, bl
imul esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
add ebx, esi
mov esi, dword [esp + 0x20]
shr ebx, 0x10
mov byte [esi + 2], bl
movzx ebx, cl
imul ebx, dword [esp + 0x18]
add ebx, eax
mov eax, dword [esp + 0x38]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
imul ecx, edi
add ebx, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
imul ecx, dword [esp + 0x1c]
add ebx, ecx
mov ecx, esi
shr ebx, 0x10
mov byte [ecx + 1], bl
mov ecx, dword [esp + 0x34]
movzx ebx, cl
mov ecx, dword [esp + 0x30]
imul ebx, dword [esp + 0x18]
movzx ecx, cl
imul ecx, dword [esp + 0x10]
movzx eax, al
imul eax, edi
add ebx, ecx
mov ecx, dword [esp + 0x2c]
inc ecx
add ebx, eax
mov dword [esp + 0x2c], ecx
movzx eax, dl
mov edx, esi
imul eax, dword [esp + 0x1c]
mov esi, dword [ebp + 0x14]
add ebx, eax
mov eax, dword [esp + 0x24]
shr ebx, 0x10
add eax, 0xc
mov byte [edx], bl
add edx, 4
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x24], eax
cmp ecx, dword [esi + 8]
jb 0x52b980
jmp 0x52bca6
cmp dword [esi + 8], 0
mov dword [esp + 0x2c], 0
jbe 0x52bca6
mov eax, dword [esp + 0x58]
mov dword [esp + 0x3c], eax
nop
movq xmm0, qword [eax]
mov edi, dword [eax + 8]
movq qword [esp + 0xa4], xmm0
mov esi, dword [esp + 0xa4]
mov eax, dword [edx + esi*4]
mov ecx, dword [ebx + esi*4]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
cmp esi, dword [esp + 0x5c]
jge 0x52bb75
mov edx, dword [edx + esi*4 + 4]
mov esi, dword [ebx + esi*4 + 4]
jmp 0x52bb81
mov dword [esp + 0x1c], eax
mov edx, eax
mov dword [esp + 0x1c], ecx
mov esi, ecx
mov ebx, edi
mov dword [esp + 0x38], esi
imul ebx, dword [esp + 0x40]
imul edi, dword [esp + 0x44]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0xa8]
mov ebx, edi
imul ebx, dword [esp + 0x40]
imul edi, dword [esp + 0x44]
mov dword [esp + 0x48], ebx
mov ebx, esi
shr ebx, 0x10
movzx ebx, bl
imul ebx, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], ebx
mov ebx, ecx
shr ebx, 0x10
movzx edi, bl
mov ebx, eax
imul edi, dword [esp + 0x1c]
shr ebx, 0x10
shr eax, 8
movzx eax, al
imul eax, dword [esp + 0x24]
add dword [esp + 0x14], edi
movzx edi, bl
mov ebx, edx
imul edi, dword [esp + 0x24]
shr ebx, 0x10
shr ecx, 8
movzx ecx, cl
imul ecx, dword [esp + 0x1c]
add dword [esp + 0x14], edi
movzx edi, bl
imul edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x14]
add ebx, edi
mov edi, dword [esp + 0x20]
shr ebx, 0x10
mov byte [edi + 2], bl
mov ebx, esi
shr ebx, 8
movzx ebx, bl
imul ebx, dword [esp + 0x18]
add ebx, ecx
add ebx, eax
mov eax, edx
shr eax, 8
movzx eax, al
imul eax, dword [esp + 0x48]
add ebx, eax
mov eax, edi
shr ebx, 0x10
mov byte [eax + 1], bl
mov eax, esi
movzx ecx, al
imul ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x34]
movzx eax, al
imul eax, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x30]
movzx eax, al
imul eax, dword [esp + 0x24]
add ecx, eax
movzx eax, dl
imul eax, dword [esp + 0x48]
mov edx, edi
add ecx, eax
mov eax, dword [esp + 0x3c]
shr ecx, 0x10
add eax, 0xc
mov byte [edx], cl
mov ecx, dword [esp + 0x2c]
inc ecx
mov dword [esp + 0x3c], eax
add edx, 4
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], edx
mov esi, dword [ebp + 0x14]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x64]
cmp ecx, dword [esi + 8]
jb 0x52bb40
mov eax, dword [esp + 0x68]
xorps xmm3, xmm3
movsd xmm4, qword [0x604d48]
inc eax
movsd xmm5, qword [0x604f50]
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x68], eax
cmp eax, dword [esi + 0xc]
jb 0x52b3d0
push dword [esp + 0x58]
call fcn.005772e5
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14