; LLVM IR from drohmer/cgp :: library/cgp/06_mat/functions/test/test_vec_mat.ll (ZN8cgp_test12test_vec_matEv)

; 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"

%"struct.cgp::matrix_stack" = type { %"struct.cgp::numarray_stack" }
%"struct.cgp::numarray_stack" = type { %"struct.cgp::numarray_stack.0", %"struct.cgp::numarray_stack.0" }
%"struct.cgp::numarray_stack.0" = type { float, float }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"struct.cgp::matrix_stack.1" = type { %"struct.cgp::numarray_stack.2" }
%"struct.cgp::numarray_stack.2" = type { %"struct.cgp::numarray_stack.3", %"struct.cgp::numarray_stack.3", %"struct.cgp::numarray_stack.3" }
%"struct.cgp::numarray_stack.3" = type { float, float, float }
%"struct.cgp::matrix_stack.4" = type { %"struct.cgp::numarray_stack.5" }
%"struct.cgp::numarray_stack.5" = type { %"struct.cgp::numarray_stack.6", %"struct.cgp::numarray_stack.6", %"struct.cgp::numarray_stack.6", %"struct.cgp::numarray_stack.6" }
%"struct.cgp::numarray_stack.6" = type { float, float, float, float }

@.str = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [96 x i8], align 1
@__func__._ZN8cgp_test12test_vec_matEv = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [47 x i8], align 1
@constinit = external hidden constant [9 x float], align 4
@.str.5 = external hidden unnamed_addr constant [25 x i8], align 1
@constinit.6 = external hidden constant [9 x float], align 4
@.str.7 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [47 x i8], align 1
@constinit.9 = external hidden constant [16 x float], align 4
@.str.10 = external hidden unnamed_addr constant [29 x i8], align 1
@constinit.11 = external hidden constant [16 x float], align 4
@.str.12 = external hidden unnamed_addr constant [207 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [53 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8cgp_test12test_vec_matEv() #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"struct.cgp::matrix_stack", align 4
  %2 = alloca %"class.std::initializer_list", align 8
  %3 = alloca [4 x float], align 4
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca %"struct.cgp::matrix_stack", align 4
  %15 = alloca %"struct.cgp::matrix_stack", align 4
  %16 = alloca %"class.std::initializer_list", align 8
  %17 = alloca [4 x float], align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca %"struct.cgp::matrix_stack", align 4
  %27 = alloca %"struct.cgp::matrix_stack", align 4
  %28 = alloca %"struct.cgp::matrix_stack", align 4
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca %"struct.cgp::matrix_stack.1", align 4
  %38 = alloca %"class.std::initializer_list", align 8
  %39 = alloca [9 x float], align 4
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator", align 1
  %48 = alloca %"struct.cgp::matrix_stack.1", align 4
  %49 = alloca %"struct.cgp::matrix_stack.1", align 4
  %50 = alloca %"class.std::initializer_list", align 8
  %51 = alloca [9 x float], align 4
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator", align 1
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator", align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator", align 1
  %60 = alloca %"struct.cgp::matrix_stack.1", align 4
  %61 = alloca %"struct.cgp::matrix_stack.1", align 4
  %62 = alloca %"struct.cgp::matrix_stack.1", align 4
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator", align 1
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::allocator", align 1
  %71 = alloca %"struct.cgp::matrix_stack.4", align 4
  %72 = alloca %"class.std::initializer_list", align 8
  %73 = alloca [16 x float], align 4
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator", align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator", align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::allocator", align 1
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator", align 1
  %82 = alloca %"struct.cgp::matrix_stack.4", align 4
  %83 = alloca %"struct.cgp::matrix_stack.4", align 4
  %84 = alloca %"class.std::initializer_list", align 8
  %85 = alloca [16 x float], align 4
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::allocator", align 1
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::allocator", align 1
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.std::allocator", align 1
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::allocator", align 1
  %94 = alloca %"struct.cgp::matrix_stack.4", align 4
  %95 = alloca %"struct.cgp::matrix_stack.4", align 4
  %96 = alloca %"struct.cgp::matrix_stack.4", align 4
  %97 = alloca %"struct.cgp::matrix_stack.4", align 4
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.std::allocator", align 1
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::allocator", align 1
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator", align 1
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::allocator", align 1
  %106 = alloca %"struct.cgp::numarray_stack.0", align 4
  %107 = alloca %"struct.cgp::numarray_stack.0", align 4
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca %"struct.cgp::numarray_stack.0", align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::allocator", align 1
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca %"class.std::allocator", align 1
  %117 = alloca %"class.std::__cxx11::basic_string", align 8
  %118 = alloca %"class.std::allocator", align 1
  %119 = alloca %"class.std::__cxx11::basic_string", align 8
  %120 = alloca %"class.std::allocator", align 1
  %121 = alloca %"struct.cgp::numarray_stack.0", align 4
  %122 = alloca %"struct.cgp::numarray_stack.0", align 4
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::allocator", align 1
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.std::allocator", align 1
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.std::allocator", align 1
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"class.std::allocator", align 1
  %133 = alloca %"struct.cgp::numarray_stack.0", align 4
  %134 = alloca %"struct.cgp::numarray_stack.0", align 4
  %135 = alloca i32, align 4
  %136 = alloca i32, align 4
  %137 = alloca %"struct.cgp::numarray_stack.0", align 4
  %138 = alloca i32, align 4
  %139 = alloca i32, align 4
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.std::allocator", align 1
  %142 = alloca %"class.std::__cxx11::basic_string", align 8
  %143 = alloca %"class.std::allocator", align 1
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.std::allocator", align 1
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.std::allocator", align 1
  %148 = alloca %"struct.cgp::numarray_stack.0", align 4
  %149 = alloca %"struct.cgp::numarray_stack.0", align 4
  %150 = alloca i32, align 4
  %151 = alloca i32, align 4
  %152 = alloca %"class.std::__cxx11::basic_string", align 8
  %153 = alloca %"class.std::allocator", align 1
  %154 = alloca %"class.std::__cxx11::basic_string", align 8
  %155 = alloca %"class.std::allocator", align 1
  %156 = alloca %"class.std::__cxx11::basic_string", align 8
  %157 = alloca %"class.std::allocator", align 1
  %158 = alloca %"class.std::__cxx11::basic_string", align 8
  %159 = alloca %"class.std::allocator", align 1
  %160 = alloca %"struct.cgp::numarray_stack.0", align 4
  %161 = alloca %"struct.cgp::numarray_stack.0", align 4
  %162 = alloca i32, align 4
  %163 = alloca i32, align 4
  %164 = alloca %"struct.cgp::numarray_stack.0", align 4
  %165 = alloca i32, align 4
  %166 = alloca i32, align 4
  %167 = alloca %"class.std::__cxx11::basic_string", align 8
  %168 = alloca %"class.std::allocator", align 1
  %169 = alloca %"class.std::__cxx11::basic_string", align 8
  %170 = alloca %"class.std::allocator", align 1
  %171 = alloca %"class.std::__cxx11::basic_string", align 8
  %172 = alloca %"class.std::allocator", align 1
  %173 = alloca %"class.std::__cxx11::basic_string", align 8
  %174 = alloca %"class.std::allocator", align 1
  %175 = alloca %"struct.cgp::numarray_stack.0", align 4
  %176 = alloca %"struct.cgp::numarray_stack.0", align 4
  %177 = alloca i32, align 4
  %178 = alloca i32, align 4
  %179 = alloca %"class.std::__cxx11::basic_string", align 8
  %180 = alloca %"class.std::allocator", align 1
  %181 = alloca %"class.std::__cxx11::basic_string", align 8
  %182 = alloca %"class.std::allocator", align 1
  %183 = alloca %"class.std::__cxx11::basic_string", align 8
  %184 = alloca %"class.std::allocator", align 1
  %185 = alloca %"class.std::__cxx11::basic_string", align 8
  %186 = alloca %"class.std::allocator", align 1
  %187 = alloca %"struct.cgp::numarray_stack.3", align 4
  %188 = alloca %"struct.cgp::numarray_stack.3", align 4
  %189 = alloca i32, align 4
  %190 = alloca i32, align 4
  %191 = alloca i32, align 4
  %192 = alloca { <2 x float>, float }, align 8
  %193 = alloca %"struct.cgp::numarray_stack.3", align 4
  %194 = alloca i32, align 4
  %195 = alloca i32, align 4
  %196 = alloca i32, align 4
  %197 = alloca %"class.std::__cxx11::basic_string", align 8
  %198 = alloca %"class.std::allocator", align 1
  %199 = alloca %"class.std::__cxx11::basic_string", align 8
  %200 = alloca %"class.std::allocator", align 1
  %201 = alloca %"class.std::__cxx11::basic_string", align 8
  %202 = alloca %"class.std::allocator", align 1
  %203 = alloca %"class.std::__cxx11::basic_string", align 8
  %204 = alloca %"class.std::allocator", align 1
  %205 = alloca %"struct.cgp::numarray_stack.3", align 4
  %206 = alloca %"struct.cgp::numarray_stack.3", align 4
  %207 = alloca i32, align 4
  %208 = alloca i32, align 4
  %209 = alloca i32, align 4
  %210 = alloca { <2 x float>, float }, align 8
  %211 = alloca %"class.std::__cxx11::basic_string", align 8
  %212 = alloca %"class.std::allocator", align 1
  %213 = alloca %"class.std::__cxx11::basic_string", align 8
  %214 = alloca %"class.std::allocator", align 1
  %215 = alloca %"class.std::__cxx11::basic_string", align 8
  %216 = alloca %"class.std::allocator", align 1
  %217 = alloca %"class.std::__cxx11::basic_string", align 8
  %218 = alloca %"class.std::allocator", align 1
  %219 = alloca %"struct.cgp::numarray_stack.3", align 4
  %220 = alloca %"struct.cgp::numarray_stack.3", align 4
  %221 = alloca i32, align 4
  %222 = alloca i32, align 4
  %223 = alloca i32, align 4
  %224 = alloca { <2 x float>, float }, align 8
  %225 = alloca %"struct.cgp::numarray_stack.3", align 4
  %226 = alloca i32, align 4
  %227 = alloca i32, align 4
  %228 = alloca i32, align 4
  %229 = alloca %"class.std::__cxx11::basic_string", align 8
  %230 = alloca %"class.std::allocator", align 1
  %231 = alloca %"class.std::__cxx11::basic_string", align 8
  %232 = alloca %"class.std::allocator", align 1
  %233 = alloca %"class.std::__cxx11::basic_string", align 8
  %234 = alloca %"class.std::allocator", align 1
  %235 = alloca %"class.std::__cxx11::basic_string", align 8
  %236 = alloca %"class.std::allocator", align 1
  %237 = alloca %"struct.cgp::numarray_stack.3", align 4
  %238 = alloca %"struct.cgp::numarray_stack.3", align 4
  %239 = alloca i32, align 4
  %240 = alloca i32, align 4
  %241 = alloca i32, align 4
  %242 = alloca { <2 x float>, float }, align 8
  %243 = alloca %"class.std::__cxx11::basic_string", align 8
  %244 = alloca %"class.std::allocator", align 1
  %245 = alloca %"class.std::__cxx11::basic_string", align 8
  %246 = alloca %"class.std::allocator", align 1
  %247 = alloca %"class.std::__cxx11::basic_string", align 8
  %248 = alloca %"class.std::allocator", align 1
  %249 = alloca %"class.std::__cxx11::basic_string", align 8
  %250 = alloca %"class.std::allocator", align 1
  %251 = alloca %"struct.cgp::numarray_stack.3", align 4
  %252 = alloca %"struct.cgp::numarray_stack.3", align 4
  %253 = alloca i32, align 4
  %254 = alloca i32, align 4
  %255 = alloca i32, align 4
  %256 = alloca { <2 x float>, float }, align 8
  %257 = alloca %"struct.cgp::numarray_stack.3", align 4
  %258 = alloca i32, align 4
  %259 = alloca i32, align 4
  %260 = alloca i32, align 4
  %261 = alloca %"class.std::__cxx11::basic_string", align 8
  %262 = alloca %"class.std::allocator", align 1
  %263 = alloca %"class.std::__cxx11::basic_string", align 8
  %264 = alloca %"class.std::allocator", align 1
  %265 = alloca %"class.std::__cxx11::basic_string", align 8
  %266 = alloca %"class.std::allocator", align 1
  %267 = alloca %"class.std::__cxx11::basic_string", align 8
  %268 = alloca %"class.std::allocator", align 1
  %269 = alloca %"struct.cgp::numarray_stack.3", align 4
  %270 = alloca %"struct.cgp::numarray_stack.3", align 4
  %271 = alloca i32, align 4
  %272 = alloca i32, align 4
  %273 = alloca i32, align 4
  %274 = alloca { <2 x float>, float }, align 8
  %275 = alloca %"class.std::__cxx11::basic_string", align 8
  %276 = alloca %"class.std::allocator", align 1
  %277 = alloca %"class.std::__cxx11::basic_string", align 8
  %278 = alloca %"class.std::allocator", align 1
  %279 = alloca %"class.std::__cxx11::basic_string", align 8
  %280 = alloca %"class.std::allocator", align 1
  %281 = alloca %"class.std::__cxx11::basic_string", align 8
  %282 = alloca %"class.std::allocator", align 1
  %283 = alloca %"struct.cgp::numarray_stack.3", align 4
  %284 = alloca %"struct.cgp::numarray_stack.3", align 4
  %285 = alloca i32, align 4
  %286 = alloca i32, align 4
  %287 = alloca i32, align 4
  %288 = alloca { <2 x float>, float }, align 8
  %289 = alloca %"struct.cgp::numarray_stack.3", align 4
  %290 = alloca i32, align 4
  %291 = alloca i32, align 4
  %292 = alloca i32, align 4
  %293 = alloca %"class.std::__cxx11::basic_string", align 8
  %294 = alloca %"class.std::allocator", align 1
  %295 = alloca %"class.std::__cxx11::basic_string", align 8
  %296 = alloca %"class.std::allocator", align 1
  %297 = alloca %"class.std::__cxx11::basic_string", align 8
  %298 = alloca %"class.std::allocator", align 1
  %299 = alloca %"class.std::__cxx11::basic_string", align 8
  %300 = alloca %"class.std::allocator", align 1
  %301 = alloca %"struct.cgp::numarray_stack.3", align 4
  %302 = alloca %"struct.cgp::numarray_stack.3", align 4
  %303 = alloca i32, align 4
  %304 = alloca i32, align 4
  %305 = alloca i32, align 4
  %306 = alloca { <2 x float>, float }, align 8
  %307 = alloca %"class.std::__cxx11::basic_string", align 8
  %308 = alloca %"class.std::allocator", align 1
  %309 = alloca %"class.std::__cxx11::basic_string", align 8
  %310 = alloca %"class.std::allocator", align 1
  %311 = alloca %"class.std::__cxx11::basic_string", align 8
  %312 = alloca %"class.std::allocator", align 1
  %313 = alloca %"class.std::__cxx11::basic_string", align 8
  %314 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %1) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %2) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #9
  store float 1.000000e+00, ptr %3, align 4, !tbaa !5
  %315 = getelementptr inbounds float, ptr %3, i64 1
  store float 1.500000e+00, ptr %315, align 4, !tbaa !5
  %316 = getelementptr inbounds float, ptr %3, i64 2
  store float 2.500000e+00, ptr %316, align 4, !tbaa !5
  %317 = getelementptr inbounds float, ptr %3, i64 3
  store float 0x4008CCCCC0000000, ptr %317, align 4, !tbaa !5
  %318 = getelementptr inbounds %"class.std::initializer_list", ptr %2, i32 0, i32 0
  store ptr %3, ptr %318, align 8, !tbaa !9
  %319 = getelementptr inbounds %"class.std::initializer_list", ptr %2, i32 0, i32 1
  store i64 4, ptr %319, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi2ELi2EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %2) #9
  %320 = call noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16) %1)
  %321 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %320, float noundef 0xBFE4CCCCC0000000)
  %322 = zext i1 %321 to i32
  %323 = icmp eq i32 %322, 0
  br i1 %323, label %324, label %354

324:                                              ; preds = %0
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %325 unwind label %330

325:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %326 unwind label %334

326:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %327 unwind label %338

327:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %328 unwind label %342

328:                                              ; preds = %327
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %12, i32 noundef 15) #10
          to label %329 unwind label %346

329:                                              ; preds = %328
  unreachable

330:                                              ; preds = %324
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %6, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %7, align 4
  br label %353

334:                                              ; preds = %325
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %6, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %7, align 4
  br label %352

338:                                              ; preds = %326
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %6, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %7, align 4
  br label %351

342:                                              ; preds = %327
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %6, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %7, align 4
  br label %350

346:                                              ; preds = %328
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %6, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %350

350:                                              ; preds = %346, %342
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %351

351:                                              ; preds = %350, %338
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  br label %352

352:                                              ; preds = %351, %334
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  br label %353

353:                                              ; preds = %352, %330
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #9
  br label %464

354:                                              ; preds = %0
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #9
  %355 = call { <2 x float>, <2 x float> } @_ZN3cgp7inverseERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16) %1)
  %356 = getelementptr inbounds %"struct.cgp::matrix_stack", ptr %14, i32 0, i32 0
  %357 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %356, i32 0, i32 0
  %358 = extractvalue { <2 x float>, <2 x float> } %355, 0
  store <2 x float> %358, ptr %357, align 4
  %359 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %356, i32 0, i32 1
  %360 = extractvalue { <2 x float>, <2 x float> } %355, 1
  store <2 x float> %360, ptr %359, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #9
  store float 0xC01313B100000000, ptr %17, align 4, !tbaa !5
  %361 = getelementptr inbounds float, ptr %17, i64 1
  store float 0x4002762740000000, ptr %361, align 4, !tbaa !5
  %362 = getelementptr inbounds float, ptr %17, i64 2
  store float 0x400EC4EBE0000000, ptr %362, align 4, !tbaa !5
  %363 = getelementptr inbounds float, ptr %17, i64 3
  store float 0xBFF89D8940000000, ptr %363, align 4, !tbaa !5
  %364 = getelementptr inbounds %"class.std::initializer_list", ptr %16, i32 0, i32 0
  store ptr %17, ptr %364, align 8, !tbaa !9
  %365 = getelementptr inbounds %"class.std::initializer_list", ptr %16, i32 0, i32 1
  store i64 4, ptr %365, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi2ELi2EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %16)
  %366 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi2ELi2ELi2ELi2EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(16) %14, ptr noundef nonnull align 4 dereferenceable(16) %15)
  %367 = zext i1 %366 to i32
  %368 = icmp eq i32 %367, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  br i1 %368, label %369, label %399

369:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %370 unwind label %375

370:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %371 unwind label %379

371:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %372 unwind label %383

372:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %373 unwind label %387

373:                                              ; preds = %372
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %24, i32 noundef 16) #10
          to label %374 unwind label %391

374:                                              ; preds = %373
  unreachable

375:                                              ; preds = %369
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %6, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %7, align 4
  br label %398

379:                                              ; preds = %370
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %6, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %7, align 4
  br label %397

383:                                              ; preds = %371
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %6, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %7, align 4
  br label %396

387:                                              ; preds = %372
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %6, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %7, align 4
  br label %395

391:                                              ; preds = %373
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %6, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %395

395:                                              ; preds = %391, %387
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  br label %396

396:                                              ; preds = %395, %383
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %397

397:                                              ; preds = %396, %379
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %398

398:                                              ; preds = %397, %375
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  br label %464

399:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #9
  %400 = call { <2 x float>, <2 x float> } @_ZN3cgp7inverseERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16) %1)
  %401 = getelementptr inbounds %"struct.cgp::matrix_stack", ptr %27, i32 0, i32 0
  %402 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %401, i32 0, i32 0
  %403 = extractvalue { <2 x float>, <2 x float> } %400, 0
  store <2 x float> %403, ptr %402, align 4
  %404 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %401, i32 0, i32 1
  %405 = extractvalue { <2 x float>, <2 x float> } %400, 1
  store <2 x float> %405, ptr %404, align 4
  %406 = call { <2 x float>, <2 x float> } @_ZN3cgpmlIfLi2ELi2ELi2EEENS_12matrix_stackIT_XT0_EXT2_EEERKNS1_IS2_XT0_EXT1_EEERKNS1_IS2_XT1_EXT2_EEE(ptr noundef nonnull align 4 dereferenceable(16) %27, ptr noundef nonnull align 4 dereferenceable(16) %1)
  %407 = getelementptr inbounds %"struct.cgp::matrix_stack", ptr %26, i32 0, i32 0
  %408 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %407, i32 0, i32 0
  %409 = extractvalue { <2 x float>, <2 x float> } %406, 0
  store <2 x float> %409, ptr %408, align 4
  %410 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %407, i32 0, i32 1
  %411 = extractvalue { <2 x float>, <2 x float> } %406, 1
  store <2 x float> %411, ptr %410, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #9
  %412 = call { <2 x float>, <2 x float> } @_ZN3cgp12matrix_stackIfLi2ELi2EE14build_identityEv()
  %413 = getelementptr inbounds %"struct.cgp::matrix_stack", ptr %28, i32 0, i32 0
  %414 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %413, i32 0, i32 0
  %415 = extractvalue { <2 x float>, <2 x float> } %412, 0
  store <2 x float> %415, ptr %414, align 4
  %416 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %413, i32 0, i32 1
  %417 = extractvalue { <2 x float>, <2 x float> } %412, 1
  store <2 x float> %417, ptr %416, align 4
  %418 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi2ELi2ELi2ELi2EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %419 = zext i1 %418 to i32
  %420 = icmp eq i32 %419, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #9
  br i1 %420, label %421, label %451

421:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %422 unwind label %427

422:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %423 unwind label %431

423:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %424 unwind label %435

424:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %425 unwind label %439

425:                                              ; preds = %424
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %35, i32 noundef 17) #10
          to label %426 unwind label %443

426:                                              ; preds = %425
  unreachable

427:                                              ; preds = %421
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %6, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %7, align 4
  br label %450

431:                                              ; preds = %422
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %6, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %7, align 4
  br label %449

435:                                              ; preds = %423
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %6, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %7, align 4
  br label %448

439:                                              ; preds = %424
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %6, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %7, align 4
  br label %447

443:                                              ; preds = %425
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %6, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %447

447:                                              ; preds = %443, %439
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %448

448:                                              ; preds = %447, %435
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  br label %449

449:                                              ; preds = %448, %431
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %450

450:                                              ; preds = %449, %427
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %464

451:                                              ; preds = %399
  call void @llvm.lifetime.end.p0(i64 16, ptr %1) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr %37) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr %39) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 4 @constinit, i64 36, i1 false), !tbaa.struct !14
  %452 = getelementptr inbounds %"class.std::initializer_list", ptr %38, i32 0, i32 0
  store ptr %39, ptr %452, align 8, !tbaa !9
  %453 = getelementptr inbounds %"class.std::initializer_list", ptr %38, i32 0, i32 1
  store i64 9, ptr %453, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi3ELi3EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(36) %37, ptr noundef nonnull align 8 dereferenceable(16) %38)
  call void @llvm.lifetime.end.p0(i64 36, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #9
  %454 = call noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi3ELi3EEE(ptr noundef nonnull align 4 dereferenceable(36) %37)
  %455 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %454, float noundef 0x40463147A0000000)
  %456 = zext i1 %455 to i32
  %457 = icmp eq i32 %456, 0
  br i1 %457, label %458, label %489

458:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %459 unwind label %465

459:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %460 unwind label %469

460:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %461 unwind label %473

461:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %462 unwind label %477

462:                                              ; preds = %461
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %46, i32 noundef 23) #10
          to label %463 unwind label %481

463:                                              ; preds = %462
  unreachable

464:                                              ; preds = %450, %398, %353
  call void @llvm.lifetime.end.p0(i64 16, ptr %1) #9
  br label %1174

465:                                              ; preds = %458
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %6, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %7, align 4
  br label %488

469:                                              ; preds = %459
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %6, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %7, align 4
  br label %487

473:                                              ; preds = %460
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %6, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %7, align 4
  br label %486

477:                                              ; preds = %461
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %6, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %7, align 4
  br label %485

481:                                              ; preds = %462
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %6, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %485

485:                                              ; preds = %481, %477
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %486

486:                                              ; preds = %485, %473
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  br label %487

487:                                              ; preds = %486, %469
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  br label %488

488:                                              ; preds = %487, %465
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  br label %572

489:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 36, ptr %48) #9
  call void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi3ELi3EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.1") align 4 %48, ptr noundef nonnull align 4 dereferenceable(36) %37)
  call void @llvm.lifetime.start.p0(i64 36, ptr %49) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr %51) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 4 @constinit.6, i64 36, i1 false), !tbaa.struct !14
  %490 = getelementptr inbounds %"class.std::initializer_list", ptr %50, i32 0, i32 0
  store ptr %51, ptr %490, align 8, !tbaa !9
  %491 = getelementptr inbounds %"class.std::initializer_list", ptr %50, i32 0, i32 1
  store i64 9, ptr %491, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi3ELi3EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(36) %49, ptr noundef nonnull align 8 dereferenceable(16) %50)
  %492 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi3ELi3ELi3ELi3EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(36) %48, ptr noundef nonnull align 4 dereferenceable(36) %49)
  %493 = zext i1 %492 to i32
  %494 = icmp eq i32 %493, 0
  call void @llvm.lifetime.end.p0(i64 36, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %48) #9
  br i1 %494, label %495, label %525

495:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %496 unwind label %501

496:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %497 unwind label %505

497:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %498 unwind label %509

498:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %499 unwind label %513

499:                                              ; preds = %498
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %58, i32 noundef 24) #10
          to label %500 unwind label %517

500:                                              ; preds = %499
  unreachable

501:                                              ; preds = %495
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %6, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %7, align 4
  br label %524

505:                                              ; preds = %496
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %6, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %7, align 4
  br label %523

509:                                              ; preds = %497
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %6, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %7, align 4
  br label %522

513:                                              ; preds = %498
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %6, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %7, align 4
  br label %521

517:                                              ; preds = %499
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %6, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  br label %521

521:                                              ; preds = %517, %513
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  br label %522

522:                                              ; preds = %521, %509
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  br label %523

523:                                              ; preds = %522, %505
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  br label %524

524:                                              ; preds = %523, %501
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #9
  br label %572

525:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 36, ptr %60) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr %61) #9
  call void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi3ELi3EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.1") align 4 %61, ptr noundef nonnull align 4 dereferenceable(36) %37)
  call void @_ZN3cgpmlIfLi3ELi3ELi3EEENS_12matrix_stackIT_XT0_EXT2_EEERKNS1_IS2_XT0_EXT1_EEERKNS1_IS2_XT1_EXT2_EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.1") align 4 %60, ptr noundef nonnull align 4 dereferenceable(36) %61, ptr noundef nonnull align 4 dereferenceable(36) %37)
  call void @llvm.lifetime.start.p0(i64 36, ptr %62) #9
  call void @_ZN3cgp12matrix_stackIfLi3ELi3EE14build_identityEv(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.1") align 4 %62)
  %526 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi3ELi3ELi3ELi3EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(36) %60, ptr noundef nonnull align 4 dereferenceable(36) %62)
  %527 = zext i1 %526 to i32
  %528 = icmp eq i32 %527, 0
  call void @llvm.lifetime.end.p0(i64 36, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %60) #9
  br i1 %528, label %529, label %559

529:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %530 unwind label %535

530:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %531 unwind label %539

531:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %532 unwind label %543

532:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %533 unwind label %547

533:                                              ; preds = %532
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(32) %69, i32 noundef 25) #10
          to label %534 unwind label %551

534:                                              ; preds = %533
  unreachable

535:                                              ; preds = %529
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %6, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %7, align 4
  br label %558

539:                                              ; preds = %530
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %6, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %7, align 4
  br label %557

543:                                              ; preds = %531
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %6, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %7, align 4
  br label %556

547:                                              ; preds = %532
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %6, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %7, align 4
  br label %555

551:                                              ; preds = %533
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %6, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  br label %555

555:                                              ; preds = %551, %547
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #9
  br label %556

556:                                              ; preds = %555, %543
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  br label %557

557:                                              ; preds = %556, %539
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  br label %558

558:                                              ; preds = %557, %535
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #9
  br label %572

559:                                              ; preds = %525
  call void @llvm.lifetime.end.p0(i64 36, ptr %37) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr %71) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr %73) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %73, ptr align 4 @constinit.9, i64 64, i1 false), !tbaa.struct !16
  %560 = getelementptr inbounds %"class.std::initializer_list", ptr %72, i32 0, i32 0
  store ptr %73, ptr %560, align 8, !tbaa !9
  %561 = getelementptr inbounds %"class.std::initializer_list", ptr %72, i32 0, i32 1
  store i64 16, ptr %561, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi4ELi4EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(64) %71, ptr noundef nonnull align 8 dereferenceable(16) %72)
  call void @llvm.lifetime.end.p0(i64 64, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #9
  %562 = call noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi4ELi4EEE(ptr noundef nonnull align 4 dereferenceable(64) %71)
  %563 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %562, float noundef 0xC03202EA60000000)
  %564 = zext i1 %563 to i32
  %565 = icmp eq i32 %564, 0
  br i1 %565, label %566, label %597

566:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %567 unwind label %573

567:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %568 unwind label %577

568:                                              ; preds = %567
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %569 unwind label %581

569:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %570 unwind label %585

570:                                              ; preds = %569
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(32) %80, i32 noundef 32) #10
          to label %571 unwind label %589

571:                                              ; preds = %570
  unreachable

572:                                              ; preds = %558, %524, %488
  call void @llvm.lifetime.end.p0(i64 36, ptr %37) #9
  br label %1174

573:                                              ; preds = %566
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %6, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %7, align 4
  br label %596

577:                                              ; preds = %567
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %6, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %7, align 4
  br label %595

581:                                              ; preds = %568
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %6, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %7, align 4
  br label %594

585:                                              ; preds = %569
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %6, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %7, align 4
  br label %593

589:                                              ; preds = %570
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %6, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  br label %593

593:                                              ; preds = %589, %585
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  br label %594

594:                                              ; preds = %593, %581
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  br label %595

595:                                              ; preds = %594, %577
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %596

596:                                              ; preds = %595, %573
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #9
  br label %680

597:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 64, ptr %82) #9
  call void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi4ELi4EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4 %82, ptr noundef nonnull align 4 dereferenceable(64) %71)
  call void @llvm.lifetime.start.p0(i64 64, ptr %83) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr %85) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 4 @constinit.11, i64 64, i1 false), !tbaa.struct !16
  %598 = getelementptr inbounds %"class.std::initializer_list", ptr %84, i32 0, i32 0
  store ptr %85, ptr %598, align 8, !tbaa !9
  %599 = getelementptr inbounds %"class.std::initializer_list", ptr %84, i32 0, i32 1
  store i64 16, ptr %599, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi4ELi4EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(64) %83, ptr noundef nonnull align 8 dereferenceable(16) %84)
  %600 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi4ELi4ELi4ELi4EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(64) %82, ptr noundef nonnull align 4 dereferenceable(64) %83)
  %601 = zext i1 %600 to i32
  %602 = icmp eq i32 %601, 0
  call void @llvm.lifetime.end.p0(i64 64, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %82) #9
  br i1 %602, label %603, label %633

603:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %604 unwind label %609

604:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %605 unwind label %613

605:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 32, ptr %90) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %606 unwind label %617

606:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %607 unwind label %621

607:                                              ; preds = %606
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 8 dereferenceable(32) %92, i32 noundef 33) #10
          to label %608 unwind label %625

608:                                              ; preds = %607
  unreachable

609:                                              ; preds = %603
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %6, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %7, align 4
  br label %632

613:                                              ; preds = %604
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %6, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %7, align 4
  br label %631

617:                                              ; preds = %605
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %6, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %7, align 4
  br label %630

621:                                              ; preds = %606
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %6, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %7, align 4
  br label %629

625:                                              ; preds = %607
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %6, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  br label %629

629:                                              ; preds = %625, %621
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #9
  br label %630

630:                                              ; preds = %629, %617
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #9
  br label %631

631:                                              ; preds = %630, %613
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  br label %632

632:                                              ; preds = %631, %609
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #9
  br label %680

633:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 64, ptr %94) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr %95) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr %96) #9
  call void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi4ELi4EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4 %96, ptr noundef nonnull align 4 dereferenceable(64) %71)
  call void @_ZN3cgpmlERKNS_12matrix_stackIfLi4ELi4EEES3_(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4 %95, ptr noundef nonnull align 4 dereferenceable(64) %96, ptr noundef nonnull align 4 dereferenceable(64) %71)
  call void @llvm.lifetime.start.p0(i64 64, ptr %97) #9
  call void @_ZN3cgp12matrix_stackIfLi4ELi4EE14build_identityEv(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4 %97)
  call void @_ZN3cgpmiIfLi4ELi4EEENS_12matrix_stackIT_XT0_EXT1_EEERKS3_S5_(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4 %94, ptr noundef nonnull align 4 dereferenceable(64) %95, ptr noundef nonnull align 4 dereferenceable(64) %97)
  %634 = call noundef float @_ZN3cgp4normIfLi4ELi4EEET_RKNS_12matrix_stackIS1_XT0_EXT1_EEE(ptr noundef nonnull align 4 dereferenceable(64) %94)
  %635 = fcmp olt float %634, 0x3F847AE140000000
  %636 = zext i1 %635 to i32
  %637 = icmp eq i32 %636, 0
  call void @llvm.lifetime.end.p0(i64 64, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %94) #9
  br i1 %637, label %638, label %668

638:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 32, ptr %98) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %639 unwind label %644

639:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %640 unwind label %648

640:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 32, ptr %102) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %641 unwind label %652

641:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %642 unwind label %656

642:                                              ; preds = %641
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(32) %104, i32 noundef 34) #10
          to label %643 unwind label %660

643:                                              ; preds = %642
  unreachable

644:                                              ; preds = %638
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %6, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %7, align 4
  br label %667

648:                                              ; preds = %639
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %6, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %7, align 4
  br label %666

652:                                              ; preds = %640
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %6, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %7, align 4
  br label %665

656:                                              ; preds = %641
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %6, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %7, align 4
  br label %664

660:                                              ; preds = %642
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %6, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #9
  br label %664

664:                                              ; preds = %660, %656
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  br label %665

665:                                              ; preds = %664, %652
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  br label %666

666:                                              ; preds = %665, %648
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  br label %667

667:                                              ; preds = %666, %644
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #9
  br label %680

668:                                              ; preds = %633
  call void @llvm.lifetime.end.p0(i64 64, ptr %71) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #9
  store i32 1, ptr %108, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #9
  store i32 0, ptr %109, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %107, ptr noundef nonnull align 4 dereferenceable(4) %108, ptr noundef nonnull align 4 dereferenceable(4) %109)
  %669 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %107)
  store <2 x float> %669, ptr %106, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #9
  store i32 1, ptr %111, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #9
  store i32 0, ptr %112, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %110, ptr noundef nonnull align 4 dereferenceable(4) %111, ptr noundef nonnull align 4 dereferenceable(4) %112)
  %670 = call noundef float @_ZN3cgp3dotIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEES5_(ptr noundef nonnull align 4 dereferenceable(8) %106, ptr noundef nonnull align 4 dereferenceable(8) %110)
  %671 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %670, float noundef 0.000000e+00)
  %672 = zext i1 %671 to i32
  %673 = icmp eq i32 %672, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  br i1 %673, label %674, label %705

674:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 32, ptr %113) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %675 unwind label %681

675:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 32, ptr %115) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %676 unwind label %685

676:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 32, ptr %117) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %118)
          to label %677 unwind label %689

677:                                              ; preds = %676
  call void @llvm.lifetime.start.p0(i64 32, ptr %119) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %120)
          to label %678 unwind label %693

678:                                              ; preds = %677
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 8 dereferenceable(32) %119, i32 noundef 40) #10
          to label %679 unwind label %697

679:                                              ; preds = %678
  unreachable

680:                                              ; preds = %667, %632, %596
  call void @llvm.lifetime.end.p0(i64 64, ptr %71) #9
  br label %1174

681:                                              ; preds = %674
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %6, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %7, align 4
  br label %704

685:                                              ; preds = %675
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %6, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %7, align 4
  br label %703

689:                                              ; preds = %676
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %6, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %7, align 4
  br label %702

693:                                              ; preds = %677
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %6, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %7, align 4
  br label %701

697:                                              ; preds = %678
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %6, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  br label %701

701:                                              ; preds = %697, %693
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #9
  br label %702

702:                                              ; preds = %701, %689
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #9
  br label %703

703:                                              ; preds = %702, %685
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  br label %704

704:                                              ; preds = %703, %681
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #9
  br label %1174

705:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #9
  store i32 1, ptr %123, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #9
  store i32 0, ptr %124, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %122, ptr noundef nonnull align 4 dereferenceable(4) %123, ptr noundef nonnull align 4 dereferenceable(4) %124)
  %706 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %122)
  store <2 x float> %706, ptr %121, align 4
  %707 = call noundef float @_ZN3cgp4normIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEE(ptr noundef nonnull align 4 dereferenceable(8) %121)
  %708 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %707, float noundef 1.000000e+00)
  %709 = zext i1 %708 to i32
  %710 = icmp eq i32 %709, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  br i1 %710, label %711, label %741

711:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 32, ptr %125) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %712 unwind label %717

712:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 32, ptr %127) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %128) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %128)
          to label %713 unwind label %721

713:                                              ; preds = %712
  call void @llvm.lifetime.start.p0(i64 32, ptr %129) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %714 unwind label %725

714:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 32, ptr %131) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %132) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %132)
          to label %715 unwind label %729

715:                                              ; preds = %714
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 8 dereferenceable(32) %131, i32 noundef 41) #10
          to label %716 unwind label %733

716:                                              ; preds = %715
  unreachable

717:                                              ; preds = %711
  %718 = landingpad { ptr, i32 }
          cleanup
  %719 = extractvalue { ptr, i32 } %718, 0
  store ptr %719, ptr %6, align 8
  %720 = extractvalue { ptr, i32 } %718, 1
  store i32 %720, ptr %7, align 4
  br label %740

721:                                              ; preds = %712
  %722 = landingpad { ptr, i32 }
          cleanup
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %6, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %7, align 4
  br label %739

725:                                              ; preds = %713
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %6, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %7, align 4
  br label %738

729:                                              ; preds = %714
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %6, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %7, align 4
  br label %737

733:                                              ; preds = %715
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %6, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #9
  br label %737

737:                                              ; preds = %733, %729
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #9
  br label %738

738:                                              ; preds = %737, %725
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #9
  br label %739

739:                                              ; preds = %738, %721
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #9
  br label %740

740:                                              ; preds = %739, %717
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #9
  br label %1174

741:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #9
  store i32 0, ptr %135, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #9
  store i32 1, ptr %136, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %134, ptr noundef nonnull align 4 dereferenceable(4) %135, ptr noundef nonnull align 4 dereferenceable(4) %136)
  %742 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %134)
  store <2 x float> %742, ptr %133, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #9
  store i32 0, ptr %138, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #9
  store i32 1, ptr %139, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %137, ptr noundef nonnull align 4 dereferenceable(4) %138, ptr noundef nonnull align 4 dereferenceable(4) %139)
  %743 = call noundef float @_ZN3cgp3dotIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEES5_(ptr noundef nonnull align 4 dereferenceable(8) %133, ptr noundef nonnull align 4 dereferenceable(8) %137)
  %744 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %743, float noundef 0.000000e+00)
  %745 = zext i1 %744 to i32
  %746 = icmp eq i32 %745, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #9
  br i1 %746, label %747, label %777

747:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 32, ptr %140) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %141)
          to label %748 unwind label %753

748:                                              ; preds = %747
  call void @llvm.lifetime.start.p0(i64 32, ptr %142) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %143) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %143)
          to label %749 unwind label %757

749:                                              ; preds = %748
  call void @llvm.lifetime.start.p0(i64 32, ptr %144) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %750 unwind label %761

750:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %147) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %147)
          to label %751 unwind label %765

751:                                              ; preds = %750
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull align 8 dereferenceable(32) %146, i32 noundef 43) #10
          to label %752 unwind label %769

752:                                              ; preds = %751
  unreachable

753:                                              ; preds = %747
  %754 = landingpad { ptr, i32 }
          cleanup
  %755 = extractvalue { ptr, i32 } %754, 0
  store ptr %755, ptr %6, align 8
  %756 = extractvalue { ptr, i32 } %754, 1
  store i32 %756, ptr %7, align 4
  br label %776

757:                                              ; preds = %748
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %6, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %7, align 4
  br label %775

