HvlAddSecurePagesCallbackRoutine
NTSTATUS __stdcall HvlAddSecurePagesCallbackRoutine(){
int v0;
int v1;
INT64 v2;
unsigned __int8 v3;
INT64 v4;
int v5;
__int128 *v6;
__int64 *v7;
__int64 v8;
char v9;
char v10;
UINT64 v12;
int v13;
_LONGLONG *v14;
v13 = v0;
v14 = 0i64;
v3 = v1 | 4;
*(_QWORD *)(v2 + 24) = 0i64;
v4 = v2;
*(_DWORD *)(v2 + 8) = 0;
v5 = v1;
LOBYTE(v6) = IoIsPartialDumpRetry();
v8 = *v7;
v9 = (char)v6;
if( !*v7 )
goto LABEL_5;
if( BYTE3(xmmword_140C47300) != v3 )
{
LODWORD(v6) = (unsigned int)HvlpEndSecurePageListIteration(1i64, 0);
LOBYTE(xmmword_140C47300) = 0;
v8 = 0i64;
*(_QWORD *)v4 = 0i64;
}
if( !v8 )
{
LABEL_5:
xmmword_140C47300 = 0i64;
LODWORD(v12) = 0;
*(_OWORD *)&dword_140C47310 = 0i64;
xmmword_140C47320 = 0i64;
LODWORD(v6) = HvlpStartSecurePageListIteration(1i64, v3, 0i64, 0i64, v12, &v14);
if( (int)v6 < 0 )
return(int)v6;
*((_QWORD *)&xmmword_140C47320 + 1) = v14;
v6 = &xmmword_140C47300;
BYTE3(xmmword_140C47300) = v3;
LOBYTE(xmmword_140C47300) = 1;
*(_QWORD *)v4 = &xmmword_140C47300;
}
if( (_BYTE)xmmword_140C47300 )
{
if( BYTE1(xmmword_140C47300) || (LOBYTE(v6) = HvlpAddCrashdumpAreaPages(v4, 1), !(_BYTE)v6) )
{
if( BYTE2(xmmword_140C47300) || (LOBYTE(v6) = HvlpAddCrashdumpAreaPages(v4, 0), !(_BYTE)v6) )
{
if( !v9 || v5 == 1 && *(_DWORD *)(v4 + 12) == 395 || v5 == 2 && *(_DWORD *)(v4 + 12) == 131073 )
{
while( (_DWORD)xmmword_140C47320 )
{
LABEL_22:
*(_QWORD *)(v4 + 24) = (*qword_140C47318 >> 40) + 1i64;
LODWORD(v6) = -1;
*(_QWORD *)(v4 + 16) = *qword_140C47318++ & 0xFFFFFFFFFFi64;
LODWORD(xmmword_140C47320) = xmmword_140C47320 - 1;
if( *(_QWORD *)(v4 + 24) )
{
*(_DWORD *)(v4 + 8) = -2147483646;
if( v5 == 1 )
*(_DWORD *)(v4 + 8) = -2147483630;
else
*(_DWORD *)(v4 + 8) = -2147483614;
return(int)v6;
}
}
while( 1 )
{
LOBYTE(v13) = 0;
if( VslGetSecurePageList(0, 0i64, 0i64, &v13) < 0 )
break;
LODWORD(xmmword_140C47320) = *(unsigned __int16 *)(*((_QWORD *)&xmmword_140C47320 + 1) + 8i64);
qword_140C47318 = (_QWORD *)(*((_QWORD *)&xmmword_140C47320 + 1) + 16i64);
if( (_DWORD)xmmword_140C47320 )
goto LABEL_22;
}
}
LODWORD(v6) = (unsigned int)HvlpEndSecurePageListIteration(1i64, 0);
LOBYTE(xmmword_140C47300) = 0;
}
else
{
BYTE2(xmmword_140C47300) = 1;
}
}
else
{
BYTE1(xmmword_140C47300) = v10;
}
}
return(int)v6;
}Referenced by:
HvlAddSecureHvPagesCallbackRoutine
HvlAddSecureSkPagesCallbackRoutine