PfpLogApplicationEvent

INT64 __fastcall PfpLogApplicationEvent(__int64 a1, __int64 a2, char a3){
  int v5; 
  int v6; 
  __int64 v7; 
  _SECTION *v8; 
  int v9; 
  unsigned __int16 *v10; 
  __int64 v11; 
  __int64 v12; 
  unsigned int v13; 
  __int64 v14; 
  int SessionId; 
  UINT64 v16; 
  INT64 v17; 
  __int64 v19; 
  int v20; 
  _QWORD v21[3]; 
  __int64 v22; 
  __int64 SessionGlobalVA; 
  PVOID v24; 
  int v25; 
  int v26; 
  __int64 v27; 
  __int64 v28; 
  __int64 v29; 
  int v30; 
  unsigned __int16 v31; 
  UINT8 dst[1978]; 
  __int64 v33; 
  *(_OWORD *)&v21[1] = 0i64;
  if( dword_140C4FB18 >= (unsigned int)dword_140C4FB1C )
    return 3221225659i64;
  v5 = *(_DWORD *)(a1 + 1088);
  v6 = 0;
  v7 = *(_QWORD *)(a1 + 1128);
  v33 = 0i64;
  if( a3 )
  {
    v19 = *(_QWORD *)(a1 + 1088) ^ v7;
    LODWORD(v24) = v5;
    v22 = a1;
    v20 = *(_DWORD *)(a1 + 1524);
    SessionGlobalVA = v19 & 0x1FFFFFFFFFFFFFFFi64;
    v17 = 14i64;
    HIDWORD(v24) = v20;
    v16 = 24i64;
  }
  else
  {
    v26 = v5;
    v8 = (_SECTION *)&v21[1];
    HIDWORD(v22) = 0;
    v30 = 0;
    *(_WORD *)dst = 0;
    if( a2 )
      v8 = (_SECTION *)a2;
    v29 = a1;
    v9 = *(_DWORD *)(a1 + 1524);
    v27 = (*(_QWORD *)(a1 + 1088) ^ v7) & 0x1FFFFFFFFFFFFFFFi64;
    v25 = v9;
    MmGetDirectoryFrameFromProcess((_EPROCESS *)a1, v8, 0);
    v11 = *v10;
    v12 = *((_QWORD *)v10 + 1);
    v13 = v11;
    v28 = v14;
    if( (unsigned int)v11 > 0x7C0 )
      v13 = 1984;
    v31 = v13 >> 1;
    memmove(dst, (UINT8 *)(v11 + v12 - v13), v13);
    *(_WORD *)&dst[2 * v31] = 0;
    SessionId = MmGetSessionIdEx(a1);
    if( SessionId != -1 )
      v6 = SessionId;
    LODWORD(v22) = v6;
    SessionGlobalVA = MmGetSessionGlobalVA(a1);
    v16 = v13 + 64;
    v17 = 1i64;
    v24 = PsIdleProcess;
  }
  return PfLogEvent(
           v17,
           dword_140C5001C
         + (unsigned int)((((KUSER_SHARED_DATA.TickCountMultiplier
                           * (unsigned __int64)KUSER_SHARED_DATA.ReservedTickCountOverlay[1]) << 8)
                         + ((KUSER_SHARED_DATA.TickCountMultiplier
                           * (unsigned __int64)KUSER_SHARED_DATA.TickCount.LowPart) >> 24)) >> 10),
           &v22,
           v16);
}

Referenced by:

PfCalculateProcessHash
PspExitProcess