Function at 0x140001c20
Capabilities:
Generate random numbers via winapi

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
movzx r15d, byte [rsp + 0xd8]
xor ebp, ebp
mov r13, qword [rsp + 0xd0]
mov esi, 8
mov qword [rsp + 0x58], r9
mov r14, r9
mov qword [rsp + 0x48], rcx
mov r12d, r8d
mov qword [rsp + 0x50], r13
mov rdi, rdx
mov byte [rsp + 0x32], r15b
mov rbx, rcx
mov dword [rsp + 0x40], esi
test r15b, r15b
jne 0x140001ce2
cmp byte [rcx], bpl
jne 0x140001ce2
lea r9d, [rbp + 1]
mov qword [rsp + 0x38], rbp
lea r8, str.Microsoft_Base_Cryptographic_Provider_v1.0
mov dword [rsp + 0x20], 0xf0000000
xor edx, edx
lea rcx, [rsp + 0x38]
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
mov rcx, qword [rsp + 0x38]
lea r8, [rbx + 0xc]
mov edx, esi
call qword [sym.imp.ADVAPI32.dll_CryptGenRandom]
mov rcx, qword [rsp + 0x38]
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov r9, r14
mov byte [rsp + 0x28], 1
mov r8d, r12d
mov byte [rbx], bpl
mov rdx, rdi
mov byte [rsp + 0x20], r15b
mov rcx, rbx
call fcn.140002d60
mov rdi, rax
mov qword [rsp + 0x38], rax
jmp 0x140001d01
mov byte [rsp + 0x28], 1
mov byte [rsp + 0x20], r15b
mov byte [rcx], bpl
call fcn.140002d60
mov qword [rsp + 0x38], rax
mov rdi, rax
test r15b, r15b
jne 0x140001d40
movzx eax, byte [rbx + 0xc]
mov rcx, rbx
mov byte [rdi], al
lea rbx, [rdi + 1]
movzx eax, byte [rcx + 0xd]
mov byte [rbx], al
movzx eax, byte [rcx + 0xe]
mov byte [rdi + 2], al
movzx eax, byte [rcx + 0xf]
mov byte [rdi + 3], al
movzx eax, byte [rcx + 0x10]
mov byte [rdi + 4], al
movzx eax, byte [rcx + 0x11]
mov byte [rdi + 5], al
movzx eax, byte [rcx + 0x12]
mov byte [rdi + 6], al
movzx eax, byte [rcx + 0x13]
mov byte [rdi + 7], al
jmp 0x140001d7d
movzx eax, byte [rax]
mov rcx, rbx
mov byte [rbx + 0xc], al
lea rbx, [rdi + 1]
movzx eax, byte [rbx]
mov byte [rcx + 0xd], al
movzx eax, byte [rdi + 2]
mov byte [rcx + 0xe], al
movzx eax, byte [rdi + 3]
mov byte [rcx + 0xf], al
movzx eax, byte [rdi + 4]
mov byte [rcx + 0x10], al
movzx eax, byte [rdi + 5]
mov byte [rcx + 0x11], al
movzx eax, byte [rdi + 6]
mov byte [rcx + 0x12], al
movzx eax, byte [rdi + 7]
mov byte [rcx + 0x13], al
mov edx, dword [r14]
cmp edx, esi
jle 0x140001ec2
test r15b, r15b
jne 0x140001df0
movzx eax, byte [rbx - 1]
lea rdx, [rbx + 8]
xor byte [rbx + 7], al
mov r8d, esi
movzx eax, byte [rbx]
xor byte [rdx], al
movzx eax, byte [rbx + 1]
xor byte [rbx + 9], al
movzx eax, byte [rbx + 2]
xor byte [rbx + 0xa], al
movzx eax, byte [rbx + 3]
xor byte [rbx + 0xb], al
movzx eax, byte [rbx + 4]
xor byte [rbx + 0xc], al
movzx eax, byte [rbx + 5]
xor byte [rbx + 0xd], al
movzx eax, byte [rbx + 6]
xor byte [rbx + 0xe], al
mov qword [rsp + 0x40], rdx
mov rdx, rdi
call r13
mov rcx, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x40]
jmp 0x140001eab
movzx eax, byte [rbx + 0xd]
mov r8d, dword [rsp + 0x40]
mov rdx, qword [rsp + 0x38]
movzx edi, byte [rbx + 7]
movzx esi, byte [rbx + 8]
movzx ebp, byte [rbx + 9]
movzx r15d, byte [rbx + 0xa]
movzx r12d, byte [rbx + 0xb]
movzx r13d, byte [rbx + 0xc]
mov byte [rsp + 0x30], al
movzx eax, byte [rbx + 0xe]
mov byte [rsp + 0x31], al
call qword [rsp + 0x50]
mov rcx, qword [rsp + 0x48]
lea rdx, [rbx + 8]
mov r14, qword [rsp + 0x58]
movzx eax, byte [rcx + 0xc]
xor byte [rbx + 7], al
mov byte [rcx + 0xc], dil
movzx eax, byte [rcx + 0xd]
xor byte [rbx + 8], al
mov rdi, qword [rsp + 0x38]
mov byte [rcx + 0xd], sil
movzx eax, byte [rcx + 0xe]
xor byte [rbx + 9], al
mov esi, dword [rsp + 0x40]
mov byte [rcx + 0xe], bpl
movzx eax, byte [rcx + 0xf]
xor byte [rbx + 0xa], al
mov byte [rcx + 0xf], r15b
movzx eax, byte [rcx + 0x10]
xor byte [rbx + 0xb], al
movzx r15d, byte [rsp + 0x32]
mov byte [rcx + 0x10], r12b
movzx eax, byte [rcx + 0x11]
xor byte [rbx + 0xc], al
mov byte [rcx + 0x11], r13b
movzx eax, byte [rcx + 0x12]
xor byte [rbx + 0xd], al
movzx eax, byte [rsp + 0x30]
mov r13, qword [rsp + 0x50]
mov byte [rcx + 0x12], al
movzx eax, byte [rcx + 0x13]
xor byte [rbx + 0xe], al
movzx eax, byte [rsp + 0x31]
mov byte [rcx + 0x13], al
add esi, 8
mov rbx, rdx
mov edx, dword [r14]
mov dword [rsp + 0x40], esi
cmp esi, edx
jl 0x140001d88
xor ebp, ebp
test r15b, r15b
je 0x140001f2f
movsxd rax, edx
movzx r8d, byte [rdi + rax - 1]
lea rcx, [rax - 1]
add rcx, rdi
nop word [rax + rax]
dec edx
lea rcx, [rcx - 1]
cmp byte [rcx], r8b
je 0x140001ee0
movsxd rcx, edx
lea eax, [rdx - 8]
sub rcx, 8
mov dword [r14], eax
call fcn.140015770
cmp dword [r14], 0
mov rbx, rax
jle 0x140001f22
mov rdx, rax
mov rax, rdi
sub rax, rdx
nop
movzx ecx, byte [rax + rdx + 8]
inc ebp
mov byte [rdx], cl
lea rdx, [rdx + 1]
cmp ebp, dword [r14]
jl 0x140001f10
mov rcx, rdi
call fcn.140015768
mov rax, rbx
jmp 0x140001f32
mov rax, rdi
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret