Function at 0x4d09c0
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.004f027b
mov ecx, dword [ebp - 0xc]
mov esi, eax
mov dword [ebp - 0x30], esi
lea ecx, [ecx + edi]
shl ecx, 2
push ecx
call fcn.004f027b
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.004f0b60
movsd qword [ebp - 0x2c], xmm0
movsd xmm0, qword [0x5a71a8]
call fcn.004f0b60
movsd xmm1, qword [ebp - 0x2c]
divsd xmm1, xmm0
addsd xmm1, qword [0x5116a8]
movsd qword [ebp - 0x2c], xmm1
fld qword [ebp - 0x2c]
fstp qword [esp]
call fcn.004f14e0
add esp, 8
call fcn.004dece0
cmp dword [ebp - 0xc], 0
mov ecx, dword [ebp + 8]
movss xmm1, dword [0x5116b8]
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 0x4d0b64
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.004f09a0
mov eax, dword [ebp - 4]
cvtsd2ss xmm0, xmm0
movss dword [esi + eax*8], xmm0
movss xmm0, dword [ebp - 0x1c]
cvtps2pd xmm0, xmm0
call fcn.004f0df0
xorps xmm0, xmmword [0x511710]
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.004f09a0
cvtsd2ss xmm0, xmm0
movss dword [edi], xmm0
movss xmm0, dword [ebp - 0x1c]
cvtps2pd xmm0, xmm0
call fcn.004f0df0
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 0x4d0ab5
movss xmm1, dword [0x5116b8]
mov edi, dword [ebp + 0xc]
jmp 0x4d0b66
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 0x4d0bea
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.004f09a0
mulsd xmm0, qword [0x5116a8]
cvtsd2ss xmm0, xmm0
movss dword [esi], xmm0
movss xmm0, dword [ebp - 0x24]
cvtps2pd xmm0, xmm0
call fcn.004f0df0
mulsd xmm0, qword [0x5116e8]
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 0x4d0b90
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 0x4d0c3a
xor edx, edx
xor ecx, ecx
test edi, edi
je 0x4d0c22
mov eax, edi
test esi, eax
je 0x4d0c19
bts edx, ecx
inc ecx
mov eax, edi
sar eax, cl
test eax, eax
jne 0x4d0c12
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 0x4d0c08
movss xmm0, dword [0x51148c]
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