Function at 0x55c660
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 0x55c87f
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 0x55c853
push 3
push 0x25
or esi, 1
lea ecx, [ebp - 0xd0]
push str.rand_util_win.cc
mov dword [ebp - 4], esi
call fcn.0053d6e0
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 0x55c712
jg 0x55c6e1
test eax, eax
je 0x55c712
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 0x55c712
jg 0x55c6f9
cmp eax, 0x17
jbe 0x55c712
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 0x55c716
xor esi, esi
xor edi, edi
push ebx
lea ecx, [ebp - 0x20]
call fcn.004099d7
cmp byte [ebp - 0x1c], 0
jne 0x55c72f
mov esi, 4
jmp 0x55c80d
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 0x55c788
test edi, edi
jl 0x55c788
jg 0x55c750
test esi, esi
je 0x55c788
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 0x55c885
add esi, 0xffffffff
adc edi, 0xffffffff
test edi, edi
jg 0x55c750
jl 0x55c788
test esi, esi
jne 0x55c750
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 0x55c885
test edx, edx
jne 0x55c885
test edi, edi
jl 0x55c7f9
jg 0x55c7c1
test esi, esi
je 0x55c7f9
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 0x55c885
add esi, 0xffffffff
adc edi, 0xffffffff
test edi, edi
jg 0x55c7c1
jl 0x55c7f9
test esi, esi
jne 0x55c7c1
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 0x55c84d
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 0x55c86b
and eax, 0xfffffffe
lea ecx, [ebp - 0xd0]
mov dword [ebp - 4], eax
call fcn.0053d8d0
add dword [ebp + 8], edi
sub ebx, edi
mov esi, dword [ebp - 4]
mov dword [ebp + 0xc], ebx
test ebx, ebx
jne 0x55c683
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, 4
jmp 0x55c7fc