Function at 0x180002170
Capabilities:
Check for time delay via queryperformancecounter
Encode data using xor

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov ecx, 0x2284
mov dword [rsp + 0x48], 1
mov dword [rsp + 0x4c], 2
mov dword [rsp + 0x50], 3
mov dword [rsp + 0x54], 1
mov dword [0x18001c1f4], 0x2284
call fcn.180003400
xor ebp, ebp
lea r15, [rsp + 0x48]
mov r14d, ebp
mov qword [rsp + 0xb0], 4
lea rdi, [0x1800165c0]
mov r13, rax
nop dword [rax]
lea rcx, [rsp + 0xb8]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x180002202
call fcn.1800036cc
add eax, dword [rsp + 0xb8]
mov ecx, eax
jmp 0x180002212
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800036cc
lea ecx, [rax + rbx]
call fcn.1800036b4
mov ebx, 0xa
nop dword [rax]
call fcn.1800036cc
mov r11d, eax
mov eax, 0x288df0cb
imul r11d
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
imul edx, edx, 0x65
sub r11d, edx
sub rbx, 1
jne 0x180002220
cmp r11d, 0x1e
jge 0x1800022da
lea rcx, [rsp + 0xc0]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x180002272
call fcn.1800036cc
add eax, dword [rsp + 0xc0]
mov ecx, eax
jmp 0x180002282
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800036cc
lea ecx, [rax + rbx]
call fcn.1800036b4
mov ebx, 0xa
nop dword [rax]
call fcn.1800036cc
mov r11d, eax
mov eax, 0x55555556
imul r11d
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*2]
sub r11d, ecx
inc r11d
sub rbx, 1
jne 0x180002290
movsxd rax, ebp
test r11d, r11d
jle 0x1800023d8
lea rcx, [rax + r13]
mov r8d, r11d
mov dl, 0x90
mov ebx, r11d
call fcn.180003df0
add ebp, ebx
jmp 0x1800023d8
lea rcx, [rsp + 0xc8]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x1800022fc
call fcn.1800036cc
add eax, dword [rsp + 0xc8]
mov ecx, eax
jmp 0x18000230c
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800036cc
lea ecx, [rax + rbx]
call fcn.1800036b4
mov ebx, 0xa
call fcn.1800036cc
mov r11d, eax
mov eax, 0x66666667
imul r11d
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*4]
sub r11d, ecx
inc r11d
sub rbx, 1
jne 0x180002316
mov byte [rbp + r13], 0xeb
mov byte [rbp + r13 + 1], r11b
add ebp, 2
movsxd rax, ebp
test r11d, r11d
je 0x1800023d8
lea rdi, [rax + r13]
mov esi, r11d
add ebp, r11d
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x18000237e
call fcn.1800036cc
add eax, dword [rsp + 0x20]
mov ecx, eax
jmp 0x18000238e
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800036cc
lea ecx, [rax + rbx]
call fcn.1800036b4
mov ebx, 0xa
call fcn.1800036cc
mov r11d, eax
mov eax, 0x38e38e39
imul r11d
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*8]
shl ecx, 4
sub r11d, ecx
add r11d, 0x70
sub rbx, 1
jne 0x180002398
mov byte [rdi], r11b
inc rdi
sub rsi, 1
jne 0x180002362
lea rdi, [0x1800165c0]
mov r12d, dword [r15]
mov edx, r14d
mov ecx, ebp
mov r8, r12
add rdx, rdi
add rcx, r13
call fcn.180004e00
lea rcx, [rsp + 0x28]
add ebp, r12d
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x18000240d
call fcn.1800036cc
add eax, dword [rsp + 0x28]
mov ecx, eax
jmp 0x18000241d
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800036cc
lea ecx, [rax + rbx]
call fcn.1800036b4
mov ebx, 0xa
call fcn.1800036cc
mov r11d, eax
mov eax, 0x288df0cb
imul r11d
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
imul edx, edx, 0x65
sub r11d, edx
sub rbx, 1
jne 0x180002427
cmp r11d, 0x3c
jge 0x1800024c6
lea rcx, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x18000246f
call fcn.1800036cc
add eax, dword [rsp + 0x30]
mov ecx, eax
jmp 0x18000247f
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800036cc
lea ecx, [rax + rbx]
call fcn.1800036b4
mov ebx, 0xa
nop dword [rax]
call fcn.1800036cc
cdq
and eax, 1
xor eax, edx
sub eax, edx
inc eax
sub rbx, 1
jne 0x180002490
movsxd rcx, ebp
test eax, eax
jle 0x1800025c6
add rcx, r13
mov r8d, eax
mov dl, 0x90
mov ebx, eax
call fcn.180003df0
add ebp, ebx
jmp 0x1800025c6
lea rcx, [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x1800024e2
call fcn.1800036cc
add eax, dword [rsp + 0x38]
mov ecx, eax
jmp 0x1800024f2
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800036cc
lea ecx, [rax + rbx]
call fcn.1800036b4
mov ebx, 0xa
nop dword [rax]
call fcn.1800036cc
mov r11d, eax
mov eax, 0x66666667
imul r11d
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*4]
sub r11d, ecx
inc r11d
sub rbx, 1
jne 0x180002500
mov byte [rbp + r13], 0xeb
mov byte [rbp + r13 + 1], r11b
add ebp, 2
movsxd rax, ebp
test r11d, r11d
je 0x1800025c6
lea rdi, [rax + r13]
mov esi, r11d
add ebp, r11d
nop dword [rax]
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x18000256c
call fcn.1800036cc
add eax, dword [rsp + 0x40]
mov ecx, eax
jmp 0x18000257c
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800036cc
lea ecx, [rax + rbx]
call fcn.1800036b4
mov ebx, 0xa
call fcn.1800036cc
mov r11d, eax
mov eax, 0x38e38e39
imul r11d
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*8]
shl ecx, 4
sub r11d, ecx
add r11d, 0x70
sub rbx, 1
jne 0x180002586
mov byte [rdi], r11b
inc rdi
sub rsi, 1
jne 0x180002550
lea rdi, [0x1800165c0]
add r14d, r12d
add r15, 4
sub qword [rsp + 0xb0], 1
jne 0x1800021e0
mov edx, dword [0x18001c1f4]
mov eax, r14d
mov r9d, 0x1e9c
mov ecx, ebp
lea r8, [r14 + rdi]
sub edx, ebp
sub r9, rax
add rcx, r13
call fcn.180003440
mov rax, r13
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret