Function at 0x180016c4c
Capabilities:
Generate random numbers via winapi
Resolve function by parsing pe exports

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov rax, qword [0x180066008]
xor rax, rsp
mov qword [rsp + 0x40], rax
mov r13, rcx
mov rsi, rdx
lea rcx, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessorNumberEx]
movzx ecx, word [rsp + 0x30]
xor r12d, r12d
mov rax, qword [0x180067c60]
xor edx, edx
movzx edi, byte [rsp + 0x32]
add edi, dword [rax + rcx*4]
movzx ecx, word [0x180067d6e]
test rsi, rsi
je 0x1800171b6
movzx eax, word [rsi + 0x1a]
div ecx
mov ebp, edx
mov r14d, 2
lea rdx, [rsp + 0x34]
mov r9d, r14d
mov r8d, r14d
xor ecx, ecx
call qword [sym.imp.bcrypt.dll_BCryptGenRandom]
movzx ebx, word [0x180067d70]
lea rcx, [rdi + rdi*2]
not bx
shl rcx, 7
and bx, word [rsp + 0x34]
add rcx, qword [0x180067dc8]
or bx, bp
call fcn.180015e50
mov rdi, rax
test rax, rax
je 0x18003d278
xor edx, edx
mov r8d, 0xbd8
mov rcx, rax
call fcn.180029d60
lea ebp, [r14 - 1]
xor ecx, ecx
mov edx, ebp
call fcn.180015470
mov edx, ebp
lea ecx, [rbp + 3]
call fcn.180015470
mov eax, ebp
lock xadd qword [0x180067d78], rax
mov qword [rdi + 0xae0], rax
test byte [0x180067c71], 0x20
jne 0x18003d29c
and byte [rdi + 0xe3], 0xfd
mov rax, rsi
or byte [rdi + 0xe0], bpl
neg rax
mov dword [rdi + 0xd8], ebp
mov word [rdi + 0xf2], bx
sbb cl, cl
and cl, r14b
or byte [rdi + 0xe3], cl
lea rcx, [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x38]
lea rbx, [rdi + 0x58]
mov ecx, dword [rsp + 0x38]
xor edx, edx
shr rax, 0x20
mov r15d, 3
imul rax, rax, 0xf4240
div qword [0x180067c48]
mov r9, rax
shl rdx, 0x20
imul rax, rcx, 0xf4240
shl r9, 0x20
lea rcx, [rdi + 0x3f8]
add rax, rdx
xor edx, edx
div qword [0x180067c48]
mov byte [rdi + 0xf5], 4
mov word [rdi + 0xfa], 0x208
add rax, r9
mov qword [rdi + 0xaf0], rax
lea rax, [rdi + 0x3e8]
mov qword [rdi + 0x3f0], rax
mov byte [rdi + 0xfc], r14b
mov qword [rdi + 0x540], r15
movups xmm0, xmmword [0x180067c98]
movups xmmword [rbx], xmm0
movups xmm1, xmmword [0x180067ca8]
movups xmmword [rbx + 0x10], xmm1
movups xmm0, xmmword [0x180067cb8]
movups xmmword [rbx + 0x20], xmm0
movups xmm1, xmmword [0x180067cc8]
movups xmmword [rbx + 0x30], xmm1
movups xmm0, xmmword [0x180067cd8]
movups xmmword [rbx + 0x40], xmm0
movups xmm1, xmmword [0x180067ce8]
movups xmmword [rbx + 0x50], xmm1
movups xmm0, xmmword [0x180067cf8]
movups xmmword [rbx + 0x60], xmm0
movups xmm1, xmmword [0x180067d08]
movups xmmword [rbx + 0x70], xmm1
mov qword [rbx], r12
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rax, [rdi + 0x6e8]
mov qword [rdi + 0xa78], 0x20000
lea r14, [rdi + 0x368]
mov qword [rax + 8], rax
mov qword [rax], rax
lea rcx, [rdi + 0x428]
mov qword [r14 + 8], r14
mov qword [r14], r14
mov byte [rdi + 0x420], r12b
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rax, [rdi + 0x450]
mov rdx, rbx
mov qword [rax + 8], rax
lea rcx, [rdi + 0x6f8]
mov qword [rax], rax
lea rax, [rdi + 0xa48]
mov qword [rax + 8], rax
mov qword [rax], rax
mov eax, dword [rdi + 0x88]
mov qword [rdi + 0xa20], rax
call fcn.180005460
lea rax, [rdi + 0x770]
mov dword [rdi + 0x750], r12d
mov qword [rax], r12
mov qword [rdi + 0x778], rax
lea rax, [rdi + 0x788]
mov qword [rax], r12
mov qword [rdi + 0x790], rax
lea rcx, [rdi + 0xa80]
mov word [rdi + 0x798], r12w
or byte [rcx + 0x4a], bpl
mov eax, 0xffff
mov word [rcx + 0x48], ax
mov qword [rcx + 8], rcx
mov qword [rcx + 0x10], rcx
add rcx, 0x20
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rdx, [rdi + 0x5e8]
mov ecx, 0x1000
call fcn.1800171e0
mov ebx, r12d
mov eax, ebx
mov edx, ebx
add rax, 0xf4
mov rcx, rdi
lea r8, [rdi + rax*8]
call fcn.180016b68
test eax, eax
js 0x1800171ca
add ebx, ebp
cmp ebx, r15d
jb 0x180016f39
lea rbx, [rdi + 0x120]
mov rcx, rdi
mov rdx, rbx
call fcn.180025aac
or byte [rbx + 1], bpl
lea rcx, [rdi + 0x388]
mov byte [rdi + 0xf6], bpl
mov eax, r12d
or qword [rcx], 0xffffffffffffffff
mov dword [rcx - 8], eax
lea rcx, [rcx + 0x10]
add eax, ebp
cmp eax, 6
jb 0x180016f85
test rsi, rsi
je 0x1800170e5
mov dword [rdi], 4
cmp word [0x180067cf2], bp
je 0x18003d2c0
mov rax, qword [rsi + 0x30]
mov ecx, dword [rax + 1]
mov dword [rdi + 0xaec], ecx
mov rcx, rdi
call fcn.18000330c
mov rax, qword [rsi + 8]
lea rcx, [rbx + 0x20]
movups xmm0, xmmword [rax + 0x1c]
movups xmmword [rcx], xmm0
movsd xmm1, qword [rax + 0x2c]
movsd qword [rcx + 0x10], xmm1
mov eax, dword [rax + 0x34]
mov dword [rcx + 0x18], eax
or byte [rdi + 0xe2], 8
test byte [0x180067c71], 0x20
jne 0x18003d2fa
mov rax, qword [rsi + 8]
lea rcx, [rbx + 0x3c]
movups xmm0, xmmword [rax]
movups xmmword [rcx], xmm0
movsd xmm1, qword [rax + 0x10]
movsd qword [rcx + 0x10], xmm1
mov eax, dword [rax + 0x18]
mov dword [rcx + 0x18], eax
or byte [rdi + 0xe2], 0x10
test byte [0x180067c71], 0x20
jne 0x18003d317
mov rdx, qword [rsi + 0x40]
mov cl, byte [rsi + 0x4f]
call fcn.180024108
mov qword [rbx + 0x58], rax
test rax, rax
je 0x1800171ca
or byte [rax + 0x20], 8
mov rcx, qword [rbx + 0x58]
mov rax, qword [r14 + 8]
mov qword [rcx], r14
mov qword [rcx + 8], rax
mov qword [rax], rcx
mov qword [r14 + 8], rcx
test byte [0x180067c72], bpl
jne 0x18003d334
movzx ebp, byte [rsi + 0x4e]
xor edx, edx
mov rcx, qword [0x180069238]
mov r12, qword [rsi + 0x38]
lea r8, [rbp + 0x38]
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rbx, rax
test rax, rax
je 0x1800171c2
mov qword [rax + 0x20], rdi
xorps xmm0, xmm0
lea rsi, [rax + 0x38]
movups xmmword [rax + 0x28], xmm0
mov byte [rax + 0x29], bpl
test bpl, bpl
je 0x1800170ba
mov r8d, ebp
mov rdx, r12
mov rcx, rsi
call fcn.18002a1d0
or byte [rbx + 0x28], 0x11
lea rcx, [rbx + 0x18]
mov rax, qword [rdi + 0x360]
mov qword [rcx], rax
mov qword [rdi + 0x360], rcx
test byte [0x180067c72], 1
jne 0x18003d362
jmp 0x180017183
or byte [rdi + 0xe1], 0x20
xor edx, edx
mov rcx, qword [0x180069238]
mov dword [rdi], r15d
or byte [rbx + 1], 0x10
or dword [rbx + 0x60], 0xffffffff
lea r8d, [rdx + 0x38]
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rbp, rax
test rax, rax
je 0x180017131
xor ecx, ecx
lea rdx, [rax + 0x30]
xorps xmm0, xmm0
movups xmmword [rax + 0x20], xmm0
mov byte [rax + 0x21], 8
lea r9d, [rcx + 2]
lea r8d, [rcx + 8]
call qword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov qword [rbx + 0x58], rbp
test rbp, rbp
je 0x1800171c5
or byte [rbp + 0x20], 8
inc byte [rdi + 0xf4]
mov rcx, qword [rbx + 0x58]
mov rax, qword [r14 + 8]
mov qword [rcx], r14
mov qword [rcx + 8], rax
mov qword [rax], rcx
mov qword [r14 + 8], rcx
test byte [0x180067c72], 1
jne 0x18003d387
mov eax, 2
or byte [rdi + 0xe0], al
test byte [0x180067c72], 1
jne 0x18003d3b5
mov rdx, r13
mov rcx, rdi
call fcn.18001f3d4
mov rax, rdi
mov rcx, qword [rsp + 0x40]
xor rcx, rsp
call fcn.180028c10
mov rbx, qword [rsp + 0xa0]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov eax, edi
div ecx
movzx ebp, dx
jmp 0x180016cb1
xor r12d, r12d
mov ebp, 1
or byte [rdi + 0xe1], r15b
lea rbx, [rdi + 0x7a0]
jmp 0x18003d3ca
test byte [0x180067c70], r14b
je 0x18003d426
mov r9d, 0xbd8
lea r8, str.connection
call fcn.180041870
jmp 0x18003d426
test rsi, rsi
mov qword [rsp + 0x20], rax
mov r9d, r12d
lea rdx, [0x18005b088]
setne r9b
mov r8, rdi
call fcn.180044bd8
nop
jmp 0x180016d42
lea rdx, [rdi + 0xec]
mov r9d, 2
mov r8d, ebp
xor ecx, ecx
call qword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov rax, qword [rsi + 8]
mov ecx, 2
cmp word [rax + 0x1c], cx
jne 0x18003d2ec
mov eax, dword [rax + 0x20]
jmp 0x18003d2ef
mov eax, dword [rax + 0x30]
mov dword [rdi + 0xed], eax
jmp 0x180016fb3
mov r9b, 0x1c
mov qword [rsp + 0x20], rcx
mov r8, rdi
lea rdx, [0x180056e38]
call fcn.180042304
nop
jmp 0x180016ffb
mov r9b, 0x1c
mov qword [rsp + 0x20], rcx
mov r8, rdi
lea rdx, [0x180056c08]
call fcn.180042304
nop
jmp 0x18001702d
mov r9, qword [rbx + 0x58]
lea rdx, [0x180056bb8]
mov r8, rdi
lea rax, [r9 + 0x30]
mov qword [rsp + 0x28], rax
mov al, byte [r9 + 0x21]
mov r9, qword [r9 + 0x28]
mov byte [rsp + 0x20], al
call fcn.180044ea8
nop
jmp 0x18001706d
mov al, byte [rbx + 0x29]
lea rdx, [0x180056d88]
mov r9, qword [rbx + 0x30]
mov r8, rdi
mov qword [rsp + 0x28], rsi
mov byte [rsp + 0x20], al
call fcn.180044ea8
nop
jmp 0x180017183
mov r9, qword [rbx + 0x58]
lea rdx, [0x180056bb8]
mov r8, rdi
lea rax, [r9 + 0x30]
mov qword [rsp + 0x28], rax
mov al, byte [r9 + 0x21]
mov r9, qword [r9 + 0x28]
mov byte [rsp + 0x20], al
call fcn.180044ea8
nop
jmp 0x18001716b
mov r8, rdi
lea rdx, [0x18005ae78]
call fcn.1800420e4
nop
jmp 0x180017183
mov rcx, qword [rbx]
test rcx, rcx
je 0x18003d3da
call fcn.18001a364
mov qword [rbx], r12
add rbx, 8
sub r15, rbp
jne 0x18003d3ca
test rsi, rsi
je 0x18003d40e
mov r8, qword [rdi + 0x360]
test r8, r8
je 0x18003d40e
mov rcx, qword [0x180069238]
add r8, 0xffffffffffffffe8
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov qword [rdi + 0x360], r12
or eax, 0xffffffff
lock xadd dword [rdi + 0xd8], eax
cmp eax, 1
jne 0x18003d426
mov rcx, rdi
call fcn.180019ff4
xor eax, eax
jmp 0x180017191