MiAddPrivateFixupEntryForSystemImage
__int64 __fastcall MiAddPrivateFixupEntryForSystemImage(__int64 a1, unsigned __int64 a2){
struct _RTL_BITMAP *v4;
struct _RTL_BITMAP *v5;
_QWORD *v6;
_QWORD *v7;
struct _RTL_BITMAP *v8;
unsigned __int64 v9;
_QWORD *v10;
LODWORD(v4) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
v5 = v4;
if( !v4 )
return 0i64;
LODWORD(v6) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
v7 = v6;
v8 = v5;
if( !v6 )
{
LABEL_6:
ExFreePoolWithTag(v8, 0);
return 0i64;
}
MiInitializePrivateFixupBitmap(v5, (_QWORD *)a1);
v7[5] = v5;
v7[6] = a1;
v7[2] = a2;
v7[3] = a2 + (unsigned int)((*(_DWORD *)(*(_QWORD *)a1 + 8i64) << 12) - 1);
v7[4] = *(_QWORD *)(*(_QWORD *)a1 + 32i64);
if( (unsigned int)MiGetSystemRegionType(a2) == 1
&& (*(_DWORD *)(a1 + 56) & 0x800) == 0
&& !(unsigned int)MiCreateSessionDriverProtos((__int64 *)a1, a2, (__int64)v7) )
{
ExFreePoolWithTag(v7, 0);
v8 = v5;
goto LABEL_6;
}
v9 = ExAcquireSpinLockExclusive(&dword_140C4CA24);
v10 = (_QWORD *)qword_140C4CA08;
if( *(__int64 **)qword_140C4CA08 != &qword_140C4CA00 )
__fastfail(3u);
*v7 = &qword_140C4CA00;
v7[1] = v10;
*v10 = v7;
qword_140C4CA08 = (__int64)v7;
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&dword_140C4CA24);
__writecr8(v9);
return 1i64;
}Referenced by:
MiGetSystemAddressForImage