Function at 0x46bb40
Capabilities:
Generate random numbers via winapi

Disassembly:
push rbp
sub rsp, 0xc0
lea rax, [sym.__gxx_personality_sj0]
mov qword [rsp + 0x60], rax
lea rax, [0x0068bd84]
mov qword [rsp + 0x68], rax
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x70], rax
lea rax, [0x0046bda6]
mov qword [rsp + 0x78], rax
lea rax, [rsp + 0x30]
mov rcx, rax
mov qword [rsp + 0x20], rax
mov qword [rsp + 0xd8], rdx
mov qword [rsp + 0xe0], r8
mov qword [rsp + 0x80], rsp
call dbg._Unwind_SjLj_Register
movzx eax, byte [0x0069b260]
test al, al
je 0x46bcd0
mov eax, dword [rsp + 0xe0]
cmp rax, qword [rsp + 0xe0]
jne 0x46bbe3
mov eax, dword [rsp + 0xe0]
test eax, eax
setne dl
cmp qword [rsp + 0xe0], 0
setne al
cmp dl, al
je 0x46bc92
mov ecx, 0x5b6
mov dword [rsp + 0x38], 0xffffffff
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, 0x30
call sym.__cxa_allocate_exception
lea r10, [rsp + 0xa0]
xor r9d, r9d
mov dword [rsp + 0x38], 2
lea r8, [0x00626273]
mov qword [rsp + 0x28], rax
mov rcx, r10
lea rax, [rsp + 0xb0]
mov qword [rsp + 0x20], r10
lea rdx, [r8 - 0x12]
mov qword [rsp + 0xa0], rax
call method.void_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_construct_char_const__char_const__char_const__std::forward_iterator_tag_
mov rdx, qword [rsp + 0x20]
mov dword [rsp + 0x38], 3
mov rcx, qword [rsp + 0x28]
call method.CryptoPP::OS_RNG_Err.OS_RNG_Err_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rax, qword [rsp + 0x20]
mov rcx, qword [rsp + 0xa0]
add rax, 0x10
cmp rcx, rax
je 0x46bc72
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x28]
lea r8, [sym.CryptoPP::OS_RNG_Err::OS_RNG_Err__]
mov dword [rsp + 0x38], 0xffffffff
lea rdx, [0x0063c3a0]
call sym.__cxa_throw
mov r8, qword [rsp + 0xd8]
mov dword [rsp + 0x38], 0xffffffff
mov edx, dword [rsp + 0xe0]
mov rcx, qword [0x0069b268]
call qword [sym.imp.ADVAPI32.dll_CryptGenRandom]
test eax, eax
je 0x46bd15
mov rcx, qword [rsp + 0x20]
call sym._Unwind_SjLj_Unregister
nop
add rsp, 0xc0
pop rbp
ret
lea rcx, [0x0069b260]
call sym.__cxa_guard_acquire
test eax, eax
je 0x46bbb2
lea rcx, [0x0069b268]
mov dword [rsp + 0x38], 1
call method.CryptoPP::MicrosoftCryptoProvider.MicrosoftCryptoProvider__
lea rcx, [0x0069b260]
call sym.__cxa_guard_release
lea rcx, [sym.__tcf_0_8]
call sym.atexit
jmp 0x46bbb2
mov ecx, 0x30
call sym.__cxa_allocate_exception
lea rdx, [rsp + 0xa0]
mov dword [rsp + 0x38], 4
mov qword [rsp + 0x98], rax
mov rax, rdx
lea rdx, str.CryptGenRandom
mov rcx, rax
mov qword [rsp + 0x20], rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const___clone_.isra.31_
mov rdx, qword [rsp + 0x20]
mov dword [rsp + 0x38], 5
mov rcx, qword [rsp + 0x98]
call method.CryptoPP::OS_RNG_Err.OS_RNG_Err_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rax, qword [rsp + 0x20]
mov rcx, qword [rsp + 0xa0]
add rax, 0x10
cmp rcx, rax
je 0x46bd83
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x98]
lea r8, [sym.CryptoPP::OS_RNG_Err::OS_RNG_Err__]
mov dword [rsp + 0x38], 0xffffffff
lea rdx, [0x0063c3a0]
call sym.__cxa_throw
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x20], rax
mov eax, dword [rsp + 0x38]
test eax, eax
jne 0x46bdd6
lea rcx, [0x0069b260]
call sym.__cxa_guard_abort
mov rcx, qword [rsp + 0x20]
mov dword [rsp + 0x38], 0xffffffff
call dbg._Unwind_SjLj_Resume
sub eax, 1
jne 0x46bdf7
mov rcx, qword [rsp + 0x28]
call sym.__cxa_free_exception
mov rcx, qword [rsp + 0x20]
mov dword [rsp + 0x38], 0xffffffff
call dbg._Unwind_SjLj_Resume
sub eax, 1
jne 0x46be18
mov rcx, qword [rsp + 0xa0]
lea rax, [rsp + 0xb0]
cmp rcx, rax
je 0x46bddb
call sym.operator_delete_void_
jmp 0x46bddb
sub eax, 1
jne 0x46be3c
mov rcx, qword [rsp + 0x98]
call sym.__cxa_free_exception
mov rcx, qword [rsp + 0x20]
mov dword [rsp + 0x38], 0xffffffff
call dbg._Unwind_SjLj_Resume
sub eax, 1
jne 0x46be5d
mov rcx, qword [rsp + 0xa0]
lea rax, [rsp + 0xb0]
cmp rcx, rax
je 0x46be1d
call sym.operator_delete_void_
jmp 0x46be1d
ud2