IopLiveDumpTracePopulateBitmapForDumpDuration

CHAR __fastcall IopLiveDumpTracePopulateBitmapForDumpDuration(GUID *a1, INT64 a2, INT64 a3){
  int v4; 
  _DWORD *v5; 
  EVENT_DESCRIPTOR *v6; 
  UINT64 UserDataCount; 
  INT64 v9; 
  INT64 v10; 
  struct _EVENT_DATA_DESCRIPTOR UserData; 
  INT64 *v12; 
  int v13; 
  int v14; 
  struct _EVENT_DATA_DESCRIPTOR v15; 
  INT64 *v16; 
  int v17; 
  int v18; 
  INT64 *v19; 
  int v20; 
  int v21; 
  INT64 v22; 
  INT64 v23; 
  v23 = a3;
  v22 = a2;
  LOBYTE(v4) = IopLiveDumpIsTracingEnabled();
  if( (_BYTE)v4 )
  {
    if( !v5[104] )
    {
      v4 = v5[78];
      if( (v4 & 1) != 0 )
      {
        UserData.Reserved = 0;
        v14 = 0;
        v6 = (EVENT_DESCRIPTOR *)LIVEDUMP_EVENT_SIZING_WORKFLOW_SYSTEM_QUISCED_POPULATE_BITMAP_FOR_DUMP;
        UserData.Ptr = (unsigned __int64)&v22;
        v12 = &v23;
        if( (v5[20] & 1) == 0 )
          v6 = (EVENT_DESCRIPTOR *)&LIVEDUMP_EVENT_CAPTURE_PAGES_WORKFLOW_SYSTEM_QUISCED_POPULATE_BITMAP_FOR_DUMP;
        UserData.Size = 8;
        v13 = 8;
        LODWORD(UserDataCount) = 2;
        LOBYTE(v4) = EtwWriteEx(IopLiveDumpEtwRegHandle, v6, 0i64, 0i64, 0i64, 0i64, UserDataCount, &UserData);
        if( (unsigned int)dword_140C04498 > 5 )
        {
          LOBYTE(v4) = tlgKeywordOn((__int64)&dword_140C04498, 0x200000000000i64);
          if( (_BYTE)v4 )
          {
            v18 = 0;
            v21 = 0;
            v9 = v22;
            v17 = 8;
            v16 = &v9;
            v10 = v23;
            v19 = &v10;
            v20 = 8;
            LOBYTE(v4) = tlgWriteTransfer_EtwWriteTransfer(
                           (__int64)&dword_140C04498,
                           (unsigned __int8 *)byte_140023990,
                           a1 + 54,
                           a1 + 53,
                           4u,
                           &v15);
          }
        }
      }
    }
  }
  return v4;
}

Referenced by:

IopLiveDumpPopulateBitmapForDump