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