Function at 0x1000288d8
Capabilities:
Generate random numbers via winapi

Disassembly:
mov rax, rsp
push rbp
push rsi
push rdi
push r12
push r14
sub rsp, 0x80
mov qword [rsp + 0x30], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov rbp, rdx
and qword [rax + 0x20], 0
lea rsi, [0x10003e360]
mov qword [rax - 0x60], rsi
lea rcx, [0x10003e368]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r14d, 1
mov byte [rsp + 0x50], r14b
mov byte [rsp + 0x58], r14b
mov rbx, qword [0x10003e3c0]
test rbx, rbx
je 0x100028c3f
mov rbx, qword [rbx + 0x20]
test rbx, rbx
je 0x100028951
mov eax, dword [rbx + 8]
test eax, eax
jne 0x10002894c
mov dword [rbx + 8], r14d
jmp 0x100028951
lock add dword [rbx + 8], r14d
mov qword [rsp + 0xc8], rbx
mov byte [rsp + 0x58], 0
lea rcx, [0x10003e368]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test rbx, rbx
je 0x100028a03
mov r8, rbp
mov edx, 4
mov rcx, qword [rbx + 0x10]
call qword [sym.imp.ADVAPI32.dll_CryptGenRandom]
test eax, eax
jne 0x1000289ce
call fcn.100027b98
mov edi, eax
lea r12, [0x10003d610]
mov rcx, qword [0x10003d610]
cmp rcx, r12
je 0x1000289c2
test byte [rcx + 0x1c], r14b
je 0x1000289c2
mov edx, 0xb
mov r9d, eax
lea r8, [0x1000060f0]
mov rcx, qword [rcx + 0x10]
call fcn.10001550c
test edi, edi
jns 0x1000289ce
mov ecx, edi
call fcn.100025514
nop
mov eax, dword [rbx + 8]
cmp eax, r14d
jne 0x1000289df
mov dword [rbx + 8], 0
jmp 0x1000289f3
or esi, 0xffffffff
mov eax, esi
lock xadd dword [rbx + 8], eax
add eax, esi
test eax, eax
jg 0x100028c4a
mov rax, qword [rbx]
mov edx, r14d
mov rcx, rbx
call qword [rax]
jmp 0x100028c4a
mov ecx, 0x18
call fcn.10001d304
mov rbx, rax
mov qword [rsp + 0x38], rax
lea r12, [0x10003d610]
test rax, rax
je 0x100028aae
and dword [rax + 8], 0
lea rax, [0x10000c058]
mov qword [rbx], rax
and qword [rbx + 0x10], 0
and qword [rsp + 0xc0], 0
mov dword [rsp + 0x20], 0xf0000040
mov r9d, r14d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xc0]
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x100028aa0
call fcn.100027b98
mov edi, eax
mov rcx, qword [0x10003d610]
cmp rcx, r12
je 0x100028a94
test byte [rcx + 0x1c], r14b
je 0x100028a94
mov edx, 0xa
mov r9d, eax
lea r8, [0x1000060f0]
mov rcx, qword [rcx + 0x10]
call fcn.10001550c
test edi, edi
jns 0x100028aa0
mov ecx, edi
call fcn.100025514
int3
mov rax, qword [rsp + 0xc0]
mov qword [rbx + 0x10], rax
jmp 0x100028ab0
xor ebx, ebx
test rbx, rbx
je 0x100028ac7
mov eax, dword [rbx + 8]
test eax, eax
jne 0x100028ac2
mov dword [rbx + 8], r14d
jmp 0x100028ac7
lock add dword [rbx + 8], r14d
mov qword [rsp + 0x40], rbx
test rbx, rbx
jne 0x100028adc
mov ecx, 0x8007000e
call fcn.100025514
int3
mov qword [rsp + 0x60], rsi
lea rcx, [0x10003e368]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [rsp + 0x68], r14b
mov byte [rsp + 0x70], r14b
mov rdi, qword [0x10003e3c0]
test rdi, rdi
je 0x100028c34
or esi, 0xffffffff
cmp qword [rdi + 0x20], 0
jne 0x100028b57
mov eax, dword [rbx + 8]
test eax, eax
jne 0x100028b1f
mov dword [rbx + 8], r14d
jmp 0x100028b24
lock add dword [rbx + 8], r14d
mov rcx, qword [rdi + 0x20]
mov qword [rdi + 0x20], rbx
test rcx, rcx
je 0x100028b57
mov eax, dword [rcx + 8]
cmp eax, r14d
jne 0x100028b42
mov dword [rcx + 8], 0
jmp 0x100028b4f
mov eax, esi
lock xadd dword [rcx + 8], eax
add eax, esi
test eax, eax
jg 0x100028b57
mov rax, qword [rcx]
mov edx, r14d
call qword [rax]
mov rdi, qword [rdi + 0x20]
test rdi, rdi
je 0x100028b72
mov eax, dword [rdi + 8]
test eax, eax
jne 0x100028b6d
mov dword [rdi + 8], r14d
jmp 0x100028b72
lock add dword [rdi + 8], r14d
mov qword [rsp + 0xc8], rdi
mov byte [rsp + 0x70], 0
lea rcx, [0x10003e368]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov r8, rbp
mov edx, 4
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.ADVAPI32.dll_CryptGenRandom]
test eax, eax
jne 0x100028bdf
call fcn.100027b98
mov ebp, eax
mov rcx, qword [0x10003d610]
cmp rcx, r12
je 0x100028bd3
test byte [rcx + 0x1c], r14b
je 0x100028bd3
mov edx, 0xb
mov r9d, eax
lea r8, [0x1000060f0]
mov rcx, qword [rcx + 0x10]
call fcn.10001550c
test ebp, ebp
jns 0x100028bdf
mov ecx, ebp
call fcn.100025514
nop
mov eax, dword [rbx + 8]
cmp eax, r14d
jne 0x100028bf0
mov dword [rbx + 8], 0
jmp 0x100028bfd
mov eax, esi
lock xadd dword [rbx + 8], eax
add eax, esi
test eax, eax
jg 0x100028c09
mov rax, qword [rbx]
mov edx, r14d
mov rcx, rbx
call qword [rax]
nop
mov eax, dword [rdi + 8]
cmp eax, r14d
jne 0x100028c1a
mov dword [rdi + 8], 0
jmp 0x100028c27
mov eax, esi
lock xadd dword [rdi + 8], eax
add eax, esi
test eax, eax
jg 0x100028c4a
mov rax, qword [rdi]
mov edx, r14d
mov rcx, rdi
call qword [rax]
jmp 0x100028c4a
mov ecx, 0x80070057
call fcn.100025514
nop
mov ecx, 0x80070057
call fcn.100025514
nop
mov rbx, qword [rsp + 0xb0]
add rsp, 0x80
pop r14
pop r12
pop rdi
pop rsi
pop rbp
ret