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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x44
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x28]
push ebx
push esi
push edi
lea edi, [eax + eax]
xor esi, esi
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x10], edi
lea ebx, [eax + eax]
mov eax, dword [ebp + 0x18]
add eax, eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0xc], eax
cmp dword [ebp + 0x2c], esi
jle 0x101e39c1
mov eax, dword [ebp + 0xc]
xorps xmm4, xmm4
movups xmm5, xmmword [0x106c06c0]
mov esi, dword [ebp + 0x20]
add eax, eax
movups xmm6, xmmword [0x106c06b0]
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x14]
xorps xmm3, xmm3
add eax, eax
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x1c]
add eax, eax
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 0x2c]
xor ecx, ecx
test edx, edx
jle 0x101e396a
cmp edx, 8
jb 0x101e38f2
cmp dword [0x10b47804], 2
jl 0x101e38f2
mov eax, edx
mov dword [esp + 0x14], edi
mov edx, dword [esp + 0xc]
and eax, 0xfffffff8
sub edx, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], edx
lea eax, [ebx + 8]
mov edx, edi
mov dword [esp + 0x20], eax
sub edx, ebx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0xc]
sub edx, edi
mov dword [esp + 0x28], edx
mov edx, eax
mov edi, dword [esp + 0x28]
nop word [eax + eax]
mov eax, dword [esp + 0x14]
lea edx, [edx + 0x10]
pmovzxbd xmm1, dword [esi + ecx]
movaps xmm2, xmm5
add dword [esp + 0x14], 0x10
psubd xmm2, xmm1
pmovzxwd xmm0, qword [eax + edi]
pmulld xmm2, xmm0
pmovzxwd xmm0, qword [edx - 0x18]
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
pmovzxwd xmm1, xmm0
pmovzxwd xmm0, qword [eax]
psubd xmm1, xmm0
mov eax, dword [esp + 0x2c]
pabsd xmm0, xmm1
pmovzxbd xmm1, dword [esi + ecx + 4]
paddd xmm4, xmm0
psubd xmm2, xmm1
pmovzxwd xmm0, qword [ebx + edx - 0x10]
pmulld xmm2, xmm0
pmovzxwd xmm0, qword [edx - 0x10]
pmulld xmm0, xmm1
paddd xmm2, xmm0
add ecx, 8
paddd xmm2, xmm6
psrad xmm2, 6
pshufhw xmm0, xmm2, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pmovzxwd xmm1, xmm0
pmovzxwd xmm0, qword [edx + eax - 0x10]
psubd xmm1, xmm0
pabsd xmm0, xmm1
paddd xmm3, xmm0
cmp ecx, dword [esp + 0x30]
jl 0x101e3810
mov edx, dword [ebp + 0x28]
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
cmp ecx, edx
jge 0x101e3967
jmp 0x101e38f6
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
lea edi, [ebx + ecx*2]
sub eax, ebx
sub edx, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
nop dword [eax]
movzx edx, byte [esi + ecx]
lea edi, [edi + 2]
movzx esi, word [edi + eax - 2]
inc ecx
mov eax, 0x40
sub eax, edx
imul esi, eax
movzx eax, word [edi - 2]
imul eax, edx
add esi, 0x20
add eax, esi
mov esi, dword [ebp + 0x20]
sar eax, 6
movzx edx, ax
mov eax, dword [esp + 0x30]
movzx eax, word [eax + edi - 2]
sub edx, eax
mov eax, edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp + 0x28]
add ebx, eax
mov eax, dword [esp + 0x2c]
cmp ecx, edx
jl 0x101e3910
mov edi, dword [esp + 0x10]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x18]
mov eax, dword [ebp + 0x2c]
add edi, dword [esp + 0x34]
add ebx, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add esi, dword [ebp + 0x24]
add dword [esp + 0xc], ecx
sub eax, 1
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], ebx
mov dword [ebp + 0x20], esi
mov dword [ebp + 0x2c], eax
jne 0x101e37b0
mov eax, dword [esp + 0x1c]
paddd xmm3, xmm4
movaps xmm0, xmm3
psrldq xmm0, 8
paddd xmm3, xmm0
movups xmm0, xmm3
psrldq xmm0, 4
paddd xmm3, xmm0
movd ecx, xmm3
add eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret