Function at 0x49bdaa
Capabilities:
Create new key via cryptacquirecontext
Generate random numbers via winapi

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
mov byte [ebp - 9], 0
mov eax, dword [0x58a108]
test eax, eax
jne 0x49bfdc
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x58a108
mov eax, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
call eax
sub esp, 0x14
test eax, eax
jne 0x49bfdc
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
cmp eax, 0x80090016
jne 0x49bea1
mov dword [esp + 0xc], str.No_default_container_was_found._Attempting_to_create_default_container.
mov dword [esp + 8], str.randombytes
mov dword [esp + 4], 0x20
mov dword [esp], str.shared_randombytes.c
call dbg._mdebug1
mov dword [esp + 0x10], 8
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x58a108
mov eax, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
call eax
sub esp, 0x14
test eax, eax
jne 0x49bfdc
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.CryptAcquireContext_Flag:_NewKeySet__1_:___lx_
mov dword [esp + 8], str.randombytes
mov dword [esp + 4], 0x23
mov dword [esp], str.shared_randombytes.c
call dbg._merror
mov byte [ebp - 9], 1
jmp 0x49bfdc
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
cmp eax, 0x8009001a
jne 0x49bfa9
mov dword [esp + 0xc], str.The_agents_RSA_key_container_for_the_random_generator_is_corrupt._Resetting_container...
mov dword [esp + 8], str.randombytes
mov dword [esp + 4], 0x27
mov dword [esp], str.shared_randombytes.c
call dbg._mwarn
mov dword [esp + 0x10], 0x10
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x58a108
mov eax, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
call eax
sub esp, 0x14
test eax, eax
jne 0x49bf3f
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.CryptAcquireContext_Flag:_DeleteKeySet:___lx_
mov dword [esp + 8], str.randombytes
mov dword [esp + 4], 0x2a
mov dword [esp], str.shared_randombytes.c
call dbg._merror
mov byte [ebp - 9], 1
mov dword [esp + 0x10], 8
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x58a108
mov eax, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
call eax
sub esp, 0x14
test eax, eax
jne 0x49bfdc
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.CryptAcquireContext_Flag:_NewKeySet__2_:___lx_
mov dword [esp + 8], str.randombytes
mov dword [esp + 4], 0x2e
mov dword [esp], str.shared_randombytes.c
call dbg._merror
mov byte [ebp - 9], 1
jmp 0x49bfdc
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.CryptAcquireContext_no_Flag:___lx_
mov dword [esp + 8], str.randombytes
mov dword [esp + 4], 0x32
mov dword [esp], str.shared_randombytes.c
call dbg._merror
mov byte [ebp - 9], 1
cmp byte [ebp - 9], 0
jne 0x49c00a
mov eax, dword [0x58a108]
mov edx, dword [ebp + 8]
mov dword [esp + 8], edx
mov edx, dword [ebp + 0xc]
mov dword [esp + 4], edx
mov dword [esp], eax
mov eax, dword [sym.imp.ADVAPI32.dll_CryptGenRandom]
call eax
sub esp, 0xc
test eax, eax
jne 0x49c00a
mov byte [ebp - 9], 1
cmp byte [ebp - 9], 0
je 0x49c034
mov dword [esp + 0xc], str.randombytes_failed_for_all_possible_methods_for_accessing_random_data
mov dword [esp + 8], str.randombytes
mov dword [esp + 4], 0x4b
mov dword [esp], str.shared_randombytes.c
call dbg._merror_exit
nop
leave
ret