ExRngInitializeSystem
VOID __stdcall ExRngInitializeSystem(){
char *v0;
unsigned int v1;
_LOADER_PARAMETER_EXTENSION *Extension;
__int64 v3;
__int64 v4;
unsigned __int8 *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;
_OWORD v32[14];
v0 = (char *)&WheapDeferredInternalLogsEventLock + 736;
v1 = 220;
*(&WheapDeferredInternalLogsEventLock + 90) = 0i64;
Extension = KeLoaderBlock_0->Extension;
v3 = 2i64;
do
{
v4 = v1;
v1 += 220;
v5 = &Extension->BootEntropyResult.RngBytesForNtoskrnl[v4];
v6 = *((_OWORD *)v5 + 1);
v32[0] = *(_OWORD *)v5;
v7 = *((_OWORD *)v5 + 2);
v32[1] = v6;
v8 = *((_OWORD *)v5 + 3);
v32[2] = v7;
v9 = *((_OWORD *)v5 + 4);
v32[3] = v8;
v10 = *((_OWORD *)v5 + 5);
v32[4] = v9;
v11 = *((_OWORD *)v5 + 6);
v32[5] = v10;
v12 = *((_OWORD *)v5 + 7);
v5 += 128;
v32[6] = v11;
v13 = *((_QWORD *)v5 + 10);
v14 = *(_OWORD *)v5;
v32[7] = v12;
v15 = *((_OWORD *)v5 + 1);
v32[8] = v14;
v16 = *((_OWORD *)v5 + 2);
v32[9] = v15;
v17 = *((_OWORD *)v5 + 3);
v32[10] = v16;
v18 = *((_OWORD *)v5 + 4);
v32[11] = v17;
v32[12] = v18;
*(_QWORD *)&v32[13] = v13;
DWORD2(v32[13]) = *((_DWORD *)v5 + 22);
v19 = v32[0];
*((_DWORD *)v0 + 55) = 1;
v20 = v32[1];
*((_DWORD *)v0 + 56) = 32;
*(_OWORD *)v0 = v19;
v21 = v32[2];
*((_OWORD *)v0 + 1) = v20;
v22 = v32[3];
*((_OWORD *)v0 + 2) = v21;
v23 = v32[4];
*((_OWORD *)v0 + 3) = v22;
v24 = v32[5];
*((_OWORD *)v0 + 4) = v23;
v25 = v32[6];
*((_OWORD *)v0 + 5) = v24;
v26 = v32[7];
*((_OWORD *)v0 + 6) = v25;
*((_OWORD *)v0 + 7) = v26;
v27 = *(_QWORD *)&v32[13];
v28 = v32[9];
*((_OWORD *)v0 + 8) = v32[8];
v29 = v32[10];
*((_OWORD *)v0 + 9) = v28;
v30 = v32[11];
*((_OWORD *)v0 + 10) = v29;
v31 = v32[12];
*((_OWORD *)v0 + 11) = v30;
*((_OWORD *)v0 + 12) = v31;
*((_QWORD *)v0 + 26) = v27;
*((_DWORD *)v0 + 54) = DWORD2(v32[13]);
*(_DWORD *)v0 |= 1u;
v0 += 228;
--v3;
}
while( v3 );
*(&WheapDeferredInternalLogsEventLock + 178) = (1024 - v1) >> 2;
memmove(
(char *)&WheapDeferredInternalLogsEventLock + 1216,
&Extension->BootEntropyResult.RngBytesForNtoskrnl[v1],
4 * ((1024 - v1) >> 2));
memset(Extension->BootEntropyResult.RngBytesForNtoskrnl, 0, sizeof(Extension->BootEntropyResult.RngBytesForNtoskrnl));
memset(v32, 0, 0xDCui64);
*(&WheapDeferredInternalLogsEventLock + 88) = (unsigned __int64)(unsigned int)ExGenRandom(ExGenRandomDomainKernel) << 32;
*(&WheapDeferredInternalLogsEventLock + 88) |= (unsigned int)ExGenRandom(ExGenRandomDomainKernel);
*(&WheapDeferredInternalLogsEventLock + 355) = 0;
if( !*(&WheapDeferredInternalLogsEventLock + 88) )
*(&WheapDeferredInternalLogsEventLock + 88) = 1i64;
}Referenced by:
KiInitializeBootStructures