HvpGetHiveHeader
__int64 __fastcall HvpGetHiveHeader(__int64 a1, char **a2, _QWORD *a3){
char **v4;
INT64 v6;
INT64 v7;
int v8;
unsigned int v9;
unsigned int v10;
unsigned int v11;
int v12;
int v14;
*a2 = 0i64;
v4 = a2;
LOBYTE(a2) = 1;
v6 = (*(__int64(__fastcall **)(_QWORD, char **, __int64))(a1 + 24))(*(unsigned int *)(a1 + 132), a2, 842222915i64);
v7 = v6;
if( v6 )
{
memset(v6, 0i64);
if( (*(int(__fastcall **)(__int64, _QWORD, _QWORD, INT64, _DWORD))(a1 + 48))(
a1,
0i64,
0i64,
v7,
*(_DWORD *)(a1 + 136) << 9) >= 0 )
{
if( *(_DWORD *)v7 == 1718052210 && *(_DWORD *)(v7 + 508) == (unsigned int)HvpHeaderCheckSum((_DWORD *)v7) )
{
v8 = *(_DWORD *)(v7 + 40);
if( (unsigned int)(v8 - 1) <= 0x7FFFDFFF && (v8 & 0xFFF) == 0 )
{
if( !*(_DWORD *)(v7 + 28) )
{
v9 = *(_DWORD *)(v7 + 20);
if( v9 <= 1 )
{
v10 = *(_DWORD *)(v7 + 24);
v11 = 3;
if( v10 >= 3 && (v10 <= 6 || v9 != 1) && *(_DWORD *)(v7 + 32) == 1 )
{
*a3 = *(_QWORD *)(v7 + 12);
v12 = *(_DWORD *)(v7 + 8);
*v4 = (char *)v7;
if( *(_DWORD *)(v7 + 4) == v12 )
*(_DWORD *)(v7 + 44) = 1;
else
return 5;
return v11;
}
}
}
goto LABEL_16;
}
}
v14 = (*(__int64(__fastcall **)(__int64, _QWORD, __int64, INT64, _DWORD))(a1 + 48))(
a1,
0i64,
4096i64,
v7,
*(_DWORD *)(a1 + 136) << 9);
if( v14 == -1073741807 )
{
LABEL_16:
v11 = 0;
LABEL_26:
(*(void(__fastcall **)(INT64, _QWORD))(a1 + 32))(v7, *(unsigned int *)(a1 + 132));
return v11;
}
if( v14 >= 0 )
{
if( *(_DWORD *)v7 == 1852400232 && !*(_DWORD *)(v7 + 4) )
{
v11 = 4;
*a3 = *(_QWORD *)(v7 + 20);
goto LABEL_26;
}
goto LABEL_16;
}
}
v11 = 7;
goto LABEL_26;
}
return 2i64;
}Referenced by:
No references.