; ModuleID = 'output/module_fusion.bc' source_filename = "llvm-link" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i64, i32, [20 x i8] } %struct._IO_marker = type opaque %struct._IO_codecvt = type opaque %struct._IO_wide_data = type opaque %struct.DynamicArray = type { i32*, i32, i32, i32, i32 } %struct.Matrix = type { i32**, i32, i32, i32, double } %struct.Node = type { i32, %struct.Node*, %struct.Node*, i32, i32 } %struct.Point = type { i32, i32, [256 x i8], double } %struct.Circle = type { %struct.Point, double, i32, [256 x i8] } %fused_return_projectA_main_memoizedFib = type { i32, i32 } %fused_return_createDynamicArray_processMatrix = type { i32, %struct.DynamicArray* } @globalCounter = dso_local global i32 0, align 4 @globalErrorMessage = dso_local global i8* null, align 8 @recursionDepth = dso_local global i32 0, align 4 @.str = private unnamed_addr constant [9 x i8] c"No error\00", align 1 @stderr = external dso_local global %struct._IO_FILE*, align 8 @.str.1 = private unnamed_addr constant [55 x i8] c"Critical: Failed to allocate memory for error message\0A\00", align 1 @.str.2 = private unnamed_addr constant [33 x i8] c"Maximum recursion depth exceeded\00", align 1 @.str.3 = private unnamed_addr constant [29 x i8] c"Factorial of negative number\00", align 1 @.str.4 = private unnamed_addr constant [36 x i8] c"Input too large, potential overflow\00", align 1 @.str.5 = private unnamed_addr constant [31 x i8] c"Factorial calculation overflow\00", align 1 @.str.6 = private unnamed_addr constant [25 x i8] c"Invalid initial capacity\00", align 1 @.str.7 = private unnamed_addr constant [46 x i8] c"Initial capacity exceeds maximum allowed size\00", align 1 @.str.8 = private unnamed_addr constant [49 x i8] c"Memory allocation failed for DynamicArray struct\00", align 1 @.str.9 = private unnamed_addr constant [35 x i8] c"Memory allocation failed for array\00", align 1 @.str.10 = private unnamed_addr constant [19 x i8] c"Null array pointer\00", align 1 @.str.11 = private unnamed_addr constant [25 x i8] c"Array size limit reached\00", align 1 @.str.12 = private unnamed_addr constant [27 x i8] c"Memory reallocation failed\00", align 1 @.str.13 = private unnamed_addr constant [46 x i8] c"Maximum recursion depth exceeded in quickSort\00", align 1 @.str.14 = private unnamed_addr constant [32 x i8] c"Null array pointer in quickSort\00", align 1 @.str.15 = private unnamed_addr constant [39 x i8] c"Array index out of bounds in quickSort\00", align 1 @.str.16 = private unnamed_addr constant [28 x i8] c"Matrix dimensions too small\00", align 1 @.str.17 = private unnamed_addr constant [46 x i8] c"Matrix dimensions exceed maximum allowed size\00", align 1 @.str.18 = private unnamed_addr constant [43 x i8] c"Memory allocation failed for matrix struct\00", align 1 @.str.19 = private unnamed_addr constant [41 x i8] c"Memory allocation failed for matrix rows\00", align 1 @.str.20 = private unnamed_addr constant [44 x i8] c"Memory allocation failed for matrix columns\00", align 1 @.str.21 = private unnamed_addr constant [20 x i8] c"Null matrix pointer\00", align 1 @.str.22 = private unnamed_addr constant [20 x i8] c"Invalid matrix data\00", align 1 @.str.23 = private unnamed_addr constant [45 x i8] c"Invalid matrix dimensions for multiplication\00", align 1 @.str.24 = private unnamed_addr constant [42 x i8] c"Integer overflow in matrix multiplication\00", align 1 @.str.25 = private unnamed_addr constant [38 x i8] c"Memory allocation failed for new node\00", align 1 @insertNode.maxDepth = internal global i32 0, align 4 @.str.26 = private unnamed_addr constant [34 x i8] c"List exceeds maximum allowed size\00", align 1 @calculationResult = internal global i32 0, align 4 @.str.27 = private unnamed_addr constant [30 x i8] c"Final calculation result: %d\0A\00", align 1 @.str.28 = private unnamed_addr constant [11 x i8] c"Error: %s\0A\00", align 1 @.str.29 = private unnamed_addr constant [29 x i8] c"Error during array push: %s\0A\00", align 1 @.str.30 = private unnamed_addr constant [33 x i8] c"Error during list insertion: %s\0A\00", align 1 @.str.31 = private unnamed_addr constant [43 x i8] c"Circular reference detected in linked list\00", align 1 @.str.32 = private unnamed_addr constant [22 x i8] c"Invalid point weights\00", align 1 @.str.33 = private unnamed_addr constant [31 x i8] c"Coordinates out of valid range\00", align 1 @.str.34 = private unnamed_addr constant [30 x i8] c"Distance calculation overflow\00", align 1 @.str.35 = private unnamed_addr constant [36 x i8] c"Invalid distance calculation result\00", align 1 @.str.36 = private unnamed_addr constant [15 x i8] c"Invalid circle\00", align 1 @.str.37 = private unnamed_addr constant [22 x i8] c"Invalid circle radius\00", align 1 @.str.38 = private unnamed_addr constant [24 x i8] c"Circle radius too large\00", align 1 @.str.39 = private unnamed_addr constant [45 x i8] c"Circle center coordinates out of valid range\00", align 1 @.str.40 = private unnamed_addr constant [26 x i8] c"Area calculation overflow\00", align 1 @.str.41 = private unnamed_addr constant [9 x i8] c"standard\00", align 1 @.str.42 = private unnamed_addr constant [9 x i8] c"weighted\00", align 1 @.str.43 = private unnamed_addr constant [35 x i8] c"Invalid weight for weighted circle\00", align 1 @.str.44 = private unnamed_addr constant [20 x i8] c"Unknown circle type\00", align 1 @.str.45 = private unnamed_addr constant [17 x i8] c"Null matrix data\00", align 1 @.str.46 = private unnamed_addr constant [28 x i8] c"Matrix dimensions too large\00", align 1 @.str.47 = private unnamed_addr constant [27 x i8] c"Invalid matrix row pointer\00", align 1 @.str.48 = private unnamed_addr constant [32 x i8] c"Inconsistent square matrix flag\00", align 1 @.str.49 = private unnamed_addr constant [14 x i8] c"Invalid array\00", align 1 @.str.50 = private unnamed_addr constant [21 x i8] c"Invalid points array\00", align 1 @.str.51 = private unnamed_addr constant [16 x i8] c"Too many points\00", align 1 @.str.52 = private unnamed_addr constant [39 x i8] c"Failed to allocate memory for centroid\00", align 1 @.str.53 = private unnamed_addr constant [21 x i8] c"Invalid point weight\00", align 1 @.str.54 = private unnamed_addr constant [30 x i8] c"Centroid calculation overflow\00", align 1 @.str.55 = private unnamed_addr constant [21 x i8] c"Total weight is zero\00", align 1 @.str.56 = private unnamed_addr constant [9 x i8] c"Centroid\00", align 1 @cache = internal global [100 x i32] zeroinitializer, align 16 @__const.projectB_main.str = private unnamed_addr constant [14 x i8] c"Hello, World!\00", align 1 @__const.projectB_main.arr = private unnamed_addr constant [8 x i32] [i32 10, i32 22, i32 9, i32 33, i32 21, i32 50, i32 41, i32 60], align 16 @__const.projectB_main.matrix = private unnamed_addr constant <{ <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, [97 x <{ i32, i32, i32, [97 x i32] }>] }> <{ <{ i32, i32, i32, [97 x i32] }> <{ i32 1, i32 2, i32 3, [97 x i32] zeroinitializer }>, <{ i32, i32, i32, [97 x i32] }> <{ i32 4, i32 5, i32 6, [97 x i32] zeroinitializer }>, <{ i32, i32, i32, [97 x i32] }> <{ i32 7, i32 8, i32 9, [97 x i32] zeroinitializer }>, [97 x <{ i32, i32, i32, [97 x i32] }>] zeroinitializer }>, align 16 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i8* @getErrorMessage() #0 !project_source !2 { %1 = load i8*, i8** @globalErrorMessage, align 8 %2 = icmp ne i8* %1, null br i1 %2, label %3, label %5 3: ; preds = %0 %4 = load i8*, i8** @globalErrorMessage, align 8 br label %6 5: ; preds = %0 br label %6 6: ; preds = %5, %3 %7 = phi i8* [ %4, %3 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), %5 ] ret i8* %7 } ; Function Attrs: nounwind declare dso_local void @free(i8*) #1 ; Function Attrs: nounwind declare dso_local noalias i8* @strdup(i8*) #1 declare dso_local i32 @fprintf(%struct._IO_FILE*, i8*, ...) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @factorial(i32 %0) #0 !project_source !2 { %2 = alloca i32, align 4 %3 = alloca i32, align 4 %4 = alloca i32, align 4 %5 = alloca i32, align 4 store i32 %0, i32* %3, align 4 %6 = load i32, i32* @recursionDepth, align 4 %7 = add nsw i32 %6, 1 store i32 %7, i32* @recursionDepth, align 4 %8 = icmp sgt i32 %7, 1000 br i1 %8, label %9, label %13 9: ; preds = %1 %10 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0)) %11 = load i32, i32* @recursionDepth, align 4 %12 = add nsw i32 %11, -1 store i32 %12, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %57 13: ; preds = %1 %14 = load i32, i32* %3, align 4 %15 = icmp slt i32 %14, 0 br i1 %15, label %16, label %20 16: ; preds = %13 %17 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0)) %18 = load i32, i32* @recursionDepth, align 4 %19 = add nsw i32 %18, -1 store i32 %19, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %57 20: ; preds = %13 %21 = load i32, i32* %3, align 4 %22 = icmp sgt i32 %21, 20 br i1 %22, label %23, label %27 23: ; preds = %20 %24 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0)) %25 = load i32, i32* @recursionDepth, align 4 %26 = add nsw i32 %25, -1 store i32 %26, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %57 27: ; preds = %20 %28 = load i32, i32* %3, align 4 %29 = icmp sle i32 %28, 1 br i1 %29, label %30, label %31 30: ; preds = %27 store i32 1, i32* %4, align 4 br label %53 31: ; preds = %27 %32 = load i32, i32* %3, align 4 %33 = sub nsw i32 %32, 1 %34 = call i32 @factorial(i32 %33) store i32 %34, i32* %5, align 4 %35 = load i32, i32* %5, align 4 %36 = icmp eq i32 %35, -1 br i1 %36, label %37, label %40 37: ; preds = %31 %38 = load i32, i32* @recursionDepth, align 4 %39 = add nsw i32 %38, -1 store i32 %39, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %57 40: ; preds = %31 %41 = load i32, i32* %5, align 4 %42 = load i32, i32* %3, align 4 %43 = sdiv i32 2147483647, %42 %44 = icmp sgt i32 %41, %43 br i1 %44, label %45, label %49 45: ; preds = %40 %46 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0)) %47 = load i32, i32* @recursionDepth, align 4 %48 = add nsw i32 %47, -1 store i32 %48, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %57 49: ; preds = %40 %50 = load i32, i32* %3, align 4 %51 = load i32, i32* %5, align 4 %52 = mul nsw i32 %50, %51 store i32 %52, i32* %4, align 4 br label %53 53: ; preds = %49, %30 %54 = load i32, i32* @recursionDepth, align 4 %55 = add nsw i32 %54, -1 store i32 %55, i32* @recursionDepth, align 4 %56 = load i32, i32* %4, align 4 store i32 %56, i32* %2, align 4 br label %57 57: ; preds = %53, %45, %37, %23, %16, %9 %58 = load i32, i32* %2, align 4 ret i32 %58 } ; Function Attrs: nounwind declare dso_local noalias i8* @malloc(i64) #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @pushBack(%struct.DynamicArray* %0, i32 %1) #0 !project_source !2 { %3 = alloca %struct.DynamicArray*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca i32*, align 8 store %struct.DynamicArray* %0, %struct.DynamicArray** %3, align 8 store i32 %1, i32* %4, align 4 %7 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %8 = icmp ne %struct.DynamicArray* %7, null br i1 %8, label %11, label %9 9: ; preds = %2 %10 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0)) br label %94 11: ; preds = %2 %12 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %13 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %12, i32 0, i32 1 %14 = load i32, i32* %13, align 8 %15 = icmp sge i32 %14, 1000 br i1 %15, label %16, label %18 16: ; preds = %11 %17 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0)) br label %94 18: ; preds = %11 %19 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %20 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %19, i32 0, i32 1 %21 = load i32, i32* %20, align 8 %22 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %23 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %22, i32 0, i32 2 %24 = load i32, i32* %23, align 4 %25 = icmp sge i32 %21, %24 br i1 %25, label %26, label %55 26: ; preds = %18 %27 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %28 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %27, i32 0, i32 2 %29 = load i32, i32* %28, align 4 %30 = mul nsw i32 %29, 2 store i32 %30, i32* %5, align 4 %31 = load i32, i32* %5, align 4 %32 = icmp sgt i32 %31, 1000 br i1 %32, label %33, label %34 33: ; preds = %26 store i32 1000, i32* %5, align 4 br label %34 34: ; preds = %33, %26 %35 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %36 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %35, i32 0, i32 0 %37 = load i32*, i32** %36, align 8 %38 = bitcast i32* %37 to i8* %39 = load i32, i32* %5, align 4 %40 = sext i32 %39 to i64 %41 = mul i64 4, %40 %42 = call i8* @realloc(i8* %38, i64 %41) #7 %43 = bitcast i8* %42 to i32* store i32* %43, i32** %6, align 8 %44 = load i32*, i32** %6, align 8 %45 = icmp ne i32* %44, null br i1 %45, label %48, label %46 46: ; preds = %34 %47 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0)) br label %94 48: ; preds = %34 %49 = load i32*, i32** %6, align 8 %50 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %51 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %50, i32 0, i32 0 store i32* %49, i32** %51, align 8 %52 = load i32, i32* %5, align 4 %53 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %54 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %53, i32 0, i32 2 store i32 %52, i32* %54, align 4 br label %55 55: ; preds = %48, %18 %56 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %57 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %56, i32 0, i32 3 %58 = load i32, i32* %57, align 8 %59 = icmp ne i32 %58, 0 br i1 %59, label %60, label %81 60: ; preds = %55 %61 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %62 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %61, i32 0, i32 1 %63 = load i32, i32* %62, align 8 %64 = icmp sgt i32 %63, 0 br i1 %64, label %65, label %81 65: ; preds = %60 %66 = load i32, i32* %4, align 4 %67 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %68 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %67, i32 0, i32 0 %69 = load i32*, i32** %68, align 8 %70 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %71 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %70, i32 0, i32 1 %72 = load i32, i32* %71, align 8 %73 = sub nsw i32 %72, 1 %74 = sext i32 %73 to i64 %75 = getelementptr inbounds i32, i32* %69, i64 %74 %76 = load i32, i32* %75, align 4 %77 = icmp slt i32 %66, %76 br i1 %77, label %78, label %81 78: ; preds = %65 %79 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %80 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %79, i32 0, i32 3 store i32 0, i32* %80, align 8 br label %81 81: ; preds = %78, %65, %60, %55 %82 = load i32, i32* %4, align 4 %83 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %84 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %83, i32 0, i32 0 %85 = load i32*, i32** %84, align 8 %86 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %87 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %86, i32 0, i32 1 %88 = load i32, i32* %87, align 8 %89 = add nsw i32 %88, 1 store i32 %89, i32* %87, align 8 %90 = sext i32 %88 to i64 %91 = getelementptr inbounds i32, i32* %85, i64 %90 store i32 %82, i32* %91, align 4 %92 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %93 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %92, i32 0, i32 4 store i32 1, i32* %93, align 4 br label %94 94: ; preds = %81, %46, %16, %9 ret void } ; Function Attrs: nounwind declare dso_local i8* @realloc(i8*, i64) #1 ; Function Attrs: nounwind declare dso_local noalias i8* @calloc(i64, i64) #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local %struct.Matrix* @multiplyMatrices(%struct.Matrix* %0, %struct.Matrix* %1) #0 !project_source !2 { %3 = alloca %struct.Matrix*, align 8 %4 = alloca %struct.Matrix*, align 8 %5 = alloca %struct.Matrix*, align 8 %6 = alloca %struct.Matrix*, align 8 %7 = alloca i64, align 8 %8 = alloca i32, align 4 %9 = alloca i32, align 4 %10 = alloca i64, align 8 %11 = alloca i32, align 4 %12 = alloca i64, align 8 %13 = alloca i32, align 4 store %struct.Matrix* %0, %struct.Matrix** %4, align 8 store %struct.Matrix* %1, %struct.Matrix** %5, align 8 %14 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %15 = icmp ne %struct.Matrix* %14, null br i1 %15, label %16, label %19 16: ; preds = %2 %17 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %18 = icmp ne %struct.Matrix* %17, null br i1 %18, label %21, label %19 19: ; preds = %16, %2 %20 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %214 21: ; preds = %16 %22 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %23 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %22, i32 0, i32 0 %24 = load i32**, i32*** %23, align 8 %25 = icmp ne i32** %24, null br i1 %25, label %26, label %31 26: ; preds = %21 %27 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %28 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %27, i32 0, i32 0 %29 = load i32**, i32*** %28, align 8 %30 = icmp ne i32** %29, null br i1 %30, label %33, label %31 31: ; preds = %26, %21 %32 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %214 33: ; preds = %26 %34 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %35 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %34, i32 0, i32 2 %36 = load i32, i32* %35, align 4 %37 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %38 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %37, i32 0, i32 1 %39 = load i32, i32* %38, align 8 %40 = icmp ne i32 %36, %39 br i1 %40, label %41, label %43 41: ; preds = %33 %42 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.23, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %214 43: ; preds = %33 %44 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %45 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %44, i32 0, i32 2 %46 = load i32, i32* %45, align 4 %47 = icmp sgt i32 %46, 100 br i1 %47, label %53, label %48 48: ; preds = %43 %49 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %50 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %49, i32 0, i32 1 %51 = load i32, i32* %50, align 8 %52 = icmp sgt i32 %51, 100 br i1 %52, label %53, label %55 53: ; preds = %48, %43 %54 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %214 55: ; preds = %48 %56 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %57 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %56, i32 0, i32 1 %58 = load i32, i32* %57, align 8 %59 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %60 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %59, i32 0, i32 2 %61 = load i32, i32* %60, align 4 %62 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 %58, i32 %61, i8* null) store %struct.Matrix* %62, %struct.Matrix** %6, align 8 %63 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %64 = icmp ne %struct.Matrix* %63, null br i1 %64, label %66, label %65 65: ; preds = %55 store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %214 66: ; preds = %55 store i64 0, i64* %7, align 8 store i32 0, i32* %8, align 4 br label %67 67: ; preds = %199, %66 %68 = load i32, i32* %8, align 4 %69 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %70 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %69, i32 0, i32 1 %71 = load i32, i32* %70, align 8 %72 = icmp slt i32 %68, %71 br i1 %72, label %73, label %202 73: ; preds = %67 store i32 0, i32* %9, align 4 br label %74 74: ; preds = %195, %73 %75 = load i32, i32* %9, align 4 %76 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %77 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %76, i32 0, i32 2 %78 = load i32, i32* %77, align 4 %79 = icmp slt i32 %75, %78 br i1 %79, label %80, label %198 80: ; preds = %74 store i64 0, i64* %10, align 8 store i32 0, i32* %11, align 4 br label %81 81: ; preds = %149, %80 %82 = load i32, i32* %11, align 4 %83 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %84 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %83, i32 0, i32 2 %85 = load i32, i32* %84, align 4 %86 = icmp slt i32 %82, %85 br i1 %86, label %87, label %152 87: ; preds = %81 %88 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %89 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %88, i32 0, i32 0 %90 = load i32**, i32*** %89, align 8 %91 = load i32, i32* %8, align 4 %92 = sext i32 %91 to i64 %93 = getelementptr inbounds i32*, i32** %90, i64 %92 %94 = load i32*, i32** %93, align 8 %95 = load i32, i32* %11, align 4 %96 = sext i32 %95 to i64 %97 = getelementptr inbounds i32, i32* %94, i64 %96 %98 = load i32, i32* %97, align 4 %99 = sext i32 %98 to i64 %100 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %101 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %100, i32 0, i32 0 %102 = load i32**, i32*** %101, align 8 %103 = load i32, i32* %11, align 4 %104 = sext i32 %103 to i64 %105 = getelementptr inbounds i32*, i32** %102, i64 %104 %106 = load i32*, i32** %105, align 8 %107 = load i32, i32* %9, align 4 %108 = sext i32 %107 to i64 %109 = getelementptr inbounds i32, i32* %106, i64 %108 %110 = load i32, i32* %109, align 4 %111 = sext i32 %110 to i64 %112 = mul nsw i64 %99, %111 store i64 %112, i64* %12, align 8 %113 = load i64, i64* %12, align 8 %114 = load i64, i64* %10, align 8 %115 = add nsw i64 %114, %113 store i64 %115, i64* %10, align 8 %116 = load i64, i64* %10, align 8 %117 = icmp sgt i64 %116, 2147483647 br i1 %117, label %121, label %118 118: ; preds = %87 %119 = load i64, i64* %10, align 8 %120 = icmp slt i64 %119, -2147483648 br i1 %120, label %121, label %148 121: ; preds = %118, %87 %122 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i64 0, i64 0)) store i32 0, i32* %13, align 4 br label %123 123: ; preds = %138, %121 %124 = load i32, i32* %13, align 4 %125 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %126 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %125, i32 0, i32 1 %127 = load i32, i32* %126, align 8 %128 = icmp slt i32 %124, %127 br i1 %128, label %129, label %141 129: ; preds = %123 %130 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %131 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %130, i32 0, i32 0 %132 = load i32**, i32*** %131, align 8 %133 = load i32, i32* %13, align 4 %134 = sext i32 %133 to i64 %135 = getelementptr inbounds i32*, i32** %132, i64 %134 %136 = load i32*, i32** %135, align 8 %137 = bitcast i32* %136 to i8* call void @free(i8* %137) #7 br label %138 138: ; preds = %129 %139 = load i32, i32* %13, align 4 %140 = add nsw i32 %139, 1 store i32 %140, i32* %13, align 4 br label %123 141: ; preds = %123 %142 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %143 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %142, i32 0, i32 0 %144 = load i32**, i32*** %143, align 8 %145 = bitcast i32** %144 to i8* call void @free(i8* %145) #7 %146 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %147 = bitcast %struct.Matrix* %146 to i8* call void @free(i8* %147) #7 store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %214 148: ; preds = %118 br label %149 149: ; preds = %148 %150 = load i32, i32* %11, align 4 %151 = add nsw i32 %150, 1 store i32 %151, i32* %11, align 4 br label %81 152: ; preds = %81 %153 = load i64, i64* %10, align 8 %154 = trunc i64 %153 to i32 %155 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %156 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %155, i32 0, i32 0 %157 = load i32**, i32*** %156, align 8 %158 = load i32, i32* %8, align 4 %159 = sext i32 %158 to i64 %160 = getelementptr inbounds i32*, i32** %157, i64 %159 %161 = load i32*, i32** %160, align 8 %162 = load i32, i32* %9, align 4 %163 = sext i32 %162 to i64 %164 = getelementptr inbounds i32, i32* %161, i64 %163 store i32 %154, i32* %164, align 4 %165 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %166 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %165, i32 0, i32 0 %167 = load i32**, i32*** %166, align 8 %168 = load i32, i32* %8, align 4 %169 = sext i32 %168 to i64 %170 = getelementptr inbounds i32*, i32** %167, i64 %169 %171 = load i32*, i32** %170, align 8 %172 = load i32, i32* %9, align 4 %173 = sext i32 %172 to i64 %174 = getelementptr inbounds i32, i32* %171, i64 %173 %175 = load i32, i32* %174, align 4 %176 = call i32 @abs(i32 %175) #8 %177 = sext i32 %176 to i64 %178 = load i64, i64* %7, align 8 %179 = icmp sgt i64 %177, %178 br i1 %179, label %180, label %194 180: ; preds = %152 %181 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %182 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %181, i32 0, i32 0 %183 = load i32**, i32*** %182, align 8 %184 = load i32, i32* %8, align 4 %185 = sext i32 %184 to i64 %186 = getelementptr inbounds i32*, i32** %183, i64 %185 %187 = load i32*, i32** %186, align 8 %188 = load i32, i32* %9, align 4 %189 = sext i32 %188 to i64 %190 = getelementptr inbounds i32, i32* %187, i64 %189 %191 = load i32, i32* %190, align 4 %192 = call i32 @abs(i32 %191) #8 %193 = sext i32 %192 to i64 store i64 %193, i64* %7, align 8 br label %194 194: ; preds = %180, %152 br label %195 195: ; preds = %194 %196 = load i32, i32* %9, align 4 %197 = add nsw i32 %196, 1 store i32 %197, i32* %9, align 4 br label %74 198: ; preds = %74 br label %199 199: ; preds = %198 %200 = load i32, i32* %8, align 4 %201 = add nsw i32 %200, 1 store i32 %201, i32* %8, align 4 br label %67 202: ; preds = %67 %203 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %204 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %203, i32 0, i32 1 %205 = load i32, i32* %204, align 8 %206 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %207 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %206, i32 0, i32 2 %208 = load i32, i32* %207, align 4 %209 = icmp eq i32 %205, %208 %210 = zext i1 %209 to i32 %211 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %212 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %211, i32 0, i32 3 store i32 %210, i32* %212, align 8 %213 = load %struct.Matrix*, %struct.Matrix** %6, align 8 store %struct.Matrix* %213, %struct.Matrix** %3, align 8 br label %214 214: ; preds = %202, %141, %65, %53, %41, %31, %19 %215 = load %struct.Matrix*, %struct.Matrix** %3, align 8 ret %struct.Matrix* %215 } ; Function Attrs: nounwind readnone declare dso_local i32 @abs(i32) #3 ; Function Attrs: noinline nounwind optnone uwtable define dso_local %struct.Node* @insertNode(%struct.Node* %0, i32 %1) #0 !project_source !2 { %3 = alloca %struct.Node*, align 8 %4 = alloca %struct.Node*, align 8 %5 = alloca i32, align 4 %6 = alloca %struct.Node*, align 8 %7 = alloca %struct.Node*, align 8 %8 = alloca %struct.Node*, align 8 %9 = alloca i32, align 4 store %struct.Node* %0, %struct.Node** %4, align 8 store i32 %1, i32* %5, align 4 %10 = call noalias i8* @malloc(i64 32) #7 %11 = bitcast i8* %10 to %struct.Node* store %struct.Node* %11, %struct.Node** %6, align 8 %12 = load %struct.Node*, %struct.Node** %6, align 8 %13 = icmp ne %struct.Node* %12, null br i1 %13, label %17, label %14 14: ; preds = %2 %15 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0)) %16 = load %struct.Node*, %struct.Node** %4, align 8 store %struct.Node* %16, %struct.Node** %3, align 8 br label %94 17: ; preds = %2 %18 = load i32, i32* %5, align 4 %19 = load %struct.Node*, %struct.Node** %6, align 8 %20 = getelementptr inbounds %struct.Node, %struct.Node* %19, i32 0, i32 0 store i32 %18, i32* %20, align 8 %21 = load %struct.Node*, %struct.Node** %6, align 8 %22 = getelementptr inbounds %struct.Node, %struct.Node* %21, i32 0, i32 1 store %struct.Node* null, %struct.Node** %22, align 8 %23 = load %struct.Node*, %struct.Node** %6, align 8 %24 = getelementptr inbounds %struct.Node, %struct.Node* %23, i32 0, i32 2 store %struct.Node* null, %struct.Node** %24, align 8 %25 = load %struct.Node*, %struct.Node** %6, align 8 %26 = getelementptr inbounds %struct.Node, %struct.Node* %25, i32 0, i32 3 store i32 0, i32* %26, align 8 %27 = load %struct.Node*, %struct.Node** %4, align 8 %28 = icmp ne %struct.Node* %27, null br i1 %28, label %33, label %29 29: ; preds = %17 %30 = load %struct.Node*, %struct.Node** %6, align 8 %31 = getelementptr inbounds %struct.Node, %struct.Node* %30, i32 0, i32 4 store i32 0, i32* %31, align 4 store i32 0, i32* @insertNode.maxDepth, align 4 %32 = load %struct.Node*, %struct.Node** %6, align 8 store %struct.Node* %32, %struct.Node** %3, align 8 br label %94 33: ; preds = %17 %34 = load %struct.Node*, %struct.Node** %4, align 8 store %struct.Node* %34, %struct.Node** %7, align 8 store %struct.Node* null, %struct.Node** %8, align 8 store i32 0, i32* %9, align 4 br label %35 35: ; preds = %60, %33 %36 = load %struct.Node*, %struct.Node** %7, align 8 %37 = icmp ne %struct.Node* %36, null br i1 %37, label %38, label %44 38: ; preds = %35 %39 = load %struct.Node*, %struct.Node** %7, align 8 %40 = getelementptr inbounds %struct.Node, %struct.Node* %39, i32 0, i32 0 %41 = load i32, i32* %40, align 8 %42 = load i32, i32* %5, align 4 %43 = icmp slt i32 %41, %42 br label %44 44: ; preds = %38, %35 %45 = phi i1 [ false, %35 ], [ %43, %38 ] br i1 %45, label %46, label %61 46: ; preds = %44 %47 = load %struct.Node*, %struct.Node** %7, align 8 store %struct.Node* %47, %struct.Node** %8, align 8 %48 = load %struct.Node*, %struct.Node** %7, align 8 %49 = getelementptr inbounds %struct.Node, %struct.Node* %48, i32 0, i32 1 %50 = load %struct.Node*, %struct.Node** %49, align 8 store %struct.Node* %50, %struct.Node** %7, align 8 %51 = load i32, i32* %9, align 4 %52 = add nsw i32 %51, 1 store i32 %52, i32* %9, align 4 %53 = load i32, i32* %9, align 4 %54 = icmp sgt i32 %53, 1000 br i1 %54, label %55, label %60 55: ; preds = %46 %56 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0)) %57 = load %struct.Node*, %struct.Node** %6, align 8 %58 = bitcast %struct.Node* %57 to i8* call void @free(i8* %58) #7 %59 = load %struct.Node*, %struct.Node** %4, align 8 store %struct.Node* %59, %struct.Node** %3, align 8 br label %94 60: ; preds = %46 br label %35 61: ; preds = %44 %62 = load i32, i32* %9, align 4 %63 = load i32, i32* @insertNode.maxDepth, align 4 %64 = icmp sgt i32 %62, %63 br i1 %64, label %65, label %67 65: ; preds = %61 %66 = load i32, i32* %9, align 4 store i32 %66, i32* @insertNode.maxDepth, align 4 br label %67 67: ; preds = %65, %61 %68 = load i32, i32* %9, align 4 %69 = load %struct.Node*, %struct.Node** %6, align 8 %70 = getelementptr inbounds %struct.Node, %struct.Node* %69, i32 0, i32 4 store i32 %68, i32* %70, align 4 %71 = load %struct.Node*, %struct.Node** %7, align 8 %72 = load %struct.Node*, %struct.Node** %6, align 8 %73 = getelementptr inbounds %struct.Node, %struct.Node* %72, i32 0, i32 1 store %struct.Node* %71, %struct.Node** %73, align 8 %74 = load %struct.Node*, %struct.Node** %8, align 8 %75 = icmp ne %struct.Node* %74, null br i1 %75, label %76, label %83 76: ; preds = %67 %77 = load %struct.Node*, %struct.Node** %6, align 8 %78 = load %struct.Node*, %struct.Node** %8, align 8 %79 = getelementptr inbounds %struct.Node, %struct.Node* %78, i32 0, i32 1 store %struct.Node* %77, %struct.Node** %79, align 8 %80 = load %struct.Node*, %struct.Node** %8, align 8 %81 = load %struct.Node*, %struct.Node** %6, align 8 %82 = getelementptr inbounds %struct.Node, %struct.Node* %81, i32 0, i32 2 store %struct.Node* %80, %struct.Node** %82, align 8 br label %85 83: ; preds = %67 %84 = load %struct.Node*, %struct.Node** %6, align 8 store %struct.Node* %84, %struct.Node** %3, align 8 br label %94 85: ; preds = %76 %86 = load %struct.Node*, %struct.Node** %7, align 8 %87 = icmp ne %struct.Node* %86, null br i1 %87, label %88, label %92 88: ; preds = %85 %89 = load %struct.Node*, %struct.Node** %6, align 8 %90 = load %struct.Node*, %struct.Node** %7, align 8 %91 = getelementptr inbounds %struct.Node, %struct.Node* %90, i32 0, i32 2 store %struct.Node* %89, %struct.Node** %91, align 8 br label %92 92: ; preds = %88, %85 %93 = load %struct.Node*, %struct.Node** %4, align 8 store %struct.Node* %93, %struct.Node** %3, align 8 br label %94 94: ; preds = %92, %83, %55, %29, %14 %95 = load %struct.Node*, %struct.Node** %3, align 8 ret %struct.Node* %95 } declare dso_local i32 @printf(i8*, ...) #2 ; Function Attrs: nounwind declare dso_local i64 @time(i64*) #1 ; Function Attrs: nounwind declare dso_local void @srand(i32) #1 ; Function Attrs: nounwind declare dso_local i32 @rand() #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local double @calculateDistance(%struct.Point* byval(%struct.Point) align 8 %0, %struct.Point* byval(%struct.Point) align 8 %1, i32* %2) #0 !project_source !2 { %4 = alloca double, align 8 %5 = alloca i32*, align 8 %6 = alloca double, align 8 %7 = alloca double, align 8 %8 = alloca double, align 8 store i32* %2, i32** %5, align 8 %9 = load i32*, i32** %5, align 8 store i32 0, i32* %9, align 4 %10 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 3 %11 = load double, double* %10, align 8 %12 = fcmp ole double %11, 0.000000e+00 br i1 %12, label %17, label %13 13: ; preds = %3 %14 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3 %15 = load double, double* %14, align 8 %16 = fcmp ole double %15, 0.000000e+00 br i1 %16, label %17, label %20 17: ; preds = %13, %3 %18 = load i32*, i32** %5, align 8 store i32 1, i32* %18, align 4 %19 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0)) store double -1.000000e+00, double* %4, align 8 br label %105 20: ; preds = %13 %21 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 0 %22 = load i32, i32* %21, align 8 %23 = call i32 @abs(i32 %22) #8 %24 = icmp sgt i32 %23, 1000 br i1 %24, label %40, label %25 25: ; preds = %20 %26 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 1 %27 = load i32, i32* %26, align 4 %28 = call i32 @abs(i32 %27) #8 %29 = icmp sgt i32 %28, 1000 br i1 %29, label %40, label %30 30: ; preds = %25 %31 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 0 %32 = load i32, i32* %31, align 8 %33 = call i32 @abs(i32 %32) #8 %34 = icmp sgt i32 %33, 1000 br i1 %34, label %40, label %35 35: ; preds = %30 %36 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 1 %37 = load i32, i32* %36, align 4 %38 = call i32 @abs(i32 %37) #8 %39 = icmp sgt i32 %38, 1000 br i1 %39, label %40, label %43 40: ; preds = %35, %30, %25, %20 %41 = load i32*, i32** %5, align 8 store i32 3, i32* %41, align 4 %42 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.33, i64 0, i64 0)) store double -1.000000e+00, double* %4, align 8 br label %105 43: ; preds = %35 %44 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 0 %45 = load i32, i32* %44, align 8 %46 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 0 %47 = load i32, i32* %46, align 8 %48 = sub nsw i32 %45, %47 %49 = sitofp i32 %48 to double %50 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3 %51 = load double, double* %50, align 8 %52 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 3 %53 = load double, double* %52, align 8 %54 = fdiv double %51, %53 %55 = call double @sqrt(double %54) #7 %56 = fmul double %49, %55 store double %56, double* %6, align 8 %57 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 1 %58 = load i32, i32* %57, align 4 %59 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 1 %60 = load i32, i32* %59, align 4 %61 = sub nsw i32 %58, %60 %62 = sitofp i32 %61 to double %63 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 3 %66 = load double, double* %65, align 8 %67 = fdiv double %64, %66 %68 = call double @sqrt(double %67) #7 %69 = fmul double %62, %68 store double %69, double* %7, align 8 %70 = load double, double* %6, align 8 %71 = call double @llvm.fabs.f64(double %70) %72 = fcmp ogt double %71, 1.000000e+03 br i1 %72, label %77, label %73 73: ; preds = %43 %74 = load double, double* %7, align 8 %75 = call double @llvm.fabs.f64(double %74) %76 = fcmp ogt double %75, 1.000000e+03 br i1 %76, label %77, label %80 77: ; preds = %73, %43 %78 = load i32*, i32** %5, align 8 store i32 5, i32* %78, align 4 %79 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.34, i64 0, i64 0)) store double -1.000000e+00, double* %4, align 8 br label %105 80: ; preds = %73 %81 = load double, double* %6, align 8 %82 = load double, double* %6, align 8 %83 = fmul double %81, %82 %84 = load double, double* %7, align 8 %85 = load double, double* %7, align 8 %86 = fmul double %84, %85 %87 = fadd double %83, %86 %88 = call double @sqrt(double %87) #7 store double %88, double* %8, align 8 %89 = load double, double* %8, align 8 %90 = fcmp uno double %89, %89 br i1 %90, label %100, label %91 91: ; preds = %80 %92 = load double, double* %8, align 8 %93 = call double @llvm.fabs.f64(double %92) #9 %94 = fcmp oeq double %93, 0x7FF0000000000000 %95 = bitcast double %92 to i64 %96 = icmp slt i64 %95, 0 %97 = select i1 %96, i32 -1, i32 1 %98 = select i1 %94, i32 %97, i32 0 %99 = icmp ne i32 %98, 0 br i1 %99, label %100, label %103 100: ; preds = %91, %80 %101 = load i32*, i32** %5, align 8 store i32 8, i32* %101, align 4 %102 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.35, i64 0, i64 0)) store double -1.000000e+00, double* %4, align 8 br label %105 103: ; preds = %91 %104 = load double, double* %8, align 8 store double %104, double* %4, align 8 br label %105 105: ; preds = %103, %100, %77, %40, %17 %106 = load double, double* %4, align 8 ret double %106 } ; Function Attrs: nounwind declare dso_local double @sqrt(double) #1 ; Function Attrs: nounwind readnone speculatable willreturn declare double @llvm.fabs.f64(double) #4 ; Function Attrs: noinline nounwind optnone uwtable define dso_local double @calculateCircleArea(%struct.Circle* byval(%struct.Circle) align 8 %0, i32* %1) #0 !project_source !2 { %3 = alloca double, align 8 %4 = alloca i32*, align 8 %5 = alloca double, align 8 store i32* %1, i32** %4, align 8 %6 = load i32*, i32** %4, align 8 store i32 0, i32* %6, align 4 %7 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 2 %8 = load i32, i32* %7, align 8 %9 = icmp ne i32 %8, 0 br i1 %9, label %13, label %10 10: ; preds = %2 %11 = load i32*, i32** %4, align 8 store i32 1, i32* %11, align 4 %12 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0)) store double -1.000000e+00, double* %3, align 8 br label %92 13: ; preds = %2 %14 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1 %15 = load double, double* %14, align 8 %16 = fcmp ole double %15, 0.000000e+00 br i1 %16, label %17, label %20 17: ; preds = %13 %18 = load i32*, i32** %4, align 8 store i32 1, i32* %18, align 4 %19 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0)) store double -1.000000e+00, double* %3, align 8 br label %92 20: ; preds = %13 %21 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1 %22 = load double, double* %21, align 8 %23 = fcmp ogt double %22, 1.000000e+03 br i1 %23, label %24, label %27 24: ; preds = %20 %25 = load i32*, i32** %4, align 8 store i32 3, i32* %25, align 4 %26 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0)) store double -1.000000e+00, double* %3, align 8 br label %92 27: ; preds = %20 %28 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0 %29 = getelementptr inbounds %struct.Point, %struct.Point* %28, i32 0, i32 0 %30 = load i32, i32* %29, align 8 %31 = call i32 @abs(i32 %30) #8 %32 = icmp sgt i32 %31, 1000 br i1 %32, label %39, label %33 33: ; preds = %27 %34 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0 %35 = getelementptr inbounds %struct.Point, %struct.Point* %34, i32 0, i32 1 %36 = load i32, i32* %35, align 4 %37 = call i32 @abs(i32 %36) #8 %38 = icmp sgt i32 %37, 1000 br i1 %38, label %39, label %42 39: ; preds = %33, %27 %40 = load i32*, i32** %4, align 8 store i32 3, i32* %40, align 4 %41 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.39, i64 0, i64 0)) store double -1.000000e+00, double* %3, align 8 br label %92 42: ; preds = %33 %43 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1 %44 = load double, double* %43, align 8 %45 = fmul double 3.141590e+00, %44 %46 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1 %47 = load double, double* %46, align 8 %48 = fmul double %45, %47 store double %48, double* %5, align 8 %49 = load double, double* %5, align 8 %50 = fcmp uno double %49, %49 br i1 %50, label %60, label %51 51: ; preds = %42 %52 = load double, double* %5, align 8 %53 = call double @llvm.fabs.f64(double %52) #9 %54 = fcmp oeq double %53, 0x7FF0000000000000 %55 = bitcast double %52 to i64 %56 = icmp slt i64 %55, 0 %57 = select i1 %56, i32 -1, i32 1 %58 = select i1 %54, i32 %57, i32 0 %59 = icmp ne i32 %58, 0 br i1 %59, label %60, label %63 60: ; preds = %51, %42 %61 = load i32*, i32** %4, align 8 store i32 5, i32* %61, align 4 %62 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0)) store double -1.000000e+00, double* %3, align 8 br label %92 63: ; preds = %51 %64 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 3 %65 = getelementptr inbounds [256 x i8], [256 x i8]* %64, i64 0, i64 0 %66 = call i32 @strcmp(i8* %65, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.41, i64 0, i64 0)) #10 %67 = icmp eq i32 %66, 0 br i1 %67, label %68, label %70 68: ; preds = %63 %69 = load double, double* %5, align 8 store double %69, double* %3, align 8 br label %92 70: ; preds = %63 %71 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 3 %72 = getelementptr inbounds [256 x i8], [256 x i8]* %71, i64 0, i64 0 %73 = call i32 @strcmp(i8* %72, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.42, i64 0, i64 0)) #10 %74 = icmp eq i32 %73, 0 br i1 %74, label %75, label %89 75: ; preds = %70 %76 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0 %77 = getelementptr inbounds %struct.Point, %struct.Point* %76, i32 0, i32 3 %78 = load double, double* %77, align 8 %79 = fcmp ole double %78, 0.000000e+00 br i1 %79, label %80, label %83 80: ; preds = %75 %81 = load i32*, i32** %4, align 8 store i32 1, i32* %81, align 4 %82 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0)) store double -1.000000e+00, double* %3, align 8 br label %92 83: ; preds = %75 %84 = load double, double* %5, align 8 %85 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0 %86 = getelementptr inbounds %struct.Point, %struct.Point* %85, i32 0, i32 3 %87 = load double, double* %86, align 8 %88 = fmul double %84, %87 store double %88, double* %3, align 8 br label %92 89: ; preds = %70 %90 = load i32*, i32** %4, align 8 store i32 1, i32* %90, align 4 %91 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.44, i64 0, i64 0)) store double -1.000000e+00, double* %3, align 8 br label %92 92: ; preds = %89, %83, %80, %68, %60, %39, %24, %17, %10 %93 = load double, double* %3, align 8 ret double %93 } ; Function Attrs: nounwind readonly declare dso_local i32 @strcmp(i8*, i8*) #5 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @validateMatrix(%struct.Matrix* %0) #0 !project_source !2 { %2 = alloca i32, align 4 %3 = alloca %struct.Matrix*, align 8 %4 = alloca i32, align 4 store %struct.Matrix* %0, %struct.Matrix** %3, align 8 %5 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %6 = icmp ne %struct.Matrix* %5, null br i1 %6, label %9, label %7 7: ; preds = %1 %8 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0)) store i32 7, i32* %2, align 4 br label %78 9: ; preds = %1 %10 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %11 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %10, i32 0, i32 0 %12 = load i32**, i32*** %11, align 8 %13 = icmp ne i32** %12, null br i1 %13, label %16, label %14 14: ; preds = %9 %15 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0)) store i32 7, i32* %2, align 4 br label %78 16: ; preds = %9 %17 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %18 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %17, i32 0, i32 1 %19 = load i32, i32* %18, align 8 %20 = icmp slt i32 %19, 1 br i1 %20, label %26, label %21 21: ; preds = %16 %22 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %23 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %22, i32 0, i32 2 %24 = load i32, i32* %23, align 4 %25 = icmp slt i32 %24, 1 br i1 %25, label %26, label %28 26: ; preds = %21, %16 %27 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0)) store i32 1, i32* %2, align 4 br label %78 28: ; preds = %21 %29 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %30 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %29, i32 0, i32 1 %31 = load i32, i32* %30, align 8 %32 = icmp sgt i32 %31, 100 br i1 %32, label %38, label %33 33: ; preds = %28 %34 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %35 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %34, i32 0, i32 2 %36 = load i32, i32* %35, align 4 %37 = icmp sgt i32 %36, 100 br i1 %37, label %38, label %40 38: ; preds = %33, %28 %39 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0)) store i32 3, i32* %2, align 4 br label %78 40: ; preds = %33 store i32 0, i32* %4, align 4 br label %41 41: ; preds = %59, %40 %42 = load i32, i32* %4, align 4 %43 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %44 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %43, i32 0, i32 1 %45 = load i32, i32* %44, align 8 %46 = icmp slt i32 %42, %45 br i1 %46, label %47, label %62 47: ; preds = %41 %48 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %49 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %48, i32 0, i32 0 %50 = load i32**, i32*** %49, align 8 %51 = load i32, i32* %4, align 4 %52 = sext i32 %51 to i64 %53 = getelementptr inbounds i32*, i32** %50, i64 %52 %54 = load i32*, i32** %53, align 8 %55 = icmp ne i32* %54, null br i1 %55, label %58, label %56 56: ; preds = %47 %57 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.47, i64 0, i64 0)) store i32 7, i32* %2, align 4 br label %78 58: ; preds = %47 br label %59 59: ; preds = %58 %60 = load i32, i32* %4, align 4 %61 = add nsw i32 %60, 1 store i32 %61, i32* %4, align 4 br label %41 62: ; preds = %41 %63 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %64 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %63, i32 0, i32 1 %65 = load i32, i32* %64, align 8 %66 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %67 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %66, i32 0, i32 2 %68 = load i32, i32* %67, align 4 %69 = icmp eq i32 %65, %68 %70 = zext i1 %69 to i32 %71 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %72 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %71, i32 0, i32 3 %73 = load i32, i32* %72, align 8 %74 = icmp ne i32 %70, %73 br i1 %74, label %75, label %77 75: ; preds = %62 %76 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.48, i64 0, i64 0)) store i32 1, i32* %2, align 4 br label %78 77: ; preds = %62 store i32 0, i32* %2, align 4 br label %78 78: ; preds = %77, %75, %56, %38, %26, %14, %7 %79 = load i32, i32* %2, align 4 ret i32 %79 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local %struct.Point* @findCentroid(%struct.Point* %0, i32 %1, i32* %2) #0 !project_source !2 { %4 = alloca %struct.Point*, align 8 %5 = alloca %struct.Point*, align 8 %6 = alloca i32, align 4 %7 = alloca i32*, align 8 %8 = alloca %struct.Point*, align 8 %9 = alloca double, align 8 %10 = alloca double, align 8 %11 = alloca double, align 8 %12 = alloca i32, align 4 store %struct.Point* %0, %struct.Point** %5, align 8 store i32 %1, i32* %6, align 4 store i32* %2, i32** %7, align 8 %13 = load i32*, i32** %7, align 8 store i32 0, i32* %13, align 4 %14 = load %struct.Point*, %struct.Point** %5, align 8 %15 = icmp ne %struct.Point* %14, null br i1 %15, label %16, label %19 16: ; preds = %3 %17 = load i32, i32* %6, align 4 %18 = icmp sle i32 %17, 0 br i1 %18, label %19, label %22 19: ; preds = %16, %3 %20 = load i32*, i32** %7, align 8 store i32 1, i32* %20, align 4 %21 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.50, i64 0, i64 0)) store %struct.Point* null, %struct.Point** %4, align 8 br label %171 22: ; preds = %16 %23 = load i32, i32* %6, align 4 %24 = icmp sgt i32 %23, 1000 br i1 %24, label %25, label %28 25: ; preds = %22 %26 = load i32*, i32** %7, align 8 store i32 3, i32* %26, align 4 %27 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.51, i64 0, i64 0)) store %struct.Point* null, %struct.Point** %4, align 8 br label %171 28: ; preds = %22 %29 = call noalias i8* @malloc(i64 272) #7 %30 = bitcast i8* %29 to %struct.Point* store %struct.Point* %30, %struct.Point** %8, align 8 %31 = load %struct.Point*, %struct.Point** %8, align 8 %32 = icmp ne %struct.Point* %31, null br i1 %32, label %36, label %33 33: ; preds = %28 %34 = load i32*, i32** %7, align 8 store i32 2, i32* %34, align 4 %35 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.52, i64 0, i64 0)) store %struct.Point* null, %struct.Point** %4, align 8 br label %171 36: ; preds = %28 store double 0.000000e+00, double* %9, align 8 store double 0.000000e+00, double* %10, align 8 store double 0.000000e+00, double* %11, align 8 store i32 0, i32* %12, align 4 br label %37 37: ; preds = %136, %36 %38 = load i32, i32* %12, align 4 %39 = load i32, i32* %6, align 4 %40 = icmp slt i32 %38, %39 br i1 %40, label %41, label %139 41: ; preds = %37 %42 = load %struct.Point*, %struct.Point** %5, align 8 %43 = load i32, i32* %12, align 4 %44 = sext i32 %43 to i64 %45 = getelementptr inbounds %struct.Point, %struct.Point* %42, i64 %44 %46 = getelementptr inbounds %struct.Point, %struct.Point* %45, i32 0, i32 3 %47 = load double, double* %46, align 8 %48 = fcmp ole double %47, 0.000000e+00 br i1 %48, label %49, label %54 49: ; preds = %41 %50 = load i32*, i32** %7, align 8 store i32 1, i32* %50, align 4 %51 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.53, i64 0, i64 0)) %52 = load %struct.Point*, %struct.Point** %8, align 8 %53 = bitcast %struct.Point* %52 to i8* call void @free(i8* %53) #7 store %struct.Point* null, %struct.Point** %4, align 8 br label %171 54: ; preds = %41 %55 = load %struct.Point*, %struct.Point** %5, align 8 %56 = load i32, i32* %12, align 4 %57 = sext i32 %56 to i64 %58 = getelementptr inbounds %struct.Point, %struct.Point* %55, i64 %57 %59 = getelementptr inbounds %struct.Point, %struct.Point* %58, i32 0, i32 3 %60 = load double, double* %59, align 8 %61 = load double, double* %9, align 8 %62 = fadd double %61, %60 store double %62, double* %9, align 8 %63 = load %struct.Point*, %struct.Point** %5, align 8 %64 = load i32, i32* %12, align 4 %65 = sext i32 %64 to i64 %66 = getelementptr inbounds %struct.Point, %struct.Point* %63, i64 %65 %67 = getelementptr inbounds %struct.Point, %struct.Point* %66, i32 0, i32 0 %68 = load i32, i32* %67, align 8 %69 = sitofp i32 %68 to double %70 = load %struct.Point*, %struct.Point** %5, align 8 %71 = load i32, i32* %12, align 4 %72 = sext i32 %71 to i64 %73 = getelementptr inbounds %struct.Point, %struct.Point* %70, i64 %72 %74 = getelementptr inbounds %struct.Point, %struct.Point* %73, i32 0, i32 3 %75 = load double, double* %74, align 8 %76 = fmul double %69, %75 %77 = load double, double* %10, align 8 %78 = fadd double %77, %76 store double %78, double* %10, align 8 %79 = load %struct.Point*, %struct.Point** %5, align 8 %80 = load i32, i32* %12, align 4 %81 = sext i32 %80 to i64 %82 = getelementptr inbounds %struct.Point, %struct.Point* %79, i64 %81 %83 = getelementptr inbounds %struct.Point, %struct.Point* %82, i32 0, i32 1 %84 = load i32, i32* %83, align 4 %85 = sitofp i32 %84 to double %86 = load %struct.Point*, %struct.Point** %5, align 8 %87 = load i32, i32* %12, align 4 %88 = sext i32 %87 to i64 %89 = getelementptr inbounds %struct.Point, %struct.Point* %86, i64 %88 %90 = getelementptr inbounds %struct.Point, %struct.Point* %89, i32 0, i32 3 %91 = load double, double* %90, align 8 %92 = fmul double %85, %91 %93 = load double, double* %11, align 8 %94 = fadd double %93, %92 store double %94, double* %11, align 8 %95 = load double, double* %9, align 8 %96 = fcmp uno double %95, %95 br i1 %96, label %130, label %97 97: ; preds = %54 %98 = load double, double* %10, align 8 %99 = fcmp uno double %98, %98 br i1 %99, label %130, label %100 100: ; preds = %97 %101 = load double, double* %11, align 8 %102 = fcmp uno double %101, %101 br i1 %102, label %130, label %103 103: ; preds = %100 %104 = load double, double* %9, align 8 %105 = call double @llvm.fabs.f64(double %104) #9 %106 = fcmp oeq double %105, 0x7FF0000000000000 %107 = bitcast double %104 to i64 %108 = icmp slt i64 %107, 0 %109 = select i1 %108, i32 -1, i32 1 %110 = select i1 %106, i32 %109, i32 0 %111 = icmp ne i32 %110, 0 br i1 %111, label %130, label %112 112: ; preds = %103 %113 = load double, double* %10, align 8 %114 = call double @llvm.fabs.f64(double %113) #9 %115 = fcmp oeq double %114, 0x7FF0000000000000 %116 = bitcast double %113 to i64 %117 = icmp slt i64 %116, 0 %118 = select i1 %117, i32 -1, i32 1 %119 = select i1 %115, i32 %118, i32 0 %120 = icmp ne i32 %119, 0 br i1 %120, label %130, label %121 121: ; preds = %112 %122 = load double, double* %11, align 8 %123 = call double @llvm.fabs.f64(double %122) #9 %124 = fcmp oeq double %123, 0x7FF0000000000000 %125 = bitcast double %122 to i64 %126 = icmp slt i64 %125, 0 %127 = select i1 %126, i32 -1, i32 1 %128 = select i1 %124, i32 %127, i32 0 %129 = icmp ne i32 %128, 0 br i1 %129, label %130, label %135 130: ; preds = %121, %112, %103, %100, %97, %54 %131 = load i32*, i32** %7, align 8 store i32 5, i32* %131, align 4 %132 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.54, i64 0, i64 0)) %133 = load %struct.Point*, %struct.Point** %8, align 8 %134 = bitcast %struct.Point* %133 to i8* call void @free(i8* %134) #7 store %struct.Point* null, %struct.Point** %4, align 8 br label %171 135: ; preds = %121 br label %136 136: ; preds = %135 %137 = load i32, i32* %12, align 4 %138 = add nsw i32 %137, 1 store i32 %138, i32* %12, align 4 br label %37 139: ; preds = %37 %140 = load double, double* %9, align 8 %141 = fcmp oeq double %140, 0.000000e+00 br i1 %141, label %142, label %147 142: ; preds = %139 %143 = load i32*, i32** %7, align 8 store i32 1, i32* %143, align 4 %144 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i64 0, i64 0)) %145 = load %struct.Point*, %struct.Point** %8, align 8 %146 = bitcast %struct.Point* %145 to i8* call void @free(i8* %146) #7 store %struct.Point* null, %struct.Point** %4, align 8 br label %171 147: ; preds = %139 %148 = load double, double* %10, align 8 %149 = load double, double* %9, align 8 %150 = fdiv double %148, %149 %151 = fptosi double %150 to i32 %152 = load %struct.Point*, %struct.Point** %8, align 8 %153 = getelementptr inbounds %struct.Point, %struct.Point* %152, i32 0, i32 0 store i32 %151, i32* %153, align 8 %154 = load double, double* %11, align 8 %155 = load double, double* %9, align 8 %156 = fdiv double %154, %155 %157 = fptosi double %156 to i32 %158 = load %struct.Point*, %struct.Point** %8, align 8 %159 = getelementptr inbounds %struct.Point, %struct.Point* %158, i32 0, i32 1 store i32 %157, i32* %159, align 4 %160 = load double, double* %9, align 8 %161 = load i32, i32* %6, align 4 %162 = sitofp i32 %161 to double %163 = fdiv double %160, %162 %164 = load %struct.Point*, %struct.Point** %8, align 8 %165 = getelementptr inbounds %struct.Point, %struct.Point* %164, i32 0, i32 3 store double %163, double* %165, align 8 %166 = load %struct.Point*, %struct.Point** %8, align 8 %167 = getelementptr inbounds %struct.Point, %struct.Point* %166, i32 0, i32 2 %168 = getelementptr inbounds [256 x i8], [256 x i8]* %167, i64 0, i64 0 %169 = call i8* @strcpy(i8* %168, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.56, i64 0, i64 0)) #7 %170 = load %struct.Point*, %struct.Point** %8, align 8 store %struct.Point* %170, %struct.Point** %4, align 8 br label %171 171: ; preds = %147, %142, %130, %49, %33, %25, %19 %172 = load %struct.Point*, %struct.Point** %4, align 8 ret %struct.Point* %172 } ; Function Attrs: nounwind declare dso_local i8* @strcpy(i8*, i8*) #1 ; Function Attrs: nounwind readonly declare dso_local i64 @strlen(i8*) #5 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #6 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #6 define i32 @fused_quickSort(i1 %0, i32* %1, i32 %2, i32 %3, i32* %4, i32 %5) { entry: br label %6 6: ; preds = %entry %7 = alloca i32, align 4 %8 = alloca i32, align 4 store i32 %5, i32* %7, align 4 store i32 0, i32* %8, align 4 br label %9 9: ; preds = %6 %10 = alloca i32*, align 8 %11 = alloca i32, align 4 %12 = alloca i32, align 4 %13 = alloca i32*, align 8 %14 = alloca i32, align 4 %15 = alloca i32, align 4 %16 = alloca i32, align 4 %17 = alloca i32, align 4 %18 = alloca i32, align 4 %19 = alloca i32, align 4 store i32* %1, i32** %10, align 8 store i32 %2, i32* %11, align 4 store i32 %3, i32* %12, align 4 store i32* %4, i32** %13, align 8 %20 = load i32, i32* @recursionDepth, align 4 %21 = add nsw i32 %20, 1 store i32 %21, i32* @recursionDepth, align 4 %22 = icmp sgt i32 %21, 1000 br i1 %22, label %23, label %28 23: ; preds = %9 %24 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0)) %25 = load i32*, i32** %13, align 8 store i32 1, i32* %25, align 4 %26 = load i32, i32* @recursionDepth, align 4 %27 = add nsw i32 %26, -1 store i32 %27, i32* @recursionDepth, align 4 br label %269 28: ; preds = %9 %29 = load i32*, i32** %10, align 8 %30 = icmp ne i32* %29, null br i1 %30, label %36, label %31 31: ; preds = %28 %32 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0)) %33 = load i32*, i32** %13, align 8 store i32 1, i32* %33, align 4 %34 = load i32, i32* @recursionDepth, align 4 %35 = add nsw i32 %34, -1 store i32 %35, i32* @recursionDepth, align 4 br label %269 36: ; preds = %28 %37 = load i32, i32* %11, align 4 %38 = icmp slt i32 %37, 0 br i1 %38, label %48, label %39 39: ; preds = %36 %40 = load i32, i32* %12, align 4 %41 = icmp slt i32 %40, 0 br i1 %41, label %48, label %42 42: ; preds = %39 %43 = load i32, i32* %11, align 4 %44 = icmp sge i32 %43, 1000 br i1 %44, label %48, label %45 45: ; preds = %42 %46 = load i32, i32* %12, align 4 %47 = icmp sge i32 %46, 1000 br i1 %47, label %48, label %53 48: ; preds = %45, %42, %39, %36 %49 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0)) %50 = load i32*, i32** %13, align 8 store i32 1, i32* %50, align 4 %51 = load i32, i32* @recursionDepth, align 4 %52 = add nsw i32 %51, -1 store i32 %52, i32* @recursionDepth, align 4 br label %269 53: ; preds = %45 %54 = load i32, i32* %11, align 4 %55 = load i32, i32* %12, align 4 %56 = icmp slt i32 %54, %55 br i1 %56, label %57, label %254 57: ; preds = %53 %58 = load i32, i32* %11, align 4 %59 = load i32, i32* %12, align 4 %60 = load i32, i32* %11, align 4 %61 = sub nsw i32 %59, %60 %62 = sdiv i32 %61, 2 %63 = add nsw i32 %58, %62 store i32 %63, i32* %14, align 4 %64 = load i32*, i32** %10, align 8 %65 = load i32, i32* %11, align 4 %66 = sext i32 %65 to i64 %67 = getelementptr inbounds i32, i32* %64, i64 %66 %68 = load i32, i32* %67, align 4 %69 = load i32*, i32** %10, align 8 %70 = load i32, i32* %14, align 4 %71 = sext i32 %70 to i64 %72 = getelementptr inbounds i32, i32* %69, i64 %71 %73 = load i32, i32* %72, align 4 %74 = icmp sle i32 %68, %73 br i1 %74, label %75, label %107 75: ; preds = %57 %76 = load i32*, i32** %10, align 8 %77 = load i32, i32* %14, align 4 %78 = sext i32 %77 to i64 %79 = getelementptr inbounds i32, i32* %76, i64 %78 %80 = load i32, i32* %79, align 4 %81 = load i32*, i32** %10, align 8 %82 = load i32, i32* %12, align 4 %83 = sext i32 %82 to i64 %84 = getelementptr inbounds i32, i32* %81, i64 %83 %85 = load i32, i32* %84, align 4 %86 = icmp sle i32 %80, %85 br i1 %86, label %87, label %89 87: ; preds = %75 %88 = load i32, i32* %14, align 4 store i32 %88, i32* %15, align 4 br label %106 89: ; preds = %75 %90 = load i32*, i32** %10, align 8 %91 = load i32, i32* %11, align 4 %92 = sext i32 %91 to i64 %93 = getelementptr inbounds i32, i32* %90, i64 %92 %94 = load i32, i32* %93, align 4 %95 = load i32*, i32** %10, align 8 %96 = load i32, i32* %12, align 4 %97 = sext i32 %96 to i64 %98 = getelementptr inbounds i32, i32* %95, i64 %97 %99 = load i32, i32* %98, align 4 %100 = icmp sle i32 %94, %99 br i1 %100, label %101, label %103 101: ; preds = %89 %102 = load i32, i32* %12, align 4 store i32 %102, i32* %15, align 4 br label %105 103: ; preds = %89 %104 = load i32, i32* %11, align 4 store i32 %104, i32* %15, align 4 br label %105 105: ; preds = %103, %101 br label %106 106: ; preds = %105, %87 br label %139 107: ; preds = %57 %108 = load i32*, i32** %10, align 8 %109 = load i32, i32* %11, align 4 %110 = sext i32 %109 to i64 %111 = getelementptr inbounds i32, i32* %108, i64 %110 %112 = load i32, i32* %111, align 4 %113 = load i32*, i32** %10, align 8 %114 = load i32, i32* %12, align 4 %115 = sext i32 %114 to i64 %116 = getelementptr inbounds i32, i32* %113, i64 %115 %117 = load i32, i32* %116, align 4 %118 = icmp sle i32 %112, %117 br i1 %118, label %119, label %121 119: ; preds = %107 %120 = load i32, i32* %11, align 4 store i32 %120, i32* %15, align 4 br label %138 121: ; preds = %107 %122 = load i32*, i32** %10, align 8 %123 = load i32, i32* %14, align 4 %124 = sext i32 %123 to i64 %125 = getelementptr inbounds i32, i32* %122, i64 %124 %126 = load i32, i32* %125, align 4 %127 = load i32*, i32** %10, align 8 %128 = load i32, i32* %12, align 4 %129 = sext i32 %128 to i64 %130 = getelementptr inbounds i32, i32* %127, i64 %129 %131 = load i32, i32* %130, align 4 %132 = icmp sle i32 %126, %131 br i1 %132, label %133, label %135 133: ; preds = %121 %134 = load i32, i32* %12, align 4 store i32 %134, i32* %15, align 4 br label %137 135: ; preds = %121 %136 = load i32, i32* %14, align 4 store i32 %136, i32* %15, align 4 br label %137 137: ; preds = %135, %133 br label %138 138: ; preds = %137, %119 br label %139 139: ; preds = %138, %106 %140 = load i32*, i32** %10, align 8 %141 = load i32, i32* %12, align 4 %142 = sext i32 %141 to i64 %143 = getelementptr inbounds i32, i32* %140, i64 %142 %144 = load i32, i32* %143, align 4 store i32 %144, i32* %16, align 4 %145 = load i32*, i32** %10, align 8 %146 = load i32, i32* %15, align 4 %147 = sext i32 %146 to i64 %148 = getelementptr inbounds i32, i32* %145, i64 %147 %149 = load i32, i32* %148, align 4 %150 = load i32*, i32** %10, align 8 %151 = load i32, i32* %12, align 4 %152 = sext i32 %151 to i64 %153 = getelementptr inbounds i32, i32* %150, i64 %152 store i32 %149, i32* %153, align 4 %154 = load i32, i32* %16, align 4 %155 = load i32*, i32** %10, align 8 %156 = load i32, i32* %15, align 4 %157 = sext i32 %156 to i64 %158 = getelementptr inbounds i32, i32* %155, i64 %157 store i32 %154, i32* %158, align 4 %159 = load i32*, i32** %10, align 8 %160 = load i32, i32* %12, align 4 %161 = sext i32 %160 to i64 %162 = getelementptr inbounds i32, i32* %159, i64 %161 %163 = load i32, i32* %162, align 4 store i32 %163, i32* %17, align 4 %164 = load i32, i32* %11, align 4 %165 = sub nsw i32 %164, 1 store i32 %165, i32* %18, align 4 %166 = load i32, i32* %11, align 4 store i32 %166, i32* %19, align 4 br label %167 167: ; preds = %204, %139 %168 = load i32, i32* %19, align 4 %169 = load i32, i32* %12, align 4 %170 = icmp slt i32 %168, %169 br i1 %170, label %171, label %207 171: ; preds = %167 %172 = load i32*, i32** %10, align 8 %173 = load i32, i32* %19, align 4 %174 = sext i32 %173 to i64 %175 = getelementptr inbounds i32, i32* %172, i64 %174 %176 = load i32, i32* %175, align 4 %177 = load i32, i32* %17, align 4 %178 = icmp sle i32 %176, %177 br i1 %178, label %179, label %203 179: ; preds = %171 %180 = load i32, i32* %18, align 4 %181 = add nsw i32 %180, 1 store i32 %181, i32* %18, align 4 %182 = load i32*, i32** %10, align 8 %183 = load i32, i32* %18, align 4 %184 = sext i32 %183 to i64 %185 = getelementptr inbounds i32, i32* %182, i64 %184 %186 = load i32, i32* %185, align 4 store i32 %186, i32* %16, align 4 %187 = load i32*, i32** %10, align 8 %188 = load i32, i32* %19, align 4 %189 = sext i32 %188 to i64 %190 = getelementptr inbounds i32, i32* %187, i64 %189 %191 = load i32, i32* %190, align 4 %192 = load i32*, i32** %10, align 8 %193 = load i32, i32* %18, align 4 %194 = sext i32 %193 to i64 %195 = getelementptr inbounds i32, i32* %192, i64 %194 store i32 %191, i32* %195, align 4 %196 = load i32, i32* %16, align 4 %197 = load i32*, i32** %10, align 8 %198 = load i32, i32* %19, align 4 %199 = sext i32 %198 to i64 %200 = getelementptr inbounds i32, i32* %197, i64 %199 store i32 %196, i32* %200, align 4 %201 = load i32, i32* @globalCounter, align 4 %202 = add nsw i32 %201, 1 store i32 %202, i32* @globalCounter, align 4 br label %203 203: ; preds = %179, %171 br label %204 204: ; preds = %203 %205 = load i32, i32* %19, align 4 %206 = add nsw i32 %205, 1 store i32 %206, i32* %19, align 4 br label %167 207: ; preds = %167 %208 = load i32*, i32** %10, align 8 %209 = load i32, i32* %18, align 4 %210 = add nsw i32 %209, 1 %211 = sext i32 %210 to i64 %212 = getelementptr inbounds i32, i32* %208, i64 %211 %213 = load i32, i32* %212, align 4 store i32 %213, i32* %16, align 4 %214 = load i32*, i32** %10, align 8 %215 = load i32, i32* %12, align 4 %216 = sext i32 %215 to i64 %217 = getelementptr inbounds i32, i32* %214, i64 %216 %218 = load i32, i32* %217, align 4 %219 = load i32*, i32** %10, align 8 %220 = load i32, i32* %18, align 4 %221 = add nsw i32 %220, 1 %222 = sext i32 %221 to i64 %223 = getelementptr inbounds i32, i32* %219, i64 %222 store i32 %218, i32* %223, align 4 %224 = load i32, i32* %16, align 4 %225 = load i32*, i32** %10, align 8 %226 = load i32, i32* %12, align 4 %227 = sext i32 %226 to i64 %228 = getelementptr inbounds i32, i32* %225, i64 %227 store i32 %224, i32* %228, align 4 %229 = load i32*, i32** %10, align 8 %230 = load i32, i32* %11, align 4 %231 = load i32, i32* %18, align 4 %232 = load i32*, i32** %13, align 8 %233 = call i32 @fused_quickSort(i1 false, i32* %229, i32 %230, i32 %231, i32* %232, i32 0) %234 = load i32*, i32** %13, align 8 %235 = load i32, i32* %234, align 4 %236 = icmp ne i32 %235, 0 br i1 %236, label %237, label %240 237: ; preds = %207 %238 = load i32, i32* @recursionDepth, align 4 %239 = add nsw i32 %238, -1 store i32 %239, i32* @recursionDepth, align 4 br label %269 240: ; preds = %207 %241 = load i32*, i32** %10, align 8 %242 = load i32, i32* %18, align 4 %243 = add nsw i32 %242, 2 %244 = load i32, i32* %12, align 4 %245 = load i32*, i32** %13, align 8 %246 = call i32 @fused_quickSort(i1 false, i32* %241, i32 %243, i32 %244, i32* %245, i32 0) %247 = load i32*, i32** %13, align 8 %248 = load i32, i32* %247, align 4 %249 = icmp ne i32 %248, 0 br i1 %249, label %250, label %253 250: ; preds = %240 %251 = load i32, i32* @recursionDepth, align 4 %252 = add nsw i32 %251, -1 store i32 %252, i32* @recursionDepth, align 4 br label %269 253: ; preds = %240 br label %254 254: ; preds = %253, %53 %255 = load i32, i32* @recursionDepth, align 4 %256 = add nsw i32 %255, -1 store i32 %256, i32* @recursionDepth, align 4 br label %257 257: ; preds = %254, %260 %258 = load i32, i32* %7, align 4 %259 = icmp ne i32 %258, 0 br i1 %259, label %260, label %267 260: ; preds = %257 %261 = load i32, i32* %7, align 4 %262 = and i32 %261, 1 %263 = load i32, i32* %8, align 4 %264 = add nsw i32 %263, %262 store i32 %264, i32* %8, align 4 %265 = load i32, i32* %7, align 4 %266 = ashr i32 %265, 1 store i32 %266, i32* %7, align 4 br label %257 267: ; preds = %257 %268 = load i32, i32* %8, align 4 ret i32 %268 269: ; preds = %250, %237, %48, %31, %23 ret i32 0 } define i32 @fused_performSimpleCalculations(i1 %0, i32* %1, i32 %2) { entry: br label %3 3: ; preds = %entry %4 = alloca i32*, align 8 %5 = alloca i32, align 4 %6 = alloca [100 x i32], align 16 %7 = alloca i32, align 4 %8 = alloca i32, align 4 %9 = alloca i32, align 4 %10 = alloca i32, align 4 %11 = alloca i32, align 4 store i32* %1, i32** %4, align 8 store i32 %2, i32* %5, align 4 store i32 0, i32* %7, align 4 br label %12 12: ; preds = %3 %13 = alloca i32, align 4 store i32 100, i32* %13, align 4 %14 = load i32, i32* %13, align 4 %15 = icmp sgt i32 %14, 50 br i1 %15, label %16, label %21 16: ; preds = %12 %17 = load i32, i32* %13, align 4 %18 = mul nsw i32 %17, 2 %19 = load i32, i32* @calculationResult, align 4 %20 = add nsw i32 %19, %18 store i32 %20, i32* @calculationResult, align 4 br label %38 21: ; preds = %12 %22 = load i32, i32* %13, align 4 %23 = sdiv i32 %22, 2 %24 = load i32, i32* @calculationResult, align 4 %25 = add nsw i32 %24, %23 store i32 %25, i32* @calculationResult, align 4 br label %26 26: ; preds = %21 %27 = load i32, i32* %7, align 4 %28 = load i32, i32* %5, align 4 %29 = icmp slt i32 %27, %28 br i1 %29, label %30, label %34 30: ; preds = %26 %31 = load i32, i32* %7, align 4 %32 = sext i32 %31 to i64 %33 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %32 store i32 1, i32* %33, align 4 br label %35 34: ; preds = %26 store i32 1, i32* %8, align 4 br label %48 35: ; preds = %30 %36 = load i32, i32* %7, align 4 %37 = add nsw i32 %36, 1 store i32 %37, i32* %7, align 4 br label %38 38: ; preds = %16, %35 %39 = load i32, i32* %13, align 4 %40 = srem i32 %39, 3 %41 = icmp eq i32 %40, 0 br i1 %41, label %42, label %45 42: ; preds = %38 %43 = load i32, i32* @calculationResult, align 4 %44 = mul nsw i32 %43, 3 store i32 %44, i32* @calculationResult, align 4 br label %98 45: ; preds = %38 %46 = load i32, i32* @calculationResult, align 4 %47 = add nsw i32 %46, 3 store i32 %47, i32* @calculationResult, align 4 br label %48 48: ; preds = %45, %83, %34 %49 = load i32, i32* %8, align 4 %50 = load i32, i32* %5, align 4 %51 = icmp slt i32 %49, %50 br i1 %51, label %52, label %53 52: ; preds = %48 store i32 0, i32* %9, align 4 br label %54 53: ; preds = %48 store i32 0, i32* %10, align 4 store i32 0, i32* %11, align 4 br label %110 54: ; preds = %52 %55 = load i32, i32* %9, align 4 %56 = load i32, i32* %8, align 4 %57 = icmp slt i32 %55, %56 br i1 %57, label %58, label %70 58: ; preds = %54 %59 = load i32*, i32** %4, align 8 %60 = load i32, i32* %8, align 4 %61 = sext i32 %60 to i64 %62 = getelementptr inbounds i32, i32* %59, i64 %61 %63 = load i32, i32* %62, align 4 %64 = load i32*, i32** %4, align 8 %65 = load i32, i32* %9, align 4 %66 = sext i32 %65 to i64 %67 = getelementptr inbounds i32, i32* %64, i64 %66 %68 = load i32, i32* %67, align 4 %69 = icmp sgt i32 %63, %68 br i1 %69, label %71, label %82 70: ; preds = %54 br label %83 71: ; preds = %58 %72 = load i32, i32* %8, align 4 %73 = sext i32 %72 to i64 %74 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %73 %75 = load i32, i32* %74, align 4 %76 = load i32, i32* %9, align 4 %77 = sext i32 %76 to i64 %78 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %77 %79 = load i32, i32* %78, align 4 %80 = add nsw i32 %79, 1 %81 = icmp slt i32 %75, %80 br i1 %81, label %86, label %82 82: ; preds = %86, %71, %58 br label %95 83: ; preds = %70 %84 = load i32, i32* %8, align 4 %85 = add nsw i32 %84, 1 store i32 %85, i32* %8, align 4 br label %48 86: ; preds = %71 %87 = load i32, i32* %9, align 4 %88 = sext i32 %87 to i64 %89 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %88 %90 = load i32, i32* %89, align 4 %91 = add nsw i32 %90, 1 %92 = load i32, i32* %8, align 4 %93 = sext i32 %92 to i64 %94 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %93 store i32 %91, i32* %94, align 4 br label %82 95: ; preds = %82 %96 = load i32, i32* %9, align 4 %97 = add nsw i32 %96, 1 store i32 %97, i32* %9, align 4 br label %98 98: ; preds = %42, %95 %99 = load i32, i32* @calculationResult, align 4 %100 = icmp sge i32 %99, 150 br i1 %100, label %101, label %107 101: ; preds = %98 %102 = load i32, i32* @calculationResult, align 4 %103 = icmp sle i32 %102, 300 br i1 %103, label %104, label %107 104: ; preds = %101 %105 = load i32, i32* @calculationResult, align 4 %106 = sub nsw i32 %105, 50 store i32 %106, i32* @calculationResult, align 4 br label %132 107: ; preds = %101, %98 %108 = load i32, i32* @calculationResult, align 4 %109 = add nsw i32 %108, 50 store i32 %109, i32* @calculationResult, align 4 br label %110 110: ; preds = %107, %53 %111 = load i32, i32* %11, align 4 %112 = load i32, i32* %5, align 4 %113 = icmp slt i32 %111, %112 br i1 %113, label %114, label %121 114: ; preds = %110 %115 = load i32, i32* %10, align 4 %116 = load i32, i32* %11, align 4 %117 = sext i32 %116 to i64 %118 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %117 %119 = load i32, i32* %118, align 4 %120 = icmp slt i32 %115, %119 br i1 %120, label %123, label %128 121: ; preds = %110 %122 = load i32, i32* %10, align 4 ret i32 %122 123: ; preds = %114 %124 = load i32, i32* %11, align 4 %125 = sext i32 %124 to i64 %126 = getelementptr inbounds [100 x i32], [100 x i32]* %6, i64 0, i64 %125 %127 = load i32, i32* %126, align 4 store i32 %127, i32* %10, align 4 br label %128 128: ; preds = %123, %114 br label %129 129: ; preds = %128 %130 = load i32, i32* %11, align 4 %131 = add nsw i32 %130, 1 store i32 %131, i32* %11, align 4 br label %132 132: ; preds = %104, %129 %133 = load i32, i32* @calculationResult, align 4 %134 = srem i32 %133, 2 %135 = icmp eq i32 %134, 0 br i1 %135, label %136, label %139 136: ; preds = %132 %137 = load i32, i32* @calculationResult, align 4 %138 = sdiv i32 %137, 2 store i32 %138, i32* @calculationResult, align 4 br label %142 139: ; preds = %132 %140 = load i32, i32* @calculationResult, align 4 %141 = mul nsw i32 %140, 2 store i32 %141, i32* @calculationResult, align 4 br label %142 142: ; preds = %139, %136 %143 = load i32, i32* @calculationResult, align 4 %144 = srem i32 %143, 10 %145 = icmp slt i32 %144, 5 br i1 %145, label %146, label %149 146: ; preds = %142 %147 = load i32, i32* @calculationResult, align 4 %148 = add nsw i32 %147, 5 store i32 %148, i32* @calculationResult, align 4 br label %152 149: ; preds = %142 %150 = load i32, i32* @calculationResult, align 4 %151 = sub nsw i32 %150, 5 store i32 %151, i32* @calculationResult, align 4 br label %152 152: ; preds = %149, %146 %153 = load i32, i32* @calculationResult, align 4 %154 = icmp sgt i32 %153, 1000 br i1 %154, label %155, label %156 155: ; preds = %152 store i32 1000, i32* @calculationResult, align 4 br label %159 156: ; preds = %152 %157 = load i32, i32* @calculationResult, align 4 %158 = add nsw i32 %157, 10 store i32 %158, i32* @calculationResult, align 4 br label %159 159: ; preds = %156, %155 %160 = load i32, i32* @calculationResult, align 4 %161 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.27, i64 0, i64 0), i32 %160) ret i32 0 } define %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 %0, i32 %1) { entry: br label %2 2: ; preds = %entry %3 = alloca i32, align 4 %4 = alloca i32, align 4 store i32 %1, i32* %4, align 4 %5 = load i32, i32* %4, align 4 %6 = sext i32 %5 to i64 %7 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %6 %8 = load i32, i32* %7, align 4 %9 = icmp ne i32 %8, -1 br i1 %9, label %10, label %15 10: ; preds = %2 %11 = load i32, i32* %4, align 4 %12 = sext i32 %11 to i64 %13 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %12 %14 = load i32, i32* %13, align 4 store i32 %14, i32* %3, align 4 br label %18 15: ; preds = %2 %16 = load i32, i32* %4, align 4 %17 = icmp sle i32 %16, 1 br i1 %17, label %20, label %22 18: ; preds = %20, %10 %19 = load i32, i32* %3, align 4 %struct.target = insertvalue %fused_return_projectA_main_memoizedFib zeroinitializer, i32 %19, 0 %struct.bunker1 = insertvalue %fused_return_projectA_main_memoizedFib %struct.target, i32 0, 1 ret %fused_return_projectA_main_memoizedFib %struct.bunker1 20: ; preds = %15 %21 = load i32, i32* %4, align 4 store i32 %21, i32* %3, align 4 br label %18 22: ; preds = %15 %23 = load i32, i32* %4, align 4 %24 = sub nsw i32 %23, 1 %25 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %24) %extracted_target_return2 = extractvalue %fused_return_projectA_main_memoizedFib %25, 0 %26 = load i32, i32* %4, align 4 %27 = sub nsw i32 %26, 2 %28 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %27) %extracted_target_return = extractvalue %fused_return_projectA_main_memoizedFib %28, 0 %29 = add nsw i32 %extracted_target_return2, %extracted_target_return %30 = load i32, i32* %4, align 4 %31 = sext i32 %30 to i64 %32 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %31 store i32 %29, i32* %32, align 4 %33 = load i32, i32* %4, align 4 %34 = sext i32 %33 to i64 %35 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %34 %36 = load i32, i32* %35, align 4 store i32 %36, i32* %3, align 4 br label %37 37: ; preds = %22 %38 = alloca i32, align 4 %39 = alloca %struct.DynamicArray*, align 8 %40 = alloca i32, align 4 %41 = alloca %struct.Matrix*, align 8 %42 = alloca %struct.Matrix*, align 8 %43 = alloca i32, align 4 %44 = alloca i32, align 4 %45 = alloca %struct.Matrix*, align 8 %46 = alloca i32, align 4 %47 = alloca %struct.Node*, align 8 %48 = alloca i32, align 4 %49 = alloca i32, align 4 %50 = alloca %struct.Node*, align 8 %51 = alloca %struct.Node*, align 8 %52 = alloca i32, align 4 %53 = alloca %struct.Node*, align 8 %54 = alloca i32, align 4 %55 = alloca i32, align 4 %56 = alloca %struct.Node*, align 8 %57 = call i64 @time(i64* null) #7 %58 = trunc i64 %57 to i32 call void @srand(i32 %58) #7 %59 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 false, i32 10, [100 x i32]* null, i32 0) %extracted_bunker_return = extractvalue %fused_return_createDynamicArray_processMatrix %59, 1 store %struct.DynamicArray* %extracted_bunker_return, %struct.DynamicArray** %39, align 8 %60 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8 %61 = icmp ne %struct.DynamicArray* %60, null br i1 %61, label %65, label %62 62: ; preds = %37 %63 = call i8* @getErrorMessage() %64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %63) store i32 -1, i32* %38, align 4 br label %361 65: ; preds = %37 store i32 0, i32* %40, align 4 br label %66 66: ; preds = %79, %65 %67 = load i32, i32* %40, align 4 %68 = icmp slt i32 %67, 15 br i1 %68, label %69, label %82 69: ; preds = %66 %70 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8 %71 = call i32 @rand() #7 %72 = srem i32 %71, 100 call void @pushBack(%struct.DynamicArray* %70, i32 %72) %73 = load i8*, i8** @globalErrorMessage, align 8 %74 = icmp ne i8* %73, null br i1 %74, label %75, label %78 75: ; preds = %69 %76 = call i8* @getErrorMessage() %77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0), i8* %76) br label %82 78: ; preds = %69 br label %79 79: ; preds = %78 %80 = load i32, i32* %40, align 4 %81 = add nsw i32 %80, 1 store i32 %81, i32* %40, align 4 br label %66 82: ; preds = %75, %66 %83 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 3, i32 3, i8* null) store %struct.Matrix* %83, %struct.Matrix** %41, align 8 %84 = call %struct.Matrix* @fused_createMatrix(i1 false, i32 3, i32 3, i8* null) store %struct.Matrix* %84, %struct.Matrix** %42, align 8 %85 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %86 = icmp ne %struct.Matrix* %85, null br i1 %86, label %87, label %90 87: ; preds = %82 %88 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %89 = icmp ne %struct.Matrix* %88, null br i1 %89, label %111, label %90 90: ; preds = %87, %82 %91 = call i8* @getErrorMessage() %92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %91) %93 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %94 = icmp ne %struct.Matrix* %93, null br i1 %94, label %95, label %98 95: ; preds = %90 %96 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %97 = bitcast %struct.Matrix* %96 to i8* call void @free(i8* %97) #7 br label %98 98: ; preds = %95, %90 %99 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %100 = icmp ne %struct.Matrix* %99, null br i1 %100, label %101, label %104 101: ; preds = %98 %102 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %103 = bitcast %struct.Matrix* %102 to i8* call void @free(i8* %103) #7 br label %104 104: ; preds = %101, %98 %105 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8 %106 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %105, i32 0, i32 0 %107 = load i32*, i32** %106, align 8 %108 = bitcast i32* %107 to i8* call void @free(i8* %108) #7 %109 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8 %110 = bitcast %struct.DynamicArray* %109 to i8* call void @free(i8* %110) #7 store i32 -1, i32* %38, align 4 br label %361 111: ; preds = %87 store i32 0, i32* %43, align 4 br label %112 112: ; preds = %148, %111 %113 = load i32, i32* %43, align 4 %114 = icmp slt i32 %113, 3 br i1 %114, label %115, label %151 115: ; preds = %112 store i32 0, i32* %44, align 4 br label %116 116: ; preds = %144, %115 %117 = load i32, i32* %44, align 4 %118 = icmp slt i32 %117, 3 br i1 %118, label %119, label %147 119: ; preds = %116 %120 = call i32 @rand() #7 %121 = srem i32 %120, 10 %122 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %123 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %122, i32 0, i32 0 %124 = load i32**, i32*** %123, align 8 %125 = load i32, i32* %43, align 4 %126 = sext i32 %125 to i64 %127 = getelementptr inbounds i32*, i32** %124, i64 %126 %128 = load i32*, i32** %127, align 8 %129 = load i32, i32* %44, align 4 %130 = sext i32 %129 to i64 %131 = getelementptr inbounds i32, i32* %128, i64 %130 store i32 %121, i32* %131, align 4 %132 = call i32 @rand() #7 %133 = srem i32 %132, 10 %134 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %135 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %134, i32 0, i32 0 %136 = load i32**, i32*** %135, align 8 %137 = load i32, i32* %43, align 4 %138 = sext i32 %137 to i64 %139 = getelementptr inbounds i32*, i32** %136, i64 %138 %140 = load i32*, i32** %139, align 8 %141 = load i32, i32* %44, align 4 %142 = sext i32 %141 to i64 %143 = getelementptr inbounds i32, i32* %140, i64 %142 store i32 %133, i32* %143, align 4 br label %144 144: ; preds = %119 %145 = load i32, i32* %44, align 4 %146 = add nsw i32 %145, 1 store i32 %146, i32* %44, align 4 br label %116 147: ; preds = %116 br label %148 148: ; preds = %147 %149 = load i32, i32* %43, align 4 %150 = add nsw i32 %149, 1 store i32 %150, i32* %43, align 4 br label %112 151: ; preds = %112 %152 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %153 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %154 = call %struct.Matrix* @multiplyMatrices(%struct.Matrix* %152, %struct.Matrix* %153) store %struct.Matrix* %154, %struct.Matrix** %45, align 8 %155 = load %struct.Matrix*, %struct.Matrix** %45, align 8 %156 = icmp ne %struct.Matrix* %155, null br i1 %156, label %205, label %157 157: ; preds = %151 %158 = call i8* @getErrorMessage() %159 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %158) store i32 0, i32* %46, align 4 br label %160 160: ; preds = %183, %157 %161 = load i32, i32* %46, align 4 %162 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %163 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %162, i32 0, i32 1 %164 = load i32, i32* %163, align 8 %165 = icmp slt i32 %161, %164 br i1 %165, label %166, label %186 166: ; preds = %160 %167 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %168 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %167, i32 0, i32 0 %169 = load i32**, i32*** %168, align 8 %170 = load i32, i32* %46, align 4 %171 = sext i32 %170 to i64 %172 = getelementptr inbounds i32*, i32** %169, i64 %171 %173 = load i32*, i32** %172, align 8 %174 = bitcast i32* %173 to i8* call void @free(i8* %174) #7 %175 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %176 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %175, i32 0, i32 0 %177 = load i32**, i32*** %176, align 8 %178 = load i32, i32* %46, align 4 %179 = sext i32 %178 to i64 %180 = getelementptr inbounds i32*, i32** %177, i64 %179 %181 = load i32*, i32** %180, align 8 %182 = bitcast i32* %181 to i8* call void @free(i8* %182) #7 br label %183 183: ; preds = %166 %184 = load i32, i32* %46, align 4 %185 = add nsw i32 %184, 1 store i32 %185, i32* %46, align 4 br label %160 186: ; preds = %160 %187 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %188 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %187, i32 0, i32 0 %189 = load i32**, i32*** %188, align 8 %190 = bitcast i32** %189 to i8* call void @free(i8* %190) #7 %191 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %192 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %191, i32 0, i32 0 %193 = load i32**, i32*** %192, align 8 %194 = bitcast i32** %193 to i8* call void @free(i8* %194) #7 %195 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %196 = bitcast %struct.Matrix* %195 to i8* call void @free(i8* %196) #7 %197 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %198 = bitcast %struct.Matrix* %197 to i8* call void @free(i8* %198) #7 %199 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8 %200 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %199, i32 0, i32 0 %201 = load i32*, i32** %200, align 8 %202 = bitcast i32* %201 to i8* call void @free(i8* %202) #7 %203 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8 %204 = bitcast %struct.DynamicArray* %203 to i8* call void @free(i8* %204) #7 store i32 -1, i32* %38, align 4 br label %361 205: ; preds = %151 store %struct.Node* null, %struct.Node** %47, align 8 store i32 0, i32* %48, align 4 br label %206 206: ; preds = %220, %205 %207 = load i32, i32* %48, align 4 %208 = icmp slt i32 %207, 5 br i1 %208, label %209, label %223 209: ; preds = %206 %210 = load %struct.Node*, %struct.Node** %47, align 8 %211 = call i32 @rand() #7 %212 = srem i32 %211, 50 %213 = call %struct.Node* @insertNode(%struct.Node* %210, i32 %212) store %struct.Node* %213, %struct.Node** %47, align 8 %214 = load i8*, i8** @globalErrorMessage, align 8 %215 = icmp ne i8* %214, null br i1 %215, label %216, label %219 216: ; preds = %209 %217 = call i8* @getErrorMessage() %218 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.30, i64 0, i64 0), i8* %217) br label %223 219: ; preds = %209 br label %220 220: ; preds = %219 %221 = load i32, i32* %48, align 4 %222 = add nsw i32 %221, 1 store i32 %222, i32* %48, align 4 br label %206 223: ; preds = %216, %206 %224 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8 %225 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %224, i32 0, i32 0 %226 = load i32*, i32** %225, align 8 %227 = bitcast i32* %226 to i8* call void @free(i8* %227) #7 %228 = load %struct.DynamicArray*, %struct.DynamicArray** %39, align 8 %229 = bitcast %struct.DynamicArray* %228 to i8* call void @free(i8* %229) #7 store i32 0, i32* %49, align 4 br label %230 230: ; preds = %261, %223 %231 = load i32, i32* %49, align 4 %232 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %233 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %232, i32 0, i32 1 %234 = load i32, i32* %233, align 8 %235 = icmp slt i32 %231, %234 br i1 %235, label %236, label %264 236: ; preds = %230 %237 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %238 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %237, i32 0, i32 0 %239 = load i32**, i32*** %238, align 8 %240 = load i32, i32* %49, align 4 %241 = sext i32 %240 to i64 %242 = getelementptr inbounds i32*, i32** %239, i64 %241 %243 = load i32*, i32** %242, align 8 %244 = bitcast i32* %243 to i8* call void @free(i8* %244) #7 %245 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %246 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %245, i32 0, i32 0 %247 = load i32**, i32*** %246, align 8 %248 = load i32, i32* %49, align 4 %249 = sext i32 %248 to i64 %250 = getelementptr inbounds i32*, i32** %247, i64 %249 %251 = load i32*, i32** %250, align 8 %252 = bitcast i32* %251 to i8* call void @free(i8* %252) #7 %253 = load %struct.Matrix*, %struct.Matrix** %45, align 8 %254 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %253, i32 0, i32 0 %255 = load i32**, i32*** %254, align 8 %256 = load i32, i32* %49, align 4 %257 = sext i32 %256 to i64 %258 = getelementptr inbounds i32*, i32** %255, i64 %257 %259 = load i32*, i32** %258, align 8 %260 = bitcast i32* %259 to i8* call void @free(i8* %260) #7 br label %261 261: ; preds = %236 %262 = load i32, i32* %49, align 4 %263 = add nsw i32 %262, 1 store i32 %263, i32* %49, align 4 br label %230 264: ; preds = %230 %265 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %266 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %265, i32 0, i32 0 %267 = load i32**, i32*** %266, align 8 %268 = bitcast i32** %267 to i8* call void @free(i8* %268) #7 %269 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %270 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %269, i32 0, i32 0 %271 = load i32**, i32*** %270, align 8 %272 = bitcast i32** %271 to i8* call void @free(i8* %272) #7 %273 = load %struct.Matrix*, %struct.Matrix** %45, align 8 %274 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %273, i32 0, i32 0 %275 = load i32**, i32*** %274, align 8 %276 = bitcast i32** %275 to i8* call void @free(i8* %276) #7 %277 = load %struct.Matrix*, %struct.Matrix** %41, align 8 %278 = bitcast %struct.Matrix* %277 to i8* call void @free(i8* %278) #7 %279 = load %struct.Matrix*, %struct.Matrix** %42, align 8 %280 = bitcast %struct.Matrix* %279 to i8* call void @free(i8* %280) #7 %281 = load %struct.Matrix*, %struct.Matrix** %45, align 8 %282 = bitcast %struct.Matrix* %281 to i8* call void @free(i8* %282) #7 %283 = load %struct.Node*, %struct.Node** %47, align 8 %284 = icmp ne %struct.Node* %283, null br i1 %284, label %285, label %354 285: ; preds = %264 %286 = load %struct.Node*, %struct.Node** %47, align 8 store %struct.Node* %286, %struct.Node** %50, align 8 %287 = load %struct.Node*, %struct.Node** %47, align 8 store %struct.Node* %287, %struct.Node** %51, align 8 store i32 0, i32* %52, align 4 br label %288 288: ; preds = %311, %285 %289 = load %struct.Node*, %struct.Node** %51, align 8 %290 = icmp ne %struct.Node* %289, null br i1 %290, label %291, label %296 291: ; preds = %288 %292 = load %struct.Node*, %struct.Node** %51, align 8 %293 = getelementptr inbounds %struct.Node, %struct.Node* %292, i32 0, i32 1 %294 = load %struct.Node*, %struct.Node** %293, align 8 %295 = icmp ne %struct.Node* %294, null br label %296 296: ; preds = %291, %288 %297 = phi i1 [ false, %288 ], [ %295, %291 ] br i1 %297, label %298, label %312 298: ; preds = %296 %299 = load %struct.Node*, %struct.Node** %50, align 8 %300 = getelementptr inbounds %struct.Node, %struct.Node* %299, i32 0, i32 1 %301 = load %struct.Node*, %struct.Node** %300, align 8 store %struct.Node* %301, %struct.Node** %50, align 8 %302 = load %struct.Node*, %struct.Node** %51, align 8 %303 = getelementptr inbounds %struct.Node, %struct.Node* %302, i32 0, i32 1 %304 = load %struct.Node*, %struct.Node** %303, align 8 %305 = getelementptr inbounds %struct.Node, %struct.Node* %304, i32 0, i32 1 %306 = load %struct.Node*, %struct.Node** %305, align 8 store %struct.Node* %306, %struct.Node** %51, align 8 %307 = load %struct.Node*, %struct.Node** %50, align 8 %308 = load %struct.Node*, %struct.Node** %51, align 8 %309 = icmp eq %struct.Node* %307, %308 br i1 %309, label %310, label %311 310: ; preds = %298 store i32 1, i32* %52, align 4 br label %312 311: ; preds = %298 br label %288 312: ; preds = %296, %310 %313 = load i32, i32* %52, align 4 %314 = icmp ne i32 %313, 0 br i1 %314, label %315, label %342 315: ; preds = %312 %316 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0)) %317 = load %struct.Node*, %struct.Node** %47, align 8 store %struct.Node* %317, %struct.Node** %53, align 8 store i32 1000, i32* %54, align 4 store i32 0, i32* %55, align 4 br label %318 318: ; preds = %333, %315 %319 = load %struct.Node*, %struct.Node** %53, align 8 %320 = icmp ne %struct.Node* %319, null br i1 %320, label %321, label %325 321: ; preds = %318 %322 = load i32, i32* %55, align 4 %323 = load i32, i32* %54, align 4 %324 = icmp slt i32 %322, %323 br label %325 325: ; preds = %321, %318 %326 = phi i1 [ false, %318 ], [ %324, %321 ] br i1 %326, label %327, label %341 327: ; preds = %325 %328 = load %struct.Node*, %struct.Node** %53, align 8 %329 = getelementptr inbounds %struct.Node, %struct.Node* %328, i32 0, i32 3 %330 = load i32, i32* %329, align 8 %331 = icmp ne i32 %330, 0 br i1 %331, label %332, label %333 332: ; preds = %327 br label %341 333: ; preds = %327 %334 = load %struct.Node*, %struct.Node** %53, align 8 %335 = getelementptr inbounds %struct.Node, %struct.Node* %334, i32 0, i32 3 store i32 1, i32* %335, align 8 %336 = load %struct.Node*, %struct.Node** %53, align 8 %337 = getelementptr inbounds %struct.Node, %struct.Node* %336, i32 0, i32 1 %338 = load %struct.Node*, %struct.Node** %337, align 8 store %struct.Node* %338, %struct.Node** %53, align 8 %339 = load i32, i32* %55, align 4 %340 = add nsw i32 %339, 1 store i32 %340, i32* %55, align 4 br label %318 341: ; preds = %332, %325 br label %342 342: ; preds = %341, %312 br label %343 343: ; preds = %346, %342 %344 = load %struct.Node*, %struct.Node** %47, align 8 %345 = icmp ne %struct.Node* %344, null br i1 %345, label %346, label %353 346: ; preds = %343 %347 = load %struct.Node*, %struct.Node** %47, align 8 store %struct.Node* %347, %struct.Node** %56, align 8 %348 = load %struct.Node*, %struct.Node** %47, align 8 %349 = getelementptr inbounds %struct.Node, %struct.Node* %348, i32 0, i32 1 %350 = load %struct.Node*, %struct.Node** %349, align 8 store %struct.Node* %350, %struct.Node** %47, align 8 %351 = load %struct.Node*, %struct.Node** %56, align 8 %352 = bitcast %struct.Node* %351 to i8* call void @free(i8* %352) #7 br label %343 353: ; preds = %343 br label %354 354: ; preds = %353, %264 %355 = load i8*, i8** @globalErrorMessage, align 8 %356 = icmp ne i8* %355, null br i1 %356, label %357, label %359 357: ; preds = %354 %358 = load i8*, i8** @globalErrorMessage, align 8 call void @free(i8* %358) #7 br label %359 359: ; preds = %357, %354 %360 = call i32 @fused_performSimpleCalculations(i1 false, i32* null, i32 0) store i32 0, i32* %38, align 4 br label %361 361: ; preds = %359, %186, %104, %62 %362 = load i32, i32* %38, align 4 %struct.bunker = insertvalue %fused_return_projectA_main_memoizedFib { i32 0, i32 undef }, i32 %362, 1 ret %fused_return_projectA_main_memoizedFib %struct.bunker } define %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 %0, i32 %1, [100 x i32]* %2, i32 %3) { entry: br label %4 4: ; preds = %entry %5 = alloca [100 x i32]*, align 8 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca i32, align 4 %9 = alloca i32, align 4 store [100 x i32]* %2, [100 x i32]** %5, align 8 store i32 %3, i32* %6, align 4 store i32 0, i32* %7, align 4 store i32 0, i32* %8, align 4 br label %10 10: ; preds = %4 %11 = alloca %struct.DynamicArray*, align 8 %12 = alloca i32, align 4 %13 = alloca %struct.DynamicArray*, align 8 store i32 %1, i32* %12, align 4 %14 = load i32, i32* %12, align 4 %15 = icmp sle i32 %14, 0 br i1 %15, label %16, label %18 16: ; preds = %10 %17 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0)) store %struct.DynamicArray* null, %struct.DynamicArray** %11, align 8 br label %131 18: ; preds = %10 %19 = load i32, i32* %12, align 4 %20 = icmp sgt i32 %19, 1000 br i1 %20, label %21, label %23 21: ; preds = %18 %22 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0)) store %struct.DynamicArray* null, %struct.DynamicArray** %11, align 8 br label %131 23: ; preds = %18 %24 = call noalias i8* @malloc(i64 24) #7 %25 = bitcast i8* %24 to %struct.DynamicArray* store %struct.DynamicArray* %25, %struct.DynamicArray** %13, align 8 %26 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 %27 = icmp ne %struct.DynamicArray* %26, null br i1 %27, label %30, label %28 28: ; preds = %23 %29 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.8, i64 0, i64 0)) store %struct.DynamicArray* null, %struct.DynamicArray** %11, align 8 br label %131 30: ; preds = %23 %31 = load i32, i32* %12, align 4 %32 = sext i32 %31 to i64 %33 = mul i64 4, %32 %34 = call noalias i8* @malloc(i64 %33) #7 %35 = bitcast i8* %34 to i32* %36 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 %37 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %36, i32 0, i32 0 store i32* %35, i32** %37, align 8 %38 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 %39 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %38, i32 0, i32 0 %40 = load i32*, i32** %39, align 8 %41 = icmp ne i32* %40, null br i1 %41, label %46, label %42 42: ; preds = %30 %43 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 %44 = bitcast %struct.DynamicArray* %43 to i8* call void @free(i8* %44) #7 %45 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i64 0, i64 0)) store %struct.DynamicArray* null, %struct.DynamicArray** %11, align 8 br label %131 46: ; preds = %30 %47 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 %48 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %47, i32 0, i32 1 store i32 0, i32* %48, align 8 %49 = load i32, i32* %12, align 4 %50 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 %51 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %50, i32 0, i32 2 store i32 %49, i32* %51, align 4 %52 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 %53 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %52, i32 0, i32 3 store i32 1, i32* %53, align 8 %54 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 %55 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %54, i32 0, i32 4 store i32 0, i32* %55, align 4 %56 = load %struct.DynamicArray*, %struct.DynamicArray** %13, align 8 store %struct.DynamicArray* %56, %struct.DynamicArray** %11, align 8 br label %57 57: ; preds = %46, %88 %58 = load i32, i32* %8, align 4 %59 = load i32, i32* %6, align 4 %60 = icmp slt i32 %58, %59 br i1 %60, label %61, label %62 61: ; preds = %57 store i32 0, i32* %9, align 4 br label %64 62: ; preds = %57 %63 = load i32, i32* %7, align 4 %struct.target = insertvalue %fused_return_createDynamicArray_processMatrix zeroinitializer, i32 %63, 0 %struct.bunker1 = insertvalue %fused_return_createDynamicArray_processMatrix %struct.target, %struct.DynamicArray* null, 1 ret %fused_return_createDynamicArray_processMatrix %struct.bunker1 64: ; preds = %61 %65 = load i32, i32* %9, align 4 %66 = load i32, i32* %6, align 4 %67 = icmp slt i32 %65, %66 br i1 %67, label %68, label %72 68: ; preds = %64 %69 = load i32, i32* %8, align 4 %70 = load i32, i32* %9, align 4 %71 = icmp eq i32 %69, %70 br i1 %71, label %73, label %84 72: ; preds = %64 br label %88 73: ; preds = %68 %74 = load [100 x i32]*, [100 x i32]** %5, align 8 %75 = load i32, i32* %8, align 4 %76 = sext i32 %75 to i64 %77 = getelementptr inbounds [100 x i32], [100 x i32]* %74, i64 %76 %78 = load i32, i32* %9, align 4 %79 = sext i32 %78 to i64 %80 = getelementptr inbounds [100 x i32], [100 x i32]* %77, i64 0, i64 %79 %81 = load i32, i32* %80, align 4 %82 = srem i32 %81, 2 %83 = icmp eq i32 %82, 0 br i1 %83, label %91, label %102 84: ; preds = %68 %85 = load i32, i32* %8, align 4 %86 = load i32, i32* %9, align 4 %87 = icmp slt i32 %85, %86 br i1 %87, label %113, label %125 88: ; preds = %72 %89 = load i32, i32* %8, align 4 %90 = add nsw i32 %89, 1 store i32 %90, i32* %8, align 4 br label %57 91: ; preds = %73 %92 = load [100 x i32]*, [100 x i32]** %5, align 8 %93 = load i32, i32* %8, align 4 %94 = sext i32 %93 to i64 %95 = getelementptr inbounds [100 x i32], [100 x i32]* %92, i64 %94 %96 = load i32, i32* %9, align 4 %97 = sext i32 %96 to i64 %98 = getelementptr inbounds [100 x i32], [100 x i32]* %95, i64 0, i64 %97 %99 = load i32, i32* %98, align 4 %100 = load i32, i32* %7, align 4 %101 = add nsw i32 %100, %99 store i32 %101, i32* %7, align 4 br label %126 102: ; preds = %73 %103 = load [100 x i32]*, [100 x i32]** %5, align 8 %104 = load i32, i32* %8, align 4 %105 = sext i32 %104 to i64 %106 = getelementptr inbounds [100 x i32], [100 x i32]* %103, i64 %105 %107 = load i32, i32* %9, align 4 %108 = sext i32 %107 to i64 %109 = getelementptr inbounds [100 x i32], [100 x i32]* %106, i64 0, i64 %108 %110 = load i32, i32* %109, align 4 %111 = load i32, i32* %7, align 4 %112 = sub nsw i32 %111, %110 store i32 %112, i32* %7, align 4 br label %126 113: ; preds = %84 %114 = load [100 x i32]*, [100 x i32]** %5, align 8 %115 = load i32, i32* %8, align 4 %116 = sext i32 %115 to i64 %117 = getelementptr inbounds [100 x i32], [100 x i32]* %114, i64 %116 %118 = load i32, i32* %9, align 4 %119 = sext i32 %118 to i64 %120 = getelementptr inbounds [100 x i32], [100 x i32]* %117, i64 0, i64 %119 %121 = load i32, i32* %120, align 4 %122 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %121) %123 = load i32, i32* %7, align 4 %124 = add nsw i32 %123, %122 store i32 %124, i32* %7, align 4 br label %125 125: ; preds = %113, %84 br label %127 126: ; preds = %102, %91 br label %127 127: ; preds = %126, %125 br label %128 128: ; preds = %127 %129 = load i32, i32* %9, align 4 %130 = add nsw i32 %129, 1 store i32 %130, i32* %9, align 4 br label %131 131: ; preds = %42, %28, %16, %21, %128 %132 = load %struct.DynamicArray*, %struct.DynamicArray** %11, align 8 %struct.bunker = insertvalue %fused_return_createDynamicArray_processMatrix { i32 0, %struct.DynamicArray* undef }, %struct.DynamicArray* %132, 1 ret %fused_return_createDynamicArray_processMatrix %struct.bunker } define i32 @fused_setErrorMessage(i1 %0, i8* %1) { entry: br label %2 2: ; preds = %entry %3 = alloca [14 x i8], align 1 %4 = alloca [8 x i32], align 16 %5 = alloca i32, align 4 %6 = alloca i32, align 4 %7 = alloca [100 x [100 x i32]], align 16 %8 = alloca i32, align 4 %9 = alloca i32, align 4 %10 = alloca i32, align 4 %11 = call i32 @fused_removeDuplicates(i1 true, %struct.DynamicArray* null, i32 5) call void @llvm.memset.p0i8.i64(i8* align 16 bitcast ([100 x i32]* @cache to i8*), i8 -1, i64 400, i1 false) %12 = bitcast [14 x i8]* %3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %12, i8* align 1 getelementptr inbounds ([14 x i8], [14 x i8]* @__const.projectB_main.str, i32 0, i32 0), i64 14, i1 false) %13 = getelementptr inbounds [14 x i8], [14 x i8]* %3, i64 0, i64 0 %14 = call %struct.Matrix* @fused_createMatrix(i1 true, i32 0, i32 0, i8* %13) %15 = bitcast [8 x i32]* %4 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %15, i8* align 16 bitcast ([8 x i32]* @__const.projectB_main.arr to i8*), i64 32, i1 false) store i32 8, i32* %5, align 4 %16 = getelementptr inbounds [8 x i32], [8 x i32]* %4, i64 0, i64 0 %17 = load i32, i32* %5, align 4 %18 = call i32 @fused_performSimpleCalculations(i1 true, i32* %16, i32 %17) store i32 %18, i32* %6, align 4 %19 = bitcast [100 x [100 x i32]]* %7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %19, i8* align 16 bitcast (<{ <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, [97 x <{ i32, i32, i32, [97 x i32] }>] }>* @__const.projectB_main.matrix to i8*), i64 40000, i1 false) %20 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %7, i64 0, i64 0 %21 = call %fused_return_createDynamicArray_processMatrix @fused_createDynamicArray(i1 true, i32 0, [100 x i32]* %20, i32 3) %extracted_target_return2target_ = extractvalue %fused_return_createDynamicArray_processMatrix %21, 0 store i32 %extracted_target_return2target_, i32* %8, align 4 store i32 0, i32* %9, align 4 br label %22 22: ; preds = %2 %23 = alloca i8*, align 8 store i8* %1, i8** %23, align 8 %24 = load i8*, i8** @globalErrorMessage, align 8 %25 = icmp ne i8* %24, null br i1 %25, label %26, label %36 26: ; preds = %22 %27 = load i8*, i8** @globalErrorMessage, align 8 call void @free(i8* %27) #7 br label %28 28: ; preds = %26 %29 = load i32, i32* %9, align 4 %30 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %29) %extracted_target_return1target_ = extractvalue %fused_return_projectA_main_memoizedFib %30, 0 %31 = load i32, i32* %9, align 4 %32 = add nsw i32 %31, 1 store i32 %32, i32* %9, align 4 br label %33 33: ; preds = %28 %34 = load i32, i32* %9, align 4 %35 = icmp slt i32 %34, 10 br label %36 36: ; preds = %22, %33 %37 = load i8*, i8** %23, align 8 %38 = icmp ne i8* %37, null br i1 %38, label %39, label %48 39: ; preds = %36 %40 = load i8*, i8** %23, align 8 %41 = call noalias i8* @strdup(i8* %40) #7 store i8* %41, i8** @globalErrorMessage, align 8 %42 = load i8*, i8** @globalErrorMessage, align 8 %43 = icmp eq i8* %42, null br i1 %43, label %44, label %47 44: ; preds = %39 %45 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %46 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %45, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.1, i64 0, i64 0)) br label %47 47: ; preds = %44, %39 br label %71 48: ; preds = %36 store i8* null, i8** @globalErrorMessage, align 8 br label %49 49: ; preds = %48 %50 = load i32, i32* %6, align 4 %51 = icmp sgt i32 %50, 5 br i1 %51, label %52, label %55 52: ; preds = %49 %53 = load i32, i32* %8, align 4 %54 = icmp sgt i32 %53, 0 br i1 %54, label %62, label %65 55: ; preds = %49 %56 = getelementptr inbounds [14 x i8], [14 x i8]* %3, i64 0, i64 0 %57 = call i64 @strlen(i8* %56) #10 %58 = load i32, i32* %8, align 4 %59 = sext i32 %58 to i64 %60 = add i64 %57, %59 %61 = trunc i64 %60 to i32 store i32 %61, i32* %10, align 4 br label %68 62: ; preds = %52 %63 = load i32, i32* %6, align 4 %64 = call %fused_return_projectA_main_memoizedFib @fused_projectA_main(i1 true, i32 %63) %extracted_target_returntarget_ = extractvalue %fused_return_projectA_main_memoizedFib %64, 0 store i32 %extracted_target_returntarget_, i32* %10, align 4 br label %70 65: ; preds = %52 %66 = load i32, i32* %8, align 4 %67 = call i32 @fused_quickSort(i1 true, i32* null, i32 0, i32 0, i32* null, i32 %66) store i32 %67, i32* %10, align 4 br label %70 68: ; preds = %55 %69 = load i32, i32* %10, align 4 ret i32 %69 70: ; preds = %65, %62 br label %71 71: ; preds = %47, %70 ret i32 0 } define %struct.Matrix* @fused_createMatrix(i1 %0, i32 %1, i32 %2, i8* %3) { entry: br label %4 4: ; preds = %entry %5 = alloca i8*, align 8 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca i8, align 1 store i8* %3, i8** %5, align 8 %9 = load i8*, i8** %5, align 8 %10 = call i64 @strlen(i8* %9) #10 %11 = trunc i64 %10 to i32 store i32 %11, i32* %6, align 4 store i32 0, i32* %7, align 4 br label %12 12: ; preds = %4 %13 = alloca %struct.Matrix*, align 8 %14 = alloca i32, align 4 %15 = alloca i32, align 4 %16 = alloca %struct.Matrix*, align 8 %17 = alloca i32, align 4 %18 = alloca i32, align 4 store i32 %1, i32* %14, align 4 store i32 %2, i32* %15, align 4 %19 = load i32, i32* %14, align 4 %20 = icmp slt i32 %19, 1 br i1 %20, label %24, label %21 21: ; preds = %12 %22 = load i32, i32* %15, align 4 %23 = icmp slt i32 %22, 1 br i1 %23, label %24, label %26 24: ; preds = %21, %12 %25 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %13, align 8 br label %161 26: ; preds = %21 %27 = load i32, i32* %14, align 4 %28 = icmp sgt i32 %27, 100 br i1 %28, label %32, label %29 29: ; preds = %26 %30 = load i32, i32* %15, align 4 %31 = icmp sgt i32 %30, 100 br i1 %31, label %32, label %34 32: ; preds = %29, %26 %33 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %13, align 8 br label %161 34: ; preds = %29 %35 = call noalias i8* @malloc(i64 32) #7 %36 = bitcast i8* %35 to %struct.Matrix* store %struct.Matrix* %36, %struct.Matrix** %16, align 8 %37 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %38 = icmp ne %struct.Matrix* %37, null br i1 %38, label %41, label %39 39: ; preds = %34 %40 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %13, align 8 br label %161 41: ; preds = %34 %42 = load i32, i32* %14, align 4 %43 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %44 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %43, i32 0, i32 1 store i32 %42, i32* %44, align 8 %45 = load i32, i32* %15, align 4 %46 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %47 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %46, i32 0, i32 2 store i32 %45, i32* %47, align 4 %48 = load i32, i32* %14, align 4 %49 = load i32, i32* %15, align 4 %50 = icmp eq i32 %48, %49 %51 = zext i1 %50 to i32 %52 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %53 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %52, i32 0, i32 3 store i32 %51, i32* %53, align 8 %54 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %55 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %54, i32 0, i32 4 store double 0.000000e+00, double* %55, align 8 %56 = load i32, i32* %14, align 4 %57 = sext i32 %56 to i64 %58 = mul i64 %57, 8 %59 = call noalias i8* @malloc(i64 %58) #7 %60 = bitcast i8* %59 to i32** %61 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %62 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %61, i32 0, i32 0 store i32** %60, i32*** %62, align 8 %63 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %64 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %63, i32 0, i32 0 %65 = load i32**, i32*** %64, align 8 %66 = icmp ne i32** %65, null br i1 %66, label %71, label %67 67: ; preds = %41 %68 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %69 = bitcast %struct.Matrix* %68 to i8* call void @free(i8* %69) #7 %70 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %13, align 8 br label %161 71: ; preds = %41 store i32 0, i32* %17, align 4 br label %72 72: ; preds = %121, %71 %73 = load i32, i32* %17, align 4 %74 = load i32, i32* %14, align 4 %75 = icmp slt i32 %73, %74 br i1 %75, label %76, label %124 76: ; preds = %72 %77 = load i32, i32* %15, align 4 %78 = sext i32 %77 to i64 %79 = call noalias i8* @calloc(i64 %78, i64 4) #7 %80 = bitcast i8* %79 to i32* %81 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %82 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %81, i32 0, i32 0 %83 = load i32**, i32*** %82, align 8 %84 = load i32, i32* %17, align 4 %85 = sext i32 %84 to i64 %86 = getelementptr inbounds i32*, i32** %83, i64 %85 store i32* %80, i32** %86, align 8 %87 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %88 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %87, i32 0, i32 0 %89 = load i32**, i32*** %88, align 8 %90 = load i32, i32* %17, align 4 %91 = sext i32 %90 to i64 %92 = getelementptr inbounds i32*, i32** %89, i64 %91 %93 = load i32*, i32** %92, align 8 %94 = icmp ne i32* %93, null br i1 %94, label %120, label %95 95: ; preds = %76 store i32 0, i32* %18, align 4 br label %96 96: ; preds = %109, %95 %97 = load i32, i32* %18, align 4 %98 = load i32, i32* %17, align 4 %99 = icmp slt i32 %97, %98 br i1 %99, label %100, label %112 100: ; preds = %96 %101 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %102 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %101, i32 0, i32 0 %103 = load i32**, i32*** %102, align 8 %104 = load i32, i32* %18, align 4 %105 = sext i32 %104 to i64 %106 = getelementptr inbounds i32*, i32** %103, i64 %105 %107 = load i32*, i32** %106, align 8 %108 = bitcast i32* %107 to i8* call void @free(i8* %108) #7 br label %109 109: ; preds = %100 %110 = load i32, i32* %18, align 4 %111 = add nsw i32 %110, 1 store i32 %111, i32* %18, align 4 br label %96 112: ; preds = %96 %113 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %114 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %113, i32 0, i32 0 %115 = load i32**, i32*** %114, align 8 %116 = bitcast i32** %115 to i8* call void @free(i8* %116) #7 %117 = load %struct.Matrix*, %struct.Matrix** %16, align 8 %118 = bitcast %struct.Matrix* %117 to i8* call void @free(i8* %118) #7 %119 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %13, align 8 br label %161 120: ; preds = %76 br label %121 121: ; preds = %120 %122 = load i32, i32* %17, align 4 %123 = add nsw i32 %122, 1 store i32 %123, i32* %17, align 4 br label %72 124: ; preds = %72 %125 = load %struct.Matrix*, %struct.Matrix** %16, align 8 store %struct.Matrix* %125, %struct.Matrix** %13, align 8 br label %126 126: ; preds = %124 %127 = load i32, i32* %7, align 4 %128 = load i32, i32* %6, align 4 %129 = sdiv i32 %128, 2 %130 = icmp slt i32 %127, %129 br i1 %130, label %131, label %157 131: ; preds = %126 %132 = load i8*, i8** %5, align 8 %133 = load i32, i32* %7, align 4 %134 = sext i32 %133 to i64 %135 = getelementptr inbounds i8, i8* %132, i64 %134 %136 = load i8, i8* %135, align 1 store i8 %136, i8* %8, align 1 %137 = load i8*, i8** %5, align 8 %138 = load i32, i32* %6, align 4 %139 = sub nsw i32 %138, 1 %140 = load i32, i32* %7, align 4 %141 = sub nsw i32 %139, %140 %142 = sext i32 %141 to i64 %143 = getelementptr inbounds i8, i8* %137, i64 %142 %144 = load i8, i8* %143, align 1 %145 = load i8*, i8** %5, align 8 %146 = load i32, i32* %7, align 4 %147 = sext i32 %146 to i64 %148 = getelementptr inbounds i8, i8* %145, i64 %147 store i8 %144, i8* %148, align 1 %149 = load i8, i8* %8, align 1 %150 = load i8*, i8** %5, align 8 %151 = load i32, i32* %6, align 4 %152 = sub nsw i32 %151, 1 %153 = load i32, i32* %7, align 4 %154 = sub nsw i32 %152, %153 %155 = sext i32 %154 to i64 %156 = getelementptr inbounds i8, i8* %150, i64 %155 store i8 %149, i8* %156, align 1 br label %158 157: ; preds = %126 ret %struct.Matrix* null 158: ; preds = %131 %159 = load i32, i32* %7, align 4 %160 = add nsw i32 %159, 1 store i32 %160, i32* %7, align 4 br label %161 161: ; preds = %112, %67, %39, %32, %24, %158 %162 = load %struct.Matrix*, %struct.Matrix** %13, align 8 ret %struct.Matrix* %162 } define i32 @fused_removeDuplicates(i1 %0, %struct.DynamicArray* %1, i32 %2) { entry: br label %3 3: ; preds = %entry %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca i32, align 4 %7 = alloca i32, align 4 store i32 %2, i32* %5, align 4 store i32 0, i32* %6, align 4 store i32 1, i32* %7, align 4 br label %8 8: ; preds = %3 %9 = alloca %struct.DynamicArray*, align 8 %10 = alloca i32, align 4 %11 = alloca i32, align 4 %12 = alloca i32, align 4 store %struct.DynamicArray* %1, %struct.DynamicArray** %9, align 8 %13 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %14 = icmp ne %struct.DynamicArray* %13, null br i1 %14, label %15, label %20 15: ; preds = %8 %16 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %17 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %16, i32 0, i32 0 %18 = load i32*, i32** %17, align 8 %19 = icmp ne i32* %18, null br i1 %19, label %22, label %20 20: ; preds = %15, %8 %21 = call i32 @fused_setErrorMessage(i1 false, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0)) br label %107 22: ; preds = %15 %23 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %24 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %23, i32 0, i32 1 %25 = load i32, i32* %24, align 8 %26 = icmp sle i32 %25, 1 br i1 %26, label %27, label %28 27: ; preds = %22 br label %107 28: ; preds = %22 store i32 0, i32* %10, align 4 %29 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %30 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %29, i32 0, i32 0 %31 = load i32*, i32** %30, align 8 %32 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %33 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %32, i32 0, i32 1 %34 = load i32, i32* %33, align 8 %35 = sub nsw i32 %34, 1 %36 = call i32 @fused_quickSort(i1 false, i32* %31, i32 0, i32 %35, i32* %10, i32 0) %37 = load i32, i32* %10, align 4 %38 = icmp ne i32 %37, 0 br i1 %38, label %39, label %40 39: ; preds = %28 br label %107 40: ; preds = %28 store i32 1, i32* %11, align 4 store i32 1, i32* %12, align 4 br label %41 41: ; preds = %81, %40 %42 = load i32, i32* %12, align 4 %43 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %44 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %43, i32 0, i32 1 %45 = load i32, i32* %44, align 8 %46 = icmp slt i32 %42, %45 br i1 %46, label %47, label %84 47: ; preds = %41 %48 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %49 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %48, i32 0, i32 0 %50 = load i32*, i32** %49, align 8 %51 = load i32, i32* %12, align 4 %52 = sext i32 %51 to i64 %53 = getelementptr inbounds i32, i32* %50, i64 %52 %54 = load i32, i32* %53, align 4 %55 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %56 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %55, i32 0, i32 0 %57 = load i32*, i32** %56, align 8 %58 = load i32, i32* %12, align 4 %59 = sub nsw i32 %58, 1 %60 = sext i32 %59 to i64 %61 = getelementptr inbounds i32, i32* %57, i64 %60 %62 = load i32, i32* %61, align 4 %63 = icmp ne i32 %54, %62 br i1 %63, label %64, label %80 64: ; preds = %47 %65 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %66 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %65, i32 0, i32 0 %67 = load i32*, i32** %66, align 8 %68 = load i32, i32* %12, align 4 %69 = sext i32 %68 to i64 %70 = getelementptr inbounds i32, i32* %67, i64 %69 %71 = load i32, i32* %70, align 4 %72 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %73 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %72, i32 0, i32 0 %74 = load i32*, i32** %73, align 8 %75 = load i32, i32* %11, align 4 %76 = sext i32 %75 to i64 %77 = getelementptr inbounds i32, i32* %74, i64 %76 store i32 %71, i32* %77, align 4 %78 = load i32, i32* %11, align 4 %79 = add nsw i32 %78, 1 store i32 %79, i32* %11, align 4 br label %80 80: ; preds = %64, %47 br label %81 81: ; preds = %80 %82 = load i32, i32* %12, align 4 %83 = add nsw i32 %82, 1 store i32 %83, i32* %12, align 4 br label %41 84: ; preds = %41 %85 = load i32, i32* %11, align 4 %86 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %87 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %86, i32 0, i32 1 store i32 %85, i32* %87, align 8 %88 = load %struct.DynamicArray*, %struct.DynamicArray** %9, align 8 %89 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %88, i32 0, i32 3 store i32 1, i32* %89, align 8 br label %90 90: ; preds = %84 %91 = load i32, i32* %7, align 4 %92 = icmp slt i32 %91, 5 br i1 %92, label %93, label %98 93: ; preds = %90 %94 = load i32, i32* %6, align 4 %95 = add nsw i32 %94, 1 store i32 %95, i32* %6, align 4 %96 = load i32, i32* %5, align 4 %97 = icmp sgt i32 %96, 2 br i1 %97, label %100, label %101 98: ; preds = %90 %99 = load i32, i32* %6, align 4 store i32 %99, i32* %4, align 4 br label %102 100: ; preds = %93 store i32 23, i32* %4, align 4 br label %102 101: ; preds = %93 br label %104 102: ; preds = %100, %98 %103 = load i32, i32* %4, align 4 ret i32 %103 104: ; preds = %101 %105 = load i32, i32* %7, align 4 %106 = add nsw i32 %105, 1 store i32 %106, i32* %7, align 4 br label %107 107: ; preds = %39, %27, %20, %104 ret i32 0 } attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #2 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #3 = { nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #4 = { nounwind readnone speculatable willreturn } attributes #5 = { nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #6 = { argmemonly nounwind willreturn } attributes #7 = { nounwind } attributes #8 = { nounwind readnone } attributes #9 = { readnone } attributes #10 = { nounwind readonly } !llvm.ident = !{!0, !0} !llvm.module.flags = !{!1} !0 = !{!"clang version 10.0.0-4ubuntu1 "} !1 = !{i32 1, !"wchar_size", i32 4} !2 = !{!"Bunker"}