WdipSemAddScenarioToTable

__int64 __fastcall WdipSemAddScenarioToTable(__int64 a1){
  int v1; 
  __int64 v3; 
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 
  v1 = 0;
  if( a1 )
  {
    v3 = 0i64;
    if( dword_140C1A360 )
    {
      while( 1 )
      {
        v4 = *(&WdipSemScenarioTable + v3);
        v5 = (unsigned int)v3;
        v6 = *(_QWORD *)v4 - *(_QWORD *)a1;
        if( *(_QWORD *)v4 == *(_QWORD *)a1 )
          v6 = *(_QWORD *)(v4 + 8) - *(_QWORD *)(a1 + 8);
        if( !v6 && *(_WORD *)(v4 + 16) == *(_WORD *)(a1 + 16) )
          break;
        v3 = (unsigned int)(v3 + 1);
        if( (unsigned int)v3 >= dword_140C1A360 )
          goto LABEL_7;
      }
      v1 = WdipSemMergeScenarios(a1, *(&WdipSemScenarioTable + v3));
      if( v1 >= 0 )
      {
        *(&WdipSemScenarioTable + v5) = a1;
        WdipSemFreeScenario(v4);
      }
    }
    else
    {
LABEL_7:
      if( (unsigned int)dword_140C1A360 >= 0x40 )
        return(unsigned int)-1073741823;
      else
        *(&WdipSemScenarioTable + (unsigned int)dword_140C1A360++) = a1;
    }
  }
  else
  {
    return(unsigned int)-1073741811;
  }
  return(unsigned int)v1;
}

Referenced by:

WdipSemLoadScenarioTable