; ModuleID = 'combine_output/combined.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] } @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 { %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: noinline nounwind optnone uwtable define dso_local void @setErrorMessage(i8* %0) #0 { %2 = alloca i8*, align 8 store i8* %0, i8** %2, align 8 %3 = load i8*, i8** @globalErrorMessage, align 8 %4 = icmp ne i8* %3, null br i1 %4, label %5, label %7 5: ; preds = %1 %6 = load i8*, i8** @globalErrorMessage, align 8 call void @free(i8* %6) #7 br label %7 7: ; preds = %5, %1 %8 = load i8*, i8** %2, align 8 %9 = icmp ne i8* %8, null br i1 %9, label %10, label %19 10: ; preds = %7 %11 = load i8*, i8** %2, align 8 %12 = call noalias i8* @strdup(i8* %11) #7 store i8* %12, i8** @globalErrorMessage, align 8 %13 = load i8*, i8** @globalErrorMessage, align 8 %14 = icmp eq i8* %13, null br i1 %14, label %15, label %18 15: ; preds = %10 %16 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %17 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %16, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.1, i64 0, i64 0)) br label %18 18: ; preds = %15, %10 br label %20 19: ; preds = %7 store i8* null, i8** @globalErrorMessage, align 8 br label %20 20: ; preds = %19, %18 ret void } ; 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 { %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 %12 9: ; preds = %1 call void @setErrorMessage(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0)) %10 = load i32, i32* @recursionDepth, align 4 %11 = add nsw i32 %10, -1 store i32 %11, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %53 12: ; preds = %1 %13 = load i32, i32* %3, align 4 %14 = icmp slt i32 %13, 0 br i1 %14, label %15, label %18 15: ; preds = %12 call void @setErrorMessage(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0)) %16 = load i32, i32* @recursionDepth, align 4 %17 = add nsw i32 %16, -1 store i32 %17, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %53 18: ; preds = %12 %19 = load i32, i32* %3, align 4 %20 = icmp sgt i32 %19, 20 br i1 %20, label %21, label %24 21: ; preds = %18 call void @setErrorMessage(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0)) %22 = load i32, i32* @recursionDepth, align 4 %23 = add nsw i32 %22, -1 store i32 %23, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %53 24: ; preds = %18 %25 = load i32, i32* %3, align 4 %26 = icmp sle i32 %25, 1 br i1 %26, label %27, label %28 27: ; preds = %24 store i32 1, i32* %4, align 4 br label %49 28: ; preds = %24 %29 = load i32, i32* %3, align 4 %30 = sub nsw i32 %29, 1 %31 = call i32 @factorial(i32 %30) store i32 %31, i32* %5, align 4 %32 = load i32, i32* %5, align 4 %33 = icmp eq i32 %32, -1 br i1 %33, label %34, label %37 34: ; preds = %28 %35 = load i32, i32* @recursionDepth, align 4 %36 = add nsw i32 %35, -1 store i32 %36, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %53 37: ; preds = %28 %38 = load i32, i32* %5, align 4 %39 = load i32, i32* %3, align 4 %40 = sdiv i32 2147483647, %39 %41 = icmp sgt i32 %38, %40 br i1 %41, label %42, label %45 42: ; preds = %37 call void @setErrorMessage(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0)) %43 = load i32, i32* @recursionDepth, align 4 %44 = add nsw i32 %43, -1 store i32 %44, i32* @recursionDepth, align 4 store i32 -1, i32* %2, align 4 br label %53 45: ; preds = %37 %46 = load i32, i32* %3, align 4 %47 = load i32, i32* %5, align 4 %48 = mul nsw i32 %46, %47 store i32 %48, i32* %4, align 4 br label %49 49: ; preds = %45, %27 %50 = load i32, i32* @recursionDepth, align 4 %51 = add nsw i32 %50, -1 store i32 %51, i32* @recursionDepth, align 4 %52 = load i32, i32* %4, align 4 store i32 %52, i32* %2, align 4 br label %53 53: ; preds = %49, %42, %34, %21, %15, %9 %54 = load i32, i32* %2, align 4 ret i32 %54 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local %struct.DynamicArray* @createDynamicArray(i32 %0) #0 { %2 = alloca %struct.DynamicArray*, align 8 %3 = alloca i32, align 4 %4 = alloca %struct.DynamicArray*, align 8 store i32 %0, i32* %3, align 4 %5 = load i32, i32* %3, align 4 %6 = icmp sle i32 %5, 0 br i1 %6, label %7, label %8 7: ; preds = %1 call void @setErrorMessage(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0)) store %struct.DynamicArray* null, %struct.DynamicArray** %2, align 8 br label %44 8: ; preds = %1 %9 = load i32, i32* %3, align 4 %10 = icmp sgt i32 %9, 1000 br i1 %10, label %11, label %12 11: ; preds = %8 call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0)) store %struct.DynamicArray* null, %struct.DynamicArray** %2, align 8 br label %44 12: ; preds = %8 %13 = call noalias i8* @malloc(i64 24) #7 %14 = bitcast i8* %13 to %struct.DynamicArray* store %struct.DynamicArray* %14, %struct.DynamicArray** %4, align 8 %15 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 %16 = icmp ne %struct.DynamicArray* %15, null br i1 %16, label %18, label %17 17: ; preds = %12 call void @setErrorMessage(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.8, i64 0, i64 0)) store %struct.DynamicArray* null, %struct.DynamicArray** %2, align 8 br label %44 18: ; preds = %12 %19 = load i32, i32* %3, align 4 %20 = sext i32 %19 to i64 %21 = mul i64 4, %20 %22 = call noalias i8* @malloc(i64 %21) #7 %23 = bitcast i8* %22 to i32* %24 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 %25 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %24, i32 0, i32 0 store i32* %23, i32** %25, align 8 %26 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 %27 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %26, i32 0, i32 0 %28 = load i32*, i32** %27, align 8 %29 = icmp ne i32* %28, null br i1 %29, label %33, label %30 30: ; preds = %18 %31 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 %32 = bitcast %struct.DynamicArray* %31 to i8* call void @free(i8* %32) #7 call void @setErrorMessage(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i64 0, i64 0)) store %struct.DynamicArray* null, %struct.DynamicArray** %2, align 8 br label %44 33: ; preds = %18 %34 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 %35 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %34, i32 0, i32 1 store i32 0, i32* %35, align 8 %36 = load i32, i32* %3, align 4 %37 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 %38 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %37, i32 0, i32 2 store i32 %36, i32* %38, align 4 %39 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 %40 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %39, i32 0, i32 3 store i32 1, i32* %40, align 8 %41 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 %42 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %41, i32 0, i32 4 store i32 0, i32* %42, align 4 %43 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8 store %struct.DynamicArray* %43, %struct.DynamicArray** %2, align 8 br label %44 44: ; preds = %33, %30, %17, %11, %7 %45 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 ret %struct.DynamicArray* %45 } ; 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 { %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 %10, label %9 9: ; preds = %2 call void @setErrorMessage(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0)) br label %91 10: ; preds = %2 %11 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %12 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %11, i32 0, i32 1 %13 = load i32, i32* %12, align 8 %14 = icmp sge i32 %13, 1000 br i1 %14, label %15, label %16 15: ; preds = %10 call void @setErrorMessage(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0)) br label %91 16: ; preds = %10 %17 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %18 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %17, i32 0, i32 1 %19 = load i32, i32* %18, align 8 %20 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %21 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %20, i32 0, i32 2 %22 = load i32, i32* %21, align 4 %23 = icmp sge i32 %19, %22 br i1 %23, label %24, label %52 24: ; preds = %16 %25 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %26 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %25, i32 0, i32 2 %27 = load i32, i32* %26, align 4 %28 = mul nsw i32 %27, 2 store i32 %28, i32* %5, align 4 %29 = load i32, i32* %5, align 4 %30 = icmp sgt i32 %29, 1000 br i1 %30, label %31, label %32 31: ; preds = %24 store i32 1000, i32* %5, align 4 br label %32 32: ; preds = %31, %24 %33 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %34 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %33, i32 0, i32 0 %35 = load i32*, i32** %34, align 8 %36 = bitcast i32* %35 to i8* %37 = load i32, i32* %5, align 4 %38 = sext i32 %37 to i64 %39 = mul i64 4, %38 %40 = call i8* @realloc(i8* %36, i64 %39) #7 %41 = bitcast i8* %40 to i32* store i32* %41, i32** %6, align 8 %42 = load i32*, i32** %6, align 8 %43 = icmp ne i32* %42, null br i1 %43, label %45, label %44 44: ; preds = %32 call void @setErrorMessage(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0)) br label %91 45: ; preds = %32 %46 = load i32*, i32** %6, align 8 %47 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %48 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %47, i32 0, i32 0 store i32* %46, i32** %48, align 8 %49 = load i32, i32* %5, align 4 %50 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %51 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %50, i32 0, i32 2 store i32 %49, i32* %51, align 4 br label %52 52: ; preds = %45, %16 %53 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %54 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %53, i32 0, i32 3 %55 = load i32, i32* %54, align 8 %56 = icmp ne i32 %55, 0 br i1 %56, label %57, label %78 57: ; preds = %52 %58 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %59 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %58, i32 0, i32 1 %60 = load i32, i32* %59, align 8 %61 = icmp sgt i32 %60, 0 br i1 %61, label %62, label %78 62: ; preds = %57 %63 = load i32, i32* %4, align 4 %64 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %65 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %64, i32 0, i32 0 %66 = load i32*, i32** %65, align 8 %67 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %68 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %67, i32 0, i32 1 %69 = load i32, i32* %68, align 8 %70 = sub nsw i32 %69, 1 %71 = sext i32 %70 to i64 %72 = getelementptr inbounds i32, i32* %66, i64 %71 %73 = load i32, i32* %72, align 4 %74 = icmp slt i32 %63, %73 br i1 %74, label %75, label %78 75: ; preds = %62 %76 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %77 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %76, i32 0, i32 3 store i32 0, i32* %77, align 8 br label %78 78: ; preds = %75, %62, %57, %52 %79 = load i32, i32* %4, align 4 %80 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %81 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %80, i32 0, i32 0 %82 = load i32*, i32** %81, align 8 %83 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %84 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %83, i32 0, i32 1 %85 = load i32, i32* %84, align 8 %86 = add nsw i32 %85, 1 store i32 %86, i32* %84, align 8 %87 = sext i32 %85 to i64 %88 = getelementptr inbounds i32, i32* %82, i64 %87 store i32 %79, i32* %88, align 4 %89 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8 %90 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %89, i32 0, i32 4 store i32 1, i32* %90, align 4 br label %91 91: ; preds = %78, %44, %15, %9 ret void } ; Function Attrs: nounwind declare dso_local i8* @realloc(i8*, i64) #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @quickSort(i32* %0, i32 %1, i32 %2, i32* %3) #0 { %5 = alloca i32*, align 8 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca i32*, align 8 %9 = alloca i32, align 4 %10 = alloca i32, align 4 %11 = alloca i32, align 4 %12 = alloca i32, align 4 %13 = alloca i32, align 4 %14 = alloca i32, align 4 store i32* %0, i32** %5, align 8 store i32 %1, i32* %6, align 4 store i32 %2, i32* %7, align 4 store i32* %3, i32** %8, align 8 %15 = load i32, i32* @recursionDepth, align 4 %16 = add nsw i32 %15, 1 store i32 %16, i32* @recursionDepth, align 4 %17 = icmp sgt i32 %16, 1000 br i1 %17, label %18, label %22 18: ; preds = %4 call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0)) %19 = load i32*, i32** %8, align 8 store i32 1, i32* %19, align 4 %20 = load i32, i32* @recursionDepth, align 4 %21 = add nsw i32 %20, -1 store i32 %21, i32* @recursionDepth, align 4 br label %247 22: ; preds = %4 %23 = load i32*, i32** %5, align 8 %24 = icmp ne i32* %23, null br i1 %24, label %29, label %25 25: ; preds = %22 call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0)) %26 = load i32*, i32** %8, align 8 store i32 1, i32* %26, align 4 %27 = load i32, i32* @recursionDepth, align 4 %28 = add nsw i32 %27, -1 store i32 %28, i32* @recursionDepth, align 4 br label %247 29: ; preds = %22 %30 = load i32, i32* %6, align 4 %31 = icmp slt i32 %30, 0 br i1 %31, label %41, label %32 32: ; preds = %29 %33 = load i32, i32* %7, align 4 %34 = icmp slt i32 %33, 0 br i1 %34, label %41, label %35 35: ; preds = %32 %36 = load i32, i32* %6, align 4 %37 = icmp sge i32 %36, 1000 br i1 %37, label %41, label %38 38: ; preds = %35 %39 = load i32, i32* %7, align 4 %40 = icmp sge i32 %39, 1000 br i1 %40, label %41, label %45 41: ; preds = %38, %35, %32, %29 call void @setErrorMessage(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0)) %42 = load i32*, i32** %8, align 8 store i32 1, i32* %42, align 4 %43 = load i32, i32* @recursionDepth, align 4 %44 = add nsw i32 %43, -1 store i32 %44, i32* @recursionDepth, align 4 br label %247 45: ; preds = %38 %46 = load i32, i32* %6, align 4 %47 = load i32, i32* %7, align 4 %48 = icmp slt i32 %46, %47 br i1 %48, label %49, label %244 49: ; preds = %45 %50 = load i32, i32* %6, align 4 %51 = load i32, i32* %7, align 4 %52 = load i32, i32* %6, align 4 %53 = sub nsw i32 %51, %52 %54 = sdiv i32 %53, 2 %55 = add nsw i32 %50, %54 store i32 %55, i32* %9, align 4 %56 = load i32*, i32** %5, align 8 %57 = load i32, i32* %6, align 4 %58 = sext i32 %57 to i64 %59 = getelementptr inbounds i32, i32* %56, i64 %58 %60 = load i32, i32* %59, align 4 %61 = load i32*, i32** %5, align 8 %62 = load i32, i32* %9, align 4 %63 = sext i32 %62 to i64 %64 = getelementptr inbounds i32, i32* %61, i64 %63 %65 = load i32, i32* %64, align 4 %66 = icmp sle i32 %60, %65 br i1 %66, label %67, label %99 67: ; preds = %49 %68 = load i32*, i32** %5, align 8 %69 = load i32, i32* %9, align 4 %70 = sext i32 %69 to i64 %71 = getelementptr inbounds i32, i32* %68, i64 %70 %72 = load i32, i32* %71, align 4 %73 = load i32*, i32** %5, align 8 %74 = load i32, i32* %7, align 4 %75 = sext i32 %74 to i64 %76 = getelementptr inbounds i32, i32* %73, i64 %75 %77 = load i32, i32* %76, align 4 %78 = icmp sle i32 %72, %77 br i1 %78, label %79, label %81 79: ; preds = %67 %80 = load i32, i32* %9, align 4 store i32 %80, i32* %10, align 4 br label %98 81: ; preds = %67 %82 = load i32*, i32** %5, align 8 %83 = load i32, i32* %6, align 4 %84 = sext i32 %83 to i64 %85 = getelementptr inbounds i32, i32* %82, i64 %84 %86 = load i32, i32* %85, align 4 %87 = load i32*, i32** %5, align 8 %88 = load i32, i32* %7, align 4 %89 = sext i32 %88 to i64 %90 = getelementptr inbounds i32, i32* %87, i64 %89 %91 = load i32, i32* %90, align 4 %92 = icmp sle i32 %86, %91 br i1 %92, label %93, label %95 93: ; preds = %81 %94 = load i32, i32* %7, align 4 store i32 %94, i32* %10, align 4 br label %97 95: ; preds = %81 %96 = load i32, i32* %6, align 4 store i32 %96, i32* %10, align 4 br label %97 97: ; preds = %95, %93 br label %98 98: ; preds = %97, %79 br label %131 99: ; preds = %49 %100 = load i32*, i32** %5, align 8 %101 = load i32, i32* %6, align 4 %102 = sext i32 %101 to i64 %103 = getelementptr inbounds i32, i32* %100, i64 %102 %104 = load i32, i32* %103, align 4 %105 = load i32*, i32** %5, align 8 %106 = load i32, i32* %7, align 4 %107 = sext i32 %106 to i64 %108 = getelementptr inbounds i32, i32* %105, i64 %107 %109 = load i32, i32* %108, align 4 %110 = icmp sle i32 %104, %109 br i1 %110, label %111, label %113 111: ; preds = %99 %112 = load i32, i32* %6, align 4 store i32 %112, i32* %10, align 4 br label %130 113: ; preds = %99 %114 = load i32*, i32** %5, align 8 %115 = load i32, i32* %9, align 4 %116 = sext i32 %115 to i64 %117 = getelementptr inbounds i32, i32* %114, i64 %116 %118 = load i32, i32* %117, align 4 %119 = load i32*, i32** %5, align 8 %120 = load i32, i32* %7, align 4 %121 = sext i32 %120 to i64 %122 = getelementptr inbounds i32, i32* %119, i64 %121 %123 = load i32, i32* %122, align 4 %124 = icmp sle i32 %118, %123 br i1 %124, label %125, label %127 125: ; preds = %113 %126 = load i32, i32* %7, align 4 store i32 %126, i32* %10, align 4 br label %129 127: ; preds = %113 %128 = load i32, i32* %9, align 4 store i32 %128, i32* %10, align 4 br label %129 129: ; preds = %127, %125 br label %130 130: ; preds = %129, %111 br label %131 131: ; preds = %130, %98 %132 = load i32*, i32** %5, align 8 %133 = load i32, i32* %7, align 4 %134 = sext i32 %133 to i64 %135 = getelementptr inbounds i32, i32* %132, i64 %134 %136 = load i32, i32* %135, align 4 store i32 %136, i32* %11, align 4 %137 = load i32*, i32** %5, align 8 %138 = load i32, i32* %10, align 4 %139 = sext i32 %138 to i64 %140 = getelementptr inbounds i32, i32* %137, i64 %139 %141 = load i32, i32* %140, align 4 %142 = load i32*, i32** %5, align 8 %143 = load i32, i32* %7, align 4 %144 = sext i32 %143 to i64 %145 = getelementptr inbounds i32, i32* %142, i64 %144 store i32 %141, i32* %145, align 4 %146 = load i32, i32* %11, align 4 %147 = load i32*, i32** %5, align 8 %148 = load i32, i32* %10, align 4 %149 = sext i32 %148 to i64 %150 = getelementptr inbounds i32, i32* %147, i64 %149 store i32 %146, i32* %150, align 4 %151 = load i32*, i32** %5, align 8 %152 = load i32, i32* %7, align 4 %153 = sext i32 %152 to i64 %154 = getelementptr inbounds i32, i32* %151, i64 %153 %155 = load i32, i32* %154, align 4 store i32 %155, i32* %12, align 4 %156 = load i32, i32* %6, align 4 %157 = sub nsw i32 %156, 1 store i32 %157, i32* %13, align 4 %158 = load i32, i32* %6, align 4 store i32 %158, i32* %14, align 4 br label %159 159: ; preds = %196, %131 %160 = load i32, i32* %14, align 4 %161 = load i32, i32* %7, align 4 %162 = icmp slt i32 %160, %161 br i1 %162, label %163, label %199 163: ; preds = %159 %164 = load i32*, i32** %5, align 8 %165 = load i32, i32* %14, align 4 %166 = sext i32 %165 to i64 %167 = getelementptr inbounds i32, i32* %164, i64 %166 %168 = load i32, i32* %167, align 4 %169 = load i32, i32* %12, align 4 %170 = icmp sle i32 %168, %169 br i1 %170, label %171, label %195 171: ; preds = %163 %172 = load i32, i32* %13, align 4 %173 = add nsw i32 %172, 1 store i32 %173, i32* %13, align 4 %174 = load i32*, i32** %5, align 8 %175 = load i32, i32* %13, align 4 %176 = sext i32 %175 to i64 %177 = getelementptr inbounds i32, i32* %174, i64 %176 %178 = load i32, i32* %177, align 4 store i32 %178, i32* %11, align 4 %179 = load i32*, i32** %5, align 8 %180 = load i32, i32* %14, align 4 %181 = sext i32 %180 to i64 %182 = getelementptr inbounds i32, i32* %179, i64 %181 %183 = load i32, i32* %182, align 4 %184 = load i32*, i32** %5, align 8 %185 = load i32, i32* %13, align 4 %186 = sext i32 %185 to i64 %187 = getelementptr inbounds i32, i32* %184, i64 %186 store i32 %183, i32* %187, align 4 %188 = load i32, i32* %11, align 4 %189 = load i32*, i32** %5, align 8 %190 = load i32, i32* %14, align 4 %191 = sext i32 %190 to i64 %192 = getelementptr inbounds i32, i32* %189, i64 %191 store i32 %188, i32* %192, align 4 %193 = load i32, i32* @globalCounter, align 4 %194 = add nsw i32 %193, 1 store i32 %194, i32* @globalCounter, align 4 br label %195 195: ; preds = %171, %163 br label %196 196: ; preds = %195 %197 = load i32, i32* %14, align 4 %198 = add nsw i32 %197, 1 store i32 %198, i32* %14, align 4 br label %159 199: ; preds = %159 %200 = load i32*, i32** %5, align 8 %201 = load i32, i32* %13, align 4 %202 = add nsw i32 %201, 1 %203 = sext i32 %202 to i64 %204 = getelementptr inbounds i32, i32* %200, i64 %203 %205 = load i32, i32* %204, align 4 store i32 %205, i32* %11, align 4 %206 = load i32*, i32** %5, align 8 %207 = load i32, i32* %7, align 4 %208 = sext i32 %207 to i64 %209 = getelementptr inbounds i32, i32* %206, i64 %208 %210 = load i32, i32* %209, align 4 %211 = load i32*, i32** %5, align 8 %212 = load i32, i32* %13, align 4 %213 = add nsw i32 %212, 1 %214 = sext i32 %213 to i64 %215 = getelementptr inbounds i32, i32* %211, i64 %214 store i32 %210, i32* %215, align 4 %216 = load i32, i32* %11, align 4 %217 = load i32*, i32** %5, align 8 %218 = load i32, i32* %7, align 4 %219 = sext i32 %218 to i64 %220 = getelementptr inbounds i32, i32* %217, i64 %219 store i32 %216, i32* %220, align 4 %221 = load i32*, i32** %5, align 8 %222 = load i32, i32* %6, align 4 %223 = load i32, i32* %13, align 4 %224 = load i32*, i32** %8, align 8 call void @quickSort(i32* %221, i32 %222, i32 %223, i32* %224) %225 = load i32*, i32** %8, align 8 %226 = load i32, i32* %225, align 4 %227 = icmp ne i32 %226, 0 br i1 %227, label %228, label %231 228: ; preds = %199 %229 = load i32, i32* @recursionDepth, align 4 %230 = add nsw i32 %229, -1 store i32 %230, i32* @recursionDepth, align 4 br label %247 231: ; preds = %199 %232 = load i32*, i32** %5, align 8 %233 = load i32, i32* %13, align 4 %234 = add nsw i32 %233, 2 %235 = load i32, i32* %7, align 4 %236 = load i32*, i32** %8, align 8 call void @quickSort(i32* %232, i32 %234, i32 %235, i32* %236) %237 = load i32*, i32** %8, align 8 %238 = load i32, i32* %237, align 4 %239 = icmp ne i32 %238, 0 br i1 %239, label %240, label %243 240: ; preds = %231 %241 = load i32, i32* @recursionDepth, align 4 %242 = add nsw i32 %241, -1 store i32 %242, i32* @recursionDepth, align 4 br label %247 243: ; preds = %231 br label %244 244: ; preds = %243, %45 %245 = load i32, i32* @recursionDepth, align 4 %246 = add nsw i32 %245, -1 store i32 %246, i32* @recursionDepth, align 4 br label %247 247: ; preds = %244, %240, %228, %41, %25, %18 ret void } ; Function Attrs: noinline nounwind optnone uwtable define dso_local %struct.Matrix* @createMatrix(i32 %0, i32 %1) #0 { %3 = alloca %struct.Matrix*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca %struct.Matrix*, align 8 %7 = alloca i32, align 4 %8 = alloca i32, align 4 store i32 %0, i32* %4, align 4 store i32 %1, i32* %5, align 4 %9 = load i32, i32* %4, align 4 %10 = icmp slt i32 %9, 1 br i1 %10, label %14, label %11 11: ; preds = %2 %12 = load i32, i32* %5, align 4 %13 = icmp slt i32 %12, 1 br i1 %13, label %14, label %15 14: ; preds = %11, %2 call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %111 15: ; preds = %11 %16 = load i32, i32* %4, align 4 %17 = icmp sgt i32 %16, 100 br i1 %17, label %21, label %18 18: ; preds = %15 %19 = load i32, i32* %5, align 4 %20 = icmp sgt i32 %19, 100 br i1 %20, label %21, label %22 21: ; preds = %18, %15 call void @setErrorMessage(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 %111 22: ; preds = %18 %23 = call noalias i8* @malloc(i64 32) #7 %24 = bitcast i8* %23 to %struct.Matrix* store %struct.Matrix* %24, %struct.Matrix** %6, align 8 %25 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %26 = icmp ne %struct.Matrix* %25, null br i1 %26, label %28, label %27 27: ; preds = %22 call void @setErrorMessage(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %111 28: ; preds = %22 %29 = load i32, i32* %4, align 4 %30 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %31 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %30, i32 0, i32 1 store i32 %29, i32* %31, align 8 %32 = load i32, i32* %5, align 4 %33 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %34 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %33, i32 0, i32 2 store i32 %32, i32* %34, align 4 %35 = load i32, i32* %4, align 4 %36 = load i32, i32* %5, align 4 %37 = icmp eq i32 %35, %36 %38 = zext i1 %37 to i32 %39 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %40 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %39, i32 0, i32 3 store i32 %38, i32* %40, align 8 %41 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %42 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %41, i32 0, i32 4 store double 0.000000e+00, double* %42, align 8 %43 = load i32, i32* %4, align 4 %44 = sext i32 %43 to i64 %45 = mul i64 %44, 8 %46 = call noalias i8* @malloc(i64 %45) #7 %47 = bitcast i8* %46 to i32** %48 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %49 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %48, i32 0, i32 0 store i32** %47, i32*** %49, align 8 %50 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %51 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %50, i32 0, i32 0 %52 = load i32**, i32*** %51, align 8 %53 = icmp ne i32** %52, null br i1 %53, label %57, label %54 54: ; preds = %28 %55 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %56 = bitcast %struct.Matrix* %55 to i8* call void @free(i8* %56) #7 call void @setErrorMessage(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %111 57: ; preds = %28 store i32 0, i32* %7, align 4 br label %58 58: ; preds = %106, %57 %59 = load i32, i32* %7, align 4 %60 = load i32, i32* %4, align 4 %61 = icmp slt i32 %59, %60 br i1 %61, label %62, label %109 62: ; preds = %58 %63 = load i32, i32* %5, align 4 %64 = sext i32 %63 to i64 %65 = call noalias i8* @calloc(i64 %64, i64 4) #7 %66 = bitcast i8* %65 to i32* %67 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %68 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %67, i32 0, i32 0 %69 = load i32**, i32*** %68, align 8 %70 = load i32, i32* %7, align 4 %71 = sext i32 %70 to i64 %72 = getelementptr inbounds i32*, i32** %69, i64 %71 store i32* %66, i32** %72, align 8 %73 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %74 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %73, i32 0, i32 0 %75 = load i32**, i32*** %74, align 8 %76 = load i32, i32* %7, align 4 %77 = sext i32 %76 to i64 %78 = getelementptr inbounds i32*, i32** %75, i64 %77 %79 = load i32*, i32** %78, align 8 %80 = icmp ne i32* %79, null br i1 %80, label %105, label %81 81: ; preds = %62 store i32 0, i32* %8, align 4 br label %82 82: ; preds = %95, %81 %83 = load i32, i32* %8, align 4 %84 = load i32, i32* %7, align 4 %85 = icmp slt i32 %83, %84 br i1 %85, label %86, label %98 86: ; preds = %82 %87 = load %struct.Matrix*, %struct.Matrix** %6, 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* %8, align 4 %91 = sext i32 %90 to i64 %92 = getelementptr inbounds i32*, i32** %89, i64 %91 %93 = load i32*, i32** %92, align 8 %94 = bitcast i32* %93 to i8* call void @free(i8* %94) #7 br label %95 95: ; preds = %86 %96 = load i32, i32* %8, align 4 %97 = add nsw i32 %96, 1 store i32 %97, i32* %8, align 4 br label %82 98: ; preds = %82 %99 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %100 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %99, i32 0, i32 0 %101 = load i32**, i32*** %100, align 8 %102 = bitcast i32** %101 to i8* call void @free(i8* %102) #7 %103 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %104 = bitcast %struct.Matrix* %103 to i8* call void @free(i8* %104) #7 call void @setErrorMessage(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0)) store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %111 105: ; preds = %62 br label %106 106: ; preds = %105 %107 = load i32, i32* %7, align 4 %108 = add nsw i32 %107, 1 store i32 %108, i32* %7, align 4 br label %58 109: ; preds = %58 %110 = load %struct.Matrix*, %struct.Matrix** %6, align 8 store %struct.Matrix* %110, %struct.Matrix** %3, align 8 br label %111 111: ; preds = %109, %98, %54, %27, %21, %14 %112 = load %struct.Matrix*, %struct.Matrix** %3, align 8 ret %struct.Matrix* %112 } ; 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 { %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 %20, label %19 19: ; preds = %16, %2 call void @setErrorMessage(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 %209 20: ; preds = %16 %21 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %22 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %21, i32 0, i32 0 %23 = load i32**, i32*** %22, align 8 %24 = icmp ne i32** %23, null br i1 %24, label %25, label %30 25: ; preds = %20 %26 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %27 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %26, i32 0, i32 0 %28 = load i32**, i32*** %27, align 8 %29 = icmp ne i32** %28, null br i1 %29, label %31, label %30 30: ; preds = %25, %20 call void @setErrorMessage(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 %209 31: ; preds = %25 %32 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %33 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %32, i32 0, i32 2 %34 = load i32, i32* %33, align 4 %35 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %36 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %35, i32 0, i32 1 %37 = load i32, i32* %36, align 8 %38 = icmp ne i32 %34, %37 br i1 %38, label %39, label %40 39: ; preds = %31 call void @setErrorMessage(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 %209 40: ; preds = %31 %41 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %42 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %41, i32 0, i32 2 %43 = load i32, i32* %42, align 4 %44 = icmp sgt i32 %43, 100 br i1 %44, label %50, label %45 45: ; preds = %40 %46 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %47 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %46, i32 0, i32 1 %48 = load i32, i32* %47, align 8 %49 = icmp sgt i32 %48, 100 br i1 %49, label %50, label %51 50: ; preds = %45, %40 call void @setErrorMessage(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 %209 51: ; preds = %45 %52 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %53 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %52, i32 0, i32 1 %54 = load i32, i32* %53, align 8 %55 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %56 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %55, i32 0, i32 2 %57 = load i32, i32* %56, align 4 %58 = call %struct.Matrix* @createMatrix(i32 %54, i32 %57) store %struct.Matrix* %58, %struct.Matrix** %6, align 8 %59 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %60 = icmp ne %struct.Matrix* %59, null br i1 %60, label %62, label %61 61: ; preds = %51 store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %209 62: ; preds = %51 store i64 0, i64* %7, align 8 store i32 0, i32* %8, align 4 br label %63 63: ; preds = %194, %62 %64 = load i32, i32* %8, align 4 %65 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %66 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %65, i32 0, i32 1 %67 = load i32, i32* %66, align 8 %68 = icmp slt i32 %64, %67 br i1 %68, label %69, label %197 69: ; preds = %63 store i32 0, i32* %9, align 4 br label %70 70: ; preds = %190, %69 %71 = load i32, i32* %9, align 4 %72 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %73 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %72, i32 0, i32 2 %74 = load i32, i32* %73, align 4 %75 = icmp slt i32 %71, %74 br i1 %75, label %76, label %193 76: ; preds = %70 store i64 0, i64* %10, align 8 store i32 0, i32* %11, align 4 br label %77 77: ; preds = %144, %76 %78 = load i32, i32* %11, align 4 %79 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %80 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %79, i32 0, i32 2 %81 = load i32, i32* %80, align 4 %82 = icmp slt i32 %78, %81 br i1 %82, label %83, label %147 83: ; preds = %77 %84 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %85 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %84, i32 0, i32 0 %86 = load i32**, i32*** %85, align 8 %87 = load i32, i32* %8, align 4 %88 = sext i32 %87 to i64 %89 = getelementptr inbounds i32*, i32** %86, i64 %88 %90 = load i32*, i32** %89, 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 = sext i32 %94 to i64 %96 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %97 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %96, i32 0, i32 0 %98 = load i32**, i32*** %97, align 8 %99 = load i32, i32* %11, align 4 %100 = sext i32 %99 to i64 %101 = getelementptr inbounds i32*, i32** %98, i64 %100 %102 = load i32*, i32** %101, align 8 %103 = load i32, i32* %9, align 4 %104 = sext i32 %103 to i64 %105 = getelementptr inbounds i32, i32* %102, i64 %104 %106 = load i32, i32* %105, align 4 %107 = sext i32 %106 to i64 %108 = mul nsw i64 %95, %107 store i64 %108, i64* %12, align 8 %109 = load i64, i64* %12, align 8 %110 = load i64, i64* %10, align 8 %111 = add nsw i64 %110, %109 store i64 %111, i64* %10, align 8 %112 = load i64, i64* %10, align 8 %113 = icmp sgt i64 %112, 2147483647 br i1 %113, label %117, label %114 114: ; preds = %83 %115 = load i64, i64* %10, align 8 %116 = icmp slt i64 %115, -2147483648 br i1 %116, label %117, label %143 117: ; preds = %114, %83 call void @setErrorMessage(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i64 0, i64 0)) store i32 0, i32* %13, align 4 br label %118 118: ; preds = %133, %117 %119 = load i32, i32* %13, align 4 %120 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %121 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %120, i32 0, i32 1 %122 = load i32, i32* %121, align 8 %123 = icmp slt i32 %119, %122 br i1 %123, label %124, label %136 124: ; preds = %118 %125 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %126 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %125, i32 0, i32 0 %127 = load i32**, i32*** %126, align 8 %128 = load i32, i32* %13, align 4 %129 = sext i32 %128 to i64 %130 = getelementptr inbounds i32*, i32** %127, i64 %129 %131 = load i32*, i32** %130, align 8 %132 = bitcast i32* %131 to i8* call void @free(i8* %132) #7 br label %133 133: ; preds = %124 %134 = load i32, i32* %13, align 4 %135 = add nsw i32 %134, 1 store i32 %135, i32* %13, align 4 br label %118 136: ; preds = %118 %137 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %138 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %137, i32 0, i32 0 %139 = load i32**, i32*** %138, align 8 %140 = bitcast i32** %139 to i8* call void @free(i8* %140) #7 %141 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %142 = bitcast %struct.Matrix* %141 to i8* call void @free(i8* %142) #7 store %struct.Matrix* null, %struct.Matrix** %3, align 8 br label %209 143: ; preds = %114 br label %144 144: ; preds = %143 %145 = load i32, i32* %11, align 4 %146 = add nsw i32 %145, 1 store i32 %146, i32* %11, align 4 br label %77 147: ; preds = %77 %148 = load i64, i64* %10, align 8 %149 = trunc i64 %148 to i32 %150 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %151 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %150, i32 0, i32 0 %152 = load i32**, i32*** %151, align 8 %153 = load i32, i32* %8, align 4 %154 = sext i32 %153 to i64 %155 = getelementptr inbounds i32*, i32** %152, i64 %154 %156 = load i32*, i32** %155, align 8 %157 = load i32, i32* %9, align 4 %158 = sext i32 %157 to i64 %159 = getelementptr inbounds i32, i32* %156, i64 %158 store i32 %149, i32* %159, align 4 %160 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %161 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %160, i32 0, i32 0 %162 = load i32**, i32*** %161, align 8 %163 = load i32, i32* %8, align 4 %164 = sext i32 %163 to i64 %165 = getelementptr inbounds i32*, i32** %162, i64 %164 %166 = load i32*, i32** %165, align 8 %167 = load i32, i32* %9, align 4 %168 = sext i32 %167 to i64 %169 = getelementptr inbounds i32, i32* %166, i64 %168 %170 = load i32, i32* %169, align 4 %171 = call i32 @abs(i32 %170) #8 %172 = sext i32 %171 to i64 %173 = load i64, i64* %7, align 8 %174 = icmp sgt i64 %172, %173 br i1 %174, label %175, label %189 175: ; preds = %147 %176 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %177 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %176, i32 0, i32 0 %178 = load i32**, i32*** %177, align 8 %179 = load i32, i32* %8, align 4 %180 = sext i32 %179 to i64 %181 = getelementptr inbounds i32*, i32** %178, i64 %180 %182 = load i32*, i32** %181, align 8 %183 = load i32, i32* %9, align 4 %184 = sext i32 %183 to i64 %185 = getelementptr inbounds i32, i32* %182, i64 %184 %186 = load i32, i32* %185, align 4 %187 = call i32 @abs(i32 %186) #8 %188 = sext i32 %187 to i64 store i64 %188, i64* %7, align 8 br label %189 189: ; preds = %175, %147 br label %190 190: ; preds = %189 %191 = load i32, i32* %9, align 4 %192 = add nsw i32 %191, 1 store i32 %192, i32* %9, align 4 br label %70 193: ; preds = %70 br label %194 194: ; preds = %193 %195 = load i32, i32* %8, align 4 %196 = add nsw i32 %195, 1 store i32 %196, i32* %8, align 4 br label %63 197: ; preds = %63 %198 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %199 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %198, i32 0, i32 1 %200 = load i32, i32* %199, align 8 %201 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %202 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %201, i32 0, i32 2 %203 = load i32, i32* %202, align 4 %204 = icmp eq i32 %200, %203 %205 = zext i1 %204 to i32 %206 = load %struct.Matrix*, %struct.Matrix** %6, align 8 %207 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %206, i32 0, i32 3 store i32 %205, i32* %207, align 8 %208 = load %struct.Matrix*, %struct.Matrix** %6, align 8 store %struct.Matrix* %208, %struct.Matrix** %3, align 8 br label %209 209: ; preds = %197, %136, %61, %50, %39, %30, %19 %210 = load %struct.Matrix*, %struct.Matrix** %3, align 8 ret %struct.Matrix* %210 } ; 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 { %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 %16, label %14 14: ; preds = %2 call void @setErrorMessage(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0)) %15 = load %struct.Node*, %struct.Node** %4, align 8 store %struct.Node* %15, %struct.Node** %3, align 8 br label %92 16: ; preds = %2 %17 = load i32, i32* %5, align 4 %18 = load %struct.Node*, %struct.Node** %6, align 8 %19 = getelementptr inbounds %struct.Node, %struct.Node* %18, i32 0, i32 0 store i32 %17, i32* %19, align 8 %20 = load %struct.Node*, %struct.Node** %6, align 8 %21 = getelementptr inbounds %struct.Node, %struct.Node* %20, i32 0, i32 1 store %struct.Node* null, %struct.Node** %21, align 8 %22 = load %struct.Node*, %struct.Node** %6, align 8 %23 = getelementptr inbounds %struct.Node, %struct.Node* %22, i32 0, i32 2 store %struct.Node* null, %struct.Node** %23, align 8 %24 = load %struct.Node*, %struct.Node** %6, align 8 %25 = getelementptr inbounds %struct.Node, %struct.Node* %24, i32 0, i32 3 store i32 0, i32* %25, align 8 %26 = load %struct.Node*, %struct.Node** %4, align 8 %27 = icmp ne %struct.Node* %26, null br i1 %27, label %32, label %28 28: ; preds = %16 %29 = load %struct.Node*, %struct.Node** %6, align 8 %30 = getelementptr inbounds %struct.Node, %struct.Node* %29, i32 0, i32 4 store i32 0, i32* %30, align 4 store i32 0, i32* @insertNode.maxDepth, align 4 %31 = load %struct.Node*, %struct.Node** %6, align 8 store %struct.Node* %31, %struct.Node** %3, align 8 br label %92 32: ; preds = %16 %33 = load %struct.Node*, %struct.Node** %4, align 8 store %struct.Node* %33, %struct.Node** %7, align 8 store %struct.Node* null, %struct.Node** %8, align 8 store i32 0, i32* %9, align 4 br label %34 34: ; preds = %58, %32 %35 = load %struct.Node*, %struct.Node** %7, align 8 %36 = icmp ne %struct.Node* %35, null br i1 %36, label %37, label %43 37: ; preds = %34 %38 = load %struct.Node*, %struct.Node** %7, align 8 %39 = getelementptr inbounds %struct.Node, %struct.Node* %38, i32 0, i32 0 %40 = load i32, i32* %39, align 8 %41 = load i32, i32* %5, align 4 %42 = icmp slt i32 %40, %41 br label %43 43: ; preds = %37, %34 %44 = phi i1 [ false, %34 ], [ %42, %37 ] br i1 %44, label %45, label %59 45: ; preds = %43 %46 = load %struct.Node*, %struct.Node** %7, align 8 store %struct.Node* %46, %struct.Node** %8, align 8 %47 = load %struct.Node*, %struct.Node** %7, align 8 %48 = getelementptr inbounds %struct.Node, %struct.Node* %47, i32 0, i32 1 %49 = load %struct.Node*, %struct.Node** %48, align 8 store %struct.Node* %49, %struct.Node** %7, align 8 %50 = load i32, i32* %9, align 4 %51 = add nsw i32 %50, 1 store i32 %51, i32* %9, align 4 %52 = load i32, i32* %9, align 4 %53 = icmp sgt i32 %52, 1000 br i1 %53, label %54, label %58 54: ; preds = %45 call void @setErrorMessage(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0)) %55 = load %struct.Node*, %struct.Node** %6, align 8 %56 = bitcast %struct.Node* %55 to i8* call void @free(i8* %56) #7 %57 = load %struct.Node*, %struct.Node** %4, align 8 store %struct.Node* %57, %struct.Node** %3, align 8 br label %92 58: ; preds = %45 br label %34 59: ; preds = %43 %60 = load i32, i32* %9, align 4 %61 = load i32, i32* @insertNode.maxDepth, align 4 %62 = icmp sgt i32 %60, %61 br i1 %62, label %63, label %65 63: ; preds = %59 %64 = load i32, i32* %9, align 4 store i32 %64, i32* @insertNode.maxDepth, align 4 br label %65 65: ; preds = %63, %59 %66 = load i32, i32* %9, align 4 %67 = load %struct.Node*, %struct.Node** %6, align 8 %68 = getelementptr inbounds %struct.Node, %struct.Node* %67, i32 0, i32 4 store i32 %66, i32* %68, align 4 %69 = load %struct.Node*, %struct.Node** %7, align 8 %70 = load %struct.Node*, %struct.Node** %6, align 8 %71 = getelementptr inbounds %struct.Node, %struct.Node* %70, i32 0, i32 1 store %struct.Node* %69, %struct.Node** %71, align 8 %72 = load %struct.Node*, %struct.Node** %8, align 8 %73 = icmp ne %struct.Node* %72, null br i1 %73, label %74, label %81 74: ; preds = %65 %75 = load %struct.Node*, %struct.Node** %6, align 8 %76 = load %struct.Node*, %struct.Node** %8, align 8 %77 = getelementptr inbounds %struct.Node, %struct.Node* %76, i32 0, i32 1 store %struct.Node* %75, %struct.Node** %77, align 8 %78 = load %struct.Node*, %struct.Node** %8, align 8 %79 = load %struct.Node*, %struct.Node** %6, align 8 %80 = getelementptr inbounds %struct.Node, %struct.Node* %79, i32 0, i32 2 store %struct.Node* %78, %struct.Node** %80, align 8 br label %83 81: ; preds = %65 %82 = load %struct.Node*, %struct.Node** %6, align 8 store %struct.Node* %82, %struct.Node** %3, align 8 br label %92 83: ; preds = %74 %84 = load %struct.Node*, %struct.Node** %7, align 8 %85 = icmp ne %struct.Node* %84, null br i1 %85, label %86, label %90 86: ; preds = %83 %87 = load %struct.Node*, %struct.Node** %6, align 8 %88 = load %struct.Node*, %struct.Node** %7, align 8 %89 = getelementptr inbounds %struct.Node, %struct.Node* %88, i32 0, i32 2 store %struct.Node* %87, %struct.Node** %89, align 8 br label %90 90: ; preds = %86, %83 %91 = load %struct.Node*, %struct.Node** %4, align 8 store %struct.Node* %91, %struct.Node** %3, align 8 br label %92 92: ; preds = %90, %81, %54, %28, %14 %93 = load %struct.Node*, %struct.Node** %3, align 8 ret %struct.Node* %93 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @performSimpleCalculations() #0 { %1 = alloca i32, align 4 store i32 100, i32* %1, align 4 %2 = load i32, i32* %1, align 4 %3 = icmp sgt i32 %2, 50 br i1 %3, label %4, label %9 4: ; preds = %0 %5 = load i32, i32* %1, align 4 %6 = mul nsw i32 %5, 2 %7 = load i32, i32* @calculationResult, align 4 %8 = add nsw i32 %7, %6 store i32 %8, i32* @calculationResult, align 4 br label %14 9: ; preds = %0 %10 = load i32, i32* %1, align 4 %11 = sdiv i32 %10, 2 %12 = load i32, i32* @calculationResult, align 4 %13 = add nsw i32 %12, %11 store i32 %13, i32* @calculationResult, align 4 br label %14 14: ; preds = %9, %4 %15 = load i32, i32* %1, align 4 %16 = srem i32 %15, 3 %17 = icmp eq i32 %16, 0 br i1 %17, label %18, label %21 18: ; preds = %14 %19 = load i32, i32* @calculationResult, align 4 %20 = mul nsw i32 %19, 3 store i32 %20, i32* @calculationResult, align 4 br label %24 21: ; preds = %14 %22 = load i32, i32* @calculationResult, align 4 %23 = add nsw i32 %22, 3 store i32 %23, i32* @calculationResult, align 4 br label %24 24: ; preds = %21, %18 %25 = load i32, i32* @calculationResult, align 4 %26 = icmp sge i32 %25, 150 br i1 %26, label %27, label %33 27: ; preds = %24 %28 = load i32, i32* @calculationResult, align 4 %29 = icmp sle i32 %28, 300 br i1 %29, label %30, label %33 30: ; preds = %27 %31 = load i32, i32* @calculationResult, align 4 %32 = sub nsw i32 %31, 50 store i32 %32, i32* @calculationResult, align 4 br label %36 33: ; preds = %27, %24 %34 = load i32, i32* @calculationResult, align 4 %35 = add nsw i32 %34, 50 store i32 %35, i32* @calculationResult, align 4 br label %36 36: ; preds = %33, %30 %37 = load i32, i32* @calculationResult, align 4 %38 = srem i32 %37, 2 %39 = icmp eq i32 %38, 0 br i1 %39, label %40, label %43 40: ; preds = %36 %41 = load i32, i32* @calculationResult, align 4 %42 = sdiv i32 %41, 2 store i32 %42, i32* @calculationResult, align 4 br label %46 43: ; preds = %36 %44 = load i32, i32* @calculationResult, align 4 %45 = mul nsw i32 %44, 2 store i32 %45, i32* @calculationResult, align 4 br label %46 46: ; preds = %43, %40 %47 = load i32, i32* @calculationResult, align 4 %48 = srem i32 %47, 10 %49 = icmp slt i32 %48, 5 br i1 %49, label %50, label %53 50: ; preds = %46 %51 = load i32, i32* @calculationResult, align 4 %52 = add nsw i32 %51, 5 store i32 %52, i32* @calculationResult, align 4 br label %56 53: ; preds = %46 %54 = load i32, i32* @calculationResult, align 4 %55 = sub nsw i32 %54, 5 store i32 %55, i32* @calculationResult, align 4 br label %56 56: ; preds = %53, %50 %57 = load i32, i32* @calculationResult, align 4 %58 = icmp sgt i32 %57, 1000 br i1 %58, label %59, label %60 59: ; preds = %56 store i32 1000, i32* @calculationResult, align 4 br label %63 60: ; preds = %56 %61 = load i32, i32* @calculationResult, align 4 %62 = add nsw i32 %61, 10 store i32 %62, i32* @calculationResult, align 4 br label %63 63: ; preds = %60, %59 %64 = load i32, i32* @calculationResult, align 4 %65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.27, i64 0, i64 0), i32 %64) ret void } declare dso_local i32 @printf(i8*, ...) #2 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @projectA_main() #0 { %1 = alloca i32, align 4 %2 = alloca %struct.DynamicArray*, align 8 %3 = alloca i32, align 4 %4 = alloca %struct.Matrix*, align 8 %5 = alloca %struct.Matrix*, align 8 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca %struct.Matrix*, align 8 %9 = alloca i32, align 4 %10 = alloca %struct.Node*, align 8 %11 = alloca i32, align 4 %12 = alloca i32, align 4 %13 = alloca %struct.Node*, align 8 %14 = alloca %struct.Node*, align 8 %15 = alloca i32, align 4 %16 = alloca %struct.Node*, align 8 %17 = alloca i32, align 4 %18 = alloca i32, align 4 %19 = alloca %struct.Node*, align 8 %20 = call i64 @time(i64* null) #7 %21 = trunc i64 %20 to i32 call void @srand(i32 %21) #7 %22 = call %struct.DynamicArray* @createDynamicArray(i32 10) store %struct.DynamicArray* %22, %struct.DynamicArray** %2, align 8 %23 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %24 = icmp ne %struct.DynamicArray* %23, null br i1 %24, label %28, label %25 25: ; preds = %0 %26 = call i8* @getErrorMessage() %27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %26) store i32 -1, i32* %1, align 4 br label %322 28: ; preds = %0 store i32 0, i32* %3, align 4 br label %29 29: ; preds = %42, %28 %30 = load i32, i32* %3, align 4 %31 = icmp slt i32 %30, 15 br i1 %31, label %32, label %45 32: ; preds = %29 %33 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %34 = call i32 @rand() #7 %35 = srem i32 %34, 100 call void @pushBack(%struct.DynamicArray* %33, i32 %35) %36 = load i8*, i8** @globalErrorMessage, align 8 %37 = icmp ne i8* %36, null br i1 %37, label %38, label %41 38: ; preds = %32 %39 = call i8* @getErrorMessage() %40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0), i8* %39) br label %45 41: ; preds = %32 br label %42 42: ; preds = %41 %43 = load i32, i32* %3, align 4 %44 = add nsw i32 %43, 1 store i32 %44, i32* %3, align 4 br label %29 45: ; preds = %38, %29 %46 = call %struct.Matrix* @createMatrix(i32 3, i32 3) store %struct.Matrix* %46, %struct.Matrix** %4, align 8 %47 = call %struct.Matrix* @createMatrix(i32 3, i32 3) store %struct.Matrix* %47, %struct.Matrix** %5, align 8 %48 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %49 = icmp ne %struct.Matrix* %48, null br i1 %49, label %50, label %53 50: ; preds = %45 %51 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %52 = icmp ne %struct.Matrix* %51, null br i1 %52, label %74, label %53 53: ; preds = %50, %45 %54 = call i8* @getErrorMessage() %55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %54) %56 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %57 = icmp ne %struct.Matrix* %56, null br i1 %57, label %58, label %61 58: ; preds = %53 %59 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %60 = bitcast %struct.Matrix* %59 to i8* call void @free(i8* %60) #7 br label %61 61: ; preds = %58, %53 %62 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %63 = icmp ne %struct.Matrix* %62, null br i1 %63, label %64, label %67 64: ; preds = %61 %65 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %66 = bitcast %struct.Matrix* %65 to i8* call void @free(i8* %66) #7 br label %67 67: ; preds = %64, %61 %68 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %69 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %68, i32 0, i32 0 %70 = load i32*, i32** %69, align 8 %71 = bitcast i32* %70 to i8* call void @free(i8* %71) #7 %72 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %73 = bitcast %struct.DynamicArray* %72 to i8* call void @free(i8* %73) #7 store i32 -1, i32* %1, align 4 br label %322 74: ; preds = %50 store i32 0, i32* %6, align 4 br label %75 75: ; preds = %111, %74 %76 = load i32, i32* %6, align 4 %77 = icmp slt i32 %76, 3 br i1 %77, label %78, label %114 78: ; preds = %75 store i32 0, i32* %7, align 4 br label %79 79: ; preds = %107, %78 %80 = load i32, i32* %7, align 4 %81 = icmp slt i32 %80, 3 br i1 %81, label %82, label %110 82: ; preds = %79 %83 = call i32 @rand() #7 %84 = srem i32 %83, 10 %85 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %86 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %85, i32 0, i32 0 %87 = load i32**, i32*** %86, align 8 %88 = load i32, i32* %6, align 4 %89 = sext i32 %88 to i64 %90 = getelementptr inbounds i32*, i32** %87, i64 %89 %91 = load i32*, i32** %90, align 8 %92 = load i32, i32* %7, align 4 %93 = sext i32 %92 to i64 %94 = getelementptr inbounds i32, i32* %91, i64 %93 store i32 %84, i32* %94, align 4 %95 = call i32 @rand() #7 %96 = srem i32 %95, 10 %97 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %98 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %97, i32 0, i32 0 %99 = load i32**, i32*** %98, align 8 %100 = load i32, i32* %6, align 4 %101 = sext i32 %100 to i64 %102 = getelementptr inbounds i32*, i32** %99, i64 %101 %103 = load i32*, i32** %102, align 8 %104 = load i32, i32* %7, align 4 %105 = sext i32 %104 to i64 %106 = getelementptr inbounds i32, i32* %103, i64 %105 store i32 %96, i32* %106, align 4 br label %107 107: ; preds = %82 %108 = load i32, i32* %7, align 4 %109 = add nsw i32 %108, 1 store i32 %109, i32* %7, align 4 br label %79 110: ; preds = %79 br label %111 111: ; preds = %110 %112 = load i32, i32* %6, align 4 %113 = add nsw i32 %112, 1 store i32 %113, i32* %6, align 4 br label %75 114: ; preds = %75 %115 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %116 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %117 = call %struct.Matrix* @multiplyMatrices(%struct.Matrix* %115, %struct.Matrix* %116) store %struct.Matrix* %117, %struct.Matrix** %8, align 8 %118 = load %struct.Matrix*, %struct.Matrix** %8, align 8 %119 = icmp ne %struct.Matrix* %118, null br i1 %119, label %168, label %120 120: ; preds = %114 %121 = call i8* @getErrorMessage() %122 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %121) store i32 0, i32* %9, align 4 br label %123 123: ; preds = %146, %120 %124 = load i32, i32* %9, align 4 %125 = load %struct.Matrix*, %struct.Matrix** %4, 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 %149 129: ; preds = %123 %130 = load %struct.Matrix*, %struct.Matrix** %4, 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* %9, 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 %138 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %139 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %138, i32 0, i32 0 %140 = load i32**, i32*** %139, align 8 %141 = load i32, i32* %9, align 4 %142 = sext i32 %141 to i64 %143 = getelementptr inbounds i32*, i32** %140, i64 %142 %144 = load i32*, i32** %143, align 8 %145 = bitcast i32* %144 to i8* call void @free(i8* %145) #7 br label %146 146: ; preds = %129 %147 = load i32, i32* %9, align 4 %148 = add nsw i32 %147, 1 store i32 %148, i32* %9, align 4 br label %123 149: ; preds = %123 %150 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %151 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %150, i32 0, i32 0 %152 = load i32**, i32*** %151, align 8 %153 = bitcast i32** %152 to i8* call void @free(i8* %153) #7 %154 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %155 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %154, i32 0, i32 0 %156 = load i32**, i32*** %155, align 8 %157 = bitcast i32** %156 to i8* call void @free(i8* %157) #7 %158 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %159 = bitcast %struct.Matrix* %158 to i8* call void @free(i8* %159) #7 %160 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %161 = bitcast %struct.Matrix* %160 to i8* call void @free(i8* %161) #7 %162 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %163 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %162, i32 0, i32 0 %164 = load i32*, i32** %163, align 8 %165 = bitcast i32* %164 to i8* call void @free(i8* %165) #7 %166 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %167 = bitcast %struct.DynamicArray* %166 to i8* call void @free(i8* %167) #7 store i32 -1, i32* %1, align 4 br label %322 168: ; preds = %114 store %struct.Node* null, %struct.Node** %10, align 8 store i32 0, i32* %11, align 4 br label %169 169: ; preds = %183, %168 %170 = load i32, i32* %11, align 4 %171 = icmp slt i32 %170, 5 br i1 %171, label %172, label %186 172: ; preds = %169 %173 = load %struct.Node*, %struct.Node** %10, align 8 %174 = call i32 @rand() #7 %175 = srem i32 %174, 50 %176 = call %struct.Node* @insertNode(%struct.Node* %173, i32 %175) store %struct.Node* %176, %struct.Node** %10, align 8 %177 = load i8*, i8** @globalErrorMessage, align 8 %178 = icmp ne i8* %177, null br i1 %178, label %179, label %182 179: ; preds = %172 %180 = call i8* @getErrorMessage() %181 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.30, i64 0, i64 0), i8* %180) br label %186 182: ; preds = %172 br label %183 183: ; preds = %182 %184 = load i32, i32* %11, align 4 %185 = add nsw i32 %184, 1 store i32 %185, i32* %11, align 4 br label %169 186: ; preds = %179, %169 %187 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %188 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %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.DynamicArray*, %struct.DynamicArray** %2, align 8 %192 = bitcast %struct.DynamicArray* %191 to i8* call void @free(i8* %192) #7 store i32 0, i32* %12, align 4 br label %193 193: ; preds = %224, %186 %194 = load i32, i32* %12, align 4 %195 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %196 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %195, i32 0, i32 1 %197 = load i32, i32* %196, align 8 %198 = icmp slt i32 %194, %197 br i1 %198, label %199, label %227 199: ; preds = %193 %200 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %201 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %200, i32 0, i32 0 %202 = load i32**, i32*** %201, align 8 %203 = load i32, i32* %12, align 4 %204 = sext i32 %203 to i64 %205 = getelementptr inbounds i32*, i32** %202, i64 %204 %206 = load i32*, i32** %205, align 8 %207 = bitcast i32* %206 to i8* call void @free(i8* %207) #7 %208 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %209 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %208, i32 0, i32 0 %210 = load i32**, i32*** %209, align 8 %211 = load i32, i32* %12, align 4 %212 = sext i32 %211 to i64 %213 = getelementptr inbounds i32*, i32** %210, i64 %212 %214 = load i32*, i32** %213, align 8 %215 = bitcast i32* %214 to i8* call void @free(i8* %215) #7 %216 = load %struct.Matrix*, %struct.Matrix** %8, align 8 %217 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %216, i32 0, i32 0 %218 = load i32**, i32*** %217, align 8 %219 = load i32, i32* %12, align 4 %220 = sext i32 %219 to i64 %221 = getelementptr inbounds i32*, i32** %218, i64 %220 %222 = load i32*, i32** %221, align 8 %223 = bitcast i32* %222 to i8* call void @free(i8* %223) #7 br label %224 224: ; preds = %199 %225 = load i32, i32* %12, align 4 %226 = add nsw i32 %225, 1 store i32 %226, i32* %12, align 4 br label %193 227: ; preds = %193 %228 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %229 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %228, i32 0, i32 0 %230 = load i32**, i32*** %229, align 8 %231 = bitcast i32** %230 to i8* call void @free(i8* %231) #7 %232 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %233 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %232, i32 0, i32 0 %234 = load i32**, i32*** %233, align 8 %235 = bitcast i32** %234 to i8* call void @free(i8* %235) #7 %236 = load %struct.Matrix*, %struct.Matrix** %8, align 8 %237 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %236, i32 0, i32 0 %238 = load i32**, i32*** %237, align 8 %239 = bitcast i32** %238 to i8* call void @free(i8* %239) #7 %240 = load %struct.Matrix*, %struct.Matrix** %4, align 8 %241 = bitcast %struct.Matrix* %240 to i8* call void @free(i8* %241) #7 %242 = load %struct.Matrix*, %struct.Matrix** %5, align 8 %243 = bitcast %struct.Matrix* %242 to i8* call void @free(i8* %243) #7 %244 = load %struct.Matrix*, %struct.Matrix** %8, align 8 %245 = bitcast %struct.Matrix* %244 to i8* call void @free(i8* %245) #7 %246 = load %struct.Node*, %struct.Node** %10, align 8 %247 = icmp ne %struct.Node* %246, null br i1 %247, label %248, label %316 248: ; preds = %227 %249 = load %struct.Node*, %struct.Node** %10, align 8 store %struct.Node* %249, %struct.Node** %13, align 8 %250 = load %struct.Node*, %struct.Node** %10, align 8 store %struct.Node* %250, %struct.Node** %14, align 8 store i32 0, i32* %15, align 4 br label %251 251: ; preds = %274, %248 %252 = load %struct.Node*, %struct.Node** %14, align 8 %253 = icmp ne %struct.Node* %252, null br i1 %253, label %254, label %259 254: ; preds = %251 %255 = load %struct.Node*, %struct.Node** %14, align 8 %256 = getelementptr inbounds %struct.Node, %struct.Node* %255, i32 0, i32 1 %257 = load %struct.Node*, %struct.Node** %256, align 8 %258 = icmp ne %struct.Node* %257, null br label %259 259: ; preds = %254, %251 %260 = phi i1 [ false, %251 ], [ %258, %254 ] br i1 %260, label %261, label %275 261: ; preds = %259 %262 = load %struct.Node*, %struct.Node** %13, align 8 %263 = getelementptr inbounds %struct.Node, %struct.Node* %262, i32 0, i32 1 %264 = load %struct.Node*, %struct.Node** %263, align 8 store %struct.Node* %264, %struct.Node** %13, align 8 %265 = load %struct.Node*, %struct.Node** %14, align 8 %266 = getelementptr inbounds %struct.Node, %struct.Node* %265, i32 0, i32 1 %267 = load %struct.Node*, %struct.Node** %266, align 8 %268 = getelementptr inbounds %struct.Node, %struct.Node* %267, i32 0, i32 1 %269 = load %struct.Node*, %struct.Node** %268, align 8 store %struct.Node* %269, %struct.Node** %14, align 8 %270 = load %struct.Node*, %struct.Node** %13, align 8 %271 = load %struct.Node*, %struct.Node** %14, align 8 %272 = icmp eq %struct.Node* %270, %271 br i1 %272, label %273, label %274 273: ; preds = %261 store i32 1, i32* %15, align 4 br label %275 274: ; preds = %261 br label %251 275: ; preds = %273, %259 %276 = load i32, i32* %15, align 4 %277 = icmp ne i32 %276, 0 br i1 %277, label %278, label %304 278: ; preds = %275 call void @setErrorMessage(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0)) %279 = load %struct.Node*, %struct.Node** %10, align 8 store %struct.Node* %279, %struct.Node** %16, align 8 store i32 1000, i32* %17, align 4 store i32 0, i32* %18, align 4 br label %280 280: ; preds = %295, %278 %281 = load %struct.Node*, %struct.Node** %16, align 8 %282 = icmp ne %struct.Node* %281, null br i1 %282, label %283, label %287 283: ; preds = %280 %284 = load i32, i32* %18, align 4 %285 = load i32, i32* %17, align 4 %286 = icmp slt i32 %284, %285 br label %287 287: ; preds = %283, %280 %288 = phi i1 [ false, %280 ], [ %286, %283 ] br i1 %288, label %289, label %303 289: ; preds = %287 %290 = load %struct.Node*, %struct.Node** %16, align 8 %291 = getelementptr inbounds %struct.Node, %struct.Node* %290, i32 0, i32 3 %292 = load i32, i32* %291, align 8 %293 = icmp ne i32 %292, 0 br i1 %293, label %294, label %295 294: ; preds = %289 br label %303 295: ; preds = %289 %296 = load %struct.Node*, %struct.Node** %16, align 8 %297 = getelementptr inbounds %struct.Node, %struct.Node* %296, i32 0, i32 3 store i32 1, i32* %297, align 8 %298 = load %struct.Node*, %struct.Node** %16, align 8 %299 = getelementptr inbounds %struct.Node, %struct.Node* %298, i32 0, i32 1 %300 = load %struct.Node*, %struct.Node** %299, align 8 store %struct.Node* %300, %struct.Node** %16, align 8 %301 = load i32, i32* %18, align 4 %302 = add nsw i32 %301, 1 store i32 %302, i32* %18, align 4 br label %280 303: ; preds = %294, %287 br label %304 304: ; preds = %303, %275 br label %305 305: ; preds = %308, %304 %306 = load %struct.Node*, %struct.Node** %10, align 8 %307 = icmp ne %struct.Node* %306, null br i1 %307, label %308, label %315 308: ; preds = %305 %309 = load %struct.Node*, %struct.Node** %10, align 8 store %struct.Node* %309, %struct.Node** %19, align 8 %310 = load %struct.Node*, %struct.Node** %10, align 8 %311 = getelementptr inbounds %struct.Node, %struct.Node* %310, i32 0, i32 1 %312 = load %struct.Node*, %struct.Node** %311, align 8 store %struct.Node* %312, %struct.Node** %10, align 8 %313 = load %struct.Node*, %struct.Node** %19, align 8 %314 = bitcast %struct.Node* %313 to i8* call void @free(i8* %314) #7 br label %305 315: ; preds = %305 br label %316 316: ; preds = %315, %227 %317 = load i8*, i8** @globalErrorMessage, align 8 %318 = icmp ne i8* %317, null br i1 %318, label %319, label %321 319: ; preds = %316 %320 = load i8*, i8** @globalErrorMessage, align 8 call void @free(i8* %320) #7 br label %321 321: ; preds = %319, %316 call void @performSimpleCalculations() store i32 0, i32* %1, align 4 br label %322 322: ; preds = %321, %149, %67, %25 %323 = load i32, i32* %1, align 4 ret i32 %323 } ; 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 { %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 %19 17: ; preds = %13, %3 %18 = load i32*, i32** %5, align 8 store i32 1, i32* %18, align 4 call void @setErrorMessage(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 %101 19: ; preds = %13 %20 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 0 %21 = load i32, i32* %20, align 8 %22 = call i32 @abs(i32 %21) #8 %23 = icmp sgt i32 %22, 1000 br i1 %23, label %39, label %24 24: ; preds = %19 %25 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 1 %26 = load i32, i32* %25, align 4 %27 = call i32 @abs(i32 %26) #8 %28 = icmp sgt i32 %27, 1000 br i1 %28, label %39, label %29 29: ; preds = %24 %30 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 0 %31 = load i32, i32* %30, align 8 %32 = call i32 @abs(i32 %31) #8 %33 = icmp sgt i32 %32, 1000 br i1 %33, label %39, label %34 34: ; preds = %29 %35 = getelementptr inbounds %struct.Point, %struct.Point* %1, 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 %41 39: ; preds = %34, %29, %24, %19 %40 = load i32*, i32** %5, align 8 store i32 3, i32* %40, align 4 call void @setErrorMessage(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 %101 41: ; preds = %34 %42 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 0 %43 = load i32, i32* %42, align 8 %44 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 0 %45 = load i32, i32* %44, align 8 %46 = sub nsw i32 %43, %45 %47 = sitofp i32 %46 to double %48 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3 %49 = load double, double* %48, align 8 %50 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 3 %51 = load double, double* %50, align 8 %52 = fdiv double %49, %51 %53 = call double @sqrt(double %52) #7 %54 = fmul double %47, %53 store double %54, double* %6, align 8 %55 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 1 %56 = load i32, i32* %55, align 4 %57 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 1 %58 = load i32, i32* %57, align 4 %59 = sub nsw i32 %56, %58 %60 = sitofp i32 %59 to double %61 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3 %62 = load double, double* %61, align 8 %63 = getelementptr inbounds %struct.Point, %struct.Point* %0, i32 0, i32 3 %64 = load double, double* %63, align 8 %65 = fdiv double %62, %64 %66 = call double @sqrt(double %65) #7 %67 = fmul double %60, %66 store double %67, double* %7, align 8 %68 = load double, double* %6, align 8 %69 = call double @llvm.fabs.f64(double %68) %70 = fcmp ogt double %69, 1.000000e+03 br i1 %70, label %75, label %71 71: ; preds = %41 %72 = load double, double* %7, align 8 %73 = call double @llvm.fabs.f64(double %72) %74 = fcmp ogt double %73, 1.000000e+03 br i1 %74, label %75, label %77 75: ; preds = %71, %41 %76 = load i32*, i32** %5, align 8 store i32 5, i32* %76, align 4 call void @setErrorMessage(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 %101 77: ; preds = %71 %78 = load double, double* %6, align 8 %79 = load double, double* %6, align 8 %80 = fmul double %78, %79 %81 = load double, double* %7, align 8 %82 = load double, double* %7, align 8 %83 = fmul double %81, %82 %84 = fadd double %80, %83 %85 = call double @sqrt(double %84) #7 store double %85, double* %8, align 8 %86 = load double, double* %8, align 8 %87 = fcmp uno double %86, %86 br i1 %87, label %97, label %88 88: ; preds = %77 %89 = load double, double* %8, align 8 %90 = call double @llvm.fabs.f64(double %89) #9 %91 = fcmp oeq double %90, 0x7FF0000000000000 %92 = bitcast double %89 to i64 %93 = icmp slt i64 %92, 0 %94 = select i1 %93, i32 -1, i32 1 %95 = select i1 %91, i32 %94, i32 0 %96 = icmp ne i32 %95, 0 br i1 %96, label %97, label %99 97: ; preds = %88, %77 %98 = load i32*, i32** %5, align 8 store i32 8, i32* %98, align 4 call void @setErrorMessage(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 %101 99: ; preds = %88 %100 = load double, double* %8, align 8 store double %100, double* %4, align 8 br label %101 101: ; preds = %99, %97, %75, %39, %17 %102 = load double, double* %4, align 8 ret double %102 } ; 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 { %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 %12, label %10 10: ; preds = %2 %11 = load i32*, i32** %4, align 8 store i32 1, i32* %11, align 4 call void @setErrorMessage(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 %85 12: ; preds = %2 %13 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1 %14 = load double, double* %13, align 8 %15 = fcmp ole double %14, 0.000000e+00 br i1 %15, label %16, label %18 16: ; preds = %12 %17 = load i32*, i32** %4, align 8 store i32 1, i32* %17, align 4 call void @setErrorMessage(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 %85 18: ; preds = %12 %19 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1 %20 = load double, double* %19, align 8 %21 = fcmp ogt double %20, 1.000000e+03 br i1 %21, label %22, label %24 22: ; preds = %18 %23 = load i32*, i32** %4, align 8 store i32 3, i32* %23, align 4 call void @setErrorMessage(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 %85 24: ; preds = %18 %25 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0 %26 = getelementptr inbounds %struct.Point, %struct.Point* %25, i32 0, i32 0 %27 = load i32, i32* %26, align 8 %28 = call i32 @abs(i32 %27) #8 %29 = icmp sgt i32 %28, 1000 br i1 %29, label %36, label %30 30: ; preds = %24 %31 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0 %32 = getelementptr inbounds %struct.Point, %struct.Point* %31, i32 0, i32 1 %33 = load i32, i32* %32, align 4 %34 = call i32 @abs(i32 %33) #8 %35 = icmp sgt i32 %34, 1000 br i1 %35, label %36, label %38 36: ; preds = %30, %24 %37 = load i32*, i32** %4, align 8 store i32 3, i32* %37, align 4 call void @setErrorMessage(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 %85 38: ; preds = %30 %39 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1 %40 = load double, double* %39, align 8 %41 = fmul double 3.141590e+00, %40 %42 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1 %43 = load double, double* %42, align 8 %44 = fmul double %41, %43 store double %44, double* %5, align 8 %45 = load double, double* %5, align 8 %46 = fcmp uno double %45, %45 br i1 %46, label %56, label %47 47: ; preds = %38 %48 = load double, double* %5, align 8 %49 = call double @llvm.fabs.f64(double %48) #9 %50 = fcmp oeq double %49, 0x7FF0000000000000 %51 = bitcast double %48 to i64 %52 = icmp slt i64 %51, 0 %53 = select i1 %52, i32 -1, i32 1 %54 = select i1 %50, i32 %53, i32 0 %55 = icmp ne i32 %54, 0 br i1 %55, label %56, label %58 56: ; preds = %47, %38 %57 = load i32*, i32** %4, align 8 store i32 5, i32* %57, align 4 call void @setErrorMessage(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 %85 58: ; preds = %47 %59 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 3 %60 = getelementptr inbounds [256 x i8], [256 x i8]* %59, i64 0, i64 0 %61 = call i32 @strcmp(i8* %60, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.41, i64 0, i64 0)) #10 %62 = icmp eq i32 %61, 0 br i1 %62, label %63, label %65 63: ; preds = %58 %64 = load double, double* %5, align 8 store double %64, double* %3, align 8 br label %85 65: ; preds = %58 %66 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 3 %67 = getelementptr inbounds [256 x i8], [256 x i8]* %66, i64 0, i64 0 %68 = call i32 @strcmp(i8* %67, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.42, i64 0, i64 0)) #10 %69 = icmp eq i32 %68, 0 br i1 %69, label %70, label %83 70: ; preds = %65 %71 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0 %72 = getelementptr inbounds %struct.Point, %struct.Point* %71, i32 0, i32 3 %73 = load double, double* %72, align 8 %74 = fcmp ole double %73, 0.000000e+00 br i1 %74, label %75, label %77 75: ; preds = %70 %76 = load i32*, i32** %4, align 8 store i32 1, i32* %76, align 4 call void @setErrorMessage(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 %85 77: ; preds = %70 %78 = load double, double* %5, align 8 %79 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0 %80 = getelementptr inbounds %struct.Point, %struct.Point* %79, i32 0, i32 3 %81 = load double, double* %80, align 8 %82 = fmul double %78, %81 store double %82, double* %3, align 8 br label %85 83: ; preds = %65 %84 = load i32*, i32** %4, align 8 store i32 1, i32* %84, align 4 call void @setErrorMessage(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 %85 85: ; preds = %83, %77, %75, %63, %56, %36, %22, %16, %10 %86 = load double, double* %3, align 8 ret double %86 } ; 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 { %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 %8, label %7 7: ; preds = %1 call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0)) store i32 7, i32* %2, align 4 br label %72 8: ; preds = %1 %9 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %10 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %9, i32 0, i32 0 %11 = load i32**, i32*** %10, align 8 %12 = icmp ne i32** %11, null br i1 %12, label %14, label %13 13: ; preds = %8 call void @setErrorMessage(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0)) store i32 7, i32* %2, align 4 br label %72 14: ; preds = %8 %15 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %16 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %15, i32 0, i32 1 %17 = load i32, i32* %16, align 8 %18 = icmp slt i32 %17, 1 br i1 %18, label %24, label %19 19: ; preds = %14 %20 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %21 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %20, i32 0, i32 2 %22 = load i32, i32* %21, align 4 %23 = icmp slt i32 %22, 1 br i1 %23, label %24, label %25 24: ; preds = %19, %14 call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0)) store i32 1, i32* %2, align 4 br label %72 25: ; preds = %19 %26 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %27 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %26, i32 0, i32 1 %28 = load i32, i32* %27, align 8 %29 = icmp sgt i32 %28, 100 br i1 %29, label %35, label %30 30: ; preds = %25 %31 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %32 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %31, i32 0, i32 2 %33 = load i32, i32* %32, align 4 %34 = icmp sgt i32 %33, 100 br i1 %34, label %35, label %36 35: ; preds = %30, %25 call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0)) store i32 3, i32* %2, align 4 br label %72 36: ; preds = %30 store i32 0, i32* %4, align 4 br label %37 37: ; preds = %54, %36 %38 = load i32, i32* %4, align 4 %39 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %40 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %39, i32 0, i32 1 %41 = load i32, i32* %40, align 8 %42 = icmp slt i32 %38, %41 br i1 %42, label %43, label %57 43: ; preds = %37 %44 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %45 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %44, i32 0, i32 0 %46 = load i32**, i32*** %45, align 8 %47 = load i32, i32* %4, align 4 %48 = sext i32 %47 to i64 %49 = getelementptr inbounds i32*, i32** %46, i64 %48 %50 = load i32*, i32** %49, align 8 %51 = icmp ne i32* %50, null br i1 %51, label %53, label %52 52: ; preds = %43 call void @setErrorMessage(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.47, i64 0, i64 0)) store i32 7, i32* %2, align 4 br label %72 53: ; preds = %43 br label %54 54: ; preds = %53 %55 = load i32, i32* %4, align 4 %56 = add nsw i32 %55, 1 store i32 %56, i32* %4, align 4 br label %37 57: ; preds = %37 %58 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %59 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %58, i32 0, i32 1 %60 = load i32, i32* %59, align 8 %61 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %62 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %61, i32 0, i32 2 %63 = load i32, i32* %62, align 4 %64 = icmp eq i32 %60, %63 %65 = zext i1 %64 to i32 %66 = load %struct.Matrix*, %struct.Matrix** %3, align 8 %67 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %66, i32 0, i32 3 %68 = load i32, i32* %67, align 8 %69 = icmp ne i32 %65, %68 br i1 %69, label %70, label %71 70: ; preds = %57 call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.48, i64 0, i64 0)) store i32 1, i32* %2, align 4 br label %72 71: ; preds = %57 store i32 0, i32* %2, align 4 br label %72 72: ; preds = %71, %70, %52, %35, %24, %13, %7 %73 = load i32, i32* %2, align 4 ret i32 %73 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @removeDuplicates(%struct.DynamicArray* %0) #0 { %2 = alloca %struct.DynamicArray*, align 8 %3 = alloca i32, align 4 %4 = alloca i32, align 4 %5 = alloca i32, align 4 store %struct.DynamicArray* %0, %struct.DynamicArray** %2, align 8 %6 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %7 = icmp ne %struct.DynamicArray* %6, null br i1 %7, label %8, label %13 8: ; preds = %1 %9 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %10 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %9, i32 0, i32 0 %11 = load i32*, i32** %10, align 8 %12 = icmp ne i32* %11, null br i1 %12, label %14, label %13 13: ; preds = %8, %1 call void @setErrorMessage(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0)) br label %81 14: ; preds = %8 %15 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %16 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %15, i32 0, i32 1 %17 = load i32, i32* %16, align 8 %18 = icmp sle i32 %17, 1 br i1 %18, label %19, label %20 19: ; preds = %14 br label %81 20: ; preds = %14 store i32 0, i32* %3, align 4 %21 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %22 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %21, i32 0, i32 0 %23 = load i32*, i32** %22, align 8 %24 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %25 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %24, i32 0, i32 1 %26 = load i32, i32* %25, align 8 %27 = sub nsw i32 %26, 1 call void @quickSort(i32* %23, i32 0, i32 %27, i32* %3) %28 = load i32, i32* %3, align 4 %29 = icmp ne i32 %28, 0 br i1 %29, label %30, label %31 30: ; preds = %20 br label %81 31: ; preds = %20 store i32 1, i32* %4, align 4 store i32 1, i32* %5, align 4 br label %32 32: ; preds = %72, %31 %33 = load i32, i32* %5, align 4 %34 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %35 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %34, i32 0, i32 1 %36 = load i32, i32* %35, align 8 %37 = icmp slt i32 %33, %36 br i1 %37, label %38, label %75 38: ; preds = %32 %39 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %40 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %39, i32 0, i32 0 %41 = load i32*, i32** %40, align 8 %42 = load i32, i32* %5, align 4 %43 = sext i32 %42 to i64 %44 = getelementptr inbounds i32, i32* %41, i64 %43 %45 = load i32, i32* %44, align 4 %46 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %47 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %46, i32 0, i32 0 %48 = load i32*, i32** %47, align 8 %49 = load i32, i32* %5, align 4 %50 = sub nsw i32 %49, 1 %51 = sext i32 %50 to i64 %52 = getelementptr inbounds i32, i32* %48, i64 %51 %53 = load i32, i32* %52, align 4 %54 = icmp ne i32 %45, %53 br i1 %54, label %55, label %71 55: ; preds = %38 %56 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %57 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %56, i32 0, i32 0 %58 = load i32*, i32** %57, align 8 %59 = load i32, i32* %5, align 4 %60 = sext i32 %59 to i64 %61 = getelementptr inbounds i32, i32* %58, i64 %60 %62 = load i32, i32* %61, align 4 %63 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %64 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %63, i32 0, i32 0 %65 = load i32*, i32** %64, align 8 %66 = load i32, i32* %4, align 4 %67 = sext i32 %66 to i64 %68 = getelementptr inbounds i32, i32* %65, i64 %67 store i32 %62, i32* %68, align 4 %69 = load i32, i32* %4, align 4 %70 = add nsw i32 %69, 1 store i32 %70, i32* %4, align 4 br label %71 71: ; preds = %55, %38 br label %72 72: ; preds = %71 %73 = load i32, i32* %5, align 4 %74 = add nsw i32 %73, 1 store i32 %74, i32* %5, align 4 br label %32 75: ; preds = %32 %76 = load i32, i32* %4, align 4 %77 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %78 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %77, i32 0, i32 1 store i32 %76, i32* %78, align 8 %79 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8 %80 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %79, i32 0, i32 3 store i32 1, i32* %80, align 8 br label %81 81: ; preds = %75, %30, %19, %13 ret void } ; Function Attrs: noinline nounwind optnone uwtable define dso_local %struct.Point* @findCentroid(%struct.Point* %0, i32 %1, i32* %2) #0 { %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 %21 19: ; preds = %16, %3 %20 = load i32*, i32** %7, align 8 store i32 1, i32* %20, align 4 call void @setErrorMessage(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 %165 21: ; preds = %16 %22 = load i32, i32* %6, align 4 %23 = icmp sgt i32 %22, 1000 br i1 %23, label %24, label %26 24: ; preds = %21 %25 = load i32*, i32** %7, align 8 store i32 3, i32* %25, align 4 call void @setErrorMessage(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 %165 26: ; preds = %21 %27 = call noalias i8* @malloc(i64 272) #7 %28 = bitcast i8* %27 to %struct.Point* store %struct.Point* %28, %struct.Point** %8, align 8 %29 = load %struct.Point*, %struct.Point** %8, align 8 %30 = icmp ne %struct.Point* %29, null br i1 %30, label %33, label %31 31: ; preds = %26 %32 = load i32*, i32** %7, align 8 store i32 2, i32* %32, align 4 call void @setErrorMessage(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 %165 33: ; preds = %26 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 %34 34: ; preds = %131, %33 %35 = load i32, i32* %12, align 4 %36 = load i32, i32* %6, align 4 %37 = icmp slt i32 %35, %36 br i1 %37, label %38, label %134 38: ; preds = %34 %39 = load %struct.Point*, %struct.Point** %5, align 8 %40 = load i32, i32* %12, align 4 %41 = sext i32 %40 to i64 %42 = getelementptr inbounds %struct.Point, %struct.Point* %39, i64 %41 %43 = getelementptr inbounds %struct.Point, %struct.Point* %42, i32 0, i32 3 %44 = load double, double* %43, align 8 %45 = fcmp ole double %44, 0.000000e+00 br i1 %45, label %46, label %50 46: ; preds = %38 %47 = load i32*, i32** %7, align 8 store i32 1, i32* %47, align 4 call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.53, i64 0, i64 0)) %48 = load %struct.Point*, %struct.Point** %8, align 8 %49 = bitcast %struct.Point* %48 to i8* call void @free(i8* %49) #7 store %struct.Point* null, %struct.Point** %4, align 8 br label %165 50: ; preds = %38 %51 = load %struct.Point*, %struct.Point** %5, align 8 %52 = load i32, i32* %12, align 4 %53 = sext i32 %52 to i64 %54 = getelementptr inbounds %struct.Point, %struct.Point* %51, i64 %53 %55 = getelementptr inbounds %struct.Point, %struct.Point* %54, i32 0, i32 3 %56 = load double, double* %55, align 8 %57 = load double, double* %9, align 8 %58 = fadd double %57, %56 store double %58, double* %9, align 8 %59 = load %struct.Point*, %struct.Point** %5, align 8 %60 = load i32, i32* %12, align 4 %61 = sext i32 %60 to i64 %62 = getelementptr inbounds %struct.Point, %struct.Point* %59, i64 %61 %63 = getelementptr inbounds %struct.Point, %struct.Point* %62, i32 0, i32 0 %64 = load i32, i32* %63, align 8 %65 = sitofp i32 %64 to double %66 = load %struct.Point*, %struct.Point** %5, align 8 %67 = load i32, i32* %12, align 4 %68 = sext i32 %67 to i64 %69 = getelementptr inbounds %struct.Point, %struct.Point* %66, i64 %68 %70 = getelementptr inbounds %struct.Point, %struct.Point* %69, i32 0, i32 3 %71 = load double, double* %70, align 8 %72 = fmul double %65, %71 %73 = load double, double* %10, align 8 %74 = fadd double %73, %72 store double %74, double* %10, align 8 %75 = load %struct.Point*, %struct.Point** %5, align 8 %76 = load i32, i32* %12, align 4 %77 = sext i32 %76 to i64 %78 = getelementptr inbounds %struct.Point, %struct.Point* %75, i64 %77 %79 = getelementptr inbounds %struct.Point, %struct.Point* %78, i32 0, i32 1 %80 = load i32, i32* %79, align 4 %81 = sitofp i32 %80 to double %82 = load %struct.Point*, %struct.Point** %5, align 8 %83 = load i32, i32* %12, align 4 %84 = sext i32 %83 to i64 %85 = getelementptr inbounds %struct.Point, %struct.Point* %82, i64 %84 %86 = getelementptr inbounds %struct.Point, %struct.Point* %85, i32 0, i32 3 %87 = load double, double* %86, align 8 %88 = fmul double %81, %87 %89 = load double, double* %11, align 8 %90 = fadd double %89, %88 store double %90, double* %11, align 8 %91 = load double, double* %9, align 8 %92 = fcmp uno double %91, %91 br i1 %92, label %126, label %93 93: ; preds = %50 %94 = load double, double* %10, align 8 %95 = fcmp uno double %94, %94 br i1 %95, label %126, label %96 96: ; preds = %93 %97 = load double, double* %11, align 8 %98 = fcmp uno double %97, %97 br i1 %98, label %126, label %99 99: ; preds = %96 %100 = load double, double* %9, align 8 %101 = call double @llvm.fabs.f64(double %100) #9 %102 = fcmp oeq double %101, 0x7FF0000000000000 %103 = bitcast double %100 to i64 %104 = icmp slt i64 %103, 0 %105 = select i1 %104, i32 -1, i32 1 %106 = select i1 %102, i32 %105, i32 0 %107 = icmp ne i32 %106, 0 br i1 %107, label %126, label %108 108: ; preds = %99 %109 = load double, double* %10, align 8 %110 = call double @llvm.fabs.f64(double %109) #9 %111 = fcmp oeq double %110, 0x7FF0000000000000 %112 = bitcast double %109 to i64 %113 = icmp slt i64 %112, 0 %114 = select i1 %113, i32 -1, i32 1 %115 = select i1 %111, i32 %114, i32 0 %116 = icmp ne i32 %115, 0 br i1 %116, label %126, label %117 117: ; preds = %108 %118 = load double, double* %11, align 8 %119 = call double @llvm.fabs.f64(double %118) #9 %120 = fcmp oeq double %119, 0x7FF0000000000000 %121 = bitcast double %118 to i64 %122 = icmp slt i64 %121, 0 %123 = select i1 %122, i32 -1, i32 1 %124 = select i1 %120, i32 %123, i32 0 %125 = icmp ne i32 %124, 0 br i1 %125, label %126, label %130 126: ; preds = %117, %108, %99, %96, %93, %50 %127 = load i32*, i32** %7, align 8 store i32 5, i32* %127, align 4 call void @setErrorMessage(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.54, i64 0, i64 0)) %128 = load %struct.Point*, %struct.Point** %8, align 8 %129 = bitcast %struct.Point* %128 to i8* call void @free(i8* %129) #7 store %struct.Point* null, %struct.Point** %4, align 8 br label %165 130: ; preds = %117 br label %131 131: ; preds = %130 %132 = load i32, i32* %12, align 4 %133 = add nsw i32 %132, 1 store i32 %133, i32* %12, align 4 br label %34 134: ; preds = %34 %135 = load double, double* %9, align 8 %136 = fcmp oeq double %135, 0.000000e+00 br i1 %136, label %137, label %141 137: ; preds = %134 %138 = load i32*, i32** %7, align 8 store i32 1, i32* %138, align 4 call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i64 0, i64 0)) %139 = load %struct.Point*, %struct.Point** %8, align 8 %140 = bitcast %struct.Point* %139 to i8* call void @free(i8* %140) #7 store %struct.Point* null, %struct.Point** %4, align 8 br label %165 141: ; preds = %134 %142 = load double, double* %10, align 8 %143 = load double, double* %9, align 8 %144 = fdiv double %142, %143 %145 = fptosi double %144 to i32 %146 = load %struct.Point*, %struct.Point** %8, align 8 %147 = getelementptr inbounds %struct.Point, %struct.Point* %146, i32 0, i32 0 store i32 %145, i32* %147, align 8 %148 = load double, double* %11, 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 1 store i32 %151, i32* %153, align 4 %154 = load double, double* %9, align 8 %155 = load i32, i32* %6, align 4 %156 = sitofp i32 %155 to double %157 = fdiv double %154, %156 %158 = load %struct.Point*, %struct.Point** %8, align 8 %159 = getelementptr inbounds %struct.Point, %struct.Point* %158, i32 0, i32 3 store double %157, double* %159, align 8 %160 = load %struct.Point*, %struct.Point** %8, align 8 %161 = getelementptr inbounds %struct.Point, %struct.Point* %160, i32 0, i32 2 %162 = getelementptr inbounds [256 x i8], [256 x i8]* %161, i64 0, i64 0 %163 = call i8* @strcpy(i8* %162, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.56, i64 0, i64 0)) #7 %164 = load %struct.Point*, %struct.Point** %8, align 8 store %struct.Point* %164, %struct.Point** %4, align 8 br label %165 165: ; preds = %141, %137, %126, %46, %31, %24, %19 %166 = load %struct.Point*, %struct.Point** %4, align 8 ret %struct.Point* %166 } ; Function Attrs: nounwind declare dso_local i8* @strcpy(i8*, i8*) #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @reverseString(i8* %0) #0 { %2 = alloca i8*, align 8 %3 = alloca i32, align 4 %4 = alloca i32, align 4 %5 = alloca i8, align 1 store i8* %0, i8** %2, align 8 %6 = load i8*, i8** %2, align 8 %7 = call i64 @strlen(i8* %6) #10 %8 = trunc i64 %7 to i32 store i32 %8, i32* %3, align 4 store i32 0, i32* %4, align 4 br label %9 9: ; preds = %40, %1 %10 = load i32, i32* %4, align 4 %11 = load i32, i32* %3, align 4 %12 = sdiv i32 %11, 2 %13 = icmp slt i32 %10, %12 br i1 %13, label %14, label %43 14: ; preds = %9 %15 = load i8*, i8** %2, align 8 %16 = load i32, i32* %4, align 4 %17 = sext i32 %16 to i64 %18 = getelementptr inbounds i8, i8* %15, i64 %17 %19 = load i8, i8* %18, align 1 store i8 %19, i8* %5, align 1 %20 = load i8*, i8** %2, align 8 %21 = load i32, i32* %3, align 4 %22 = sub nsw i32 %21, 1 %23 = load i32, i32* %4, align 4 %24 = sub nsw i32 %22, %23 %25 = sext i32 %24 to i64 %26 = getelementptr inbounds i8, i8* %20, i64 %25 %27 = load i8, i8* %26, align 1 %28 = load i8*, i8** %2, align 8 %29 = load i32, i32* %4, align 4 %30 = sext i32 %29 to i64 %31 = getelementptr inbounds i8, i8* %28, i64 %30 store i8 %27, i8* %31, align 1 %32 = load i8, i8* %5, align 1 %33 = load i8*, i8** %2, align 8 %34 = load i32, i32* %3, align 4 %35 = sub nsw i32 %34, 1 %36 = load i32, i32* %4, align 4 %37 = sub nsw i32 %35, %36 %38 = sext i32 %37 to i64 %39 = getelementptr inbounds i8, i8* %33, i64 %38 store i8 %32, i8* %39, align 1 br label %40 40: ; preds = %14 %41 = load i32, i32* %4, align 4 %42 = add nsw i32 %41, 1 store i32 %42, i32* %4, align 4 br label %9 43: ; preds = %9 ret void } ; Function Attrs: nounwind readonly declare dso_local i64 @strlen(i8*) #5 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @longestIncreasingSubsequence(i32* %0, i32 %1) #0 { %3 = alloca i32*, align 8 %4 = alloca i32, align 4 %5 = alloca [100 x i32], align 16 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca i32, align 4 %9 = alloca i32, align 4 %10 = alloca i32, align 4 store i32* %0, i32** %3, align 8 store i32 %1, i32* %4, align 4 store i32 0, i32* %6, align 4 br label %11 11: ; preds = %19, %2 %12 = load i32, i32* %6, align 4 %13 = load i32, i32* %4, align 4 %14 = icmp slt i32 %12, %13 br i1 %14, label %15, label %22 15: ; preds = %11 %16 = load i32, i32* %6, align 4 %17 = sext i32 %16 to i64 %18 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %17 store i32 1, i32* %18, align 4 br label %19 19: ; preds = %15 %20 = load i32, i32* %6, align 4 %21 = add nsw i32 %20, 1 store i32 %21, i32* %6, align 4 br label %11 22: ; preds = %11 store i32 1, i32* %7, align 4 br label %23 23: ; preds = %69, %22 %24 = load i32, i32* %7, align 4 %25 = load i32, i32* %4, align 4 %26 = icmp slt i32 %24, %25 br i1 %26, label %27, label %72 27: ; preds = %23 store i32 0, i32* %8, align 4 br label %28 28: ; preds = %65, %27 %29 = load i32, i32* %8, align 4 %30 = load i32, i32* %7, align 4 %31 = icmp slt i32 %29, %30 br i1 %31, label %32, label %68 32: ; preds = %28 %33 = load i32*, i32** %3, align 8 %34 = load i32, i32* %7, align 4 %35 = sext i32 %34 to i64 %36 = getelementptr inbounds i32, i32* %33, i64 %35 %37 = load i32, i32* %36, align 4 %38 = load i32*, i32** %3, align 8 %39 = load i32, i32* %8, align 4 %40 = sext i32 %39 to i64 %41 = getelementptr inbounds i32, i32* %38, i64 %40 %42 = load i32, i32* %41, align 4 %43 = icmp sgt i32 %37, %42 br i1 %43, label %44, label %64 44: ; preds = %32 %45 = load i32, i32* %7, align 4 %46 = sext i32 %45 to i64 %47 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %46 %48 = load i32, i32* %47, align 4 %49 = load i32, i32* %8, align 4 %50 = sext i32 %49 to i64 %51 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %50 %52 = load i32, i32* %51, align 4 %53 = add nsw i32 %52, 1 %54 = icmp slt i32 %48, %53 br i1 %54, label %55, label %64 55: ; preds = %44 %56 = load i32, i32* %8, align 4 %57 = sext i32 %56 to i64 %58 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %57 %59 = load i32, i32* %58, align 4 %60 = add nsw i32 %59, 1 %61 = load i32, i32* %7, align 4 %62 = sext i32 %61 to i64 %63 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %62 store i32 %60, i32* %63, align 4 br label %64 64: ; preds = %55, %44, %32 br label %65 65: ; preds = %64 %66 = load i32, i32* %8, align 4 %67 = add nsw i32 %66, 1 store i32 %67, i32* %8, align 4 br label %28 68: ; preds = %28 br label %69 69: ; preds = %68 %70 = load i32, i32* %7, align 4 %71 = add nsw i32 %70, 1 store i32 %71, i32* %7, align 4 br label %23 72: ; preds = %23 store i32 0, i32* %9, align 4 store i32 0, i32* %10, align 4 br label %73 73: ; preds = %90, %72 %74 = load i32, i32* %10, align 4 %75 = load i32, i32* %4, align 4 %76 = icmp slt i32 %74, %75 br i1 %76, label %77, label %93 77: ; preds = %73 %78 = load i32, i32* %9, align 4 %79 = load i32, i32* %10, align 4 %80 = sext i32 %79 to i64 %81 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %80 %82 = load i32, i32* %81, align 4 %83 = icmp slt i32 %78, %82 br i1 %83, label %84, label %89 84: ; preds = %77 %85 = load i32, i32* %10, align 4 %86 = sext i32 %85 to i64 %87 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %86 %88 = load i32, i32* %87, align 4 store i32 %88, i32* %9, align 4 br label %89 89: ; preds = %84, %77 br label %90 90: ; preds = %89 %91 = load i32, i32* %10, align 4 %92 = add nsw i32 %91, 1 store i32 %92, i32* %10, align 4 br label %73 93: ; preds = %73 %94 = load i32, i32* %9, align 4 ret i32 %94 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @testPoints(i32 %0) #0 { %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 store i32 0, i32* %4, align 4 store i32 1, i32* %5, align 4 br label %6 6: ; preds = %16, %1 %7 = load i32, i32* %5, align 4 %8 = icmp slt i32 %7, 5 br i1 %8, label %9, label %19 9: ; preds = %6 %10 = load i32, i32* %4, align 4 %11 = add nsw i32 %10, 1 store i32 %11, i32* %4, align 4 %12 = load i32, i32* %3, align 4 %13 = icmp sgt i32 %12, 2 br i1 %13, label %14, label %15 14: ; preds = %9 store i32 23, i32* %2, align 4 br label %21 15: ; preds = %9 br label %16 16: ; preds = %15 %17 = load i32, i32* %5, align 4 %18 = add nsw i32 %17, 1 store i32 %18, i32* %5, align 4 br label %6 19: ; preds = %6 %20 = load i32, i32* %4, align 4 store i32 %20, i32* %2, align 4 br label %21 21: ; preds = %19, %14 %22 = load i32, i32* %2, align 4 ret i32 %22 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @countSetBits(i32 %0) #0 { %2 = alloca i32, align 4 %3 = alloca i32, align 4 store i32 %0, i32* %2, align 4 store i32 0, i32* %3, align 4 br label %4 4: ; preds = %7, %1 %5 = load i32, i32* %2, align 4 %6 = icmp ne i32 %5, 0 br i1 %6, label %7, label %14 7: ; preds = %4 %8 = load i32, i32* %2, align 4 %9 = and i32 %8, 1 %10 = load i32, i32* %3, align 4 %11 = add nsw i32 %10, %9 store i32 %11, i32* %3, align 4 %12 = load i32, i32* %2, align 4 %13 = ashr i32 %12, 1 store i32 %13, i32* %2, align 4 br label %4 14: ; preds = %4 %15 = load i32, i32* %3, align 4 ret i32 %15 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @memoizedFib(i32 %0) #0 { %2 = alloca i32, align 4 %3 = alloca i32, align 4 store i32 %0, i32* %3, align 4 %4 = load i32, i32* %3, align 4 %5 = sext i32 %4 to i64 %6 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %5 %7 = load i32, i32* %6, align 4 %8 = icmp ne i32 %7, -1 br i1 %8, label %9, label %14 9: ; preds = %1 %10 = load i32, i32* %3, align 4 %11 = sext i32 %10 to i64 %12 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %11 %13 = load i32, i32* %12, align 4 store i32 %13, i32* %2, align 4 br label %34 14: ; preds = %1 %15 = load i32, i32* %3, align 4 %16 = icmp sle i32 %15, 1 br i1 %16, label %17, label %19 17: ; preds = %14 %18 = load i32, i32* %3, align 4 store i32 %18, i32* %2, align 4 br label %34 19: ; preds = %14 %20 = load i32, i32* %3, align 4 %21 = sub nsw i32 %20, 1 %22 = call i32 @memoizedFib(i32 %21) %23 = load i32, i32* %3, align 4 %24 = sub nsw i32 %23, 2 %25 = call i32 @memoizedFib(i32 %24) %26 = add nsw i32 %22, %25 %27 = load i32, i32* %3, align 4 %28 = sext i32 %27 to i64 %29 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %28 store i32 %26, i32* %29, align 4 %30 = load i32, i32* %3, align 4 %31 = sext i32 %30 to i64 %32 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %31 %33 = load i32, i32* %32, align 4 store i32 %33, i32* %2, align 4 br label %34 34: ; preds = %19, %17, %9 %35 = load i32, i32* %2, align 4 ret i32 %35 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @processMatrix([100 x i32]* %0, i32 %1) #0 { %3 = alloca [100 x i32]*, align 8 %4 = alloca i32, align 4 %5 = alloca i32, align 4 %6 = alloca i32, align 4 %7 = alloca i32, align 4 store [100 x i32]* %0, [100 x i32]** %3, align 8 store i32 %1, i32* %4, align 4 store i32 0, i32* %5, align 4 store i32 0, i32* %6, align 4 br label %8 8: ; preds = %77, %2 %9 = load i32, i32* %6, align 4 %10 = load i32, i32* %4, align 4 %11 = icmp slt i32 %9, %10 br i1 %11, label %12, label %80 12: ; preds = %8 store i32 0, i32* %7, align 4 br label %13 13: ; preds = %73, %12 %14 = load i32, i32* %7, align 4 %15 = load i32, i32* %4, align 4 %16 = icmp slt i32 %14, %15 br i1 %16, label %17, label %76 17: ; preds = %13 %18 = load i32, i32* %6, align 4 %19 = load i32, i32* %7, align 4 %20 = icmp eq i32 %18, %19 br i1 %20, label %21, label %55 21: ; preds = %17 %22 = load [100 x i32]*, [100 x i32]** %3, align 8 %23 = load i32, i32* %6, align 4 %24 = sext i32 %23 to i64 %25 = getelementptr inbounds [100 x i32], [100 x i32]* %22, i64 %24 %26 = load i32, i32* %7, align 4 %27 = sext i32 %26 to i64 %28 = getelementptr inbounds [100 x i32], [100 x i32]* %25, i64 0, i64 %27 %29 = load i32, i32* %28, align 4 %30 = srem i32 %29, 2 %31 = icmp eq i32 %30, 0 br i1 %31, label %32, label %43 32: ; preds = %21 %33 = load [100 x i32]*, [100 x i32]** %3, align 8 %34 = load i32, i32* %6, align 4 %35 = sext i32 %34 to i64 %36 = getelementptr inbounds [100 x i32], [100 x i32]* %33, i64 %35 %37 = load i32, i32* %7, align 4 %38 = sext i32 %37 to i64 %39 = getelementptr inbounds [100 x i32], [100 x i32]* %36, i64 0, i64 %38 %40 = load i32, i32* %39, align 4 %41 = load i32, i32* %5, align 4 %42 = add nsw i32 %41, %40 store i32 %42, i32* %5, align 4 br label %54 43: ; preds = %21 %44 = load [100 x i32]*, [100 x i32]** %3, align 8 %45 = load i32, i32* %6, align 4 %46 = sext i32 %45 to i64 %47 = getelementptr inbounds [100 x i32], [100 x i32]* %44, i64 %46 %48 = load i32, i32* %7, align 4 %49 = sext i32 %48 to i64 %50 = getelementptr inbounds [100 x i32], [100 x i32]* %47, i64 0, i64 %49 %51 = load i32, i32* %50, align 4 %52 = load i32, i32* %5, align 4 %53 = sub nsw i32 %52, %51 store i32 %53, i32* %5, align 4 br label %54 54: ; preds = %43, %32 br label %72 55: ; preds = %17 %56 = load i32, i32* %6, align 4 %57 = load i32, i32* %7, align 4 %58 = icmp slt i32 %56, %57 br i1 %58, label %59, label %71 59: ; preds = %55 %60 = load [100 x i32]*, [100 x i32]** %3, align 8 %61 = load i32, i32* %6, align 4 %62 = sext i32 %61 to i64 %63 = getelementptr inbounds [100 x i32], [100 x i32]* %60, i64 %62 %64 = load i32, i32* %7, align 4 %65 = sext i32 %64 to i64 %66 = getelementptr inbounds [100 x i32], [100 x i32]* %63, i64 0, i64 %65 %67 = load i32, i32* %66, align 4 %68 = call i32 @countSetBits(i32 %67) %69 = load i32, i32* %5, align 4 %70 = add nsw i32 %69, %68 store i32 %70, i32* %5, align 4 br label %71 71: ; preds = %59, %55 br label %72 72: ; preds = %71, %54 br label %73 73: ; preds = %72 %74 = load i32, i32* %7, align 4 %75 = add nsw i32 %74, 1 store i32 %75, i32* %7, align 4 br label %13 76: ; preds = %13 br label %77 77: ; preds = %76 %78 = load i32, i32* %6, align 4 %79 = add nsw i32 %78, 1 store i32 %79, i32* %6, align 4 br label %8 80: ; preds = %8 %81 = load i32, i32* %5, align 4 ret i32 %81 } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @projectB_main() #0 { %1 = alloca [14 x i8], align 1 %2 = alloca [8 x i32], align 16 %3 = alloca i32, align 4 %4 = alloca i32, align 4 %5 = alloca [100 x [100 x i32]], align 16 %6 = alloca i32, align 4 %7 = alloca i32, align 4 %8 = alloca i32, align 4 %9 = call i32 @testPoints(i32 5) call void @llvm.memset.p0i8.i64(i8* align 16 bitcast ([100 x i32]* @cache to i8*), i8 -1, i64 400, i1 false) %10 = bitcast [14 x i8]* %1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %10, i8* align 1 getelementptr inbounds ([14 x i8], [14 x i8]* @__const.projectB_main.str, i32 0, i32 0), i64 14, i1 false) %11 = getelementptr inbounds [14 x i8], [14 x i8]* %1, i64 0, i64 0 call void @reverseString(i8* %11) %12 = bitcast [8 x i32]* %2 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %12, i8* align 16 bitcast ([8 x i32]* @__const.projectB_main.arr to i8*), i64 32, i1 false) store i32 8, i32* %3, align 4 %13 = getelementptr inbounds [8 x i32], [8 x i32]* %2, i64 0, i64 0 %14 = load i32, i32* %3, align 4 %15 = call i32 @longestIncreasingSubsequence(i32* %13, i32 %14) store i32 %15, i32* %4, align 4 %16 = bitcast [100 x [100 x i32]]* %5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %16, 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) %17 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %5, i64 0, i64 0 %18 = call i32 @processMatrix([100 x i32]* %17, i32 3) store i32 %18, i32* %6, align 4 store i32 0, i32* %7, align 4 br label %19 19: ; preds = %24, %0 %20 = load i32, i32* %7, align 4 %21 = call i32 @memoizedFib(i32 %20) %22 = load i32, i32* %7, align 4 %23 = add nsw i32 %22, 1 store i32 %23, i32* %7, align 4 br label %24 24: ; preds = %19 %25 = load i32, i32* %7, align 4 %26 = icmp slt i32 %25, 10 br i1 %26, label %19, label %27 27: ; preds = %24 %28 = load i32, i32* %4, align 4 %29 = icmp sgt i32 %28, 5 br i1 %29, label %30, label %40 30: ; preds = %27 %31 = load i32, i32* %6, align 4 %32 = icmp sgt i32 %31, 0 br i1 %32, label %33, label %36 33: ; preds = %30 %34 = load i32, i32* %4, align 4 %35 = call i32 @memoizedFib(i32 %34) store i32 %35, i32* %8, align 4 br label %39 36: ; preds = %30 %37 = load i32, i32* %6, align 4 %38 = call i32 @countSetBits(i32 %37) store i32 %38, i32* %8, align 4 br label %39 39: ; preds = %36, %33 br label %47 40: ; preds = %27 %41 = getelementptr inbounds [14 x i8], [14 x i8]* %1, i64 0, i64 0 %42 = call i64 @strlen(i8* %41) #10 %43 = load i32, i32* %6, align 4 %44 = sext i32 %43 to i64 %45 = add i64 %42, %44 %46 = trunc i64 %45 to i32 store i32 %46, i32* %8, align 4 br label %47 47: ; preds = %40, %39 %48 = load i32, i32* %8, align 4 ret i32 %48 } ; 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 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}