MiInsertNewCombineBlocks

_QWORD *__fastcall MiInsertNewCombineBlocks(INT64 a1, INT64 a2){
  _QWORD *v2; 
  int v4; 
  _QWORD *v5; 
  _QWORD *i; 
  _QWORD *v7; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  v2 = (_QWORD *)a2;
  memset(&LockHandle, 0, sizeof(LockHandle));
  if( !(unsigned int)MiLockPagedRange(a2, 0xF78ui64) )
    return 0i64;
  memset((INT64)v2, 0i64);
  v4 = 54;
  KeAcquireInStackQueuedSpinLock((UINT64 *)(a1 + 88), &LockHandle);
  v5 = (_QWORD *)(a1 + 72);
  for( i = *(_QWORD **)(a1 + 72); ; i = v7 )
  {
    v7 = v2;
    if( (_QWORD *)i[1] != v5 )
      __fastfail(3u);
    *v2 = i;
    v2[1] = v5;
    i[1] = v2;
    *v5 = v2;
    v2 += 9;
    if( !--v4 )
      break;
  }
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
  return v2;
}

Referenced by:

MiAllocateCombineProto