Function at 0x100014c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
mov edi, ecx
push 4
mov dword [ebp - 0x14], edi
call fcn.10018f66
mov esi, eax
push 4
mov dword [ebp - 0x10], esi
call fcn.10018f66
mov ebx, eax
add esp, 8
mov eax, dword [edi + 4]
xor edx, edx
mov dword [ebp - 0xc], ebx
lea ecx, [eax*4]
test ecx, ecx
jle 0x1000151f
mov esi, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sub esi, ecx
mov al, byte [esi + ecx]
inc edx
mov byte [ecx], al
inc ecx
mov ebx, dword [edi + 4]
lea eax, [ebx*4]
cmp edx, eax
jl 0x10001501
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 0xc]
mov eax, dword [edi + 4]
lea edx, [eax*4]
mov eax, dword [edi + 8]
inc eax
mov dword [ebp - 8], edx
imul eax, dword [edi]
shl eax, 2
cmp edx, eax
jge 0x10001786
mov ebx, dword [ebp + 0xc]
add ebx, 0xfffffffd
add ebx, edx
mov dword [ebp - 0x10], ebx
mov cl, byte [ebx - 1]
mov byte [esi], cl
mov ch, byte [ebx]
mov byte [esi + 1], ch
mov al, byte [ebx + 1]
mov byte [ebp - 1], al
mov byte [esi + 2], al
mov al, byte [ebx + 2]
mov byte [ebp - 2], al
mov byte [esi + 3], al
mov eax, edx
cdq
and edx, 3
mov byte [ebp + 0xb], cl
add eax, edx
mov byte [ebp - 3], ch
sar eax, 2
cdq
idiv dword [edi + 4]
test edx, edx
jne 0x10001666
movzx ecx, ch
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0x8000000f
jns 0x10001594
dec ecx
or ecx, 0xfffffff0
inc ecx
movzx eax, byte [eax + ecx + 0x100468a8]
movzx ecx, byte [ebp - 1]
mov byte [esi], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0x8000000f
jns 0x100015b4
dec ecx
or ecx, 0xfffffff0
inc ecx
movzx eax, byte [eax + ecx + 0x100468a8]
movzx ecx, byte [ebp - 2]
mov byte [esi + 1], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0x8000000f
jns 0x100015d5
dec ecx
or ecx, 0xfffffff0
inc ecx
movzx eax, byte [eax + ecx + 0x100468a8]
movzx ecx, byte [ebp + 0xb]
mov byte [esi + 2], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0x8000000f
jns 0x100015f6
dec ecx
or ecx, 0xfffffff0
inc ecx
movzx eax, byte [eax + ecx + 0x100468a8]
mov bl, 1
mov byte [esi + 3], al
mov ecx, dword [edi + 4]
mov eax, dword [ebp - 8]
shl ecx, 2
cdq
idiv ecx
lea edi, [eax - 1]
test edi, edi
jle 0x10001630
mov dl, bl
add dl, dl
mov al, dl
xor al, 0x1b
test bl, bl
movzx ecx, al
movzx eax, dl
cmovns ecx, eax
mov bl, cl
sub edi, 1
jne 0x10001616
mov ecx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x14]
mov byte [ecx], bl
mov word [ecx + 2], 0
mov byte [ecx + 1], 0
xor byte [esi], bl
mov al, byte [esi]
mov ebx, dword [ebp - 0x10]
mov byte [ebp + 0xb], al
movzx eax, byte [ecx + 1]
xor byte [esi + 1], al
movzx eax, byte [ecx + 2]
xor byte [esi + 2], al
movzx eax, byte [ecx + 3]
xor byte [esi + 3], al
jmp 0x10001703
cmp dword [edi + 4], 6
mov byte [ebp + 0xb], cl
jle 0x10001703
mov byte [ebp + 0xb], cl
cmp edx, 4
jne 0x10001703
movzx ecx, cl
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0x8000000f
jns 0x10001694
dec ecx
or ecx, 0xfffffff0
inc ecx
mov al, byte [eax + ecx + 0x100468a8]
movzx ecx, byte [ebp - 3]
mov byte [ebp + 0xb], al
mov byte [esi], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0x8000000f
jns 0x100016b6
dec ecx
or ecx, 0xfffffff0
inc ecx
movzx eax, byte [eax + ecx + 0x100468a8]
movzx ecx, byte [ebp - 1]
mov byte [esi + 1], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0x8000000f
jns 0x100016d7
dec ecx
or ecx, 0xfffffff0
inc ecx
movzx eax, byte [eax + ecx + 0x100468a8]
movzx ecx, byte [ebp - 2]
mov byte [esi + 2], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0x8000000f
jns 0x100016f8
dec ecx
or ecx, 0xfffffff0
inc ecx
movzx eax, byte [eax + ecx + 0x100468a8]
mov byte [esi + 3], al
mov ecx, dword [edi + 4]
mov edx, dword [ebp - 8]
mov eax, edx
shl ecx, 2
sub eax, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, byte [eax + ecx]
xor al, byte [ebp + 0xb]
mov byte [ebx + 3], al
mov eax, edx
mov ecx, dword [edi + 4]
shl ecx, 2
sub eax, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, byte [eax + ecx + 1]
xor al, byte [esi + 1]
mov byte [ebx + 4], al
mov eax, edx
mov ecx, dword [edi + 4]
shl ecx, 2
sub eax, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, byte [eax + ecx + 2]
xor al, byte [esi + 2]
mov byte [ebx + 5], al
mov eax, edx
mov ecx, dword [edi + 4]
add edx, 4
shl ecx, 2
sub eax, ecx
mov dword [ebp - 8], edx
mov ecx, dword [ebp + 0xc]
movzx eax, byte [eax + ecx + 3]
xor al, byte [esi + 3]
mov byte [ebx + 6], al
add ebx, 4
mov eax, dword [edi + 8]
inc eax
mov dword [ebp - 0x10], ebx
imul eax, dword [edi]
shl eax, 2
cmp edx, eax
jl 0x10001546
mov ebx, dword [ebp - 0xc]
push ebx
call fcn.10018a24
push esi
call fcn.10018a24
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8