Function at 0x559e10
Capabilities:
Generate random numbers via rtlgenrandom
Generate random numbers via winapi

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x350
mov edi, edx
mov edx, dword [ebp + 8]
mov dword [esp + 0x10], ecx
movsd xmm1, qword [edx + 0x20]
movsd xmm2, qword [edx + 0x18]
mov eax, dword [edx + 0x30]
movsd xmm0, qword [edx + 0x28]
movsd qword [esp + 0x38], xmm1
movsd qword [esp + 0x30], xmm2
movsd xmm1, qword [edx + 0x10]
movsd xmm2, qword [edx]
mov dword [esp + 0x48], eax
movsd qword [esp + 0x40], xmm0
movsd qword [esp + 0x28], xmm1
movsd xmm1, qword [edx + 8]
movsd qword [esp + 0x18], xmm2
mov eax, dword [esp + 0x18]
movsd qword [esp + 0x20], xmm1
mov edx, dword [eax + 0x10]
cmp edx, 0x31
jae 0x55a288
mov dword [esp + 0xc], eax
mov eax, dword [edi + 8]
mov esi, dword [eax]
mov eax, dword [esi + 0xc]
cmp eax, 0xd
jae 0x55a299
lea ecx, [eax*4]
cmp ecx, edx
jne 0x55a267
xorps xmm0, xmm0
lea ecx, [esp + 0x1c]
add esi, 0x70
lea ebx, [esp + 0x1e0]
movaps xmmword [esp + 0x200], xmm0
movaps xmmword [esp + 0x1f0], xmm0
movaps xmmword [esp + 0x1e0], xmm0
push eax
push ebx
push eax
push esi
push 0
call fcn.00552880
add esp, 0x14
test al, al
jne 0x55a267
movaps xmm0, xmmword [esp + 0x200]
movaps xmm2, xmmword [esp + 0x1e0]
movaps xmm1, xmmword [esp + 0x1f0]
mov eax, dword [edi + 4]
lea edx, [esp + 0x2c0]
movaps xmmword [esp + 0x2c0], xmm2
movaps xmmword [esp + 0x2e0], xmm0
movaps xmmword [esp + 0x2d0], xmm1
xorps xmm2, xmm2
mov ecx, dword [eax]
add eax, 8
mov ecx, dword [ecx + 4]
movaps xmmword [esp + 0x200], xmm2
movaps xmmword [esp + 0x1f0], xmm2
movaps xmmword [esp + 0x1e0], xmm2
push eax
push edx
lea eax, [esp + 0x1e8]
push eax
call ecx
add esp, 0xc
movaps xmm2, xmmword [esp + 0x1e0]
movaps xmm0, xmmword [esp + 0x200]
movaps xmm1, xmmword [esp + 0x1f0]
mov eax, dword [edi]
mov dword [esp + 0x14], edi
mov esi, dword [edi + 0xc]
movaps xmmword [esp + 0x90], xmm2
xorps xmm2, xmm2
movaps xmmword [esp + 0xb0], xmm0
movaps xmmword [esp + 0xa0], xmm1
movaps xmmword [esp + 0x1d0], xmm2
movaps xmmword [esp + 0x1c0], xmm2
movaps xmmword [esp + 0x1b0], xmm2
movaps xmmword [esp + 0x1a0], xmm2
mov edi, dword [eax + 0x10]
cmp edi, 0x41
jae 0x55a2aa
test edi, edi
je 0x559fe5
lea ebx, [esp + 0x1a0]
push 2
push edi
push ebx
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
cmp eax, 0xc0000000
jb 0x559fe5
push edi
push ebx
call dword [sym.imp.advapi32.dll_SystemFunction036]
test al, al
je 0x55a245
movsd xmm0, qword [esi + 0x38]
lea edx, [esp + 0x1a0]
movsd qword [esp + 0x178], xmm0
movsd xmm0, qword [esi + 0x30]
movsd qword [esp + 0x170], xmm0
movsd xmm0, qword [esi + 0x28]
movsd qword [esp + 0x168], xmm0
movsd xmm0, qword [esi + 0x20]
movsd qword [esp + 0x160], xmm0
movsd xmm0, qword [esi + 0x18]
movsd qword [esp + 0x158], xmm0
movsd xmm0, qword [esi + 0x10]
movsd qword [esp + 0x150], xmm0
movsd xmm0, qword [esi]
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0x140], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x148], xmm1
movaps xmmword [esp + 0xc0], xmm0
movaps xmmword [esp + 0xd0], xmm0
movaps xmmword [esp + 0xe0], xmm0
movaps xmmword [esp + 0xf0], xmm0
movaps xmmword [esp + 0x100], xmm0
movaps xmmword [esp + 0x110], xmm0
movaps xmmword [esp + 0x120], xmm0
movaps xmmword [esp + 0x130], xmm0
mov dword [esp + 0x184], 0
mov dword [esp + 0x180], 0
mov dword [esp + 0x188], esi
lea esi, [esp + 0xc0]
mov dword [esp + 0x190], 0
mov ecx, esi
push edi
call fcn.00557170
add esp, 4
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x10]
cmp eax, 0x31
jae 0x55a2bb
mov ecx, esi
lea edx, [esp + 0x1c]
push eax
call fcn.00557170
add esp, 4
push 0xd8
push esi
lea ebx, [esp + 0x1e8]
push ebx
call fcn.007bd9b0
add esp, 0xc
mov eax, dword [esp + 0x2a8]
lea esi, [esp + 0x260]
lea edi, [esp + 0x2f8]
mov ecx, 0x14
mov eax, dword [eax + 0x50]
rep movsd dword es:[edi], dword [esi]
cmp eax, 0x81
jae 0x55a2cc
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x2f8]
push dword [esp + 0x2b0]
push eax
push ebx
call fcn.00557400
add esp, 0xc
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x55a23b
mov ebx, dword [esp + 0x10]
movsd xmm0, qword [esp + 0x88]
mov esi, dword [ebp + 8]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
movsd qword [ebx + 0x3c], xmm0
movsd xmm0, qword [esp + 0x80]
mov dword [esp + 0xc], ecx
add esi, 0x34
lea edi, [ebx + 0x78]
mov ecx, 0x1a
movsd qword [ebx + 0x34], xmm0
movsd xmm0, qword [esp + 0x78]
movsd qword [ebx + 0x2c], xmm0
movsd xmm0, qword [esp + 0x70]
movsd qword [ebx + 0x24], xmm0
movsd xmm0, qword [esp + 0x68]
movsd qword [ebx + 0x1c], xmm0
movsd xmm0, qword [esp + 0x60]
movsd qword [ebx + 0x14], xmm0
movsd xmm0, qword [esp + 0x58]
movsd qword [ebx + 0xc], xmm0
rep movsd dword es:[edi], dword [esi]
movsd xmm1, qword [esp + 0xb0]
movsd xmm2, qword [esp + 0xa8]
movsd xmm0, qword [esp + 0xb8]
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
movsd qword [ebx + 0x68], xmm1
movsd xmm1, qword [esp + 0xa0]
movsd qword [ebx + 0x60], xmm2
movsd xmm2, qword [esp + 0x90]
movsd qword [ebx + 0x70], xmm0
movsd qword [ebx + 0x58], xmm1
movsd xmm1, qword [esp + 0x98]
movsd qword [ebx + 0x48], xmm2
movsd qword [ebx + 0x50], xmm1
mov dword [ebx], eax
mov dword [ebx + 4], esi
mov dword [ebx + 8], edx
mov dword [ebx + 0x44], ecx
jmp 0x55a25f
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
jmp 0x55a24f
mov eax, str.RNG_failed
mov ecx, 0xa
mov edx, dword [esp + 0x10]
mov dword [edx + 4], eax
mov dword [edx + 8], ecx
mov dword [edx], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esp + 0x1e0]
mov ecx, 0x93b384
mov edx, 0x2b
push 0x89ceb0
push 0x89be14
push eax
call fcn.007c1f60
mov ecx, edx
mov edx, 0x30
push 0x89cdec
call fcn.007c1c40
mov ecx, eax
mov edx, 0xc
push 0x89d8a8
call fcn.007c1c40
mov ecx, edi
mov edx, 0x40
push 0x89d114
call fcn.007c1c40
mov ecx, eax
mov edx, 0x30
push 0x89cdec
call fcn.007c1c40
mov ecx, eax
mov edx, 0x80
push 0x89cb58
call fcn.007c1c40
int3