; LLVM IR from InsightSoftwareConsortium/ITK :: Modules/ThirdParty/MINC/src/libminc/nifti (nifti1_io)

; 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.mat44 = type { [4 x [4 x float]] }
%struct.nifti_image = type { i32, i32, i32, i32, i32, i32, i32, i32, [8 x i32], i64, i32, i32, float, float, float, float, float, float, float, [8 x float], float, float, float, float, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, %struct.mat44, %struct.mat44, %struct.mat44, %struct.mat44, float, i32, i32, i32, i32, float, float, float, [16 x i8], [80 x i8], [24 x i8], ptr, ptr, i32, i32, i32, ptr, i32, ptr, i32 }

@stderr = external global ptr, align 8
@.str.258 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.261 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.262 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.263 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.264 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.265 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.266 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.267 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.268 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.269 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.271 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.272 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.274 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.276 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.277 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.278 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.279 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.280 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.281 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.282 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.283 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.284 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.285 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.287 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.289 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.290 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.291 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.292 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.293 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.294 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.295 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.296 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.297 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.299 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.300 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.301 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.302 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.303 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.304 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.305 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.306 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.307 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [37 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
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #1

; Function Attrs: nounwind
declare void @free(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @nifti_mat44_to_orientation(ptr noundef byval(%struct.mat44) align 8, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @nifti_orientation_string(i32 noundef) #2

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

; Function Attrs: nounwind uwtable
declare dso_local ptr @nifti_datatype_string(i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @nifti_units_string(i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @nifti_xform_string(i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @nifti_intent_string(i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @nifti_slice_string(i32 noundef) #2

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

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #5

; Function Attrs: nounwind uwtable
define dso_local ptr @nifti_image_to_ascii(ptr noundef %0) #2 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %struct.mat44, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %struct.mat44, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  %16 = load ptr, ptr %3, align 8, !tbaa !5
  %17 = icmp eq ptr %16, null
  br i1 %17, label %18, label %19

18:                                               ; preds = %1
  store ptr null, ptr %2, align 8
  store i32 1, ptr %7, align 4
  br label %1245

19:                                               ; preds = %1
  %20 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 65534) #8
  store ptr %20, ptr %4, align 8, !tbaa !5
  store i32 0, ptr %6, align 4, !tbaa !9
  %21 = load ptr, ptr %4, align 8, !tbaa !5
  %22 = icmp ne ptr %21, null
  br i1 %22, label %26, label %23

23:                                               ; preds = %19
  %24 = load ptr, ptr @stderr, align 8, !tbaa !5
  %25 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef @.str.258, i32 noundef 65534) #7
  store ptr null, ptr %2, align 8
  store i32 1, ptr %7, align 4
  br label %1245

26:                                               ; preds = %19
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  %28 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %27, ptr noundef @.str.259) #7
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = call i64 @strlen(ptr noundef %30) #9
  %32 = getelementptr inbounds i8, ptr %29, i64 %31
  %33 = load ptr, ptr %3, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.nifti_image, ptr %33, i32 0, i32 47
  %35 = load i32, ptr %34, align 8, !tbaa !11
  %36 = icmp eq i32 %35, 1
  br i1 %36, label %37, label %38

37:                                               ; preds = %26
  br label %53

38:                                               ; preds = %26
  %39 = load ptr, ptr %3, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.nifti_image, ptr %39, i32 0, i32 47
  %41 = load i32, ptr %40, align 8, !tbaa !11
  %42 = icmp eq i32 %41, 2
  br i1 %42, label %43, label %44

43:                                               ; preds = %38
  br label %51

44:                                               ; preds = %38
  %45 = load ptr, ptr %3, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.nifti_image, ptr %45, i32 0, i32 47
  %47 = load i32, ptr %46, align 8, !tbaa !11
  %48 = icmp eq i32 %47, 3
  %49 = zext i1 %48 to i64
  %50 = select i1 %48, ptr @.str.263, ptr @.str.264
  br label %51

51:                                               ; preds = %44, %43
  %52 = phi ptr [ @.str.262, %43 ], [ %50, %44 ]
  br label %53

53:                                               ; preds = %51, %37
  %54 = phi ptr [ @.str.261, %37 ], [ %52, %51 ]
  %55 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %32, ptr noundef @.str.260, ptr noundef %54) #7
  %56 = load ptr, ptr %3, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.nifti_image, ptr %56, i32 0, i32 55
  %58 = load ptr, ptr %57, align 8, !tbaa !16
  %59 = call ptr @escapize_string(ptr noundef %58)
  store ptr %59, ptr %5, align 8, !tbaa !5
  %60 = load ptr, ptr %4, align 8, !tbaa !5
  %61 = load ptr, ptr %4, align 8, !tbaa !5
  %62 = call i64 @strlen(ptr noundef %61) #9
  %63 = getelementptr inbounds i8, ptr %60, i64 %62
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %63, ptr noundef @.str.265, ptr noundef %64) #7
  %66 = load ptr, ptr %5, align 8, !tbaa !5
  call void @free(ptr noundef %66) #7
  %67 = load ptr, ptr %3, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.nifti_image, ptr %67, i32 0, i32 56
  %69 = load ptr, ptr %68, align 8, !tbaa !17
  %70 = call ptr @escapize_string(ptr noundef %69)
  store ptr %70, ptr %5, align 8, !tbaa !5
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = load ptr, ptr %4, align 8, !tbaa !5
  %73 = call i64 @strlen(ptr noundef %72) #9
  %74 = getelementptr inbounds i8, ptr %71, i64 %73
  %75 = load ptr, ptr %5, align 8, !tbaa !5
  %76 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %74, ptr noundef @.str.266, ptr noundef %75) #7
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  call void @free(ptr noundef %77) #7
  %78 = load ptr, ptr %4, align 8, !tbaa !5
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = call i64 @strlen(ptr noundef %79) #9
  %81 = getelementptr inbounds i8, ptr %78, i64 %80
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.nifti_image, ptr %82, i32 0, i32 57
  %84 = load i32, ptr %83, align 8, !tbaa !18
  %85 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %81, ptr noundef @.str.267, i32 noundef %84) #7
  %86 = load ptr, ptr %4, align 8, !tbaa !5
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = call i64 @strlen(ptr noundef %87) #9
  %89 = getelementptr inbounds i8, ptr %86, i64 %88
  %90 = load ptr, ptr %3, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.nifti_image, ptr %90, i32 0, i32 0
  %92 = load i32, ptr %91, align 8, !tbaa !19
  %93 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %89, ptr noundef @.str.268, i32 noundef %92) #7
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = call i64 @strlen(ptr noundef %95) #9
  %97 = getelementptr inbounds i8, ptr %94, i64 %96
  %98 = load ptr, ptr %3, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.nifti_image, ptr %98, i32 0, i32 1
  %100 = load i32, ptr %99, align 4, !tbaa !20
  %101 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %97, ptr noundef @.str.269, i32 noundef %100) #7
  %102 = load ptr, ptr %3, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.nifti_image, ptr %102, i32 0, i32 0
  %104 = load i32, ptr %103, align 8, !tbaa !19
  %105 = icmp sgt i32 %104, 1
  br i1 %105, label %106, label %115

106:                                              ; preds = %53
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = load ptr, ptr %4, align 8, !tbaa !5
  %109 = call i64 @strlen(ptr noundef %108) #9
  %110 = getelementptr inbounds i8, ptr %107, i64 %109
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.nifti_image, ptr %111, i32 0, i32 2
  %113 = load i32, ptr %112, align 8, !tbaa !21
  %114 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %110, ptr noundef @.str.270, i32 noundef %113) #7
  br label %115

115:                                              ; preds = %106, %53
  %116 = load ptr, ptr %3, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.nifti_image, ptr %116, i32 0, i32 0
  %118 = load i32, ptr %117, align 8, !tbaa !19
  %119 = icmp sgt i32 %118, 2
  br i1 %119, label %120, label %129

120:                                              ; preds = %115
  %121 = load ptr, ptr %4, align 8, !tbaa !5
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = call i64 @strlen(ptr noundef %122) #9
  %124 = getelementptr inbounds i8, ptr %121, i64 %123
  %125 = load ptr, ptr %3, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.nifti_image, ptr %125, i32 0, i32 3
  %127 = load i32, ptr %126, align 4, !tbaa !22
  %128 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %124, ptr noundef @.str.271, i32 noundef %127) #7
  br label %129

129:                                              ; preds = %120, %115
  %130 = load ptr, ptr %3, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.nifti_image, ptr %130, i32 0, i32 0
  %132 = load i32, ptr %131, align 8, !tbaa !19
  %133 = icmp sgt i32 %132, 3
  br i1 %133, label %134, label %143

134:                                              ; preds = %129
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = call i64 @strlen(ptr noundef %136) #9
  %138 = getelementptr inbounds i8, ptr %135, i64 %137
  %139 = load ptr, ptr %3, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.nifti_image, ptr %139, i32 0, i32 4
  %141 = load i32, ptr %140, align 8, !tbaa !23
  %142 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %138, ptr noundef @.str.272, i32 noundef %141) #7
  br label %143

143:                                              ; preds = %134, %129
  %144 = load ptr, ptr %3, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.nifti_image, ptr %144, i32 0, i32 0
  %146 = load i32, ptr %145, align 8, !tbaa !19
  %147 = icmp sgt i32 %146, 4
  br i1 %147, label %148, label %157

148:                                              ; preds = %143
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = call i64 @strlen(ptr noundef %150) #9
  %152 = getelementptr inbounds i8, ptr %149, i64 %151
  %153 = load ptr, ptr %3, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.nifti_image, ptr %153, i32 0, i32 5
  %155 = load i32, ptr %154, align 4, !tbaa !24
  %156 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %152, ptr noundef @.str.273, i32 noundef %155) #7
  br label %157

157:                                              ; preds = %148, %143
  %158 = load ptr, ptr %3, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.nifti_image, ptr %158, i32 0, i32 0
  %160 = load i32, ptr %159, align 8, !tbaa !19
  %161 = icmp sgt i32 %160, 5
  br i1 %161, label %162, label %171

162:                                              ; preds = %157
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = call i64 @strlen(ptr noundef %164) #9
  %166 = getelementptr inbounds i8, ptr %163, i64 %165
  %167 = load ptr, ptr %3, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.nifti_image, ptr %167, i32 0, i32 6
  %169 = load i32, ptr %168, align 8, !tbaa !25
  %170 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %166, ptr noundef @.str.274, i32 noundef %169) #7
  br label %171

171:                                              ; preds = %162, %157
  %172 = load ptr, ptr %3, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.nifti_image, ptr %172, i32 0, i32 0
  %174 = load i32, ptr %173, align 8, !tbaa !19
  %175 = icmp sgt i32 %174, 6
  br i1 %175, label %176, label %185

176:                                              ; preds = %171
  %177 = load ptr, ptr %4, align 8, !tbaa !5
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = call i64 @strlen(ptr noundef %178) #9
  %180 = getelementptr inbounds i8, ptr %177, i64 %179
  %181 = load ptr, ptr %3, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.nifti_image, ptr %181, i32 0, i32 7
  %183 = load i32, ptr %182, align 4, !tbaa !26
  %184 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %180, ptr noundef @.str.275, i32 noundef %183) #7
  br label %185

185:                                              ; preds = %176, %171
  %186 = load ptr, ptr %4, align 8, !tbaa !5
  %187 = load ptr, ptr %4, align 8, !tbaa !5
  %188 = call i64 @strlen(ptr noundef %187) #9
  %189 = getelementptr inbounds i8, ptr %186, i64 %188
  %190 = load ptr, ptr %3, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.nifti_image, ptr %190, i32 0, i32 12
  %192 = load float, ptr %191, align 8, !tbaa !27
  %193 = fpext float %192 to double
  %194 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %189, ptr noundef @.str.276, double noundef %193) #7
  %195 = load ptr, ptr %3, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.nifti_image, ptr %195, i32 0, i32 0
  %197 = load i32, ptr %196, align 8, !tbaa !19
  %198 = icmp sgt i32 %197, 1
  br i1 %198, label %199, label %209

199:                                              ; preds = %185
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = load ptr, ptr %4, align 8, !tbaa !5
  %202 = call i64 @strlen(ptr noundef %201) #9
  %203 = getelementptr inbounds i8, ptr %200, i64 %202
  %204 = load ptr, ptr %3, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.nifti_image, ptr %204, i32 0, i32 13
  %206 = load float, ptr %205, align 4, !tbaa !28
  %207 = fpext float %206 to double
  %208 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %203, ptr noundef @.str.277, double noundef %207) #7
  br label %209

209:                                              ; preds = %199, %185
  %210 = load ptr, ptr %3, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.nifti_image, ptr %210, i32 0, i32 0
  %212 = load i32, ptr %211, align 8, !tbaa !19
  %213 = icmp sgt i32 %212, 2
  br i1 %213, label %214, label %224

214:                                              ; preds = %209
  %215 = load ptr, ptr %4, align 8, !tbaa !5
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = call i64 @strlen(ptr noundef %216) #9
  %218 = getelementptr inbounds i8, ptr %215, i64 %217
  %219 = load ptr, ptr %3, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.nifti_image, ptr %219, i32 0, i32 14
  %221 = load float, ptr %220, align 8, !tbaa !29
  %222 = fpext float %221 to double
  %223 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %218, ptr noundef @.str.278, double noundef %222) #7
  br label %224

224:                                              ; preds = %214, %209
  %225 = load ptr, ptr %3, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.nifti_image, ptr %225, i32 0, i32 0
  %227 = load i32, ptr %226, align 8, !tbaa !19
  %228 = icmp sgt i32 %227, 3
  br i1 %228, label %229, label %239

229:                                              ; preds = %224
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = call i64 @strlen(ptr noundef %231) #9
  %233 = getelementptr inbounds i8, ptr %230, i64 %232
  %234 = load ptr, ptr %3, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.nifti_image, ptr %234, i32 0, i32 15
  %236 = load float, ptr %235, align 4, !tbaa !30
  %237 = fpext float %236 to double
  %238 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %233, ptr noundef @.str.279, double noundef %237) #7
  br label %239

239:                                              ; preds = %229, %224
  %240 = load ptr, ptr %3, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.nifti_image, ptr %240, i32 0, i32 0
  %242 = load i32, ptr %241, align 8, !tbaa !19
  %243 = icmp sgt i32 %242, 4
  br i1 %243, label %244, label %254

244:                                              ; preds = %239
  %245 = load ptr, ptr %4, align 8, !tbaa !5
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = call i64 @strlen(ptr noundef %246) #9
  %248 = getelementptr inbounds i8, ptr %245, i64 %247
  %249 = load ptr, ptr %3, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.nifti_image, ptr %249, i32 0, i32 16
  %251 = load float, ptr %250, align 8, !tbaa !31
  %252 = fpext float %251 to double
  %253 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %248, ptr noundef @.str.280, double noundef %252) #7
  br label %254

254:                                              ; preds = %244, %239
  %255 = load ptr, ptr %3, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.nifti_image, ptr %255, i32 0, i32 0
  %257 = load i32, ptr %256, align 8, !tbaa !19
  %258 = icmp sgt i32 %257, 5
  br i1 %258, label %259, label %269

259:                                              ; preds = %254
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  %262 = call i64 @strlen(ptr noundef %261) #9
  %263 = getelementptr inbounds i8, ptr %260, i64 %262
  %264 = load ptr, ptr %3, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.nifti_image, ptr %264, i32 0, i32 17
  %266 = load float, ptr %265, align 4, !tbaa !32
  %267 = fpext float %266 to double
  %268 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %263, ptr noundef @.str.281, double noundef %267) #7
  br label %269

269:                                              ; preds = %259, %254
  %270 = load ptr, ptr %3, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.nifti_image, ptr %270, i32 0, i32 0
  %272 = load i32, ptr %271, align 8, !tbaa !19
  %273 = icmp sgt i32 %272, 6
  br i1 %273, label %274, label %284

274:                                              ; preds = %269
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = load ptr, ptr %4, align 8, !tbaa !5
  %277 = call i64 @strlen(ptr noundef %276) #9
  %278 = getelementptr inbounds i8, ptr %275, i64 %277
  %279 = load ptr, ptr %3, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.nifti_image, ptr %279, i32 0, i32 18
  %281 = load float, ptr %280, align 8, !tbaa !33
  %282 = fpext float %281 to double
  %283 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %278, ptr noundef @.str.282, double noundef %282) #7
  br label %284

284:                                              ; preds = %274, %269
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  %286 = load ptr, ptr %4, align 8, !tbaa !5
  %287 = call i64 @strlen(ptr noundef %286) #9
  %288 = getelementptr inbounds i8, ptr %285, i64 %287
  %289 = load ptr, ptr %3, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.nifti_image, ptr %289, i32 0, i32 11
  %291 = load i32, ptr %290, align 4, !tbaa !34
  %292 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %288, ptr noundef @.str.283, i32 noundef %291) #7
  %293 = load ptr, ptr %4, align 8, !tbaa !5
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = call i64 @strlen(ptr noundef %294) #9
  %296 = getelementptr inbounds i8, ptr %293, i64 %295
  %297 = load ptr, ptr %3, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.nifti_image, ptr %297, i32 0, i32 11
  %299 = load i32, ptr %298, align 4, !tbaa !34
  %300 = call ptr @nifti_datatype_string(i32 noundef %299)
  %301 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %296, ptr noundef @.str.284, ptr noundef %300) #7
  %302 = load ptr, ptr %4, align 8, !tbaa !5
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = call i64 @strlen(ptr noundef %303) #9
  %305 = getelementptr inbounds i8, ptr %302, i64 %304
  %306 = load ptr, ptr %3, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.nifti_image, ptr %306, i32 0, i32 9
  %308 = load i64, ptr %307, align 8, !tbaa !35
  %309 = trunc i64 %308 to i32
  %310 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %305, ptr noundef @.str.285, i32 noundef %309) #7
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = call i64 @strlen(ptr noundef %312) #9
  %314 = getelementptr inbounds i8, ptr %311, i64 %313
  %315 = load ptr, ptr %3, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.nifti_image, ptr %315, i32 0, i32 10
  %317 = load i32, ptr %316, align 8, !tbaa !36
  %318 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %314, ptr noundef @.str.286, i32 noundef %317) #7
  %319 = load ptr, ptr %4, align 8, !tbaa !5
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = call i64 @strlen(ptr noundef %320) #9
  %322 = getelementptr inbounds i8, ptr %319, i64 %321
  %323 = load ptr, ptr %3, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.nifti_image, ptr %323, i32 0, i32 59
  %325 = load i32, ptr %324, align 8, !tbaa !37
  %326 = icmp eq i32 %325, 2
  %327 = zext i1 %326 to i64
  %328 = select i1 %326, ptr @.str.288, ptr @.str.289
  %329 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %322, ptr noundef @.str.287, ptr noundef %328) #7
  %330 = load ptr, ptr %3, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.nifti_image, ptr %330, i32 0, i32 22
  %332 = load float, ptr %331, align 4, !tbaa !38
  %333 = load ptr, ptr %3, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.nifti_image, ptr %333, i32 0, i32 23
  %335 = load float, ptr %334, align 8, !tbaa !39
  %336 = fcmp olt float %332, %335
  br i1 %336, label %337, label %356

337:                                              ; preds = %284
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = load ptr, ptr %4, align 8, !tbaa !5
  %340 = call i64 @strlen(ptr noundef %339) #9
  %341 = getelementptr inbounds i8, ptr %338, i64 %340
  %342 = load ptr, ptr %3, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.nifti_image, ptr %342, i32 0, i32 22
  %344 = load float, ptr %343, align 4, !tbaa !38
  %345 = fpext float %344 to double
  %346 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %341, ptr noundef @.str.290, double noundef %345) #7
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  %348 = load ptr, ptr %4, align 8, !tbaa !5
  %349 = call i64 @strlen(ptr noundef %348) #9
  %350 = getelementptr inbounds i8, ptr %347, i64 %349
  %351 = load ptr, ptr %3, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.nifti_image, ptr %351, i32 0, i32 23
  %353 = load float, ptr %352, align 8, !tbaa !39
  %354 = fpext float %353 to double
  %355 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %350, ptr noundef @.str.291, double noundef %354) #7
  br label %356

356:                                              ; preds = %337, %284
  %357 = load ptr, ptr %3, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.nifti_image, ptr %357, i32 0, i32 20
  %359 = load float, ptr %358, align 4, !tbaa !40
  %360 = fpext float %359 to double
  %361 = fcmp une double %360, 0.000000e+00
  br i1 %361, label %362, label %381

362:                                              ; preds = %356
  %363 = load ptr, ptr %4, align 8, !tbaa !5
  %364 = load ptr, ptr %4, align 8, !tbaa !5
  %365 = call i64 @strlen(ptr noundef %364) #9
  %366 = getelementptr inbounds i8, ptr %363, i64 %365
  %367 = load ptr, ptr %3, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.nifti_image, ptr %367, i32 0, i32 20
  %369 = load float, ptr %368, align 4, !tbaa !40
  %370 = fpext float %369 to double
  %371 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %366, ptr noundef @.str.292, double noundef %370) #7
  %372 = load ptr, ptr %4, align 8, !tbaa !5
  %373 = load ptr, ptr %4, align 8, !tbaa !5
  %374 = call i64 @strlen(ptr noundef %373) #9
  %375 = getelementptr inbounds i8, ptr %372, i64 %374
  %376 = load ptr, ptr %3, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.nifti_image, ptr %376, i32 0, i32 21
  %378 = load float, ptr %377, align 8, !tbaa !41
  %379 = fpext float %378 to double
  %380 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %375, ptr noundef @.str.293, double noundef %379) #7
  br label %381

381:                                              ; preds = %362, %356
  %382 = load ptr, ptr %3, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.nifti_image, ptr %382, i32 0, i32 48
  %384 = load i32, ptr %383, align 4, !tbaa !42
  %385 = icmp sgt i32 %384, 0
  br i1 %385, label %386, label %450

386:                                              ; preds = %381
  %387 = load ptr, ptr %4, align 8, !tbaa !5
  %388 = load ptr, ptr %4, align 8, !tbaa !5
  %389 = call i64 @strlen(ptr noundef %388) #9
  %390 = getelementptr inbounds i8, ptr %387, i64 %389
  %391 = load ptr, ptr %3, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.nifti_image, ptr %391, i32 0, i32 48
  %393 = load i32, ptr %392, align 4, !tbaa !42
  %394 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %390, ptr noundef @.str.294, i32 noundef %393) #7
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = load ptr, ptr %4, align 8, !tbaa !5
  %397 = call i64 @strlen(ptr noundef %396) #9
  %398 = getelementptr inbounds i8, ptr %395, i64 %397
  %399 = load ptr, ptr %3, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.nifti_image, ptr %399, i32 0, i32 48
  %401 = load i32, ptr %400, align 4, !tbaa !42
  %402 = call ptr @nifti_intent_string(i32 noundef %401)
  %403 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %398, ptr noundef @.str.295, ptr noundef %402) #7
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = load ptr, ptr %4, align 8, !tbaa !5
  %406 = call i64 @strlen(ptr noundef %405) #9
  %407 = getelementptr inbounds i8, ptr %404, i64 %406
  %408 = load ptr, ptr %3, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.nifti_image, ptr %408, i32 0, i32 49
  %410 = load float, ptr %409, align 8, !tbaa !43
  %411 = fpext float %410 to double
  %412 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %407, ptr noundef @.str.296, double noundef %411) #7
  %413 = load ptr, ptr %4, align 8, !tbaa !5
  %414 = load ptr, ptr %4, align 8, !tbaa !5
  %415 = call i64 @strlen(ptr noundef %414) #9
  %416 = getelementptr inbounds i8, ptr %413, i64 %415
  %417 = load ptr, ptr %3, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.nifti_image, ptr %417, i32 0, i32 50
  %419 = load float, ptr %418, align 4, !tbaa !44
  %420 = fpext float %419 to double
  %421 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %416, ptr noundef @.str.297, double noundef %420) #7
  %422 = load ptr, ptr %4, align 8, !tbaa !5
  %423 = load ptr, ptr %4, align 8, !tbaa !5
  %424 = call i64 @strlen(ptr noundef %423) #9
  %425 = getelementptr inbounds i8, ptr %422, i64 %424
  %426 = load ptr, ptr %3, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.nifti_image, ptr %426, i32 0, i32 51
  %428 = load float, ptr %427, align 8, !tbaa !45
  %429 = fpext float %428 to double
  %430 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %425, ptr noundef @.str.298, double noundef %429) #7
  %431 = load ptr, ptr %3, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.nifti_image, ptr %431, i32 0, i32 52
  %433 = getelementptr inbounds [16 x i8], ptr %432, i64 0, i64 0
  %434 = load i8, ptr %433, align 4, !tbaa !46
  %435 = sext i8 %434 to i32
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %449

437:                                              ; preds = %386
  %438 = load ptr, ptr %3, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.nifti_image, ptr %438, i32 0, i32 52
  %440 = getelementptr inbounds [16 x i8], ptr %439, i64 0, i64 0
  %441 = call ptr @escapize_string(ptr noundef %440)
  store ptr %441, ptr %5, align 8, !tbaa !5
  %442 = load ptr, ptr %4, align 8, !tbaa !5
  %443 = load ptr, ptr %4, align 8, !tbaa !5
  %444 = call i64 @strlen(ptr noundef %443) #9
  %445 = getelementptr inbounds i8, ptr %442, i64 %444
  %446 = load ptr, ptr %5, align 8, !tbaa !5
  %447 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %445, ptr noundef @.str.299, ptr noundef %446) #7
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  call void @free(ptr noundef %448) #7
  br label %449

449:                                              ; preds = %437, %386
  br label %450

450:                                              ; preds = %449, %381
  %451 = load ptr, ptr %3, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.nifti_image, ptr %451, i32 0, i32 44
  %453 = load float, ptr %452, align 4, !tbaa !47
  %454 = fpext float %453 to double
  %455 = fcmp une double %454, 0.000000e+00
  br i1 %455, label %456, label %466

456:                                              ; preds = %450
  %457 = load ptr, ptr %4, align 8, !tbaa !5
  %458 = load ptr, ptr %4, align 8, !tbaa !5
  %459 = call i64 @strlen(ptr noundef %458) #9
  %460 = getelementptr inbounds i8, ptr %457, i64 %459
  %461 = load ptr, ptr %3, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.nifti_image, ptr %461, i32 0, i32 44
  %463 = load float, ptr %462, align 4, !tbaa !47
  %464 = fpext float %463 to double
  %465 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %460, ptr noundef @.str.300, double noundef %464) #7
  br label %466

466:                                              ; preds = %456, %450
  %467 = load ptr, ptr %3, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.nifti_image, ptr %467, i32 0, i32 45
  %469 = load i32, ptr %468, align 8, !tbaa !48
  %470 = icmp sgt i32 %469, 0
  br i1 %470, label %471, label %484

471:                                              ; preds = %466
  %472 = load ptr, ptr %4, align 8, !tbaa !5
  %473 = load ptr, ptr %4, align 8, !tbaa !5
  %474 = call i64 @strlen(ptr noundef %473) #9
  %475 = getelementptr inbounds i8, ptr %472, i64 %474
  %476 = load ptr, ptr %3, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.nifti_image, ptr %476, i32 0, i32 45
  %478 = load i32, ptr %477, align 8, !tbaa !48
  %479 = load ptr, ptr %3, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.nifti_image, ptr %479, i32 0, i32 45
  %481 = load i32, ptr %480, align 8, !tbaa !48
  %482 = call ptr @nifti_units_string(i32 noundef %481)
  %483 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %475, ptr noundef @.str.301, i32 noundef %478, ptr noundef %482) #7
  br label %484

484:                                              ; preds = %471, %466
  %485 = load ptr, ptr %3, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.nifti_image, ptr %485, i32 0, i32 46
  %487 = load i32, ptr %486, align 4, !tbaa !49
  %488 = icmp sgt i32 %487, 0
  br i1 %488, label %489, label %502

489:                                              ; preds = %484
  %490 = load ptr, ptr %4, align 8, !tbaa !5
  %491 = load ptr, ptr %4, align 8, !tbaa !5
  %492 = call i64 @strlen(ptr noundef %491) #9
  %493 = getelementptr inbounds i8, ptr %490, i64 %492
  %494 = load ptr, ptr %3, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.nifti_image, ptr %494, i32 0, i32 46
  %496 = load i32, ptr %495, align 4, !tbaa !49
  %497 = load ptr, ptr %3, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.nifti_image, ptr %497, i32 0, i32 46
  %499 = load i32, ptr %498, align 4, !tbaa !49
  %500 = call ptr @nifti_units_string(i32 noundef %499)
  %501 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %493, ptr noundef @.str.302, i32 noundef %496, ptr noundef %500) #7
  br label %502

502:                                              ; preds = %489, %484
  %503 = load ptr, ptr %3, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.nifti_image, ptr %503, i32 0, i32 26
  %505 = load i32, ptr %504, align 4, !tbaa !50
  %506 = icmp sgt i32 %505, 0
  br i1 %506, label %507, label %516

507:                                              ; preds = %502
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = call i64 @strlen(ptr noundef %509) #9
  %511 = getelementptr inbounds i8, ptr %508, i64 %510
  %512 = load ptr, ptr %3, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.nifti_image, ptr %512, i32 0, i32 26
  %514 = load i32, ptr %513, align 4, !tbaa !50
  %515 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %511, ptr noundef @.str.303, i32 noundef %514) #7
  br label %516

516:                                              ; preds = %507, %502
  %517 = load ptr, ptr %3, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.nifti_image, ptr %517, i32 0, i32 27
  %519 = load i32, ptr %518, align 8, !tbaa !51
  %520 = icmp sgt i32 %519, 0
  br i1 %520, label %521, label %530

521:                                              ; preds = %516
  %522 = load ptr, ptr %4, align 8, !tbaa !5
  %523 = load ptr, ptr %4, align 8, !tbaa !5
  %524 = call i64 @strlen(ptr noundef %523) #9
  %525 = getelementptr inbounds i8, ptr %522, i64 %524
  %526 = load ptr, ptr %3, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.nifti_image, ptr %526, i32 0, i32 27
  %528 = load i32, ptr %527, align 8, !tbaa !51
  %529 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %525, ptr noundef @.str.304, i32 noundef %528) #7
  br label %530

530:                                              ; preds = %521, %516
  %531 = load ptr, ptr %3, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.nifti_image, ptr %531, i32 0, i32 28
  %533 = load i32, ptr %532, align 4, !tbaa !52
  %534 = icmp sgt i32 %533, 0
  br i1 %534, label %535, label %544

535:                                              ; preds = %530
  %536 = load ptr, ptr %4, align 8, !tbaa !5
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = call i64 @strlen(ptr noundef %537) #9
  %539 = getelementptr inbounds i8, ptr %536, i64 %538
  %540 = load ptr, ptr %3, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.nifti_image, ptr %540, i32 0, i32 28
  %542 = load i32, ptr %541, align 4, !tbaa !52
  %543 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %539, ptr noundef @.str.305, i32 noundef %542) #7
  br label %544

544:                                              ; preds = %535, %530
  %545 = load ptr, ptr %3, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.nifti_image, ptr %545, i32 0, i32 29
  %547 = load i32, ptr %546, align 8, !tbaa !53
  %548 = icmp sgt i32 %547, 0
  br i1 %548, label %549, label %562

549:                                              ; preds = %544
  %550 = load ptr, ptr %4, align 8, !tbaa !5
  %551 = load ptr, ptr %4, align 8, !tbaa !5
  %552 = call i64 @strlen(ptr noundef %551) #9
  %553 = getelementptr inbounds i8, ptr %550, i64 %552
  %554 = load ptr, ptr %3, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.nifti_image, ptr %554, i32 0, i32 29
  %556 = load i32, ptr %555, align 8, !tbaa !53
  %557 = load ptr, ptr %3, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.nifti_image, ptr %557, i32 0, i32 29
  %559 = load i32, ptr %558, align 8, !tbaa !53
  %560 = call ptr @nifti_slice_string(i32 noundef %559)
  %561 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %553, ptr noundef @.str.306, i32 noundef %556, ptr noundef %560) #7
  br label %562

562:                                              ; preds = %549, %544
  %563 = load ptr, ptr %3, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.nifti_image, ptr %563, i32 0, i32 30
  %565 = load i32, ptr %564, align 4, !tbaa !54
  %566 = icmp sge i32 %565, 0
  br i1 %566, label %567, label %587

567:                                              ; preds = %562
  %568 = load ptr, ptr %3, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.nifti_image, ptr %568, i32 0, i32 31
  %570 = load i32, ptr %569, align 8, !tbaa !55
  %571 = load ptr, ptr %3, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.nifti_image, ptr %571, i32 0, i32 30
  %573 = load i32, ptr %572, align 4, !tbaa !54
  %574 = icmp sgt i32 %570, %573
  br i1 %574, label %575, label %587

575:                                              ; preds = %567
  %576 = load ptr, ptr %4, align 8, !tbaa !5
  %577 = load ptr, ptr %4, align 8, !tbaa !5
  %578 = call i64 @strlen(ptr noundef %577) #9
  %579 = getelementptr inbounds i8, ptr %576, i64 %578
  %580 = load ptr, ptr %3, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.nifti_image, ptr %580, i32 0, i32 30
  %582 = load i32, ptr %581, align 4, !tbaa !54
  %583 = load ptr, ptr %3, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.nifti_image, ptr %583, i32 0, i32 31
  %585 = load i32, ptr %584, align 8, !tbaa !55
  %586 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %579, ptr noundef @.str.307, i32 noundef %582, i32 noundef %585) #7
  br label %587

587:                                              ; preds = %575, %567, %562
  %588 = load ptr, ptr %3, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.nifti_image, ptr %588, i32 0, i32 32
  %590 = load float, ptr %589, align 4, !tbaa !56
  %591 = fpext float %590 to double
  %592 = fcmp une double %591, 0.000000e+00
  br i1 %592, label %593, label %603

593:                                              ; preds = %587
  %594 = load ptr, ptr %4, align 8, !tbaa !5
  %595 = load ptr, ptr %4, align 8, !tbaa !5
  %596 = call i64 @strlen(ptr noundef %595) #9
  %597 = getelementptr inbounds i8, ptr %594, i64 %596
  %598 = load ptr, ptr %3, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.nifti_image, ptr %598, i32 0, i32 32
  %600 = load float, ptr %599, align 4, !tbaa !56
  %601 = fpext float %600 to double
  %602 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %597, ptr noundef @.str.308, double noundef %601) #7
  br label %603

603:                                              ; preds = %593, %587
  %604 = load ptr, ptr %3, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.nifti_image, ptr %604, i32 0, i32 53
  %606 = getelementptr inbounds [80 x i8], ptr %605, i64 0, i64 0
  %607 = load i8, ptr %606, align 4, !tbaa !46
  %608 = sext i8 %607 to i32
  %609 = icmp ne i32 %608, 0
  br i1 %609, label %610, label %622

610:                                              ; preds = %603
  %611 = load ptr, ptr %3, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.nifti_image, ptr %611, i32 0, i32 53
  %613 = getelementptr inbounds [80 x i8], ptr %612, i64 0, i64 0
  %614 = call ptr @escapize_string(ptr noundef %613)
  store ptr %614, ptr %5, align 8, !tbaa !5
  %615 = load ptr, ptr %4, align 8, !tbaa !5
  %616 = load ptr, ptr %4, align 8, !tbaa !5
  %617 = call i64 @strlen(ptr noundef %616) #9
  %618 = getelementptr inbounds i8, ptr %615, i64 %617
  %619 = load ptr, ptr %5, align 8, !tbaa !5
  %620 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %618, ptr noundef @.str.309, ptr noundef %619) #7
  %621 = load ptr, ptr %5, align 8, !tbaa !5
  call void @free(ptr noundef %621) #7
  br label %622

622:                                              ; preds = %610, %603
  %623 = load ptr, ptr %3, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.nifti_image, ptr %623, i32 0, i32 54
  %625 = getelementptr inbounds [24 x i8], ptr %624, i64 0, i64 0
  %626 = load i8, ptr %625, align 4, !tbaa !46
  %627 = sext i8 %626 to i32
  %628 = icmp ne i32 %627, 0
  br i1 %628, label %629, label %641

629:                                              ; preds = %622
  %630 = load ptr, ptr %3, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.nifti_image, ptr %630, i32 0, i32 54
  %632 = getelementptr inbounds [24 x i8], ptr %631, i64 0, i64 0
  %633 = call ptr @escapize_string(ptr noundef %632)
  store ptr %633, ptr %5, align 8, !tbaa !5
  %634 = load ptr, ptr %4, align 8, !tbaa !5
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = call i64 @strlen(ptr noundef %635) #9
  %637 = getelementptr inbounds i8, ptr %634, i64 %636
  %638 = load ptr, ptr %5, align 8, !tbaa !5
  %639 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %637, ptr noundef @.str.310, ptr noundef %638) #7
  %640 = load ptr, ptr %5, align 8, !tbaa !5
  call void @free(ptr noundef %640) #7
  br label %641

641:                                              ; preds = %629, %622
  %642 = load ptr, ptr %3, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.nifti_image, ptr %642, i32 0, i32 24
  %644 = load i32, ptr %643, align 4, !tbaa !57
  %645 = icmp sgt i32 %644, 0
  br i1 %645, label %646, label %944

646:                                              ; preds = %641
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  %647 = load ptr, ptr %4, align 8, !tbaa !5
  %648 = load ptr, ptr %4, align 8, !tbaa !5
  %649 = call i64 @strlen(ptr noundef %648) #9
  %650 = getelementptr inbounds i8, ptr %647, i64 %649
  %651 = load ptr, ptr %3, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.nifti_image, ptr %651, i32 0, i32 24
  %653 = load i32, ptr %652, align 4, !tbaa !57
  %654 = load ptr, ptr %3, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.nifti_image, ptr %654, i32 0, i32 24
  %656 = load i32, ptr %655, align 4, !tbaa !57
  %657 = call ptr @nifti_xform_string(i32 noundef %656)
  %658 = load ptr, ptr %3, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.nifti_image, ptr %658, i32 0, i32 40
  %660 = getelementptr inbounds %struct.mat44, ptr %659, i32 0, i32 0
  %661 = getelementptr inbounds [4 x [4 x float]], ptr %660, i64 0, i64 0
  %662 = getelementptr inbounds [4 x float], ptr %661, i64 0, i64 0
  %663 = load float, ptr %662, align 4, !tbaa !58
  %664 = fpext float %663 to double
  %665 = load ptr, ptr %3, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.nifti_image, ptr %665, i32 0, i32 40
  %667 = getelementptr inbounds %struct.mat44, ptr %666, i32 0, i32 0
  %668 = getelementptr inbounds [4 x [4 x float]], ptr %667, i64 0, i64 0
  %669 = getelementptr inbounds [4 x float], ptr %668, i64 0, i64 1
  %670 = load float, ptr %669, align 4, !tbaa !58
  %671 = fpext float %670 to double
  %672 = load ptr, ptr %3, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.nifti_image, ptr %672, i32 0, i32 40
  %674 = getelementptr inbounds %struct.mat44, ptr %673, i32 0, i32 0
  %675 = getelementptr inbounds [4 x [4 x float]], ptr %674, i64 0, i64 0
  %676 = getelementptr inbounds [4 x float], ptr %675, i64 0, i64 2
  %677 = load float, ptr %676, align 4, !tbaa !58
  %678 = fpext float %677 to double
  %679 = load ptr, ptr %3, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.nifti_image, ptr %679, i32 0, i32 40
  %681 = getelementptr inbounds %struct.mat44, ptr %680, i32 0, i32 0
  %682 = getelementptr inbounds [4 x [4 x float]], ptr %681, i64 0, i64 0
  %683 = getelementptr inbounds [4 x float], ptr %682, i64 0, i64 3
  %684 = load float, ptr %683, align 4, !tbaa !58
  %685 = fpext float %684 to double
  %686 = load ptr, ptr %3, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.nifti_image, ptr %686, i32 0, i32 40
  %688 = getelementptr inbounds %struct.mat44, ptr %687, i32 0, i32 0
  %689 = getelementptr inbounds [4 x [4 x float]], ptr %688, i64 0, i64 1
  %690 = getelementptr inbounds [4 x float], ptr %689, i64 0, i64 0
  %691 = load float, ptr %690, align 4, !tbaa !58
  %692 = fpext float %691 to double
  %693 = load ptr, ptr %3, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.nifti_image, ptr %693, i32 0, i32 40
  %695 = getelementptr inbounds %struct.mat44, ptr %694, i32 0, i32 0
  %696 = getelementptr inbounds [4 x [4 x float]], ptr %695, i64 0, i64 1
  %697 = getelementptr inbounds [4 x float], ptr %696, i64 0, i64 1
  %698 = load float, ptr %697, align 4, !tbaa !58
  %699 = fpext float %698 to double
  %700 = load ptr, ptr %3, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.nifti_image, ptr %700, i32 0, i32 40
  %702 = getelementptr inbounds %struct.mat44, ptr %701, i32 0, i32 0
  %703 = getelementptr inbounds [4 x [4 x float]], ptr %702, i64 0, i64 1
  %704 = getelementptr inbounds [4 x float], ptr %703, i64 0, i64 2
  %705 = load float, ptr %704, align 4, !tbaa !58
  %706 = fpext float %705 to double
  %707 = load ptr, ptr %3, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.nifti_image, ptr %707, i32 0, i32 40
  %709 = getelementptr inbounds %struct.mat44, ptr %708, i32 0, i32 0
  %710 = getelementptr inbounds [4 x [4 x float]], ptr %709, i64 0, i64 1
  %711 = getelementptr inbounds [4 x float], ptr %710, i64 0, i64 3
  %712 = load float, ptr %711, align 4, !tbaa !58
  %713 = fpext float %712 to double
  %714 = load ptr, ptr %3, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.nifti_image, ptr %714, i32 0, i32 40
  %716 = getelementptr inbounds %struct.mat44, ptr %715, i32 0, i32 0
  %717 = getelementptr inbounds [4 x [4 x float]], ptr %716, i64 0, i64 2
  %718 = getelementptr inbounds [4 x float], ptr %717, i64 0, i64 0
  %719 = load float, ptr %718, align 4, !tbaa !58
  %720 = fpext float %719 to double
  %721 = load ptr, ptr %3, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.nifti_image, ptr %721, i32 0, i32 40
  %723 = getelementptr inbounds %struct.mat44, ptr %722, i32 0, i32 0
  %724 = getelementptr inbounds [4 x [4 x float]], ptr %723, i64 0, i64 2
  %725 = getelementptr inbounds [4 x float], ptr %724, i64 0, i64 1
  %726 = load float, ptr %725, align 4, !tbaa !58
  %727 = fpext float %726 to double
  %728 = load ptr, ptr %3, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.nifti_image, ptr %728, i32 0, i32 40
  %730 = getelementptr inbounds %struct.mat44, ptr %729, i32 0, i32 0
  %731 = getelementptr inbounds [4 x [4 x float]], ptr %730, i64 0, i64 2
  %732 = getelementptr inbounds [4 x float], ptr %731, i64 0, i64 2
  %733 = load float, ptr %732, align 4, !tbaa !58
  %734 = fpext float %733 to double
  %735 = load ptr, ptr %3, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.nifti_image, ptr %735, i32 0, i32 40
  %737 = getelementptr inbounds %struct.mat44, ptr %736, i32 0, i32 0
  %738 = getelementptr inbounds [4 x [4 x float]], ptr %737, i64 0, i64 2
  %739 = getelementptr inbounds [4 x float], ptr %738, i64 0, i64 3
  %740 = load float, ptr %739, align 4, !tbaa !58
  %741 = fpext float %740 to double
  %742 = load ptr, ptr %3, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.nifti_image, ptr %742, i32 0, i32 40
  %744 = getelementptr inbounds %struct.mat44, ptr %743, i32 0, i32 0
  %745 = getelementptr inbounds [4 x [4 x float]], ptr %744, i64 0, i64 3
  %746 = getelementptr inbounds [4 x float], ptr %745, i64 0, i64 0
  %747 = load float, ptr %746, align 4, !tbaa !58
  %748 = fpext float %747 to double
  %749 = load ptr, ptr %3, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.nifti_image, ptr %749, i32 0, i32 40
  %751 = getelementptr inbounds %struct.mat44, ptr %750, i32 0, i32 0
  %752 = getelementptr inbounds [4 x [4 x float]], ptr %751, i64 0, i64 3
  %753 = getelementptr inbounds [4 x float], ptr %752, i64 0, i64 1
  %754 = load float, ptr %753, align 4, !tbaa !58
  %755 = fpext float %754 to double
  %756 = load ptr, ptr %3, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.nifti_image, ptr %756, i32 0, i32 40
  %758 = getelementptr inbounds %struct.mat44, ptr %757, i32 0, i32 0
  %759 = getelementptr inbounds [4 x [4 x float]], ptr %758, i64 0, i64 3
  %760 = getelementptr inbounds [4 x float], ptr %759, i64 0, i64 2
  %761 = load float, ptr %760, align 4, !tbaa !58
  %762 = fpext float %761 to double
  %763 = load ptr, ptr %3, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.nifti_image, ptr %763, i32 0, i32 40
  %765 = getelementptr inbounds %struct.mat44, ptr %764, i32 0, i32 0
  %766 = getelementptr inbounds [4 x [4 x float]], ptr %765, i64 0, i64 3
  %767 = getelementptr inbounds [4 x float], ptr %766, i64 0, i64 3
  %768 = load float, ptr %767, align 4, !tbaa !58
  %769 = fpext float %768 to double
  %770 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %650, ptr noundef @.str.311, i32 noundef %653, ptr noundef %657, double noundef %664, double noundef %671, double noundef %678, double noundef %685, double noundef %692, double noundef %699, double noundef %706, double noundef %713, double noundef %720, double noundef %727, double noundef %734, double noundef %741, double noundef %748, double noundef %755, double noundef %762, double noundef %769) #7
  %771 = load ptr, ptr %4, align 8, !tbaa !5
  %772 = load ptr, ptr %4, align 8, !tbaa !5
  %773 = call i64 @strlen(ptr noundef %772) #9
  %774 = getelementptr inbounds i8, ptr %771, i64 %773
  %775 = load ptr, ptr %3, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.nifti_image, ptr %775, i32 0, i32 41
  %777 = getelementptr inbounds %struct.mat44, ptr %776, i32 0, i32 0
  %778 = getelementptr inbounds [4 x [4 x float]], ptr %777, i64 0, i64 0
  %779 = getelementptr inbounds [4 x float], ptr %778, i64 0, i64 0
  %780 = load float, ptr %779, align 4, !tbaa !58
  %781 = fpext float %780 to double
  %782 = load ptr, ptr %3, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.nifti_image, ptr %782, i32 0, i32 41
  %784 = getelementptr inbounds %struct.mat44, ptr %783, i32 0, i32 0
  %785 = getelementptr inbounds [4 x [4 x float]], ptr %784, i64 0, i64 0
  %786 = getelementptr inbounds [4 x float], ptr %785, i64 0, i64 1
  %787 = load float, ptr %786, align 4, !tbaa !58
  %788 = fpext float %787 to double
  %789 = load ptr, ptr %3, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.nifti_image, ptr %789, i32 0, i32 41
  %791 = getelementptr inbounds %struct.mat44, ptr %790, i32 0, i32 0
  %792 = getelementptr inbounds [4 x [4 x float]], ptr %791, i64 0, i64 0
  %793 = getelementptr inbounds [4 x float], ptr %792, i64 0, i64 2
  %794 = load float, ptr %793, align 4, !tbaa !58
  %795 = fpext float %794 to double
  %796 = load ptr, ptr %3, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.nifti_image, ptr %796, i32 0, i32 41
  %798 = getelementptr inbounds %struct.mat44, ptr %797, i32 0, i32 0
  %799 = getelementptr inbounds [4 x [4 x float]], ptr %798, i64 0, i64 0
  %800 = getelementptr inbounds [4 x float], ptr %799, i64 0, i64 3
  %801 = load float, ptr %800, align 4, !tbaa !58
  %802 = fpext float %801 to double
  %803 = load ptr, ptr %3, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.nifti_image, ptr %803, i32 0, i32 41
  %805 = getelementptr inbounds %struct.mat44, ptr %804, i32 0, i32 0
  %806 = getelementptr inbounds [4 x [4 x float]], ptr %805, i64 0, i64 1
  %807 = getelementptr inbounds [4 x float], ptr %806, i64 0, i64 0
  %808 = load float, ptr %807, align 4, !tbaa !58
  %809 = fpext float %808 to double
  %810 = load ptr, ptr %3, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.nifti_image, ptr %810, i32 0, i32 41
  %812 = getelementptr inbounds %struct.mat44, ptr %811, i32 0, i32 0
  %813 = getelementptr inbounds [4 x [4 x float]], ptr %812, i64 0, i64 1
  %814 = getelementptr inbounds [4 x float], ptr %813, i64 0, i64 1
  %815 = load float, ptr %814, align 4, !tbaa !58
  %816 = fpext float %815 to double
  %817 = load ptr, ptr %3, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.nifti_image, ptr %817, i32 0, i32 41
  %819 = getelementptr inbounds %struct.mat44, ptr %818, i32 0, i32 0
  %820 = getelementptr inbounds [4 x [4 x float]], ptr %819, i64 0, i64 1
  %821 = getelementptr inbounds [4 x float], ptr %820, i64 0, i64 2
  %822 = load float, ptr %821, align 4, !tbaa !58
  %823 = fpext float %822 to double
  %824 = load ptr, ptr %3, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.nifti_image, ptr %824, i32 0, i32 41
  %826 = getelementptr inbounds %struct.mat44, ptr %825, i32 0, i32 0
  %827 = getelementptr inbounds [4 x [4 x float]], ptr %826, i64 0, i64 1
  %828 = getelementptr inbounds [4 x float], ptr %827, i64 0, i64 3
  %829 = load float, ptr %828, align 4, !tbaa !58
  %830 = fpext float %829 to double
  %831 = load ptr, ptr %3, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.nifti_image, ptr %831, i32 0, i32 41
  %833 = getelementptr inbounds %struct.mat44, ptr %832, i32 0, i32 0
  %834 = getelementptr inbounds [4 x [4 x float]], ptr %833, i64 0, i64 2
  %835 = getelementptr inbounds [4 x float], ptr %834, i64 0, i64 0
  %836 = load float, ptr %835, align 4, !tbaa !58
  %837 = fpext float %836 to double
  %838 = load ptr, ptr %3, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.nifti_image, ptr %838, i32 0, i32 41
  %840 = getelementptr inbounds %struct.mat44, ptr %839, i32 0, i32 0
  %841 = getelementptr inbounds [4 x [4 x float]], ptr %840, i64 0, i64 2
  %842 = getelementptr inbounds [4 x float], ptr %841, i64 0, i64 1
  %843 = load float, ptr %842, align 4, !tbaa !58
  %844 = fpext float %843 to double
  %845 = load ptr, ptr %3, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.nifti_image, ptr %845, i32 0, i32 41
  %847 = getelementptr inbounds %struct.mat44, ptr %846, i32 0, i32 0
  %848 = getelementptr inbounds [4 x [4 x float]], ptr %847, i64 0, i64 2
  %849 = getelementptr inbounds [4 x float], ptr %848, i64 0, i64 2
  %850 = load float, ptr %849, align 4, !tbaa !58
  %851 = fpext float %850 to double
  %852 = load ptr, ptr %3, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.nifti_image, ptr %852, i32 0, i32 41
  %854 = getelementptr inbounds %struct.mat44, ptr %853, i32 0, i32 0
  %855 = getelementptr inbounds [4 x [4 x float]], ptr %854, i64 0, i64 2
  %856 = getelementptr inbounds [4 x float], ptr %855, i64 0, i64 3
  %857 = load float, ptr %856, align 4, !tbaa !58
  %858 = fpext float %857 to double
  %859 = load ptr, ptr %3, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.nifti_image, ptr %859, i32 0, i32 41
  %861 = getelementptr inbounds %struct.mat44, ptr %860, i32 0, i32 0
  %862 = getelementptr inbounds [4 x [4 x float]], ptr %861, i64 0, i64 3
  %863 = getelementptr inbounds [4 x float], ptr %862, i64 0, i64 0
  %864 = load float, ptr %863, align 4, !tbaa !58
  %865 = fpext float %864 to double
  %866 = load ptr, ptr %3, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.nifti_image, ptr %866, i32 0, i32 41
  %868 = getelementptr inbounds %struct.mat44, ptr %867, i32 0, i32 0
  %869 = getelementptr inbounds [4 x [4 x float]], ptr %868, i64 0, i64 3
  %870 = getelementptr inbounds [4 x float], ptr %869, i64 0, i64 1
  %871 = load float, ptr %870, align 4, !tbaa !58
  %872 = fpext float %871 to double
  %873 = load ptr, ptr %3, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.nifti_image, ptr %873, i32 0, i32 41
  %875 = getelementptr inbounds %struct.mat44, ptr %874, i32 0, i32 0
  %876 = getelementptr inbounds [4 x [4 x float]], ptr %875, i64 0, i64 3
  %877 = getelementptr inbounds [4 x float], ptr %876, i64 0, i64 2
  %878 = load float, ptr %877, align 4, !tbaa !58
  %879 = fpext float %878 to double
  %880 = load ptr, ptr %3, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.nifti_image, ptr %880, i32 0, i32 41
  %882 = getelementptr inbounds %struct.mat44, ptr %881, i32 0, i32 0
  %883 = getelementptr inbounds [4 x [4 x float]], ptr %882, i64 0, i64 3
  %884 = getelementptr inbounds [4 x float], ptr %883, i64 0, i64 3
  %885 = load float, ptr %884, align 4, !tbaa !58
  %886 = fpext float %885 to double
  %887 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %774, ptr noundef @.str.312, double noundef %781, double noundef %788, double noundef %795, double noundef %802, double noundef %809, double noundef %816, double noundef %823, double noundef %830, double noundef %837, double noundef %844, double noundef %851, double noundef %858, double noundef %865, double noundef %872, double noundef %879, double noundef %886) #7
  %888 = load ptr, ptr %4, align 8, !tbaa !5
  %889 = load ptr, ptr %4, align 8, !tbaa !5
  %890 = call i64 @strlen(ptr noundef %889) #9
  %891 = getelementptr inbounds i8, ptr %888, i64 %890
  %892 = load ptr, ptr %3, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.nifti_image, ptr %892, i32 0, i32 33
  %894 = load float, ptr %893, align 8, !tbaa !59
  %895 = fpext float %894 to double
  %896 = load ptr, ptr %3, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.nifti_image, ptr %896, i32 0, i32 34
  %898 = load float, ptr %897, align 4, !tbaa !60
  %899 = fpext float %898 to double
  %900 = load ptr, ptr %3, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.nifti_image, ptr %900, i32 0, i32 35
  %902 = load float, ptr %901, align 8, !tbaa !61
  %903 = fpext float %902 to double
  %904 = load ptr, ptr %3, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.nifti_image, ptr %904, i32 0, i32 36
  %906 = load float, ptr %905, align 4, !tbaa !62
  %907 = fpext float %906 to double
  %908 = load ptr, ptr %3, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.nifti_image, ptr %908, i32 0, i32 37
  %910 = load float, ptr %909, align 8, !tbaa !63
  %911 = fpext float %910 to double
  %912 = load ptr, ptr %3, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.nifti_image, ptr %912, i32 0, i32 38
  %914 = load float, ptr %913, align 4, !tbaa !64
  %915 = fpext float %914 to double
  %916 = load ptr, ptr %3, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.nifti_image, ptr %916, i32 0, i32 39
  %918 = load float, ptr %917, align 8, !tbaa !65
  %919 = fpext float %918 to double
  %920 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %891, ptr noundef @.str.313, double noundef %895, double noundef %899, double noundef %903, double noundef %907, double noundef %911, double noundef %915, double noundef %919) #7
  %921 = load ptr, ptr %3, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.nifti_image, ptr %921, i32 0, i32 40
  call void @llvm.lifetime.start.p0(i64 64, ptr %11) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %11, ptr align 4 %922, i64 64, i1 false), !tbaa.struct !66
  call void @nifti_mat44_to_orientation(ptr noundef byval(%struct.mat44) align 8 %11, ptr noundef %8, ptr noundef %9, ptr noundef %10)
  call void @llvm.lifetime.end.p0(i64 64, ptr %11) #7
  %923 = load i32, ptr %8, align 4, !tbaa !9
  %924 = icmp sgt i32 %923, 0
  br i1 %924, label %925, label %943

925:                                              ; preds = %646
  %926 = load i32, ptr %9, align 4, !tbaa !9
  %927 = icmp sgt i32 %926, 0
  br i1 %927, label %928, label %943

928:                                              ; preds = %925
  %929 = load i32, ptr %10, align 4, !tbaa !9
  %930 = icmp sgt i32 %929, 0
  br i1 %930, label %931, label %943

931:                                              ; preds = %928
  %932 = load ptr, ptr %4, align 8, !tbaa !5
  %933 = load ptr, ptr %4, align 8, !tbaa !5
  %934 = call i64 @strlen(ptr noundef %933) #9
  %935 = getelementptr inbounds i8, ptr %932, i64 %934
  %936 = load i32, ptr %8, align 4, !tbaa !9
  %937 = call ptr @nifti_orientation_string(i32 noundef %936)
  %938 = load i32, ptr %9, align 4, !tbaa !9
  %939 = call ptr @nifti_orientation_string(i32 noundef %938)
  %940 = load i32, ptr %10, align 4, !tbaa !9
  %941 = call ptr @nifti_orientation_string(i32 noundef %940)
  %942 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %935, ptr noundef @.str.314, ptr noundef %937, ptr noundef %939, ptr noundef %941) #7
  br label %943

943:                                              ; preds = %931, %928, %925, %646
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %944

944:                                              ; preds = %943, %641
  %945 = load ptr, ptr %3, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.nifti_image, ptr %945, i32 0, i32 25
  %947 = load i32, ptr %946, align 8, !tbaa !67
  %948 = icmp sgt i32 %947, 0
  br i1 %948, label %949, label %1214

949:                                              ; preds = %944
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %950 = load ptr, ptr %4, align 8, !tbaa !5
  %951 = load ptr, ptr %4, align 8, !tbaa !5
  %952 = call i64 @strlen(ptr noundef %951) #9
  %953 = getelementptr inbounds i8, ptr %950, i64 %952
  %954 = load ptr, ptr %3, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.nifti_image, ptr %954, i32 0, i32 25
  %956 = load i32, ptr %955, align 8, !tbaa !67
  %957 = load ptr, ptr %3, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.nifti_image, ptr %957, i32 0, i32 25
  %959 = load i32, ptr %958, align 8, !tbaa !67
  %960 = call ptr @nifti_xform_string(i32 noundef %959)
  %961 = load ptr, ptr %3, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.nifti_image, ptr %961, i32 0, i32 42
  %963 = getelementptr inbounds %struct.mat44, ptr %962, i32 0, i32 0
  %964 = getelementptr inbounds [4 x [4 x float]], ptr %963, i64 0, i64 0
  %965 = getelementptr inbounds [4 x float], ptr %964, i64 0, i64 0
  %966 = load float, ptr %965, align 4, !tbaa !58
  %967 = fpext float %966 to double
  %968 = load ptr, ptr %3, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.nifti_image, ptr %968, i32 0, i32 42
  %970 = getelementptr inbounds %struct.mat44, ptr %969, i32 0, i32 0
  %971 = getelementptr inbounds [4 x [4 x float]], ptr %970, i64 0, i64 0
  %972 = getelementptr inbounds [4 x float], ptr %971, i64 0, i64 1
  %973 = load float, ptr %972, align 4, !tbaa !58
  %974 = fpext float %973 to double
  %975 = load ptr, ptr %3, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.nifti_image, ptr %975, i32 0, i32 42
  %977 = getelementptr inbounds %struct.mat44, ptr %976, i32 0, i32 0
  %978 = getelementptr inbounds [4 x [4 x float]], ptr %977, i64 0, i64 0
  %979 = getelementptr inbounds [4 x float], ptr %978, i64 0, i64 2
  %980 = load float, ptr %979, align 4, !tbaa !58
  %981 = fpext float %980 to double
  %982 = load ptr, ptr %3, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.nifti_image, ptr %982, i32 0, i32 42
  %984 = getelementptr inbounds %struct.mat44, ptr %983, i32 0, i32 0
  %985 = getelementptr inbounds [4 x [4 x float]], ptr %984, i64 0, i64 0
  %986 = getelementptr inbounds [4 x float], ptr %985, i64 0, i64 3
  %987 = load float, ptr %986, align 4, !tbaa !58
  %988 = fpext float %987 to double
  %989 = load ptr, ptr %3, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.nifti_image, ptr %989, i32 0, i32 42
  %991 = getelementptr inbounds %struct.mat44, ptr %990, i32 0, i32 0
  %992 = getelementptr inbounds [4 x [4 x float]], ptr %991, i64 0, i64 1
  %993 = getelementptr inbounds [4 x float], ptr %992, i64 0, i64 0
  %994 = load float, ptr %993, align 4, !tbaa !58
  %995 = fpext float %994 to double
  %996 = load ptr, ptr %3, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.nifti_image, ptr %996, i32 0, i32 42
  %998 = getelementptr inbounds %struct.mat44, ptr %997, i32 0, i32 0
  %999 = getelementptr inbounds [4 x [4 x float]], ptr %998, i64 0, i64 1
  %1000 = getelementptr inbounds [4 x float], ptr %999, i64 0, i64 1
  %1001 = load float, ptr %1000, align 4, !tbaa !58
  %1002 = fpext float %1001 to double
  %1003 = load ptr, ptr %3, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.nifti_image, ptr %1003, i32 0, i32 42
  %1005 = getelementptr inbounds %struct.mat44, ptr %1004, i32 0, i32 0
  %1006 = getelementptr inbounds [4 x [4 x float]], ptr %1005, i64 0, i64 1
  %1007 = getelementptr inbounds [4 x float], ptr %1006, i64 0, i64 2
  %1008 = load float, ptr %1007, align 4, !tbaa !58
  %1009 = fpext float %1008 to double
  %1010 = load ptr, ptr %3, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.nifti_image, ptr %1010, i32 0, i32 42
  %1012 = getelementptr inbounds %struct.mat44, ptr %1011, i32 0, i32 0
  %1013 = getelementptr inbounds [4 x [4 x float]], ptr %1012, i64 0, i64 1
  %1014 = getelementptr inbounds [4 x float], ptr %1013, i64 0, i64 3
  %1015 = load float, ptr %1014, align 4, !tbaa !58
  %1016 = fpext float %1015 to double
  %1017 = load ptr, ptr %3, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.nifti_image, ptr %1017, i32 0, i32 42
  %1019 = getelementptr inbounds %struct.mat44, ptr %1018, i32 0, i32 0
  %1020 = getelementptr inbounds [4 x [4 x float]], ptr %1019, i64 0, i64 2
  %1021 = getelementptr inbounds [4 x float], ptr %1020, i64 0, i64 0
  %1022 = load float, ptr %1021, align 4, !tbaa !58
  %1023 = fpext float %1022 to double
  %1024 = load ptr, ptr %3, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.nifti_image, ptr %1024, i32 0, i32 42
  %1026 = getelementptr inbounds %struct.mat44, ptr %1025, i32 0, i32 0
  %1027 = getelementptr inbounds [4 x [4 x float]], ptr %1026, i64 0, i64 2
  %1028 = getelementptr inbounds [4 x float], ptr %1027, i64 0, i64 1
  %1029 = load float, ptr %1028, align 4, !tbaa !58
  %1030 = fpext float %1029 to double
  %1031 = load ptr, ptr %3, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.nifti_image, ptr %1031, i32 0, i32 42
  %1033 = getelementptr inbounds %struct.mat44, ptr %1032, i32 0, i32 0
  %1034 = getelementptr inbounds [4 x [4 x float]], ptr %1033, i64 0, i64 2
  %1035 = getelementptr inbounds [4 x float], ptr %1034, i64 0, i64 2
  %1036 = load float, ptr %1035, align 4, !tbaa !58
  %1037 = fpext float %1036 to double
  %1038 = load ptr, ptr %3, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.nifti_image, ptr %1038, i32 0, i32 42
  %1040 = getelementptr inbounds %struct.mat44, ptr %1039, i32 0, i32 0
  %1041 = getelementptr inbounds [4 x [4 x float]], ptr %1040, i64 0, i64 2
  %1042 = getelementptr inbounds [4 x float], ptr %1041, i64 0, i64 3
  %1043 = load float, ptr %1042, align 4, !tbaa !58
  %1044 = fpext float %1043 to double
  %1045 = load ptr, ptr %3, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.nifti_image, ptr %1045, i32 0, i32 42
  %1047 = getelementptr inbounds %struct.mat44, ptr %1046, i32 0, i32 0
  %1048 = getelementptr inbounds [4 x [4 x float]], ptr %1047, i64 0, i64 3
  %1049 = getelementptr inbounds [4 x float], ptr %1048, i64 0, i64 0
  %1050 = load float, ptr %1049, align 4, !tbaa !58
  %1051 = fpext float %1050 to double
  %1052 = load ptr, ptr %3, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.nifti_image, ptr %1052, i32 0, i32 42
  %1054 = getelementptr inbounds %struct.mat44, ptr %1053, i32 0, i32 0
  %1055 = getelementptr inbounds [4 x [4 x float]], ptr %1054, i64 0, i64 3
  %1056 = getelementptr inbounds [4 x float], ptr %1055, i64 0, i64 1
  %1057 = load float, ptr %1056, align 4, !tbaa !58
  %1058 = fpext float %1057 to double
  %1059 = load ptr, ptr %3, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.nifti_image, ptr %1059, i32 0, i32 42
  %1061 = getelementptr inbounds %struct.mat44, ptr %1060, i32 0, i32 0
  %1062 = getelementptr inbounds [4 x [4 x float]], ptr %1061, i64 0, i64 3
  %1063 = getelementptr inbounds [4 x float], ptr %1062, i64 0, i64 2
  %1064 = load float, ptr %1063, align 4, !tbaa !58
  %1065 = fpext float %1064 to double
  %1066 = load ptr, ptr %3, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.nifti_image, ptr %1066, i32 0, i32 42
  %1068 = getelementptr inbounds %struct.mat44, ptr %1067, i32 0, i32 0
  %1069 = getelementptr inbounds [4 x [4 x float]], ptr %1068, i64 0, i64 3
  %1070 = getelementptr inbounds [4 x float], ptr %1069, i64 0, i64 3
  %1071 = load float, ptr %1070, align 4, !tbaa !58
  %1072 = fpext float %1071 to double
  %1073 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %953, ptr noundef @.str.315, i32 noundef %956, ptr noundef %960, double noundef %967, double noundef %974, double noundef %981, double noundef %988, double noundef %995, double noundef %1002, double noundef %1009, double noundef %1016, double noundef %1023, double noundef %1030, double noundef %1037, double noundef %1044, double noundef %1051, double noundef %1058, double noundef %1065, double noundef %1072) #7
  %1074 = load ptr, ptr %4, align 8, !tbaa !5
  %1075 = load ptr, ptr %4, align 8, !tbaa !5
  %1076 = call i64 @strlen(ptr noundef %1075) #9
  %1077 = getelementptr inbounds i8, ptr %1074, i64 %1076
  %1078 = load ptr, ptr %3, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.nifti_image, ptr %1078, i32 0, i32 43
  %1080 = getelementptr inbounds %struct.mat44, ptr %1079, i32 0, i32 0
  %1081 = getelementptr inbounds [4 x [4 x float]], ptr %1080, i64 0, i64 0
  %1082 = getelementptr inbounds [4 x float], ptr %1081, i64 0, i64 0
  %1083 = load float, ptr %1082, align 4, !tbaa !58
  %1084 = fpext float %1083 to double
  %1085 = load ptr, ptr %3, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.nifti_image, ptr %1085, i32 0, i32 43
  %1087 = getelementptr inbounds %struct.mat44, ptr %1086, i32 0, i32 0
  %1088 = getelementptr inbounds [4 x [4 x float]], ptr %1087, i64 0, i64 0
  %1089 = getelementptr inbounds [4 x float], ptr %1088, i64 0, i64 1
  %1090 = load float, ptr %1089, align 4, !tbaa !58
  %1091 = fpext float %1090 to double
  %1092 = load ptr, ptr %3, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.nifti_image, ptr %1092, i32 0, i32 43
  %1094 = getelementptr inbounds %struct.mat44, ptr %1093, i32 0, i32 0
  %1095 = getelementptr inbounds [4 x [4 x float]], ptr %1094, i64 0, i64 0
  %1096 = getelementptr inbounds [4 x float], ptr %1095, i64 0, i64 2
  %1097 = load float, ptr %1096, align 4, !tbaa !58
  %1098 = fpext float %1097 to double
  %1099 = load ptr, ptr %3, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.nifti_image, ptr %1099, i32 0, i32 43
  %1101 = getelementptr inbounds %struct.mat44, ptr %1100, i32 0, i32 0
  %1102 = getelementptr inbounds [4 x [4 x float]], ptr %1101, i64 0, i64 0
  %1103 = getelementptr inbounds [4 x float], ptr %1102, i64 0, i64 3
  %1104 = load float, ptr %1103, align 4, !tbaa !58
  %1105 = fpext float %1104 to double
  %1106 = load ptr, ptr %3, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.nifti_image, ptr %1106, i32 0, i32 43
  %1108 = getelementptr inbounds %struct.mat44, ptr %1107, i32 0, i32 0
  %1109 = getelementptr inbounds [4 x [4 x float]], ptr %1108, i64 0, i64 1
  %1110 = getelementptr inbounds [4 x float], ptr %1109, i64 0, i64 0
  %1111 = load float, ptr %1110, align 4, !tbaa !58
  %1112 = fpext float %1111 to double
  %1113 = load ptr, ptr %3, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.nifti_image, ptr %1113, i32 0, i32 43
  %1115 = getelementptr inbounds %struct.mat44, ptr %1114, i32 0, i32 0
  %1116 = getelementptr inbounds [4 x [4 x float]], ptr %1115, i64 0, i64 1
  %1117 = getelementptr inbounds [4 x float], ptr %1116, i64 0, i64 1
  %1118 = load float, ptr %1117, align 4, !tbaa !58
  %1119 = fpext float %1118 to double
  %1120 = load ptr, ptr %3, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.nifti_image, ptr %1120, i32 0, i32 43
  %1122 = getelementptr inbounds %struct.mat44, ptr %1121, i32 0, i32 0
  %1123 = getelementptr inbounds [4 x [4 x float]], ptr %1122, i64 0, i64 1
  %1124 = getelementptr inbounds [4 x float], ptr %1123, i64 0, i64 2
  %1125 = load float, ptr %1124, align 4, !tbaa !58
  %1126 = fpext float %1125 to double
  %1127 = load ptr, ptr %3, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.nifti_image, ptr %1127, i32 0, i32 43
  %1129 = getelementptr inbounds %struct.mat44, ptr %1128, i32 0, i32 0
  %1130 = getelementptr inbounds [4 x [4 x float]], ptr %1129, i64 0, i64 1
  %1131 = getelementptr inbounds [4 x float], ptr %1130, i64 0, i64 3
  %1132 = load float, ptr %1131, align 4, !tbaa !58
  %1133 = fpext float %1132 to double
  %1134 = load ptr, ptr %3, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.nifti_image, ptr %1134, i32 0, i32 43
  %1136 = getelementptr inbounds %struct.mat44, ptr %1135, i32 0, i32 0
  %1137 = getelementptr inbounds [4 x [4 x float]], ptr %1136, i64 0, i64 2
  %1138 = getelementptr inbounds [4 x float], ptr %1137, i64 0, i64 0
  %1139 = load float, ptr %1138, align 4, !tbaa !58
  %1140 = fpext float %1139 to double
  %1141 = load ptr, ptr %3, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.nifti_image, ptr %1141, i32 0, i32 43
  %1143 = getelementptr inbounds %struct.mat44, ptr %1142, i32 0, i32 0
  %1144 = getelementptr inbounds [4 x [4 x float]], ptr %1143, i64 0, i64 2
  %1145 = getelementptr inbounds [4 x float], ptr %1144, i64 0, i64 1
  %1146 = load float, ptr %1145, align 4, !tbaa !58
  %1147 = fpext float %1146 to double
  %1148 = load ptr, ptr %3, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.nifti_image, ptr %1148, i32 0, i32 43
  %1150 = getelementptr inbounds %struct.mat44, ptr %1149, i32 0, i32 0
  %1151 = getelementptr inbounds [4 x [4 x float]], ptr %1150, i64 0, i64 2
  %1152 = getelementptr inbounds [4 x float], ptr %1151, i64 0, i64 2
  %1153 = load float, ptr %1152, align 4, !tbaa !58
  %1154 = fpext float %1153 to double
  %1155 = load ptr, ptr %3, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.nifti_image, ptr %1155, i32 0, i32 43
  %1157 = getelementptr inbounds %struct.mat44, ptr %1156, i32 0, i32 0
  %1158 = getelementptr inbounds [4 x [4 x float]], ptr %1157, i64 0, i64 2
  %1159 = getelementptr inbounds [4 x float], ptr %1158, i64 0, i64 3
  %1160 = load float, ptr %1159, align 4, !tbaa !58
  %1161 = fpext float %1160 to double
  %1162 = load ptr, ptr %3, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.nifti_image, ptr %1162, i32 0, i32 43
  %1164 = getelementptr inbounds %struct.mat44, ptr %1163, i32 0, i32 0
  %1165 = getelementptr inbounds [4 x [4 x float]], ptr %1164, i64 0, i64 3
  %1166 = getelementptr inbounds [4 x float], ptr %1165, i64 0, i64 0
  %1167 = load float, ptr %1166, align 4, !tbaa !58
  %1168 = fpext float %1167 to double
  %1169 = load ptr, ptr %3, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.nifti_image, ptr %1169, i32 0, i32 43
  %1171 = getelementptr inbounds %struct.mat44, ptr %1170, i32 0, i32 0
  %1172 = getelementptr inbounds [4 x [4 x float]], ptr %1171, i64 0, i64 3
  %1173 = getelementptr inbounds [4 x float], ptr %1172, i64 0, i64 1
  %1174 = load float, ptr %1173, align 4, !tbaa !58
  %1175 = fpext float %1174 to double
  %1176 = load ptr, ptr %3, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.nifti_image, ptr %1176, i32 0, i32 43
  %1178 = getelementptr inbounds %struct.mat44, ptr %1177, i32 0, i32 0
  %1179 = getelementptr inbounds [4 x [4 x float]], ptr %1178, i64 0, i64 3
  %1180 = getelementptr inbounds [4 x float], ptr %1179, i64 0, i64 2
  %1181 = load float, ptr %1180, align 4, !tbaa !58
  %1182 = fpext float %1181 to double
  %1183 = load ptr, ptr %3, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.nifti_image, ptr %1183, i32 0, i32 43
  %1185 = getelementptr inbounds %struct.mat44, ptr %1184, i32 0, i32 0
  %1186 = getelementptr inbounds [4 x [4 x float]], ptr %1185, i64 0, i64 3
  %1187 = getelementptr inbounds [4 x float], ptr %1186, i64 0, i64 3
  %1188 = load float, ptr %1187, align 4, !tbaa !58
  %1189 = fpext float %1188 to double
  %1190 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1077, ptr noundef @.str.316, double noundef %1084, double noundef %1091, double noundef %1098, double noundef %1105, double noundef %1112, double noundef %1119, double noundef %1126, double noundef %1133, double noundef %1140, double noundef %1147, double noundef %1154, double noundef %1161, double noundef %1168, double noundef %1175, double noundef %1182, double noundef %1189) #7
  %1191 = load ptr, ptr %3, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.nifti_image, ptr %1191, i32 0, i32 42
  call void @llvm.lifetime.start.p0(i64 64, ptr %15) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 4 %1192, i64 64, i1 false), !tbaa.struct !66
  call void @nifti_mat44_to_orientation(ptr noundef byval(%struct.mat44) align 8 %15, ptr noundef %12, ptr noundef %13, ptr noundef %14)
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #7
  %1193 = load i32, ptr %12, align 4, !tbaa !9
  %1194 = icmp sgt i32 %1193, 0
  br i1 %1194, label %1195, label %1213

1195:                                             ; preds = %949
  %1196 = load i32, ptr %13, align 4, !tbaa !9
  %1197 = icmp sgt i32 %1196, 0
  br i1 %1197, label %1198, label %1213

1198:                                             ; preds = %1195
  %1199 = load i32, ptr %14, align 4, !tbaa !9
  %1200 = icmp sgt i32 %1199, 0
  br i1 %1200, label %1201, label %1213

1201:                                             ; preds = %1198
  %1202 = load ptr, ptr %4, align 8, !tbaa !5
  %1203 = load ptr, ptr %4, align 8, !tbaa !5
  %1204 = call i64 @strlen(ptr noundef %1203) #9
  %1205 = getelementptr inbounds i8, ptr %1202, i64 %1204
  %1206 = load i32, ptr %12, align 4, !tbaa !9
  %1207 = call ptr @nifti_orientation_string(i32 noundef %1206)
  %1208 = load i32, ptr %13, align 4, !tbaa !9
  %1209 = call ptr @nifti_orientation_string(i32 noundef %1208)
  %1210 = load i32, ptr %14, align 4, !tbaa !9
  %1211 = call ptr @nifti_orientation_string(i32 noundef %1210)
  %1212 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1205, ptr noundef @.str.317, ptr noundef %1207, ptr noundef %1209, ptr noundef %1211) #7
  br label %1213

1213:                                             ; preds = %1201, %1198, %1195, %949
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %1214

1214:                                             ; preds = %1213, %944
  %1215 = load ptr, ptr %4, align 8, !tbaa !5
  %1216 = load ptr, ptr %4, align 8, !tbaa !5
  %1217 = call i64 @strlen(ptr noundef %1216) #9
  %1218 = getelementptr inbounds i8, ptr %1215, i64 %1217
  %1219 = load ptr, ptr %3, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.nifti_image, ptr %1219, i32 0, i32 61
  %1221 = load i32, ptr %1220, align 8, !tbaa !68
  %1222 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1218, ptr noundef @.str.318, i32 noundef %1221) #7
  %1223 = load ptr, ptr %4, align 8, !tbaa !5
  %1224 = load ptr, ptr %4, align 8, !tbaa !5
  %1225 = call i64 @strlen(ptr noundef %1224) #9
  %1226 = getelementptr inbounds i8, ptr %1223, i64 %1225
  %1227 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1226, ptr noundef @.str.319) #7
  %1228 = load ptr, ptr %4, align 8, !tbaa !5
  %1229 = call i64 @strlen(ptr noundef %1228) #9
  %1230 = trunc i64 %1229 to i32
  store i32 %1230, ptr %6, align 4, !tbaa !9
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  %1232 = load i32, ptr %6, align 4, !tbaa !9
  %1233 = add nsw i32 %1232, 1
  %1234 = sext i32 %1233 to i64
  %1235 = call ptr @realloc(ptr noundef %1231, i64 noundef %1234) #10
  store ptr %1235, ptr %4, align 8, !tbaa !5
  %1236 = load ptr, ptr %4, align 8, !tbaa !5
  %1237 = icmp ne ptr %1236, null
  br i1 %1237, label %1243, label %1238

1238:                                             ; preds = %1214
  %1239 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1240 = load i32, ptr %6, align 4, !tbaa !9
  %1241 = add nsw i32 %1240, 1
  %1242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1239, ptr noundef @.str.320, i32 noundef %1241) #7
  br label %1243

1243:                                             ; preds = %1238, %1214
  %1244 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %1244, ptr %2, align 8
  store i32 1, ptr %7, align 4
  br label %1245

1245:                                             ; preds = %1243, %23, %18
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  %1246 = load ptr, ptr %2, align 8
  ret ptr %1246
}

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #1

; Function Attrs: nounwind uwtable
declare hidden ptr @escapize_string(ptr noundef) #2

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #6

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

!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, !10, i64 488}
!12 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !7, i64 32, !13, i64 64, !10, i64 72, !10, i64 76, !14, i64 80, !14, i64 84, !14, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !7, i64 108, !14, i64 140, !14, i64 144, !14, i64 148, !14, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !14, i64 200, !14, i64 204, !14, i64 208, !14, i64 212, !14, i64 216, !15, i64 220, !15, i64 284, !15, i64 348, !15, i64 412, !14, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !14, i64 496, !14, i64 500, !14, i64 504, !7, i64 508, !7, i64 524, !7, i64 604, !6, i64 632, !6, i64 640, !10, i64 648, !10, i64 652, !10, i64 656, !6, i64 664, !10, i64 672, !6, i64 680, !10, i64 688}
!13 = !{!"long", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!"", !7, i64 0}
!16 = !{!12, !6, i64 632}
!17 = !{!12, !6, i64 640}
!18 = !{!12, !10, i64 648}
!19 = !{!12, !10, i64 0}
!20 = !{!12, !10, i64 4}
!21 = !{!12, !10, i64 8}
!22 = !{!12, !10, i64 12}
!23 = !{!12, !10, i64 16}
!24 = !{!12, !10, i64 20}
!25 = !{!12, !10, i64 24}
!26 = !{!12, !10, i64 28}
!27 = !{!12, !14, i64 80}
!28 = !{!12, !14, i64 84}
!29 = !{!12, !14, i64 88}
!30 = !{!12, !14, i64 92}
!31 = !{!12, !14, i64 96}
!32 = !{!12, !14, i64 100}
!33 = !{!12, !14, i64 104}
!34 = !{!12, !10, i64 76}
!35 = !{!12, !13, i64 64}
!36 = !{!12, !10, i64 72}
!37 = !{!12, !10, i64 656}
!38 = !{!12, !14, i64 148}
!39 = !{!12, !14, i64 152}
!40 = !{!12, !14, i64 140}
!41 = !{!12, !14, i64 144}
!42 = !{!12, !10, i64 492}
!43 = !{!12, !14, i64 496}
!44 = !{!12, !14, i64 500}
!45 = !{!12, !14, i64 504}
!46 = !{!7, !7, i64 0}
!47 = !{!12, !14, i64 476}
!48 = !{!12, !10, i64 480}
!49 = !{!12, !10, i64 484}
!50 = !{!12, !10, i64 164}
!51 = !{!12, !10, i64 168}
!52 = !{!12, !10, i64 172}
!53 = !{!12, !10, i64 176}
!54 = !{!12, !10, i64 180}
!55 = !{!12, !10, i64 184}
!56 = !{!12, !14, i64 188}
!57 = !{!12, !10, i64 156}
!58 = !{!14, !14, i64 0}
!59 = !{!12, !14, i64 192}
!60 = !{!12, !14, i64 196}
!61 = !{!12, !14, i64 200}
!62 = !{!12, !14, i64 204}
!63 = !{!12, !14, i64 208}
!64 = !{!12, !14, i64 212}
!65 = !{!12, !14, i64 216}
!66 = !{i64 0, i64 64, !46}
!67 = !{!12, !10, i64 160}
!68 = !{!12, !10, i64 672}


; 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.mat44 = type { [4 x [4 x float]] }

@stderr = external local_unnamed_addr global ptr, align 8
@.str.258 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.261 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.262 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.263 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.264 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.265 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.266 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.267 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.268 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.269 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.271 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.272 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.274 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.275 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.276 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.277 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.278 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.279 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.280 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.281 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.282 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.283 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.284 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.285 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.287 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.289 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.290 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.291 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.292 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.293 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.294 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.295 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.296 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.297 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.299 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.300 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.301 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.302 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.303 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.304 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.305 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.306 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.307 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.310 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.311 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.312 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.313 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.314 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.315 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.316 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.318 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.320 = external hidden unnamed_addr constant [37 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: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @nifti_mat44_to_orientation(ptr noundef byval(%struct.mat44) align 8, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #4

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #6

; Function Attrs: nounwind uwtable
define dso_local noalias noundef ptr @nifti_image_to_ascii(ptr noundef %0) local_unnamed_addr #3 {
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca %struct.mat44, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %struct.mat44, align 8
  %10 = icmp eq ptr %0, null
  br i1 %10, label %630, label %11

11:                                               ; preds = %1
  %12 = tail call noalias dereferenceable_or_null(65534) ptr @calloc(i64 noundef 1, i64 noundef 65534) #8
  %.not = icmp eq ptr %12, null
  br i1 %.not, label %13, label %16

13:                                               ; preds = %11
  %14 = load ptr, ptr @stderr, align 8, !tbaa !5
  %15 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %14, ptr noundef nonnull @.str.258, i32 noundef 65534) #9
  br label %630

16:                                               ; preds = %11
  %17 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) @.str.259) #10
  %18 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %19 = getelementptr inbounds i8, ptr %12, i64 %18
  %20 = getelementptr inbounds i8, ptr %0, i64 488
  %21 = load i32, ptr %20, align 8, !tbaa !9
  switch i32 %21, label %22 [
    i32 1, label %25
    i32 2, label %.fold.split
  ]

22:                                               ; preds = %16
  %23 = icmp eq i32 %21, 3
  %24 = select i1 %23, ptr @.str.263, ptr @.str.264
  br label %25

.fold.split:                                      ; preds = %16
  br label %25

25:                                               ; preds = %16, %.fold.split, %22
  %26 = phi ptr [ @.str.261, %16 ], [ %24, %22 ], [ @.str.262, %.fold.split ]
  %27 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %19, ptr noundef nonnull dereferenceable(1) @.str.260, ptr noundef nonnull %26) #10
  %28 = getelementptr inbounds i8, ptr %0, i64 632
  %29 = load ptr, ptr %28, align 8, !tbaa !15
  %30 = tail call ptr @escapize_string(ptr noundef %29)
  %31 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %32 = getelementptr inbounds i8, ptr %12, i64 %31
  %33 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) @.str.265, ptr noundef %30) #10
  tail call void @free(ptr noundef %30) #10
  %34 = getelementptr inbounds i8, ptr %0, i64 640
  %35 = load ptr, ptr %34, align 8, !tbaa !16
  %36 = tail call ptr @escapize_string(ptr noundef %35)
  %37 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %38 = getelementptr inbounds i8, ptr %12, i64 %37
  %39 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %38, ptr noundef nonnull dereferenceable(1) @.str.266, ptr noundef %36) #10
  tail call void @free(ptr noundef %36) #10
  %40 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %41 = getelementptr inbounds i8, ptr %12, i64 %40
  %42 = getelementptr inbounds i8, ptr %0, i64 648
  %43 = load i32, ptr %42, align 8, !tbaa !17
  %44 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %41, ptr noundef nonnull dereferenceable(1) @.str.267, i32 noundef %43) #10
  %45 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %46 = getelementptr inbounds i8, ptr %12, i64 %45
  %47 = load i32, ptr %0, align 8, !tbaa !18
  %48 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %46, ptr noundef nonnull dereferenceable(1) @.str.268, i32 noundef %47) #10
  %49 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %50 = getelementptr inbounds i8, ptr %12, i64 %49
  %51 = getelementptr inbounds i8, ptr %0, i64 4
  %52 = load i32, ptr %51, align 4, !tbaa !19
  %53 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %50, ptr noundef nonnull dereferenceable(1) @.str.269, i32 noundef %52) #10
  %54 = load i32, ptr %0, align 8, !tbaa !18
  %55 = icmp sgt i32 %54, 1
  br i1 %55, label %56, label %.thread326

56:                                               ; preds = %25
  %57 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %58 = getelementptr inbounds i8, ptr %12, i64 %57
  %59 = getelementptr inbounds i8, ptr %0, i64 8
  %60 = load i32, ptr %59, align 8, !tbaa !20
  %61 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %58, ptr noundef nonnull dereferenceable(1) @.str.270, i32 noundef %60) #10
  %.pr = load i32, ptr %0, align 8, !tbaa !18
  %62 = icmp sgt i32 %.pr, 2
  br i1 %62, label %63, label %.thread326

63:                                               ; preds = %56
  %64 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %65 = getelementptr inbounds i8, ptr %12, i64 %64
  %66 = getelementptr inbounds i8, ptr %0, i64 12
  %67 = load i32, ptr %66, align 4, !tbaa !21
  %68 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %65, ptr noundef nonnull dereferenceable(1) @.str.271, i32 noundef %67) #10
  %.pr317 = load i32, ptr %0, align 8, !tbaa !18
  %69 = icmp sgt i32 %.pr317, 3
  br i1 %69, label %.thread318, label %.thread326

.thread318:                                       ; preds = %63
  %70 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %71 = getelementptr inbounds i8, ptr %12, i64 %70
  %72 = getelementptr inbounds i8, ptr %0, i64 16
  %73 = load i32, ptr %72, align 8, !tbaa !22
  %74 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %71, ptr noundef nonnull dereferenceable(1) @.str.272, i32 noundef %73) #10
  %.pr319.pr = load i32, ptr %0, align 8, !tbaa !18
  %75 = icmp sgt i32 %.pr319.pr, 4
  br i1 %75, label %76, label %.thread326

76:                                               ; preds = %.thread318
  %77 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %78 = getelementptr inbounds i8, ptr %12, i64 %77
  %79 = getelementptr inbounds i8, ptr %0, i64 20
  %80 = load i32, ptr %79, align 4, !tbaa !23
  %81 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %78, ptr noundef nonnull dereferenceable(1) @.str.273, i32 noundef %80) #10
  %.pr321 = load i32, ptr %0, align 8, !tbaa !18
  %82 = icmp sgt i32 %.pr321, 5
  br i1 %82, label %.thread323, label %.thread326

.thread323:                                       ; preds = %76
  %83 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %84 = getelementptr inbounds i8, ptr %12, i64 %83
  %85 = getelementptr inbounds i8, ptr %0, i64 24
  %86 = load i32, ptr %85, align 8, !tbaa !24
  %87 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %84, ptr noundef nonnull dereferenceable(1) @.str.274, i32 noundef %86) #10
  %.pr325.pr.pr = load i32, ptr %0, align 8, !tbaa !18
  %88 = icmp sgt i32 %.pr325.pr.pr, 6
  br i1 %88, label %89, label %.thread326

89:                                               ; preds = %.thread323
  %90 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %91 = getelementptr inbounds i8, ptr %12, i64 %90
  %92 = getelementptr inbounds i8, ptr %0, i64 28
  %93 = load i32, ptr %92, align 4, !tbaa !25
  %94 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %91, ptr noundef nonnull dereferenceable(1) @.str.275, i32 noundef %93) #10
  br label %.thread326

.thread326:                                       ; preds = %25, %56, %.thread318, %63, %76, %89, %.thread323
  %95 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %96 = getelementptr inbounds i8, ptr %12, i64 %95
  %97 = getelementptr inbounds i8, ptr %0, i64 80
  %98 = load float, ptr %97, align 8, !tbaa !26
  %99 = fpext float %98 to double
  %100 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %96, ptr noundef nonnull dereferenceable(1) @.str.276, double noundef %99) #10
  %101 = load i32, ptr %0, align 8, !tbaa !18
  %102 = icmp sgt i32 %101, 1
  br i1 %102, label %103, label %.thread340

103:                                              ; preds = %.thread326
  %104 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %105 = getelementptr inbounds i8, ptr %12, i64 %104
  %106 = getelementptr inbounds i8, ptr %0, i64 84
  %107 = load float, ptr %106, align 4, !tbaa !27
  %108 = fpext float %107 to double
  %109 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %105, ptr noundef nonnull dereferenceable(1) @.str.277, double noundef %108) #10
  %.pr327 = load i32, ptr %0, align 8, !tbaa !18
  %110 = icmp sgt i32 %.pr327, 2
  br i1 %110, label %111, label %.thread340

111:                                              ; preds = %103
  %112 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %113 = getelementptr inbounds i8, ptr %12, i64 %112
  %114 = getelementptr inbounds i8, ptr %0, i64 88
  %115 = load float, ptr %114, align 8, !tbaa !28
  %116 = fpext float %115 to double
  %117 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %113, ptr noundef nonnull dereferenceable(1) @.str.278, double noundef %116) #10
  %.pr329 = load i32, ptr %0, align 8, !tbaa !18
  %118 = icmp sgt i32 %.pr329, 3
  br i1 %118, label %.thread331, label %.thread340

.thread331:                                       ; preds = %111
  %119 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %120 = getelementptr inbounds i8, ptr %12, i64 %119
  %121 = getelementptr inbounds i8, ptr %0, i64 92
  %122 = load float, ptr %121, align 4, !tbaa !29
  %123 = fpext float %122 to double
  %124 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %120, ptr noundef nonnull dereferenceable(1) @.str.279, double noundef %123) #10
  %.pr333.pr = load i32, ptr %0, align 8, !tbaa !18
  %125 = icmp sgt i32 %.pr333.pr, 4
  br i1 %125, label %126, label %.thread340

126:                                              ; preds = %.thread331
  %127 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %128 = getelementptr inbounds i8, ptr %12, i64 %127
  %129 = getelementptr inbounds i8, ptr %0, i64 96
  %130 = load float, ptr %129, align 8, !tbaa !30
  %131 = fpext float %130 to double
  %132 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %128, ptr noundef nonnull dereferenceable(1) @.str.280, double noundef %131) #10
  %.pr335 = load i32, ptr %0, align 8, !tbaa !18
  %133 = icmp sgt i32 %.pr335, 5
  br i1 %133, label %.thread337, label %.thread340

.thread337:                                       ; preds = %126
  %134 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %135 = getelementptr inbounds i8, ptr %12, i64 %134
  %136 = getelementptr inbounds i8, ptr %0, i64 100
  %137 = load float, ptr %136, align 4, !tbaa !31
  %138 = fpext float %137 to double
  %139 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %135, ptr noundef nonnull dereferenceable(1) @.str.281, double noundef %138) #10
  %.pr339.pr.pr = load i32, ptr %0, align 8, !tbaa !18
  %140 = icmp sgt i32 %.pr339.pr.pr, 6
  br i1 %140, label %141, label %.thread340

141:                                              ; preds = %.thread337
  %142 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %143 = getelementptr inbounds i8, ptr %12, i64 %142
  %144 = getelementptr inbounds i8, ptr %0, i64 104
  %145 = load float, ptr %144, align 8, !tbaa !32
  %146 = fpext float %145 to double
  %147 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %143, ptr noundef nonnull dereferenceable(1) @.str.282, double noundef %146) #10
  br label %.thread340

.thread340:                                       ; preds = %.thread326, %103, %.thread331, %111, %126, %141, %.thread337
  %148 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %149 = getelementptr inbounds i8, ptr %12, i64 %148
  %150 = getelementptr inbounds i8, ptr %0, i64 76
  %151 = load i32, ptr %150, align 4, !tbaa !33
  %152 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %149, ptr noundef nonnull dereferenceable(1) @.str.283, i32 noundef %151) #10
  %153 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %154 = getelementptr inbounds i8, ptr %12, i64 %153
  %155 = load i32, ptr %150, align 4, !tbaa !33
  %156 = tail call ptr @nifti_datatype_string(i32 noundef %155)
  %157 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %154, ptr noundef nonnull dereferenceable(1) @.str.284, ptr noundef %156) #10
  %158 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %159 = getelementptr inbounds i8, ptr %12, i64 %158
  %160 = getelementptr inbounds i8, ptr %0, i64 64
  %161 = load i64, ptr %160, align 8, !tbaa !34
  %162 = trunc i64 %161 to i32
  %163 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %159, ptr noundef nonnull dereferenceable(1) @.str.285, i32 noundef %162) #10
  %164 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %165 = getelementptr inbounds i8, ptr %12, i64 %164
  %166 = getelementptr inbounds i8, ptr %0, i64 72
  %167 = load i32, ptr %166, align 8, !tbaa !35
  %168 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %165, ptr noundef nonnull dereferenceable(1) @.str.286, i32 noundef %167) #10
  %169 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %170 = getelementptr inbounds i8, ptr %12, i64 %169
  %171 = getelementptr inbounds i8, ptr %0, i64 656
  %172 = load i32, ptr %171, align 8, !tbaa !36
  %173 = icmp eq i32 %172, 2
  %174 = select i1 %173, ptr @.str.288, ptr @.str.289
  %175 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %170, ptr noundef nonnull dereferenceable(1) @.str.287, ptr noundef nonnull %174) #10
  %176 = getelementptr inbounds i8, ptr %0, i64 148
  %177 = load float, ptr %176, align 4, !tbaa !37
  %178 = getelementptr inbounds i8, ptr %0, i64 152
  %179 = load float, ptr %178, align 8, !tbaa !38
  %180 = fcmp olt float %177, %179
  br i1 %180, label %181, label %191

181:                                              ; preds = %.thread340
  %182 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %183 = getelementptr inbounds i8, ptr %12, i64 %182
  %184 = fpext float %177 to double
  %185 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %183, ptr noundef nonnull dereferenceable(1) @.str.290, double noundef %184) #10
  %186 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %187 = getelementptr inbounds i8, ptr %12, i64 %186
  %188 = load float, ptr %178, align 8, !tbaa !38
  %189 = fpext float %188 to double
  %190 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %187, ptr noundef nonnull dereferenceable(1) @.str.291, double noundef %189) #10
  br label %191

191:                                              ; preds = %181, %.thread340
  %192 = getelementptr inbounds i8, ptr %0, i64 140
  %193 = load float, ptr %192, align 4, !tbaa !39
  %194 = fcmp une float %193, 0.000000e+00
  br i1 %194, label %195, label %206

195:                                              ; preds = %191
  %196 = fpext float %193 to double
  %197 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %198 = getelementptr inbounds i8, ptr %12, i64 %197
  %199 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %198, ptr noundef nonnull dereferenceable(1) @.str.292, double noundef %196) #10
  %200 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %201 = getelementptr inbounds i8, ptr %12, i64 %200
  %202 = getelementptr inbounds i8, ptr %0, i64 144
  %203 = load float, ptr %202, align 8, !tbaa !40
  %204 = fpext float %203 to double
  %205 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.293, double noundef %204) #10
  br label %206

206:                                              ; preds = %195, %191
  %207 = getelementptr inbounds i8, ptr %0, i64 492
  %208 = load i32, ptr %207, align 4, !tbaa !41
  %209 = icmp sgt i32 %208, 0
  br i1 %209, label %210, label %244

210:                                              ; preds = %206
  %211 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %212 = getelementptr inbounds i8, ptr %12, i64 %211
  %213 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %212, ptr noundef nonnull dereferenceable(1) @.str.294, i32 noundef %208) #10
  %214 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %215 = getelementptr inbounds i8, ptr %12, i64 %214
  %216 = load i32, ptr %207, align 4, !tbaa !41
  %217 = tail call ptr @nifti_intent_string(i32 noundef %216)
  %218 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %215, ptr noundef nonnull dereferenceable(1) @.str.295, ptr noundef %217) #10
  %219 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %220 = getelementptr inbounds i8, ptr %12, i64 %219
  %221 = getelementptr inbounds i8, ptr %0, i64 496
  %222 = load float, ptr %221, align 8, !tbaa !42
  %223 = fpext float %222 to double
  %224 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %220, ptr noundef nonnull dereferenceable(1) @.str.296, double noundef %223) #10
  %225 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %226 = getelementptr inbounds i8, ptr %12, i64 %225
  %227 = getelementptr inbounds i8, ptr %0, i64 500
  %228 = load float, ptr %227, align 4, !tbaa !43
  %229 = fpext float %228 to double
  %230 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %226, ptr noundef nonnull dereferenceable(1) @.str.297, double noundef %229) #10
  %231 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %232 = getelementptr inbounds i8, ptr %12, i64 %231
  %233 = getelementptr inbounds i8, ptr %0, i64 504
  %234 = load float, ptr %233, align 8, !tbaa !44
  %235 = fpext float %234 to double
  %236 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %232, ptr noundef nonnull dereferenceable(1) @.str.298, double noundef %235) #10
  %237 = getelementptr inbounds i8, ptr %0, i64 508
  %238 = load i8, ptr %237, align 4, !tbaa !45
  %.not313 = icmp eq i8 %238, 0
  br i1 %.not313, label %244, label %239

239:                                              ; preds = %210
  %240 = tail call ptr @escapize_string(ptr noundef nonnull %237)
  %241 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %242 = getelementptr inbounds i8, ptr %12, i64 %241
  %243 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %242, ptr noundef nonnull dereferenceable(1) @.str.299, ptr noundef %240) #10
  tail call void @free(ptr noundef %240) #10
  br label %244

244:                                              ; preds = %210, %239, %206
  %245 = getelementptr inbounds i8, ptr %0, i64 476
  %246 = load float, ptr %245, align 4, !tbaa !46
  %247 = fcmp une float %246, 0.000000e+00
  br i1 %247, label %248, label %253

248:                                              ; preds = %244
  %249 = fpext float %246 to double
  %250 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %251 = getelementptr inbounds i8, ptr %12, i64 %250
  %252 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %251, ptr noundef nonnull dereferenceable(1) @.str.300, double noundef %249) #10
  br label %253

253:                                              ; preds = %248, %244
  %254 = getelementptr inbounds i8, ptr %0, i64 480
  %255 = load i32, ptr %254, align 8, !tbaa !47
  %256 = icmp sgt i32 %255, 0
  br i1 %256, label %257, label %262

257:                                              ; preds = %253
  %258 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %259 = getelementptr inbounds i8, ptr %12, i64 %258
  %260 = tail call ptr @nifti_units_string(i32 noundef %255)
  %261 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %259, ptr noundef nonnull dereferenceable(1) @.str.301, i32 noundef %255, ptr noundef %260) #10
  br label %262

262:                                              ; preds = %257, %253
  %263 = getelementptr inbounds i8, ptr %0, i64 484
  %264 = load i32, ptr %263, align 4, !tbaa !48
  %265 = icmp sgt i32 %264, 0
  br i1 %265, label %266, label %271

266:                                              ; preds = %262
  %267 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %268 = getelementptr inbounds i8, ptr %12, i64 %267
  %269 = tail call ptr @nifti_units_string(i32 noundef %264)
  %270 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %268, ptr noundef nonnull dereferenceable(1) @.str.302, i32 noundef %264, ptr noundef %269) #10
  br label %271

271:                                              ; preds = %266, %262
  %272 = getelementptr inbounds i8, ptr %0, i64 164
  %273 = load i32, ptr %272, align 4, !tbaa !49
  %274 = icmp sgt i32 %273, 0
  br i1 %274, label %275, label %279

275:                                              ; preds = %271
  %276 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %277 = getelementptr inbounds i8, ptr %12, i64 %276
  %278 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %277, ptr noundef nonnull dereferenceable(1) @.str.303, i32 noundef %273) #10
  br label %279

279:                                              ; preds = %275, %271
  %280 = getelementptr inbounds i8, ptr %0, i64 168
  %281 = load i32, ptr %280, align 8, !tbaa !50
  %282 = icmp sgt i32 %281, 0
  br i1 %282, label %283, label %287

283:                                              ; preds = %279
  %284 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %285 = getelementptr inbounds i8, ptr %12, i64 %284
  %286 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %285, ptr noundef nonnull dereferenceable(1) @.str.304, i32 noundef %281) #10
  br label %287

287:                                              ; preds = %283, %279
  %288 = getelementptr inbounds i8, ptr %0, i64 172
  %289 = load i32, ptr %288, align 4, !tbaa !51
  %290 = icmp sgt i32 %289, 0
  br i1 %290, label %291, label %295

291:                                              ; preds = %287
  %292 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %293 = getelementptr inbounds i8, ptr %12, i64 %292
  %294 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %293, ptr noundef nonnull dereferenceable(1) @.str.305, i32 noundef %289) #10
  br label %295

295:                                              ; preds = %291, %287
  %296 = getelementptr inbounds i8, ptr %0, i64 176
  %297 = load i32, ptr %296, align 8, !tbaa !52
  %298 = icmp sgt i32 %297, 0
  br i1 %298, label %299, label %304

299:                                              ; preds = %295
  %300 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %301 = getelementptr inbounds i8, ptr %12, i64 %300
  %302 = tail call ptr @nifti_slice_string(i32 noundef %297)
  %303 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %301, ptr noundef nonnull dereferenceable(1) @.str.306, i32 noundef %297, ptr noundef %302) #10
  br label %304

304:                                              ; preds = %299, %295
  %305 = getelementptr inbounds i8, ptr %0, i64 180
  %306 = load i32, ptr %305, align 4, !tbaa !53
  %307 = icmp sgt i32 %306, -1
  br i1 %307, label %308, label %316

308:                                              ; preds = %304
  %309 = getelementptr inbounds i8, ptr %0, i64 184
  %310 = load i32, ptr %309, align 8, !tbaa !54
  %311 = icmp sgt i32 %310, %306
  br i1 %311, label %312, label %316

312:                                              ; preds = %308
  %313 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %314 = getelementptr inbounds i8, ptr %12, i64 %313
  %315 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %314, ptr noundef nonnull dereferenceable(1) @.str.307, i32 noundef %306, i32 noundef %310) #10
  br label %316

316:                                              ; preds = %312, %308, %304
  %317 = getelementptr inbounds i8, ptr %0, i64 188
  %318 = load float, ptr %317, align 4, !tbaa !55
  %319 = fcmp une float %318, 0.000000e+00
  br i1 %319, label %320, label %325

320:                                              ; preds = %316
  %321 = fpext float %318 to double
  %322 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %323 = getelementptr inbounds i8, ptr %12, i64 %322
  %324 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %323, ptr noundef nonnull dereferenceable(1) @.str.308, double noundef %321) #10
  br label %325

325:                                              ; preds = %320, %316
  %326 = getelementptr inbounds i8, ptr %0, i64 524
  %327 = load i8, ptr %326, align 4, !tbaa !45
  %.not314 = icmp eq i8 %327, 0
  br i1 %.not314, label %333, label %328

328:                                              ; preds = %325
  %329 = tail call ptr @escapize_string(ptr noundef nonnull %326)
  %330 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %331 = getelementptr inbounds i8, ptr %12, i64 %330
  %332 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %331, ptr noundef nonnull dereferenceable(1) @.str.309, ptr noundef %329) #10
  tail call void @free(ptr noundef %329) #10
  br label %333

333:                                              ; preds = %328, %325
  %334 = getelementptr inbounds i8, ptr %0, i64 604
  %335 = load i8, ptr %334, align 4, !tbaa !45
  %.not315 = icmp eq i8 %335, 0
  br i1 %.not315, label %341, label %336

336:                                              ; preds = %333
  %337 = tail call ptr @escapize_string(ptr noundef nonnull %334)
  %338 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %339 = getelementptr inbounds i8, ptr %12, i64 %338
  %340 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %339, ptr noundef nonnull dereferenceable(1) @.str.310, ptr noundef %337) #10
  tail call void @free(ptr noundef %337) #10
  br label %341

341:                                              ; preds = %336, %333
  %342 = getelementptr inbounds i8, ptr %0, i64 156
  %343 = load i32, ptr %342, align 4, !tbaa !56
  %344 = icmp sgt i32 %343, 0
  br i1 %344, label %345, label %489

345:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #10
  %346 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %347 = getelementptr inbounds i8, ptr %12, i64 %346
  %348 = tail call ptr @nifti_xform_string(i32 noundef %343)
  %349 = getelementptr inbounds i8, ptr %0, i64 220
  %350 = load float, ptr %349, align 4, !tbaa !57
  %351 = fpext float %350 to double
  %352 = getelementptr inbounds i8, ptr %0, i64 224
  %353 = load float, ptr %352, align 4, !tbaa !57
  %354 = fpext float %353 to double
  %355 = getelementptr inbounds i8, ptr %0, i64 228
  %356 = load float, ptr %355, align 4, !tbaa !57
  %357 = fpext float %356 to double
  %358 = getelementptr inbounds i8, ptr %0, i64 232
  %359 = load float, ptr %358, align 4, !tbaa !57
  %360 = fpext float %359 to double
  %361 = getelementptr inbounds i8, ptr %0, i64 236
  %362 = load float, ptr %361, align 4, !tbaa !57
  %363 = fpext float %362 to double
  %364 = getelementptr inbounds i8, ptr %0, i64 240
  %365 = load float, ptr %364, align 4, !tbaa !57
  %366 = fpext float %365 to double
  %367 = getelementptr inbounds i8, ptr %0, i64 244
  %368 = load float, ptr %367, align 4, !tbaa !57
  %369 = fpext float %368 to double
  %370 = getelementptr inbounds i8, ptr %0, i64 248
  %371 = load float, ptr %370, align 4, !tbaa !57
  %372 = fpext float %371 to double
  %373 = getelementptr inbounds i8, ptr %0, i64 252
  %374 = load float, ptr %373, align 4, !tbaa !57
  %375 = fpext float %374 to double
  %376 = getelementptr inbounds i8, ptr %0, i64 256
  %377 = load float, ptr %376, align 4, !tbaa !57
  %378 = fpext float %377 to double
  %379 = getelementptr inbounds i8, ptr %0, i64 260
  %380 = load float, ptr %379, align 4, !tbaa !57
  %381 = fpext float %380 to double
  %382 = getelementptr inbounds i8, ptr %0, i64 264
  %383 = load float, ptr %382, align 4, !tbaa !57
  %384 = fpext float %383 to double
  %385 = getelementptr inbounds i8, ptr %0, i64 268
  %386 = load float, ptr %385, align 4, !tbaa !57
  %387 = fpext float %386 to double
  %388 = getelementptr inbounds i8, ptr %0, i64 272
  %389 = load float, ptr %388, align 4, !tbaa !57
  %390 = fpext float %389 to double
  %391 = getelementptr inbounds i8, ptr %0, i64 276
  %392 = load float, ptr %391, align 4, !tbaa !57
  %393 = fpext float %392 to double
  %394 = getelementptr inbounds i8, ptr %0, i64 280
  %395 = load float, ptr %394, align 4, !tbaa !57
  %396 = fpext float %395 to double
  %397 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %347, ptr noundef nonnull dereferenceable(1) @.str.311, i32 noundef %343, ptr noundef %348, double noundef %351, double noundef %354, double noundef %357, double noundef %360, double noundef %363, double noundef %366, double noundef %369, double noundef %372, double noundef %375, double noundef %378, double noundef %381, double noundef %384, double noundef %387, double noundef %390, double noundef %393, double noundef %396) #10
  %398 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %399 = getelementptr inbounds i8, ptr %12, i64 %398
  %400 = getelementptr inbounds i8, ptr %0, i64 284
  %401 = load float, ptr %400, align 4, !tbaa !57
  %402 = fpext float %401 to double
  %403 = getelementptr inbounds i8, ptr %0, i64 288
  %404 = load float, ptr %403, align 4, !tbaa !57
  %405 = fpext float %404 to double
  %406 = getelementptr inbounds i8, ptr %0, i64 292
  %407 = load float, ptr %406, align 4, !tbaa !57
  %408 = fpext float %407 to double
  %409 = getelementptr inbounds i8, ptr %0, i64 296
  %410 = load float, ptr %409, align 4, !tbaa !57
  %411 = fpext float %410 to double
  %412 = getelementptr inbounds i8, ptr %0, i64 300
  %413 = load float, ptr %412, align 4, !tbaa !57
  %414 = fpext float %413 to double
  %415 = getelementptr inbounds i8, ptr %0, i64 304
  %416 = load float, ptr %415, align 4, !tbaa !57
  %417 = fpext float %416 to double
  %418 = getelementptr inbounds i8, ptr %0, i64 308
  %419 = load float, ptr %418, align 4, !tbaa !57
  %420 = fpext float %419 to double
  %421 = getelementptr inbounds i8, ptr %0, i64 312
  %422 = load float, ptr %421, align 4, !tbaa !57
  %423 = fpext float %422 to double
  %424 = getelementptr inbounds i8, ptr %0, i64 316
  %425 = load float, ptr %424, align 4, !tbaa !57
  %426 = fpext float %425 to double
  %427 = getelementptr inbounds i8, ptr %0, i64 320
  %428 = load float, ptr %427, align 4, !tbaa !57
  %429 = fpext float %428 to double
  %430 = getelementptr inbounds i8, ptr %0, i64 324
  %431 = load float, ptr %430, align 4, !tbaa !57
  %432 = fpext float %431 to double
  %433 = getelementptr inbounds i8, ptr %0, i64 328
  %434 = load float, ptr %433, align 4, !tbaa !57
  %435 = fpext float %434 to double
  %436 = getelementptr inbounds i8, ptr %0, i64 332
  %437 = load float, ptr %436, align 4, !tbaa !57
  %438 = fpext float %437 to double
  %439 = getelementptr inbounds i8, ptr %0, i64 336
  %440 = load float, ptr %439, align 4, !tbaa !57
  %441 = fpext float %440 to double
  %442 = getelementptr inbounds i8, ptr %0, i64 340
  %443 = load float, ptr %442, align 4, !tbaa !57
  %444 = fpext float %443 to double
  %445 = getelementptr inbounds i8, ptr %0, i64 344
  %446 = load float, ptr %445, align 4, !tbaa !57
  %447 = fpext float %446 to double
  %448 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %399, ptr noundef nonnull dereferenceable(1) @.str.312, double noundef %402, double noundef %405, double noundef %408, double noundef %411, double noundef %414, double noundef %417, double noundef %420, double noundef %423, double noundef %426, double noundef %429, double noundef %432, double noundef %435, double noundef %438, double noundef %441, double noundef %444, double noundef %447) #10
  %449 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %450 = getelementptr inbounds i8, ptr %12, i64 %449
  %451 = getelementptr inbounds i8, ptr %0, i64 192
  %452 = load float, ptr %451, align 8, !tbaa !58
  %453 = fpext float %452 to double
  %454 = getelementptr inbounds i8, ptr %0, i64 196
  %455 = load float, ptr %454, align 4, !tbaa !59
  %456 = fpext float %455 to double
  %457 = getelementptr inbounds i8, ptr %0, i64 200
  %458 = load float, ptr %457, align 8, !tbaa !60
  %459 = fpext float %458 to double
  %460 = getelementptr inbounds i8, ptr %0, i64 204
  %461 = load float, ptr %460, align 4, !tbaa !61
  %462 = fpext float %461 to double
  %463 = getelementptr inbounds i8, ptr %0, i64 208
  %464 = load float, ptr %463, align 8, !tbaa !62
  %465 = fpext float %464 to double
  %466 = getelementptr inbounds i8, ptr %0, i64 212
  %467 = load float, ptr %466, align 4, !tbaa !63
  %468 = fpext float %467 to double
  %469 = getelementptr inbounds i8, ptr %0, i64 216
  %470 = load float, ptr %469, align 8, !tbaa !64
  %471 = fpext float %470 to double
  %472 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %450, ptr noundef nonnull dereferenceable(1) @.str.313, double noundef %453, double noundef %456, double noundef %459, double noundef %462, double noundef %465, double noundef %468, double noundef %471) #10
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef nonnull align 4 dereferenceable(64) %349, i64 64, i1 false), !tbaa.struct !65
  call void @nifti_mat44_to_orientation(ptr noundef nonnull byval(%struct.mat44) align 8 %5, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #10
  %473 = load i32, ptr %2, align 4, !tbaa !66
  %474 = icmp sgt i32 %473, 0
  %475 = load i32, ptr %3, align 4
  %476 = icmp sgt i32 %475, 0
  %or.cond = select i1 %474, i1 %476, i1 false
  %477 = load i32, ptr %4, align 4
  %478 = icmp sgt i32 %477, 0
  %or.cond3 = select i1 %or.cond, i1 %478, i1 false
  br i1 %or.cond3, label %479, label %488

479:                                              ; preds = %345
  %480 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %481 = getelementptr inbounds i8, ptr %12, i64 %480
  %482 = call ptr @nifti_orientation_string(i32 noundef %473)
  %483 = load i32, ptr %3, align 4, !tbaa !66
  %484 = call ptr @nifti_orientation_string(i32 noundef %483)
  %485 = load i32, ptr %4, align 4, !tbaa !66
  %486 = call ptr @nifti_orientation_string(i32 noundef %485)
  %487 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %481, ptr noundef nonnull dereferenceable(1) @.str.314, ptr noundef %482, ptr noundef %484, ptr noundef %486) #10
  br label %488

488:                                              ; preds = %479, %345
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #10
  br label %489

489:                                              ; preds = %488, %341
  %490 = getelementptr inbounds i8, ptr %0, i64 160
  %491 = load i32, ptr %490, align 8, !tbaa !67
  %492 = icmp sgt i32 %491, 0
  br i1 %492, label %493, label %613

493:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #10
  %494 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %495 = getelementptr inbounds i8, ptr %12, i64 %494
  %496 = call ptr @nifti_xform_string(i32 noundef %491)
  %497 = getelementptr inbounds i8, ptr %0, i64 348
  %498 = load float, ptr %497, align 4, !tbaa !57
  %499 = fpext float %498 to double
  %500 = getelementptr inbounds i8, ptr %0, i64 352
  %501 = load float, ptr %500, align 4, !tbaa !57
  %502 = fpext float %501 to double
  %503 = getelementptr inbounds i8, ptr %0, i64 356
  %504 = load float, ptr %503, align 4, !tbaa !57
  %505 = fpext float %504 to double
  %506 = getelementptr inbounds i8, ptr %0, i64 360
  %507 = load float, ptr %506, align 4, !tbaa !57
  %508 = fpext float %507 to double
  %509 = getelementptr inbounds i8, ptr %0, i64 364
  %510 = load float, ptr %509, align 4, !tbaa !57
  %511 = fpext float %510 to double
  %512 = getelementptr inbounds i8, ptr %0, i64 368
  %513 = load float, ptr %512, align 4, !tbaa !57
  %514 = fpext float %513 to double
  %515 = getelementptr inbounds i8, ptr %0, i64 372
  %516 = load float, ptr %515, align 4, !tbaa !57
  %517 = fpext float %516 to double
  %518 = getelementptr inbounds i8, ptr %0, i64 376
  %519 = load float, ptr %518, align 4, !tbaa !57
  %520 = fpext float %519 to double
  %521 = getelementptr inbounds i8, ptr %0, i64 380
  %522 = load float, ptr %521, align 4, !tbaa !57
  %523 = fpext float %522 to double
  %524 = getelementptr inbounds i8, ptr %0, i64 384
  %525 = load float, ptr %524, align 4, !tbaa !57
  %526 = fpext float %525 to double
  %527 = getelementptr inbounds i8, ptr %0, i64 388
  %528 = load float, ptr %527, align 4, !tbaa !57
  %529 = fpext float %528 to double
  %530 = getelementptr inbounds i8, ptr %0, i64 392
  %531 = load float, ptr %530, align 4, !tbaa !57
  %532 = fpext float %531 to double
  %533 = getelementptr inbounds i8, ptr %0, i64 396
  %534 = load float, ptr %533, align 4, !tbaa !57
  %535 = fpext float %534 to double
  %536 = getelementptr inbounds i8, ptr %0, i64 400
  %537 = load float, ptr %536, align 4, !tbaa !57
  %538 = fpext float %537 to double
  %539 = getelementptr inbounds i8, ptr %0, i64 404
  %540 = load float, ptr %539, align 4, !tbaa !57
  %541 = fpext float %540 to double
  %542 = getelementptr inbounds i8, ptr %0, i64 408
  %543 = load float, ptr %542, align 4, !tbaa !57
  %544 = fpext float %543 to double
  %545 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %495, ptr noundef nonnull dereferenceable(1) @.str.315, i32 noundef %491, ptr noundef %496, double noundef %499, double noundef %502, double noundef %505, double noundef %508, double noundef %511, double noundef %514, double noundef %517, double noundef %520, double noundef %523, double noundef %526, double noundef %529, double noundef %532, double noundef %535, double noundef %538, double noundef %541, double noundef %544) #10
  %546 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %547 = getelementptr inbounds i8, ptr %12, i64 %546
  %548 = getelementptr inbounds i8, ptr %0, i64 412
  %549 = load float, ptr %548, align 4, !tbaa !57
  %550 = fpext float %549 to double
  %551 = getelementptr inbounds i8, ptr %0, i64 416
  %552 = load float, ptr %551, align 4, !tbaa !57
  %553 = fpext float %552 to double
  %554 = getelementptr inbounds i8, ptr %0, i64 420
  %555 = load float, ptr %554, align 4, !tbaa !57
  %556 = fpext float %555 to double
  %557 = getelementptr inbounds i8, ptr %0, i64 424
  %558 = load float, ptr %557, align 4, !tbaa !57
  %559 = fpext float %558 to double
  %560 = getelementptr inbounds i8, ptr %0, i64 428
  %561 = load float, ptr %560, align 4, !tbaa !57
  %562 = fpext float %561 to double
  %563 = getelementptr inbounds i8, ptr %0, i64 432
  %564 = load float, ptr %563, align 4, !tbaa !57
  %565 = fpext float %564 to double
  %566 = getelementptr inbounds i8, ptr %0, i64 436
  %567 = load float, ptr %566, align 4, !tbaa !57
  %568 = fpext float %567 to double
  %569 = getelementptr inbounds i8, ptr %0, i64 440
  %570 = load float, ptr %569, align 4, !tbaa !57
  %571 = fpext float %570 to double
  %572 = getelementptr inbounds i8, ptr %0, i64 444
  %573 = load float, ptr %572, align 4, !tbaa !57
  %574 = fpext float %573 to double
  %575 = getelementptr inbounds i8, ptr %0, i64 448
  %576 = load float, ptr %575, align 4, !tbaa !57
  %577 = fpext float %576 to double
  %578 = getelementptr inbounds i8, ptr %0, i64 452
  %579 = load float, ptr %578, align 4, !tbaa !57
  %580 = fpext float %579 to double
  %581 = getelementptr inbounds i8, ptr %0, i64 456
  %582 = load float, ptr %581, align 4, !tbaa !57
  %583 = fpext float %582 to double
  %584 = getelementptr inbounds i8, ptr %0, i64 460
  %585 = load float, ptr %584, align 4, !tbaa !57
  %586 = fpext float %585 to double
  %587 = getelementptr inbounds i8, ptr %0, i64 464
  %588 = load float, ptr %587, align 4, !tbaa !57
  %589 = fpext float %588 to double
  %590 = getelementptr inbounds i8, ptr %0, i64 468
  %591 = load float, ptr %590, align 4, !tbaa !57
  %592 = fpext float %591 to double
  %593 = getelementptr inbounds i8, ptr %0, i64 472
  %594 = load float, ptr %593, align 4, !tbaa !57
  %595 = fpext float %594 to double
  %596 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %547, ptr noundef nonnull dereferenceable(1) @.str.316, double noundef %550, double noundef %553, double noundef %556, double noundef %559, double noundef %562, double noundef %565, double noundef %568, double noundef %571, double noundef %574, double noundef %577, double noundef %580, double noundef %583, double noundef %586, double noundef %589, double noundef %592, double noundef %595) #10
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef nonnull align 4 dereferenceable(64) %497, i64 64, i1 false), !tbaa.struct !65
  call void @nifti_mat44_to_orientation(ptr noundef nonnull byval(%struct.mat44) align 8 %9, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #10
  %597 = load i32, ptr %6, align 4, !tbaa !66
  %598 = icmp sgt i32 %597, 0
  %599 = load i32, ptr %7, align 4
  %600 = icmp sgt i32 %599, 0
  %or.cond5 = select i1 %598, i1 %600, i1 false
  %601 = load i32, ptr %8, align 4
  %602 = icmp sgt i32 %601, 0
  %or.cond7 = select i1 %or.cond5, i1 %602, i1 false
  br i1 %or.cond7, label %603, label %612

603:                                              ; preds = %493
  %604 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %605 = getelementptr inbounds i8, ptr %12, i64 %604
  %606 = call ptr @nifti_orientation_string(i32 noundef %597)
  %607 = load i32, ptr %7, align 4, !tbaa !66
  %608 = call ptr @nifti_orientation_string(i32 noundef %607)
  %609 = load i32, ptr %8, align 4, !tbaa !66
  %610 = call ptr @nifti_orientation_string(i32 noundef %609)
  %611 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %605, ptr noundef nonnull dereferenceable(1) @.str.317, ptr noundef %606, ptr noundef %608, ptr noundef %610) #10
  br label %612

612:                                              ; preds = %603, %493
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  br label %613

613:                                              ; preds = %612, %489
  %614 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %615 = getelementptr inbounds i8, ptr %12, i64 %614
  %616 = getelementptr inbounds i8, ptr %0, i64 672
  %617 = load i32, ptr %616, align 8, !tbaa !68
  %618 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %615, ptr noundef nonnull dereferenceable(1) @.str.318, i32 noundef %617) #10
  %619 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %620 = getelementptr inbounds i8, ptr %12, i64 %619
  %621 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %620, ptr noundef nonnull dereferenceable(1) @.str.319) #10
  %622 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %12) #11
  %623 = trunc i64 %622 to i32
  %624 = add nsw i32 %623, 1
  %625 = sext i32 %624 to i64
  %626 = call ptr @realloc(ptr noundef nonnull %12, i64 noundef %625) #12
  %.not316 = icmp eq ptr %626, null
  br i1 %.not316, label %627, label %630

627:                                              ; preds = %613
  %628 = load ptr, ptr @stderr, align 8, !tbaa !5
  %629 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %628, ptr noundef nonnull @.str.320, i32 noundef %624) #9
  br label %630

630:                                              ; preds = %613, %627, %1, %13
  %.0 = phi ptr [ null, %13 ], [ null, %1 ], [ null, %627 ], [ %626, %613 ]
  ret ptr %.0
}

; Function Attrs: nofree nounwind
declare noundef i32 @sprintf(ptr noalias nocapture noundef writeonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden ptr @escapize_string(ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #7

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind allocsize(0,1) }
attributes #9 = { cold nounwind }
attributes #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { nounwind allocsize(1) }

!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, !11, i64 488}
!10 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !7, i64 32, !12, i64 64, !11, i64 72, !11, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !7, i64 108, !13, i64 140, !13, i64 144, !13, i64 148, !13, i64 152, !11, i64 156, !11, i64 160, !11, i64 164, !11, i64 168, !11, i64 172, !11, i64 176, !11, i64 180, !11, i64 184, !13, i64 188, !13, i64 192, !13, i64 196, !13, i64 200, !13, i64 204, !13, i64 208, !13, i64 212, !13, i64 216, !14, i64 220, !14, i64 284, !14, i64 348, !14, i64 412, !13, i64 476, !11, i64 480, !11, i64 484, !11, i64 488, !11, i64 492, !13, i64 496, !13, i64 500, !13, i64 504, !7, i64 508, !7, i64 524, !7, i64 604, !6, i64 632, !6, i64 640, !11, i64 648, !11, i64 652, !11, i64 656, !6, i64 664, !11, i64 672, !6, i64 680, !11, i64 688}
!11 = !{!"int", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = !{!"", !7, i64 0}
!15 = !{!10, !6, i64 632}
!16 = !{!10, !6, i64 640}
!17 = !{!10, !11, i64 648}
!18 = !{!10, !11, i64 0}
!19 = !{!10, !11, i64 4}
!20 = !{!10, !11, i64 8}
!21 = !{!10, !11, i64 12}
!22 = !{!10, !11, i64 16}
!23 = !{!10, !11, i64 20}
!24 = !{!10, !11, i64 24}
!25 = !{!10, !11, i64 28}
!26 = !{!10, !13, i64 80}
!27 = !{!10, !13, i64 84}
!28 = !{!10, !13, i64 88}
!29 = !{!10, !13, i64 92}
!30 = !{!10, !13, i64 96}
!31 = !{!10, !13, i64 100}
!32 = !{!10, !13, i64 104}
!33 = !{!10, !11, i64 76}
!34 = !{!10, !12, i64 64}
!35 = !{!10, !11, i64 72}
!36 = !{!10, !11, i64 656}
!37 = !{!10, !13, i64 148}
!38 = !{!10, !13, i64 152}
!39 = !{!10, !13, i64 140}
!40 = !{!10, !13, i64 144}
!41 = !{!10, !11, i64 492}
!42 = !{!10, !13, i64 496}
!43 = !{!10, !13, i64 500}
!44 = !{!10, !13, i64 504}
!45 = !{!7, !7, i64 0}
!46 = !{!10, !13, i64 476}
!47 = !{!10, !11, i64 480}
!48 = !{!10, !11, i64 484}
!49 = !{!10, !11, i64 164}
!50 = !{!10, !11, i64 168}
!51 = !{!10, !11, i64 172}
!52 = !{!10, !11, i64 176}
!53 = !{!10, !11, i64 180}
!54 = !{!10, !11, i64 184}
!55 = !{!10, !13, i64 188}
!56 = !{!10, !11, i64 156}
!57 = !{!13, !13, i64 0}
!58 = !{!10, !13, i64 192}
!59 = !{!10, !13, i64 196}
!60 = !{!10, !13, i64 200}
!61 = !{!10, !13, i64 204}
!62 = !{!10, !13, i64 208}
!63 = !{!10, !13, i64 212}
!64 = !{!10, !13, i64 216}
!65 = !{i64 0, i64 64, !45}
!66 = !{!11, !11, i64 0}
!67 = !{!10, !11, i64 160}
!68 = !{!10, !11, i64 672}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass