Function at 0x100cb150
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x1019f6bc
mov eax, dword fs:[0]
push eax
sub esp, 0x91c
mov eax, dword [0x1026d48c]
xor eax, esp
mov dword [esp + 0x918], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1026d48c]
xor eax, esp
push eax
lea eax, [esp + 0x930]
mov dword fs:[0], eax
mov edi, dword [esp + 0x948]
mov esi, dword [esp + 0x94c]
mov ebx, dword [esp + 0x940]
mov ebp, dword [esp + 0x944]
mov ecx, edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], esi
call fcn.10017ff0
lea ecx, [esp + 0x11c]
call fcn.100c69b0
lea ecx, [esp + 0x4c]
mov dword [esp + 0x938], 0
call fcn.100c6e20
lea ecx, [esp + 0x3ac]
mov byte [esp + 0x938], 1
call fcn.100c95e0
push ebx
lea ecx, [esp + 0x64]
mov byte [esp + 0x93c], 2
mov dword [esp + 0x58], 1
call fcn.1001b160
lea ecx, [esp + 0x60]
call fcn.100f6330
add eax, eax
add eax, eax
add eax, eax
push esi
mov dword [esp + 0x60], eax
lea eax, [esp + 0x3b0]
push eax
lea ecx, [esp + 0x54]
push ecx
mov ebx, 3
push 0
lea ecx, [esp + 0x12c]
mov dword [esp + 0x68], ebx
call fcn.100ca270
lea ecx, [esp + 0x30]
call fcn.100182e0
push ebp
lea ecx, [esp + 0x34]
mov byte [esp + 0x93c], bl
call fcn.1001b160
lea ecx, [esp + 0x30]
call fcn.100f6330
mov ebx, eax
cmp ebx, 0x10
jb 0x100cb446
test bl, 7
jne 0x100cb446
shr ebx, 3
sub ebx, 1
lea esi, [ebx*8]
push esi
push 0
mov ecx, edi
mov dword [esp + 0x28], ebx
mov dword [esp + 0x30], esi
call fcn.10019090
lea ecx, [esp + 0x30]
call fcn.1008bea0
mov ecx, edi
mov ebx, eax
call fcn.1008bea0
mov ebp, dword [ebx]
mov edi, dword [ebx + 4]
push esi
add ebx, 8
push ebx
push eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x930], ebp
mov dword [esp + 0x934], edi
call sub.MSVCR80.dll_memcpy
mov edx, dword [esp + 0x28]
lea eax, [esi + edx - 8]
add esp, 0xc
mov dword [esp + 0x18], 5
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov eax, ebx
cmp eax, 1
jl 0x100cb370
imul byte [esp + 0x18]
mov byte [esp + 0x17], al
mov cl, byte [esp + 0x17]
mov eax, dword [esi]
add cl, bl
mov edx, edi
shr edx, 0x18
xor cl, dl
mov dword [esp + 0x918], edi
mov byte [esp + 0x91b], cl
mov ecx, dword [esi + 4]
lea edx, [esp + 0x914]
mov dword [esp + 0x91c], eax
push edx
mov eax, edx
mov dword [esp + 0x924], ecx
push eax
lea ecx, [esp + 0x124]
mov dword [esp + 0x91c], ebp
call fcn.100c85d0
mov ecx, dword [esp + 0x91c]
mov edx, dword [esp + 0x920]
mov ebp, dword [esp + 0x914]
mov edi, dword [esp + 0x918]
mov dword [esi], ecx
mov dword [esi + 4], edx
sub ebx, 1
sub esi, 8
cmp ebx, 1
jge 0x100cb2f8
sub dword [esp + 0x18], 1
jns 0x100cb2dd
mov dword [esp + 0x928], edi
mov edi, dword [esp + 0x2c]
mov ecx, edi
mov dword [esp + 0x924], ebp
mov bl, 1
call fcn.100f6330
cmp eax, dword [esp + 0x28]
je 0x100cb3c4
mov esi, dword [esp + 0x24]
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Output_is_not_the_expected_size.
mov ecx, esi
call edx
mov ecx, edi
call fcn.100f6330
push eax
push str.outNumBytes
mov ecx, esi
call fcn.100612a0
jmp 0x100cb3f3
xor eax, eax
mov cl, 0xa6
jmp 0x100cb3d0
cmp byte [esp + eax + 0x924], cl
jne 0x100cb3e3
add eax, 1
cmp eax, 8
jl 0x100cb3d0
jmp 0x100cb3f5
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx]
mov edx, dword [eax + 0x14]
push str.KEK_is_not_the_correct_key.
call edx
xor bl, bl
lea ecx, [esp + 0x30]
mov byte [esp + 0x938], 2
call fcn.10018a90
lea ecx, [esp + 0x3ac]
mov byte [esp + 0x938], 1
call fcn.100c6d60
lea ecx, [esp + 0x4c]
mov byte [esp + 0x938], 0
call fcn.100c6ee0
lea ecx, [esp + 0x11c]
mov dword [esp + 0x938], 0xffffffff
call fcn.100c6a30
mov al, bl
jmp 0x100cb4b0
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Key_data_must_be_a_multiple_of_8_bytes_in_length.
mov ecx, esi
call edx
push ebx
push str.keyDataLen
mov ecx, esi
call fcn.100612a0
lea ecx, [esp + 0x30]
mov byte [esp + 0x938], 2
call fcn.10018a90
lea ecx, [esp + 0x3ac]
mov byte [esp + 0x938], 1
call fcn.100c6d60
lea ecx, [esp + 0x4c]
mov byte [esp + 0x938], 0
call fcn.100c6ee0
lea ecx, [esp + 0x11c]
mov dword [esp + 0x938], 0xffffffff
call fcn.100c6a30
xor al, al
mov ecx, dword [esp + 0x930]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x918]
xor ecx, esp
call fcn.1018f87e
add esp, 0x928
ret