; LLVM IR from opensim-org/opensim-core :: Vendors/lepton/src (ParsedExpression)

; 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.Lepton::ExpressionTreeNode" = type { ptr, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Lepton::ExpressionTreeNode, std::allocator<Lepton::ExpressionTreeNode>>::_Vector_impl" }
%"struct.std::_Vector_base<Lepton::ExpressionTreeNode, std::allocator<Lepton::ExpressionTreeNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<Lepton::ExpressionTreeNode, std::allocator<Lepton::ExpressionTreeNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Lepton::ExpressionTreeNode, std::allocator<Lepton::ExpressionTreeNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }

@_ZTIN6Lepton9OperationE = external dso_local constant { ptr, ptr }, align 8
@_ZTIN6Lepton9Operation16MultiplyConstantE = external constant ptr

declare void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32)) #0

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

declare i32 @__gxx_personality_v0(...)

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32)) #0

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Lepton16ParsedExpression27substituteSimplerExpressionERKNS_18ExpressionTreeNodeE(ptr dead_on_unwind noalias writable sret(%"class.Lepton::ExpressionTreeNode") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %19 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %20 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %21 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %25 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %26 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %5) #8
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %29)
  %31 = call noundef i64 @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #8
  call void @_ZNSaIN6Lepton18ExpressionTreeNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  invoke void @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %31, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %32 unwind label %39

32:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIN6Lepton18ExpressionTreeNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %33

33:                                               ; preds = %56, %32
  %34 = load i32, ptr %9, align 4, !tbaa !9
  %35 = call noundef i64 @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  %36 = trunc i64 %35 to i32
  %37 = icmp slt i32 %34, %36
  br i1 %37, label %43, label %38

38:                                               ; preds = %33
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  br label %68

39:                                               ; preds = %2
  %40 = landingpad { ptr, i32 }
          cleanup
  %41 = extractvalue { ptr, i32 } %40, 0
  store ptr %41, ptr %7, align 8
  %42 = extractvalue { ptr, i32 } %40, 1
  store i32 %42, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIN6Lepton18ExpressionTreeNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  br label %1478

43:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #8
  %44 = load ptr, ptr %4, align 8, !tbaa !5
  %45 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %46 unwind label %59

46:                                               ; preds = %43
  %47 = load i32, ptr %9, align 4, !tbaa !9
  %48 = sext i32 %47 to i64
  %49 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %48) #8
  invoke void @_ZN6Lepton16ParsedExpression27substituteSimplerExpressionERKNS_18ExpressionTreeNodeE(ptr dead_on_unwind writable sret(%"class.Lepton::ExpressionTreeNode") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %50 unwind label %59

50:                                               ; preds = %46
  %51 = load i32, ptr %9, align 4, !tbaa !9
  %52 = sext i32 %51 to i64
  %53 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %52) #8
  %54 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Lepton18ExpressionTreeNodeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %55 unwind label %63

55:                                               ; preds = %50
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  br label %56

56:                                               ; preds = %55
  %57 = load i32, ptr %9, align 4, !tbaa !9
  %58 = add nsw i32 %57, 1
  store i32 %58, ptr %9, align 4, !tbaa !9
  br label %33, !llvm.loop !11

59:                                               ; preds = %46, %43
  %60 = landingpad { ptr, i32 }
          cleanup
  %61 = extractvalue { ptr, i32 } %60, 0
  store ptr %61, ptr %7, align 8
  %62 = extractvalue { ptr, i32 } %60, 1
  store i32 %62, ptr %8, align 4
  br label %67

63:                                               ; preds = %50
  %64 = landingpad { ptr, i32 }
          cleanup
  %65 = extractvalue { ptr, i32 } %64, 0
  store ptr %65, ptr %7, align 8
  %66 = extractvalue { ptr, i32 } %64, 1
  store i32 %66, ptr %8, align 4
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %67

67:                                               ; preds = %63, %59
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  br label %1477

68:                                               ; preds = %38
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %71 unwind label %77

71:                                               ; preds = %68
  %72 = load ptr, ptr %70, align 8, !tbaa !13
  %73 = getelementptr inbounds ptr, ptr %72, i64 3
  %74 = load ptr, ptr %73, align 8
  %75 = invoke noundef i32 %74(ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %76 unwind label %77

76:                                               ; preds = %71
  switch i32 %75, label %1465 [
    i32 3, label %81
    i32 4, label %190
    i32 5, label %283
    i32 6, label %813
    i32 7, label %1145
    i32 8, label %1274
    i32 32, label %1349
  ]

77:                                               ; preds = %1474, %1469, %1466, %1461, %1458, %1439, %1432, %1429, %1427, %1405, %1398, %1395, %1392, %1389, %1359, %1352, %1349, %1345, %1342, %1335, %1332, %1326, %1319, %1312, %1309, %1306, %1303, %1284, %1277, %1274, %821, %818, %813, %198, %195, %190, %71, %68
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %7, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %8, align 4
  br label %1477

81:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %82 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %83 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %82)
          to label %84 unwind label %93

84:                                               ; preds = %81
  store double %83, ptr %11, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %85 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %86 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %85)
          to label %87 unwind label %97

87:                                               ; preds = %84
  store double %86, ptr %12, align 8, !tbaa !15
  %88 = load double, ptr %11, align 8, !tbaa !15
  %89 = fcmp oeq double %88, 0.000000e+00
  br i1 %89, label %90, label %101

90:                                               ; preds = %87
  %91 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %91)
          to label %92 unwind label %97

92:                                               ; preds = %90
  store i32 1, ptr %13, align 4
  br label %186

93:                                               ; preds = %81
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %7, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %8, align 4
  br label %189

97:                                               ; preds = %178, %174, %171, %164, %161, %154, %150, %147, %140, %137, %130, %126, %115, %111, %104, %90, %84
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %7, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %8, align 4
  br label %188

101:                                              ; preds = %87
  %102 = load double, ptr %12, align 8, !tbaa !15
  %103 = fcmp oeq double %102, 0.000000e+00
  br i1 %103, label %104, label %107

104:                                              ; preds = %101
  %105 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %105)
          to label %106 unwind label %97

106:                                              ; preds = %104
  store i32 1, ptr %13, align 4
  br label %186

107:                                              ; preds = %101
  %108 = load double, ptr %11, align 8, !tbaa !15
  %109 = load double, ptr %11, align 8, !tbaa !15
  %110 = fcmp oeq double %108, %109
  br i1 %110, label %111, label %122

111:                                              ; preds = %107
  %112 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %113 unwind label %97

113:                                              ; preds = %111
  %114 = load double, ptr %11, align 8, !tbaa !15
  invoke void @_ZN6Lepton9Operation11AddConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %112, double noundef %114)
          to label %115 unwind label %118

115:                                              ; preds = %113
  %116 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %112, ptr noundef nonnull align 8 dereferenceable(32) %116)
          to label %117 unwind label %97

117:                                              ; preds = %115
  store i32 1, ptr %13, align 4
  br label %186

118:                                              ; preds = %113
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %7, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %112, i64 noundef 16) #10
  br label %188

122:                                              ; preds = %107
  %123 = load double, ptr %12, align 8, !tbaa !15
  %124 = load double, ptr %12, align 8, !tbaa !15
  %125 = fcmp oeq double %123, %124
  br i1 %125, label %126, label %137

126:                                              ; preds = %122
  %127 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %128 unwind label %97

128:                                              ; preds = %126
  %129 = load double, ptr %12, align 8, !tbaa !15
  invoke void @_ZN6Lepton9Operation11AddConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %127, double noundef %129)
          to label %130 unwind label %133

130:                                              ; preds = %128
  %131 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %127, ptr noundef nonnull align 8 dereferenceable(32) %131)
          to label %132 unwind label %97

132:                                              ; preds = %130
  store i32 1, ptr %13, align 4
  br label %186

133:                                              ; preds = %128
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %7, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %127, i64 noundef 16) #10
  br label %188

137:                                              ; preds = %122
  %138 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %138)
          to label %140 unwind label %97

140:                                              ; preds = %137
  %141 = load ptr, ptr %139, align 8, !tbaa !13
  %142 = getelementptr inbounds ptr, ptr %141, i64 3
  %143 = load ptr, ptr %142, align 8
  %144 = invoke noundef i32 %143(ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %145 unwind label %97

145:                                              ; preds = %140
  %146 = icmp eq i32 %144, 8
  br i1 %146, label %147, label %161

147:                                              ; preds = %145
  %148 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %149 unwind label %97

149:                                              ; preds = %147
  invoke void @_ZN6Lepton9Operation8SubtractC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %148)
          to label %150 unwind label %157

150:                                              ; preds = %149
  %151 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %152 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %153 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %152)
          to label %154 unwind label %97

154:                                              ; preds = %150
  %155 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %148, ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull align 8 dereferenceable(32) %155)
          to label %156 unwind label %97

156:                                              ; preds = %154
  store i32 1, ptr %13, align 4
  br label %186

157:                                              ; preds = %149
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %7, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %148, i64 noundef 8) #10
  br label %188

161:                                              ; preds = %145
  %162 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %162)
          to label %164 unwind label %97

164:                                              ; preds = %161
  %165 = load ptr, ptr %163, align 8, !tbaa !13
  %166 = getelementptr inbounds ptr, ptr %165, i64 3
  %167 = load ptr, ptr %166, align 8
  %168 = invoke noundef i32 %167(ptr noundef nonnull align 8 dereferenceable(8) %163)
          to label %169 unwind label %97

169:                                              ; preds = %164
  %170 = icmp eq i32 %168, 8
  br i1 %170, label %171, label %185

171:                                              ; preds = %169
  %172 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %173 unwind label %97

173:                                              ; preds = %171
  invoke void @_ZN6Lepton9Operation8SubtractC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172)
          to label %174 unwind label %181

174:                                              ; preds = %173
  %175 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %176 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %177 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %176)
          to label %178 unwind label %97

178:                                              ; preds = %174
  %179 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %177, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %172, ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef nonnull align 8 dereferenceable(32) %179)
          to label %180 unwind label %97

180:                                              ; preds = %178
  store i32 1, ptr %13, align 4
  br label %186

181:                                              ; preds = %173
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %7, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %172, i64 noundef 8) #10
  br label %188

185:                                              ; preds = %169
  store i32 5, ptr %13, align 4
  br label %186

186:                                              ; preds = %185, %180, %156, %132, %117, %106, %92
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  %187 = load i32, ptr %13, align 4
  switch i32 %187, label %1476 [
    i32 5, label %1466
  ]

188:                                              ; preds = %181, %157, %133, %118, %97
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %189

189:                                              ; preds = %188, %93
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %1477

190:                                              ; preds = %76
  %191 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %192 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %193 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %191, ptr noundef nonnull align 8 dereferenceable(32) %192)
          to label %194 unwind label %77

194:                                              ; preds = %190
  br i1 %193, label %195, label %204

195:                                              ; preds = %194
  %196 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %197 unwind label %77

197:                                              ; preds = %195
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %196, double noundef 0.000000e+00)
          to label %198 unwind label %200

198:                                              ; preds = %197
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %196)
          to label %199 unwind label %77

199:                                              ; preds = %198
  store i32 1, ptr %13, align 4
  br label %1476

200:                                              ; preds = %197
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %7, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %196, i64 noundef 16) #10
  br label %1477

204:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %205 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %206 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %205)
          to label %207 unwind label %216

207:                                              ; preds = %204
  store double %206, ptr %14, align 8, !tbaa !15
  %208 = load double, ptr %14, align 8, !tbaa !15
  %209 = fcmp oeq double %208, 0.000000e+00
  br i1 %209, label %210, label %224

210:                                              ; preds = %207
  %211 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %212 unwind label %216

212:                                              ; preds = %210
  invoke void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %211)
          to label %213 unwind label %220

213:                                              ; preds = %212
  %214 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %211, ptr noundef nonnull align 8 dereferenceable(32) %214)
          to label %215 unwind label %216

215:                                              ; preds = %213
  store i32 1, ptr %13, align 4
  br label %280

216:                                              ; preds = %213, %210, %204
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %7, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %8, align 4
  br label %282

220:                                              ; preds = %212
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %7, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %211, i64 noundef 8) #10
  br label %282

224:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %225 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %226 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %225)
          to label %227 unwind label %233

227:                                              ; preds = %224
  store double %226, ptr %15, align 8, !tbaa !15
  %228 = load double, ptr %15, align 8, !tbaa !15
  %229 = fcmp oeq double %228, 0.000000e+00
  br i1 %229, label %230, label %237

230:                                              ; preds = %227
  %231 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %232 unwind label %233

232:                                              ; preds = %230
  store i32 1, ptr %13, align 4
  br label %278

233:                                              ; preds = %270, %266, %263, %256, %253, %246, %241, %230, %224
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %7, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %8, align 4
  br label %279

237:                                              ; preds = %227
  %238 = load double, ptr %15, align 8, !tbaa !15
  %239 = load double, ptr %15, align 8, !tbaa !15
  %240 = fcmp oeq double %238, %239
  br i1 %240, label %241, label %253

241:                                              ; preds = %237
  %242 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %243 unwind label %233

243:                                              ; preds = %241
  %244 = load double, ptr %15, align 8, !tbaa !15
  %245 = fneg double %244
  invoke void @_ZN6Lepton9Operation11AddConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %242, double noundef %245)
          to label %246 unwind label %249

246:                                              ; preds = %243
  %247 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %242, ptr noundef nonnull align 8 dereferenceable(32) %247)
          to label %248 unwind label %233

248:                                              ; preds = %246
  store i32 1, ptr %13, align 4
  br label %278

249:                                              ; preds = %243
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %7, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %242, i64 noundef 16) #10
  br label %279

253:                                              ; preds = %237
  %254 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %254)
          to label %256 unwind label %233

256:                                              ; preds = %253
  %257 = load ptr, ptr %255, align 8, !tbaa !13
  %258 = getelementptr inbounds ptr, ptr %257, i64 3
  %259 = load ptr, ptr %258, align 8
  %260 = invoke noundef i32 %259(ptr noundef nonnull align 8 dereferenceable(8) %255)
          to label %261 unwind label %233

261:                                              ; preds = %256
  %262 = icmp eq i32 %260, 8
  br i1 %262, label %263, label %277

263:                                              ; preds = %261
  %264 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %265 unwind label %233

265:                                              ; preds = %263
  invoke void @_ZN6Lepton9Operation3AddC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %266 unwind label %273

266:                                              ; preds = %265
  %267 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %268 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %269 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %268)
          to label %270 unwind label %233

270:                                              ; preds = %266
  %271 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %269, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %264, ptr noundef nonnull align 8 dereferenceable(32) %267, ptr noundef nonnull align 8 dereferenceable(32) %271)
          to label %272 unwind label %233

272:                                              ; preds = %270
  store i32 1, ptr %13, align 4
  br label %278

273:                                              ; preds = %265
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %7, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %264, i64 noundef 8) #10
  br label %279

277:                                              ; preds = %261
  store i32 5, ptr %13, align 4
  br label %278

278:                                              ; preds = %277, %272, %248, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %280

279:                                              ; preds = %273, %249, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %282

280:                                              ; preds = %278, %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  %281 = load i32, ptr %13, align 4
  switch i32 %281, label %1476 [
    i32 5, label %1466
  ]

282:                                              ; preds = %279, %220, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %1477

283:                                              ; preds = %76
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %284 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %285 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %284)
          to label %286 unwind label %300

286:                                              ; preds = %283
  store double %285, ptr %16, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %287 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %288 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %287)
          to label %289 unwind label %304

289:                                              ; preds = %286
  store double %288, ptr %17, align 8, !tbaa !15
  %290 = load double, ptr %16, align 8, !tbaa !15
  %291 = fcmp oeq double %290, 0.000000e+00
  br i1 %291, label %295, label %292

292:                                              ; preds = %289
  %293 = load double, ptr %17, align 8, !tbaa !15
  %294 = fcmp oeq double %293, 0.000000e+00
  br i1 %294, label %295, label %312

295:                                              ; preds = %292, %289
  %296 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %297 unwind label %304

297:                                              ; preds = %295
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %296, double noundef 0.000000e+00)
          to label %298 unwind label %308

298:                                              ; preds = %297
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %296)
          to label %299 unwind label %304

299:                                              ; preds = %298
  store i32 1, ptr %13, align 4
  br label %809

300:                                              ; preds = %283
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %7, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %8, align 4
  br label %812

304:                                              ; preds = %801, %798, %793, %790, %783, %780, %773, %770, %765, %762, %755, %752, %745, %742, %737, %730, %726, %723, %716, %713, %706, %702, %699, %692, %689, %658, %651, %648, %617, %610, %607, %561, %554, %551, %544, %541, %498, %495, %488, %485, %478, %475, %468, %464, %461, %458, %451, %448, %441, %438, %431, %427, %424, %421, %401, %394, %391, %384, %381, %374, %370, %367, %364, %344, %337, %334, %327, %324, %321, %315, %298, %295, %286
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %7, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %8, align 4
  br label %811

308:                                              ; preds = %297
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %7, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %296, i64 noundef 16) #10
  br label %811

312:                                              ; preds = %292
  %313 = load double, ptr %16, align 8, !tbaa !15
  %314 = fcmp oeq double %313, 1.000000e+00
  br i1 %314, label %315, label %318

315:                                              ; preds = %312
  %316 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %316)
          to label %317 unwind label %304

317:                                              ; preds = %315
  store i32 1, ptr %13, align 4
  br label %809

318:                                              ; preds = %312
  %319 = load double, ptr %17, align 8, !tbaa !15
  %320 = fcmp oeq double %319, 1.000000e+00
  br i1 %320, label %321, label %324

321:                                              ; preds = %318
  %322 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %322)
          to label %323 unwind label %304

323:                                              ; preds = %321
  store i32 1, ptr %13, align 4
  br label %809

324:                                              ; preds = %318
  %325 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %325)
          to label %327 unwind label %304

327:                                              ; preds = %324
  %328 = load ptr, ptr %326, align 8, !tbaa !13
  %329 = getelementptr inbounds ptr, ptr %328, i64 3
  %330 = load ptr, ptr %329, align 8
  %331 = invoke noundef i32 %330(ptr noundef nonnull align 8 dereferenceable(8) %326)
          to label %332 unwind label %304

332:                                              ; preds = %327
  %333 = icmp eq i32 %331, 0
  br i1 %333, label %334, label %381

334:                                              ; preds = %332
  %335 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %335)
          to label %337 unwind label %304

337:                                              ; preds = %334
  %338 = load ptr, ptr %336, align 8, !tbaa !13
  %339 = getelementptr inbounds ptr, ptr %338, i64 3
  %340 = load ptr, ptr %339, align 8
  %341 = invoke noundef i32 %340(ptr noundef nonnull align 8 dereferenceable(8) %336)
          to label %342 unwind label %304

342:                                              ; preds = %337
  %343 = icmp eq i32 %341, 32
  br i1 %343, label %344, label %370

344:                                              ; preds = %342
  %345 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %346 unwind label %304

346:                                              ; preds = %344
  %347 = load double, ptr %16, align 8, !tbaa !15
  %348 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %348)
          to label %350 unwind label %354

350:                                              ; preds = %346
  %351 = icmp eq ptr %349, null
  br i1 %351, label %358, label %352

352:                                              ; preds = %350
  %353 = call ptr @__dynamic_cast(ptr %349, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %359

354:                                              ; preds = %362, %359, %346
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %7, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %345, i64 noundef 16) #10
  br label %811

358:                                              ; preds = %350
  br label %359

359:                                              ; preds = %358, %352
  %360 = phi ptr [ %353, %352 ], [ null, %358 ]
  %361 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %360)
          to label %362 unwind label %354

362:                                              ; preds = %359
  %363 = fmul double %347, %361
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %345, double noundef %363)
          to label %364 unwind label %354

364:                                              ; preds = %362
  %365 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %366 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %365)
          to label %367 unwind label %304

367:                                              ; preds = %364
  %368 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %345, ptr noundef nonnull align 8 dereferenceable(32) %368)
          to label %369 unwind label %304

369:                                              ; preds = %367
  store i32 1, ptr %13, align 4
  br label %809

370:                                              ; preds = %342
  %371 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %372 unwind label %304

372:                                              ; preds = %370
  %373 = load double, ptr %16, align 8, !tbaa !15
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %371, double noundef %373)
          to label %374 unwind label %377

374:                                              ; preds = %372
  %375 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %371, ptr noundef nonnull align 8 dereferenceable(32) %375)
          to label %376 unwind label %304

376:                                              ; preds = %374
  store i32 1, ptr %13, align 4
  br label %809

377:                                              ; preds = %372
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %7, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %371, i64 noundef 16) #10
  br label %811

381:                                              ; preds = %332
  %382 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %382)
          to label %384 unwind label %304

384:                                              ; preds = %381
  %385 = load ptr, ptr %383, align 8, !tbaa !13
  %386 = getelementptr inbounds ptr, ptr %385, i64 3
  %387 = load ptr, ptr %386, align 8
  %388 = invoke noundef i32 %387(ptr noundef nonnull align 8 dereferenceable(8) %383)
          to label %389 unwind label %304

389:                                              ; preds = %384
  %390 = icmp eq i32 %388, 0
  br i1 %390, label %391, label %438

391:                                              ; preds = %389
  %392 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %393 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %392)
          to label %394 unwind label %304

394:                                              ; preds = %391
  %395 = load ptr, ptr %393, align 8, !tbaa !13
  %396 = getelementptr inbounds ptr, ptr %395, i64 3
  %397 = load ptr, ptr %396, align 8
  %398 = invoke noundef i32 %397(ptr noundef nonnull align 8 dereferenceable(8) %393)
          to label %399 unwind label %304

399:                                              ; preds = %394
  %400 = icmp eq i32 %398, 32
  br i1 %400, label %401, label %427

401:                                              ; preds = %399
  %402 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %403 unwind label %304

403:                                              ; preds = %401
  %404 = load double, ptr %17, align 8, !tbaa !15
  %405 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %406 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %405)
          to label %407 unwind label %411

407:                                              ; preds = %403
  %408 = icmp eq ptr %406, null
  br i1 %408, label %415, label %409

409:                                              ; preds = %407
  %410 = call ptr @__dynamic_cast(ptr %406, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %416

411:                                              ; preds = %419, %416, %403
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %7, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %402, i64 noundef 16) #10
  br label %811

415:                                              ; preds = %407
  br label %416

416:                                              ; preds = %415, %409
  %417 = phi ptr [ %410, %409 ], [ null, %415 ]
  %418 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %417)
          to label %419 unwind label %411

419:                                              ; preds = %416
  %420 = fmul double %404, %418
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %402, double noundef %420)
          to label %421 unwind label %411

421:                                              ; preds = %419
  %422 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %423 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %422)
          to label %424 unwind label %304

424:                                              ; preds = %421
  %425 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %423, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %402, ptr noundef nonnull align 8 dereferenceable(32) %425)
          to label %426 unwind label %304

426:                                              ; preds = %424
  store i32 1, ptr %13, align 4
  br label %809

427:                                              ; preds = %399
  %428 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %429 unwind label %304

429:                                              ; preds = %427
  %430 = load double, ptr %17, align 8, !tbaa !15
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %428, double noundef %430)
          to label %431 unwind label %434

431:                                              ; preds = %429
  %432 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %428, ptr noundef nonnull align 8 dereferenceable(32) %432)
          to label %433 unwind label %304

433:                                              ; preds = %431
  store i32 1, ptr %13, align 4
  br label %809

434:                                              ; preds = %429
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %7, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %428, i64 noundef 16) #10
  br label %811

438:                                              ; preds = %389
  %439 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %439)
          to label %441 unwind label %304

441:                                              ; preds = %438
  %442 = load ptr, ptr %440, align 8, !tbaa !13
  %443 = getelementptr inbounds ptr, ptr %442, i64 3
  %444 = load ptr, ptr %443, align 8
  %445 = invoke noundef i32 %444(ptr noundef nonnull align 8 dereferenceable(8) %440)
          to label %446 unwind label %304

446:                                              ; preds = %441
  %447 = icmp eq i32 %445, 8
  br i1 %447, label %448, label %475

448:                                              ; preds = %446
  %449 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %449)
          to label %451 unwind label %304

451:                                              ; preds = %448
  %452 = load ptr, ptr %450, align 8, !tbaa !13
  %453 = getelementptr inbounds ptr, ptr %452, i64 3
  %454 = load ptr, ptr %453, align 8
  %455 = invoke noundef i32 %454(ptr noundef nonnull align 8 dereferenceable(8) %450)
          to label %456 unwind label %304

456:                                              ; preds = %451
  %457 = icmp eq i32 %455, 8
  br i1 %457, label %458, label %475

458:                                              ; preds = %456
  %459 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %460 unwind label %304

460:                                              ; preds = %458
  invoke void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %459)
          to label %461 unwind label %471

461:                                              ; preds = %460
  %462 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %463 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %462)
          to label %464 unwind label %304

464:                                              ; preds = %461
  %465 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %463, i64 noundef 0) #8
  %466 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %467 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %466)
          to label %468 unwind label %304

468:                                              ; preds = %464
  %469 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %467, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %459, ptr noundef nonnull align 8 dereferenceable(32) %465, ptr noundef nonnull align 8 dereferenceable(32) %469)
          to label %470 unwind label %304

470:                                              ; preds = %468
  store i32 1, ptr %13, align 4
  br label %809

471:                                              ; preds = %460
  %472 = landingpad { ptr, i32 }
          cleanup
  %473 = extractvalue { ptr, i32 } %472, 0
  store ptr %473, ptr %7, align 8
  %474 = extractvalue { ptr, i32 } %472, 1
  store i32 %474, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %459, i64 noundef 8) #10
  br label %811

475:                                              ; preds = %456, %446
  %476 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %476)
          to label %478 unwind label %304

478:                                              ; preds = %475
  %479 = load ptr, ptr %477, align 8, !tbaa !13
  %480 = getelementptr inbounds ptr, ptr %479, i64 3
  %481 = load ptr, ptr %480, align 8
  %482 = invoke noundef i32 %481(ptr noundef nonnull align 8 dereferenceable(8) %477)
          to label %483 unwind label %304

483:                                              ; preds = %478
  %484 = icmp eq i32 %482, 8
  br i1 %484, label %485, label %541

485:                                              ; preds = %483
  %486 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %486)
          to label %488 unwind label %304

488:                                              ; preds = %485
  %489 = load ptr, ptr %487, align 8, !tbaa !13
  %490 = getelementptr inbounds ptr, ptr %489, i64 3
  %491 = load ptr, ptr %490, align 8
  %492 = invoke noundef i32 %491(ptr noundef nonnull align 8 dereferenceable(8) %487)
          to label %493 unwind label %304

493:                                              ; preds = %488
  %494 = icmp eq i32 %492, 32
  br i1 %494, label %495, label %541

495:                                              ; preds = %493
  %496 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %497 unwind label %304

497:                                              ; preds = %495
  invoke void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %496)
          to label %498 unwind label %511

498:                                              ; preds = %497
  %499 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %500 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %499)
          to label %501 unwind label %304

501:                                              ; preds = %498
  %502 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %500, i64 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #8
  %503 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %504 unwind label %515

504:                                              ; preds = %501
  %505 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %506 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %505)
          to label %507 unwind label %519

507:                                              ; preds = %504
  %508 = icmp eq ptr %506, null
  br i1 %508, label %523, label %509

509:                                              ; preds = %507
  %510 = call ptr @__dynamic_cast(ptr %506, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %524

511:                                              ; preds = %497
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %7, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %496, i64 noundef 8) #10
  br label %811

515:                                              ; preds = %532, %529, %501
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %7, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %8, align 4
  br label %540

519:                                              ; preds = %527, %524, %504
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %7, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %503, i64 noundef 16) #10
  br label %540

523:                                              ; preds = %507
  br label %524

524:                                              ; preds = %523, %509
  %525 = phi ptr [ %510, %509 ], [ null, %523 ]
  %526 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %525)
          to label %527 unwind label %519

527:                                              ; preds = %524
  %528 = fneg double %526
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %503, double noundef %528)
          to label %529 unwind label %519

529:                                              ; preds = %527
  %530 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %531 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %530)
          to label %532 unwind label %515

532:                                              ; preds = %529
  %533 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %531, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %503, ptr noundef nonnull align 8 dereferenceable(32) %533)
          to label %534 unwind label %515

534:                                              ; preds = %532
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %496, ptr noundef nonnull align 8 dereferenceable(32) %502, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %535 unwind label %536

535:                                              ; preds = %534
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  store i32 1, ptr %13, align 4
  br label %809

536:                                              ; preds = %534
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %7, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %8, align 4
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %540

540:                                              ; preds = %536, %519, %515
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  br label %811

541:                                              ; preds = %493, %483
  %542 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %542)
          to label %544 unwind label %304

544:                                              ; preds = %541
  %545 = load ptr, ptr %543, align 8, !tbaa !13
  %546 = getelementptr inbounds ptr, ptr %545, i64 3
  %547 = load ptr, ptr %546, align 8
  %548 = invoke noundef i32 %547(ptr noundef nonnull align 8 dereferenceable(8) %543)
          to label %549 unwind label %304

549:                                              ; preds = %544
  %550 = icmp eq i32 %548, 8
  br i1 %550, label %551, label %607

551:                                              ; preds = %549
  %552 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %553 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %552)
          to label %554 unwind label %304

554:                                              ; preds = %551
  %555 = load ptr, ptr %553, align 8, !tbaa !13
  %556 = getelementptr inbounds ptr, ptr %555, i64 3
  %557 = load ptr, ptr %556, align 8
  %558 = invoke noundef i32 %557(ptr noundef nonnull align 8 dereferenceable(8) %553)
          to label %559 unwind label %304

559:                                              ; preds = %554
  %560 = icmp eq i32 %558, 32
  br i1 %560, label %561, label %607

561:                                              ; preds = %559
  %562 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %563 unwind label %304

563:                                              ; preds = %561
  invoke void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %562)
          to label %564 unwind label %573

564:                                              ; preds = %563
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  %565 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %566 unwind label %577

566:                                              ; preds = %564
  %567 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %568 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %567)
          to label %569 unwind label %581

569:                                              ; preds = %566
  %570 = icmp eq ptr %568, null
  br i1 %570, label %585, label %571

571:                                              ; preds = %569
  %572 = call ptr @__dynamic_cast(ptr %568, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %586

573:                                              ; preds = %563
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %7, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %562, i64 noundef 8) #10
  br label %811

577:                                              ; preds = %594, %591, %564
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %7, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %8, align 4
  br label %606

581:                                              ; preds = %589, %586, %566
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %7, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %565, i64 noundef 16) #10
  br label %606

585:                                              ; preds = %569
  br label %586

586:                                              ; preds = %585, %571
  %587 = phi ptr [ %572, %571 ], [ null, %585 ]
  %588 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %587)
          to label %589 unwind label %581

589:                                              ; preds = %586
  %590 = fneg double %588
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %565, double noundef %590)
          to label %591 unwind label %581

591:                                              ; preds = %589
  %592 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %593 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %592)
          to label %594 unwind label %577

594:                                              ; preds = %591
  %595 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %593, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %565, ptr noundef nonnull align 8 dereferenceable(32) %595)
          to label %596 unwind label %577

596:                                              ; preds = %594
  %597 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %598 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %597)
          to label %599 unwind label %602

599:                                              ; preds = %596
  %600 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %598, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %562, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %600)
          to label %601 unwind label %602

601:                                              ; preds = %599
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  store i32 1, ptr %13, align 4
  br label %809

602:                                              ; preds = %599, %596
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %7, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %8, align 4
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %606

606:                                              ; preds = %602, %581, %577
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %811

607:                                              ; preds = %559, %549
  %608 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %608)
          to label %610 unwind label %304

610:                                              ; preds = %607
  %611 = load ptr, ptr %609, align 8, !tbaa !13
  %612 = getelementptr inbounds ptr, ptr %611, i64 3
  %613 = load ptr, ptr %612, align 8
  %614 = invoke noundef i32 %613(ptr noundef nonnull align 8 dereferenceable(8) %609)
          to label %615 unwind label %304

615:                                              ; preds = %610
  %616 = icmp eq i32 %614, 8
  br i1 %616, label %617, label %648

617:                                              ; preds = %615
  %618 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %619 unwind label %304

619:                                              ; preds = %617
  invoke void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %618)
          to label %620 unwind label %631

620:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #8
  %621 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %622 unwind label %635

622:                                              ; preds = %620
  invoke void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %621)
          to label %623 unwind label %639

623:                                              ; preds = %622
  %624 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %625 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %624)
          to label %626 unwind label %635

626:                                              ; preds = %623
  %627 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %625, i64 noundef 0) #8
  %628 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef %621, ptr noundef nonnull align 8 dereferenceable(32) %627, ptr noundef nonnull align 8 dereferenceable(32) %628)
          to label %629 unwind label %635

629:                                              ; preds = %626
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %618, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %630 unwind label %643

630:                                              ; preds = %629
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  store i32 1, ptr %13, align 4
  br label %809

631:                                              ; preds = %619
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %7, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %618, i64 noundef 8) #10
  br label %811

635:                                              ; preds = %626, %623, %620
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %7, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %8, align 4
  br label %647

639:                                              ; preds = %622
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %7, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %621, i64 noundef 8) #10
  br label %647

643:                                              ; preds = %629
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %7, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %8, align 4
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %647

647:                                              ; preds = %643, %639, %635
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  br label %811

648:                                              ; preds = %615
  %649 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %649)
          to label %651 unwind label %304

651:                                              ; preds = %648
  %652 = load ptr, ptr %650, align 8, !tbaa !13
  %653 = getelementptr inbounds ptr, ptr %652, i64 3
  %654 = load ptr, ptr %653, align 8
  %655 = invoke noundef i32 %654(ptr noundef nonnull align 8 dereferenceable(8) %650)
          to label %656 unwind label %304

656:                                              ; preds = %651
  %657 = icmp eq i32 %655, 8
  br i1 %657, label %658, label %689

658:                                              ; preds = %656
  %659 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %660 unwind label %304

660:                                              ; preds = %658
  invoke void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %659)
          to label %661 unwind label %672

661:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  %662 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %663 unwind label %676

663:                                              ; preds = %661
  invoke void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %662)
          to label %664 unwind label %680

664:                                              ; preds = %663
  %665 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %666 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %667 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %666)
          to label %668 unwind label %676

668:                                              ; preds = %664
  %669 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %667, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %662, ptr noundef nonnull align 8 dereferenceable(32) %665, ptr noundef nonnull align 8 dereferenceable(32) %669)
          to label %670 unwind label %676

670:                                              ; preds = %668
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %659, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %671 unwind label %684

671:                                              ; preds = %670
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  store i32 1, ptr %13, align 4
  br label %809

672:                                              ; preds = %660
  %673 = landingpad { ptr, i32 }
          cleanup
  %674 = extractvalue { ptr, i32 } %673, 0
  store ptr %674, ptr %7, align 8
  %675 = extractvalue { ptr, i32 } %673, 1
  store i32 %675, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %659, i64 noundef 8) #10
  br label %811

676:                                              ; preds = %668, %664, %661
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %7, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %8, align 4
  br label %688

680:                                              ; preds = %663
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %7, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %662, i64 noundef 8) #10
  br label %688

684:                                              ; preds = %670
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %7, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %8, align 4
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %688

688:                                              ; preds = %684, %680, %676
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  br label %811

689:                                              ; preds = %656
  %690 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %691 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %690)
          to label %692 unwind label %304

692:                                              ; preds = %689
  %693 = load ptr, ptr %691, align 8, !tbaa !13
  %694 = getelementptr inbounds ptr, ptr %693, i64 3
  %695 = load ptr, ptr %694, align 8
  %696 = invoke noundef i32 %695(ptr noundef nonnull align 8 dereferenceable(8) %691)
          to label %697 unwind label %304

697:                                              ; preds = %692
  %698 = icmp eq i32 %696, 30
  br i1 %698, label %699, label %713

