Function at 0x1000c9ae
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x2c
mov al, byte [0x10061576]
xor edx, edx
movzx ecx, word [0x10061590]
dec al
mov byte [0x10061576], al
movzx eax, al
mov dword [esp + 0x1c], eax
push ebx
mov ebx, dword [esp + 0x38]
push ebp
mov ebp, dword [esp + 0x44]
push esi
mov esi, dword [esp + 0x44]
push edi
mov dword [esp + 0x44], ebx
mov eax, dword [esi + ecx*4]
add eax, 0x1e8f
mov dword [esp + 0x10], eax
mov eax, dword [0x100615a0]
mov dword [esp + 0x28], eax
dec eax
mov dword [0x100615a0], eax
mov eax, dword [ebx + 0x574]
mov dword [esp + 0x38], eax
imul eax, dword [ebp + ecx*4], 0x169c
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x40]
movzx eax, word [eax + 0x44]
dec dword [ebx]
mov ecx, dword [ebx]
mov dword [esp + 0x34], eax
imul eax, ecx, 0xc
mov eax, dword [eax + esi]
or eax, dword [ebp + ecx*4]
mov ecx, dword [ebx + 4]
mov dword [esp + 0x14], eax
mov eax, dword [0x100615a4]
div dword [ebp + ecx*4]
inc dword [0x100615a0]
mov edx, dword [0x100615b8]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
mov eax, 0xffff
add word [0x100615a8], ax
movzx eax, word [0x10061590]
mov edi, dword [esi + eax*8]
add edi, eax
mov eax, dword [0x10061560]
imul eax, edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x30], eax
mov eax, dword [ebx]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x18], eax
cmp eax, dword [0x10061570]
je 0x1000cb9e
dec dword [ebp]
xor edx, edx
movzx esi, word [0x100615a8]
mov eax, dword [esp + 0x48]
mov ecx, dword [ebp]
mov eax, dword [eax + esi*4]
or eax, dword [0x1006159c]
div dword [esp + 0x18]
mov eax, dword [esp + 0x14]
movzx eax, byte [ecx + eax]
movzx ecx, word [0x10061590]
xor edx, eax
add dword [0x100615b0], edx
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x28]
mov ax, word [eax + esi*2]
mov word [edx + ecx*2], ax
dec byte [edi]
movzx ecx, byte [edi]
mov eax, dword [esp + 0x10]
lea esi, [ecx*8]
movzx eax, byte [eax]
add esi, ebp
mov edx, dword [ebx + eax*4]
sub edx, dword [ebp + ecx*4]
mov eax, dword [esp + 0x14]
movzx eax, byte [ecx + eax]
mov ecx, dword [ebp]
xor eax, edx
mov ebp, dword [esp + 0x20]
xor edx, edx
div dword [ebp + ecx*8]
xor edx, edx
mov ebp, dword [esp + 0x4c]
div dword [esi]
inc edi
dec dword [esp + 0x10]
mov dword [esi], edx
movzx ecx, word [0x10061590]
movzx eax, word [0x100615a8]
imul esi, eax, 3
mov eax, dword [ebx + ecx*4 + 0x40]
mov ebx, dword [esp + 0x1c]
imul eax, ecx
mov ecx, dword [0x100615a4]
add eax, 0x1117
cdq
idiv dword [ebx + ecx*4]
mov ecx, dword [esp + 0x14]
mov eax, 0xffff
mov ebx, dword [esp + 0x44]
sub dl, byte [esi + ecx]
mov byte [esi + ecx], dl
add word [0x100615a8], ax
dec dword [0x100615a4]
movzx eax, byte [edi]
mov edx, dword [esp + 0x20]
xor byte [ecx + eax*2], 0x91
dec dword [ebp]
mov ecx, dword [ebp]
mov eax, dword [edx + ecx*4]
imul eax, dword [0x100615b4]
mov dword [edx + ecx*4], eax
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
cmp eax, dword [0x10061570]
jne 0x1000ca8d
mov edx, dword [0x100615b8]
mov dword [esp + 0x24], edi
movzx eax, byte [edi]
mov ecx, dword [0x10061578]
mov esi, dword [esp + 0x2c]
mov eax, dword [ebx + eax*4]
sub eax, dword [esi + 0x366c]
or dword [ecx + edx*8], eax
xor edx, edx
movzx eax, byte [edi]
mov ecx, dword [esp + 0x30]
imul eax, eax, 6
movzx ecx, word [eax + ecx]
mov eax, 0xa3b
div ecx
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [esp + 0x10]
movzx eax, byte [eax]
movzx eax, byte [edx + eax*2]
xor edx, edx
add cx, ax
or word [0x10061590], cx
movzx eax, byte [edi]
lea ecx, [ebx + eax*8]
mov eax, dword [0x10061580]
add eax, 0x1427
or eax, dword [0x100615b0]
div dword [ecx]
xor edx, edx
mov dword [ecx], eax
inc dword [ebx]
mov eax, dword [ebx]
movzx ecx, byte [edi]
mov eax, dword [ebx + eax*8]
mov dword [ebx + ecx*4], eax
mov al, byte [edi]
mov ebx, dword [esp + 0x10]
mov byte [edi], al
movzx edi, al
mov eax, dword [esp + 0x40]
mov esi, dword [0x10061564]
movzx ecx, byte [ebx + edi*2]
movzx eax, word [eax + edi*4]
xor eax, dword [0x10061580]
div ecx
mov edx, dword [esp + 0x24]
xor eax, 0x1587
sub eax, dword [esi + edi*4]
mov dword [esi + edi*4], eax
movzx eax, byte [ebx]
movzx esi, byte [edx]
mov ecx, dword [0x10061564]
mov ebp, dword [ebp + eax*8]
mov eax, dword [esp + 0x10]
movzx edi, byte [esi + edx]
mov ebx, dword [ecx + 0x1140]
mov edx, dword [esp + 0x4c]
sub ebx, 0x1860
movzx ecx, byte [eax - 1]
xor edi, dword [edx + ecx*8]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x38]
mov eax, dword [ecx]
mov eax, dword [edx + eax*8]
xor edx, edx
div dword [ecx + esi*4]
mov byte [esp + 0x44], al
push dword [esp + 0x44]
push edi
push ebx
push ebp
call fcn.1000cceb
mov dword [0x10061570], eax
mov ecx, 0xffff
mov ax, word [0x10061590]
add esp, 0x10
add ax, cx
mov ecx, dword [0x1006157c]
movzx edx, ax
mov word [0x10061590], ax
mov eax, dword [0x100615b8]
imul esi, edx, 0xc
mov edi, dword [esp + 0x48]
mov eax, dword [edi + eax*8]
imul eax, dword [edx*4 + 0x1414]
pop edi
xor dword [esi + ecx], eax
inc dword [0x100615b8]
mov eax, dword [0x10061568]
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret