; LLVM IR from NOAA-PMEL/Ferret :: fer/ccr (EF_InternalUtil)

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

%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }
%struct.ExternalFunction = type { ptr, [40 x i8], [128 x i8], i32, i32, ptr }
%struct.ExternalFunctionInternals = type { float, [128 x i8], [40 x i8], [40 x i8], i32, i32, i32, i32, [9 x [6 x i32]], [9 x [6 x i32]], [6 x i32], [6 x i32], [6 x i32], i32, [6 x i32], [6 x %struct.Axis], [9 x [6 x i32]], [9 x [6 x i32]], [9 x [6 x i32]], [9 x i32], [9 x [40 x i8]], [9 x [40 x i8]], [9 x [128 x i8]] }
%struct.Axis = type { i32, i32, i32, i32, i32, double, double, double, [40 x i8] }

@.str = external hidden unnamed_addr constant [76 x i8], align 1
@pyefcn_handle = external hidden global ptr, align 8
@sigjumpbuffer = external hidden global [1 x %struct.__jmp_buf_tag], align 16
@jumpbuffer = external hidden global [1 x %struct.__jmp_buf_tag], align 16
@canjump = external hidden global i32, align 4
@stderr = external global ptr, align 8
@.str.15 = external hidden unnamed_addr constant [18 x i8], align 1
@efcn_compute_.work_ptr = external hidden global [9 x ptr], align 16
@.str.35 = external hidden unnamed_addr constant [64 x i8], align 1
@GLOBAL_arg_ptrs = external dso_local global [9 x ptr], align 16
@GLOBAL_res_ptr = external dso_local global ptr, align 8
@.str.36 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [137 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [78 x i8], align 1
@pyefcn_compute_func = external hidden global ptr, align 8
@.str.44 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [54 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local ptr @ef_ptr_from_id_ptr(ptr noundef) #1

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #3

; Function Attrs: nounwind
declare ptr @strcat(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind
declare ptr @dlerror() #2

; Function Attrs: nounwind
declare ptr @dlsym(ptr noundef, ptr noundef) #2

declare void @FerMem_Free(ptr noundef, ptr noundef, i32 noundef) #4

; Function Attrs: nounwind returns_twice
declare i32 @__sigsetjmp(ptr noundef, i32 noundef) #5

; Function Attrs: nounwind returns_twice
declare i32 @_setjmp(ptr noundef) #5

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden ptr @internal_dlsym(ptr noundef) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: nounwind uwtable
declare dso_local void @EF_store_globals(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare i32 @fputs(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @ef_err_bail_out_(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @efcn_compute_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) #1 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca [19 x ptr], align 16
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca [40 x i8], align 16
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca [19 x [6 x i32]], align 16
  %58 = alloca [19 x [6 x i32]], align 16
  %59 = alloca [19 x [6 x i32]], align 16
  %60 = alloca [19 x [6 x i32]], align 16
  %61 = alloca [19 x [6 x i32]], align 16
  %62 = alloca [19 x float], align 16
  %63 = alloca [2048 x i8], align 16
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  store ptr null, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  store ptr null, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 152, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %22) #7
  call void @llvm.memset.p0.i64(ptr align 16 %22, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %64 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 3, ptr %64, align 4, !tbaa !9
  call void @efcn_copy_array_dims_()
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  %67 = load ptr, ptr %12, align 8, !tbaa !5
  %68 = load ptr, ptr %13, align 8, !tbaa !5
  call void @EF_store_globals(ptr noundef %65, ptr noundef %66, ptr noundef %67, ptr noundef %68)
  %69 = load ptr, ptr %8, align 8, !tbaa !5
  %70 = call ptr @ef_ptr_from_id_ptr(ptr noundef %69)
  store ptr %70, ptr %15, align 8, !tbaa !5
  %71 = icmp eq ptr %70, null
  br i1 %71, label %72, label %78

72:                                               ; preds = %7
  %73 = load ptr, ptr @stderr, align 8, !tbaa !5
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = load i32, ptr %74, align 4, !tbaa !9
  %76 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %73, ptr noundef @.str.35, i32 noundef %75) #7
  %77 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %77, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

78:                                               ; preds = %7
  %79 = load ptr, ptr %15, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.ExternalFunction, ptr %79, i32 0, i32 2
  %81 = getelementptr inbounds [128 x i8], ptr %80, i64 0, i64 0
  %82 = call i32 @strcmp(ptr noundef %81, ptr noundef @.str.15) #8
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %85, label %84

84:                                               ; preds = %78
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %85

85:                                               ; preds = %84, %78
  %86 = load ptr, ptr %15, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.ExternalFunction, ptr %86, i32 0, i32 5
  %88 = load ptr, ptr %87, align 8, !tbaa !11
  store ptr %88, ptr %16, align 8, !tbaa !5
  %89 = load ptr, ptr %16, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %89, i32 0, i32 5
  %91 = load i32, ptr %90, align 8, !tbaa !13
  store i32 %91, ptr %21, align 4, !tbaa !9
  %92 = load ptr, ptr %11, align 8, !tbaa !5
  %93 = load ptr, ptr %12, align 8, !tbaa !5
  call void @efcn_rqst_mr_ptrs_(ptr noundef %21, ptr noundef %92, ptr noundef %93)
  %94 = load ptr, ptr %16, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %94, i32 0, i32 4
  %96 = load i32, ptr %95, align 4, !tbaa !16
  %97 = icmp eq i32 %96, 2
  br i1 %97, label %98, label %1187

98:                                               ; preds = %85
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %99

99:                                               ; preds = %113, %98
  %100 = load i32, ptr %18, align 4, !tbaa !9
  %101 = load ptr, ptr %16, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %101, i32 0, i32 5
  %103 = load i32, ptr %102, align 8, !tbaa !13
  %104 = icmp slt i32 %100, %103
  br i1 %104, label %105, label %116

105:                                              ; preds = %99
  %106 = load i32, ptr %18, align 4, !tbaa !9
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds [9 x ptr], ptr @GLOBAL_arg_ptrs, i64 0, i64 %107
  %109 = load ptr, ptr %108, align 8, !tbaa !5
  %110 = load i32, ptr %18, align 4, !tbaa !9
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 %111
  store ptr %109, ptr %112, align 8, !tbaa !5
  br label %113

113:                                              ; preds = %105
  %114 = load i32, ptr %18, align 4, !tbaa !9
  %115 = add nsw i32 %114, 1
  store i32 %115, ptr %18, align 4, !tbaa !9
  br label %99, !llvm.loop !17

116:                                              ; preds = %99
  %117 = load ptr, ptr @GLOBAL_res_ptr, align 8, !tbaa !5
  %118 = load i32, ptr %18, align 4, !tbaa !9
  %119 = add nsw i32 %118, 1
  store i32 %119, ptr %18, align 4, !tbaa !9
  %120 = sext i32 %118 to i64
  %121 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 %120
  store ptr %117, ptr %121, align 8, !tbaa !5
  %122 = load ptr, ptr %16, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %122, i32 0, i32 7
  %124 = load i32, ptr %123, align 8, !tbaa !19
  %125 = icmp sgt i32 %124, 9
  br i1 %125, label %126, label %136

126:                                              ; preds = %116
  %127 = load ptr, ptr @stderr, align 8, !tbaa !5
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.ExternalFunction, ptr %128, i32 0, i32 1
  %130 = getelementptr inbounds [40 x i8], ptr %129, i64 0, i64 0
  %131 = load ptr, ptr %16, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %131, i32 0, i32 7
  %133 = load i32, ptr %132, align 8, !tbaa !19
  %134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %127, ptr noundef @.str.36, ptr noundef %130, i32 noundef %133, i32 noundef 9) #7
  %135 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %135, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

136:                                              ; preds = %116
  %137 = load ptr, ptr %16, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %137, i32 0, i32 7
  %139 = load i32, ptr %138, align 8, !tbaa !19
  %140 = icmp slt i32 %139, 0
  br i1 %140, label %141, label %151

141:                                              ; preds = %136
  %142 = load ptr, ptr @stderr, align 8, !tbaa !5
  %143 = load ptr, ptr %15, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.ExternalFunction, ptr %143, i32 0, i32 1
  %145 = getelementptr inbounds [40 x i8], ptr %144, i64 0, i64 0
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %146, i32 0, i32 7
  %148 = load i32, ptr %147, align 8, !tbaa !19
  %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef @.str.37, ptr noundef %145, i32 noundef %148) #7
  %150 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %150, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

151:                                              ; preds = %136
  %152 = load ptr, ptr %16, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %152, i32 0, i32 7
  %154 = load i32, ptr %153, align 8, !tbaa !19
  %155 = icmp sgt i32 %154, 0
  br i1 %155, label %156, label %387

156:                                              ; preds = %151
  %157 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %158 = load ptr, ptr %15, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.ExternalFunction, ptr %158, i32 0, i32 1
  %160 = getelementptr inbounds [40 x i8], ptr %159, i64 0, i64 0
  %161 = call ptr @strcpy(ptr noundef %157, ptr noundef %160) #7
  %162 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %163 = call ptr @strcat(ptr noundef %162, ptr noundef @.str.38) #7
  %164 = load i32, ptr %23, align 4, !tbaa !9
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %172, label %166

166:                                              ; preds = %156
  %167 = load ptr, ptr %15, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.ExternalFunction, ptr %167, i32 0, i32 0
  %169 = load ptr, ptr %168, align 8, !tbaa !20
  %170 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %171 = call ptr @dlsym(ptr noundef %169, ptr noundef %170) #7
  store ptr %171, ptr %24, align 8, !tbaa !5
  br label %175

172:                                              ; preds = %156
  %173 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %174 = call ptr @internal_dlsym(ptr noundef %173)
  store ptr %174, ptr %24, align 8, !tbaa !5
  br label %175

175:                                              ; preds = %172, %166
  %176 = load ptr, ptr %24, align 8, !tbaa !5
  %177 = icmp eq ptr %176, null
  br i1 %177, label %178, label %183

178:                                              ; preds = %175
  %179 = load ptr, ptr @stderr, align 8, !tbaa !5
  %180 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %181 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %179, ptr noundef @.str.39, ptr noundef %180) #7
  %182 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %182, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

183:                                              ; preds = %175
  %184 = load ptr, ptr %24, align 8, !tbaa !5
  %185 = load ptr, ptr %8, align 8, !tbaa !5
  call void %184(ptr noundef %185)
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %193, %183
  %187 = load i32, ptr %19, align 4, !tbaa !9
  %188 = icmp slt i32 %187, 9
  br i1 %188, label %189, label %196

189:                                              ; preds = %186
  %190 = load i32, ptr %19, align 4, !tbaa !9
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %191
  store ptr null, ptr %192, align 8, !tbaa !5
  br label %193

193:                                              ; preds = %189
  %194 = load i32, ptr %19, align 4, !tbaa !9
  %195 = add nsw i32 %194, 1
  store i32 %195, ptr %19, align 4, !tbaa !9
  br label %186, !llvm.loop !21

196:                                              ; preds = %186
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %197

197:                                              ; preds = %381, %196
  %198 = load i32, ptr %19, align 4, !tbaa !9
  %199 = load ptr, ptr %16, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %199, i32 0, i32 7
  %201 = load i32, ptr %200, align 8, !tbaa !19
  %202 = icmp slt i32 %198, %201
  br i1 %202, label %203, label %386

203:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #7
  %204 = load i32, ptr %19, align 4, !tbaa !9
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %44, align 4, !tbaa !9
  %206 = load ptr, ptr %16, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %206, i32 0, i32 8
  %208 = load i32, ptr %19, align 4, !tbaa !9
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds [9 x [6 x i32]], ptr %207, i64 0, i64 %209
  %211 = getelementptr inbounds [6 x i32], ptr %210, i64 0, i64 0
  %212 = load i32, ptr %211, align 4, !tbaa !9
  store i32 %212, ptr %45, align 4, !tbaa !9
  %213 = load ptr, ptr %16, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %213, i32 0, i32 8
  %215 = load i32, ptr %19, align 4, !tbaa !9
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds [9 x [6 x i32]], ptr %214, i64 0, i64 %216
  %218 = getelementptr inbounds [6 x i32], ptr %217, i64 0, i64 1
  %219 = load i32, ptr %218, align 4, !tbaa !9
  store i32 %219, ptr %46, align 4, !tbaa !9
  %220 = load ptr, ptr %16, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %220, i32 0, i32 8
  %222 = load i32, ptr %19, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds [9 x [6 x i32]], ptr %221, i64 0, i64 %223
  %225 = getelementptr inbounds [6 x i32], ptr %224, i64 0, i64 2
  %226 = load i32, ptr %225, align 4, !tbaa !9
  store i32 %226, ptr %47, align 4, !tbaa !9
  %227 = load ptr, ptr %16, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %227, i32 0, i32 8
  %229 = load i32, ptr %19, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds [9 x [6 x i32]], ptr %228, i64 0, i64 %230
  %232 = getelementptr inbounds [6 x i32], ptr %231, i64 0, i64 3
  %233 = load i32, ptr %232, align 4, !tbaa !9
  store i32 %233, ptr %48, align 4, !tbaa !9
  %234 = load ptr, ptr %16, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %234, i32 0, i32 8
  %236 = load i32, ptr %19, align 4, !tbaa !9
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds [9 x [6 x i32]], ptr %235, i64 0, i64 %237
  %239 = getelementptr inbounds [6 x i32], ptr %238, i64 0, i64 4
  %240 = load i32, ptr %239, align 4, !tbaa !9
  store i32 %240, ptr %49, align 4, !tbaa !9
  %241 = load ptr, ptr %16, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %241, i32 0, i32 8
  %243 = load i32, ptr %19, align 4, !tbaa !9
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds [9 x [6 x i32]], ptr %242, i64 0, i64 %244
  %246 = getelementptr inbounds [6 x i32], ptr %245, i64 0, i64 5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  store i32 %247, ptr %50, align 4, !tbaa !9
  %248 = load ptr, ptr %16, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %248, i32 0, i32 9
  %250 = load i32, ptr %19, align 4, !tbaa !9
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds [9 x [6 x i32]], ptr %249, i64 0, i64 %251
  %253 = getelementptr inbounds [6 x i32], ptr %252, i64 0, i64 0
  %254 = load i32, ptr %253, align 4, !tbaa !9
  store i32 %254, ptr %51, align 4, !tbaa !9
  %255 = load ptr, ptr %16, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %255, i32 0, i32 9
  %257 = load i32, ptr %19, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [9 x [6 x i32]], ptr %256, i64 0, i64 %258
  %260 = getelementptr inbounds [6 x i32], ptr %259, i64 0, i64 1
  %261 = load i32, ptr %260, align 4, !tbaa !9
  store i32 %261, ptr %52, align 4, !tbaa !9
  %262 = load ptr, ptr %16, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %262, i32 0, i32 9
  %264 = load i32, ptr %19, align 4, !tbaa !9
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds [9 x [6 x i32]], ptr %263, i64 0, i64 %265
  %267 = getelementptr inbounds [6 x i32], ptr %266, i64 0, i64 2
  %268 = load i32, ptr %267, align 4, !tbaa !9
  store i32 %268, ptr %53, align 4, !tbaa !9
  %269 = load ptr, ptr %16, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %269, i32 0, i32 9
  %271 = load i32, ptr %19, align 4, !tbaa !9
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds [9 x [6 x i32]], ptr %270, i64 0, i64 %272
  %274 = getelementptr inbounds [6 x i32], ptr %273, i64 0, i64 3
  %275 = load i32, ptr %274, align 4, !tbaa !9
  store i32 %275, ptr %54, align 4, !tbaa !9
  %276 = load ptr, ptr %16, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %276, i32 0, i32 9
  %278 = load i32, ptr %19, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [9 x [6 x i32]], ptr %277, i64 0, i64 %279
  %281 = getelementptr inbounds [6 x i32], ptr %280, i64 0, i64 4
  %282 = load i32, ptr %281, align 4, !tbaa !9
  store i32 %282, ptr %55, align 4, !tbaa !9
  %283 = load ptr, ptr %16, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %283, i32 0, i32 9
  %285 = load i32, ptr %19, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [9 x [6 x i32]], ptr %284, i64 0, i64 %286
  %288 = getelementptr inbounds [6 x i32], ptr %287, i64 0, i64 5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  store i32 %289, ptr %56, align 4, !tbaa !9
  call void @efcn_set_work_array_dims_(ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %48, ptr noundef %49, ptr noundef %50, ptr noundef %51, ptr noundef %52, ptr noundef %53, ptr noundef %54, ptr noundef %55, ptr noundef %56)
  %290 = load i32, ptr %51, align 4, !tbaa !9
  %291 = load i32, ptr %45, align 4, !tbaa !9
  %292 = sub nsw i32 %290, %291
  %293 = add nsw i32 %292, 1
  %294 = sext i32 %293 to i64
  %295 = mul i64 4, %294
  %296 = load i32, ptr %52, align 4, !tbaa !9
  %297 = load i32, ptr %46, align 4, !tbaa !9
  %298 = sub nsw i32 %296, %297
  %299 = add nsw i32 %298, 1
  %300 = sext i32 %299 to i64
  %301 = mul i64 %295, %300
  %302 = load i32, ptr %53, align 4, !tbaa !9
  %303 = load i32, ptr %47, align 4, !tbaa !9
  %304 = sub nsw i32 %302, %303
  %305 = add nsw i32 %304, 1
  %306 = sext i32 %305 to i64
  %307 = mul i64 %301, %306
  %308 = load i32, ptr %54, align 4, !tbaa !9
  %309 = load i32, ptr %48, align 4, !tbaa !9
  %310 = sub nsw i32 %308, %309
  %311 = add nsw i32 %310, 1
  %312 = sext i32 %311 to i64
  %313 = mul i64 %307, %312
  %314 = load i32, ptr %55, align 4, !tbaa !9
  %315 = load i32, ptr %49, align 4, !tbaa !9
  %316 = sub nsw i32 %314, %315
  %317 = add nsw i32 %316, 1
  %318 = sext i32 %317 to i64
  %319 = mul i64 %313, %318
  %320 = load i32, ptr %56, align 4, !tbaa !9
  %321 = load i32, ptr %50, align 4, !tbaa !9
  %322 = sub nsw i32 %320, %321
  %323 = add nsw i32 %322, 1
  %324 = sext i32 %323 to i64
  %325 = mul i64 %319, %324
  %326 = trunc i64 %325 to i32
  store i32 %326, ptr %20, align 4, !tbaa !9
  %327 = load i32, ptr %20, align 4, !tbaa !9
  %328 = sext i32 %327 to i64
  %329 = call ptr @FerMem_Malloc(i64 noundef %328, ptr noundef @.str, i32 noundef 2370)
  %330 = load i32, ptr %18, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 %331
  store ptr %329, ptr %332, align 8, !tbaa !5
  %333 = load i32, ptr %18, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 %334
  %336 = load ptr, ptr %335, align 8, !tbaa !5
  %337 = icmp eq ptr %336, null
  br i1 %337, label %338, label %370

338:                                              ; preds = %203
  %339 = load ptr, ptr @stderr, align 8, !tbaa !5
  %340 = load i32, ptr %20, align 4, !tbaa !9
  %341 = load i32, ptr %44, align 4, !tbaa !9
  %342 = load i32, ptr %45, align 4, !tbaa !9
  %343 = load i32, ptr %51, align 4, !tbaa !9
  %344 = load i32, ptr %46, align 4, !tbaa !9
  %345 = load i32, ptr %52, align 4, !tbaa !9
  %346 = load i32, ptr %47, align 4, !tbaa !9
  %347 = load i32, ptr %53, align 4, !tbaa !9
  %348 = load i32, ptr %48, align 4, !tbaa !9
  %349 = load i32, ptr %54, align 4, !tbaa !9
  %350 = load i32, ptr %49, align 4, !tbaa !9
  %351 = load i32, ptr %55, align 4, !tbaa !9
  %352 = load i32, ptr %50, align 4, !tbaa !9
  %353 = load i32, ptr %56, align 4, !tbaa !9
  %354 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %339, ptr noundef @.str.40, i32 noundef %340, i32 noundef %341, i32 noundef %342, i32 noundef %343, i32 noundef %344, i32 noundef %345, i32 noundef %346, i32 noundef %347, i32 noundef %348, i32 noundef %349, i32 noundef %350, i32 noundef %351, i32 noundef %352, i32 noundef %353) #7
  br label %355

355:                                              ; preds = %358, %338
  %356 = load i32, ptr %19, align 4, !tbaa !9
  %357 = icmp sgt i32 %356, 0
  br i1 %357, label %358, label %368

358:                                              ; preds = %355
  %359 = load i32, ptr %19, align 4, !tbaa !9
  %360 = add nsw i32 %359, -1
  store i32 %360, ptr %19, align 4, !tbaa !9
  %361 = load i32, ptr %19, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %362
  %364 = load ptr, ptr %363, align 8, !tbaa !5
  call void @FerMem_Free(ptr noundef %364, ptr noundef @.str, i32 noundef 2377)
  %365 = load i32, ptr %19, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %366
  store ptr null, ptr %367, align 8, !tbaa !5
  br label %355, !llvm.loop !22

368:                                              ; preds = %355
  %369 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %369, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %378

370:                                              ; preds = %203
  %371 = load i32, ptr %18, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 %372
  %374 = load ptr, ptr %373, align 8, !tbaa !5
  %375 = load i32, ptr %19, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %376
  store ptr %374, ptr %377, align 8, !tbaa !5
  store i32 0, ptr %43, align 4
  br label %378

378:                                              ; preds = %370, %368
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  %379 = load i32, ptr %43, align 4
  switch i32 %379, label %1369 [
    i32 0, label %380
  ]

380:                                              ; preds = %378
  br label %381

381:                                              ; preds = %380
  %382 = load i32, ptr %18, align 4, !tbaa !9
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %18, align 4, !tbaa !9
  %384 = load i32, ptr %19, align 4, !tbaa !9
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr %19, align 4, !tbaa !9
  br label %197, !llvm.loop !23

386:                                              ; preds = %197
  br label %387

387:                                              ; preds = %386, %151
  br label %388

388:                                              ; preds = %387
  br label %389

389:                                              ; preds = %388
  %390 = call i32 @EF_Util_setsig(ptr noundef @.str.41)
  %391 = icmp ne i32 %390, 0
  br i1 %391, label %392, label %416

392:                                              ; preds = %389
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %411, %392
  %394 = load i32, ptr %19, align 4, !tbaa !9
  %395 = icmp slt i32 %394, 9
  br i1 %395, label %396, label %414

396:                                              ; preds = %393
  %397 = load i32, ptr %19, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %398
  %400 = load ptr, ptr %399, align 8, !tbaa !5
  %401 = icmp eq ptr %400, null
  br i1 %401, label %402, label %403

402:                                              ; preds = %396
  br label %414

403:                                              ; preds = %396
  %404 = load i32, ptr %19, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %405
  %407 = load ptr, ptr %406, align 8, !tbaa !5
  call void @FerMem_Free(ptr noundef %407, ptr noundef @.str, i32 noundef 2399)
  %408 = load i32, ptr %19, align 4, !tbaa !9
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %409
  store ptr null, ptr %410, align 8, !tbaa !5
  br label %411

411:                                              ; preds = %403
  %412 = load i32, ptr %19, align 4, !tbaa !9
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr %19, align 4, !tbaa !9
  br label %393, !llvm.loop !24

414:                                              ; preds = %402, %393
  %415 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %415, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

416:                                              ; preds = %389
  %417 = call i32 @__sigsetjmp(ptr noundef @sigjumpbuffer, i32 noundef 1) #9
  %418 = icmp ne i32 %417, 0
  br i1 %418, label %419, label %443

419:                                              ; preds = %416
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %420

420:                                              ; preds = %438, %419
  %421 = load i32, ptr %19, align 4, !tbaa !9
  %422 = icmp slt i32 %421, 9
  br i1 %422, label %423, label %441

423:                                              ; preds = %420
  %424 = load i32, ptr %19, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %425
  %427 = load ptr, ptr %426, align 8, !tbaa !5
  %428 = icmp eq ptr %427, null
  br i1 %428, label %429, label %430

429:                                              ; preds = %423
  br label %441

430:                                              ; preds = %423
  %431 = load i32, ptr %19, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %432
  %434 = load ptr, ptr %433, align 8, !tbaa !5
  call void @FerMem_Free(ptr noundef %434, ptr noundef @.str, i32 noundef 2413)
  %435 = load i32, ptr %19, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %436
  store ptr null, ptr %437, align 8, !tbaa !5
  br label %438

438:                                              ; preds = %430
  %439 = load i32, ptr %19, align 4, !tbaa !9
  %440 = add nsw i32 %439, 1
  store i32 %440, ptr %19, align 4, !tbaa !9
  br label %420, !llvm.loop !25

441:                                              ; preds = %429, %420
  %442 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %442, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

443:                                              ; preds = %416
  %444 = call i32 @_setjmp(ptr noundef @jumpbuffer) #9
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %446, label %470

446:                                              ; preds = %443
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %447

447:                                              ; preds = %465, %446
  %448 = load i32, ptr %19, align 4, !tbaa !9
  %449 = icmp slt i32 %448, 9
  br i1 %449, label %450, label %468

450:                                              ; preds = %447
  %451 = load i32, ptr %19, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %452
  %454 = load ptr, ptr %453, align 8, !tbaa !5
  %455 = icmp eq ptr %454, null
  br i1 %455, label %456, label %457

456:                                              ; preds = %450
  br label %468

457:                                              ; preds = %450
  %458 = load i32, ptr %19, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %459
  %461 = load ptr, ptr %460, align 8, !tbaa !5
  call void @FerMem_Free(ptr noundef %461, ptr noundef @.str, i32 noundef 2427)
  %462 = load i32, ptr %19, align 4, !tbaa !9
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %463
  store ptr null, ptr %464, align 8, !tbaa !5
  br label %465

465:                                              ; preds = %457
  %466 = load i32, ptr %19, align 4, !tbaa !9
  %467 = add nsw i32 %466, 1
  store i32 %467, ptr %19, align 4, !tbaa !9
  br label %447, !llvm.loop !26

468:                                              ; preds = %456, %447
  %469 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %469, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

470:                                              ; preds = %443
  store volatile i32 1, ptr @canjump, align 4, !tbaa !9
  %471 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %472 = load ptr, ptr %15, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.ExternalFunction, ptr %472, i32 0, i32 1
  %474 = getelementptr inbounds [40 x i8], ptr %473, i64 0, i64 0
  %475 = call ptr @strcpy(ptr noundef %471, ptr noundef %474) #7
  %476 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %477 = call ptr @strcat(ptr noundef %476, ptr noundef @.str.42) #7
  %478 = load ptr, ptr %16, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %478, i32 0, i32 5
  %480 = load i32, ptr %479, align 8, !tbaa !13
  %481 = load ptr, ptr %16, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %481, i32 0, i32 7
  %483 = load i32, ptr %482, align 8, !tbaa !19
  %484 = add nsw i32 %480, %483
  switch i32 %484, label %1133 [
    i32 1, label %485
    i32 2, label %504
    i32 3, label %525
    i32 4, label %548
    i32 5, label %573
    i32 6, label %600
    i32 7, label %629
    i32 8, label %660
    i32 9, label %693
    i32 10, label %728
    i32 11, label %765
    i32 12, label %804
    i32 13, label %845
    i32 14, label %888
    i32 15, label %933
    i32 16, label %980
    i32 17, label %1029
    i32 18, label %1080
  ]

485:                                              ; preds = %470
  %486 = load i32, ptr %23, align 4, !tbaa !9
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %494, label %488

488:                                              ; preds = %485
  %489 = load ptr, ptr %15, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.ExternalFunction, ptr %489, i32 0, i32 0
  %491 = load ptr, ptr %490, align 8, !tbaa !20
  %492 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %493 = call ptr @dlsym(ptr noundef %491, ptr noundef %492) #7
  store ptr %493, ptr %25, align 8, !tbaa !5
  br label %497

494:                                              ; preds = %485
  %495 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %496 = call ptr @internal_dlsym(ptr noundef %495)
  store ptr %496, ptr %25, align 8, !tbaa !5
  br label %497

497:                                              ; preds = %494, %488
  %498 = load ptr, ptr %25, align 8, !tbaa !5
  %499 = load ptr, ptr %8, align 8, !tbaa !5
  %500 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %501 = load ptr, ptr %500, align 16, !tbaa !5
  %502 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %503 = load ptr, ptr %502, align 8, !tbaa !5
  call void %498(ptr noundef %499, ptr noundef %501, ptr noundef %503)
  br label %1159

504:                                              ; preds = %470
  %505 = load i32, ptr %23, align 4, !tbaa !9
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %513, label %507

507:                                              ; preds = %504
  %508 = load ptr, ptr %15, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.ExternalFunction, ptr %508, i32 0, i32 0
  %510 = load ptr, ptr %509, align 8, !tbaa !20
  %511 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %512 = call ptr @dlsym(ptr noundef %510, ptr noundef %511) #7
  store ptr %512, ptr %26, align 8, !tbaa !5
  br label %516

513:                                              ; preds = %504
  %514 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %515 = call ptr @internal_dlsym(ptr noundef %514)
  store ptr %515, ptr %26, align 8, !tbaa !5
  br label %516

516:                                              ; preds = %513, %507
  %517 = load ptr, ptr %26, align 8, !tbaa !5
  %518 = load ptr, ptr %8, align 8, !tbaa !5
  %519 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %520 = load ptr, ptr %519, align 16, !tbaa !5
  %521 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %522 = load ptr, ptr %521, align 8, !tbaa !5
  %523 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %524 = load ptr, ptr %523, align 16, !tbaa !5
  call void %517(ptr noundef %518, ptr noundef %520, ptr noundef %522, ptr noundef %524)
  br label %1159

525:                                              ; preds = %470
  %526 = load i32, ptr %23, align 4, !tbaa !9
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %534, label %528

528:                                              ; preds = %525
  %529 = load ptr, ptr %15, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.ExternalFunction, ptr %529, i32 0, i32 0
  %531 = load ptr, ptr %530, align 8, !tbaa !20
  %532 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %533 = call ptr @dlsym(ptr noundef %531, ptr noundef %532) #7
  store ptr %533, ptr %27, align 8, !tbaa !5
  br label %537

534:                                              ; preds = %525
  %535 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %536 = call ptr @internal_dlsym(ptr noundef %535)
  store ptr %536, ptr %27, align 8, !tbaa !5
  br label %537

537:                                              ; preds = %534, %528
  %538 = load ptr, ptr %27, align 8, !tbaa !5
  %539 = load ptr, ptr %8, align 8, !tbaa !5
  %540 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %541 = load ptr, ptr %540, align 16, !tbaa !5
  %542 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %543 = load ptr, ptr %542, align 8, !tbaa !5
  %544 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %545 = load ptr, ptr %544, align 16, !tbaa !5
  %546 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %547 = load ptr, ptr %546, align 8, !tbaa !5
  call void %538(ptr noundef %539, ptr noundef %541, ptr noundef %543, ptr noundef %545, ptr noundef %547)
  br label %1159

548:                                              ; preds = %470
  %549 = load i32, ptr %23, align 4, !tbaa !9
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %557, label %551

551:                                              ; preds = %548
  %552 = load ptr, ptr %15, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.ExternalFunction, ptr %552, i32 0, i32 0
  %554 = load ptr, ptr %553, align 8, !tbaa !20
  %555 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %556 = call ptr @dlsym(ptr noundef %554, ptr noundef %555) #7
  store ptr %556, ptr %28, align 8, !tbaa !5
  br label %560

557:                                              ; preds = %548
  %558 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %559 = call ptr @internal_dlsym(ptr noundef %558)
  store ptr %559, ptr %28, align 8, !tbaa !5
  br label %560

560:                                              ; preds = %557, %551
  %561 = load ptr, ptr %28, align 8, !tbaa !5
  %562 = load ptr, ptr %8, align 8, !tbaa !5
  %563 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %564 = load ptr, ptr %563, align 16, !tbaa !5
  %565 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %566 = load ptr, ptr %565, align 8, !tbaa !5
  %567 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %568 = load ptr, ptr %567, align 16, !tbaa !5
  %569 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %570 = load ptr, ptr %569, align 8, !tbaa !5
  %571 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %572 = load ptr, ptr %571, align 16, !tbaa !5
  call void %561(ptr noundef %562, ptr noundef %564, ptr noundef %566, ptr noundef %568, ptr noundef %570, ptr noundef %572)
  br label %1159

573:                                              ; preds = %470
  %574 = load i32, ptr %23, align 4, !tbaa !9
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %582, label %576

576:                                              ; preds = %573
  %577 = load ptr, ptr %15, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.ExternalFunction, ptr %577, i32 0, i32 0
  %579 = load ptr, ptr %578, align 8, !tbaa !20
  %580 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %581 = call ptr @dlsym(ptr noundef %579, ptr noundef %580) #7
  store ptr %581, ptr %29, align 8, !tbaa !5
  br label %585

582:                                              ; preds = %573
  %583 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %584 = call ptr @internal_dlsym(ptr noundef %583)
  store ptr %584, ptr %29, align 8, !tbaa !5
  br label %585

585:                                              ; preds = %582, %576
  %586 = load ptr, ptr %29, align 8, !tbaa !5
  %587 = load ptr, ptr %8, align 8, !tbaa !5
  %588 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %589 = load ptr, ptr %588, align 16, !tbaa !5
  %590 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %591 = load ptr, ptr %590, align 8, !tbaa !5
  %592 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %593 = load ptr, ptr %592, align 16, !tbaa !5
  %594 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %595 = load ptr, ptr %594, align 8, !tbaa !5
  %596 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %597 = load ptr, ptr %596, align 16, !tbaa !5
  %598 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %599 = load ptr, ptr %598, align 8, !tbaa !5
  call void %586(ptr noundef %587, ptr noundef %589, ptr noundef %591, ptr noundef %593, ptr noundef %595, ptr noundef %597, ptr noundef %599)
  br label %1159

600:                                              ; preds = %470
  %601 = load i32, ptr %23, align 4, !tbaa !9
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %609, label %603

603:                                              ; preds = %600
  %604 = load ptr, ptr %15, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.ExternalFunction, ptr %604, i32 0, i32 0
  %606 = load ptr, ptr %605, align 8, !tbaa !20
  %607 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %608 = call ptr @dlsym(ptr noundef %606, ptr noundef %607) #7
  store ptr %608, ptr %30, align 8, !tbaa !5
  br label %612

609:                                              ; preds = %600
  %610 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %611 = call ptr @internal_dlsym(ptr noundef %610)
  store ptr %611, ptr %30, align 8, !tbaa !5
  br label %612

612:                                              ; preds = %609, %603
  %613 = load ptr, ptr %30, align 8, !tbaa !5
  %614 = load ptr, ptr %8, align 8, !tbaa !5
  %615 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %616 = load ptr, ptr %615, align 16, !tbaa !5
  %617 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %618 = load ptr, ptr %617, align 8, !tbaa !5
  %619 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %620 = load ptr, ptr %619, align 16, !tbaa !5
  %621 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %622 = load ptr, ptr %621, align 8, !tbaa !5
  %623 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %624 = load ptr, ptr %623, align 16, !tbaa !5
  %625 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %626 = load ptr, ptr %625, align 8, !tbaa !5
  %627 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %628 = load ptr, ptr %627, align 16, !tbaa !5
  call void %613(ptr noundef %614, ptr noundef %616, ptr noundef %618, ptr noundef %620, ptr noundef %622, ptr noundef %624, ptr noundef %626, ptr noundef %628)
  br label %1159

629:                                              ; preds = %470
  %630 = load i32, ptr %23, align 4, !tbaa !9
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %638, label %632

632:                                              ; preds = %629
  %633 = load ptr, ptr %15, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.ExternalFunction, ptr %633, i32 0, i32 0
  %635 = load ptr, ptr %634, align 8, !tbaa !20
  %636 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %637 = call ptr @dlsym(ptr noundef %635, ptr noundef %636) #7
  store ptr %637, ptr %31, align 8, !tbaa !5
  br label %641

638:                                              ; preds = %629
  %639 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %640 = call ptr @internal_dlsym(ptr noundef %639)
  store ptr %640, ptr %31, align 8, !tbaa !5
  br label %641

641:                                              ; preds = %638, %632
  %642 = load ptr, ptr %31, align 8, !tbaa !5
  %643 = load ptr, ptr %8, align 8, !tbaa !5
  %644 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %645 = load ptr, ptr %644, align 16, !tbaa !5
  %646 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %647 = load ptr, ptr %646, align 8, !tbaa !5
  %648 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %649 = load ptr, ptr %648, align 16, !tbaa !5
  %650 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %651 = load ptr, ptr %650, align 8, !tbaa !5
  %652 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %653 = load ptr, ptr %652, align 16, !tbaa !5
  %654 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %655 = load ptr, ptr %654, align 8, !tbaa !5
  %656 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %657 = load ptr, ptr %656, align 16, !tbaa !5
  %658 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %659 = load ptr, ptr %658, align 8, !tbaa !5
  call void %642(ptr noundef %643, ptr noundef %645, ptr noundef %647, ptr noundef %649, ptr noundef %651, ptr noundef %653, ptr noundef %655, ptr noundef %657, ptr noundef %659)
  br label %1159

660:                                              ; preds = %470
  %661 = load i32, ptr %23, align 4, !tbaa !9
  %662 = icmp ne i32 %661, 0
  br i1 %662, label %669, label %663

663:                                              ; preds = %660
  %664 = load ptr, ptr %15, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.ExternalFunction, ptr %664, i32 0, i32 0
  %666 = load ptr, ptr %665, align 8, !tbaa !20
  %667 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %668 = call ptr @dlsym(ptr noundef %666, ptr noundef %667) #7
  store ptr %668, ptr %32, align 8, !tbaa !5
  br label %672

669:                                              ; preds = %660
  %670 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %671 = call ptr @internal_dlsym(ptr noundef %670)
  store ptr %671, ptr %32, align 8, !tbaa !5
  br label %672

672:                                              ; preds = %669, %663
  %673 = load ptr, ptr %32, align 8, !tbaa !5
  %674 = load ptr, ptr %8, align 8, !tbaa !5
  %675 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %676 = load ptr, ptr %675, align 16, !tbaa !5
  %677 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %678 = load ptr, ptr %677, align 8, !tbaa !5
  %679 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %680 = load ptr, ptr %679, align 16, !tbaa !5
  %681 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %682 = load ptr, ptr %681, align 8, !tbaa !5
  %683 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %684 = load ptr, ptr %683, align 16, !tbaa !5
  %685 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %686 = load ptr, ptr %685, align 8, !tbaa !5
  %687 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %688 = load ptr, ptr %687, align 16, !tbaa !5
  %689 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %690 = load ptr, ptr %689, align 8, !tbaa !5
  %691 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %692 = load ptr, ptr %691, align 16, !tbaa !5
  call void %673(ptr noundef %674, ptr noundef %676, ptr noundef %678, ptr noundef %680, ptr noundef %682, ptr noundef %684, ptr noundef %686, ptr noundef %688, ptr noundef %690, ptr noundef %692)
  br label %1159

693:                                              ; preds = %470
  %694 = load i32, ptr %23, align 4, !tbaa !9
  %695 = icmp ne i32 %694, 0
  br i1 %695, label %702, label %696

696:                                              ; preds = %693
  %697 = load ptr, ptr %15, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.ExternalFunction, ptr %697, i32 0, i32 0
  %699 = load ptr, ptr %698, align 8, !tbaa !20
  %700 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %701 = call ptr @dlsym(ptr noundef %699, ptr noundef %700) #7
  store ptr %701, ptr %33, align 8, !tbaa !5
  br label %705

702:                                              ; preds = %693
  %703 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %704 = call ptr @internal_dlsym(ptr noundef %703)
  store ptr %704, ptr %33, align 8, !tbaa !5
  br label %705

705:                                              ; preds = %702, %696
  %706 = load ptr, ptr %33, align 8, !tbaa !5
  %707 = load ptr, ptr %8, align 8, !tbaa !5
  %708 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %709 = load ptr, ptr %708, align 16, !tbaa !5
  %710 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %711 = load ptr, ptr %710, align 8, !tbaa !5
  %712 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %713 = load ptr, ptr %712, align 16, !tbaa !5
  %714 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %715 = load ptr, ptr %714, align 8, !tbaa !5
  %716 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %717 = load ptr, ptr %716, align 16, !tbaa !5
  %718 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %719 = load ptr, ptr %718, align 8, !tbaa !5
  %720 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %721 = load ptr, ptr %720, align 16, !tbaa !5
  %722 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %723 = load ptr, ptr %722, align 8, !tbaa !5
  %724 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %725 = load ptr, ptr %724, align 16, !tbaa !5
  %726 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %727 = load ptr, ptr %726, align 8, !tbaa !5
  call void %706(ptr noundef %707, ptr noundef %709, ptr noundef %711, ptr noundef %713, ptr noundef %715, ptr noundef %717, ptr noundef %719, ptr noundef %721, ptr noundef %723, ptr noundef %725, ptr noundef %727)
  br label %1159