699:                                              ; preds = %697
  %700 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %701 unwind label %304

701:                                              ; preds = %699
  invoke void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %700)
          to label %702 unwind label %709

702:                                              ; preds = %701
  %703 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %704 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %705 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %704)
          to label %706 unwind label %304

706:                                              ; preds = %702
  %707 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %705, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %700, ptr noundef nonnull align 8 dereferenceable(32) %703, ptr noundef nonnull align 8 dereferenceable(32) %707)
          to label %708 unwind label %304

708:                                              ; preds = %706
  store i32 1, ptr %13, align 4
  br label %809

709:                                              ; preds = %701
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %7, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %700, i64 noundef 8) #10
  br label %811

713:                                              ; preds = %697
  %714 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %715 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %714)
          to label %716 unwind label %304

716:                                              ; preds = %713
  %717 = load ptr, ptr %715, align 8, !tbaa !13
  %718 = getelementptr inbounds ptr, ptr %717, i64 3
  %719 = load ptr, ptr %718, align 8
  %720 = invoke noundef i32 %719(ptr noundef nonnull align 8 dereferenceable(8) %715)
          to label %721 unwind label %304

721:                                              ; preds = %716
  %722 = icmp eq i32 %720, 30
  br i1 %722, label %723, label %737

723:                                              ; preds = %721
  %724 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %725 unwind label %304

725:                                              ; preds = %723
  invoke void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %724)
          to label %726 unwind label %733

726:                                              ; preds = %725
  %727 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %728 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %729 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %728)
          to label %730 unwind label %304

730:                                              ; preds = %726
  %731 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %729, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %724, ptr noundef nonnull align 8 dereferenceable(32) %727, ptr noundef nonnull align 8 dereferenceable(32) %731)
          to label %732 unwind label %304

732:                                              ; preds = %730
  store i32 1, ptr %13, align 4
  br label %809

733:                                              ; preds = %725
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %7, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %724, i64 noundef 8) #10
  br label %811

737:                                              ; preds = %721
  %738 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %739 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %740 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %738, ptr noundef nonnull align 8 dereferenceable(32) %739)
          to label %741 unwind label %304

741:                                              ; preds = %737
  br i1 %740, label %742, label %752

742:                                              ; preds = %741
  %743 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %744 unwind label %304

744:                                              ; preds = %742
  invoke void @_ZN6Lepton9Operation6SquareC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %743)
          to label %745 unwind label %748

745:                                              ; preds = %744
  %746 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %743, ptr noundef nonnull align 8 dereferenceable(32) %746)
          to label %747 unwind label %304

747:                                              ; preds = %745
  store i32 1, ptr %13, align 4
  br label %809

748:                                              ; preds = %744
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %7, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %743, i64 noundef 8) #10
  br label %811

752:                                              ; preds = %741
  %753 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %754 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %753)
          to label %755 unwind label %304

755:                                              ; preds = %752
  %756 = load ptr, ptr %754, align 8, !tbaa !13
  %757 = getelementptr inbounds ptr, ptr %756, i64 3
  %758 = load ptr, ptr %757, align 8
  %759 = invoke noundef i32 %758(ptr noundef nonnull align 8 dereferenceable(8) %754)
          to label %760 unwind label %304

760:                                              ; preds = %755
  %761 = icmp eq i32 %759, 28
  br i1 %761, label %762, label %780

762:                                              ; preds = %760
  %763 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %764 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %763)
          to label %765 unwind label %304

765:                                              ; preds = %762
  %766 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %764, i64 noundef 0) #8
  %767 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %768 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %766, ptr noundef nonnull align 8 dereferenceable(32) %767)
          to label %769 unwind label %304

769:                                              ; preds = %765
  br i1 %768, label %770, label %780

770:                                              ; preds = %769
  %771 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %772 unwind label %304

772:                                              ; preds = %770
  invoke void @_ZN6Lepton9Operation4CubeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %771)
          to label %773 unwind label %776

773:                                              ; preds = %772
  %774 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %771, ptr noundef nonnull align 8 dereferenceable(32) %774)
          to label %775 unwind label %304

775:                                              ; preds = %773
  store i32 1, ptr %13, align 4
  br label %809

776:                                              ; preds = %772
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %7, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %771, i64 noundef 8) #10
  br label %811

780:                                              ; preds = %769, %760
  %781 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %781)
          to label %783 unwind label %304

783:                                              ; preds = %780
  %784 = load ptr, ptr %782, align 8, !tbaa !13
  %785 = getelementptr inbounds ptr, ptr %784, i64 3
  %786 = load ptr, ptr %785, align 8
  %787 = invoke noundef i32 %786(ptr noundef nonnull align 8 dereferenceable(8) %782)
          to label %788 unwind label %304

788:                                              ; preds = %783
  %789 = icmp eq i32 %787, 28
  br i1 %789, label %790, label %808

790:                                              ; preds = %788
  %791 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %792 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %791)
          to label %793 unwind label %304

793:                                              ; preds = %790
  %794 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %792, i64 noundef 0) #8
  %795 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %796 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %794, ptr noundef nonnull align 8 dereferenceable(32) %795)
          to label %797 unwind label %304

797:                                              ; preds = %793
  br i1 %796, label %798, label %808

798:                                              ; preds = %797
  %799 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %800 unwind label %304

800:                                              ; preds = %798
  invoke void @_ZN6Lepton9Operation4CubeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %799)
          to label %801 unwind label %804

801:                                              ; preds = %800
  %802 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %799, ptr noundef nonnull align 8 dereferenceable(32) %802)
          to label %803 unwind label %304

803:                                              ; preds = %801
  store i32 1, ptr %13, align 4
  br label %809

804:                                              ; preds = %800
  %805 = landingpad { ptr, i32 }
          cleanup
  %806 = extractvalue { ptr, i32 } %805, 0
  store ptr %806, ptr %7, align 8
  %807 = extractvalue { ptr, i32 } %805, 1
  store i32 %807, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %799, i64 noundef 8) #10
  br label %811

808:                                              ; preds = %797, %788
  store i32 5, ptr %13, align 4
  br label %809

809:                                              ; preds = %808, %803, %775, %747, %732, %708, %671, %630, %601, %535, %470, %433, %426, %376, %369, %323, %317, %299
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  %810 = load i32, ptr %13, align 4
  switch i32 %810, label %1476 [
    i32 5, label %1466
  ]

811:                                              ; preds = %804, %776, %748, %733, %709, %688, %672, %647, %631, %606, %573, %540, %511, %471, %434, %411, %377, %354, %308, %304
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %812

812:                                              ; preds = %811, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %1477

813:                                              ; preds = %76
  %814 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %815 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %816 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %814, ptr noundef nonnull align 8 dereferenceable(32) %815)
          to label %817 unwind label %77

817:                                              ; preds = %813
  br i1 %816, label %818, label %827

818:                                              ; preds = %817
  %819 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %820 unwind label %77

820:                                              ; preds = %818
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %819, double noundef 1.000000e+00)
          to label %821 unwind label %823

821:                                              ; preds = %820
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %819)
          to label %822 unwind label %77

822:                                              ; preds = %821
  store i32 1, ptr %13, align 4
  br label %1476

823:                                              ; preds = %820
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %7, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %819, i64 noundef 16) #10
  br label %1477

827:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %828 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %829 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %828)
          to label %830 unwind label %838

830:                                              ; preds = %827
  store double %829, ptr %22, align 8, !tbaa !15
  %831 = load double, ptr %22, align 8, !tbaa !15
  %832 = fcmp oeq double %831, 0.000000e+00
  br i1 %832, label %833, label %846

833:                                              ; preds = %830
  %834 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %835 unwind label %838

835:                                              ; preds = %833
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %834, double noundef 0.000000e+00)
          to label %836 unwind label %842

836:                                              ; preds = %835
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %834)
          to label %837 unwind label %838

837:                                              ; preds = %836
  store i32 1, ptr %13, align 4
  br label %1142

838:                                              ; preds = %852, %849, %836, %833, %827
  %839 = landingpad { ptr, i32 }
          cleanup
  %840 = extractvalue { ptr, i32 } %839, 0
  store ptr %840, ptr %7, align 8
  %841 = extractvalue { ptr, i32 } %839, 1
  store i32 %841, ptr %8, align 4
  br label %1144

842:                                              ; preds = %835
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %7, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %834, i64 noundef 16) #10
  br label %1144

846:                                              ; preds = %830
  %847 = load double, ptr %22, align 8, !tbaa !15
  %848 = fcmp oeq double %847, 1.000000e+00
  br i1 %848, label %849, label %859

849:                                              ; preds = %846
  %850 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %851 unwind label %838

851:                                              ; preds = %849
  invoke void @_ZN6Lepton9Operation10ReciprocalC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %850)
          to label %852 unwind label %855

852:                                              ; preds = %851
  %853 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %850, ptr noundef nonnull align 8 dereferenceable(32) %853)
          to label %854 unwind label %838

854:                                              ; preds = %852
  store i32 1, ptr %13, align 4
  br label %1142

855:                                              ; preds = %851
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %7, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %850, i64 noundef 8) #10
  br label %1144

859:                                              ; preds = %846
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %860 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %861 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %860)
          to label %862 unwind label %868

862:                                              ; preds = %859
  store double %861, ptr %23, align 8, !tbaa !15
  %863 = load double, ptr %23, align 8, !tbaa !15
  %864 = fcmp oeq double %863, 1.000000e+00
  br i1 %864, label %865, label %872

865:                                              ; preds = %862
  %866 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %866)
          to label %867 unwind label %868

867:                                              ; preds = %865
  store i32 1, ptr %13, align 4
  br label %1140

868:                                              ; preds = %1132, %1128, %1125, %1118, %1115, %1084, %1077, %1074, %1043, %1036, %1033, %987, %980, %977, %970, %967, %960, %956, %953, %950, %943, %940, %933, %930, %923, %918, %915, %912, %892, %885, %882, %875, %872, %865, %859
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %7, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %8, align 4
  br label %1141

872:                                              ; preds = %862
  %873 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %874 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %873)
          to label %875 unwind label %868

875:                                              ; preds = %872
  %876 = load ptr, ptr %874, align 8, !tbaa !13
  %877 = getelementptr inbounds ptr, ptr %876, i64 3
  %878 = load ptr, ptr %877, align 8
  %879 = invoke noundef i32 %878(ptr noundef nonnull align 8 dereferenceable(8) %874)
          to label %880 unwind label %868

880:                                              ; preds = %875
  %881 = icmp eq i32 %879, 0
  br i1 %881, label %882, label %930

882:                                              ; preds = %880
  %883 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %884 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %883)
          to label %885 unwind label %868

885:                                              ; preds = %882
  %886 = load ptr, ptr %884, align 8, !tbaa !13
  %887 = getelementptr inbounds ptr, ptr %886, i64 3
  %888 = load ptr, ptr %887, align 8
  %889 = invoke noundef i32 %888(ptr noundef nonnull align 8 dereferenceable(8) %884)
          to label %890 unwind label %868

890:                                              ; preds = %885
  %891 = icmp eq i32 %889, 32
  br i1 %891, label %892, label %918

892:                                              ; preds = %890
  %893 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %894 unwind label %868

894:                                              ; preds = %892
  %895 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %896 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %895)
          to label %897 unwind label %901

897:                                              ; preds = %894
  %898 = icmp eq ptr %896, null
  br i1 %898, label %905, label %899

899:                                              ; preds = %897
  %900 = call ptr @__dynamic_cast(ptr %896, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %906

901:                                              ; preds = %909, %906, %894
  %902 = landingpad { ptr, i32 }
          cleanup
  %903 = extractvalue { ptr, i32 } %902, 0
  store ptr %903, ptr %7, align 8
  %904 = extractvalue { ptr, i32 } %902, 1
  store i32 %904, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %893, i64 noundef 16) #10
  br label %1141

905:                                              ; preds = %897
  br label %906

906:                                              ; preds = %905, %899
  %907 = phi ptr [ %900, %899 ], [ null, %905 ]
  %908 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %907)
          to label %909 unwind label %901

909:                                              ; preds = %906
  %910 = load double, ptr %23, align 8, !tbaa !15
  %911 = fdiv double %908, %910
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %893, double noundef %911)
          to label %912 unwind label %901

912:                                              ; preds = %909
  %913 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %914 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %913)
          to label %915 unwind label %868

915:                                              ; preds = %912
  %916 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %914, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %893, ptr noundef nonnull align 8 dereferenceable(32) %916)
          to label %917 unwind label %868

917:                                              ; preds = %915
  store i32 1, ptr %13, align 4
  br label %1140

918:                                              ; preds = %890
  %919 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %920 unwind label %868

920:                                              ; preds = %918
  %921 = load double, ptr %23, align 8, !tbaa !15
  %922 = fdiv double 1.000000e+00, %921
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %919, double noundef %922)
          to label %923 unwind label %926

923:                                              ; preds = %920
  %924 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %919, ptr noundef nonnull align 8 dereferenceable(32) %924)
          to label %925 unwind label %868

925:                                              ; preds = %923
  store i32 1, ptr %13, align 4
  br label %1140

926:                                              ; preds = %920
  %927 = landingpad { ptr, i32 }
          cleanup
  %928 = extractvalue { ptr, i32 } %927, 0
  store ptr %928, ptr %7, align 8
  %929 = extractvalue { ptr, i32 } %927, 1
  store i32 %929, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %919, i64 noundef 16) #10
  br label %1141

930:                                              ; preds = %880
  %931 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %932 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %931)
          to label %933 unwind label %868

933:                                              ; preds = %930
  %934 = load ptr, ptr %932, align 8, !tbaa !13
  %935 = getelementptr inbounds ptr, ptr %934, i64 3
  %936 = load ptr, ptr %935, align 8
  %937 = invoke noundef i32 %936(ptr noundef nonnull align 8 dereferenceable(8) %932)
          to label %938 unwind label %868

938:                                              ; preds = %933
  %939 = icmp eq i32 %937, 8
  br i1 %939, label %940, label %967

940:                                              ; preds = %938
  %941 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %942 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %941)
          to label %943 unwind label %868

943:                                              ; preds = %940
  %944 = load ptr, ptr %942, align 8, !tbaa !13
  %945 = getelementptr inbounds ptr, ptr %944, i64 3
  %946 = load ptr, ptr %945, align 8
  %947 = invoke noundef i32 %946(ptr noundef nonnull align 8 dereferenceable(8) %942)
          to label %948 unwind label %868

948:                                              ; preds = %943
  %949 = icmp eq i32 %947, 8
  br i1 %949, label %950, label %967

950:                                              ; preds = %948
  %951 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %952 unwind label %868

952:                                              ; preds = %950
  invoke void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %951)
          to label %953 unwind label %963

953:                                              ; preds = %952
  %954 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %955 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %954)
          to label %956 unwind label %868

956:                                              ; preds = %953
  %957 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %955, i64 noundef 0) #8
  %958 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %959 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %958)
          to label %960 unwind label %868

960:                                              ; preds = %956
  %961 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %959, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %951, ptr noundef nonnull align 8 dereferenceable(32) %957, ptr noundef nonnull align 8 dereferenceable(32) %961)
          to label %962 unwind label %868

962:                                              ; preds = %960
  store i32 1, ptr %13, align 4
  br label %1140

963:                                              ; preds = %952
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %7, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %951, i64 noundef 8) #10
  br label %1141

967:                                              ; preds = %948, %938
  %968 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %969 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %968)
          to label %970 unwind label %868

970:                                              ; preds = %967
  %971 = load ptr, ptr %969, align 8, !tbaa !13
  %972 = getelementptr inbounds ptr, ptr %971, i64 3
  %973 = load ptr, ptr %972, align 8
  %974 = invoke noundef i32 %973(ptr noundef nonnull align 8 dereferenceable(8) %969)
          to label %975 unwind label %868

975:                                              ; preds = %970
  %976 = icmp eq i32 %974, 8
  br i1 %976, label %977, label %1033

977:                                              ; preds = %975
  %978 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %979 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %978)
          to label %980 unwind label %868

980:                                              ; preds = %977
  %981 = load ptr, ptr %979, align 8, !tbaa !13
  %982 = getelementptr inbounds ptr, ptr %981, i64 3
  %983 = load ptr, ptr %982, align 8
  %984 = invoke noundef i32 %983(ptr noundef nonnull align 8 dereferenceable(8) %979)
          to label %985 unwind label %868

985:                                              ; preds = %980
  %986 = icmp eq i32 %984, 32
  br i1 %986, label %987, label %1033

987:                                              ; preds = %985
  %988 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %989 unwind label %868

989:                                              ; preds = %987
  invoke void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %988)
          to label %990 unwind label %999

990:                                              ; preds = %989
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  %991 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %992 unwind label %1003

992:                                              ; preds = %990
  %993 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %994 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %993)
          to label %995 unwind label %1007

995:                                              ; preds = %992
  %996 = icmp eq ptr %994, null
  br i1 %996, label %1011, label %997

997:                                              ; preds = %995
  %998 = call ptr @__dynamic_cast(ptr %994, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %1012

999:                                              ; preds = %989
  %1000 = landingpad { ptr, i32 }
          cleanup
  %1001 = extractvalue { ptr, i32 } %1000, 0
  store ptr %1001, ptr %7, align 8
  %1002 = extractvalue { ptr, i32 } %1000, 1
  store i32 %1002, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %988, i64 noundef 8) #10
  br label %1141

1003:                                             ; preds = %1020, %1017, %990
  %1004 = landingpad { ptr, i32 }
          cleanup
  %1005 = extractvalue { ptr, i32 } %1004, 0
  store ptr %1005, ptr %7, align 8
  %1006 = extractvalue { ptr, i32 } %1004, 1
  store i32 %1006, ptr %8, align 4
  br label %1032

1007:                                             ; preds = %1015, %1012, %992
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %7, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %991, i64 noundef 16) #10
  br label %1032

1011:                                             ; preds = %995
  br label %1012

1012:                                             ; preds = %1011, %997
  %1013 = phi ptr [ %998, %997 ], [ null, %1011 ]
  %1014 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %1013)
          to label %1015 unwind label %1007

