SepIsNgenImage

UINT8 __fastcall SepIsNgenImage(const _UNICODE_STRING *ImagePath){
  _EJOB *CurrentServerSilo; 
  __int64 v3; 
  unsigned int v4; 
  unsigned __int16 Length; 
  unsigned __int16 MaximumLength; 
  unsigned int v8; 
  UNICODE_STRING String1; 
  *(_DWORD *)(&String1.MaximumLength + 1) = 0;
  CurrentServerSilo = PsGetCurrentServerSilo();
  v3 = PsGetServerSiloGlobals((__int64)CurrentServerSilo)[97];
  if( !v3 )
    return 0;
  v4 = *(_DWORD *)v3;
  if( !*(_DWORD *)v3 )
    return 0;
  Length = ImagePath->Length;
  if( ImagePath->Length < *(_WORD *)(v3 + 4) )
    return 0;
  if( Length > *(_WORD *)(v3 + 6) )
    return 0;
  String1.Buffer = ImagePath->Buffer + 4;
  MaximumLength = ImagePath->MaximumLength;
  v8 = 0;
  String1.Length = Length - 8;
  String1.MaximumLength = MaximumLength - 8;
  if( !v4 )
    return 0;
  while( !RtlEqualUnicodeString(&String1, (UNICODE_STRING *)(16i64 * v8 + v3 + 8), 1u) )
  {
    if( ++v8 >= v4 )
      return 0;
  }
  return 1;
}

Referenced by:

SeQuerySigningPolicyWorker