Function at 0x101cac80
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
mov esi, dword [esp + 0xc]
push edi
mov al, byte [esi]
mov bl, byte [esi + 1]
mov edi, eax
and edi, 0xff
lea eax, [edi - 0x55]
cdq
sub eax, edx
mov dl, bl
mov ecx, eax
sar ecx, 1
xor ecx, 1
mov al, cl
xor al, 2
shl al, 1
sub dl, al
cmp dl, 0x8b
jne 0x101cacca
mov dl, byte [esi + 2]
mov al, cl
xor al, 3
shl al, 1
sub dl, al
cmp dl, 0xec
jne 0x101cacca
mov eax, 1
jmp 0x101cadee
mov eax, 0x55
sub eax, edi
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
xor ecx, 1
mov al, cl
xor al, 2
shl al, 1
add al, bl
cmp al, 0x8b
jne 0x101cad02
mov al, byte [esi + 2]
mov dl, cl
xor dl, 3
shl dl, 1
add dl, al
cmp dl, 0xec
jne 0x101cad02
mov eax, 2
jmp 0x101cadee
movzx di, byte [esi]
mov dl, bl
lea ecx, [edi - 0x55]
xor ecx, 1
mov al, cl
xor al, 2
sub dl, al
cmp dl, 0x8b
jne 0x101cad31
mov dl, byte [esi + 2]
mov al, cl
xor al, 3
sub dl, al
cmp dl, 0xec
jne 0x101cad31
mov eax, 3
jmp 0x101cadee
mov ecx, 0x55
mov eax, ebx
sub ecx, edi
and eax, 0xff
mov edi, ecx
and edi, 0xff
add eax, edi
cmp eax, 0x8b
jne 0x101cad69
xor edx, edx
mov dl, byte [esi + 2]
add edx, edi
cmp edx, 0xec
jne 0x101cad69
mov eax, 6
jmp 0x101cadee
mov al, byte [esi]
xor ecx, ecx
dec al
mov byte [esp + 0x10], al
jmp 0x101cad79
mov al, byte [esp + 0x10]
cmp al, 0x55
jne 0x101cada2
mov al, cl
mov dl, bl
shl al, 1
xor al, cl
xor al, 2
sub dl, al
cmp dl, 0x8b
jne 0x101cada2
mov al, cl
mov dl, 3
imul dl
xor al, cl
xor al, dl
mov dl, byte [esi + 2]
sub dl, al
cmp dl, 0xec
je 0x101caddb
mov al, byte [esi]
inc al
cmp al, 0x55
jne 0x101cadcd
mov dl, cl
shl dl, 1
xor dl, cl
xor dl, 2
add dl, bl
cmp dl, 0x8b
jne 0x101cadcd
mov al, cl
mov dl, 3
imul dl
xor al, cl
xor al, dl
mov dl, byte [esi + 2]
add al, dl
cmp al, 0xec
je 0x101cade2
inc ecx
cmp cx, 0xff
jb 0x101cad75
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov eax, 4
jmp 0x101cade7
mov eax, 5
cmp cx, 0xff
jae 0x101cadd5
cmp eax, 1
jne 0x101cae34
mov eax, dword [esp + 0x14]
add eax, 0xfffffff6
test eax, eax
jle 0x101caf49
mov ebx, 1
mov edx, esi
sub ebx, esi
mov esi, eax
mov dword [esp + 0x14], ebx
jmp 0x101cae17
mov ebx, dword [esp + 0x14]
mov al, dl
add al, bl
mov bl, 0xfe
xor al, cl
imul bl
mov bl, byte [edx]
add bl, al
mov byte [edx], bl
inc edx
dec esi
jne 0x101cae13
pop edi
pop esi
mov eax, 1
pop ebx
ret
cmp eax, 2
jne 0x101cae6a
mov edx, dword [esp + 0x14]
lea edi, [edx - 0xa]
test edi, edi
jle 0x101caf49
mov edx, 1
mov eax, esi
sub edx, esi
mov esi, edi
mov bl, dl
add bl, al
xor bl, cl
shl bl, 1
add byte [eax], bl
inc eax
dec esi
jne 0x101cae53
pop edi
pop esi
mov eax, 1
pop ebx
ret
cmp eax, 3
jne 0x101cae9e
mov eax, dword [esp + 0x14]
lea edi, [eax - 0xa]
test edi, edi
jle 0x101caf49
mov edx, 1
mov eax, esi
sub edx, esi
mov esi, edi
mov bl, dl
add bl, al
xor bl, cl
sub byte [eax], bl
inc eax
dec esi
jne 0x101cae89
pop edi
pop esi
mov eax, 1
pop ebx
ret
cmp eax, 4
jne 0x101caee4
mov edx, dword [esp + 0x14]
lea eax, [edx - 0xa]
test eax, eax
jle 0x101caf49
mov ebx, 1
mov edx, esi
sub ebx, esi
mov esi, eax
mov dword [esp + 0x14], ebx
jmp 0x101caec7
mov ebx, dword [esp + 0x14]
add bl, dl
mov al, bl
imul cl
xor al, bl
mov bl, byte [edx]
xor al, cl
sub bl, al
mov byte [edx], bl
inc edx
dec esi
jne 0x101caec3
pop edi
pop esi
mov eax, 1
pop ebx
ret
cmp eax, 5
jne 0x101caf26
mov eax, dword [esp + 0x14]
add eax, 0xfffffff6
test eax, eax
jle 0x101caf49
mov ebx, 1
mov edx, esi
sub ebx, esi
mov esi, eax
mov dword [esp + 0x14], ebx
jmp 0x101caf09
mov ebx, dword [esp + 0x14]
add bl, dl
mov al, bl
imul cl
xor al, bl
mov bl, byte [edx]
xor al, cl
add bl, al
mov byte [edx], bl
inc edx
dec esi
jne 0x101caf05
pop edi
pop esi
mov eax, 1
pop ebx
ret
cmp eax, 6
jne 0x101cadd5
mov edx, dword [esp + 0x14]
xor eax, eax
add edx, 0xfffffff6
test edx, edx
jle 0x101caf49
mov bl, byte [eax + esi]
add bl, cl
mov byte [eax + esi], bl
inc eax
cmp eax, edx
jl 0x101caf3c
pop edi
pop esi
mov eax, 1
pop ebx
ret