1015:                                             ; preds = %1012
  %1016 = fneg double %1014
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %991, double noundef %1016)
          to label %1017 unwind label %1007

1017:                                             ; preds = %1015
  %1018 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1019 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1018)
          to label %1020 unwind label %1003

1020:                                             ; preds = %1017
  %1021 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1019, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef %991, ptr noundef nonnull align 8 dereferenceable(32) %1021)
          to label %1022 unwind label %1003

1022:                                             ; preds = %1020
  %1023 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %1024 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1023)
          to label %1025 unwind label %1028

1025:                                             ; preds = %1022
  %1026 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1024, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %988, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %1026)
          to label %1027 unwind label %1028

1027:                                             ; preds = %1025
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  store i32 1, ptr %13, align 4
  br label %1140

1028:                                             ; preds = %1025, %1022
  %1029 = landingpad { ptr, i32 }
          cleanup
  %1030 = extractvalue { ptr, i32 } %1029, 0
  store ptr %1030, ptr %7, align 8
  %1031 = extractvalue { ptr, i32 } %1029, 1
  store i32 %1031, ptr %8, align 4
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %1032

1032:                                             ; preds = %1028, %1007, %1003
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %1141

1033:                                             ; preds = %985, %975
  %1034 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1035 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1034)
          to label %1036 unwind label %868

1036:                                             ; preds = %1033
  %1037 = load ptr, ptr %1035, align 8, !tbaa !13
  %1038 = getelementptr inbounds ptr, ptr %1037, i64 3
  %1039 = load ptr, ptr %1038, align 8
  %1040 = invoke noundef i32 %1039(ptr noundef nonnull align 8 dereferenceable(8) %1035)
          to label %1041 unwind label %868

1041:                                             ; preds = %1036
  %1042 = icmp eq i32 %1040, 8
  br i1 %1042, label %1043, label %1074

1043:                                             ; preds = %1041
  %1044 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1045 unwind label %868

1045:                                             ; preds = %1043
  invoke void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1044)
          to label %1046 unwind label %1057

1046:                                             ; preds = %1045
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  %1047 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1048 unwind label %1061

1048:                                             ; preds = %1046
  invoke void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1047)
          to label %1049 unwind label %1065

1049:                                             ; preds = %1048
  %1050 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1051 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1050)
          to label %1052 unwind label %1061

1052:                                             ; preds = %1049
  %1053 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1051, i64 noundef 0) #8
  %1054 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %1047, ptr noundef nonnull align 8 dereferenceable(32) %1053, ptr noundef nonnull align 8 dereferenceable(32) %1054)
          to label %1055 unwind label %1061

1055:                                             ; preds = %1052
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1044, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1056 unwind label %1069

1056:                                             ; preds = %1055
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  store i32 1, ptr %13, align 4
  br label %1140

1057:                                             ; preds = %1045
  %1058 = landingpad { ptr, i32 }
          cleanup
  %1059 = extractvalue { ptr, i32 } %1058, 0
  store ptr %1059, ptr %7, align 8
  %1060 = extractvalue { ptr, i32 } %1058, 1
  store i32 %1060, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1044, i64 noundef 8) #10
  br label %1141

1061:                                             ; preds = %1052, %1049, %1046
  %1062 = landingpad { ptr, i32 }
          cleanup
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %7, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %8, align 4
  br label %1073

1065:                                             ; preds = %1048
  %1066 = landingpad { ptr, i32 }
          cleanup
  %1067 = extractvalue { ptr, i32 } %1066, 0
  store ptr %1067, ptr %7, align 8
  %1068 = extractvalue { ptr, i32 } %1066, 1
  store i32 %1068, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1047, i64 noundef 8) #10
  br label %1073

1069:                                             ; preds = %1055
  %1070 = landingpad { ptr, i32 }
          cleanup
  %1071 = extractvalue { ptr, i32 } %1070, 0
  store ptr %1071, ptr %7, align 8
  %1072 = extractvalue { ptr, i32 } %1070, 1
  store i32 %1072, ptr %8, align 4
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %1073

1073:                                             ; preds = %1069, %1065, %1061
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  br label %1141

1074:                                             ; preds = %1041
  %1075 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %1076 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1075)
          to label %1077 unwind label %868

1077:                                             ; preds = %1074
  %1078 = load ptr, ptr %1076, align 8, !tbaa !13
  %1079 = getelementptr inbounds ptr, ptr %1078, i64 3
  %1080 = load ptr, ptr %1079, align 8
  %1081 = invoke noundef i32 %1080(ptr noundef nonnull align 8 dereferenceable(8) %1076)
          to label %1082 unwind label %868

1082:                                             ; preds = %1077
  %1083 = icmp eq i32 %1081, 8
  br i1 %1083, label %1084, label %1115

1084:                                             ; preds = %1082
  %1085 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1086 unwind label %868

1086:                                             ; preds = %1084
  invoke void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1085)
          to label %1087 unwind label %1098

1087:                                             ; preds = %1086
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  %1088 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1089 unwind label %1102

1089:                                             ; preds = %1087
  invoke void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1088)
          to label %1090 unwind label %1106

1090:                                             ; preds = %1089
  %1091 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1092 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %1093 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1092)
          to label %1094 unwind label %1102

1094:                                             ; preds = %1090
  %1095 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1093, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef %1088, ptr noundef nonnull align 8 dereferenceable(32) %1091, ptr noundef nonnull align 8 dereferenceable(32) %1095)
          to label %1096 unwind label %1102

1096:                                             ; preds = %1094
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1085, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %1097 unwind label %1110

1097:                                             ; preds = %1096
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  store i32 1, ptr %13, align 4
  br label %1140

1098:                                             ; preds = %1086
  %1099 = landingpad { ptr, i32 }
          cleanup
  %1100 = extractvalue { ptr, i32 } %1099, 0
  store ptr %1100, ptr %7, align 8
  %1101 = extractvalue { ptr, i32 } %1099, 1
  store i32 %1101, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1085, i64 noundef 8) #10
  br label %1141

1102:                                             ; preds = %1094, %1090, %1087
  %1103 = landingpad { ptr, i32 }
          cleanup
  %1104 = extractvalue { ptr, i32 } %1103, 0
  store ptr %1104, ptr %7, align 8
  %1105 = extractvalue { ptr, i32 } %1103, 1
  store i32 %1105, ptr %8, align 4
  br label %1114

1106:                                             ; preds = %1089
  %1107 = landingpad { ptr, i32 }
          cleanup
  %1108 = extractvalue { ptr, i32 } %1107, 0
  store ptr %1108, ptr %7, align 8
  %1109 = extractvalue { ptr, i32 } %1107, 1
  store i32 %1109, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1088, i64 noundef 8) #10
  br label %1114

1110:                                             ; preds = %1096
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %7, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %8, align 4
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %1114

1114:                                             ; preds = %1110, %1106, %1102
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  br label %1141

1115:                                             ; preds = %1082
  %1116 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %1117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1116)
          to label %1118 unwind label %868

1118:                                             ; preds = %1115
  %1119 = load ptr, ptr %1117, align 8, !tbaa !13
  %1120 = getelementptr inbounds ptr, ptr %1119, i64 3
  %1121 = load ptr, ptr %1120, align 8
  %1122 = invoke noundef i32 %1121(ptr noundef nonnull align 8 dereferenceable(8) %1117)
          to label %1123 unwind label %868

1123:                                             ; preds = %1118
  %1124 = icmp eq i32 %1122, 30
  br i1 %1124, label %1125, label %1139

1125:                                             ; preds = %1123
  %1126 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1127 unwind label %868

1127:                                             ; preds = %1125
  invoke void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1126)
          to label %1128 unwind label %1135

1128:                                             ; preds = %1127
  %1129 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1130 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %1131 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1130)
          to label %1132 unwind label %868

1132:                                             ; preds = %1128
  %1133 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1131, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1126, ptr noundef nonnull align 8 dereferenceable(32) %1129, ptr noundef nonnull align 8 dereferenceable(32) %1133)
          to label %1134 unwind label %868

1134:                                             ; preds = %1132
  store i32 1, ptr %13, align 4
  br label %1140

1135:                                             ; preds = %1127
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %7, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1126, i64 noundef 8) #10
  br label %1141

1139:                                             ; preds = %1123
  store i32 5, ptr %13, align 4
  br label %1140

1140:                                             ; preds = %1139, %1134, %1097, %1056, %1027, %962, %925, %917, %867
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %1142

1141:                                             ; preds = %1135, %1114, %1098, %1073, %1057, %1032, %999, %963, %926, %901, %868
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %1144

1142:                                             ; preds = %1140, %854, %837
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  %1143 = load i32, ptr %13, align 4
  switch i32 %1143, label %1476 [
    i32 5, label %1466
  ]

1144:                                             ; preds = %1141, %855, %842, %838
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %1477

1145:                                             ; preds = %76
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %1146 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1147 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %1146)
          to label %1148 unwind label %1156

1148:                                             ; preds = %1145
  store double %1147, ptr %27, align 8, !tbaa !15
  %1149 = load double, ptr %27, align 8, !tbaa !15
  %1150 = fcmp oeq double %1149, 0.000000e+00
  br i1 %1150, label %1151, label %1164

1151:                                             ; preds = %1148
  %1152 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %1153 unwind label %1156

1153:                                             ; preds = %1151
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %1152, double noundef 0.000000e+00)
          to label %1154 unwind label %1160

1154:                                             ; preds = %1153
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1152)
          to label %1155 unwind label %1156

1155:                                             ; preds = %1154
  store i32 1, ptr %13, align 4
  br label %1271

1156:                                             ; preds = %1170, %1167, %1154, %1151, %1145
  %1157 = landingpad { ptr, i32 }
          cleanup
  %1158 = extractvalue { ptr, i32 } %1157, 0
  store ptr %1158, ptr %7, align 8
  %1159 = extractvalue { ptr, i32 } %1157, 1
  store i32 %1159, ptr %8, align 4
  br label %1273

1160:                                             ; preds = %1153
  %1161 = landingpad { ptr, i32 }
          cleanup
  %1162 = extractvalue { ptr, i32 } %1161, 0
  store ptr %1162, ptr %7, align 8
  %1163 = extractvalue { ptr, i32 } %1161, 1
  store i32 %1163, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1152, i64 noundef 16) #10
  br label %1273

1164:                                             ; preds = %1148
  %1165 = load double, ptr %27, align 8, !tbaa !15
  %1166 = fcmp oeq double %1165, 1.000000e+00
  br i1 %1166, label %1167, label %1176

1167:                                             ; preds = %1164
  %1168 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %1169 unwind label %1156

1169:                                             ; preds = %1167
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %1168, double noundef 1.000000e+00)
          to label %1170 unwind label %1172

1170:                                             ; preds = %1169
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1168)
          to label %1171 unwind label %1156

1171:                                             ; preds = %1170
  store i32 1, ptr %13, align 4
  br label %1271

1172:                                             ; preds = %1169
  %1173 = landingpad { ptr, i32 }
          cleanup
  %1174 = extractvalue { ptr, i32 } %1173, 0
  store ptr %1174, ptr %7, align 8
  %1175 = extractvalue { ptr, i32 } %1173, 1
  store i32 %1175, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1168, i64 noundef 16) #10
  br label %1273

1176:                                             ; preds = %1164
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %1177 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #8
  %1178 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %1177)
          to label %1179 unwind label %1187

1179:                                             ; preds = %1176
  store double %1178, ptr %28, align 8, !tbaa !15
  %1180 = load double, ptr %28, align 8, !tbaa !15
  %1181 = fcmp oeq double %1180, 0.000000e+00
  br i1 %1181, label %1182, label %1195

1182:                                             ; preds = %1179
  %1183 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %1184 unwind label %1187

1184:                                             ; preds = %1182
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %1183, double noundef 1.000000e+00)
          to label %1185 unwind label %1191

1185:                                             ; preds = %1184
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1183)
          to label %1186 unwind label %1187

1186:                                             ; preds = %1185
  store i32 1, ptr %13, align 4
  br label %1269

1187:                                             ; preds = %1261, %1257, %1246, %1243, %1233, %1230, %1220, %1217, %1207, %1204, %1198, %1185, %1182, %1176
  %1188 = landingpad { ptr, i32 }
          cleanup
  %1189 = extractvalue { ptr, i32 } %1188, 0
  store ptr %1189, ptr %7, align 8
  %1190 = extractvalue { ptr, i32 } %1188, 1
  store i32 %1190, ptr %8, align 4
  br label %1270

1191:                                             ; preds = %1184
  %1192 = landingpad { ptr, i32 }
          cleanup
  %1193 = extractvalue { ptr, i32 } %1192, 0
  store ptr %1193, ptr %7, align 8
  %1194 = extractvalue { ptr, i32 } %1192, 1
  store i32 %1194, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1183, i64 noundef 16) #10
  br label %1270

1195:                                             ; preds = %1179
  %1196 = load double, ptr %28, align 8, !tbaa !15
  %1197 = fcmp oeq double %1196, 1.000000e+00
  br i1 %1197, label %1198, label %1201

1198:                                             ; preds = %1195
  %1199 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1199)
          to label %1200 unwind label %1187

1200:                                             ; preds = %1198
  store i32 1, ptr %13, align 4
  br label %1269

1201:                                             ; preds = %1195
  %1202 = load double, ptr %28, align 8, !tbaa !15
  %1203 = fcmp oeq double %1202, -1.000000e+00
  br i1 %1203, label %1204, label %1214

1204:                                             ; preds = %1201
  %1205 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1206 unwind label %1187

1206:                                             ; preds = %1204
  invoke void @_ZN6Lepton9Operation10ReciprocalC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1205)
          to label %1207 unwind label %1210

1207:                                             ; preds = %1206
  %1208 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1205, ptr noundef nonnull align 8 dereferenceable(32) %1208)
          to label %1209 unwind label %1187

1209:                                             ; preds = %1207
  store i32 1, ptr %13, align 4
  br label %1269

1210:                                             ; preds = %1206
  %1211 = landingpad { ptr, i32 }
          cleanup
  %1212 = extractvalue { ptr, i32 } %1211, 0
  store ptr %1212, ptr %7, align 8
  %1213 = extractvalue { ptr, i32 } %1211, 1
  store i32 %1213, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1205, i64 noundef 8) #10
  br label %1270

1214:                                             ; preds = %1201
  %1215 = load double, ptr %28, align 8, !tbaa !15
  %1216 = fcmp oeq double %1215, 2.000000e+00
  br i1 %1216, label %1217, label %1227

1217:                                             ; preds = %1214
  %1218 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1219 unwind label %1187

1219:                                             ; preds = %1217
  invoke void @_ZN6Lepton9Operation6SquareC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1218)
          to label %1220 unwind label %1223

1220:                                             ; preds = %1219
  %1221 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1218, ptr noundef nonnull align 8 dereferenceable(32) %1221)
          to label %1222 unwind label %1187

1222:                                             ; preds = %1220
  store i32 1, ptr %13, align 4
  br label %1269

1223:                                             ; preds = %1219
  %1224 = landingpad { ptr, i32 }
          cleanup
  %1225 = extractvalue { ptr, i32 } %1224, 0
  store ptr %1225, ptr %7, align 8
  %1226 = extractvalue { ptr, i32 } %1224, 1
  store i32 %1226, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1218, i64 noundef 8) #10
  br label %1270

1227:                                             ; preds = %1214
  %1228 = load double, ptr %28, align 8, !tbaa !15
  %1229 = fcmp oeq double %1228, 3.000000e+00
  br i1 %1229, label %1230, label %1240

1230:                                             ; preds = %1227
  %1231 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1232 unwind label %1187

1232:                                             ; preds = %1230
  invoke void @_ZN6Lepton9Operation4CubeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1231)
          to label %1233 unwind label %1236

1233:                                             ; preds = %1232
  %1234 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1231, ptr noundef nonnull align 8 dereferenceable(32) %1234)
          to label %1235 unwind label %1187

1235:                                             ; preds = %1233
  store i32 1, ptr %13, align 4
  br label %1269

1236:                                             ; preds = %1232
  %1237 = landingpad { ptr, i32 }
          cleanup
  %1238 = extractvalue { ptr, i32 } %1237, 0
  store ptr %1238, ptr %7, align 8
  %1239 = extractvalue { ptr, i32 } %1237, 1
  store i32 %1239, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1231, i64 noundef 8) #10
  br label %1270

1240:                                             ; preds = %1227
  %1241 = load double, ptr %28, align 8, !tbaa !15
  %1242 = fcmp oeq double %1241, 5.000000e-01
  br i1 %1242, label %1243, label %1253

1243:                                             ; preds = %1240
  %1244 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #9
          to label %1245 unwind label %1187

1245:                                             ; preds = %1243
  invoke void @_ZN6Lepton9Operation4SqrtC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %1244)
          to label %1246 unwind label %1249

1246:                                             ; preds = %1245
  %1247 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1244, ptr noundef nonnull align 8 dereferenceable(32) %1247)
          to label %1248 unwind label %1187

1248:                                             ; preds = %1246
  store i32 1, ptr %13, align 4
  br label %1269

1249:                                             ; preds = %1245
  %1250 = landingpad { ptr, i32 }
          cleanup
  %1251 = extractvalue { ptr, i32 } %1250, 0
  store ptr %1251, ptr %7, align 8
  %1252 = extractvalue { ptr, i32 } %1250, 1
  store i32 %1252, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1244, i64 noundef 8) #10
  br label %1270

1253:                                             ; preds = %1240
  %1254 = load double, ptr %28, align 8, !tbaa !15
  %1255 = load double, ptr %28, align 8, !tbaa !15
  %1256 = fcmp oeq double %1254, %1255
  br i1 %1256, label %1257, label %1268

1257:                                             ; preds = %1253
  %1258 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #9
          to label %1259 unwind label %1187

1259:                                             ; preds = %1257
  %1260 = load double, ptr %28, align 8, !tbaa !15
  invoke void @_ZN6Lepton9Operation13PowerConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(21) %1258, double noundef %1260)
          to label %1261 unwind label %1264

1261:                                             ; preds = %1259
  %1262 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1258, ptr noundef nonnull align 8 dereferenceable(32) %1262)
          to label %1263 unwind label %1187

1263:                                             ; preds = %1261
  store i32 1, ptr %13, align 4
  br label %1269

1264:                                             ; preds = %1259
  %1265 = landingpad { ptr, i32 }
          cleanup
  %1266 = extractvalue { ptr, i32 } %1265, 0
  store ptr %1266, ptr %7, align 8
  %1267 = extractvalue { ptr, i32 } %1265, 1
  store i32 %1267, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1258, i64 noundef 24) #10
  br label %1270

1268:                                             ; preds = %1253
  store i32 5, ptr %13, align 4
  br label %1269

1269:                                             ; preds = %1268, %1263, %1248, %1235, %1222, %1209, %1200, %1186
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %1271

1270:                                             ; preds = %1264, %1249, %1236, %1223, %1210, %1191, %1187
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %1273

1271:                                             ; preds = %1269, %1171, %1155
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  %1272 = load i32, ptr %13, align 4
  switch i32 %1272, label %1476 [
    i32 5, label %1466
  ]

1273:                                             ; preds = %1270, %1172, %1160, %1156
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %1477

1274:                                             ; preds = %76
  %1275 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1276 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1275)
          to label %1277 unwind label %77

1277:                                             ; preds = %1274
  %1278 = load ptr, ptr %1276, align 8, !tbaa !13
  %1279 = getelementptr inbounds ptr, ptr %1278, i64 3
  %1280 = load ptr, ptr %1279, align 8
  %1281 = invoke noundef i32 %1280(ptr noundef nonnull align 8 dereferenceable(8) %1276)
          to label %1282 unwind label %77

1282:                                             ; preds = %1277
  %1283 = icmp eq i32 %1281, 32
  br i1 %1283, label %1284, label %1309

1284:                                             ; preds = %1282
  %1285 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %1286 unwind label %77

1286:                                             ; preds = %1284
  %1287 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1287)
          to label %1289 unwind label %1293

1289:                                             ; preds = %1286
  %1290 = icmp eq ptr %1288, null
  br i1 %1290, label %1297, label %1291

1291:                                             ; preds = %1289
  %1292 = call ptr @__dynamic_cast(ptr %1288, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %1298

1293:                                             ; preds = %1301, %1298, %1286
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %7, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1285, i64 noundef 16) #10
  br label %1477

1297:                                             ; preds = %1289
  br label %1298

1298:                                             ; preds = %1297, %1291
  %1299 = phi ptr [ %1292, %1291 ], [ null, %1297 ]
  %1300 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %1299)
          to label %1301 unwind label %1293

1301:                                             ; preds = %1298
  %1302 = fneg double %1300
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %1285, double noundef %1302)
          to label %1303 unwind label %1293

1303:                                             ; preds = %1301
  %1304 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1305 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1304)
          to label %1306 unwind label %77

1306:                                             ; preds = %1303
  %1307 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1305, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1285, ptr noundef nonnull align 8 dereferenceable(32) %1307)
          to label %1308 unwind label %77

1308:                                             ; preds = %1306
  store i32 1, ptr %13, align 4
  br label %1476

1309:                                             ; preds = %1282
  %1310 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1310)
          to label %1312 unwind label %77

1312:                                             ; preds = %1309
  %1313 = load ptr, ptr %1311, align 8, !tbaa !13
  %1314 = getelementptr inbounds ptr, ptr %1313, i64 3
  %1315 = load ptr, ptr %1314, align 8
  %1316 = invoke noundef i32 %1315(ptr noundef nonnull align 8 dereferenceable(8) %1311)
          to label %1317 unwind label %77

1317:                                             ; preds = %1312
  %1318 = icmp eq i32 %1316, 0
  br i1 %1318, label %1319, label %1332

1319:                                             ; preds = %1317
  %1320 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %1321 unwind label %77

1321:                                             ; preds = %1319
  %1322 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1323 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %1322)
          to label %1324 unwind label %1328

1324:                                             ; preds = %1321
  %1325 = fneg double %1323
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %1320, double noundef %1325)
          to label %1326 unwind label %1328

1326:                                             ; preds = %1324
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1320)
          to label %1327 unwind label %77

1327:                                             ; preds = %1326
  store i32 1, ptr %13, align 4
  br label %1476

1328:                                             ; preds = %1324, %1321
  %1329 = landingpad { ptr, i32 }
          cleanup
  %1330 = extractvalue { ptr, i32 } %1329, 0
  store ptr %1330, ptr %7, align 8
  %1331 = extractvalue { ptr, i32 } %1329, 1
  store i32 %1331, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1320, i64 noundef 16) #10
  br label %1477

1332:                                             ; preds = %1317
  %1333 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1333)
          to label %1335 unwind label %77

1335:                                             ; preds = %1332
  %1336 = load ptr, ptr %1334, align 8, !tbaa !13
  %1337 = getelementptr inbounds ptr, ptr %1336, i64 3
  %1338 = load ptr, ptr %1337, align 8
  %1339 = invoke noundef i32 %1338(ptr noundef nonnull align 8 dereferenceable(8) %1334)
          to label %1340 unwind label %77

1340:                                             ; preds = %1335
  %1341 = icmp eq i32 %1339, 8
  br i1 %1341, label %1342, label %1348

1342:                                             ; preds = %1340
  %1343 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1344 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1343)
          to label %1345 unwind label %77

1345:                                             ; preds = %1342
  %1346 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1344, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1346)
          to label %1347 unwind label %77

1347:                                             ; preds = %1345
  store i32 1, ptr %13, align 4
  br label %1476

1348:                                             ; preds = %1340
  br label %1466

1349:                                             ; preds = %76
  %1350 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1351 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1350)
          to label %1352 unwind label %77

1352:                                             ; preds = %1349
  %1353 = load ptr, ptr %1351, align 8, !tbaa !13
  %1354 = getelementptr inbounds ptr, ptr %1353, i64 3
  %1355 = load ptr, ptr %1354, align 8
  %1356 = invoke noundef i32 %1355(ptr noundef nonnull align 8 dereferenceable(8) %1351)
          to label %1357 unwind label %77

1357:                                             ; preds = %1352
  %1358 = icmp eq i32 %1356, 32
  br i1 %1358, label %1359, label %1395

1359:                                             ; preds = %1357
  %1360 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %1361 unwind label %77

1361:                                             ; preds = %1359
  %1362 = load ptr, ptr %4, align 8, !tbaa !5
  %1363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1362)
          to label %1364 unwind label %1368

1364:                                             ; preds = %1361
  %1365 = icmp eq ptr %1363, null
  br i1 %1365, label %1372, label %1366

1366:                                             ; preds = %1364
  %1367 = call ptr @__dynamic_cast(ptr %1363, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %1373

1368:                                             ; preds = %1387, %1384, %1376, %1373, %1361
  %1369 = landingpad { ptr, i32 }
          cleanup
  %1370 = extractvalue { ptr, i32 } %1369, 0
  store ptr %1370, ptr %7, align 8
  %1371 = extractvalue { ptr, i32 } %1369, 1
  store i32 %1371, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1360, i64 noundef 16) #10
  br label %1477

1372:                                             ; preds = %1364
  br label %1373

1373:                                             ; preds = %1372, %1366
  %1374 = phi ptr [ %1367, %1366 ], [ null, %1372 ]
  %1375 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %1374)
          to label %1376 unwind label %1368

1376:                                             ; preds = %1373
  %1377 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1378 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1377)
          to label %1379 unwind label %1368

1379:                                             ; preds = %1376
  %1380 = icmp eq ptr %1378, null
  br i1 %1380, label %1383, label %1381

1381:                                             ; preds = %1379
  %1382 = call ptr @__dynamic_cast(ptr %1378, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %1384

1383:                                             ; preds = %1379
  br label %1384

1384:                                             ; preds = %1383, %1381
  %1385 = phi ptr [ %1382, %1381 ], [ null, %1383 ]
  %1386 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %1385)
          to label %1387 unwind label %1368

1387:                                             ; preds = %1384
  %1388 = fmul double %1375, %1386
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %1360, double noundef %1388)
          to label %1389 unwind label %1368

1389:                                             ; preds = %1387
  %1390 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1391 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1390)
          to label %1392 unwind label %77

1392:                                             ; preds = %1389
  %1393 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1391, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1360, ptr noundef nonnull align 8 dereferenceable(32) %1393)
          to label %1394 unwind label %77

1394:                                             ; preds = %1392
  store i32 1, ptr %13, align 4
  br label %1476

1395:                                             ; preds = %1357
  %1396 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1396)
          to label %1398 unwind label %77

1398:                                             ; preds = %1395
  %1399 = load ptr, ptr %1397, align 8, !tbaa !13
  %1400 = getelementptr inbounds ptr, ptr %1399, i64 3
  %1401 = load ptr, ptr %1400, align 8
  %1402 = invoke noundef i32 %1401(ptr noundef nonnull align 8 dereferenceable(8) %1397)
          to label %1403 unwind label %77

1403:                                             ; preds = %1398
  %1404 = icmp eq i32 %1402, 0
  br i1 %1404, label %1405, label %1429

1405:                                             ; preds = %1403
  %1406 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %1407 unwind label %77

1407:                                             ; preds = %1405
  %1408 = load ptr, ptr %4, align 8, !tbaa !5
  %1409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1408)
          to label %1410 unwind label %1414

1410:                                             ; preds = %1407
  %1411 = icmp eq ptr %1409, null
  br i1 %1411, label %1418, label %1412

1412:                                             ; preds = %1410
  %1413 = call ptr @__dynamic_cast(ptr %1409, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %1419

1414:                                             ; preds = %1425, %1422, %1419, %1407
  %1415 = landingpad { ptr, i32 }
          cleanup
  %1416 = extractvalue { ptr, i32 } %1415, 0
  store ptr %1416, ptr %7, align 8
  %1417 = extractvalue { ptr, i32 } %1415, 1
  store i32 %1417, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1406, i64 noundef 16) #10
  br label %1477

1418:                                             ; preds = %1410
  br label %1419

1419:                                             ; preds = %1418, %1412
  %1420 = phi ptr [ %1413, %1412 ], [ null, %1418 ]
  %1421 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %1420)
          to label %1422 unwind label %1414

1422:                                             ; preds = %1419
  %1423 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1424 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %1423)
          to label %1425 unwind label %1414

1425:                                             ; preds = %1422
  %1426 = fmul double %1421, %1424
  invoke void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %1406, double noundef %1426)
          to label %1427 unwind label %1414

1427:                                             ; preds = %1425
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1406)
          to label %1428 unwind label %77

1428:                                             ; preds = %1427
  store i32 1, ptr %13, align 4
  br label %1476

1429:                                             ; preds = %1403
  %1430 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1430)
          to label %1432 unwind label %77

1432:                                             ; preds = %1429
  %1433 = load ptr, ptr %1431, align 8, !tbaa !13
  %1434 = getelementptr inbounds ptr, ptr %1433, i64 3
  %1435 = load ptr, ptr %1434, align 8
  %1436 = invoke noundef i32 %1435(ptr noundef nonnull align 8 dereferenceable(8) %1431)
          to label %1437 unwind label %77

1437:                                             ; preds = %1432
  %1438 = icmp eq i32 %1436, 8
  br i1 %1438, label %1439, label %1464

1439:                                             ; preds = %1437
  %1440 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #9
          to label %1441 unwind label %77

1441:                                             ; preds = %1439
  %1442 = load ptr, ptr %4, align 8, !tbaa !5
  %1443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1442)
          to label %1444 unwind label %1448

1444:                                             ; preds = %1441
  %1445 = icmp eq ptr %1443, null
  br i1 %1445, label %1452, label %1446

1446:                                             ; preds = %1444
  %1447 = call ptr @__dynamic_cast(ptr %1443, ptr @_ZTIN6Lepton9OperationE, ptr @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  br label %1453

1448:                                             ; preds = %1456, %1453, %1441
  %1449 = landingpad { ptr, i32 }
          cleanup
  %1450 = extractvalue { ptr, i32 } %1449, 0
  store ptr %1450, ptr %7, align 8
  %1451 = extractvalue { ptr, i32 } %1449, 1
  store i32 %1451, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1440, i64 noundef 16) #10
  br label %1477

1452:                                             ; preds = %1444
  br label %1453

1453:                                             ; preds = %1452, %1446
  %1454 = phi ptr [ %1447, %1446 ], [ null, %1452 ]
  %1455 = invoke noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %1454)
          to label %1456 unwind label %1448

1456:                                             ; preds = %1453
  %1457 = fneg double %1455
  invoke void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %1440, double noundef %1457)
          to label %1458 unwind label %1448

1458:                                             ; preds = %1456
  %1459 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  %1460 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1459)
          to label %1461 unwind label %77

1461:                                             ; preds = %1458
  %1462 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1460, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1440, ptr noundef nonnull align 8 dereferenceable(32) %1462)
          to label %1463 unwind label %77

1463:                                             ; preds = %1461
  store i32 1, ptr %13, align 4
  br label %1476

1464:                                             ; preds = %1437
  br label %1466

1465:                                             ; preds = %76
  br label %1466

1466:                                             ; preds = %1465, %1464, %1348, %1271, %1142, %809, %280, %186
  %1467 = load ptr, ptr %4, align 8, !tbaa !5
  %1468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1467)
          to label %1469 unwind label %77

1469:                                             ; preds = %1466
  %1470 = load ptr, ptr %1468, align 8, !tbaa !13
  %1471 = getelementptr inbounds ptr, ptr %1470, i64 5
  %1472 = load ptr, ptr %1471, align 8
  %1473 = invoke noundef ptr %1472(ptr noundef nonnull align 8 dereferenceable(8) %1468)
          to label %1474 unwind label %77

1474:                                             ; preds = %1469
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1473, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %1475 unwind label %77

1475:                                             ; preds = %1474
  store i32 1, ptr %13, align 4
  br label %1476

1476:                                             ; preds = %1475, %1463, %1428, %1394, %1347, %1327, %1308, %1271, %1142, %822, %809, %280, %199, %186
  call void @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #8
  ret void

1477:                                             ; preds = %1448, %1414, %1368, %1328, %1293, %1273, %1144, %823, %812, %282, %200, %189, %77, %67
  call void @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  br label %1478

1478:                                             ; preds = %1477, %39
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #8
  br label %1479

1479:                                             ; preds = %1478
  %1480 = load ptr, ptr %7, align 8
  %1481 = load i32, ptr %8, align 4
  %1482 = insertvalue { ptr, i32 } poison, ptr %1480, 0
  %1483 = insertvalue { ptr, i32 } %1482, i32 %1481, 1
  resume { ptr, i32 } %1483
}

declare noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Lepton18ExpressionTreeNodeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0

; Function Attrs: nounwind
declare void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

; Function Attrs: nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #5

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #2 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #7

declare void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIN6Lepton18ExpressionTreeNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

declare void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Lepton9Operation11AddConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #2 align 2

declare void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0

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

declare void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Lepton9Operation13PowerConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(21), double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIN6Lepton18ExpressionTreeNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

attributes #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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #5 = { nounwind willreturn memory(read) }
attributes #6 = { nobuiltin allocsize(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 = { nobuiltin 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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}


; 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.Lepton::ExpressionTreeNode" = type { ptr, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Lepton::ExpressionTreeNode, std::allocator<Lepton::ExpressionTreeNode>>::_Vector_impl" }
%"struct.std::_Vector_base<Lepton::ExpressionTreeNode, std::allocator<Lepton::ExpressionTreeNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<Lepton::ExpressionTreeNode, std::allocator<Lepton::ExpressionTreeNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Lepton::ExpressionTreeNode, std::allocator<Lepton::ExpressionTreeNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }

@_ZTIN6Lepton9OperationE = external dso_local constant { ptr, ptr }, align 8
@_ZTIN6Lepton9Operation16MultiplyConstantE = external constant ptr

declare void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

declare i32 @__gxx_personality_v0(...)

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Lepton16ParsedExpression27substituteSimplerExpressionERKNS_18ExpressionTreeNodeE(ptr dead_on_unwind noalias writable sret(%"class.Lepton::ExpressionTreeNode") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %1) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %6 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %7 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %8 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %9 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %10 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %11 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  %12 = alloca %"class.Lepton::ExpressionTreeNode", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #8
  %13 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %14 = tail call noundef i64 @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #8
  call void @_ZNSaIN6Lepton18ExpressionTreeNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  invoke void @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %14, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %15 unwind label %20

15:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIN6Lepton18ExpressionTreeNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  %16 = call noundef i64 @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  %17 = trunc i64 %16 to i32
  %18 = icmp sgt i32 %17, 0
  br i1 %18, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %28, %15
  %19 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %37 unwind label %43

20:                                               ; preds = %2
  %21 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN6Lepton18ExpressionTreeNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  br label %950

.lr.ph:                                           ; preds = %15, %28
  %indvars.iv = phi i64 [ %indvars.iv.next, %28 ], [ 0, %15 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #8
  %22 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %23 unwind label %32

23:                                               ; preds = %.lr.ph
  %24 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %indvars.iv) #8
  invoke void @_ZN6Lepton16ParsedExpression27substituteSimplerExpressionERKNS_18ExpressionTreeNodeE(ptr dead_on_unwind nonnull writable sret(%"class.Lepton::ExpressionTreeNode") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %25 unwind label %32

25:                                               ; preds = %23
  %26 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv) #8
  %27 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Lepton18ExpressionTreeNodeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %28 unwind label %34

28:                                               ; preds = %25
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %29 = call noundef i64 @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  %sext = shl i64 %29, 32
  %30 = ashr exact i64 %sext, 32
  %31 = icmp slt i64 %indvars.iv.next, %30
  br i1 %31, label %.lr.ph, label %._crit_edge, !llvm.loop !5

32:                                               ; preds = %23, %.lr.ph
  %33 = landingpad { ptr, i32 }
          cleanup
  br label %36

34:                                               ; preds = %25
  %35 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  br label %36

36:                                               ; preds = %34, %32
  %.pn120 = phi { ptr, i32 } [ %35, %34 ], [ %33, %32 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  br label %949

37:                                               ; preds = %._crit_edge
  %38 = load ptr, ptr %19, align 8, !tbaa !7
  %39 = getelementptr inbounds i8, ptr %38, i64 24
  %40 = load ptr, ptr %39, align 8
  %41 = invoke noundef i32 %40(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %42 unwind label %43

42:                                               ; preds = %37
  switch i32 %41, label %941 [
    i32 3, label %45
    i32 4, label %107
    i32 5, label %160
    i32 6, label %528
    i32 7, label %752
    i32 8, label %809
    i32 32, label %866
  ]

43:                                               ; preds = %.invoke134, %.invoke, %948, %943, %941, %931, %927, %920, %917, %903, %896, %893, %887, %876, %869, %866, %864, %861, %854, %851, %842, %835, %832, %824, %819, %812, %809, %533, %528, %112, %107, %37, %._crit_edge
  %44 = landingpad { ptr, i32 }
          cleanup
  br label %949

45:                                               ; preds = %42
  %46 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %47 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %48 unwind label %53

48:                                               ; preds = %45
  %49 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %50 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %51 unwind label %55

51:                                               ; preds = %48
  %52 = fcmp oeq double %47, 0.000000e+00
  br i1 %52, label %.invoke137, label %57

53:                                               ; preds = %45
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %949

55:                                               ; preds = %.invoke137, %.invoke136, %.invoke135, %100, %98, %91, %88, %84, %82, %75, %72, %67, %62, %48
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %949

57:                                               ; preds = %51
  %58 = fcmp oeq double %50, 0.000000e+00
  br i1 %58, label %.invoke137, label %60

.invoke137:                                       ; preds = %57, %51
  %.sink = phi i64 [ 1, %51 ], [ 0, %57 ]
  %59 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %.sink) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %.critedge unwind label %55

60:                                               ; preds = %57
  %61 = fcmp ord double %47, 0.000000e+00
  br i1 %61, label %62, label %65

62:                                               ; preds = %60
  %63 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %64 unwind label %55

64:                                               ; preds = %62
  call void @_ZN6Lepton9Operation11AddConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %63, double noundef %47)
  br label %.invoke136

65:                                               ; preds = %60
  %66 = fcmp ord double %50, 0.000000e+00
  br i1 %66, label %67, label %72

67:                                               ; preds = %65
  %68 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %69 unwind label %55

69:                                               ; preds = %67
  call void @_ZN6Lepton9Operation11AddConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %68, double noundef %50)
  br label %.invoke136

.invoke136:                                       ; preds = %64, %69
  %.sink138 = phi i64 [ 1, %64 ], [ 0, %69 ]
  %70 = phi ptr [ %63, %64 ], [ %68, %69 ]
  %71 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %.sink138) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %70, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %.critedge unwind label %55

72:                                               ; preds = %65
  %73 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %75 unwind label %55

75:                                               ; preds = %72
  %76 = load ptr, ptr %74, align 8, !tbaa !7
  %77 = getelementptr inbounds i8, ptr %76, i64 24
  %78 = load ptr, ptr %77, align 8
  %79 = invoke noundef i32 %78(ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %80 unwind label %55

80:                                               ; preds = %75
  %81 = icmp eq i32 %79, 8
  br i1 %81, label %82, label %88

82:                                               ; preds = %80
  %83 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %84 unwind label %55

84:                                               ; preds = %82
  call void @_ZN6Lepton9Operation8SubtractC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83)
  %85 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %86 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %87 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %.invoke135 unwind label %55

88:                                               ; preds = %80
  %89 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %90 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %91 unwind label %55

91:                                               ; preds = %88
  %92 = load ptr, ptr %90, align 8, !tbaa !7
  %93 = getelementptr inbounds i8, ptr %92, i64 24
  %94 = load ptr, ptr %93, align 8
  %95 = invoke noundef i32 %94(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %96 unwind label %55

96:                                               ; preds = %91
  %97 = icmp eq i32 %95, 8
  br i1 %97, label %98, label %941

98:                                               ; preds = %96
  %99 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %100 unwind label %55

100:                                              ; preds = %98
  call void @_ZN6Lepton9Operation8SubtractC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99)
  %101 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %102 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %103 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %102)
          to label %.invoke135 unwind label %55

.invoke135:                                       ; preds = %100, %84
  %.sink139 = phi ptr [ %87, %84 ], [ %103, %100 ]
  %104 = phi ptr [ %83, %84 ], [ %99, %100 ]
  %105 = phi ptr [ %85, %84 ], [ %101, %100 ]
  %106 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink139, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %104, ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(32) %106)
          to label %.critedge unwind label %55

107:                                              ; preds = %42
  %108 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %109 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %110 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 8 dereferenceable(32) %109)
          to label %111 unwind label %43

111:                                              ; preds = %107
  br i1 %110, label %112, label %115

112:                                              ; preds = %111
  %113 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %114 unwind label %43

114:                                              ; preds = %112
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %113, double noundef 0.000000e+00)
  br label %.invoke134

115:                                              ; preds = %111
  %116 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %117 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %116)
          to label %118 unwind label %124

118:                                              ; preds = %115
  %119 = fcmp oeq double %117, 0.000000e+00
  br i1 %119, label %120, label %126

120:                                              ; preds = %118
  %121 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %122 unwind label %124

122:                                              ; preds = %120
  call void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121)
  %123 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %121, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %.critedge unwind label %124

124:                                              ; preds = %122, %120, %115
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %949

126:                                              ; preds = %118
  %127 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %128 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %127)
          to label %129 unwind label %133

129:                                              ; preds = %126
  %130 = fcmp oeq double %128, 0.000000e+00
  br i1 %130, label %131, label %135

131:                                              ; preds = %129
  %132 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %132)
          to label %.critedge unwind label %133

133:                                              ; preds = %158, %154, %152, %145, %142, %139, %137, %131, %126
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %949

135:                                              ; preds = %129
  %136 = fcmp ord double %128, 0.000000e+00
  br i1 %136, label %137, label %142

137:                                              ; preds = %135
  %138 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %139 unwind label %133

139:                                              ; preds = %137
  %140 = fneg double %128
  call void @_ZN6Lepton9Operation11AddConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %138, double noundef %140)
  %141 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %138, ptr noundef nonnull align 8 dereferenceable(32) %141)
          to label %.critedge unwind label %133

142:                                              ; preds = %135
  %143 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %143)
          to label %145 unwind label %133

145:                                              ; preds = %142
  %146 = load ptr, ptr %144, align 8, !tbaa !7
  %147 = getelementptr inbounds i8, ptr %146, i64 24
  %148 = load ptr, ptr %147, align 8
  %149 = invoke noundef i32 %148(ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %150 unwind label %133

150:                                              ; preds = %145
  %151 = icmp eq i32 %149, 8
  br i1 %151, label %152, label %941

152:                                              ; preds = %150
  %153 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %154 unwind label %133

154:                                              ; preds = %152
  call void @_ZN6Lepton9Operation3AddC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153)
  %155 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %156 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %157 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %156)
          to label %158 unwind label %133

158:                                              ; preds = %154
  %159 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %157, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %153, ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull align 8 dereferenceable(32) %159)
          to label %.critedge unwind label %133

160:                                              ; preds = %42
  %161 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %162 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %161)
          to label %163 unwind label %172

163:                                              ; preds = %160
  %164 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %165 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %164)
          to label %166 unwind label %174

166:                                              ; preds = %163
  %167 = fcmp oeq double %162, 0.000000e+00
  %168 = fcmp oeq double %165, 0.000000e+00
  %or.cond = or i1 %167, %168
  br i1 %or.cond, label %169, label %176

169:                                              ; preds = %166
  %170 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %171 unwind label %174

171:                                              ; preds = %169
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %170, double noundef 0.000000e+00)
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %170)
          to label %.critedge unwind label %174

172:                                              ; preds = %160
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %949

174:                                              ; preds = %.invoke142, %.invoke141, %.invoke140, %522, %517, %514, %507, %504, %500, %495, %492, %485, %482, %478, %473, %466, %464, %457, %454, %450, %448, %441, %438, %421, %414, %411, %394, %387, %384, %356, %349, %346, %339, %336, %310, %308, %301, %298, %291, %288, %284, %281, %279, %272, %269, %262, %260, %256, %246, %241, %234, %232, %224, %222, %218, %208, %203, %196, %194, %186, %184, %171, %169, %163
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %949

176:                                              ; preds = %166
  %177 = fcmp oeq double %162, 1.000000e+00
  br i1 %177, label %178, label %180

178:                                              ; preds = %176
  %179 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  br label %.invoke142

180:                                              ; preds = %176
  %181 = fcmp oeq double %165, 1.000000e+00
  %182 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  br i1 %181, label %.invoke142, label %184

.invoke142:                                       ; preds = %180, %178
  %183 = phi ptr [ %179, %178 ], [ %182, %180 ]
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %183)
          to label %.critedge unwind label %174

184:                                              ; preds = %180
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %182)
          to label %186 unwind label %174

186:                                              ; preds = %184
  %187 = load ptr, ptr %185, align 8, !tbaa !7
  %188 = getelementptr inbounds i8, ptr %187, i64 24
  %189 = load ptr, ptr %188, align 8
  %190 = invoke noundef i32 %189(ptr noundef nonnull align 8 dereferenceable(8) %185)
          to label %191 unwind label %174

191:                                              ; preds = %186
  %192 = icmp eq i32 %190, 0
  %193 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  br i1 %192, label %194, label %222

194:                                              ; preds = %191
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %193)
          to label %196 unwind label %174

196:                                              ; preds = %194
  %197 = load ptr, ptr %195, align 8, !tbaa !7
  %198 = getelementptr inbounds i8, ptr %197, i64 24
  %199 = load ptr, ptr %198, align 8
  %200 = invoke noundef i32 %199(ptr noundef nonnull align 8 dereferenceable(8) %195)
          to label %201 unwind label %174

201:                                              ; preds = %196
  %202 = icmp eq i32 %200, 32
  br i1 %202, label %203, label %218

203:                                              ; preds = %201
  %204 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %205 unwind label %174

205:                                              ; preds = %203
  %206 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %206)
          to label %208 unwind label %214

208:                                              ; preds = %205
  %209 = call ptr @__dynamic_cast(ptr nonnull %207, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %210 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
  %211 = fmul double %162, %210
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %204, double noundef %211)
  %212 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %213 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %212)
          to label %216 unwind label %174

214:                                              ; preds = %205
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %204, i64 noundef 16) #10
  br label %949

216:                                              ; preds = %208
  %217 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %213, i64 noundef 0) #8
  br label %.invoke140

218:                                              ; preds = %201
  %219 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %220 unwind label %174

220:                                              ; preds = %218
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %219, double noundef %162)
  %221 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  br label %.invoke140

222:                                              ; preds = %191
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %193)
          to label %224 unwind label %174

224:                                              ; preds = %222
  %225 = load ptr, ptr %223, align 8, !tbaa !7
  %226 = getelementptr inbounds i8, ptr %225, i64 24
  %227 = load ptr, ptr %226, align 8
  %228 = invoke noundef i32 %227(ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %229 unwind label %174

229:                                              ; preds = %224
  %230 = icmp eq i32 %228, 0
  %231 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  br i1 %230, label %232, label %260

232:                                              ; preds = %229
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %234 unwind label %174

234:                                              ; preds = %232
  %235 = load ptr, ptr %233, align 8, !tbaa !7
  %236 = getelementptr inbounds i8, ptr %235, i64 24
  %237 = load ptr, ptr %236, align 8
  %238 = invoke noundef i32 %237(ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %239 unwind label %174

239:                                              ; preds = %234
  %240 = icmp eq i32 %238, 32
  br i1 %240, label %241, label %256

241:                                              ; preds = %239
  %242 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %243 unwind label %174

243:                                              ; preds = %241
  %244 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %244)
          to label %246 unwind label %252

246:                                              ; preds = %243
  %247 = call ptr @__dynamic_cast(ptr nonnull %245, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %248 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %247)
  %249 = fmul double %165, %248
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %242, double noundef %249)
  %250 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %251 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %250)
          to label %254 unwind label %174

252:                                              ; preds = %243
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %242, i64 noundef 16) #10
  br label %949

254:                                              ; preds = %246
  %255 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef 0) #8
  br label %.invoke140

256:                                              ; preds = %239
  %257 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %258 unwind label %174

258:                                              ; preds = %256
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %257, double noundef %165)
  %259 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  br label %.invoke140

260:                                              ; preds = %229
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %262 unwind label %174

262:                                              ; preds = %260
  %263 = load ptr, ptr %261, align 8, !tbaa !7
  %264 = getelementptr inbounds i8, ptr %263, i64 24
  %265 = load ptr, ptr %264, align 8
  %266 = invoke noundef i32 %265(ptr noundef nonnull align 8 dereferenceable(8) %261)
          to label %267 unwind label %174

267:                                              ; preds = %262
  %268 = icmp eq i32 %266, 8
  br i1 %268, label %269, label %288

269:                                              ; preds = %267
  %270 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %270)
          to label %272 unwind label %174

272:                                              ; preds = %269
  %273 = load ptr, ptr %271, align 8, !tbaa !7
  %274 = getelementptr inbounds i8, ptr %273, i64 24
  %275 = load ptr, ptr %274, align 8
  %276 = invoke noundef i32 %275(ptr noundef nonnull align 8 dereferenceable(8) %271)
          to label %277 unwind label %174

277:                                              ; preds = %272
  %278 = icmp eq i32 %276, 8
  br i1 %278, label %279, label %288

279:                                              ; preds = %277
  %280 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %281 unwind label %174

281:                                              ; preds = %279
  call void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %280)
  %282 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %283 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %282)
          to label %284 unwind label %174

284:                                              ; preds = %281
  %285 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef 0) #8
  %286 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %287 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %286)
          to label %.invoke141 unwind label %174

288:                                              ; preds = %277, %267
  %289 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %290 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %289)
          to label %291 unwind label %174

291:                                              ; preds = %288
  %292 = load ptr, ptr %290, align 8, !tbaa !7
  %293 = getelementptr inbounds i8, ptr %292, i64 24
  %294 = load ptr, ptr %293, align 8
  %295 = invoke noundef i32 %294(ptr noundef nonnull align 8 dereferenceable(8) %290)
          to label %296 unwind label %174

296:                                              ; preds = %291
  %297 = icmp eq i32 %295, 8
  br i1 %297, label %298, label %336

298:                                              ; preds = %296
  %299 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %299)
          to label %301 unwind label %174

301:                                              ; preds = %298
  %302 = load ptr, ptr %300, align 8, !tbaa !7
  %303 = getelementptr inbounds i8, ptr %302, i64 24
  %304 = load ptr, ptr %303, align 8
  %305 = invoke noundef i32 %304(ptr noundef nonnull align 8 dereferenceable(8) %300)
          to label %306 unwind label %174

306:                                              ; preds = %301
  %307 = icmp eq i32 %305, 32
  br i1 %307, label %308, label %336

308:                                              ; preds = %306
  %309 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %310 unwind label %174

310:                                              ; preds = %308
  call void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %309)
  %311 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %312 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %311)
          to label %313 unwind label %174

313:                                              ; preds = %310
  %314 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %312, i64 noundef 0) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  %315 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %316 unwind label %325

316:                                              ; preds = %313
  %317 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %317)
          to label %319 unwind label %327

319:                                              ; preds = %316
  %320 = call ptr @__dynamic_cast(ptr nonnull %318, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %321 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %320)
  %322 = fneg double %321
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %315, double noundef %322)
  %323 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %324 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %323)
          to label %329 unwind label %325

325:                                              ; preds = %329, %319, %313
  %326 = landingpad { ptr, i32 }
          cleanup
  br label %335

327:                                              ; preds = %316
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %315, i64 noundef 16) #10
  br label %335

329:                                              ; preds = %319
  %330 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %324, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull %315, ptr noundef nonnull align 8 dereferenceable(32) %330)
          to label %331 unwind label %325

331:                                              ; preds = %329
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %309, ptr noundef nonnull align 8 dereferenceable(32) %314, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %332 unwind label %333

332:                                              ; preds = %331
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %.critedge

333:                                              ; preds = %331
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %335

335:                                              ; preds = %333, %327, %325
  %.pn111 = phi { ptr, i32 } [ %334, %333 ], [ %326, %325 ], [ %328, %327 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %949

336:                                              ; preds = %306, %296
  %337 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %337)
          to label %339 unwind label %174

339:                                              ; preds = %336
  %340 = load ptr, ptr %338, align 8, !tbaa !7
  %341 = getelementptr inbounds i8, ptr %340, i64 24
  %342 = load ptr, ptr %341, align 8
  %343 = invoke noundef i32 %342(ptr noundef nonnull align 8 dereferenceable(8) %338)
          to label %344 unwind label %174

344:                                              ; preds = %339
  %345 = icmp eq i32 %343, 8
  br i1 %345, label %346, label %384

346:                                              ; preds = %344
  %347 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %347)
          to label %349 unwind label %174

349:                                              ; preds = %346
  %350 = load ptr, ptr %348, align 8, !tbaa !7
  %351 = getelementptr inbounds i8, ptr %350, i64 24
  %352 = load ptr, ptr %351, align 8
  %353 = invoke noundef i32 %352(ptr noundef nonnull align 8 dereferenceable(8) %348)
          to label %354 unwind label %174

354:                                              ; preds = %349
  %355 = icmp eq i32 %353, 32
  br i1 %355, label %356, label %384

356:                                              ; preds = %354
  %357 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %358 unwind label %174

358:                                              ; preds = %356
  call void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %357)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  %359 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %360 unwind label %369

360:                                              ; preds = %358
  %361 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %361)
          to label %363 unwind label %371

363:                                              ; preds = %360
  %364 = call ptr @__dynamic_cast(ptr nonnull %362, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %365 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %364)
  %366 = fneg double %365
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %359, double noundef %366)
  %367 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %368 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %367)
          to label %373 unwind label %369

369:                                              ; preds = %373, %363, %358
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %383

371:                                              ; preds = %360
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %359, i64 noundef 16) #10
  br label %383

373:                                              ; preds = %363
  %374 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %368, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull %359, ptr noundef nonnull align 8 dereferenceable(32) %374)
          to label %375 unwind label %369

375:                                              ; preds = %373
  %376 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %377 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %376)
          to label %378 unwind label %381

378:                                              ; preds = %375
  %379 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %377, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %357, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %379)
          to label %380 unwind label %381

380:                                              ; preds = %378
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %.critedge

381:                                              ; preds = %378, %375
  %382 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %383

383:                                              ; preds = %381, %371, %369
  %.pn109 = phi { ptr, i32 } [ %382, %381 ], [ %370, %369 ], [ %372, %371 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %949

384:                                              ; preds = %354, %344
  %385 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %385)
          to label %387 unwind label %174

387:                                              ; preds = %384
  %388 = load ptr, ptr %386, align 8, !tbaa !7
  %389 = getelementptr inbounds i8, ptr %388, i64 24
  %390 = load ptr, ptr %389, align 8
  %391 = invoke noundef i32 %390(ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %392 unwind label %174

392:                                              ; preds = %387
  %393 = icmp eq i32 %391, 8
  br i1 %393, label %394, label %411

394:                                              ; preds = %392
  %395 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %396 unwind label %174

396:                                              ; preds = %394
  call void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %395)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  %397 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %398 unwind label %406

398:                                              ; preds = %396
  call void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %397)
  %399 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %400 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %399)
          to label %401 unwind label %406

401:                                              ; preds = %398
  %402 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef 0) #8
  %403 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull %397, ptr noundef nonnull align 8 dereferenceable(32) %402, ptr noundef nonnull align 8 dereferenceable(32) %403)
          to label %404 unwind label %406

404:                                              ; preds = %401
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %395, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %405 unwind label %408

405:                                              ; preds = %404
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %.critedge

406:                                              ; preds = %401, %398, %396
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %410

408:                                              ; preds = %404
  %409 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %410

410:                                              ; preds = %408, %406
  %.pn107 = phi { ptr, i32 } [ %409, %408 ], [ %407, %406 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %949

411:                                              ; preds = %392
  %412 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %412)
          to label %414 unwind label %174

414:                                              ; preds = %411
  %415 = load ptr, ptr %413, align 8, !tbaa !7
  %416 = getelementptr inbounds i8, ptr %415, i64 24
  %417 = load ptr, ptr %416, align 8
  %418 = invoke noundef i32 %417(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %419 unwind label %174

419:                                              ; preds = %414
  %420 = icmp eq i32 %418, 8
  br i1 %420, label %421, label %438

421:                                              ; preds = %419
  %422 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %423 unwind label %174

423:                                              ; preds = %421
  call void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %422)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  %424 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %425 unwind label %433

425:                                              ; preds = %423
  call void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %424)
  %426 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %427 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %428 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %427)
          to label %429 unwind label %433

429:                                              ; preds = %425
  %430 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %428, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull %424, ptr noundef nonnull align 8 dereferenceable(32) %426, ptr noundef nonnull align 8 dereferenceable(32) %430)
          to label %431 unwind label %433

431:                                              ; preds = %429
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %422, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %432 unwind label %435

432:                                              ; preds = %431
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %.critedge

433:                                              ; preds = %429, %425, %423
  %434 = landingpad { ptr, i32 }
          cleanup
  br label %437

435:                                              ; preds = %431
  %436 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %437

437:                                              ; preds = %435, %433
  %.pn105 = phi { ptr, i32 } [ %436, %435 ], [ %434, %433 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %949

438:                                              ; preds = %419
  %439 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %439)
          to label %441 unwind label %174

441:                                              ; preds = %438
  %442 = load ptr, ptr %440, align 8, !tbaa !7
  %443 = getelementptr inbounds i8, ptr %442, i64 24
  %444 = load ptr, ptr %443, align 8
  %445 = invoke noundef i32 %444(ptr noundef nonnull align 8 dereferenceable(8) %440)
          to label %446 unwind label %174

446:                                              ; preds = %441
  %447 = icmp eq i32 %445, 30
  br i1 %447, label %448, label %454

448:                                              ; preds = %446
  %449 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %450 unwind label %174

450:                                              ; preds = %448
  call void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %449)
  %451 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %452 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %453 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %452)
          to label %.invoke141 unwind label %174

454:                                              ; preds = %446
  %455 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %455)
          to label %457 unwind label %174

457:                                              ; preds = %454
  %458 = load ptr, ptr %456, align 8, !tbaa !7
  %459 = getelementptr inbounds i8, ptr %458, i64 24
  %460 = load ptr, ptr %459, align 8
  %461 = invoke noundef i32 %460(ptr noundef nonnull align 8 dereferenceable(8) %456)
          to label %462 unwind label %174

462:                                              ; preds = %457
  %463 = icmp eq i32 %461, 30
  br i1 %463, label %464, label %473

464:                                              ; preds = %462
  %465 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %466 unwind label %174

466:                                              ; preds = %464
  call void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %465)
  %467 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %468 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %469 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %468)
          to label %.invoke141 unwind label %174

.invoke141:                                       ; preds = %466, %450, %284
  %.sink143 = phi ptr [ %287, %284 ], [ %453, %450 ], [ %469, %466 ]
  %470 = phi ptr [ %280, %284 ], [ %449, %450 ], [ %465, %466 ]
  %471 = phi ptr [ %285, %284 ], [ %451, %450 ], [ %467, %466 ]
  %472 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink143, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %470, ptr noundef nonnull align 8 dereferenceable(32) %471, ptr noundef nonnull align 8 dereferenceable(32) %472)
          to label %.critedge unwind label %174

473:                                              ; preds = %462
  %474 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %475 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %476 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %474, ptr noundef nonnull align 8 dereferenceable(32) %475)
          to label %477 unwind label %174

477:                                              ; preds = %473
  br i1 %476, label %478, label %482

478:                                              ; preds = %477
  %479 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %480 unwind label %174

480:                                              ; preds = %478
  call void @_ZN6Lepton9Operation6SquareC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %479)
  %481 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  br label %.invoke140

482:                                              ; preds = %477
  %483 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %483)
          to label %485 unwind label %174

485:                                              ; preds = %482
  %486 = load ptr, ptr %484, align 8, !tbaa !7
  %487 = getelementptr inbounds i8, ptr %486, i64 24
  %488 = load ptr, ptr %487, align 8
  %489 = invoke noundef i32 %488(ptr noundef nonnull align 8 dereferenceable(8) %484)
          to label %490 unwind label %174

490:                                              ; preds = %485
  %491 = icmp eq i32 %489, 28
  br i1 %491, label %492, label %504

492:                                              ; preds = %490
  %493 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %494 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %493)
          to label %495 unwind label %174

495:                                              ; preds = %492
  %496 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %494, i64 noundef 0) #8
  %497 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %498 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %496, ptr noundef nonnull align 8 dereferenceable(32) %497)
          to label %499 unwind label %174

499:                                              ; preds = %495
  br i1 %498, label %500, label %504

500:                                              ; preds = %499
  %501 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %502 unwind label %174

502:                                              ; preds = %500
  call void @_ZN6Lepton9Operation4CubeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %501)
  %503 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  br label %.invoke140

504:                                              ; preds = %499, %490
  %505 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %506 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %505)
          to label %507 unwind label %174

507:                                              ; preds = %504
  %508 = load ptr, ptr %506, align 8, !tbaa !7
  %509 = getelementptr inbounds i8, ptr %508, i64 24
  %510 = load ptr, ptr %509, align 8
  %511 = invoke noundef i32 %510(ptr noundef nonnull align 8 dereferenceable(8) %506)
          to label %512 unwind label %174

512:                                              ; preds = %507
  %513 = icmp eq i32 %511, 28
  br i1 %513, label %514, label %941

514:                                              ; preds = %512
  %515 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %516 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %515)
          to label %517 unwind label %174

517:                                              ; preds = %514
  %518 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %516, i64 noundef 0) #8
  %519 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %520 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %518, ptr noundef nonnull align 8 dereferenceable(32) %519)
          to label %521 unwind label %174

521:                                              ; preds = %517
  br i1 %520, label %522, label %941

522:                                              ; preds = %521
  %523 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %524 unwind label %174

524:                                              ; preds = %522
  call void @_ZN6Lepton9Operation4CubeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %523)
  %525 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  br label %.invoke140

.invoke140:                                       ; preds = %216, %220, %254, %258, %480, %502, %524
  %526 = phi ptr [ %523, %524 ], [ %501, %502 ], [ %479, %480 ], [ %257, %258 ], [ %242, %254 ], [ %219, %220 ], [ %204, %216 ]
  %527 = phi ptr [ %525, %524 ], [ %503, %502 ], [ %481, %480 ], [ %259, %258 ], [ %255, %254 ], [ %221, %220 ], [ %217, %216 ]
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %526, ptr noundef nonnull align 8 dereferenceable(32) %527)
          to label %.critedge unwind label %174

528:                                              ; preds = %42
  %529 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %530 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %531 = invoke noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %529, ptr noundef nonnull align 8 dereferenceable(32) %530)
          to label %532 unwind label %43

532:                                              ; preds = %528
  br i1 %531, label %533, label %536

533:                                              ; preds = %532
  %534 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %535 unwind label %43

535:                                              ; preds = %533
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %534, double noundef 1.000000e+00)
  br label %.invoke134

536:                                              ; preds = %532
  %537 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %538 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %537)
          to label %539 unwind label %544

539:                                              ; preds = %536
  %540 = fcmp oeq double %538, 0.000000e+00
  br i1 %540, label %541, label %546

541:                                              ; preds = %539
  %542 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %543 unwind label %544

543:                                              ; preds = %541
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %542, double noundef 0.000000e+00)
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %542)
          to label %.critedge unwind label %544

544:                                              ; preds = %550, %548, %543, %541, %536
  %545 = landingpad { ptr, i32 }
          cleanup
  br label %949

546:                                              ; preds = %539
  %547 = fcmp oeq double %538, 1.000000e+00
  br i1 %547, label %548, label %552

548:                                              ; preds = %546
  %549 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %550 unwind label %544

550:                                              ; preds = %548
  call void @_ZN6Lepton9Operation10ReciprocalC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %549)
  %551 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %549, ptr noundef nonnull align 8 dereferenceable(32) %551)
          to label %.critedge unwind label %544

552:                                              ; preds = %546
  %553 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %554 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %553)
          to label %555 unwind label %559

555:                                              ; preds = %552
  %556 = fcmp oeq double %554, 1.000000e+00
  br i1 %556, label %557, label %561

557:                                              ; preds = %555
  %558 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %558)
          to label %.critedge unwind label %559

559:                                              ; preds = %.invoke145, %.invoke144, %745, %743, %736, %733, %716, %709, %706, %689, %682, %679, %651, %644, %641, %634, %631, %627, %624, %622, %615, %612, %605, %603, %596, %586, %581, %574, %572, %564, %561, %557, %552
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %949

561:                                              ; preds = %555
  %562 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %563 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %562)
          to label %564 unwind label %559

564:                                              ; preds = %561
  %565 = load ptr, ptr %563, align 8, !tbaa !7
  %566 = getelementptr inbounds i8, ptr %565, i64 24
  %567 = load ptr, ptr %566, align 8
  %568 = invoke noundef i32 %567(ptr noundef nonnull align 8 dereferenceable(8) %563)
          to label %569 unwind label %559

569:                                              ; preds = %564
  %570 = icmp eq i32 %568, 0
  %571 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  br i1 %570, label %572, label %603

572:                                              ; preds = %569
  %573 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %571)
          to label %574 unwind label %559

574:                                              ; preds = %572
  %575 = load ptr, ptr %573, align 8, !tbaa !7
  %576 = getelementptr inbounds i8, ptr %575, i64 24
  %577 = load ptr, ptr %576, align 8
  %578 = invoke noundef i32 %577(ptr noundef nonnull align 8 dereferenceable(8) %573)
          to label %579 unwind label %559

579:                                              ; preds = %574
  %580 = icmp eq i32 %578, 32
  br i1 %580, label %581, label %596

581:                                              ; preds = %579
  %582 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %583 unwind label %559

583:                                              ; preds = %581
  %584 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %585 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %584)
          to label %586 unwind label %592

586:                                              ; preds = %583
  %587 = call ptr @__dynamic_cast(ptr nonnull %585, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %588 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %587)
  %589 = fdiv double %588, %554
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %582, double noundef %589)
  %590 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %591 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %590)
          to label %594 unwind label %559

592:                                              ; preds = %583
  %593 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %582, i64 noundef 16) #10
  br label %949

594:                                              ; preds = %586
  %595 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %591, i64 noundef 0) #8
  br label %.invoke145

596:                                              ; preds = %579
  %597 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %598 unwind label %559

598:                                              ; preds = %596
  %599 = fdiv double 1.000000e+00, %554
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %597, double noundef %599)
  %600 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  br label %.invoke145

.invoke145:                                       ; preds = %594, %598
  %601 = phi ptr [ %597, %598 ], [ %582, %594 ]
  %602 = phi ptr [ %600, %598 ], [ %595, %594 ]
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %601, ptr noundef nonnull align 8 dereferenceable(32) %602)
          to label %.critedge unwind label %559

603:                                              ; preds = %569
  %604 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %571)
          to label %605 unwind label %559

605:                                              ; preds = %603
  %606 = load ptr, ptr %604, align 8, !tbaa !7
  %607 = getelementptr inbounds i8, ptr %606, i64 24
  %608 = load ptr, ptr %607, align 8
  %609 = invoke noundef i32 %608(ptr noundef nonnull align 8 dereferenceable(8) %604)
          to label %610 unwind label %559

610:                                              ; preds = %605
  %611 = icmp eq i32 %609, 8
  br i1 %611, label %612, label %631

612:                                              ; preds = %610
  %613 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %613)
          to label %615 unwind label %559

615:                                              ; preds = %612
  %616 = load ptr, ptr %614, align 8, !tbaa !7
  %617 = getelementptr inbounds i8, ptr %616, i64 24
  %618 = load ptr, ptr %617, align 8
  %619 = invoke noundef i32 %618(ptr noundef nonnull align 8 dereferenceable(8) %614)
          to label %620 unwind label %559

620:                                              ; preds = %615
  %621 = icmp eq i32 %619, 8
  br i1 %621, label %622, label %631

622:                                              ; preds = %620
  %623 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %624 unwind label %559

624:                                              ; preds = %622
  call void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %623)
  %625 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %626 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %625)
          to label %627 unwind label %559

627:                                              ; preds = %624
  %628 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %626, i64 noundef 0) #8
  %629 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %630 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %629)
          to label %.invoke144 unwind label %559

631:                                              ; preds = %620, %610
  %632 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %633 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %632)
          to label %634 unwind label %559

634:                                              ; preds = %631
  %635 = load ptr, ptr %633, align 8, !tbaa !7
  %636 = getelementptr inbounds i8, ptr %635, i64 24
  %637 = load ptr, ptr %636, align 8
  %638 = invoke noundef i32 %637(ptr noundef nonnull align 8 dereferenceable(8) %633)
          to label %639 unwind label %559

639:                                              ; preds = %634
  %640 = icmp eq i32 %638, 8
  br i1 %640, label %641, label %679

641:                                              ; preds = %639
  %642 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %643 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %642)
          to label %644 unwind label %559

644:                                              ; preds = %641
  %645 = load ptr, ptr %643, align 8, !tbaa !7
  %646 = getelementptr inbounds i8, ptr %645, i64 24
  %647 = load ptr, ptr %646, align 8
  %648 = invoke noundef i32 %647(ptr noundef nonnull align 8 dereferenceable(8) %643)
          to label %649 unwind label %559

649:                                              ; preds = %644
  %650 = icmp eq i32 %648, 32
  br i1 %650, label %651, label %679

651:                                              ; preds = %649
  %652 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %653 unwind label %559

653:                                              ; preds = %651
  call void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %652)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  %654 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %655 unwind label %664

655:                                              ; preds = %653
  %656 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %657 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %656)
          to label %658 unwind label %666

658:                                              ; preds = %655
  %659 = call ptr @__dynamic_cast(ptr nonnull %657, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %660 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %659)
  %661 = fneg double %660
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %654, double noundef %661)
  %662 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %663 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %662)
          to label %668 unwind label %664

664:                                              ; preds = %668, %658, %653
  %665 = landingpad { ptr, i32 }
          cleanup
  br label %678

666:                                              ; preds = %655
  %667 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %654, i64 noundef 16) #10
  br label %678

668:                                              ; preds = %658
  %669 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %663, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %654, ptr noundef nonnull align 8 dereferenceable(32) %669)
          to label %670 unwind label %664

670:                                              ; preds = %668
  %671 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %672 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %671)
          to label %673 unwind label %676

673:                                              ; preds = %670
  %674 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %672, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %652, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %674)
          to label %675 unwind label %676

675:                                              ; preds = %673
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  br label %.critedge

676:                                              ; preds = %673, %670
  %677 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %678

678:                                              ; preds = %676, %666, %664
  %.pn99 = phi { ptr, i32 } [ %677, %676 ], [ %665, %664 ], [ %667, %666 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  br label %949

679:                                              ; preds = %649, %639
  %680 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %680)
          to label %682 unwind label %559

682:                                              ; preds = %679
  %683 = load ptr, ptr %681, align 8, !tbaa !7
  %684 = getelementptr inbounds i8, ptr %683, i64 24
  %685 = load ptr, ptr %684, align 8
  %686 = invoke noundef i32 %685(ptr noundef nonnull align 8 dereferenceable(8) %681)
          to label %687 unwind label %559

687:                                              ; preds = %682
  %688 = icmp eq i32 %686, 8
  br i1 %688, label %689, label %706

689:                                              ; preds = %687
  %690 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %691 unwind label %559

691:                                              ; preds = %689
  call void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %690)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  %692 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %693 unwind label %701

693:                                              ; preds = %691
  call void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %692)
  %694 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %695 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %694)
          to label %696 unwind label %701

