ExpInitBootEntropyInformation
UINT64 __stdcall ExpInitBootEntropyInformation(_RTL_RUN_ONCE *RunOnce, VOID *Parameter, VOID **Context){
unsigned int *v4;
_BOOT_ENTROPY_LDR_RESULT *p_BootEntropyResult;
_DWORD *v6;
signed __int64 v7;
__int64 v8;
__int128 v9;
v4 = *(unsigned int **)Parameter;
p_BootEntropyResult = &KeLoaderBlock_0->Extension->BootEntropyResult;
if( *(_QWORD *)Parameter )
{
memset(v4, 0i64, 0x448u);
v6 = v4 + 4;
v7 = (char *)p_BootEntropyResult - (char *)v4;
v8 = 10i64;
do
{
*(v6 - 2) = *(_DWORD *)((char *)v6 + v7 - 8);
*(_QWORD *)v6 = *(_QWORD *)((char *)v6 + v7);
v6[2] = *(_DWORD *)((char *)v6 + v7 + 8);
v6[3] = *(_DWORD *)((char *)v6 + v7 + 12);
*((_QWORD *)v6 + 2) = *(_QWORD *)((char *)v6 + v7 + 16);
v6[6] = *(_DWORD *)((char *)v6 + v7 + 24);
v9 = *(_OWORD *)((char *)v6 + v7 + 28);
v6 += 26;
*(_OWORD *)(v6 - 19) = v9;
*(_OWORD *)(v6 - 15) = *(_OWORD *)((char *)v6 + v7 - 60);
*(_OWORD *)(v6 - 11) = *(_OWORD *)((char *)v6 + v7 - 44);
*(_OWORD *)(v6 - 7) = *(_OWORD *)((char *)v6 + v7 - 28);
--v8;
}
while( v8 );
*v4 = p_BootEntropyResult->maxEntropySources;
*(_OWORD *)(v4 + 262) = *(_OWORD *)p_BootEntropyResult->SeedBytesForCng;
*(_OWORD *)(v4 + 266) = *(_OWORD *)&p_BootEntropyResult->SeedBytesForCng[16];
*(_OWORD *)(v4 + 270) = *(_OWORD *)&p_BootEntropyResult->SeedBytesForCng[32];
}
memset(p_BootEntropyResult, 0, 0x448ui64);
*(_QWORD *)Parameter = -1i64;
return 1i64;
}Referenced by:
No references.