Function at 0x10110980
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
sub rsp, 0x2c8
mov qword [rsp + 0x98], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov qword [rax - 8], r12
mov qword [rax - 0x10], r13
mov qword [rax - 0x18], r14
mov qword [rax - 0x20], r15
mov rbx, rcx
xor ebp, ebp
cmp byte [rcx + 0x50], bpl
je 0x10110f04
lea r15, [0x1018fa88]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea r12, [0x1018d398]
lea edi, [rbp + 1]
cmp byte [0x1018d390], bpl
jne 0x10110ae1
mov eax, dword [0x1018d394]
cmp dword [rbx + 0x54], eax
jne 0x10110ae1
mov rdx, qword [rbx + 0x58]
cmp rdx, qword [r12]
jne 0x10110a14
mov rdx, qword [rbx + 0x60]
cmp rdx, qword [r12 + 8]
jne 0x10110a14
mov eax, ebp
jmp 0x10110a19
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10110ae1
mov r8, qword [rbx + 0x70]
cmp r8, qword [0x1018d3b0]
jne 0x10110ae1
test r8, r8
je 0x10110a5b
mov dword [rsp + 0x20], edi
mov r9d, edi
mov rdx, qword [0x1018d3a8]
mov rcx, qword [rbx + 0x68]
call sub.msvcrt.dll_memcmp
test eax, eax
sete al
test al, al
je 0x10110ae1
lea rcx, [0x10000000]
mov rax, qword [rcx + 0x18d3b8]
mov qword [rbx + 0x78], rax
mov rax, qword [rcx + 0x18d3c0]
mov qword [rbx + 0x80], rax
mov rax, qword [rcx + 0x18d3c8]
mov qword [rbx + 0x88], rax
mov rax, qword [rcx + 0x18d3d0]
mov qword [rbx + 0x90], rax
mov rax, qword [0x1018d3d8]
mov qword [rbx + 0x98], rax
mov rax, qword [rcx + 0x18d3e0]
mov qword [rbx + 0xa0], rax
mov rax, qword [rcx + 0x18d3e8]
mov qword [rbx + 0xa8], rax
mov rax, qword [rcx + 0x18d3f0]
mov qword [rbx + 0xb0], rax
mov rax, qword [rcx + 0x18d3f8]
mov qword [rbx + 0xb8], rax
mov byte [rbx + 0x50], bpl
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp byte [rbx + 0x50], bpl
je 0x10110f04
mov r8, qword [rbx + 0x70]
mov rdx, qword [rbx + 0x68]
lea rcx, [rsp + 0x1a0]
call fcn.1010f630
lea rcx, [rsp + 0xa0]
lea rdx, [rsp + 0x1a0]
mov r8d, 0x100
call sub.msvcrt.dll_memcpy
lea rdx, [rbx + 0x58]
mov r13d, 0x10
mov r8, r13
lea rcx, [rsp + 0xa0]
call fcn.1012fe70
mov byte [rsp + 0x30], bpl
mov byte [rsp + 0x31], bpl
mov byte [rsp + 0x32], bpl
mov byte [rsp + 0x33], dil
mov r14d, 4
mov r8, r14
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0xa0]
call fcn.1012fe70
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0xa0]
call fcn.1010f740
lea r11, [rsp + 0x50]
lea rcx, [rsp + 0x30]
mov rax, qword [rcx]
mov qword [r11], rax
mov rax, qword [rcx + 8]
mov qword [r11 + 8], rax
mov rax, qword [rcx + 0x10]
mov qword [r11 + 0x10], rax
mov rax, qword [rcx + 0x18]
mov qword [r11 + 0x18], rax
mov ecx, dword [rbx + 0x54]
shl edi, cl
dec edi
mov esi, ebp
test edi, edi
je 0x10110c4d
nop
nop
lea rcx, [rsp + 0xa0]
lea rdx, [rsp + 0x1a0]
mov r8d, 0x100
call sub.msvcrt.dll_memcpy
mov r8d, 0x20
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0xa0]
call fcn.1012fe70
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0xa0]
call fcn.1010f740
mov r11, rbp
mov ecx, 8
nop
movzx eax, byte [rsp + r11 + 0x30]
xor byte [rsp + r11 + 0x50], al
movzx eax, byte [rsp + r11 + 0x31]
xor byte [rsp + r11 + 0x51], al
movzx eax, byte [rsp + r11 + 0x32]
xor byte [rsp + r11 + 0x52], al
movzx eax, byte [rsp + r11 + 0x33]
xor byte [rsp + r11 + 0x53], al
add r11, r14
dec rcx
jne 0x10110c10
add edi, 0xffffffff
jne 0x10110bc0
test esi, esi
jne 0x10110c57
lea rcx, [rbx + 0x78]
jmp 0x10110c6a
cmp esi, 1
jne 0x10110c65
lea rcx, [rbx + 0xa0]
jmp 0x10110c6a
lea rcx, [rsp + 0x70]
lea rdx, [rsp + 0x50]
mov rax, qword [rdx]
mov qword [rcx], rax
mov rax, qword [rdx + 8]
mov qword [rcx + 8], rax
mov rax, qword [rdx + 0x10]
mov qword [rcx + 0x10], rax
mov rax, qword [rdx + 0x18]
mov qword [rcx + 0x18], rax
mov edi, r13d
inc esi
cmp esi, 3
jb 0x10110bb0
movzx eax, byte [rsp + 0x70]
mov byte [rbx + 0x98], al
movzx eax, byte [rsp + 0x71]
mov byte [rbx + 0x99], al
movzx eax, byte [rsp + 0x72]
mov byte [rbx + 0x9a], al
movzx eax, byte [rsp + 0x73]
mov byte [rbx + 0x9b], al
movzx eax, byte [rsp + 0x74]
mov byte [rbx + 0x9c], al
movzx eax, byte [rsp + 0x75]
mov byte [rbx + 0x9d], al
movzx eax, byte [rsp + 0x76]
mov byte [rbx + 0x9e], al
movzx eax, byte [rsp + 0x77]
mov byte [rbx + 0x9f], al
lea rdx, [rsp + 0x79]
mov r8d, 0xa
nop
lea ecx, [r8 - 2]
and ecx, 7
movzx eax, byte [rdx - 1]
xor byte [rcx + rbx + 0x98], al
lea ecx, [r8 - 1]
and ecx, 7
movzx eax, byte [rdx]
xor byte [rcx + rbx + 0x98], al
mov cl, r8b
and ecx, 7
movzx eax, byte [rdx + 1]
xor byte [rcx + rbx + 0x98], al
lea ecx, [r8 + 1]
and ecx, 7
movzx eax, byte [rdx + 2]
xor byte [rcx + rbx + 0x98], al
lea ecx, [r8 + 2]
and ecx, 7
movzx eax, byte [rdx + 3]
xor byte [rcx + rbx + 0x98], al
lea ecx, [r8 + 3]
and ecx, 7
movzx eax, byte [rdx + 4]
xor byte [rcx + rbx + 0x98], al
add r8, 6
add rdx, 6
dec r14
jne 0x10110d00
mov byte [rbx + 0x50], bpl
mov qword [rsp + 0x90], r15
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
movzx eax, byte [rbx + 0x50]
mov byte [0x1018d390], al
mov eax, dword [rbx + 0x54]
mov dword [0x1018d394], eax
lea rcx, [rbx + 0x58]
mov rdx, r13
nop
nop
nop
movzx eax, byte [rcx]
mov byte [r12], al
inc rcx
inc r12
dec rdx
jne 0x10110db0
lea rdi, [rbx + 0x68]
lea rax, [0x1018d3a8]
cmp rdi, rax
je 0x10110e38
mov rsi, qword [rdi]
mov rdi, qword [rdi + 8]
cmp rdi, qword [0x1018d3b0]
je 0x10110e1e
mov rcx, qword [0x1018d3a8]
test rcx, rcx
je 0x10110dfa
call sub.msvcrt.dll_free
mov qword [0x1018d3a8], rbp
mov qword [0x1018d3b0], rbp
test rdi, rdi
je 0x10110e38
mov rcx, rdi
call fcn.10003f74
mov qword [0x1018d3a8], rax
mov qword [0x1018d3b0], rdi
jmp 0x10110e25
mov rax, qword [0x1018d3a8]
test rdi, rdi
je 0x10110e38
mov r8, rdi
mov rdx, rsi
mov rcx, rax
call sub.msvcrt.dll_memcpy
lea rcx, [0x1018d3b9]
lea rdx, [rbx + 0x79]
mov r8, r13
nop
nop
nop
movzx eax, byte [rdx - 1]
mov byte [rcx - 1], al
movzx eax, byte [rdx]
mov byte [rcx], al
add rdx, 2
add rcx, 2
dec r8
jne 0x10110e50
movzx eax, byte [rbx + 0x98]
mov byte [0x1018d3d8], al
movzx eax, byte [rbx + 0x99]
mov byte [0x1018d3d9], al
movzx eax, byte [rbx + 0x9a]
mov byte [0x1018d3da], al
movzx eax, byte [rbx + 0x9b]
mov byte [0x1018d3db], al
movzx eax, byte [rbx + 0x9c]
mov byte [0x1018d3dc], al
movzx eax, byte [rbx + 0x9d]
mov byte [0x1018d3dd], al
movzx eax, byte [rbx + 0x9e]
mov byte [0x1018d3de], al
movzx eax, byte [rbx + 0x9f]
mov byte [0x1018d3df], al
lea rdx, [0x1018d3e1]
lea r8, [rbx + 0xa1]
nop
movzx eax, byte [r8 - 1]
mov byte [rdx - 1], al
movzx eax, byte [r8]
mov byte [rdx], al
add r8, 2
add rdx, 2
dec r13
jne 0x10110ee0
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test byte [rbx + 0xd0], 1
je 0x10110f29
cmp byte [rbx + 0xc8], 0
je 0x10110f29
mov rcx, qword [rbx + 0x98]
cmp rcx, qword [rbx + 0xc0]
sete al
jmp 0x10110f2b
mov al, 1
mov rbx, qword [rsp + 0x2d0]
mov rbp, qword [rsp + 0x2d8]
mov rsi, qword [rsp + 0x2e0]
mov rdi, qword [rsp + 0x2e8]
mov r12, qword [rsp + 0x2c0]
mov r13, qword [rsp + 0x2b8]
mov r14, qword [rsp + 0x2b0]
mov r15, qword [rsp + 0x2a8]
add rsp, 0x2c8
ret