Function at 0x41532a
Capabilities:
Encode data using xor

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x48
mov eax, dword [ecx + 4]
mov esi, dword [ecx + 8]
mov edi, dword [ecx]
mov dword [ebp - 0x2c], eax
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0x28], esi
lea esi, [eax + 3]
mov dword [ebp - 0x24], eax
lea ecx, [esi*4]
mov dword [ebp - 0x1c], esi
lea edx, [ecx + 0xf]
shr edx, 4
shl edx, 4
mov eax, edx
call fcn.004166d0
sub esp, eax
mov eax, edx
lea ebx, [esp + 0xf]
mov esi, ebx
and ebx, 0xfffffffc
shr esi, 2
mov dword [ebp - 0x38], esi
call fcn.004166d0
sub esp, eax
lea esi, [esp + 0xf]
mov eax, esi
and esi, 0xfffffffc
shr eax, 2
mov dword [ebp - 0x3c], eax
mov eax, edx
call fcn.004166d0
sub esp, eax
sub ecx, 0xc
mov dword [esp + 8], ecx
lea edx, [esp + 0xc]
mov dword [esp + 4], edi
mov dword [esp], esi
mov dword [ebp - 0x30], edx
call sym._memcpy
mov eax, dword [ebp - 0x24]
fldz
lea edi, [eax*4]
lea ecx, [esi + edi]
mov dword [ebp - 0x20], edi
fst dword [ecx + 8]
fst dword [ecx + 4]
fstp dword [ecx]
test eax, eax
jle 0x41578e
lea edi, [eax - 1]
mov eax, dword [ebp - 0x2c]
mov dword [esp + 4], 0
shr edi, 2
mov dword [ebp - 0x34], ecx
add edi, 1
mov dword [esp], eax
shl edi, 4
mov dword [esp + 8], edi
call sym._memset
mov dword [esp + 8], edi
add edi, esi
mov dword [esp + 4], 0
mov dword [esp], ebx
call sym._memset
pxor xmm1, xmm1
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
movaps xmm4, xmmword [0x4245e0]
mov eax, esi
movaps xmm3, xmm1
lea esi, [esi]
movups xmm2, xmmword [eax]
movups xmm7, xmmword [eax]
movaps xmm0, xmm4
add eax, 0x10
add edx, 0x10
cmpltps xmm2, xmm3
andnps xmm0, xmm7
movups xmmword [eax - 0x10], xmm0
addps xmm1, xmm0
movups xmmword [edx - 0x10], xmm2
cmp edi, eax
jne 0x415428
mov eax, dword [ebp - 0x24]
sar eax, 1
cmp eax, dword [ebp - 0x28]
jge 0x415568
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x4e
addps xmm0, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0xb1
addps xmm0, xmm1
movss dword [ebp - 0x34], xmm0
fld dword [0x4245f0]
fld dword [ebp - 0x34]
fcomi st(1)
fstp st(1)
jbe 0x415707
fld dword [0x4245f4]
fcompi st(1)
fstp st(0)
jbe 0x415709
fild dword [ebp - 0x28]
fadd qword [0x4245f8]
rcpps xmm0, xmm0
mov edi, dword [ebp - 0x24]
fstp dword [ebp - 0x34]
movss xmm4, dword [ebp - 0x34]
shufps xmm4, xmm4, 0
mulps xmm4, xmm0
test edi, edi
jle 0x415797
pxor xmm2, xmm2
mov edx, dword [ebp - 0x2c]
pxor xmm3, xmm3
xor eax, eax
movaps xmm1, xmm2
lea esi, [esi]
movups xmm0, xmmword [esi + eax*4]
movups xmm6, xmmword [esi + eax*4]
movdqa xmm5, xmm3
mulps xmm0, xmm4
cvttps2dq xmm0, xmm0
paddd xmm5, xmm0
movups xmmword [edx + eax*4], xmm0
cvtdq2ps xmm0, xmm0
mulps xmm6, xmm0
movdqa xmm3, xmm5
addps xmm2, xmm6
movaps xmm6, xmm0
mulps xmm6, xmm0
addps xmm0, xmm0
movups xmmword [ebx + eax*4], xmm0
add eax, 4
addps xmm1, xmm6
cmp edi, eax
jg 0x4154d0
movdqa xmm0, xmm5
pshufd xmm0, xmm0, 0x4e
paddd xmm0, xmm5
pshufd xmm3, xmm0, 0xb1
paddd xmm0, xmm3
movd eax, xmm0
movaps xmm0, xmm2
sub dword [ebp - 0x28], eax
shufps xmm0, xmm2, 0x4e
addps xmm0, xmm2
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xb1
addps xmm0, xmm2
movss dword [ebp - 0x34], xmm0
movaps xmm0, xmm1
fld dword [ebp - 0x34]
shufps xmm0, xmm1, 0x4e
addps xmm0, xmm1
movaps xmm1, xmm0
shufps xmm1, xmm0, 0xb1
addps xmm0, xmm1
movss dword [ebp - 0x34], xmm0
fld dword [ebp - 0x34]
fxch st(1)
jmp 0x41556c
fldz
fld st(0)
fld dword [0x424600]
mov eax, dword [ebp - 0x20]
mov edi, dword [ebp - 0x1c]
add eax, ebx
fst dword [ecx + 8]
fst dword [ecx + 4]
fstp dword [ecx]
fld dword [0x424604]
fst dword [eax + 8]
fst dword [eax + 4]
fstp dword [eax]
mov eax, dword [ebp - 0x28]
cmp eax, edi
jg 0x415767
test eax, eax
jle 0x4156b0
fxch st(1)
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x20], esi
xor edi, edi
movdqa xmm7, xmmword [0x424610]
lea ecx, [eax - 1]
shr ecx, 2
add ecx, 1
shl ecx, 4
add ecx, esi
mov esi, dword [ebp - 0x2c]
jmp 0x4155d2
fxch st(1)
fadd dword [0x4245c0]
fxch st(1)
mov eax, dword [ebp - 0x24]
fst dword [ebp - 0x1c]
fxch st(1)
movss xmm5, dword [ebp - 0x1c]
fst dword [ebp - 0x1c]
movss xmm6, dword [ebp - 0x1c]
shufps xmm5, xmm5, 0
shufps xmm6, xmm6, 0
test eax, eax
jle 0x415758
mov eax, dword [ebp - 0x20]
mov edx, ebx
pxor xmm4, xmm4
pxor xmm2, xmm2
movdqa xmm3, xmmword [0x4245d0]
lea esi, [esi]
movups xmm0, xmmword [edx]
movups xmm1, xmmword [eax]
add eax, 0x10
add edx, 0x10
addps xmm0, xmm6
addps xmm1, xmm5
rsqrtps xmm0, xmm0
mulps xmm1, xmm0
movaps xmm0, xmm2
cmpltps xmm0, xmm1
maxps xmm2, xmm1
pand xmm0, xmm3
paddd xmm3, xmm7
pmaxsw xmm0, xmm4
movdqa xmm4, xmm0
cmp ecx, eax
jne 0x415618
fxch st(1)
movaps xmm3, xmm2
movaps xmm1, xmm2
mov edx, dword [ebp - 0x20]
add edi, 1
shufps xmm3, xmm2, 0x4e
maxps xmm1, xmm3
movaps xmm3, xmm1
shufps xmm3, xmm1, 0xb1
maxps xmm1, xmm3
cmpeqps xmm2, xmm1
pand xmm0, xmm2
movdqa xmm1, xmm0
punpckhqdq xmm1, xmm0
pmaxsw xmm0, xmm1
pshuflw xmm1, xmm0, 0x4e
pmaxsw xmm0, xmm1
movd eax, xmm0
fadd dword [edx + eax*4]
add dword [esi + eax*4], 1
fld dword [ebx + eax*4]
fadd st(2), st(0)
fadd dword [0x424620]
fstp dword [ebx + eax*4]
cmp dword [ebp - 0x28], edi
jne 0x4155d0
fstp st(0)
jmp 0x4156b8
fstp st(0)
lea esi, [esi]
mov ebx, dword [ebp - 0x24]
test ebx, ebx
jle 0x4156fb
mov eax, dword [ebp - 0x2c]
lea ecx, [ebx*4 - 4]
mov edx, dword [ebp - 0x30]
and ecx, 0xfffffff0
lea ecx, [eax + ecx + 0x10]
lea esi, [esi]
nop
movdqu xmm0, xmmword [eax]
movdqu xmm7, xmmword [edx]
add eax, 0x10
add edx, 0x10
paddd xmm0, xmm7
movdqu xmm7, xmmword [edx - 0x10]
pxor xmm0, xmm7
movups xmmword [eax - 0x10], xmm0
cmp eax, ecx
jne 0x4156d8
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret
fstp st(0)
mov eax, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x24]
mov edx, 4
mov dword [ebp - 0x34], ecx
mov dword [eax*4], 0x3f800000
cmp edi, 1
lea eax, [edi*4 - 4]
cmovle eax, edx
lea edx, [esi + 4]
mov dword [esp + 4], 0
mov dword [esp], edx
mov dword [esp + 8], eax
call sym._memset
movaps xmm0, xmmword [0x4245c0]
mov ecx, dword [ebp - 0x34]
jmp 0x415497
fxch st(1)
pxor xmm0, xmm0
pxor xmm2, xmm2
jmp 0x415650
fstp st(0)
mov eax, dword [ebp - 0x28]
mov esi, dword [ebp - 0x38]
mov dword [ebp - 0x1c], eax
fild dword [ebp - 0x1c]
fld st(0)
fmul st(1)
faddp st(2)
fmul dword [esi*4]
mov esi, dword [ebp - 0x2c]
add dword [esi], eax
faddp st(1)
jmp 0x4156b8
pxor xmm1, xmm1
jmp 0x41544d
pxor xmm5, xmm5
pxor xmm2, xmm2
movdqa xmm0, xmm5
movaps xmm1, xmm2
jmp 0x415513