HvSwapHiveStorage

_QWORD *__fastcall HvSwapHiveStorage(__int64 a1, __int64 a2){
  __int64 v2; 
  __int64 v4; 
  __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14; 
  __int64 v15; 
  __int64 v16; 
  int v17; 
  __int128 v18; 
  __int128 v19; 
  __int128 v20; 
  __int64 v21; 
  _QWORD *v22; 
  __int64 v23; 
  _QWORD *result; 

  v2 = *(_QWORD *)(a1 + 8);
  v4 = *(_QWORD *)(a1 + 24);
  v6 = *(_QWORD *)(a1 + 32);
  v7 = *(_QWORD *)(a1 + 40);
  v8 = *(_QWORD *)(a1 + 48);
  v9 = *(_QWORD *)(a2 + 16);
  *(_QWORD *)(a1 + 8) = *(_QWORD *)(a2 + 8);
  *(_QWORD *)(a1 + 16) = *(_QWORD *)(a2 + 16);
  *(_QWORD *)(a1 + 24) = *(_QWORD *)(a2 + 24);
  *(_QWORD *)(a1 + 32) = *(_QWORD *)(a2 + 32);
  *(_QWORD *)(a1 + 40) = *(_QWORD *)(a2 + 40);
  *(_QWORD *)(a1 + 48) = *(_QWORD *)(a2 + 48);
  v10 = *(_QWORD *)(a2 + 64);
  *(_QWORD *)(a2 + 16) = v9;
  v11 = 2i64;
  *(_QWORD *)(a2 + 8) = v2;
  *(_QWORD *)(a2 + 24) = v4;
  *(_QWORD *)(a2 + 32) = v6;
  *(_QWORD *)(a2 + 40) = v7;
  *(_QWORD *)(a2 + 48) = v8;
  v12 = *(_QWORD *)(a1 + 64);
  *(_QWORD *)(a1 + 64) = v10;
  LODWORD(v10) = *(_DWORD *)(a2 + 108);
  *(_QWORD *)(a2 + 64) = v12;
  LODWORD(v12) = *(_DWORD *)(a1 + 108);
  *(_DWORD *)(a1 + 108) = v10;
  v13 = *(_QWORD *)(a2 + 96);
  *(_DWORD *)(a2 + 108) = v12;
  v14 = *(_QWORD *)(a1 + 96);
  *(_QWORD *)(a1 + 96) = v13;
  LODWORD(v13) = *(_DWORD *)(a2 + 88);
  *(_QWORD *)(a2 + 96) = v14;
  LODWORD(v14) = *(_DWORD *)(a1 + 88);
  *(_DWORD *)(a1 + 88) = v13;
  LODWORD(v13) = *(_DWORD *)(a2 + 104);
  *(_DWORD *)(a2 + 88) = v14;
  LODWORD(v14) = *(_DWORD *)(a1 + 104);
  *(_DWORD *)(a1 + 104) = v13;
  v15 = *(_QWORD *)(a2 + 120);
  *(_DWORD *)(a2 + 104) = v14;
  v16 = *(_QWORD *)(a1 + 120);
  *(_QWORD *)(a1 + 120) = v15;
  LODWORD(v15) = *(_DWORD *)(a2 + 112);
  *(_QWORD *)(a2 + 120) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 112);
  *(_DWORD *)(a1 + 112) = v15;
  LODWORD(v15) = *(_DWORD *)(a2 + 128);
  *(_DWORD *)(a2 + 112) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 128);
  *(_DWORD *)(a1 + 128) = v15;
  LODWORD(v15) = *(_DWORD *)(a2 + 132);
  *(_DWORD *)(a2 + 128) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 132);
  *(_DWORD *)(a1 + 132) = v15;
  LODWORD(v15) = *(_DWORD *)(a2 + 136);
  *(_DWORD *)(a2 + 132) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 136);
  *(_DWORD *)(a1 + 136) = v15;
  LOBYTE(v15) = *(_BYTE *)(a2 + 140);
  *(_DWORD *)(a2 + 136) = v16;
  LOBYTE(v16) = *(_BYTE *)(a1 + 140);
  *(_BYTE *)(a1 + 140) = v16 ^ (v16 ^ v15) & 1;
  *(_BYTE *)(a2 + 140) ^= (v16 ^ *(_BYTE *)(a2 + 140)) & 1;
  LOBYTE(v16) = *(_BYTE *)(a1 + 140);
  *(_BYTE *)(a1 + 140) = v16 ^ (v16 ^ *(_BYTE *)(a2 + 140)) & 2;
  *(_BYTE *)(a2 + 140) ^= (v16 ^ *(_BYTE *)(a2 + 140)) & 2;
  LOBYTE(v16) = *(_BYTE *)(a1 + 141);
  *(_BYTE *)(a1 + 141) = *(_BYTE *)(a2 + 141);
  LODWORD(v15) = *(_DWORD *)(a2 + 144);
  *(_BYTE *)(a2 + 141) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 144);
  *(_DWORD *)(a1 + 144) = v15;
  LODWORD(v15) = *(_DWORD *)(a2 + 148);
  *(_DWORD *)(a2 + 144) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 148);
  *(_DWORD *)(a1 + 148) = v15;
  LODWORD(v15) = *(_DWORD *)(a2 + 152);
  *(_DWORD *)(a2 + 148) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 152);
  *(_DWORD *)(a1 + 152) = v15;
  LODWORD(v15) = *(_DWORD *)(a2 + 156);
  *(_DWORD *)(a2 + 152) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 156);
  *(_DWORD *)(a1 + 156) = v15;
  *(_DWORD *)(a2 + 156) = v16;
  LODWORD(v16) = *(_DWORD *)(a1 + 160);
  *(_DWORD *)(a1 + 160) = v16 & 0xFFE07FEC;
  v17 = *(_DWORD *)(a2 + 160);
  *(_DWORD *)(a2 + 160) = v17 ^ (v16 ^ v17) & 0x1F8013;
  *(_DWORD *)(a1 + 160) |= v17 & 0x1F8013;
  v18 = *(_OWORD *)(a1 + 216);
  v19 = *(_OWORD *)(a1 + 232);
  v20 = *(_OWORD *)(a1 + 248);
  v21 = *(_QWORD *)(a1 + 264);
  *(_OWORD *)(a1 + 216) = *(_OWORD *)(a2 + 216);
  *(_OWORD *)(a1 + 232) = *(_OWORD *)(a2 + 232);
  *(_OWORD *)(a1 + 248) = *(_OWORD *)(a2 + 248);
  *(_QWORD *)(a1 + 264) = *(_QWORD *)(a2 + 264);
  v22 = (_QWORD *)(a1 + 272);
  *(_OWORD *)(a2 + 216) = v18;
  *(_OWORD *)(a2 + 232) = v19;
  *(_OWORD *)(a2 + 248) = v20;
  *(_QWORD *)(a2 + 264) = v21;
  v23 = a2 - (_QWORD)v22;
  do
  {
    result = HvpSwapDual(v22, (_QWORD *)((char *)v22 + v23 + 272));
    v22 += 79;
    --v11;
  }
  while( v11 );
  return result;
}

Referenced by:

CmpSwapHiveStorage