Function at 0x418990
Capabilities:
Generate random numbers via winapi

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x108
mov eax, dword [0x586f0c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push 0xf0000000
push 1
xor ebx, ebx
push ebx
push ebx
lea eax, [ebp - 0x108]
push eax
mov dword [ebp - 0x108], ebx
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
mov edx, dword [ebp - 0x108]
lea ecx, [ebp - 0x104]
push ecx
push 0x100
push edx
call dword [sym.imp.ADVAPI32.dll_CryptGenRandom]
mov eax, dword [ebp - 0x108]
push ebx
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
xor eax, eax
mov byte [esi + eax + 2], al
inc eax
cmp eax, 0x100
jl 0x4189f0
mov word [esi], bx
mov edi, 0x80
lea ebx, [ebp - 0x104]
mov ecx, esi
call fcn.004187c0
lea ebx, [ebp - 0x84]
call fcn.004187c0
xor ebx, ebx
mov dword [esi + 0x104], ebx
mov dword [esi + 0x108], ebx
xor ecx, ecx
lea esp, [esp]
inc byte [esi]
movzx edx, byte [esi]
mov al, byte [edx + esi + 2]
add byte [esi + 1], al
lea edi, [edx + esi + 2]
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x104], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x103], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x102], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
mov byte [ebp + ecx - 0x101], dl
add ecx, 4
cmp ecx, 0x100
jb 0x418a30
xor ecx, ecx
jmp 0x418b30
inc byte [esi]
movzx eax, byte [esi]
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x104], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x103], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x102], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
mov byte [ebp + ecx - 0x101], dl
add ecx, 4
cmp ecx, 0x100
jb 0x418b30
xor ecx, ecx
lea esp, [esp]
inc byte [esi]
movzx eax, byte [esi]
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x104], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x103], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x102], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
mov byte [ebp + ecx - 0x101], dl
add ecx, 4
cmp ecx, 0x100
jb 0x418c30
xor ecx, ecx
lea esp, [esp]
inc byte [esi]
movzx eax, byte [esi]
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x104], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x103], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
inc byte [esi]
movzx eax, byte [esi]
mov byte [ebp + ecx - 0x102], dl
lea edi, [eax + esi + 2]
mov al, byte [edi]
add byte [esi + 1], al
movzx edx, byte [esi + 1]
mov dl, byte [edx + esi + 2]
mov byte [edi], dl
movzx edi, byte [esi + 1]
mov byte [edi + esi + 2], al
movzx edx, dl
movzx eax, al
add edx, eax
and edx, 0xff
movzx edx, byte [edx + esi + 2]
mov byte [ebp + ecx - 0x101], dl
add ecx, 4
cmp ecx, 0x100
jb 0x418d30
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004bf32e
mov esp, ebp
pop ebp
ret