HalpMcaExtendedLogInitialize
NTSTATUS __stdcall HalpMcaExtendedLogInitialize(){
__int64 v0;
WCHAR v1;
_LARGE_INTEGER *v2;
UINT64 v3;
_LARGE_INTEGER v4;
_LARGE_INTEGER *v5;
NTSTATUS v6;
unsigned __int64 QuadPart;
_LARGE_INTEGER *v8;
_LARGE_INTEGER PhysicalAddress;
PhysicalAddress.QuadPart = 0i64;
v2 = 0i64;
v3 = 4096i64;
if( HalpMcaExtendedLogGetL1DirectoryBase(&PhysicalAddress, v0, v1) < 0 )
goto LABEL_13;
v4 = PhysicalAddress;
if( !PhysicalAddress.QuadPart )
goto LABEL_13;
v5 = (_LARGE_INTEGER *)MmMapIoSpaceEx(PhysicalAddress, 0x1000ui64, 0x204ui64);
v2 = v5;
if( !v5 )
{
LABEL_4:
v6 = -1073741670;
goto LABEL_14;
}
if( v5->anonymous_0.LowPart != 256 )
goto LABEL_13;
if( v5->anonymous_0.HighPart != 64 )
goto LABEL_13;
QuadPart = v5[1].QuadPart;
if( QuadPart <= 0x40 )
goto LABEL_13;
v3 = QuadPart;
MmUnmapIoSpace(v2, 0x1000ui64);
v8 = (_LARGE_INTEGER *)MmMapIoSpaceEx(v4, v3, 0x204ui64);
v2 = v8;
if( !v8 )
goto LABEL_4;
qword_140CF6228 = (__int64)v8;
dword_140CF6238 = v8[6].anonymous_0.LowPart;
qword_140CF6230 = (v8[1].QuadPart - (unsigned __int64)(unsigned int)v8->anonymous_0.HighPart) >> 3;
if( qword_140CF6230 < (unsigned __int64)(unsigned int)dword_140CF6238 )
{
LABEL_13:
v6 = -1073741637;
LABEL_14:
*(&stru_140CF2E80 + 7434) = 0;
if( qword_140CF6248 )
MmUnmapIoSpace(qword_140CF6248, v2[3].QuadPart);
goto LABEL_16;
}
qword_140CF6248 = MmMapIoSpaceEx(v8[2], v8[3].QuadPart, 0x204ui64);
if( qword_140CF6248 )
{
qword_140CF6240 = v2[2].QuadPart;
qword_140CF6250 = v2[3].QuadPart;
v2[4].anonymous_0.LowPart |= 1u;
return 0;
}
v6 = -1073741670;
*(&stru_140CF2E80 + 7434) = 0;
LABEL_16:
if( v2 )
MmUnmapIoSpace(v2, v3);
memset(&qword_140CF6228, 0, 0x30ui64);
return v6;
}Referenced by:
HalpInitializeMce