Function at 0x140017950
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
lea rbp, [rsp - 0x128]
sub rsp, 0x228
mov rax, qword [0x1400b1008]
xor rax, rsp
mov qword [rbp + 0x100], rax
cmp byte [rcx], 0
mov rbx, rcx
je 0x140017d6b
mov qword [rsp + 0x210], r15
lea r15, [rcx + 0x108]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rcx, qword [rbx + 0x138]
test rcx, rcx
je 0x140017d5a
mov qword [rbp - 0x28], rcx
lea rdx, [rsp + 0x20]
add rcx, qword [rbx + 0x140]
xorps xmm0, xmm0
mov qword [rsp + 0x258], r12
xor r12d, r12d
mov qword [rbp - 0x20], rcx
lea rcx, [rbp - 0x60]
mov qword [rsp + 0x218], r14
mov qword [rbp - 0x60], r12
mov qword [rbp - 0x58], r12
mov qword [rbp - 0x50], r12
mov qword [rbp - 0x48], r12
movdqa xmmword [rbp - 0x40], xmm0
mov qword [rbp - 0x30], r12
mov qword [rbp - 0x18], r12
mov dword [rsp + 0x20], r12d
mov qword [rsp + 0x28], r12
call fcn.14000daa0
test rax, rax
jne 0x140017a1a
mov qword [rsp + 0x38], r12
mov dword [rsp + 0x30], 1
movaps xmm0, xmmword [rsp + 0x30]
jmp 0x140017a23
add qword [rbp - 0x28], rax
movaps xmm0, xmmword [rsp + 0x20]
movdqa xmmword [rsp + 0x20], xmm0
mov r14d, dword [rsp + 0x28]
test r14d, r14d
je 0x140017d37
mov qword [rsp + 0x220], r13
lea r13, str.eCZ
mov qword [rsp + 0x248], rsi
mov qword [rsp + 0x250], rdi
dec r14d
cmp dword [rbp - 0x18], r12d
je 0x140017a73
mov qword [rsp + 0x68], r12
mov dword [rsp + 0x60], 1
movaps xmm0, xmmword [rsp + 0x60]
jmp 0x140017aad
lea rdx, [rsp + 0x50]
mov dword [rsp + 0x50], r12d
lea rcx, [rbp - 0x60]
mov qword [rsp + 0x58], r12
call fcn.14000daa0
test rax, rax
jne 0x140017aa4
mov qword [rsp + 0x78], r12
mov dword [rsp + 0x70], 1
movaps xmm0, xmmword [rsp + 0x70]
jmp 0x140017aad
add qword [rbp - 0x28], rax
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x20], xmm0
cmp dword [rbp - 0x18], r12d
je 0x140017aca
mov qword [rbp - 0x78], r12
mov dword [rbp - 0x80], 1
movaps xmm0, xmmword [rbp - 0x80]
jmp 0x140017b01
lea rdx, [rsp + 0x30]
mov dword [rsp + 0x30], r12d
lea rcx, [rbp - 0x60]
mov qword [rsp + 0x38], r12
call fcn.14000daa0
test rax, rax
jne 0x140017af8
mov qword [rbp - 0x68], r12
mov dword [rbp - 0x70], 1
movaps xmm0, xmmword [rbp - 0x70]
jmp 0x140017b01
add qword [rbp - 0x28], rax
movaps xmm0, xmmword [rsp + 0x30]
movdqa xmmword [rsp + 0x40], xmm0
mov ecx, dword [rsp + 0x40]
sub ecx, 2
je 0x140017d08
sub ecx, 1
je 0x140017cce
sub ecx, 1
je 0x140017cce
sub ecx, 2
je 0x140017c9a
cmp ecx, 2
jne 0x140017d16
mov edi, dword [rsp + 0x48]
cmp dword [rbp - 0x18], r12d
je 0x140017b47
mov rbx, r12
jmp 0x140017b78
mov rax, qword [rbp - 0x20]
mov rbx, qword [rbp - 0x28]
sub rax, rbx
cmp rax, rdi
jae 0x140017b70
mov rdx, rdi
lea rcx, [rbp - 0x60]
call fcn.14000d9a0
test al, al
jne 0x140017b6c
mov rbx, r12
jmp 0x140017b78
mov rbx, qword [rbp - 0x28]
lea rax, [rbx + rdi]
mov qword [rbp - 0x28], rax
mov edx, 1
mov rcx, rdi
call fcn.14006bdc8
mov rsi, rax
test rax, rax
je 0x140017d16
mov ecx, r12d
lea rdx, [rbp - 0x10]
nop dword [rax + rax]
mov byte [rdx], cl
lea rdx, [rdx + 1]
inc ecx
cmp ecx, 0x100
jl 0x140017ba0
mov r9d, r12d
mov r10d, r12d
nop word [rax + rax]
mov eax, r9d
mov r8d, r9d
and eax, 0xf
inc r9d
movzx edx, byte [rbp + r8 - 0x10]
movzx ecx, byte [rax + r13]
add ecx, r10d
add ecx, edx
movzx r10d, cl
movzx eax, byte [rbp + r10 - 0x10]
mov byte [rbp + r8 - 0x10], al
mov byte [rbp + r10 - 0x10], dl
cmp r9d, 0x100
jl 0x140017bc0
mov qword [rbp + 0xf0], r12
mov r9, rsi
mov r11, rdi
test rdi, rdi
je 0x140017c5e
mov r8d, r12d
mov r10d, r12d
sub rbx, rsi
lea eax, [r8 + 1]
movzx r8d, al
lea r9, [r9 + 1]
movzx edx, byte [rbp + r8 - 0x10]
lea eax, [r10 + rdx]
movzx r10d, al
movzx eax, byte [rbp + r10 - 0x10]
mov byte [rbp + r8 - 0x10], al
mov byte [rbp + r10 - 0x10], dl
movzx ecx, byte [rbp + r8 - 0x10]
add rcx, rdx
movzx eax, cl
movzx ecx, byte [rbp + rax - 0x10]
xor cl, byte [r9 + rbx - 1]
mov byte [r9 - 1], cl
sub r11, 1
jne 0x140017c14
mov rax, qword [rsp + 0x28]
cmp rax, 0xb60
je 0x140017c85
mov r8, rdi
mov rdx, rsi
mov ecx, eax
call fcn.1400176d0
mov rcx, rsi
call fcn.14006ac0c
jmp 0x140017d16
mov rdx, rdi
mov rcx, rsi
call fcn.14000f450
mov rcx, rsi
call fcn.14006ac0c
jmp 0x140017d16
cmp byte [0x1400d69b0], r12b
je 0x140017d16
mov ebx, dword [rsp + 0x28]
mov ecx, ebx
call fcn.140018250
mov edx, ebx
lea rcx, [0x1400d6920]
call fcn.14000cae0
movsd xmm1, qword [rsp + 0x48]
call fcn.14000ced0
call fcn.140018760
jmp 0x140017d16
cmp byte [0x1400d69b0], r12b
je 0x140017d16
mov ebx, dword [rsp + 0x28]
mov ecx, ebx
call fcn.140018250
mov edx, ebx
lea rcx, [0x1400d6920]
call fcn.14000cae0
movsxd rdx, dword [rsp + 0x48]
lea rcx, [0x1400d6920]
call fcn.14000cc60
call fcn.140018760
jmp 0x140017d16
movzx edx, byte [rsp + 0x48]
mov ecx, dword [rsp + 0x28]
call fcn.140017890
test r14d, r14d
jne 0x140017a56
mov r13, qword [rsp + 0x220]
mov rdi, qword [rsp + 0x250]
mov rsi, qword [rsp + 0x248]
mov rax, qword [rbp - 0x48]
mov r14, qword [rsp + 0x218]
test rax, rax
je 0x140017d4e
lea rcx, [rbp - 0x60]
call rax
mov qword [rbp - 0x48], r12
mov r12, qword [rsp + 0x258]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov r15, qword [rsp + 0x210]
mov rcx, qword [rbp + 0x100]
xor rcx, rsp
call fcn.14001a6d0
add rsp, 0x228
pop rbx
pop rbp
ret