HvpInitMap
INT64 __fastcall HvpInitMap(INT64 a1, INT64 a2){
unsigned int v2;
INT64 v3;
INT64 v4;
INT64 v5;
unsigned int v7;
unsigned int v8;
unsigned int v9;
__int64 v10;
unsigned int v11;
__int64(__fastcall *v12)(__int64, _QWORD, __int64);
INT64 v13;
INT64 v14;
INT64 v15;
INT64 result;
INT64 v17;
unsigned int v18;
INT64 v19;
INT64 v20;
INT64 v21;
v2 = 0;
v3 = *(_QWORD *)(a1 + 56);
v4 = 0i64;
v5 = 0i64;
v7 = *(_DWORD *)(*(_QWORD *)(a1 + 64) + 40i64);
if( (v7 & 0xFFF) != 0 )
{
LODWORD(v21) = 0;
v18 = -1073741492;
v19 = 3221225804i64;
}
else
{
v8 = v7 >> 12;
if( v7 >> 12 )
v9 = (v8 - 1) >> 9;
else
v9 = 0;
*(_DWORD *)(a1 + 272) = v7;
if( *(_QWORD *)(a1 + 96) )
goto LABEL_10;
v2 = (v8 + 3) & 0xFFFFFFFC;
LOBYTE(a2) = 1;
if( !v2 )
v2 = 4;
v4 = (*(__int64(__fastcall **)(_QWORD, INT64, __int64))(a1 + 24))(v2, a2, 926043459i64);
if( v4 )
{
LOBYTE(v10) = 1;
v5 = (*(__int64(__fastcall **)(_QWORD, __int64, __int64))(a1 + 24))(v2, v10, 926043459i64);
if( !v5 )
{
v20 = 3221225495i64;
goto LABEL_23;
}
memset(v4, 0i64);
memset(v5, 0i64);
*(_QWORD *)(a1 + 96) = v4;
v11 = v7 >> 9;
*(_DWORD *)(a1 + 88) = v11;
*(_DWORD *)(a1 + 112) = v11;
*(_QWORD *)(a1 + 120) = v5;
*(_DWORD *)(a1 + 108) = v2;
LABEL_10:
v12 = *(__int64(__fastcall **)(__int64, _QWORD, __int64))(a1 + 24);
if( v9 )
{
v17 = v12(0x2000i64, 0i64, 942820675i64);
v15 = v17;
if( v17 )
{
memset(v17, 0i64);
if( HvpAllocateMap(a1, v15, 0i64, v9) )
{
v14 = 0i64;
goto LABEL_13;
}
LODWORD(v21) = 64;
v18 = -1073741670;
SetFailureLocation(v3, 0i64, 5i64, 3221225626i64, v21);
HvpFreeMap(a1, v15, 0i64, v9);
(*(void(__fastcall **)(INT64, __int64))(a1 + 32))(v15, 0x2000i64);
goto LABEL_27;
}
v20 = 3221225626i64;
LODWORD(v21) = 48;
LABEL_25:
v18 = v20;
SetFailureLocation(v3, 0i64, 5i64, v20, v21);
LABEL_27:
if( v4 )
{
if( *(_QWORD *)(a1 + 96) == v4 )
*(_QWORD *)(a1 + 96) = 0i64;
(*(void(__fastcall **)(INT64, _QWORD))(a1 + 32))(v4, v2);
}
if( v5 )
{
if( *(_QWORD *)(a1 + 120) == v5 )
*(_QWORD *)(a1 + 120) = 0i64;
(*(void(__fastcall **)(INT64, _QWORD))(a1 + 32))(v5, v2);
}
return v18;
}
v13 = v12(12288i64, 0i64, 909266243i64);
v14 = v13;
if( v13 )
{
memset(v13, 0i64);
v15 = a1 + 288;
LABEL_13:
*(_QWORD *)(a1 + 280) = v15;
result = 0i64;
*(_QWORD *)(a1 + 288) = v14;
return result;
}
v20 = 3221225626i64;
LABEL_23:
LODWORD(v21) = 32;
goto LABEL_25;
}
v19 = 3221225495i64;
LODWORD(v21) = 16;
v18 = -1073741801;
}
SetFailureLocation(v3, 0i64, 5i64, v19, v21);
return v18;
}Referenced by:
HvpBuildMapForMemoryBackedHive