ExRngInitializeSystem
INT64 __stdcall ExRngInitializeSystem(){
__int64 *v0;
unsigned int v1;
__int64 v2;
__int64 v3;
__int64 v4;
__int128 *v5;
__int128 v6;
__int128 v7;
__int128 v8;
__int128 v9;
__int128 v10;
__int128 v11;
__int128 v12;
__int64 v13;
__int128 v14;
__int128 v15;
__int128 v16;
__int128 v17;
__int128 v18;
__int128 v19;
__int128 v20;
__int128 v21;
__int128 v22;
__int128 v23;
__int128 v24;
__int128 v25;
__int128 v26;
__int64 v27;
__int128 v28;
__int128 v29;
__int128 v30;
__int128 v31;
INT64 result;
_OWORD v33[14];
v0 = ExpLFGRngState;
v1 = 220;
ExpLFGRngLock = 0i64;
v2 = *((_QWORD *)KeLoaderBlock_0 + 30);
v3 = 2i64;
do
{
v4 = v1;
v1 += 220;
v5 = (__int128 *)(v4 + v2 + 1440);
v6 = v5[1];
v33[0] = *v5;
v7 = v5[2];
v33[1] = v6;
v8 = v5[3];
v33[2] = v7;
v9 = v5[4];
v33[3] = v8;
v10 = v5[5];
v33[4] = v9;
v11 = v5[6];
v33[5] = v10;
v12 = v5[7];
v5 += 8;
v33[6] = v11;
v13 = *((_QWORD *)v5 + 10);
v14 = *v5;
v33[7] = v12;
v15 = v5[1];
v33[8] = v14;
v16 = v5[2];
v33[9] = v15;
v17 = v5[3];
v33[10] = v16;
v18 = v5[4];
v33[11] = v17;
v33[12] = v18;
*(_QWORD *)&v33[13] = v13;
DWORD2(v33[13]) = *((_DWORD *)v5 + 22);
v19 = v33[0];
*((_DWORD *)v0 + 55) = 1;
v20 = v33[1];
*((_DWORD *)v0 + 56) = 32;
*(_OWORD *)v0 = v19;
v21 = v33[2];
*((_OWORD *)v0 + 1) = v20;
v22 = v33[3];
*((_OWORD *)v0 + 2) = v21;
v23 = v33[4];
*((_OWORD *)v0 + 3) = v22;
v24 = v33[5];
*((_OWORD *)v0 + 4) = v23;
v25 = v33[6];
*((_OWORD *)v0 + 5) = v24;
v26 = v33[7];
*((_OWORD *)v0 + 6) = v25;
*((_OWORD *)v0 + 7) = v26;
v27 = *(_QWORD *)&v33[13];
v28 = v33[9];
*((_OWORD *)v0 + 8) = v33[8];
v29 = v33[10];
*((_OWORD *)v0 + 9) = v28;
v30 = v33[11];
*((_OWORD *)v0 + 10) = v29;
v31 = v33[12];
*((_OWORD *)v0 + 11) = v30;
*((_OWORD *)v0 + 12) = v31;
v0[26] = v27;
*((_DWORD *)v0 + 54) = DWORD2(v33[13]);
*(_DWORD *)v0 |= 1u;
v0 = (__int64 *)((char *)v0 + 228);
--v3;
}
while( v3 );
ExpRemainingLeftoverBootRngData = (1024 - v1) >> 2;
memmove(&ExpLeftoverBootRngData, (UINT8 *)(v1 + v2 + 1440), 4i64 * ((1024 - v1) >> 2));
memset((void *)(v2 + 1440), 0, 0x400ui64);
memset(v33, 0, 0xDCui64);
ExpSecurityCookieRandomData = (unsigned __int64)(unsigned int)ExGenRandom(0i64) << 32;
result = (unsigned int)ExGenRandom(0i64);
ExpSecurityCookieRandomData = (unsigned int)result | (unsigned __int64)ExpSecurityCookieRandomData;
HIWORD(ExpSecurityCookieRandomData) = 0;
if( !ExpSecurityCookieRandomData )
ExpSecurityCookieRandomData = 1i64;
return result;
}Referenced by:
KiInitializeBootStructures