Function at 0x10c16c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, ecx
mov edi, eax
mov eax, dword [esi + 0x10]
test eax, eax
je 0x10c16da
push eax
call fcn.011425e4
add esp, 4
mov eax, dword [esi + 4]
add eax, eax
add eax, eax
push ebx
push eax
call fcn.01142640
mov edx, dword [esi + 4]
add edx, edx
add edx, edx
add esp, 4
xor ecx, ecx
mov dword [esi + 0x10], eax
test edx, edx
jle 0x10c1735
jmp 0x10c1700
mov ebx, ecx
and ebx, 0x80000003
jns 0x10c170f
dec ebx
or ebx, 0xfffffffc
inc ebx
imul ebx, dword [esi + 4]
mov eax, ecx
cdq
and edx, 3
add eax, edx
mov dl, byte [ecx + edi]
sar eax, 2
add ebx, eax
mov eax, dword [esi + 0x10]
mov byte [ebx + eax], dl
mov eax, dword [esi + 4]
add eax, eax
inc ecx
add eax, eax
cmp ecx, eax
jl 0x10c1700
xor edi, edi
xor eax, eax
cmp dword [esi + 4], eax
jle 0x10c175c
mov edi, edi
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0xc]
imul ecx, edi
add ecx, eax
add ecx, dword [esi + 0x10]
lea edx, [edx + eax*4]
mov dl, byte [edx + edi]
xor byte [ecx], dl
inc eax
cmp eax, dword [esi + 4]
jl 0x10c1740
inc edi
cmp edi, 4
jl 0x10c1737
cmp dword [esi], 1
mov dword [ebp - 4], 1
jle 0x10c1949
mov eax, dword [esi + 0x10]
movzx ecx, byte [eax]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 3], cl
mov eax, dword [esi + 4]
add eax, dword [esi + 0x10]
movzx ecx, byte [eax]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 3], cl
mov edx, dword [esi + 4]
mov eax, dword [esi + 0x10]
movzx ecx, byte [eax + edx*2]
lea eax, [eax + edx*2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edx, ecx
and edx, 0xfffffff0
and ecx, 0xf
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 3], cl
mov eax, dword [esi + 4]
lea eax, [eax + eax*2]
add eax, dword [esi + 0x10]
movzx ecx, byte [eax]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edx, ecx
and edx, 0xfffffff0
and ecx, 0xf
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 3], cl
call fcn.010c13b0
call fcn.010c1460
xor edx, edx
xor ecx, ecx
cmp dword [esi + 4], ecx
jle 0x10c1934
lea esp, [esp]
mov eax, dword [esi + 4]
mov ebx, dword [esi + 0xc]
mov edi, eax
imul eax, dword [ebp - 4]
imul edi, edx
add eax, ecx
add edi, ecx
add edi, dword [esi + 0x10]
lea eax, [ebx + eax*4]
mov al, byte [eax + edx]
xor byte [edi], al
inc ecx
cmp ecx, dword [esi + 4]
jl 0x10c1910
inc edx
cmp edx, 4
jl 0x10c1902
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
cmp eax, dword [esi]
jl 0x10c1772
mov eax, dword [esi + 0x10]
movzx ecx, byte [eax]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 3], cl
mov eax, dword [esi + 4]
add eax, dword [esi + 0x10]
movzx ecx, byte [eax]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 3], cl
mov edx, dword [esi + 4]
mov eax, dword [esi + 0x10]
movzx ecx, byte [eax + edx*2]
lea eax, [eax + edx*2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edx, ecx
and edx, 0xfffffff0
and ecx, 0xf
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 3], cl
mov eax, dword [esi + 4]
lea eax, [eax + eax*2]
add eax, dword [esi + 0x10]
movzx ecx, byte [eax]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edx, ecx
and ecx, 0xf
and edx, 0xfffffff0
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edx, ecx
and edx, 0xfffffff0
and ecx, 0xf
movzx ecx, byte [edx + ecx + str.cw]
mov byte [eax + 3], cl
call fcn.010c13b0
mov edx, dword [esi]
mov dword [ebp - 4], edx
xor edx, edx
lea esp, [esp]
xor ecx, ecx
cmp dword [esi + 4], ecx
jle 0x10c1b0b
mov eax, dword [esi + 4]
mov ebx, dword [esi + 0xc]
mov edi, eax
imul eax, dword [ebp - 4]
imul edi, edx
add eax, ecx
add edi, ecx
add edi, dword [esi + 0x10]
lea eax, [ebx + eax*4]
mov al, byte [eax + edx]
xor byte [edi], al
inc ecx
cmp ecx, dword [esi + 4]
jl 0x10c1ae7
inc edx
cmp edx, 4
jl 0x10c1ae0
mov edx, dword [esi + 4]
add edx, edx
add edx, edx
xor ecx, ecx
pop ebx
test edx, edx
jle 0x10c1b58
nop
mov edi, ecx
and edi, 0x80000003
jns 0x10c1b2f
dec edi
or edi, 0xfffffffc
inc edi
imul edi, dword [esi + 4]
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
add edi, eax
mov eax, dword [esi + 0x10]
mov dl, byte [edi + eax]
mov eax, dword [ebp + 8]
mov byte [ecx + eax], dl
mov edx, dword [esi + 4]
add edx, edx
inc ecx
add edx, edx
cmp ecx, edx
jl 0x10c1b20
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4