Function at 0x140016440
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rdi
mov rbp, rsp
sub rsp, 0x80
mov rdi, rcx
xor ebx, ebx
xor r8d, r8d
xor edx, edx
lea ecx, [rbx + 0xa]
call fcn.14000e3c0
test al, al
je 0x1400164d2
lea rcx, [rbp + 0x28]
call fcn.1400058d0
mov r8, rax
lea r9, [rax + 0xa]
cmp byte [rax + 9], bl
jne 0x140016491
mov edx, ebx
nop
movsxd rcx, edx
lea eax, [rdx + 0x7d]
inc edx
xor byte [rcx + r9], al
cmp edx, 0x14
jb 0x140016480
mov byte [r8 + 9], 1
xorps xmm0, xmm0
movups xmmword [rdi], xmm0
mov qword [rdi + 0x10], rbx
mov r8, 0xffffffffffffffff
mov qword [rdi + 0x18], rbx
nop dword [rax + rax]
inc r8
cmp byte [r9 + r8], bl
jne 0x1400164b0
mov rdx, r9
mov rcx, rdi
call fcn.140001560
mov rax, rdi
add rsp, 0x80
pop rdi
pop rbx
pop rbp
ret
mov qword [rsp + 0x78], rsi
xor r8d, r8d
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x60], r14
lea edx, [r8 + 3]
mov qword [rsp + 0x58], r15
lea ecx, [rdx + 3]
call fcn.14000e3c0
test al, al
je 0x140016697
mov rcx, qword gs:[0x58]
mov eax, dword [0x14005fc10]
mov edx, 0x238
mov r9, qword [rcx + rax*8]
mov ecx, 0x250
mov qword [rbp + 0x28], r9
mov eax, dword [rcx + r9]
test al, 1
jne 0x140016638
movups xmm0, xmmword [0x140047b60]
or eax, 1
lea r8, [rbp - 0x46]
mov dword [rcx + r9], eax
lea r10, [rbp - 0x50]
xor ecx, ecx
mov eax, edx
add rax, r9
movaps xmmword [rbp - 0x50], xmm0
movsd xmm0, qword [0x140047b70]
lea r11, [rbp - 0x4f]
mov edx, ebx
movsd qword [rbp - 0x40], xmm0
lea rsi, [rbp - 0x4e]
sub r8, rax
mov qword [rax], rbx
lea r14, [rbp - 0x4d]
mov word [rax + 8], bx
lea r15, [rbp - 0x4c]
mov qword [rax + 0xa], rcx
lea r12, [rbp - 0x4b]
lea r13, [rbp - 0x4a]
mov dword [rax + 0x12], ecx
lea rdi, [rbp - 0x49]
sub r10, rax
lea r9, [rbp - 0x48]
sub r11, rax
lea rbx, [rbp - 0x47]
sub rsi, rax
sub r14, rax
lea rcx, [rax + 0xb]
sub r15, rax
sub r12, rax
sub r13, rax
sub rdi, rax
sub r9, rax
sub rbx, rax
nop word [rax + rax]
movzx eax, byte [rcx + r8 - 0xb]
add edx, 0xc
mov byte [rcx - 1], al
movzx eax, byte [r10 + rcx]
mov byte [rcx], al
movzx eax, byte [r11 + rcx]
mov byte [rcx + 1], al
movzx eax, byte [rsi + rcx]
mov byte [rcx + 2], al
movzx eax, byte [r14 + rcx]
mov byte [rcx + 3], al
movzx eax, byte [r15 + rcx]
mov byte [rcx + 4], al
movzx eax, byte [r12 + rcx]
mov byte [rcx + 5], al
movzx eax, byte [rcx + r13]
mov byte [rcx + 6], al
movzx eax, byte [rdi + rcx]
mov byte [rcx + 7], al
movzx eax, byte [r9 + rcx]
mov byte [rcx + 8], al
movzx eax, byte [rbx + rcx]
mov byte [rcx + 9], al
movzx eax, byte [rcx + r8]
mov byte [rcx + 0xa], al
lea rcx, [rcx + 0xc]
cmp edx, 0xc
jb 0x1400165c0
mov rdi, qword [rbp + 0x20]
xor ebx, ebx
mov r9, qword [rbp + 0x28]
mov edx, 0x238
mov r8d, edx
add r8, r9
cmp byte [r8 + 9], 0
jne 0x140016662
mov edx, ebx
nop word [rax + rax]
movsxd rcx, edx
lea eax, [rdx + 0x7e]
inc edx
xor byte [rcx + r8 + 0xa], al
cmp edx, 0xc
jb 0x140016650
mov byte [r8 + 9], 1
lea rdx, [r8 + 0xa]
xorps xmm0, xmm0
mov r8, 0xffffffffffffffff
movups xmmword [rdi], xmm0
mov qword [rdi + 0x10], rbx
mov qword [rdi + 0x18], rbx
inc r8
cmp byte [rdx + r8], 0
jne 0x140016680
mov rcx, rdi
call fcn.140001560
jmp 0x140016cc1
xor r8d, r8d
lea edx, [r8 + 2]
lea ecx, [rdx + 4]
call fcn.14000e3c0
test al, al
je 0x140016836
mov rcx, qword gs:[0x58]
mov eax, dword [0x14005fc10]
mov edx, 0x258
mov r9, qword [rcx + rax*8]
mov ecx, 0x26c
mov qword [rbp - 0x58], r9
mov eax, dword [rcx + r9]
test al, 1
jne 0x1400167d8
movups xmm0, xmmword [0x140047b78]
or eax, 1
lea r10, [rbp - 0x46]
mov dword [rcx + r9], eax
lea r11, [rbp - 0x50]
mov eax, dword [0x140047b88]
lea rsi, [rbp - 0x4f]
mov dword [rbp - 0x40], eax
lea r14, [rbp - 0x4e]
xor eax, eax
mov ecx, edx
add rcx, r9
movaps xmmword [rbp - 0x50], xmm0
sub r10, rcx
lea r15, [rbp - 0x4d]
sub r11, rcx
lea r12, [rbp - 0x4c]
sub rsi, rcx
lea r13, [rbp - 0x4b]
mov qword [rcx], rbx
lea r9, [rbp - 0x48]
mov word [rcx + 8], bx
lea rdx, [rcx + 0xb]
mov qword [rcx + 0xa], rax
sub r14, rcx
mov word [rcx + 0x12], ax
sub r15, rcx
sub r12, rcx
lea rax, [rbp - 0x4a]
sub rax, rcx
sub r13, rcx
mov qword [rbp + 0x28], rax
mov r8d, ebx
lea rax, [rbp - 0x49]
sub rax, rcx
sub r9, rcx
mov qword [rbp + 0x30], rax
mov rcx, qword [rbp + 0x28]
mov rdi, rax
nop dword [rax + rax]
movzx eax, byte [rdx + r10 - 0xb]
add r8d, 0xa
mov byte [rdx - 1], al
movzx eax, byte [r11 + rdx]
mov byte [rdx], al
movzx eax, byte [rsi + rdx]
mov byte [rdx + 1], al
movzx eax, byte [r14 + rdx]
mov byte [rdx + 2], al
movzx eax, byte [r15 + rdx]
mov byte [rdx + 3], al
movzx eax, byte [r12 + rdx]
mov byte [rdx + 4], al
movzx eax, byte [rdx + r13]
mov byte [rdx + 5], al
movzx eax, byte [rcx + rdx]
mov byte [rdx + 6], al
movzx eax, byte [rdi + rdx]
mov byte [rdx + 7], al
movzx eax, byte [r9 + rdx]
mov byte [rdx + 8], al
lea rdx, [rdx + 0xa]
cmp r8d, 0xa
jb 0x140016770
mov rdi, qword [rbp + 0x20]
mov r9, qword [rbp - 0x58]
mov edx, 0x258
mov r8d, edx
add r8, r9
cmp byte [r8 + 9], bl
jne 0x140016802
mov edx, ebx
nop word [rax + rax]
movsxd rcx, edx
lea eax, [rdx + 0x7e]
inc edx
xor byte [rcx + r8 + 0xa], al
cmp edx, 0xa
jb 0x1400167f0
mov byte [r8 + 9], 1
lea rdx, [r8 + 0xa]
xorps xmm0, xmm0
mov r8, 0xffffffffffffffff
movups xmmword [rdi], xmm0
mov qword [rdi + 0x10], rbx
mov qword [rdi + 0x18], rbx
inc r8
cmp byte [rdx + r8], bl
jne 0x140016820
mov rcx, rdi
call fcn.140001560
jmp 0x140016cc1
xor r8d, r8d
lea edx, [r8 + 1]
lea ecx, [rdx + 5]
call fcn.14000e3c0
test al, al
je 0x140016977
mov rcx, qword gs:[0x58]
mov eax, dword [0x14005fc10]
mov edx, 0x284
mov r8d, 0x270
mov rax, qword [rcx + rax*8]
mov qword [rbp + 0x30], rax
mov ecx, dword [rdx + rax]
test cl, 1
jne 0x140016964
movups xmm0, xmmword [0x140047b90]
or ecx, 1
lea r9, [rbp - 0x50]
mov dword [rdx + rax], ecx
lea r10, [rbp - 0x4f]
mov ecx, r8d
lea r11, [rbp - 0x4e]
add rcx, rax
movaps xmmword [rbp - 0x50], xmm0
mov eax, dword [0x140047ba0]
lea r8, [rbp - 0x46]
mov dword [rbp - 0x40], eax
lea rsi, [rbp - 0x4d]
xor eax, eax
lea r14, [rbp - 0x4c]
mov qword [rcx], rbx
lea r15, [rbp - 0x4b]
mov word [rcx + 8], bx
lea r12, [rbp - 0x4a]
mov qword [rcx + 0xa], rax
lea r13, [rbp - 0x49]
mov word [rcx + 0x12], ax
lea rdx, [rcx + 0xb]
sub r8, rcx
lea rax, [rbp - 0x48]
sub r9, rcx
sub r10, rcx
sub r11, rcx
sub rsi, rcx
sub r14, rcx
sub r15, rcx
sub r12, rcx
sub r13, rcx
sub rax, rcx
mov rcx, rax
nop dword [rax]
movzx eax, byte [rdx + r8 - 0xb]
add ebx, 0xa
mov byte [rdx - 1], al
movzx eax, byte [r9 + rdx]
mov byte [rdx], al
movzx eax, byte [r10 + rdx]
mov byte [rdx + 1], al
movzx eax, byte [r11 + rdx]
mov byte [rdx + 2], al
movzx eax, byte [rsi + rdx]
mov byte [rdx + 3], al
movzx eax, byte [r14 + rdx]
mov byte [rdx + 4], al
movzx eax, byte [r15 + rdx]
mov byte [rdx + 5], al
movzx eax, byte [r12 + rdx]
mov byte [rdx + 6], al
movzx eax, byte [rdx + r13]
mov byte [rdx + 7], al
movzx eax, byte [rcx + rdx]
mov byte [rdx + 8], al
lea rdx, [rdx + 0xa]
cmp ebx, 0xa
jb 0x140016900
mov rax, qword [rbp + 0x30]
mov r8d, 0x270
mov ecx, r8d
add rcx, rax
call fcn.140004620
mov rdx, rax
jmp 0x140016cb9
xor edx, edx
xor r8d, r8d
lea ecx, [rdx + 6]
call fcn.14000e3c0
test al, al
je 0x140016b1e
mov rcx, qword gs:[0x58]
mov eax, dword [0x14005fc10]
mov edx, 0x288
mov r8, qword [rcx + rax*8]
mov ecx, 0x2a0
mov qword [rbp - 0x58], r8
mov eax, dword [rcx + r8]
test al, 1
jne 0x140016af4
movups xmm0, xmmword [0x140047ba8]
or eax, 1
mov dword [rbp + 0x28], ebx
mov dword [rcx + r8], eax
lea r9, [rbp - 0x46]
mov eax, edx
lea r10, [rbp - 0x50]
add rax, r8
movaps xmmword [rbp - 0x50], xmm0
movsd xmm0, qword [0x140047bb8]
lea rdx, [rbp - 0x45]
xor ecx, ecx
movsd qword [rbp - 0x40], xmm0
sub rdx, rax
lea r11, [rbp - 0x4f]
mov qword [rax], rbx
lea rsi, [rbp - 0x4e]
mov word [rax + 8], bx
lea r14, [rbp - 0x4d]
mov qword [rbp + 0x30], rdx
lea rbx, [rbp - 0x47]
mov qword [rax + 0xa], rcx
lea r15, [rbp - 0x4c]
mov dword [rax + 0x12], ecx
lea r12, [rbp - 0x4b]
lea r13, [rbp - 0x4a]
mov word [rax + 0x16], cx
lea rdi, [rbp - 0x49]
sub rbx, rax
lea r8, [rbp - 0x48]
sub r9, rax
sub r10, rax
lea rdx, [rbp - 0x44]
sub r11, rax
lea rcx, [rax + 0xb]
sub rsi, rax
sub r14, rax
sub r15, rax
sub r12, rax
sub r13, rax
sub rdi, rax
sub r8, rax
sub rdx, rax
mov qword [rbp + 0x38], rdx
mov edx, dword [rbp + 0x28]
nop
movzx eax, byte [rcx + r9 - 0xb]
add edx, 0xe
mov byte [rcx - 1], al
movzx eax, byte [r10 + rcx]
mov byte [rcx], al
movzx eax, byte [r11 + rcx]
mov byte [rcx + 1], al
movzx eax, byte [rsi + rcx]
mov byte [rcx + 2], al
movzx eax, byte [r14 + rcx]
mov byte [rcx + 3], al
movzx eax, byte [r15 + rcx]
mov byte [rcx + 4], al
movzx eax, byte [r12 + rcx]
mov byte [rcx + 5], al
movzx eax, byte [rcx + r13]
mov byte [rcx + 6], al
movzx eax, byte [rdi + rcx]
mov byte [rcx + 7], al
movzx eax, byte [r8 + rcx]
mov byte [rcx + 8], al
movzx eax, byte [rbx + rcx]
mov byte [rcx + 9], al
movzx eax, byte [rcx + r9]
mov byte [rcx + 0xa], al
lea rcx, [rcx + 0xe]
mov rax, qword [rbp + 0x30]
movzx eax, byte [rax + rcx - 0xe]
mov byte [rcx - 3], al
mov rax, qword [rbp + 0x38]
movzx eax, byte [rax + rcx - 0xe]
mov byte [rcx - 2], al
cmp edx, 0xe
jb 0x140016a60
mov rdi, qword [rbp + 0x20]
xor ebx, ebx
mov r8, qword [rbp - 0x58]
mov edx, 0x288
add rdx, r8
cmp byte [rdx + 9], 0
jne 0x140016b11
nop dword [rax]
movsxd rcx, ebx
lea eax, [rbx + 0x7f]
inc ebx
xor byte [rcx + rdx + 0xa], al
cmp ebx, 0xe
jb 0x140016b00
mov byte [rdx + 9], 1
add rdx, 0xa
jmp 0x140016cb9
xor r8d, r8d
lea edx, [r8 + 1]
lea ecx, [rdx + 4]
call fcn.14000e3c0
test al, al
je 0x140016c8b
mov rcx, qword gs:[0x58]
mov eax, dword [0x14005fc10]
mov edx, 0x2a8
mov r8, qword [rcx + rax*8]
mov ecx, 0x2c0
mov qword [rbp + 0x28], r8
mov eax, dword [rcx + r8]
test al, 1
jne 0x140016c60
movups xmm0, xmmword [0x140047bc0]
or eax, 1
lea r9, [rbp - 0x46]
mov dword [rcx + r8], eax
lea r10, [rbp - 0x50]
xor ecx, ecx
mov eax, edx
add rax, r8
movaps xmmword [rbp - 0x50], xmm0
movsd xmm0, qword [0x140047bd0]
lea r11, [rbp - 0x4f]
mov edx, ebx
movsd qword [rbp - 0x40], xmm0
lea rsi, [rbp - 0x4e]
sub r9, rax
mov qword [rax], rbx
lea r14, [rbp - 0x4d]
mov word [rax + 8], bx
lea r15, [rbp - 0x4c]
mov qword [rax + 0xa], rcx
lea r12, [rbp - 0x4b]
mov word [rax + 0x12], cx
lea r13, [rbp - 0x4a]
lea rdi, [rbp - 0x49]
mov byte [rax + 0x14], cl
lea r8, [rbp - 0x48]
sub r10, rax
sub r11, rax
lea rbx, [rbp - 0x47]
sub rsi, rax
lea rcx, [rax + 0xb]
sub r14, rax
sub r15, rax
sub r12, rax
sub r13, rax
sub rdi, rax
sub r8, rax
sub rbx, rax
nop dword [rax]
movzx eax, byte [rcx + r9 - 0xb]
add edx, 0xb
mov byte [rcx - 1], al
movzx eax, byte [r10 + rcx]
mov byte [rcx], al
movzx eax, byte [r11 + rcx]
mov byte [rcx + 1], al
movzx eax, byte [rsi + rcx]
mov byte [rcx + 2], al
movzx eax, byte [r14 + rcx]
mov byte [rcx + 3], al
movzx eax, byte [r15 + rcx]
mov byte [rcx + 4], al
movzx eax, byte [r12 + rcx]
mov byte [rcx + 5], al
movzx eax, byte [rcx + r13]
mov byte [rcx + 6], al
movzx eax, byte [rdi + rcx]
mov byte [rcx + 7], al
movzx eax, byte [r8 + rcx]
mov byte [rcx + 8], al
movzx eax, byte [rbx + rcx]
mov byte [rcx + 9], al
lea rcx, [rcx + 0xb]
cmp edx, 0xb
jb 0x140016bf0
mov rdi, qword [rbp + 0x20]
xor ebx, ebx
mov r8, qword [rbp + 0x28]
mov edx, 0x2a8
add rdx, r8
cmp byte [rdx + 9], 0
jne 0x140016b11
nop dword [rax]
movsxd rcx, ebx
lea eax, [rbx + 0x7f]
inc ebx
xor byte [rcx + rdx + 0xa], al
cmp ebx, 0xb
jb 0x140016c70
mov byte [rdx + 9], 1
add rdx, 0xa
jmp 0x140016cb9
lea rcx, [rbp + 0x28]
call fcn.140007d10
cmp byte [rax + 9], bl
jne 0x140016cb1
nop dword [rax]
movsxd rdx, ebx
lea ecx, [rbx - 0x80]
inc ebx
xor byte [rdx + rax + 0xa], cl
cmp ebx, 0x18
jb 0x140016ca0
mov byte [rax + 9], 1
lea rdx, [rax + 0xa]
mov rcx, rdi
call fcn.140003320
mov r14, qword [rsp + 0x60]
mov rax, rdi
mov r13, qword [rsp + 0x68]
mov r12, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x78]
mov r15, qword [rsp + 0x58]
add rsp, 0x80
pop rdi
pop rbx
pop rbp
ret