RtlRestoreBootStatusDefaults
NTSTATUS __stdcall RtlRestoreBootStatusDefaults(_HANDLE FileHandle){
__int64 v1;
const __m128i *v2;
__m128i v3;
__int64 v4;
__m128i v5;
__m128i v6;
__m128i v7;
__m128i v8;
int v9;
_OWORD *v10;
_OWORD *v11;
_LARGE_INTEGER ByteOffset;
_IO_STATUS_BLOCK IoStatusBlock;
_BYTE Buffer[176];
v1 = *(_QWORD *)&FileHandle;
IoStatusBlock = 0i64;
memset(&Buffer[4], 0i64, 0xACu);
*(_DWORD *)Buffer = 176;
RtlGetNtProductType((_NT_PRODUCT_TYPE *)&Buffer[4]);
*(_DWORD *)&Buffer[168] = 0;
v2 = (const __m128i *)Buffer;
v3 = 0i64;
*(_WORD *)&Buffer[9] = 286;
v4 = 11i64;
Buffer[49] = 1;
Buffer[11] = 0;
do
{
v5 = _mm_loadu_si128(v2++);
v3 = _mm_sub_epi8(v3, v5);
--v4;
}
while( v4 );
ByteOffset.QuadPart = 0i64;
v6 = _mm_add_epi8(v3, _mm_srli_si128(v3, 8));
v7 = _mm_add_epi8(v6, _mm_srli_si128(v6, 4));
v8 = _mm_add_epi8(v7, _mm_srli_si128(v7, 2));
Buffer[50] = _mm_cvtsi128_si32(_mm_add_epi8(v8, _mm_srli_si128(v8, 1)));
RtlpRecordBootStatusData(0, (__int64)Buffer, 0i64, 176i64);
v9 = ZwWriteFile(v1, 0, 0i64, 0i64, &IoStatusBlock, Buffer, 0xB0u, &ByteOffset, 0i64);
if( v9 >= 0 )
{
if( BootStatFileHandleAcquired )
{
if( *(_QWORD *)&BootStatFileHandle == v1 )
{
v10 = BootStatDataCache;
if( BootStatDataCache )
{
*(_OWORD *)BootStatDataCache = *(_OWORD *)Buffer;
v10[1] = *(_OWORD *)&Buffer[16];
v10[2] = *(_OWORD *)&Buffer[32];
v10[3] = *(_OWORD *)&Buffer[48];
v10[4] = *(_OWORD *)&Buffer[64];
v10[5] = *(_OWORD *)&Buffer[80];
v10[6] = *(_OWORD *)&Buffer[96];
v11 = v10 + 8;
*(v11 - 1) = *(_OWORD *)&Buffer[112];
*v11 = *(_OWORD *)&Buffer[128];
v11[1] = *(_OWORD *)&Buffer[144];
v11[2] = *(_OWORD *)&Buffer[160];
}
}
}
}
return v9;
}Referenced by:
No references.