IopInitializeTriageDumpData

VOID __stdcall IopInitializeTriageDumpData(){
  struct _KTRIAGE_DUMP_DATA_ARRAY *PoolWithTag; 
  struct _KTRIAGE_DUMP_DATA_ARRAY *v1; 
  _SIZE_T v2; 
  unsigned int i; 

  if( !KtriageDumpDataArray )
  {
    PoolWithTag = (struct _KTRIAGE_DUMP_DATA_ARRAY *)ExAllocatePoolWithTag(0x200ui64, 0x4030ui64, 1918136137i64);
    KtriageDumpDataArray = PoolWithTag;
    v1 = PoolWithTag;
    if( PoolWithTag )
    {
      if( KeInitializeTriageDumpDataArray((INT64)PoolWithTag, 0x4030ui64) < 0 )
        goto LABEL_9;
      if( *(&stru_140C452E0 + 718) )
      {
        for( i = 0; i < *(&stru_140C452E0 + 718); ++i )
          KeAddTriageDumpDataBlock(
            v1,
            *((_QWORD *)&stru_140C452E0 + 2 * i + 360),
            (PVOID)(_mm_srli_si128(*((__m128i *)&stru_140C452E0 + i + 180), 8).m128i_u64[0]
                  - *((_QWORD *)&stru_140C452E0 + 2 * i + 360)),
            v2);
      }
      *(&CallbackRecord.State + 4) = 0;
      if( !KeRegisterBugCheckReasonCallback(
              &CallbackRecord,
              IoBugCheckTriageDumpDataCallback,
              KbCallbackRemovePages|KbCallbackReserved1,
              (PUCHAR)"IoTriageDumpData") )
      {
LABEL_9:
        if( KtriageDumpDataArray )
        {
          ExFreePoolWithTag(KtriageDumpDataArray, 0x72546F49u);
          KtriageDumpDataArray = 0i64;
        }
      }
    }
  }
}

Referenced by:

IoInitSystemPreDrivers