; LLVM IR from shbang91/rpc :: simulator/mujoco/draco/simulate/simulate.ll (ZN6mujoco8Simulate4SyncEv)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::unique_lock" = type <{ ptr, i8, [7 x i8] }>
%"class.std::optional.32" = type { %"struct.std::_Optional_base.33" }
%"struct.std::_Optional_base.33" = type { %"struct.std::_Optional_payload.35" }
%"struct.std::_Optional_payload.35" = type { %"struct.std::_Optional_payload_base.base.37", [7 x i8] }
%"struct.std::_Optional_payload_base.base.37" = type <{ %"union.std::_Optional_payload_base<std::pair<double, double>>::_Storage", i8 }>
%"union.std::_Optional_payload_base<std::pair<double, double>>::_Storage" = type { %"struct.std::pair" }
%"struct.std::pair" = type { double, double }
%"struct.std::nullopt_t" = type { i8 }
%struct.mjrRect_ = type { i32, i32, i32, i32 }
%"class.mujoco::Simulate" = type <{ i8, [7 x i8], ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, [4 x i8], %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12", %"class.std::vector.12", %"class.std::vector.12", %"class.std::vector.12", %"class.std::vector.12", %struct.mjvSceneState_, %struct.mjOption_, %struct.mjvOption_, [4 x i8], %struct.mjvCamera_, i32, [4 x i8], %struct.anon.24, %"class.mujoco::SimulateMutex", %"class.std::_V2::condition_variable_any", i32, [4 x i8], %"class.std::chrono::time_point", double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", i32, [1000 x i8], [1000 x i8], [1000 x i8], [1000 x i8], i32, i8, [3 x i8], float, double, double, [300 x i8], i32, [15 x i32], [6 x i32], [6 x i32], i32, %struct.mjvScene_, ptr, ptr, ptr, %struct.mjvFigure_, %struct.mjvFigure_, %struct.mjvFigure_, %struct.mjvFigure_, %struct.mjvFigure_, [4 x i8], ptr, [10 x i8], [2 x i8], i32, [2 x i32], [2 x i32], %"class.std::unique_ptr", ptr, %struct.mjUI_, %struct.mjUI_, [13 x %struct.mjuiDef_], [14 x %struct.mjuiDef_], [5 x %struct.mjuiDef_], [1000 x i8], [1000 x i8], %"class.std::_V2::condition_variable_any", i32, i32, i32, [4 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<std::optional<std::pair<double, double>>, std::allocator<std::optional<std::pair<double, double>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::optional<std::pair<double, double>>, std::allocator<std::optional<std::pair<double, double>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::optional<std::pair<double, double>>, std::allocator<std::optional<std::pair<double, double>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::optional<std::pair<double, double>>, std::allocator<std::optional<std::pair<double, double>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.mjvSceneState_ = type { i32, ptr, i32, %struct.mjvScene_, %struct.anon, %struct.anon.23 }
%struct.anon = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.mjOption_, %struct.mjVisual_, %struct.mjStatistic_, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.mjVisual_ = type { %struct.anon.17, %struct.anon.18, %struct.anon.19, %struct.anon.20, %struct.anon.21, %struct.anon.22 }
%struct.anon.17 = type { float, float, float, float, float, float, float, i32, i32, i32, i32 }
%struct.anon.18 = type { i32, i32, i32, i32, i32 }
%struct.anon.19 = type { [3 x float], [3 x float], [3 x float], i32 }
%struct.anon.20 = type { float, float, float, float, float, float, float, float, float, float, float, float, float }
%struct.anon.21 = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%struct.anon.22 = type { [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float], [4 x float] }
%struct.mjStatistic_ = type { double, double, double, double, [3 x double] }
%struct.anon.23 = type { [8 x %struct.mjWarningStat_], i32, i32, i32, double, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.mjWarningStat_ = type { i32, i32 }
%struct.mjOption_ = type { double, double, double, double, double, double, double, [3 x double], [3 x double], [3 x double], double, double, double, [2 x double], [5 x double], [5 x double], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.mjvOption_ = type { i32, i32, [6 x i8], [6 x i8], [6 x i8], [6 x i8], [6 x i8], [6 x i8], [6 x i8], [32 x i8], i32, i32 }
%struct.mjvCamera_ = type { i32, i32, i32, [3 x double], double, double, double }
%struct.anon.24 = type <{ %"class.std::optional", %"class.std::optional", %"class.std::optional", %"class.std::optional", i8, i8, i8, i8, i8, i8, i8, i8, i32, i8, [3 x i8], %struct.mjuiState_, i8, i8, i8, i8, i8, i8, [2 x i8] }>
%"class.std::optional" = type { %"struct.std::_Optional_base" }
%"struct.std::_Optional_base" = type { %"struct.std::_Optional_payload" }
%"struct.std::_Optional_payload" = type { %"struct.std::_Optional_payload.base", [7 x i8] }
%"struct.std::_Optional_payload.base" = type { %"struct.std::_Optional_payload_base.base" }
%"struct.std::_Optional_payload_base.base" = type <{ %"union.std::_Optional_payload_base<std::__cxx11::basic_string<char>>::_Storage", i8 }>
%"union.std::_Optional_payload_base<std::__cxx11::basic_string<char>>::_Storage" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.mjuiState_ = type { i32, [25 x %struct.mjrRect_], ptr, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, i32, i32, i32, i32, double, i32, i32, i32, i32, ptr }
%"class.mujoco::SimulateMutex" = type { %"class.std::recursive_mutex" }
%"class.std::recursive_mutex" = type { %"class.std::__recursive_mutex_base" }
%"class.std::__recursive_mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%struct.mjvScene_ = type { i32, i32, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i32, ptr, ptr, ptr, ptr, ptr, i32, [100 x %struct.mjvLight_], [2 x %struct.mjvGLCamera_], i8, [3 x float], [4 x float], float, i32, [10 x i8], i32, [3 x float] }
%struct.mjvLight_ = type { [3 x float], [3 x float], [3 x float], float, float, [3 x float], [3 x float], [3 x float], i8, i8, i8 }
%struct.mjvGLCamera_ = type { [3 x float], [3 x float], [3 x float], float, float, float, float, float, float }
%struct.mjvFigure_ = type { i32, [2 x i32], i32, i32, i32, i32, float, float, [2 x i32], [3 x float], [4 x float], [4 x float], [4 x float], [3 x float], [100 x [3 x float]], [2 x [2 x float]], [20 x i8], [20 x i8], [20 x i8], [1000 x i8], [100 x i8], [100 x [100 x i8]], i32, i32, [2 x i32], i32, float, [100 x i32], [100 x [2000 x float]], [2 x i32], [2 x i32], [2 x float], [2 x float] }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%struct.mjUI_ = type { %struct.mjuiThemeSpacing_, %struct.mjuiThemeColor_, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [300 x i8], ptr, i32, [10 x %struct.mjuiSection_] }
%struct.mjuiThemeSpacing_ = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.mjuiThemeColor_ = type { [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float], [3 x float] }
%struct.mjuiSection_ = type { [40 x i8], i32, i32, i32, i32, [200 x %struct.mjuiItem_], %struct.mjrRect_, %struct.mjrRect_ }
%struct.mjuiItem_ = type { i32, [40 x i8], i32, ptr, i32, i32, %union.anon.31, %struct.mjrRect_ }
%union.anon.31 = type { %struct.mjuiItemEdit_, [1288 x i8] }
%struct.mjuiItemEdit_ = type { i32, [7 x [2 x double]] }
%struct.mjuiDef_ = type { i32, [40 x i8], i32, ptr, [300 x i8] }
%"class.std::_V2::condition_variable_any" = type { %"class.std::condition_variable", %"class.std::shared_ptr" }
%"class.std::condition_variable" = type { %"class.std::__condvar" }
%"class.std::__condvar" = type { %union.pthread_cond_t }
%union.pthread_cond_t = type { %struct.__pthread_cond_s }
%struct.__pthread_cond_s = type { %union.__atomic_wide_counter, %union.__atomic_wide_counter, [2 x i32], [2 x i32], i32, i32, [2 x i32] }
%union.__atomic_wide_counter = type { i64 }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%struct.mjModel_ = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, %struct.mjOption_, %struct.mjVisual_, %struct.mjStatistic_, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.mjData_ = type { i64, i64, i32, i64, i64, i64, i64, [128 x i64], i64, i32, i32, [8 x %struct.mjWarningStat_], [15 x %struct.mjTimerStat_], [4000 x %struct.mjSolverStat_], i32, [20 x i32], [20 x i32], [2 x double], i32, i32, i32, i32, i32, i32, i32, double, [2 x double], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64 }
%struct.mjTimerStat_ = type { double, i32 }
%struct.mjSolverStat_ = type { double, double, double, i32, i32, i32, i32 }
%struct.mjvPerturb_ = type { i32, i32, i32, i32, i32, [3 x double], [4 x double], [3 x double], [3 x double], double, double }
%struct.mjvGeom_ = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x float], [3 x float], [3 x float], [9 x float], [4 x float], float, float, float, float, [100 x i8], float, float, i8 }

@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6mujoco8Simulate4SyncEv(ptr noundef nonnull align 8 dereferenceable(10060044) %0) #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::unique_lock", align 8
  %4 = alloca i32, align 4
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::optional.32", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::optional.32", align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca [200 x i8], align 16
  %16 = alloca %"struct.std::nullopt_t", align 1
  %17 = alloca %"struct.std::nullopt_t", align 1
  %18 = alloca %"struct.std::nullopt_t", align 1
  %19 = alloca %"struct.std::nullopt_t", align 1
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %struct.mjrRect_, align 4
  %23 = alloca [3 x double], align 16
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca [3 x double], align 16
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %32 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #8
  %33 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 35
  call void @_ZNSt11unique_lockISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(9) %3, ptr noundef nonnull align 8 dereferenceable(40) %33)
  %34 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %35 = load ptr, ptr %34, align 8, !tbaa !9
  %36 = icmp ne ptr %35, null
  br i1 %36, label %38, label %37

37:                                               ; preds = %1
  store i32 1, ptr %4, align 4
  br label %1738

38:                                               ; preds = %1
  %39 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 57
  %40 = call noundef i32 @_ZNKSt13__atomic_baseIiE4loadESt12memory_order(ptr noundef nonnull align 4 dereferenceable(4) %39, i32 noundef 5) #8
  %41 = icmp ne i32 %40, 0
  br i1 %41, label %42, label %43

42:                                               ; preds = %38
  store i32 1, ptr %4, align 4
  br label %1738

43:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #8
  %44 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 48
  %45 = load i32, ptr %44, align 4, !tbaa !77
  %46 = icmp ne i32 %45, 0
  br i1 %46, label %47, label %57

47:                                               ; preds = %43
  %48 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 50
  %49 = load i32, ptr %48, align 4, !tbaa !78
  %50 = icmp ne i32 %49, 0
  br i1 %50, label %55, label %51

51:                                               ; preds = %47
  %52 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 56
  %53 = load i32, ptr %52, align 4, !tbaa !79
  %54 = icmp ne i32 %53, 0
  br label %55

55:                                               ; preds = %51, %47
  %56 = phi i1 [ true, %47 ], [ %54, %51 ]
  br label %57

57:                                               ; preds = %55, %43
  %58 = phi i1 [ false, %43 ], [ %56, %55 ]
  %59 = zext i1 %58 to i8
  store i8 %59, ptr %5, align 1, !tbaa !80
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #8
  %60 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 49
  %61 = load i32, ptr %60, align 8, !tbaa !81
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %63, label %73

63:                                               ; preds = %57
  %64 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 50
  %65 = load i32, ptr %64, align 4, !tbaa !78
  %66 = icmp ne i32 %65, 0
  br i1 %66, label %71, label %67

67:                                               ; preds = %63
  %68 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 56
  %69 = load i32, ptr %68, align 4, !tbaa !79
  %70 = icmp ne i32 %69, 0
  br label %71

71:                                               ; preds = %67, %63
  %72 = phi i1 [ true, %63 ], [ %70, %67 ]
  br label %73

73:                                               ; preds = %71, %57
  %74 = phi i1 [ false, %57 ], [ %72, %71 ]
  %75 = zext i1 %74 to i8
  store i8 %75, ptr %6, align 1, !tbaa !80
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  store i32 0, ptr %7, align 4, !tbaa !82
  br label %76

76:                                               ; preds = %133, %73
  %77 = load i32, ptr %7, align 4, !tbaa !82
  %78 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %79 = load ptr, ptr %78, align 8, !tbaa !9
  %80 = getelementptr inbounds %struct.mjModel_, ptr %79, i32 0, i32 8
  %81 = load i32, ptr %80, align 8, !tbaa !83
  %82 = icmp slt i32 %77, %81
  br i1 %82, label %84, label %83

83:                                               ; preds = %76
  store i32 2, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  br label %136

84:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #8
  call void @_ZNSt8optionalISt4pairIddEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %85 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %86 = load ptr, ptr %85, align 8, !tbaa !9
  %87 = getelementptr inbounds %struct.mjModel_, ptr %86, i32 0, i32 121
  %88 = load ptr, ptr %87, align 8, !tbaa !85
  %89 = load i32, ptr %7, align 4, !tbaa !82
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds i8, ptr %88, i64 %90
  %92 = load i8, ptr %91, align 1, !tbaa !86
  %93 = icmp ne i8 %92, 0
  br i1 %93, label %94, label %118

94:                                               ; preds = %84
  %95 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %96 = load ptr, ptr %95, align 8, !tbaa !9
  %97 = getelementptr inbounds %struct.mjModel_, ptr %96, i32 0, i32 129
  %98 = load ptr, ptr %97, align 8, !tbaa !87
  %99 = load i32, ptr %7, align 4, !tbaa !82
  %100 = mul nsw i32 2, %99
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds double, ptr %98, i64 %101
  %103 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %104 = load ptr, ptr %103, align 8, !tbaa !9
  %105 = getelementptr inbounds %struct.mjModel_, ptr %104, i32 0, i32 129
  %106 = load ptr, ptr %105, align 8, !tbaa !87
  %107 = load i32, ptr %7, align 4, !tbaa !82
  %108 = mul nsw i32 2, %107
  %109 = add nsw i32 %108, 1
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds double, ptr %106, i64 %110
  %112 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8optionalISt4pairIddEE7emplaceIJRdS4_EEENSt9enable_ifIX18is_constructible_vIS1_DpT_EERS1_E4typeEDpOS6_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %113 unwind label %114

113:                                              ; preds = %94
  br label %118

114:                                              ; preds = %118, %94
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %9, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  br label %1741

118:                                              ; preds = %113, %84
  %119 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 17
  %120 = load i32, ptr %7, align 4, !tbaa !82
  %121 = sext i32 %120 to i64
  %122 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %121) #8
  %123 = invoke noundef zeroext i1 @_ZStneISt4pairIddES1_ENSt9enable_ifIXsr14is_convertibleIDTneclsr3stdE7declvalIRKT_EEclsr3stdE7declvalIRKT0_EEEbEE5valueEbE4typeERKSt8optionalIS3_ERKSC_IS6_E(ptr noundef nonnull align 8 dereferenceable(24) %122, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %124 unwind label %114

124:                                              ; preds = %118
  br i1 %123, label %125, label %132

125:                                              ; preds = %124
  %126 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %127 = getelementptr inbounds %struct.anon.24, ptr %126, i32 0, i32 19
  store i8 1, ptr %127, align 1, !tbaa !88
  %128 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 17
  %129 = load i32, ptr %7, align 4, !tbaa !82
  %130 = sext i32 %129 to i64
  %131 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %130) #8
  call void @_ZNSt8optionalISt4pairIddEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(24) %131, ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  br label %132

132:                                              ; preds = %125, %124
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  br label %133

133:                                              ; preds = %132
  %134 = load i32, ptr %7, align 4, !tbaa !82
  %135 = add nsw i32 %134, 1
  store i32 %135, ptr %7, align 4, !tbaa !82
  br label %76, !llvm.loop !89

136:                                              ; preds = %83
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  store i32 0, ptr %11, align 4, !tbaa !82
  br label %137

137:                                              ; preds = %194, %136
  %138 = load i32, ptr %11, align 4, !tbaa !82
  %139 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %140 = load ptr, ptr %139, align 8, !tbaa !9
  %141 = getelementptr inbounds %struct.mjModel_, ptr %140, i32 0, i32 2
  %142 = load i32, ptr %141, align 8, !tbaa !91
  %143 = icmp slt i32 %138, %142
  br i1 %143, label %145, label %144

144:                                              ; preds = %137
  store i32 5, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  br label %197

145:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #8
  call void @_ZNSt8optionalISt4pairIddEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %146 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %147 = load ptr, ptr %146, align 8, !tbaa !9
  %148 = getelementptr inbounds %struct.mjModel_, ptr %147, i32 0, i32 374
  %149 = load ptr, ptr %148, align 8, !tbaa !92
  %150 = load i32, ptr %11, align 4, !tbaa !82
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds i8, ptr %149, i64 %151
  %153 = load i8, ptr %152, align 1, !tbaa !86
  %154 = icmp ne i8 %153, 0
  br i1 %154, label %155, label %179

155:                                              ; preds = %145
  %156 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %157 = load ptr, ptr %156, align 8, !tbaa !9
  %158 = getelementptr inbounds %struct.mjModel_, ptr %157, i32 0, i32 381
  %159 = load ptr, ptr %158, align 8, !tbaa !93
  %160 = load i32, ptr %11, align 4, !tbaa !82
  %161 = mul nsw i32 2, %160
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds double, ptr %159, i64 %162
  %164 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %165 = load ptr, ptr %164, align 8, !tbaa !9
  %166 = getelementptr inbounds %struct.mjModel_, ptr %165, i32 0, i32 381
  %167 = load ptr, ptr %166, align 8, !tbaa !93
  %168 = load i32, ptr %11, align 4, !tbaa !82
  %169 = mul nsw i32 2, %168
  %170 = add nsw i32 %169, 1
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %167, i64 %171
  %173 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8optionalISt4pairIddEE7emplaceIJRdS4_EEENSt9enable_ifIX18is_constructible_vIS1_DpT_EERS1_E4typeEDpOS6_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull align 8 dereferenceable(8) %172)
          to label %174 unwind label %175

174:                                              ; preds = %155
  br label %179

175:                                              ; preds = %179, %155
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %9, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  br label %1741

179:                                              ; preds = %174, %145
  %180 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 20
  %181 = load i32, ptr %11, align 4, !tbaa !82
  %182 = sext i32 %181 to i64
  %183 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %180, i64 noundef %182) #8
  %184 = invoke noundef zeroext i1 @_ZStneISt4pairIddES1_ENSt9enable_ifIXsr14is_convertibleIDTneclsr3stdE7declvalIRKT_EEclsr3stdE7declvalIRKT0_EEEbEE5valueEbE4typeERKSt8optionalIS3_ERKSC_IS6_E(ptr noundef nonnull align 8 dereferenceable(24) %183, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %185 unwind label %175

185:                                              ; preds = %179
  br i1 %184, label %186, label %193

186:                                              ; preds = %185
  %187 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %188 = getelementptr inbounds %struct.anon.24, ptr %187, i32 0, i32 21
  store i8 1, ptr %188, align 1, !tbaa !94
  %189 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 20
  %190 = load i32, ptr %11, align 4, !tbaa !82
  %191 = sext i32 %190 to i64
  %192 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %189, i64 noundef %191) #8
  call void @_ZNSt8optionalISt4pairIddEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(24) %192, ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  br label %193

193:                                              ; preds = %186, %185
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #8
  br label %194

194:                                              ; preds = %193
  %195 = load i32, ptr %11, align 4, !tbaa !82
  %196 = add nsw i32 %195, 1
  store i32 %196, ptr %11, align 4, !tbaa !82
  br label %137, !llvm.loop !95

197:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !82
  br label %198

198:                                              ; preds = %269, %197
  %199 = load i32, ptr %13, align 4, !tbaa !82
  %200 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %201 = load ptr, ptr %200, align 8, !tbaa !9
  %202 = getelementptr inbounds %struct.mjModel_, ptr %201, i32 0, i32 0
  %203 = load i32, ptr %202, align 8, !tbaa !96
  %204 = icmp slt i32 %199, %203
  br i1 %204, label %206, label %205

205:                                              ; preds = %198
  store i32 8, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %272

206:                                              ; preds = %198
  %207 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 23
  %208 = load i32, ptr %13, align 4, !tbaa !82
  %209 = sext i32 %208 to i64
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %207, i64 noundef %209) #8
  %211 = load double, ptr %210, align 8, !tbaa !97
  %212 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 24
  %213 = load i32, ptr %13, align 4, !tbaa !82
  %214 = sext i32 %213 to i64
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %214) #8
  %216 = load double, ptr %215, align 8, !tbaa !97
  %217 = fcmp une double %211, %216
  br i1 %217, label %218, label %231

218:                                              ; preds = %206
  %219 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 23
  %220 = load i32, ptr %13, align 4, !tbaa !82
  %221 = sext i32 %220 to i64
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %219, i64 noundef %221) #8
  %223 = load double, ptr %222, align 8, !tbaa !97
  %224 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %225 = load ptr, ptr %224, align 8, !tbaa !98
  %226 = getelementptr inbounds %struct.mjData_, ptr %225, i32 0, i32 29
  %227 = load ptr, ptr %226, align 8, !tbaa !99
  %228 = load i32, ptr %13, align 4, !tbaa !82
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds double, ptr %227, i64 %229
  store double %223, ptr %230, align 8, !tbaa !97
  br label %244

231:                                              ; preds = %206
  %232 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %233 = load ptr, ptr %232, align 8, !tbaa !98
  %234 = getelementptr inbounds %struct.mjData_, ptr %233, i32 0, i32 29
  %235 = load ptr, ptr %234, align 8, !tbaa !99
  %236 = load i32, ptr %13, align 4, !tbaa !82
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %235, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !97
  %240 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 23
  %241 = load i32, ptr %13, align 4, !tbaa !82
  %242 = sext i32 %241 to i64
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %242) #8
  store double %239, ptr %243, align 8, !tbaa !97
  br label %244

244:                                              ; preds = %231, %218
  %245 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 24
  %246 = load i32, ptr %13, align 4, !tbaa !82
  %247 = sext i32 %246 to i64
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %245, i64 noundef %247) #8
  %249 = load double, ptr %248, align 8, !tbaa !97
  %250 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 23
  %251 = load i32, ptr %13, align 4, !tbaa !82
  %252 = sext i32 %251 to i64
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %252) #8
  %254 = load double, ptr %253, align 8, !tbaa !97
  %255 = fcmp une double %249, %254
  br i1 %255, label %256, label %268

256:                                              ; preds = %244
  %257 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %258 = getelementptr inbounds %struct.anon.24, ptr %257, i32 0, i32 19
  store i8 1, ptr %258, align 1, !tbaa !88
  %259 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 23
  %260 = load i32, ptr %13, align 4, !tbaa !82
  %261 = sext i32 %260 to i64
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef %261) #8
  %263 = load double, ptr %262, align 8, !tbaa !97
  %264 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 24
  %265 = load i32, ptr %13, align 4, !tbaa !82
  %266 = sext i32 %265 to i64
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %266) #8
  store double %263, ptr %267, align 8, !tbaa !97
  br label %268

268:                                              ; preds = %256, %244
  br label %269

269:                                              ; preds = %268
  %270 = load i32, ptr %13, align 4, !tbaa !82
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %13, align 4, !tbaa !82
  br label %198, !llvm.loop !101

272:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !82
  br label %273

273:                                              ; preds = %344, %272
  %274 = load i32, ptr %14, align 4, !tbaa !82
  %275 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %276 = load ptr, ptr %275, align 8, !tbaa !9
  %277 = getelementptr inbounds %struct.mjModel_, ptr %276, i32 0, i32 2
  %278 = load i32, ptr %277, align 8, !tbaa !91
  %279 = icmp slt i32 %274, %278
  br i1 %279, label %281, label %280

280:                                              ; preds = %273
  store i32 11, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %347

281:                                              ; preds = %273
  %282 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 25
  %283 = load i32, ptr %14, align 4, !tbaa !82
  %284 = sext i32 %283 to i64
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %282, i64 noundef %284) #8
  %286 = load double, ptr %285, align 8, !tbaa !97
  %287 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 26
  %288 = load i32, ptr %14, align 4, !tbaa !82
  %289 = sext i32 %288 to i64
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %287, i64 noundef %289) #8
  %291 = load double, ptr %290, align 8, !tbaa !97
  %292 = fcmp une double %286, %291
  br i1 %292, label %293, label %306

293:                                              ; preds = %281
  %294 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 25
  %295 = load i32, ptr %14, align 4, !tbaa !82
  %296 = sext i32 %295 to i64
  %297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %294, i64 noundef %296) #8
  %298 = load double, ptr %297, align 8, !tbaa !97
  %299 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %300 = load ptr, ptr %299, align 8, !tbaa !98
  %301 = getelementptr inbounds %struct.mjData_, ptr %300, i32 0, i32 34
  %302 = load ptr, ptr %301, align 8, !tbaa !102
  %303 = load i32, ptr %14, align 4, !tbaa !82
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds double, ptr %302, i64 %304
  store double %298, ptr %305, align 8, !tbaa !97
  br label %319

306:                                              ; preds = %281
  %307 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %308 = load ptr, ptr %307, align 8, !tbaa !98
  %309 = getelementptr inbounds %struct.mjData_, ptr %308, i32 0, i32 34
  %310 = load ptr, ptr %309, align 8, !tbaa !102
  %311 = load i32, ptr %14, align 4, !tbaa !82
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds double, ptr %310, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !97
  %315 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 25
  %316 = load i32, ptr %14, align 4, !tbaa !82
  %317 = sext i32 %316 to i64
  %318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %315, i64 noundef %317) #8
  store double %314, ptr %318, align 8, !tbaa !97
  br label %319

319:                                              ; preds = %306, %293
  %320 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 26
  %321 = load i32, ptr %14, align 4, !tbaa !82
  %322 = sext i32 %321 to i64
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %320, i64 noundef %322) #8
  %324 = load double, ptr %323, align 8, !tbaa !97
  %325 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 25
  %326 = load i32, ptr %14, align 4, !tbaa !82
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %325, i64 noundef %327) #8
  %329 = load double, ptr %328, align 8, !tbaa !97
  %330 = fcmp une double %324, %329
  br i1 %330, label %331, label %343

331:                                              ; preds = %319
  %332 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %333 = getelementptr inbounds %struct.anon.24, ptr %332, i32 0, i32 20
  store i8 1, ptr %333, align 4, !tbaa !103
  %334 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 25
  %335 = load i32, ptr %14, align 4, !tbaa !82
  %336 = sext i32 %335 to i64
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef %336) #8
  %338 = load double, ptr %337, align 8, !tbaa !97
  %339 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 26
  %340 = load i32, ptr %14, align 4, !tbaa !82
  %341 = sext i32 %340 to i64
  %342 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %339, i64 noundef %341) #8
  store double %338, ptr %342, align 8, !tbaa !97
  br label %343

343:                                              ; preds = %331, %319
  br label %344

344:                                              ; preds = %343
  %345 = load i32, ptr %14, align 4, !tbaa !82
  %346 = add nsw i32 %345, 1
  store i32 %346, ptr %14, align 4, !tbaa !82
  br label %273, !llvm.loop !104

347:                                              ; preds = %280
  %348 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 0
  %349 = load i8, ptr %348, align 8, !tbaa !105, !range !106, !noundef !107
  %350 = trunc i8 %349 to i1
  br i1 %350, label %351, label %950

351:                                              ; preds = %347
  %352 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %353 = getelementptr inbounds %struct.mjvSceneState_, ptr %352, i32 0, i32 4
  %354 = getelementptr inbounds %struct.anon, ptr %353, i32 0, i32 30
  %355 = getelementptr inbounds %struct.mjOption_, ptr %354, i32 0, i32 0
  %356 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %357 = getelementptr inbounds %struct.mjOption_, ptr %356, i32 0, i32 0
  %358 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %355, ptr noundef nonnull align 8 dereferenceable(8) %357)
          to label %359 unwind label %372

359:                                              ; preds = %351
  br i1 %358, label %360, label %376

360:                                              ; preds = %359
  %361 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %362 = getelementptr inbounds %struct.anon.24, ptr %361, i32 0, i32 17
  store i8 1, ptr %362, align 1, !tbaa !108
  %363 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %364 = load ptr, ptr %363, align 8, !tbaa !9
  %365 = getelementptr inbounds %struct.mjModel_, ptr %364, i32 0, i32 77
  %366 = getelementptr inbounds %struct.mjOption_, ptr %365, i32 0, i32 0
  %367 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %368 = getelementptr inbounds %struct.mjvSceneState_, ptr %367, i32 0, i32 4
  %369 = getelementptr inbounds %struct.anon, ptr %368, i32 0, i32 30
  %370 = getelementptr inbounds %struct.mjOption_, ptr %369, i32 0, i32 0
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %366, ptr noundef nonnull align 8 dereferenceable(8) %370)
          to label %371 unwind label %372

371:                                              ; preds = %360
  br label %376

372:                                              ; preds = %1729, %1721, %1714, %1704, %1693, %1687, %1678, %1667, %1657, %1643, %1625, %1619, %1505, %1492, %1298, %1281, %1113, %1106, %1097, %1084, %1073, %1057, %1052, %1033, %1012, %991, %910, %901, %889, %880, %868, %859, %847, %838, %826, %817, %805, %796, %784, %775, %763, %754, %742, %733, %721, %712, %700, %691, %679, %670, %658, %649, %637, %628, %616, %607, %595, %586, %574, %565, %553, %544, %532, %523, %511, %502, %490, %481, %469, %460, %448, %439, %427, %418, %406, %397, %385, %376, %360, %351
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %9, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %10, align 4
  br label %1741

376:                                              ; preds = %371, %359
  %377 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %378 = getelementptr inbounds %struct.mjvSceneState_, ptr %377, i32 0, i32 4
  %379 = getelementptr inbounds %struct.anon, ptr %378, i32 0, i32 30
  %380 = getelementptr inbounds %struct.mjOption_, ptr %379, i32 0, i32 1
  %381 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %382 = getelementptr inbounds %struct.mjOption_, ptr %381, i32 0, i32 1
  %383 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef nonnull align 8 dereferenceable(8) %382)
          to label %384 unwind label %372

384:                                              ; preds = %376
  br i1 %383, label %385, label %397

385:                                              ; preds = %384
  %386 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %387 = getelementptr inbounds %struct.anon.24, ptr %386, i32 0, i32 17
  store i8 1, ptr %387, align 1, !tbaa !108
  %388 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %389 = load ptr, ptr %388, align 8, !tbaa !9
  %390 = getelementptr inbounds %struct.mjModel_, ptr %389, i32 0, i32 77
  %391 = getelementptr inbounds %struct.mjOption_, ptr %390, i32 0, i32 1
  %392 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %393 = getelementptr inbounds %struct.mjvSceneState_, ptr %392, i32 0, i32 4
  %394 = getelementptr inbounds %struct.anon, ptr %393, i32 0, i32 30
  %395 = getelementptr inbounds %struct.mjOption_, ptr %394, i32 0, i32 1
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %391, ptr noundef nonnull align 8 dereferenceable(8) %395)
          to label %396 unwind label %372

396:                                              ; preds = %385
  br label %397

397:                                              ; preds = %396, %384
  %398 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %399 = getelementptr inbounds %struct.mjvSceneState_, ptr %398, i32 0, i32 4
  %400 = getelementptr inbounds %struct.anon, ptr %399, i32 0, i32 30
  %401 = getelementptr inbounds %struct.mjOption_, ptr %400, i32 0, i32 2
  %402 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %403 = getelementptr inbounds %struct.mjOption_, ptr %402, i32 0, i32 2
  %404 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %401, ptr noundef nonnull align 8 dereferenceable(8) %403)
          to label %405 unwind label %372

405:                                              ; preds = %397
  br i1 %404, label %406, label %418

406:                                              ; preds = %405
  %407 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %408 = getelementptr inbounds %struct.anon.24, ptr %407, i32 0, i32 17
  store i8 1, ptr %408, align 1, !tbaa !108
  %409 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %410 = load ptr, ptr %409, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.mjModel_, ptr %410, i32 0, i32 77
  %412 = getelementptr inbounds %struct.mjOption_, ptr %411, i32 0, i32 2
  %413 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %414 = getelementptr inbounds %struct.mjvSceneState_, ptr %413, i32 0, i32 4
  %415 = getelementptr inbounds %struct.anon, ptr %414, i32 0, i32 30
  %416 = getelementptr inbounds %struct.mjOption_, ptr %415, i32 0, i32 2
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull align 8 dereferenceable(8) %416)
          to label %417 unwind label %372

417:                                              ; preds = %406
  br label %418

418:                                              ; preds = %417, %405
  %419 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %420 = getelementptr inbounds %struct.mjvSceneState_, ptr %419, i32 0, i32 4
  %421 = getelementptr inbounds %struct.anon, ptr %420, i32 0, i32 30
  %422 = getelementptr inbounds %struct.mjOption_, ptr %421, i32 0, i32 3
  %423 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %424 = getelementptr inbounds %struct.mjOption_, ptr %423, i32 0, i32 3
  %425 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %422, ptr noundef nonnull align 8 dereferenceable(8) %424)
          to label %426 unwind label %372

426:                                              ; preds = %418
  br i1 %425, label %427, label %439

427:                                              ; preds = %426
  %428 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %429 = getelementptr inbounds %struct.anon.24, ptr %428, i32 0, i32 17
  store i8 1, ptr %429, align 1, !tbaa !108
  %430 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %431 = load ptr, ptr %430, align 8, !tbaa !9
  %432 = getelementptr inbounds %struct.mjModel_, ptr %431, i32 0, i32 77
  %433 = getelementptr inbounds %struct.mjOption_, ptr %432, i32 0, i32 3
  %434 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %435 = getelementptr inbounds %struct.mjvSceneState_, ptr %434, i32 0, i32 4
  %436 = getelementptr inbounds %struct.anon, ptr %435, i32 0, i32 30
  %437 = getelementptr inbounds %struct.mjOption_, ptr %436, i32 0, i32 3
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull align 8 dereferenceable(8) %437)
          to label %438 unwind label %372

438:                                              ; preds = %427
  br label %439

439:                                              ; preds = %438, %426
  %440 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %441 = getelementptr inbounds %struct.mjvSceneState_, ptr %440, i32 0, i32 4
  %442 = getelementptr inbounds %struct.anon, ptr %441, i32 0, i32 30
  %443 = getelementptr inbounds %struct.mjOption_, ptr %442, i32 0, i32 5
  %444 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %445 = getelementptr inbounds %struct.mjOption_, ptr %444, i32 0, i32 5
  %446 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %443, ptr noundef nonnull align 8 dereferenceable(8) %445)
          to label %447 unwind label %372

447:                                              ; preds = %439
  br i1 %446, label %448, label %460

448:                                              ; preds = %447
  %449 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %450 = getelementptr inbounds %struct.anon.24, ptr %449, i32 0, i32 17
  store i8 1, ptr %450, align 1, !tbaa !108
  %451 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %452 = load ptr, ptr %451, align 8, !tbaa !9
  %453 = getelementptr inbounds %struct.mjModel_, ptr %452, i32 0, i32 77
  %454 = getelementptr inbounds %struct.mjOption_, ptr %453, i32 0, i32 5
  %455 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %456 = getelementptr inbounds %struct.mjvSceneState_, ptr %455, i32 0, i32 4
  %457 = getelementptr inbounds %struct.anon, ptr %456, i32 0, i32 30
  %458 = getelementptr inbounds %struct.mjOption_, ptr %457, i32 0, i32 5
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull align 8 dereferenceable(8) %458)
          to label %459 unwind label %372

459:                                              ; preds = %448
  br label %460

460:                                              ; preds = %459, %447
  %461 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %462 = getelementptr inbounds %struct.mjvSceneState_, ptr %461, i32 0, i32 4
  %463 = getelementptr inbounds %struct.anon, ptr %462, i32 0, i32 30
  %464 = getelementptr inbounds %struct.mjOption_, ptr %463, i32 0, i32 6
  %465 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %466 = getelementptr inbounds %struct.mjOption_, ptr %465, i32 0, i32 6
  %467 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %464, ptr noundef nonnull align 8 dereferenceable(8) %466)
          to label %468 unwind label %372

468:                                              ; preds = %460
  br i1 %467, label %469, label %481

469:                                              ; preds = %468
  %470 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %471 = getelementptr inbounds %struct.anon.24, ptr %470, i32 0, i32 17
  store i8 1, ptr %471, align 1, !tbaa !108
  %472 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %473 = load ptr, ptr %472, align 8, !tbaa !9
  %474 = getelementptr inbounds %struct.mjModel_, ptr %473, i32 0, i32 77
  %475 = getelementptr inbounds %struct.mjOption_, ptr %474, i32 0, i32 6
  %476 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %477 = getelementptr inbounds %struct.mjvSceneState_, ptr %476, i32 0, i32 4
  %478 = getelementptr inbounds %struct.anon, ptr %477, i32 0, i32 30
  %479 = getelementptr inbounds %struct.mjOption_, ptr %478, i32 0, i32 6
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull align 8 dereferenceable(8) %479)
          to label %480 unwind label %372

480:                                              ; preds = %469
  br label %481

481:                                              ; preds = %480, %468
  %482 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %483 = getelementptr inbounds %struct.mjvSceneState_, ptr %482, i32 0, i32 4
  %484 = getelementptr inbounds %struct.anon, ptr %483, i32 0, i32 30
  %485 = getelementptr inbounds %struct.mjOption_, ptr %484, i32 0, i32 7
  %486 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %487 = getelementptr inbounds %struct.mjOption_, ptr %486, i32 0, i32 7
  %488 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA3_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(24) %485, ptr noundef nonnull align 8 dereferenceable(24) %487)
          to label %489 unwind label %372

489:                                              ; preds = %481
  br i1 %488, label %490, label %502

490:                                              ; preds = %489
  %491 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %492 = getelementptr inbounds %struct.anon.24, ptr %491, i32 0, i32 17
  store i8 1, ptr %492, align 1, !tbaa !108
  %493 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %494 = load ptr, ptr %493, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.mjModel_, ptr %494, i32 0, i32 77
  %496 = getelementptr inbounds %struct.mjOption_, ptr %495, i32 0, i32 7
  %497 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %498 = getelementptr inbounds %struct.mjvSceneState_, ptr %497, i32 0, i32 4
  %499 = getelementptr inbounds %struct.anon, ptr %498, i32 0, i32 30
  %500 = getelementptr inbounds %struct.mjOption_, ptr %499, i32 0, i32 7
  invoke void @_ZN12_GLOBAL__N_14CopyIA3_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %496, ptr noundef nonnull align 8 dereferenceable(24) %500)
          to label %501 unwind label %372

501:                                              ; preds = %490
  br label %502

502:                                              ; preds = %501, %489
  %503 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %504 = getelementptr inbounds %struct.mjvSceneState_, ptr %503, i32 0, i32 4
  %505 = getelementptr inbounds %struct.anon, ptr %504, i32 0, i32 30
  %506 = getelementptr inbounds %struct.mjOption_, ptr %505, i32 0, i32 8
  %507 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %508 = getelementptr inbounds %struct.mjOption_, ptr %507, i32 0, i32 8
  %509 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA3_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(24) %506, ptr noundef nonnull align 8 dereferenceable(24) %508)
          to label %510 unwind label %372

510:                                              ; preds = %502
  br i1 %509, label %511, label %523

511:                                              ; preds = %510
  %512 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %513 = getelementptr inbounds %struct.anon.24, ptr %512, i32 0, i32 17
  store i8 1, ptr %513, align 1, !tbaa !108
  %514 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %515 = load ptr, ptr %514, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.mjModel_, ptr %515, i32 0, i32 77
  %517 = getelementptr inbounds %struct.mjOption_, ptr %516, i32 0, i32 8
  %518 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %519 = getelementptr inbounds %struct.mjvSceneState_, ptr %518, i32 0, i32 4
  %520 = getelementptr inbounds %struct.anon, ptr %519, i32 0, i32 30
  %521 = getelementptr inbounds %struct.mjOption_, ptr %520, i32 0, i32 8
  invoke void @_ZN12_GLOBAL__N_14CopyIA3_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %517, ptr noundef nonnull align 8 dereferenceable(24) %521)
          to label %522 unwind label %372

522:                                              ; preds = %511
  br label %523

523:                                              ; preds = %522, %510
  %524 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %525 = getelementptr inbounds %struct.mjvSceneState_, ptr %524, i32 0, i32 4
  %526 = getelementptr inbounds %struct.anon, ptr %525, i32 0, i32 30
  %527 = getelementptr inbounds %struct.mjOption_, ptr %526, i32 0, i32 9
  %528 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %529 = getelementptr inbounds %struct.mjOption_, ptr %528, i32 0, i32 9
  %530 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA3_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(24) %527, ptr noundef nonnull align 8 dereferenceable(24) %529)
          to label %531 unwind label %372

531:                                              ; preds = %523
  br i1 %530, label %532, label %544

532:                                              ; preds = %531
  %533 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %534 = getelementptr inbounds %struct.anon.24, ptr %533, i32 0, i32 17
  store i8 1, ptr %534, align 1, !tbaa !108
  %535 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %536 = load ptr, ptr %535, align 8, !tbaa !9
  %537 = getelementptr inbounds %struct.mjModel_, ptr %536, i32 0, i32 77
  %538 = getelementptr inbounds %struct.mjOption_, ptr %537, i32 0, i32 9
  %539 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %540 = getelementptr inbounds %struct.mjvSceneState_, ptr %539, i32 0, i32 4
  %541 = getelementptr inbounds %struct.anon, ptr %540, i32 0, i32 30
  %542 = getelementptr inbounds %struct.mjOption_, ptr %541, i32 0, i32 9
  invoke void @_ZN12_GLOBAL__N_14CopyIA3_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %538, ptr noundef nonnull align 8 dereferenceable(24) %542)
          to label %543 unwind label %372

543:                                              ; preds = %532
  br label %544

544:                                              ; preds = %543, %531
  %545 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %546 = getelementptr inbounds %struct.mjvSceneState_, ptr %545, i32 0, i32 4
  %547 = getelementptr inbounds %struct.anon, ptr %546, i32 0, i32 30
  %548 = getelementptr inbounds %struct.mjOption_, ptr %547, i32 0, i32 10
  %549 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %550 = getelementptr inbounds %struct.mjOption_, ptr %549, i32 0, i32 10
  %551 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %548, ptr noundef nonnull align 8 dereferenceable(8) %550)
          to label %552 unwind label %372

552:                                              ; preds = %544
  br i1 %551, label %553, label %565

553:                                              ; preds = %552
  %554 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %555 = getelementptr inbounds %struct.anon.24, ptr %554, i32 0, i32 17
  store i8 1, ptr %555, align 1, !tbaa !108
  %556 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %557 = load ptr, ptr %556, align 8, !tbaa !9
  %558 = getelementptr inbounds %struct.mjModel_, ptr %557, i32 0, i32 77
  %559 = getelementptr inbounds %struct.mjOption_, ptr %558, i32 0, i32 10
  %560 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %561 = getelementptr inbounds %struct.mjvSceneState_, ptr %560, i32 0, i32 4
  %562 = getelementptr inbounds %struct.anon, ptr %561, i32 0, i32 30
  %563 = getelementptr inbounds %struct.mjOption_, ptr %562, i32 0, i32 10
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %559, ptr noundef nonnull align 8 dereferenceable(8) %563)
          to label %564 unwind label %372

564:                                              ; preds = %553
  br label %565

565:                                              ; preds = %564, %552
  %566 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %567 = getelementptr inbounds %struct.mjvSceneState_, ptr %566, i32 0, i32 4
  %568 = getelementptr inbounds %struct.anon, ptr %567, i32 0, i32 30
  %569 = getelementptr inbounds %struct.mjOption_, ptr %568, i32 0, i32 11
  %570 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %571 = getelementptr inbounds %struct.mjOption_, ptr %570, i32 0, i32 11
  %572 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %569, ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %573 unwind label %372

573:                                              ; preds = %565
  br i1 %572, label %574, label %586

574:                                              ; preds = %573
  %575 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %576 = getelementptr inbounds %struct.anon.24, ptr %575, i32 0, i32 17
  store i8 1, ptr %576, align 1, !tbaa !108
  %577 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %578 = load ptr, ptr %577, align 8, !tbaa !9
  %579 = getelementptr inbounds %struct.mjModel_, ptr %578, i32 0, i32 77
  %580 = getelementptr inbounds %struct.mjOption_, ptr %579, i32 0, i32 11
  %581 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %582 = getelementptr inbounds %struct.mjvSceneState_, ptr %581, i32 0, i32 4
  %583 = getelementptr inbounds %struct.anon, ptr %582, i32 0, i32 30
  %584 = getelementptr inbounds %struct.mjOption_, ptr %583, i32 0, i32 11
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %580, ptr noundef nonnull align 8 dereferenceable(8) %584)
          to label %585 unwind label %372

585:                                              ; preds = %574
  br label %586

586:                                              ; preds = %585, %573
  %587 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %588 = getelementptr inbounds %struct.mjvSceneState_, ptr %587, i32 0, i32 4
  %589 = getelementptr inbounds %struct.anon, ptr %588, i32 0, i32 30
  %590 = getelementptr inbounds %struct.mjOption_, ptr %589, i32 0, i32 12
  %591 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %592 = getelementptr inbounds %struct.mjOption_, ptr %591, i32 0, i32 12
  %593 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %590, ptr noundef nonnull align 8 dereferenceable(8) %592)
          to label %594 unwind label %372

594:                                              ; preds = %586
  br i1 %593, label %595, label %607

595:                                              ; preds = %594
  %596 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %597 = getelementptr inbounds %struct.anon.24, ptr %596, i32 0, i32 17
  store i8 1, ptr %597, align 1, !tbaa !108
  %598 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %599 = load ptr, ptr %598, align 8, !tbaa !9
  %600 = getelementptr inbounds %struct.mjModel_, ptr %599, i32 0, i32 77
  %601 = getelementptr inbounds %struct.mjOption_, ptr %600, i32 0, i32 12
  %602 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %603 = getelementptr inbounds %struct.mjvSceneState_, ptr %602, i32 0, i32 4
  %604 = getelementptr inbounds %struct.anon, ptr %603, i32 0, i32 30
  %605 = getelementptr inbounds %struct.mjOption_, ptr %604, i32 0, i32 12
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %601, ptr noundef nonnull align 8 dereferenceable(8) %605)
          to label %606 unwind label %372

606:                                              ; preds = %595
  br label %607

607:                                              ; preds = %606, %594
  %608 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %609 = getelementptr inbounds %struct.mjvSceneState_, ptr %608, i32 0, i32 4
  %610 = getelementptr inbounds %struct.anon, ptr %609, i32 0, i32 30
  %611 = getelementptr inbounds %struct.mjOption_, ptr %610, i32 0, i32 13
  %612 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %613 = getelementptr inbounds %struct.mjOption_, ptr %612, i32 0, i32 13
  %614 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA2_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(16) %611, ptr noundef nonnull align 8 dereferenceable(16) %613)
          to label %615 unwind label %372

615:                                              ; preds = %607
  br i1 %614, label %616, label %628

616:                                              ; preds = %615
  %617 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %618 = getelementptr inbounds %struct.anon.24, ptr %617, i32 0, i32 17
  store i8 1, ptr %618, align 1, !tbaa !108
  %619 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %620 = load ptr, ptr %619, align 8, !tbaa !9
  %621 = getelementptr inbounds %struct.mjModel_, ptr %620, i32 0, i32 77
  %622 = getelementptr inbounds %struct.mjOption_, ptr %621, i32 0, i32 13
  %623 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %624 = getelementptr inbounds %struct.mjvSceneState_, ptr %623, i32 0, i32 4
  %625 = getelementptr inbounds %struct.anon, ptr %624, i32 0, i32 30
  %626 = getelementptr inbounds %struct.mjOption_, ptr %625, i32 0, i32 13
  invoke void @_ZN12_GLOBAL__N_14CopyIA2_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(16) %622, ptr noundef nonnull align 8 dereferenceable(16) %626)
          to label %627 unwind label %372

627:                                              ; preds = %616
  br label %628

628:                                              ; preds = %627, %615
  %629 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %630 = getelementptr inbounds %struct.mjvSceneState_, ptr %629, i32 0, i32 4
  %631 = getelementptr inbounds %struct.anon, ptr %630, i32 0, i32 30
  %632 = getelementptr inbounds %struct.mjOption_, ptr %631, i32 0, i32 14
  %633 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %634 = getelementptr inbounds %struct.mjOption_, ptr %633, i32 0, i32 14
  %635 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA5_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(40) %632, ptr noundef nonnull align 8 dereferenceable(40) %634)
          to label %636 unwind label %372

636:                                              ; preds = %628
  br i1 %635, label %637, label %649

637:                                              ; preds = %636
  %638 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %639 = getelementptr inbounds %struct.anon.24, ptr %638, i32 0, i32 17
  store i8 1, ptr %639, align 1, !tbaa !108
  %640 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %641 = load ptr, ptr %640, align 8, !tbaa !9
  %642 = getelementptr inbounds %struct.mjModel_, ptr %641, i32 0, i32 77
  %643 = getelementptr inbounds %struct.mjOption_, ptr %642, i32 0, i32 14
  %644 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %645 = getelementptr inbounds %struct.mjvSceneState_, ptr %644, i32 0, i32 4
  %646 = getelementptr inbounds %struct.anon, ptr %645, i32 0, i32 30
  %647 = getelementptr inbounds %struct.mjOption_, ptr %646, i32 0, i32 14
  invoke void @_ZN12_GLOBAL__N_14CopyIA5_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(40) %643, ptr noundef nonnull align 8 dereferenceable(40) %647)
          to label %648 unwind label %372

648:                                              ; preds = %637
  br label %649

649:                                              ; preds = %648, %636
  %650 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %651 = getelementptr inbounds %struct.mjvSceneState_, ptr %650, i32 0, i32 4
  %652 = getelementptr inbounds %struct.anon, ptr %651, i32 0, i32 30
  %653 = getelementptr inbounds %struct.mjOption_, ptr %652, i32 0, i32 15
  %654 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %655 = getelementptr inbounds %struct.mjOption_, ptr %654, i32 0, i32 15
  %656 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA5_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(40) %653, ptr noundef nonnull align 8 dereferenceable(40) %655)
          to label %657 unwind label %372

657:                                              ; preds = %649
  br i1 %656, label %658, label %670

658:                                              ; preds = %657
  %659 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %660 = getelementptr inbounds %struct.anon.24, ptr %659, i32 0, i32 17
  store i8 1, ptr %660, align 1, !tbaa !108
  %661 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %662 = load ptr, ptr %661, align 8, !tbaa !9
  %663 = getelementptr inbounds %struct.mjModel_, ptr %662, i32 0, i32 77
  %664 = getelementptr inbounds %struct.mjOption_, ptr %663, i32 0, i32 15
  %665 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %666 = getelementptr inbounds %struct.mjvSceneState_, ptr %665, i32 0, i32 4
  %667 = getelementptr inbounds %struct.anon, ptr %666, i32 0, i32 30
  %668 = getelementptr inbounds %struct.mjOption_, ptr %667, i32 0, i32 15
  invoke void @_ZN12_GLOBAL__N_14CopyIA5_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(40) %664, ptr noundef nonnull align 8 dereferenceable(40) %668)
          to label %669 unwind label %372

669:                                              ; preds = %658
  br label %670

670:                                              ; preds = %669, %657
  %671 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %672 = getelementptr inbounds %struct.mjvSceneState_, ptr %671, i32 0, i32 4
  %673 = getelementptr inbounds %struct.anon, ptr %672, i32 0, i32 30
  %674 = getelementptr inbounds %struct.mjOption_, ptr %673, i32 0, i32 16
  %675 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %676 = getelementptr inbounds %struct.mjOption_, ptr %675, i32 0, i32 16
  %677 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %674, ptr noundef nonnull align 4 dereferenceable(4) %676)
          to label %678 unwind label %372

678:                                              ; preds = %670
  br i1 %677, label %679, label %691

679:                                              ; preds = %678
  %680 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %681 = getelementptr inbounds %struct.anon.24, ptr %680, i32 0, i32 17
  store i8 1, ptr %681, align 1, !tbaa !108
  %682 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %683 = load ptr, ptr %682, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.mjModel_, ptr %683, i32 0, i32 77
  %685 = getelementptr inbounds %struct.mjOption_, ptr %684, i32 0, i32 16
  %686 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %687 = getelementptr inbounds %struct.mjvSceneState_, ptr %686, i32 0, i32 4
  %688 = getelementptr inbounds %struct.anon, ptr %687, i32 0, i32 30
  %689 = getelementptr inbounds %struct.mjOption_, ptr %688, i32 0, i32 16
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %685, ptr noundef nonnull align 4 dereferenceable(4) %689)
          to label %690 unwind label %372

690:                                              ; preds = %679
  br label %691

691:                                              ; preds = %690, %678
  %692 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %693 = getelementptr inbounds %struct.mjvSceneState_, ptr %692, i32 0, i32 4
  %694 = getelementptr inbounds %struct.anon, ptr %693, i32 0, i32 30
  %695 = getelementptr inbounds %struct.mjOption_, ptr %694, i32 0, i32 17
  %696 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %697 = getelementptr inbounds %struct.mjOption_, ptr %696, i32 0, i32 17
  %698 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %695, ptr noundef nonnull align 4 dereferenceable(4) %697)
          to label %699 unwind label %372

699:                                              ; preds = %691
  br i1 %698, label %700, label %712

700:                                              ; preds = %699
  %701 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %702 = getelementptr inbounds %struct.anon.24, ptr %701, i32 0, i32 17
  store i8 1, ptr %702, align 1, !tbaa !108
  %703 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %704 = load ptr, ptr %703, align 8, !tbaa !9
  %705 = getelementptr inbounds %struct.mjModel_, ptr %704, i32 0, i32 77
  %706 = getelementptr inbounds %struct.mjOption_, ptr %705, i32 0, i32 17
  %707 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %708 = getelementptr inbounds %struct.mjvSceneState_, ptr %707, i32 0, i32 4
  %709 = getelementptr inbounds %struct.anon, ptr %708, i32 0, i32 30
  %710 = getelementptr inbounds %struct.mjOption_, ptr %709, i32 0, i32 17
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %706, ptr noundef nonnull align 4 dereferenceable(4) %710)
          to label %711 unwind label %372

711:                                              ; preds = %700
  br label %712

712:                                              ; preds = %711, %699
  %713 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %714 = getelementptr inbounds %struct.mjvSceneState_, ptr %713, i32 0, i32 4
  %715 = getelementptr inbounds %struct.anon, ptr %714, i32 0, i32 30
  %716 = getelementptr inbounds %struct.mjOption_, ptr %715, i32 0, i32 18
  %717 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %718 = getelementptr inbounds %struct.mjOption_, ptr %717, i32 0, i32 18
  %719 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %716, ptr noundef nonnull align 4 dereferenceable(4) %718)
          to label %720 unwind label %372

720:                                              ; preds = %712
  br i1 %719, label %721, label %733

721:                                              ; preds = %720
  %722 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %723 = getelementptr inbounds %struct.anon.24, ptr %722, i32 0, i32 17
  store i8 1, ptr %723, align 1, !tbaa !108
  %724 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %725 = load ptr, ptr %724, align 8, !tbaa !9
  %726 = getelementptr inbounds %struct.mjModel_, ptr %725, i32 0, i32 77
  %727 = getelementptr inbounds %struct.mjOption_, ptr %726, i32 0, i32 18
  %728 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %729 = getelementptr inbounds %struct.mjvSceneState_, ptr %728, i32 0, i32 4
  %730 = getelementptr inbounds %struct.anon, ptr %729, i32 0, i32 30
  %731 = getelementptr inbounds %struct.mjOption_, ptr %730, i32 0, i32 18
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %727, ptr noundef nonnull align 4 dereferenceable(4) %731)
          to label %732 unwind label %372

732:                                              ; preds = %721
  br label %733

733:                                              ; preds = %732, %720
  %734 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %735 = getelementptr inbounds %struct.mjvSceneState_, ptr %734, i32 0, i32 4
  %736 = getelementptr inbounds %struct.anon, ptr %735, i32 0, i32 30
  %737 = getelementptr inbounds %struct.mjOption_, ptr %736, i32 0, i32 19
  %738 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %739 = getelementptr inbounds %struct.mjOption_, ptr %738, i32 0, i32 19
  %740 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %737, ptr noundef nonnull align 4 dereferenceable(4) %739)
          to label %741 unwind label %372

741:                                              ; preds = %733
  br i1 %740, label %742, label %754

742:                                              ; preds = %741
  %743 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %744 = getelementptr inbounds %struct.anon.24, ptr %743, i32 0, i32 17
  store i8 1, ptr %744, align 1, !tbaa !108
  %745 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %746 = load ptr, ptr %745, align 8, !tbaa !9
  %747 = getelementptr inbounds %struct.mjModel_, ptr %746, i32 0, i32 77
  %748 = getelementptr inbounds %struct.mjOption_, ptr %747, i32 0, i32 19
  %749 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %750 = getelementptr inbounds %struct.mjvSceneState_, ptr %749, i32 0, i32 4
  %751 = getelementptr inbounds %struct.anon, ptr %750, i32 0, i32 30
  %752 = getelementptr inbounds %struct.mjOption_, ptr %751, i32 0, i32 19
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %748, ptr noundef nonnull align 4 dereferenceable(4) %752)
          to label %753 unwind label %372

753:                                              ; preds = %742
  br label %754

754:                                              ; preds = %753, %741
  %755 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %756 = getelementptr inbounds %struct.mjvSceneState_, ptr %755, i32 0, i32 4
  %757 = getelementptr inbounds %struct.anon, ptr %756, i32 0, i32 30
  %758 = getelementptr inbounds %struct.mjOption_, ptr %757, i32 0, i32 20
  %759 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %760 = getelementptr inbounds %struct.mjOption_, ptr %759, i32 0, i32 20
  %761 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %758, ptr noundef nonnull align 4 dereferenceable(4) %760)
          to label %762 unwind label %372

762:                                              ; preds = %754
  br i1 %761, label %763, label %775

763:                                              ; preds = %762
  %764 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %765 = getelementptr inbounds %struct.anon.24, ptr %764, i32 0, i32 17
  store i8 1, ptr %765, align 1, !tbaa !108
  %766 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %767 = load ptr, ptr %766, align 8, !tbaa !9
  %768 = getelementptr inbounds %struct.mjModel_, ptr %767, i32 0, i32 77
  %769 = getelementptr inbounds %struct.mjOption_, ptr %768, i32 0, i32 20
  %770 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %771 = getelementptr inbounds %struct.mjvSceneState_, ptr %770, i32 0, i32 4
  %772 = getelementptr inbounds %struct.anon, ptr %771, i32 0, i32 30
  %773 = getelementptr inbounds %struct.mjOption_, ptr %772, i32 0, i32 20
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %769, ptr noundef nonnull align 4 dereferenceable(4) %773)
          to label %774 unwind label %372

774:                                              ; preds = %763
  br label %775

775:                                              ; preds = %774, %762
  %776 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %777 = getelementptr inbounds %struct.mjvSceneState_, ptr %776, i32 0, i32 4
  %778 = getelementptr inbounds %struct.anon, ptr %777, i32 0, i32 30
  %779 = getelementptr inbounds %struct.mjOption_, ptr %778, i32 0, i32 22
  %780 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %781 = getelementptr inbounds %struct.mjOption_, ptr %780, i32 0, i32 22
  %782 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %779, ptr noundef nonnull align 4 dereferenceable(4) %781)
          to label %783 unwind label %372

783:                                              ; preds = %775
  br i1 %782, label %784, label %796

784:                                              ; preds = %783
  %785 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %786 = getelementptr inbounds %struct.anon.24, ptr %785, i32 0, i32 17
  store i8 1, ptr %786, align 1, !tbaa !108
  %787 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %788 = load ptr, ptr %787, align 8, !tbaa !9
  %789 = getelementptr inbounds %struct.mjModel_, ptr %788, i32 0, i32 77
  %790 = getelementptr inbounds %struct.mjOption_, ptr %789, i32 0, i32 22
  %791 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %792 = getelementptr inbounds %struct.mjvSceneState_, ptr %791, i32 0, i32 4
  %793 = getelementptr inbounds %struct.anon, ptr %792, i32 0, i32 30
  %794 = getelementptr inbounds %struct.mjOption_, ptr %793, i32 0, i32 22
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %790, ptr noundef nonnull align 4 dereferenceable(4) %794)
          to label %795 unwind label %372

795:                                              ; preds = %784
  br label %796

796:                                              ; preds = %795, %783
  %797 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %798 = getelementptr inbounds %struct.mjvSceneState_, ptr %797, i32 0, i32 4
  %799 = getelementptr inbounds %struct.anon, ptr %798, i32 0, i32 30
  %800 = getelementptr inbounds %struct.mjOption_, ptr %799, i32 0, i32 23
  %801 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %802 = getelementptr inbounds %struct.mjOption_, ptr %801, i32 0, i32 23
  %803 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %800, ptr noundef nonnull align 4 dereferenceable(4) %802)
          to label %804 unwind label %372

804:                                              ; preds = %796
  br i1 %803, label %805, label %817

805:                                              ; preds = %804
  %806 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %807 = getelementptr inbounds %struct.anon.24, ptr %806, i32 0, i32 17
  store i8 1, ptr %807, align 1, !tbaa !108
  %808 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %809 = load ptr, ptr %808, align 8, !tbaa !9
  %810 = getelementptr inbounds %struct.mjModel_, ptr %809, i32 0, i32 77
  %811 = getelementptr inbounds %struct.mjOption_, ptr %810, i32 0, i32 23
  %812 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %813 = getelementptr inbounds %struct.mjvSceneState_, ptr %812, i32 0, i32 4
  %814 = getelementptr inbounds %struct.anon, ptr %813, i32 0, i32 30
  %815 = getelementptr inbounds %struct.mjOption_, ptr %814, i32 0, i32 23
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %811, ptr noundef nonnull align 4 dereferenceable(4) %815)
          to label %816 unwind label %372

816:                                              ; preds = %805
  br label %817

817:                                              ; preds = %816, %804
  %818 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %819 = getelementptr inbounds %struct.mjvSceneState_, ptr %818, i32 0, i32 4
  %820 = getelementptr inbounds %struct.anon, ptr %819, i32 0, i32 30
  %821 = getelementptr inbounds %struct.mjOption_, ptr %820, i32 0, i32 24
  %822 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %823 = getelementptr inbounds %struct.mjOption_, ptr %822, i32 0, i32 24
  %824 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %821, ptr noundef nonnull align 4 dereferenceable(4) %823)
          to label %825 unwind label %372

825:                                              ; preds = %817
  br i1 %824, label %826, label %838

826:                                              ; preds = %825
  %827 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %828 = getelementptr inbounds %struct.anon.24, ptr %827, i32 0, i32 17
  store i8 1, ptr %828, align 1, !tbaa !108
  %829 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %830 = load ptr, ptr %829, align 8, !tbaa !9
  %831 = getelementptr inbounds %struct.mjModel_, ptr %830, i32 0, i32 77
  %832 = getelementptr inbounds %struct.mjOption_, ptr %831, i32 0, i32 24
  %833 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %834 = getelementptr inbounds %struct.mjvSceneState_, ptr %833, i32 0, i32 4
  %835 = getelementptr inbounds %struct.anon, ptr %834, i32 0, i32 30
  %836 = getelementptr inbounds %struct.mjOption_, ptr %835, i32 0, i32 24
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %832, ptr noundef nonnull align 4 dereferenceable(4) %836)
          to label %837 unwind label %372

837:                                              ; preds = %826
  br label %838

838:                                              ; preds = %837, %825
  %839 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %840 = getelementptr inbounds %struct.mjvSceneState_, ptr %839, i32 0, i32 4
  %841 = getelementptr inbounds %struct.anon, ptr %840, i32 0, i32 30
  %842 = getelementptr inbounds %struct.mjOption_, ptr %841, i32 0, i32 25
  %843 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %844 = getelementptr inbounds %struct.mjOption_, ptr %843, i32 0, i32 25
  %845 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %842, ptr noundef nonnull align 4 dereferenceable(4) %844)
          to label %846 unwind label %372

846:                                              ; preds = %838
  br i1 %845, label %847, label %859

847:                                              ; preds = %846
  %848 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %849 = getelementptr inbounds %struct.anon.24, ptr %848, i32 0, i32 17
  store i8 1, ptr %849, align 1, !tbaa !108
  %850 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %851 = load ptr, ptr %850, align 8, !tbaa !9
  %852 = getelementptr inbounds %struct.mjModel_, ptr %851, i32 0, i32 77
  %853 = getelementptr inbounds %struct.mjOption_, ptr %852, i32 0, i32 25
  %854 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %855 = getelementptr inbounds %struct.mjvSceneState_, ptr %854, i32 0, i32 4
  %856 = getelementptr inbounds %struct.anon, ptr %855, i32 0, i32 30
  %857 = getelementptr inbounds %struct.mjOption_, ptr %856, i32 0, i32 25
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %853, ptr noundef nonnull align 4 dereferenceable(4) %857)
          to label %858 unwind label %372

858:                                              ; preds = %847
  br label %859

859:                                              ; preds = %858, %846
  %860 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %861 = getelementptr inbounds %struct.mjvSceneState_, ptr %860, i32 0, i32 4
  %862 = getelementptr inbounds %struct.anon, ptr %861, i32 0, i32 30
  %863 = getelementptr inbounds %struct.mjOption_, ptr %862, i32 0, i32 26
  %864 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %865 = getelementptr inbounds %struct.mjOption_, ptr %864, i32 0, i32 26
  %866 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %863, ptr noundef nonnull align 4 dereferenceable(4) %865)
          to label %867 unwind label %372

867:                                              ; preds = %859
  br i1 %866, label %868, label %880

868:                                              ; preds = %867
  %869 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %870 = getelementptr inbounds %struct.anon.24, ptr %869, i32 0, i32 17
  store i8 1, ptr %870, align 1, !tbaa !108
  %871 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %872 = load ptr, ptr %871, align 8, !tbaa !9
  %873 = getelementptr inbounds %struct.mjModel_, ptr %872, i32 0, i32 77
  %874 = getelementptr inbounds %struct.mjOption_, ptr %873, i32 0, i32 26
  %875 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %876 = getelementptr inbounds %struct.mjvSceneState_, ptr %875, i32 0, i32 4
  %877 = getelementptr inbounds %struct.anon, ptr %876, i32 0, i32 30
  %878 = getelementptr inbounds %struct.mjOption_, ptr %877, i32 0, i32 26
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %874, ptr noundef nonnull align 4 dereferenceable(4) %878)
          to label %879 unwind label %372

879:                                              ; preds = %868
  br label %880

880:                                              ; preds = %879, %867
  %881 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %882 = getelementptr inbounds %struct.mjvSceneState_, ptr %881, i32 0, i32 4
  %883 = getelementptr inbounds %struct.anon, ptr %882, i32 0, i32 30
  %884 = getelementptr inbounds %struct.mjOption_, ptr %883, i32 0, i32 27
  %885 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %886 = getelementptr inbounds %struct.mjOption_, ptr %885, i32 0, i32 27
  %887 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %884, ptr noundef nonnull align 4 dereferenceable(4) %886)
          to label %888 unwind label %372

888:                                              ; preds = %880
  br i1 %887, label %889, label %901

889:                                              ; preds = %888
  %890 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %891 = getelementptr inbounds %struct.anon.24, ptr %890, i32 0, i32 17
  store i8 1, ptr %891, align 1, !tbaa !108
  %892 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %893 = load ptr, ptr %892, align 8, !tbaa !9
  %894 = getelementptr inbounds %struct.mjModel_, ptr %893, i32 0, i32 77
  %895 = getelementptr inbounds %struct.mjOption_, ptr %894, i32 0, i32 27
  %896 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %897 = getelementptr inbounds %struct.mjvSceneState_, ptr %896, i32 0, i32 4
  %898 = getelementptr inbounds %struct.anon, ptr %897, i32 0, i32 30
  %899 = getelementptr inbounds %struct.mjOption_, ptr %898, i32 0, i32 27
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %895, ptr noundef nonnull align 4 dereferenceable(4) %899)
          to label %900 unwind label %372

900:                                              ; preds = %889
  br label %901

901:                                              ; preds = %900, %888
  %902 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %903 = getelementptr inbounds %struct.mjvSceneState_, ptr %902, i32 0, i32 4
  %904 = getelementptr inbounds %struct.anon, ptr %903, i32 0, i32 30
  %905 = getelementptr inbounds %struct.mjOption_, ptr %904, i32 0, i32 28
  %906 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  %907 = getelementptr inbounds %struct.mjOption_, ptr %906, i32 0, i32 28
  %908 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %905, ptr noundef nonnull align 4 dereferenceable(4) %907)
          to label %909 unwind label %372

909:                                              ; preds = %901
  br i1 %908, label %910, label %922

910:                                              ; preds = %909
  %911 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %912 = getelementptr inbounds %struct.anon.24, ptr %911, i32 0, i32 17
  store i8 1, ptr %912, align 1, !tbaa !108
  %913 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %914 = load ptr, ptr %913, align 8, !tbaa !9
  %915 = getelementptr inbounds %struct.mjModel_, ptr %914, i32 0, i32 77
  %916 = getelementptr inbounds %struct.mjOption_, ptr %915, i32 0, i32 28
  %917 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %918 = getelementptr inbounds %struct.mjvSceneState_, ptr %917, i32 0, i32 4
  %919 = getelementptr inbounds %struct.anon, ptr %918, i32 0, i32 30
  %920 = getelementptr inbounds %struct.mjOption_, ptr %919, i32 0, i32 28
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %916, ptr noundef nonnull align 4 dereferenceable(4) %920)
          to label %921 unwind label %372

921:                                              ; preds = %910
  br label %922

922:                                              ; preds = %921, %909
  %923 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %924 = getelementptr inbounds %struct.mjvSceneState_, ptr %923, i32 0, i32 5
  %925 = getelementptr inbounds %struct.anon.23, ptr %924, i32 0, i32 0
  %926 = getelementptr inbounds [8 x %struct.mjWarningStat_], ptr %925, i64 0, i64 3
  %927 = getelementptr inbounds %struct.mjWarningStat_, ptr %926, i32 0, i32 1
  %928 = load i32, ptr %927, align 4, !tbaa !109
  %929 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 32
  %930 = load i32, ptr %929, align 8, !tbaa !111
  %931 = icmp sgt i32 %928, %930
  br i1 %931, label %932, label %949

932:                                              ; preds = %922
  %933 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %934 = getelementptr inbounds %struct.mjvSceneState_, ptr %933, i32 0, i32 5
  %935 = getelementptr inbounds %struct.anon.23, ptr %934, i32 0, i32 0
  %936 = getelementptr inbounds [8 x %struct.mjWarningStat_], ptr %935, i64 0, i64 3
  %937 = getelementptr inbounds %struct.mjWarningStat_, ptr %936, i32 0, i32 1
  %938 = load i32, ptr %937, align 4, !tbaa !109
  %939 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 32
  %940 = load i32, ptr %939, align 8, !tbaa !111
  %941 = sub nsw i32 %938, %940
  %942 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %943 = load ptr, ptr %942, align 8, !tbaa !98
  %944 = getelementptr inbounds %struct.mjData_, ptr %943, i32 0, i32 11
  %945 = getelementptr inbounds [8 x %struct.mjWarningStat_], ptr %944, i64 0, i64 3
  %946 = getelementptr inbounds %struct.mjWarningStat_, ptr %945, i32 0, i32 1
  %947 = load i32, ptr %946, align 4, !tbaa !109
  %948 = add nsw i32 %947, %941
  store i32 %948, ptr %946, align 4, !tbaa !109
  br label %949

949:                                              ; preds = %932, %922
  br label %950

950:                                              ; preds = %949, %347
  %951 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %952 = getelementptr inbounds %struct.anon.24, ptr %951, i32 0, i32 0
  %953 = call noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %952) #8
  br i1 %953, label %954, label %982

954:                                              ; preds = %950
  call void @llvm.lifetime.start.p0(i64 200, ptr %15) #8
  %955 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %956 = getelementptr inbounds %struct.anon.24, ptr %955, i32 0, i32 0
  %957 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %956) #8
  %958 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %957) #8
  br i1 %958, label %978, label %959

959:                                              ; preds = %954
  %960 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %961 = getelementptr inbounds %struct.anon.24, ptr %960, i32 0, i32 0
  %962 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %961) #8
  %963 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %962) #8
  %964 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %965 = load ptr, ptr %964, align 8, !tbaa !9
  %966 = getelementptr inbounds [200 x i8], ptr %15, i64 0, i64 0
  %967 = invoke i32 @mj_saveLastXML(ptr noundef %963, ptr noundef %965, ptr noundef %966, i32 noundef 200)
          to label %968 unwind label %974

968:                                              ; preds = %959
  %969 = icmp ne i32 %967, 0
  br i1 %969, label %978, label %970

970:                                              ; preds = %968
  %971 = getelementptr inbounds [200 x i8], ptr %15, i64 0, i64 0
  %972 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.51, ptr noundef %971)
          to label %973 unwind label %974

973:                                              ; preds = %970
  br label %978

974:                                              ; preds = %970, %959
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %9, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 200, ptr %15) #8
  br label %1741

978:                                              ; preds = %973, %968, %954
  %979 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %980 = getelementptr inbounds %struct.anon.24, ptr %979, i32 0, i32 0
  %981 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40) %980) #8
  call void @llvm.lifetime.end.p0(i64 200, ptr %15) #8
  br label %982

982:                                              ; preds = %978, %950
  %983 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %984 = getelementptr inbounds %struct.anon.24, ptr %983, i32 0, i32 1
  %985 = call noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %984) #8
  br i1 %985, label %986, label %1003

986:                                              ; preds = %982
  %987 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %988 = getelementptr inbounds %struct.anon.24, ptr %987, i32 0, i32 1
  %989 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %988) #8
  %990 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %989) #8
  br i1 %990, label %999, label %991

991:                                              ; preds = %986
  %992 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %993 = load ptr, ptr %992, align 8, !tbaa !9
  %994 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %995 = getelementptr inbounds %struct.anon.24, ptr %994, i32 0, i32 1
  %996 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %995) #8
  %997 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %996) #8
  invoke void @mj_saveModel(ptr noundef %993, ptr noundef %997, ptr noundef null, i32 noundef 0)
          to label %998 unwind label %372

998:                                              ; preds = %991
  br label %999

999:                                              ; preds = %998, %986
  %1000 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1001 = getelementptr inbounds %struct.anon.24, ptr %1000, i32 0, i32 1
  %1002 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40) %1001) #8
  br label %1003

1003:                                             ; preds = %999, %982
  %1004 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1005 = getelementptr inbounds %struct.anon.24, ptr %1004, i32 0, i32 2
  %1006 = call noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %1005) #8
  br i1 %1006, label %1007, label %1024

1007:                                             ; preds = %1003
  %1008 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1009 = getelementptr inbounds %struct.anon.24, ptr %1008, i32 0, i32 2
  %1010 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %1009) #8
  %1011 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1010) #8
  br i1 %1011, label %1020, label %1012

1012:                                             ; preds = %1007
  %1013 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1014 = load ptr, ptr %1013, align 8, !tbaa !9
  %1015 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1016 = getelementptr inbounds %struct.anon.24, ptr %1015, i32 0, i32 2
  %1017 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %1016) #8
  %1018 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %1017) #8
  invoke void @mj_printModel(ptr noundef %1014, ptr noundef %1018)
          to label %1019 unwind label %372

1019:                                             ; preds = %1012
  br label %1020

1020:                                             ; preds = %1019, %1007
  %1021 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1022 = getelementptr inbounds %struct.anon.24, ptr %1021, i32 0, i32 2
  %1023 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40) %1022) #8
  br label %1024

1024:                                             ; preds = %1020, %1003
  %1025 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1026 = getelementptr inbounds %struct.anon.24, ptr %1025, i32 0, i32 3
  %1027 = call noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %1026) #8
  br i1 %1027, label %1028, label %1047

1028:                                             ; preds = %1024
  %1029 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1030 = getelementptr inbounds %struct.anon.24, ptr %1029, i32 0, i32 3
  %1031 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %1030) #8
  %1032 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1031) #8
  br i1 %1032, label %1043, label %1033

1033:                                             ; preds = %1028
  %1034 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1035 = load ptr, ptr %1034, align 8, !tbaa !9
  %1036 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1037 = load ptr, ptr %1036, align 8, !tbaa !98
  %1038 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1039 = getelementptr inbounds %struct.anon.24, ptr %1038, i32 0, i32 3
  %1040 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %1039) #8
  %1041 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %1040) #8
  invoke void @mj_printData(ptr noundef %1035, ptr noundef %1037, ptr noundef %1041)
          to label %1042 unwind label %372

1042:                                             ; preds = %1033
  br label %1043

1043:                                             ; preds = %1042, %1028
  %1044 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1045 = getelementptr inbounds %struct.anon.24, ptr %1044, i32 0, i32 3
  %1046 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40) %1045) #8
  br label %1047

1047:                                             ; preds = %1043, %1024
  %1048 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1049 = getelementptr inbounds %struct.anon.24, ptr %1048, i32 0, i32 4
  %1050 = load i8, ptr %1049, align 8, !tbaa !112, !range !106, !noundef !107
  %1051 = trunc i8 %1050 to i1
  br i1 %1051, label %1052, label %1068

1052:                                             ; preds = %1047
  %1053 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1054 = load ptr, ptr %1053, align 8, !tbaa !9
  %1055 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1056 = load ptr, ptr %1055, align 8, !tbaa !98
  invoke void @mj_resetData(ptr noundef %1054, ptr noundef %1056)
          to label %1057 unwind label %372

1057:                                             ; preds = %1052
  %1058 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1059 = load ptr, ptr %1058, align 8, !tbaa !9
  %1060 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1061 = load ptr, ptr %1060, align 8, !tbaa !98
  invoke void @mj_forward(ptr noundef %1059, ptr noundef %1061)
          to label %1062 unwind label %372

1062:                                             ; preds = %1057
  store i8 1, ptr %5, align 1, !tbaa !80
  store i8 1, ptr %6, align 1, !tbaa !80
  %1063 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 55
  store i32 0, ptr %1063, align 8, !tbaa !113
  %1064 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1065 = getelementptr inbounds %struct.anon.24, ptr %1064, i32 0, i32 16
  store i8 1, ptr %1065, align 8, !tbaa !114
  %1066 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1067 = getelementptr inbounds %struct.anon.24, ptr %1066, i32 0, i32 4
  store i8 0, ptr %1067, align 8, !tbaa !112
  br label %1068

1068:                                             ; preds = %1062, %1047
  %1069 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1070 = getelementptr inbounds %struct.anon.24, ptr %1069, i32 0, i32 5
  %1071 = load i8, ptr %1070, align 1, !tbaa !115, !range !106, !noundef !107
  %1072 = trunc i8 %1071 to i1
  br i1 %1072, label %1073, label %1079

1073:                                             ; preds = %1068
  %1074 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1075 = load ptr, ptr %1074, align 8, !tbaa !9
  invoke void @_ZN12_GLOBAL__N_117AlignAndScaleViewEPN6mujoco8SimulateEPK8mjModel_(ptr noundef %32, ptr noundef %1075)
          to label %1076 unwind label %372

1076:                                             ; preds = %1073
  %1077 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1078 = getelementptr inbounds %struct.anon.24, ptr %1077, i32 0, i32 5
  store i8 0, ptr %1078, align 1, !tbaa !115
  br label %1079

1079:                                             ; preds = %1076, %1068
  %1080 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1081 = getelementptr inbounds %struct.anon.24, ptr %1080, i32 0, i32 6
  %1082 = load i8, ptr %1081, align 2, !tbaa !116, !range !106, !noundef !107
  %1083 = trunc i8 %1082 to i1
  br i1 %1083, label %1084, label %1092

1084:                                             ; preds = %1079
  %1085 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1086 = load ptr, ptr %1085, align 8, !tbaa !9
  %1087 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1088 = load ptr, ptr %1087, align 8, !tbaa !98
  invoke void @_ZN12_GLOBAL__N_18CopyPoseEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef %32, ptr noundef %1086, ptr noundef %1088)
          to label %1089 unwind label %372

1089:                                             ; preds = %1084
  %1090 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1091 = getelementptr inbounds %struct.anon.24, ptr %1090, i32 0, i32 6
  store i8 0, ptr %1091, align 2, !tbaa !116
  br label %1092

1092:                                             ; preds = %1089, %1079
  %1093 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1094 = getelementptr inbounds %struct.anon.24, ptr %1093, i32 0, i32 7
  %1095 = load i8, ptr %1094, align 1, !tbaa !117, !range !106, !noundef !107
  %1096 = trunc i8 %1095 to i1
  br i1 %1096, label %1097, label %1101

1097:                                             ; preds = %1092
  invoke void @_ZN12_GLOBAL__N_114LoadScrubStateEPN6mujoco8SimulateE(ptr noundef %32)
          to label %1098 unwind label %372

1098:                                             ; preds = %1097
  store i8 1, ptr %5, align 1, !tbaa !80
  store i8 1, ptr %6, align 1, !tbaa !80
  %1099 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1100 = getelementptr inbounds %struct.anon.24, ptr %1099, i32 0, i32 7
  store i8 0, ptr %1100, align 1, !tbaa !117
  br label %1101

1101:                                             ; preds = %1098, %1092
  %1102 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1103 = getelementptr inbounds %struct.anon.24, ptr %1102, i32 0, i32 8
  %1104 = load i8, ptr %1103, align 4, !tbaa !118, !range !106, !noundef !107
  %1105 = trunc i8 %1104 to i1
  br i1 %1105, label %1106, label %1121

1106:                                             ; preds = %1101
  %1107 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1108 = load ptr, ptr %1107, align 8, !tbaa !9
  %1109 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1110 = load ptr, ptr %1109, align 8, !tbaa !98
  %1111 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 54
  %1112 = load i32, ptr %1111, align 4, !tbaa !119
  invoke void @mj_resetDataKeyframe(ptr noundef %1108, ptr noundef %1110, i32 noundef %1112)
          to label %1113 unwind label %372

1113:                                             ; preds = %1106
  %1114 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1115 = load ptr, ptr %1114, align 8, !tbaa !9
  %1116 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1117 = load ptr, ptr %1116, align 8, !tbaa !98
  invoke void @mj_forward(ptr noundef %1115, ptr noundef %1117)
          to label %1118 unwind label %372

1118:                                             ; preds = %1113
  store i8 1, ptr %5, align 1, !tbaa !80
  store i8 1, ptr %6, align 1, !tbaa !80
  %1119 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1120 = getelementptr inbounds %struct.anon.24, ptr %1119, i32 0, i32 8
  store i8 0, ptr %1120, align 4, !tbaa !118
  br label %1121

1121:                                             ; preds = %1118, %1101
  %1122 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1123 = getelementptr inbounds %struct.anon.24, ptr %1122, i32 0, i32 9
  %1124 = load i8, ptr %1123, align 1, !tbaa !120, !range !106, !noundef !107
  %1125 = trunc i8 %1124 to i1
  br i1 %1125, label %1126, label %1276

1126:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %1127 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 54
  %1128 = load i32, ptr %1127, align 4, !tbaa !119
  store i32 %1128, ptr %20, align 4, !tbaa !82
  %1129 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1130 = load ptr, ptr %1129, align 8, !tbaa !98
  %1131 = getelementptr inbounds %struct.mjData_, ptr %1130, i32 0, i32 25
  %1132 = load double, ptr %1131, align 8, !tbaa !121
  %1133 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1134 = load ptr, ptr %1133, align 8, !tbaa !9
  %1135 = getelementptr inbounds %struct.mjModel_, ptr %1134, i32 0, i32 420
  %1136 = load ptr, ptr %1135, align 8, !tbaa !122
  %1137 = load i32, ptr %20, align 4, !tbaa !82
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds double, ptr %1136, i64 %1138
  store double %1132, ptr %1139, align 8, !tbaa !97
  %1140 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1141 = load ptr, ptr %1140, align 8, !tbaa !9
  %1142 = getelementptr inbounds %struct.mjModel_, ptr %1141, i32 0, i32 421
  %1143 = load ptr, ptr %1142, align 8, !tbaa !123
  %1144 = load i32, ptr %20, align 4, !tbaa !82
  %1145 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1146 = load ptr, ptr %1145, align 8, !tbaa !9
  %1147 = getelementptr inbounds %struct.mjModel_, ptr %1146, i32 0, i32 0
  %1148 = load i32, ptr %1147, align 8, !tbaa !96
  %1149 = mul nsw i32 %1144, %1148
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds double, ptr %1143, i64 %1150
  %1152 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1153 = load ptr, ptr %1152, align 8, !tbaa !98
  %1154 = getelementptr inbounds %struct.mjData_, ptr %1153, i32 0, i32 29
  %1155 = load ptr, ptr %1154, align 8, !tbaa !99
  %1156 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1157 = load ptr, ptr %1156, align 8, !tbaa !9
  %1158 = getelementptr inbounds %struct.mjModel_, ptr %1157, i32 0, i32 0
  %1159 = load i32, ptr %1158, align 8, !tbaa !96
  invoke void @mju_copy(ptr noundef %1151, ptr noundef %1155, i32 noundef %1159)
          to label %1160 unwind label %1272

1160:                                             ; preds = %1126
  %1161 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1162 = load ptr, ptr %1161, align 8, !tbaa !9
  %1163 = getelementptr inbounds %struct.mjModel_, ptr %1162, i32 0, i32 422
  %1164 = load ptr, ptr %1163, align 8, !tbaa !124
  %1165 = load i32, ptr %20, align 4, !tbaa !82
  %1166 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1167 = load ptr, ptr %1166, align 8, !tbaa !9
  %1168 = getelementptr inbounds %struct.mjModel_, ptr %1167, i32 0, i32 1
  %1169 = load i32, ptr %1168, align 4, !tbaa !125
  %1170 = mul nsw i32 %1165, %1169
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1164, i64 %1171
  %1173 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1174 = load ptr, ptr %1173, align 8, !tbaa !98
  %1175 = getelementptr inbounds %struct.mjData_, ptr %1174, i32 0, i32 30
  %1176 = load ptr, ptr %1175, align 8, !tbaa !126
  %1177 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1178 = load ptr, ptr %1177, align 8, !tbaa !9
  %1179 = getelementptr inbounds %struct.mjModel_, ptr %1178, i32 0, i32 1
  %1180 = load i32, ptr %1179, align 4, !tbaa !125
  invoke void @mju_copy(ptr noundef %1172, ptr noundef %1176, i32 noundef %1180)
          to label %1181 unwind label %1272

1181:                                             ; preds = %1160
  %1182 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1183 = load ptr, ptr %1182, align 8, !tbaa !9
  %1184 = getelementptr inbounds %struct.mjModel_, ptr %1183, i32 0, i32 423
  %1185 = load ptr, ptr %1184, align 8, !tbaa !127
  %1186 = load i32, ptr %20, align 4, !tbaa !82
  %1187 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1188 = load ptr, ptr %1187, align 8, !tbaa !9
  %1189 = getelementptr inbounds %struct.mjModel_, ptr %1188, i32 0, i32 3
  %1190 = load i32, ptr %1189, align 4, !tbaa !128
  %1191 = mul nsw i32 %1186, %1190
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds double, ptr %1185, i64 %1192
  %1194 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1195 = load ptr, ptr %1194, align 8, !tbaa !98
  %1196 = getelementptr inbounds %struct.mjData_, ptr %1195, i32 0, i32 31
  %1197 = load ptr, ptr %1196, align 8, !tbaa !129
  %1198 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1199 = load ptr, ptr %1198, align 8, !tbaa !9
  %1200 = getelementptr inbounds %struct.mjModel_, ptr %1199, i32 0, i32 3
  %1201 = load i32, ptr %1200, align 4, !tbaa !128
  invoke void @mju_copy(ptr noundef %1193, ptr noundef %1197, i32 noundef %1201)
          to label %1202 unwind label %1272

1202:                                             ; preds = %1181
  %1203 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1204 = load ptr, ptr %1203, align 8, !tbaa !9
  %1205 = getelementptr inbounds %struct.mjModel_, ptr %1204, i32 0, i32 424
  %1206 = load ptr, ptr %1205, align 8, !tbaa !130
  %1207 = load i32, ptr %20, align 4, !tbaa !82
  %1208 = mul nsw i32 %1207, 3
  %1209 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1210 = load ptr, ptr %1209, align 8, !tbaa !9
  %1211 = getelementptr inbounds %struct.mjModel_, ptr %1210, i32 0, i32 51
  %1212 = load i32, ptr %1211, align 4, !tbaa !131
  %1213 = mul nsw i32 %1208, %1212
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds double, ptr %1206, i64 %1214
  %1216 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1217 = load ptr, ptr %1216, align 8, !tbaa !98
  %1218 = getelementptr inbounds %struct.mjData_, ptr %1217, i32 0, i32 38
  %1219 = load ptr, ptr %1218, align 8, !tbaa !132
  %1220 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1221 = load ptr, ptr %1220, align 8, !tbaa !9
  %1222 = getelementptr inbounds %struct.mjModel_, ptr %1221, i32 0, i32 51
  %1223 = load i32, ptr %1222, align 4, !tbaa !131
  %1224 = mul nsw i32 3, %1223
  invoke void @mju_copy(ptr noundef %1215, ptr noundef %1219, i32 noundef %1224)
          to label %1225 unwind label %1272

1225:                                             ; preds = %1202
  %1226 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1227 = load ptr, ptr %1226, align 8, !tbaa !9
  %1228 = getelementptr inbounds %struct.mjModel_, ptr %1227, i32 0, i32 425
  %1229 = load ptr, ptr %1228, align 8, !tbaa !133
  %1230 = load i32, ptr %20, align 4, !tbaa !82
  %1231 = mul nsw i32 %1230, 4
  %1232 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1233 = load ptr, ptr %1232, align 8, !tbaa !9
  %1234 = getelementptr inbounds %struct.mjModel_, ptr %1233, i32 0, i32 51
  %1235 = load i32, ptr %1234, align 4, !tbaa !131
  %1236 = mul nsw i32 %1231, %1235
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds double, ptr %1229, i64 %1237
  %1239 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1240 = load ptr, ptr %1239, align 8, !tbaa !98
  %1241 = getelementptr inbounds %struct.mjData_, ptr %1240, i32 0, i32 39
  %1242 = load ptr, ptr %1241, align 8, !tbaa !134
  %1243 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1244 = load ptr, ptr %1243, align 8, !tbaa !9
  %1245 = getelementptr inbounds %struct.mjModel_, ptr %1244, i32 0, i32 51
  %1246 = load i32, ptr %1245, align 4, !tbaa !131
  %1247 = mul nsw i32 4, %1246
  invoke void @mju_copy(ptr noundef %1238, ptr noundef %1242, i32 noundef %1247)
          to label %1248 unwind label %1272

1248:                                             ; preds = %1225
  %1249 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1250 = load ptr, ptr %1249, align 8, !tbaa !9
  %1251 = getelementptr inbounds %struct.mjModel_, ptr %1250, i32 0, i32 426
  %1252 = load ptr, ptr %1251, align 8, !tbaa !135
  %1253 = load i32, ptr %20, align 4, !tbaa !82
  %1254 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1255 = load ptr, ptr %1254, align 8, !tbaa !9
  %1256 = getelementptr inbounds %struct.mjModel_, ptr %1255, i32 0, i32 2
  %1257 = load i32, ptr %1256, align 8, !tbaa !91
  %1258 = mul nsw i32 %1253, %1257
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds double, ptr %1252, i64 %1259
  %1261 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1262 = load ptr, ptr %1261, align 8, !tbaa !98
  %1263 = getelementptr inbounds %struct.mjData_, ptr %1262, i32 0, i32 34
  %1264 = load ptr, ptr %1263, align 8, !tbaa !102
  %1265 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1266 = load ptr, ptr %1265, align 8, !tbaa !9
  %1267 = getelementptr inbounds %struct.mjModel_, ptr %1266, i32 0, i32 2
  %1268 = load i32, ptr %1267, align 8, !tbaa !91
  invoke void @mju_copy(ptr noundef %1260, ptr noundef %1264, i32 noundef %1268)
          to label %1269 unwind label %1272

1269:                                             ; preds = %1248
  %1270 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1271 = getelementptr inbounds %struct.anon.24, ptr %1270, i32 0, i32 9
  store i8 0, ptr %1271, align 1, !tbaa !120
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %1276

1272:                                             ; preds = %1248, %1225, %1202, %1181, %1160, %1126
  %1273 = landingpad { ptr, i32 }
          cleanup
  %1274 = extractvalue { ptr, i32 } %1273, 0
  store ptr %1274, ptr %9, align 8
  %1275 = extractvalue { ptr, i32 } %1273, 1
  store i32 %1275, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %1741

1276:                                             ; preds = %1269, %1121
  %1277 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1278 = getelementptr inbounds %struct.anon.24, ptr %1277, i32 0, i32 10
  %1279 = load i8, ptr %1278, align 2, !tbaa !136, !range !106, !noundef !107
  %1280 = trunc i8 %1279 to i1
  br i1 %1280, label %1281, label %1293

1281:                                             ; preds = %1276
  %1282 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1283 = load ptr, ptr %1282, align 8, !tbaa !98
  %1284 = getelementptr inbounds %struct.mjData_, ptr %1283, i32 0, i32 34
  %1285 = load ptr, ptr %1284, align 8, !tbaa !102
  %1286 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1287 = load ptr, ptr %1286, align 8, !tbaa !9
  %1288 = getelementptr inbounds %struct.mjModel_, ptr %1287, i32 0, i32 2
  %1289 = load i32, ptr %1288, align 8, !tbaa !91
  invoke void @mju_zero(ptr noundef %1285, i32 noundef %1289)
          to label %1290 unwind label %372

1290:                                             ; preds = %1281
  %1291 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1292 = getelementptr inbounds %struct.anon.24, ptr %1291, i32 0, i32 10
  store i8 0, ptr %1292, align 2, !tbaa !136
  br label %1293

1293:                                             ; preds = %1290, %1276
  %1294 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1295 = getelementptr inbounds %struct.anon.24, ptr %1294, i32 0, i32 12
  %1296 = load i32, ptr %1295, align 8, !tbaa !137
  %1297 = icmp ne i32 %1296, 0
  br i1 %1297, label %1298, label %1315

1298:                                             ; preds = %1293
  %1299 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1300 = load ptr, ptr %1299, align 8, !tbaa !9
  %1301 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1302 = load ptr, ptr %1301, align 8, !tbaa !98
  %1303 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 78
  %1304 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1305 = load ptr, ptr %1304, align 8, !tbaa !138
  invoke void @mjv_initPerturb(ptr noundef %1300, ptr noundef %1302, ptr noundef %1303, ptr noundef %1305)
          to label %1306 unwind label %372

1306:                                             ; preds = %1298
  %1307 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1308 = getelementptr inbounds %struct.anon.24, ptr %1307, i32 0, i32 12
  %1309 = load i32, ptr %1308, align 8, !tbaa !137
  %1310 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1311 = load ptr, ptr %1310, align 8, !tbaa !138
  %1312 = getelementptr inbounds %struct.mjvPerturb_, ptr %1311, i32 0, i32 3
  store i32 %1309, ptr %1312, align 4, !tbaa !139
  %1313 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1314 = getelementptr inbounds %struct.anon.24, ptr %1313, i32 0, i32 12
  store i32 0, ptr %1314, align 8, !tbaa !137
  br label %1315

1315:                                             ; preds = %1306, %1293
  %1316 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1317 = getelementptr inbounds %struct.anon.24, ptr %1316, i32 0, i32 13
  %1318 = load i8, ptr %1317, align 4, !tbaa !141, !range !106, !noundef !107
  %1319 = trunc i8 %1318 to i1
  br i1 %1319, label %1320, label %1488

1320:                                             ; preds = %1315
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %1321 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1322 = getelementptr inbounds %struct.anon.24, ptr %1321, i32 0, i32 15
  %1323 = getelementptr inbounds %struct.mjuiState_, ptr %1322, i32 0, i32 8
  %1324 = load i32, ptr %1323, align 4, !tbaa !142
  %1325 = icmp eq i32 %1324, 1
  br i1 %1325, label %1326, label %1327

1326:                                             ; preds = %1320
  store i32 1, ptr %21, align 4, !tbaa !82
  br label %1336

1327:                                             ; preds = %1320
  %1328 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1329 = getelementptr inbounds %struct.anon.24, ptr %1328, i32 0, i32 15
  %1330 = getelementptr inbounds %struct.mjuiState_, ptr %1329, i32 0, i32 16
  %1331 = load i32, ptr %1330, align 8, !tbaa !143
  %1332 = icmp ne i32 %1331, 0
  br i1 %1332, label %1333, label %1334

1333:                                             ; preds = %1327
  store i32 3, ptr %21, align 4, !tbaa !82
  br label %1335

1334:                                             ; preds = %1327
  store i32 2, ptr %21, align 4, !tbaa !82
  br label %1335

1335:                                             ; preds = %1334, %1333
  br label %1336

1336:                                             ; preds = %1335, %1326
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #8
  %1337 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1338 = getelementptr inbounds %struct.anon.24, ptr %1337, i32 0, i32 15
  %1339 = getelementptr inbounds %struct.mjuiState_, ptr %1338, i32 0, i32 1
  %1340 = getelementptr inbounds [25 x %struct.mjrRect_], ptr %1339, i64 0, i64 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %22, ptr align 4 %1340, i64 16, i1 false), !tbaa.struct !144
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %1341 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1342 = load ptr, ptr %1341, align 8, !tbaa !9
  %1343 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1344 = load ptr, ptr %1343, align 8, !tbaa !98
  %1345 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 80
  %1346 = load ptr, ptr %1345, align 8, !tbaa !145
  %1347 = getelementptr inbounds %struct.mjrRect_, ptr %22, i32 0, i32 2
  %1348 = load i32, ptr %1347, align 4, !tbaa !146
  %1349 = sitofp i32 %1348 to double
  %1350 = getelementptr inbounds %struct.mjrRect_, ptr %22, i32 0, i32 3
  %1351 = load i32, ptr %1350, align 4, !tbaa !148
  %1352 = sitofp i32 %1351 to double
  %1353 = fdiv double %1349, %1352
  %1354 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1355 = getelementptr inbounds %struct.anon.24, ptr %1354, i32 0, i32 15
  %1356 = getelementptr inbounds %struct.mjuiState_, ptr %1355, i32 0, i32 10
  %1357 = load double, ptr %1356, align 8, !tbaa !149
  %1358 = getelementptr inbounds %struct.mjrRect_, ptr %22, i32 0, i32 0
  %1359 = load i32, ptr %1358, align 4, !tbaa !150
  %1360 = sitofp i32 %1359 to double
  %1361 = fsub double %1357, %1360
  %1362 = getelementptr inbounds %struct.mjrRect_, ptr %22, i32 0, i32 2
  %1363 = load i32, ptr %1362, align 4, !tbaa !146
  %1364 = sitofp i32 %1363 to double
  %1365 = fdiv double %1361, %1364
  %1366 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1367 = getelementptr inbounds %struct.anon.24, ptr %1366, i32 0, i32 15
  %1368 = getelementptr inbounds %struct.mjuiState_, ptr %1367, i32 0, i32 11
  %1369 = load double, ptr %1368, align 8, !tbaa !151
  %1370 = getelementptr inbounds %struct.mjrRect_, ptr %22, i32 0, i32 1
  %1371 = load i32, ptr %1370, align 4, !tbaa !152
  %1372 = sitofp i32 %1371 to double
  %1373 = fsub double %1369, %1372
  %1374 = getelementptr inbounds %struct.mjrRect_, ptr %22, i32 0, i32 3
  %1375 = load i32, ptr %1374, align 4, !tbaa !148
  %1376 = sitofp i32 %1375 to double
  %1377 = fdiv double %1373, %1376
  %1378 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 78
  %1379 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %1380 = invoke i32 @mjv_select(ptr noundef %1342, ptr noundef %1344, ptr noundef %1346, double noundef %1353, double noundef %1365, double noundef %1377, ptr noundef %1378, ptr noundef %1379, ptr noundef %24, ptr noundef %25, ptr noundef %26)
          to label %1381 unwind label %1397

1381:                                             ; preds = %1336
  store i32 %1380, ptr %27, align 4, !tbaa !82
  %1382 = load i32, ptr %21, align 4, !tbaa !82
  %1383 = icmp eq i32 %1382, 2
  br i1 %1383, label %1387, label %1384

1384:                                             ; preds = %1381
  %1385 = load i32, ptr %21, align 4, !tbaa !82
  %1386 = icmp eq i32 %1385, 3
  br i1 %1386, label %1387, label %1422

1387:                                             ; preds = %1384, %1381
  %1388 = load i32, ptr %27, align 4, !tbaa !82
  %1389 = icmp sge i32 %1388, 0
  br i1 %1389, label %1390, label %1401

1390:                                             ; preds = %1387
  %1391 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 79
  %1392 = load ptr, ptr %1391, align 8, !tbaa !153
  %1393 = getelementptr inbounds %struct.mjvCamera_, ptr %1392, i32 0, i32 3
  %1394 = getelementptr inbounds [3 x double], ptr %1393, i64 0, i64 0
  %1395 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  invoke void @mju_copy3(ptr noundef %1394, ptr noundef %1395)
          to label %1396 unwind label %1397

1396:                                             ; preds = %1390
  br label %1401

1397:                                             ; preds = %1390, %1336
  %1398 = landingpad { ptr, i32 }
          cleanup
  %1399 = extractvalue { ptr, i32 } %1398, 0
  store ptr %1399, ptr %9, align 8
  %1400 = extractvalue { ptr, i32 } %1398, 1
  store i32 %1400, ptr %10, align 4
  br label %1487

1401:                                             ; preds = %1396, %1387
  %1402 = load i32, ptr %21, align 4, !tbaa !82
  %1403 = icmp eq i32 %1402, 3
  br i1 %1403, label %1404, label %1421

1404:                                             ; preds = %1401
  %1405 = load i32, ptr %27, align 4, !tbaa !82
  %1406 = icmp sgt i32 %1405, 0
  br i1 %1406, label %1407, label %1421

1407:                                             ; preds = %1404
  %1408 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 79
  %1409 = load ptr, ptr %1408, align 8, !tbaa !153
  %1410 = getelementptr inbounds %struct.mjvCamera_, ptr %1409, i32 0, i32 0
  store i32 1, ptr %1410, align 8, !tbaa !154
  %1411 = load i32, ptr %27, align 4, !tbaa !82
  %1412 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 79
  %1413 = load ptr, ptr %1412, align 8, !tbaa !153
  %1414 = getelementptr inbounds %struct.mjvCamera_, ptr %1413, i32 0, i32 2
  store i32 %1411, ptr %1414, align 8, !tbaa !155
  %1415 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 79
  %1416 = load ptr, ptr %1415, align 8, !tbaa !153
  %1417 = getelementptr inbounds %struct.mjvCamera_, ptr %1416, i32 0, i32 1
  store i32 -1, ptr %1417, align 4, !tbaa !156
  %1418 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 77
  store i32 1, ptr %1418, align 4, !tbaa !157
  %1419 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1420 = getelementptr inbounds %struct.anon.24, ptr %1419, i32 0, i32 18
  store i8 1, ptr %1420, align 2, !tbaa !158
  br label %1421

1421:                                             ; preds = %1407, %1404, %1401
  br label %1484

1422:                                             ; preds = %1384
  %1423 = load i32, ptr %27, align 4, !tbaa !82
  %1424 = icmp sge i32 %1423, 0
  br i1 %1424, label %1425, label %1473

1425:                                             ; preds = %1422
  %1426 = load i32, ptr %27, align 4, !tbaa !82
  %1427 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1428 = load ptr, ptr %1427, align 8, !tbaa !138
  %1429 = getelementptr inbounds %struct.mjvPerturb_, ptr %1428, i32 0, i32 0
  store i32 %1426, ptr %1429, align 8, !tbaa !159
  %1430 = load i32, ptr %25, align 4, !tbaa !82
  %1431 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1432 = load ptr, ptr %1431, align 8, !tbaa !138
  %1433 = getelementptr inbounds %struct.mjvPerturb_, ptr %1432, i32 0, i32 1
  store i32 %1430, ptr %1433, align 4, !tbaa !160
  %1434 = load i32, ptr %26, align 4, !tbaa !82
  %1435 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1436 = load ptr, ptr %1435, align 8, !tbaa !138
  %1437 = getelementptr inbounds %struct.mjvPerturb_, ptr %1436, i32 0, i32 2
  store i32 %1434, ptr %1437, align 8, !tbaa !161
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #8
  %1438 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 0
  %1439 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %1440 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1441 = load ptr, ptr %1440, align 8, !tbaa !98
  %1442 = getelementptr inbounds %struct.mjData_, ptr %1441, i32 0, i32 46
  %1443 = load ptr, ptr %1442, align 8, !tbaa !162
  %1444 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1445 = load ptr, ptr %1444, align 8, !tbaa !138
  %1446 = getelementptr inbounds %struct.mjvPerturb_, ptr %1445, i32 0, i32 0
  %1447 = load i32, ptr %1446, align 8, !tbaa !159
  %1448 = mul nsw i32 3, %1447
  %1449 = sext i32 %1448 to i64
  %1450 = getelementptr inbounds double, ptr %1443, i64 %1449
  invoke void @mju_sub3(ptr noundef %1438, ptr noundef %1439, ptr noundef %1450)
          to label %1451 unwind label %1469

1451:                                             ; preds = %1425
  %1452 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1453 = load ptr, ptr %1452, align 8, !tbaa !138
  %1454 = getelementptr inbounds %struct.mjvPerturb_, ptr %1453, i32 0, i32 8
  %1455 = getelementptr inbounds [3 x double], ptr %1454, i64 0, i64 0
  %1456 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1457 = load ptr, ptr %1456, align 8, !tbaa !98
  %1458 = getelementptr inbounds %struct.mjData_, ptr %1457, i32 0, i32 48
  %1459 = load ptr, ptr %1458, align 8, !tbaa !163
  %1460 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1461 = load ptr, ptr %1460, align 8, !tbaa !138
  %1462 = getelementptr inbounds %struct.mjvPerturb_, ptr %1461, i32 0, i32 0
  %1463 = load i32, ptr %1462, align 8, !tbaa !159
  %1464 = mul nsw i32 9, %1463
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds double, ptr %1459, i64 %1465
  %1467 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 0
  invoke void @mju_mulMatTVec(ptr noundef %1455, ptr noundef %1466, ptr noundef %1467, i32 noundef 3, i32 noundef 3)
          to label %1468 unwind label %1469

1468:                                             ; preds = %1451
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #8
  br label %1483

1469:                                             ; preds = %1451, %1425
  %1470 = landingpad { ptr, i32 }
          cleanup
  %1471 = extractvalue { ptr, i32 } %1470, 0
  store ptr %1471, ptr %9, align 8
  %1472 = extractvalue { ptr, i32 } %1470, 1
  store i32 %1472, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #8
  br label %1487

1473:                                             ; preds = %1422
  %1474 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1475 = load ptr, ptr %1474, align 8, !tbaa !138
  %1476 = getelementptr inbounds %struct.mjvPerturb_, ptr %1475, i32 0, i32 0
  store i32 0, ptr %1476, align 8, !tbaa !159
  %1477 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1478 = load ptr, ptr %1477, align 8, !tbaa !138
  %1479 = getelementptr inbounds %struct.mjvPerturb_, ptr %1478, i32 0, i32 1
  store i32 -1, ptr %1479, align 4, !tbaa !160
  %1480 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1481 = load ptr, ptr %1480, align 8, !tbaa !138
  %1482 = getelementptr inbounds %struct.mjvPerturb_, ptr %1481, i32 0, i32 2
  store i32 -1, ptr %1482, align 8, !tbaa !161
  br label %1483

1483:                                             ; preds = %1473, %1468
  br label %1484

1484:                                             ; preds = %1483, %1421
  %1485 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1486 = getelementptr inbounds %struct.anon.24, ptr %1485, i32 0, i32 13
  store i8 0, ptr %1486, align 4, !tbaa !141
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %1488

1487:                                             ; preds = %1469, %1397
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %1741

1488:                                             ; preds = %1484, %1315
  %1489 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 0
  %1490 = load i8, ptr %1489, align 8, !tbaa !105, !range !106, !noundef !107
  %1491 = trunc i8 %1490 to i1
  br i1 %1491, label %1505, label %1492

1492:                                             ; preds = %1488
  %1493 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1494 = load ptr, ptr %1493, align 8, !tbaa !9
  %1495 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1496 = load ptr, ptr %1495, align 8, !tbaa !98
  %1497 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 80
  %1498 = load ptr, ptr %1497, align 8, !tbaa !145
  %1499 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1500 = load ptr, ptr %1499, align 8, !tbaa !138
  %1501 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 79
  %1502 = load ptr, ptr %1501, align 8, !tbaa !153
  %1503 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 78
  invoke void @mjv_updateScene(ptr noundef %1494, ptr noundef %1496, ptr noundef %1498, ptr noundef %1500, ptr noundef %1502, i32 noundef 7, ptr noundef %1503)
          to label %1504 unwind label %372

1504:                                             ; preds = %1492
  br label %1643

1505:                                             ; preds = %1488
  %1506 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1507 = load ptr, ptr %1506, align 8, !tbaa !9
  %1508 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1509 = load ptr, ptr %1508, align 8, !tbaa !98
  %1510 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 80
  %1511 = load ptr, ptr %1510, align 8, !tbaa !145
  %1512 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  invoke void @mjv_updateSceneState(ptr noundef %1507, ptr noundef %1509, ptr noundef %1511, ptr noundef %1512)
          to label %1513 unwind label %372

1513:                                             ; preds = %1505
  %1514 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 88
  %1515 = load ptr, ptr %1514, align 8, !tbaa !164
  %1516 = icmp ne ptr %1515, null
  br i1 %1516, label %1517, label %1575

1517:                                             ; preds = %1513
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  %1518 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 88
  %1519 = load ptr, ptr %1518, align 8, !tbaa !164
  %1520 = getelementptr inbounds %struct.mjvScene_, ptr %1519, i32 0, i32 1
  %1521 = load i32, ptr %1520, align 4, !tbaa !165
  store i32 %1521, ptr %29, align 4, !tbaa !82
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %1522 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %1523 = getelementptr inbounds %struct.mjvSceneState_, ptr %1522, i32 0, i32 3
  %1524 = getelementptr inbounds %struct.mjvScene_, ptr %1523, i32 0, i32 0
  %1525 = load i32, ptr %1524, align 8, !tbaa !166
  %1526 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %1527 = getelementptr inbounds %struct.mjvSceneState_, ptr %1526, i32 0, i32 3
  %1528 = getelementptr inbounds %struct.mjvScene_, ptr %1527, i32 0, i32 1
  %1529 = load i32, ptr %1528, align 4, !tbaa !167
  %1530 = sub nsw i32 %1525, %1529
  store i32 %1530, ptr %30, align 4, !tbaa !82
  %1531 = load i32, ptr %29, align 4, !tbaa !82
  %1532 = load i32, ptr %30, align 4, !tbaa !82
  %1533 = icmp sgt i32 %1531, %1532
  br i1 %1533, label %1534, label %1547

1534:                                             ; preds = %1517
  %1535 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1536 = load ptr, ptr %1535, align 8, !tbaa !98
  %1537 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %1538 = getelementptr inbounds %struct.mjvSceneState_, ptr %1537, i32 0, i32 3
  %1539 = getelementptr inbounds %struct.mjvScene_, ptr %1538, i32 0, i32 0
  %1540 = load i32, ptr %1539, align 8, !tbaa !166
  invoke void @mj_warning(ptr noundef %1536, i32 noundef 3, i32 noundef %1540)
          to label %1541 unwind label %1543

1541:                                             ; preds = %1534
  %1542 = load i32, ptr %30, align 4, !tbaa !82
  store i32 %1542, ptr %29, align 4, !tbaa !82
  br label %1547

1543:                                             ; preds = %1534
  %1544 = landingpad { ptr, i32 }
          cleanup
  %1545 = extractvalue { ptr, i32 } %1544, 0
  store ptr %1545, ptr %9, align 8
  %1546 = extractvalue { ptr, i32 } %1544, 1
  store i32 %1546, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  br label %1741

1547:                                             ; preds = %1541, %1517
  %1548 = load i32, ptr %29, align 4, !tbaa !82
  %1549 = icmp sgt i32 %1548, 0
  br i1 %1549, label %1550, label %1574

1550:                                             ; preds = %1547
  %1551 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %1552 = getelementptr inbounds %struct.mjvSceneState_, ptr %1551, i32 0, i32 3
  %1553 = getelementptr inbounds %struct.mjvScene_, ptr %1552, i32 0, i32 2
  %1554 = load ptr, ptr %1553, align 8, !tbaa !168
  %1555 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %1556 = getelementptr inbounds %struct.mjvSceneState_, ptr %1555, i32 0, i32 3
  %1557 = getelementptr inbounds %struct.mjvScene_, ptr %1556, i32 0, i32 1
  %1558 = load i32, ptr %1557, align 4, !tbaa !167
  %1559 = sext i32 %1558 to i64
  %1560 = getelementptr inbounds %struct.mjvGeom_, ptr %1554, i64 %1559
  %1561 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 88
  %1562 = load ptr, ptr %1561, align 8, !tbaa !164
  %1563 = getelementptr inbounds %struct.mjvScene_, ptr %1562, i32 0, i32 2
  %1564 = load ptr, ptr %1563, align 8, !tbaa !169
  %1565 = load i32, ptr %29, align 4, !tbaa !82
  %1566 = sext i32 %1565 to i64
  %1567 = mul i64 248, %1566
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1560, ptr align 4 %1564, i64 %1567, i1 false)
  %1568 = load i32, ptr %29, align 4, !tbaa !82
  %1569 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %1570 = getelementptr inbounds %struct.mjvSceneState_, ptr %1569, i32 0, i32 3
  %1571 = getelementptr inbounds %struct.mjvScene_, ptr %1570, i32 0, i32 1
  %1572 = load i32, ptr %1571, align 4, !tbaa !167
  %1573 = add nsw i32 %1572, %1568
  store i32 %1573, ptr %1571, align 4, !tbaa !167
  br label %1574

1574:                                             ; preds = %1550, %1547
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  br label %1575

1575:                                             ; preds = %1574, %1513
  %1576 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 88
  %1577 = load ptr, ptr %1576, align 8, !tbaa !164
  %1578 = icmp ne ptr %1577, null
  br i1 %1578, label %1579, label %1631

1579:                                             ; preds = %1575
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 0, ptr %31, align 4, !tbaa !82
  br label %1580

1580:                                             ; preds = %1616, %1579
  %1581 = load i32, ptr %31, align 4, !tbaa !82
  %1582 = icmp slt i32 %1581, 10
  br i1 %1582, label %1584, label %1583

1583:                                             ; preds = %1580
  store i32 14, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %1619

1584:                                             ; preds = %1580
  %1585 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 88
  %1586 = load ptr, ptr %1585, align 8, !tbaa !164
  %1587 = getelementptr inbounds %struct.mjvScene_, ptr %1586, i32 0, i32 35
  %1588 = load i32, ptr %31, align 4, !tbaa !82
  %1589 = sext i32 %1588 to i64
  %1590 = getelementptr inbounds [10 x i8], ptr %1587, i64 0, i64 %1589
  %1591 = load i8, ptr %1590, align 1, !tbaa !86
  %1592 = zext i8 %1591 to i32
  %1593 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 89
  %1594 = load i32, ptr %31, align 4, !tbaa !82
  %1595 = sext i32 %1594 to i64
  %1596 = getelementptr inbounds [10 x i8], ptr %1593, i64 0, i64 %1595
  %1597 = load i8, ptr %1596, align 1, !tbaa !86
  %1598 = zext i8 %1597 to i32
  %1599 = icmp ne i32 %1592, %1598
  br i1 %1599, label %1600, label %1615

1600:                                             ; preds = %1584
  %1601 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 88
  %1602 = load ptr, ptr %1601, align 8, !tbaa !164
  %1603 = getelementptr inbounds %struct.mjvScene_, ptr %1602, i32 0, i32 35
  %1604 = load i32, ptr %31, align 4, !tbaa !82
  %1605 = sext i32 %1604 to i64
  %1606 = getelementptr inbounds [10 x i8], ptr %1603, i64 0, i64 %1605
  %1607 = load i8, ptr %1606, align 1, !tbaa !86
  %1608 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 78
  %1609 = getelementptr inbounds %struct.mjvScene_, ptr %1608, i32 0, i32 35
  %1610 = load i32, ptr %31, align 4, !tbaa !82
  %1611 = sext i32 %1610 to i64
  %1612 = getelementptr inbounds [10 x i8], ptr %1609, i64 0, i64 %1611
  store i8 %1607, ptr %1612, align 1, !tbaa !86
  %1613 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 34
  %1614 = getelementptr inbounds %struct.anon.24, ptr %1613, i32 0, i32 18
  store i8 1, ptr %1614, align 2, !tbaa !158
  br label %1615

1615:                                             ; preds = %1600, %1584
  br label %1616

1616:                                             ; preds = %1615
  %1617 = load i32, ptr %31, align 4, !tbaa !82
  %1618 = add nsw i32 %1617, 1
  store i32 %1618, ptr %31, align 4, !tbaa !82
  br label %1580, !llvm.loop !170

1619:                                             ; preds = %1583
  %1620 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 88
  %1621 = load ptr, ptr %1620, align 8, !tbaa !164
  %1622 = getelementptr inbounds %struct.mjvScene_, ptr %1621, i32 0, i32 35
  %1623 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 78
  %1624 = getelementptr inbounds %struct.mjvScene_, ptr %1623, i32 0, i32 35
  invoke void @_ZN12_GLOBAL__N_14CopyIA10_hEEvRT_RKS2_(ptr noundef nonnull align 1 dereferenceable(10) %1622, ptr noundef nonnull align 1 dereferenceable(10) %1624)
          to label %1625 unwind label %372

1625:                                             ; preds = %1619
  %1626 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 89
  %1627 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 88
  %1628 = load ptr, ptr %1627, align 8, !tbaa !164
  %1629 = getelementptr inbounds %struct.mjvScene_, ptr %1628, i32 0, i32 35
  invoke void @_ZN12_GLOBAL__N_14CopyIA10_hEEvRT_RKS2_(ptr noundef nonnull align 1 dereferenceable(10) %1626, ptr noundef nonnull align 1 dereferenceable(10) %1629)
          to label %1630 unwind label %372

1630:                                             ; preds = %1625
  br label %1631

1631:                                             ; preds = %1630, %1575
  %1632 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %1633 = getelementptr inbounds %struct.mjvSceneState_, ptr %1632, i32 0, i32 4
  %1634 = getelementptr inbounds %struct.anon, ptr %1633, i32 0, i32 30
  %1635 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 28
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1635, ptr align 8 %1634, i64 304, i1 false), !tbaa.struct !171
  %1636 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 27
  %1637 = getelementptr inbounds %struct.mjvSceneState_, ptr %1636, i32 0, i32 5
  %1638 = getelementptr inbounds %struct.anon.23, ptr %1637, i32 0, i32 0
  %1639 = getelementptr inbounds [8 x %struct.mjWarningStat_], ptr %1638, i64 0, i64 3
  %1640 = getelementptr inbounds %struct.mjWarningStat_, ptr %1639, i32 0, i32 1
  %1641 = load i32, ptr %1640, align 4, !tbaa !109
  %1642 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 32
  store i32 %1641, ptr %1642, align 8, !tbaa !111
  br label %1643

1643:                                             ; preds = %1631, %1504
  %1644 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1645 = load ptr, ptr %1644, align 8, !tbaa !9
  invoke void @_ZN12_GLOBAL__N_114UpdateSettingsEPN6mujoco8SimulateEPK8mjModel_(ptr noundef %32, ptr noundef %1645)
          to label %1646 unwind label %372

1646:                                             ; preds = %1643
  %1647 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 44
  %1648 = load i32, ptr %1647, align 4, !tbaa !172
  %1649 = icmp ne i32 %1648, 0
  br i1 %1649, label %1650, label %1663

1650:                                             ; preds = %1646
  %1651 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 96
  %1652 = getelementptr inbounds %struct.mjUI_, ptr %1651, i32 0, i32 21
  %1653 = getelementptr inbounds [10 x %struct.mjuiSection_], ptr %1652, i64 0, i64 3
  %1654 = getelementptr inbounds %struct.mjuiSection_, ptr %1653, i32 0, i32 1
  %1655 = load i32, ptr %1654, align 8, !tbaa !173
  %1656 = icmp ne i32 %1655, 0
  br i1 %1656, label %1657, label %1663

1657:                                             ; preds = %1650
  %1658 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1659 = load ptr, ptr %1658, align 8, !tbaa !9
  %1660 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1661 = load ptr, ptr %1660, align 8, !tbaa !98
  invoke void @_ZN12_GLOBAL__N_111UpdateWatchEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef %32, ptr noundef %1659, ptr noundef %1661)
          to label %1662 unwind label %372

1662:                                             ; preds = %1657
  br label %1663

1663:                                             ; preds = %1662, %1650, %1646
  %1664 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 47
  %1665 = load i32, ptr %1664, align 8, !tbaa !175
  %1666 = icmp ne i32 %1665, 0
  br i1 %1666, label %1667, label %1675

1667:                                             ; preds = %1663
  %1668 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1669 = load ptr, ptr %1668, align 8, !tbaa !9
  %1670 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1671 = load ptr, ptr %1670, align 8, !tbaa !98
  %1672 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 101
  %1673 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 102
  invoke void @_ZN12_GLOBAL__N_114UpdateInfoTextEPN6mujoco8SimulateEPK8mjModel_PK7mjData_RA1000_cSA_(ptr noundef %32, ptr noundef %1669, ptr noundef %1671, ptr noundef nonnull align 1 dereferenceable(1000) %1672, ptr noundef nonnull align 1 dereferenceable(1000) %1673)
          to label %1674 unwind label %372

1674:                                             ; preds = %1667
  br label %1675

1675:                                             ; preds = %1674, %1663
  %1676 = load i8, ptr %5, align 1, !tbaa !80, !range !106, !noundef !107
  %1677 = trunc i8 %1676 to i1
  br i1 %1677, label %1678, label %1684

1678:                                             ; preds = %1675
  %1679 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1680 = load ptr, ptr %1679, align 8, !tbaa !9
  %1681 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1682 = load ptr, ptr %1681, align 8, !tbaa !98
  invoke void @_ZN12_GLOBAL__N_114UpdateProfilerEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef %32, ptr noundef %1680, ptr noundef %1682)
          to label %1683 unwind label %372

1683:                                             ; preds = %1678
  br label %1684

1684:                                             ; preds = %1683, %1675
  %1685 = load i8, ptr %6, align 1, !tbaa !80, !range !106, !noundef !107
  %1686 = trunc i8 %1685 to i1
  br i1 %1686, label %1687, label %1693

1687:                                             ; preds = %1684
  %1688 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1689 = load ptr, ptr %1688, align 8, !tbaa !9
  %1690 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1691 = load ptr, ptr %1690, align 8, !tbaa !98
  invoke void @_ZN12_GLOBAL__N_112UpdateSensorEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef %32, ptr noundef %1689, ptr noundef %1691)
          to label %1692 unwind label %372

1692:                                             ; preds = %1687
  br label %1693

1693:                                             ; preds = %1692, %1684
  %1694 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1695 = load ptr, ptr %1694, align 8, !tbaa !98
  invoke void @_ZN12_GLOBAL__N_111ClearTimersEP7mjData_(ptr noundef %1695)
          to label %1696 unwind label %372

1696:                                             ; preds = %1693
  %1697 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 56
  %1698 = load i32, ptr %1697, align 4, !tbaa !79
  %1699 = icmp ne i32 %1698, 0
  br i1 %1699, label %1704, label %1700

1700:                                             ; preds = %1696
  %1701 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 0
  %1702 = load i8, ptr %1701, align 8, !tbaa !105, !range !106, !noundef !107
  %1703 = trunc i8 %1702 to i1
  br i1 %1703, label %1704, label %1729

1704:                                             ; preds = %1700, %1696
  %1705 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1706 = load ptr, ptr %1705, align 8, !tbaa !98
  %1707 = getelementptr inbounds %struct.mjData_, ptr %1706, i32 0, i32 36
  %1708 = load ptr, ptr %1707, align 8, !tbaa !176
  %1709 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1710 = load ptr, ptr %1709, align 8, !tbaa !9
  %1711 = getelementptr inbounds %struct.mjModel_, ptr %1710, i32 0, i32 4
  %1712 = load i32, ptr %1711, align 8, !tbaa !177
  %1713 = mul nsw i32 6, %1712
  invoke void @mju_zero(ptr noundef %1708, i32 noundef %1713)
          to label %1714 unwind label %372

1714:                                             ; preds = %1704
  %1715 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1716 = load ptr, ptr %1715, align 8, !tbaa !9
  %1717 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1718 = load ptr, ptr %1717, align 8, !tbaa !98
  %1719 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1720 = load ptr, ptr %1719, align 8, !tbaa !138
  invoke void @mjv_applyPerturbPose(ptr noundef %1716, ptr noundef %1718, ptr noundef %1720, i32 noundef 0)
          to label %1721 unwind label %372

1721:                                             ; preds = %1714
  %1722 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1723 = load ptr, ptr %1722, align 8, !tbaa !9
  %1724 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1725 = load ptr, ptr %1724, align 8, !tbaa !98
  %1726 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1727 = load ptr, ptr %1726, align 8, !tbaa !138
  invoke void @mjv_applyPerturbForce(ptr noundef %1723, ptr noundef %1725, ptr noundef %1727)
          to label %1728 unwind label %372

1728:                                             ; preds = %1721
  br label %1737

1729:                                             ; preds = %1700
  %1730 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 4
  %1731 = load ptr, ptr %1730, align 8, !tbaa !9
  %1732 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 5
  %1733 = load ptr, ptr %1732, align 8, !tbaa !98
  %1734 = getelementptr inbounds %"class.mujoco::Simulate", ptr %32, i32 0, i32 81
  %1735 = load ptr, ptr %1734, align 8, !tbaa !138
  invoke void @mjv_applyPerturbPose(ptr noundef %1731, ptr noundef %1733, ptr noundef %1735, i32 noundef 1)
          to label %1736 unwind label %372

1736:                                             ; preds = %1729
  br label %1737

1737:                                             ; preds = %1736, %1728
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #8
  store i32 0, ptr %4, align 4
  br label %1738

1738:                                             ; preds = %1737, %42, %37
  call void @_ZNSt11unique_lockISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(9) %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #8
  %1739 = load i32, ptr %4, align 4
  switch i32 %1739, label %1747 [
    i32 0, label %1740
    i32 1, label %1740
  ]

1740:                                             ; preds = %1738, %1738
  ret void

1741:                                             ; preds = %1543, %1487, %1272, %974, %372, %175, %114
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #8
  call void @_ZNSt11unique_lockISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(9) %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #8
  br label %1742

1742:                                             ; preds = %1741
  %1743 = load ptr, ptr %9, align 8
  %1744 = load i32, ptr %10, align 4
  %1745 = insertvalue { ptr, i32 } poison, ptr %1743, 0
  %1746 = insertvalue { ptr, i32 } %1745, i32 %1744, 1
  resume { ptr, i32 } %1746

1747:                                             ; preds = %1738
  unreachable
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt11unique_lockISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(9), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNKSt13__atomic_baseIiE4loadESt12memory_order(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt8optionalISt4pairIddEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8optionalISt4pairIddEE7emplaceIJRdS4_EEENSt9enable_ifIX18is_constructible_vIS1_DpT_EERS1_E4typeEDpOS6_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZStneISt4pairIddES1_ENSt9enable_ifIXsr14is_convertibleIDTneclsr3stdE7declvalIRKT_EEclsr3stdE7declvalIRKT0_EEEbEE5valueEbE4typeERKSt8optionalIS3_ERKSC_IS6_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt8optionalISt4pairIddEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA3_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIA3_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA2_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIA2_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA5_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIA5_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

declare i32 @mj_saveLastXML(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #7

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

declare i32 @printf(ptr noundef, ...) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

declare void @mj_saveModel(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #7

declare void @mj_printModel(ptr noundef, ptr noundef) #7

declare void @mj_printData(ptr noundef, ptr noundef, ptr noundef) #7

declare void @mj_resetData(ptr noundef, ptr noundef) #7

declare void @mj_forward(ptr noundef, ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_117AlignAndScaleViewEPN6mujoco8SimulateEPK8mjModel_(ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_18CopyPoseEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114LoadScrubStateEPN6mujoco8SimulateE(ptr noundef) #1

declare void @mj_resetDataKeyframe(ptr noundef, ptr noundef, i32 noundef) #7

declare void @mju_copy(ptr noundef, ptr noundef, i32 noundef) #7

declare void @mju_zero(ptr noundef, i32 noundef) #7

declare void @mjv_initPerturb(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #7

declare i32 @mjv_select(ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #7

declare void @mju_copy3(ptr noundef, ptr noundef) #7

declare void @mju_sub3(ptr noundef, ptr noundef, ptr noundef) #7

declare void @mju_mulMatTVec(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #7

declare void @mjv_updateScene(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

declare void @mjv_updateSceneState(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #7

declare void @mj_warning(ptr noundef, i32 noundef, i32 noundef) #7

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIA10_hEEvRT_RKS2_(ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 1 dereferenceable(10)) #6

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_114UpdateSettingsEPN6mujoco8SimulateEPK8mjModel_(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111UpdateWatchEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114UpdateInfoTextEPN6mujoco8SimulateEPK8mjModel_PK7mjData_RA1000_cSA_(ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(1000), ptr noundef nonnull align 1 dereferenceable(1000)) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114UpdateProfilerEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_112UpdateSensorEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111ClearTimersEP7mjData_(ptr noundef) #4

declare void @mjv_applyPerturbPose(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #7

declare void @mjv_applyPerturbForce(ptr noundef, ptr noundef, ptr noundef) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt11unique_lockISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(9)) unnamed_addr #4 align 2

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 24}
!10 = !{!"_ZTSN6mujoco8SimulateE", !11, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !13, i64 72, !13, i64 96, !13, i64 120, !13, i64 144, !17, i64 168, !21, i64 192, !13, i64 216, !17, i64 240, !21, i64 264, !25, i64 288, !25, i64 312, !25, i64 336, !25, i64 360, !25, i64 384, !29, i64 408, !33, i64 11864, !44, i64 12168, !45, i64 12264, !12, i64 12328, !46, i64 12336, !53, i64 13064, !56, i64 13104, !12, i64 13168, !62, i64 13176, !34, i64 13184, !12, i64 13192, !12, i64 13196, !12, i64 13200, !12, i64 13204, !12, i64 13208, !12, i64 13212, !12, i64 13216, !12, i64 13220, !12, i64 13224, !12, i64 13228, !12, i64 13232, !12, i64 13236, !12, i64 13240, !12, i64 13244, !12, i64 13248, !12, i64 13252, !65, i64 13256, !65, i64 13260, !65, i64 13264, !65, i64 13268, !12, i64 13272, !7, i64 13276, !7, i64 14276, !7, i64 15276, !7, i64 16276, !12, i64 17276, !11, i64 17280, !31, i64 17284, !34, i64 17288, !34, i64 17296, !7, i64 17304, !12, i64 17604, !7, i64 17608, !7, i64 17668, !7, i64 17692, !12, i64 17716, !30, i64 17720, !6, i64 26488, !6, i64 26496, !6, i64 26504, !67, i64 26512, !67, i64 839460, !67, i64 1652408, !67, i64 2465356, !67, i64 3278304, !6, i64 4091256, !7, i64 4091264, !12, i64 4091276, !7, i64 4091280, !7, i64 4091288, !68, i64 4091296, !6, i64 4091304, !74, i64 4091312, !74, i64 7068880, !7, i64 10046448, !7, i64 10051128, !7, i64 10056168, !7, i64 10057968, !7, i64 10058968, !56, i64 10059968, !12, i64 10060032, !12, i64 10060036, !12, i64 10060040}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSSt6vectorIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"_ZTSSt6vectorISt8optionalISt4pairIddEESaIS3_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseISt8optionalISt4pairIddEESaIS3_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseISt8optionalISt4pairIddEESaIS3_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseISt8optionalISt4pairIddEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt6vectorIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTS14mjvSceneState_", !12, i64 0, !6, i64 8, !12, i64 16, !30, i64 24, !32, i64 8792, !43, i64 11072}
!30 = !{!"_ZTS9mjvScene_", !12, i64 0, !12, i64 4, !6, i64 8, !6, i64 16, !12, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !7, i64 128, !7, i64 129, !7, i64 130, !7, i64 131, !12, i64 132, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !12, i64 176, !7, i64 180, !7, i64 8580, !7, i64 8700, !7, i64 8704, !7, i64 8716, !31, i64 8732, !12, i64 8736, !7, i64 8740, !12, i64 8752, !7, i64 8756}
!31 = !{!"float", !7, i64 0}
!32 = !{!"_ZTSN14mjvSceneState_Ut_E", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !33, i64 120, !35, i64 424, !42, i64 1048, !6, i64 1104, !6, i64 1112, !6, i64 1120, !6, i64 1128, !6, i64 1136, !6, i64 1144, !6, i64 1152, !6, i64 1160, !6, i64 1168, !6, i64 1176, !6, i64 1184, !6, i64 1192, !6, i64 1200, !6, i64 1208, !6, i64 1216, !6, i64 1224, !6, i64 1232, !6, i64 1240, !6, i64 1248, !6, i64 1256, !6, i64 1264, !6, i64 1272, !6, i64 1280, !6, i64 1288, !6, i64 1296, !6, i64 1304, !6, i64 1312, !6, i64 1320, !6, i64 1328, !6, i64 1336, !6, i64 1344, !6, i64 1352, !6, i64 1360, !6, i64 1368, !6, i64 1376, !6, i64 1384, !6, i64 1392, !6, i64 1400, !6, i64 1408, !6, i64 1416, !6, i64 1424, !6, i64 1432, !6, i64 1440, !6, i64 1448, !6, i64 1456, !6, i64 1464, !6, i64 1472, !6, i64 1480, !6, i64 1488, !6, i64 1496, !6, i64 1504, !6, i64 1512, !6, i64 1520, !6, i64 1528, !6, i64 1536, !6, i64 1544, !6, i64 1552, !6, i64 1560, !6, i64 1568, !6, i64 1576, !6, i64 1584, !6, i64 1592, !6, i64 1600, !6, i64 1608, !6, i64 1616, !6, i64 1624, !6, i64 1632, !6, i64 1640, !6, i64 1648, !6, i64 1656, !6, i64 1664, !6, i64 1672, !6, i64 1680, !6, i64 1688, !6, i64 1696, !6, i64 1704, !6, i64 1712, !6, i64 1720, !6, i64 1728, !6, i64 1736, !6, i64 1744, !6, i64 1752, !6, i64 1760, !6, i64 1768, !6, i64 1776, !6, i64 1784, !6, i64 1792, !6, i64 1800, !6, i64 1808, !6, i64 1816, !6, i64 1824, !6, i64 1832, !6, i64 1840, !6, i64 1848, !6, i64 1856, !6, i64 1864, !6, i64 1872, !6, i64 1880, !6, i64 1888, !6, i64 1896, !6, i64 1904, !6, i64 1912, !6, i64 1920, !6, i64 1928, !6, i64 1936, !6, i64 1944, !6, i64 1952, !6, i64 1960, !6, i64 1968, !6, i64 1976, !6, i64 1984, !6, i64 1992, !6, i64 2000, !6, i64 2008, !6, i64 2016, !6, i64 2024, !6, i64 2032, !6, i64 2040, !6, i64 2048, !6, i64 2056, !6, i64 2064, !6, i64 2072, !6, i64 2080, !6, i64 2088, !6, i64 2096, !6, i64 2104, !6, i64 2112, !6, i64 2120, !6, i64 2128, !6, i64 2136, !6, i64 2144, !6, i64 2152, !6, i64 2160, !6, i64 2168, !6, i64 2176, !6, i64 2184, !6, i64 2192, !6, i64 2200, !6, i64 2208, !6, i64 2216, !6, i64 2224, !6, i64 2232, !6, i64 2240, !6, i64 2248, !6, i64 2256, !6, i64 2264, !6, i64 2272}
!33 = !{!"_ZTS9mjOption_", !34, i64 0, !34, i64 8, !34, i64 16, !34, i64 24, !34, i64 32, !34, i64 40, !34, i64 48, !7, i64 56, !7, i64 80, !7, i64 104, !34, i64 128, !34, i64 136, !34, i64 144, !7, i64 152, !7, i64 168, !7, i64 208, !12, i64 248, !12, i64 252, !12, i64 256, !12, i64 260, !12, i64 264, !12, i64 268, !12, i64 272, !12, i64 276, !12, i64 280, !12, i64 284, !12, i64 288, !12, i64 292, !12, i64 296}
!34 = !{!"double", !7, i64 0}
!35 = !{!"_ZTS9mjVisual_", !36, i64 0, !37, i64 44, !38, i64 64, !39, i64 104, !40, i64 156, !41, i64 224}
!36 = !{!"_ZTSN9mjVisual_Ut_E", !31, i64 0, !31, i64 4, !31, i64 8, !31, i64 12, !31, i64 16, !31, i64 20, !31, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40}
!37 = !{!"_ZTSN9mjVisual_Ut0_E", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16}
!38 = !{!"_ZTSN9mjVisual_Ut1_E", !7, i64 0, !7, i64 12, !7, i64 24, !12, i64 36}
!39 = !{!"_ZTSN9mjVisual_Ut2_E", !31, i64 0, !31, i64 4, !31, i64 8, !31, i64 12, !31, i64 16, !31, i64 20, !31, i64 24, !31, i64 28, !31, i64 32, !31, i64 36, !31, i64 40, !31, i64 44, !31, i64 48}
!40 = !{!"_ZTSN9mjVisual_Ut3_E", !31, i64 0, !31, i64 4, !31, i64 8, !31, i64 12, !31, i64 16, !31, i64 20, !31, i64 24, !31, i64 28, !31, i64 32, !31, i64 36, !31, i64 40, !31, i64 44, !31, i64 48, !31, i64 52, !31, i64 56, !31, i64 60, !31, i64 64}
!41 = !{!"_ZTSN9mjVisual_Ut4_E", !7, i64 0, !7, i64 16, !7, i64 32, !7, i64 48, !7, i64 64, !7, i64 80, !7, i64 96, !7, i64 112, !7, i64 128, !7, i64 144, !7, i64 160, !7, i64 176, !7, i64 192, !7, i64 208, !7, i64 224, !7, i64 240, !7, i64 256, !7, i64 272, !7, i64 288, !7, i64 304, !7, i64 320, !7, i64 336, !7, i64 352, !7, i64 368, !7, i64 384}
!42 = !{!"_ZTS12mjStatistic_", !34, i64 0, !34, i64 8, !34, i64 16, !34, i64 24, !7, i64 32}
!43 = !{!"_ZTSN14mjvSceneState_Ut0_E", !7, i64 0, !12, i64 64, !12, i64 68, !12, i64 72, !34, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368, !6, i64 376}
!44 = !{!"_ZTS10mjvOption_", !12, i64 0, !12, i64 4, !7, i64 8, !7, i64 14, !7, i64 20, !7, i64 26, !7, i64 32, !7, i64 38, !7, i64 44, !7, i64 50, !12, i64 84, !12, i64 88}
!45 = !{!"_ZTS10mjvCamera_", !12, i64 0, !12, i64 4, !12, i64 8, !7, i64 16, !34, i64 40, !34, i64 48, !34, i64 56}
!46 = !{!"_ZTSN6mujoco8SimulateUt_E", !47, i64 0, !47, i64 40, !47, i64 80, !47, i64 120, !11, i64 160, !11, i64 161, !11, i64 162, !11, i64 163, !11, i64 164, !11, i64 165, !11, i64 166, !12, i64 168, !11, i64 172, !52, i64 176, !11, i64 720, !11, i64 721, !11, i64 722, !11, i64 723, !11, i64 724, !11, i64 725}
!47 = !{!"_ZTSSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !48, i64 0}
!48 = !{!"_ZTSSt14_Optional_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ELb0EE", !49, i64 0}
!49 = !{!"_ZTSSt17_Optional_payloadINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ELb0ELb0EE", !50, i64 0}
!50 = !{!"_ZTSSt17_Optional_payloadINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb1ELb0ELb0EE", !51, i64 0}
!51 = !{!"_ZTSSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !7, i64 0, !11, i64 32}
!52 = !{!"_ZTS10mjuiState_", !12, i64 0, !7, i64 4, !6, i64 408, !12, i64 416, !12, i64 420, !12, i64 424, !12, i64 428, !12, i64 432, !12, i64 436, !34, i64 440, !34, i64 448, !34, i64 456, !34, i64 464, !34, i64 472, !34, i64 480, !34, i64 488, !12, i64 496, !12, i64 500, !12, i64 504, !12, i64 508, !34, i64 512, !12, i64 520, !12, i64 524, !12, i64 528, !12, i64 532, !6, i64 536}
!53 = !{!"_ZTSN6mujoco13SimulateMutexE", !54, i64 0}
!54 = !{!"_ZTSSt15recursive_mutex", !55, i64 0}
!55 = !{!"_ZTSSt22__recursive_mutex_base", !7, i64 0}
!56 = !{!"_ZTSNSt3_V222condition_variable_anyE", !57, i64 0, !59, i64 48}
!57 = !{!"_ZTSSt18condition_variable", !58, i64 0}
!58 = !{!"_ZTSSt9__condvar", !7, i64 0}
!59 = !{!"_ZTSSt10shared_ptrISt5mutexE", !60, i64 0}
!60 = !{!"_ZTSSt12__shared_ptrISt5mutexLN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !61, i64 8}
!61 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!62 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212steady_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !63, i64 0}
!63 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !64, i64 0}
!64 = !{!"long", !7, i64 0}
!65 = !{!"_ZTSSt6atomicIiE", !66, i64 0}
!66 = !{!"_ZTSSt13__atomic_baseIiE", !12, i64 0}
!67 = !{!"_ZTS10mjvFigure_", !12, i64 0, !7, i64 4, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !31, i64 28, !31, i64 32, !7, i64 36, !7, i64 44, !7, i64 56, !7, i64 72, !7, i64 88, !7, i64 104, !7, i64 116, !7, i64 1316, !7, i64 1332, !7, i64 1352, !7, i64 1372, !7, i64 1392, !7, i64 2392, !7, i64 2492, !12, i64 12492, !12, i64 12496, !7, i64 12500, !12, i64 12508, !31, i64 12512, !7, i64 12516, !7, i64 12916, !7, i64 812916, !7, i64 812924, !7, i64 812932, !7, i64 812940}
!68 = !{!"_ZTSSt10unique_ptrIN6mujoco17PlatformUIAdapterESt14default_deleteIS1_EE", !69, i64 0}
!69 = !{!"_ZTSSt15__uniq_ptr_dataIN6mujoco17PlatformUIAdapterESt14default_deleteIS1_ELb1ELb1EE", !70, i64 0}
!70 = !{!"_ZTSSt15__uniq_ptr_implIN6mujoco17PlatformUIAdapterESt14default_deleteIS1_EE", !71, i64 0}
!71 = !{!"_ZTSSt5tupleIJPN6mujoco17PlatformUIAdapterESt14default_deleteIS1_EEE", !72, i64 0}
!72 = !{!"_ZTSSt11_Tuple_implILm0EJPN6mujoco17PlatformUIAdapterESt14default_deleteIS1_EEE", !73, i64 0}
!73 = !{!"_ZTSSt10_Head_baseILm0EPN6mujoco17PlatformUIAdapterELb0EE", !6, i64 0}
!74 = !{!"_ZTS5mjUI_", !75, i64 0, !76, i64 44, !6, i64 296, !6, i64 304, !12, i64 312, !12, i64 316, !12, i64 320, !12, i64 324, !12, i64 328, !12, i64 332, !12, i64 336, !12, i64 340, !12, i64 344, !12, i64 348, !12, i64 352, !12, i64 356, !12, i64 360, !12, i64 364, !7, i64 368, !6, i64 672, !12, i64 680, !7, i64 688}
!75 = !{!"_ZTS17mjuiThemeSpacing_", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40}
!76 = !{!"_ZTS15mjuiThemeColor_", !7, i64 0, !7, i64 12, !7, i64 24, !7, i64 36, !7, i64 48, !7, i64 60, !7, i64 72, !7, i64 84, !7, i64 96, !7, i64 108, !7, i64 120, !7, i64 132, !7, i64 144, !7, i64 156, !7, i64 168, !7, i64 180, !7, i64 192, !7, i64 204, !7, i64 216, !7, i64 228, !7, i64 240}
!77 = !{!10, !12, i64 13220}
!78 = !{!10, !12, i64 13228}
!79 = !{!10, !12, i64 13252}
!80 = !{!11, !11, i64 0}
!81 = !{!10, !12, i64 13224}
!82 = !{!12, !12, i64 0}
!83 = !{!84, !12, i64 32}
!84 = !{!"_ZTS8mjModel_", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !12, i64 152, !12, i64 156, !12, i64 160, !12, i64 164, !12, i64 168, !12, i64 172, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !12, i64 192, !12, i64 196, !12, i64 200, !12, i64 204, !12, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !12, i64 232, !12, i64 236, !12, i64 240, !12, i64 244, !12, i64 248, !12, i64 252, !12, i64 256, !12, i64 260, !12, i64 264, !12, i64 268, !12, i64 272, !12, i64 276, !12, i64 280, !12, i64 284, !12, i64 288, !12, i64 292, !12, i64 296, !64, i64 304, !64, i64 312, !33, i64 320, !35, i64 624, !42, i64 1248, !6, i64 1304, !6, i64 1312, !6, i64 1320, !6, i64 1328, !6, i64 1336, !6, i64 1344, !6, i64 1352, !6, i64 1360, !6, i64 1368, !6, i64 1376, !6, i64 1384, !6, i64 1392, !6, i64 1400, !6, i64 1408, !6, i64 1416, !6, i64 1424, !6, i64 1432, !6, i64 1440, !6, i64 1448, !6, i64 1456, !6, i64 1464, !6, i64 1472, !6, i64 1480, !6, i64 1488, !6, i64 1496, !6, i64 1504, !6, i64 1512, !6, i64 1520, !6, i64 1528, !6, i64 1536, !6, i64 1544, !6, i64 1552, !6, i64 1560, !6, i64 1568, !6, i64 1576, !6, i64 1584, !6, i64 1592, !6, i64 1600, !6, i64 1608, !6, i64 1616, !6, i64 1624, !6, i64 1632, !6, i64 1640, !6, i64 1648, !6, i64 1656, !6, i64 1664, !6, i64 1672, !6, i64 1680, !6, i64 1688, !6, i64 1696, !6, i64 1704, !6, i64 1712, !6, i64 1720, !6, i64 1728, !6, i64 1736, !6, i64 1744, !6, i64 1752, !6, i64 1760, !6, i64 1768, !6, i64 1776, !6, i64 1784, !6, i64 1792, !6, i64 1800, !6, i64 1808, !6, i64 1816, !6, i64 1824, !6, i64 1832, !6, i64 1840, !6, i64 1848, !6, i64 1856, !6, i64 1864, !6, i64 1872, !6, i64 1880, !6, i64 1888, !6, i64 1896, !6, i64 1904, !6, i64 1912, !6, i64 1920, !6, i64 1928, !6, i64 1936, !6, i64 1944, !6, i64 1952, !6, i64 1960, !6, i64 1968, !6, i64 1976, !6, i64 1984, !6, i64 1992, !6, i64 2000, !6, i64 2008, !6, i64 2016, !6, i64 2024, !6, i64 2032, !6, i64 2040, !6, i64 2048, !6, i64 2056, !6, i64 2064, !6, i64 2072, !6, i64 2080, !6, i64 2088, !6, i64 2096, !6, i64 2104, !6, i64 2112, !6, i64 2120, !6, i64 2128, !6, i64 2136, !6, i64 2144, !6, i64 2152, !6, i64 2160, !6, i64 2168, !6, i64 2176, !6, i64 2184, !6, i64 2192, !6, i64 2200, !6, i64 2208, !6, i64 2216, !6, i64 2224, !6, i64 2232, !6, i64 2240, !6, i64 2248, !6, i64 2256, !6, i64 2264, !6, i64 2272, !6, i64 2280, !6, i64 2288, !6, i64 2296, !6, i64 2304, !6, i64 2312, !6, i64 2320, !6, i64 2328, !6, i64 2336, !6, i64 2344, !6, i64 2352, !6, i64 2360, !6, i64 2368, !6, i64 2376, !6, i64 2384, !6, i64 2392, !6, i64 2400, !6, i64 2408, !6, i64 2416, !6, i64 2424, !6, i64 2432, !6, i64 2440, !6, i64 2448, !6, i64 2456, !6, i64 2464, !6, i64 2472, !6, i64 2480, !6, i64 2488, !6, i64 2496, !6, i64 2504, !6, i64 2512, !6, i64 2520, !6, i64 2528, !6, i64 2536, !6, i64 2544, !6, i64 2552, !6, i64 2560, !6, i64 2568, !6, i64 2576, !6, i64 2584, !6, i64 2592, !6, i64 2600, !6, i64 2608, !6, i64 2616, !6, i64 2624, !6, i64 2632, !6, i64 2640, !6, i64 2648, !6, i64 2656, !6, i64 2664, !6, i64 2672, !6, i64 2680, !6, i64 2688, !6, i64 2696, !6, i64 2704, !6, i64 2712, !6, i64 2720, !6, i64 2728, !6, i64 2736, !6, i64 2744, !6, i64 2752, !6, i64 2760, !6, i64 2768, !6, i64 2776, !6, i64 2784, !6, i64 2792, !6, i64 2800, !6, i64 2808, !6, i64 2816, !6, i64 2824, !6, i64 2832, !6, i64 2840, !6, i64 2848, !6, i64 2856, !6, i64 2864, !6, i64 2872, !6, i64 2880, !6, i64 2888, !6, i64 2896, !6, i64 2904, !6, i64 2912, !6, i64 2920, !6, i64 2928, !6, i64 2936, !6, i64 2944, !6, i64 2952, !6, i64 2960, !6, i64 2968, !6, i64 2976, !6, i64 2984, !6, i64 2992, !6, i64 3000, !6, i64 3008, !6, i64 3016, !6, i64 3024, !6, i64 3032, !6, i64 3040, !6, i64 3048, !6, i64 3056, !6, i64 3064, !6, i64 3072, !6, i64 3080, !6, i64 3088, !6, i64 3096, !6, i64 3104, !6, i64 3112, !6, i64 3120, !6, i64 3128, !6, i64 3136, !6, i64 3144, !6, i64 3152, !6, i64 3160, !6, i64 3168, !6, i64 3176, !6, i64 3184, !6, i64 3192, !6, i64 3200, !6, i64 3208, !6, i64 3216, !6, i64 3224, !6, i64 3232, !6, i64 3240, !6, i64 3248, !6, i64 3256, !6, i64 3264, !6, i64 3272, !6, i64 3280, !6, i64 3288, !6, i64 3296, !6, i64 3304, !6, i64 3312, !6, i64 3320, !6, i64 3328, !6, i64 3336, !6, i64 3344, !6, i64 3352, !6, i64 3360, !6, i64 3368, !6, i64 3376, !6, i64 3384, !6, i64 3392, !6, i64 3400, !6, i64 3408, !6, i64 3416, !6, i64 3424, !6, i64 3432, !6, i64 3440, !6, i64 3448, !6, i64 3456, !6, i64 3464, !6, i64 3472, !6, i64 3480, !6, i64 3488, !6, i64 3496, !6, i64 3504, !6, i64 3512, !6, i64 3520, !6, i64 3528, !6, i64 3536, !6, i64 3544, !6, i64 3552, !6, i64 3560, !6, i64 3568, !6, i64 3576, !6, i64 3584, !6, i64 3592, !6, i64 3600, !6, i64 3608, !6, i64 3616, !6, i64 3624, !6, i64 3632, !6, i64 3640, !6, i64 3648, !6, i64 3656, !6, i64 3664, !6, i64 3672, !6, i64 3680, !6, i64 3688, !6, i64 3696, !6, i64 3704, !6, i64 3712, !6, i64 3720, !6, i64 3728, !6, i64 3736, !6, i64 3744, !6, i64 3752, !6, i64 3760, !6, i64 3768, !6, i64 3776, !6, i64 3784, !6, i64 3792, !6, i64 3800, !6, i64 3808, !6, i64 3816, !6, i64 3824, !6, i64 3832, !6, i64 3840, !6, i64 3848, !6, i64 3856, !6, i64 3864, !6, i64 3872, !6, i64 3880, !6, i64 3888, !6, i64 3896, !6, i64 3904, !6, i64 3912, !6, i64 3920, !6, i64 3928, !6, i64 3936, !6, i64 3944, !6, i64 3952, !6, i64 3960, !6, i64 3968, !6, i64 3976, !6, i64 3984, !6, i64 3992, !6, i64 4000, !6, i64 4008, !6, i64 4016, !6, i64 4024, !6, i64 4032, !6, i64 4040, !6, i64 4048, !6, i64 4056, !6, i64 4064, !6, i64 4072, !6, i64 4080, !6, i64 4088, !6, i64 4096, !6, i64 4104, !6, i64 4112, !6, i64 4120, !6, i64 4128, !6, i64 4136, !6, i64 4144, !6, i64 4152, !6, i64 4160, !6, i64 4168, !6, i64 4176, !6, i64 4184, !6, i64 4192, !6, i64 4200, !6, i64 4208, !6, i64 4216, !6, i64 4224, !6, i64 4232, !6, i64 4240, !6, i64 4248, !6, i64 4256, !6, i64 4264, !6, i64 4272, !6, i64 4280}
!85 = !{!84, !6, i64 1632}
!86 = !{!7, !7, i64 0}
!87 = !{!84, !6, i64 1696}
!88 = !{!10, !11, i64 13059}
!89 = distinct !{!89, !90}
!90 = !{!"llvm.loop.mustprogress"}
!91 = !{!84, !12, i64 8}
!92 = !{!84, !6, i64 3656}
!93 = !{!84, !6, i64 3712}
!94 = !{!10, !11, i64 13061}
!95 = distinct !{!95, !90}
!96 = !{!84, !12, i64 0}
!97 = !{!34, !34, i64 0}
!98 = !{!10, !6, i64 32}
!99 = !{!100, !6, i64 161656}
!100 = !{!"_ZTS7mjData_", !64, i64 0, !64, i64 8, !12, i64 16, !64, i64 24, !64, i64 32, !64, i64 40, !64, i64 48, !7, i64 56, !64, i64 1080, !12, i64 1088, !12, i64 1092, !7, i64 1096, !7, i64 1160, !7, i64 1400, !12, i64 161400, !7, i64 161404, !7, i64 161484, !7, i64 161568, !12, i64 161584, !12, i64 161588, !12, i64 161592, !12, i64 161596, !12, i64 161600, !12, i64 161604, !12, i64 161608, !34, i64 161616, !7, i64 161624, !6, i64 161640, !6, i64 161648, !6, i64 161656, !6, i64 161664, !6, i64 161672, !6, i64 161680, !6, i64 161688, !6, i64 161696, !6, i64 161704, !6, i64 161712, !6, i64 161720, !6, i64 161728, !6, i64 161736, !6, i64 161744, !6, i64 161752, !6, i64 161760, !6, i64 161768, !6, i64 161776, !6, i64 161784, !6, i64 161792, !6, i64 161800, !6, i64 161808, !6, i64 161816, !6, i64 161824, !6, i64 161832, !6, i64 161840, !6, i64 161848, !6, i64 161856, !6, i64 161864, !6, i64 161872, !6, i64 161880, !6, i64 161888, !6, i64 161896, !6, i64 161904, !6, i64 161912, !6, i64 161920, !6, i64 161928, !6, i64 161936, !6, i64 161944, !6, i64 161952, !6, i64 161960, !6, i64 161968, !6, i64 161976, !6, i64 161984, !6, i64 161992, !6, i64 162000, !6, i64 162008, !6, i64 162016, !6, i64 162024, !6, i64 162032, !6, i64 162040, !6, i64 162048, !6, i64 162056, !6, i64 162064, !6, i64 162072, !6, i64 162080, !6, i64 162088, !6, i64 162096, !6, i64 162104, !6, i64 162112, !6, i64 162120, !6, i64 162128, !6, i64 162136, !6, i64 162144, !6, i64 162152, !6, i64 162160, !6, i64 162168, !6, i64 162176, !6, i64 162184, !6, i64 162192, !6, i64 162200, !6, i64 162208, !6, i64 162216, !6, i64 162224, !6, i64 162232, !6, i64 162240, !6, i64 162248, !6, i64 162256, !6, i64 162264, !6, i64 162272, !6, i64 162280, !6, i64 162288, !6, i64 162296, !6, i64 162304, !6, i64 162312, !6, i64 162320, !6, i64 162328, !6, i64 162336, !6, i64 162344, !6, i64 162352, !6, i64 162360, !6, i64 162368, !6, i64 162376, !6, i64 162384, !6, i64 162392, !6, i64 162400, !6, i64 162408, !6, i64 162416, !6, i64 162424, !6, i64 162432, !6, i64 162440, !6, i64 162448, !6, i64 162456, !6, i64 162464, !6, i64 162472, !6, i64 162480, !6, i64 162488, !6, i64 162496, !6, i64 162504, !6, i64 162512, !6, i64 162520, !6, i64 162528, !6, i64 162536, !6, i64 162544, !6, i64 162552, !6, i64 162560, !6, i64 162568, !6, i64 162576, !6, i64 162584, !6, i64 162592, !6, i64 162600, !6, i64 162608, !6, i64 162616, !6, i64 162624, !6, i64 162632, !6, i64 162640, !6, i64 162648, !6, i64 162656, !6, i64 162664, !6, i64 162672, !6, i64 162680, !6, i64 162688, !6, i64 162696, !64, i64 162704}
!101 = distinct !{!101, !90}
!102 = !{!100, !6, i64 161696}
!103 = !{!10, !11, i64 13060}
!104 = distinct !{!104, !90}
!105 = !{!10, !11, i64 0}
!106 = !{i8 0, i8 2}
!107 = !{}
!108 = !{!10, !11, i64 13057}
!109 = !{!110, !12, i64 4}
!110 = !{!"_ZTS14mjWarningStat_", !12, i64 0, !12, i64 4}
!111 = !{!10, !12, i64 12328}
!112 = !{!10, !11, i64 12496}
!113 = !{!10, !12, i64 13248}
!114 = !{!10, !11, i64 13056}
!115 = !{!10, !11, i64 12497}
!116 = !{!10, !11, i64 12498}
!117 = !{!10, !11, i64 12499}
!118 = !{!10, !11, i64 12500}
!119 = !{!10, !12, i64 13244}
!120 = !{!10, !11, i64 12501}
!121 = !{!100, !34, i64 161616}
!122 = !{!84, !6, i64 4024}
!123 = !{!84, !6, i64 4032}
!124 = !{!84, !6, i64 4040}
!125 = !{!84, !12, i64 4}
!126 = !{!100, !6, i64 161664}
!127 = !{!84, !6, i64 4048}
!128 = !{!84, !12, i64 12}
!129 = !{!100, !6, i64 161672}
!130 = !{!84, !6, i64 4056}
!131 = !{!84, !12, i64 204}
!132 = !{!100, !6, i64 161728}
!133 = !{!84, !6, i64 4064}
!134 = !{!100, !6, i64 161736}
!135 = !{!84, !6, i64 4072}
!136 = !{!10, !11, i64 12502}
!137 = !{!10, !12, i64 12504}
!138 = !{!10, !6, i64 26504}
!139 = !{!140, !12, i64 12}
!140 = !{!"_ZTS11mjvPerturb_", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !7, i64 24, !7, i64 48, !7, i64 80, !7, i64 104, !34, i64 128, !34, i64 136}
!141 = !{!10, !11, i64 12508}
!142 = !{!10, !12, i64 12948}
!143 = !{!10, !12, i64 13008}
!144 = !{i64 0, i64 4, !82, i64 4, i64 4, !82, i64 8, i64 4, !82, i64 12, i64 4, !82}
!145 = !{!10, !6, i64 26496}
!146 = !{!147, !12, i64 8}
!147 = !{!"_ZTS8mjrRect_", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!148 = !{!147, !12, i64 12}
!149 = !{!10, !34, i64 12960}
!150 = !{!147, !12, i64 0}
!151 = !{!10, !34, i64 12968}
!152 = !{!147, !12, i64 4}
!153 = !{!10, !6, i64 26488}
!154 = !{!45, !12, i64 0}
!155 = !{!45, !12, i64 8}
!156 = !{!45, !12, i64 4}
!157 = !{!10, !12, i64 17716}
!158 = !{!10, !11, i64 13058}
!159 = !{!140, !12, i64 0}
!160 = !{!140, !12, i64 4}
!161 = !{!140, !12, i64 8}
!162 = !{!100, !6, i64 161792}
!163 = !{!100, !6, i64 161808}
!164 = !{!10, !6, i64 4091256}
!165 = !{!30, !12, i64 4}
!166 = !{!10, !12, i64 432}
!167 = !{!10, !12, i64 436}
!168 = !{!10, !6, i64 440}
!169 = !{!30, !6, i64 8}
!170 = distinct !{!170, !90}
!171 = !{i64 0, i64 8, !97, i64 8, i64 8, !97, i64 16, i64 8, !97, i64 24, i64 8, !97, i64 32, i64 8, !97, i64 40, i64 8, !97, i64 48, i64 8, !97, i64 56, i64 24, !86, i64 80, i64 24, !86, i64 104, i64 24, !86, i64 128, i64 8, !97, i64 136, i64 8, !97, i64 144, i64 8, !97, i64 152, i64 16, !86, i64 168, i64 40, !86, i64 208, i64 40, !86, i64 248, i64 4, !82, i64 252, i64 4, !82, i64 256, i64 4, !82, i64 260, i64 4, !82, i64 264, i64 4, !82, i64 268, i64 4, !82, i64 272, i64 4, !82, i64 276, i64 4, !82, i64 280, i64 4, !82, i64 284, i64 4, !82, i64 288, i64 4, !82, i64 292, i64 4, !82, i64 296, i64 4, !82}
!172 = !{!10, !12, i64 13204}
!173 = !{!174, !12, i64 40}
!174 = !{!"_ZTS12mjuiSection_", !7, i64 0, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !7, i64 56, !147, i64 297656, !147, i64 297672}
!175 = !{!10, !12, i64 13216}
!176 = !{!100, !6, i64 161712}
!177 = !{!84, !12, i64 16}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::unique_lock" = type <{ ptr, i8, [7 x i8] }>
%"class.std::optional.32" = type { %"struct.std::_Optional_base.33" }
%"struct.std::_Optional_base.33" = type { %"struct.std::_Optional_payload.35" }
%"struct.std::_Optional_payload.35" = type { %"struct.std::_Optional_payload_base.base.37", [7 x i8] }
%"struct.std::_Optional_payload_base.base.37" = type <{ %"union.std::_Optional_payload_base<std::pair<double, double>>::_Storage", i8 }>
%"union.std::_Optional_payload_base<std::pair<double, double>>::_Storage" = type { %"struct.std::pair" }
%"struct.std::pair" = type { double, double }
%struct.mjvGeom_ = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x float], [3 x float], [3 x float], [9 x float], [4 x float], float, float, float, float, [100 x i8], float, float, i8 }

@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6mujoco8Simulate4SyncEv(ptr noundef nonnull align 8 dereferenceable(10060044) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::unique_lock", align 8
  %3 = alloca %"class.std::optional.32", align 8
  %4 = alloca %"class.std::optional.32", align 8
  %5 = alloca [200 x i8], align 16
  %6 = alloca [3 x double], align 16
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca [3 x double], align 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #9
  %11 = getelementptr inbounds i8, ptr %0, i64 13064
  call void @_ZNSt11unique_lockISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(9) %2, ptr noundef nonnull align 8 dereferenceable(40) %11)
  %12 = getelementptr inbounds i8, ptr %0, i64 24
  %13 = load ptr, ptr %12, align 8, !tbaa !5
  %.not = icmp eq ptr %13, null
  br i1 %.not, label %915, label %14

14:                                               ; preds = %1
  %15 = getelementptr inbounds i8, ptr %0, i64 13256
  %16 = call noundef i32 @_ZNKSt13__atomic_baseIiE4loadESt12memory_order(ptr noundef nonnull align 4 dereferenceable(4) %15, i32 noundef 5) #9
  %.not95 = icmp eq i32 %16, 0
  br i1 %.not95, label %17, label %915

17:                                               ; preds = %14
  %18 = getelementptr inbounds i8, ptr %0, i64 13220
  %19 = load i32, ptr %18, align 4, !tbaa !76
  %.not96 = icmp eq i32 %19, 0
  br i1 %.not96, label %27, label %20

20:                                               ; preds = %17
  %21 = getelementptr inbounds i8, ptr %0, i64 13228
  %22 = load i32, ptr %21, align 4, !tbaa !77
  %.not97 = icmp eq i32 %22, 0
  br i1 %.not97, label %23, label %27

23:                                               ; preds = %20
  %24 = getelementptr inbounds i8, ptr %0, i64 13252
  %25 = load i32, ptr %24, align 4, !tbaa !78
  %26 = icmp ne i32 %25, 0
  br label %27

27:                                               ; preds = %20, %23, %17
  %28 = phi i1 [ false, %17 ], [ true, %20 ], [ %26, %23 ]
  %29 = getelementptr inbounds i8, ptr %0, i64 13224
  %30 = load i32, ptr %29, align 8, !tbaa !79
  %.not98 = icmp eq i32 %30, 0
  br i1 %.not98, label %38, label %31

31:                                               ; preds = %27
  %32 = getelementptr inbounds i8, ptr %0, i64 13228
  %33 = load i32, ptr %32, align 4, !tbaa !77
  %.not99 = icmp eq i32 %33, 0
  br i1 %.not99, label %34, label %38

34:                                               ; preds = %31
  %35 = getelementptr inbounds i8, ptr %0, i64 13252
  %36 = load i32, ptr %35, align 4, !tbaa !78
  %37 = icmp ne i32 %36, 0
  br label %38

38:                                               ; preds = %31, %34, %27
  %39 = phi i1 [ false, %27 ], [ true, %31 ], [ %37, %34 ]
  %40 = load ptr, ptr %12, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %40, i64 32
  %42 = load i32, ptr %41, align 8, !tbaa !80
  %43 = icmp sgt i32 %42, 0
  br i1 %43, label %.lr.ph, label %.preheader123

.lr.ph:                                           ; preds = %38
  %44 = getelementptr inbounds i8, ptr %0, i64 168
  %45 = getelementptr inbounds i8, ptr %0, i64 13059
  br label %52

.preheader123:                                    ; preds = %74, %38
  %46 = phi ptr [ %40, %38 ], [ %75, %74 ]
  %47 = getelementptr inbounds i8, ptr %46, i64 8
  %48 = load i32, ptr %47, align 8, !tbaa !82
  %49 = icmp sgt i32 %48, 0
  br i1 %49, label %.lr.ph126, label %.preheader122

.lr.ph126:                                        ; preds = %.preheader123
  %50 = getelementptr inbounds i8, ptr %0, i64 240
  %51 = getelementptr inbounds i8, ptr %0, i64 13061
  br label %87

52:                                               ; preds = %.lr.ph, %74
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %74 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #9
  call void @_ZNSt8optionalISt4pairIddEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %53 = load ptr, ptr %12, align 8, !tbaa !5
  %54 = getelementptr inbounds i8, ptr %53, i64 1632
  %55 = load ptr, ptr %54, align 8, !tbaa !83
  %56 = getelementptr inbounds i8, ptr %55, i64 %indvars.iv
  %57 = load i8, ptr %56, align 1, !tbaa !84
  %.not112 = icmp eq i8 %57, 0
  br i1 %.not112, label %68, label %58

58:                                               ; preds = %52
  %59 = getelementptr inbounds i8, ptr %53, i64 1696
  %60 = load ptr, ptr %59, align 8, !tbaa !85
  %61 = shl nuw nsw i64 %indvars.iv, 1
  %62 = getelementptr inbounds double, ptr %60, i64 %61
  %63 = or disjoint i64 %61, 1
  %64 = getelementptr inbounds double, ptr %60, i64 %63
  %65 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8optionalISt4pairIddEE7emplaceIJRdS4_EEENSt9enable_ifIX18is_constructible_vIS1_DpT_EERS1_E4typeEDpOS6_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %68 unwind label %66

66:                                               ; preds = %68, %58
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #9
  br label %916

68:                                               ; preds = %58, %52
  %69 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %indvars.iv) #9
  %70 = invoke noundef zeroext i1 @_ZStneISt4pairIddES1_ENSt9enable_ifIXsr14is_convertibleIDTneclsr3stdE7declvalIRKT_EEclsr3stdE7declvalIRKT0_EEEbEE5valueEbE4typeERKSt8optionalIS3_ERKSC_IS6_E(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %71 unwind label %66

71:                                               ; preds = %68
  br i1 %70, label %72, label %74

72:                                               ; preds = %71
  store i8 1, ptr %45, align 1, !tbaa !86
  %73 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %indvars.iv) #9
  call void @_ZNSt8optionalISt4pairIddEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  br label %74

74:                                               ; preds = %72, %71
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %75 = load ptr, ptr %12, align 8, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %75, i64 32
  %77 = load i32, ptr %76, align 8, !tbaa !80
  %78 = sext i32 %77 to i64
  %79 = icmp slt i64 %indvars.iv.next, %78
  br i1 %79, label %52, label %.preheader123, !llvm.loop !87

.preheader122:                                    ; preds = %109, %.preheader123
  %80 = phi ptr [ %46, %.preheader123 ], [ %110, %109 ]
  %81 = load i32, ptr %80, align 8, !tbaa !89
  %82 = icmp sgt i32 %81, 0
  br i1 %82, label %.lr.ph128, label %.preheader121

.lr.ph128:                                        ; preds = %.preheader122
  %83 = getelementptr inbounds i8, ptr %0, i64 312
  %84 = getelementptr inbounds i8, ptr %0, i64 336
  %85 = getelementptr inbounds i8, ptr %0, i64 32
  %86 = getelementptr inbounds i8, ptr %0, i64 13059
  br label %123

87:                                               ; preds = %.lr.ph126, %109
  %indvars.iv133 = phi i64 [ 0, %.lr.ph126 ], [ %indvars.iv.next134, %109 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #9
  call void @_ZNSt8optionalISt4pairIddEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %88 = load ptr, ptr %12, align 8, !tbaa !5
  %89 = getelementptr inbounds i8, ptr %88, i64 3656
  %90 = load ptr, ptr %89, align 8, !tbaa !90
  %91 = getelementptr inbounds i8, ptr %90, i64 %indvars.iv133
  %92 = load i8, ptr %91, align 1, !tbaa !84
  %.not111 = icmp eq i8 %92, 0
  br i1 %.not111, label %103, label %93

93:                                               ; preds = %87
  %94 = getelementptr inbounds i8, ptr %88, i64 3712
  %95 = load ptr, ptr %94, align 8, !tbaa !91
  %96 = shl nuw nsw i64 %indvars.iv133, 1
  %97 = getelementptr inbounds double, ptr %95, i64 %96
  %98 = or disjoint i64 %96, 1
  %99 = getelementptr inbounds double, ptr %95, i64 %98
  %100 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8optionalISt4pairIddEE7emplaceIJRdS4_EEENSt9enable_ifIX18is_constructible_vIS1_DpT_EERS1_E4typeEDpOS6_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %103 unwind label %101

101:                                              ; preds = %103, %93
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  br label %916

103:                                              ; preds = %93, %87
  %104 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %indvars.iv133) #9
  %105 = invoke noundef zeroext i1 @_ZStneISt4pairIddES1_ENSt9enable_ifIXsr14is_convertibleIDTneclsr3stdE7declvalIRKT_EEclsr3stdE7declvalIRKT0_EEEbEE5valueEbE4typeERKSt8optionalIS3_ERKSC_IS6_E(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %106 unwind label %101

106:                                              ; preds = %103
  br i1 %105, label %107, label %109

107:                                              ; preds = %106
  store i8 1, ptr %51, align 1, !tbaa !92
  %108 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %indvars.iv133) #9
  call void @_ZNSt8optionalISt4pairIddEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(24) %108, ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  br label %109

109:                                              ; preds = %107, %106
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = getelementptr inbounds i8, ptr %110, i64 8
  %112 = load i32, ptr %111, align 8, !tbaa !82
  %113 = sext i32 %112 to i64
  %114 = icmp slt i64 %indvars.iv.next134, %113
  br i1 %114, label %87, label %.preheader122, !llvm.loop !93

.preheader121:                                    ; preds = %153, %.preheader122
  %115 = phi ptr [ %80, %.preheader122 ], [ %154, %153 ]
  %116 = getelementptr inbounds i8, ptr %115, i64 8
  %117 = load i32, ptr %116, align 8, !tbaa !82
  %118 = icmp sgt i32 %117, 0
  br i1 %118, label %.lr.ph130, label %._crit_edge

.lr.ph130:                                        ; preds = %.preheader121
  %119 = getelementptr inbounds i8, ptr %0, i64 360
  %120 = getelementptr inbounds i8, ptr %0, i64 384
  %121 = getelementptr inbounds i8, ptr %0, i64 32
  %122 = getelementptr inbounds i8, ptr %0, i64 13060
  br label %160

123:                                              ; preds = %.lr.ph128, %153
  %indvars.iv136 = phi i64 [ 0, %.lr.ph128 ], [ %indvars.iv.next137, %153 ]
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %indvars.iv136) #9
  %125 = load double, ptr %124, align 8, !tbaa !94
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %indvars.iv136) #9
  %127 = load double, ptr %126, align 8, !tbaa !94
  %128 = fcmp une double %125, %127
  br i1 %128, label %129, label %136

129:                                              ; preds = %123
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %indvars.iv136) #9
  %131 = load double, ptr %130, align 8, !tbaa !94
  %132 = load ptr, ptr %85, align 8, !tbaa !95
  %133 = getelementptr inbounds i8, ptr %132, i64 161656
  %134 = load ptr, ptr %133, align 8, !tbaa !96
  %135 = getelementptr inbounds double, ptr %134, i64 %indvars.iv136
  store double %131, ptr %135, align 8, !tbaa !94
  br label %143

136:                                              ; preds = %123
  %137 = load ptr, ptr %85, align 8, !tbaa !95
  %138 = getelementptr inbounds i8, ptr %137, i64 161656
  %139 = load ptr, ptr %138, align 8, !tbaa !96
  %140 = getelementptr inbounds double, ptr %139, i64 %indvars.iv136
  %141 = load double, ptr %140, align 8, !tbaa !94
  %142 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %indvars.iv136) #9
  store double %141, ptr %142, align 8, !tbaa !94
  br label %143

143:                                              ; preds = %136, %129
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %indvars.iv136) #9
  %145 = load double, ptr %144, align 8, !tbaa !94
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %indvars.iv136) #9
  %147 = load double, ptr %146, align 8, !tbaa !94
  %148 = fcmp une double %145, %147
  br i1 %148, label %149, label %153

149:                                              ; preds = %143
  store i8 1, ptr %86, align 1, !tbaa !86
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %indvars.iv136) #9
  %151 = load double, ptr %150, align 8, !tbaa !94
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %indvars.iv136) #9
  store double %151, ptr %152, align 8, !tbaa !94
  br label %153

153:                                              ; preds = %143, %149
  %indvars.iv.next137 = add nuw nsw i64 %indvars.iv136, 1
  %154 = load ptr, ptr %12, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 8, !tbaa !89
  %156 = sext i32 %155 to i64
  %157 = icmp slt i64 %indvars.iv.next137, %156
  br i1 %157, label %123, label %.preheader121, !llvm.loop !98

._crit_edge:                                      ; preds = %190, %.preheader121
  %158 = load i8, ptr %0, align 8, !tbaa !99, !range !100, !noundef !101
  %159 = trunc nuw i8 %158 to i1
  br i1 %159, label %196, label %427

160:                                              ; preds = %.lr.ph130, %190
  %indvars.iv139 = phi i64 [ 0, %.lr.ph130 ], [ %indvars.iv.next140, %190 ]
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %indvars.iv139) #9
  %162 = load double, ptr %161, align 8, !tbaa !94
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %indvars.iv139) #9
  %164 = load double, ptr %163, align 8, !tbaa !94
  %165 = fcmp une double %162, %164
  br i1 %165, label %166, label %173

166:                                              ; preds = %160
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %indvars.iv139) #9
  %168 = load double, ptr %167, align 8, !tbaa !94
  %169 = load ptr, ptr %121, align 8, !tbaa !95
  %170 = getelementptr inbounds i8, ptr %169, i64 161696
  %171 = load ptr, ptr %170, align 8, !tbaa !102
  %172 = getelementptr inbounds double, ptr %171, i64 %indvars.iv139
  store double %168, ptr %172, align 8, !tbaa !94
  br label %180

173:                                              ; preds = %160
  %174 = load ptr, ptr %121, align 8, !tbaa !95
  %175 = getelementptr inbounds i8, ptr %174, i64 161696
  %176 = load ptr, ptr %175, align 8, !tbaa !102
  %177 = getelementptr inbounds double, ptr %176, i64 %indvars.iv139
  %178 = load double, ptr %177, align 8, !tbaa !94
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %indvars.iv139) #9
  store double %178, ptr %179, align 8, !tbaa !94
  br label %180

180:                                              ; preds = %173, %166
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %indvars.iv139) #9
  %182 = load double, ptr %181, align 8, !tbaa !94
  %183 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %indvars.iv139) #9
  %184 = load double, ptr %183, align 8, !tbaa !94
  %185 = fcmp une double %182, %184
  br i1 %185, label %186, label %190

186:                                              ; preds = %180
  store i8 1, ptr %122, align 4, !tbaa !103
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %indvars.iv139) #9
  %188 = load double, ptr %187, align 8, !tbaa !94
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %indvars.iv139) #9
  store double %188, ptr %189, align 8, !tbaa !94
  br label %190

190:                                              ; preds = %180, %186
  %indvars.iv.next140 = add nuw nsw i64 %indvars.iv139, 1
  %191 = load ptr, ptr %12, align 8, !tbaa !5
  %192 = getelementptr inbounds i8, ptr %191, i64 8
  %193 = load i32, ptr %192, align 8, !tbaa !82
  %194 = sext i32 %193 to i64
  %195 = icmp slt i64 %indvars.iv.next140, %194
  br i1 %195, label %160, label %._crit_edge, !llvm.loop !104

196:                                              ; preds = %._crit_edge
  %197 = getelementptr inbounds i8, ptr %0, i64 9320
  %198 = getelementptr inbounds i8, ptr %0, i64 11864
  %199 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %197, ptr noundef nonnull align 8 dereferenceable(8) %198)
  br i1 %199, label %200, label %206

200:                                              ; preds = %196
  %201 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %201, align 1, !tbaa !105
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  %203 = getelementptr inbounds i8, ptr %202, i64 320
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull align 8 dereferenceable(8) %197)
          to label %206 unwind label %204

204:                                              ; preds = %910, %906, %901, %893, %876, %869, %862, %848, %847, %743, %737, %640, %628, %529, %523, %517, %508, %501, %491, %487, %475, %463, %451, %410, %402, %394, %386, %378, %370, %362, %354, %346, %338, %330, %322, %314, %306, %298, %290, %282, %274, %266, %258, %250, %242, %234, %226, %218, %210, %200
  %205 = landingpad { ptr, i32 }
          cleanup
  br label %916

206:                                              ; preds = %200, %196
  %207 = getelementptr inbounds i8, ptr %0, i64 9328
  %208 = getelementptr inbounds i8, ptr %0, i64 11872
  %209 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(8) %208)
  br i1 %209, label %210, label %214

210:                                              ; preds = %206
  %211 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %211, align 1, !tbaa !105
  %212 = load ptr, ptr %12, align 8, !tbaa !5
  %213 = getelementptr inbounds i8, ptr %212, i64 328
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %214 unwind label %204

214:                                              ; preds = %210, %206
  %215 = getelementptr inbounds i8, ptr %0, i64 9336
  %216 = getelementptr inbounds i8, ptr %0, i64 11880
  %217 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(8) %216)
  br i1 %217, label %218, label %222

218:                                              ; preds = %214
  %219 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %219, align 1, !tbaa !105
  %220 = load ptr, ptr %12, align 8, !tbaa !5
  %221 = getelementptr inbounds i8, ptr %220, i64 336
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(8) %215)
          to label %222 unwind label %204

222:                                              ; preds = %218, %214
  %223 = getelementptr inbounds i8, ptr %0, i64 9344
  %224 = getelementptr inbounds i8, ptr %0, i64 11888
  %225 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef nonnull align 8 dereferenceable(8) %224)
  br i1 %225, label %226, label %230

226:                                              ; preds = %222
  %227 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %227, align 1, !tbaa !105
  %228 = load ptr, ptr %12, align 8, !tbaa !5
  %229 = getelementptr inbounds i8, ptr %228, i64 344
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %230 unwind label %204

230:                                              ; preds = %226, %222
  %231 = getelementptr inbounds i8, ptr %0, i64 9360
  %232 = getelementptr inbounds i8, ptr %0, i64 11904
  %233 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull align 8 dereferenceable(8) %232)
  br i1 %233, label %234, label %238

234:                                              ; preds = %230
  %235 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %235, align 1, !tbaa !105
  %236 = load ptr, ptr %12, align 8, !tbaa !5
  %237 = getelementptr inbounds i8, ptr %236, i64 360
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef nonnull align 8 dereferenceable(8) %231)
          to label %238 unwind label %204

238:                                              ; preds = %234, %230
  %239 = getelementptr inbounds i8, ptr %0, i64 9368
  %240 = getelementptr inbounds i8, ptr %0, i64 11912
  %241 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %239, ptr noundef nonnull align 8 dereferenceable(8) %240)
  br i1 %241, label %242, label %246

242:                                              ; preds = %238
  %243 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %243, align 1, !tbaa !105
  %244 = load ptr, ptr %12, align 8, !tbaa !5
  %245 = getelementptr inbounds i8, ptr %244, i64 368
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef nonnull align 8 dereferenceable(8) %239)
          to label %246 unwind label %204

246:                                              ; preds = %242, %238
  %247 = getelementptr inbounds i8, ptr %0, i64 9376
  %248 = getelementptr inbounds i8, ptr %0, i64 11920
  %249 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA3_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(24) %247, ptr noundef nonnull align 8 dereferenceable(24) %248)
  br i1 %249, label %250, label %254

250:                                              ; preds = %246
  %251 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %251, align 1, !tbaa !105
  %252 = load ptr, ptr %12, align 8, !tbaa !5
  %253 = getelementptr inbounds i8, ptr %252, i64 376
  invoke void @_ZN12_GLOBAL__N_14CopyIA3_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %253, ptr noundef nonnull align 8 dereferenceable(24) %247)
          to label %254 unwind label %204

254:                                              ; preds = %250, %246
  %255 = getelementptr inbounds i8, ptr %0, i64 9400
  %256 = getelementptr inbounds i8, ptr %0, i64 11944
  %257 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA3_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(24) %255, ptr noundef nonnull align 8 dereferenceable(24) %256)
  br i1 %257, label %258, label %262

258:                                              ; preds = %254
  %259 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %259, align 1, !tbaa !105
  %260 = load ptr, ptr %12, align 8, !tbaa !5
  %261 = getelementptr inbounds i8, ptr %260, i64 400
  invoke void @_ZN12_GLOBAL__N_14CopyIA3_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %261, ptr noundef nonnull align 8 dereferenceable(24) %255)
          to label %262 unwind label %204

262:                                              ; preds = %258, %254
  %263 = getelementptr inbounds i8, ptr %0, i64 9424
  %264 = getelementptr inbounds i8, ptr %0, i64 11968
  %265 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA3_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(24) %263, ptr noundef nonnull align 8 dereferenceable(24) %264)
  br i1 %265, label %266, label %270

266:                                              ; preds = %262
  %267 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %267, align 1, !tbaa !105
  %268 = load ptr, ptr %12, align 8, !tbaa !5
  %269 = getelementptr inbounds i8, ptr %268, i64 424
  invoke void @_ZN12_GLOBAL__N_14CopyIA3_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %269, ptr noundef nonnull align 8 dereferenceable(24) %263)
          to label %270 unwind label %204

270:                                              ; preds = %266, %262
  %271 = getelementptr inbounds i8, ptr %0, i64 9448
  %272 = getelementptr inbounds i8, ptr %0, i64 11992
  %273 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef nonnull align 8 dereferenceable(8) %272)
  br i1 %273, label %274, label %278

274:                                              ; preds = %270
  %275 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %275, align 1, !tbaa !105
  %276 = load ptr, ptr %12, align 8, !tbaa !5
  %277 = getelementptr inbounds i8, ptr %276, i64 448
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull align 8 dereferenceable(8) %271)
          to label %278 unwind label %204

278:                                              ; preds = %274, %270
  %279 = getelementptr inbounds i8, ptr %0, i64 9456
  %280 = getelementptr inbounds i8, ptr %0, i64 12000
  %281 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(8) %280)
  br i1 %281, label %282, label %286

282:                                              ; preds = %278
  %283 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %283, align 1, !tbaa !105
  %284 = load ptr, ptr %12, align 8, !tbaa !5
  %285 = getelementptr inbounds i8, ptr %284, i64 456
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull align 8 dereferenceable(8) %279)
          to label %286 unwind label %204

286:                                              ; preds = %282, %278
  %287 = getelementptr inbounds i8, ptr %0, i64 9464
  %288 = getelementptr inbounds i8, ptr %0, i64 12008
  %289 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef nonnull align 8 dereferenceable(8) %288)
  br i1 %289, label %290, label %294

290:                                              ; preds = %286
  %291 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %291, align 1, !tbaa !105
  %292 = load ptr, ptr %12, align 8, !tbaa !5
  %293 = getelementptr inbounds i8, ptr %292, i64 464
  invoke void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull align 8 dereferenceable(8) %287)
          to label %294 unwind label %204

294:                                              ; preds = %290, %286
  %295 = getelementptr inbounds i8, ptr %0, i64 9472
  %296 = getelementptr inbounds i8, ptr %0, i64 12016
  %297 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA2_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(16) %295, ptr noundef nonnull align 8 dereferenceable(16) %296)
  br i1 %297, label %298, label %302

298:                                              ; preds = %294
  %299 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %299, align 1, !tbaa !105
  %300 = load ptr, ptr %12, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 472
  invoke void @_ZN12_GLOBAL__N_14CopyIA2_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(16) %301, ptr noundef nonnull align 8 dereferenceable(16) %295)
          to label %302 unwind label %204

302:                                              ; preds = %298, %294
  %303 = getelementptr inbounds i8, ptr %0, i64 9488
  %304 = getelementptr inbounds i8, ptr %0, i64 12032
  %305 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA5_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(40) %303, ptr noundef nonnull align 8 dereferenceable(40) %304)
  br i1 %305, label %306, label %310

306:                                              ; preds = %302
  %307 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %307, align 1, !tbaa !105
  %308 = load ptr, ptr %12, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %308, i64 488
  invoke void @_ZN12_GLOBAL__N_14CopyIA5_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(40) %309, ptr noundef nonnull align 8 dereferenceable(40) %303)
          to label %310 unwind label %204

310:                                              ; preds = %306, %302
  %311 = getelementptr inbounds i8, ptr %0, i64 9528
  %312 = getelementptr inbounds i8, ptr %0, i64 12072
  %313 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA5_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(40) %311, ptr noundef nonnull align 8 dereferenceable(40) %312)
  br i1 %313, label %314, label %318

314:                                              ; preds = %310
  %315 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %315, align 1, !tbaa !105
  %316 = load ptr, ptr %12, align 8, !tbaa !5
  %317 = getelementptr inbounds i8, ptr %316, i64 528
  invoke void @_ZN12_GLOBAL__N_14CopyIA5_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(40) %317, ptr noundef nonnull align 8 dereferenceable(40) %311)
          to label %318 unwind label %204

318:                                              ; preds = %314, %310
  %319 = getelementptr inbounds i8, ptr %0, i64 9568
  %320 = getelementptr inbounds i8, ptr %0, i64 12112
  %321 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %319, ptr noundef nonnull align 4 dereferenceable(4) %320)
  br i1 %321, label %322, label %326

322:                                              ; preds = %318
  %323 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %323, align 1, !tbaa !105
  %324 = load ptr, ptr %12, align 8, !tbaa !5
  %325 = getelementptr inbounds i8, ptr %324, i64 568
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %325, ptr noundef nonnull align 4 dereferenceable(4) %319)
          to label %326 unwind label %204

326:                                              ; preds = %322, %318
  %327 = getelementptr inbounds i8, ptr %0, i64 9572
  %328 = getelementptr inbounds i8, ptr %0, i64 12116
  %329 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %327, ptr noundef nonnull align 4 dereferenceable(4) %328)
  br i1 %329, label %330, label %334

330:                                              ; preds = %326
  %331 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %331, align 1, !tbaa !105
  %332 = load ptr, ptr %12, align 8, !tbaa !5
  %333 = getelementptr inbounds i8, ptr %332, i64 572
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %333, ptr noundef nonnull align 4 dereferenceable(4) %327)
          to label %334 unwind label %204

334:                                              ; preds = %330, %326
  %335 = getelementptr inbounds i8, ptr %0, i64 9576
  %336 = getelementptr inbounds i8, ptr %0, i64 12120
  %337 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %335, ptr noundef nonnull align 4 dereferenceable(4) %336)
  br i1 %337, label %338, label %342

338:                                              ; preds = %334
  %339 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %339, align 1, !tbaa !105
  %340 = load ptr, ptr %12, align 8, !tbaa !5
  %341 = getelementptr inbounds i8, ptr %340, i64 576
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %341, ptr noundef nonnull align 4 dereferenceable(4) %335)
          to label %342 unwind label %204

342:                                              ; preds = %338, %334
  %343 = getelementptr inbounds i8, ptr %0, i64 9580
  %344 = getelementptr inbounds i8, ptr %0, i64 12124
  %345 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %343, ptr noundef nonnull align 4 dereferenceable(4) %344)
  br i1 %345, label %346, label %350

346:                                              ; preds = %342
  %347 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %347, align 1, !tbaa !105
  %348 = load ptr, ptr %12, align 8, !tbaa !5
  %349 = getelementptr inbounds i8, ptr %348, i64 580
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %349, ptr noundef nonnull align 4 dereferenceable(4) %343)
          to label %350 unwind label %204

350:                                              ; preds = %346, %342
  %351 = getelementptr inbounds i8, ptr %0, i64 9584
  %352 = getelementptr inbounds i8, ptr %0, i64 12128
  %353 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %351, ptr noundef nonnull align 4 dereferenceable(4) %352)
  br i1 %353, label %354, label %358

354:                                              ; preds = %350
  %355 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %355, align 1, !tbaa !105
  %356 = load ptr, ptr %12, align 8, !tbaa !5
  %357 = getelementptr inbounds i8, ptr %356, i64 584
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %357, ptr noundef nonnull align 4 dereferenceable(4) %351)
          to label %358 unwind label %204

358:                                              ; preds = %354, %350
  %359 = getelementptr inbounds i8, ptr %0, i64 9592
  %360 = getelementptr inbounds i8, ptr %0, i64 12136
  %361 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %359, ptr noundef nonnull align 4 dereferenceable(4) %360)
  br i1 %361, label %362, label %366

362:                                              ; preds = %358
  %363 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %363, align 1, !tbaa !105
  %364 = load ptr, ptr %12, align 8, !tbaa !5
  %365 = getelementptr inbounds i8, ptr %364, i64 592
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %365, ptr noundef nonnull align 4 dereferenceable(4) %359)
          to label %366 unwind label %204

366:                                              ; preds = %362, %358
  %367 = getelementptr inbounds i8, ptr %0, i64 9596
  %368 = getelementptr inbounds i8, ptr %0, i64 12140
  %369 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %367, ptr noundef nonnull align 4 dereferenceable(4) %368)
  br i1 %369, label %370, label %374

370:                                              ; preds = %366
  %371 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %371, align 1, !tbaa !105
  %372 = load ptr, ptr %12, align 8, !tbaa !5
  %373 = getelementptr inbounds i8, ptr %372, i64 596
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %373, ptr noundef nonnull align 4 dereferenceable(4) %367)
          to label %374 unwind label %204

374:                                              ; preds = %370, %366
  %375 = getelementptr inbounds i8, ptr %0, i64 9600
  %376 = getelementptr inbounds i8, ptr %0, i64 12144
  %377 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %375, ptr noundef nonnull align 4 dereferenceable(4) %376)
  br i1 %377, label %378, label %382

378:                                              ; preds = %374
  %379 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %379, align 1, !tbaa !105
  %380 = load ptr, ptr %12, align 8, !tbaa !5
  %381 = getelementptr inbounds i8, ptr %380, i64 600
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %381, ptr noundef nonnull align 4 dereferenceable(4) %375)
          to label %382 unwind label %204

382:                                              ; preds = %378, %374
  %383 = getelementptr inbounds i8, ptr %0, i64 9604
  %384 = getelementptr inbounds i8, ptr %0, i64 12148
  %385 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %383, ptr noundef nonnull align 4 dereferenceable(4) %384)
  br i1 %385, label %386, label %390

386:                                              ; preds = %382
  %387 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %387, align 1, !tbaa !105
  %388 = load ptr, ptr %12, align 8, !tbaa !5
  %389 = getelementptr inbounds i8, ptr %388, i64 604
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %389, ptr noundef nonnull align 4 dereferenceable(4) %383)
          to label %390 unwind label %204

390:                                              ; preds = %386, %382
  %391 = getelementptr inbounds i8, ptr %0, i64 9608
  %392 = getelementptr inbounds i8, ptr %0, i64 12152
  %393 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %391, ptr noundef nonnull align 4 dereferenceable(4) %392)
  br i1 %393, label %394, label %398

394:                                              ; preds = %390
  %395 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %395, align 1, !tbaa !105
  %396 = load ptr, ptr %12, align 8, !tbaa !5
  %397 = getelementptr inbounds i8, ptr %396, i64 608
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %397, ptr noundef nonnull align 4 dereferenceable(4) %391)
          to label %398 unwind label %204

398:                                              ; preds = %394, %390
  %399 = getelementptr inbounds i8, ptr %0, i64 9612
  %400 = getelementptr inbounds i8, ptr %0, i64 12156
  %401 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %399, ptr noundef nonnull align 4 dereferenceable(4) %400)
  br i1 %401, label %402, label %406

402:                                              ; preds = %398
  %403 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %403, align 1, !tbaa !105
  %404 = load ptr, ptr %12, align 8, !tbaa !5
  %405 = getelementptr inbounds i8, ptr %404, i64 612
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %405, ptr noundef nonnull align 4 dereferenceable(4) %399)
          to label %406 unwind label %204

406:                                              ; preds = %402, %398
  %407 = getelementptr inbounds i8, ptr %0, i64 9616
  %408 = getelementptr inbounds i8, ptr %0, i64 12160
  %409 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4) %407, ptr noundef nonnull align 4 dereferenceable(4) %408)
  br i1 %409, label %410, label %414

410:                                              ; preds = %406
  %411 = getelementptr inbounds i8, ptr %0, i64 13057
  store i8 1, ptr %411, align 1, !tbaa !105
  %412 = load ptr, ptr %12, align 8, !tbaa !5
  %413 = getelementptr inbounds i8, ptr %412, i64 616
  invoke void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4) %413, ptr noundef nonnull align 4 dereferenceable(4) %407)
          to label %414 unwind label %204

414:                                              ; preds = %410, %406
  %415 = getelementptr inbounds i8, ptr %0, i64 11508
  %416 = load i32, ptr %415, align 4, !tbaa !106
  %417 = getelementptr inbounds i8, ptr %0, i64 12328
  %418 = load i32, ptr %417, align 8, !tbaa !108
  %419 = icmp sgt i32 %416, %418
  br i1 %419, label %420, label %427

420:                                              ; preds = %414
  %421 = sub i32 %416, %418
  %422 = getelementptr inbounds i8, ptr %0, i64 32
  %423 = load ptr, ptr %422, align 8, !tbaa !95
  %424 = getelementptr inbounds i8, ptr %423, i64 1124
  %425 = load i32, ptr %424, align 4, !tbaa !106
  %426 = add nsw i32 %421, %425
  store i32 %426, ptr %424, align 4, !tbaa !106
  br label %427

427:                                              ; preds = %414, %420, %._crit_edge
  %428 = getelementptr inbounds i8, ptr %0, i64 12336
  %429 = call noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %428) #9
  br i1 %429, label %430, label %445

430:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %5) #9
  %431 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %428) #9
  %432 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  br i1 %432, label %443, label %433

433:                                              ; preds = %430
  %434 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %428) #9
  %435 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %434) #9
  %436 = load ptr, ptr %12, align 8, !tbaa !5
  %437 = invoke i32 @mj_saveLastXML(ptr noundef %435, ptr noundef %436, ptr noundef nonnull %5, i32 noundef 200)
          to label %438 unwind label %441

438:                                              ; preds = %433
  %.not100 = icmp eq i32 %437, 0
  br i1 %.not100, label %439, label %443

439:                                              ; preds = %438
  %440 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.51, ptr noundef nonnull %5)
  br label %443

441:                                              ; preds = %433
  %442 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %5) #9
  br label %916

443:                                              ; preds = %439, %438, %430
  %444 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40) %428) #9
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %5) #9
  br label %445

445:                                              ; preds = %443, %427
  %446 = getelementptr inbounds i8, ptr %0, i64 12376
  %447 = call noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %446) #9
  br i1 %447, label %448, label %457

448:                                              ; preds = %445
  %449 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %446) #9
  %450 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %449) #9
  br i1 %450, label %455, label %451

451:                                              ; preds = %448
  %452 = load ptr, ptr %12, align 8, !tbaa !5
  %453 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %446) #9
  %454 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %453) #9
  invoke void @mj_saveModel(ptr noundef %452, ptr noundef %454, ptr noundef null, i32 noundef 0)
          to label %455 unwind label %204

455:                                              ; preds = %451, %448
  %456 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40) %446) #9
  br label %457

457:                                              ; preds = %455, %445
  %458 = getelementptr inbounds i8, ptr %0, i64 12416
  %459 = call noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %458) #9
  br i1 %459, label %460, label %469

460:                                              ; preds = %457
  %461 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %458) #9
  %462 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %461) #9
  br i1 %462, label %467, label %463

463:                                              ; preds = %460
  %464 = load ptr, ptr %12, align 8, !tbaa !5
  %465 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %458) #9
  %466 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %465) #9
  invoke void @mj_printModel(ptr noundef %464, ptr noundef %466)
          to label %467 unwind label %204

467:                                              ; preds = %463, %460
  %468 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40) %458) #9
  br label %469

469:                                              ; preds = %467, %457
  %470 = getelementptr inbounds i8, ptr %0, i64 12456
  %471 = call noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %470) #9
  br i1 %471, label %472, label %483

472:                                              ; preds = %469
  %473 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %470) #9
  %474 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %473) #9
  br i1 %474, label %481, label %475

475:                                              ; preds = %472
  %476 = load ptr, ptr %12, align 8, !tbaa !5
  %477 = getelementptr inbounds i8, ptr %0, i64 32
  %478 = load ptr, ptr %477, align 8, !tbaa !95
  %479 = call noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %470) #9
  %480 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %479) #9
  invoke void @mj_printData(ptr noundef %476, ptr noundef %478, ptr noundef %480)
          to label %481 unwind label %204

481:                                              ; preds = %475, %472
  %482 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40) %470) #9
  br label %483

483:                                              ; preds = %481, %469
  %484 = getelementptr inbounds i8, ptr %0, i64 12496
  %485 = load i8, ptr %484, align 8, !tbaa !109, !range !100, !noundef !101
  %486 = trunc nuw i8 %485 to i1
  br i1 %486, label %487, label %497

487:                                              ; preds = %483
  %488 = load ptr, ptr %12, align 8, !tbaa !5
  %489 = getelementptr inbounds i8, ptr %0, i64 32
  %490 = load ptr, ptr %489, align 8, !tbaa !95
  invoke void @mj_resetData(ptr noundef %488, ptr noundef %490)
          to label %491 unwind label %204

491:                                              ; preds = %487
  %492 = load ptr, ptr %12, align 8, !tbaa !5
  %493 = load ptr, ptr %489, align 8, !tbaa !95
  invoke void @mj_forward(ptr noundef %492, ptr noundef %493)
          to label %494 unwind label %204

494:                                              ; preds = %491
  %495 = getelementptr inbounds i8, ptr %0, i64 13248
  store i32 0, ptr %495, align 8, !tbaa !110
  %496 = getelementptr inbounds i8, ptr %0, i64 13056
  store i8 1, ptr %496, align 8, !tbaa !111
  store i8 0, ptr %484, align 8, !tbaa !109
  br label %497

497:                                              ; preds = %494, %483
  %.076 = phi i1 [ true, %494 ], [ %39, %483 ]
  %.075 = phi i1 [ true, %494 ], [ %28, %483 ]
  %498 = getelementptr inbounds i8, ptr %0, i64 12497
  %499 = load i8, ptr %498, align 1, !tbaa !112, !range !100, !noundef !101
  %500 = trunc nuw i8 %499 to i1
  br i1 %500, label %501, label %504

501:                                              ; preds = %497
  %502 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_117AlignAndScaleViewEPN6mujoco8SimulateEPK8mjModel_(ptr noundef nonnull %0, ptr noundef %502)
          to label %503 unwind label %204

503:                                              ; preds = %501
  store i8 0, ptr %498, align 1, !tbaa !112
  br label %504

504:                                              ; preds = %503, %497
  %505 = getelementptr inbounds i8, ptr %0, i64 12498
  %506 = load i8, ptr %505, align 2, !tbaa !113, !range !100, !noundef !101
  %507 = trunc nuw i8 %506 to i1
  br i1 %507, label %508, label %513

508:                                              ; preds = %504
  %509 = load ptr, ptr %12, align 8, !tbaa !5
  %510 = getelementptr inbounds i8, ptr %0, i64 32
  %511 = load ptr, ptr %510, align 8, !tbaa !95
  invoke void @_ZN12_GLOBAL__N_18CopyPoseEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef nonnull %0, ptr noundef %509, ptr noundef %511)
          to label %512 unwind label %204

512:                                              ; preds = %508
  store i8 0, ptr %505, align 2, !tbaa !113
  br label %513

513:                                              ; preds = %512, %504
  %514 = getelementptr inbounds i8, ptr %0, i64 12499
  %515 = load i8, ptr %514, align 1, !tbaa !114, !range !100, !noundef !101
  %516 = trunc nuw i8 %515 to i1
  br i1 %516, label %517, label %519

517:                                              ; preds = %513
  invoke void @_ZN12_GLOBAL__N_114LoadScrubStateEPN6mujoco8SimulateE(ptr noundef nonnull %0)
          to label %518 unwind label %204

518:                                              ; preds = %517
  store i8 0, ptr %514, align 1, !tbaa !114
  br label %519

519:                                              ; preds = %518, %513
  %.177 = phi i1 [ true, %518 ], [ %.076, %513 ]
  %.1 = phi i1 [ true, %518 ], [ %.075, %513 ]
  %520 = getelementptr inbounds i8, ptr %0, i64 12500
  %521 = load i8, ptr %520, align 4, !tbaa !115, !range !100, !noundef !101
  %522 = trunc nuw i8 %521 to i1
  br i1 %522, label %523, label %533

523:                                              ; preds = %519
  %524 = load ptr, ptr %12, align 8, !tbaa !5
  %525 = getelementptr inbounds i8, ptr %0, i64 32
  %526 = load ptr, ptr %525, align 8, !tbaa !95
  %527 = getelementptr inbounds i8, ptr %0, i64 13244
  %528 = load i32, ptr %527, align 4, !tbaa !116
  invoke void @mj_resetDataKeyframe(ptr noundef %524, ptr noundef %526, i32 noundef %528)
          to label %529 unwind label %204

529:                                              ; preds = %523
  %530 = load ptr, ptr %12, align 8, !tbaa !5
  %531 = load ptr, ptr %525, align 8, !tbaa !95
  invoke void @mj_forward(ptr noundef %530, ptr noundef %531)
          to label %532 unwind label %204

532:                                              ; preds = %529
  store i8 0, ptr %520, align 4, !tbaa !115
  br label %533

533:                                              ; preds = %532, %519
  %.278 = phi i1 [ true, %532 ], [ %.177, %519 ]
  %.2 = phi i1 [ true, %532 ], [ %.1, %519 ]
  %534 = getelementptr inbounds i8, ptr %0, i64 12501
  %535 = load i8, ptr %534, align 1, !tbaa !117, !range !100, !noundef !101
  %536 = trunc nuw i8 %535 to i1
  br i1 %536, label %537, label %624

537:                                              ; preds = %533
  %538 = getelementptr inbounds i8, ptr %0, i64 13244
  %539 = load i32, ptr %538, align 4, !tbaa !116
  %540 = getelementptr inbounds i8, ptr %0, i64 32
  %541 = load ptr, ptr %540, align 8, !tbaa !95
  %542 = getelementptr inbounds i8, ptr %541, i64 161616
  %543 = load double, ptr %542, align 8, !tbaa !118
  %544 = load ptr, ptr %12, align 8, !tbaa !5
  %545 = getelementptr inbounds i8, ptr %544, i64 4024
  %546 = load ptr, ptr %545, align 8, !tbaa !119
  %547 = sext i32 %539 to i64
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  store double %543, ptr %548, align 8, !tbaa !94
  %549 = getelementptr inbounds i8, ptr %544, i64 4032
  %550 = load ptr, ptr %549, align 8, !tbaa !120
  %551 = load i32, ptr %544, align 8, !tbaa !89
  %552 = mul nsw i32 %551, %539
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %550, i64 %553
  %555 = getelementptr inbounds i8, ptr %541, i64 161656
  %556 = load ptr, ptr %555, align 8, !tbaa !96
  invoke void @mju_copy(ptr noundef %554, ptr noundef %556, i32 noundef %551)
          to label %557 unwind label %622

557:                                              ; preds = %537
  %558 = load ptr, ptr %12, align 8, !tbaa !5
  %559 = getelementptr inbounds i8, ptr %558, i64 4040
  %560 = load ptr, ptr %559, align 8, !tbaa !121
  %561 = getelementptr inbounds i8, ptr %558, i64 4
  %562 = load i32, ptr %561, align 4, !tbaa !122
  %563 = mul nsw i32 %562, %539
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds double, ptr %560, i64 %564
  %566 = load ptr, ptr %540, align 8, !tbaa !95
  %567 = getelementptr inbounds i8, ptr %566, i64 161664
  %568 = load ptr, ptr %567, align 8, !tbaa !123
  invoke void @mju_copy(ptr noundef %565, ptr noundef %568, i32 noundef %562)
          to label %569 unwind label %622

569:                                              ; preds = %557
  %570 = load ptr, ptr %12, align 8, !tbaa !5
  %571 = getelementptr inbounds i8, ptr %570, i64 4048
  %572 = load ptr, ptr %571, align 8, !tbaa !124
  %573 = getelementptr inbounds i8, ptr %570, i64 12
  %574 = load i32, ptr %573, align 4, !tbaa !125
  %575 = mul nsw i32 %574, %539
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds double, ptr %572, i64 %576
  %578 = load ptr, ptr %540, align 8, !tbaa !95
  %579 = getelementptr inbounds i8, ptr %578, i64 161672
  %580 = load ptr, ptr %579, align 8, !tbaa !126
  invoke void @mju_copy(ptr noundef %577, ptr noundef %580, i32 noundef %574)
          to label %581 unwind label %622

581:                                              ; preds = %569
  %582 = load ptr, ptr %12, align 8, !tbaa !5
  %583 = getelementptr inbounds i8, ptr %582, i64 4056
  %584 = load ptr, ptr %583, align 8, !tbaa !127
  %585 = mul nsw i32 %539, 3
  %586 = getelementptr inbounds i8, ptr %582, i64 204
  %587 = load i32, ptr %586, align 4, !tbaa !128
  %588 = mul nsw i32 %585, %587
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %584, i64 %589
  %591 = load ptr, ptr %540, align 8, !tbaa !95
  %592 = getelementptr inbounds i8, ptr %591, i64 161728
  %593 = load ptr, ptr %592, align 8, !tbaa !129
  %594 = mul nsw i32 %587, 3
  invoke void @mju_copy(ptr noundef %590, ptr noundef %593, i32 noundef %594)
          to label %595 unwind label %622

595:                                              ; preds = %581
  %596 = load ptr, ptr %12, align 8, !tbaa !5
  %597 = getelementptr inbounds i8, ptr %596, i64 4064
  %598 = load ptr, ptr %597, align 8, !tbaa !130
  %599 = shl nsw i32 %539, 2
  %600 = getelementptr inbounds i8, ptr %596, i64 204
  %601 = load i32, ptr %600, align 4, !tbaa !128
  %602 = mul nsw i32 %599, %601
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds double, ptr %598, i64 %603
  %605 = load ptr, ptr %540, align 8, !tbaa !95
  %606 = getelementptr inbounds i8, ptr %605, i64 161736
  %607 = load ptr, ptr %606, align 8, !tbaa !131
  %608 = shl nsw i32 %601, 2
  invoke void @mju_copy(ptr noundef %604, ptr noundef %607, i32 noundef %608)
          to label %609 unwind label %622

609:                                              ; preds = %595
  %610 = load ptr, ptr %12, align 8, !tbaa !5
  %611 = getelementptr inbounds i8, ptr %610, i64 4072
  %612 = load ptr, ptr %611, align 8, !tbaa !132
  %613 = getelementptr inbounds i8, ptr %610, i64 8
  %614 = load i32, ptr %613, align 8, !tbaa !82
  %615 = mul nsw i32 %614, %539
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %612, i64 %616
  %618 = load ptr, ptr %540, align 8, !tbaa !95
  %619 = getelementptr inbounds i8, ptr %618, i64 161696
  %620 = load ptr, ptr %619, align 8, !tbaa !102
  invoke void @mju_copy(ptr noundef %617, ptr noundef %620, i32 noundef %614)
          to label %621 unwind label %622

621:                                              ; preds = %609
  store i8 0, ptr %534, align 1, !tbaa !117
  br label %624

622:                                              ; preds = %609, %595, %581, %569, %557, %537
  %623 = landingpad { ptr, i32 }
          cleanup
  br label %916

624:                                              ; preds = %621, %533
  %625 = getelementptr inbounds i8, ptr %0, i64 12502
  %626 = load i8, ptr %625, align 2, !tbaa !133, !range !100, !noundef !101
  %627 = trunc nuw i8 %626 to i1
  br i1 %627, label %628, label %637

628:                                              ; preds = %624
  %629 = getelementptr inbounds i8, ptr %0, i64 32
  %630 = load ptr, ptr %629, align 8, !tbaa !95
  %631 = getelementptr inbounds i8, ptr %630, i64 161696
  %632 = load ptr, ptr %631, align 8, !tbaa !102
  %633 = load ptr, ptr %12, align 8, !tbaa !5
  %634 = getelementptr inbounds i8, ptr %633, i64 8
  %635 = load i32, ptr %634, align 8, !tbaa !82
  invoke void @mju_zero(ptr noundef %632, i32 noundef %635)
          to label %636 unwind label %204

636:                                              ; preds = %628
  store i8 0, ptr %625, align 2, !tbaa !133
  br label %637

637:                                              ; preds = %636, %624
  %638 = getelementptr inbounds i8, ptr %0, i64 12504
  %639 = load i32, ptr %638, align 8, !tbaa !134
  %.not101 = icmp eq i32 %639, 0
  br i1 %.not101, label %651, label %640

640:                                              ; preds = %637
  %641 = load ptr, ptr %12, align 8, !tbaa !5
  %642 = getelementptr inbounds i8, ptr %0, i64 32
  %643 = load ptr, ptr %642, align 8, !tbaa !95
  %644 = getelementptr inbounds i8, ptr %0, i64 17720
  %645 = getelementptr inbounds i8, ptr %0, i64 26504
  %646 = load ptr, ptr %645, align 8, !tbaa !135
  invoke void @mjv_initPerturb(ptr noundef %641, ptr noundef %643, ptr noundef nonnull %644, ptr noundef %646)
          to label %647 unwind label %204

647:                                              ; preds = %640
  %648 = load i32, ptr %638, align 8, !tbaa !134
  %649 = load ptr, ptr %645, align 8, !tbaa !135
  %650 = getelementptr inbounds i8, ptr %649, i64 12
  store i32 %648, ptr %650, align 4, !tbaa !136
  store i32 0, ptr %638, align 8, !tbaa !134
  br label %651

651:                                              ; preds = %647, %637
  %652 = getelementptr inbounds i8, ptr %0, i64 12508
  %653 = load i8, ptr %652, align 4, !tbaa !138, !range !100, !noundef !101
  %654 = trunc nuw i8 %653 to i1
  br i1 %654, label %655, label %729

655:                                              ; preds = %651
  %656 = getelementptr inbounds i8, ptr %0, i64 12948
  %657 = load i32, ptr %656, align 4, !tbaa !139
  %658 = getelementptr inbounds i8, ptr %0, i64 13008
  %659 = load i32, ptr %658, align 8
  %.not102 = icmp ne i32 %659, 0
  %660 = getelementptr inbounds i8, ptr %0, i64 12564
  %.sroa.0.0.copyload = load i32, ptr %660, align 4, !tbaa !140
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 12568
  %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !140
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 12572
  %.sroa.6.0.copyload = load i32, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !140
  %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 12576
  %.sroa.8.0.copyload = load i32, ptr %.sroa.8.0..sroa_idx, align 8, !tbaa !140
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  %661 = load ptr, ptr %12, align 8, !tbaa !5
  %662 = getelementptr inbounds i8, ptr %0, i64 32
  %663 = load ptr, ptr %662, align 8, !tbaa !95
  %664 = getelementptr inbounds i8, ptr %0, i64 26496
  %665 = load ptr, ptr %664, align 8, !tbaa !141
  %666 = sitofp i32 %.sroa.6.0.copyload to double
  %667 = sitofp i32 %.sroa.8.0.copyload to double
  %668 = fdiv double %666, %667
  %669 = getelementptr inbounds i8, ptr %0, i64 12960
  %670 = load double, ptr %669, align 8, !tbaa !142
  %671 = sitofp i32 %.sroa.0.0.copyload to double
  %672 = fsub double %670, %671
  %673 = fdiv double %672, %666
  %674 = getelementptr inbounds i8, ptr %0, i64 12968
  %675 = load double, ptr %674, align 8, !tbaa !143
  %676 = sitofp i32 %.sroa.5.0.copyload to double
  %677 = fsub double %675, %676
  %678 = fdiv double %677, %667
  %679 = getelementptr inbounds i8, ptr %0, i64 17720
  %680 = invoke i32 @mjv_select(ptr noundef %661, ptr noundef %663, ptr noundef %665, double noundef %668, double noundef %673, double noundef %678, ptr noundef nonnull %679, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9)
          to label %681 unwind label %688

681:                                              ; preds = %655
  %.not151 = icmp eq i32 %657, 1
  %682 = icmp sgt i32 %680, -1
  br i1 %.not151, label %698, label %683

683:                                              ; preds = %681
  br i1 %682, label %684, label %.thread

684:                                              ; preds = %683
  %685 = getelementptr inbounds i8, ptr %0, i64 26488
  %686 = load ptr, ptr %685, align 8, !tbaa !144
  %687 = getelementptr inbounds i8, ptr %686, i64 16
  invoke void @mju_copy3(ptr noundef nonnull %687, ptr noundef nonnull %6)
          to label %690 unwind label %688

688:                                              ; preds = %684, %655
  %689 = landingpad { ptr, i32 }
          cleanup
  br label %728

690:                                              ; preds = %684
  %691 = icmp ne i32 %680, 0
  %or.cond3 = select i1 %.not102, i1 %691, i1 false
  br i1 %or.cond3, label %692, label %.thread

692:                                              ; preds = %690
  %693 = load ptr, ptr %685, align 8, !tbaa !144
  store i32 1, ptr %693, align 8, !tbaa !145
  %694 = getelementptr inbounds i8, ptr %693, i64 8
  store i32 %680, ptr %694, align 8, !tbaa !146
  %695 = getelementptr inbounds i8, ptr %693, i64 4
  store i32 -1, ptr %695, align 4, !tbaa !147
  %696 = getelementptr inbounds i8, ptr %0, i64 17716
  store i32 1, ptr %696, align 4, !tbaa !148
  %697 = getelementptr inbounds i8, ptr %0, i64 13058
  store i8 1, ptr %697, align 2, !tbaa !149
  br label %.thread

698:                                              ; preds = %681
  %699 = getelementptr inbounds i8, ptr %0, i64 26504
  %700 = load ptr, ptr %699, align 8, !tbaa !135
  br i1 %682, label %701, label %725

701:                                              ; preds = %698
  store i32 %680, ptr %700, align 8, !tbaa !150
  %702 = load i32, ptr %8, align 4, !tbaa !140
  %703 = getelementptr inbounds i8, ptr %700, i64 4
  store i32 %702, ptr %703, align 4, !tbaa !151
  %704 = load i32, ptr %9, align 4, !tbaa !140
  %705 = getelementptr inbounds i8, ptr %700, i64 8
  store i32 %704, ptr %705, align 8, !tbaa !152
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #9
  %706 = load ptr, ptr %662, align 8, !tbaa !95
  %707 = getelementptr inbounds i8, ptr %706, i64 161792
  %708 = load ptr, ptr %707, align 8, !tbaa !153
  %709 = mul nuw nsw i32 %680, 3
  %710 = zext nneg i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %708, i64 %710
  invoke void @mju_sub3(ptr noundef nonnull %10, ptr noundef nonnull %6, ptr noundef %711)
          to label %712 unwind label %723

712:                                              ; preds = %701
  %713 = load ptr, ptr %699, align 8, !tbaa !135
  %714 = getelementptr inbounds i8, ptr %713, i64 104
  %715 = load ptr, ptr %662, align 8, !tbaa !95
  %716 = getelementptr inbounds i8, ptr %715, i64 161808
  %717 = load ptr, ptr %716, align 8, !tbaa !154
  %718 = load i32, ptr %713, align 8, !tbaa !150
  %719 = mul nsw i32 %718, 9
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds double, ptr %717, i64 %720
  invoke void @mju_mulMatTVec(ptr noundef nonnull %714, ptr noundef %721, ptr noundef nonnull %10, i32 noundef 3, i32 noundef 3)
          to label %722 unwind label %723

722:                                              ; preds = %712
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  br label %.thread

723:                                              ; preds = %712, %701
  %724 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  br label %728

725:                                              ; preds = %698
  store i32 0, ptr %700, align 8, !tbaa !150
  %726 = getelementptr inbounds i8, ptr %700, i64 4
  store i32 -1, ptr %726, align 4, !tbaa !151
  %727 = getelementptr inbounds i8, ptr %700, i64 8
  store i32 -1, ptr %727, align 8, !tbaa !152
  br label %.thread

.thread:                                          ; preds = %683, %722, %725, %690, %692
  store i8 0, ptr %652, align 4, !tbaa !138
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  br label %729

728:                                              ; preds = %723, %688
  %.pn = phi { ptr, i32 } [ %689, %688 ], [ %724, %723 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  br label %916

729:                                              ; preds = %.thread, %651
  %730 = load i8, ptr %0, align 8, !tbaa !99, !range !100, !noundef !101
  %731 = trunc nuw i8 %730 to i1
  %732 = load ptr, ptr %12, align 8, !tbaa !5
  %733 = getelementptr inbounds i8, ptr %0, i64 32
  %734 = load ptr, ptr %733, align 8, !tbaa !95
  %735 = getelementptr inbounds i8, ptr %0, i64 26496
  %736 = load ptr, ptr %735, align 8, !tbaa !141
  br i1 %731, label %743, label %737

737:                                              ; preds = %729
  %738 = getelementptr inbounds i8, ptr %0, i64 26504
  %739 = load ptr, ptr %738, align 8, !tbaa !135
  %740 = getelementptr inbounds i8, ptr %0, i64 26488
  %741 = load ptr, ptr %740, align 8, !tbaa !144
  %742 = getelementptr inbounds i8, ptr %0, i64 17720
  invoke void @mjv_updateScene(ptr noundef %732, ptr noundef %734, ptr noundef %736, ptr noundef %739, ptr noundef %741, i32 noundef 7, ptr noundef nonnull %742)
          to label %856 unwind label %204

743:                                              ; preds = %729
  %744 = getelementptr inbounds i8, ptr %0, i64 408
  invoke void @mjv_updateSceneState(ptr noundef %732, ptr noundef %734, ptr noundef %736, ptr noundef nonnull %744)
          to label %745 unwind label %204

745:                                              ; preds = %743
  %746 = getelementptr inbounds i8, ptr %0, i64 4091256
  %747 = load ptr, ptr %746, align 8, !tbaa !155
  %.not104 = icmp eq ptr %747, null
  br i1 %.not104, label %.thread119, label %748

748:                                              ; preds = %745
  %749 = getelementptr inbounds i8, ptr %747, i64 4
  %750 = load i32, ptr %749, align 4, !tbaa !156
  %751 = getelementptr inbounds i8, ptr %0, i64 432
  %752 = load i32, ptr %751, align 8, !tbaa !157
  %753 = getelementptr inbounds i8, ptr %0, i64 436
  %754 = load i32, ptr %753, align 4, !tbaa !158
  %755 = sub nsw i32 %752, %754
  %756 = icmp sgt i32 %750, %755
  br i1 %756, label %757, label %761

757:                                              ; preds = %748
  %758 = load ptr, ptr %733, align 8, !tbaa !95
  invoke void @mj_warning(ptr noundef %758, i32 noundef 3, i32 noundef %752)
          to label %._crit_edge147 unwind label %759

._crit_edge147:                                   ; preds = %757
  %.pr.pre145.pre = load ptr, ptr %746, align 8, !tbaa !155
  br label %761

759:                                              ; preds = %757
  %760 = landingpad { ptr, i32 }
          cleanup
  br label %916

761:                                              ; preds = %._crit_edge147, %748
  %.pr.pre145 = phi ptr [ %747, %748 ], [ %.pr.pre145.pre, %._crit_edge147 ]
  %.074 = phi i32 [ %750, %748 ], [ %755, %._crit_edge147 ]
  %762 = icmp sgt i32 %.074, 0
  br i1 %762, label %763, label %775

763:                                              ; preds = %761
  %764 = getelementptr inbounds i8, ptr %0, i64 440
  %765 = load ptr, ptr %764, align 8, !tbaa !159
  %766 = load i32, ptr %753, align 4, !tbaa !158
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds %struct.mjvGeom_, ptr %765, i64 %767
  %769 = getelementptr inbounds i8, ptr %.pr.pre145, i64 8
  %770 = load ptr, ptr %769, align 8, !tbaa !160
  %771 = zext nneg i32 %.074 to i64
  %772 = mul nuw nsw i64 %771, 248
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %768, ptr align 4 %770, i64 %772, i1 false)
  %773 = load i32, ptr %753, align 4, !tbaa !158
  %774 = add nsw i32 %773, %.074
  store i32 %774, ptr %753, align 4, !tbaa !158
  %.pr.pre = load ptr, ptr %746, align 8, !tbaa !155
  br label %775

775:                                              ; preds = %761, %763
  %776 = phi ptr [ %.pr.pre145, %761 ], [ %.pr.pre, %763 ]
  %.not105 = icmp eq ptr %776, null
  br i1 %.not105, label %.thread119, label %.preheader

.preheader:                                       ; preds = %775
  %777 = getelementptr inbounds i8, ptr %0, i64 4091264
  %778 = getelementptr inbounds i8, ptr %0, i64 26460
  %779 = getelementptr inbounds i8, ptr %0, i64 13058
  %780 = getelementptr inbounds i8, ptr %776, i64 8740
  %781 = load i8, ptr %780, align 1, !tbaa !84
  %782 = load i8, ptr %777, align 8, !tbaa !84
  %.not110 = icmp eq i8 %781, %782
  br i1 %.not110, label %784, label %783

783:                                              ; preds = %.preheader
  store i8 %781, ptr %778, align 4, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %784

784:                                              ; preds = %.preheader, %783
  %785 = getelementptr inbounds i8, ptr %776, i64 8741
  %786 = load i8, ptr %785, align 1, !tbaa !84
  %787 = getelementptr inbounds i8, ptr %0, i64 4091265
  %788 = load i8, ptr %787, align 1, !tbaa !84
  %.not110.1 = icmp eq i8 %786, %788
  br i1 %.not110.1, label %791, label %789

789:                                              ; preds = %784
  %790 = getelementptr inbounds i8, ptr %0, i64 26461
  store i8 %786, ptr %790, align 1, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %791

791:                                              ; preds = %789, %784
  %792 = getelementptr inbounds i8, ptr %776, i64 8742
  %793 = load i8, ptr %792, align 1, !tbaa !84
  %794 = getelementptr inbounds i8, ptr %0, i64 4091266
  %795 = load i8, ptr %794, align 2, !tbaa !84
  %.not110.2 = icmp eq i8 %793, %795
  br i1 %.not110.2, label %798, label %796

796:                                              ; preds = %791
  %797 = getelementptr inbounds i8, ptr %0, i64 26462
  store i8 %793, ptr %797, align 2, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %798

798:                                              ; preds = %796, %791
  %799 = getelementptr inbounds i8, ptr %776, i64 8743
  %800 = load i8, ptr %799, align 1, !tbaa !84
  %801 = getelementptr inbounds i8, ptr %0, i64 4091267
  %802 = load i8, ptr %801, align 1, !tbaa !84
  %.not110.3 = icmp eq i8 %800, %802
  br i1 %.not110.3, label %805, label %803

803:                                              ; preds = %798
  %804 = getelementptr inbounds i8, ptr %0, i64 26463
  store i8 %800, ptr %804, align 1, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %805

805:                                              ; preds = %803, %798
  %806 = getelementptr inbounds i8, ptr %776, i64 8744
  %807 = load i8, ptr %806, align 1, !tbaa !84
  %808 = getelementptr inbounds i8, ptr %0, i64 4091268
  %809 = load i8, ptr %808, align 4, !tbaa !84
  %.not110.4 = icmp eq i8 %807, %809
  br i1 %.not110.4, label %812, label %810

810:                                              ; preds = %805
  %811 = getelementptr inbounds i8, ptr %0, i64 26464
  store i8 %807, ptr %811, align 8, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %812

812:                                              ; preds = %810, %805
  %813 = getelementptr inbounds i8, ptr %776, i64 8745
  %814 = load i8, ptr %813, align 1, !tbaa !84
  %815 = getelementptr inbounds i8, ptr %0, i64 4091269
  %816 = load i8, ptr %815, align 1, !tbaa !84
  %.not110.5 = icmp eq i8 %814, %816
  br i1 %.not110.5, label %819, label %817

817:                                              ; preds = %812
  %818 = getelementptr inbounds i8, ptr %0, i64 26465
  store i8 %814, ptr %818, align 1, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %819

819:                                              ; preds = %817, %812
  %820 = getelementptr inbounds i8, ptr %776, i64 8746
  %821 = load i8, ptr %820, align 1, !tbaa !84
  %822 = getelementptr inbounds i8, ptr %0, i64 4091270
  %823 = load i8, ptr %822, align 2, !tbaa !84
  %.not110.6 = icmp eq i8 %821, %823
  br i1 %.not110.6, label %826, label %824

824:                                              ; preds = %819
  %825 = getelementptr inbounds i8, ptr %0, i64 26466
  store i8 %821, ptr %825, align 2, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %826

826:                                              ; preds = %824, %819
  %827 = getelementptr inbounds i8, ptr %776, i64 8747
  %828 = load i8, ptr %827, align 1, !tbaa !84
  %829 = getelementptr inbounds i8, ptr %0, i64 4091271
  %830 = load i8, ptr %829, align 1, !tbaa !84
  %.not110.7 = icmp eq i8 %828, %830
  br i1 %.not110.7, label %833, label %831

831:                                              ; preds = %826
  %832 = getelementptr inbounds i8, ptr %0, i64 26467
  store i8 %828, ptr %832, align 1, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %833

833:                                              ; preds = %831, %826
  %834 = getelementptr inbounds i8, ptr %776, i64 8748
  %835 = load i8, ptr %834, align 1, !tbaa !84
  %836 = getelementptr inbounds i8, ptr %0, i64 4091272
  %837 = load i8, ptr %836, align 8, !tbaa !84
  %.not110.8 = icmp eq i8 %835, %837
  br i1 %.not110.8, label %840, label %838

838:                                              ; preds = %833
  %839 = getelementptr inbounds i8, ptr %0, i64 26468
  store i8 %835, ptr %839, align 4, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %840

840:                                              ; preds = %838, %833
  %841 = getelementptr inbounds i8, ptr %776, i64 8749
  %842 = load i8, ptr %841, align 1, !tbaa !84
  %843 = getelementptr inbounds i8, ptr %0, i64 4091273
  %844 = load i8, ptr %843, align 1, !tbaa !84
  %.not110.9 = icmp eq i8 %842, %844
  br i1 %.not110.9, label %847, label %845

845:                                              ; preds = %840
  %846 = getelementptr inbounds i8, ptr %0, i64 26469
  store i8 %842, ptr %846, align 1, !tbaa !84
  store i8 1, ptr %779, align 2, !tbaa !149
  br label %847

847:                                              ; preds = %845, %840
  invoke void @_ZN12_GLOBAL__N_14CopyIA10_hEEvRT_RKS2_(ptr noundef nonnull align 1 dereferenceable(10) %780, ptr noundef nonnull align 1 dereferenceable(10) %778)
          to label %848 unwind label %204

848:                                              ; preds = %847
  %849 = load ptr, ptr %746, align 8, !tbaa !155
  %850 = getelementptr inbounds i8, ptr %849, i64 8740
  invoke void @_ZN12_GLOBAL__N_14CopyIA10_hEEvRT_RKS2_(ptr noundef nonnull align 1 dereferenceable(10) %777, ptr noundef nonnull align 1 dereferenceable(10) %850)
          to label %.thread119 unwind label %204

.thread119:                                       ; preds = %745, %848, %775
  %851 = getelementptr inbounds i8, ptr %0, i64 9320
  %852 = getelementptr inbounds i8, ptr %0, i64 11864
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(304) %852, ptr noundef nonnull align 8 dereferenceable(304) %851, i64 304, i1 false), !tbaa.struct !161
  %853 = getelementptr inbounds i8, ptr %0, i64 11508
  %854 = load i32, ptr %853, align 4, !tbaa !106
  %855 = getelementptr inbounds i8, ptr %0, i64 12328
  store i32 %854, ptr %855, align 8, !tbaa !108
  br label %856

856:                                              ; preds = %737, %.thread119
  %857 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_114UpdateSettingsEPN6mujoco8SimulateEPK8mjModel_(ptr noundef nonnull %0, ptr noundef %857)
  %858 = getelementptr inbounds i8, ptr %0, i64 13204
  %859 = load i32, ptr %858, align 4, !tbaa !162
  %.not106 = icmp eq i32 %859, 0
  %860 = getelementptr inbounds i8, ptr %0, i64 4985104
  %861 = load i32, ptr %860, align 8
  %.not107 = icmp eq i32 %861, 0
  %or.cond117 = select i1 %.not106, i1 true, i1 %.not107
  br i1 %or.cond117, label %866, label %862

862:                                              ; preds = %856
  %863 = load ptr, ptr %12, align 8, !tbaa !5
  %864 = getelementptr inbounds i8, ptr %0, i64 32
  %865 = load ptr, ptr %864, align 8, !tbaa !95
  invoke void @_ZN12_GLOBAL__N_111UpdateWatchEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef nonnull %0, ptr noundef %863, ptr noundef %865)
          to label %866 unwind label %204

866:                                              ; preds = %862, %856
  %867 = getelementptr inbounds i8, ptr %0, i64 13216
  %868 = load i32, ptr %867, align 8, !tbaa !163
  %.not108 = icmp eq i32 %868, 0
  br i1 %.not108, label %875, label %869

869:                                              ; preds = %866
  %870 = load ptr, ptr %12, align 8, !tbaa !5
  %871 = getelementptr inbounds i8, ptr %0, i64 32
  %872 = load ptr, ptr %871, align 8, !tbaa !95
  %873 = getelementptr inbounds i8, ptr %0, i64 10057968
  %874 = getelementptr inbounds i8, ptr %0, i64 10058968
  invoke void @_ZN12_GLOBAL__N_114UpdateInfoTextEPN6mujoco8SimulateEPK8mjModel_PK7mjData_RA1000_cSA_(ptr noundef nonnull %0, ptr noundef %870, ptr noundef %872, ptr noundef nonnull align 1 dereferenceable(1000) %873, ptr noundef nonnull align 1 dereferenceable(1000) %874)
          to label %875 unwind label %204

875:                                              ; preds = %869, %866
  br i1 %.2, label %876, label %880

876:                                              ; preds = %875
  %877 = load ptr, ptr %12, align 8, !tbaa !5
  %878 = getelementptr inbounds i8, ptr %0, i64 32
  %879 = load ptr, ptr %878, align 8, !tbaa !95
  invoke void @_ZN12_GLOBAL__N_114UpdateProfilerEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef nonnull %0, ptr noundef %877, ptr noundef %879)
          to label %880 unwind label %204

880:                                              ; preds = %876, %875
  br i1 %.278, label %881, label %885

881:                                              ; preds = %880
  %882 = load ptr, ptr %12, align 8, !tbaa !5
  %883 = getelementptr inbounds i8, ptr %0, i64 32
  %884 = load ptr, ptr %883, align 8, !tbaa !95
  call void @_ZN12_GLOBAL__N_112UpdateSensorEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef nonnull %0, ptr noundef %882, ptr noundef %884)
  br label %885

885:                                              ; preds = %881, %880
  %886 = getelementptr inbounds i8, ptr %0, i64 32
  %887 = load ptr, ptr %886, align 8, !tbaa !95
  call void @_ZN12_GLOBAL__N_111ClearTimersEP7mjData_(ptr noundef %887)
  %888 = getelementptr inbounds i8, ptr %0, i64 13252
  %889 = load i32, ptr %888, align 4, !tbaa !78
  %.not109 = icmp eq i32 %889, 0
  br i1 %.not109, label %890, label %893

890:                                              ; preds = %885
  %891 = load i8, ptr %0, align 8, !tbaa !99, !range !100, !noundef !101
  %892 = trunc nuw i8 %891 to i1
  br i1 %892, label %893, label %910

893:                                              ; preds = %890, %885
  %894 = load ptr, ptr %886, align 8, !tbaa !95
  %895 = getelementptr inbounds i8, ptr %894, i64 161712
  %896 = load ptr, ptr %895, align 8, !tbaa !164
  %897 = load ptr, ptr %12, align 8, !tbaa !5
  %898 = getelementptr inbounds i8, ptr %897, i64 16
  %899 = load i32, ptr %898, align 8, !tbaa !165
  %900 = mul nsw i32 %899, 6
  invoke void @mju_zero(ptr noundef %896, i32 noundef %900)
          to label %901 unwind label %204

901:                                              ; preds = %893
  %902 = load ptr, ptr %12, align 8, !tbaa !5
  %903 = load ptr, ptr %886, align 8, !tbaa !95
  %904 = getelementptr inbounds i8, ptr %0, i64 26504
  %905 = load ptr, ptr %904, align 8, !tbaa !135
  invoke void @mjv_applyPerturbPose(ptr noundef %902, ptr noundef %903, ptr noundef %905, i32 noundef 0)
          to label %906 unwind label %204

906:                                              ; preds = %901
  %907 = load ptr, ptr %12, align 8, !tbaa !5
  %908 = load ptr, ptr %886, align 8, !tbaa !95
  %909 = load ptr, ptr %904, align 8, !tbaa !135
  invoke void @mjv_applyPerturbForce(ptr noundef %907, ptr noundef %908, ptr noundef %909)
          to label %915 unwind label %204

910:                                              ; preds = %890
  %911 = load ptr, ptr %12, align 8, !tbaa !5
  %912 = load ptr, ptr %886, align 8, !tbaa !95
  %913 = getelementptr inbounds i8, ptr %0, i64 26504
  %914 = load ptr, ptr %913, align 8, !tbaa !135
  invoke void @mjv_applyPerturbPose(ptr noundef %911, ptr noundef %912, ptr noundef %914, i32 noundef 1)
          to label %915 unwind label %204

915:                                              ; preds = %906, %910, %14, %1
  call void @_ZNSt11unique_lockISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(9) %2) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  ret void

