Function at 0x140016830
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x78
mov rax, qword [0x140074040]
xor rax, rsp
mov qword [rsp + 0x48], rax
xorps xmm0, xmm0
mov rax, qword [rsp + 0xc8]
mov rbx, r9
mov rbp, r8
mov rsi, rdx
mov rdi, rcx
movups xmmword [rsp + 0x38], xmm0
cmp qword [rsp + 0xc0], r8
jae 0x140016878
mov eax, 0xffffffea
jmp 0x140016cd1
mov qword [rax], rbp
test rbp, rbp
jne 0x140016887
xor eax, eax
jmp 0x140016cd1
cmp rbx, rsi
jbe 0x14001689b
mov rax, rbx
sub rax, rsi
cmp rax, rbp
jb 0x140016d49
mov rax, qword [rcx + 0x160]
lea rcx, [rax + r8]
cmp rcx, rax
jb 0x140016d49
movabs rdx, 0xfffffffe0
cmp rcx, rdx
ja 0x140016d49
mov qword [rsp + 0x58], r15
test rax, rax
jne 0x1400168e7
test byte [rdi + 0x168], 0xf
je 0x1400168e7
lea rdx, [rdi + 0x190]
mov rcx, rdi
mov r8, rdx
call fcn.140016110
mov rax, qword [rdi + 0x160]
mov r15, rax
mov qword [rsp + 0x60], r14
and r15d, 0xf
je 0x1400169df
lea rax, [rsp + 0x30]
mov qword [rsp + 0x30], 0
mov r14d, 0x10
mov qword [rsp + 0x20], rax
sub r14, r15
lea rdx, [rdi + 0x180]
cmp r14, rbp
lea r9, [rsp + 0x38]
mov r8d, 0x10
mov rcx, rdi
cmova r14, rbp
call fcn.140016f70
mov edx, eax
test eax, eax
je 0x140016958
xor eax, eax
lea rdi, [rsp + 0x38]
mov ecx, 0x10
rep stosb byte [rdi], al
mov eax, edx
jmp 0x140016cc7
cmp dword [rdi + 0x1a0], 0
jne 0x140016979
lea rcx, [rdi + 0x190]
mov r9, r14
add rcx, r15
mov r8, rsi
mov rdx, rcx
call fcn.140015c80
lea rdx, [rsp + 0x38]
mov r9, r14
add rdx, r15
mov r8, rsi
mov rcx, rbx
call fcn.140015c80
cmp dword [rdi + 0x1a0], 1
jne 0x1400169b0
lea rcx, [rdi + 0x190]
mov r9, r14
add rcx, r15
mov r8, rbx
mov rdx, rcx
call fcn.140015c80
lea rax, [r14 + r15]
cmp rax, 0x10
jne 0x1400169cc
lea rdx, [rdi + 0x190]
mov rcx, rdi
mov r8, rdx
call fcn.140016110
mov rax, qword [rdi + 0x160]
sub rbp, r14
add rsi, r14
add rbx, r14
add rax, r14
add rax, rbp
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x68], r13
mov r15, 0xfffffffffffffe81
mov qword [rdi + 0x160], rax
cmp rbp, 0x10
jb 0x140016c55
mov r14, r15
sub r14, rdi
nop word [rax + rax]
lea rax, [rdi + 0x18f]
add byte [rax], 1
jne 0x140016a29
dec rax
lea rcx, [rax + r14]
cmp rcx, 0xc
ja 0x140016a17
lea rax, [rsp + 0x30]
mov qword [rsp + 0x30], 0
lea r9, [rsp + 0x38]
mov qword [rsp + 0x20], rax
mov r8d, 0x10
lea rdx, [rdi + 0x180]
mov rcx, rdi
call fcn.140016f70
mov edx, eax
test eax, eax
jne 0x140016cad
cmp dword [rdi + 0x1a0], eax
jne 0x140016b0b
movzx eax, byte [rsi]
xor byte [rdi + 0x190], al
movzx eax, byte [rsi + 1]
xor byte [rdi + 0x191], al
movzx eax, byte [rsi + 2]
xor byte [rdi + 0x192], al
movzx eax, byte [rsi + 3]
xor byte [rdi + 0x193], al
movzx eax, byte [rsi + 4]
xor byte [rdi + 0x194], al
movzx eax, byte [rsi + 5]
xor byte [rdi + 0x195], al
movzx eax, byte [rsi + 6]
xor byte [rdi + 0x196], al
movzx eax, byte [rsi + 7]
xor byte [rdi + 0x197], al
movzx eax, byte [rsi + 8]
xor byte [rdi + 0x198], al
movzx eax, byte [rsi + 9]
xor byte [rdi + 0x199], al
movzx eax, byte [rsi + 0xa]
xor byte [rdi + 0x19a], al
movzx eax, byte [rsi + 0xb]
xor byte [rdi + 0x19b], al
movzx eax, byte [rsi + 0xc]
xor byte [rdi + 0x19c], al
movzx eax, byte [rsi + 0xd]
xor byte [rdi + 0x19d], al
movzx eax, byte [rsi + 0xe]
xor byte [rdi + 0x19e], al
movzx eax, byte [rsi + 0xf]
xor byte [rdi + 0x19f], al
xor edx, edx
lea rax, [rsi + 0xf]
cmp rbx, rax
ja 0x140016b1f
lea rax, [rbx + 0xf]
cmp rax, rsi
jae 0x140016b37
lea rax, [rsp + 0x47]
cmp rbx, rax
ja 0x140016b70
lea rax, [rbx + 0xf]
lea rcx, [rsp + 0x38]
cmp rax, rcx
jb 0x140016b70
lea rax, [rsp + 0x3a]
mov r8, rsi
sub r8, rax
mov r9, rbx
lea rax, [rsp + 0x39]
sub r9, rax
nop dword [rax]
lea rcx, [rsp + 0x38]
add rcx, rdx
inc rdx
movzx eax, byte [rcx + r8 + 2]
xor al, byte [rcx]
mov byte [rcx + r9 + 1], al
cmp rdx, 0x10
jb 0x140016b50
jmp 0x140016b81
movdqu xmm0, xmmword [rsi]
movdqu xmm1, xmmword [rsp + 0x38]
xorps xmm1, xmm0
movdqu xmmword [rbx], xmm1
cmp dword [rdi + 0x1a0], 1
jne 0x140016c2d
movzx eax, byte [rbx]
xor byte [rdi + 0x190], al
movzx eax, byte [rbx + 1]
xor byte [rdi + 0x191], al
movzx eax, byte [rbx + 2]
xor byte [rdi + 0x192], al
movzx eax, byte [rbx + 3]
xor byte [rdi + 0x193], al
movzx eax, byte [rbx + 4]
xor byte [rdi + 0x194], al
movzx eax, byte [rbx + 5]
xor byte [rdi + 0x195], al
movzx eax, byte [rbx + 6]
xor byte [rdi + 0x196], al
movzx eax, byte [rbx + 7]
xor byte [rdi + 0x197], al
movzx eax, byte [rbx + 8]
xor byte [rdi + 0x198], al
movzx eax, byte [rbx + 9]
xor byte [rdi + 0x199], al
movzx eax, byte [rbx + 0xa]
xor byte [rdi + 0x19a], al
movzx eax, byte [rbx + 0xb]
xor byte [rdi + 0x19b], al
movzx eax, byte [rbx + 0xc]
xor byte [rdi + 0x19c], al
movzx eax, byte [rbx + 0xd]
xor byte [rdi + 0x19d], al
movzx eax, byte [rbx + 0xe]
xor byte [rdi + 0x19e], al
movzx eax, byte [rbx + 0xf]
xor byte [rdi + 0x19f], al
lea rdx, [rdi + 0x190]
mov rcx, rdi
mov r8, rdx
call fcn.140016110
sub rbp, 0x10
add rsi, 0x10
add rbx, 0x10
cmp rbp, 0x10
jae 0x140016a10
test rbp, rbp
je 0x140016d36
sub r15, rdi
lea rcx, [rdi + 0x18f]
add byte [rcx], 1
jne 0x140016c7a
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
ja 0x140016c68
lea rax, [rsp + 0x30]
mov qword [rsp + 0x30], 0
lea rdx, [rdi + 0x180]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x38]
mov r8d, 0x10
mov rcx, rdi
call fcn.140016f70
mov edx, eax
test eax, eax
je 0x140016ce7
xor eax, eax
lea rdi, [rsp + 0x38]
mov ecx, 0x10
rep stosb byte [rdi], al
mov eax, edx
mov r13, qword [rsp + 0x68]
mov r12, qword [rsp + 0x70]
mov r14, qword [rsp + 0x60]
mov r15, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.14002cd30
add rsp, 0x78
pop rdi
pop rsi
pop rbp
pop rbx
ret
cmp dword [rdi + 0x1a0], 0
jne 0x140016d05
lea rcx, [rdi + 0x190]
mov r9, rbp
mov rdx, rcx
mov r8, rsi
call fcn.140015c80
mov r9, rbp
lea rdx, [rsp + 0x38]
mov r8, rsi
mov rcx, rbx
call fcn.140015c80
cmp dword [rdi + 0x1a0], 1
jne 0x140016d36
lea rcx, [rdi + 0x190]
mov r9, rbp
mov rdx, rcx
mov r8, rbx
call fcn.140015c80
lea rdi, [rsp + 0x38]
xor eax, eax
mov ecx, 0x10
rep stosb byte [rdi], al
jmp 0x140016cbd
mov eax, 0xffffffec
jmp 0x140016cd1