Function at 0x18003f920
Capabilities:
Generate random numbers via winapi

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x100
mov rax, qword [0x18014a010]
xor rax, rsp
mov qword [rsp + 0xf0], rax
mov rsi, rcx
mov qword [rsp + 0x88], rcx
cmp byte [0x18014ae70], 0
je 0x18003f9ae
mov byte [0x18014ae70], 0
mov dword [rsp + 0x20], 0xf0000000
mov r9d, 1
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x88]
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
je 0x18003f9ae
lea r8, [0x1801526e8]
mov edx, select
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.ADVAPI32.dll_CryptGenRandom]
xor edx, edx
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
lea r11, [rsp + 0xc8]
mov rcx, qword [0x1801526e8]
mov r8, qword [0x1801526f0]
mov rax, rcx
shl rax, 0x17
xor rcx, rax
mov rdx, rcx
shr rdx, 0xd
xor rdx, r8
shr rdx, 5
xor rdx, r8
xor rdx, rcx
lea rax, [r8 + rdx]
mov qword [rsp + 0x30], rax
mov qword [0x1801526e8], rdx
mov rax, r8
shl rax, 0x17
xor r8, rax
mov rax, r8
shr rax, 0xd
xor rax, rdx
shr rax, 5
xor rax, rdx
xor rax, r8
mov qword [0x1801526f0], rax
add rax, rdx
mov qword [rsp + 0x38], rax
xor r9d, r9d
movzx r8d, byte [str.xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx]
test r8b, r8b
je 0x18003faa4
lea rbx, str.xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx
lea rax, [rsp + 0xc8]
sub rbx, rax
lea rdi, str.0123456789abcdef
nop dword [rax + rax]
movsxd rax, r9d
sar rax, 1
movzx edx, byte [rsp + rax + 0x30]
mov ecx, r9d
mov eax, edx
and eax, 0xf
shr edx, 4
and cl, 1
cmove edx, eax
mov r10d, edx
movsx ecx, r8b
sub ecx, 0x78
je 0x18003fa8c
cmp ecx, 1
jne 0x18003fa94
inc r9d
and r10d, 3
movzx r8d, byte [r10 + rdi + 8]
jmp 0x18003fa94
inc r9d
movzx r8d, byte [rdx + rdi]
mov byte [r11], r8b
inc r11
movzx r8d, byte [rbx + r11]
test r8b, r8b
jne 0x18003fa50
mov byte [r11], 0
mov ecx, 0x18
call fcn.18009603c
mov rdi, rax
mov qword [rsp + 0x88], rax
lea rax, vtable.Bstrlib::CBString.0
mov qword [rdi], rax
lea rax, [rsp + 0xc8]
mov rcx, 0xffffffffffffffff
inc rcx
cmp byte [rax + rcx], 0
jne 0x18003fad6
cmp rcx, 0x7fffffff
jae 0x18003fb91
mov dword [rdi + 0xc], ecx
lea eax, [rcx + 1]
mov dword [rdi + 8], eax
movsxd rcx, eax
call fcn.1800caa98
mov qword [rdi + 0x10], rax
test rax, rax
je 0x18003fb1b
movsxd r8, dword [rdi + 8]
lea rdx, [rsp + 0xc8]
mov rcx, rax
call fcn.1800c1d10
nop
lea rax, vtable.metasec::MSSPLockWrap.0
mov qword [rsp + 0x30], rax
call fcn.18004a9e0
lea rcx, [rax + 8]
call qword [sym.imp.pthreadVC2.dll_pthread_mutex_lock]
mov ebx, eax
mov dword [rsp + 0x38], eax
mov qword [rsi], rdi
mov ecx, 4
call fcn.18009603c
mov dword [rax], 0
mov qword [rsi + 8], rax
inc dword [rax]
test ebx, ebx
jne 0x18003fb69
call fcn.18004a9e0
lea rcx, [rax + 8]
call qword [sym.imp.pthreadVC2.dll_pthread_mutex_unlock]
nop
mov rax, rsi
mov rcx, qword [rsp + 0xf0]
xor rcx, rsp
call fcn.180096010
lea r11, [rsp + 0x100]
mov rbx, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rsp, r11
pop rdi
ret
lea rdx, str.CBString::Failure_in__char___constructor__string_too_large
lea rcx, [rsp + 0x30]
call fcn.180005e90
mov rdx, rax
lea rcx, [rsp + 0x90]
call fcn.180003740
nop
lea rdx, [rsp + 0x90]
lea rcx, [rsp + 0x50]
call fcn.1800038c0
lea rdx, [0x1801471a8]
lea rcx, [rsp + 0x50]
call fcn.1800c1a08
int3