Function at 0x1400167cb
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x718
mov qword [rsp + 0x28], rcx
mov ecx, 0x14
mov ebp, 0x88888889
mov qword [rsp + 0x30], rdx
mov rbx, rdx
shr rbx, 0x20
jmp 0x140016859
mov rax, qword [rsp + 0x30]
xor edx, edx
div rsi
mov dword [rsp + rcx + 0x588], edx
imul eax, edi, 0x18d517
xor eax, 0x352e09df
mov dword [rsp + rcx + 0x58c], eax
imul r8d, eax, 0x18d517
xor r8d, 0x352e09df
mov rax, r8
imul rax, rbp
shr rax, 0x27
imul eax, eax, 0xf0
neg eax
add eax, r8d
add eax, 0x10
mov dword [rsp + rcx + 0x590], eax
add rcx, 0x18
cmp rcx, 0x194
je 0x1400168af
imul eax, r8d, 0x18d517
xor eax, 0x352e09df
mov rdx, rax
imul rdx, rbp
shr rdx, 0x27
imul edx, edx, 0xf0
neg edx
lea esi, [rax + rdx]
add esi, 0x10
mov dword [rsp + rcx + 0x580], esi
imul edi, eax, 0x18d517
xor edi, 0x352e09df
mov dword [rsp + rcx + 0x584], edi
test rbx, rbx
jne 0x1400167fb
mov rax, qword [rsp + 0x30]
xor edx, edx
div esi
jmp 0x140016805
mov rax, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x28]
add rax, rbp
add rax, 0xffffffffffffffff
mov qword [rsp + 0x40], rax
lea rax, [rbp - 1]
mov qword [rsp + 0x60], rax
lea rax, [rbp + 1]
mov qword [rsp + 0x38], rax
lea rax, [rbp + 3]
mov qword [rsp + 0x58], rax
mov ebx, 0xf
jmp 0x1400168fa
mov rbx, qword [rsp + 0x68]
sub rbx, 1
jb 0x14001708b
cmp qword [rsp + 0x40], rbp
jbe 0x14001692b
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
movzx edx, byte [rax - 1]
xor dl, byte [rcx]
mov byte [rax - 1], dl
xor dl, byte [rcx]
mov byte [rcx], dl
xor byte [rax - 1], dl
add rcx, 0xffffffffffffffff
lea rdx, [rax + 1]
cmp rax, rcx
mov rax, rdx
jb 0x14001690b
mov qword [rsp + 0x68], rbx
lea r8, [rbx + rbx*2]
mov eax, dword [rsp + r8*8 + 0x5a4]
add rax, qword [rsp + 0x60]
cmp rax, rbp
jbe 0x14001696b
mov rcx, qword [rsp + 0x38]
movzx edx, byte [rcx - 1]
xor dl, byte [rax]
mov byte [rcx - 1], dl
xor dl, byte [rax]
mov byte [rax], dl
xor byte [rcx - 1], dl
add rax, 0xffffffffffffffff
lea rdx, [rcx + 1]
cmp rcx, rax
mov rcx, rdx
jb 0x14001694b
mov edi, dword [rsp + r8*8 + 0x594]
test rdi, rdi
je 0x140016af5
lea rcx, [rdi - 1]
mov eax, edi
and eax, 7
cmp rcx, 7
jae 0x14001699b
xor ecx, ecx
jmp 0x140016a08
mov edx, edi
and edx, 0xfffffff8
xor ecx, ecx
nop word [rax + rax]
mov byte [rsp + rcx + 0x190], cl
lea ebp, [rcx + 1]
mov byte [rsp + rcx + 0x191], bpl
lea ebp, [rcx + 2]
mov byte [rsp + rcx + 0x192], bpl
lea ebp, [rcx + 3]
mov byte [rsp + rcx + 0x193], bpl
lea ebp, [rcx + 4]
mov byte [rsp + rcx + 0x194], bpl
lea ebp, [rcx + 5]
mov byte [rsp + rcx + 0x195], bpl
lea ebp, [rcx + 6]
mov byte [rsp + rcx + 0x196], bpl
lea ebp, [rcx + 7]
mov byte [rsp + rcx + 0x197], bpl
add rcx, 8
cmp rdx, rcx
jne 0x1400169ab
test rax, rax
je 0x140016a2c
nop word cs:[rax + rax]
nop dword [rax]
mov byte [rsp + rcx + 0x190], cl
add rcx, 1
add rax, 0xffffffffffffffff
jne 0x140016a1b
mov ecx, dword [rsp + r8*8 + 0x598]
cmp edi, 1
jne 0x140016a4b
xor ebp, ebp
jmp 0x140016ac4
mov esi, edi
and esi, 0xfffffffe
xor ebp, ebp
nop word [rax + rax]
imul ecx, ecx, 0x18d517
xor ecx, 0x352e09df
mov eax, ecx
xor edx, edx
div edi
movzx eax, byte [rsp + rbp + 0x190]
movzx ebx, byte [rsp + rdx + 0x190]
mov byte [rsp + rbp + 0x190], bl
mov byte [rsp + rdx + 0x190], al
imul ecx, ecx, 0x18d517
xor ecx, 0x352e09df
mov eax, ecx
xor edx, edx
div edi
movzx eax, byte [rsp + rbp + 0x191]
movzx ebx, byte [rsp + rdx + 0x190]
mov byte [rsp + rbp + 0x191], bl
mov byte [rsp + rdx + 0x190], al
add rbp, 2
cmp rsi, rbp
jne 0x140016a5b
test dil, 1
je 0x140016af5
imul eax, ecx, 0x18d517
xor eax, 0x352e09df
xor edx, edx
div edi
mov al, byte [rsp + rbp + 0x190]
mov cl, byte [rsp + rdx + 0x190]
mov byte [rsp + rbp + 0x190], cl
mov byte [rsp + rdx + 0x190], al
mov qword [rsp + 0x50], rdi
mov esi, dword [rsp + r8*8 + 0x59c]
test rsi, rsi
je 0x140016c85
lea rcx, [rsi - 1]
mov eax, esi
and eax, 7
cmp rcx, 7
jae 0x140016b2b
xor ecx, ecx
jmp 0x140016b98
mov edx, esi
and edx, 0xfffffff8
xor ecx, ecx
nop word [rax + rax]
mov byte [rsp + rcx + 0x90], cl
lea ebp, [rcx + 1]
mov byte [rsp + rcx + 0x91], bpl
lea ebp, [rcx + 2]
mov byte [rsp + rcx + 0x92], bpl
lea ebp, [rcx + 3]
mov byte [rsp + rcx + 0x93], bpl
lea ebp, [rcx + 4]
mov byte [rsp + rcx + 0x94], bpl
lea ebp, [rcx + 5]
mov byte [rsp + rcx + 0x95], bpl
lea ebp, [rcx + 6]
mov byte [rsp + rcx + 0x96], bpl
lea ebp, [rcx + 7]
mov byte [rsp + rcx + 0x97], bpl
add rcx, 8
cmp rdx, rcx
jne 0x140016b3b
test rax, rax
je 0x140016bbc
nop word cs:[rax + rax]
nop dword [rax]
mov byte [rsp + rcx + 0x90], cl
add rcx, 1
add rax, 0xffffffffffffffff
jne 0x140016bab
mov ecx, dword [rsp + r8*8 + 0x5a0]
cmp esi, 1
jne 0x140016bdb
xor ebp, ebp
jmp 0x140016c54
mov edi, esi
and edi, 0xfffffffe
xor ebp, ebp
nop word [rax + rax]
imul ecx, ecx, 0x18d517
xor ecx, 0x352e09df
mov eax, ecx
xor edx, edx
div esi
movzx eax, byte [rsp + rbp + 0x90]
movzx ebx, byte [rsp + rdx + 0x90]
mov byte [rsp + rbp + 0x90], bl
mov byte [rsp + rdx + 0x90], al
imul ecx, ecx, 0x18d517
xor ecx, 0x352e09df
mov eax, ecx
xor edx, edx
div esi
movzx eax, byte [rsp + rbp + 0x91]
movzx ebx, byte [rsp + rdx + 0x90]
mov byte [rsp + rbp + 0x91], bl
mov byte [rsp + rdx + 0x90], al
add rbp, 2
cmp rdi, rbp
jne 0x140016beb
test sil, 1
je 0x140016c85
imul eax, ecx, 0x18d517
xor eax, 0x352e09df
xor edx, edx
div esi
mov al, byte [rsp + rbp + 0x90]
mov cl, byte [rsp + rdx + 0x90]
mov byte [rsp + rbp + 0x90], cl
mov byte [rsp + rdx + 0x90], al
mov r8d, pe_nt_image_headers64
lea rcx, [rsp + 0x290]
xor edx, edx
mov qword [rsp + 0x48], rsi
call fcn.14001635b
mov r8d, pe_nt_image_headers64
lea rcx, [rsp + 0x490]
xor edx, edx
call fcn.14001635b
mov r8d, pe_nt_image_headers64
lea rcx, [rsp + 0x390]
xor edx, edx
call fcn.14001635b
mov r10, qword [rsp + 0x48]
mov r9, qword [rsp + 0x50]
test r9d, r9d
mov rdi, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x28]
je 0x140016d94
lea rcx, [r9 - 1]
mov eax, r9d
and eax, 3
cmp rcx, 3
jae 0x140016d0b
xor ecx, ecx
test rax, rax
jne 0x140016d7b
jmp 0x140016d94
mov edx, r9d
and edx, 0xfffffffc
xor ecx, ecx
nop dword [rax + rax]
movzx ebp, byte [rsp + rcx + 0x190]
mov byte [rsp + rbp + 0x490], cl
movzx ebp, byte [rsp + rcx + 0x191]
lea ebx, [rcx + 1]
mov byte [rsp + rbp + 0x490], bl
movzx ebp, byte [rsp + rcx + 0x192]
lea ebx, [rcx + 2]
mov byte [rsp + rbp + 0x490], bl
movzx ebp, byte [rsp + rcx + 0x193]
lea ebx, [rcx + 3]
mov byte [rsp + rbp + 0x490], bl
add rcx, 4
cmp rdx, rcx
jne 0x140016d1b
mov rbp, qword [rsp + 0x28]
test rax, rax
je 0x140016d94
nop dword [rax + rax]
movzx edx, byte [rsp + rcx + 0x190]
mov byte [rsp + rdx + 0x490], cl
add rcx, 1
add rax, 0xffffffffffffffff
jne 0x140016d7b
test r10d, r10d
je 0x140016e44
lea rcx, [r10 - 1]
mov eax, r10d
and eax, 3
cmp rcx, 3
jae 0x140016dbb
xor ecx, ecx
test rax, rax
jne 0x140016e2b
jmp 0x140016e44
mov edx, r10d
and edx, 0xfffffffc
xor ecx, ecx
nop dword [rax + rax]
movzx ebp, byte [rsp + rcx + 0x90]
mov byte [rsp + rbp + 0x390], cl
movzx ebp, byte [rsp + rcx + 0x91]
lea ebx, [rcx + 1]
mov byte [rsp + rbp + 0x390], bl
movzx ebp, byte [rsp + rcx + 0x92]
lea ebx, [rcx + 2]
mov byte [rsp + rbp + 0x390], bl
movzx ebp, byte [rsp + rcx + 0x93]
lea ebx, [rcx + 3]
mov byte [rsp + rbp + 0x390], bl
add rcx, 4
cmp rdx, rcx
jne 0x140016dcb
mov rbp, qword [rsp + 0x28]
test rax, rax
je 0x140016e44
nop dword [rax + rax]
movzx edx, byte [rsp + rcx + 0x90]
mov byte [rsp + rdx + 0x390], cl
add rcx, 1
add rax, 0xffffffffffffffff
jne 0x140016e2b
test rdi, rdi
je 0x1400168eb
lea rax, [r9 - 1]
mov qword [rsp + 0x88], rax
lea rax, [r10 - 1]
mov qword [rsp + 0x80], rax
mov r14d, r9d
and r14d, 3
mov eax, r9d
and eax, 0xfffffffc
mov qword [rsp + 0x78], rax
mov r13d, r10d
and r13d, 3
mov eax, r10d
and eax, 0xfffffffc
mov qword [rsp + 0x70], rax
mov r12, rbp
mov rsi, qword [rsp + 0x58]
xor r15d, r15d
jmp 0x140016ecb
mov rdi, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x28]
lea rdx, [rsp + 0x290]
call fcn.1400163eb
mov r10, qword [rsp + 0x48]
mov r9, qword [rsp + 0x50]
add rsi, r9
add r12, r9
cmp r15, rdi
jae 0x1400168eb
lea rcx, [r15 + rbp]
add r15, r9
cmp r15, rdi
jbe 0x140016efb
mov r8, r10
test r10d, r10d
je 0x140016ea5
cmp qword [rsp + 0x80], 3
jae 0x140016f1f
mov r9, rdi
mov rdi, rbp
xor eax, eax
jmp 0x140016f93
mov r8, r9
test r9d, r9d
je 0x140016ea5
cmp qword [rsp + 0x88], 3
jae 0x140016fdc
mov r10, rdi
mov rdi, rbp
xor eax, eax
jmp 0x140017043
mov r9, rdi
mov rdi, rbp
xor eax, eax
mov rbp, qword [rsp + 0x70]
nop word cs:[rax + rax]
nop dword [rax + rax]
movzx edx, byte [rsp + rax + 0x390]
movzx ebx, byte [rsi + rax - 3]
mov byte [rsp + rdx + 0x290], bl
movzx edx, byte [rsp + rax + 0x391]
movzx ebx, byte [rsi + rax - 2]
mov byte [rsp + rdx + 0x290], bl
movzx edx, byte [rsp + rax + 0x392]
movzx ebx, byte [rsi + rax - 1]
mov byte [rsp + rdx + 0x290], bl
movzx edx, byte [rsp + rax + 0x393]
movzx ebx, byte [rsi + rax]
mov byte [rsp + rdx + 0x290], bl
add rax, 4
cmp rbp, rax
jne 0x140016f3b
mov r8, r10
test r13, r13
mov rbp, rdi
mov rdi, r9
je 0x140016ea5
lea rbp, [r12 + rax]
add rax, rsp
add rax, 0x390
xor ebx, ebx
nop dword [rax]
movzx edi, byte [rax + rbx]
movzx edx, byte [rbp + rbx]
mov byte [rsp + rdi + 0x290], dl
add rbx, 1
cmp r13, rbx
jne 0x140016fbb
mov r8, r10
jmp 0x140016e9b
mov r10, rdi
mov rdi, rbp
xor eax, eax
mov rbp, qword [rsp + 0x78]
nop
movzx edx, byte [rsp + rax + 0x490]
movzx ebx, byte [rsi + rax - 3]
mov byte [rsp + rdx + 0x290], bl
movzx edx, byte [rsp + rax + 0x491]
movzx ebx, byte [rsi + rax - 2]
mov byte [rsp + rdx + 0x290], bl
movzx edx, byte [rsp + rax + 0x492]
movzx ebx, byte [rsi + rax - 1]
mov byte [rsp + rdx + 0x290], bl
movzx edx, byte [rsp + rax + 0x493]
movzx ebx, byte [rsi + rax]
mov byte [rsp + rdx + 0x290], bl
add rax, 4
cmp rbp, rax
jne 0x140016feb
mov r8, r9
test r14, r14
mov rbp, rdi
mov rdi, r10
je 0x140016ea5
lea rdi, [r12 + rax]
add rax, rsp
add rax, 0x490
xor ebx, ebx
nop dword [rax]
movzx ebp, byte [rax + rbx]
movzx edx, byte [rdi + rbx]
mov byte [rsp + rbp + 0x290], dl
add rbx, 1
cmp r14, rbx
jne 0x14001706b
mov r8, r9
jmp 0x140016e9b
add rsp, 0x718
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret