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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
xor eax, eax
push edi
mov edi, dword [ebp + 0x28]
mov dword [ebp - 8], eax
cmp dword [ebp + 0x2c], eax
jle 0x1009848e
mov ecx, dword [ebp + 0x20]
xorps xmm4, xmm4
mov edx, dword [ebp + 0x10]
xorps xmm3, xmm3
push ebx
mov ebx, dword [ebp + 0x18]
push esi
nop dword [eax]
xor eax, eax
mov dword [ebp - 0xc], eax
test edi, edi
jle 0x10098445
cmp edi, 8
jb 0x100983cb
cmp dword [0x10757c00], 2
jl 0x100983cb
mov esi, edi
movaps xmm5, xmmword [0x103c2310]
and esi, 0xfffffff8
movaps xmm6, xmmword [0x103c2300]
mov dword [ebp - 0x24], esi
mov esi, 6
mov dword [ebp - 4], edx
movd xmm7, esi
lea esi, [ecx + 4]
mov dword [ebp - 0x10], esi
mov esi, ebx
sub esi, ecx
mov dword [ebp - 0x14], esi
mov esi, edx
sub esi, ecx
mov dword [ebp - 0x18], esi
mov esi, dword [ebp + 8]
mov edi, esi
sub edi, ecx
mov dword [ebp - 0x20], edi
mov edi, ebx
sub edi, edx
sub esi, edx
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x1c], esi
mov esi, dword [ebp - 0x14]
nop dword [eax + eax]
mov ebx, dword [ebp - 4]
lea edi, [edi + 8]
movd xmm0, dword [edi - 0xc]
movaps xmm2, xmm5
pmovzxbd xmm1, xmm0
psubd xmm2, xmm1
add dword [ebp - 4], 8
movd xmm0, dword [ecx + ebx]
add eax, 8
mov ecx, ebx
pmovzxbd xmm0, xmm0
pmulld xmm2, xmm0
movd xmm0, dword [ecx]
mov ecx, dword [ebp - 0x1c]
pmovzxbd 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
pmovsxwd xmm1, xmm0
movd xmm0, dword [ecx + ebx]
pmovzxbd xmm0, xmm0
psubd xmm1, xmm0
mov ebx, dword [ebp - 0x20]
pabsd xmm0, xmm1
mov ecx, dword [ebp - 0xc]
paddd xmm4, xmm0
movd xmm0, dword [edi - 8]
pmovzxbd xmm1, xmm0
psubd xmm2, xmm1
movd xmm0, dword [esi + edi - 8]
pmovzxbd xmm0, xmm0
pmulld xmm2, xmm0
movd xmm0, dword [edx + edi - 8]
pmovzxbd 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
pmovsxwd xmm1, xmm0
movd xmm0, dword [ebx + edi - 8]
pmovzxbd xmm0, xmm0
psubd xmm1, xmm0
pabsd xmm0, xmm1
paddd xmm3, xmm0
cmp eax, dword [ebp - 0x24]
jl 0x100982c0
mov edi, dword [ebp + 0x28]
mov ebx, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov dword [ebp - 0xc], eax
cmp eax, edi
jge 0x10098445
jmp 0x100983ce
mov esi, dword [ebp + 8]
lea ecx, [eax + ebx]
sub edx, ebx
mov eax, dword [ebp + 0x20]
sub esi, ebx
sub eax, ebx
mov dword [ebp - 0x1c], edx
sub edi, dword [ebp - 0xc]
mov ebx, dword [ebp - 8]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], esi
nop dword [eax]
movzx eax, byte [eax + ecx]
lea ecx, [ecx + 1]
movzx esi, byte [edx + ecx - 1]
mov edx, 0x40
sub edx, eax
imul esi, eax
movzx eax, byte [ecx - 1]
imul eax, edx
add eax, 0x20
add eax, esi
sar eax, 6
movsx edx, ax
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax + ecx - 1]
sub edx, eax
mov eax, edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x1c]
add ebx, eax
mov eax, dword [ebp - 0x20]
sub edi, 1
jne 0x100983f0
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x10]
mov edi, dword [ebp + 0x28]
mov dword [ebp - 8], ebx
mov ebx, dword [ebp + 0x18]
mov eax, dword [ebp + 0xc]
add edx, dword [ebp + 0x14]
add ebx, dword [ebp + 0x1c]
add ecx, dword [ebp + 0x24]
add dword [ebp + 8], eax
sub dword [ebp + 0x2c], 1
mov dword [ebp + 0x10], edx
mov dword [ebp + 0x18], ebx
mov dword [ebp + 0x20], ecx
jne 0x10098240
mov eax, dword [ebp - 8]
paddd xmm3, xmm4
movaps xmm0, xmm3
psrldq xmm0, 8
paddd xmm3, xmm0
movups xmm0, xmm3
psrldq xmm0, 4
paddd xmm3, xmm0
movd ecx, xmm3
pop esi
pop ebx
add eax, ecx
pop edi
mov esp, ebp
pop ebp
ret