728:                                              ; preds = %470
  %729 = load i32, ptr %23, align 4, !tbaa !9
  %730 = icmp ne i32 %729, 0
  br i1 %730, label %737, label %731

731:                                              ; preds = %728
  %732 = load ptr, ptr %15, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ExternalFunction, ptr %732, i32 0, i32 0
  %734 = load ptr, ptr %733, align 8, !tbaa !20
  %735 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %736 = call ptr @dlsym(ptr noundef %734, ptr noundef %735) #7
  store ptr %736, ptr %34, align 8, !tbaa !5
  br label %740

737:                                              ; preds = %728
  %738 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %739 = call ptr @internal_dlsym(ptr noundef %738)
  store ptr %739, ptr %34, align 8, !tbaa !5
  br label %740

740:                                              ; preds = %737, %731
  %741 = load ptr, ptr %34, align 8, !tbaa !5
  %742 = load ptr, ptr %8, align 8, !tbaa !5
  %743 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %744 = load ptr, ptr %743, align 16, !tbaa !5
  %745 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %746 = load ptr, ptr %745, align 8, !tbaa !5
  %747 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %748 = load ptr, ptr %747, align 16, !tbaa !5
  %749 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %750 = load ptr, ptr %749, align 8, !tbaa !5
  %751 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %752 = load ptr, ptr %751, align 16, !tbaa !5
  %753 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %754 = load ptr, ptr %753, align 8, !tbaa !5
  %755 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %756 = load ptr, ptr %755, align 16, !tbaa !5
  %757 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %758 = load ptr, ptr %757, align 8, !tbaa !5
  %759 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %760 = load ptr, ptr %759, align 16, !tbaa !5
  %761 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %762 = load ptr, ptr %761, align 8, !tbaa !5
  %763 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %764 = load ptr, ptr %763, align 16, !tbaa !5
  call void %741(ptr noundef %742, ptr noundef %744, ptr noundef %746, ptr noundef %748, ptr noundef %750, ptr noundef %752, ptr noundef %754, ptr noundef %756, ptr noundef %758, ptr noundef %760, ptr noundef %762, ptr noundef %764)
  br label %1159

765:                                              ; preds = %470
  %766 = load i32, ptr %23, align 4, !tbaa !9
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %774, label %768

768:                                              ; preds = %765
  %769 = load ptr, ptr %15, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.ExternalFunction, ptr %769, i32 0, i32 0
  %771 = load ptr, ptr %770, align 8, !tbaa !20
  %772 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %773 = call ptr @dlsym(ptr noundef %771, ptr noundef %772) #7
  store ptr %773, ptr %35, align 8, !tbaa !5
  br label %777

774:                                              ; preds = %765
  %775 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %776 = call ptr @internal_dlsym(ptr noundef %775)
  store ptr %776, ptr %35, align 8, !tbaa !5
  br label %777

777:                                              ; preds = %774, %768
  %778 = load ptr, ptr %35, align 8, !tbaa !5
  %779 = load ptr, ptr %8, align 8, !tbaa !5
  %780 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %781 = load ptr, ptr %780, align 16, !tbaa !5
  %782 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %783 = load ptr, ptr %782, align 8, !tbaa !5
  %784 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %785 = load ptr, ptr %784, align 16, !tbaa !5
  %786 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %787 = load ptr, ptr %786, align 8, !tbaa !5
  %788 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %789 = load ptr, ptr %788, align 16, !tbaa !5
  %790 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %791 = load ptr, ptr %790, align 8, !tbaa !5
  %792 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %793 = load ptr, ptr %792, align 16, !tbaa !5
  %794 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %795 = load ptr, ptr %794, align 8, !tbaa !5
  %796 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %797 = load ptr, ptr %796, align 16, !tbaa !5
  %798 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %799 = load ptr, ptr %798, align 8, !tbaa !5
  %800 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %801 = load ptr, ptr %800, align 16, !tbaa !5
  %802 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 11
  %803 = load ptr, ptr %802, align 8, !tbaa !5
  call void %778(ptr noundef %779, ptr noundef %781, ptr noundef %783, ptr noundef %785, ptr noundef %787, ptr noundef %789, ptr noundef %791, ptr noundef %793, ptr noundef %795, ptr noundef %797, ptr noundef %799, ptr noundef %801, ptr noundef %803)
  br label %1159

804:                                              ; preds = %470
  %805 = load i32, ptr %23, align 4, !tbaa !9
  %806 = icmp ne i32 %805, 0
  br i1 %806, label %813, label %807

807:                                              ; preds = %804
  %808 = load ptr, ptr %15, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.ExternalFunction, ptr %808, i32 0, i32 0
  %810 = load ptr, ptr %809, align 8, !tbaa !20
  %811 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %812 = call ptr @dlsym(ptr noundef %810, ptr noundef %811) #7
  store ptr %812, ptr %36, align 8, !tbaa !5
  br label %816

813:                                              ; preds = %804
  %814 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %815 = call ptr @internal_dlsym(ptr noundef %814)
  store ptr %815, ptr %36, align 8, !tbaa !5
  br label %816

816:                                              ; preds = %813, %807
  %817 = load ptr, ptr %36, align 8, !tbaa !5
  %818 = load ptr, ptr %8, align 8, !tbaa !5
  %819 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %820 = load ptr, ptr %819, align 16, !tbaa !5
  %821 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %822 = load ptr, ptr %821, align 8, !tbaa !5
  %823 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %824 = load ptr, ptr %823, align 16, !tbaa !5
  %825 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %826 = load ptr, ptr %825, align 8, !tbaa !5
  %827 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %828 = load ptr, ptr %827, align 16, !tbaa !5
  %829 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %830 = load ptr, ptr %829, align 8, !tbaa !5
  %831 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %832 = load ptr, ptr %831, align 16, !tbaa !5
  %833 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %834 = load ptr, ptr %833, align 8, !tbaa !5
  %835 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %836 = load ptr, ptr %835, align 16, !tbaa !5
  %837 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %838 = load ptr, ptr %837, align 8, !tbaa !5
  %839 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %840 = load ptr, ptr %839, align 16, !tbaa !5
  %841 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 11
  %842 = load ptr, ptr %841, align 8, !tbaa !5
  %843 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 12
  %844 = load ptr, ptr %843, align 16, !tbaa !5
  call void %817(ptr noundef %818, ptr noundef %820, ptr noundef %822, ptr noundef %824, ptr noundef %826, ptr noundef %828, ptr noundef %830, ptr noundef %832, ptr noundef %834, ptr noundef %836, ptr noundef %838, ptr noundef %840, ptr noundef %842, ptr noundef %844)
  br label %1159

845:                                              ; preds = %470
  %846 = load i32, ptr %23, align 4, !tbaa !9
  %847 = icmp ne i32 %846, 0
  br i1 %847, label %854, label %848

848:                                              ; preds = %845
  %849 = load ptr, ptr %15, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.ExternalFunction, ptr %849, i32 0, i32 0
  %851 = load ptr, ptr %850, align 8, !tbaa !20
  %852 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %853 = call ptr @dlsym(ptr noundef %851, ptr noundef %852) #7
  store ptr %853, ptr %37, align 8, !tbaa !5
  br label %857

854:                                              ; preds = %845
  %855 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %856 = call ptr @internal_dlsym(ptr noundef %855)
  store ptr %856, ptr %37, align 8, !tbaa !5
  br label %857

857:                                              ; preds = %854, %848
  %858 = load ptr, ptr %37, align 8, !tbaa !5
  %859 = load ptr, ptr %8, align 8, !tbaa !5
  %860 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %861 = load ptr, ptr %860, align 16, !tbaa !5
  %862 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %863 = load ptr, ptr %862, align 8, !tbaa !5
  %864 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %865 = load ptr, ptr %864, align 16, !tbaa !5
  %866 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %867 = load ptr, ptr %866, align 8, !tbaa !5
  %868 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %869 = load ptr, ptr %868, align 16, !tbaa !5
  %870 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %871 = load ptr, ptr %870, align 8, !tbaa !5
  %872 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %873 = load ptr, ptr %872, align 16, !tbaa !5
  %874 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %875 = load ptr, ptr %874, align 8, !tbaa !5
  %876 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %877 = load ptr, ptr %876, align 16, !tbaa !5
  %878 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %879 = load ptr, ptr %878, align 8, !tbaa !5
  %880 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %881 = load ptr, ptr %880, align 16, !tbaa !5
  %882 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 11
  %883 = load ptr, ptr %882, align 8, !tbaa !5
  %884 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 12
  %885 = load ptr, ptr %884, align 16, !tbaa !5
  %886 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 13
  %887 = load ptr, ptr %886, align 8, !tbaa !5
  call void %858(ptr noundef %859, ptr noundef %861, ptr noundef %863, ptr noundef %865, ptr noundef %867, ptr noundef %869, ptr noundef %871, ptr noundef %873, ptr noundef %875, ptr noundef %877, ptr noundef %879, ptr noundef %881, ptr noundef %883, ptr noundef %885, ptr noundef %887)
  br label %1159

888:                                              ; preds = %470
  %889 = load i32, ptr %23, align 4, !tbaa !9
  %890 = icmp ne i32 %889, 0
  br i1 %890, label %897, label %891

891:                                              ; preds = %888
  %892 = load ptr, ptr %15, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.ExternalFunction, ptr %892, i32 0, i32 0
  %894 = load ptr, ptr %893, align 8, !tbaa !20
  %895 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %896 = call ptr @dlsym(ptr noundef %894, ptr noundef %895) #7
  store ptr %896, ptr %38, align 8, !tbaa !5
  br label %900

897:                                              ; preds = %888
  %898 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %899 = call ptr @internal_dlsym(ptr noundef %898)
  store ptr %899, ptr %38, align 8, !tbaa !5
  br label %900

900:                                              ; preds = %897, %891
  %901 = load ptr, ptr %38, align 8, !tbaa !5
  %902 = load ptr, ptr %8, align 8, !tbaa !5
  %903 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %904 = load ptr, ptr %903, align 16, !tbaa !5
  %905 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %906 = load ptr, ptr %905, align 8, !tbaa !5
  %907 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %908 = load ptr, ptr %907, align 16, !tbaa !5
  %909 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %910 = load ptr, ptr %909, align 8, !tbaa !5
  %911 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %912 = load ptr, ptr %911, align 16, !tbaa !5
  %913 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %914 = load ptr, ptr %913, align 8, !tbaa !5
  %915 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %916 = load ptr, ptr %915, align 16, !tbaa !5
  %917 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %918 = load ptr, ptr %917, align 8, !tbaa !5
  %919 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %920 = load ptr, ptr %919, align 16, !tbaa !5
  %921 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %922 = load ptr, ptr %921, align 8, !tbaa !5
  %923 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %924 = load ptr, ptr %923, align 16, !tbaa !5
  %925 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 11
  %926 = load ptr, ptr %925, align 8, !tbaa !5
  %927 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 12
  %928 = load ptr, ptr %927, align 16, !tbaa !5
  %929 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 13
  %930 = load ptr, ptr %929, align 8, !tbaa !5
  %931 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 14
  %932 = load ptr, ptr %931, align 16, !tbaa !5
  call void %901(ptr noundef %902, ptr noundef %904, ptr noundef %906, ptr noundef %908, ptr noundef %910, ptr noundef %912, ptr noundef %914, ptr noundef %916, ptr noundef %918, ptr noundef %920, ptr noundef %922, ptr noundef %924, ptr noundef %926, ptr noundef %928, ptr noundef %930, ptr noundef %932)
  br label %1159

933:                                              ; preds = %470
  %934 = load i32, ptr %23, align 4, !tbaa !9
  %935 = icmp ne i32 %934, 0
  br i1 %935, label %942, label %936

936:                                              ; preds = %933
  %937 = load ptr, ptr %15, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.ExternalFunction, ptr %937, i32 0, i32 0
  %939 = load ptr, ptr %938, align 8, !tbaa !20
  %940 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %941 = call ptr @dlsym(ptr noundef %939, ptr noundef %940) #7
  store ptr %941, ptr %39, align 8, !tbaa !5
  br label %945

942:                                              ; preds = %933
  %943 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %944 = call ptr @internal_dlsym(ptr noundef %943)
  store ptr %944, ptr %39, align 8, !tbaa !5
  br label %945

945:                                              ; preds = %942, %936
  %946 = load ptr, ptr %39, align 8, !tbaa !5
  %947 = load ptr, ptr %8, align 8, !tbaa !5
  %948 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %949 = load ptr, ptr %948, align 16, !tbaa !5
  %950 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %951 = load ptr, ptr %950, align 8, !tbaa !5
  %952 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %953 = load ptr, ptr %952, align 16, !tbaa !5
  %954 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %955 = load ptr, ptr %954, align 8, !tbaa !5
  %956 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %957 = load ptr, ptr %956, align 16, !tbaa !5
  %958 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %959 = load ptr, ptr %958, align 8, !tbaa !5
  %960 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %961 = load ptr, ptr %960, align 16, !tbaa !5
  %962 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %963 = load ptr, ptr %962, align 8, !tbaa !5
  %964 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %965 = load ptr, ptr %964, align 16, !tbaa !5
  %966 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %967 = load ptr, ptr %966, align 8, !tbaa !5
  %968 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %969 = load ptr, ptr %968, align 16, !tbaa !5
  %970 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 11
  %971 = load ptr, ptr %970, align 8, !tbaa !5
  %972 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 12
  %973 = load ptr, ptr %972, align 16, !tbaa !5
  %974 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 13
  %975 = load ptr, ptr %974, align 8, !tbaa !5
  %976 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 14
  %977 = load ptr, ptr %976, align 16, !tbaa !5
  %978 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 15
  %979 = load ptr, ptr %978, align 8, !tbaa !5
  call void %946(ptr noundef %947, ptr noundef %949, ptr noundef %951, ptr noundef %953, ptr noundef %955, ptr noundef %957, ptr noundef %959, ptr noundef %961, ptr noundef %963, ptr noundef %965, ptr noundef %967, ptr noundef %969, ptr noundef %971, ptr noundef %973, ptr noundef %975, ptr noundef %977, ptr noundef %979)
  br label %1159

980:                                              ; preds = %470
  %981 = load i32, ptr %23, align 4, !tbaa !9
  %982 = icmp ne i32 %981, 0
  br i1 %982, label %989, label %983

983:                                              ; preds = %980
  %984 = load ptr, ptr %15, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.ExternalFunction, ptr %984, i32 0, i32 0
  %986 = load ptr, ptr %985, align 8, !tbaa !20
  %987 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %988 = call ptr @dlsym(ptr noundef %986, ptr noundef %987) #7
  store ptr %988, ptr %40, align 8, !tbaa !5
  br label %992

989:                                              ; preds = %980
  %990 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %991 = call ptr @internal_dlsym(ptr noundef %990)
  store ptr %991, ptr %40, align 8, !tbaa !5
  br label %992

992:                                              ; preds = %989, %983
  %993 = load ptr, ptr %40, align 8, !tbaa !5
  %994 = load ptr, ptr %8, align 8, !tbaa !5
  %995 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %996 = load ptr, ptr %995, align 16, !tbaa !5
  %997 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %998 = load ptr, ptr %997, align 8, !tbaa !5
  %999 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %1000 = load ptr, ptr %999, align 16, !tbaa !5
  %1001 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %1002 = load ptr, ptr %1001, align 8, !tbaa !5
  %1003 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %1004 = load ptr, ptr %1003, align 16, !tbaa !5
  %1005 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %1006 = load ptr, ptr %1005, align 8, !tbaa !5
  %1007 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %1008 = load ptr, ptr %1007, align 16, !tbaa !5
  %1009 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %1010 = load ptr, ptr %1009, align 8, !tbaa !5
  %1011 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %1012 = load ptr, ptr %1011, align 16, !tbaa !5
  %1013 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %1014 = load ptr, ptr %1013, align 8, !tbaa !5
  %1015 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %1016 = load ptr, ptr %1015, align 16, !tbaa !5
  %1017 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 11
  %1018 = load ptr, ptr %1017, align 8, !tbaa !5
  %1019 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 12
  %1020 = load ptr, ptr %1019, align 16, !tbaa !5
  %1021 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 13
  %1022 = load ptr, ptr %1021, align 8, !tbaa !5
  %1023 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 14
  %1024 = load ptr, ptr %1023, align 16, !tbaa !5
  %1025 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 15
  %1026 = load ptr, ptr %1025, align 8, !tbaa !5
  %1027 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 16
  %1028 = load ptr, ptr %1027, align 16, !tbaa !5
  call void %993(ptr noundef %994, ptr noundef %996, ptr noundef %998, ptr noundef %1000, ptr noundef %1002, ptr noundef %1004, ptr noundef %1006, ptr noundef %1008, ptr noundef %1010, ptr noundef %1012, ptr noundef %1014, ptr noundef %1016, ptr noundef %1018, ptr noundef %1020, ptr noundef %1022, ptr noundef %1024, ptr noundef %1026, ptr noundef %1028)
  br label %1159

1029:                                             ; preds = %470
  %1030 = load i32, ptr %23, align 4, !tbaa !9
  %1031 = icmp ne i32 %1030, 0
  br i1 %1031, label %1038, label %1032

1032:                                             ; preds = %1029
  %1033 = load ptr, ptr %15, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.ExternalFunction, ptr %1033, i32 0, i32 0
  %1035 = load ptr, ptr %1034, align 8, !tbaa !20
  %1036 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %1037 = call ptr @dlsym(ptr noundef %1035, ptr noundef %1036) #7
  store ptr %1037, ptr %41, align 8, !tbaa !5
  br label %1041

1038:                                             ; preds = %1029
  %1039 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %1040 = call ptr @internal_dlsym(ptr noundef %1039)
  store ptr %1040, ptr %41, align 8, !tbaa !5
  br label %1041

1041:                                             ; preds = %1038, %1032
  %1042 = load ptr, ptr %41, align 8, !tbaa !5
  %1043 = load ptr, ptr %8, align 8, !tbaa !5
  %1044 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %1045 = load ptr, ptr %1044, align 16, !tbaa !5
  %1046 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %1047 = load ptr, ptr %1046, align 8, !tbaa !5
  %1048 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %1049 = load ptr, ptr %1048, align 16, !tbaa !5
  %1050 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %1051 = load ptr, ptr %1050, align 8, !tbaa !5
  %1052 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %1053 = load ptr, ptr %1052, align 16, !tbaa !5
  %1054 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %1055 = load ptr, ptr %1054, align 8, !tbaa !5
  %1056 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %1057 = load ptr, ptr %1056, align 16, !tbaa !5
  %1058 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %1059 = load ptr, ptr %1058, align 8, !tbaa !5
  %1060 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %1061 = load ptr, ptr %1060, align 16, !tbaa !5
  %1062 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %1063 = load ptr, ptr %1062, align 8, !tbaa !5
  %1064 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %1065 = load ptr, ptr %1064, align 16, !tbaa !5
  %1066 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 11
  %1067 = load ptr, ptr %1066, align 8, !tbaa !5
  %1068 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 12
  %1069 = load ptr, ptr %1068, align 16, !tbaa !5
  %1070 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 13
  %1071 = load ptr, ptr %1070, align 8, !tbaa !5
  %1072 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 14
  %1073 = load ptr, ptr %1072, align 16, !tbaa !5
  %1074 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 15
  %1075 = load ptr, ptr %1074, align 8, !tbaa !5
  %1076 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 16
  %1077 = load ptr, ptr %1076, align 16, !tbaa !5
  %1078 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 17
  %1079 = load ptr, ptr %1078, align 8, !tbaa !5
  call void %1042(ptr noundef %1043, ptr noundef %1045, ptr noundef %1047, ptr noundef %1049, ptr noundef %1051, ptr noundef %1053, ptr noundef %1055, ptr noundef %1057, ptr noundef %1059, ptr noundef %1061, ptr noundef %1063, ptr noundef %1065, ptr noundef %1067, ptr noundef %1069, ptr noundef %1071, ptr noundef %1073, ptr noundef %1075, ptr noundef %1077, ptr noundef %1079)
  br label %1159

1080:                                             ; preds = %470
  %1081 = load i32, ptr %23, align 4, !tbaa !9
  %1082 = icmp ne i32 %1081, 0
  br i1 %1082, label %1089, label %1083

