RtlRestoreBootStatusDefaults
INT64 __stdcall RtlRestoreBootStatusDefaults(HANDLE FileHandle){
const __m128i *p_a2;
__m128i v3;
__int64 v4;
__m128i v5;
__m128i v6;
__m128i v7;
__m128i v8;
NTSTATUS v9;
_OWORD *v10;
_OWORD *v11;
union _LARGE_INTEGER ByteOffset;
struct _IO_STATUS_BLOCK IoStatusBlock;
__int128 a2;
__int128 v16;
__int128 v17;
__int128 v18;
__int128 v19;
__int128 v20;
__int128 v21;
__int128 v22;
__int128 v23;
__int128 v24;
__int128 v25;
IoStatusBlock = 0i64;
memset((INT64)&a2 + 4, 0i64);
LODWORD(a2) = 176;
RtlGetNtProductType((_NT_PRODUCT_TYPE *)&a2 + 1);
DWORD2(v25) = 0;
p_a2 = (const __m128i *)&a2;
v3 = 0i64;
*(_WORD *)((char *)&a2 + 9) = 286;
v4 = 11i64;
BYTE1(v18) = 1;
BYTE11(a2) = 0;
do
{
v5 = _mm_loadu_si128(p_a2++);
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));
BYTE2(v18) = _mm_cvtsi128_si32(_mm_add_epi8(v8, _mm_srli_si128(v8, 1)));
RtlpRecordBootStatusData(0, (INT64)&a2, 0i64, 176i64);
v9 = ZwWriteFile(FileHandle, 0i64, 0i64, 0i64, &IoStatusBlock, &a2, 0xB0u, &ByteOffset, 0i64);
if( v9 >= 0 )
{
if( BootStatFileHandleAcquired )
{
if( BootStatFileHandle == FileHandle )
{
v10 = BootStatDataCache;
if( BootStatDataCache )
{
*(_OWORD *)BootStatDataCache = a2;
v10[1] = v16;
v10[2] = v17;
v10[3] = v18;
v10[4] = v19;
v10[5] = v20;
v10[6] = v21;
v11 = v10 + 8;
*(v11 - 1) = v22;
*v11 = v23;
v11[1] = v24;
v11[2] = v25;
}
}
}
}
return(unsigned int)v9;
}Referenced by:
PopBootStatRestoreDefaults