SmKmStoreHelperCommandCleanup

VOID __fastcall SmKmStoreHelperCommandCleanup(INT64 a1, INT64 a2, INT64 a3){
  int v5; 
  int v6; 
  int v7; 
  int v8; 
  INT64 v9[2]; 
  __int128 v10; 
  __int128 v11; 
  v10 = 0i64;
  v11 = 0i64;
  v5 = a2 - 2;
  if( v5 )
  {
    v6 = v5 - 1;
    if( v6 )
    {
      v7 = v6 - 1;
      if( v7 )
      {
        if( v7 == 1 )
          (*(void(__fastcall **)(INT64, _QWORD, __int64))a3)(a1, *(_QWORD *)(a3 + 8), 1i64);
      }
      else if( *(int *)(a3 + 40) >= 0 )
      {
        SmKmUnlockMdl(*(MDL **)(a3 + 24), *(_QWORD *)(a1 + 120), a1);
        SmFpFree(*(_QWORD *)(a1 + 120), 2i64, a1, *(_QWORD *)(a3 + 24));
      }
    }
  }
  else if( *(int *)(a3 + 40) >= 0 )
  {
    v8 = *(_DWORD *)(a3 + 32);
    v9[0] = *(_QWORD *)(a3 + 24);
    v9[1] = *(_QWORD *)(a3 + 8);
    LODWORD(v10) = ((unsigned __int8)v10 ^ (unsigned __int8)v8) & 1 ^ v10;
    SmKmStoreHelperCommandProcess(a1, 3i64, (INT64)v9);
  }
}

Referenced by:

SmKmStoreHelperWorker