CmpRealignLogBuffers

VOID __fastcall CmpRealignLogBuffers(INT64 a1){
  unsigned int v2; 
  __int64 v3; 
  INT64 v4; 
  __int64 v5; 
  __int64 v6; 
  INT64 v7; 
  __int64 v8; 
  __int64 v9; 
  v2 = *(_DWORD *)(a1 + 12);
  if( v2 )
  {
    if( v2 <= 2 )
    {
      v9 = *(unsigned __int16 *)(a1 + 32);
      v4 = a1 + 64;
      *(_WORD *)(a1 + 34) = v9;
      *(_QWORD *)(a1 + 56) = a1 + 64 + v9;
      *(_DWORD *)(a1 + 52) = *(_DWORD *)(a1 + 4) - v9 - 64;
LABEL_14:
      *(_QWORD *)(a1 + 40) = v4;
      return;
    }
    if( v2 > 5 )
    {
      switch( v2 )
      {
        case 6u:
        case 7u:
          *(_QWORD *)(a1 + 40) = a1 + 56;
          *(_WORD *)(a1 + 34) = *(_WORD *)(a1 + 32);
          return;
        case 8u:
          v5 = *(unsigned __int16 *)(a1 + 32);
          v4 = a1 + 64;
          *(_WORD *)(a1 + 34) = v5;
          *(_QWORD *)(a1 + 56) = a1 + 64 + v5;
          break;
        case 9u:
          v3 = *(unsigned __int16 *)(a1 + 32);
          v4 = a1 + 64;
          *(_WORD *)(a1 + 34) = v3;
          *(_QWORD *)(a1 + 56) = a1 + 64 + v3;
          *(_WORD *)(a1 + 50) = *(_WORD *)(a1 + 48);
          break;
        default:
          return;
      }
      goto LABEL_14;
    }
    v6 = *(unsigned __int16 *)(a1 + 32);
    *(_QWORD *)(a1 + 40) = a1 + 80;
    v7 = v6 + a1 + 80;
    *(_WORD *)(a1 + 34) = v6;
    v8 = *(unsigned __int16 *)(a1 + 48);
    *(_WORD *)(a1 + 50) = v8;
    *(_QWORD *)(a1 + 56) = v7;
    if( v2 != 5 )
      *(_QWORD *)(a1 + 72) = v7 + v8;
  }
}

Referenced by:

CmpRmReDoPhase