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