Function at 0x4b3700
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 sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
mov ecx, dword [ebp - 0xc]
mov esi, eax
mov dword [ebp - 0x30], esi
lea ecx, [ecx + edi]
shl ecx, 2
push ecx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
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 sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_log_precise
movsd qword [ebp - 0x2c], xmm0
movsd xmm0, qword [0x56a068]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_log_precise
movsd xmm1, qword [ebp - 0x2c]
divsd xmm1, xmm0
addsd xmm1, qword [0x4e23a8]
movsd qword [ebp - 0x2c], xmm1
fld qword [ebp - 0x2c]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
add esp, 8
call fcn.004c1800
cmp dword [ebp - 0xc], 0
mov ecx, dword [ebp + 8]
movss xmm1, dword [0x4c86c8]
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 0x4b38a4
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 sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
mov eax, dword [ebp - 4]
cvtsd2ss xmm0, xmm0
movss dword [esi + eax*8], xmm0
movss xmm0, dword [ebp - 0x1c]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
xorps xmm0, xmmword [0x4e3100]
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 sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
cvtsd2ss xmm0, xmm0
movss dword [edi], xmm0
movss xmm0, dword [ebp - 0x1c]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
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 0x4b37f5
movss xmm1, dword [0x4c86c8]
mov edi, dword [ebp + 0xc]
jmp 0x4b38a6
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 0x4b392a
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 sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
mulsd xmm0, qword [0x4e23a8]
cvtsd2ss xmm0, xmm0
movss dword [esi], xmm0
movss xmm0, dword [ebp - 0x24]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
mulsd xmm0, qword [0x4e3208]
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 0x4b38d0
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 0x4b397a
xor edx, edx
xor ecx, ecx
test edi, edi
je 0x4b3962
mov eax, edi
test esi, eax
je 0x4b3959
bts edx, ecx
inc ecx
mov eax, edi
sar eax, cl
test eax, eax
jne 0x4b3952
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 0x4b3948
movss xmm0, dword [0x4c8fc4]
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