PopDiagTraceIrpFinish

VOID __stdcall PopDiagTraceIrpFinish(_IRP *Irp){
  const WCHAR *v1; 
  __int64 v2; 
  int Status; 
  char v4; 
  int v5; 
  __int64 v6; 
  __int64 v7; 
  INT64 v8; 
  _DEVICE_OBJECT *DeviceThatFailedIrp; 
  UINT64 v10; 
  NTSTATUS v11; 
  wchar_t *v12; 
  __int64 v13; 
  _IRP *Irpa; 
  _EVENT_DATA_DESCRIPTOR UserData; 
  __int64 *v16; 
  __int64 v17; 
  const WCHAR *v18; 
  int v19; 
  int v20; 
  wchar_t DriverName[64]; 

  Irpa = Irp;
  PopDiagTraceIrpFinishTelemetry((INT64)Irp);
  if( PopDiagHandleRegistered && EtwEventEnabled(PopDiagHandle, &POP_ETW_EVENT_IRPFINISH) )
  {
    v1 = &ppszDestEnd;
    v2 = *((_QWORD *)&Irpa->Tail.IrpExtension + 9 * Irpa->StackCount);
    Status = Irpa->IoStatus.Status;
    LODWORD(v13) = Status;
    v4 = *(_BYTE *)(v2 + 184);
    v5 = *(_DWORD *)(v2 + 188);
    if( Status < 0 && !v5 )
    {
      DeviceThatFailedIrp = IoFindDeviceThatFailedIrp(Irpa);
      v11 = PopDiagGetDriverName(DeviceThatFailedIrp, DriverName, v10);
      Status = v13;
      v12 = DriverName;
      if( v11 < 0 )
        v12 = (wchar_t *)&ppszDestEnd;
      v1 = v12;
    }
    if( v5 == 1 && v4 == 2 )
    {
      v7 = *(_QWORD *)(v2 + 24);
      if( v7 )
        v8 = *(_QWORD *)(*(_QWORD *)(v7 + 312) + 40i64);
      else
        v8 = 0i64;
      PopFxAddLogEntry(v8, 0, 23, Status);
    }
    *(_QWORD *)&UserData.Size = 8i64;
    UserData.Ptr = (unsigned __int64)&Irpa;
    v16 = &v13;
    v6 = -1i64;
    v17 = 4i64;
    v18 = v1;
    do
      ++v6;
    while( v1[v6] );
    v19 = 2 * v6 + 2;
    v20 = 0;
    EtwWriteEx(PopDiagHandle, &POP_ETW_EVENT_IRPFINISH, 0i64, 0, 0, 0, 3u, &UserData);
  }
}

Referenced by:

PopDequeueQuerySetIrp
PopRequestCompletion