RtlGetImageBaseAndLoadConfig

NTSTATUS __stdcall RtlGetImageBaseAndLoadConfig(VOID *EndingAddress, VOID **a2, INT64 *a3){
  INT64 v3; 
  INT64 v7; 
  UINT64 v9; 
  unsigned __int64 v10; 
  UINT64 v11; 
  _INVERTED_FUNCTION_TABLE_ENTRY a7; 
  int v13; 

  *(_QWORD *)&a7.SizeOfImage = 0i64;
  v7 = 0i64;
  v13 = 0;
  if( !RtlpLookupUserFunctionTableInverted(EndingAddress, &a7, (INT64)a3, v3, 0i64, v11, 0i64, 0i64) )
  {
    if( (int)MmGetImageInformation(EndingAddress, &a7.ImageBase, &v10, &v13) < 0 )
    {
      a7.ImageBase = 0i64;
    }
    else if( v10 >= 0xFFFFFFFF )
    {
      return -1073741675;
    }
  }
  v11 = 0i64;
  if( a7.ImageBase )
  {
    if( (unsigned __int64)a7.ImageBase + 64 > 0x7FFFFFFF0000i64
      || (void *)((unsigned __int64)a7.ImageBase + 64) < a7.ImageBase )
    {
      MEMORY[0x7FFFFFFF0000] = 0;
    }
    LODWORD(v9) = LdrImageDirectoryEntryToLoadConfig(a7.ImageBase);
    v7 = v9;
    v11 = v9;
  }
  *a2 = a7.ImageBase;
  *a3 = v7;
  return 0;
}

Referenced by:

KiVerifyContextIpForUserCet
RtlVerifyUserUnwindTarget