761:                                              ; preds = %749
  %762 = landingpad { ptr, i32 }
          cleanup
  %763 = extractvalue { ptr, i32 } %762, 0
  store ptr %763, ptr %6, align 8
  %764 = extractvalue { ptr, i32 } %762, 1
  store i32 %764, ptr %7, align 4
  br label %774

765:                                              ; preds = %750
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %6, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %7, align 4
  br label %773

769:                                              ; preds = %751
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %6, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  br label %773

773:                                              ; preds = %769, %765
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  br label %774

774:                                              ; preds = %773, %761
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #9
  br label %775

775:                                              ; preds = %774, %757
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  br label %776

776:                                              ; preds = %775, %753
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %140) #9
  br label %1174

777:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #9
  store i32 0, ptr %150, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #9
  store i32 1, ptr %151, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %149, ptr noundef nonnull align 4 dereferenceable(4) %150, ptr noundef nonnull align 4 dereferenceable(4) %151)
  %778 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %149)
  store <2 x float> %778, ptr %148, align 4
  %779 = call noundef float @_ZN3cgp4normIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEE(ptr noundef nonnull align 4 dereferenceable(8) %148)
  %780 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %779, float noundef 1.000000e+00)
  %781 = zext i1 %780 to i32
  %782 = icmp eq i32 %781, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #9
  br i1 %782, label %783, label %813

783:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 32, ptr %152) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %153) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %153)
          to label %784 unwind label %789

784:                                              ; preds = %783
  call void @llvm.lifetime.start.p0(i64 32, ptr %154) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %155) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %155)
          to label %785 unwind label %793

785:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 32, ptr %156) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %157) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %157) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %156, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %157)
          to label %786 unwind label %797

786:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 32, ptr %158) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %159) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %159) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %158, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %159)
          to label %787 unwind label %801

787:                                              ; preds = %786
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull align 8 dereferenceable(32) %156, ptr noundef nonnull align 8 dereferenceable(32) %158, i32 noundef 44) #10
          to label %788 unwind label %805

788:                                              ; preds = %787
  unreachable

789:                                              ; preds = %783
  %790 = landingpad { ptr, i32 }
          cleanup
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %6, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %7, align 4
  br label %812

793:                                              ; preds = %784
  %794 = landingpad { ptr, i32 }
          cleanup
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %6, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %7, align 4
  br label %811

797:                                              ; preds = %785
  %798 = landingpad { ptr, i32 }
          cleanup
  %799 = extractvalue { ptr, i32 } %798, 0
  store ptr %799, ptr %6, align 8
  %800 = extractvalue { ptr, i32 } %798, 1
  store i32 %800, ptr %7, align 4
  br label %810

801:                                              ; preds = %786
  %802 = landingpad { ptr, i32 }
          cleanup
  %803 = extractvalue { ptr, i32 } %802, 0
  store ptr %803, ptr %6, align 8
  %804 = extractvalue { ptr, i32 } %802, 1
  store i32 %804, ptr %7, align 4
  br label %809

805:                                              ; preds = %787
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %6, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #9
  br label %809

809:                                              ; preds = %805, %801
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %159) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %158) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  br label %810

810:                                              ; preds = %809, %797
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %157) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %157) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %156) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #9
  br label %811

811:                                              ; preds = %810, %793
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %155) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #9
  br label %812

812:                                              ; preds = %811, %789
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %152) #9
  br label %1174

813:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #9
  store i32 5, ptr %162, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %163) #9
  store i32 3, ptr %163, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %161, ptr noundef nonnull align 4 dereferenceable(4) %162, ptr noundef nonnull align 4 dereferenceable(4) %163)
  %814 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %161)
  store <2 x float> %814, ptr %160, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %165) #9
  store i32 5, ptr %165, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #9
  store i32 3, ptr %166, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %164, ptr noundef nonnull align 4 dereferenceable(4) %165, ptr noundef nonnull align 4 dereferenceable(4) %166)
  %815 = call noundef float @_ZN3cgp3dotIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEES5_(ptr noundef nonnull align 4 dereferenceable(8) %160, ptr noundef nonnull align 4 dereferenceable(8) %164)
  %816 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %815, float noundef 0.000000e+00)
  %817 = zext i1 %816 to i32
  %818 = icmp eq i32 %817, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %165) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %163) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #9
  br i1 %818, label %819, label %849

819:                                              ; preds = %813
  call void @llvm.lifetime.start.p0(i64 32, ptr %167) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %168) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %168)
          to label %820 unwind label %825

820:                                              ; preds = %819
  call void @llvm.lifetime.start.p0(i64 32, ptr %169) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %170)
          to label %821 unwind label %829

821:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 32, ptr %171) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %172) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %172) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %171, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %172)
          to label %822 unwind label %833

822:                                              ; preds = %821
  call void @llvm.lifetime.start.p0(i64 32, ptr %173) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %174) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %173, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %174)
          to label %823 unwind label %837

823:                                              ; preds = %822
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef nonnull align 8 dereferenceable(32) %171, ptr noundef nonnull align 8 dereferenceable(32) %173, i32 noundef 46) #10
          to label %824 unwind label %841

824:                                              ; preds = %823
  unreachable

825:                                              ; preds = %819
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %6, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %7, align 4
  br label %848

829:                                              ; preds = %820
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %6, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %7, align 4
  br label %847

833:                                              ; preds = %821
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %6, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %7, align 4
  br label %846

837:                                              ; preds = %822
  %838 = landingpad { ptr, i32 }
          cleanup
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %6, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %7, align 4
  br label %845

841:                                              ; preds = %823
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %6, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #9
  br label %845

845:                                              ; preds = %841, %837
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %174) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %173) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #9
  br label %846

846:                                              ; preds = %845, %833
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %172) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %172) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %171) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #9
  br label %847

847:                                              ; preds = %846, %829
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %169) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #9
  br label %848

848:                                              ; preds = %847, %825
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %168) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %167) #9
  br label %1174

849:                                              ; preds = %813
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #9
  store i32 5, ptr %177, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %178) #9
  store i32 3, ptr %178, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %176, ptr noundef nonnull align 4 dereferenceable(4) %177, ptr noundef nonnull align 4 dereferenceable(4) %178)
  %850 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %176)
  store <2 x float> %850, ptr %175, align 4
  %851 = call noundef float @_ZN3cgp4normIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEE(ptr noundef nonnull align 4 dereferenceable(8) %175)
  %852 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %851, float noundef 1.000000e+00)
  %853 = zext i1 %852 to i32
  %854 = icmp eq i32 %853, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %178) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #9
  br i1 %854, label %855, label %885

855:                                              ; preds = %849
  call void @llvm.lifetime.start.p0(i64 32, ptr %179) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %180) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %180)
          to label %856 unwind label %861

856:                                              ; preds = %855
  call void @llvm.lifetime.start.p0(i64 32, ptr %181) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %182) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %182)
          to label %857 unwind label %865

857:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 32, ptr %183) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %184)
          to label %858 unwind label %869

858:                                              ; preds = %857
  call void @llvm.lifetime.start.p0(i64 32, ptr %185) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %186) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %186)
          to label %859 unwind label %873

859:                                              ; preds = %858
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef nonnull align 8 dereferenceable(32) %185, i32 noundef 47) #10
          to label %860 unwind label %877

860:                                              ; preds = %859
  unreachable

861:                                              ; preds = %855
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %6, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %7, align 4
  br label %884

865:                                              ; preds = %856
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %6, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %7, align 4
  br label %883

869:                                              ; preds = %857
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %6, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %7, align 4
  br label %882

873:                                              ; preds = %858
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %6, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %7, align 4
  br label %881

877:                                              ; preds = %859
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %6, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #9
  br label %881

881:                                              ; preds = %877, %873
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %186) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %186) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %185) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  br label %882

882:                                              ; preds = %881, %869
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %183) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #9
  br label %883

883:                                              ; preds = %882, %865
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %182) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %181) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  br label %884

884:                                              ; preds = %883, %861
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %179) #9
  br label %1174

885:                                              ; preds = %849
  call void @llvm.lifetime.start.p0(i64 12, ptr %187) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %188) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %189) #9
  store i32 1, ptr %189, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #9
  store i32 0, ptr %190, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #9
  store i32 0, ptr %191, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %188, ptr noundef nonnull align 4 dereferenceable(4) %189, ptr noundef nonnull align 4 dereferenceable(4) %190, ptr noundef nonnull align 4 dereferenceable(4) %191)
  %886 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %188)
  store { <2 x float>, float } %886, ptr %192, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %187, ptr align 8 %192, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %193) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %194) #9
  store i32 1, ptr %194, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %195) #9
  store i32 0, ptr %195, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %196) #9
  store i32 0, ptr %196, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %193, ptr noundef nonnull align 4 dereferenceable(4) %194, ptr noundef nonnull align 4 dereferenceable(4) %195, ptr noundef nonnull align 4 dereferenceable(4) %196)
  %887 = call noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12) %187, ptr noundef nonnull align 4 dereferenceable(12) %193)
  %888 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %887, float noundef 0.000000e+00)
  %889 = zext i1 %888 to i32
  %890 = icmp eq i32 %889, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %196) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %195) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %194) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %193) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %188) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %187) #9
  br i1 %890, label %891, label %921

891:                                              ; preds = %885
  call void @llvm.lifetime.start.p0(i64 32, ptr %197) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %198) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %198) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %198)
          to label %892 unwind label %897

892:                                              ; preds = %891
  call void @llvm.lifetime.start.p0(i64 32, ptr %199) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %200) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %200)
          to label %893 unwind label %901

893:                                              ; preds = %892
  call void @llvm.lifetime.start.p0(i64 32, ptr %201) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %202) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %202) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %201, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %202)
          to label %894 unwind label %905

894:                                              ; preds = %893
  call void @llvm.lifetime.start.p0(i64 32, ptr %203) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %204) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %204) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %203, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %204)
          to label %895 unwind label %909

895:                                              ; preds = %894
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef nonnull align 8 dereferenceable(32) %201, ptr noundef nonnull align 8 dereferenceable(32) %203, i32 noundef 52) #10
          to label %896 unwind label %913

896:                                              ; preds = %895
  unreachable

897:                                              ; preds = %891
  %898 = landingpad { ptr, i32 }
          cleanup
  %899 = extractvalue { ptr, i32 } %898, 0
  store ptr %899, ptr %6, align 8
  %900 = extractvalue { ptr, i32 } %898, 1
  store i32 %900, ptr %7, align 4
  br label %920

901:                                              ; preds = %892
  %902 = landingpad { ptr, i32 }
          cleanup
  %903 = extractvalue { ptr, i32 } %902, 0
  store ptr %903, ptr %6, align 8
  %904 = extractvalue { ptr, i32 } %902, 1
  store i32 %904, ptr %7, align 4
  br label %919

905:                                              ; preds = %893
  %906 = landingpad { ptr, i32 }
          cleanup
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %6, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %7, align 4
  br label %918

909:                                              ; preds = %894
  %910 = landingpad { ptr, i32 }
          cleanup
  %911 = extractvalue { ptr, i32 } %910, 0
  store ptr %911, ptr %6, align 8
  %912 = extractvalue { ptr, i32 } %910, 1
  store i32 %912, ptr %7, align 4
  br label %917

913:                                              ; preds = %895
  %914 = landingpad { ptr, i32 }
          cleanup
  %915 = extractvalue { ptr, i32 } %914, 0
  store ptr %915, ptr %6, align 8
  %916 = extractvalue { ptr, i32 } %914, 1
  store i32 %916, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #9
  br label %917

917:                                              ; preds = %913, %909
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %204) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %204) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #9
  br label %918

918:                                              ; preds = %917, %905
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %202) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %201) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  br label %919

919:                                              ; preds = %918, %901
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %199) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #9
  br label %920

920:                                              ; preds = %919, %897
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %198) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %197) #9
  br label %1174

921:                                              ; preds = %885
  call void @llvm.lifetime.start.p0(i64 12, ptr %205) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %206) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %207) #9
  store i32 1, ptr %207, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %208) #9
  store i32 0, ptr %208, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %209) #9
  store i32 0, ptr %209, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(4) %207, ptr noundef nonnull align 4 dereferenceable(4) %208, ptr noundef nonnull align 4 dereferenceable(4) %209)
  %922 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %206)
  store { <2 x float>, float } %922, ptr %210, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %205, ptr align 8 %210, i64 12, i1 false)
  %923 = call noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %205)
  %924 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %923, float noundef 1.000000e+00)
  %925 = zext i1 %924 to i32
  %926 = icmp eq i32 %925, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %209) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %208) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %207) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %206) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %205) #9
  br i1 %926, label %927, label %957

927:                                              ; preds = %921
  call void @llvm.lifetime.start.p0(i64 32, ptr %211) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %212) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %212)
          to label %928 unwind label %933

928:                                              ; preds = %927
  call void @llvm.lifetime.start.p0(i64 32, ptr %213) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %214) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %214) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %213, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %214)
          to label %929 unwind label %937

929:                                              ; preds = %928
  call void @llvm.lifetime.start.p0(i64 32, ptr %215) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %216) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %215, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %216)
          to label %930 unwind label %941

930:                                              ; preds = %929
  call void @llvm.lifetime.start.p0(i64 32, ptr %217) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %218) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %217, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %218)
          to label %931 unwind label %945

931:                                              ; preds = %930
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull align 8 dereferenceable(32) %213, ptr noundef nonnull align 8 dereferenceable(32) %215, ptr noundef nonnull align 8 dereferenceable(32) %217, i32 noundef 53) #10
          to label %932 unwind label %949

932:                                              ; preds = %931
  unreachable

933:                                              ; preds = %927
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %6, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %7, align 4
  br label %956

937:                                              ; preds = %928
  %938 = landingpad { ptr, i32 }
          cleanup
  %939 = extractvalue { ptr, i32 } %938, 0
  store ptr %939, ptr %6, align 8
  %940 = extractvalue { ptr, i32 } %938, 1
  store i32 %940, ptr %7, align 4
  br label %955

941:                                              ; preds = %929
  %942 = landingpad { ptr, i32 }
          cleanup
  %943 = extractvalue { ptr, i32 } %942, 0
  store ptr %943, ptr %6, align 8
  %944 = extractvalue { ptr, i32 } %942, 1
  store i32 %944, ptr %7, align 4
  br label %954

945:                                              ; preds = %930
  %946 = landingpad { ptr, i32 }
          cleanup
  %947 = extractvalue { ptr, i32 } %946, 0
  store ptr %947, ptr %6, align 8
  %948 = extractvalue { ptr, i32 } %946, 1
  store i32 %948, ptr %7, align 4
  br label %953

949:                                              ; preds = %931
  %950 = landingpad { ptr, i32 }
          cleanup
  %951 = extractvalue { ptr, i32 } %950, 0
  store ptr %951, ptr %6, align 8
  %952 = extractvalue { ptr, i32 } %950, 1
  store i32 %952, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #9
  br label %953

953:                                              ; preds = %949, %945
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %218) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %217) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #9
  br label %954

954:                                              ; preds = %953, %941
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %216) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %215) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #9
  br label %955

955:                                              ; preds = %954, %937
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %214) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %214) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %213) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #9
  br label %956

956:                                              ; preds = %955, %933
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %212) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %211) #9
  br label %1174

957:                                              ; preds = %921
  call void @llvm.lifetime.start.p0(i64 12, ptr %219) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %220) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %221) #9
  store i32 0, ptr %221, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %222) #9
  store i32 1, ptr %222, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %223) #9
  store i32 0, ptr %223, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %220, ptr noundef nonnull align 4 dereferenceable(4) %221, ptr noundef nonnull align 4 dereferenceable(4) %222, ptr noundef nonnull align 4 dereferenceable(4) %223)
  %958 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %220)
  store { <2 x float>, float } %958, ptr %224, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %219, ptr align 8 %224, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %225) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %226) #9
  store i32 0, ptr %226, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %227) #9
  store i32 1, ptr %227, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %228) #9
  store i32 0, ptr %228, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %225, ptr noundef nonnull align 4 dereferenceable(4) %226, ptr noundef nonnull align 4 dereferenceable(4) %227, ptr noundef nonnull align 4 dereferenceable(4) %228)
  %959 = call noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12) %219, ptr noundef nonnull align 4 dereferenceable(12) %225)
  %960 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %959, float noundef 0.000000e+00)
  %961 = zext i1 %960 to i32
  %962 = icmp eq i32 %961, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %228) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %227) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %226) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %225) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %223) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %222) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %221) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %220) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %219) #9
  br i1 %962, label %963, label %993

963:                                              ; preds = %957
  call void @llvm.lifetime.start.p0(i64 32, ptr %229) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %230) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %230) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %229, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %230)
          to label %964 unwind label %969

964:                                              ; preds = %963
  call void @llvm.lifetime.start.p0(i64 32, ptr %231) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %232) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %231, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %232)
          to label %965 unwind label %973

965:                                              ; preds = %964
  call void @llvm.lifetime.start.p0(i64 32, ptr %233) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %234) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %234) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %233, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %234)
          to label %966 unwind label %977

966:                                              ; preds = %965
  call void @llvm.lifetime.start.p0(i64 32, ptr %235) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %236) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %236) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %235, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %236)
          to label %967 unwind label %981

967:                                              ; preds = %966
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %229, ptr noundef nonnull align 8 dereferenceable(32) %231, ptr noundef nonnull align 8 dereferenceable(32) %233, ptr noundef nonnull align 8 dereferenceable(32) %235, i32 noundef 55) #10
          to label %968 unwind label %985

968:                                              ; preds = %967
  unreachable

969:                                              ; preds = %963
  %970 = landingpad { ptr, i32 }
          cleanup
  %971 = extractvalue { ptr, i32 } %970, 0
  store ptr %971, ptr %6, align 8
  %972 = extractvalue { ptr, i32 } %970, 1
  store i32 %972, ptr %7, align 4
  br label %992

973:                                              ; preds = %964
  %974 = landingpad { ptr, i32 }
          cleanup
  %975 = extractvalue { ptr, i32 } %974, 0
  store ptr %975, ptr %6, align 8
  %976 = extractvalue { ptr, i32 } %974, 1
  store i32 %976, ptr %7, align 4
  br label %991

977:                                              ; preds = %965
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %6, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %7, align 4
  br label %990

981:                                              ; preds = %966
  %982 = landingpad { ptr, i32 }
          cleanup
  %983 = extractvalue { ptr, i32 } %982, 0
  store ptr %983, ptr %6, align 8
  %984 = extractvalue { ptr, i32 } %982, 1
  store i32 %984, ptr %7, align 4
  br label %989

985:                                              ; preds = %967
  %986 = landingpad { ptr, i32 }
          cleanup
  %987 = extractvalue { ptr, i32 } %986, 0
  store ptr %987, ptr %6, align 8
  %988 = extractvalue { ptr, i32 } %986, 1
  store i32 %988, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #9
  br label %989

989:                                              ; preds = %985, %981
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %236) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %236) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %235) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #9
  br label %990

990:                                              ; preds = %989, %977
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %234) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %234) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %233) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #9
  br label %991

991:                                              ; preds = %990, %973
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %232) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %232) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #9
  br label %992

992:                                              ; preds = %991, %969
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %230) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %230) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %229) #9
  br label %1174

993:                                              ; preds = %957
  call void @llvm.lifetime.start.p0(i64 12, ptr %237) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %238) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %239) #9
  store i32 0, ptr %239, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %240) #9
  store i32 1, ptr %240, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %241) #9
  store i32 0, ptr %241, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %238, ptr noundef nonnull align 4 dereferenceable(4) %239, ptr noundef nonnull align 4 dereferenceable(4) %240, ptr noundef nonnull align 4 dereferenceable(4) %241)
  %994 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %238)
  store { <2 x float>, float } %994, ptr %242, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %237, ptr align 8 %242, i64 12, i1 false)
  %995 = call noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %237)
  %996 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %995, float noundef 1.000000e+00)
  %997 = zext i1 %996 to i32
  %998 = icmp eq i32 %997, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %241) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %240) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %239) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %238) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %237) #9
  br i1 %998, label %999, label %1029

999:                                              ; preds = %993
  call void @llvm.lifetime.start.p0(i64 32, ptr %243) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %244) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %244) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %243, ptr noundef @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %244)
          to label %1000 unwind label %1005

1000:                                             ; preds = %999
  call void @llvm.lifetime.start.p0(i64 32, ptr %245) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %246) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %246) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %245, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %246)
          to label %1001 unwind label %1009

1001:                                             ; preds = %1000
  call void @llvm.lifetime.start.p0(i64 32, ptr %247) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %248) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %248)
          to label %1002 unwind label %1013

1002:                                             ; preds = %1001
  call void @llvm.lifetime.start.p0(i64 32, ptr %249) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %250) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %250) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %249, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %250)
          to label %1003 unwind label %1017

1003:                                             ; preds = %1002
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %243, ptr noundef nonnull align 8 dereferenceable(32) %245, ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef nonnull align 8 dereferenceable(32) %249, i32 noundef 56) #10
          to label %1004 unwind label %1021

1004:                                             ; preds = %1003
  unreachable

1005:                                             ; preds = %999
  %1006 = landingpad { ptr, i32 }
          cleanup
  %1007 = extractvalue { ptr, i32 } %1006, 0
  store ptr %1007, ptr %6, align 8
  %1008 = extractvalue { ptr, i32 } %1006, 1
  store i32 %1008, ptr %7, align 4
  br label %1028

1009:                                             ; preds = %1000
  %1010 = landingpad { ptr, i32 }
          cleanup
  %1011 = extractvalue { ptr, i32 } %1010, 0
  store ptr %1011, ptr %6, align 8
  %1012 = extractvalue { ptr, i32 } %1010, 1
  store i32 %1012, ptr %7, align 4
  br label %1027

1013:                                             ; preds = %1001
  %1014 = landingpad { ptr, i32 }
          cleanup
  %1015 = extractvalue { ptr, i32 } %1014, 0
  store ptr %1015, ptr %6, align 8
  %1016 = extractvalue { ptr, i32 } %1014, 1
  store i32 %1016, ptr %7, align 4
  br label %1026

1017:                                             ; preds = %1002
  %1018 = landingpad { ptr, i32 }
          cleanup
  %1019 = extractvalue { ptr, i32 } %1018, 0
  store ptr %1019, ptr %6, align 8
  %1020 = extractvalue { ptr, i32 } %1018, 1
  store i32 %1020, ptr %7, align 4
  br label %1025

1021:                                             ; preds = %1003
  %1022 = landingpad { ptr, i32 }
          cleanup
  %1023 = extractvalue { ptr, i32 } %1022, 0
  store ptr %1023, ptr %6, align 8
  %1024 = extractvalue { ptr, i32 } %1022, 1
  store i32 %1024, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %249) #9
  br label %1025

1025:                                             ; preds = %1021, %1017
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %250) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %250) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %249) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  br label %1026

1026:                                             ; preds = %1025, %1013
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %247) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %245) #9
  br label %1027

1027:                                             ; preds = %1026, %1009
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %246) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %245) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #9
  br label %1028

1028:                                             ; preds = %1027, %1005
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %244) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %244) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %243) #9
  br label %1174

1029:                                             ; preds = %993
  call void @llvm.lifetime.start.p0(i64 12, ptr %251) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %252) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %253) #9
  store i32 0, ptr %253, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %254) #9
  store i32 0, ptr %254, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %255) #9
  store i32 1, ptr %255, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %252, ptr noundef nonnull align 4 dereferenceable(4) %253, ptr noundef nonnull align 4 dereferenceable(4) %254, ptr noundef nonnull align 4 dereferenceable(4) %255)
  %1030 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %252)
  store { <2 x float>, float } %1030, ptr %256, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %251, ptr align 8 %256, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %257) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %258) #9
  store i32 0, ptr %258, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %259) #9
  store i32 0, ptr %259, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %260) #9
  store i32 1, ptr %260, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %257, ptr noundef nonnull align 4 dereferenceable(4) %258, ptr noundef nonnull align 4 dereferenceable(4) %259, ptr noundef nonnull align 4 dereferenceable(4) %260)
  %1031 = call noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12) %251, ptr noundef nonnull align 4 dereferenceable(12) %257)
  %1032 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %1031, float noundef 0.000000e+00)
  %1033 = zext i1 %1032 to i32
  %1034 = icmp eq i32 %1033, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %260) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %259) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %258) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %257) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %255) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %254) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %253) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %252) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %251) #9
  br i1 %1034, label %1035, label %1065

1035:                                             ; preds = %1029
  call void @llvm.lifetime.start.p0(i64 32, ptr %261) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %262) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %262) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %262)
          to label %1036 unwind label %1041

1036:                                             ; preds = %1035
  call void @llvm.lifetime.start.p0(i64 32, ptr %263) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %264) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %264) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %263, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %264)
          to label %1037 unwind label %1045

1037:                                             ; preds = %1036
  call void @llvm.lifetime.start.p0(i64 32, ptr %265) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %266) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %266) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %265, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %266)
          to label %1038 unwind label %1049

1038:                                             ; preds = %1037
  call void @llvm.lifetime.start.p0(i64 32, ptr %267) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %268) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %267, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %268)
          to label %1039 unwind label %1053

1039:                                             ; preds = %1038
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef nonnull align 8 dereferenceable(32) %263, ptr noundef nonnull align 8 dereferenceable(32) %265, ptr noundef nonnull align 8 dereferenceable(32) %267, i32 noundef 58) #10
          to label %1040 unwind label %1057

1040:                                             ; preds = %1039
  unreachable

1041:                                             ; preds = %1035
  %1042 = landingpad { ptr, i32 }
          cleanup
  %1043 = extractvalue { ptr, i32 } %1042, 0
  store ptr %1043, ptr %6, align 8
  %1044 = extractvalue { ptr, i32 } %1042, 1
  store i32 %1044, ptr %7, align 4
  br label %1064

1045:                                             ; preds = %1036
  %1046 = landingpad { ptr, i32 }
          cleanup
  %1047 = extractvalue { ptr, i32 } %1046, 0
  store ptr %1047, ptr %6, align 8
  %1048 = extractvalue { ptr, i32 } %1046, 1
  store i32 %1048, ptr %7, align 4
  br label %1063

1049:                                             ; preds = %1037
  %1050 = landingpad { ptr, i32 }
          cleanup
  %1051 = extractvalue { ptr, i32 } %1050, 0
  store ptr %1051, ptr %6, align 8
  %1052 = extractvalue { ptr, i32 } %1050, 1
  store i32 %1052, ptr %7, align 4
  br label %1062

1053:                                             ; preds = %1038
  %1054 = landingpad { ptr, i32 }
          cleanup
  %1055 = extractvalue { ptr, i32 } %1054, 0
  store ptr %1055, ptr %6, align 8
  %1056 = extractvalue { ptr, i32 } %1054, 1
  store i32 %1056, ptr %7, align 4
  br label %1061

1057:                                             ; preds = %1039
  %1058 = landingpad { ptr, i32 }
          cleanup
  %1059 = extractvalue { ptr, i32 } %1058, 0
  store ptr %1059, ptr %6, align 8
  %1060 = extractvalue { ptr, i32 } %1058, 1
  store i32 %1060, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #9
  br label %1061

1061:                                             ; preds = %1057, %1053
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %268) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %267) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %265) #9
  br label %1062

1062:                                             ; preds = %1061, %1049
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %266) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %266) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %265) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #9
  br label %1063

1063:                                             ; preds = %1062, %1045
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %264) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %264) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %263) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #9
  br label %1064

1064:                                             ; preds = %1063, %1041
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %262) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %261) #9
  br label %1174

1065:                                             ; preds = %1029
  call void @llvm.lifetime.start.p0(i64 12, ptr %269) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %270) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %271) #9
  store i32 0, ptr %271, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %272) #9
  store i32 0, ptr %272, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %273) #9
  store i32 1, ptr %273, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %270, ptr noundef nonnull align 4 dereferenceable(4) %271, ptr noundef nonnull align 4 dereferenceable(4) %272, ptr noundef nonnull align 4 dereferenceable(4) %273)
  %1066 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %270)
  store { <2 x float>, float } %1066, ptr %274, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %269, ptr align 8 %274, i64 12, i1 false)
  %1067 = call noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %269)
  %1068 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %1067, float noundef 1.000000e+00)
  %1069 = zext i1 %1068 to i32
  %1070 = icmp eq i32 %1069, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %273) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %272) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %271) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %270) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %269) #9
  br i1 %1070, label %1071, label %1101

1071:                                             ; preds = %1065
  call void @llvm.lifetime.start.p0(i64 32, ptr %275) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %276) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %276) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %275, ptr noundef @.str.25, ptr noundef nonnull align 1 dereferenceable(1) %276)
          to label %1072 unwind label %1077

1072:                                             ; preds = %1071
  call void @llvm.lifetime.start.p0(i64 32, ptr %277) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %278) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %278) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %277, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %278)
          to label %1073 unwind label %1081

1073:                                             ; preds = %1072
  call void @llvm.lifetime.start.p0(i64 32, ptr %279) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %280) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %279, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %280)
          to label %1074 unwind label %1085

1074:                                             ; preds = %1073
  call void @llvm.lifetime.start.p0(i64 32, ptr %281) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %282) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %282) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %281, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %282)
          to label %1075 unwind label %1089

1075:                                             ; preds = %1074
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %275, ptr noundef nonnull align 8 dereferenceable(32) %277, ptr noundef nonnull align 8 dereferenceable(32) %279, ptr noundef nonnull align 8 dereferenceable(32) %281, i32 noundef 59) #10
          to label %1076 unwind label %1093

1076:                                             ; preds = %1075
  unreachable

1077:                                             ; preds = %1071
  %1078 = landingpad { ptr, i32 }
          cleanup
  %1079 = extractvalue { ptr, i32 } %1078, 0
  store ptr %1079, ptr %6, align 8
  %1080 = extractvalue { ptr, i32 } %1078, 1
  store i32 %1080, ptr %7, align 4
  br label %1100

1081:                                             ; preds = %1072
  %1082 = landingpad { ptr, i32 }
          cleanup
  %1083 = extractvalue { ptr, i32 } %1082, 0
  store ptr %1083, ptr %6, align 8
  %1084 = extractvalue { ptr, i32 } %1082, 1
  store i32 %1084, ptr %7, align 4
  br label %1099

1085:                                             ; preds = %1073
  %1086 = landingpad { ptr, i32 }
          cleanup
  %1087 = extractvalue { ptr, i32 } %1086, 0
  store ptr %1087, ptr %6, align 8
  %1088 = extractvalue { ptr, i32 } %1086, 1
  store i32 %1088, ptr %7, align 4
  br label %1098

1089:                                             ; preds = %1074
  %1090 = landingpad { ptr, i32 }
          cleanup
  %1091 = extractvalue { ptr, i32 } %1090, 0
  store ptr %1091, ptr %6, align 8
  %1092 = extractvalue { ptr, i32 } %1090, 1
  store i32 %1092, ptr %7, align 4
  br label %1097

1093:                                             ; preds = %1075
  %1094 = landingpad { ptr, i32 }
          cleanup
  %1095 = extractvalue { ptr, i32 } %1094, 0
  store ptr %1095, ptr %6, align 8
  %1096 = extractvalue { ptr, i32 } %1094, 1
  store i32 %1096, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %281) #9
  br label %1097

1097:                                             ; preds = %1093, %1089
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %282) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %282) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %281) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %279) #9
  br label %1098

1098:                                             ; preds = %1097, %1085
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %280) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %280) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %279) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %277) #9
  br label %1099

1099:                                             ; preds = %1098, %1081
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %278) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %278) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %277) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %275) #9
  br label %1100

1100:                                             ; preds = %1099, %1077
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %276) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %276) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %275) #9
  br label %1174

1101:                                             ; preds = %1065
  call void @llvm.lifetime.start.p0(i64 12, ptr %283) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %284) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %285) #9
  store i32 5, ptr %285, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %286) #9
  store i32 3, ptr %286, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %287) #9
  store i32 -4, ptr %287, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %284, ptr noundef nonnull align 4 dereferenceable(4) %285, ptr noundef nonnull align 4 dereferenceable(4) %286, ptr noundef nonnull align 4 dereferenceable(4) %287)
  %1102 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %284)
  store { <2 x float>, float } %1102, ptr %288, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %283, ptr align 8 %288, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %289) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %290) #9
  store i32 5, ptr %290, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %291) #9
  store i32 3, ptr %291, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %292) #9
  store i32 -4, ptr %292, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %289, ptr noundef nonnull align 4 dereferenceable(4) %290, ptr noundef nonnull align 4 dereferenceable(4) %291, ptr noundef nonnull align 4 dereferenceable(4) %292)
  %1103 = call noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12) %283, ptr noundef nonnull align 4 dereferenceable(12) %289)
  %1104 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %1103, float noundef 0.000000e+00)
  %1105 = zext i1 %1104 to i32
  %1106 = icmp eq i32 %1105, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %292) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %291) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %290) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %289) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %287) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %286) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %285) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %284) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %283) #9
  br i1 %1106, label %1107, label %1137

1107:                                             ; preds = %1101
  call void @llvm.lifetime.start.p0(i64 32, ptr %293) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %294) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %294) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %293, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %294)
          to label %1108 unwind label %1113

1108:                                             ; preds = %1107
  call void @llvm.lifetime.start.p0(i64 32, ptr %295) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %296) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %296) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %295, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %296)
          to label %1109 unwind label %1117

1109:                                             ; preds = %1108
  call void @llvm.lifetime.start.p0(i64 32, ptr %297) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %298) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %298)
          to label %1110 unwind label %1121

1110:                                             ; preds = %1109
  call void @llvm.lifetime.start.p0(i64 32, ptr %299) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %300) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %300) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %299, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %300)
          to label %1111 unwind label %1125

1111:                                             ; preds = %1110
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %293, ptr noundef nonnull align 8 dereferenceable(32) %295, ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef nonnull align 8 dereferenceable(32) %299, i32 noundef 61) #10
          to label %1112 unwind label %1129

1112:                                             ; preds = %1111
  unreachable

1113:                                             ; preds = %1107
  %1114 = landingpad { ptr, i32 }
          cleanup
  %1115 = extractvalue { ptr, i32 } %1114, 0
  store ptr %1115, ptr %6, align 8
  %1116 = extractvalue { ptr, i32 } %1114, 1
  store i32 %1116, ptr %7, align 4
  br label %1136

1117:                                             ; preds = %1108
  %1118 = landingpad { ptr, i32 }
          cleanup
  %1119 = extractvalue { ptr, i32 } %1118, 0
  store ptr %1119, ptr %6, align 8
  %1120 = extractvalue { ptr, i32 } %1118, 1
  store i32 %1120, ptr %7, align 4
  br label %1135

1121:                                             ; preds = %1109
  %1122 = landingpad { ptr, i32 }
          cleanup
  %1123 = extractvalue { ptr, i32 } %1122, 0
  store ptr %1123, ptr %6, align 8
  %1124 = extractvalue { ptr, i32 } %1122, 1
  store i32 %1124, ptr %7, align 4
  br label %1134

1125:                                             ; preds = %1110
  %1126 = landingpad { ptr, i32 }
          cleanup
  %1127 = extractvalue { ptr, i32 } %1126, 0
  store ptr %1127, ptr %6, align 8
  %1128 = extractvalue { ptr, i32 } %1126, 1
  store i32 %1128, ptr %7, align 4
  br label %1133

1129:                                             ; preds = %1111
  %1130 = landingpad { ptr, i32 }
          cleanup
  %1131 = extractvalue { ptr, i32 } %1130, 0
  store ptr %1131, ptr %6, align 8
  %1132 = extractvalue { ptr, i32 } %1130, 1
  store i32 %1132, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %299) #9
  br label %1133

1133:                                             ; preds = %1129, %1125
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %300) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %300) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %299) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #9
  br label %1134

1134:                                             ; preds = %1133, %1121
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %298) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %297) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %295) #9
  br label %1135

1135:                                             ; preds = %1134, %1117
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %296) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %296) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %295) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %293) #9
  br label %1136

1136:                                             ; preds = %1135, %1113
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %294) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %293) #9
  br label %1174

1137:                                             ; preds = %1101
  call void @llvm.lifetime.start.p0(i64 12, ptr %301) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %302) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %303) #9
  store i32 5, ptr %303, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %304) #9
  store i32 3, ptr %304, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %305) #9
  store i32 -4, ptr %305, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %302, ptr noundef nonnull align 4 dereferenceable(4) %303, ptr noundef nonnull align 4 dereferenceable(4) %304, ptr noundef nonnull align 4 dereferenceable(4) %305)
  %1138 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %302)
  store { <2 x float>, float } %1138, ptr %306, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %301, ptr align 8 %306, i64 12, i1 false)
  %1139 = call noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %301)
  %1140 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %1139, float noundef 1.000000e+00)
  %1141 = zext i1 %1140 to i32
  %1142 = icmp eq i32 %1141, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %305) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %304) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %303) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %302) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %301) #9
  br i1 %1142, label %1143, label %1173

1143:                                             ; preds = %1137
  call void @llvm.lifetime.start.p0(i64 32, ptr %307) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %308) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %308) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %307, ptr noundef @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %308)
          to label %1144 unwind label %1149

1144:                                             ; preds = %1143
  call void @llvm.lifetime.start.p0(i64 32, ptr %309) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %310) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %310) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %309, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %310)
          to label %1145 unwind label %1153

1145:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 32, ptr %311) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %312) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %311, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %312)
          to label %1146 unwind label %1157

1146:                                             ; preds = %1145
  call void @llvm.lifetime.start.p0(i64 32, ptr %313) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %314) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %314) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %313, ptr noundef @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %314)
          to label %1147 unwind label %1161

1147:                                             ; preds = %1146
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %307, ptr noundef nonnull align 8 dereferenceable(32) %309, ptr noundef nonnull align 8 dereferenceable(32) %311, ptr noundef nonnull align 8 dereferenceable(32) %313, i32 noundef 62) #10
          to label %1148 unwind label %1165

1148:                                             ; preds = %1147
  unreachable

1149:                                             ; preds = %1143
  %1150 = landingpad { ptr, i32 }
          cleanup
  %1151 = extractvalue { ptr, i32 } %1150, 0
  store ptr %1151, ptr %6, align 8
  %1152 = extractvalue { ptr, i32 } %1150, 1
  store i32 %1152, ptr %7, align 4
  br label %1172

1153:                                             ; preds = %1144
  %1154 = landingpad { ptr, i32 }
          cleanup
  %1155 = extractvalue { ptr, i32 } %1154, 0
  store ptr %1155, ptr %6, align 8
  %1156 = extractvalue { ptr, i32 } %1154, 1
  store i32 %1156, ptr %7, align 4
  br label %1171

1157:                                             ; preds = %1145
  %1158 = landingpad { ptr, i32 }
          cleanup
  %1159 = extractvalue { ptr, i32 } %1158, 0
  store ptr %1159, ptr %6, align 8
  %1160 = extractvalue { ptr, i32 } %1158, 1
  store i32 %1160, ptr %7, align 4
  br label %1170

1161:                                             ; preds = %1146
  %1162 = landingpad { ptr, i32 }
          cleanup
  %1163 = extractvalue { ptr, i32 } %1162, 0
  store ptr %1163, ptr %6, align 8
  %1164 = extractvalue { ptr, i32 } %1162, 1
  store i32 %1164, ptr %7, align 4
  br label %1169

1165:                                             ; preds = %1147
  %1166 = landingpad { ptr, i32 }
          cleanup
  %1167 = extractvalue { ptr, i32 } %1166, 0
  store ptr %1167, ptr %6, align 8
  %1168 = extractvalue { ptr, i32 } %1166, 1
  store i32 %1168, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %313) #9
  br label %1169

1169:                                             ; preds = %1165, %1161
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %314) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %314) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %313) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #9
  br label %1170

1170:                                             ; preds = %1169, %1157
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %312) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %312) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %311) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %309) #9
  br label %1171

1171:                                             ; preds = %1170, %1153
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %310) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %310) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %309) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %307) #9
  br label %1172

1172:                                             ; preds = %1171, %1149
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %308) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %308) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %307) #9
  br label %1174

1173:                                             ; preds = %1137
  ret void

1174:                                             ; preds = %1172, %1136, %1100, %1064, %1028, %992, %956, %920, %884, %848, %812, %776, %740, %704, %680, %572, %464
  %1175 = load ptr, ptr %6, align 8
  %1176 = load i32, ptr %7, align 4
  %1177 = insertvalue { ptr, i32 } poison, ptr %1175, 0
  %1178 = insertvalue { ptr, i32 } %1177, i32 %1176, 1
  resume { ptr, i32 } %1178
}

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

declare void @_ZN3cgp12matrix_stackIfLi2ELi2EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

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

declare noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef, float noundef) #2

declare noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16)) #2

; Function Attrs: noreturn
declare void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3cgp8is_equalIffLi2ELi2ELi2ELi2EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #5

declare { <2 x float>, <2 x float> } @_ZN3cgp7inverseERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16)) #2

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZN3cgpmlIfLi2ELi2ELi2EEENS_12matrix_stackIT_XT0_EXT2_EEERKNS1_IS2_XT0_EXT1_EEERKNS1_IS2_XT1_EXT2_EEE(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #5

declare { <2 x float>, <2 x float> } @_ZN3cgp12matrix_stackIfLi2ELi2EE14build_identityEv() #2

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

declare void @_ZN3cgp12matrix_stackIfLi3ELi3EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

declare noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi3ELi3EEE(ptr noundef nonnull align 4 dereferenceable(36)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3cgp8is_equalIffLi3ELi3ELi3ELi3EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(36)) #5

declare void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi3ELi3EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.1") align 4, ptr noundef nonnull align 4 dereferenceable(36)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cgpmlIfLi3ELi3ELi3EEENS_12matrix_stackIT_XT0_EXT2_EEERKNS1_IS2_XT0_EXT1_EEERKNS1_IS2_XT1_EXT2_EEE(ptr dead_on_unwind noalias writable sret(%"struct.cgp::matrix_stack.1") align 4, ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(36)) #5

declare void @_ZN3cgp12matrix_stackIfLi3ELi3EE14build_identityEv(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.1") align 4) #2

declare void @_ZN3cgp12matrix_stackIfLi4ELi4EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

declare noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi4ELi4EEE(ptr noundef nonnull align 4 dereferenceable(64)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3cgp8is_equalIffLi4ELi4ELi4ELi4EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) #5

declare void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi4ELi4EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4, ptr noundef nonnull align 4 dereferenceable(64)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN3cgp4normIfLi4ELi4EEET_RKNS_12matrix_stackIS1_XT0_EXT1_EEE(ptr noundef nonnull align 4 dereferenceable(64)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cgpmiIfLi4ELi4EEENS_12matrix_stackIT_XT0_EXT1_EEERKS3_S5_(ptr dead_on_unwind noalias writable sret(%"struct.cgp::matrix_stack.4") align 4, ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) #5

declare void @_ZN3cgpmlERKNS_12matrix_stackIfLi4ELi4EEES3_(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4, ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) #2

declare void @_ZN3cgp12matrix_stackIfLi4ELi4EE14build_identityEv(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN3cgp3dotIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEES5_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #5

declare <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN3cgp4normIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEE(ptr noundef nonnull align 4 dereferenceable(8)) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #7

declare { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12)) #8

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

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

!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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSSt16initializer_listIfE", !11, i64 0, !12, i64 8}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!10, !12, i64 8}
!14 = !{i64 0, i64 36, !15}
!15 = !{!7, !7, i64 0}
!16 = !{i64 0, i64 64, !15}
!17 = !{!18, !18, i64 0}
!18 = !{!"int", !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"

%"struct.cgp::matrix_stack" = type { %"struct.cgp::numarray_stack" }
%"struct.cgp::numarray_stack" = type { %"struct.cgp::numarray_stack.0", %"struct.cgp::numarray_stack.0" }
%"struct.cgp::numarray_stack.0" = type { float, float }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"struct.cgp::matrix_stack.1" = type { %"struct.cgp::numarray_stack.2" }
%"struct.cgp::numarray_stack.2" = type { %"struct.cgp::numarray_stack.3", %"struct.cgp::numarray_stack.3", %"struct.cgp::numarray_stack.3" }
%"struct.cgp::numarray_stack.3" = type { float, float, float }
%"struct.cgp::matrix_stack.4" = type { %"struct.cgp::numarray_stack.5" }
%"struct.cgp::numarray_stack.5" = type { %"struct.cgp::numarray_stack.6", %"struct.cgp::numarray_stack.6", %"struct.cgp::numarray_stack.6", %"struct.cgp::numarray_stack.6" }
%"struct.cgp::numarray_stack.6" = type { float, float, float, float }

@.str = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [96 x i8], align 1
@__func__._ZN8cgp_test12test_vec_matEv = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [47 x i8], align 1
@constinit = external hidden local_unnamed_addr constant [9 x float], align 4
@.str.5 = external hidden unnamed_addr constant [25 x i8], align 1
@constinit.6 = external hidden local_unnamed_addr constant [9 x float], align 4
@.str.7 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [47 x i8], align 1
@constinit.9 = external hidden local_unnamed_addr constant [16 x float], align 4
@.str.10 = external hidden unnamed_addr constant [29 x i8], align 1
@constinit.11 = external hidden local_unnamed_addr constant [16 x float], align 4
@.str.12 = external hidden unnamed_addr constant [207 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [53 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8cgp_test12test_vec_matEv() local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"struct.cgp::matrix_stack", align 4
  %2 = alloca %"class.std::initializer_list", align 8
  %3 = alloca [4 x float], align 16
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"struct.cgp::matrix_stack", align 8
  %13 = alloca %"struct.cgp::matrix_stack", align 4
  %14 = alloca %"class.std::initializer_list", align 8
  %15 = alloca [4 x float], align 16
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"struct.cgp::matrix_stack", align 8
  %25 = alloca %"struct.cgp::matrix_stack", align 8
  %26 = alloca %"struct.cgp::matrix_stack", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"struct.cgp::matrix_stack.1", align 4
  %36 = alloca %"class.std::initializer_list", align 8
  %37 = alloca [9 x float], align 4
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator", align 1
  %46 = alloca %"struct.cgp::matrix_stack.1", align 4
  %47 = alloca %"struct.cgp::matrix_stack.1", align 4
  %48 = alloca %"class.std::initializer_list", align 8
  %49 = alloca [9 x float], align 4
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator", align 1
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator", align 1
  %58 = alloca %"struct.cgp::matrix_stack.1", align 4
  %59 = alloca %"struct.cgp::matrix_stack.1", align 4
  %60 = alloca %"struct.cgp::matrix_stack.1", align 4
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator", align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator", align 1
  %69 = alloca %"struct.cgp::matrix_stack.4", align 4
  %70 = alloca %"class.std::initializer_list", align 8
  %71 = alloca [16 x float], align 4
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator", align 1
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator", align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator", align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::allocator", align 1
  %80 = alloca %"struct.cgp::matrix_stack.4", align 4
  %81 = alloca %"struct.cgp::matrix_stack.4", align 4
  %82 = alloca %"class.std::initializer_list", align 8
  %83 = alloca [16 x float], align 4
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator", align 1
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::allocator", align 1
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::allocator", align 1
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.std::allocator", align 1
  %92 = alloca %"struct.cgp::matrix_stack.4", align 4
  %93 = alloca %"struct.cgp::matrix_stack.4", align 4
  %94 = alloca %"struct.cgp::matrix_stack.4", align 4
  %95 = alloca %"struct.cgp::matrix_stack.4", align 4
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator", align 1
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.std::allocator", align 1
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::allocator", align 1
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator", align 1
  %104 = alloca %"struct.cgp::numarray_stack.0", align 8
  %105 = alloca %"struct.cgp::numarray_stack.0", align 4
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca %"struct.cgp::numarray_stack.0", align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca %"class.std::__cxx11::basic_string", align 8
  %112 = alloca %"class.std::allocator", align 1
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::allocator", align 1
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca %"class.std::allocator", align 1
  %117 = alloca %"class.std::__cxx11::basic_string", align 8
  %118 = alloca %"class.std::allocator", align 1
  %119 = alloca %"struct.cgp::numarray_stack.0", align 8
  %120 = alloca %"struct.cgp::numarray_stack.0", align 4
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::allocator", align 1
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::allocator", align 1
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.std::allocator", align 1
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.std::allocator", align 1
  %131 = alloca %"struct.cgp::numarray_stack.0", align 8
  %132 = alloca %"struct.cgp::numarray_stack.0", align 4
  %133 = alloca i32, align 4
  %134 = alloca i32, align 4
  %135 = alloca %"struct.cgp::numarray_stack.0", align 4
  %136 = alloca i32, align 4
  %137 = alloca i32, align 4
  %138 = alloca %"class.std::__cxx11::basic_string", align 8
  %139 = alloca %"class.std::allocator", align 1
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.std::allocator", align 1
  %142 = alloca %"class.std::__cxx11::basic_string", align 8
  %143 = alloca %"class.std::allocator", align 1
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.std::allocator", align 1
  %146 = alloca %"struct.cgp::numarray_stack.0", align 8
  %147 = alloca %"struct.cgp::numarray_stack.0", align 4
  %148 = alloca i32, align 4
  %149 = alloca i32, align 4
  %150 = alloca %"class.std::__cxx11::basic_string", align 8
  %151 = alloca %"class.std::allocator", align 1
  %152 = alloca %"class.std::__cxx11::basic_string", align 8
  %153 = alloca %"class.std::allocator", align 1
  %154 = alloca %"class.std::__cxx11::basic_string", align 8
  %155 = alloca %"class.std::allocator", align 1
  %156 = alloca %"class.std::__cxx11::basic_string", align 8
  %157 = alloca %"class.std::allocator", align 1
  %158 = alloca %"struct.cgp::numarray_stack.0", align 8
  %159 = alloca %"struct.cgp::numarray_stack.0", align 4
  %160 = alloca i32, align 4
  %161 = alloca i32, align 4
  %162 = alloca %"struct.cgp::numarray_stack.0", align 4
  %163 = alloca i32, align 4
  %164 = alloca i32, align 4
  %165 = alloca %"class.std::__cxx11::basic_string", align 8
  %166 = alloca %"class.std::allocator", align 1
  %167 = alloca %"class.std::__cxx11::basic_string", align 8
  %168 = alloca %"class.std::allocator", align 1
  %169 = alloca %"class.std::__cxx11::basic_string", align 8
  %170 = alloca %"class.std::allocator", align 1
  %171 = alloca %"class.std::__cxx11::basic_string", align 8
  %172 = alloca %"class.std::allocator", align 1
  %173 = alloca %"struct.cgp::numarray_stack.0", align 8
  %174 = alloca %"struct.cgp::numarray_stack.0", align 4
  %175 = alloca i32, align 4
  %176 = alloca i32, align 4
  %177 = alloca %"class.std::__cxx11::basic_string", align 8
  %178 = alloca %"class.std::allocator", align 1
  %179 = alloca %"class.std::__cxx11::basic_string", align 8
  %180 = alloca %"class.std::allocator", align 1
  %181 = alloca %"class.std::__cxx11::basic_string", align 8
  %182 = alloca %"class.std::allocator", align 1
  %183 = alloca %"class.std::__cxx11::basic_string", align 8
  %184 = alloca %"class.std::allocator", align 1
  %185 = alloca %"struct.cgp::numarray_stack.3", align 8
  %186 = alloca %"struct.cgp::numarray_stack.3", align 4
  %187 = alloca i32, align 4
  %188 = alloca i32, align 4
  %189 = alloca i32, align 4
  %190 = alloca %"struct.cgp::numarray_stack.3", align 4
  %191 = alloca i32, align 4
  %192 = alloca i32, align 4
  %193 = alloca i32, align 4
  %194 = alloca %"class.std::__cxx11::basic_string", align 8
  %195 = alloca %"class.std::allocator", align 1
  %196 = alloca %"class.std::__cxx11::basic_string", align 8
  %197 = alloca %"class.std::allocator", align 1
  %198 = alloca %"class.std::__cxx11::basic_string", align 8
  %199 = alloca %"class.std::allocator", align 1
  %200 = alloca %"class.std::__cxx11::basic_string", align 8
  %201 = alloca %"class.std::allocator", align 1
  %202 = alloca %"struct.cgp::numarray_stack.3", align 8
  %203 = alloca %"struct.cgp::numarray_stack.3", align 4
  %204 = alloca i32, align 4
  %205 = alloca i32, align 4
  %206 = alloca i32, align 4
  %207 = alloca %"class.std::__cxx11::basic_string", align 8
  %208 = alloca %"class.std::allocator", align 1
  %209 = alloca %"class.std::__cxx11::basic_string", align 8
  %210 = alloca %"class.std::allocator", align 1
  %211 = alloca %"class.std::__cxx11::basic_string", align 8
  %212 = alloca %"class.std::allocator", align 1
  %213 = alloca %"class.std::__cxx11::basic_string", align 8
  %214 = alloca %"class.std::allocator", align 1
  %215 = alloca %"struct.cgp::numarray_stack.3", align 8
  %216 = alloca %"struct.cgp::numarray_stack.3", align 4
  %217 = alloca i32, align 4
  %218 = alloca i32, align 4
  %219 = alloca i32, align 4
  %220 = alloca %"struct.cgp::numarray_stack.3", align 4
  %221 = alloca i32, align 4
  %222 = alloca i32, align 4
  %223 = alloca i32, align 4
  %224 = alloca %"class.std::__cxx11::basic_string", align 8
  %225 = alloca %"class.std::allocator", align 1
  %226 = alloca %"class.std::__cxx11::basic_string", align 8
  %227 = alloca %"class.std::allocator", align 1
  %228 = alloca %"class.std::__cxx11::basic_string", align 8
  %229 = alloca %"class.std::allocator", align 1
  %230 = alloca %"class.std::__cxx11::basic_string", align 8
  %231 = alloca %"class.std::allocator", align 1
  %232 = alloca %"struct.cgp::numarray_stack.3", align 8
  %233 = alloca %"struct.cgp::numarray_stack.3", align 4
  %234 = alloca i32, align 4
  %235 = alloca i32, align 4
  %236 = alloca i32, align 4
  %237 = alloca %"class.std::__cxx11::basic_string", align 8
  %238 = alloca %"class.std::allocator", align 1
  %239 = alloca %"class.std::__cxx11::basic_string", align 8
  %240 = alloca %"class.std::allocator", align 1
  %241 = alloca %"class.std::__cxx11::basic_string", align 8
  %242 = alloca %"class.std::allocator", align 1
  %243 = alloca %"class.std::__cxx11::basic_string", align 8
  %244 = alloca %"class.std::allocator", align 1
  %245 = alloca %"struct.cgp::numarray_stack.3", align 8
  %246 = alloca %"struct.cgp::numarray_stack.3", align 4
  %247 = alloca i32, align 4
  %248 = alloca i32, align 4
  %249 = alloca i32, align 4
  %250 = alloca %"struct.cgp::numarray_stack.3", align 4
  %251 = alloca i32, align 4
  %252 = alloca i32, align 4
  %253 = alloca i32, align 4
  %254 = alloca %"class.std::__cxx11::basic_string", align 8
  %255 = alloca %"class.std::allocator", align 1
  %256 = alloca %"class.std::__cxx11::basic_string", align 8
  %257 = alloca %"class.std::allocator", align 1
  %258 = alloca %"class.std::__cxx11::basic_string", align 8
  %259 = alloca %"class.std::allocator", align 1
  %260 = alloca %"class.std::__cxx11::basic_string", align 8
  %261 = alloca %"class.std::allocator", align 1
  %262 = alloca %"struct.cgp::numarray_stack.3", align 8
  %263 = alloca %"struct.cgp::numarray_stack.3", align 4
  %264 = alloca i32, align 4
  %265 = alloca i32, align 4
  %266 = alloca i32, align 4
  %267 = alloca %"class.std::__cxx11::basic_string", align 8
  %268 = alloca %"class.std::allocator", align 1
  %269 = alloca %"class.std::__cxx11::basic_string", align 8
  %270 = alloca %"class.std::allocator", align 1
  %271 = alloca %"class.std::__cxx11::basic_string", align 8
  %272 = alloca %"class.std::allocator", align 1
  %273 = alloca %"class.std::__cxx11::basic_string", align 8
  %274 = alloca %"class.std::allocator", align 1
  %275 = alloca %"struct.cgp::numarray_stack.3", align 8
  %276 = alloca %"struct.cgp::numarray_stack.3", align 4
  %277 = alloca i32, align 4
  %278 = alloca i32, align 4
  %279 = alloca i32, align 4
  %280 = alloca %"struct.cgp::numarray_stack.3", align 4
  %281 = alloca i32, align 4
  %282 = alloca i32, align 4
  %283 = alloca i32, align 4
  %284 = alloca %"class.std::__cxx11::basic_string", align 8
  %285 = alloca %"class.std::allocator", align 1
  %286 = alloca %"class.std::__cxx11::basic_string", align 8
  %287 = alloca %"class.std::allocator", align 1
  %288 = alloca %"class.std::__cxx11::basic_string", align 8
  %289 = alloca %"class.std::allocator", align 1
  %290 = alloca %"class.std::__cxx11::basic_string", align 8
  %291 = alloca %"class.std::allocator", align 1
  %292 = alloca %"struct.cgp::numarray_stack.3", align 8
  %293 = alloca %"struct.cgp::numarray_stack.3", align 4
  %294 = alloca i32, align 4
  %295 = alloca i32, align 4
  %296 = alloca i32, align 4
  %297 = alloca %"class.std::__cxx11::basic_string", align 8
  %298 = alloca %"class.std::allocator", align 1
  %299 = alloca %"class.std::__cxx11::basic_string", align 8
  %300 = alloca %"class.std::allocator", align 1
  %301 = alloca %"class.std::__cxx11::basic_string", align 8
  %302 = alloca %"class.std::allocator", align 1
  %303 = alloca %"class.std::__cxx11::basic_string", align 8
  %304 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #9
  store <4 x float> <float 1.000000e+00, float 1.500000e+00, float 2.500000e+00, float 0x4008CCCCC0000000>, ptr %3, align 16, !tbaa !5
  store ptr %3, ptr %2, align 8, !tbaa !9
  %305 = getelementptr inbounds i8, ptr %2, i64 8
  store i64 4, ptr %305, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi2ELi2EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  %306 = call noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16) %1)
  %307 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %306, float noundef 0xBFE4CCCCC0000000)
  br i1 %307, label %328, label %308

308:                                              ; preds = %0
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %309 unwind label %314

309:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %310 unwind label %316

310:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %311 unwind label %318

311:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %312 unwind label %320

312:                                              ; preds = %311
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 15) #10
          to label %313 unwind label %322

313:                                              ; preds = %312
  unreachable

314:                                              ; preds = %308
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %327

316:                                              ; preds = %309
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %326

318:                                              ; preds = %310
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %325

320:                                              ; preds = %311
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %324

322:                                              ; preds = %312
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %324

324:                                              ; preds = %322, %320
  %.pn236 = phi { ptr, i32 } [ %323, %322 ], [ %321, %320 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  br label %325

325:                                              ; preds = %324, %318
  %.pn236.pn = phi { ptr, i32 } [ %.pn236, %324 ], [ %319, %318 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %326

326:                                              ; preds = %325, %316
  %.pn236.pn.pn = phi { ptr, i32 } [ %.pn236.pn, %325 ], [ %317, %316 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  br label %327

327:                                              ; preds = %326, %314
  %.pn236.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn, %326 ], [ %315, %314 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  br label %399

328:                                              ; preds = %0
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #9
  %329 = call { <2 x float>, <2 x float> } @_ZN3cgp7inverseERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16) %1)
  %330 = extractvalue { <2 x float>, <2 x float> } %329, 0
  store <2 x float> %330, ptr %12, align 8
  %331 = getelementptr inbounds i8, ptr %12, i64 8
  %332 = extractvalue { <2 x float>, <2 x float> } %329, 1
  store <2 x float> %332, ptr %331, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  store <4 x float> <float 0xC01313B100000000, float 0x4002762740000000, float 0x400EC4EBE0000000, float 0xBFF89D8940000000>, ptr %15, align 16, !tbaa !5
  store ptr %15, ptr %14, align 8, !tbaa !9
  %333 = getelementptr inbounds i8, ptr %14, i64 8
  store i64 4, ptr %333, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi2ELi2EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %14)
  %334 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi2ELi2ELi2ELi2EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %13)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #9
  br i1 %334, label %355, label %335

335:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %336 unwind label %341

336:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %337 unwind label %343

337:                                              ; preds = %336
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %338 unwind label %345

338:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %339 unwind label %347

339:                                              ; preds = %338
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %22, i32 noundef 16) #10
          to label %340 unwind label %349

340:                                              ; preds = %339
  unreachable

341:                                              ; preds = %335
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %354

343:                                              ; preds = %336
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %353

345:                                              ; preds = %337
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %352

347:                                              ; preds = %338
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %351

349:                                              ; preds = %339
  %350 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  br label %351

