EtwTimLogUserCetSetContextIpValidationFailure

unsigned __int8 __fastcall EtwTimLogUserCetSetContextIpValidationFailure(
        int a1,
        _EPROCESS *a2,
        void *a3,
        int a4,
        int a5){
  _OBJECT_NAME_INFORMATION *ImageFileName; 
  __int64 *v6; 
  const wchar_t *v7; 
  unsigned __int16 v9; 
  unsigned int v10; 
  int v11; 
  const wchar_t *v12; 
  wchar_t *Buffer; 
  int Length; 
  __int16 v15; 
  unsigned int v16; 
  unsigned __int16 *Pool2; 
  unsigned __int16 *v18; 
  unsigned __int16 v19; 
  __int64 v20; 
  __int64 v21; 
  __int64 v22; 
  const _EVENT_DESCRIPTOR *v23; 
  unsigned int v24; 
  int v25; 
  __int64 v26; 
  __int64 v27; 
  ULONG v28; 
  REGHANDLE v29; 
  unsigned __int8 result; 
  unsigned __int16 *v31; 
  __int16 v32[2]; 
  __int16 v33[2]; 
  __int16 v34[2]; 
  int v35; 
  int v36; 
  PVOID BaseAddress; 
  __int64 v38; 
  __int64 v39; 
  __int64 v40; 
  _UNICODE_STRING CommandLine; 
  _EVENT_DATA_DESCRIPTOR v42; 
  int *v43; 
  __int64 v44; 
  int *v45; 
  __int64 v46; 
  __int64 v47; 
  int v48[2]; 
  int *v49; 
  __int64 v50; 
  wchar_t *v51; 
  int v52[2]; 
  __int64 *v53; 
  __int64 v54; 
  int *v55; 
  __int64 v56; 
  __int64 v57; 
  int v58[2]; 
  int *v59; 
  __int64 v60; 
  PVOID *p_BaseAddress; 
  __int64 v62; 
  __int64 *v63; 
  __int64 v64; 
  _EVENT_DATA_DESCRIPTOR UserData; 
  const wchar_t *v66; 
  int v67; 
  int v68; 
  __int16 *v69; 
  __int64 v70; 
  wchar_t *v71; 
  int v72; 
  int v73; 
  __int64 v74[20]; 
  int v75; 

  v75 = a4;
  ImageFileName = a2->SeAuditProcessCreationInfo.ImageFileName;
  v6 = &EmptyUnicodeString;
  v36 = a1;
  v38 = 0i64;
  BaseAddress = a3;
  if( ImageFileName )
    v6 = (__int64 *)ImageFileName;
  v7 = L"(null)";
  CommandLine = 0i64;
  v9 = *(_WORD *)v6;
  v10 = 12;
  *(_QWORD *)&UserData.Size = 2i64;
  if( v9 )
  {
    v32[0] = v9 >> 1;
    UserData.Ptr = (unsigned __int64)v32;
    v11 = *(unsigned __int16 *)v6;
    v12 = (const wchar_t *)v6[1];
  }
  else
  {
    v32[0] = 6;
    UserData.Ptr = (unsigned __int64)v32;
    v12 = L"(null)";
    v11 = 12;
  }
  v66 = v12;
  v67 = v11;
  v68 = 0;
  EtwpQueryProcessCommandLine(a2, &CommandLine);
  Buffer = CommandLine.Buffer;
  LOWORD(v35) = CommandLine.Length;
  v70 = 2i64;
  if( CommandLine.Length )
  {
    v71 = CommandLine.Buffer;
    v69 = v34;
    Length = CommandLine.Length;
    v15 = CommandLine.Length >> 1;
  }
  else
  {
    v71 = L"(null)";
    v69 = v34;
    Length = 12;
    v15 = 6;
  }
  v72 = Length;
  v34[0] = v15;
  v73 = 0;
  v16 = EtwpTiFillProcessIdentity(v74, (__int64)a2, (unsigned __int64 *)&v38) + 4;
  Pool2 = (unsigned __int16 *)ExAllocatePool2(256i64, 0x200ui64, 0x6E734954ui64);
  v18 = Pool2;
  if( Pool2
    && (ZwQueryVirtualMemory(-1, BaseAddress, MemoryMappedFilenameInformation, Pool2, 512, 0i64) >= 0 ? (v19 = *v18) : (*v18 = 0, v19 = 0),
        v19) )
  {
    v33[0] = v19 >> 1;
    v20 = 2i64 * v16;
    *(&UserData.Ptr + v20) = (unsigned __int64)v33;
    *((_QWORD *)&UserData.Size + v20) = 2i64;
    v10 = *v18;
    v7 = (const wchar_t *)*((_QWORD *)v18 + 1);
  }
  else
  {
    v33[0] = 6;
    v21 = 2i64 * v16;
    *(&UserData.Ptr + v21) = (unsigned __int64)v33;
    *((_QWORD *)&UserData.Size + v21) = 2i64;
  }
  v22 = 2i64 * (v16 + 1);
  v23 = (const _EVENT_DESCRIPTOR *)MITIGATION_AUDIT_USER_CET_SET_CONTEXT_IP_VALIDATION_FAILURE;
  v24 = v16 + 2;
  *(&UserData.Ptr + v22) = (unsigned __int64)v7;
  *(&UserData.Size + 2 * v22) = v10;
  *(&UserData.Reserved + 2 * v22) = 0;
  v25 = v36;
  v26 = 2i64 * v24++;
  *(&UserData.Ptr + v26) = (unsigned __int64)&v75;
  *((_QWORD *)&UserData.Size + v26) = 4i64;
  v27 = 2i64 * v24;
  v28 = v24 + 1;
  *(&UserData.Ptr + v27) = (unsigned __int64)&a5;
  v29 = *(&ExBootDevicesRemovedEvent + 248);
  *((_QWORD *)&UserData.Size + v27) = 4i64;
  if( v25 != 1 )
    v23 = &MITIGATION_ENFORCE_USER_CET_SET_CONTEXT_IP_VALIDATION_FAILURE;
  result = EtwWrite(v29, v23, 0, v28, &UserData);
  if( *(&stru_140C00F40 + 1820) > 5u )
  {
    result = tlgKeywordOn((__int64)&stru_140C00F40 + 7280, 0x400000000000i64);
    if( result )
    {
      v36 = v25;
      v43 = &v36;
      v44 = 4i64;
      v45 = v48;
      v47 = v6[1];
      v48[0] = *(unsigned __int16 *)v6;
      v49 = v52;
      v52[0] = (unsigned __int16)v35;
      v39 = v38;
      v53 = &v39;
      v55 = v58;
      v57 = *((_QWORD *)v31 + 1);
      v58[0] = *v31;
      v35 = v75;
      v59 = &v35;
      LODWORD(BaseAddress) = a5;
      p_BaseAddress = &BaseAddress;
      v63 = &v40;
      v46 = 2i64;
      v48[1] = 0;
      v50 = 2i64;
      v51 = Buffer;
      v52[1] = 0;
      v54 = 8i64;
      v56 = 2i64;
      v58[1] = 0;
      v60 = 4i64;
      v62 = 4i64;
      v40 = 0x1000000i64;
      v64 = 8i64;
      result = tlgWriteTransfer_EtwWriteTransfer(
                 (__int64)&stru_140C00F40 + 7280,
                 (unsigned __int8 *)byte_14002C565,
                 0i64,
                 0i64,
                 0xDu,
                 &v42);
    }
  }
  if( Buffer )
    result = (unsigned __int8)ExFreePoolWithTag(Buffer, 0);
  if( v18 )
    return(unsigned __int8)ExFreePoolWithTag(v18, 0);
  return result;
}

Referenced by:

KiLogUserCetSetContextIpValidationFailureWorker