916:                                              ; preds = %759, %728, %622, %441, %204, %101, %66
  %.pn113 = phi { ptr, i32 } [ %67, %66 ], [ %102, %101 ], [ %205, %204 ], [ %760, %759 ], [ %.pn, %728 ], [ %623, %622 ], [ %442, %441 ]
  call void @_ZNSt11unique_lockISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(9) %2) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn113
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt11unique_lockISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(9), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNKSt13__atomic_baseIiE4loadESt12memory_order(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt8optionalISt4pairIddEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8optionalISt4pairIddEE7emplaceIJRdS4_EEENSt9enable_ifIX18is_constructible_vIS1_DpT_EERS1_E4typeEDpOS6_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZStneISt4pairIddES1_ENSt9enable_ifIXsr14is_convertibleIDTneclsr3stdE7declvalIRKT_EEclsr3stdE7declvalIRKT0_EEEbEE5valueEbE4typeERKSt8optionalIS3_ERKSC_IS6_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8optionalISt4pairIddEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt8optionalISt4pairIddEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIdEEbRKT_S3_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIdEEvRT_RKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA3_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIA3_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA2_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIA2_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIA5_dEEbRKT_S4_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIA5_dEEvRT_RKS2_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsDifferentIiEEbRKT_S3_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIiEEvRT_RKS1_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

declare i32 @mj_saveLastXML(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSESt9nullopt_t(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

declare void @mj_saveModel(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

declare void @mj_printModel(ptr noundef, ptr noundef) local_unnamed_addr #7

declare void @mj_printData(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

declare void @mj_resetData(ptr noundef, ptr noundef) local_unnamed_addr #7

declare void @mj_forward(ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_117AlignAndScaleViewEPN6mujoco8SimulateEPK8mjModel_(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_18CopyPoseEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114LoadScrubStateEPN6mujoco8SimulateE(ptr noundef) local_unnamed_addr #1

declare void @mj_resetDataKeyframe(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

declare void @mju_copy(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

declare void @mju_zero(ptr noundef, i32 noundef) local_unnamed_addr #7

declare void @mjv_initPerturb(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

declare i32 @mjv_select(ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

declare void @mju_copy3(ptr noundef, ptr noundef) local_unnamed_addr #7

declare void @mju_sub3(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

declare void @mju_mulMatTVec(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #7

declare void @mjv_updateScene(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

declare void @mjv_updateSceneState(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

declare void @mj_warning(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_14CopyIA10_hEEvRT_RKS2_(ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 1 dereferenceable(10)) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_114UpdateSettingsEPN6mujoco8SimulateEPK8mjModel_(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111UpdateWatchEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114UpdateInfoTextEPN6mujoco8SimulateEPK8mjModel_PK7mjData_RA1000_cSA_(ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(1000), ptr noundef nonnull align 1 dereferenceable(1000)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114UpdateProfilerEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_112UpdateSensorEPN6mujoco8SimulateEPK8mjModel_PK7mjData_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111ClearTimersEP7mjData_(ptr noundef) local_unnamed_addr #4

declare void @mjv_applyPerturbPose(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

declare void @mjv_applyPerturbForce(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt11unique_lockISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(9)) unnamed_addr #4 align 2

attributes #0 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 24}
!6 = !{!"_ZTSN6mujoco8SimulateE", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !12, i64 72, !12, i64 96, !12, i64 120, !12, i64 144, !16, i64 168, !20, i64 192, !12, i64 216, !16, i64 240, !20, i64 264, !24, i64 288, !24, i64 312, !24, i64 336, !24, i64 360, !24, i64 384, !28, i64 408, !32, i64 11864, !43, i64 12168, !44, i64 12264, !11, i64 12328, !45, i64 12336, !52, i64 13064, !55, i64 13104, !11, i64 13168, !61, i64 13176, !33, i64 13184, !11, i64 13192, !11, i64 13196, !11, i64 13200, !11, i64 13204, !11, i64 13208, !11, i64 13212, !11, i64 13216, !11, i64 13220, !11, i64 13224, !11, i64 13228, !11, i64 13232, !11, i64 13236, !11, i64 13240, !11, i64 13244, !11, i64 13248, !11, i64 13252, !64, i64 13256, !64, i64 13260, !64, i64 13264, !64, i64 13268, !11, i64 13272, !8, i64 13276, !8, i64 14276, !8, i64 15276, !8, i64 16276, !11, i64 17276, !7, i64 17280, !30, i64 17284, !33, i64 17288, !33, i64 17296, !8, i64 17304, !11, i64 17604, !8, i64 17608, !8, i64 17668, !8, i64 17692, !11, i64 17716, !29, i64 17720, !10, i64 26488, !10, i64 26496, !10, i64 26504, !66, i64 26512, !66, i64 839460, !66, i64 1652408, !66, i64 2465356, !66, i64 3278304, !10, i64 4091256, !8, i64 4091264, !11, i64 4091276, !8, i64 4091280, !8, i64 4091288, !67, i64 4091296, !10, i64 4091304, !73, i64 4091312, !73, i64 7068880, !8, i64 10046448, !8, i64 10051128, !8, i64 10056168, !8, i64 10057968, !8, i64 10058968, !55, i64 10059968, !11, i64 10060032, !11, i64 10060036, !11, i64 10060040}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTSSt6vectorIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!16 = !{!"_ZTSSt6vectorISt8optionalISt4pairIddEESaIS3_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseISt8optionalISt4pairIddEESaIS3_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt8optionalISt4pairIddEESaIS3_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseISt8optionalISt4pairIddEESaIS3_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!20 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!24 = !{!"_ZTSSt6vectorIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!28 = !{!"_ZTS14mjvSceneState_", !11, i64 0, !10, i64 8, !11, i64 16, !29, i64 24, !31, i64 8792, !42, i64 11072}
!29 = !{!"_ZTS9mjvScene_", !11, i64 0, !11, i64 4, !10, i64 8, !10, i64 16, !11, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !8, i64 128, !8, i64 129, !8, i64 130, !8, i64 131, !11, i64 132, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !11, i64 176, !8, i64 180, !8, i64 8580, !8, i64 8700, !8, i64 8704, !8, i64 8716, !30, i64 8732, !11, i64 8736, !8, i64 8740, !11, i64 8752, !8, i64 8756}
!30 = !{!"float", !8, i64 0}
!31 = !{!"_ZTSN14mjvSceneState_Ut_E", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !32, i64 120, !34, i64 424, !41, i64 1048, !10, i64 1104, !10, i64 1112, !10, i64 1120, !10, i64 1128, !10, i64 1136, !10, i64 1144, !10, i64 1152, !10, i64 1160, !10, i64 1168, !10, i64 1176, !10, i64 1184, !10, i64 1192, !10, i64 1200, !10, i64 1208, !10, i64 1216, !10, i64 1224, !10, i64 1232, !10, i64 1240, !10, i64 1248, !10, i64 1256, !10, i64 1264, !10, i64 1272, !10, i64 1280, !10, i64 1288, !10, i64 1296, !10, i64 1304, !10, i64 1312, !10, i64 1320, !10, i64 1328, !10, i64 1336, !10, i64 1344, !10, i64 1352, !10, i64 1360, !10, i64 1368, !10, i64 1376, !10, i64 1384, !10, i64 1392, !10, i64 1400, !10, i64 1408, !10, i64 1416, !10, i64 1424, !10, i64 1432, !10, i64 1440, !10, i64 1448, !10, i64 1456, !10, i64 1464, !10, i64 1472, !10, i64 1480, !10, i64 1488, !10, i64 1496, !10, i64 1504, !10, i64 1512, !10, i64 1520, !10, i64 1528, !10, i64 1536, !10, i64 1544, !10, i64 1552, !10, i64 1560, !10, i64 1568, !10, i64 1576, !10, i64 1584, !10, i64 1592, !10, i64 1600, !10, i64 1608, !10, i64 1616, !10, i64 1624, !10, i64 1632, !10, i64 1640, !10, i64 1648, !10, i64 1656, !10, i64 1664, !10, i64 1672, !10, i64 1680, !10, i64 1688, !10, i64 1696, !10, i64 1704, !10, i64 1712, !10, i64 1720, !10, i64 1728, !10, i64 1736, !10, i64 1744, !10, i64 1752, !10, i64 1760, !10, i64 1768, !10, i64 1776, !10, i64 1784, !10, i64 1792, !10, i64 1800, !10, i64 1808, !10, i64 1816, !10, i64 1824, !10, i64 1832, !10, i64 1840, !10, i64 1848, !10, i64 1856, !10, i64 1864, !10, i64 1872, !10, i64 1880, !10, i64 1888, !10, i64 1896, !10, i64 1904, !10, i64 1912, !10, i64 1920, !10, i64 1928, !10, i64 1936, !10, i64 1944, !10, i64 1952, !10, i64 1960, !10, i64 1968, !10, i64 1976, !10, i64 1984, !10, i64 1992, !10, i64 2000, !10, i64 2008, !10, i64 2016, !10, i64 2024, !10, i64 2032, !10, i64 2040, !10, i64 2048, !10, i64 2056, !10, i64 2064, !10, i64 2072, !10, i64 2080, !10, i64 2088, !10, i64 2096, !10, i64 2104, !10, i64 2112, !10, i64 2120, !10, i64 2128, !10, i64 2136, !10, i64 2144, !10, i64 2152, !10, i64 2160, !10, i64 2168, !10, i64 2176, !10, i64 2184, !10, i64 2192, !10, i64 2200, !10, i64 2208, !10, i64 2216, !10, i64 2224, !10, i64 2232, !10, i64 2240, !10, i64 2248, !10, i64 2256, !10, i64 2264, !10, i64 2272}
!32 = !{!"_ZTS9mjOption_", !33, i64 0, !33, i64 8, !33, i64 16, !33, i64 24, !33, i64 32, !33, i64 40, !33, i64 48, !8, i64 56, !8, i64 80, !8, i64 104, !33, i64 128, !33, i64 136, !33, i64 144, !8, i64 152, !8, i64 168, !8, i64 208, !11, i64 248, !11, i64 252, !11, i64 256, !11, i64 260, !11, i64 264, !11, i64 268, !11, i64 272, !11, i64 276, !11, i64 280, !11, i64 284, !11, i64 288, !11, i64 292, !11, i64 296}
!33 = !{!"double", !8, i64 0}
!34 = !{!"_ZTS9mjVisual_", !35, i64 0, !36, i64 44, !37, i64 64, !38, i64 104, !39, i64 156, !40, i64 224}
!35 = !{!"_ZTSN9mjVisual_Ut_E", !30, i64 0, !30, i64 4, !30, i64 8, !30, i64 12, !30, i64 16, !30, i64 20, !30, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40}
!36 = !{!"_ZTSN9mjVisual_Ut0_E", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16}
!37 = !{!"_ZTSN9mjVisual_Ut1_E", !8, i64 0, !8, i64 12, !8, i64 24, !11, i64 36}
!38 = !{!"_ZTSN9mjVisual_Ut2_E", !30, i64 0, !30, i64 4, !30, i64 8, !30, i64 12, !30, i64 16, !30, i64 20, !30, i64 24, !30, i64 28, !30, i64 32, !30, i64 36, !30, i64 40, !30, i64 44, !30, i64 48}
!39 = !{!"_ZTSN9mjVisual_Ut3_E", !30, i64 0, !30, i64 4, !30, i64 8, !30, i64 12, !30, i64 16, !30, i64 20, !30, i64 24, !30, i64 28, !30, i64 32, !30, i64 36, !30, i64 40, !30, i64 44, !30, i64 48, !30, i64 52, !30, i64 56, !30, i64 60, !30, i64 64}
!40 = !{!"_ZTSN9mjVisual_Ut4_E", !8, i64 0, !8, i64 16, !8, i64 32, !8, i64 48, !8, i64 64, !8, i64 80, !8, i64 96, !8, i64 112, !8, i64 128, !8, i64 144, !8, i64 160, !8, i64 176, !8, i64 192, !8, i64 208, !8, i64 224, !8, i64 240, !8, i64 256, !8, i64 272, !8, i64 288, !8, i64 304, !8, i64 320, !8, i64 336, !8, i64 352, !8, i64 368, !8, i64 384}
!41 = !{!"_ZTS12mjStatistic_", !33, i64 0, !33, i64 8, !33, i64 16, !33, i64 24, !8, i64 32}
!42 = !{!"_ZTSN14mjvSceneState_Ut0_E", !8, i64 0, !11, i64 64, !11, i64 68, !11, i64 72, !33, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !10, i64 296, !10, i64 304, !10, i64 312, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360, !10, i64 368, !10, i64 376}
!43 = !{!"_ZTS10mjvOption_", !11, i64 0, !11, i64 4, !8, i64 8, !8, i64 14, !8, i64 20, !8, i64 26, !8, i64 32, !8, i64 38, !8, i64 44, !8, i64 50, !11, i64 84, !11, i64 88}
!44 = !{!"_ZTS10mjvCamera_", !11, i64 0, !11, i64 4, !11, i64 8, !8, i64 16, !33, i64 40, !33, i64 48, !33, i64 56}
!45 = !{!"_ZTSN6mujoco8SimulateUt_E", !46, i64 0, !46, i64 40, !46, i64 80, !46, i64 120, !7, i64 160, !7, i64 161, !7, i64 162, !7, i64 163, !7, i64 164, !7, i64 165, !7, i64 166, !11, i64 168, !7, i64 172, !51, i64 176, !7, i64 720, !7, i64 721, !7, i64 722, !7, i64 723, !7, i64 724, !7, i64 725}
!46 = !{!"_ZTSSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !47, i64 0}
!47 = !{!"_ZTSSt14_Optional_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ELb0EE", !48, i64 0}
!48 = !{!"_ZTSSt17_Optional_payloadINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ELb0ELb0EE", !49, i64 0}
!49 = !{!"_ZTSSt17_Optional_payloadINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb1ELb0ELb0EE", !50, i64 0}
!50 = !{!"_ZTSSt22_Optional_payload_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !8, i64 0, !7, i64 32}
!51 = !{!"_ZTS10mjuiState_", !11, i64 0, !8, i64 4, !10, i64 408, !11, i64 416, !11, i64 420, !11, i64 424, !11, i64 428, !11, i64 432, !11, i64 436, !33, i64 440, !33, i64 448, !33, i64 456, !33, i64 464, !33, i64 472, !33, i64 480, !33, i64 488, !11, i64 496, !11, i64 500, !11, i64 504, !11, i64 508, !33, i64 512, !11, i64 520, !11, i64 524, !11, i64 528, !11, i64 532, !10, i64 536}
!52 = !{!"_ZTSN6mujoco13SimulateMutexE", !53, i64 0}
!53 = !{!"_ZTSSt15recursive_mutex", !54, i64 0}
!54 = !{!"_ZTSSt22__recursive_mutex_base", !8, i64 0}
!55 = !{!"_ZTSNSt3_V222condition_variable_anyE", !56, i64 0, !58, i64 48}
!56 = !{!"_ZTSSt18condition_variable", !57, i64 0}
!57 = !{!"_ZTSSt9__condvar", !8, i64 0}
!58 = !{!"_ZTSSt10shared_ptrISt5mutexE", !59, i64 0}
!59 = !{!"_ZTSSt12__shared_ptrISt5mutexLN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !60, i64 8}
!60 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0}
!61 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212steady_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !62, i64 0}
!62 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !63, i64 0}
!63 = !{!"long", !8, i64 0}
!64 = !{!"_ZTSSt6atomicIiE", !65, i64 0}
!65 = !{!"_ZTSSt13__atomic_baseIiE", !11, i64 0}
!66 = !{!"_ZTS10mjvFigure_", !11, i64 0, !8, i64 4, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !30, i64 28, !30, i64 32, !8, i64 36, !8, i64 44, !8, i64 56, !8, i64 72, !8, i64 88, !8, i64 104, !8, i64 116, !8, i64 1316, !8, i64 1332, !8, i64 1352, !8, i64 1372, !8, i64 1392, !8, i64 2392, !8, i64 2492, !11, i64 12492, !11, i64 12496, !8, i64 12500, !11, i64 12508, !30, i64 12512, !8, i64 12516, !8, i64 12916, !8, i64 812916, !8, i64 812924, !8, i64 812932, !8, i64 812940}
!67 = !{!"_ZTSSt10unique_ptrIN6mujoco17PlatformUIAdapterESt14default_deleteIS1_EE", !68, i64 0}
!68 = !{!"_ZTSSt15__uniq_ptr_dataIN6mujoco17PlatformUIAdapterESt14default_deleteIS1_ELb1ELb1EE", !69, i64 0}
!69 = !{!"_ZTSSt15__uniq_ptr_implIN6mujoco17PlatformUIAdapterESt14default_deleteIS1_EE", !70, i64 0}
!70 = !{!"_ZTSSt5tupleIJPN6mujoco17PlatformUIAdapterESt14default_deleteIS1_EEE", !71, i64 0}
!71 = !{!"_ZTSSt11_Tuple_implILm0EJPN6mujoco17PlatformUIAdapterESt14default_deleteIS1_EEE", !72, i64 0}
!72 = !{!"_ZTSSt10_Head_baseILm0EPN6mujoco17PlatformUIAdapterELb0EE", !10, i64 0}
!73 = !{!"_ZTS5mjUI_", !74, i64 0, !75, i64 44, !10, i64 296, !10, i64 304, !11, i64 312, !11, i64 316, !11, i64 320, !11, i64 324, !11, i64 328, !11, i64 332, !11, i64 336, !11, i64 340, !11, i64 344, !11, i64 348, !11, i64 352, !11, i64 356, !11, i64 360, !11, i64 364, !8, i64 368, !10, i64 672, !11, i64 680, !8, i64 688}
!74 = !{!"_ZTS17mjuiThemeSpacing_", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40}
!75 = !{!"_ZTS15mjuiThemeColor_", !8, i64 0, !8, i64 12, !8, i64 24, !8, i64 36, !8, i64 48, !8, i64 60, !8, i64 72, !8, i64 84, !8, i64 96, !8, i64 108, !8, i64 120, !8, i64 132, !8, i64 144, !8, i64 156, !8, i64 168, !8, i64 180, !8, i64 192, !8, i64 204, !8, i64 216, !8, i64 228, !8, i64 240}
!76 = !{!6, !11, i64 13220}
!77 = !{!6, !11, i64 13228}
!78 = !{!6, !11, i64 13252}
!79 = !{!6, !11, i64 13224}
!80 = !{!81, !11, i64 32}
!81 = !{!"_ZTS8mjModel_", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !11, i64 148, !11, i64 152, !11, i64 156, !11, i64 160, !11, i64 164, !11, i64 168, !11, i64 172, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !11, i64 192, !11, i64 196, !11, i64 200, !11, i64 204, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !11, i64 236, !11, i64 240, !11, i64 244, !11, i64 248, !11, i64 252, !11, i64 256, !11, i64 260, !11, i64 264, !11, i64 268, !11, i64 272, !11, i64 276, !11, i64 280, !11, i64 284, !11, i64 288, !11, i64 292, !11, i64 296, !63, i64 304, !63, i64 312, !32, i64 320, !34, i64 624, !41, i64 1248, !10, i64 1304, !10, i64 1312, !10, i64 1320, !10, i64 1328, !10, i64 1336, !10, i64 1344, !10, i64 1352, !10, i64 1360, !10, i64 1368, !10, i64 1376, !10, i64 1384, !10, i64 1392, !10, i64 1400, !10, i64 1408, !10, i64 1416, !10, i64 1424, !10, i64 1432, !10, i64 1440, !10, i64 1448, !10, i64 1456, !10, i64 1464, !10, i64 1472, !10, i64 1480, !10, i64 1488, !10, i64 1496, !10, i64 1504, !10, i64 1512, !10, i64 1520, !10, i64 1528, !10, i64 1536, !10, i64 1544, !10, i64 1552, !10, i64 1560, !10, i64 1568, !10, i64 1576, !10, i64 1584, !10, i64 1592, !10, i64 1600, !10, i64 1608, !10, i64 1616, !10, i64 1624, !10, i64 1632, !10, i64 1640, !10, i64 1648, !10, i64 1656, !10, i64 1664, !10, i64 1672, !10, i64 1680, !10, i64 1688, !10, i64 1696, !10, i64 1704, !10, i64 1712, !10, i64 1720, !10, i64 1728, !10, i64 1736, !10, i64 1744, !10, i64 1752, !10, i64 1760, !10, i64 1768, !10, i64 1776, !10, i64 1784, !10, i64 1792, !10, i64 1800, !10, i64 1808, !10, i64 1816, !10, i64 1824, !10, i64 1832, !10, i64 1840, !10, i64 1848, !10, i64 1856, !10, i64 1864, !10, i64 1872, !10, i64 1880, !10, i64 1888, !10, i64 1896, !10, i64 1904, !10, i64 1912, !10, i64 1920, !10, i64 1928, !10, i64 1936, !10, i64 1944, !10, i64 1952, !10, i64 1960, !10, i64 1968, !10, i64 1976, !10, i64 1984, !10, i64 1992, !10, i64 2000, !10, i64 2008, !10, i64 2016, !10, i64 2024, !10, i64 2032, !10, i64 2040, !10, i64 2048, !10, i64 2056, !10, i64 2064, !10, i64 2072, !10, i64 2080, !10, i64 2088, !10, i64 2096, !10, i64 2104, !10, i64 2112, !10, i64 2120, !10, i64 2128, !10, i64 2136, !10, i64 2144, !10, i64 2152, !10, i64 2160, !10, i64 2168, !10, i64 2176, !10, i64 2184, !10, i64 2192, !10, i64 2200, !10, i64 2208, !10, i64 2216, !10, i64 2224, !10, i64 2232, !10, i64 2240, !10, i64 2248, !10, i64 2256, !10, i64 2264, !10, i64 2272, !10, i64 2280, !10, i64 2288, !10, i64 2296, !10, i64 2304, !10, i64 2312, !10, i64 2320, !10, i64 2328, !10, i64 2336, !10, i64 2344, !10, i64 2352, !10, i64 2360, !10, i64 2368, !10, i64 2376, !10, i64 2384, !10, i64 2392, !10, i64 2400, !10, i64 2408, !10, i64 2416, !10, i64 2424, !10, i64 2432, !10, i64 2440, !10, i64 2448, !10, i64 2456, !10, i64 2464, !10, i64 2472, !10, i64 2480, !10, i64 2488, !10, i64 2496, !10, i64 2504, !10, i64 2512, !10, i64 2520, !10, i64 2528, !10, i64 2536, !10, i64 2544, !10, i64 2552, !10, i64 2560, !10, i64 2568, !10, i64 2576, !10, i64 2584, !10, i64 2592, !10, i64 2600, !10, i64 2608, !10, i64 2616, !10, i64 2624, !10, i64 2632, !10, i64 2640, !10, i64 2648, !10, i64 2656, !10, i64 2664, !10, i64 2672, !10, i64 2680, !10, i64 2688, !10, i64 2696, !10, i64 2704, !10, i64 2712, !10, i64 2720, !10, i64 2728, !10, i64 2736, !10, i64 2744, !10, i64 2752, !10, i64 2760, !10, i64 2768, !10, i64 2776, !10, i64 2784, !10, i64 2792, !10, i64 2800, !10, i64 2808, !10, i64 2816, !10, i64 2824, !10, i64 2832, !10, i64 2840, !10, i64 2848, !10, i64 2856, !10, i64 2864, !10, i64 2872, !10, i64 2880, !10, i64 2888, !10, i64 2896, !10, i64 2904, !10, i64 2912, !10, i64 2920, !10, i64 2928, !10, i64 2936, !10, i64 2944, !10, i64 2952, !10, i64 2960, !10, i64 2968, !10, i64 2976, !10, i64 2984, !10, i64 2992, !10, i64 3000, !10, i64 3008, !10, i64 3016, !10, i64 3024, !10, i64 3032, !10, i64 3040, !10, i64 3048, !10, i64 3056, !10, i64 3064, !10, i64 3072, !10, i64 3080, !10, i64 3088, !10, i64 3096, !10, i64 3104, !10, i64 3112, !10, i64 3120, !10, i64 3128, !10, i64 3136, !10, i64 3144, !10, i64 3152, !10, i64 3160, !10, i64 3168, !10, i64 3176, !10, i64 3184, !10, i64 3192, !10, i64 3200, !10, i64 3208, !10, i64 3216, !10, i64 3224, !10, i64 3232, !10, i64 3240, !10, i64 3248, !10, i64 3256, !10, i64 3264, !10, i64 3272, !10, i64 3280, !10, i64 3288, !10, i64 3296, !10, i64 3304, !10, i64 3312, !10, i64 3320, !10, i64 3328, !10, i64 3336, !10, i64 3344, !10, i64 3352, !10, i64 3360, !10, i64 3368, !10, i64 3376, !10, i64 3384, !10, i64 3392, !10, i64 3400, !10, i64 3408, !10, i64 3416, !10, i64 3424, !10, i64 3432, !10, i64 3440, !10, i64 3448, !10, i64 3456, !10, i64 3464, !10, i64 3472, !10, i64 3480, !10, i64 3488, !10, i64 3496, !10, i64 3504, !10, i64 3512, !10, i64 3520, !10, i64 3528, !10, i64 3536, !10, i64 3544, !10, i64 3552, !10, i64 3560, !10, i64 3568, !10, i64 3576, !10, i64 3584, !10, i64 3592, !10, i64 3600, !10, i64 3608, !10, i64 3616, !10, i64 3624, !10, i64 3632, !10, i64 3640, !10, i64 3648, !10, i64 3656, !10, i64 3664, !10, i64 3672, !10, i64 3680, !10, i64 3688, !10, i64 3696, !10, i64 3704, !10, i64 3712, !10, i64 3720, !10, i64 3728, !10, i64 3736, !10, i64 3744, !10, i64 3752, !10, i64 3760, !10, i64 3768, !10, i64 3776, !10, i64 3784, !10, i64 3792, !10, i64 3800, !10, i64 3808, !10, i64 3816, !10, i64 3824, !10, i64 3832, !10, i64 3840, !10, i64 3848, !10, i64 3856, !10, i64 3864, !10, i64 3872, !10, i64 3880, !10, i64 3888, !10, i64 3896, !10, i64 3904, !10, i64 3912, !10, i64 3920, !10, i64 3928, !10, i64 3936, !10, i64 3944, !10, i64 3952, !10, i64 3960, !10, i64 3968, !10, i64 3976, !10, i64 3984, !10, i64 3992, !10, i64 4000, !10, i64 4008, !10, i64 4016, !10, i64 4024, !10, i64 4032, !10, i64 4040, !10, i64 4048, !10, i64 4056, !10, i64 4064, !10, i64 4072, !10, i64 4080, !10, i64 4088, !10, i64 4096, !10, i64 4104, !10, i64 4112, !10, i64 4120, !10, i64 4128, !10, i64 4136, !10, i64 4144, !10, i64 4152, !10, i64 4160, !10, i64 4168, !10, i64 4176, !10, i64 4184, !10, i64 4192, !10, i64 4200, !10, i64 4208, !10, i64 4216, !10, i64 4224, !10, i64 4232, !10, i64 4240, !10, i64 4248, !10, i64 4256, !10, i64 4264, !10, i64 4272, !10, i64 4280}
!82 = !{!81, !11, i64 8}
!83 = !{!81, !10, i64 1632}
!84 = !{!8, !8, i64 0}
!85 = !{!81, !10, i64 1696}
!86 = !{!6, !7, i64 13059}
!87 = distinct !{!87, !88}
!88 = !{!"llvm.loop.mustprogress"}
!89 = !{!81, !11, i64 0}
!90 = !{!81, !10, i64 3656}
!91 = !{!81, !10, i64 3712}
!92 = !{!6, !7, i64 13061}
!93 = distinct !{!93, !88}
!94 = !{!33, !33, i64 0}
!95 = !{!6, !10, i64 32}
!96 = !{!97, !10, i64 161656}
!97 = !{!"_ZTS7mjData_", !63, i64 0, !63, i64 8, !11, i64 16, !63, i64 24, !63, i64 32, !63, i64 40, !63, i64 48, !8, i64 56, !63, i64 1080, !11, i64 1088, !11, i64 1092, !8, i64 1096, !8, i64 1160, !8, i64 1400, !11, i64 161400, !8, i64 161404, !8, i64 161484, !8, i64 161568, !11, i64 161584, !11, i64 161588, !11, i64 161592, !11, i64 161596, !11, i64 161600, !11, i64 161604, !11, i64 161608, !33, i64 161616, !8, i64 161624, !10, i64 161640, !10, i64 161648, !10, i64 161656, !10, i64 161664, !10, i64 161672, !10, i64 161680, !10, i64 161688, !10, i64 161696, !10, i64 161704, !10, i64 161712, !10, i64 161720, !10, i64 161728, !10, i64 161736, !10, i64 161744, !10, i64 161752, !10, i64 161760, !10, i64 161768, !10, i64 161776, !10, i64 161784, !10, i64 161792, !10, i64 161800, !10, i64 161808, !10, i64 161816, !10, i64 161824, !10, i64 161832, !10, i64 161840, !10, i64 161848, !10, i64 161856, !10, i64 161864, !10, i64 161872, !10, i64 161880, !10, i64 161888, !10, i64 161896, !10, i64 161904, !10, i64 161912, !10, i64 161920, !10, i64 161928, !10, i64 161936, !10, i64 161944, !10, i64 161952, !10, i64 161960, !10, i64 161968, !10, i64 161976, !10, i64 161984, !10, i64 161992, !10, i64 162000, !10, i64 162008, !10, i64 162016, !10, i64 162024, !10, i64 162032, !10, i64 162040, !10, i64 162048, !10, i64 162056, !10, i64 162064, !10, i64 162072, !10, i64 162080, !10, i64 162088, !10, i64 162096, !10, i64 162104, !10, i64 162112, !10, i64 162120, !10, i64 162128, !10, i64 162136, !10, i64 162144, !10, i64 162152, !10, i64 162160, !10, i64 162168, !10, i64 162176, !10, i64 162184, !10, i64 162192, !10, i64 162200, !10, i64 162208, !10, i64 162216, !10, i64 162224, !10, i64 162232, !10, i64 162240, !10, i64 162248, !10, i64 162256, !10, i64 162264, !10, i64 162272, !10, i64 162280, !10, i64 162288, !10, i64 162296, !10, i64 162304, !10, i64 162312, !10, i64 162320, !10, i64 162328, !10, i64 162336, !10, i64 162344, !10, i64 162352, !10, i64 162360, !10, i64 162368, !10, i64 162376, !10, i64 162384, !10, i64 162392, !10, i64 162400, !10, i64 162408, !10, i64 162416, !10, i64 162424, !10, i64 162432, !10, i64 162440, !10, i64 162448, !10, i64 162456, !10, i64 162464, !10, i64 162472, !10, i64 162480, !10, i64 162488, !10, i64 162496, !10, i64 162504, !10, i64 162512, !10, i64 162520, !10, i64 162528, !10, i64 162536, !10, i64 162544, !10, i64 162552, !10, i64 162560, !10, i64 162568, !10, i64 162576, !10, i64 162584, !10, i64 162592, !10, i64 162600, !10, i64 162608, !10, i64 162616, !10, i64 162624, !10, i64 162632, !10, i64 162640, !10, i64 162648, !10, i64 162656, !10, i64 162664, !10, i64 162672, !10, i64 162680, !10, i64 162688, !10, i64 162696, !63, i64 162704}
!98 = distinct !{!98, !88}
!99 = !{!6, !7, i64 0}
!100 = !{i8 0, i8 2}
!101 = !{}
!102 = !{!97, !10, i64 161696}
!103 = !{!6, !7, i64 13060}
!104 = distinct !{!104, !88}
!105 = !{!6, !7, i64 13057}
!106 = !{!107, !11, i64 4}
!107 = !{!"_ZTS14mjWarningStat_", !11, i64 0, !11, i64 4}
!108 = !{!6, !11, i64 12328}
!109 = !{!6, !7, i64 12496}
!110 = !{!6, !11, i64 13248}
!111 = !{!6, !7, i64 13056}
!112 = !{!6, !7, i64 12497}
!113 = !{!6, !7, i64 12498}
!114 = !{!6, !7, i64 12499}
!115 = !{!6, !7, i64 12500}
!116 = !{!6, !11, i64 13244}
!117 = !{!6, !7, i64 12501}
!118 = !{!97, !33, i64 161616}
!119 = !{!81, !10, i64 4024}
!120 = !{!81, !10, i64 4032}
!121 = !{!81, !10, i64 4040}
!122 = !{!81, !11, i64 4}
!123 = !{!97, !10, i64 161664}
!124 = !{!81, !10, i64 4048}
!125 = !{!81, !11, i64 12}
!126 = !{!97, !10, i64 161672}
!127 = !{!81, !10, i64 4056}
!128 = !{!81, !11, i64 204}
!129 = !{!97, !10, i64 161728}
!130 = !{!81, !10, i64 4064}
!131 = !{!97, !10, i64 161736}
!132 = !{!81, !10, i64 4072}
!133 = !{!6, !7, i64 12502}
!134 = !{!6, !11, i64 12504}
!135 = !{!6, !10, i64 26504}
!136 = !{!137, !11, i64 12}
!137 = !{!"_ZTS11mjvPerturb_", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !8, i64 24, !8, i64 48, !8, i64 80, !8, i64 104, !33, i64 128, !33, i64 136}
!138 = !{!6, !7, i64 12508}
!139 = !{!6, !11, i64 12948}
!140 = !{!11, !11, i64 0}
!141 = !{!6, !10, i64 26496}
!142 = !{!6, !33, i64 12960}
!143 = !{!6, !33, i64 12968}
!144 = !{!6, !10, i64 26488}
!145 = !{!44, !11, i64 0}
!146 = !{!44, !11, i64 8}
!147 = !{!44, !11, i64 4}
!148 = !{!6, !11, i64 17716}
!149 = !{!6, !7, i64 13058}
!150 = !{!137, !11, i64 0}
!151 = !{!137, !11, i64 4}
!152 = !{!137, !11, i64 8}
!153 = !{!97, !10, i64 161792}
!154 = !{!97, !10, i64 161808}
!155 = !{!6, !10, i64 4091256}
!156 = !{!29, !11, i64 4}
!157 = !{!6, !11, i64 432}
!158 = !{!6, !11, i64 436}
!159 = !{!6, !10, i64 440}
!160 = !{!29, !10, i64 8}
!161 = !{i64 0, i64 8, !94, i64 8, i64 8, !94, i64 16, i64 8, !94, i64 24, i64 8, !94, i64 32, i64 8, !94, i64 40, i64 8, !94, i64 48, i64 8, !94, i64 56, i64 24, !84, i64 80, i64 24, !84, i64 104, i64 24, !84, i64 128, i64 8, !94, i64 136, i64 8, !94, i64 144, i64 8, !94, i64 152, i64 16, !84, i64 168, i64 40, !84, i64 208, i64 40, !84, i64 248, i64 4, !140, i64 252, i64 4, !140, i64 256, i64 4, !140, i64 260, i64 4, !140, i64 264, i64 4, !140, i64 268, i64 4, !140, i64 272, i64 4, !140, i64 276, i64 4, !140, i64 280, i64 4, !140, i64 284, i64 4, !140, i64 288, i64 4, !140, i64 292, i64 4, !140, i64 296, i64 4, !140}
!162 = !{!6, !11, i64 13204}
!163 = !{!6, !11, i64 13216}
!164 = !{!97, !10, i64 161712}
!165 = !{!81, !11, i64 16}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass