Function at 0x55a200
Capabilities:
Generate random numbers via rtlgenrandom

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd0
push ebx
mov ebx, dword [ebp + 0xc]
push esi
xor esi, esi
mov dword [ebp - 4], esi
test ebx, ebx
je 0x55a41f
mov dword [ebp - 0x10], 0xffffffff
push edi
lea ecx, [ebp + 0xc]
cmp ebx, 0xffffffff
lea eax, [ebp - 0x10]
cmovbe eax, ecx
mov edi, dword [eax]
push edi
push dword [ebp + 8]
mov dword [ebp - 0xc], edi
call sub.ADVAPI32.dll_SystemFunction036
test al, al
jne 0x55a3f3
push 3
push 0x25
or esi, 1
lea ecx, [ebp - 0xd0]
push str.rand_util_win.cc
mov dword [ebp - 4], esi
call fcn.0053b1b0
mov ecx, dword [eax + 8]
mov dword [ebp - 8], 0
lea ebx, [eax + 8]
mov ecx, dword [ecx + 4]
add ecx, ebx
call dword [sym.imp.MSVCP120.dll_public:_long_long___int64____thiscall_std::ios_base::width_void_const]
test edx, edx
jl 0x55a2b2
jg 0x55a281
test eax, eax
je 0x55a2b2
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
call dword [sym.imp.MSVCP120.dll_public:_long_long___int64____thiscall_std::ios_base::width_void_const]
test edx, edx
jl 0x55a2b2
jg 0x55a299
cmp eax, 0x17
jbe 0x55a2b2
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
call dword [sym.imp.MSVCP120.dll_public:_long_long___int64____thiscall_std::ios_base::width_void_const]
mov esi, eax
mov edi, edx
sub esi, 0x17
sbb edi, 0
jmp 0x55a2b6
xor esi, esi
xor edi, edi
push ebx
lea ecx, [ebp - 0x20]
call fcn.00409b10
cmp byte [ebp - 0x1c], 0
jne 0x55a2cf
mov esi, 4
jmp 0x55a3ad
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
add ecx, ebx
call dword [sym.imp.MSVCP120.dll_public:_int___thiscall_std::ios_base::flags_void_const]
and eax, 0x1c0
cmp eax, 0x40
je 0x55a328
test edi, edi
jl 0x55a328
jg 0x55a2f0
test esi, esi
je 0x55a328
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
mov al, byte [ecx + ebx + 0x40]
add ecx, ebx
mov byte [ebp - 0x18], al
push dword [ebp - 0x18]
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_streambuf_char__struct_std::char_traits_char______thiscall_std::basic_ios_char__struct_std::char_traits_char__::rdbuf_void_const]
mov ecx, eax
call dword [sym.imp.MSVCP120.dll_public:_int___thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::sputc_char_]
cmp eax, 0xffffffff
je 0x55a425
add esi, 0xffffffff
adc edi, 0xffffffff
test edi, edi
jg 0x55a2f0
jl 0x55a328
test esi, esi
jne 0x55a2f0
mov eax, dword [ebx]
push 0
push 0x17
push str.Check_failed:_success.
mov ecx, dword [eax + 4]
add ecx, ebx
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_streambuf_char__struct_std::char_traits_char______thiscall_std::basic_ios_char__struct_std::char_traits_char__::rdbuf_void_const]
mov ecx, eax
call dword [sym.imp.MSVCP120.dll_public:_long_long___int64____thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::sputn_char_const___long_long___int64__]
cmp eax, 0x17
jne 0x55a425
test edx, edx
jne 0x55a425
test edi, edi
jl 0x55a399
jg 0x55a361
test esi, esi
je 0x55a399
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
mov al, byte [ecx + ebx + 0x40]
add ecx, ebx
mov byte [ebp - 0x14], al
push dword [ebp - 0x14]
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_streambuf_char__struct_std::char_traits_char______thiscall_std::basic_ios_char__struct_std::char_traits_char__::rdbuf_void_const]
mov ecx, eax
call dword [sym.imp.MSVCP120.dll_public:_int___thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::sputc_char_]
cmp eax, 0xffffffff
je 0x55a425
add esi, 0xffffffff
adc edi, 0xffffffff
test edi, edi
jg 0x55a361
jl 0x55a399
test esi, esi
jne 0x55a361
mov esi, dword [ebp - 8]
mov eax, dword [ebx]
push 0
push 0
mov ecx, dword [eax + 4]
add ecx, ebx
call dword [sym.imp.MSVCP120.dll_public:_long_long___int64____thiscall_std::ios_base::width_long_long___int64__]
mov eax, dword [ebx]
push 0
push esi
mov ecx, dword [eax + 4]
add ecx, ebx
call dword [sym.imp.MSVCP120.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool_]
mov esi, dword [ebp - 0x20]
mov ecx, esi
call dword [sym.imp.MSVCP120.dll_public:_void___thiscall_std::basic_ostream_char__struct_std::char_traits_char__::_Osfx_void_]
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_streambuf_char__struct_std::char_traits_char______thiscall_std::basic_ios_char__struct_std::char_traits_char__::rdbuf_void_const]
test eax, eax
je 0x55a3ed
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_streambuf_char__struct_std::char_traits_char______thiscall_std::basic_ios_char__struct_std::char_traits_char__::rdbuf_void_const]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 8]
mov edi, dword [ebp - 0xc]
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp - 4]
test al, 1
je 0x55a40b
and eax, 0xfffffffe
lea ecx, [ebp - 0xd0]
mov dword [ebp - 4], eax
call fcn.0053b3a0
add dword [ebp + 8], edi
sub ebx, edi
mov esi, dword [ebp - 4]
mov dword [ebp + 0xc], ebx
test ebx, ebx
jne 0x55a223
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, 4
jmp 0x55a39c