Function at 0x180004a04
Capabilities:
Check for time delay via queryperformancecounter
Encode data using xor
Execute anti-debugging instructions
Hash data using murmur3

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xa8
mov rax, qword [0x18003e280]
xor rax, rsp
mov qword [rsp + 0xa0], rax
xor esi, esi
lea rdi, [0x18003f258]
mov rbp, qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea r13, [0x18002e300]
mov rcx, rdi
call rbp
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
rdtsc
mov r14, rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, r14d
rol ecx, 0xd
mov edx, ebx
rol edx, 0xf
imul r8d, eax, 0x7fed5213
mov r9d, esi
and r9d, 7
mov r9d, dword [r13 + r9*4]
imul r10d, r9d, 0x7ed55d16
xor edx, dword [0x18003f258]
xor edx, r8d
xor edx, ecx
xor edx, dword [0x18003f25c]
xor r10d, ebx
xor r10d, r14d
xor r10d, eax
xor r10d, edx
or r9d, 1
imul r9d, r10d
mov dword [rsp + rsi*4 + 0x34], r9d
inc rsi
cmp rsi, 0x13
jne 0x180004a40
lea rbx, [rsp + 0x34]
mov rcx, rbx
call fcn.18000b52c
mov edi, eax
lea r14, [0x18002ed8c]
xor eax, eax
mov qword [rsp + 0x28], rax
mov esi, dword [r13 + rax*4]
imul r12d, esi, 0x7ed55d16
xor r15d, r15d
mov rcx, rbx
call fcn.18000b52c
mov ecx, dword [r15 + r13]
imul edx, ecx, 0x7ed55d16
xor edx, eax
or ecx, 1
imul ecx, edx
mov dword [rsp + r15 + 0x80], ecx
add r15, 4
cmp r15, 0x20
jne 0x180004adc
or esi, 1
mov rcx, rbx
call fcn.18000b5ca
lea rcx, [0x18003f258]
call rbp
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebp, eax
rdtsc
mov r15, rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, r15d
rol ecx, 0xd
mov edx, ebp
rol edx, 0xf
imul r8d, eax, 0x7fed5213
xor edx, dword [0x18003f258]
xor edx, r8d
xor edx, ecx
xor edx, dword [0x18003f25c]
xor ebp, r15d
xor ebp, eax
xor ebp, edx
xor edx, edx
mov eax, edx
and eax, 7
mov eax, dword [r13 + rax*4]
mov ecx, eax
rol ebp, cl
mov ecx, eax
shr ecx, 8
ror eax, cl
xor eax, ebp
lea r8, [rdx + 1]
mov ecx, r8d
and ecx, 7
mov ecx, dword [r13 + rcx*4]
mov ebp, ecx
or ebp, 1
imul ebp, eax
rol ebp, cl
xor dword [rsp + rdx*4 + 0x34], ebp
mov rdx, r8
cmp r8, 0xe
jne case.default.0x180004bc0
xor edi, r12d
imul edi, esi
mov r15, 0xffffffffffffffee
xor eax, eax
mov eax, dword [r13 + rax*4]
mov ecx, eax
shr ecx, 0x18
and ecx, 7
movsxd rcx, dword [r14 + rcx*4]
add rcx, r14
xor esi, esi
xor r12d, r12d
jmp rcx
add r15, 3
add r12, 7
mov eax, dword [r13 + rsi*4]
mov ecx, eax
shr ecx, 0x18
and ecx, 7
movsxd rcx, dword [r14 + rcx*4]
add rcx, r14
jmp rcx
mov edx, dword [rsp + rsi*4 + 0x80]
mov ecx, eax
rol edx, cl
mov r8d, dword [rsp + rsi*4 + 0x34]
shr eax, 8
mov ecx, eax
ror r8d, cl
xor r8d, ebp
xor r8d, edx
mov ebp, r8d
jmp 0x180004ccb
mov eax, dword [rsp + rsi*4 + 0x84]
add eax, ebp
mov ecx, dword [r13 + rsi*4 + 8]
mov ebp, ecx
or ebp, 1
imul ebp, eax
rol ebp, cl
jmp 0x180004ccb
or eax, 1
imul eax, ebp
lea ecx, [r15 + 0x12]
mov edx, 0x2a9e1ca3
shr edx, cl
mov ecx, edx
rol eax, cl
mov ebp, eax
jmp 0x180004ccb
lea eax, [rsi + 4]
and eax, 7
mov ecx, dword [r13 + rax*4]
rol ebp, cl
lea eax, [rsi + 3]
and eax, 7
mov eax, dword [rsp + rax*4 + 0x80]
shr ecx, 8
ror eax, cl
jmp 0x180004c73
mov ecx, dword [rsp + r15*4 + 0x7c]
imul edx, eax, 0x7ed55d16
xor edx, ecx
or eax, 1
imul eax, edx
xor ebp, eax
jmp 0x180004ccb
lea ecx, [r12 - 0x13]
cmp rsi, 3
cmovb rcx, r12
mov ecx, ecx
mov edx, dword [rsp + rcx*4 + 0x34]
add edx, ebp
shr eax, 0x10
mov ecx, eax
ror edx, cl
jmp 0x180004cc9
mov eax, dword [rsp + rsi*4 + 0x80]
or eax, 1
lea ecx, [rsi + 5]
and ecx, 7
xor eax, dword [r13 + rcx*4]
imul ebp, eax
jmp 0x180004ccb
mov edx, dword [rsp + rsi*4 + 0x88]
xor edx, eax
or edx, 1
imul edx, ebp
mov ecx, dword [rsp + rsi*4 + 0x88]
xor ecx, eax
rol edx, cl
mov ebp, edx
test sil, 1
jne 0x180004cfb
inc rsi
cmp rsi, 6
jne 0x180004bc2
xor edi, ebp
mov rax, qword [rsp + 0x28]
inc rax
cmp rax, 7
mov rbp, qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
jne 0x180004ac8
jmp 0x180004d07
lea rcx, [rsp + 0x34]
call fcn.18000b5ca
jmp 0x180004cd1
xor edi, 0x2a9e1ca3
mov rcx, qword [rsp + 0xa0]
xor rcx, rsp
call fcn.18000f5a0
mov eax, edi
add rsp, 0xa8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x2c], r14d
xor r15d, r15d
mov rcx, rdi
call r12
mov r13, rbp
call rbp
mov ebp, eax
rdtsc
mov r14, rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, r14d
rol ecx, 0xd
mov edx, ebp
rol edx, 0xf
imul r8d, eax, 0x7fed5213
xor edx, dword [0x18003f258]
xor edx, r8d
xor edx, ecx
xor edx, dword [0x18003f25c]
xor ebp, r14d
xor ebp, eax
xor ebp, edx
xor edx, edx
mov ecx, dword [rsi + rdx*4]
mov r8d, ebp
rol r8d, cl
mov eax, dword [rsi + rdx*4 + 8]
mov ebp, dword [rsp + rdx*4 + 0x30]
shr ecx, 8
ror ebp, cl
xor ebp, r8d
mov r8d, eax
or r8d, 1
imul r8d, ebp
mov ecx, eax
rol r8d, cl
xor dword [rsp + rdx*4 + 0x34], r8d
inc rdx
cmp rdx, 4
jne 0x180005089
mov eax, dword [rsi + r15*4]
imul ecx, eax, 0x7ed55d16
xor ecx, ebp
or eax, 1
imul eax, ecx
mov dword [rsp + r15*4 + 0x90], eax
inc r15
cmp r15, 8
mov rbp, r13
jne 0x180005045
lea rcx, [rsp + 0x30]
call fcn.18000b692
mov rcx, rdi
call r12
call rbp
mov ebp, eax
rdtsc
mov r14, rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, r14d
rol ecx, 0xd
mov edx, ebp
rol edx, 0xf
imul r8d, eax, 0x7fed5213
xor edx, dword [0x18003f258]
xor edx, r8d
xor edx, ecx
xor edx, dword [0x18003f25c]
xor ebp, r14d
xor ebp, eax
xor ebp, edx
xor edx, edx
mov eax, edx
and eax, 7
mov eax, dword [rsi + rax*4]
mov ecx, eax
rol ebp, cl
mov ecx, eax
shr ecx, 8
ror eax, cl
xor eax, ebp
lea r8, [rdx + 1]
mov ecx, r8d
and ecx, 7
mov ecx, dword [rsi + rcx*4]
mov ebp, ecx
or ebp, 1
imul ebp, eax
rol ebp, cl
xor dword [rsp + rdx*4 + 0x30], ebp
mov rdx, r8
cmp r8, 0xf
jne 0x180005135
xor eax, eax
mov eax, dword [rsi + rax*4]
mov ecx, eax
shr ecx, 0x18
and ecx, 7
movsxd rcx, dword [rbx + rcx*4]
add rcx, rbx
xor r15d, r15d
xor r14d, r14d
xor r12d, r12d
in al, 0xff
invalid
in al, 0xff
loope 0x1800051d7
add r14, 3
add esi, 3
add r12, 7
mov eax, dword [rsi + r15*4]
mov ecx, eax
shr ecx, 0x18
and ecx, 7
movsxd rcx, dword [rbx + rcx*4]
add rcx, rbx
jmp rcx
add byte [rcx + 0x46c2d3c1], cl
mov eax, dword [rsp + rdi*4 + 0x30]
shr eax, 8
mov ecx, eax
ror r8d, cl
xor r8d, ebp
xor r8d, edx
mov ebp, r8d
jmp 0x180005292
add byte [rax], al
add byte [rax], al
mov eax, dword [rsp + r15*4 + 0x94]
add byte [rax], al
add eax, ebp
mov ecx, dword [rsi + r15*4 + 8]
mov ebp, ecx
or ebp, 1
imul ebp, eax
rol ebp, cl
jmp 0x180005292
jmp 0x180005292
add byte [rax], al
shr ecx, 8
ror eax, cl
jmp 0x180005238
xor ebp, eax
jmp 0x180005292
test r15b, 1
jne 0x1800052d2
inc r15
cmp r15, 5
jne 0x18000518d
mov r14d, dword [rsp + 0x2c]
xor r14d, ebp
lea rcx, [rsp + 0x30]
call fcn.18000b692
mov eax, dword [rsp + 0x28]
inc eax
cmp eax, 0xf
mov r12, qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rbp, r13
jne 0x180005039
jmp 0x1800052de
lea rcx, [rsp + 0x30]
call fcn.18000b692
jmp 0x180005298
xor r14d, 0x82f76a58
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.18000f5a0
mov eax, r14d
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret