CcUninitializeAsyncRead

VOID __fastcall CcUninitializeAsyncRead(_QWORD *a1){
  unsigned int v2; 
  _QWORD **v3; 
  _QWORD *v4; 
  _QWORD *v5; 
  void *v6; 
  void *v7; 
  void *v8; 
  void *v9; 
  void *v10; 
  void *v11; 
  if( a1[105] )
  {
    v2 = 0;
    do
    {
      while( 1 )
      {
        v3 = (_QWORD **)(a1[105] + 16i64 * v2);
        v4 = *v3;
        if( *v3 == v3 )
          break;
        if( (_QWORD **)v4[1] != v3 || (v5 = (_QWORD *)*v4, *(_QWORD **)(*v4 + 8i64) != v4) )
          __fastfail(3u);
        *v3 = v5;
        v5[1] = v3;
        ExFreePoolWithTag(v4, 0x71576343u);
      }
      ++v2;
    }
    while( v2 <= CcMaxNestingLevel );
  }
  v6 = (void *)a1[108];
  if( v6 )
  {
    ExFreePoolWithTag(v6, 0x71576343u);
    a1[108] = 0i64;
  }
  v7 = (void *)a1[109];
  if( v7 )
  {
    ExFreePoolWithTag(v7, 0x71576343u);
    a1[109] = 0i64;
  }
  v8 = (void *)a1[111];
  if( v8 )
  {
    ExFreePoolWithTag(v8, 0x71576343u);
    a1[111] = 0i64;
  }
  v9 = (void *)a1[110];
  if( v9 )
  {
    ExFreePoolWithTag(v9, 0x71576343u);
    a1[110] = 0i64;
  }
  v10 = (void *)a1[106];
  if( v10 )
  {
    ExFreePoolWithTag(v10, 0x71576343u);
    a1[106] = 0i64;
  }
  v11 = (void *)a1[107];
  if( v11 )
  {
    ExFreePoolWithTag(v11, 0x71576343u);
    a1[107] = 0i64;
  }
}

Referenced by:

CcDeletePartition