MiValidateSectionSigningPolicy

INT64 __fastcall MiValidateSectionSigningPolicy(
        UINT64 a1,
        UINT64 a2,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        CHAR a7,
        CHAR a8,
        INT64 a9,
        CHAR a10,
        CHAR a11){
  int v13; 
  INT64 v15; 
  int v16; 
  __int64 v17; 
  __int64 v18; 
  int v19; 
  v13 = a1;
  if( (unsigned int)a1 >= 2 )
    return 3221225485i64;
  if( !a7 && !a8 )
    return 0i64;
  v15 = *((_QWORD *)KeGetCurrentThread() + 23);
  v16 = a6 | 0x2000000;
  if( a7 )
    v16 = a6;
  v19 = MiValidateSectionCreate(a2, a3, a4, a5, v16, a10, a11);
  if( v19 < 0 )
  {
    v18 = (unsigned int)(v13 != 1) + 1;
    dword_140C4C958 = (v13 != 1) + 1;
  }
  if( a7 == 1 && v19 < 0 )
  {
    if( v19 == -1073740760 && (_DWORD)a9 == 1 )
      EtwTimLogProhibitNonMicrosoftBinaries(2i64, v15, a10, *(_BYTE *)(*(_QWORD *)a3 + 15i64) >> 4, (UINT16 *)(a2 + 88));
  }
  else if( a8 == 1 )
  {
    if( v19 < 0 )
    {
      return 0;
    }
    else if( !qword_140C1D900
           || (LOBYTE(v17) = a11,
               LOBYTE(v18) = *(_BYTE *)(*(_QWORD *)a3 + 15i64) >> 4,
               !(unsigned int)qword_140C1D900(v18, v17)) )
    {
      EtwTimLogProhibitNonMicrosoftBinaries(1i64, v15, a11, *(_BYTE *)(*(_QWORD *)a3 + 15i64) >> 4, (UINT16 *)(a2 + 88));
    }
  }
  return(unsigned int)v19;
}

Referenced by:

MiValidateExistingImage