KdCopyDataBlock

INT64 __fastcall KdCopyDataBlock(_OWORD *a1){
  _OWORD *v1; 
  _OWORD *v2; 
  int v3; 
  INT64 result; 
  __int128 v5; 
  v1 = &KdDebuggerDataBlock;
  v2 = a1;
  if( KdpDataBlockEncoded )
  {
    v3 = 112;
    do
    {
      result = (INT64)&KdpDataBlockEncoded;
      *(_QWORD *)((char *)v1 + (char *)a1 - (char *)&KdDebuggerDataBlock) = KiWaitAlways ^ _byteswap_uint64((unsigned __int64)&KdpDataBlockEncoded ^ __ROL8__(KiWaitNever ^ *(_QWORD *)v1, KiWaitNever));
      v1 = (_OWORD *)((char *)v1 + 8);
      --v3;
    }
    while( v3 );
  }
  else
  {
    result = 7i64;
    do
    {
      *v2 = *v1;
      v2[1] = v1[1];
      v2[2] = v1[2];
      v2[3] = v1[3];
      v2[4] = v1[4];
      v2[5] = v1[5];
      v2[6] = v1[6];
      v2 += 8;
      v5 = v1[7];
      v1 += 8;
      *(v2 - 1) = v5;
      --result;
    }
    while( result );
  }
  return result;
}

Referenced by:

IoFillTriageDumpBuffer
IopInitializeInMemoryDumpData
KdDecodeDataBlock
KeCapturePersistentThreadState