Function at 0x14016f690
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
test ecx, ecx
je 0x14016f6fe
test edx, edx
je 0x14016f759
movzx eax, byte [0x140569c52]
cmp al, 0x9a
je 0x14016fc2f
lea rsi, [rsp + 0x30]
lea rdi, [rsp + 0x2d]
nop word cs:[rax + rax]
mov rcx, rsi
mov rdx, rdi
mov r8d, 0xdc26137e
mov r9d, 0xa2ea97a7
call fcn.140171330
cmp byte [rsp + 0x31], 0
jne 0x14016f829
cmp byte [rsp + 0x2d], 0x9a
jne 0x14016f6d0
jmp 0x14016fc2f
xor eax, eax
test al, al
nop word cs:[rax + rax]
xor eax, eax
test al, al
jne 0x14016f710
test edx, edx
je 0x14016f7ff
mov edx, dword [0x14056a280]
lea ecx, [rdx + 0x144616ba]
add edx, 0x54095873
call fcn.140171220
test al, 1
jne 0x14016fae5
mov cl, 0xd
nop
mov al, 0x23
lock cmpxchg byte [0x140569bd9], cl
je 0x14016f838
cmp al, 0x9a
jne 0x14016f740
jmp 0x14016fae5
movzx eax, byte [0x140569c05]
cmp al, 0xe0
je 0x14016fc10
mov cl, 0x23
xor edx, edx
lea rax, [fcn.14016f690]
lea r8d, [rax + rax]
add r8d, 0x3980
mov r9d, r8d
not r9d
add eax, eax
add eax, 0x3981
mov r10d, r9d
neg r10d
xor r8d, 0xfffffffe
or r8d, r10d
not r8d
or r8d, eax
mov r10d, r8d
not r10d
and r8d, eax
and eax, r10d
and r10d, r9d
or r8d, r10d
or r8d, eax
jmp 0x14016f7c8
cmp al, 0xe0
je 0x14016fc10
mov al, 0xfd
lock cmpxchg byte [0x140569c05], cl
je 0x14016f87f
test dl, dl
jne 0x14016f7f0
nop dword [rax]
cmp r8d, 0xffffffff
je 0x14016f7c0
nop word cs:[rax + rax]
mov r9d, dword [0x1405d0b1c]
cmp r9d, 0x46
jge 0x14016f7f0
jmp 0x14016f7e0
movzx eax, byte [0x140569a1c]
cmp al, 0xb5
je 0x14016fa96
mov cl, 0xe1
mov al, 0x75
lock cmpxchg byte [0x140569a1c], cl
je 0x14016f8b6
cmp al, 0xb5
jne 0x14016f810
jmp 0x14016fa96
xor eax, eax
test al, al
jne 0x14016fc50
jmp 0x14016fc3b
xor eax, eax
lea rcx, [0x140569bd0]
lea rdx, [0x14048dfc0]
nop dword [rax + rax]
movzx r8d, byte [rax + rcx]
movzx r9d, byte [rax + rdx]
not r8b
mov r10d, r8d
and r10b, r9b
or r8b, r9b
not r8b
or r8b, r10b
mov byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 8
jg 0x14016f8a7
inc rax
jmp 0x14016f850
mov ecx, dword [0x1405d0b18]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, 0xeb429f4
add ecx, dword [0x14056a280]
xor edx, edx
div ecx
test edx, edx
jne 0x14016fb00
jmp 0x14016faee
mov al, 1
test al, al
je 0x14016fad0
jmp 0x14016faae
xor r15d, r15d
lea r13, [0x1405699f0]
lea r12, [0x14048ddf0]
lea rsi, [rsp + 0x2e]
lea rdi, [rsp + 0x2f]
jmp 0x14016f8f4
add r15d, r14d
add r15d, 0xeb429f3
cmp r15d, 0x2c
jge 0x14016fa60
mov ecx, dword [0x14056a280]
mov eax, 0xe467752a
add ecx, eax
mov edx, ecx
call fcn.14008ade0
mov ecx, dword [0x1405d0b18]
lea eax, [rcx + 0x4cc4e4de]
mov edx, eax
xor edx, 0xee9f206a
and eax, 0x6e9f206a
lea edx, [rdx + rax*2]
sub edx, dword [0x14056a280]
add edx, 0xb5e7d0c5
mov r8d, 0x1ed7cbe
mov r9d, 0x5a8d2196
call fcn.140147610
movsxd rbx, r15d
test al, 1
je 0x14016f9b0
nop dword [rax + rax]
movzx eax, byte [rbx + r13]
movzx ecx, byte [rbx + r12]
mov edx, eax
not dl
mov r8d, edx
and r8b, cl
mov r9d, eax
xor al, cl
not cl
and r9b, cl
or r9b, r8b
and cl, dl
or cl, al
not cl
add cl, cl
add cl, r9b
mov byte [rbx + r13], cl
mov r14d, dword [0x14056a280]
mov ecx, dword [0x1405d0b18]
lea edx, [rcx - 1]
mov r8d, 0x29c1848
mov r9d, 0x2e3f19fc
call fcn.140171300
test al, 1
jne 0x14016f8e0
nop dword [rax]
movzx eax, byte [rbx + r13]
xor edx, edx
sub dl, al
mov eax, edx
xor al, 0xe1
and dl, 0x61
add dl, dl
add dl, al
mov cl, 0xe1
sub cl, dl
add dl, byte [rbx + r12]
mov eax, ecx
not al
add al, dl
add al, 0x20
mul cl
mov ebp, eax
shl al, cl
mov edx, ebp
mov ecx, eax
shl dl, cl
sub dl, bpl
mov dword [rsp + 0x20], 0xb471da73
mov ecx, ebp
mov r8, rsi
mov r9d, 0xc54146a0
call fcn.140170440
movzx r14d, byte [rsp + 0x2e]
mov ecx, ebp
mov rdx, rdi
mov r8d, 0x5a8d2196
mov r9d, 0xd6dcd0ae
call fcn.140147020
add r14b, byte [rsp + 0x2f]
add r14b, bpl
mov rcx, rbx
mov edx, r14d
mov r8d, 0xcf25764c
mov r9d, 0x52f875bd
call fcn.1401714e0
mov eax, dword [0x1405d0b18]
mov ecx, 0xd7fd9780
sub ecx, eax
not ecx
add ecx, 0xd7fd9780
imul ecx, eax
test cl, 1
jne 0x14016f9b0
jmp 0x14016f950
mov eax, dword [0x1405d0b18]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x14016fa7c
mov eax, dword [0x1405d0b1c]
cmp eax, 0x29
jge 0x14016fa60
mov eax, dword [0x1405d0b1c]
cmp eax, 0x17
jg 0x14016fa71
mov ecx, 0xaace0d67
mov edx, 0x57bb328d
call fcn.140171350
lea rax, [0x1405699f0]
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [0x1405d0b1c]
mov ecx, 0xeb42a2e
add ecx, dword [0x14056a280]
cmp eax, ecx
jl 0x14016fadd
nop word cs:[rax + rax]
mov eax, dword [0x1405d0b1c]
cmp eax, 0x57
jge 0x14016fad0
jmp 0x14016faae
mov al, 0x9a
xchg byte [0x140569bd9], al
lea rax, [0x140569bd0]
jmp 0x14016fa9d
mov eax, dword [0x1405d0b1c]
cmp eax, 0x2c
jl 0x14016fb2b
nop dword [rax]
mov eax, dword [0x14056a280]
mov ecx, eax
not ecx
mov edx, eax
xor edx, 0xf14bd60d
and ecx, 0xeb429f2
or edx, ecx
not edx
or edx, ecx
and eax, 0xeb429f2
add eax, eax
add eax, edx
jne 0x14016fb00
jmp 0x14016faee
xor esi, esi
lea rdi, [rsp + 0x2b]
lea rbx, [rsp + 0x2c]
lea r14, [rsp + 0x40]
lea r15, [0x140569bf0]
nop word cs:[rax + rax]
mov eax, dword [0x14056a280]
lea r9d, [rax - 0x7d08efa]
add eax, 0x4f50cd07
mov dword [rsp + 0x20], eax
mov ecx, esi
mov rdx, rdi
mov r8, rbx
call fcn.140170420
movzx ebp, byte [rsp + 0x2c]
add bpl, byte [rsp + 0x2b]
mov r9d, dword [0x14056a280]
mov eax, r9d
xor eax, 0x255520d0
mov ecx, r9d
and ecx, 0x255520d0
lea r8d, [rax + rcx*2]
add r9d, 0x2924c6e
mov ecx, esi
mov rdx, r14
call fcn.140152500
mov rax, qword [rsp + 0x40]
mov byte [rax + r15], bpl
mov eax, esi
xor eax, 1
and esi, 1
lea esi, [rax + rsi*2]
cmp esi, 0x15
jl 0x14016fb50
mov al, 1
test al, al
je 0x14016fbf9
movzx eax, byte [0x14056a284]
add al, 0xa4
xchg byte [0x140569c05], al
mov eax, dword [0x1405d0b1c]
mov ecx, dword [0x14056a280]
mov edx, ecx
xor edx, 0xeb42a42
and ecx, 0xeb42a42
lea ecx, [rdx + rcx*2]
cmp eax, ecx
jl 0x14016fc10
mov al, pe_nt_image_headers64
xchg byte [0x140569c05], al
jmp 0x14016fbc9
mov ecx, 0xcd5e452a
mov edx, 0x8a3aeb35
call fcn.1401700d0
test al, 1
je 0x14016fc10
lea rax, [0x140569bf0]
jmp 0x14016fa9d
lea rax, [0x140569c40]
jmp 0x14016fa9d
mov eax, dword [0x1405d0b1c]
cmp eax, 0x3c
jl 0x14016fc5d
nop word cs:[rax + rax]
mov eax, dword [0x1405d0b1c]
cmp eax, 0x1c
jge 0x14016fc50
jmp 0x14016fc3b
xor eax, eax
lea rcx, [0x140569c40]
lea rdx, [0x14048e030]
mov r8d, 0xeb42a04
nop word cs:[rax + rax]
movzx r9d, byte [rax + rdx]
add byte [rax + rcx], r9b
lea r9d, [rax + 1]
mov r10d, dword [0x14056a280]
add r10d, r8d
cmp r9d, r10d
jge 0x14016fca1
inc rax
jmp 0x14016fc80
mov edx, dword [0x14056a280]
lea ecx, [rdx - 0x251cded3]
add edx, 0xce9d4bf8
call fcn.1401711e0
jmp 0x14016fc2f