WdipSemAddScenarioToTable

NTSTATUS __stdcall WdipSemAddScenarioToTable(_WDIP_SEM_SCENARIO_INFO *NewScenario){
  int v1; 
  __int64 v3; 
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 

  v1 = 0;
  if( !NewScenario )
    return -1073741811;
  v3 = 0i64;
  if( *(&ExBootDevicesRemovedEvent + 1112) )
  {
    while( 1 )
    {
      v4 = *((_QWORD *)&ExBootDevicesRemovedEvent + v3 + 492);
      v5 = (unsigned int)v3;
      v6 = *(_QWORD *)v4 - *(_QWORD *)NewScenario;
      if( *(_QWORD *)v4 == *(_QWORD *)NewScenario )
        v6 = *(_QWORD *)(v4 + 8) - *((_QWORD *)NewScenario + 1);
      if( !v6 && *(_WORD *)(v4 + 16) == *((_WORD *)NewScenario + 8) )
        break;
      v3 = (unsigned int)(v3 + 1);
      if( (unsigned int)v3 >= *(&ExBootDevicesRemovedEvent + 1112) )
        goto LABEL_7;
    }
    v1 = WdipSemMergeScenarios(NewScenario, *((_WDIP_SEM_SCENARIO_INFO **)&ExBootDevicesRemovedEvent + v3 + 492));
    if( v1 >= 0 )
    {
      *((_QWORD *)&ExBootDevicesRemovedEvent + v5 + 492) = NewScenario;
      WdipSemFreeScenario((_WDIP_SEM_SCENARIO_INFO *)v4);
    }
  }
  else
  {
LABEL_7:
    if( *(&ExBootDevicesRemovedEvent + 1112) >= 0x40u )
    {
      return -1073741823;
    }
    else
    {
      *((_QWORD *)&ExBootDevicesRemovedEvent + *(&ExBootDevicesRemovedEvent + 1112) + 492) = NewScenario;
      ++*(&ExBootDevicesRemovedEvent + 1112);
    }
  }
  return v1;
}

Referenced by:

WdipSemLoadScenarioTable