696:                                              ; preds = %693
  %697 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %695, i64 noundef 0) #8
  %698 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull %692, ptr noundef nonnull align 8 dereferenceable(32) %697, ptr noundef nonnull align 8 dereferenceable(32) %698)
          to label %699 unwind label %701

699:                                              ; preds = %696
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %690, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %700 unwind label %703

700:                                              ; preds = %699
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %.critedge

701:                                              ; preds = %696, %693, %691
  %702 = landingpad { ptr, i32 }
          cleanup
  br label %705

703:                                              ; preds = %699
  %704 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %705

705:                                              ; preds = %703, %701
  %.pn97 = phi { ptr, i32 } [ %704, %703 ], [ %702, %701 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %949

706:                                              ; preds = %687
  %707 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %708 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %707)
          to label %709 unwind label %559

709:                                              ; preds = %706
  %710 = load ptr, ptr %708, align 8, !tbaa !7
  %711 = getelementptr inbounds i8, ptr %710, i64 24
  %712 = load ptr, ptr %711, align 8
  %713 = invoke noundef i32 %712(ptr noundef nonnull align 8 dereferenceable(8) %708)
          to label %714 unwind label %559

714:                                              ; preds = %709
  %715 = icmp eq i32 %713, 8
  br i1 %715, label %716, label %733

716:                                              ; preds = %714
  %717 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %718 unwind label %559

718:                                              ; preds = %716
  call void @_ZN6Lepton9Operation6NegateC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %717)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  %719 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %720 unwind label %728

720:                                              ; preds = %718
  call void @_ZN6Lepton9Operation6DivideC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %719)
  %721 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %722 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %723 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %722)
          to label %724 unwind label %728

724:                                              ; preds = %720
  %725 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %723, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull %719, ptr noundef nonnull align 8 dereferenceable(32) %721, ptr noundef nonnull align 8 dereferenceable(32) %725)
          to label %726 unwind label %728

726:                                              ; preds = %724
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %717, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %727 unwind label %730

727:                                              ; preds = %726
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  br label %.critedge

728:                                              ; preds = %724, %720, %718
  %729 = landingpad { ptr, i32 }
          cleanup
  br label %732

730:                                              ; preds = %726
  %731 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %732

732:                                              ; preds = %730, %728
  %.pn95 = phi { ptr, i32 } [ %731, %730 ], [ %729, %728 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  br label %949

733:                                              ; preds = %714
  %734 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %734)
          to label %736 unwind label %559

736:                                              ; preds = %733
  %737 = load ptr, ptr %735, align 8, !tbaa !7
  %738 = getelementptr inbounds i8, ptr %737, i64 24
  %739 = load ptr, ptr %738, align 8
  %740 = invoke noundef i32 %739(ptr noundef nonnull align 8 dereferenceable(8) %735)
          to label %741 unwind label %559

741:                                              ; preds = %736
  %742 = icmp eq i32 %740, 30
  br i1 %742, label %743, label %941

743:                                              ; preds = %741
  %744 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %745 unwind label %559

745:                                              ; preds = %743
  call void @_ZN6Lepton9Operation8MultiplyC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %744)
  %746 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %747 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %748 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %747)
          to label %.invoke144 unwind label %559

.invoke144:                                       ; preds = %745, %627
  %.sink146 = phi ptr [ %630, %627 ], [ %748, %745 ]
  %749 = phi ptr [ %623, %627 ], [ %744, %745 ]
  %750 = phi ptr [ %628, %627 ], [ %746, %745 ]
  %751 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink146, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %749, ptr noundef nonnull align 8 dereferenceable(32) %750, ptr noundef nonnull align 8 dereferenceable(32) %751)
          to label %.critedge unwind label %559

752:                                              ; preds = %42
  %753 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %754 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %753)
          to label %755 unwind label %760

755:                                              ; preds = %752
  %756 = fcmp oeq double %754, 0.000000e+00
  br i1 %756, label %757, label %762

757:                                              ; preds = %755
  %758 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %759 unwind label %760

759:                                              ; preds = %757
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %758, double noundef 0.000000e+00)
  br label %.invoke147

760:                                              ; preds = %.invoke147, %764, %757, %752
  %761 = landingpad { ptr, i32 }
          cleanup
  br label %949

762:                                              ; preds = %755
  %763 = fcmp oeq double %754, 1.000000e+00
  br i1 %763, label %764, label %768

764:                                              ; preds = %762
  %765 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %766 unwind label %760

766:                                              ; preds = %764
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %765, double noundef 1.000000e+00)
  br label %.invoke147

.invoke147:                                       ; preds = %759, %766
  %767 = phi ptr [ %765, %766 ], [ %758, %759 ]
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %767)
          to label %.critedge unwind label %760

768:                                              ; preds = %762
  %769 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1) #8
  %770 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %769)
          to label %771 unwind label %776

771:                                              ; preds = %768
  %772 = fcmp oeq double %770, 0.000000e+00
  br i1 %772, label %773, label %778

773:                                              ; preds = %771
  %774 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %775 unwind label %776

775:                                              ; preds = %773
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %774, double noundef 1.000000e+00)
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %774)
          to label %.critedge unwind label %776

776:                                              ; preds = %.invoke148, %804, %799, %794, %789, %784, %780, %775, %773, %768
  %777 = landingpad { ptr, i32 }
          cleanup
  br label %949

778:                                              ; preds = %771
  %779 = fcmp oeq double %770, 1.000000e+00
  br i1 %779, label %780, label %782

780:                                              ; preds = %778
  %781 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %781)
          to label %.critedge unwind label %776

782:                                              ; preds = %778
  %783 = fcmp oeq double %770, -1.000000e+00
  br i1 %783, label %784, label %787

784:                                              ; preds = %782
  %785 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %786 unwind label %776

786:                                              ; preds = %784
  call void @_ZN6Lepton9Operation10ReciprocalC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %785)
  br label %.invoke148

787:                                              ; preds = %782
  %788 = fcmp oeq double %770, 2.000000e+00
  br i1 %788, label %789, label %792

789:                                              ; preds = %787
  %790 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %791 unwind label %776

791:                                              ; preds = %789
  call void @_ZN6Lepton9Operation6SquareC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %790)
  br label %.invoke148

792:                                              ; preds = %787
  %793 = fcmp oeq double %770, 3.000000e+00
  br i1 %793, label %794, label %797

794:                                              ; preds = %792
  %795 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %796 unwind label %776

796:                                              ; preds = %794
  call void @_ZN6Lepton9Operation4CubeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %795)
  br label %.invoke148

797:                                              ; preds = %792
  %798 = fcmp oeq double %770, 5.000000e-01
  br i1 %798, label %799, label %802

799:                                              ; preds = %797
  %800 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #9
          to label %801 unwind label %776

801:                                              ; preds = %799
  call void @_ZN6Lepton9Operation4SqrtC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %800)
  br label %.invoke148

802:                                              ; preds = %797
  %803 = fcmp ord double %770, 0.000000e+00
  br i1 %803, label %804, label %941

804:                                              ; preds = %802
  %805 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #9
          to label %806 unwind label %776

806:                                              ; preds = %804
  call void @_ZN6Lepton9Operation13PowerConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(21) %805, double noundef %770)
  br label %.invoke148

.invoke148:                                       ; preds = %786, %791, %796, %801, %806
  %807 = phi ptr [ %805, %806 ], [ %800, %801 ], [ %795, %796 ], [ %790, %791 ], [ %785, %786 ]
  %808 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %807, ptr noundef nonnull align 8 dereferenceable(32) %808)
          to label %.critedge unwind label %776

809:                                              ; preds = %42
  %810 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %811 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %810)
          to label %812 unwind label %43

812:                                              ; preds = %809
  %813 = load ptr, ptr %811, align 8, !tbaa !7
  %814 = getelementptr inbounds i8, ptr %813, i64 24
  %815 = load ptr, ptr %814, align 8
  %816 = invoke noundef i32 %815(ptr noundef nonnull align 8 dereferenceable(8) %811)
          to label %817 unwind label %43

817:                                              ; preds = %812
  %818 = icmp eq i32 %816, 32
  br i1 %818, label %819, label %832

819:                                              ; preds = %817
  %820 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %821 unwind label %43

821:                                              ; preds = %819
  %822 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %823 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %822)
          to label %824 unwind label %830

824:                                              ; preds = %821
  %825 = call ptr @__dynamic_cast(ptr nonnull %823, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %826 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %825)
  %827 = fneg double %826
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %820, double noundef %827)
  %828 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %829 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %828)
          to label %.invoke unwind label %43

830:                                              ; preds = %821
  %831 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %820, i64 noundef 16) #10
  br label %949

832:                                              ; preds = %817
  %833 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %834 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %833)
          to label %835 unwind label %43

835:                                              ; preds = %832
  %836 = load ptr, ptr %834, align 8, !tbaa !7
  %837 = getelementptr inbounds i8, ptr %836, i64 24
  %838 = load ptr, ptr %837, align 8
  %839 = invoke noundef i32 %838(ptr noundef nonnull align 8 dereferenceable(8) %834)
          to label %840 unwind label %43

840:                                              ; preds = %835
  %841 = icmp eq i32 %839, 0
  br i1 %841, label %842, label %851

842:                                              ; preds = %840
  %843 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %844 unwind label %43

844:                                              ; preds = %842
  %845 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %846 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %845)
          to label %847 unwind label %849

847:                                              ; preds = %844
  %848 = fneg double %846
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %843, double noundef %848)
  br label %.invoke134

849:                                              ; preds = %844
  %850 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %843, i64 noundef 16) #10
  br label %949

851:                                              ; preds = %840
  %852 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %853 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %852)
          to label %854 unwind label %43

854:                                              ; preds = %851
  %855 = load ptr, ptr %853, align 8, !tbaa !7
  %856 = getelementptr inbounds i8, ptr %855, i64 24
  %857 = load ptr, ptr %856, align 8
  %858 = invoke noundef i32 %857(ptr noundef nonnull align 8 dereferenceable(8) %853)
          to label %859 unwind label %43

859:                                              ; preds = %854
  %860 = icmp eq i32 %858, 8
  br i1 %860, label %861, label %941

861:                                              ; preds = %859
  %862 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %863 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %862)
          to label %864 unwind label %43

864:                                              ; preds = %861
  %865 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %863, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %865)
          to label %.critedge unwind label %43

866:                                              ; preds = %42
  %867 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %868 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %867)
          to label %869 unwind label %43

869:                                              ; preds = %866
  %870 = load ptr, ptr %868, align 8, !tbaa !7
  %871 = getelementptr inbounds i8, ptr %870, i64 24
  %872 = load ptr, ptr %871, align 8
  %873 = invoke noundef i32 %872(ptr noundef nonnull align 8 dereferenceable(8) %868)
          to label %874 unwind label %43

874:                                              ; preds = %869
  %875 = icmp eq i32 %873, 32
  br i1 %875, label %876, label %893

876:                                              ; preds = %874
  %877 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %878 unwind label %43

878:                                              ; preds = %876
  %879 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %880 unwind label %885

880:                                              ; preds = %878
  %881 = call ptr @__dynamic_cast(ptr nonnull %879, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %882 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %881)
  %883 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %884 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %883)
          to label %887 unwind label %885

885:                                              ; preds = %880, %878
  %886 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %877, i64 noundef 16) #10
  br label %949

887:                                              ; preds = %880
  %888 = call ptr @__dynamic_cast(ptr nonnull %884, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %889 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %888)
  %890 = fmul double %882, %889
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %877, double noundef %890)
  %891 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %892 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %891)
          to label %.invoke unwind label %43

893:                                              ; preds = %874
  %894 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %895 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %894)
          to label %896 unwind label %43

896:                                              ; preds = %893
  %897 = load ptr, ptr %895, align 8, !tbaa !7
  %898 = getelementptr inbounds i8, ptr %897, i64 24
  %899 = load ptr, ptr %898, align 8
  %900 = invoke noundef i32 %899(ptr noundef nonnull align 8 dereferenceable(8) %895)
          to label %901 unwind label %43

901:                                              ; preds = %896
  %902 = icmp eq i32 %900, 0
  br i1 %902, label %903, label %917

903:                                              ; preds = %901
  %904 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %905 unwind label %43

905:                                              ; preds = %903
  %906 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %907 unwind label %912

907:                                              ; preds = %905
  %908 = call ptr @__dynamic_cast(ptr nonnull %906, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %909 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %908)
  %910 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %911 = invoke noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32) %910)
          to label %914 unwind label %912

912:                                              ; preds = %907, %905
  %913 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %904, i64 noundef 16) #10
  br label %949

914:                                              ; preds = %907
  %915 = fmul double %909, %911
  call void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %904, double noundef %915)
  br label %.invoke134

.invoke134:                                       ; preds = %114, %535, %847, %914
  %916 = phi ptr [ %904, %914 ], [ %843, %847 ], [ %534, %535 ], [ %113, %114 ]
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %916)
          to label %.critedge unwind label %43

917:                                              ; preds = %901
  %918 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %919 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %918)
          to label %920 unwind label %43

920:                                              ; preds = %917
  %921 = load ptr, ptr %919, align 8, !tbaa !7
  %922 = getelementptr inbounds i8, ptr %921, i64 24
  %923 = load ptr, ptr %922, align 8
  %924 = invoke noundef i32 %923(ptr noundef nonnull align 8 dereferenceable(8) %919)
          to label %925 unwind label %43

925:                                              ; preds = %920
  %926 = icmp eq i32 %924, 8
  br i1 %926, label %927, label %941

927:                                              ; preds = %925
  %928 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %929 unwind label %43

929:                                              ; preds = %927
  %930 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %931 unwind label %937

931:                                              ; preds = %929
  %932 = call ptr @__dynamic_cast(ptr nonnull %930, ptr nonnull @_ZTIN6Lepton9OperationE, ptr nonnull @_ZTIN6Lepton9Operation16MultiplyConstantE, i64 0) #8
  %933 = call noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16) %932)
  %934 = fneg double %933
  call void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %928, double noundef %934)
  %935 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #8
  %936 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Lepton18ExpressionTreeNode11getChildrenEv(ptr noundef nonnull align 8 dereferenceable(32) %935)
          to label %.invoke unwind label %43

937:                                              ; preds = %929
  %938 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %928, i64 noundef 16) #10
  br label %949

.invoke:                                          ; preds = %931, %887, %824
  %.sink149 = phi ptr [ %829, %824 ], [ %892, %887 ], [ %936, %931 ]
  %939 = phi ptr [ %820, %824 ], [ %877, %887 ], [ %928, %931 ]
  %940 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.sink149, i64 noundef 0) #8
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %939, ptr noundef nonnull align 8 dereferenceable(32) %940)
          to label %.critedge unwind label %43

941:                                              ; preds = %802, %741, %521, %512, %150, %96, %42, %925, %859
  %942 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Lepton18ExpressionTreeNode12getOperationEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %943 unwind label %43

943:                                              ; preds = %941
  %944 = load ptr, ptr %942, align 8, !tbaa !7
  %945 = getelementptr inbounds i8, ptr %944, i64 40
  %946 = load ptr, ptr %945, align 8
  %947 = invoke noundef ptr %946(ptr noundef nonnull align 8 dereferenceable(8) %942)
          to label %948 unwind label %43

948:                                              ; preds = %943
  invoke void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %947, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %.critedge unwind label %43

.critedge:                                        ; preds = %.invoke148, %.invoke147, %.invoke145, %.invoke144, %.invoke142, %.invoke141, %.invoke140, %.invoke137, %.invoke136, %.invoke135, %.invoke134, %.invoke, %775, %780, %543, %550, %675, %700, %727, %557, %332, %380, %405, %432, %171, %122, %131, %139, %158, %948, %864
  call void @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  ret void

949:                                              ; preds = %760, %776, %544, %732, %705, %678, %592, %559, %172, %437, %410, %383, %335, %252, %214, %174, %124, %133, %53, %55, %937, %912, %885, %849, %830, %43, %36
  %.pn120.pn = phi { ptr, i32 } [ %.pn120, %36 ], [ %44, %43 ], [ %886, %885 ], [ %913, %912 ], [ %938, %937 ], [ %831, %830 ], [ %850, %849 ], [ %56, %55 ], [ %54, %53 ], [ %125, %124 ], [ %134, %133 ], [ %173, %172 ], [ %175, %174 ], [ %215, %214 ], [ %253, %252 ], [ %.pn111, %335 ], [ %.pn109, %383 ], [ %.pn107, %410 ], [ %.pn105, %437 ], [ %545, %544 ], [ %560, %559 ], [ %593, %592 ], [ %.pn99, %678 ], [ %.pn97, %705 ], [ %.pn95, %732 ], [ %761, %760 ], [ %777, %776 ]
  call void @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  br label %950

950:                                              ; preds = %949, %20
  %.pn120.pn.pn = phi { ptr, i32 } [ %.pn120.pn, %949 ], [ %21, %20 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn120.pn.pn
}

declare noundef zeroext i1 @_ZNK6Lepton18ExpressionTreeNodeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Lepton18ExpressionTreeNodeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

; Function Attrs: nounwind
declare void @_ZN6Lepton18ExpressionTreeNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #5

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Lepton9Operation8ConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #2 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #7

declare void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIN6Lepton18ExpressionTreeNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Lepton18ExpressionTreeNodeESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

declare void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKSt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN6Lepton16ParsedExpression16getConstantValueERKNS_18ExpressionTreeNodeE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Lepton9Operation11AddConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #2 align 2

declare void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0

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

declare void @_ZN6Lepton18ExpressionTreeNodeC1EPNS_9OperationERKS0_S4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK6Lepton9Operation16MultiplyConstant8getValueEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Lepton9Operation16MultiplyConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Lepton9Operation13PowerConstantC2Ed(ptr noundef nonnull align 8 dereferenceable(21), double noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIN6Lepton18ExpressionTreeNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

attributes #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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #5 = { mustprogress nofree nounwind willreturn memory(read) }
attributes #6 = { nobuiltin allocsize(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 = { nobuiltin 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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{!8, !8, i64 0}
!8 = !{!"vtable pointer", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass