Function at 0x180003a40
Capabilities:
Access peb ldr_data
Check for time delay via gettickcount
Encode data using xor
Get ntdll base address
Resolve function by parsing pe exports

Disassembly:
push rsi
sub rsp, 0x50
cmp dword [0x180031c30], 0
jne 0x180003c8f
mov rax, qword gs:[0x60]
xor edx, edx
mov rcx, qword [rax + 0x18]
mov r8, qword [rcx + 0x10]
mov rax, qword [r8 + 0x30]
test rax, rax
je 0x180003c9a
nop dword [rax]
nop word [rax + rax]
mov rsi, rax
movsxd rax, dword [rax + 0x3c]
mov ecx, dword [rax + rsi + 0x88]
test ecx, ecx
je 0x180003ab9
lea rdx, [rsi + rcx]
mov ecx, dword [rsi + rcx + 0xc]
mov eax, dword [rcx + rsi]
or eax, 0x20202020
cmp eax, 0x6c64746e
jne 0x180003ab9
mov eax, dword [rcx + rsi + 4]
or eax, 0x20202020
cmp eax, 0x6c642e6c
je 0x180003ac5
mov r8, qword [r8]
mov rax, qword [r8 + 0x30]
test rax, rax
jne 0x180003a80
test rdx, rdx
je 0x180003c9a
mov eax, dword [rdx + 0x1c]
mov ecx, dword [rdx + 0x20]
add rax, rsi
mov qword [rsp + 0x78], rbx
add rcx, rsi
mov qword [rsp + 0x48], rbp
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], r13
mov r13d, dword [rdx + 0x18]
mov qword [rsp + 0x68], rax
mov eax, dword [rdx + 0x24]
mov edx, 0x775a
add rax, rsi
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x60], rax
lea r14, [0x180031c30]
xor edi, edi
mov qword [rsp + 0x20], r15
mov qword [rsp + 0x70], rcx
nop dword [rax]
nop dword [rax + rax]
lea eax, [r13 - 1]
mov r15d, dword [rcx + rax*4]
mov r13d, eax
add r15, rsi
mov r12d, eax
cmp word [r15], dx
jne 0x180003bdb
xor r14d, r14d
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebp, 0xa5a7f756
call qword [sym.imp.KERNEL32.dll_GetTickCount]
cmp byte [r15], r14b
je 0x180003b96
mov rax, r15
nop word [rax + rax]
movzx ebx, word [rax]
inc r14d
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, ebp
ror ecx, 8
add ecx, ebx
xor ebp, ecx
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov eax, r14d
add rax, r15
cmp byte [rax], 0
jne 0x180003b70
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov rax, qword [rsp + 0x60]
lea rcx, [rdi*8]
mov rdx, qword [rsp + 0x68]
lea r14, [0x180031c30]
mov dword [rcx + r14 + 4], ebp
inc edi
movzx eax, word [rax + r12*2]
mov eax, dword [rdx + rax*4]
mov dword [rcx + r14 + 8], eax
cmp edi, 0x1f4
je 0x180003be4
mov rcx, qword [rsp + 0x70]
mov edx, 0x775a
test r13d, r13d
jne 0x180003b30
mov r15, qword [rsp + 0x20]
lea eax, [rdi - 1]
mov r13, qword [rsp + 0x30]
xor edx, edx
mov r12, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x48]
mov dword [0x180031c30], edi
test eax, eax
je 0x180003c80
nop word [rax + rax]
mov ecx, edi
xor eax, eax
sub ecx, edx
cmp ecx, 1
je 0x180003c77
nop dword [rax + rax]
mov ecx, eax
lea r8d, [rax + 1]
lea r9, [r8*8]
mov r11d, dword [r9 + r14 + 8]
lea r10, [rcx*8]
mov ebx, dword [r10 + r14 + 8]
cmp ebx, r11d
jbe 0x180003c69
mov ecx, dword [r10 + r14 + 4]
mov eax, dword [r9 + r14 + 4]
mov dword [r10 + r14 + 4], eax
mov dword [r9 + r14 + 4], ecx
mov dword [r10 + r14 + 8], r11d
mov dword [r9 + r14 + 8], ebx
mov edi, dword [0x180031c30]
mov ecx, edi
mov eax, r8d
sub ecx, edx
dec ecx
cmp r8d, ecx
jb 0x180003c20
inc edx
lea eax, [rdi - 1]
cmp edx, eax
jb 0x180003c10
mov rdi, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x78]
mov r14, qword [rsp + 0x28]
mov eax, 1
add rsp, 0x50
pop rsi
ret
xor eax, eax
add rsp, 0x50
pop rsi
ret