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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x34
push ebx
xor ebx, ebx
push esi
push edi
mov edi, dword [ebp + 0x28]
mov dword [esp + 0x10], ebx
cmp dword [ebp + 0x2c], ebx
jle 0x101e3db4
movups xmm5, xmmword [0x106c06c0]
mov eax, dword [ebp + 0x18]
movups xmm6, xmmword [0x106c06b0]
mov edx, dword [ebp + 0x20]
mov esi, dword [ebp + 0x10]
xorps xmm4, xmm4
xorps xmm3, xmm3
nop dword [eax + eax]
xor ecx, ecx
mov dword [esp + 0xc], ecx
test edi, edi
jle 0x101e3d69
cmp edi, 8
jb 0x101e3cf0
cmp dword [0x10b47804], 2
jl 0x101e3cf0
mov eax, edi
mov dword [esp + 0xc], esi
mov esi, dword [ebp + 0x10]
and eax, 0xfffffff8
mov dword [esp + 0x2c], eax
lea eax, [edx + 4]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [esp + 0x18], eax
mov eax, esi
sub eax, edx
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 8]
sub eax, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x18]
sub eax, esi
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 8]
sub eax, esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x20], eax
nop
mov eax, dword [esp + 0xc]
lea edx, [edx + 8]
mov ebx, dword [esp + 0x1c]
movaps xmm2, xmm5
pmovzxbd xmm1, dword [edx - 0xc]
psubd xmm2, xmm1
add dword [esp + 0xc], 8
add ecx, 8
pmovzxbd xmm0, dword [eax + ebx]
mov ebx, eax
pmulld xmm2, xmm0
pmovzxbd xmm0, dword [ebx]
mov ebx, dword [esp + 0x20]
pmulld xmm0, xmm1
paddd xmm2, xmm0
paddd xmm2, xmm6
psrad xmm2, 6
pshufhw xmm0, xmm2, 0xd8
movaps xmm2, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pmovsxwd xmm1, xmm0
pmovzxbd xmm0, dword [eax + ebx]
psubd xmm1, xmm0
mov eax, dword [esp + 0x24]
pabsd xmm0, xmm1
mov ebx, dword [esp + 0x28]
paddd xmm4, xmm0
pmovzxbd xmm1, dword [edx - 8]
psubd xmm2, xmm1
pmovzxbd xmm0, dword [edx + esi - 8]
pmulld xmm2, xmm0
pmovzxbd xmm0, dword [eax + edx - 8]
pmulld xmm0, xmm1
paddd xmm2, xmm0
paddd xmm2, xmm6
psrad xmm2, 6
pshufhw xmm0, xmm2, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pmovsxwd xmm1, xmm0
pmovzxbd xmm0, dword [ebx + edx - 8]
psubd xmm1, xmm0
pabsd xmm0, xmm1
paddd xmm3, xmm0
cmp ecx, dword [esp + 0x2c]
jl 0x101e3c00
mov ebx, dword [esp + 0x10]
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x20]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0xc], ecx
cmp ecx, edi
jge 0x101e3d69
mov edi, dword [ebp + 8]
sub edx, eax
sub edi, eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], edi
sub esi, eax
mov edi, dword [ebp + 0x28]
add ecx, eax
sub edi, dword [esp + 0xc]
mov dword [esp + 0x24], esi
nop
movzx eax, byte [ecx + edx]
lea ecx, [ecx + 1]
movzx esi, byte [esi + ecx - 1]
mov edx, 0x40
sub edx, eax
imul esi, eax
movzx eax, byte [ecx - 1]
imul eax, edx
add esi, 0x20
add eax, esi
mov esi, dword [esp + 0x24]
sar eax, 6
movsx edx, ax
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + ecx - 1]
sub edx, eax
mov eax, edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x28]
add ebx, eax
sub edi, 1
jne 0x101e3d10
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x20]
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0x28]
mov dword [esp + 0x10], ebx
mov ecx, dword [ebp + 0xc]
add esi, dword [ebp + 0x14]
add eax, dword [ebp + 0x1c]
add edx, dword [ebp + 0x24]
add dword [ebp + 8], ecx
sub dword [ebp + 0x2c], 1
mov dword [ebp + 0x10], esi
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x20], edx
jne 0x101e3b90
paddd xmm3, xmm4
movaps xmm0, xmm3
psrldq xmm0, 8
paddd xmm3, xmm0
movups xmm0, xmm3
psrldq xmm0, 4
paddd xmm3, xmm0
movd eax, xmm3
add eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret