Function at 0x180029000
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 [0x18008687c], 0x2284
call fcn.180034088
xor ebp, ebp
lea r15, [rsp + 0x48]
mov r14d, ebp
mov qword [rsp + 0xb0], 4
lea rdi, [0x180081030]
mov r13, rax
nop dword [rax]
lea rcx, [rsp + 0xb8]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x180029092
call fcn.1800356a0
add eax, dword [rsp + 0xb8]
mov ecx, eax
jmp 0x1800290a2
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800356a0
lea ecx, [rax + rbx]
call fcn.180035688
mov ebx, 0xa
nop dword [rax]
call fcn.1800356a0
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 0x1800290b0
cmp r11d, 0x1e
jge 0x18002916a
lea rcx, [rsp + 0xc0]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x180029102
call fcn.1800356a0
add eax, dword [rsp + 0xc0]
mov ecx, eax
jmp 0x180029112
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800356a0
lea ecx, [rax + rbx]
call fcn.180035688
mov ebx, 0xa
nop dword [rax]
call fcn.1800356a0
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 0x180029120
movsxd rax, ebp
test r11d, r11d
jle 0x180029268
lea rcx, [rax + r13]
mov r8d, r11d
mov dl, 0x90
mov ebx, r11d
call fcn.180035fe0
add ebp, ebx
jmp 0x180029268
lea rcx, [rsp + 0xc8]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x18002918c
call fcn.1800356a0
add eax, dword [rsp + 0xc8]
mov ecx, eax
jmp 0x18002919c
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800356a0
lea ecx, [rax + rbx]
call fcn.180035688
mov ebx, 0xa
call fcn.1800356a0
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 0x1800291a6
mov byte [rbp + r13], 0xeb
mov byte [rbp + r13 + 1], r11b
add ebp, 2
movsxd rax, ebp
test r11d, r11d
je 0x180029268
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 0x18002920e
call fcn.1800356a0
add eax, dword [rsp + 0x20]
mov ecx, eax
jmp 0x18002921e
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800356a0
lea ecx, [rax + rbx]
call fcn.180035688
mov ebx, 0xa
call fcn.1800356a0
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 0x180029228
mov byte [rdi], r11b
inc rdi
sub rsi, 1
jne 0x1800291f2
lea rdi, [0x180081030]
mov r12d, dword [r15]
mov edx, r14d
mov ecx, ebp
mov r8, r12
add rdx, rdi
add rcx, r13
call fcn.18003b330
lea rcx, [rsp + 0x28]
add ebp, r12d
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x18002929d
call fcn.1800356a0
add eax, dword [rsp + 0x28]
mov ecx, eax
jmp 0x1800292ad
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800356a0
lea ecx, [rax + rbx]
call fcn.180035688
mov ebx, 0xa
call fcn.1800356a0
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 0x1800292b7
cmp r11d, 0x3c
jge 0x180029356
lea rcx, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x1800292ff
call fcn.1800356a0
add eax, dword [rsp + 0x30]
mov ecx, eax
jmp 0x18002930f
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800356a0
lea ecx, [rax + rbx]
call fcn.180035688
mov ebx, 0xa
nop dword [rax]
call fcn.1800356a0
cdq
and eax, 1
xor eax, edx
sub eax, edx
inc eax
sub rbx, 1
jne 0x180029320
movsxd rcx, ebp
test eax, eax
jle 0x180029456
add rcx, r13
mov r8d, eax
mov dl, 0x90
mov ebx, eax
call fcn.180035fe0
add ebp, ebx
jmp 0x180029456
lea rcx, [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x180029372
call fcn.1800356a0
add eax, dword [rsp + 0x38]
mov ecx, eax
jmp 0x180029382
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800356a0
lea ecx, [rax + rbx]
call fcn.180035688
mov ebx, 0xa
nop dword [rax]
call fcn.1800356a0
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 0x180029390
mov byte [rbp + r13], 0xeb
mov byte [rbp + r13 + 1], r11b
add ebp, 2
movsxd rax, ebp
test r11d, r11d
je 0x180029456
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 0x1800293fc
call fcn.1800356a0
add eax, dword [rsp + 0x40]
mov ecx, eax
jmp 0x18002940c
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call fcn.1800356a0
lea ecx, [rax + rbx]
call fcn.180035688
mov ebx, 0xa
call fcn.1800356a0
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 0x180029416
mov byte [rdi], r11b
inc rdi
sub rsi, 1
jne 0x1800293e0
lea rdi, [0x180081030]
add r14d, r12d
add r15, 4
sub qword [rsp + 0xb0], 1
jne 0x180029070
mov edx, dword [0x18008687c]
mov eax, r14d
mov r9d, 0x1e9c
mov ecx, ebp
lea r8, [r14 + rdi]
sub edx, ebp
sub r9, rax
add rcx, r13
call fcn.180034594
mov rax, r13
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret