Function at 0x14010c104
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r14
push r15
mov rbp, rsp
sub rsp, 0x20
mov rbx, r8
mov r14d, edx
mov rdi, rcx
test rcx, rcx
je 0x14010c65b
test rbx, rbx
je 0x14010c65b
mov eax, edx
sub eax, 0x80
je 0x14010c171
sub eax, 0x40
je 0x14010c164
cmp eax, 0x40
je 0x14010c157
mov eax, 0xfffffffe
jmp 0x14010c65e
mov dword [r8 + 0xf0], 0xe
jmp 0x14010c17c
mov dword [r8 + 0xf0], reloc.SHLWAPI.dll_SHCreateMemStream
jmp 0x14010c17c
mov dword [r8 + 0xf0], 0xa
mov r15d, 4
lea rcx, [rbp + 0x20]
mov r8d, r15d
mov rdx, rdi
call fcn.1400df6a0
mov eax, dword [rbp + 0x20]
lea rdx, [rdi + 4]
bswap eax
mov r8d, r15d
mov dword [rbx], eax
lea rcx, [rbp + 0x20]
call fcn.1400df6a0
mov eax, dword [rbp + 0x20]
lea rsi, [rbx + 4]
bswap eax
lea rdx, [rdi + 8]
mov dword [rsi], eax
mov r8d, r15d
lea rcx, [rbp + 0x20]
call fcn.1400df6a0
mov eax, dword [rbp + 0x20]
lea rdx, [rdi + 0xc]
bswap eax
mov r8d, r15d
mov dword [rbx + 8], eax
lea rcx, [rbp + 0x20]
call fcn.1400df6a0
mov eax, dword [rbp + 0x20]
bswap eax
mov dword [rbx + 0xc], eax
cmp r14d, 0x80
jne 0x14010c312
mov edx, eax
lea r9, [0x140000000]
mov eax, eax
lea r10, [0x14012f804]
shr rax, 0x10
mov r11d, 0xff000000
movzx ecx, al
mov edi, 0xff0000
mov eax, edx
mov r14d, 0xff00
shr rax, 8
mov r8d, dword [r9 + rcx*4 + 0x12df00]
movzx ecx, al
btc r8d, 0x18
and r8d, r11d
mov eax, dword [r9 + rcx*4 + 0x12e300]
and eax, edi
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r9 + rax*4 + 0x12db00]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r9 + rax*4 + 0x12d700]
mov eax, dword [rsi]
and ecx, r14d
xor r8d, ecx
mov ecx, dword [rbx + 8]
xor r8d, dword [rbx]
xor eax, r8d
mov dword [rbx + 0x10], r8d
xor ecx, eax
mov dword [rbx + 0x14], eax
mov eax, dword [rbx + 0xc]
xor eax, ecx
mov dword [rbx + 0x18], ecx
mov dword [rbx + 0x1c], eax
lea rsi, [rsi + 0x10]
mov edx, dword [rsi + 8]
mov eax, edx
shr rax, 8
movzx ecx, al
mov eax, edx
shr rax, 0x10
mov r8d, dword [r9 + rcx*4 + 0x12e300]
movzx ecx, al
and r8d, edi
mov eax, dword [r9 + rcx*4 + 0x12df00]
and eax, r11d
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r9 + rax*4 + 0x12db00]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r9 + rax*4 + 0x12d700]
and ecx, r14d
xor r8d, ecx
xor r8d, dword [rsi - 4]
xor r8d, dword [r10]
add r10, r15
mov dword [rsi + 0xc], r8d
mov eax, dword [rsi]
xor eax, r8d
mov dword [rsi + 0x10], eax
mov ecx, dword [rsi + 4]
xor ecx, eax
lea rax, [0x14012f828]
mov dword [rsi + 0x14], ecx
xor ecx, dword [rsi + 8]
mov dword [rsi + 0x18], ecx
cmp r10, rax
jne 0x14010c282
xor eax, eax
jmp 0x14010c65e
lea rdx, [rdi + 0x10]
mov r8, r15
lea rcx, [rbp + 0x20]
call fcn.1400df6a0
mov eax, dword [rbp + 0x20]
lea rdx, [rdi + 0x14]
bswap eax
mov r8, r15
mov dword [rbx + 0x10], eax
lea rcx, [rbp + 0x20]
call fcn.1400df6a0
mov eax, dword [rbp + 0x20]
bswap eax
mov dword [rbx + 0x14], eax
cmp r14d, 0xc0
jne 0x14010c486
mov edx, eax
lea r9, [0x140000000]
mov eax, eax
lea r10, [0x14012f804]
shr rax, 0x10
mov r11d, 0xff000000
movzx ecx, al
mov edi, 0xff0000
mov eax, edx
mov r14d, 0xff00
shr rax, 8
mov r8d, dword [r9 + rcx*4 + 0x12df00]
movzx ecx, al
btc r8d, 0x18
and r8d, r11d
mov eax, dword [r9 + rcx*4 + 0x12e300]
and eax, edi
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r9 + rax*4 + 0x12db00]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r9 + rax*4 + 0x12d700]
mov eax, dword [rsi]
and ecx, r14d
xor r8d, ecx
mov ecx, dword [rbx + 8]
xor r8d, dword [rbx]
xor eax, r8d
mov dword [rbx + 0x18], r8d
xor ecx, eax
mov dword [rbx + 0x1c], eax
mov eax, dword [rbx + 0xc]
xor eax, ecx
mov dword [rbx + 0x20], ecx
mov dword [rbx + 0x24], eax
add rbx, 0x28
mov ecx, dword [rbx - 0x18]
xor ecx, dword [rbx - 4]
mov eax, dword [rbx - 0x14]
xor eax, ecx
mov dword [rbx], ecx
mov dword [rbx + 4], eax
lea rbx, [rbx + 0x18]
mov edx, dword [rbx - 0x14]
mov eax, edx
shr rax, 8
movzx ecx, al
mov eax, edx
shr rax, 0x10
mov r8d, dword [r9 + rcx*4 + 0x12e300]
movzx ecx, al
and r8d, edi
mov eax, dword [r9 + rcx*4 + 0x12df00]
and eax, r11d
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r9 + rax*4 + 0x12db00]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r9 + rax*4 + 0x12d700]
and ecx, r14d
xor r8d, ecx
xor r8d, dword [rbx - 0x28]
xor r8d, dword [r10]
add r10, r15
mov dword [rbx - 0x10], r8d
mov eax, dword [rbx - 0x24]
xor eax, r8d
mov dword [rbx - 0xc], eax
mov ecx, dword [rbx - 0x20]
xor ecx, eax
mov dword [rbx - 8], ecx
mov eax, dword [rbx - 0x1c]
xor eax, ecx
mov dword [rbx - 4], eax
lea rax, [0x14012f820]
cmp r10, rax
jne 0x14010c3e5
jmp 0x14010c30b
lea rdx, [rdi + 0x18]
mov r8, r15
lea rcx, [rbp + 0x20]
call fcn.1400df6a0
mov eax, dword [rbp + 0x20]
lea rdx, [rdi + 0x1c]
bswap eax
mov r8, r15
mov dword [rbx + 0x18], eax
lea rcx, [rbp + 0x20]
call fcn.1400df6a0
mov eax, dword [rbp + 0x20]
bswap eax
mov dword [rbx + 0x1c], eax
cmp r14d, 0x100
jne 0x14010c30b
mov edx, eax
lea r9, [0x140000000]
mov eax, eax
lea r10, [0x14012f804]
shr rax, 0x10
mov r11d, 0xff000000
movzx ecx, al
mov edi, 0xff0000
mov eax, edx
mov r14d, 0xff00
shr rax, 8
mov r8d, dword [r9 + rcx*4 + 0x12df00]
movzx ecx, al
btc r8d, 0x18
and r8d, r11d
mov eax, dword [r9 + rcx*4 + 0x12e300]
and eax, edi
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r9 + rax*4 + 0x12db00]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r9 + rax*4 + 0x12d700]
mov eax, dword [rsi]
and ecx, r14d
xor r8d, ecx
mov ecx, dword [rbx + 8]
xor r8d, dword [rbx]
xor eax, r8d
mov dword [rbx + 0x20], r8d
xor ecx, eax
mov dword [rbx + 0x24], eax
mov eax, dword [rbx + 0xc]
xor eax, ecx
mov dword [rbx + 0x28], ecx
mov dword [rbx + 0x2c], eax
add rbx, 0x30
mov edx, dword [rbx - 4]
mov eax, edx
shr rax, 0x10
movzx ecx, al
mov eax, edx
shr rax, 8
mov r8d, dword [r9 + rcx*4 + 0x12e300]
movzx ecx, al
and r8d, edi
mov eax, dword [r9 + rcx*4 + 0x12d700]
mov ecx, dword [rbx - 0x18]
and eax, r14d
xor r8d, eax
mov eax, edx
shr rax, 0x18
mov eax, dword [r9 + rax*4 + 0x12df00]
and eax, r11d
xor r8d, eax
movzx eax, dl
movzx eax, byte [r9 + rax*4 + 0x12db00]
xor r8d, eax
mov eax, dword [rbx - 0x1c]
xor r8d, dword [rbx - 0x20]
xor eax, r8d
mov dword [rbx], r8d
mov dword [rbx + 4], eax
lea rbx, [rbx + 0x20]
xor ecx, eax
mov eax, dword [rbx - 0x34]
xor eax, ecx
mov dword [rbx - 0x18], ecx
mov dword [rbx - 0x14], eax
mov edx, dword [rbx - 0x14]
mov eax, edx
shr rax, 8
movzx ecx, al
mov eax, edx
shr rax, 0x10
mov r8d, dword [r9 + rcx*4 + 0x12e300]
movzx ecx, al
and r8d, edi
mov eax, dword [r9 + rcx*4 + 0x12df00]
and eax, r11d
xor r8d, eax
mov eax, edx
shr rax, 0x18
movzx eax, byte [r9 + rax*4 + 0x12db00]
xor r8d, eax
movzx eax, dl
mov ecx, dword [r9 + rax*4 + 0x12d700]
and ecx, r14d
xor r8d, ecx
xor r8d, dword [rbx - 0x30]
xor r8d, dword [r10]
add r10, r15
mov dword [rbx - 0x10], r8d
mov eax, dword [rbx - 0x2c]
xor eax, r8d
mov dword [rbx - 0xc], eax
mov ecx, dword [rbx - 0x28]
xor ecx, eax
mov dword [rbx - 8], ecx
mov eax, dword [rbx - 0x24]
xor eax, ecx
mov dword [rbx - 4], eax
lea rax, [0x14012f81c]
cmp r10, rax
jne 0x14010c559
jmp 0x14010c30b
or eax, 0xffffffff
mov rbx, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r14
pop rbp
ret