Function at 0x101bc910
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov esi, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
lea ebx, [esi + 3]
mov eax, ecx
and ebx, 0xfffffffc
mov edx, ebx
sub edx, esi
sub eax, edx
jb 0x101bc93e
cmp eax, 4
jae 0x101bc9f3
xor eax, eax
test ecx, ecx
je 0x101bce0c
cmp ecx, 8
mov edx, 0
jb 0x101bc9db
movdqa xmm2, xmmword [0x1024bc70]
movdqa xmm3, xmmword [0x101cf500]
mov edx, ecx
lea eax, [esi + 4]
pxor xmm0, xmm0
pxor xmm1, xmm1
and edx, 0xfffffff8
mov edi, edx
nop dword [eax + eax]
movd xmm5, dword [eax - 4]
movd xmm4, dword [eax]
add eax, 8
add edi, 0xfffffff8
pcmpgtb xmm5, xmm2
pcmpgtb xmm4, xmm2
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
pand xmm5, xmm3
paddd xmm0, xmm5
punpcklbw xmm4, xmm4
punpcklwd xmm4, xmm4
pand xmm4, xmm3
paddd xmm1, xmm4
jne 0x101bc980
paddd xmm1, xmm0
cmp edx, ecx
pshufd xmm0, xmm1, 0xee
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd eax, xmm1
je 0x101bce0c
sub ecx, edx
add esi, edx
nop
xor edx, edx
cmp byte [esi], 0xc0
setge dl
inc esi
add eax, edx
dec ecx
jne 0x101bc9e0
jmp 0x101bce0c
mov ecx, eax
mov dword [esp + 0x40], edx
xor edx, edx
mov edi, 0
and ecx, 3
cmp ebx, esi
mov dword [esp + 0x10], ecx
je 0x101bca2e
mov ecx, dword [ebp + 8]
xor edi, edi
mov esi, ecx
sub esi, ebx
mov ebx, ecx
nop word cs:[eax + eax]
xor ecx, ecx
cmp byte [ebx], 0xc0
setge cl
inc ebx
add edi, ecx
inc esi
jne 0x101bca20
mov esi, dword [ebp + 8]
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x10]
add esi, dword [esp + 0x40]
test edi, edi
je 0x101bca5e
mov ebx, eax
xor edx, edx
and ebx, 0xfffffffc
add ebx, esi
nop word [eax + eax]
xor ecx, ecx
cmp byte [ebx], 0xc0
setge cl
inc ebx
add edx, ecx
dec edi
jne 0x101bca50
add edx, dword [esp + 0x20]
movdqa xmm3, xmmword [0x101cdc10]
shr eax, 2
pcmpeqd xmm2, xmm2
mov ecx, esi
jmp 0x101bcaba
mov edx, ebx
shr ebx, 8
mov edi, dword [esp + 0xc]
mov esi, dword [esp]
and edx, 0xff00ff
and ebx, 0xff00ff
add ebx, edx
mov edx, ebx
shl edx, 0x10
add edx, ebx
mov ebx, dword [esp + 4]
shr edx, 0x10
add edx, eax
mov eax, edi
sub eax, ebx
lea ecx, [esi + ebx*4]
test bl, 3
jne 0x101bcda2
mov edi, eax
mov eax, edx
test edi, edi
je 0x101bce0c
cmp edi, 0xc0
mov edx, 0xc0
mov dword [esp], ecx
mov dword [esp + 0xc], edi
cmovb edx, edi
xor ebx, ebx
cmp edi, 4
mov dword [esp + 4], edx
jb 0x101bca80
mov esi, dword [esp + 4]
mov edi, dword [esp]
xor ebx, ebx
shr esi, 2
lea ecx, [esi - 1]
and ecx, 0xfffffff
cmp ecx, 7
jb 0x101bcd53
inc ecx
mov edx, dword [esp]
pxor xmm2, xmm2
pxor xmm3, xmm3
mov ebx, ecx
and ebx, 0xfffffff8
mov edi, ebx
mov dword [esp + 8], ebx
shl edi, 4
add edi, edx
add edx, 0x40
nop word cs:[eax + eax]
nop dword [eax]
movdqu xmm7, xmmword [edx - 0x20]
movdqa xmmword [esp + 0x30], xmm2
movdqu xmm2, xmmword [edx - 0x40]
movdqu xmm1, xmmword [edx - 0x10]
movdqa xmmword [esp + 0x40], xmm3
movdqu xmm3, xmmword [edx - 0x30]
movdqu xmm6, xmmword [edx + 0x10]
movdqa xmm0, xmm7
movdqa xmmword [esp + 0x10], xmm1
movdqa xmmword [esp + 0x20], xmm2
movdqa xmmword [esp + 0x60], xmm3
punpckldq xmm0, xmm1
movdqa xmm1, xmm2
movdqu xmm2, xmmword [edx + 0x30]
punpckhdq xmm7, xmmword [esp + 0x10]
punpckldq xmm1, xmm3
movdqa xmm4, xmm1
punpckhqdq xmm1, xmm0
movdqa xmmword [esp + 0x70], xmm1
movdqu xmm1, xmmword [edx + 0x20]
punpcklqdq xmm4, xmm0
movdqa xmmword [esp + 0x50], xmm2
movdqa xmm0, xmm1
punpckhdq xmm1, xmmword [esp + 0x50]
punpckldq xmm0, xmm2
movdqu xmm2, xmmword [edx]
sub edx, 0xffffff80
add ebx, 0xfffffff8
movdqa xmm3, xmm2
punpckhdq xmm2, xmm6
punpckldq xmm3, xmm6
movdqa xmm5, xmm3
punpckhqdq xmm3, xmm0
punpcklqdq xmm5, xmm0
movdqa xmm0, xmmword [esp + 0x20]
punpckhdq xmm0, xmmword [esp + 0x60]
movdqa xmm6, xmm0
punpckhqdq xmm0, xmm7
punpcklqdq xmm6, xmm7
movdqa xmm7, xmm2
movdqa xmmword [esp + 0x20], xmm0
punpckhqdq xmm2, xmm1
movdqa xmm0, xmm4
psrld xmm4, 6
punpcklqdq xmm7, xmm1
pcmpeqd xmm1, xmm1
movdqa xmmword [esp + 0x10], xmm2
movdqa xmm2, xmmword [esp + 0x70]
pxor xmm0, xmm1
psrld xmm0, 7
por xmm4, xmm0
movdqa xmm0, xmm5
psrld xmm5, 6
pxor xmm0, xmm1
movdqa xmm1, xmmword [0x101cdc10]
psrld xmm0, 7
por xmm5, xmm0
movdqa xmm0, xmm2
psrld xmm2, 6
pand xmm4, xmm1
pand xmm5, xmm1
paddd xmm4, xmmword [esp + 0x30]
paddd xmm5, xmmword [esp + 0x40]
movdqa xmmword [esp + 0x30], xmm4
pcmpeqd xmm4, xmm4
pxor xmm0, xmm4
psrld xmm0, 7
por xmm2, xmm0
movdqa xmm0, xmm3
psrld xmm3, 6
pxor xmm0, xmm4
pand xmm2, xmm1
psrld xmm0, 7
por xmm3, xmm0
movdqa xmm0, xmm6
psrld xmm6, 6
pxor xmm0, xmm4
pand xmm3, xmm1
psrld xmm0, 7
por xmm6, xmm0
movdqa xmm0, xmm7
psrld xmm7, 6
pxor xmm0, xmm4
pand xmm6, xmm1
psrld xmm0, 7
paddd xmm6, xmm2
movdqa xmm2, xmmword [esp + 0x20]
por xmm7, xmm0
paddd xmm6, xmmword [esp + 0x30]
pand xmm7, xmm1
paddd xmm7, xmm3
movdqa xmm3, xmmword [esp + 0x10]
movdqa xmm0, xmm2
paddd xmm7, xmm5
psrld xmm2, 6
pxor xmm0, xmm4
psrld xmm0, 7
movdqa xmm5, xmm3
psrld xmm3, 6
por xmm2, xmm0
pxor xmm5, xmm4
pand xmm2, xmm1
psrld xmm5, 7
paddd xmm2, xmm6
por xmm3, xmm5
pand xmm3, xmm1
paddd xmm3, xmm7
jne 0x101bcb30
paddd xmm3, xmm2
cmp ecx, dword [esp + 8]
pcmpeqd xmm2, xmm2
pshufd xmm0, xmm3, 0xee
paddd xmm0, xmm3
movdqa xmm3, xmmword [0x101cdc10]
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd ebx, xmm1
je 0x101bca80
shl esi, 4
add esi, dword [esp]
nop dword [eax]
movdqu xmm0, xmmword [edi]
add edi, 0x10
movdqa xmm1, xmm0
psrld xmm0, 6
pxor xmm1, xmm2
psrld xmm1, 7
por xmm0, xmm1
pand xmm0, xmm3
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd edx, xmm0
add ebx, edx
cmp edi, esi
jne 0x101bcd60
jmp 0x101bca80
and ebx, 0xfc
cmp edi, 0xc0
lea eax, [esi + ebx*4]
mov esi, 0xc0
cmovb esi, edi
xor ecx, ecx
and esi, 3
shl esi, 2
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edi, dword [eax]
add eax, 4
mov ebx, edi
shr edi, 6
not ebx
shr ebx, 7
or edi, ebx
and edi, 0x1010101
add ecx, edi
add esi, 0xfffffffc
jne 0x101bcdd0
mov eax, ecx
shr ecx, 8
and eax, 0xff00ff
and ecx, 0xff00ff
add ecx, eax
mov eax, ecx
shl eax, 0x10
add eax, ecx
shr eax, 0x10
add eax, edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret