WdipSemAddEndEventToScenario

INT64 __fastcall WdipSemAddEndEventToScenario(INT64 a1, INT64 a2){
  unsigned int v2; 
  unsigned int v5; 
  unsigned int v6; 
  __int64 v7; 
  __int64 v8; 
  PSLIST_ENTRY v10; 
  v2 = 0;
  if( a1 && a2 )
  {
    v5 = *(_DWORD *)(a1 + 52);
    v6 = 0;
    if( v5 )
    {
      while( 1 )
      {
        v7 = *(_QWORD *)(a1 + 8i64 * v6 + 1048);
        v8 = *(_QWORD *)a2 - *(_QWORD *)v7;
        if( *(_QWORD *)a2 == *(_QWORD *)v7 )
          v8 = *(_QWORD *)(a2 + 8) - *(_QWORD *)(v7 + 8);
        if( !v8 && *(_WORD *)(a2 + 16) == *(_WORD *)(v7 + 16) )
          break;
        if( ++v6 >= v5 )
          goto LABEL_12;
      }
      WdipSemMergeEvents(*(_QWORD *)(a1 + 8i64 * v6 + 1048), a2);
    }
    else
    {
LABEL_12:
      if( v5 < 0x10 )
      {
        v10 = WdipSemFastAllocate(0, 0x30u);
        if( v10 )
        {
          *v10 = *(PSLIST_ENTRY)a2;
          v10[1] = *(PSLIST_ENTRY)(a2 + 16);
          v10[2] = *(PSLIST_ENTRY)(a2 + 32);
          *(_QWORD *)(a1 + 8i64 * (unsigned int)(*(_DWORD *)(a1 + 52))++ + 1048) = v10;
        }
        else
        {
          return(unsigned int)-1073741670;
        }
      }
      else
      {
        return(unsigned int)-1073741823;
      }
    }
  }
  else
  {
    return(unsigned int)-1073741811;
  }
  return v2;
}

Referenced by:

WdipSemMergeScenarios