Function at 0x454160
Capabilities:
Generate random numbers via rtlgenrandom

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4fbf79
mov eax, dword fs:[0]
push eax
sub esp, 0xc4
push ebx
push esi
push edi
mov eax, dword [0x53602c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
xor ebx, ebx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x18], ebx
test eax, eax
je 0x4543aa
push eax
push ecx
call sub.ADVAPI32.dll_SystemFunction036
test al, al
jne 0x45439a
push 4
push 0x7d
push str.E:.conan709e391_sourcesexternalcrashpad_third_partymini_chromiummini_chromium_base_rand_util.cc
push str.void___cdecl_base::RandBytes_void__unsigned_int_
lea ecx, [ebp - 0xd0]
call fcn.00452b50
mov ebx, eax
or dword [ebp - 0x18], 1
mov ecx, dword [ebx]
mov dword [ebp - 4], 0
mov dword [ebp - 0x14], 0
mov ecx, dword [ecx + 4]
mov edi, dword [ecx + ebx + 0x24]
mov esi, dword [ecx + ebx + 0x20]
test edi, edi
jl 0x454204
jg 0x4541fc
test esi, esi
je 0x454204
test edi, edi
jl 0x454204
jg 0x4541fc
cmp esi, 0x15
jbe 0x454204
sub esi, 0x15
sbb edi, 0
jmp 0x454212
xorps xmm0, xmm0
movlpd qword [ebp - 0x20], xmm0
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x20]
push ebx
lea ecx, [ebp - 0x28]
call fcn.004032f0
cmp byte [ebp - 0x24], 0
mov dword [ebp - 4], 1
jne 0x454232
mov esi, 4
jmp 0x45435a
mov eax, dword [ebx]
mov eax, dword [eax + 4]
mov eax, dword [eax + ebx + 0x14]
and eax, 0x1c0
cmp eax, 0x40
je 0x4542a9
test edi, edi
jl 0x4542a9
jg 0x454250
test esi, esi
je 0x4542a9
nop
mov eax, dword [ebx]
mov eax, dword [eax + 4]
mov ecx, dword [eax + ebx + 0x38]
mov al, byte [eax + ebx + 0x40]
mov byte [ebp - 0xd], al
mov eax, dword [ecx + 0x20]
cmp dword [eax], 0
je 0x454288
mov edx, dword [ecx + 0x30]
mov eax, dword [edx]
test eax, eax
jle 0x454288
dec eax
mov dword [edx], eax
mov ecx, dword [ecx + 0x20]
mov edx, dword [ecx]
lea eax, [edx + 1]
mov dword [ecx], eax
mov al, byte [ebp - 0xd]
mov byte [edx], al
movzx eax, al
jmp 0x454294
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
movzx eax, byte [ebp - 0xd]
push eax
call edx
cmp eax, 0xffffffff
je 0x4542d4
add esi, 0xffffffff
adc edi, 0xffffffff
test edi, edi
jg 0x454250
jl 0x4542a9
test esi, esi
jne 0x454250
mov eax, dword [ebx]
push 0
push 0x15
push str.Check_failed:_success
mov eax, dword [eax + 4]
mov ecx, dword [eax + ebx + 0x38]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp eax, 0x15
jne 0x4542cb
test edx, edx
je 0x4542db
xor ecx, ecx
or ecx, 4
mov esi, ecx
jmp 0x454345
mov esi, 4
jmp 0x454345
test edi, edi
jl 0x454342
jg 0x4542e5
test esi, esi
je 0x454342
mov eax, dword [ebx]
mov eax, dword [eax + 4]
mov ecx, dword [eax + ebx + 0x38]
mov al, byte [eax + ebx + 0x40]
mov byte [ebp - 0xd], al
mov eax, dword [ecx + 0x20]
cmp dword [eax], 0
je 0x45431d
mov edx, dword [ecx + 0x30]
mov eax, dword [edx]
test eax, eax
jle 0x45431d
dec eax
mov dword [edx], eax
mov ecx, dword [ecx + 0x20]
mov edx, dword [ecx]
lea eax, [edx + 1]
mov dword [ecx], eax
mov al, byte [ebp - 0xd]
mov byte [edx], al
movzx eax, al
jmp 0x454329
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
movzx eax, byte [ebp - 0xd]
push eax
call edx
cmp eax, 0xffffffff
je 0x4543bc
add esi, 0xffffffff
adc edi, 0xffffffff
test edi, edi
jg 0x4542e5
jl 0x454342
test esi, esi
jne 0x4542e5
mov esi, dword [ebp - 0x14]
mov eax, dword [ebx]
mov eax, dword [eax + 4]
mov dword [eax + ebx + 0x20], 0
mov dword [eax + ebx + 0x24], 0
mov eax, dword [ebx]
push 0
mov ecx, dword [eax + 4]
mov eax, 4
add ecx, ebx
mov edx, dword [ecx + 0xc]
or edx, esi
xor esi, esi
cmp dword [ecx + 0x38], esi
cmovne eax, esi
or eax, edx
push eax
call fcn.004072b0
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0
call fcn.00403d30
push 0x504954
push ebx
call fcn.004012f0
mov ebx, dword [ebp - 0x18]
add esp, 8
test bl, 1
je 0x4543aa
lea ecx, [ebp - 0xd0]
call fcn.00452d70
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x14]
or esi, 4
jmp 0x454345