EtwTiLogReadWriteVm

CHAR __fastcall EtwTiLogReadWriteVm(INT64 a1, INT64 a2, INT64 a3, INT64 a4, CHAR a5, CHAR a6){
  _ETHREAD *CurrentThread; 
  int v7; 
  UINT64 v10; 
  UINT64 v11; 
  EVENT_DESCRIPTOR *v12; 
  __int64 *v13; 
  __int64 *v14; 
  int v15; 
  int v16; 
  int v17; 
  int v18; 
  int v19; 
  unsigned int v20; 
  __int64 v21; 
  __int64 v22; 
  UINT64 v23; 
  UINT64 a3a; 
  UINT64 v26; 
  EVENT_DATA_DESCRIPTOR UserData; 
  __int64 v28[32]; 
  int v29; 
  v29 = a1;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v7 = a4;
  if( *((_BYTE *)CurrentThread + 562) == 1 )
  {
    v10 = EtwThreatIntProvRegHandle;
    v11 = 196608i64;
    if( (_DWORD)a4 != 16 )
      v11 = 786432i64;
    LOBYTE(CurrentThread) = EtwProviderEnabled(EtwThreatIntProvRegHandle, 0, v11);
    if( (_BYTE)CurrentThread )
    {
      if( a2 == a3 )
      {
        v14 = THREATINT_READVM_LOCAL;
        v13 = THREATINT_WRITEVM_LOCAL;
      }
      else
      {
        v13 = (__int64 *)&THREATINT_WRITEVM_REMOTE;
        v14 = THREATINT_READVM_REMOTE;
      }
      if( v7 != 16 )
        v14 = v13;
      LOBYTE(CurrentThread) = EtwEventEnabled(v10, (EVENT_DESCRIPTOR *)v14, v12);
      if( (_BYTE)CurrentThread )
      {
        UserData.Reserved = 0;
        UserData.Ptr = (unsigned __int64)&v29;
        UserData.Size = 4;
        v15 = EtwpTiFillProcessIdentity(v28, a2, &a3a);
        v16 = EtwpTiFillThreadIdentity((INT64)(&UserData + (unsigned int)(v15 + 1)), (INT64)KeGetCurrentThread());
        v18 = EtwpTiFillProcessIdentity(&UserData.Ptr + 2 * (unsigned int)(v16 + v17), a3, &v26);
        v20 = v18 + v19;
        v21 = 2i64 * v20++;
        *(&UserData.Reserved + 2 * v21) = 0;
        *(&UserData.Ptr + v21) = (unsigned __int64)&a5;
        *(&UserData.Size + 2 * v21) = 8;
        v22 = 2i64 * v20;
        *(&UserData.Reserved + 2 * v22) = 0;
        *(&UserData.Ptr + v22) = (unsigned __int64)&a6;
        v23 = EtwThreatIntProvRegHandle;
        *(&UserData.Size + 2 * v22) = 8;
        LOBYTE(CurrentThread) = EtwWrite(v23, (EVENT_DESCRIPTOR *)v14, 0i64, v20 + 1, &UserData);
      }
    }
  }
  return(char)CurrentThread;
}

Referenced by:

MiReadWriteVirtualMemory