SeValidateImageHeader

NTSTATUS __stdcall SeValidateImageHeader(
        _FILE_OBJECT *File,
        VOID *Base,
        UINT64 SizeOfHeaders,
        _EPROCESS *CallingProcess,
        VOID *ProcessToken,
        UINT64 SecureType,
        VOID **SePool,
        UINT8 SeRequestedSigningLevel,
        UINT8 *SeValidatedSigningLevel,
        _SE_IMAGE_SIGNATURE_TYPE *SeSignatureType){
  _BDCB_IMAGE_INFORMATION **p_SigningInfo; 
  NTSTATUS v11; 
  NTSTATUS v13; 
  char v14; 
  char v15; 
  UINT64 SigningInfoSize; 
  _BDCB_IMAGE_INFORMATION *SigningInfo; 
  char v18; 
  char v19; 
  __int64 v20; 
  __int64 v21; 

  SigningInfo = 0i64;
  p_SigningInfo = 0i64;
  LODWORD(SigningInfoSize) = 0;
  if( !qword_140C1D8E0 )
    return -1073740760;
  if( ((unsigned __int8)SeValidatedSigningLevel & 1) != 0 )
  {
    p_SigningInfo = &SigningInfo;
    if( !_InterlockedCompareExchange(&dword_140CEC524, 0, 0) )
      p_SigningInfo = 0i64;
  }
  v15 = v19;
  v14 = v18;
  v11 = ((__int64(__fastcall *)(_FILE_OBJECT *, VOID *, UINT64, _EPROCESS *, _DWORD, UINT64, VOID **, _QWORD, _DWORD, _SE_IMAGE_SIGNATURE_TYPE *, char, char, __int64, __int64, _BDCB_IMAGE_INFORMATION **, UINT64 *))qword_140C1D8E0)(
          File,
          Base,
          SizeOfHeaders,
          CallingProcess,
          (_DWORD)ProcessToken,
          SecureType,
          SePool,
          SeRequestedSigningLevel,
          (_DWORD)SeValidatedSigningLevel,
          SeSignatureType,
          v14,
          v15,
          v20,
          v21,
          p_SigningInfo,
          &SigningInfoSize);
  if( v11 >= 0 )
  {
    if( SigningInfo )
    {
      v13 = SepScheduleImageVerificationCallbacks(SigningInfo, (unsigned int)SigningInfoSize);
      if( v13 < 0 )
      {
        v11 = v13;
        ExFreePoolWithTag(SigningInfo, 0x63734943u);
      }
    }
  }
  return v11;
}

Referenced by:

MiValidateSectionCreate