351:                                              ; preds = %349, %347
  %.pn231 = phi { ptr, i32 } [ %350, %349 ], [ %348, %347 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %352

352:                                              ; preds = %351, %345
  %.pn231.pn = phi { ptr, i32 } [ %.pn231, %351 ], [ %346, %345 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %353

353:                                              ; preds = %352, %343
  %.pn231.pn.pn = phi { ptr, i32 } [ %.pn231.pn, %352 ], [ %344, %343 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %354

354:                                              ; preds = %353, %341
  %.pn231.pn.pn.pn = phi { ptr, i32 } [ %.pn231.pn.pn, %353 ], [ %342, %341 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  br label %399

355:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #9
  %356 = call { <2 x float>, <2 x float> } @_ZN3cgp7inverseERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16) %1)
  %357 = extractvalue { <2 x float>, <2 x float> } %356, 0
  store <2 x float> %357, ptr %25, align 8
  %358 = getelementptr inbounds i8, ptr %25, i64 8
  %359 = extractvalue { <2 x float>, <2 x float> } %356, 1
  store <2 x float> %359, ptr %358, align 8
  %360 = call { <2 x float>, <2 x float> } @_ZN3cgpmlIfLi2ELi2ELi2EEENS_12matrix_stackIT_XT0_EXT2_EEERKNS1_IS2_XT0_EXT1_EEERKNS1_IS2_XT1_EXT2_EEE(ptr noundef nonnull align 4 dereferenceable(16) %25, ptr noundef nonnull align 4 dereferenceable(16) %1)
  %361 = extractvalue { <2 x float>, <2 x float> } %360, 0
  store <2 x float> %361, ptr %24, align 8
  %362 = getelementptr inbounds i8, ptr %24, i64 8
  %363 = extractvalue { <2 x float>, <2 x float> } %360, 1
  store <2 x float> %363, ptr %362, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #9
  %364 = call { <2 x float>, <2 x float> } @_ZN3cgp12matrix_stackIfLi2ELi2EE14build_identityEv()
  %365 = extractvalue { <2 x float>, <2 x float> } %364, 0
  store <2 x float> %365, ptr %26, align 8
  %366 = getelementptr inbounds i8, ptr %26, i64 8
  %367 = extractvalue { <2 x float>, <2 x float> } %364, 1
  store <2 x float> %367, ptr %366, align 8
  %368 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi2ELi2ELi2ELi2EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(16) %26)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  br i1 %368, label %389, label %369

369:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %370 unwind label %375

370:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %371 unwind label %377

371:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %372 unwind label %379

372:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %373 unwind label %381

373:                                              ; preds = %372
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %33, i32 noundef 17) #10
          to label %374 unwind label %383

374:                                              ; preds = %373
  unreachable

375:                                              ; preds = %369
  %376 = landingpad { ptr, i32 }
          cleanup
  br label %388

377:                                              ; preds = %370
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %387

379:                                              ; preds = %371
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %386

381:                                              ; preds = %372
  %382 = landingpad { ptr, i32 }
          cleanup
  br label %385

383:                                              ; preds = %373
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %385

385:                                              ; preds = %383, %381
  %.pn226 = phi { ptr, i32 } [ %384, %383 ], [ %382, %381 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  br label %386

386:                                              ; preds = %385, %379
  %.pn226.pn = phi { ptr, i32 } [ %.pn226, %385 ], [ %380, %379 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %387

387:                                              ; preds = %386, %377
  %.pn226.pn.pn = phi { ptr, i32 } [ %.pn226.pn, %386 ], [ %378, %377 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %388

388:                                              ; preds = %387, %375
  %.pn226.pn.pn.pn = phi { ptr, i32 } [ %.pn226.pn.pn, %387 ], [ %376, %375 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  br label %399

389:                                              ; preds = %355
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %35) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %37) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %37, ptr noundef nonnull align 4 dereferenceable(36) @constinit, i64 36, i1 false), !tbaa.struct !14
  store ptr %37, ptr %36, align 8, !tbaa !9
  %390 = getelementptr inbounds i8, ptr %36, i64 8
  store i64 9, ptr %390, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi3ELi3EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(36) %35, ptr noundef nonnull align 8 dereferenceable(16) %36)
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #9
  %391 = call noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi3ELi3EEE(ptr noundef nonnull align 4 dereferenceable(36) %35)
  %392 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %391, float noundef 0x40463147A0000000)
  br i1 %392, label %414, label %393

393:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %394 unwind label %400

394:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %395 unwind label %402

395:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %396 unwind label %404

396:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %397 unwind label %406

397:                                              ; preds = %396
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef 23) #10
          to label %398 unwind label %408

398:                                              ; preds = %397
  unreachable

399:                                              ; preds = %388, %354, %327
  %.pn236.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn.pn, %327 ], [ %.pn231.pn.pn.pn, %354 ], [ %.pn226.pn.pn.pn, %388 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #9
  br label %868

400:                                              ; preds = %393
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %413

402:                                              ; preds = %394
  %403 = landingpad { ptr, i32 }
          cleanup
  br label %412

404:                                              ; preds = %395
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %411

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

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

410:                                              ; preds = %408, %406
  %.pn220 = phi { ptr, i32 } [ %409, %408 ], [ %407, %406 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  br label %411

411:                                              ; preds = %410, %404
  %.pn220.pn = phi { ptr, i32 } [ %.pn220, %410 ], [ %405, %404 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  br label %412

412:                                              ; preds = %411, %402
  %.pn220.pn.pn = phi { ptr, i32 } [ %.pn220.pn, %411 ], [ %403, %402 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %413

413:                                              ; preds = %412, %400
  %.pn220.pn.pn.pn = phi { ptr, i32 } [ %.pn220.pn.pn, %412 ], [ %401, %400 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  br label %469

414:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %46) #9
  call void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi3ELi3EEE(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.1") align 4 %46, ptr noundef nonnull align 4 dereferenceable(36) %35)
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %47) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %49) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %49, ptr noundef nonnull align 4 dereferenceable(36) @constinit.6, i64 36, i1 false), !tbaa.struct !14
  store ptr %49, ptr %48, align 8, !tbaa !9
  %415 = getelementptr inbounds i8, ptr %48, i64 8
  store i64 9, ptr %415, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi3ELi3EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(36) %47, ptr noundef nonnull align 8 dereferenceable(16) %48)
  %416 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi3ELi3ELi3ELi3EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(36) %46, ptr noundef nonnull align 4 dereferenceable(36) %47)
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %49) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %46) #9
  br i1 %416, label %437, label %417

417:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %418 unwind label %423

418:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %419 unwind label %425

419:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %420 unwind label %427

420:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %421 unwind label %429

421:                                              ; preds = %420
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %56, i32 noundef 24) #10
          to label %422 unwind label %431

422:                                              ; preds = %421
  unreachable

423:                                              ; preds = %417
  %424 = landingpad { ptr, i32 }
          cleanup
  br label %436

425:                                              ; preds = %418
  %426 = landingpad { ptr, i32 }
          cleanup
  br label %435

427:                                              ; preds = %419
  %428 = landingpad { ptr, i32 }
          cleanup
  br label %434

429:                                              ; preds = %420
  %430 = landingpad { ptr, i32 }
          cleanup
  br label %433

431:                                              ; preds = %421
  %432 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  br label %433

433:                                              ; preds = %431, %429
  %.pn215 = phi { ptr, i32 } [ %432, %431 ], [ %430, %429 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  br label %434

434:                                              ; preds = %433, %427
  %.pn215.pn = phi { ptr, i32 } [ %.pn215, %433 ], [ %428, %427 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  br label %435

435:                                              ; preds = %434, %425
  %.pn215.pn.pn = phi { ptr, i32 } [ %.pn215.pn, %434 ], [ %426, %425 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %436

436:                                              ; preds = %435, %423
  %.pn215.pn.pn.pn = phi { ptr, i32 } [ %.pn215.pn.pn, %435 ], [ %424, %423 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #9
  br label %469

437:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %58) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %59) #9
  call void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi3ELi3EEE(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.1") align 4 %59, ptr noundef nonnull align 4 dereferenceable(36) %35)
  call void @_ZN3cgpmlIfLi3ELi3ELi3EEENS_12matrix_stackIT_XT0_EXT2_EEERKNS1_IS2_XT0_EXT1_EEERKNS1_IS2_XT1_EXT2_EEE(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.1") align 4 %58, ptr noundef nonnull align 4 dereferenceable(36) %59, ptr noundef nonnull align 4 dereferenceable(36) %35)
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %60) #9
  call void @_ZN3cgp12matrix_stackIfLi3ELi3EE14build_identityEv(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.1") align 4 %60)
  %438 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi3ELi3ELi3ELi3EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(36) %58, ptr noundef nonnull align 4 dereferenceable(36) %60)
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %60) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %59) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %58) #9
  br i1 %438, label %459, label %439

439:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %62) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %440 unwind label %445

440:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %441 unwind label %447

441:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %442 unwind label %449

442:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %443 unwind label %451

443:                                              ; preds = %442
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %67, i32 noundef 25) #10
          to label %444 unwind label %453

444:                                              ; preds = %443
  unreachable

445:                                              ; preds = %439
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %458

447:                                              ; preds = %440
  %448 = landingpad { ptr, i32 }
          cleanup
  br label %457

449:                                              ; preds = %441
  %450 = landingpad { ptr, i32 }
          cleanup
  br label %456

451:                                              ; preds = %442
  %452 = landingpad { ptr, i32 }
          cleanup
  br label %455

453:                                              ; preds = %443
  %454 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #9
  br label %455

455:                                              ; preds = %453, %451
  %.pn210 = phi { ptr, i32 } [ %454, %453 ], [ %452, %451 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  br label %456

456:                                              ; preds = %455, %449
  %.pn210.pn = phi { ptr, i32 } [ %.pn210, %455 ], [ %450, %449 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  br label %457

457:                                              ; preds = %456, %447
  %.pn210.pn.pn = phi { ptr, i32 } [ %.pn210.pn, %456 ], [ %448, %447 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  br label %458

458:                                              ; preds = %457, %445
  %.pn210.pn.pn.pn = phi { ptr, i32 } [ %.pn210.pn.pn, %457 ], [ %446, %445 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #9
  br label %469

459:                                              ; preds = %437
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %35) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %69) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %71) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %71, ptr noundef nonnull align 4 dereferenceable(64) @constinit.9, i64 64, i1 false), !tbaa.struct !16
  store ptr %71, ptr %70, align 8, !tbaa !9
  %460 = getelementptr inbounds i8, ptr %70, i64 8
  store i64 16, ptr %460, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi4ELi4EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(64) %69, ptr noundef nonnull align 8 dereferenceable(16) %70)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %71) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #9
  %461 = call noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi4ELi4EEE(ptr noundef nonnull align 4 dereferenceable(64) %69)
  %462 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %461, float noundef 0xC03202EA60000000)
  br i1 %462, label %484, label %463

463:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %72) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %73) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %464 unwind label %470

464:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %74) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %75) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %465 unwind label %472

465:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %466 unwind label %474

466:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %79) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %467 unwind label %476

467:                                              ; preds = %466
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %78, i32 noundef 32) #10
          to label %468 unwind label %478

468:                                              ; preds = %467
  unreachable

469:                                              ; preds = %458, %436, %413
  %.pn220.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn220.pn.pn.pn, %413 ], [ %.pn215.pn.pn.pn, %436 ], [ %.pn210.pn.pn.pn, %458 ]
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %35) #9
  br label %868

470:                                              ; preds = %463
  %471 = landingpad { ptr, i32 }
          cleanup
  br label %483

472:                                              ; preds = %464
  %473 = landingpad { ptr, i32 }
          cleanup
  br label %482

474:                                              ; preds = %465
  %475 = landingpad { ptr, i32 }
          cleanup
  br label %481

476:                                              ; preds = %466
  %477 = landingpad { ptr, i32 }
          cleanup
  br label %480

478:                                              ; preds = %467
  %479 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  br label %480

480:                                              ; preds = %478, %476
  %.pn204 = phi { ptr, i32 } [ %479, %478 ], [ %477, %476 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  br label %481

481:                                              ; preds = %480, %474
  %.pn204.pn = phi { ptr, i32 } [ %.pn204, %480 ], [ %475, %474 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %482

482:                                              ; preds = %481, %472
  %.pn204.pn.pn = phi { ptr, i32 } [ %.pn204.pn, %481 ], [ %473, %472 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  br label %483

483:                                              ; preds = %482, %470
  %.pn204.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn, %482 ], [ %471, %470 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #9
  br label %540

484:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %80) #9
  call void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi4ELi4EEE(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.4") align 4 %80, ptr noundef nonnull align 4 dereferenceable(64) %69)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %81) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %82) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %83) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %83, ptr noundef nonnull align 4 dereferenceable(64) @constinit.11, i64 64, i1 false), !tbaa.struct !16
  store ptr %83, ptr %82, align 8, !tbaa !9
  %485 = getelementptr inbounds i8, ptr %82, i64 8
  store i64 16, ptr %485, align 8, !tbaa !13
  call void @_ZN3cgp12matrix_stackIfLi4ELi4EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(64) %81, ptr noundef nonnull align 8 dereferenceable(16) %82)
  %486 = call noundef zeroext i1 @_ZN3cgp8is_equalIffLi4ELi4ELi4ELi4EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(64) %80, ptr noundef nonnull align 4 dereferenceable(64) %81)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %83) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %82) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %81) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %80) #9
  br i1 %486, label %507, label %487

487:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %85) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %488 unwind label %493

488:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %86) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %87) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %489 unwind label %495

489:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %89) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %490 unwind label %497

490:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %90) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %91) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %491 unwind label %499

491:                                              ; preds = %490
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 8 dereferenceable(32) %90, i32 noundef 33) #10
          to label %492 unwind label %501

492:                                              ; preds = %491
  unreachable

493:                                              ; preds = %487
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %506

495:                                              ; preds = %488
  %496 = landingpad { ptr, i32 }
          cleanup
  br label %505

497:                                              ; preds = %489
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %504

499:                                              ; preds = %490
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %503

501:                                              ; preds = %491
  %502 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #9
  br label %503

503:                                              ; preds = %501, %499
  %.pn199 = phi { ptr, i32 } [ %502, %501 ], [ %500, %499 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #9
  br label %504

504:                                              ; preds = %503, %497
  %.pn199.pn = phi { ptr, i32 } [ %.pn199, %503 ], [ %498, %497 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  br label %505

505:                                              ; preds = %504, %495
  %.pn199.pn.pn = phi { ptr, i32 } [ %.pn199.pn, %504 ], [ %496, %495 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #9
  br label %506

506:                                              ; preds = %505, %493
  %.pn199.pn.pn.pn = phi { ptr, i32 } [ %.pn199.pn.pn, %505 ], [ %494, %493 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #9
  br label %540

507:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %92) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %93) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %94) #9
  call void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi4ELi4EEE(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.4") align 4 %94, ptr noundef nonnull align 4 dereferenceable(64) %69)
  call void @_ZN3cgpmlERKNS_12matrix_stackIfLi4ELi4EEES3_(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.4") align 4 %93, ptr noundef nonnull align 4 dereferenceable(64) %94, ptr noundef nonnull align 4 dereferenceable(64) %69)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %95) #9
  call void @_ZN3cgp12matrix_stackIfLi4ELi4EE14build_identityEv(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.4") align 4 %95)
  call void @_ZN3cgpmiIfLi4ELi4EEENS_12matrix_stackIT_XT0_EXT1_EEERKS3_S5_(ptr dead_on_unwind nonnull writable sret(%"struct.cgp::matrix_stack.4") align 4 %92, ptr noundef nonnull align 4 dereferenceable(64) %93, ptr noundef nonnull align 4 dereferenceable(64) %95)
  %508 = call noundef float @_ZN3cgp4normIfLi4ELi4EEET_RKNS_12matrix_stackIS1_XT0_EXT1_EEE(ptr noundef nonnull align 4 dereferenceable(64) %92)
  %509 = fcmp uge float %508, 0x3F847AE140000000
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %95) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %94) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %93) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %92) #9
  br i1 %509, label %510, label %530

510:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %511 unwind label %516

511:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %98) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %99) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %512 unwind label %518

512:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %100) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %101) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %513 unwind label %520

513:                                              ; preds = %512
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %102) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %514 unwind label %522

514:                                              ; preds = %513
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(32) %102, i32 noundef 34) #10
          to label %515 unwind label %524

515:                                              ; preds = %514
  unreachable

516:                                              ; preds = %510
  %517 = landingpad { ptr, i32 }
          cleanup
  br label %529

518:                                              ; preds = %511
  %519 = landingpad { ptr, i32 }
          cleanup
  br label %528

520:                                              ; preds = %512
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %527

522:                                              ; preds = %513
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %526

524:                                              ; preds = %514
  %525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  br label %526

526:                                              ; preds = %524, %522
  %.pn194 = phi { ptr, i32 } [ %525, %524 ], [ %523, %522 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  br label %527

527:                                              ; preds = %526, %520
  %.pn194.pn = phi { ptr, i32 } [ %.pn194, %526 ], [ %521, %520 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %101) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  br label %528

528:                                              ; preds = %527, %518
  %.pn194.pn.pn = phi { ptr, i32 } [ %.pn194.pn, %527 ], [ %519, %518 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %99) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  br label %529

529:                                              ; preds = %528, %516
  %.pn194.pn.pn.pn = phi { ptr, i32 } [ %.pn194.pn.pn, %528 ], [ %517, %516 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #9
  br label %540

530:                                              ; preds = %507
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %69) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %104) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %106) #9
  store i32 1, ptr %106, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %107) #9
  store i32 0, ptr %107, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %105, ptr noundef nonnull align 4 dereferenceable(4) %106, ptr noundef nonnull align 4 dereferenceable(4) %107)
  %531 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %105)
  store <2 x float> %531, ptr %104, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %109) #9
  store i32 1, ptr %109, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %110) #9
  store i32 0, ptr %110, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %108, ptr noundef nonnull align 4 dereferenceable(4) %109, ptr noundef nonnull align 4 dereferenceable(4) %110)
  %532 = call noundef float @_ZN3cgp3dotIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEES5_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %108)
  %533 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %532, float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %110) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %109) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %107) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %106) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #9
  br i1 %533, label %555, label %534

534:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %111) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %112) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %535 unwind label %541

535:                                              ; preds = %534
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %114) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %536 unwind label %543

536:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %115) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %116) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %537 unwind label %545

537:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %117) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %118) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %118)
          to label %538 unwind label %547

538:                                              ; preds = %537
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 8 dereferenceable(32) %117, i32 noundef 40) #10
          to label %539 unwind label %549

539:                                              ; preds = %538
  unreachable

540:                                              ; preds = %529, %506, %483
  %.pn204.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn.pn, %483 ], [ %.pn199.pn.pn.pn, %506 ], [ %.pn194.pn.pn.pn, %529 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %69) #9
  br label %868

541:                                              ; preds = %534
  %542 = landingpad { ptr, i32 }
          cleanup
  br label %554

543:                                              ; preds = %535
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %553

545:                                              ; preds = %536
  %546 = landingpad { ptr, i32 }
          cleanup
  br label %552

547:                                              ; preds = %537
  %548 = landingpad { ptr, i32 }
          cleanup
  br label %551

549:                                              ; preds = %538
  %550 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #9
  br label %551

551:                                              ; preds = %549, %547
  %.pn189 = phi { ptr, i32 } [ %550, %549 ], [ %548, %547 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %118) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %117) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #9
  br label %552

552:                                              ; preds = %551, %545
  %.pn189.pn = phi { ptr, i32 } [ %.pn189, %551 ], [ %546, %545 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  br label %553

553:                                              ; preds = %552, %543
  %.pn189.pn.pn = phi { ptr, i32 } [ %.pn189.pn, %552 ], [ %544, %543 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %114) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #9
  br label %554

554:                                              ; preds = %553, %541
  %.pn189.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn, %553 ], [ %542, %541 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %112) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #9
  br label %868

555:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %120) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %121) #9
  store i32 1, ptr %121, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %122) #9
  store i32 0, ptr %122, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %120, ptr noundef nonnull align 4 dereferenceable(4) %121, ptr noundef nonnull align 4 dereferenceable(4) %122)
  %556 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %120)
  store <2 x float> %556, ptr %119, align 8
  %557 = call noundef float @_ZN3cgp4normIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEE(ptr noundef nonnull align 4 dereferenceable(8) %119)
  %558 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %557, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %122) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %121) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #9
  br i1 %558, label %579, label %559

559:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %123) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %124) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %124)
          to label %560 unwind label %565

560:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %125) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %126) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %561 unwind label %567

561:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %127) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %128) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %128)
          to label %562 unwind label %569

562:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %129) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %130) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %563 unwind label %571

563:                                              ; preds = %562
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 8 dereferenceable(32) %129, i32 noundef 41) #10
          to label %564 unwind label %573

564:                                              ; preds = %563
  unreachable

565:                                              ; preds = %559
  %566 = landingpad { ptr, i32 }
          cleanup
  br label %578

567:                                              ; preds = %560
  %568 = landingpad { ptr, i32 }
          cleanup
  br label %577

569:                                              ; preds = %561
  %570 = landingpad { ptr, i32 }
          cleanup
  br label %576

571:                                              ; preds = %562
  %572 = landingpad { ptr, i32 }
          cleanup
  br label %575

573:                                              ; preds = %563
  %574 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #9
  br label %575

575:                                              ; preds = %573, %571
  %.pn184 = phi { ptr, i32 } [ %574, %573 ], [ %572, %571 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %130) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %129) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #9
  br label %576

576:                                              ; preds = %575, %569
  %.pn184.pn = phi { ptr, i32 } [ %.pn184, %575 ], [ %570, %569 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %128) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #9
  br label %577

577:                                              ; preds = %576, %567
  %.pn184.pn.pn = phi { ptr, i32 } [ %.pn184.pn, %576 ], [ %568, %567 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %126) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %125) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #9
  br label %578

578:                                              ; preds = %577, %565
  %.pn184.pn.pn.pn = phi { ptr, i32 } [ %.pn184.pn.pn, %577 ], [ %566, %565 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %124) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %123) #9
  br label %868

579:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %131) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %132) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %133) #9
  store i32 0, ptr %133, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %134) #9
  store i32 1, ptr %134, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(4) %133, ptr noundef nonnull align 4 dereferenceable(4) %134)
  %580 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %132)
  store <2 x float> %580, ptr %131, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %135) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %136) #9
  store i32 0, ptr %136, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %137) #9
  store i32 1, ptr %137, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %135, ptr noundef nonnull align 4 dereferenceable(4) %136, ptr noundef nonnull align 4 dereferenceable(4) %137)
  %581 = call noundef float @_ZN3cgp3dotIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEES5_(ptr noundef nonnull align 4 dereferenceable(8) %131, ptr noundef nonnull align 4 dereferenceable(8) %135)
  %582 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %581, float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %137) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %136) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %134) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %133) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %131) #9
  br i1 %582, label %603, label %583

583:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %138) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %139) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %139)
          to label %584 unwind label %589

584:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %140) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %141) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %141)
          to label %585 unwind label %591

585:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %142) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %143) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %143)
          to label %586 unwind label %593

586:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %144) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %145) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %587 unwind label %595

587:                                              ; preds = %586
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull align 8 dereferenceable(32) %144, i32 noundef 43) #10
          to label %588 unwind label %597

588:                                              ; preds = %587
  unreachable

589:                                              ; preds = %583
  %590 = landingpad { ptr, i32 }
          cleanup
  br label %602

591:                                              ; preds = %584
  %592 = landingpad { ptr, i32 }
          cleanup
  br label %601

593:                                              ; preds = %585
  %594 = landingpad { ptr, i32 }
          cleanup
  br label %600

595:                                              ; preds = %586
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %599

597:                                              ; preds = %587
  %598 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  br label %599

599:                                              ; preds = %597, %595
  %.pn179 = phi { ptr, i32 } [ %598, %597 ], [ %596, %595 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #9
  br label %600

600:                                              ; preds = %599, %593
  %.pn179.pn = phi { ptr, i32 } [ %.pn179, %599 ], [ %594, %593 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %142) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  br label %601

601:                                              ; preds = %600, %591
  %.pn179.pn.pn = phi { ptr, i32 } [ %.pn179.pn, %600 ], [ %592, %591 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #9
  br label %602

602:                                              ; preds = %601, %589
  %.pn179.pn.pn.pn = phi { ptr, i32 } [ %.pn179.pn.pn, %601 ], [ %590, %589 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %138) #9
  br label %868

603:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %146) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %148) #9
  store i32 0, ptr %148, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %149) #9
  store i32 1, ptr %149, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %147, ptr noundef nonnull align 4 dereferenceable(4) %148, ptr noundef nonnull align 4 dereferenceable(4) %149)
  %604 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %147)
  store <2 x float> %604, ptr %146, align 8
  %605 = call noundef float @_ZN3cgp4normIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEE(ptr noundef nonnull align 4 dereferenceable(8) %146)
  %606 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %605, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %149) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %148) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #9
  br i1 %606, label %627, label %607

607:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %150) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %151) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %150, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %151)
          to label %608 unwind label %613

608:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %152) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %153) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %153)
          to label %609 unwind label %615

609:                                              ; preds = %608
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %154) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %155) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %155)
          to label %610 unwind label %617

610:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %156) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %157) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %157) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %156, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %157)
          to label %611 unwind label %619

611:                                              ; preds = %610
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %150, ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull align 8 dereferenceable(32) %156, i32 noundef 44) #10
          to label %612 unwind label %621

612:                                              ; preds = %611
  unreachable

613:                                              ; preds = %607
  %614 = landingpad { ptr, i32 }
          cleanup
  br label %626

615:                                              ; preds = %608
  %616 = landingpad { ptr, i32 }
          cleanup
  br label %625

617:                                              ; preds = %609
  %618 = landingpad { ptr, i32 }
          cleanup
  br label %624

619:                                              ; preds = %610
  %620 = landingpad { ptr, i32 }
          cleanup
  br label %623

621:                                              ; preds = %611
  %622 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  br label %623

623:                                              ; preds = %621, %619
  %.pn174 = phi { ptr, i32 } [ %622, %621 ], [ %620, %619 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %157) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %157) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %156) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #9
  br label %624

624:                                              ; preds = %623, %617
  %.pn174.pn = phi { ptr, i32 } [ %.pn174, %623 ], [ %618, %617 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %155) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %155) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %154) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #9
  br label %625

625:                                              ; preds = %624, %615
  %.pn174.pn.pn = phi { ptr, i32 } [ %.pn174.pn, %624 ], [ %616, %615 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %153) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %152) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #9
  br label %626

626:                                              ; preds = %625, %613
  %.pn174.pn.pn.pn = phi { ptr, i32 } [ %.pn174.pn.pn, %625 ], [ %614, %613 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %150) #9
  br label %868

627:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %158) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %159) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %160) #9
  store i32 5, ptr %160, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %161) #9
  store i32 3, ptr %161, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %159, ptr noundef nonnull align 4 dereferenceable(4) %160, ptr noundef nonnull align 4 dereferenceable(4) %161)
  %628 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %159)
  store <2 x float> %628, ptr %158, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %162) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %163) #9
  store i32 5, ptr %163, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %164) #9
  store i32 3, ptr %164, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %162, ptr noundef nonnull align 4 dereferenceable(4) %163, ptr noundef nonnull align 4 dereferenceable(4) %164)
  %629 = call noundef float @_ZN3cgp3dotIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEES5_(ptr noundef nonnull align 4 dereferenceable(8) %158, ptr noundef nonnull align 4 dereferenceable(8) %162)
  %630 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %629, float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %164) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %163) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %161) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %160) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %159) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #9
  br i1 %630, label %651, label %631

631:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %165) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %166) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %166)
          to label %632 unwind label %637

632:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %167) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %168) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %168)
          to label %633 unwind label %639

633:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %169) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %170) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %170)
          to label %634 unwind label %641

634:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %171) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %172) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %172) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %171, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %172)
          to label %635 unwind label %643

635:                                              ; preds = %634
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef nonnull align 8 dereferenceable(32) %171, i32 noundef 46) #10
          to label %636 unwind label %645

636:                                              ; preds = %635
  unreachable

637:                                              ; preds = %631
  %638 = landingpad { ptr, i32 }
          cleanup
  br label %650

639:                                              ; preds = %632
  %640 = landingpad { ptr, i32 }
          cleanup
  br label %649

641:                                              ; preds = %633
  %642 = landingpad { ptr, i32 }
          cleanup
  br label %648

643:                                              ; preds = %634
  %644 = landingpad { ptr, i32 }
          cleanup
  br label %647

645:                                              ; preds = %635
  %646 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #9
  br label %647

647:                                              ; preds = %645, %643
  %.pn169 = phi { ptr, i32 } [ %646, %645 ], [ %644, %643 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %172) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %172) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %171) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #9
  br label %648

648:                                              ; preds = %647, %641
  %.pn169.pn = phi { ptr, i32 } [ %.pn169, %647 ], [ %642, %641 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %170) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %169) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #9
  br label %649

649:                                              ; preds = %648, %639
  %.pn169.pn.pn = phi { ptr, i32 } [ %.pn169.pn, %648 ], [ %640, %639 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %168) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %168) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %167) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #9
  br label %650

650:                                              ; preds = %649, %637
  %.pn169.pn.pn.pn = phi { ptr, i32 } [ %.pn169.pn.pn, %649 ], [ %638, %637 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %166) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %165) #9
  br label %868

651:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %173) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %174) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %175) #9
  store i32 5, ptr %175, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %176) #9
  store i32 3, ptr %176, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi2EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 4 dereferenceable(8) %174, ptr noundef nonnull align 4 dereferenceable(4) %175, ptr noundef nonnull align 4 dereferenceable(4) %176)
  %652 = call <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8) %174)
  store <2 x float> %652, ptr %173, align 8
  %653 = call noundef float @_ZN3cgp4normIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEE(ptr noundef nonnull align 4 dereferenceable(8) %173)
  %654 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %653, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %176) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %175) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %174) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #9
  br i1 %654, label %675, label %655

655:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %177) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %178) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %178) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %177, ptr noundef nonnull @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %178)
          to label %656 unwind label %661

656:                                              ; preds = %655
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %179) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %180) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %180)
          to label %657 unwind label %663

657:                                              ; preds = %656
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %181) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %182) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %182)
          to label %658 unwind label %665

658:                                              ; preds = %657
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %183) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %184) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %184)
          to label %659 unwind label %667

659:                                              ; preds = %658
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %177, ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull align 8 dereferenceable(32) %183, i32 noundef 47) #10
          to label %660 unwind label %669

660:                                              ; preds = %659
  unreachable

661:                                              ; preds = %655
  %662 = landingpad { ptr, i32 }
          cleanup
  br label %674

663:                                              ; preds = %656
  %664 = landingpad { ptr, i32 }
          cleanup
  br label %673

665:                                              ; preds = %657
  %666 = landingpad { ptr, i32 }
          cleanup
  br label %672

667:                                              ; preds = %658
  %668 = landingpad { ptr, i32 }
          cleanup
  br label %671

669:                                              ; preds = %659
  %670 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  br label %671

671:                                              ; preds = %669, %667
  %.pn164 = phi { ptr, i32 } [ %670, %669 ], [ %668, %667 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %184) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %183) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #9
  br label %672

672:                                              ; preds = %671, %665
  %.pn164.pn = phi { ptr, i32 } [ %.pn164, %671 ], [ %666, %665 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %182) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %182) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %181) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  br label %673

673:                                              ; preds = %672, %663
  %.pn164.pn.pn = phi { ptr, i32 } [ %.pn164.pn, %672 ], [ %664, %663 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %180) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %179) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #9
  br label %674

674:                                              ; preds = %673, %661
  %.pn164.pn.pn.pn = phi { ptr, i32 } [ %.pn164.pn.pn, %673 ], [ %662, %661 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %178) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %178) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %177) #9
  br label %868

675:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %185) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %186) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %187) #9
  store i32 1, ptr %187, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %188) #9
  store i32 0, ptr %188, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %189) #9
  store i32 0, ptr %189, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %186, ptr noundef nonnull align 4 dereferenceable(4) %187, ptr noundef nonnull align 4 dereferenceable(4) %188, ptr noundef nonnull align 4 dereferenceable(4) %189)
  %676 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %186)
  %.fca.0.extract25 = extractvalue { <2 x float>, float } %676, 0
  %.fca.1.extract26 = extractvalue { <2 x float>, float } %676, 1
  store <2 x float> %.fca.0.extract25, ptr %185, align 8
  %.sroa.228.0..sroa_idx = getelementptr inbounds i8, ptr %185, i64 8
  store float %.fca.1.extract26, ptr %.sroa.228.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %190) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %191) #9
  store i32 1, ptr %191, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %192) #9
  store i32 0, ptr %192, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %193) #9
  store i32 0, ptr %193, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %190, ptr noundef nonnull align 4 dereferenceable(4) %191, ptr noundef nonnull align 4 dereferenceable(4) %192, ptr noundef nonnull align 4 dereferenceable(4) %193)
  %677 = call noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12) %185, ptr noundef nonnull align 4 dereferenceable(12) %190)
  %678 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %677, float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %193) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %192) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %191) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %190) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %189) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %188) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %187) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %186) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %185) #9
  br i1 %678, label %699, label %679

679:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %194) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %195) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %195)
          to label %680 unwind label %685

680:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %196) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %197) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %196, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %197)
          to label %681 unwind label %687

681:                                              ; preds = %680
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %198) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %199) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %198, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %199)
          to label %682 unwind label %689

682:                                              ; preds = %681
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %200) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %201) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %201) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %200, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %201)
          to label %683 unwind label %691

683:                                              ; preds = %682
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef nonnull align 8 dereferenceable(32) %196, ptr noundef nonnull align 8 dereferenceable(32) %198, ptr noundef nonnull align 8 dereferenceable(32) %200, i32 noundef 52) #10
          to label %684 unwind label %693

684:                                              ; preds = %683
  unreachable

685:                                              ; preds = %679
  %686 = landingpad { ptr, i32 }
          cleanup
  br label %698

687:                                              ; preds = %680
  %688 = landingpad { ptr, i32 }
          cleanup
  br label %697

689:                                              ; preds = %681
  %690 = landingpad { ptr, i32 }
          cleanup
  br label %696

691:                                              ; preds = %682
  %692 = landingpad { ptr, i32 }
          cleanup
  br label %695

693:                                              ; preds = %683
  %694 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %200) #9
  br label %695

695:                                              ; preds = %693, %691
  %.pn159 = phi { ptr, i32 } [ %694, %693 ], [ %692, %691 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %201) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %201) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %200) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #9
  br label %696

696:                                              ; preds = %695, %689
  %.pn159.pn = phi { ptr, i32 } [ %.pn159, %695 ], [ %690, %689 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %199) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %199) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %198) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  br label %697

697:                                              ; preds = %696, %687
  %.pn159.pn.pn = phi { ptr, i32 } [ %.pn159.pn, %696 ], [ %688, %687 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %197) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %196) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #9
  br label %698

698:                                              ; preds = %697, %685
  %.pn159.pn.pn.pn = phi { ptr, i32 } [ %.pn159.pn.pn, %697 ], [ %686, %685 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %195) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %195) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %194) #9
  br label %868

699:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %202) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %203) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %204) #9
  store i32 1, ptr %204, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %205) #9
  store i32 0, ptr %205, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %206) #9
  store i32 0, ptr %206, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %203, ptr noundef nonnull align 4 dereferenceable(4) %204, ptr noundef nonnull align 4 dereferenceable(4) %205, ptr noundef nonnull align 4 dereferenceable(4) %206)
  %700 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %203)
  %.fca.0.extract21 = extractvalue { <2 x float>, float } %700, 0
  %.fca.1.extract22 = extractvalue { <2 x float>, float } %700, 1
  store <2 x float> %.fca.0.extract21, ptr %202, align 8
  %.sroa.224.0..sroa_idx = getelementptr inbounds i8, ptr %202, i64 8
  store float %.fca.1.extract22, ptr %.sroa.224.0..sroa_idx, align 8
  %701 = call noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %202)
  %702 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %701, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %206) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %205) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %204) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %203) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %202) #9
  br i1 %702, label %723, label %703

703:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %207) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %208) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %207, ptr noundef nonnull @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %208)
          to label %704 unwind label %709

704:                                              ; preds = %703
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %209) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %210) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %210) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %209, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %210)
          to label %705 unwind label %711

705:                                              ; preds = %704
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %211) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %212) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %212)
          to label %706 unwind label %713

706:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %213) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %214) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %214) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %213, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %214)
          to label %707 unwind label %715

707:                                              ; preds = %706
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %207, ptr noundef nonnull align 8 dereferenceable(32) %209, ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull align 8 dereferenceable(32) %213, i32 noundef 53) #10
          to label %708 unwind label %717

708:                                              ; preds = %707
  unreachable

709:                                              ; preds = %703
  %710 = landingpad { ptr, i32 }
          cleanup
  br label %722

711:                                              ; preds = %704
  %712 = landingpad { ptr, i32 }
          cleanup
  br label %721

713:                                              ; preds = %705
  %714 = landingpad { ptr, i32 }
          cleanup
  br label %720

715:                                              ; preds = %706
  %716 = landingpad { ptr, i32 }
          cleanup
  br label %719

717:                                              ; preds = %707
  %718 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #9
  br label %719

719:                                              ; preds = %717, %715
  %.pn154 = phi { ptr, i32 } [ %718, %717 ], [ %716, %715 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %214) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %214) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %213) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #9
  br label %720

720:                                              ; preds = %719, %713
  %.pn154.pn = phi { ptr, i32 } [ %.pn154, %719 ], [ %714, %713 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %212) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %211) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %209) #9
  br label %721

721:                                              ; preds = %720, %711
  %.pn154.pn.pn = phi { ptr, i32 } [ %.pn154.pn, %720 ], [ %712, %711 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %210) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %210) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %209) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  br label %722

722:                                              ; preds = %721, %709
  %.pn154.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn, %721 ], [ %710, %709 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %208) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %207) #9
  br label %868

723:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %215) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %216) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %217) #9
  store i32 0, ptr %217, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %218) #9
  store i32 1, ptr %218, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %219) #9
  store i32 0, ptr %219, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %216, ptr noundef nonnull align 4 dereferenceable(4) %217, ptr noundef nonnull align 4 dereferenceable(4) %218, ptr noundef nonnull align 4 dereferenceable(4) %219)
  %724 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %216)
  %.fca.0.extract17 = extractvalue { <2 x float>, float } %724, 0
  %.fca.1.extract18 = extractvalue { <2 x float>, float } %724, 1
  store <2 x float> %.fca.0.extract17, ptr %215, align 8
  %.sroa.220.0..sroa_idx = getelementptr inbounds i8, ptr %215, i64 8
  store float %.fca.1.extract18, ptr %.sroa.220.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %220) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %221) #9
  store i32 0, ptr %221, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %222) #9
  store i32 1, ptr %222, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %223) #9
  store i32 0, ptr %223, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %220, ptr noundef nonnull align 4 dereferenceable(4) %221, ptr noundef nonnull align 4 dereferenceable(4) %222, ptr noundef nonnull align 4 dereferenceable(4) %223)
  %725 = call noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %220)
  %726 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %725, float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %223) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %222) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %221) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %220) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %219) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %218) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %217) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %216) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %215) #9
  br i1 %726, label %747, label %727

727:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %224) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %225) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %225) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %224, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %225)
          to label %728 unwind label %733

728:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %226) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %227) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %227)
          to label %729 unwind label %735

729:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %228) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %229) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %229)
          to label %730 unwind label %737

730:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %230) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %231) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %231) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %230, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %231)
          to label %731 unwind label %739

731:                                              ; preds = %730
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %224, ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull align 8 dereferenceable(32) %230, i32 noundef 55) #10
          to label %732 unwind label %741

732:                                              ; preds = %731
  unreachable

733:                                              ; preds = %727
  %734 = landingpad { ptr, i32 }
          cleanup
  br label %746

735:                                              ; preds = %728
  %736 = landingpad { ptr, i32 }
          cleanup
  br label %745

737:                                              ; preds = %729
  %738 = landingpad { ptr, i32 }
          cleanup
  br label %744

739:                                              ; preds = %730
  %740 = landingpad { ptr, i32 }
          cleanup
  br label %743

741:                                              ; preds = %731
  %742 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #9
  br label %743

743:                                              ; preds = %741, %739
  %.pn149 = phi { ptr, i32 } [ %742, %741 ], [ %740, %739 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %231) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %231) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %230) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  br label %744

744:                                              ; preds = %743, %737
  %.pn149.pn = phi { ptr, i32 } [ %.pn149, %743 ], [ %738, %737 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %229) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %228) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #9
  br label %745

745:                                              ; preds = %744, %735
  %.pn149.pn.pn = phi { ptr, i32 } [ %.pn149.pn, %744 ], [ %736, %735 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %227) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %226) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %224) #9
  br label %746

746:                                              ; preds = %745, %733
  %.pn149.pn.pn.pn = phi { ptr, i32 } [ %.pn149.pn.pn, %745 ], [ %734, %733 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %225) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %225) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %224) #9
  br label %868

747:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %232) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %233) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %234) #9
  store i32 0, ptr %234, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %235) #9
  store i32 1, ptr %235, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %236) #9
  store i32 0, ptr %236, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %233, ptr noundef nonnull align 4 dereferenceable(4) %234, ptr noundef nonnull align 4 dereferenceable(4) %235, ptr noundef nonnull align 4 dereferenceable(4) %236)
  %748 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %233)
  %.fca.0.extract13 = extractvalue { <2 x float>, float } %748, 0
  %.fca.1.extract14 = extractvalue { <2 x float>, float } %748, 1
  store <2 x float> %.fca.0.extract13, ptr %232, align 8
  %.sroa.216.0..sroa_idx = getelementptr inbounds i8, ptr %232, i64 8
  store float %.fca.1.extract14, ptr %.sroa.216.0..sroa_idx, align 8
  %749 = call noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %232)
  %750 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %749, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %236) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %235) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %234) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %233) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %232) #9
  br i1 %750, label %771, label %751

751:                                              ; preds = %747
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %237) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %238) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %238) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %237, ptr noundef nonnull @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %238)
          to label %752 unwind label %757

752:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %239) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %240) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %240) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %239, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %240)
          to label %753 unwind label %759

753:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %241) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %242) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %242) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %241, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %242)
          to label %754 unwind label %761

754:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %243) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %244) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %244) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %243, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %244)
          to label %755 unwind label %763

755:                                              ; preds = %754
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %237, ptr noundef nonnull align 8 dereferenceable(32) %239, ptr noundef nonnull align 8 dereferenceable(32) %241, ptr noundef nonnull align 8 dereferenceable(32) %243, i32 noundef 56) #10
          to label %756 unwind label %765

756:                                              ; preds = %755
  unreachable

757:                                              ; preds = %751
  %758 = landingpad { ptr, i32 }
          cleanup
  br label %770

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

761:                                              ; preds = %753
  %762 = landingpad { ptr, i32 }
          cleanup
  br label %768

763:                                              ; preds = %754
  %764 = landingpad { ptr, i32 }
          cleanup
  br label %767

765:                                              ; preds = %755
  %766 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #9
  br label %767

767:                                              ; preds = %765, %763
  %.pn144 = phi { ptr, i32 } [ %766, %765 ], [ %764, %763 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %244) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %244) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %243) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #9
  br label %768

768:                                              ; preds = %767, %761
  %.pn144.pn = phi { ptr, i32 } [ %.pn144, %767 ], [ %762, %761 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %242) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %242) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %241) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #9
  br label %769

769:                                              ; preds = %768, %759
  %.pn144.pn.pn = phi { ptr, i32 } [ %.pn144.pn, %768 ], [ %760, %759 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %240) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %240) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %239) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #9
  br label %770

770:                                              ; preds = %769, %757
  %.pn144.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn, %769 ], [ %758, %757 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %238) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %238) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %237) #9
  br label %868

771:                                              ; preds = %747
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %245) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %246) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %247) #9
  store i32 0, ptr %247, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %248) #9
  store i32 0, ptr %248, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %249) #9
  store i32 1, ptr %249, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %246, ptr noundef nonnull align 4 dereferenceable(4) %247, ptr noundef nonnull align 4 dereferenceable(4) %248, ptr noundef nonnull align 4 dereferenceable(4) %249)
  %772 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %246)
  %.fca.0.extract9 = extractvalue { <2 x float>, float } %772, 0
  %.fca.1.extract10 = extractvalue { <2 x float>, float } %772, 1
  store <2 x float> %.fca.0.extract9, ptr %245, align 8
  %.sroa.212.0..sroa_idx = getelementptr inbounds i8, ptr %245, i64 8
  store float %.fca.1.extract10, ptr %.sroa.212.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %250) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %251) #9
  store i32 0, ptr %251, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %252) #9
  store i32 0, ptr %252, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %253) #9
  store i32 1, ptr %253, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %250, ptr noundef nonnull align 4 dereferenceable(4) %251, ptr noundef nonnull align 4 dereferenceable(4) %252, ptr noundef nonnull align 4 dereferenceable(4) %253)
  %773 = call noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12) %245, ptr noundef nonnull align 4 dereferenceable(12) %250)
  %774 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %773, float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %253) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %252) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %251) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %250) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %249) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %248) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %247) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %246) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %245) #9
  br i1 %774, label %795, label %775

775:                                              ; preds = %771
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %254) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %255) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %254, ptr noundef nonnull @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %255)
          to label %776 unwind label %781

776:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %256) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %257) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %257) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %256, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %257)
          to label %777 unwind label %783

777:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %258) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %259) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %259)
          to label %778 unwind label %785

778:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %260) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %261) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %261) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %260, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %261)
          to label %779 unwind label %787

779:                                              ; preds = %778
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %254, ptr noundef nonnull align 8 dereferenceable(32) %256, ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull align 8 dereferenceable(32) %260, i32 noundef 58) #10
          to label %780 unwind label %789

780:                                              ; preds = %779
  unreachable

781:                                              ; preds = %775
  %782 = landingpad { ptr, i32 }
          cleanup
  br label %794

783:                                              ; preds = %776
  %784 = landingpad { ptr, i32 }
          cleanup
  br label %793

785:                                              ; preds = %777
  %786 = landingpad { ptr, i32 }
          cleanup
  br label %792

787:                                              ; preds = %778
  %788 = landingpad { ptr, i32 }
          cleanup
  br label %791

789:                                              ; preds = %779
  %790 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #9
  br label %791

791:                                              ; preds = %789, %787
  %.pn139 = phi { ptr, i32 } [ %790, %789 ], [ %788, %787 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %261) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %261) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %260) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #9
  br label %792

792:                                              ; preds = %791, %785
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %791 ], [ %786, %785 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %259) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %258) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #9
  br label %793

793:                                              ; preds = %792, %783
  %.pn139.pn.pn = phi { ptr, i32 } [ %.pn139.pn, %792 ], [ %784, %783 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %257) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %257) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %256) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  br label %794

794:                                              ; preds = %793, %781
  %.pn139.pn.pn.pn = phi { ptr, i32 } [ %.pn139.pn.pn, %793 ], [ %782, %781 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %255) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #9
  br label %868

795:                                              ; preds = %771
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %262) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %263) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %264) #9
  store i32 0, ptr %264, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %265) #9
  store i32 0, ptr %265, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %266) #9
  store i32 1, ptr %266, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %263, ptr noundef nonnull align 4 dereferenceable(4) %264, ptr noundef nonnull align 4 dereferenceable(4) %265, ptr noundef nonnull align 4 dereferenceable(4) %266)
  %796 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %263)
  %.fca.0.extract5 = extractvalue { <2 x float>, float } %796, 0
  %.fca.1.extract6 = extractvalue { <2 x float>, float } %796, 1
  store <2 x float> %.fca.0.extract5, ptr %262, align 8
  %.sroa.28.0..sroa_idx = getelementptr inbounds i8, ptr %262, i64 8
  store float %.fca.1.extract6, ptr %.sroa.28.0..sroa_idx, align 8
  %797 = call noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %262)
  %798 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %797, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %266) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %265) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %264) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %263) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %262) #9
  br i1 %798, label %819, label %799

799:                                              ; preds = %795
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %267) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %268) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %267, ptr noundef nonnull @.str.25, ptr noundef nonnull align 1 dereferenceable(1) %268)
          to label %800 unwind label %805

800:                                              ; preds = %799
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %269) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %270) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %270) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %269, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %270)
          to label %801 unwind label %807

801:                                              ; preds = %800
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %271) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %272) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %272)
          to label %802 unwind label %809

802:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %273) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %274) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %274) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %273, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %274)
          to label %803 unwind label %811

803:                                              ; preds = %802
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %267, ptr noundef nonnull align 8 dereferenceable(32) %269, ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef nonnull align 8 dereferenceable(32) %273, i32 noundef 59) #10
          to label %804 unwind label %813

804:                                              ; preds = %803
  unreachable

805:                                              ; preds = %799
  %806 = landingpad { ptr, i32 }
          cleanup
  br label %818

807:                                              ; preds = %800
  %808 = landingpad { ptr, i32 }
          cleanup
  br label %817

809:                                              ; preds = %801
  %810 = landingpad { ptr, i32 }
          cleanup
  br label %816

811:                                              ; preds = %802
  %812 = landingpad { ptr, i32 }
          cleanup
  br label %815

813:                                              ; preds = %803
  %814 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #9
  br label %815

815:                                              ; preds = %813, %811
  %.pn134 = phi { ptr, i32 } [ %814, %813 ], [ %812, %811 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %274) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %274) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %273) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #9
  br label %816

816:                                              ; preds = %815, %809
  %.pn134.pn = phi { ptr, i32 } [ %.pn134, %815 ], [ %810, %809 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %272) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %272) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %271) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %269) #9
  br label %817

817:                                              ; preds = %816, %807
  %.pn134.pn.pn = phi { ptr, i32 } [ %.pn134.pn, %816 ], [ %808, %807 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %270) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %270) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %269) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #9
  br label %818

818:                                              ; preds = %817, %805
  %.pn134.pn.pn.pn = phi { ptr, i32 } [ %.pn134.pn.pn, %817 ], [ %806, %805 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %268) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %268) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %267) #9
  br label %868

819:                                              ; preds = %795
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %275) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %276) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %277) #9
  store i32 5, ptr %277, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %278) #9
  store i32 3, ptr %278, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %279) #9
  store i32 -4, ptr %279, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %276, ptr noundef nonnull align 4 dereferenceable(4) %277, ptr noundef nonnull align 4 dereferenceable(4) %278, ptr noundef nonnull align 4 dereferenceable(4) %279)
  %820 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %276)
  %.fca.0.extract1 = extractvalue { <2 x float>, float } %820, 0
  %.fca.1.extract2 = extractvalue { <2 x float>, float } %820, 1
  store <2 x float> %.fca.0.extract1, ptr %275, align 8
  %.sroa.24.0..sroa_idx = getelementptr inbounds i8, ptr %275, i64 8
  store float %.fca.1.extract2, ptr %.sroa.24.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %280) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %281) #9
  store i32 5, ptr %281, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %282) #9
  store i32 3, ptr %282, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %283) #9
  store i32 -4, ptr %283, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %280, ptr noundef nonnull align 4 dereferenceable(4) %281, ptr noundef nonnull align 4 dereferenceable(4) %282, ptr noundef nonnull align 4 dereferenceable(4) %283)
  %821 = call noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12) %275, ptr noundef nonnull align 4 dereferenceable(12) %280)
  %822 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %821, float noundef 0.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %283) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %282) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %281) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %280) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %279) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %278) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %277) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %276) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %275) #9
  br i1 %822, label %843, label %823

823:                                              ; preds = %819
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %284) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %285) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %285) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %284, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %285)
          to label %824 unwind label %829

824:                                              ; preds = %823
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %286) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %287) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %287) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %286, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %287)
          to label %825 unwind label %831

825:                                              ; preds = %824
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %288) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %289) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %288, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %289)
          to label %826 unwind label %833

826:                                              ; preds = %825
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %290) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %291) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %291) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %290, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %291)
          to label %827 unwind label %835

827:                                              ; preds = %826
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %284, ptr noundef nonnull align 8 dereferenceable(32) %286, ptr noundef nonnull align 8 dereferenceable(32) %288, ptr noundef nonnull align 8 dereferenceable(32) %290, i32 noundef 61) #10
          to label %828 unwind label %837

828:                                              ; preds = %827
  unreachable

829:                                              ; preds = %823
  %830 = landingpad { ptr, i32 }
          cleanup
  br label %842

831:                                              ; preds = %824
  %832 = landingpad { ptr, i32 }
          cleanup
  br label %841

833:                                              ; preds = %825
  %834 = landingpad { ptr, i32 }
          cleanup
  br label %840

835:                                              ; preds = %826
  %836 = landingpad { ptr, i32 }
          cleanup
  br label %839

837:                                              ; preds = %827
  %838 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %290) #9
  br label %839

839:                                              ; preds = %837, %835
  %.pn129 = phi { ptr, i32 } [ %838, %837 ], [ %836, %835 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %291) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %291) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %290) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #9
  br label %840

840:                                              ; preds = %839, %833
  %.pn129.pn = phi { ptr, i32 } [ %.pn129, %839 ], [ %834, %833 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %289) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %289) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %288) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  br label %841

841:                                              ; preds = %840, %831
  %.pn129.pn.pn = phi { ptr, i32 } [ %.pn129.pn, %840 ], [ %832, %831 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %287) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %287) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %286) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %284) #9
  br label %842

842:                                              ; preds = %841, %829
  %.pn129.pn.pn.pn = phi { ptr, i32 } [ %.pn129.pn.pn, %841 ], [ %830, %829 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %285) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %285) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %284) #9
  br label %868

843:                                              ; preds = %819
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %292) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %293) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %294) #9
  store i32 5, ptr %294, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %295) #9
  store i32 3, ptr %295, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %296) #9
  store i32 -4, ptr %296, align 4, !tbaa !17
  call void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12) %293, ptr noundef nonnull align 4 dereferenceable(4) %294, ptr noundef nonnull align 4 dereferenceable(4) %295, ptr noundef nonnull align 4 dereferenceable(4) %296)
  %844 = call { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %293)
  %.fca.0.extract = extractvalue { <2 x float>, float } %844, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %844, 1
  store <2 x float> %.fca.0.extract, ptr %292, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %292, i64 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %845 = call noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12) %292)
  %846 = call noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef %845, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %296) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %295) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %294) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %293) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %292) #9
  br i1 %846, label %867, label %847

847:                                              ; preds = %843
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %297) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %298) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef nonnull @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %298)
          to label %848 unwind label %853

848:                                              ; preds = %847
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %299) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %300) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %300) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %299, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %300)
          to label %849 unwind label %855

849:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %301) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %302) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %301, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %302)
          to label %850 unwind label %857

850:                                              ; preds = %849
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %303) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %304) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %303, ptr noundef nonnull @__func__._ZN8cgp_test12test_vec_matEv, ptr noundef nonnull align 1 dereferenceable(1) %304)
          to label %851 unwind label %859

851:                                              ; preds = %850
  invoke void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef nonnull align 8 dereferenceable(32) %299, ptr noundef nonnull align 8 dereferenceable(32) %301, ptr noundef nonnull align 8 dereferenceable(32) %303, i32 noundef 62) #10
          to label %852 unwind label %861

852:                                              ; preds = %851
  unreachable

853:                                              ; preds = %847
  %854 = landingpad { ptr, i32 }
          cleanup
  br label %866

855:                                              ; preds = %848
  %856 = landingpad { ptr, i32 }
          cleanup
  br label %865

857:                                              ; preds = %849
  %858 = landingpad { ptr, i32 }
          cleanup
  br label %864

859:                                              ; preds = %850
  %860 = landingpad { ptr, i32 }
          cleanup
  br label %863

861:                                              ; preds = %851
  %862 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  br label %863

863:                                              ; preds = %861, %859
  %.pn = phi { ptr, i32 } [ %862, %861 ], [ %860, %859 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %304) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %303) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %301) #9
  br label %864

864:                                              ; preds = %863, %857
  %.pn.pn = phi { ptr, i32 } [ %.pn, %863 ], [ %858, %857 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %302) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %301) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %299) #9
  br label %865

865:                                              ; preds = %864, %855
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %864 ], [ %856, %855 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %300) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %300) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %299) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #9
  br label %866

866:                                              ; preds = %865, %853
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %865 ], [ %854, %853 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %298) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %297) #9
  br label %868

867:                                              ; preds = %843
  ret void

868:                                              ; preds = %866, %842, %818, %794, %770, %746, %722, %698, %674, %650, %626, %602, %578, %554, %540, %469, %399
  %.pn236.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn.pn.pn, %399 ], [ %.pn220.pn.pn.pn.pn, %469 ], [ %.pn204.pn.pn.pn.pn, %540 ], [ %.pn189.pn.pn.pn, %554 ], [ %.pn184.pn.pn.pn, %578 ], [ %.pn179.pn.pn.pn, %602 ], [ %.pn174.pn.pn.pn, %626 ], [ %.pn169.pn.pn.pn, %650 ], [ %.pn164.pn.pn.pn, %674 ], [ %.pn159.pn.pn.pn, %698 ], [ %.pn154.pn.pn.pn, %722 ], [ %.pn149.pn.pn.pn, %746 ], [ %.pn144.pn.pn.pn, %770 ], [ %.pn139.pn.pn.pn, %794 ], [ %.pn134.pn.pn.pn, %818 ], [ %.pn129.pn.pn.pn, %842 ], [ %.pn.pn.pn.pn, %866 ]
  resume { ptr, i32 } %.pn236.pn.pn.pn.pn.pn
}

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

declare void @_ZN3cgp12matrix_stackIfLi2ELi2EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

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

declare noundef zeroext i1 @_ZN3cgp8is_equalEff(float noundef, float noundef) local_unnamed_addr #2

declare noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #2

; Function Attrs: noreturn
declare void @_ZN3cgp10call_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_i(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3cgp8is_equalIffLi2ELi2ELi2ELi2EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #5

declare { <2 x float>, <2 x float> } @_ZN3cgp7inverseERKNS_12matrix_stackIfLi2ELi2EEE(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZN3cgpmlIfLi2ELi2ELi2EEENS_12matrix_stackIT_XT0_EXT2_EEERKNS1_IS2_XT0_EXT1_EEERKNS1_IS2_XT1_EXT2_EEE(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #5

declare { <2 x float>, <2 x float> } @_ZN3cgp12matrix_stackIfLi2ELi2EE14build_identityEv() local_unnamed_addr #2

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

declare void @_ZN3cgp12matrix_stackIfLi3ELi3EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

declare noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi3ELi3EEE(ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3cgp8is_equalIffLi3ELi3ELi3ELi3EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #5

declare void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi3ELi3EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.1") align 4, ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cgpmlIfLi3ELi3ELi3EEENS_12matrix_stackIT_XT0_EXT2_EEERKNS1_IS2_XT0_EXT1_EEERKNS1_IS2_XT1_EXT2_EEE(ptr dead_on_unwind noalias writable sret(%"struct.cgp::matrix_stack.1") align 4, ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #5

declare void @_ZN3cgp12matrix_stackIfLi3ELi3EE14build_identityEv(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.1") align 4) local_unnamed_addr #2

declare void @_ZN3cgp12matrix_stackIfLi4ELi4EEC1ERKSt16initializer_listIfE(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

declare noundef float @_ZN3cgp3detERKNS_12matrix_stackIfLi4ELi4EEE(ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3cgp8is_equalIffLi4ELi4ELi4ELi4EEEbRKNS_12matrix_stackIT_XT1_EXT2_EEERKNS1_IT0_XT3_EXT4_EEE(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #5

declare void @_ZN3cgp7inverseERKNS_12matrix_stackIfLi4ELi4EEE(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4, ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN3cgp4normIfLi4ELi4EEET_RKNS_12matrix_stackIS1_XT0_EXT1_EEE(ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3cgpmiIfLi4ELi4EEENS_12matrix_stackIT_XT0_EXT1_EEERKS3_S5_(ptr dead_on_unwind noalias writable sret(%"struct.cgp::matrix_stack.4") align 4, ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #5

declare void @_ZN3cgpmlERKNS_12matrix_stackIfLi4ELi4EEES3_(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4, ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #2

declare void @_ZN3cgp12matrix_stackIfLi4ELi4EE14build_identityEv(ptr dead_on_unwind writable sret(%"struct.cgp::matrix_stack.4") align 4) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN3cgp3dotIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEES5_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5

declare <2 x float> @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi2EEE(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN3cgp4normIfLi2EEET_RKNS_14numarray_stackIS1_XT0_EEE(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZN3cgp3dotERKNS_14numarray_stackIfLi3EEES3_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #7

declare { <2 x float>, float } @_ZN3cgp17orthogonal_vectorERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3cgp14numarray_stackIfLi3EEC2IiiiEERKT_RKT0_RKT1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef float @_ZN3cgp4normERKNS_14numarray_stackIfLi3EEE(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #8

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

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

!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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSSt16initializer_listIfE", !11, i64 0, !12, i64 8}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!10, !12, i64 8}
!14 = !{i64 0, i64 36, !15}
!15 = !{!7, !7, i64 0}
!16 = !{i64 0, i64 64, !15}
!17 = !{!18, !18, i64 0}
!18 = !{!"int", !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,SLPVectorizerPass,SROAPass