Function at 0x10097e10
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [ebp + 8]
xor edx, edx
push ebx
push esi
mov esi, dword [ebp + 0x28]
push edi
lea edi, [eax + eax]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp + 0x10]
mov dword [ebp - 4], edi
lea ebx, [eax + eax]
mov eax, dword [ebp + 0x18]
add eax, eax
mov dword [ebp - 8], ebx
mov dword [ebp + 8], eax
cmp dword [ebp + 0x2c], edx
jle 0x10098083
mov eax, dword [ebp + 0xc]
xorps xmm4, xmm4
add eax, eax
xorps xmm3, xmm3
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0x14]
add eax, eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 0x1c]
add eax, eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 0x20]
xor ecx, ecx
test esi, esi
jle 0x10098035
cmp esi, 8
jb 0x10097fc9
cmp dword [0x10757c00], 2
jl 0x10097fc9
mov edx, esi
movaps xmm5, xmmword [0x103c2310]
movaps xmm6, xmmword [0x103c2300]
and edx, 0xfffffff8
mov dword [ebp - 0x1c], edx
mov edx, 6
mov dword [ebp + 0x10], edi
movd xmm7, edx
lea edx, [ebx + 8]
mov dword [ebp + 0x18], edx
mov edx, dword [ebp + 8]
mov esi, edx
sub esi, ebx
mov dword [ebp - 0x10], esi
mov esi, edi
sub esi, ebx
sub edx, edi
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x14]
mov dword [ebp - 0x18], esi
mov esi, dword [ebp + 0x18]
nop dword [eax]
mov ebx, dword [ebp + 0x10]
lea esi, [esi + 0x10]
movd xmm0, dword [ecx + eax]
movaps xmm2, xmm5
pmovzxbd xmm1, xmm0
psubd xmm2, xmm1
add dword [ebp + 0x10], 0x10
movq xmm0, qword [edi + ebx]
pmovzxwd xmm0, xmm0
pmulld xmm2, xmm0
movq xmm0, qword [esi - 0x18]
pmovzxwd xmm0, xmm0
pmulld xmm0, xmm1
paddd xmm2, xmm0
paddd xmm2, xmm6
psrad xmm2, xmm7
pshuflw xmm0, xmm2, 0xd8
movaps xmm2, xmm5
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pmovzxwd xmm1, xmm0
movq xmm0, qword [ebx]
pmovzxwd xmm0, xmm0
psubd xmm1, xmm0
mov ebx, dword [ebp - 0x18]
pabsd xmm0, xmm1
paddd xmm4, xmm0
movd xmm0, dword [ecx + eax + 4]
pmovzxbd xmm1, xmm0
movq xmm0, qword [edx + esi - 0x10]
psubd xmm2, xmm1
pmovzxwd xmm0, xmm0
pmulld xmm2, xmm0
movq xmm0, qword [esi - 0x10]
add ecx, 8
pmovzxwd xmm0, xmm0
pmulld xmm0, xmm1
paddd xmm2, xmm0
paddd xmm2, xmm6
psrad xmm2, xmm7
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pmovzxwd xmm1, xmm0
movq xmm0, qword [ebx + esi - 0x10]
pmovzxwd xmm0, xmm0
psubd xmm1, xmm0
pabsd xmm0, xmm1
paddd xmm3, xmm0
cmp ecx, dword [ebp - 0x1c]
jl 0x10097ed0
mov esi, dword [ebp + 0x28]
mov ebx, dword [ebp - 8]
mov edi, dword [ebp - 4]
mov edx, dword [ebp + 8]
cmp ecx, esi
jge 0x10098035
jmp 0x10097fcc
mov edx, dword [ebp + 8]
mov eax, edx
lea edi, [ebx + ecx*2]
mov edx, dword [ebp - 4]
sub eax, ebx
sub edx, ebx
mov dword [ebp + 0x18], eax
mov ebx, dword [ebp - 0xc]
mov dword [ebp + 0x10], edx
movzx esi, word [eax + edi]
lea edi, [edi + 2]
mov edx, dword [ebp + 0x20]
mov eax, 0x40
movzx edx, byte [ecx + edx]
inc ecx
sub eax, edx
imul esi, eax
movzx eax, word [edi - 2]
imul eax, edx
add esi, 0x20
add eax, esi
mov esi, dword [ebp + 0x28]
sar eax, 6
movzx edx, ax
mov eax, dword [ebp + 0x10]
movzx eax, word [eax + edi - 2]
sub edx, eax
mov eax, edx
cdq
xor eax, edx
sub eax, edx
add ebx, eax
mov eax, dword [ebp + 0x18]
cmp ecx, esi
jl 0x10097fe1
mov eax, dword [ebp + 0x20]
mov edi, dword [ebp - 4]
mov dword [ebp - 0xc], ebx
mov ebx, dword [ebp - 8]
add edi, dword [ebp - 0x20]
add ebx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x28]
add eax, dword [ebp + 0x24]
add dword [ebp + 8], ecx
sub dword [ebp + 0x2c], 1
mov dword [ebp - 4], edi
mov dword [ebp - 8], ebx
mov dword [ebp + 0x20], eax
jne 0x10097e65
mov eax, dword [ebp - 0xc]
paddd xmm3, xmm4
movaps xmm0, xmm3
psrldq xmm0, 8
paddd xmm3, xmm0
movups xmm0, xmm3
psrldq xmm0, 4
paddd xmm3, xmm0
pop edi
movd ecx, xmm3
pop esi
pop ebx
add eax, ecx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, edx
pop ebx
mov esp, ebp
pop ebp
ret