1083:                                             ; preds = %1080
  %1084 = load ptr, ptr %15, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.ExternalFunction, ptr %1084, i32 0, i32 0
  %1086 = load ptr, ptr %1085, align 8, !tbaa !20
  %1087 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %1088 = call ptr @dlsym(ptr noundef %1086, ptr noundef %1087) #7
  store ptr %1088, ptr %42, align 8, !tbaa !5
  br label %1092

1089:                                             ; preds = %1080
  %1090 = getelementptr inbounds [40 x i8], ptr %22, i64 0, i64 0
  %1091 = call ptr @internal_dlsym(ptr noundef %1090)
  store ptr %1091, ptr %42, align 8, !tbaa !5
  br label %1092

1092:                                             ; preds = %1089, %1083
  %1093 = load ptr, ptr %42, align 8, !tbaa !5
  %1094 = load ptr, ptr %8, align 8, !tbaa !5
  %1095 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %1096 = load ptr, ptr %1095, align 16, !tbaa !5
  %1097 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 1
  %1098 = load ptr, ptr %1097, align 8, !tbaa !5
  %1099 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 2
  %1100 = load ptr, ptr %1099, align 16, !tbaa !5
  %1101 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 3
  %1102 = load ptr, ptr %1101, align 8, !tbaa !5
  %1103 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 4
  %1104 = load ptr, ptr %1103, align 16, !tbaa !5
  %1105 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 5
  %1106 = load ptr, ptr %1105, align 8, !tbaa !5
  %1107 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 6
  %1108 = load ptr, ptr %1107, align 16, !tbaa !5
  %1109 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 7
  %1110 = load ptr, ptr %1109, align 8, !tbaa !5
  %1111 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 8
  %1112 = load ptr, ptr %1111, align 16, !tbaa !5
  %1113 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 9
  %1114 = load ptr, ptr %1113, align 8, !tbaa !5
  %1115 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 10
  %1116 = load ptr, ptr %1115, align 16, !tbaa !5
  %1117 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 11
  %1118 = load ptr, ptr %1117, align 8, !tbaa !5
  %1119 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 12
  %1120 = load ptr, ptr %1119, align 16, !tbaa !5
  %1121 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 13
  %1122 = load ptr, ptr %1121, align 8, !tbaa !5
  %1123 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 14
  %1124 = load ptr, ptr %1123, align 16, !tbaa !5
  %1125 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 15
  %1126 = load ptr, ptr %1125, align 8, !tbaa !5
  %1127 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 16
  %1128 = load ptr, ptr %1127, align 16, !tbaa !5
  %1129 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 17
  %1130 = load ptr, ptr %1129, align 8, !tbaa !5
  %1131 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 18
  %1132 = load ptr, ptr %1131, align 16, !tbaa !5
  call void %1093(ptr noundef %1094, ptr noundef %1096, ptr noundef %1098, ptr noundef %1100, ptr noundef %1102, ptr noundef %1104, ptr noundef %1106, ptr noundef %1108, ptr noundef %1110, ptr noundef %1112, ptr noundef %1114, ptr noundef %1116, ptr noundef %1118, ptr noundef %1120, ptr noundef %1122, ptr noundef %1124, ptr noundef %1126, ptr noundef %1128, ptr noundef %1130, ptr noundef %1132)
  br label %1159

1133:                                             ; preds = %470
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1134

1134:                                             ; preds = %1152, %1133
  %1135 = load i32, ptr %19, align 4, !tbaa !9
  %1136 = icmp slt i32 %1135, 9
  br i1 %1136, label %1137, label %1155

1137:                                             ; preds = %1134
  %1138 = load i32, ptr %19, align 4, !tbaa !9
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %1139
  %1141 = load ptr, ptr %1140, align 8, !tbaa !5
  %1142 = icmp eq ptr %1141, null
  br i1 %1142, label %1143, label %1144

1143:                                             ; preds = %1137
  br label %1155

1144:                                             ; preds = %1137
  %1145 = load i32, ptr %19, align 4, !tbaa !9
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %1146
  %1148 = load ptr, ptr %1147, align 8, !tbaa !5
  call void @FerMem_Free(ptr noundef %1148, ptr noundef @.str, i32 noundef 2708)
  %1149 = load i32, ptr %19, align 4, !tbaa !9
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %1150
  store ptr null, ptr %1151, align 8, !tbaa !5
  br label %1152

1152:                                             ; preds = %1144
  %1153 = load i32, ptr %19, align 4, !tbaa !9
  %1154 = add nsw i32 %1153, 1
  store i32 %1154, ptr %19, align 4, !tbaa !9
  br label %1134, !llvm.loop !27

1155:                                             ; preds = %1143, %1134
  %1156 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1156, ptr noundef @.str.43, i32 noundef 9) #7
  %1158 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %1158, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

1159:                                             ; preds = %1092, %1041, %992, %945, %900, %857, %816, %777, %740, %705, %672, %641, %612, %585, %560, %537, %516, %497
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1160

1160:                                             ; preds = %1178, %1159
  %1161 = load i32, ptr %19, align 4, !tbaa !9
  %1162 = icmp slt i32 %1161, 9
  br i1 %1162, label %1163, label %1181

1163:                                             ; preds = %1160
  %1164 = load i32, ptr %19, align 4, !tbaa !9
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %1165
  %1167 = load ptr, ptr %1166, align 8, !tbaa !5
  %1168 = icmp eq ptr %1167, null
  br i1 %1168, label %1169, label %1170

1169:                                             ; preds = %1163
  br label %1181

1170:                                             ; preds = %1163
  %1171 = load i32, ptr %19, align 4, !tbaa !9
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %1172
  %1174 = load ptr, ptr %1173, align 8, !tbaa !5
  call void @FerMem_Free(ptr noundef %1174, ptr noundef @.str, i32 noundef 2723)
  %1175 = load i32, ptr %19, align 4, !tbaa !9
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %1176
  store ptr null, ptr %1177, align 8, !tbaa !5
  br label %1178

1178:                                             ; preds = %1170
  %1179 = load i32, ptr %19, align 4, !tbaa !9
  %1180 = add nsw i32 %1179, 1
  store i32 %1180, ptr %19, align 4, !tbaa !9
  br label %1160, !llvm.loop !28

1181:                                             ; preds = %1169, %1160
  %1182 = call i32 @EF_Util_ressig(ptr noundef @.str.41)
  %1183 = icmp ne i32 %1182, 0
  br i1 %1183, label %1184, label %1186

1184:                                             ; preds = %1181
  %1185 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %1185, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1369

1186:                                             ; preds = %1181
  br label %1368

1187:                                             ; preds = %85
  %1188 = load ptr, ptr %16, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %1188, i32 0, i32 4
  %1190 = load i32, ptr %1189, align 4, !tbaa !16
  %1191 = icmp eq i32 %1190, 3
  br i1 %1191, label %1192, label %1360

1192:                                             ; preds = %1187
  call void @llvm.lifetime.start.p0(i64 456, ptr %57) #7
  call void @llvm.lifetime.start.p0(i64 456, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 456, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 456, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 456, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 76, ptr %62) #7
  call void @llvm.lifetime.start.p0(i64 2048, ptr %63) #7
  %1193 = load ptr, ptr @pyefcn_compute_func, align 8, !tbaa !5
  %1194 = icmp eq ptr %1193, null
  br i1 %1194, label %1195, label %1213

1195:                                             ; preds = %1192
  %1196 = load ptr, ptr @pyefcn_handle, align 8, !tbaa !5
  %1197 = icmp eq ptr %1196, null
  br i1 %1197, label %1198, label %1202

1198:                                             ; preds = %1195
  %1199 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1200 = call i32 @fputs(ptr noundef @.str.44, ptr noundef %1199)
  %1201 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %1201, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1357

1202:                                             ; preds = %1195
  %1203 = load ptr, ptr @pyefcn_handle, align 8, !tbaa !5
  %1204 = call ptr @dlsym(ptr noundef %1203, ptr noundef @.str.45) #7
  store ptr %1204, ptr @pyefcn_compute_func, align 8, !tbaa !5
  %1205 = load ptr, ptr @pyefcn_compute_func, align 8, !tbaa !5
  %1206 = icmp eq ptr %1205, null
  br i1 %1206, label %1207, label %1212

1207:                                             ; preds = %1202
  %1208 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1209 = call ptr @dlerror() #7
  %1210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1208, ptr noundef @.str.46, ptr noundef %1209) #7
  %1211 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %1211, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1357

1212:                                             ; preds = %1202
  br label %1213

1213:                                             ; preds = %1212, %1192
  %1214 = load ptr, ptr @GLOBAL_res_ptr, align 8, !tbaa !5
  %1215 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  store ptr %1214, ptr %1215, align 16, !tbaa !5
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %1216

1216:                                             ; preds = %1231, %1213
  %1217 = load i32, ptr %18, align 4, !tbaa !9
  %1218 = load ptr, ptr %16, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %1218, i32 0, i32 5
  %1220 = load i32, ptr %1219, align 8, !tbaa !13
  %1221 = icmp slt i32 %1217, %1220
  br i1 %1221, label %1222, label %1234

1222:                                             ; preds = %1216
  %1223 = load i32, ptr %18, align 4, !tbaa !9
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds [9 x ptr], ptr @GLOBAL_arg_ptrs, i64 0, i64 %1224
  %1226 = load ptr, ptr %1225, align 8, !tbaa !5
  %1227 = load i32, ptr %18, align 4, !tbaa !9
  %1228 = add nsw i32 %1227, 1
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 %1229
  store ptr %1226, ptr %1230, align 8, !tbaa !5
  br label %1231

1231:                                             ; preds = %1222
  %1232 = load i32, ptr %18, align 4, !tbaa !9
  %1233 = add nsw i32 %1232, 1
  store i32 %1233, ptr %18, align 4, !tbaa !9
  br label %1216, !llvm.loop !29

1234:                                             ; preds = %1216
  %1235 = load ptr, ptr %8, align 8, !tbaa !5
  %1236 = getelementptr inbounds [19 x [6 x i32]], ptr %57, i64 0, i64 0
  %1237 = getelementptr inbounds [6 x i32], ptr %1236, i64 0, i64 0
  %1238 = getelementptr inbounds [19 x [6 x i32]], ptr %58, i64 0, i64 0
  %1239 = getelementptr inbounds [6 x i32], ptr %1238, i64 0, i64 0
  call void @ef_get_res_mem_subscripts_6d_(ptr noundef %1235, ptr noundef %1237, ptr noundef %1239)
  %1240 = load ptr, ptr %8, align 8, !tbaa !5
  %1241 = getelementptr inbounds [19 x [6 x i32]], ptr %57, i64 0, i64 1
  %1242 = getelementptr inbounds [19 x [6 x i32]], ptr %58, i64 0, i64 1
  call void @ef_get_arg_mem_subscripts_6d_(ptr noundef %1240, ptr noundef %1241, ptr noundef %1242)
  %1243 = load ptr, ptr %8, align 8, !tbaa !5
  %1244 = getelementptr inbounds [19 x [6 x i32]], ptr %59, i64 0, i64 0
  %1245 = getelementptr inbounds [6 x i32], ptr %1244, i64 0, i64 0
  %1246 = getelementptr inbounds [19 x [6 x i32]], ptr %60, i64 0, i64 0
  %1247 = getelementptr inbounds [6 x i32], ptr %1246, i64 0, i64 0
  %1248 = getelementptr inbounds [19 x [6 x i32]], ptr %61, i64 0, i64 0
  %1249 = getelementptr inbounds [6 x i32], ptr %1248, i64 0, i64 0
  call void @ef_get_res_subscripts_6d_(ptr noundef %1243, ptr noundef %1245, ptr noundef %1247, ptr noundef %1249)
  %1250 = load ptr, ptr %8, align 8, !tbaa !5
  %1251 = getelementptr inbounds [19 x [6 x i32]], ptr %59, i64 0, i64 1
  %1252 = getelementptr inbounds [19 x [6 x i32]], ptr %60, i64 0, i64 1
  %1253 = getelementptr inbounds [19 x [6 x i32]], ptr %61, i64 0, i64 1
  call void @ef_get_arg_subscripts_6d_(ptr noundef %1250, ptr noundef %1251, ptr noundef %1252, ptr noundef %1253)
  %1254 = load ptr, ptr %8, align 8, !tbaa !5
  %1255 = getelementptr inbounds [19 x float], ptr %62, i64 0, i64 1
  %1256 = getelementptr inbounds [19 x float], ptr %62, i64 0, i64 0
  call void @ef_get_bad_flags_(ptr noundef %1254, ptr noundef %1255, ptr noundef %1256)
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %1257

1257:                                             ; preds = %1312, %1234
  %1258 = load i32, ptr %18, align 4, !tbaa !9
  %1259 = load ptr, ptr %16, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %1259, i32 0, i32 5
  %1261 = load i32, ptr %1260, align 8, !tbaa !13
  %1262 = icmp sle i32 %1258, %1261
  br i1 %1262, label %1263, label %1315

1263:                                             ; preds = %1257
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1264

1264:                                             ; preds = %1308, %1263
  %1265 = load i32, ptr %19, align 4, !tbaa !9
  %1266 = icmp slt i32 %1265, 6
  br i1 %1266, label %1267, label %1311

1267:                                             ; preds = %1264
  %1268 = load i32, ptr %18, align 4, !tbaa !9
  %1269 = sext i32 %1268 to i64
  %1270 = getelementptr inbounds [19 x [6 x i32]], ptr %61, i64 0, i64 %1269
  %1271 = load i32, ptr %19, align 4, !tbaa !9
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds [6 x i32], ptr %1270, i64 0, i64 %1272
  %1274 = load i32, ptr %1273, align 4, !tbaa !9
  %1275 = icmp eq i32 %1274, 0
  br i1 %1275, label %1276, label %1307

1276:                                             ; preds = %1267
  %1277 = load i32, ptr %18, align 4, !tbaa !9
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds [19 x [6 x i32]], ptr %59, i64 0, i64 %1278
  %1280 = load i32, ptr %19, align 4, !tbaa !9
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds [6 x i32], ptr %1279, i64 0, i64 %1281
  %1283 = load i32, ptr %1282, align 4, !tbaa !9
  %1284 = load i32, ptr %18, align 4, !tbaa !9
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds [19 x [6 x i32]], ptr %60, i64 0, i64 %1285
  %1287 = load i32, ptr %19, align 4, !tbaa !9
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds [6 x i32], ptr %1286, i64 0, i64 %1288
  %1290 = load i32, ptr %1289, align 4, !tbaa !9
  %1291 = icmp sle i32 %1283, %1290
  br i1 %1291, label %1292, label %1299

1292:                                             ; preds = %1276
  %1293 = load i32, ptr %18, align 4, !tbaa !9
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds [19 x [6 x i32]], ptr %61, i64 0, i64 %1294
  %1296 = load i32, ptr %19, align 4, !tbaa !9
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds [6 x i32], ptr %1295, i64 0, i64 %1297
  store i32 1, ptr %1298, align 4, !tbaa !9
  br label %1306

1299:                                             ; preds = %1276
  %1300 = load i32, ptr %18, align 4, !tbaa !9
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds [19 x [6 x i32]], ptr %61, i64 0, i64 %1301
  %1303 = load i32, ptr %19, align 4, !tbaa !9
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds [6 x i32], ptr %1302, i64 0, i64 %1304
  store i32 -1, ptr %1305, align 4, !tbaa !9
  br label %1306

1306:                                             ; preds = %1299, %1292
  br label %1307

1307:                                             ; preds = %1306, %1267
  br label %1308

1308:                                             ; preds = %1307
  %1309 = load i32, ptr %19, align 4, !tbaa !9
  %1310 = add nsw i32 %1309, 1
  store i32 %1310, ptr %19, align 4, !tbaa !9
  br label %1264, !llvm.loop !30

1311:                                             ; preds = %1264
  br label %1312

1312:                                             ; preds = %1311
  %1313 = load i32, ptr %18, align 4, !tbaa !9
  %1314 = add nsw i32 %1313, 1
  store i32 %1314, ptr %18, align 4, !tbaa !9
  br label %1257, !llvm.loop !31

1315:                                             ; preds = %1257
  %1316 = call i32 @EF_Util_setsig(ptr noundef @.str.41)
  %1317 = icmp ne i32 %1316, 0
  br i1 %1317, label %1318, label %1320

1318:                                             ; preds = %1315
  %1319 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %1319, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1357

1320:                                             ; preds = %1315
  %1321 = call i32 @__sigsetjmp(ptr noundef @sigjumpbuffer, i32 noundef 1) #9
  %1322 = icmp ne i32 %1321, 0
  br i1 %1322, label %1323, label %1325

1323:                                             ; preds = %1320
  %1324 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %1324, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1357

1325:                                             ; preds = %1320
  %1326 = call i32 @_setjmp(ptr noundef @jumpbuffer) #9
  %1327 = icmp ne i32 %1326, 0
  br i1 %1327, label %1328, label %1330

1328:                                             ; preds = %1325
  %1329 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %1329, align 4, !tbaa !9
  store i32 1, ptr %43, align 4
  br label %1357

1330:                                             ; preds = %1325
  store volatile i32 1, ptr @canjump, align 4, !tbaa !9
  %1331 = load ptr, ptr @pyefcn_compute_func, align 8, !tbaa !5
  %1332 = load ptr, ptr %8, align 8, !tbaa !5
  %1333 = load i32, ptr %1332, align 4, !tbaa !9
  %1334 = load ptr, ptr %15, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.ExternalFunction, ptr %1334, i32 0, i32 2
  %1336 = getelementptr inbounds [128 x i8], ptr %1335, i64 0, i64 0
  %1337 = getelementptr inbounds [19 x ptr], ptr %17, i64 0, i64 0
  %1338 = load ptr, ptr %16, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %1338, i32 0, i32 5
  %1340 = load i32, ptr %1339, align 8, !tbaa !13
  %1341 = add nsw i32 %1340, 1
  %1342 = getelementptr inbounds [19 x [6 x i32]], ptr %57, i64 0, i64 0
  %1343 = getelementptr inbounds [19 x [6 x i32]], ptr %58, i64 0, i64 0
  %1344 = getelementptr inbounds [19 x [6 x i32]], ptr %59, i64 0, i64 0
  %1345 = getelementptr inbounds [19 x [6 x i32]], ptr %60, i64 0, i64 0
  %1346 = getelementptr inbounds [19 x [6 x i32]], ptr %61, i64 0, i64 0
  %1347 = getelementptr inbounds [19 x float], ptr %62, i64 0, i64 0
  %1348 = getelementptr inbounds [2048 x i8], ptr %63, i64 0, i64 0
  call void %1331(i32 noundef %1333, ptr noundef %1336, ptr noundef %1337, i32 noundef %1341, ptr noundef %1342, ptr noundef %1343, ptr noundef %1344, ptr noundef %1345, ptr noundef %1346, ptr noundef %1347, ptr noundef %1348)
  %1349 = getelementptr inbounds [2048 x i8], ptr %63, i64 0, i64 0
  %1350 = call i64 @strlen(ptr noundef %1349) #8
  %1351 = icmp ugt i64 %1350, 0
  br i1 %1351, label %1352, label %1355

1352:                                             ; preds = %1330
  %1353 = load ptr, ptr %8, align 8, !tbaa !5
  %1354 = getelementptr inbounds [2048 x i8], ptr %63, i64 0, i64 0
  call void @ef_err_bail_out_(ptr noundef %1353, ptr noundef %1354)
  br label %1355

1355:                                             ; preds = %1352, %1330
  %1356 = call i32 @EF_Util_ressig(ptr noundef @.str.41)
  store i32 0, ptr %43, align 4
  br label %1357

1357:                                             ; preds = %1355, %1328, %1323, %1318, %1207, %1198
  call void @llvm.lifetime.end.p0(i64 2048, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 76, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 456, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 456, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 456, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 456, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 456, ptr %57) #7
  %1358 = load i32, ptr %43, align 4
  switch i32 %1358, label %1369 [
    i32 0, label %1359
  ]

1359:                                             ; preds = %1357
  br label %1367

1360:                                             ; preds = %1187
  %1361 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1362 = load ptr, ptr %16, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.ExternalFunctionInternals, ptr %1362, i32 0, i32 4
  %1364 = load i32, ptr %1363, align 4, !tbaa !16
  %1365 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1361, ptr noundef @.str.47, i32 noundef %1364) #7
  %1366 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 437, ptr %1366, align 4, !tbaa !9
  br label %1367

1367:                                             ; preds = %1360, %1359
  br label %1368

1368:                                             ; preds = %1367, %1186
  store i32 1, ptr %43, align 4
  br label %1369

1369:                                             ; preds = %1368, %1357, %1184, %1155, %468, %441, %414, %378, %178, %141, %126, %72
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  ret void
}

declare void @efcn_copy_array_dims_() #4

declare void @efcn_rqst_mr_ptrs_(ptr noundef, ptr noundef, ptr noundef) #4

declare void @efcn_set_work_array_dims_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare ptr @FerMem_Malloc(i64 noundef, ptr noundef, i32 noundef) #4

declare void @ef_get_res_mem_subscripts_6d_(ptr noundef, ptr noundef, ptr noundef) #4

declare void @ef_get_arg_mem_subscripts_6d_(ptr noundef, ptr noundef, ptr noundef) #4

declare void @ef_get_res_subscripts_6d_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @ef_get_arg_subscripts_6d_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @ef_get_bad_flags_(ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @EF_Util_setsig(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @EF_Util_ressig(ptr noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 184}
!12 = !{!"", !6, i64 0, !7, i64 8, !7, i64 48, !10, i64 176, !10, i64 180, !6, i64 184}
!13 = !{!14, !10, i64 216}
!14 = !{!"", !15, i64 0, !7, i64 4, !7, i64 132, !7, i64 172, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !7, i64 228, !7, i64 444, !7, i64 660, !7, i64 684, !7, i64 708, !10, i64 732, !7, i64 736, !7, i64 760, !7, i64 1288, !7, i64 1504, !7, i64 1720, !7, i64 1936, !7, i64 1972, !7, i64 2332, !7, i64 2692}
!15 = !{!"float", !7, i64 0}
!16 = !{!14, !10, i64 212}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!14, !10, i64 224}
!20 = !{!12, !6, i64 0}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}
!28 = distinct !{!28, !18}
!29 = distinct !{!29, !18}
!30 = distinct !{!30, !18}
!31 = distinct !{!31, !18}


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

%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@.str = external hidden unnamed_addr constant [76 x i8], align 1
@pyefcn_handle = external hidden local_unnamed_addr global ptr, align 8
@sigjumpbuffer = external hidden global [1 x %struct.__jmp_buf_tag], align 16
@jumpbuffer = external hidden global [1 x %struct.__jmp_buf_tag], align 16
@canjump = external hidden global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str.15 = external hidden unnamed_addr constant [18 x i8], align 1
@efcn_compute_.work_ptr = external hidden local_unnamed_addr global [9 x ptr], align 16
@.str.35 = external hidden unnamed_addr constant [64 x i8], align 1
@GLOBAL_arg_ptrs = external dso_local local_unnamed_addr global [9 x ptr], align 16
@GLOBAL_res_ptr = external dso_local local_unnamed_addr global ptr, align 8
@.str.36 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [137 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [78 x i8], align 1
@pyefcn_compute_func = external hidden local_unnamed_addr global ptr, align 8
@.str.44 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [54 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local ptr @ef_ptr_from_id_ptr(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcat(ptr noalias noundef returned, ptr noalias nocapture noundef readonly) local_unnamed_addr #2

; Function Attrs: nounwind
declare ptr @dlerror() local_unnamed_addr #3

; Function Attrs: nounwind
declare ptr @dlsym(ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @FerMem_Free(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: nounwind returns_twice
declare i32 @__sigsetjmp(ptr noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: nounwind returns_twice
declare i32 @_setjmp(ptr noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: nounwind uwtable
declare hidden ptr @internal_dlsym(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

; Function Attrs: nounwind uwtable
declare dso_local void @EF_store_globals(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @fputs(ptr nocapture noundef readonly, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: nounwind uwtable
declare dso_local void @ef_err_bail_out_(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @efcn_compute_(ptr noundef %0, ptr nocapture noundef readnone %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef writeonly %6) local_unnamed_addr #1 {
  %8 = alloca [19 x ptr], align 16
  %9 = alloca i32, align 4
  %10 = alloca [40 x i8], align 16
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca [19 x [6 x i32]], align 16
  %25 = alloca [19 x [6 x i32]], align 16
  %26 = alloca [19 x [6 x i32]], align 16
  %27 = alloca [19 x [6 x i32]], align 16
  %28 = alloca [19 x [6 x i32]], align 16
  %29 = alloca [19 x float], align 16
  %30 = alloca [2048 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %10, i8 0, i64 40, i1 false)
  store i32 3, ptr %6, align 4, !tbaa !5
  call void @efcn_copy_array_dims_() #10
  call void @EF_store_globals(ptr noundef %3, ptr noundef %2, ptr noundef %4, ptr noundef %5)
  %31 = call ptr @ef_ptr_from_id_ptr(ptr noundef %0)
  %32 = icmp eq ptr %31, null
  br i1 %32, label %33, label %37

33:                                               ; preds = %7
  %34 = load ptr, ptr @stderr, align 8, !tbaa !9
  %35 = load i32, ptr %0, align 4, !tbaa !5
  %36 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %34, ptr noundef nonnull @.str.35, i32 noundef %35) #11
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

37:                                               ; preds = %7
  %38 = getelementptr inbounds i8, ptr %31, i64 48
  %39 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %38, ptr noundef nonnull dereferenceable(1) @.str.15) #12
  %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not = icmp eq i32 %39, 0
  %40 = getelementptr inbounds i8, ptr %31, i64 184
  %41 = load ptr, ptr %40, align 8, !tbaa !11
  %42 = getelementptr inbounds i8, ptr %41, i64 216
  %43 = load i32, ptr %42, align 8, !tbaa !13
  store i32 %43, ptr %9, align 4, !tbaa !5
  call void @efcn_rqst_mr_ptrs_(ptr noundef nonnull %9, ptr noundef %3, ptr noundef %4) #10
  %44 = getelementptr inbounds i8, ptr %41, i64 212
  %45 = load i32, ptr %44, align 4, !tbaa !16
  switch i32 %45, label %871 [
    i32 2, label %.preheader301
    i32 3, label %779
  ]

.preheader301:                                    ; preds = %37
  %46 = load i32, ptr %42, align 8, !tbaa !13
  %47 = icmp sgt i32 %46, 0
  br i1 %47, label %.lr.ph309.preheader, label %._crit_edge310

.lr.ph309.preheader:                              ; preds = %.preheader301
  %48 = zext nneg i32 %46 to i64
  %49 = shl nuw nsw i64 %48, 3
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %8, ptr nonnull align 16 @GLOBAL_arg_ptrs, i64 %49, i1 false), !tbaa !9
  br label %._crit_edge310

._crit_edge310:                                   ; preds = %.lr.ph309.preheader, %.preheader301
  %.0245.lcssa = phi i32 [ 0, %.preheader301 ], [ %46, %.lr.ph309.preheader ]
  %50 = load ptr, ptr @GLOBAL_res_ptr, align 8, !tbaa !9
  %51 = zext nneg i32 %.0245.lcssa to i64
  %52 = getelementptr inbounds [19 x ptr], ptr %8, i64 0, i64 %51
  store ptr %50, ptr %52, align 8, !tbaa !9
  %53 = getelementptr inbounds i8, ptr %41, i64 224
  %54 = load i32, ptr %53, align 8, !tbaa !17
  %55 = icmp sgt i32 %54, 9
  br i1 %55, label %56, label %60

56:                                               ; preds = %._crit_edge310
  %57 = load ptr, ptr @stderr, align 8, !tbaa !9
  %58 = getelementptr inbounds i8, ptr %31, i64 8
  %59 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %57, ptr noundef nonnull @.str.36, ptr noundef nonnull %58, i32 noundef %54, i32 noundef 9) #11
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

60:                                               ; preds = %._crit_edge310
  %61 = icmp slt i32 %54, 0
  br i1 %61, label %62, label %66

62:                                               ; preds = %60
  %63 = load ptr, ptr @stderr, align 8, !tbaa !9
  %64 = getelementptr inbounds i8, ptr %31, i64 8
  %65 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %63, ptr noundef nonnull @.str.37, ptr noundef nonnull %64, i32 noundef %54) #11
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

66:                                               ; preds = %60
  %.not266 = icmp eq i32 %54, 0
  br i1 %.not266, label %.loopexit, label %67

67:                                               ; preds = %66
  %68 = getelementptr inbounds i8, ptr %31, i64 8
  %69 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) %68) #10
  %70 = call ptr @strcat(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) @.str.38) #10
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %74, label %71

71:                                               ; preds = %67
  %72 = load ptr, ptr %31, align 8, !tbaa !18
  %73 = call ptr @dlsym(ptr noundef %72, ptr noundef nonnull %10) #10
  br label %76

74:                                               ; preds = %67
  %75 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %76

76:                                               ; preds = %74, %71
  %.0241 = phi ptr [ %75, %74 ], [ %73, %71 ]
  %77 = icmp eq ptr %.0241, null
  br i1 %77, label %78, label %.preheader299

78:                                               ; preds = %76
  %79 = load ptr, ptr @stderr, align 8, !tbaa !9
  %80 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %79, ptr noundef nonnull @.str.39, ptr noundef nonnull %10) #11
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

.preheader299:                                    ; preds = %76
  call void %.0241(ptr noundef %0) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(72) @efcn_compute_.work_ptr, i8 0, i64 72, i1 false), !tbaa !9
  %81 = load i32, ptr %53, align 8, !tbaa !17
  %82 = icmp sgt i32 %81, 0
  br i1 %82, label %.lr.ph320, label %.loopexit

.lr.ph320:                                        ; preds = %.preheader299
  %83 = getelementptr inbounds i8, ptr %41, i64 228
  %84 = getelementptr inbounds i8, ptr %41, i64 444
  br label %85

85:                                               ; preds = %.lr.ph320, %.thread
  %indvars.iv341 = phi i64 [ 0, %.lr.ph320 ], [ %indvars.iv.next342, %.thread ]
  %indvars.iv339 = phi i64 [ %51, %.lr.ph320 ], [ %indvars.iv.next340, %.thread ]
  %indvars.iv.next340 = add nuw nsw i64 %indvars.iv339, 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #10
  %indvars.iv.next342 = add nuw nsw i64 %indvars.iv341, 1
  %86 = trunc nuw nsw i64 %indvars.iv.next342 to i32
  store i32 %86, ptr %11, align 4, !tbaa !5
  %87 = getelementptr inbounds [9 x [6 x i32]], ptr %83, i64 0, i64 %indvars.iv341
  %88 = load i32, ptr %87, align 4, !tbaa !5
  store i32 %88, ptr %12, align 4, !tbaa !5
  %89 = getelementptr inbounds i8, ptr %87, i64 4
  %90 = load i32, ptr %89, align 4, !tbaa !5
  store i32 %90, ptr %13, align 4, !tbaa !5
  %91 = getelementptr inbounds i8, ptr %87, i64 8
  %92 = load i32, ptr %91, align 4, !tbaa !5
  store i32 %92, ptr %14, align 4, !tbaa !5
  %93 = getelementptr inbounds i8, ptr %87, i64 12
  %94 = load i32, ptr %93, align 4, !tbaa !5
  store i32 %94, ptr %15, align 4, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %87, i64 16
  %96 = load i32, ptr %95, align 4, !tbaa !5
  store i32 %96, ptr %16, align 4, !tbaa !5
  %97 = getelementptr inbounds i8, ptr %87, i64 20
  %98 = load i32, ptr %97, align 4, !tbaa !5
  store i32 %98, ptr %17, align 4, !tbaa !5
  %99 = getelementptr inbounds [9 x [6 x i32]], ptr %84, i64 0, i64 %indvars.iv341
  %100 = load i32, ptr %99, align 4, !tbaa !5
  store i32 %100, ptr %18, align 4, !tbaa !5
  %101 = getelementptr inbounds i8, ptr %99, i64 4
  %102 = load i32, ptr %101, align 4, !tbaa !5
  store i32 %102, ptr %19, align 4, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %99, i64 8
  %104 = load i32, ptr %103, align 4, !tbaa !5
  store i32 %104, ptr %20, align 4, !tbaa !5
  %105 = getelementptr inbounds i8, ptr %99, i64 12
  %106 = load i32, ptr %105, align 4, !tbaa !5
  store i32 %106, ptr %21, align 4, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %99, i64 16
  %108 = load i32, ptr %107, align 4, !tbaa !5
  store i32 %108, ptr %22, align 4, !tbaa !5
  %109 = getelementptr inbounds i8, ptr %99, i64 20
  %110 = load i32, ptr %109, align 4, !tbaa !5
  store i32 %110, ptr %23, align 4, !tbaa !5
  call void @efcn_set_work_array_dims_(ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23) #10
  %111 = load i32, ptr %18, align 4, !tbaa !5
  %112 = load i32, ptr %12, align 4, !tbaa !5
  %113 = sub nsw i32 %111, %112
  %114 = shl i32 %113, 2
  %115 = add i32 %114, 4
  %116 = load i32, ptr %19, align 4, !tbaa !5
  %117 = load i32, ptr %13, align 4, !tbaa !5
  %118 = add i32 %116, 1
  %119 = sub i32 %118, %117
  %120 = mul i32 %115, %119
  %121 = load i32, ptr %20, align 4, !tbaa !5
  %122 = load i32, ptr %14, align 4, !tbaa !5
  %123 = add i32 %121, 1
  %124 = sub i32 %123, %122
  %125 = mul i32 %120, %124
  %126 = load i32, ptr %21, align 4, !tbaa !5
  %127 = load i32, ptr %15, align 4, !tbaa !5
  %128 = add i32 %126, 1
  %129 = sub i32 %128, %127
  %130 = mul i32 %125, %129
  %131 = load i32, ptr %22, align 4, !tbaa !5
  %132 = load i32, ptr %16, align 4, !tbaa !5
  %133 = add i32 %131, 1
  %134 = sub i32 %133, %132
  %135 = mul i32 %130, %134
  %136 = load i32, ptr %23, align 4, !tbaa !5
  %137 = load i32, ptr %17, align 4, !tbaa !5
  %138 = add i32 %136, 1
  %139 = sub i32 %138, %137
  %140 = mul i32 %135, %139
  %141 = sext i32 %140 to i64
  %142 = call ptr @FerMem_Malloc(i64 noundef %141, ptr noundef nonnull @.str, i32 noundef 2370) #10
  %143 = getelementptr inbounds [19 x ptr], ptr %8, i64 0, i64 %indvars.iv.next340
  store ptr %142, ptr %143, align 8, !tbaa !9
  %.not289 = icmp eq ptr %142, null
  br i1 %.not289, label %144, label %.thread

144:                                              ; preds = %85
  %145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %146 = load i32, ptr %11, align 4, !tbaa !5
  %147 = load i32, ptr %12, align 4, !tbaa !5
  %148 = load i32, ptr %18, align 4, !tbaa !5
  %149 = load i32, ptr %13, align 4, !tbaa !5
  %150 = load i32, ptr %19, align 4, !tbaa !5
  %151 = load i32, ptr %14, align 4, !tbaa !5
  %152 = load i32, ptr %20, align 4, !tbaa !5
  %153 = load i32, ptr %15, align 4, !tbaa !5
  %154 = load i32, ptr %21, align 4, !tbaa !5
  %155 = load i32, ptr %16, align 4, !tbaa !5
  %156 = load i32, ptr %22, align 4, !tbaa !5
  %157 = load i32, ptr %17, align 4, !tbaa !5
  %158 = load i32, ptr %23, align 4, !tbaa !5
  %159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %145, ptr noundef nonnull @.str.40, i32 noundef %140, i32 noundef %146, i32 noundef %147, i32 noundef %148, i32 noundef %149, i32 noundef %150, i32 noundef %151, i32 noundef %152, i32 noundef %153, i32 noundef %154, i32 noundef %155, i32 noundef %156, i32 noundef %157, i32 noundef %158) #11
  %.not326 = icmp eq i64 %indvars.iv341, 0
  br i1 %.not326, label %._crit_edge315, label %.lr.ph314

.lr.ph314:                                        ; preds = %144, %.lr.ph314
  %indvars.iv347 = phi i64 [ %indvars.iv.next348, %.lr.ph314 ], [ %indvars.iv341, %144 ]
  %indvars.iv.next348 = add nsw i64 %indvars.iv347, -1
  %160 = and i64 %indvars.iv.next348, 4294967295
  %161 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %160
  %162 = load ptr, ptr %161, align 8, !tbaa !9
  call void @FerMem_Free(ptr noundef %162, ptr noundef nonnull @.str, i32 noundef 2377) #10
  store ptr null, ptr %161, align 8, !tbaa !9
  %163 = icmp sgt i64 %indvars.iv347, 1
  br i1 %163, label %.lr.ph314, label %._crit_edge315, !llvm.loop !19

.thread:                                          ; preds = %85
  %164 = getelementptr inbounds [9 x ptr], ptr @efcn_compute_.work_ptr, i64 0, i64 %indvars.iv341
  store ptr %142, ptr %164, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  %165 = load i32, ptr %53, align 8, !tbaa !17
  %166 = sext i32 %165 to i64
  %167 = icmp slt i64 %indvars.iv.next342, %166
  br i1 %167, label %85, label %.loopexit, !llvm.loop !21

._crit_edge315:                                   ; preds = %.lr.ph314, %144
  store i32 437, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  br label %874

.loopexit:                                        ; preds = %.thread, %.preheader299, %66
  %168 = call i32 @EF_Util_setsig(ptr noundef nonnull @.str.41)
  %.not = icmp eq i32 %168, 0
  br i1 %.not, label %189, label %.preheader298.preheader

.preheader298.preheader:                          ; preds = %.loopexit
  %169 = load ptr, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %170 = icmp eq ptr %169, null
  br i1 %170, label %188, label %.preheader298.1

.preheader298.1:                                  ; preds = %.preheader298.preheader
  call void @FerMem_Free(ptr noundef nonnull %169, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %171 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %172 = icmp eq ptr %171, null
  br i1 %172, label %188, label %.preheader298.2

.preheader298.2:                                  ; preds = %.preheader298.1
  call void @FerMem_Free(ptr noundef nonnull %171, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %173 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %174 = icmp eq ptr %173, null
  br i1 %174, label %188, label %.preheader298.3

.preheader298.3:                                  ; preds = %.preheader298.2
  call void @FerMem_Free(ptr noundef nonnull %173, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %175 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %176 = icmp eq ptr %175, null
  br i1 %176, label %188, label %.preheader298.4

.preheader298.4:                                  ; preds = %.preheader298.3
  call void @FerMem_Free(ptr noundef nonnull %175, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %177 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %178 = icmp eq ptr %177, null
  br i1 %178, label %188, label %.preheader298.5

.preheader298.5:                                  ; preds = %.preheader298.4
  call void @FerMem_Free(ptr noundef nonnull %177, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %179 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %180 = icmp eq ptr %179, null
  br i1 %180, label %188, label %.preheader298.6

.preheader298.6:                                  ; preds = %.preheader298.5
  call void @FerMem_Free(ptr noundef nonnull %179, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %181 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %182 = icmp eq ptr %181, null
  br i1 %182, label %188, label %.preheader298.7

.preheader298.7:                                  ; preds = %.preheader298.6
  call void @FerMem_Free(ptr noundef nonnull %181, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %183 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %184 = icmp eq ptr %183, null
  br i1 %184, label %188, label %.preheader298.8

.preheader298.8:                                  ; preds = %.preheader298.7
  call void @FerMem_Free(ptr noundef nonnull %183, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %185 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  %186 = icmp eq ptr %185, null
  br i1 %186, label %188, label %187

187:                                              ; preds = %.preheader298.8
  call void @FerMem_Free(ptr noundef nonnull %185, ptr noundef nonnull @.str, i32 noundef 2399) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  br label %188

188:                                              ; preds = %187, %.preheader298.8, %.preheader298.7, %.preheader298.6, %.preheader298.5, %.preheader298.4, %.preheader298.3, %.preheader298.2, %.preheader298.1, %.preheader298.preheader
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

189:                                              ; preds = %.loopexit
  %190 = call i32 @__sigsetjmp(ptr noundef nonnull @sigjumpbuffer, i32 noundef 1) #13
  %.not268 = icmp eq i32 %190, 0
  br i1 %.not268, label %211, label %.preheader297.preheader

.preheader297.preheader:                          ; preds = %189
  %191 = load ptr, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %192 = icmp eq ptr %191, null
  br i1 %192, label %210, label %.preheader297.1

.preheader297.1:                                  ; preds = %.preheader297.preheader
  call void @FerMem_Free(ptr noundef nonnull %191, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %193 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %194 = icmp eq ptr %193, null
  br i1 %194, label %210, label %.preheader297.2

.preheader297.2:                                  ; preds = %.preheader297.1
  call void @FerMem_Free(ptr noundef nonnull %193, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %195 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %196 = icmp eq ptr %195, null
  br i1 %196, label %210, label %.preheader297.3

.preheader297.3:                                  ; preds = %.preheader297.2
  call void @FerMem_Free(ptr noundef nonnull %195, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %197 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %198 = icmp eq ptr %197, null
  br i1 %198, label %210, label %.preheader297.4

.preheader297.4:                                  ; preds = %.preheader297.3
  call void @FerMem_Free(ptr noundef nonnull %197, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %199 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %200 = icmp eq ptr %199, null
  br i1 %200, label %210, label %.preheader297.5

.preheader297.5:                                  ; preds = %.preheader297.4
  call void @FerMem_Free(ptr noundef nonnull %199, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %201 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %202 = icmp eq ptr %201, null
  br i1 %202, label %210, label %.preheader297.6

.preheader297.6:                                  ; preds = %.preheader297.5
  call void @FerMem_Free(ptr noundef nonnull %201, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %203 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %204 = icmp eq ptr %203, null
  br i1 %204, label %210, label %.preheader297.7

.preheader297.7:                                  ; preds = %.preheader297.6
  call void @FerMem_Free(ptr noundef nonnull %203, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %205 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %206 = icmp eq ptr %205, null
  br i1 %206, label %210, label %.preheader297.8

.preheader297.8:                                  ; preds = %.preheader297.7
  call void @FerMem_Free(ptr noundef nonnull %205, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %207 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  %208 = icmp eq ptr %207, null
  br i1 %208, label %210, label %209

209:                                              ; preds = %.preheader297.8
  call void @FerMem_Free(ptr noundef nonnull %207, ptr noundef nonnull @.str, i32 noundef 2413) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  br label %210

210:                                              ; preds = %209, %.preheader297.8, %.preheader297.7, %.preheader297.6, %.preheader297.5, %.preheader297.4, %.preheader297.3, %.preheader297.2, %.preheader297.1, %.preheader297.preheader
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

211:                                              ; preds = %189
  %212 = call i32 @_setjmp(ptr noundef nonnull @jumpbuffer) #13
  %.not269 = icmp eq i32 %212, 0
  br i1 %.not269, label %233, label %.preheader296.preheader

.preheader296.preheader:                          ; preds = %211
  %213 = load ptr, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %214 = icmp eq ptr %213, null
  br i1 %214, label %232, label %.preheader296.1

.preheader296.1:                                  ; preds = %.preheader296.preheader
  call void @FerMem_Free(ptr noundef nonnull %213, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %215 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %216 = icmp eq ptr %215, null
  br i1 %216, label %232, label %.preheader296.2

.preheader296.2:                                  ; preds = %.preheader296.1
  call void @FerMem_Free(ptr noundef nonnull %215, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %217 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %218 = icmp eq ptr %217, null
  br i1 %218, label %232, label %.preheader296.3

.preheader296.3:                                  ; preds = %.preheader296.2
  call void @FerMem_Free(ptr noundef nonnull %217, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %219 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %220 = icmp eq ptr %219, null
  br i1 %220, label %232, label %.preheader296.4

.preheader296.4:                                  ; preds = %.preheader296.3
  call void @FerMem_Free(ptr noundef nonnull %219, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %221 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %222 = icmp eq ptr %221, null
  br i1 %222, label %232, label %.preheader296.5

.preheader296.5:                                  ; preds = %.preheader296.4
  call void @FerMem_Free(ptr noundef nonnull %221, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %223 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %224 = icmp eq ptr %223, null
  br i1 %224, label %232, label %.preheader296.6

.preheader296.6:                                  ; preds = %.preheader296.5
  call void @FerMem_Free(ptr noundef nonnull %223, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %225 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %226 = icmp eq ptr %225, null
  br i1 %226, label %232, label %.preheader296.7

.preheader296.7:                                  ; preds = %.preheader296.6
  call void @FerMem_Free(ptr noundef nonnull %225, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %227 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %228 = icmp eq ptr %227, null
  br i1 %228, label %232, label %.preheader296.8

.preheader296.8:                                  ; preds = %.preheader296.7
  call void @FerMem_Free(ptr noundef nonnull %227, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %229 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  %230 = icmp eq ptr %229, null
  br i1 %230, label %232, label %231

231:                                              ; preds = %.preheader296.8
  call void @FerMem_Free(ptr noundef nonnull %229, ptr noundef nonnull @.str, i32 noundef 2427) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  br label %232

232:                                              ; preds = %231, %.preheader296.8, %.preheader296.7, %.preheader296.6, %.preheader296.5, %.preheader296.4, %.preheader296.3, %.preheader296.2, %.preheader296.1, %.preheader296.preheader
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

233:                                              ; preds = %211
  store volatile i32 1, ptr @canjump, align 4, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %31, i64 8
  %235 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) %234) #10
  %236 = call ptr @strcat(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) @.str.42) #10
  %237 = load i32, ptr %42, align 8, !tbaa !13
  %238 = load i32, ptr %53, align 8, !tbaa !17
  %239 = add nsw i32 %238, %237
  switch i32 %239, label %.preheader.preheader [
    i32 1, label %242
    i32 2, label %252
    i32 3, label %264
    i32 4, label %278
    i32 5, label %294
    i32 6, label %312
    i32 7, label %332
    i32 8, label %354
    i32 9, label %378
    i32 10, label %404
    i32 11, label %432
    i32 12, label %462
    i32 13, label %494
    i32 14, label %528
    i32 15, label %564
    i32 16, label %602
    i32 17, label %642
    i32 18, label %684
  ]

.preheader.preheader:                             ; preds = %233
  %240 = load ptr, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %241 = icmp eq ptr %240, null
  br i1 %241, label %745, label %.preheader.1

242:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %246, label %243

243:                                              ; preds = %242
  %244 = load ptr, ptr %31, align 8, !tbaa !18
  %245 = call ptr @dlsym(ptr noundef %244, ptr noundef nonnull %10) #10
  br label %248

246:                                              ; preds = %242
  %247 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %248

248:                                              ; preds = %246, %243
  %.0240 = phi ptr [ %247, %246 ], [ %245, %243 ]
  %249 = load ptr, ptr %8, align 16, !tbaa !9
  %250 = getelementptr inbounds i8, ptr %8, i64 8
  %251 = load ptr, ptr %250, align 8, !tbaa !9
  call void %.0240(ptr noundef %0, ptr noundef %249, ptr noundef %251) #10
  br label %748

252:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %256, label %253

253:                                              ; preds = %252
  %254 = load ptr, ptr %31, align 8, !tbaa !18
  %255 = call ptr @dlsym(ptr noundef %254, ptr noundef nonnull %10) #10
  br label %258

256:                                              ; preds = %252
  %257 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %258

258:                                              ; preds = %256, %253
  %.0239 = phi ptr [ %257, %256 ], [ %255, %253 ]
  %259 = load ptr, ptr %8, align 16, !tbaa !9
  %260 = getelementptr inbounds i8, ptr %8, i64 8
  %261 = load ptr, ptr %260, align 8, !tbaa !9
  %262 = getelementptr inbounds i8, ptr %8, i64 16
  %263 = load ptr, ptr %262, align 16, !tbaa !9
  call void %.0239(ptr noundef %0, ptr noundef %259, ptr noundef %261, ptr noundef %263) #10
  br label %748

264:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %268, label %265

265:                                              ; preds = %264
  %266 = load ptr, ptr %31, align 8, !tbaa !18
  %267 = call ptr @dlsym(ptr noundef %266, ptr noundef nonnull %10) #10
  br label %270

268:                                              ; preds = %264
  %269 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %270

270:                                              ; preds = %268, %265
  %.0238 = phi ptr [ %269, %268 ], [ %267, %265 ]
  %271 = load ptr, ptr %8, align 16, !tbaa !9
  %272 = getelementptr inbounds i8, ptr %8, i64 8
  %273 = load ptr, ptr %272, align 8, !tbaa !9
  %274 = getelementptr inbounds i8, ptr %8, i64 16
  %275 = load ptr, ptr %274, align 16, !tbaa !9
  %276 = getelementptr inbounds i8, ptr %8, i64 24
  %277 = load ptr, ptr %276, align 8, !tbaa !9
  call void %.0238(ptr noundef %0, ptr noundef %271, ptr noundef %273, ptr noundef %275, ptr noundef %277) #10
  br label %748

278:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %282, label %279

279:                                              ; preds = %278
  %280 = load ptr, ptr %31, align 8, !tbaa !18
  %281 = call ptr @dlsym(ptr noundef %280, ptr noundef nonnull %10) #10
  br label %284

282:                                              ; preds = %278
  %283 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %284

284:                                              ; preds = %282, %279
  %.0237 = phi ptr [ %283, %282 ], [ %281, %279 ]
  %285 = load ptr, ptr %8, align 16, !tbaa !9
  %286 = getelementptr inbounds i8, ptr %8, i64 8
  %287 = load ptr, ptr %286, align 8, !tbaa !9
  %288 = getelementptr inbounds i8, ptr %8, i64 16
  %289 = load ptr, ptr %288, align 16, !tbaa !9
  %290 = getelementptr inbounds i8, ptr %8, i64 24
  %291 = load ptr, ptr %290, align 8, !tbaa !9
  %292 = getelementptr inbounds i8, ptr %8, i64 32
  %293 = load ptr, ptr %292, align 16, !tbaa !9
  call void %.0237(ptr noundef %0, ptr noundef %285, ptr noundef %287, ptr noundef %289, ptr noundef %291, ptr noundef %293) #10
  br label %748

294:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %298, label %295

295:                                              ; preds = %294
  %296 = load ptr, ptr %31, align 8, !tbaa !18
  %297 = call ptr @dlsym(ptr noundef %296, ptr noundef nonnull %10) #10
  br label %300

298:                                              ; preds = %294
  %299 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %300

300:                                              ; preds = %298, %295
  %.0236 = phi ptr [ %299, %298 ], [ %297, %295 ]
  %301 = load ptr, ptr %8, align 16, !tbaa !9
  %302 = getelementptr inbounds i8, ptr %8, i64 8
  %303 = load ptr, ptr %302, align 8, !tbaa !9
  %304 = getelementptr inbounds i8, ptr %8, i64 16
  %305 = load ptr, ptr %304, align 16, !tbaa !9
  %306 = getelementptr inbounds i8, ptr %8, i64 24
  %307 = load ptr, ptr %306, align 8, !tbaa !9
  %308 = getelementptr inbounds i8, ptr %8, i64 32
  %309 = load ptr, ptr %308, align 16, !tbaa !9
  %310 = getelementptr inbounds i8, ptr %8, i64 40
  %311 = load ptr, ptr %310, align 8, !tbaa !9
  call void %.0236(ptr noundef %0, ptr noundef %301, ptr noundef %303, ptr noundef %305, ptr noundef %307, ptr noundef %309, ptr noundef %311) #10
  br label %748

312:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %316, label %313

313:                                              ; preds = %312
  %314 = load ptr, ptr %31, align 8, !tbaa !18
  %315 = call ptr @dlsym(ptr noundef %314, ptr noundef nonnull %10) #10
  br label %318

316:                                              ; preds = %312
  %317 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %318

318:                                              ; preds = %316, %313
  %.0235 = phi ptr [ %317, %316 ], [ %315, %313 ]
  %319 = load ptr, ptr %8, align 16, !tbaa !9
  %320 = getelementptr inbounds i8, ptr %8, i64 8
  %321 = load ptr, ptr %320, align 8, !tbaa !9
  %322 = getelementptr inbounds i8, ptr %8, i64 16
  %323 = load ptr, ptr %322, align 16, !tbaa !9
  %324 = getelementptr inbounds i8, ptr %8, i64 24
  %325 = load ptr, ptr %324, align 8, !tbaa !9
  %326 = getelementptr inbounds i8, ptr %8, i64 32
  %327 = load ptr, ptr %326, align 16, !tbaa !9
  %328 = getelementptr inbounds i8, ptr %8, i64 40
  %329 = load ptr, ptr %328, align 8, !tbaa !9
  %330 = getelementptr inbounds i8, ptr %8, i64 48
  %331 = load ptr, ptr %330, align 16, !tbaa !9
  call void %.0235(ptr noundef %0, ptr noundef %319, ptr noundef %321, ptr noundef %323, ptr noundef %325, ptr noundef %327, ptr noundef %329, ptr noundef %331) #10
  br label %748

332:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %336, label %333

333:                                              ; preds = %332
  %334 = load ptr, ptr %31, align 8, !tbaa !18
  %335 = call ptr @dlsym(ptr noundef %334, ptr noundef nonnull %10) #10
  br label %338

336:                                              ; preds = %332
  %337 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %338

338:                                              ; preds = %336, %333
  %.0234 = phi ptr [ %337, %336 ], [ %335, %333 ]
  %339 = load ptr, ptr %8, align 16, !tbaa !9
  %340 = getelementptr inbounds i8, ptr %8, i64 8
  %341 = load ptr, ptr %340, align 8, !tbaa !9
  %342 = getelementptr inbounds i8, ptr %8, i64 16
  %343 = load ptr, ptr %342, align 16, !tbaa !9
  %344 = getelementptr inbounds i8, ptr %8, i64 24
  %345 = load ptr, ptr %344, align 8, !tbaa !9
  %346 = getelementptr inbounds i8, ptr %8, i64 32
  %347 = load ptr, ptr %346, align 16, !tbaa !9
  %348 = getelementptr inbounds i8, ptr %8, i64 40
  %349 = load ptr, ptr %348, align 8, !tbaa !9
  %350 = getelementptr inbounds i8, ptr %8, i64 48
  %351 = load ptr, ptr %350, align 16, !tbaa !9
  %352 = getelementptr inbounds i8, ptr %8, i64 56
  %353 = load ptr, ptr %352, align 8, !tbaa !9
  call void %.0234(ptr noundef %0, ptr noundef %339, ptr noundef %341, ptr noundef %343, ptr noundef %345, ptr noundef %347, ptr noundef %349, ptr noundef %351, ptr noundef %353) #10
  br label %748

354:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %358, label %355

355:                                              ; preds = %354
  %356 = load ptr, ptr %31, align 8, !tbaa !18
  %357 = call ptr @dlsym(ptr noundef %356, ptr noundef nonnull %10) #10
  br label %360

358:                                              ; preds = %354
  %359 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %360

360:                                              ; preds = %358, %355
  %.0233 = phi ptr [ %359, %358 ], [ %357, %355 ]
  %361 = load ptr, ptr %8, align 16, !tbaa !9
  %362 = getelementptr inbounds i8, ptr %8, i64 8
  %363 = load ptr, ptr %362, align 8, !tbaa !9
  %364 = getelementptr inbounds i8, ptr %8, i64 16
  %365 = load ptr, ptr %364, align 16, !tbaa !9
  %366 = getelementptr inbounds i8, ptr %8, i64 24
  %367 = load ptr, ptr %366, align 8, !tbaa !9
  %368 = getelementptr inbounds i8, ptr %8, i64 32
  %369 = load ptr, ptr %368, align 16, !tbaa !9
  %370 = getelementptr inbounds i8, ptr %8, i64 40
  %371 = load ptr, ptr %370, align 8, !tbaa !9
  %372 = getelementptr inbounds i8, ptr %8, i64 48
  %373 = load ptr, ptr %372, align 16, !tbaa !9
  %374 = getelementptr inbounds i8, ptr %8, i64 56
  %375 = load ptr, ptr %374, align 8, !tbaa !9
  %376 = getelementptr inbounds i8, ptr %8, i64 64
  %377 = load ptr, ptr %376, align 16, !tbaa !9
  call void %.0233(ptr noundef %0, ptr noundef %361, ptr noundef %363, ptr noundef %365, ptr noundef %367, ptr noundef %369, ptr noundef %371, ptr noundef %373, ptr noundef %375, ptr noundef %377) #10
  br label %748

378:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %382, label %379

379:                                              ; preds = %378
  %380 = load ptr, ptr %31, align 8, !tbaa !18
  %381 = call ptr @dlsym(ptr noundef %380, ptr noundef nonnull %10) #10
  br label %384

382:                                              ; preds = %378
  %383 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %384

384:                                              ; preds = %382, %379
  %.0232 = phi ptr [ %383, %382 ], [ %381, %379 ]
  %385 = load ptr, ptr %8, align 16, !tbaa !9
  %386 = getelementptr inbounds i8, ptr %8, i64 8
  %387 = load ptr, ptr %386, align 8, !tbaa !9
  %388 = getelementptr inbounds i8, ptr %8, i64 16
  %389 = load ptr, ptr %388, align 16, !tbaa !9
  %390 = getelementptr inbounds i8, ptr %8, i64 24
  %391 = load ptr, ptr %390, align 8, !tbaa !9
  %392 = getelementptr inbounds i8, ptr %8, i64 32
  %393 = load ptr, ptr %392, align 16, !tbaa !9
  %394 = getelementptr inbounds i8, ptr %8, i64 40
  %395 = load ptr, ptr %394, align 8, !tbaa !9
  %396 = getelementptr inbounds i8, ptr %8, i64 48
  %397 = load ptr, ptr %396, align 16, !tbaa !9
  %398 = getelementptr inbounds i8, ptr %8, i64 56
  %399 = load ptr, ptr %398, align 8, !tbaa !9
  %400 = getelementptr inbounds i8, ptr %8, i64 64
  %401 = load ptr, ptr %400, align 16, !tbaa !9
  %402 = getelementptr inbounds i8, ptr %8, i64 72
  %403 = load ptr, ptr %402, align 8, !tbaa !9
  call void %.0232(ptr noundef %0, ptr noundef %385, ptr noundef %387, ptr noundef %389, ptr noundef %391, ptr noundef %393, ptr noundef %395, ptr noundef %397, ptr noundef %399, ptr noundef %401, ptr noundef %403) #10
  br label %748

404:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %408, label %405

405:                                              ; preds = %404
  %406 = load ptr, ptr %31, align 8, !tbaa !18
  %407 = call ptr @dlsym(ptr noundef %406, ptr noundef nonnull %10) #10
  br label %410

408:                                              ; preds = %404
  %409 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %410

410:                                              ; preds = %408, %405
  %.0231 = phi ptr [ %409, %408 ], [ %407, %405 ]
  %411 = load ptr, ptr %8, align 16, !tbaa !9
  %412 = getelementptr inbounds i8, ptr %8, i64 8
  %413 = load ptr, ptr %412, align 8, !tbaa !9
  %414 = getelementptr inbounds i8, ptr %8, i64 16
  %415 = load ptr, ptr %414, align 16, !tbaa !9
  %416 = getelementptr inbounds i8, ptr %8, i64 24
  %417 = load ptr, ptr %416, align 8, !tbaa !9
  %418 = getelementptr inbounds i8, ptr %8, i64 32
  %419 = load ptr, ptr %418, align 16, !tbaa !9
  %420 = getelementptr inbounds i8, ptr %8, i64 40
  %421 = load ptr, ptr %420, align 8, !tbaa !9
  %422 = getelementptr inbounds i8, ptr %8, i64 48
  %423 = load ptr, ptr %422, align 16, !tbaa !9
  %424 = getelementptr inbounds i8, ptr %8, i64 56
  %425 = load ptr, ptr %424, align 8, !tbaa !9
  %426 = getelementptr inbounds i8, ptr %8, i64 64
  %427 = load ptr, ptr %426, align 16, !tbaa !9
  %428 = getelementptr inbounds i8, ptr %8, i64 72
  %429 = load ptr, ptr %428, align 8, !tbaa !9
  %430 = getelementptr inbounds i8, ptr %8, i64 80
  %431 = load ptr, ptr %430, align 16, !tbaa !9
  call void %.0231(ptr noundef %0, ptr noundef %411, ptr noundef %413, ptr noundef %415, ptr noundef %417, ptr noundef %419, ptr noundef %421, ptr noundef %423, ptr noundef %425, ptr noundef %427, ptr noundef %429, ptr noundef %431) #10
  br label %748

432:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %436, label %433

433:                                              ; preds = %432
  %434 = load ptr, ptr %31, align 8, !tbaa !18
  %435 = call ptr @dlsym(ptr noundef %434, ptr noundef nonnull %10) #10
  br label %438

436:                                              ; preds = %432
  %437 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %438

438:                                              ; preds = %436, %433
  %.0230 = phi ptr [ %437, %436 ], [ %435, %433 ]
  %439 = load ptr, ptr %8, align 16, !tbaa !9
  %440 = getelementptr inbounds i8, ptr %8, i64 8
  %441 = load ptr, ptr %440, align 8, !tbaa !9
  %442 = getelementptr inbounds i8, ptr %8, i64 16
  %443 = load ptr, ptr %442, align 16, !tbaa !9
  %444 = getelementptr inbounds i8, ptr %8, i64 24
  %445 = load ptr, ptr %444, align 8, !tbaa !9
  %446 = getelementptr inbounds i8, ptr %8, i64 32
  %447 = load ptr, ptr %446, align 16, !tbaa !9
  %448 = getelementptr inbounds i8, ptr %8, i64 40
  %449 = load ptr, ptr %448, align 8, !tbaa !9
  %450 = getelementptr inbounds i8, ptr %8, i64 48
  %451 = load ptr, ptr %450, align 16, !tbaa !9
  %452 = getelementptr inbounds i8, ptr %8, i64 56
  %453 = load ptr, ptr %452, align 8, !tbaa !9
  %454 = getelementptr inbounds i8, ptr %8, i64 64
  %455 = load ptr, ptr %454, align 16, !tbaa !9
  %456 = getelementptr inbounds i8, ptr %8, i64 72
  %457 = load ptr, ptr %456, align 8, !tbaa !9
  %458 = getelementptr inbounds i8, ptr %8, i64 80
  %459 = load ptr, ptr %458, align 16, !tbaa !9
  %460 = getelementptr inbounds i8, ptr %8, i64 88
  %461 = load ptr, ptr %460, align 8, !tbaa !9
  call void %.0230(ptr noundef %0, ptr noundef %439, ptr noundef %441, ptr noundef %443, ptr noundef %445, ptr noundef %447, ptr noundef %449, ptr noundef %451, ptr noundef %453, ptr noundef %455, ptr noundef %457, ptr noundef %459, ptr noundef %461) #10
  br label %748

462:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %466, label %463

463:                                              ; preds = %462
  %464 = load ptr, ptr %31, align 8, !tbaa !18
  %465 = call ptr @dlsym(ptr noundef %464, ptr noundef nonnull %10) #10
  br label %468

466:                                              ; preds = %462
  %467 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %468

468:                                              ; preds = %466, %463
  %.0229 = phi ptr [ %467, %466 ], [ %465, %463 ]
  %469 = load ptr, ptr %8, align 16, !tbaa !9
  %470 = getelementptr inbounds i8, ptr %8, i64 8
  %471 = load ptr, ptr %470, align 8, !tbaa !9
  %472 = getelementptr inbounds i8, ptr %8, i64 16
  %473 = load ptr, ptr %472, align 16, !tbaa !9
  %474 = getelementptr inbounds i8, ptr %8, i64 24
  %475 = load ptr, ptr %474, align 8, !tbaa !9
  %476 = getelementptr inbounds i8, ptr %8, i64 32
  %477 = load ptr, ptr %476, align 16, !tbaa !9
  %478 = getelementptr inbounds i8, ptr %8, i64 40
  %479 = load ptr, ptr %478, align 8, !tbaa !9
  %480 = getelementptr inbounds i8, ptr %8, i64 48
  %481 = load ptr, ptr %480, align 16, !tbaa !9
  %482 = getelementptr inbounds i8, ptr %8, i64 56
  %483 = load ptr, ptr %482, align 8, !tbaa !9
  %484 = getelementptr inbounds i8, ptr %8, i64 64
  %485 = load ptr, ptr %484, align 16, !tbaa !9
  %486 = getelementptr inbounds i8, ptr %8, i64 72
  %487 = load ptr, ptr %486, align 8, !tbaa !9
  %488 = getelementptr inbounds i8, ptr %8, i64 80
  %489 = load ptr, ptr %488, align 16, !tbaa !9
  %490 = getelementptr inbounds i8, ptr %8, i64 88
  %491 = load ptr, ptr %490, align 8, !tbaa !9
  %492 = getelementptr inbounds i8, ptr %8, i64 96
  %493 = load ptr, ptr %492, align 16, !tbaa !9
  call void %.0229(ptr noundef %0, ptr noundef %469, ptr noundef %471, ptr noundef %473, ptr noundef %475, ptr noundef %477, ptr noundef %479, ptr noundef %481, ptr noundef %483, ptr noundef %485, ptr noundef %487, ptr noundef %489, ptr noundef %491, ptr noundef %493) #10
  br label %748

494:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %498, label %495

495:                                              ; preds = %494
  %496 = load ptr, ptr %31, align 8, !tbaa !18
  %497 = call ptr @dlsym(ptr noundef %496, ptr noundef nonnull %10) #10
  br label %500

498:                                              ; preds = %494
  %499 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %500

500:                                              ; preds = %498, %495
  %.0228 = phi ptr [ %499, %498 ], [ %497, %495 ]
  %501 = load ptr, ptr %8, align 16, !tbaa !9
  %502 = getelementptr inbounds i8, ptr %8, i64 8
  %503 = load ptr, ptr %502, align 8, !tbaa !9
  %504 = getelementptr inbounds i8, ptr %8, i64 16
  %505 = load ptr, ptr %504, align 16, !tbaa !9
  %506 = getelementptr inbounds i8, ptr %8, i64 24
  %507 = load ptr, ptr %506, align 8, !tbaa !9
  %508 = getelementptr inbounds i8, ptr %8, i64 32
  %509 = load ptr, ptr %508, align 16, !tbaa !9
  %510 = getelementptr inbounds i8, ptr %8, i64 40
  %511 = load ptr, ptr %510, align 8, !tbaa !9
  %512 = getelementptr inbounds i8, ptr %8, i64 48
  %513 = load ptr, ptr %512, align 16, !tbaa !9
  %514 = getelementptr inbounds i8, ptr %8, i64 56
  %515 = load ptr, ptr %514, align 8, !tbaa !9
  %516 = getelementptr inbounds i8, ptr %8, i64 64
  %517 = load ptr, ptr %516, align 16, !tbaa !9
  %518 = getelementptr inbounds i8, ptr %8, i64 72
  %519 = load ptr, ptr %518, align 8, !tbaa !9
  %520 = getelementptr inbounds i8, ptr %8, i64 80
  %521 = load ptr, ptr %520, align 16, !tbaa !9
  %522 = getelementptr inbounds i8, ptr %8, i64 88
  %523 = load ptr, ptr %522, align 8, !tbaa !9
  %524 = getelementptr inbounds i8, ptr %8, i64 96
  %525 = load ptr, ptr %524, align 16, !tbaa !9
  %526 = getelementptr inbounds i8, ptr %8, i64 104
  %527 = load ptr, ptr %526, align 8, !tbaa !9
  call void %.0228(ptr noundef %0, ptr noundef %501, ptr noundef %503, ptr noundef %505, ptr noundef %507, ptr noundef %509, ptr noundef %511, ptr noundef %513, ptr noundef %515, ptr noundef %517, ptr noundef %519, ptr noundef %521, ptr noundef %523, ptr noundef %525, ptr noundef %527) #10
  br label %748

528:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %532, label %529

529:                                              ; preds = %528
  %530 = load ptr, ptr %31, align 8, !tbaa !18
  %531 = call ptr @dlsym(ptr noundef %530, ptr noundef nonnull %10) #10
  br label %534

532:                                              ; preds = %528
  %533 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %534

534:                                              ; preds = %532, %529
  %.0227 = phi ptr [ %533, %532 ], [ %531, %529 ]
  %535 = load ptr, ptr %8, align 16, !tbaa !9
  %536 = getelementptr inbounds i8, ptr %8, i64 8
  %537 = load ptr, ptr %536, align 8, !tbaa !9
  %538 = getelementptr inbounds i8, ptr %8, i64 16
  %539 = load ptr, ptr %538, align 16, !tbaa !9
  %540 = getelementptr inbounds i8, ptr %8, i64 24
  %541 = load ptr, ptr %540, align 8, !tbaa !9
  %542 = getelementptr inbounds i8, ptr %8, i64 32
  %543 = load ptr, ptr %542, align 16, !tbaa !9
  %544 = getelementptr inbounds i8, ptr %8, i64 40
  %545 = load ptr, ptr %544, align 8, !tbaa !9
  %546 = getelementptr inbounds i8, ptr %8, i64 48
  %547 = load ptr, ptr %546, align 16, !tbaa !9
  %548 = getelementptr inbounds i8, ptr %8, i64 56
  %549 = load ptr, ptr %548, align 8, !tbaa !9
  %550 = getelementptr inbounds i8, ptr %8, i64 64
  %551 = load ptr, ptr %550, align 16, !tbaa !9
  %552 = getelementptr inbounds i8, ptr %8, i64 72
  %553 = load ptr, ptr %552, align 8, !tbaa !9
  %554 = getelementptr inbounds i8, ptr %8, i64 80
  %555 = load ptr, ptr %554, align 16, !tbaa !9
  %556 = getelementptr inbounds i8, ptr %8, i64 88
  %557 = load ptr, ptr %556, align 8, !tbaa !9
  %558 = getelementptr inbounds i8, ptr %8, i64 96
  %559 = load ptr, ptr %558, align 16, !tbaa !9
  %560 = getelementptr inbounds i8, ptr %8, i64 104
  %561 = load ptr, ptr %560, align 8, !tbaa !9
  %562 = getelementptr inbounds i8, ptr %8, i64 112
  %563 = load ptr, ptr %562, align 16, !tbaa !9
  call void %.0227(ptr noundef %0, ptr noundef %535, ptr noundef %537, ptr noundef %539, ptr noundef %541, ptr noundef %543, ptr noundef %545, ptr noundef %547, ptr noundef %549, ptr noundef %551, ptr noundef %553, ptr noundef %555, ptr noundef %557, ptr noundef %559, ptr noundef %561, ptr noundef %563) #10
  br label %748

564:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %568, label %565

565:                                              ; preds = %564
  %566 = load ptr, ptr %31, align 8, !tbaa !18
  %567 = call ptr @dlsym(ptr noundef %566, ptr noundef nonnull %10) #10
  br label %570

568:                                              ; preds = %564
  %569 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %570

570:                                              ; preds = %568, %565
  %.0226 = phi ptr [ %569, %568 ], [ %567, %565 ]
  %571 = load ptr, ptr %8, align 16, !tbaa !9
  %572 = getelementptr inbounds i8, ptr %8, i64 8
  %573 = load ptr, ptr %572, align 8, !tbaa !9
  %574 = getelementptr inbounds i8, ptr %8, i64 16
  %575 = load ptr, ptr %574, align 16, !tbaa !9
  %576 = getelementptr inbounds i8, ptr %8, i64 24
  %577 = load ptr, ptr %576, align 8, !tbaa !9
  %578 = getelementptr inbounds i8, ptr %8, i64 32
  %579 = load ptr, ptr %578, align 16, !tbaa !9
  %580 = getelementptr inbounds i8, ptr %8, i64 40
  %581 = load ptr, ptr %580, align 8, !tbaa !9
  %582 = getelementptr inbounds i8, ptr %8, i64 48
  %583 = load ptr, ptr %582, align 16, !tbaa !9
  %584 = getelementptr inbounds i8, ptr %8, i64 56
  %585 = load ptr, ptr %584, align 8, !tbaa !9
  %586 = getelementptr inbounds i8, ptr %8, i64 64
  %587 = load ptr, ptr %586, align 16, !tbaa !9
  %588 = getelementptr inbounds i8, ptr %8, i64 72
  %589 = load ptr, ptr %588, align 8, !tbaa !9
  %590 = getelementptr inbounds i8, ptr %8, i64 80
  %591 = load ptr, ptr %590, align 16, !tbaa !9
  %592 = getelementptr inbounds i8, ptr %8, i64 88
  %593 = load ptr, ptr %592, align 8, !tbaa !9
  %594 = getelementptr inbounds i8, ptr %8, i64 96
  %595 = load ptr, ptr %594, align 16, !tbaa !9
  %596 = getelementptr inbounds i8, ptr %8, i64 104
  %597 = load ptr, ptr %596, align 8, !tbaa !9
  %598 = getelementptr inbounds i8, ptr %8, i64 112
  %599 = load ptr, ptr %598, align 16, !tbaa !9
  %600 = getelementptr inbounds i8, ptr %8, i64 120
  %601 = load ptr, ptr %600, align 8, !tbaa !9
  call void %.0226(ptr noundef %0, ptr noundef %571, ptr noundef %573, ptr noundef %575, ptr noundef %577, ptr noundef %579, ptr noundef %581, ptr noundef %583, ptr noundef %585, ptr noundef %587, ptr noundef %589, ptr noundef %591, ptr noundef %593, ptr noundef %595, ptr noundef %597, ptr noundef %599, ptr noundef %601) #10
  br label %748

602:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %606, label %603

603:                                              ; preds = %602
  %604 = load ptr, ptr %31, align 8, !tbaa !18
  %605 = call ptr @dlsym(ptr noundef %604, ptr noundef nonnull %10) #10
  br label %608

606:                                              ; preds = %602
  %607 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %608

608:                                              ; preds = %606, %603
  %.0225 = phi ptr [ %607, %606 ], [ %605, %603 ]
  %609 = load ptr, ptr %8, align 16, !tbaa !9
  %610 = getelementptr inbounds i8, ptr %8, i64 8
  %611 = load ptr, ptr %610, align 8, !tbaa !9
  %612 = getelementptr inbounds i8, ptr %8, i64 16
  %613 = load ptr, ptr %612, align 16, !tbaa !9
  %614 = getelementptr inbounds i8, ptr %8, i64 24
  %615 = load ptr, ptr %614, align 8, !tbaa !9
  %616 = getelementptr inbounds i8, ptr %8, i64 32
  %617 = load ptr, ptr %616, align 16, !tbaa !9
  %618 = getelementptr inbounds i8, ptr %8, i64 40
  %619 = load ptr, ptr %618, align 8, !tbaa !9
  %620 = getelementptr inbounds i8, ptr %8, i64 48
  %621 = load ptr, ptr %620, align 16, !tbaa !9
  %622 = getelementptr inbounds i8, ptr %8, i64 56
  %623 = load ptr, ptr %622, align 8, !tbaa !9
  %624 = getelementptr inbounds i8, ptr %8, i64 64
  %625 = load ptr, ptr %624, align 16, !tbaa !9
  %626 = getelementptr inbounds i8, ptr %8, i64 72
  %627 = load ptr, ptr %626, align 8, !tbaa !9
  %628 = getelementptr inbounds i8, ptr %8, i64 80
  %629 = load ptr, ptr %628, align 16, !tbaa !9
  %630 = getelementptr inbounds i8, ptr %8, i64 88
  %631 = load ptr, ptr %630, align 8, !tbaa !9
  %632 = getelementptr inbounds i8, ptr %8, i64 96
  %633 = load ptr, ptr %632, align 16, !tbaa !9
  %634 = getelementptr inbounds i8, ptr %8, i64 104
  %635 = load ptr, ptr %634, align 8, !tbaa !9
  %636 = getelementptr inbounds i8, ptr %8, i64 112
  %637 = load ptr, ptr %636, align 16, !tbaa !9
  %638 = getelementptr inbounds i8, ptr %8, i64 120
  %639 = load ptr, ptr %638, align 8, !tbaa !9
  %640 = getelementptr inbounds i8, ptr %8, i64 128
  %641 = load ptr, ptr %640, align 16, !tbaa !9
  call void %.0225(ptr noundef %0, ptr noundef %609, ptr noundef %611, ptr noundef %613, ptr noundef %615, ptr noundef %617, ptr noundef %619, ptr noundef %621, ptr noundef %623, ptr noundef %625, ptr noundef %627, ptr noundef %629, ptr noundef %631, ptr noundef %633, ptr noundef %635, ptr noundef %637, ptr noundef %639, ptr noundef %641) #10
  br label %748

642:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %646, label %643

643:                                              ; preds = %642
  %644 = load ptr, ptr %31, align 8, !tbaa !18
  %645 = call ptr @dlsym(ptr noundef %644, ptr noundef nonnull %10) #10
  br label %648

646:                                              ; preds = %642
  %647 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %648

648:                                              ; preds = %646, %643
  %.0224 = phi ptr [ %647, %646 ], [ %645, %643 ]
  %649 = load ptr, ptr %8, align 16, !tbaa !9
  %650 = getelementptr inbounds i8, ptr %8, i64 8
  %651 = load ptr, ptr %650, align 8, !tbaa !9
  %652 = getelementptr inbounds i8, ptr %8, i64 16
  %653 = load ptr, ptr %652, align 16, !tbaa !9
  %654 = getelementptr inbounds i8, ptr %8, i64 24
  %655 = load ptr, ptr %654, align 8, !tbaa !9
  %656 = getelementptr inbounds i8, ptr %8, i64 32
  %657 = load ptr, ptr %656, align 16, !tbaa !9
  %658 = getelementptr inbounds i8, ptr %8, i64 40
  %659 = load ptr, ptr %658, align 8, !tbaa !9
  %660 = getelementptr inbounds i8, ptr %8, i64 48
  %661 = load ptr, ptr %660, align 16, !tbaa !9
  %662 = getelementptr inbounds i8, ptr %8, i64 56
  %663 = load ptr, ptr %662, align 8, !tbaa !9
  %664 = getelementptr inbounds i8, ptr %8, i64 64
  %665 = load ptr, ptr %664, align 16, !tbaa !9
  %666 = getelementptr inbounds i8, ptr %8, i64 72
  %667 = load ptr, ptr %666, align 8, !tbaa !9
  %668 = getelementptr inbounds i8, ptr %8, i64 80
  %669 = load ptr, ptr %668, align 16, !tbaa !9
  %670 = getelementptr inbounds i8, ptr %8, i64 88
  %671 = load ptr, ptr %670, align 8, !tbaa !9
  %672 = getelementptr inbounds i8, ptr %8, i64 96
  %673 = load ptr, ptr %672, align 16, !tbaa !9
  %674 = getelementptr inbounds i8, ptr %8, i64 104
  %675 = load ptr, ptr %674, align 8, !tbaa !9
  %676 = getelementptr inbounds i8, ptr %8, i64 112
  %677 = load ptr, ptr %676, align 16, !tbaa !9
  %678 = getelementptr inbounds i8, ptr %8, i64 120
  %679 = load ptr, ptr %678, align 8, !tbaa !9
  %680 = getelementptr inbounds i8, ptr %8, i64 128
  %681 = load ptr, ptr %680, align 16, !tbaa !9
  %682 = getelementptr inbounds i8, ptr %8, i64 136
  %683 = load ptr, ptr %682, align 8, !tbaa !9
  call void %.0224(ptr noundef %0, ptr noundef %649, ptr noundef %651, ptr noundef %653, ptr noundef %655, ptr noundef %657, ptr noundef %659, ptr noundef %661, ptr noundef %663, ptr noundef %665, ptr noundef %667, ptr noundef %669, ptr noundef %671, ptr noundef %673, ptr noundef %675, ptr noundef %677, ptr noundef %679, ptr noundef %681, ptr noundef %683) #10
  br label %748

684:                                              ; preds = %233
  br i1 %.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not.not, label %688, label %685

685:                                              ; preds = %684
  %686 = load ptr, ptr %31, align 8, !tbaa !18
  %687 = call ptr @dlsym(ptr noundef %686, ptr noundef nonnull %10) #10
  br label %690

688:                                              ; preds = %684
  %689 = call ptr @internal_dlsym(ptr noundef nonnull %10)
  br label %690

690:                                              ; preds = %688, %685
  %.0223 = phi ptr [ %689, %688 ], [ %687, %685 ]
  %691 = load ptr, ptr %8, align 16, !tbaa !9
  %692 = getelementptr inbounds i8, ptr %8, i64 8
  %693 = load ptr, ptr %692, align 8, !tbaa !9
  %694 = getelementptr inbounds i8, ptr %8, i64 16
  %695 = load ptr, ptr %694, align 16, !tbaa !9
  %696 = getelementptr inbounds i8, ptr %8, i64 24
  %697 = load ptr, ptr %696, align 8, !tbaa !9
  %698 = getelementptr inbounds i8, ptr %8, i64 32
  %699 = load ptr, ptr %698, align 16, !tbaa !9
  %700 = getelementptr inbounds i8, ptr %8, i64 40
  %701 = load ptr, ptr %700, align 8, !tbaa !9
  %702 = getelementptr inbounds i8, ptr %8, i64 48
  %703 = load ptr, ptr %702, align 16, !tbaa !9
  %704 = getelementptr inbounds i8, ptr %8, i64 56
  %705 = load ptr, ptr %704, align 8, !tbaa !9
  %706 = getelementptr inbounds i8, ptr %8, i64 64
  %707 = load ptr, ptr %706, align 16, !tbaa !9
  %708 = getelementptr inbounds i8, ptr %8, i64 72
  %709 = load ptr, ptr %708, align 8, !tbaa !9
  %710 = getelementptr inbounds i8, ptr %8, i64 80
  %711 = load ptr, ptr %710, align 16, !tbaa !9
  %712 = getelementptr inbounds i8, ptr %8, i64 88
  %713 = load ptr, ptr %712, align 8, !tbaa !9
  %714 = getelementptr inbounds i8, ptr %8, i64 96
  %715 = load ptr, ptr %714, align 16, !tbaa !9
  %716 = getelementptr inbounds i8, ptr %8, i64 104
  %717 = load ptr, ptr %716, align 8, !tbaa !9
  %718 = getelementptr inbounds i8, ptr %8, i64 112
  %719 = load ptr, ptr %718, align 16, !tbaa !9
  %720 = getelementptr inbounds i8, ptr %8, i64 120
  %721 = load ptr, ptr %720, align 8, !tbaa !9
  %722 = getelementptr inbounds i8, ptr %8, i64 128
  %723 = load ptr, ptr %722, align 16, !tbaa !9
  %724 = getelementptr inbounds i8, ptr %8, i64 136
  %725 = load ptr, ptr %724, align 8, !tbaa !9
  %726 = getelementptr inbounds i8, ptr %8, i64 144
  %727 = load ptr, ptr %726, align 16, !tbaa !9
  call void %.0223(ptr noundef %0, ptr noundef %691, ptr noundef %693, ptr noundef %695, ptr noundef %697, ptr noundef %699, ptr noundef %701, ptr noundef %703, ptr noundef %705, ptr noundef %707, ptr noundef %709, ptr noundef %711, ptr noundef %713, ptr noundef %715, ptr noundef %717, ptr noundef %719, ptr noundef %721, ptr noundef %723, ptr noundef %725, ptr noundef %727) #10
  br label %748

.preheader.1:                                     ; preds = %.preheader.preheader
  call void @FerMem_Free(ptr noundef nonnull %240, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %728 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %729 = icmp eq ptr %728, null
  br i1 %729, label %745, label %.preheader.2

.preheader.2:                                     ; preds = %.preheader.1
  call void @FerMem_Free(ptr noundef nonnull %728, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %730 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %731 = icmp eq ptr %730, null
  br i1 %731, label %745, label %.preheader.3

.preheader.3:                                     ; preds = %.preheader.2
  call void @FerMem_Free(ptr noundef nonnull %730, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %732 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %733 = icmp eq ptr %732, null
  br i1 %733, label %745, label %.preheader.4

.preheader.4:                                     ; preds = %.preheader.3
  call void @FerMem_Free(ptr noundef nonnull %732, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %734 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %735 = icmp eq ptr %734, null
  br i1 %735, label %745, label %.preheader.5

.preheader.5:                                     ; preds = %.preheader.4
  call void @FerMem_Free(ptr noundef nonnull %734, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %736 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %737 = icmp eq ptr %736, null
  br i1 %737, label %745, label %.preheader.6

.preheader.6:                                     ; preds = %.preheader.5
  call void @FerMem_Free(ptr noundef nonnull %736, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %738 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %739 = icmp eq ptr %738, null
  br i1 %739, label %745, label %.preheader.7

.preheader.7:                                     ; preds = %.preheader.6
  call void @FerMem_Free(ptr noundef nonnull %738, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %740 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %741 = icmp eq ptr %740, null
  br i1 %741, label %745, label %.preheader.8

.preheader.8:                                     ; preds = %.preheader.7
  call void @FerMem_Free(ptr noundef nonnull %740, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %742 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  %743 = icmp eq ptr %742, null
  br i1 %743, label %745, label %744

744:                                              ; preds = %.preheader.8
  call void @FerMem_Free(ptr noundef nonnull %742, ptr noundef nonnull @.str, i32 noundef 2708) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  br label %745

745:                                              ; preds = %744, %.preheader.8, %.preheader.7, %.preheader.6, %.preheader.5, %.preheader.4, %.preheader.3, %.preheader.2, %.preheader.1, %.preheader.preheader
  %746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %747 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %746, ptr noundef nonnull @.str.43, i32 noundef 9) #11
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

748:                                              ; preds = %690, %648, %608, %570, %534, %500, %468, %438, %410, %384, %360, %338, %318, %300, %284, %270, %258, %248
  %749 = load ptr, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %750 = icmp eq ptr %749, null
  br i1 %750, label %776, label %751

751:                                              ; preds = %748
  call void @FerMem_Free(ptr noundef nonnull %749, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr @efcn_compute_.work_ptr, align 16, !tbaa !9
  %752 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %753 = icmp eq ptr %752, null
  br i1 %753, label %776, label %754

754:                                              ; preds = %751
  call void @FerMem_Free(ptr noundef nonnull %752, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 8), align 8, !tbaa !9
  %755 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %756 = icmp eq ptr %755, null
  br i1 %756, label %776, label %757

757:                                              ; preds = %754
  call void @FerMem_Free(ptr noundef nonnull %755, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 16), align 16, !tbaa !9
  %758 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %759 = icmp eq ptr %758, null
  br i1 %759, label %776, label %760

760:                                              ; preds = %757
  call void @FerMem_Free(ptr noundef nonnull %758, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 24), align 8, !tbaa !9
  %761 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %762 = icmp eq ptr %761, null
  br i1 %762, label %776, label %763

763:                                              ; preds = %760
  call void @FerMem_Free(ptr noundef nonnull %761, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 32), align 16, !tbaa !9
  %764 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %765 = icmp eq ptr %764, null
  br i1 %765, label %776, label %766

766:                                              ; preds = %763
  call void @FerMem_Free(ptr noundef nonnull %764, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 40), align 8, !tbaa !9
  %767 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %768 = icmp eq ptr %767, null
  br i1 %768, label %776, label %769

769:                                              ; preds = %766
  call void @FerMem_Free(ptr noundef nonnull %767, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 48), align 16, !tbaa !9
  %770 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %771 = icmp eq ptr %770, null
  br i1 %771, label %776, label %772

772:                                              ; preds = %769
  call void @FerMem_Free(ptr noundef nonnull %770, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 56), align 8, !tbaa !9
  %773 = load ptr, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  %774 = icmp eq ptr %773, null
  br i1 %774, label %776, label %775

775:                                              ; preds = %772
  call void @FerMem_Free(ptr noundef nonnull %773, ptr noundef nonnull @.str, i32 noundef 2723) #10
  store ptr null, ptr getelementptr inbounds (i8, ptr @efcn_compute_.work_ptr, i64 64), align 16, !tbaa !9
  br label %776

776:                                              ; preds = %775, %772, %769, %766, %763, %760, %757, %754, %751, %748
  %777 = call i32 @EF_Util_ressig(ptr noundef nonnull @.str.41)
  %.not288 = icmp eq i32 %777, 0
  br i1 %.not288, label %874, label %778

778:                                              ; preds = %776
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

779:                                              ; preds = %37
  call void @llvm.lifetime.start.p0(i64 456, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 456, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 456, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 456, ptr nonnull %27) #10
  call void @llvm.lifetime.start.p0(i64 456, ptr nonnull %28) #10
  call void @llvm.lifetime.start.p0(i64 76, ptr nonnull %29) #10
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %30) #10
  %780 = load ptr, ptr @pyefcn_compute_func, align 8, !tbaa !9
  %781 = icmp eq ptr %780, null
  br i1 %781, label %782, label %795

782:                                              ; preds = %779
  %783 = load ptr, ptr @pyefcn_handle, align 8, !tbaa !9
  %784 = icmp eq ptr %783, null
  br i1 %784, label %785, label %788

785:                                              ; preds = %782
  %786 = load ptr, ptr @stderr, align 8, !tbaa !9
  %787 = call i32 @fputs(ptr noundef nonnull @.str.44, ptr noundef %786) #14
  br label %.critedge

788:                                              ; preds = %782
  %789 = call ptr @dlsym(ptr noundef nonnull %783, ptr noundef nonnull @.str.45) #10
  store ptr %789, ptr @pyefcn_compute_func, align 8, !tbaa !9
  %790 = icmp eq ptr %789, null
  br i1 %790, label %791, label %795

791:                                              ; preds = %788
  %792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %793 = call ptr @dlerror() #10
  %794 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %792, ptr noundef nonnull @.str.46, ptr noundef %793) #11
  br label %.critedge

795:                                              ; preds = %788, %779
  %796 = load ptr, ptr @GLOBAL_res_ptr, align 8, !tbaa !9
  store ptr %796, ptr %8, align 16, !tbaa !9
  %797 = load i32, ptr %42, align 8, !tbaa !13
  %798 = icmp sgt i32 %797, 0
  br i1 %798, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %795
  %scevgep = getelementptr inbounds i8, ptr %8, i64 8
  %799 = zext nneg i32 %797 to i64
  %800 = shl nuw nsw i64 %799, 3
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %scevgep, ptr nonnull align 16 @GLOBAL_arg_ptrs, i64 %800, i1 false), !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %795
  call void @ef_get_res_mem_subscripts_6d_(ptr noundef %0, ptr noundef nonnull %24, ptr noundef nonnull %25) #10
  %801 = getelementptr inbounds i8, ptr %24, i64 24
  %802 = getelementptr inbounds i8, ptr %25, i64 24
  call void @ef_get_arg_mem_subscripts_6d_(ptr noundef %0, ptr noundef nonnull %801, ptr noundef nonnull %802) #10
  call void @ef_get_res_subscripts_6d_(ptr noundef %0, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28) #10
  %803 = getelementptr inbounds i8, ptr %26, i64 24
  %804 = getelementptr inbounds i8, ptr %27, i64 24
  %805 = getelementptr inbounds i8, ptr %28, i64 24
  call void @ef_get_arg_subscripts_6d_(ptr noundef %0, ptr noundef nonnull %803, ptr noundef nonnull %804, ptr noundef nonnull %805) #10
  %806 = getelementptr inbounds i8, ptr %29, i64 4
  call void @ef_get_bad_flags_(ptr noundef %0, ptr noundef nonnull %806, ptr noundef nonnull %29) #10
  %807 = load i32, ptr %42, align 8, !tbaa !13
  %.not260305 = icmp slt i32 %807, 0
  br i1 %.not260305, label %._crit_edge307, label %.preheader302

.preheader302:                                    ; preds = %._crit_edge, %855
  %indvars.iv = phi i64 [ %indvars.iv.next, %855 ], [ 0, %._crit_edge ]
  %808 = getelementptr inbounds [19 x [6 x i32]], ptr %28, i64 0, i64 %indvars.iv, i64 0
  %809 = load i32, ptr %808, align 8, !tbaa !5
  %810 = icmp eq i32 %809, 0
  br i1 %810, label %.sink.split, label %815

.sink.split:                                      ; preds = %.preheader302
  %811 = getelementptr inbounds [19 x [6 x i32]], ptr %26, i64 0, i64 %indvars.iv, i64 0
  %812 = load i32, ptr %811, align 8, !tbaa !5
  %813 = getelementptr inbounds [19 x [6 x i32]], ptr %27, i64 0, i64 %indvars.iv, i64 0
  %814 = load i32, ptr %813, align 8, !tbaa !5
  %.not265 = icmp sgt i32 %812, %814
  %. = select i1 %.not265, i32 -1, i32 1
  store i32 %., ptr %808, align 8, !tbaa !5
  br label %815

815:                                              ; preds = %.sink.split, %.preheader302
  %816 = getelementptr inbounds [19 x [6 x i32]], ptr %28, i64 0, i64 %indvars.iv, i64 1
  %817 = load i32, ptr %816, align 4, !tbaa !5
  %818 = icmp eq i32 %817, 0
  br i1 %818, label %.sink.split372, label %823

.sink.split372:                                   ; preds = %815
  %819 = getelementptr inbounds [19 x [6 x i32]], ptr %26, i64 0, i64 %indvars.iv, i64 1
  %820 = load i32, ptr %819, align 4, !tbaa !5
  %821 = getelementptr inbounds [19 x [6 x i32]], ptr %27, i64 0, i64 %indvars.iv, i64 1
  %822 = load i32, ptr %821, align 4, !tbaa !5
  %.not265.1 = icmp sgt i32 %820, %822
  %.382 = select i1 %.not265.1, i32 -1, i32 1
  store i32 %.382, ptr %816, align 4, !tbaa !5
  br label %823

823:                                              ; preds = %.sink.split372, %815
  %824 = getelementptr inbounds [19 x [6 x i32]], ptr %28, i64 0, i64 %indvars.iv, i64 2
  %825 = load i32, ptr %824, align 8, !tbaa !5
  %826 = icmp eq i32 %825, 0
  br i1 %826, label %.sink.split374, label %831

.sink.split374:                                   ; preds = %823
  %827 = getelementptr inbounds [19 x [6 x i32]], ptr %26, i64 0, i64 %indvars.iv, i64 2
  %828 = load i32, ptr %827, align 8, !tbaa !5
  %829 = getelementptr inbounds [19 x [6 x i32]], ptr %27, i64 0, i64 %indvars.iv, i64 2
  %830 = load i32, ptr %829, align 8, !tbaa !5
  %.not265.2 = icmp sgt i32 %828, %830
  %.383 = select i1 %.not265.2, i32 -1, i32 1
  store i32 %.383, ptr %824, align 8, !tbaa !5
  br label %831

831:                                              ; preds = %.sink.split374, %823
  %832 = getelementptr inbounds [19 x [6 x i32]], ptr %28, i64 0, i64 %indvars.iv, i64 3
  %833 = load i32, ptr %832, align 4, !tbaa !5
  %834 = icmp eq i32 %833, 0
  br i1 %834, label %.sink.split376, label %839

.sink.split376:                                   ; preds = %831
  %835 = getelementptr inbounds [19 x [6 x i32]], ptr %26, i64 0, i64 %indvars.iv, i64 3
  %836 = load i32, ptr %835, align 4, !tbaa !5
  %837 = getelementptr inbounds [19 x [6 x i32]], ptr %27, i64 0, i64 %indvars.iv, i64 3
  %838 = load i32, ptr %837, align 4, !tbaa !5
  %.not265.3 = icmp sgt i32 %836, %838
  %.384 = select i1 %.not265.3, i32 -1, i32 1
  store i32 %.384, ptr %832, align 4, !tbaa !5
  br label %839

839:                                              ; preds = %.sink.split376, %831
  %840 = getelementptr inbounds [19 x [6 x i32]], ptr %28, i64 0, i64 %indvars.iv, i64 4
  %841 = load i32, ptr %840, align 8, !tbaa !5
  %842 = icmp eq i32 %841, 0
  br i1 %842, label %.sink.split378, label %847

.sink.split378:                                   ; preds = %839
  %843 = getelementptr inbounds [19 x [6 x i32]], ptr %26, i64 0, i64 %indvars.iv, i64 4
  %844 = load i32, ptr %843, align 8, !tbaa !5
  %845 = getelementptr inbounds [19 x [6 x i32]], ptr %27, i64 0, i64 %indvars.iv, i64 4
  %846 = load i32, ptr %845, align 8, !tbaa !5
  %.not265.4 = icmp sgt i32 %844, %846
  %.385 = select i1 %.not265.4, i32 -1, i32 1
  store i32 %.385, ptr %840, align 8, !tbaa !5
  br label %847

847:                                              ; preds = %.sink.split378, %839
  %848 = getelementptr inbounds [19 x [6 x i32]], ptr %28, i64 0, i64 %indvars.iv, i64 5
  %849 = load i32, ptr %848, align 4, !tbaa !5
  %850 = icmp eq i32 %849, 0
  br i1 %850, label %.sink.split380, label %855

.sink.split380:                                   ; preds = %847
  %851 = getelementptr inbounds [19 x [6 x i32]], ptr %26, i64 0, i64 %indvars.iv, i64 5
  %852 = load i32, ptr %851, align 4, !tbaa !5
  %853 = getelementptr inbounds [19 x [6 x i32]], ptr %27, i64 0, i64 %indvars.iv, i64 5
  %854 = load i32, ptr %853, align 4, !tbaa !5
  %.not265.5 = icmp sgt i32 %852, %854
  %.386 = select i1 %.not265.5, i32 -1, i32 1
  store i32 %.386, ptr %848, align 4, !tbaa !5
  br label %855

855:                                              ; preds = %.sink.split380, %847
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %856 = load i32, ptr %42, align 8, !tbaa !13
  %857 = sext i32 %856 to i64
  %.not260.not = icmp slt i64 %indvars.iv, %857
  br i1 %.not260.not, label %.preheader302, label %._crit_edge307, !llvm.loop !22

._crit_edge307:                                   ; preds = %855, %._crit_edge
  %858 = call i32 @EF_Util_setsig(ptr noundef nonnull @.str.41)
  %.not261 = icmp eq i32 %858, 0
  br i1 %.not261, label %859, label %.critedge

859:                                              ; preds = %._crit_edge307
  %860 = call i32 @__sigsetjmp(ptr noundef nonnull @sigjumpbuffer, i32 noundef 1) #13
  %.not262 = icmp eq i32 %860, 0
  br i1 %.not262, label %861, label %.critedge

861:                                              ; preds = %859
  %862 = call i32 @_setjmp(ptr noundef nonnull @jumpbuffer) #13
  %.not263 = icmp eq i32 %862, 0
  br i1 %.not263, label %863, label %.critedge

863:                                              ; preds = %861
  store volatile i32 1, ptr @canjump, align 4, !tbaa !5
  %864 = load ptr, ptr @pyefcn_compute_func, align 8, !tbaa !9
  %865 = load i32, ptr %0, align 4, !tbaa !5
  %866 = load i32, ptr %42, align 8, !tbaa !13
  %867 = add nsw i32 %866, 1
  call void %864(i32 noundef %865, ptr noundef nonnull %38, ptr noundef nonnull %8, i32 noundef %867, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30) #10
  %char0 = load i8, ptr %30, align 16
  %.not264 = icmp eq i8 %char0, 0
  br i1 %.not264, label %869, label %868

868:                                              ; preds = %863
  call void @ef_err_bail_out_(ptr noundef nonnull %0, ptr noundef nonnull %30)
  br label %869

869:                                              ; preds = %868, %863
  %870 = call i32 @EF_Util_ressig(ptr noundef nonnull @.str.41)
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 76, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %24) #10
  br label %874

871:                                              ; preds = %37
  %872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %873 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %872, ptr noundef nonnull @.str.47, i32 noundef %45) #11
  store i32 437, ptr %6, align 4, !tbaa !5
  br label %874

.critedge:                                        ; preds = %861, %859, %._crit_edge307, %791, %785
  store i32 437, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 76, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 456, ptr nonnull %24) #10
  br label %874

874:                                              ; preds = %._crit_edge315, %776, %871, %869, %.critedge, %778, %745, %232, %210, %188, %78, %62, %56, %33
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %8) #10
  ret void
}

declare void @efcn_copy_array_dims_() local_unnamed_addr #4

declare void @efcn_rqst_mr_ptrs_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @efcn_set_work_array_dims_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare ptr @FerMem_Malloc(i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

declare void @ef_get_res_mem_subscripts_6d_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @ef_get_arg_mem_subscripts_6d_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @ef_get_res_subscripts_6d_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @ef_get_arg_subscripts_6d_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @ef_get_bad_flags_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @EF_Util_setsig(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @EF_Util_ressig(ptr noundef) local_unnamed_addr #1

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 184}
!12 = !{!"", !10, i64 0, !7, i64 8, !7, i64 48, !6, i64 176, !6, i64 180, !10, i64 184}
!13 = !{!14, !6, i64 216}
!14 = !{!"", !15, i64 0, !7, i64 4, !7, i64 132, !7, i64 172, !6, i64 212, !6, i64 216, !6, i64 220, !6, i64 224, !7, i64 228, !7, i64 444, !7, i64 660, !7, i64 684, !7, i64 708, !6, i64 732, !7, i64 736, !7, i64 760, !7, i64 1288, !7, i64 1504, !7, i64 1720, !7, i64 1936, !7, i64 1972, !7, i64 2332, !7, i64 2692}
!15 = !{!"float", !7, i64 0}
!16 = !{!14, !6, i64 212}
!17 = !{!14, !6, i64 224}
!18 = !{!12, !10, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}


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