KiPrepareFlushParameters

VOID __fastcall KiPrepareFlushParameters(INT64 a1, UINT64 *a2, CHAR *a3){
  CHAR v3; 
  int v4; 
  int v5; 
  if( (_BYTE)KiKvaShadow )
  {
    if( !(_DWORD)a1 || (v4 = a1 - 1) != 0 && v4 == 1 )
    {
      v3 = 0;
LABEL_4:
      *a2 = 0i64;
      *a3 = v3;
      return;
    }
LABEL_6:
    v3 = 1;
    goto LABEL_4;
  }
  if( !(_DWORD)a1 )
    goto LABEL_6;
  v5 = a1 - 1;
  if( v5 )
  {
    if( v5 != 1 )
      goto LABEL_6;
    *a2 = 0i64;
  }
  else
  {
    *a2 = *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 40i64) & 0xFFFFFFFFFFFFF000ui64;
  }
  *a3 = 0;
}

Referenced by:

KeFlushMultipleRangeCurrentTb
KeFlushMultipleRangeTb
KeFlushSingleCurrentTb
KeFlushTb