Function at 0x4aca00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push esi
push edi
mov edi, dword [ebp + 0xc]
mov eax, edi
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [ebp - 0xc], eax
lea ecx, [eax*4]
push ecx
call fcn.004cc19f
mov ecx, dword [ebp - 0xc]
mov esi, eax
mov dword [ebp - 0x30], esi
lea ecx, [ecx + edi]
shl ecx, 2
push ecx
call fcn.004cc19f
movd xmm0, edi
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x10], eax
mov eax, edi
sar eax, 1
mov dword [ebp - 0x1c], eax
movss dword [ebp - 0x14], xmm0
cvtps2pd xmm0, xmm0
call fcn.004ce780
movsd qword [ebp - 0x2c], xmm0
movsd xmm0, qword [0x581c28]
call fcn.004ce780
movsd xmm1, qword [ebp - 0x2c]
divsd xmm1, xmm0
addsd xmm1, qword [0x508ea8]
movsd qword [ebp - 0x2c], xmm1
fld qword [ebp - 0x2c]
fstp qword [esp]
call fcn.004ca440
add esp, 8
call fcn.004bc840
cmp dword [ebp - 0xc], 0
mov ecx, dword [ebp + 8]
movss xmm1, dword [0x4e8488]
mov dword [ebp - 0x28], eax
mov dword [ebp - 4], 0
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x10]
mov dword [ecx], edi
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], esi
jle 0x4acba4
lea eax, [edi + edi]
mov esi, dword [ebp - 0x10]
movd xmm0, eax
movaps xmm2, xmm1
divss xmm2, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 8], 1
lea edi, [esi + eax*4]
cvtdq2ps xmm0, xmm0
movss dword [ebp - 0x24], xmm2
divss xmm1, xmm0
movss dword [ebp - 0x20], xmm1
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm2
movss dword [ebp - 0x1c], xmm0
cvtps2pd xmm0, xmm0
call fcn.004c9fb0
mov eax, dword [ebp - 4]
cvtsd2ss xmm0, xmm0
movss dword [esi + eax*8], xmm0
movss xmm0, dword [ebp - 0x1c]
cvtps2pd xmm0, xmm0
call fcn.004ca170
xorps xmm0, xmmword [0x509c00]
mov eax, dword [ebp - 4]
cvtsd2ss xmm0, xmm0
movss dword [esi + eax*8 + 4], xmm0
movd xmm0, dword [ebp - 8]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0x1c], xmm0
cvtps2pd xmm0, xmm0
call fcn.004c9fb0
cvtsd2ss xmm0, xmm0
movss dword [edi], xmm0
movss xmm0, dword [ebp - 0x1c]
cvtps2pd xmm0, xmm0
call fcn.004ca170
mov eax, dword [ebp - 4]
lea edi, [edi + 8]
mov ecx, dword [ebp - 0x18]
inc eax
add dword [ebp - 8], 2
add ecx, 4
movss xmm2, dword [ebp - 0x24]
cvtsd2ss xmm0, xmm0
mov dword [ebp - 4], eax
mov dword [ebp - 0x18], ecx
movss dword [edi - 4], xmm0
cmp eax, dword [ebp - 0xc]
jl 0x4acaf5
movss xmm1, dword [0x4e8488]
mov edi, dword [ebp + 0xc]
jmp 0x4acba6
mov esi, eax
mov eax, edi
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [ebp - 0x18], eax
test eax, eax
jle 0x4acc2a
divss xmm1, dword [ebp - 0x14]
mov ecx, dword [ebp + 0xc]
mov edi, 2
mov dword [ebp + 0xc], eax
lea esi, [esi + ecx*4]
movss dword [ebp - 0x20], xmm1
movd xmm0, edi
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [ebp - 0x24], xmm0
cvtps2pd xmm0, xmm0
call fcn.004c9fb0
mulsd xmm0, qword [0x508ea8]
cvtsd2ss xmm0, xmm0
movss dword [esi], xmm0
movss xmm0, dword [ebp - 0x24]
cvtps2pd xmm0, xmm0
call fcn.004ca170
mulsd xmm0, qword [0x509d08]
lea esi, [esi + 8]
add edi, 4
sub dword [ebp + 0xc], 1
movss xmm1, dword [ebp - 0x20]
cvtsd2ss xmm0, xmm0
movss dword [esi - 4], xmm0
jne 0x4acbd0
mov eax, dword [ebp - 0x18]
mov esi, dword [ebp - 0x28]
mov edi, 1
mov edx, edi
lea ecx, [esi - 1]
shl edx, cl
lea ecx, [esi - 2]
dec edx
shl edi, cl
xor esi, esi
mov dword [ebp + 0xc], edx
test eax, eax
jle 0x4acc7a
xor edx, edx
xor ecx, ecx
test edi, edi
je 0x4acc62
mov eax, edi
test esi, eax
je 0x4acc59
bts edx, ecx
inc ecx
mov eax, edi
sar eax, cl
test eax, eax
jne 0x4acc52
mov ecx, dword [ebp - 0x30]
mov eax, edx
not eax
and eax, dword [ebp + 0xc]
dec eax
mov dword [ecx + esi*8], eax
mov dword [ecx + esi*8 + 4], edx
inc esi
cmp esi, dword [ebp - 0x18]
jl 0x4acc48
movss xmm0, dword [0x4e8734]
divss xmm0, dword [ebp - 0x14]
mov eax, dword [ebp + 8]
pop edi
pop esi
movss dword [eax + 0x10], xmm0
mov esp, ebp
pop ebp
ret