Function at 0x1400163f0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x78
mov rax, qword [0x140067040]
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 0x140016438
mov eax, 0xffffffea
jmp 0x140016891
mov qword [rax], rbp
test rbp, rbp
jne 0x140016447
xor eax, eax
jmp 0x140016891
cmp rbx, rsi
jbe 0x14001645b
mov rax, rbx
sub rax, rsi
cmp rax, rbp
jb 0x140016909
mov rax, qword [rcx + 0x160]
lea rcx, [rax + r8]
cmp rcx, rax
jb 0x140016909
movabs rdx, 0xfffffffe0
cmp rcx, rdx
ja 0x140016909
mov qword [rsp + 0x58], r15
test rax, rax
jne 0x1400164a7
test byte [rdi + 0x168], 0xf
je 0x1400164a7
lea rdx, [rdi + 0x190]
mov rcx, rdi
mov r8, rdx
call fcn.140015cd0
mov rax, qword [rdi + 0x160]
mov r15, rax
mov qword [rsp + 0x60], r14
and r15d, 0xf
je 0x14001659f
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.140016b30
mov edx, eax
test eax, eax
je 0x140016518
xor eax, eax
lea rdi, [rsp + 0x38]
mov ecx, 0x10
rep stosb byte [rdi], al
mov eax, edx
jmp 0x140016887
cmp dword [rdi + 0x1a0], 0
jne 0x140016539
lea rcx, [rdi + 0x190]
mov r9, r14
add rcx, r15
mov r8, rsi
mov rdx, rcx
call fcn.140015840
lea rdx, [rsp + 0x38]
mov r9, r14
add rdx, r15
mov r8, rsi
mov rcx, rbx
call fcn.140015840
cmp dword [rdi + 0x1a0], 1
jne 0x140016570
lea rcx, [rdi + 0x190]
mov r9, r14
add rcx, r15
mov r8, rbx
mov rdx, rcx
call fcn.140015840
lea rax, [r14 + r15]
cmp rax, 0x10
jne 0x14001658c
lea rdx, [rdi + 0x190]
mov rcx, rdi
mov r8, rdx
call fcn.140015cd0
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 0x140016815
mov r14, r15
sub r14, rdi
nop word [rax + rax]
lea rax, [rdi + 0x18f]
add byte [rax], 1
jne 0x1400165e9
dec rax
lea rcx, [rax + r14]
cmp rcx, 0xc
ja 0x1400165d7
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.140016b30
mov edx, eax
test eax, eax
jne 0x14001686d
cmp dword [rdi + 0x1a0], eax
jne 0x1400166cb
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 0x1400166df
lea rax, [rbx + 0xf]
cmp rax, rsi
jae 0x1400166f7
lea rax, [rsp + 0x47]
cmp rbx, rax
ja 0x140016730
lea rax, [rbx + 0xf]
lea rcx, [rsp + 0x38]
cmp rax, rcx
jb 0x140016730
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 0x140016710
jmp 0x140016741
movdqu xmm0, xmmword [rsi]
movdqu xmm1, xmmword [rsp + 0x38]
xorps xmm1, xmm0
movdqu xmmword [rbx], xmm1
cmp dword [rdi + 0x1a0], 1
jne 0x1400167ed
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.140015cd0
sub rbp, 0x10
add rsi, 0x10
add rbx, 0x10
cmp rbp, 0x10
jae 0x1400165d0
test rbp, rbp
je 0x1400168f6
sub r15, rdi
lea rcx, [rdi + 0x18f]
add byte [rcx], 1
jne 0x14001683a
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
ja 0x140016828
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.140016b30
mov edx, eax
test eax, eax
je 0x1400168a7
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.1400236d0
add rsp, 0x78
pop rdi
pop rsi
pop rbp
pop rbx
ret
cmp dword [rdi + 0x1a0], 0
jne 0x1400168c5
lea rcx, [rdi + 0x190]
mov r9, rbp
mov rdx, rcx
mov r8, rsi
call fcn.140015840
mov r9, rbp
lea rdx, [rsp + 0x38]
mov r8, rsi
mov rcx, rbx
call fcn.140015840
cmp dword [rdi + 0x1a0], 1
jne 0x1400168f6
lea rcx, [rdi + 0x190]
mov r9, rbp
mov rdx, rcx
mov r8, rbx
call fcn.140015840
lea rdi, [rsp + 0x38]
xor eax, eax
mov ecx, 0x10
rep stosb byte [rdi], al
jmp 0x14001687d
mov eax, 0xffffffec
jmp 0x140016891