Function at 0x46a6ad
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x38
mov eax, dword [esp + 0x3c]
mov edx, eax
mov ecx, dword [esp + 0x40]
push esi
push edi
mov edi, eax
shl edx, 2
imul edi, ecx
mov esi, eax
shl esi, 3
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], edi
test ecx, ecx
jle 0x46a744
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x3c], ecx
lea eax, [eax + edi*4]
mov dword [esp + 0x24], eax
lea eax, [ecx - 4]
mov ecx, dword [esp + 0x48]
add eax, esi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x38], eax
movss xmm0, dword [edi]
addss xmm0, dword [ecx]
mov eax, dword [esp + 0x3c]
add dword [esp + 0x3c], esi
movss dword [eax], xmm0
movss xmm0, dword [ecx]
add ecx, edx
subss xmm0, dword [edi]
mov eax, dword [esp + 0x38]
add edi, edx
add dword [esp + 0x38], esi
sub dword [esp + 0x30], 1
movss dword [eax], xmm0
mov eax, dword [esp + 0x44]
jne 0x46a705
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x2c]
cmp eax, 2
jl 0x46a8cf
je 0x46a871
test ecx, ecx
jle 0x46a86d
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x3c], eax
lea ecx, [eax + edi*4]
mov edi, dword [esp + 0x50]
mov eax, edi
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x48]
add eax, esi
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], edi
cmp eax, 2
jle 0x46a846
mov edx, dword [esp + 0x38]
lea edi, [eax - 3]
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x34]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x54]
add ecx, 4
shr edi, 1
inc edi
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0x24], edi
push 8
pop edi
add ecx, edi
add eax, edi
sub edx, edi
add esi, edi
mov edi, dword [esp + 0x28]
movss xmm2, dword [ecx]
movss xmm3, dword [ecx - 4]
movaps xmm0, xmm2
movss xmm1, dword [edi]
mulss xmm2, dword [edi - 4]
mulss xmm3, dword [edi - 4]
add edi, 8
sub dword [esp + 0x24], 1
mulss xmm0, xmm1
mov dword [esp + 0x28], edi
mulss xmm1, dword [ecx - 4]
addss xmm3, xmm0
subss xmm2, xmm1
movaps xmm0, xmm2
addss xmm0, dword [eax]
movss dword [esi], xmm0
movaps xmm0, xmm3
subss xmm2, dword [eax]
movss dword [edx], xmm2
addss xmm0, dword [eax - 4]
movss dword [esi - 4], xmm0
movss xmm0, dword [eax - 4]
subss xmm0, xmm3
movss dword [edx - 4], xmm0
jne 0x46a7bc
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
add dword [esp + 0x38], esi
add edi, esi
add dword [esp + 0x3c], edx
add ecx, edx
sub dword [esp + 0x18], 1
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], ecx
jne 0x46a78a
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x2c]
test al, 1
jne 0x46a8cf
dec eax
mov dword [esp + 0x44], eax
add eax, edi
test ecx, ecx
jle 0x46a8cf
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
add edi, edx
mov dword [esp + 8], edi
mov edi, dword [esp + 0x44]
lea eax, [ecx + eax*4]
mov dword [esp + 0x44], eax
lea edi, [ecx + edi*4]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x44]
add dword [esp + 0x44], edx
movss xmm0, dword [eax]
mov eax, dword [esp + 0x2c]
xorps xmm0, xmmword [0x5c0800]
add dword [esp + 0x2c], edx
movss dword [edi], xmm0
mov eax, dword [eax]
mov dword [edi - 4], eax
add edi, esi
sub ecx, 1
jne 0x46a8a4
pop edi
pop esi
add esp, 0x38
ret