; 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.nifti_global_options = type { i32, i32, i32 }
%struct.mat44 = type { [4 x [4 x float]] }
%struct.nifti_1_header = type { i32, [10 x i8], [18 x i8], i32, i16, i8, i8, [8 x i16], float, float, float, i16, i16, i16, i16, [8 x float], float, float, float, i16, i8, i8, float, float, float, float, i32, i32, [80 x i8], [24 x i8], i16, i16, float, float, float, float, float, float, [4 x float], [4 x float], [4 x float], [16 x i8], [4 x i8] }
%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
@g_opts = external hidden global %struct.nifti_global_options, align 4
@.str.152 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [13 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 i32 @nifti_disp_matrix_orient(ptr noundef, ptr noundef byval(%struct.mat44) align 8) #2

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

; Function Attrs: nounwind uwtable
declare dso_local void @nifti_quatern_to_mat44(ptr dead_on_unwind noalias writable sret(%struct.mat44) align 4, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float 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) #3

; Function Attrs: nounwind uwtable
declare dso_local void @nifti_mat44_inverse(ptr dead_on_unwind noalias writable sret(%struct.mat44) align 4, ptr noundef byval(%struct.mat44) align 8) #2

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @nifti_short_order() #2

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

; Function Attrs: nounwind uwtable
define dso_local ptr @nifti_convert_nhdr2nim(ptr noundef byval(%struct.nifti_1_header) align 8 %0, ptr noundef %1) #2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i8, align 1
  %13 = alloca %struct.mat44, align 4
  %14 = alloca %struct.mat44, align 8
  %15 = alloca %struct.mat44, align 4
  %16 = alloca %struct.mat44, align 8
  %17 = alloca %struct.mat44, align 4
  %18 = alloca %struct.mat44, align 8
  %19 = alloca %struct.mat44, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %20 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 696) #7
  store ptr %20, ptr %10, align 8, !tbaa !5
  %21 = load ptr, ptr %10, align 8, !tbaa !5
  %22 = icmp ne ptr %21, null
  br i1 %22, label %34, label %23

23:                                               ; preds = %2
  br label %24

24:                                               ; preds = %23
  %25 = load ptr, ptr @stderr, align 8, !tbaa !5
  %26 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %25, ptr noundef @.str.152, ptr noundef @.str.153) #6
  %27 = load ptr, ptr %10, align 8, !tbaa !5
  %28 = icmp ne ptr %27, null
  br i1 %28, label %29, label %31

29:                                               ; preds = %24
  %30 = load ptr, ptr %10, align 8, !tbaa !5
  call void @free(ptr noundef %30) #6
  br label %31

31:                                               ; preds = %29, %24
  store ptr null, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1112

32:                                               ; No predecessors!
  br label %33

33:                                               ; preds = %32
  br label %34

34:                                               ; preds = %33, %2
  %35 = load ptr, ptr %10, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.nifti_image, ptr %35, i32 0, i32 55
  store ptr null, ptr %36, align 8, !tbaa !9
  %37 = load ptr, ptr %10, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.nifti_image, ptr %37, i32 0, i32 56
  store ptr null, ptr %38, align 8, !tbaa !15
  %39 = load ptr, ptr %10, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.nifti_image, ptr %39, i32 0, i32 60
  store ptr null, ptr %40, align 8, !tbaa !16
  %41 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %42 = getelementptr inbounds [8 x i16], ptr %41, i64 0, i64 0
  %43 = load i16, ptr %42, align 8, !tbaa !17
  %44 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 0
  %45 = load i32, ptr %44, align 8, !tbaa !19
  %46 = call i32 @need_nhdr_swap(i16 noundef signext %43, i32 noundef %45)
  store i32 %46, ptr %6, align 4, !tbaa !21
  %47 = load i32, ptr %6, align 4, !tbaa !21
  %48 = icmp slt i32 %47, 0
  br i1 %48, label %49, label %74

49:                                               ; preds = %34
  %50 = load i32, ptr %6, align 4, !tbaa !21
  %51 = icmp eq i32 %50, -1
  br i1 %51, label %52, label %63

52:                                               ; preds = %49
  br label %53

53:                                               ; preds = %52
  %54 = load ptr, ptr @stderr, align 8, !tbaa !5
  %55 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %54, ptr noundef @.str.152, ptr noundef @.str.154) #6
  %56 = load ptr, ptr %10, align 8, !tbaa !5
  %57 = icmp ne ptr %56, null
  br i1 %57, label %58, label %60

58:                                               ; preds = %53
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  call void @free(ptr noundef %59) #6
  br label %60

60:                                               ; preds = %58, %53
  store ptr null, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1112

61:                                               ; No predecessors!
  br label %62

62:                                               ; preds = %61
  br label %63

63:                                               ; preds = %62, %49
  br label %64

64:                                               ; preds = %63
  %65 = load ptr, ptr @stderr, align 8, !tbaa !5
  %66 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %65, ptr noundef @.str.152, ptr noundef @.str.155) #6
  %67 = load ptr, ptr %10, align 8, !tbaa !5
  %68 = icmp ne ptr %67, null
  br i1 %68, label %69, label %71

69:                                               ; preds = %64
  %70 = load ptr, ptr %10, align 8, !tbaa !5
  call void @free(ptr noundef %70) #6
  br label %71

71:                                               ; preds = %69, %64
  store ptr null, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1112

72:                                               ; No predecessors!
  br label %73

73:                                               ; preds = %72
  br label %74

74:                                               ; preds = %73, %34
  %75 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %76 = getelementptr inbounds [4 x i8], ptr %75, i64 0, i64 0
  %77 = load i8, ptr %76, align 8, !tbaa !22
  %78 = sext i8 %77 to i32
  %79 = icmp eq i32 %78, 110
  br i1 %79, label %80, label %116

80:                                               ; preds = %74
  %81 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %82 = getelementptr inbounds [4 x i8], ptr %81, i64 0, i64 3
  %83 = load i8, ptr %82, align 1, !tbaa !22
  %84 = sext i8 %83 to i32
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %86, label %116

86:                                               ; preds = %80
  %87 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %88 = getelementptr inbounds [4 x i8], ptr %87, i64 0, i64 1
  %89 = load i8, ptr %88, align 1, !tbaa !22
  %90 = sext i8 %89 to i32
  %91 = icmp eq i32 %90, 105
  br i1 %91, label %98, label %92

92:                                               ; preds = %86
  %93 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %94 = getelementptr inbounds [4 x i8], ptr %93, i64 0, i64 1
  %95 = load i8, ptr %94, align 1, !tbaa !22
  %96 = sext i8 %95 to i32
  %97 = icmp eq i32 %96, 43
  br i1 %97, label %98, label %116

98:                                               ; preds = %92, %86
  %99 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %100 = getelementptr inbounds [4 x i8], ptr %99, i64 0, i64 2
  %101 = load i8, ptr %100, align 2, !tbaa !22
  %102 = sext i8 %101 to i32
  %103 = icmp sge i32 %102, 49
  br i1 %103, label %104, label %116

104:                                              ; preds = %98
  %105 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %106 = getelementptr inbounds [4 x i8], ptr %105, i64 0, i64 2
  %107 = load i8, ptr %106, align 2, !tbaa !22
  %108 = sext i8 %107 to i32
  %109 = icmp sle i32 %108, 57
  br i1 %109, label %110, label %116

110:                                              ; preds = %104
  %111 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %112 = getelementptr inbounds [4 x i8], ptr %111, i64 0, i64 2
  %113 = load i8, ptr %112, align 2, !tbaa !22
  %114 = sext i8 %113 to i32
  %115 = sub nsw i32 %114, 48
  br label %117

116:                                              ; preds = %104, %98, %92, %80, %74
  br label %117

117:                                              ; preds = %116, %110
  %118 = phi i32 [ %115, %110 ], [ 0, %116 ]
  store i32 %118, ptr %8, align 4, !tbaa !21
  %119 = load i32, ptr %8, align 4, !tbaa !21
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %128, label %121

121:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #6
  %122 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 30
  %123 = load i8, ptr %122, align 4, !tbaa !22
  store i8 %123, ptr %12, align 1, !tbaa !22
  %124 = load i8, ptr %12, align 1, !tbaa !22
  %125 = zext i8 %124 to i32
  %126 = load ptr, ptr %10, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.nifti_image, ptr %126, i32 0, i32 63
  store i32 %125, ptr %127, align 8, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  br label %128

128:                                              ; preds = %121, %117
  %129 = load i32, ptr %6, align 4, !tbaa !21
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %138

131:                                              ; preds = %128
  %132 = load i32, ptr @g_opts, align 4, !tbaa !24
  %133 = icmp sgt i32 %132, 3
  br i1 %133, label %134, label %136

134:                                              ; preds = %131
  %135 = call i32 @disp_nifti_1_header(ptr noundef @.str.156, ptr noundef %0)
  br label %136

136:                                              ; preds = %134, %131
  %137 = load i32, ptr %8, align 4, !tbaa !21
  call void @swap_nifti_header(ptr noundef %0, i32 noundef %137)
  br label %138

138:                                              ; preds = %136, %128
  %139 = load i32, ptr @g_opts, align 4, !tbaa !24
  %140 = icmp sgt i32 %139, 2
  br i1 %140, label %141, label %143

141:                                              ; preds = %138
  %142 = call i32 @disp_nifti_1_header(ptr noundef @.str.157, ptr noundef %0)
  br label %143

143:                                              ; preds = %141, %138
  %144 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 12
  %145 = load i16, ptr %144, align 2, !tbaa !26
  %146 = sext i16 %145 to i32
  %147 = icmp eq i32 %146, 1
  br i1 %147, label %153, label %148

148:                                              ; preds = %143
  %149 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 12
  %150 = load i16, ptr %149, align 2, !tbaa !26
  %151 = sext i16 %150 to i32
  %152 = icmp eq i32 %151, 0
  br i1 %152, label %153, label %164

153:                                              ; preds = %148, %143
  br label %154

154:                                              ; preds = %153
  %155 = load ptr, ptr @stderr, align 8, !tbaa !5
  %156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %155, ptr noundef @.str.152, ptr noundef @.str.158) #6
  %157 = load ptr, ptr %10, align 8, !tbaa !5
  %158 = icmp ne ptr %157, null
  br i1 %158, label %159, label %161

159:                                              ; preds = %154
  %160 = load ptr, ptr %10, align 8, !tbaa !5
  call void @free(ptr noundef %160) #6
  br label %161

161:                                              ; preds = %159, %154
  store ptr null, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1112

162:                                              ; No predecessors!
  br label %163

163:                                              ; preds = %162
  br label %164

164:                                              ; preds = %163, %148
  %165 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %166 = getelementptr inbounds [8 x i16], ptr %165, i64 0, i64 1
  %167 = load i16, ptr %166, align 2, !tbaa !17
  %168 = sext i16 %167 to i32
  %169 = icmp sle i32 %168, 0
  br i1 %169, label %170, label %181

170:                                              ; preds = %164
  br label %171

171:                                              ; preds = %170
  %172 = load ptr, ptr @stderr, align 8, !tbaa !5
  %173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %172, ptr noundef @.str.152, ptr noundef @.str.159) #6
  %174 = load ptr, ptr %10, align 8, !tbaa !5
  %175 = icmp ne ptr %174, null
  br i1 %175, label %176, label %178

176:                                              ; preds = %171
  %177 = load ptr, ptr %10, align 8, !tbaa !5
  call void @free(ptr noundef %177) #6
  br label %178

178:                                              ; preds = %176, %171
  store ptr null, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1112

179:                                              ; No predecessors!
  br label %180

180:                                              ; preds = %179
  br label %181

181:                                              ; preds = %180, %164
  store i32 2, ptr %5, align 4, !tbaa !21
  br label %182

182:                                              ; preds = %203, %181
  %183 = load i32, ptr %5, align 4, !tbaa !21
  %184 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %185 = getelementptr inbounds [8 x i16], ptr %184, i64 0, i64 0
  %186 = load i16, ptr %185, align 8, !tbaa !17
  %187 = sext i16 %186 to i32
  %188 = icmp sle i32 %183, %187
  br i1 %188, label %189, label %206

189:                                              ; preds = %182
  %190 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %191 = load i32, ptr %5, align 4, !tbaa !21
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds [8 x i16], ptr %190, i64 0, i64 %192
  %194 = load i16, ptr %193, align 2, !tbaa !17
  %195 = sext i16 %194 to i32
  %196 = icmp sle i32 %195, 0
  br i1 %196, label %197, label %202

197:                                              ; preds = %189
  %198 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %199 = load i32, ptr %5, align 4, !tbaa !21
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds [8 x i16], ptr %198, i64 0, i64 %200
  store i16 1, ptr %201, align 2, !tbaa !17
  br label %202

202:                                              ; preds = %197, %189
  br label %203

203:                                              ; preds = %202
  %204 = load i32, ptr %5, align 4, !tbaa !21
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %5, align 4, !tbaa !21
  br label %182, !llvm.loop !27

206:                                              ; preds = %182
  %207 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %208 = getelementptr inbounds [8 x i16], ptr %207, i64 0, i64 0
  %209 = load i16, ptr %208, align 8, !tbaa !17
  %210 = sext i16 %209 to i32
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %5, align 4, !tbaa !21
  br label %212

212:                                              ; preds = %237, %206
  %213 = load i32, ptr %5, align 4, !tbaa !21
  %214 = icmp sle i32 %213, 7
  br i1 %214, label %215, label %240

215:                                              ; preds = %212
  %216 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %217 = load i32, ptr %5, align 4, !tbaa !21
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds [8 x i16], ptr %216, i64 0, i64 %218
  %220 = load i16, ptr %219, align 2, !tbaa !17
  %221 = sext i16 %220 to i32
  %222 = icmp ne i32 %221, 1
  br i1 %222, label %223, label %236

223:                                              ; preds = %215
  %224 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %225 = load i32, ptr %5, align 4, !tbaa !21
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds [8 x i16], ptr %224, i64 0, i64 %226
  %228 = load i16, ptr %227, align 2, !tbaa !17
  %229 = sext i16 %228 to i32
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %231, label %236

231:                                              ; preds = %223
  %232 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %233 = load i32, ptr %5, align 4, !tbaa !21
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [8 x i16], ptr %232, i64 0, i64 %234
  store i16 1, ptr %235, align 2, !tbaa !17
  br label %236

236:                                              ; preds = %231, %223, %215
  br label %237

237:                                              ; preds = %236
  %238 = load i32, ptr %5, align 4, !tbaa !21
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %5, align 4, !tbaa !21
  br label %212, !llvm.loop !29

240:                                              ; preds = %212
  store i32 1, ptr %5, align 4, !tbaa !21
  br label %241

241:                                              ; preds = %269, %240
  %242 = load i32, ptr %5, align 4, !tbaa !21
  %243 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %244 = getelementptr inbounds [8 x i16], ptr %243, i64 0, i64 0
  %245 = load i16, ptr %244, align 8, !tbaa !17
  %246 = sext i16 %245 to i32
  %247 = icmp sle i32 %242, %246
  br i1 %247, label %248, label %272

248:                                              ; preds = %241
  %249 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %250 = load i32, ptr %5, align 4, !tbaa !21
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds [8 x float], ptr %249, i64 0, i64 %251
  %253 = load float, ptr %252, align 4, !tbaa !30
  %254 = fpext float %253 to double
  %255 = fcmp oeq double %254, 0.000000e+00
  br i1 %255, label %263, label %256

256:                                              ; preds = %248
  %257 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %258 = load i32, ptr %5, align 4, !tbaa !21
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds [8 x float], ptr %257, i64 0, i64 %259
  %261 = load float, ptr %260, align 4, !tbaa !30
  %262 = call i1 @llvm.is.fpclass.f32(float %261, i32 504)
  br i1 %262, label %268, label %263

263:                                              ; preds = %256, %248
  %264 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %265 = load i32, ptr %5, align 4, !tbaa !21
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds [8 x float], ptr %264, i64 0, i64 %266
  store float 1.000000e+00, ptr %267, align 4, !tbaa !30
  br label %268

268:                                              ; preds = %263, %256
  br label %269

269:                                              ; preds = %268
  %270 = load i32, ptr %5, align 4, !tbaa !21
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %5, align 4, !tbaa !21
  br label %241, !llvm.loop !31

272:                                              ; preds = %241
  %273 = load i32, ptr %8, align 4, !tbaa !21
  %274 = icmp ne i32 %273, 0
  br i1 %274, label %275, label %281

275:                                              ; preds = %272
  %276 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %277 = getelementptr inbounds [4 x i8], ptr %276, i64 0, i64 1
  %278 = load i8, ptr %277, align 1, !tbaa !22
  %279 = sext i8 %278 to i32
  %280 = icmp eq i32 %279, 43
  br label %281

281:                                              ; preds = %275, %272
  %282 = phi i1 [ false, %272 ], [ %280, %275 ]
  %283 = zext i1 %282 to i32
  store i32 %283, ptr %9, align 4, !tbaa !21
  %284 = load i32, ptr %8, align 4, !tbaa !21
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %286, label %293

286:                                              ; preds = %281
  %287 = load i32, ptr %9, align 4, !tbaa !21
  %288 = icmp ne i32 %287, 0
  %289 = zext i1 %288 to i64
  %290 = select i1 %288, i32 1, i32 2
  %291 = load ptr, ptr %10, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.nifti_image, ptr %291, i32 0, i32 47
  store i32 %290, ptr %292, align 8, !tbaa !32
  br label %296

293:                                              ; preds = %281
  %294 = load ptr, ptr %10, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.nifti_image, ptr %294, i32 0, i32 47
  store i32 0, ptr %295, align 8, !tbaa !32
  br label %296

296:                                              ; preds = %293, %286
  %297 = call i32 @nifti_short_order()
  store i32 %297, ptr %5, align 4, !tbaa !21
  %298 = load i32, ptr %6, align 4, !tbaa !21
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %305

300:                                              ; preds = %296
  %301 = load i32, ptr %5, align 4, !tbaa !21
  %302 = sub nsw i32 3, %301
  %303 = load ptr, ptr %10, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.nifti_image, ptr %303, i32 0, i32 59
  store i32 %302, ptr %304, align 8, !tbaa !33
  br label %309

305:                                              ; preds = %296
  %306 = load i32, ptr %5, align 4, !tbaa !21
  %307 = load ptr, ptr %10, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.nifti_image, ptr %307, i32 0, i32 59
  store i32 %306, ptr %308, align 8, !tbaa !33
  br label %309

309:                                              ; preds = %305, %300
  %310 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %311 = getelementptr inbounds [8 x i16], ptr %310, i64 0, i64 0
  %312 = load i16, ptr %311, align 8, !tbaa !17
  %313 = sext i16 %312 to i32
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.nifti_image, ptr %314, i32 0, i32 8
  %316 = getelementptr inbounds [8 x i32], ptr %315, i64 0, i64 0
  store i32 %313, ptr %316, align 8, !tbaa !21
  %317 = load ptr, ptr %10, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.nifti_image, ptr %317, i32 0, i32 0
  store i32 %313, ptr %318, align 8, !tbaa !34
  %319 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %320 = getelementptr inbounds [8 x i16], ptr %319, i64 0, i64 1
  %321 = load i16, ptr %320, align 2, !tbaa !17
  %322 = sext i16 %321 to i32
  %323 = load ptr, ptr %10, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.nifti_image, ptr %323, i32 0, i32 8
  %325 = getelementptr inbounds [8 x i32], ptr %324, i64 0, i64 1
  store i32 %322, ptr %325, align 4, !tbaa !21
  %326 = load ptr, ptr %10, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.nifti_image, ptr %326, i32 0, i32 1
  store i32 %322, ptr %327, align 4, !tbaa !35
  %328 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %329 = getelementptr inbounds [8 x i16], ptr %328, i64 0, i64 2
  %330 = load i16, ptr %329, align 4, !tbaa !17
  %331 = sext i16 %330 to i32
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.nifti_image, ptr %332, i32 0, i32 8
  %334 = getelementptr inbounds [8 x i32], ptr %333, i64 0, i64 2
  store i32 %331, ptr %334, align 8, !tbaa !21
  %335 = load ptr, ptr %10, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.nifti_image, ptr %335, i32 0, i32 2
  store i32 %331, ptr %336, align 8, !tbaa !36
  %337 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %338 = getelementptr inbounds [8 x i16], ptr %337, i64 0, i64 3
  %339 = load i16, ptr %338, align 2, !tbaa !17
  %340 = sext i16 %339 to i32
  %341 = load ptr, ptr %10, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.nifti_image, ptr %341, i32 0, i32 8
  %343 = getelementptr inbounds [8 x i32], ptr %342, i64 0, i64 3
  store i32 %340, ptr %343, align 4, !tbaa !21
  %344 = load ptr, ptr %10, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.nifti_image, ptr %344, i32 0, i32 3
  store i32 %340, ptr %345, align 4, !tbaa !37
  %346 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %347 = getelementptr inbounds [8 x i16], ptr %346, i64 0, i64 4
  %348 = load i16, ptr %347, align 8, !tbaa !17
  %349 = sext i16 %348 to i32
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.nifti_image, ptr %350, i32 0, i32 8
  %352 = getelementptr inbounds [8 x i32], ptr %351, i64 0, i64 4
  store i32 %349, ptr %352, align 8, !tbaa !21
  %353 = load ptr, ptr %10, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.nifti_image, ptr %353, i32 0, i32 4
  store i32 %349, ptr %354, align 8, !tbaa !38
  %355 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %356 = getelementptr inbounds [8 x i16], ptr %355, i64 0, i64 5
  %357 = load i16, ptr %356, align 2, !tbaa !17
  %358 = sext i16 %357 to i32
  %359 = load ptr, ptr %10, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.nifti_image, ptr %359, i32 0, i32 8
  %361 = getelementptr inbounds [8 x i32], ptr %360, i64 0, i64 5
  store i32 %358, ptr %361, align 4, !tbaa !21
  %362 = load ptr, ptr %10, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.nifti_image, ptr %362, i32 0, i32 5
  store i32 %358, ptr %363, align 4, !tbaa !39
  %364 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %365 = getelementptr inbounds [8 x i16], ptr %364, i64 0, i64 6
  %366 = load i16, ptr %365, align 4, !tbaa !17
  %367 = sext i16 %366 to i32
  %368 = load ptr, ptr %10, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.nifti_image, ptr %368, i32 0, i32 8
  %370 = getelementptr inbounds [8 x i32], ptr %369, i64 0, i64 6
  store i32 %367, ptr %370, align 8, !tbaa !21
  %371 = load ptr, ptr %10, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.nifti_image, ptr %371, i32 0, i32 6
  store i32 %367, ptr %372, align 8, !tbaa !40
  %373 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %374 = getelementptr inbounds [8 x i16], ptr %373, i64 0, i64 7
  %375 = load i16, ptr %374, align 2, !tbaa !17
  %376 = sext i16 %375 to i32
  %377 = load ptr, ptr %10, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.nifti_image, ptr %377, i32 0, i32 8
  %379 = getelementptr inbounds [8 x i32], ptr %378, i64 0, i64 7
  store i32 %376, ptr %379, align 4, !tbaa !21
  %380 = load ptr, ptr %10, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.nifti_image, ptr %380, i32 0, i32 7
  store i32 %376, ptr %381, align 4, !tbaa !41
  store i32 1, ptr %5, align 4, !tbaa !21
  %382 = load ptr, ptr %10, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.nifti_image, ptr %382, i32 0, i32 9
  store i64 1, ptr %383, align 8, !tbaa !42
  br label %384

384:                                              ; preds = %402, %309
  %385 = load i32, ptr %5, align 4, !tbaa !21
  %386 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %387 = getelementptr inbounds [8 x i16], ptr %386, i64 0, i64 0
  %388 = load i16, ptr %387, align 8, !tbaa !17
  %389 = sext i16 %388 to i32
  %390 = icmp sle i32 %385, %389
  br i1 %390, label %391, label %405

391:                                              ; preds = %384
  %392 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 7
  %393 = load i32, ptr %5, align 4, !tbaa !21
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds [8 x i16], ptr %392, i64 0, i64 %394
  %396 = load i16, ptr %395, align 2, !tbaa !17
  %397 = sext i16 %396 to i64
  %398 = load ptr, ptr %10, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.nifti_image, ptr %398, i32 0, i32 9
  %400 = load i64, ptr %399, align 8, !tbaa !42
  %401 = mul i64 %400, %397
  store i64 %401, ptr %399, align 8, !tbaa !42
  br label %402

402:                                              ; preds = %391
  %403 = load i32, ptr %5, align 4, !tbaa !21
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %5, align 4, !tbaa !21
  br label %384, !llvm.loop !43

405:                                              ; preds = %384
  %406 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 12
  %407 = load i16, ptr %406, align 2, !tbaa !26
  %408 = sext i16 %407 to i32
  %409 = load ptr, ptr %10, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.nifti_image, ptr %409, i32 0, i32 11
  store i32 %408, ptr %410, align 4, !tbaa !44
  %411 = load ptr, ptr %10, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.nifti_image, ptr %411, i32 0, i32 11
  %413 = load i32, ptr %412, align 4, !tbaa !44
  %414 = load ptr, ptr %10, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.nifti_image, ptr %414, i32 0, i32 10
  %416 = load ptr, ptr %10, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.nifti_image, ptr %416, i32 0, i32 58
  call void @nifti_datatype_sizes(i32 noundef %413, ptr noundef %415, ptr noundef %417)
  %418 = load ptr, ptr %10, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.nifti_image, ptr %418, i32 0, i32 10
  %420 = load i32, ptr %419, align 8, !tbaa !45
  %421 = icmp eq i32 %420, 0
  br i1 %421, label %422, label %433

422:                                              ; preds = %405
  br label %423

423:                                              ; preds = %422
  %424 = load ptr, ptr @stderr, align 8, !tbaa !5
  %425 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %424, ptr noundef @.str.152, ptr noundef @.str.158) #6
  %426 = load ptr, ptr %10, align 8, !tbaa !5
  %427 = icmp ne ptr %426, null
  br i1 %427, label %428, label %430

428:                                              ; preds = %423
  %429 = load ptr, ptr %10, align 8, !tbaa !5
  call void @free(ptr noundef %429) #6
  br label %430

430:                                              ; preds = %428, %423
  store ptr null, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1112

431:                                              ; No predecessors!
  br label %432

432:                                              ; preds = %431
  br label %433

433:                                              ; preds = %432, %405
  %434 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %435 = getelementptr inbounds [8 x float], ptr %434, i64 0, i64 1
  %436 = load float, ptr %435, align 4, !tbaa !30
  %437 = load ptr, ptr %10, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.nifti_image, ptr %437, i32 0, i32 19
  %439 = getelementptr inbounds [8 x float], ptr %438, i64 0, i64 1
  store float %436, ptr %439, align 4, !tbaa !30
  %440 = load ptr, ptr %10, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.nifti_image, ptr %440, i32 0, i32 12
  store float %436, ptr %441, align 8, !tbaa !46
  %442 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %443 = getelementptr inbounds [8 x float], ptr %442, i64 0, i64 2
  %444 = load float, ptr %443, align 4, !tbaa !30
  %445 = load ptr, ptr %10, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.nifti_image, ptr %445, i32 0, i32 19
  %447 = getelementptr inbounds [8 x float], ptr %446, i64 0, i64 2
  store float %444, ptr %447, align 4, !tbaa !30
  %448 = load ptr, ptr %10, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.nifti_image, ptr %448, i32 0, i32 13
  store float %444, ptr %449, align 4, !tbaa !47
  %450 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %451 = getelementptr inbounds [8 x float], ptr %450, i64 0, i64 3
  %452 = load float, ptr %451, align 4, !tbaa !30
  %453 = load ptr, ptr %10, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.nifti_image, ptr %453, i32 0, i32 19
  %455 = getelementptr inbounds [8 x float], ptr %454, i64 0, i64 3
  store float %452, ptr %455, align 4, !tbaa !30
  %456 = load ptr, ptr %10, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.nifti_image, ptr %456, i32 0, i32 14
  store float %452, ptr %457, align 8, !tbaa !48
  %458 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %459 = getelementptr inbounds [8 x float], ptr %458, i64 0, i64 4
  %460 = load float, ptr %459, align 4, !tbaa !30
  %461 = load ptr, ptr %10, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.nifti_image, ptr %461, i32 0, i32 19
  %463 = getelementptr inbounds [8 x float], ptr %462, i64 0, i64 4
  store float %460, ptr %463, align 4, !tbaa !30
  %464 = load ptr, ptr %10, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.nifti_image, ptr %464, i32 0, i32 15
  store float %460, ptr %465, align 4, !tbaa !49
  %466 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %467 = getelementptr inbounds [8 x float], ptr %466, i64 0, i64 5
  %468 = load float, ptr %467, align 4, !tbaa !30
  %469 = load ptr, ptr %10, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.nifti_image, ptr %469, i32 0, i32 19
  %471 = getelementptr inbounds [8 x float], ptr %470, i64 0, i64 5
  store float %468, ptr %471, align 4, !tbaa !30
  %472 = load ptr, ptr %10, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.nifti_image, ptr %472, i32 0, i32 16
  store float %468, ptr %473, align 8, !tbaa !50
  %474 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %475 = getelementptr inbounds [8 x float], ptr %474, i64 0, i64 6
  %476 = load float, ptr %475, align 4, !tbaa !30
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.nifti_image, ptr %477, i32 0, i32 19
  %479 = getelementptr inbounds [8 x float], ptr %478, i64 0, i64 6
  store float %476, ptr %479, align 4, !tbaa !30
  %480 = load ptr, ptr %10, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.nifti_image, ptr %480, i32 0, i32 17
  store float %476, ptr %481, align 4, !tbaa !51
  %482 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %483 = getelementptr inbounds [8 x float], ptr %482, i64 0, i64 7
  %484 = load float, ptr %483, align 4, !tbaa !30
  %485 = load ptr, ptr %10, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.nifti_image, ptr %485, i32 0, i32 19
  %487 = getelementptr inbounds [8 x float], ptr %486, i64 0, i64 7
  store float %484, ptr %487, align 4, !tbaa !30
  %488 = load ptr, ptr %10, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.nifti_image, ptr %488, i32 0, i32 18
  store float %484, ptr %489, align 8, !tbaa !52
  %490 = load i32, ptr %8, align 4, !tbaa !21
  %491 = icmp ne i32 %490, 0
  br i1 %491, label %492, label %497

492:                                              ; preds = %433
  %493 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 30
  %494 = load i16, ptr %493, align 4, !tbaa !53
  %495 = sext i16 %494 to i32
  %496 = icmp sle i32 %495, 0
  br i1 %496, label %497, label %595

497:                                              ; preds = %492, %433
  %498 = load ptr, ptr %10, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.nifti_image, ptr %498, i32 0, i32 12
  %500 = load float, ptr %499, align 8, !tbaa !46
  %501 = load ptr, ptr %10, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.nifti_image, ptr %501, i32 0, i32 40
  %503 = getelementptr inbounds %struct.mat44, ptr %502, i32 0, i32 0
  %504 = getelementptr inbounds [4 x [4 x float]], ptr %503, i64 0, i64 0
  %505 = getelementptr inbounds [4 x float], ptr %504, i64 0, i64 0
  store float %500, ptr %505, align 4, !tbaa !30
  %506 = load ptr, ptr %10, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.nifti_image, ptr %506, i32 0, i32 13
  %508 = load float, ptr %507, align 4, !tbaa !47
  %509 = load ptr, ptr %10, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.nifti_image, ptr %509, i32 0, i32 40
  %511 = getelementptr inbounds %struct.mat44, ptr %510, i32 0, i32 0
  %512 = getelementptr inbounds [4 x [4 x float]], ptr %511, i64 0, i64 1
  %513 = getelementptr inbounds [4 x float], ptr %512, i64 0, i64 1
  store float %508, ptr %513, align 4, !tbaa !30
  %514 = load ptr, ptr %10, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.nifti_image, ptr %514, i32 0, i32 14
  %516 = load float, ptr %515, align 8, !tbaa !48
  %517 = load ptr, ptr %10, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.nifti_image, ptr %517, i32 0, i32 40
  %519 = getelementptr inbounds %struct.mat44, ptr %518, i32 0, i32 0
  %520 = getelementptr inbounds [4 x [4 x float]], ptr %519, i64 0, i64 2
  %521 = getelementptr inbounds [4 x float], ptr %520, i64 0, i64 2
  store float %516, ptr %521, align 4, !tbaa !30
  %522 = load ptr, ptr %10, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.nifti_image, ptr %522, i32 0, i32 40
  %524 = getelementptr inbounds %struct.mat44, ptr %523, i32 0, i32 0
  %525 = getelementptr inbounds [4 x [4 x float]], ptr %524, i64 0, i64 0
  %526 = getelementptr inbounds [4 x float], ptr %525, i64 0, i64 3
  store float 0.000000e+00, ptr %526, align 4, !tbaa !30
  %527 = load ptr, ptr %10, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.nifti_image, ptr %527, i32 0, i32 40
  %529 = getelementptr inbounds %struct.mat44, ptr %528, i32 0, i32 0
  %530 = getelementptr inbounds [4 x [4 x float]], ptr %529, i64 0, i64 0
  %531 = getelementptr inbounds [4 x float], ptr %530, i64 0, i64 2
  store float 0.000000e+00, ptr %531, align 4, !tbaa !30
  %532 = load ptr, ptr %10, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.nifti_image, ptr %532, i32 0, i32 40
  %534 = getelementptr inbounds %struct.mat44, ptr %533, i32 0, i32 0
  %535 = getelementptr inbounds [4 x [4 x float]], ptr %534, i64 0, i64 0
  %536 = getelementptr inbounds [4 x float], ptr %535, i64 0, i64 1
  store float 0.000000e+00, ptr %536, align 4, !tbaa !30
  %537 = load ptr, ptr %10, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.nifti_image, ptr %537, i32 0, i32 40
  %539 = getelementptr inbounds %struct.mat44, ptr %538, i32 0, i32 0
  %540 = getelementptr inbounds [4 x [4 x float]], ptr %539, i64 0, i64 1
  %541 = getelementptr inbounds [4 x float], ptr %540, i64 0, i64 3
  store float 0.000000e+00, ptr %541, align 4, !tbaa !30
  %542 = load ptr, ptr %10, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.nifti_image, ptr %542, i32 0, i32 40
  %544 = getelementptr inbounds %struct.mat44, ptr %543, i32 0, i32 0
  %545 = getelementptr inbounds [4 x [4 x float]], ptr %544, i64 0, i64 1
  %546 = getelementptr inbounds [4 x float], ptr %545, i64 0, i64 2
  store float 0.000000e+00, ptr %546, align 4, !tbaa !30
  %547 = load ptr, ptr %10, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.nifti_image, ptr %547, i32 0, i32 40
  %549 = getelementptr inbounds %struct.mat44, ptr %548, i32 0, i32 0
  %550 = getelementptr inbounds [4 x [4 x float]], ptr %549, i64 0, i64 1
  %551 = getelementptr inbounds [4 x float], ptr %550, i64 0, i64 0
  store float 0.000000e+00, ptr %551, align 4, !tbaa !30
  %552 = load ptr, ptr %10, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.nifti_image, ptr %552, i32 0, i32 40
  %554 = getelementptr inbounds %struct.mat44, ptr %553, i32 0, i32 0
  %555 = getelementptr inbounds [4 x [4 x float]], ptr %554, i64 0, i64 2
  %556 = getelementptr inbounds [4 x float], ptr %555, i64 0, i64 3
  store float 0.000000e+00, ptr %556, align 4, !tbaa !30
  %557 = load ptr, ptr %10, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.nifti_image, ptr %557, i32 0, i32 40
  %559 = getelementptr inbounds %struct.mat44, ptr %558, i32 0, i32 0
  %560 = getelementptr inbounds [4 x [4 x float]], ptr %559, i64 0, i64 2
  %561 = getelementptr inbounds [4 x float], ptr %560, i64 0, i64 1
  store float 0.000000e+00, ptr %561, align 4, !tbaa !30
  %562 = load ptr, ptr %10, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.nifti_image, ptr %562, i32 0, i32 40
  %564 = getelementptr inbounds %struct.mat44, ptr %563, i32 0, i32 0
  %565 = getelementptr inbounds [4 x [4 x float]], ptr %564, i64 0, i64 2
  %566 = getelementptr inbounds [4 x float], ptr %565, i64 0, i64 0
  store float 0.000000e+00, ptr %566, align 4, !tbaa !30
  %567 = load ptr, ptr %10, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.nifti_image, ptr %567, i32 0, i32 40
  %569 = getelementptr inbounds %struct.mat44, ptr %568, i32 0, i32 0
  %570 = getelementptr inbounds [4 x [4 x float]], ptr %569, i64 0, i64 3
  %571 = getelementptr inbounds [4 x float], ptr %570, i64 0, i64 2
  store float 0.000000e+00, ptr %571, align 4, !tbaa !30
  %572 = load ptr, ptr %10, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.nifti_image, ptr %572, i32 0, i32 40
  %574 = getelementptr inbounds %struct.mat44, ptr %573, i32 0, i32 0
  %575 = getelementptr inbounds [4 x [4 x float]], ptr %574, i64 0, i64 3
  %576 = getelementptr inbounds [4 x float], ptr %575, i64 0, i64 1
  store float 0.000000e+00, ptr %576, align 4, !tbaa !30
  %577 = load ptr, ptr %10, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.nifti_image, ptr %577, i32 0, i32 40
  %579 = getelementptr inbounds %struct.mat44, ptr %578, i32 0, i32 0
  %580 = getelementptr inbounds [4 x [4 x float]], ptr %579, i64 0, i64 3
  %581 = getelementptr inbounds [4 x float], ptr %580, i64 0, i64 0
  store float 0.000000e+00, ptr %581, align 4, !tbaa !30
  %582 = load ptr, ptr %10, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.nifti_image, ptr %582, i32 0, i32 40
  %584 = getelementptr inbounds %struct.mat44, ptr %583, i32 0, i32 0
  %585 = getelementptr inbounds [4 x [4 x float]], ptr %584, i64 0, i64 3
  %586 = getelementptr inbounds [4 x float], ptr %585, i64 0, i64 3
  store float 1.000000e+00, ptr %586, align 4, !tbaa !30
  %587 = load ptr, ptr %10, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.nifti_image, ptr %587, i32 0, i32 24
  store i32 0, ptr %588, align 4, !tbaa !54
  %589 = load i32, ptr @g_opts, align 4, !tbaa !24
  %590 = icmp sgt i32 %589, 1
  br i1 %590, label %591, label %594

591:                                              ; preds = %497
  %592 = load ptr, ptr @stderr, align 8, !tbaa !5
  %593 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %592, ptr noundef @.str.160) #6
  br label %594

594:                                              ; preds = %591, %497
  br label %716

595:                                              ; preds = %492
  %596 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 32
  %597 = load float, ptr %596, align 8, !tbaa !55
  %598 = call i1 @llvm.is.fpclass.f32(float %597, i32 504)
  br i1 %598, label %599, label %602

599:                                              ; preds = %595
  %600 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 32
  %601 = load float, ptr %600, align 8, !tbaa !55
  br label %603

602:                                              ; preds = %595
  br label %603

603:                                              ; preds = %602, %599
  %604 = phi float [ %601, %599 ], [ 0.000000e+00, %602 ]
  %605 = load ptr, ptr %10, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.nifti_image, ptr %605, i32 0, i32 33
  store float %604, ptr %606, align 8, !tbaa !56
  %607 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 33
  %608 = load float, ptr %607, align 4, !tbaa !57
  %609 = call i1 @llvm.is.fpclass.f32(float %608, i32 504)
  br i1 %609, label %610, label %613

610:                                              ; preds = %603
  %611 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 33
  %612 = load float, ptr %611, align 4, !tbaa !57
  br label %614

613:                                              ; preds = %603
  br label %614

614:                                              ; preds = %613, %610
  %615 = phi float [ %612, %610 ], [ 0.000000e+00, %613 ]
  %616 = load ptr, ptr %10, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.nifti_image, ptr %616, i32 0, i32 34
  store float %615, ptr %617, align 4, !tbaa !58
  %618 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 34
  %619 = load float, ptr %618, align 8, !tbaa !59
  %620 = call i1 @llvm.is.fpclass.f32(float %619, i32 504)
  br i1 %620, label %621, label %624

621:                                              ; preds = %614
  %622 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 34
  %623 = load float, ptr %622, align 8, !tbaa !59
  br label %625

624:                                              ; preds = %614
  br label %625

625:                                              ; preds = %624, %621
  %626 = phi float [ %623, %621 ], [ 0.000000e+00, %624 ]
  %627 = load ptr, ptr %10, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.nifti_image, ptr %627, i32 0, i32 35
  store float %626, ptr %628, align 8, !tbaa !60
  %629 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 35
  %630 = load float, ptr %629, align 4, !tbaa !61
  %631 = call i1 @llvm.is.fpclass.f32(float %630, i32 504)
  br i1 %631, label %632, label %635

632:                                              ; preds = %625
  %633 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 35
  %634 = load float, ptr %633, align 4, !tbaa !61
  br label %636

635:                                              ; preds = %625
  br label %636

636:                                              ; preds = %635, %632
  %637 = phi float [ %634, %632 ], [ 0.000000e+00, %635 ]
  %638 = load ptr, ptr %10, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.nifti_image, ptr %638, i32 0, i32 36
  store float %637, ptr %639, align 4, !tbaa !62
  %640 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 36
  %641 = load float, ptr %640, align 8, !tbaa !63
  %642 = call i1 @llvm.is.fpclass.f32(float %641, i32 504)
  br i1 %642, label %643, label %646

643:                                              ; preds = %636
  %644 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 36
  %645 = load float, ptr %644, align 8, !tbaa !63
  br label %647

646:                                              ; preds = %636
  br label %647

647:                                              ; preds = %646, %643
  %648 = phi float [ %645, %643 ], [ 0.000000e+00, %646 ]
  %649 = load ptr, ptr %10, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.nifti_image, ptr %649, i32 0, i32 37
  store float %648, ptr %650, align 8, !tbaa !64
  %651 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 37
  %652 = load float, ptr %651, align 4, !tbaa !65
  %653 = call i1 @llvm.is.fpclass.f32(float %652, i32 504)
  br i1 %653, label %654, label %657

654:                                              ; preds = %647
  %655 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 37
  %656 = load float, ptr %655, align 4, !tbaa !65
  br label %658

657:                                              ; preds = %647
  br label %658

658:                                              ; preds = %657, %654
  %659 = phi float [ %656, %654 ], [ 0.000000e+00, %657 ]
  %660 = load ptr, ptr %10, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.nifti_image, ptr %660, i32 0, i32 38
  store float %659, ptr %661, align 4, !tbaa !66
  %662 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 15
  %663 = getelementptr inbounds [8 x float], ptr %662, i64 0, i64 0
  %664 = load float, ptr %663, align 4, !tbaa !30
  %665 = fpext float %664 to double
  %666 = fcmp olt double %665, 0.000000e+00
  %667 = zext i1 %666 to i64
  %668 = select i1 %666, double -1.000000e+00, double 1.000000e+00
  %669 = fptrunc double %668 to float
  %670 = load ptr, ptr %10, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.nifti_image, ptr %670, i32 0, i32 39
  store float %669, ptr %671, align 8, !tbaa !67
  %672 = load ptr, ptr %10, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.nifti_image, ptr %672, i32 0, i32 40
  call void @llvm.lifetime.start.p0(i64 64, ptr %13) #6
  %674 = load ptr, ptr %10, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.nifti_image, ptr %674, i32 0, i32 33
  %676 = load float, ptr %675, align 8, !tbaa !56
  %677 = load ptr, ptr %10, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.nifti_image, ptr %677, i32 0, i32 34
  %679 = load float, ptr %678, align 4, !tbaa !58
  %680 = load ptr, ptr %10, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.nifti_image, ptr %680, i32 0, i32 35
  %682 = load float, ptr %681, align 8, !tbaa !60
  %683 = load ptr, ptr %10, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.nifti_image, ptr %683, i32 0, i32 36
  %685 = load float, ptr %684, align 4, !tbaa !62
  %686 = load ptr, ptr %10, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.nifti_image, ptr %686, i32 0, i32 37
  %688 = load float, ptr %687, align 8, !tbaa !64
  %689 = load ptr, ptr %10, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.nifti_image, ptr %689, i32 0, i32 38
  %691 = load float, ptr %690, align 4, !tbaa !66
  %692 = load ptr, ptr %10, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.nifti_image, ptr %692, i32 0, i32 12
  %694 = load float, ptr %693, align 8, !tbaa !46
  %695 = load ptr, ptr %10, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.nifti_image, ptr %695, i32 0, i32 13
  %697 = load float, ptr %696, align 4, !tbaa !47
  %698 = load ptr, ptr %10, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.nifti_image, ptr %698, i32 0, i32 14
  %700 = load float, ptr %699, align 8, !tbaa !48
  %701 = load ptr, ptr %10, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.nifti_image, ptr %701, i32 0, i32 39
  %703 = load float, ptr %702, align 8, !tbaa !67
  call void @nifti_quatern_to_mat44(ptr dead_on_unwind writable sret(%struct.mat44) align 4 %13, float noundef %676, float noundef %679, float noundef %682, float noundef %685, float noundef %688, float noundef %691, float noundef %694, float noundef %697, float noundef %700, float noundef %703)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %673, ptr align 4 %13, i64 64, i1 false), !tbaa.struct !68
  call void @llvm.lifetime.end.p0(i64 64, ptr %13) #6
  %704 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 30
  %705 = load i16, ptr %704, align 4, !tbaa !53
  %706 = sext i16 %705 to i32
  %707 = load ptr, ptr %10, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.nifti_image, ptr %707, i32 0, i32 24
  store i32 %706, ptr %708, align 4, !tbaa !54
  %709 = load i32, ptr @g_opts, align 4, !tbaa !24
  %710 = icmp sgt i32 %709, 1
  br i1 %710, label %711, label %715

711:                                              ; preds = %658
  %712 = load ptr, ptr %10, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.nifti_image, ptr %712, i32 0, i32 40
  call void @llvm.lifetime.start.p0(i64 64, ptr %14) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %14, ptr align 4 %713, i64 64, i1 false), !tbaa.struct !68
  %714 = call i32 @nifti_disp_matrix_orient(ptr noundef @.str.161, ptr noundef byval(%struct.mat44) align 8 %14)
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #6
  br label %715

715:                                              ; preds = %711, %658
  br label %716

716:                                              ; preds = %715, %594
  %717 = load ptr, ptr %10, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.nifti_image, ptr %717, i32 0, i32 41
  call void @llvm.lifetime.start.p0(i64 64, ptr %15) #6
  %719 = load ptr, ptr %10, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.nifti_image, ptr %719, i32 0, i32 40
  call void @llvm.lifetime.start.p0(i64 64, ptr %16) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %16, ptr align 4 %720, i64 64, i1 false), !tbaa.struct !68
  call void @nifti_mat44_inverse(ptr dead_on_unwind writable sret(%struct.mat44) align 4 %15, ptr noundef byval(%struct.mat44) align 8 %16)
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %718, ptr align 4 %15, i64 64, i1 false), !tbaa.struct !68
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #6
  %721 = load i32, ptr %8, align 4, !tbaa !21
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %723, label %728

723:                                              ; preds = %716
  %724 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 31
  %725 = load i16, ptr %724, align 2, !tbaa !69
  %726 = sext i16 %725 to i32
  %727 = icmp sle i32 %726, 0
  br i1 %727, label %728, label %737

728:                                              ; preds = %723, %716
  %729 = load ptr, ptr %10, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.nifti_image, ptr %729, i32 0, i32 25
  store i32 0, ptr %730, align 8, !tbaa !70
  %731 = load i32, ptr @g_opts, align 4, !tbaa !24
  %732 = icmp sgt i32 %731, 1
  br i1 %732, label %733, label %736

733:                                              ; preds = %728
  %734 = load ptr, ptr @stderr, align 8, !tbaa !5
  %735 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %734, ptr noundef @.str.162) #6
  br label %736

736:                                              ; preds = %733, %728
  br label %870

737:                                              ; preds = %723
  %738 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 38
  %739 = getelementptr inbounds [4 x float], ptr %738, i64 0, i64 0
  %740 = load float, ptr %739, align 8, !tbaa !30
  %741 = load ptr, ptr %10, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.nifti_image, ptr %741, i32 0, i32 42
  %743 = getelementptr inbounds %struct.mat44, ptr %742, i32 0, i32 0
  %744 = getelementptr inbounds [4 x [4 x float]], ptr %743, i64 0, i64 0
  %745 = getelementptr inbounds [4 x float], ptr %744, i64 0, i64 0
  store float %740, ptr %745, align 4, !tbaa !30
  %746 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 38
  %747 = getelementptr inbounds [4 x float], ptr %746, i64 0, i64 1
  %748 = load float, ptr %747, align 4, !tbaa !30
  %749 = load ptr, ptr %10, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.nifti_image, ptr %749, i32 0, i32 42
  %751 = getelementptr inbounds %struct.mat44, ptr %750, i32 0, i32 0
  %752 = getelementptr inbounds [4 x [4 x float]], ptr %751, i64 0, i64 0
  %753 = getelementptr inbounds [4 x float], ptr %752, i64 0, i64 1
  store float %748, ptr %753, align 4, !tbaa !30
  %754 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 38
  %755 = getelementptr inbounds [4 x float], ptr %754, i64 0, i64 2
  %756 = load float, ptr %755, align 8, !tbaa !30
  %757 = load ptr, ptr %10, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.nifti_image, ptr %757, i32 0, i32 42
  %759 = getelementptr inbounds %struct.mat44, ptr %758, i32 0, i32 0
  %760 = getelementptr inbounds [4 x [4 x float]], ptr %759, i64 0, i64 0
  %761 = getelementptr inbounds [4 x float], ptr %760, i64 0, i64 2
  store float %756, ptr %761, align 4, !tbaa !30
  %762 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 38
  %763 = getelementptr inbounds [4 x float], ptr %762, i64 0, i64 3
  %764 = load float, ptr %763, align 4, !tbaa !30
  %765 = load ptr, ptr %10, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.nifti_image, ptr %765, i32 0, i32 42
  %767 = getelementptr inbounds %struct.mat44, ptr %766, i32 0, i32 0
  %768 = getelementptr inbounds [4 x [4 x float]], ptr %767, i64 0, i64 0
  %769 = getelementptr inbounds [4 x float], ptr %768, i64 0, i64 3
  store float %764, ptr %769, align 4, !tbaa !30
  %770 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 39
  %771 = getelementptr inbounds [4 x float], ptr %770, i64 0, i64 0
  %772 = load float, ptr %771, align 8, !tbaa !30
  %773 = load ptr, ptr %10, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.nifti_image, ptr %773, i32 0, i32 42
  %775 = getelementptr inbounds %struct.mat44, ptr %774, i32 0, i32 0
  %776 = getelementptr inbounds [4 x [4 x float]], ptr %775, i64 0, i64 1
  %777 = getelementptr inbounds [4 x float], ptr %776, i64 0, i64 0
  store float %772, ptr %777, align 4, !tbaa !30
  %778 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 39
  %779 = getelementptr inbounds [4 x float], ptr %778, i64 0, i64 1
  %780 = load float, ptr %779, align 4, !tbaa !30
  %781 = load ptr, ptr %10, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.nifti_image, ptr %781, i32 0, i32 42
  %783 = getelementptr inbounds %struct.mat44, ptr %782, i32 0, i32 0
  %784 = getelementptr inbounds [4 x [4 x float]], ptr %783, i64 0, i64 1
  %785 = getelementptr inbounds [4 x float], ptr %784, i64 0, i64 1
  store float %780, ptr %785, align 4, !tbaa !30
  %786 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 39
  %787 = getelementptr inbounds [4 x float], ptr %786, i64 0, i64 2
  %788 = load float, ptr %787, align 8, !tbaa !30
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.nifti_image, ptr %789, i32 0, i32 42
  %791 = getelementptr inbounds %struct.mat44, ptr %790, i32 0, i32 0
  %792 = getelementptr inbounds [4 x [4 x float]], ptr %791, i64 0, i64 1
  %793 = getelementptr inbounds [4 x float], ptr %792, i64 0, i64 2
  store float %788, ptr %793, align 4, !tbaa !30
  %794 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 39
  %795 = getelementptr inbounds [4 x float], ptr %794, i64 0, i64 3
  %796 = load float, ptr %795, align 4, !tbaa !30
  %797 = load ptr, ptr %10, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.nifti_image, ptr %797, i32 0, i32 42
  %799 = getelementptr inbounds %struct.mat44, ptr %798, i32 0, i32 0
  %800 = getelementptr inbounds [4 x [4 x float]], ptr %799, i64 0, i64 1
  %801 = getelementptr inbounds [4 x float], ptr %800, i64 0, i64 3
  store float %796, ptr %801, align 4, !tbaa !30
  %802 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 40
  %803 = getelementptr inbounds [4 x float], ptr %802, i64 0, i64 0
  %804 = load float, ptr %803, align 8, !tbaa !30
  %805 = load ptr, ptr %10, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.nifti_image, ptr %805, i32 0, i32 42
  %807 = getelementptr inbounds %struct.mat44, ptr %806, i32 0, i32 0
  %808 = getelementptr inbounds [4 x [4 x float]], ptr %807, i64 0, i64 2
  %809 = getelementptr inbounds [4 x float], ptr %808, i64 0, i64 0
  store float %804, ptr %809, align 4, !tbaa !30
  %810 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 40
  %811 = getelementptr inbounds [4 x float], ptr %810, i64 0, i64 1
  %812 = load float, ptr %811, align 4, !tbaa !30
  %813 = load ptr, ptr %10, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.nifti_image, ptr %813, i32 0, i32 42
  %815 = getelementptr inbounds %struct.mat44, ptr %814, i32 0, i32 0
  %816 = getelementptr inbounds [4 x [4 x float]], ptr %815, i64 0, i64 2
  %817 = getelementptr inbounds [4 x float], ptr %816, i64 0, i64 1
  store float %812, ptr %817, align 4, !tbaa !30
  %818 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 40
  %819 = getelementptr inbounds [4 x float], ptr %818, i64 0, i64 2
  %820 = load float, ptr %819, align 8, !tbaa !30
  %821 = load ptr, ptr %10, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.nifti_image, ptr %821, i32 0, i32 42
  %823 = getelementptr inbounds %struct.mat44, ptr %822, i32 0, i32 0
  %824 = getelementptr inbounds [4 x [4 x float]], ptr %823, i64 0, i64 2
  %825 = getelementptr inbounds [4 x float], ptr %824, i64 0, i64 2
  store float %820, ptr %825, align 4, !tbaa !30
  %826 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 40
  %827 = getelementptr inbounds [4 x float], ptr %826, i64 0, i64 3
  %828 = load float, ptr %827, align 4, !tbaa !30
  %829 = load ptr, ptr %10, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.nifti_image, ptr %829, i32 0, i32 42
  %831 = getelementptr inbounds %struct.mat44, ptr %830, i32 0, i32 0
  %832 = getelementptr inbounds [4 x [4 x float]], ptr %831, i64 0, i64 2
  %833 = getelementptr inbounds [4 x float], ptr %832, i64 0, i64 3
  store float %828, ptr %833, align 4, !tbaa !30
  %834 = load ptr, ptr %10, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.nifti_image, ptr %834, i32 0, i32 42
  %836 = getelementptr inbounds %struct.mat44, ptr %835, i32 0, i32 0
  %837 = getelementptr inbounds [4 x [4 x float]], ptr %836, i64 0, i64 3
  %838 = getelementptr inbounds [4 x float], ptr %837, i64 0, i64 2
  store float 0.000000e+00, ptr %838, align 4, !tbaa !30
  %839 = load ptr, ptr %10, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.nifti_image, ptr %839, i32 0, i32 42
  %841 = getelementptr inbounds %struct.mat44, ptr %840, i32 0, i32 0
  %842 = getelementptr inbounds [4 x [4 x float]], ptr %841, i64 0, i64 3
  %843 = getelementptr inbounds [4 x float], ptr %842, i64 0, i64 1
  store float 0.000000e+00, ptr %843, align 4, !tbaa !30
  %844 = load ptr, ptr %10, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.nifti_image, ptr %844, i32 0, i32 42
  %846 = getelementptr inbounds %struct.mat44, ptr %845, i32 0, i32 0
  %847 = getelementptr inbounds [4 x [4 x float]], ptr %846, i64 0, i64 3
  %848 = getelementptr inbounds [4 x float], ptr %847, i64 0, i64 0
  store float 0.000000e+00, ptr %848, align 4, !tbaa !30
  %849 = load ptr, ptr %10, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.nifti_image, ptr %849, i32 0, i32 42
  %851 = getelementptr inbounds %struct.mat44, ptr %850, i32 0, i32 0
  %852 = getelementptr inbounds [4 x [4 x float]], ptr %851, i64 0, i64 3
  %853 = getelementptr inbounds [4 x float], ptr %852, i64 0, i64 3
  store float 1.000000e+00, ptr %853, align 4, !tbaa !30
  %854 = load ptr, ptr %10, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.nifti_image, ptr %854, i32 0, i32 43
  call void @llvm.lifetime.start.p0(i64 64, ptr %17) #6
  %856 = load ptr, ptr %10, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.nifti_image, ptr %856, i32 0, i32 42
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 4 %857, i64 64, i1 false), !tbaa.struct !68
  call void @nifti_mat44_inverse(ptr dead_on_unwind writable sret(%struct.mat44) align 4 %17, ptr noundef byval(%struct.mat44) align 8 %18)
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %855, ptr align 4 %17, i64 64, i1 false), !tbaa.struct !68
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #6
  %858 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 31
  %859 = load i16, ptr %858, align 2, !tbaa !69
  %860 = sext i16 %859 to i32
  %861 = load ptr, ptr %10, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.nifti_image, ptr %861, i32 0, i32 25
  store i32 %860, ptr %862, align 8, !tbaa !70
  %863 = load i32, ptr @g_opts, align 4, !tbaa !24
  %864 = icmp sgt i32 %863, 1
  br i1 %864, label %865, label %869

865:                                              ; preds = %737
  %866 = load ptr, ptr %10, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.nifti_image, ptr %866, i32 0, i32 42
  call void @llvm.lifetime.start.p0(i64 64, ptr %19) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr align 4 %867, i64 64, i1 false), !tbaa.struct !68
  %868 = call i32 @nifti_disp_matrix_orient(ptr noundef @.str.163, ptr noundef byval(%struct.mat44) align 8 %19)
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #6
  br label %869

869:                                              ; preds = %865, %737
  br label %870

870:                                              ; preds = %869, %736
  %871 = load i32, ptr %8, align 4, !tbaa !21
  %872 = icmp ne i32 %871, 0
  br i1 %872, label %873, label %1011

873:                                              ; preds = %870
  %874 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 17
  %875 = load float, ptr %874, align 8, !tbaa !71
  %876 = call i1 @llvm.is.fpclass.f32(float %875, i32 504)
  br i1 %876, label %877, label %880

877:                                              ; preds = %873
  %878 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 17
  %879 = load float, ptr %878, align 8, !tbaa !71
  br label %881

880:                                              ; preds = %873
  br label %881

881:                                              ; preds = %880, %877
  %882 = phi float [ %879, %877 ], [ 0.000000e+00, %880 ]
  %883 = load ptr, ptr %10, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.nifti_image, ptr %883, i32 0, i32 20
  store float %882, ptr %884, align 4, !tbaa !72
  %885 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 18
  %886 = load float, ptr %885, align 4, !tbaa !73
  %887 = call i1 @llvm.is.fpclass.f32(float %886, i32 504)
  br i1 %887, label %888, label %891

888:                                              ; preds = %881
  %889 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 18
  %890 = load float, ptr %889, align 4, !tbaa !73
  br label %892

891:                                              ; preds = %881
  br label %892

892:                                              ; preds = %891, %888
  %893 = phi float [ %890, %888 ], [ 0.000000e+00, %891 ]
  %894 = load ptr, ptr %10, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.nifti_image, ptr %894, i32 0, i32 21
  store float %893, ptr %895, align 8, !tbaa !74
  %896 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 11
  %897 = load i16, ptr %896, align 4, !tbaa !75
  %898 = sext i16 %897 to i32
  %899 = load ptr, ptr %10, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.nifti_image, ptr %899, i32 0, i32 48
  store i32 %898, ptr %900, align 4, !tbaa !76
  %901 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 8
  %902 = load float, ptr %901, align 8, !tbaa !77
  %903 = call i1 @llvm.is.fpclass.f32(float %902, i32 504)
  br i1 %903, label %904, label %907

904:                                              ; preds = %892
  %905 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 8
  %906 = load float, ptr %905, align 8, !tbaa !77
  br label %908

907:                                              ; preds = %892
  br label %908

908:                                              ; preds = %907, %904
  %909 = phi float [ %906, %904 ], [ 0.000000e+00, %907 ]
  %910 = load ptr, ptr %10, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.nifti_image, ptr %910, i32 0, i32 49
  store float %909, ptr %911, align 8, !tbaa !78
  %912 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 9
  %913 = load float, ptr %912, align 4, !tbaa !79
  %914 = call i1 @llvm.is.fpclass.f32(float %913, i32 504)
  br i1 %914, label %915, label %918

915:                                              ; preds = %908
  %916 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 9
  %917 = load float, ptr %916, align 4, !tbaa !79
  br label %919

918:                                              ; preds = %908
  br label %919

919:                                              ; preds = %918, %915
  %920 = phi float [ %917, %915 ], [ 0.000000e+00, %918 ]
  %921 = load ptr, ptr %10, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.nifti_image, ptr %921, i32 0, i32 50
  store float %920, ptr %922, align 4, !tbaa !80
  %923 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 10
  %924 = load float, ptr %923, align 8, !tbaa !81
  %925 = call i1 @llvm.is.fpclass.f32(float %924, i32 504)
  br i1 %925, label %926, label %929

926:                                              ; preds = %919
  %927 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 10
  %928 = load float, ptr %927, align 8, !tbaa !81
  br label %930

929:                                              ; preds = %919
  br label %930

930:                                              ; preds = %929, %926
  %931 = phi float [ %928, %926 ], [ 0.000000e+00, %929 ]
  %932 = load ptr, ptr %10, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.nifti_image, ptr %932, i32 0, i32 51
  store float %931, ptr %933, align 8, !tbaa !82
  %934 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 25
  %935 = load float, ptr %934, align 8, !tbaa !83
  %936 = call i1 @llvm.is.fpclass.f32(float %935, i32 504)
  br i1 %936, label %937, label %940

937:                                              ; preds = %930
  %938 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 25
  %939 = load float, ptr %938, align 8, !tbaa !83
  br label %941

940:                                              ; preds = %930
  br label %941

941:                                              ; preds = %940, %937
  %942 = phi float [ %939, %937 ], [ 0.000000e+00, %940 ]
  %943 = load ptr, ptr %10, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.nifti_image, ptr %943, i32 0, i32 44
  store float %942, ptr %944, align 4, !tbaa !84
  %945 = load ptr, ptr %10, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.nifti_image, ptr %945, i32 0, i32 52
  %947 = getelementptr inbounds [16 x i8], ptr %946, i64 0, i64 0
  %948 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 41
  %949 = getelementptr inbounds [16 x i8], ptr %948, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %947, ptr align 8 %949, i64 15, i1 false)
  %950 = load ptr, ptr %10, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.nifti_image, ptr %950, i32 0, i32 52
  %952 = getelementptr inbounds [16 x i8], ptr %951, i64 0, i64 15
  store i8 0, ptr %952, align 1, !tbaa !22
  %953 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 21
  %954 = load i8, ptr %953, align 1, !tbaa !85
  %955 = sext i8 %954 to i32
  %956 = and i32 %955, 7
  %957 = load ptr, ptr %10, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.nifti_image, ptr %957, i32 0, i32 45
  store i32 %956, ptr %958, align 8, !tbaa !86
  %959 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 21
  %960 = load i8, ptr %959, align 1, !tbaa !85
  %961 = sext i8 %960 to i32
  %962 = and i32 %961, 56
  %963 = load ptr, ptr %10, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.nifti_image, ptr %963, i32 0, i32 46
  store i32 %962, ptr %964, align 4, !tbaa !87
  %965 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 6
  %966 = load i8, ptr %965, align 1, !tbaa !88
  %967 = sext i8 %966 to i32
  %968 = and i32 %967, 3
  %969 = load ptr, ptr %10, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.nifti_image, ptr %969, i32 0, i32 26
  store i32 %968, ptr %970, align 4, !tbaa !89
  %971 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 6
  %972 = load i8, ptr %971, align 1, !tbaa !88
  %973 = sext i8 %972 to i32
  %974 = ashr i32 %973, 2
  %975 = and i32 %974, 3
  %976 = load ptr, ptr %10, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.nifti_image, ptr %976, i32 0, i32 27
  store i32 %975, ptr %977, align 8, !tbaa !90
  %978 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 6
  %979 = load i8, ptr %978, align 1, !tbaa !88
  %980 = sext i8 %979 to i32
  %981 = ashr i32 %980, 4
  %982 = and i32 %981, 3
  %983 = load ptr, ptr %10, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.nifti_image, ptr %983, i32 0, i32 28
  store i32 %982, ptr %984, align 4, !tbaa !91
  %985 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 20
  %986 = load i8, ptr %985, align 2, !tbaa !92
  %987 = sext i8 %986 to i32
  %988 = load ptr, ptr %10, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.nifti_image, ptr %988, i32 0, i32 29
  store i32 %987, ptr %989, align 8, !tbaa !93
  %990 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 14
  %991 = load i16, ptr %990, align 2, !tbaa !94
  %992 = sext i16 %991 to i32
  %993 = load ptr, ptr %10, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.nifti_image, ptr %993, i32 0, i32 30
  store i32 %992, ptr %994, align 4, !tbaa !95
  %995 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 19
  %996 = load i16, ptr %995, align 8, !tbaa !96
  %997 = sext i16 %996 to i32
  %998 = load ptr, ptr %10, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.nifti_image, ptr %998, i32 0, i32 31
  store i32 %997, ptr %999, align 8, !tbaa !97
  %1000 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 24
  %1001 = load float, ptr %1000, align 4, !tbaa !98
  %1002 = call i1 @llvm.is.fpclass.f32(float %1001, i32 504)
  br i1 %1002, label %1003, label %1006

1003:                                             ; preds = %941
  %1004 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 24
  %1005 = load float, ptr %1004, align 4, !tbaa !98
  br label %1007

1006:                                             ; preds = %941
  br label %1007

1007:                                             ; preds = %1006, %1003
  %1008 = phi float [ %1005, %1003 ], [ 0.000000e+00, %1006 ]
  %1009 = load ptr, ptr %10, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.nifti_image, ptr %1009, i32 0, i32 32
  store float %1008, ptr %1010, align 4, !tbaa !99
  br label %1011

1011:                                             ; preds = %1007, %870
  %1012 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 23
  %1013 = load float, ptr %1012, align 8, !tbaa !100
  %1014 = call i1 @llvm.is.fpclass.f32(float %1013, i32 504)
  br i1 %1014, label %1015, label %1018

1015:                                             ; preds = %1011
  %1016 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 23
  %1017 = load float, ptr %1016, align 8, !tbaa !100
  br label %1019

1018:                                             ; preds = %1011
  br label %1019

1019:                                             ; preds = %1018, %1015
  %1020 = phi float [ %1017, %1015 ], [ 0.000000e+00, %1018 ]
  %1021 = load ptr, ptr %10, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.nifti_image, ptr %1021, i32 0, i32 22
  store float %1020, ptr %1022, align 4, !tbaa !101
  %1023 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 22
  %1024 = load float, ptr %1023, align 4, !tbaa !102
  %1025 = call i1 @llvm.is.fpclass.f32(float %1024, i32 504)
  br i1 %1025, label %1026, label %1029

1026:                                             ; preds = %1019
  %1027 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 22
  %1028 = load float, ptr %1027, align 4, !tbaa !102
  br label %1030

1029:                                             ; preds = %1019
  br label %1030

1030:                                             ; preds = %1029, %1026
  %1031 = phi float [ %1028, %1026 ], [ 0.000000e+00, %1029 ]
  %1032 = load ptr, ptr %10, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.nifti_image, ptr %1032, i32 0, i32 23
  store float %1031, ptr %1033, align 8, !tbaa !103
  %1034 = load ptr, ptr %10, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.nifti_image, ptr %1034, i32 0, i32 53
  %1036 = getelementptr inbounds [80 x i8], ptr %1035, i64 0, i64 0
  %1037 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 28
  %1038 = getelementptr inbounds [80 x i8], ptr %1037, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1036, ptr align 4 %1038, i64 79, i1 false)
  %1039 = load ptr, ptr %10, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.nifti_image, ptr %1039, i32 0, i32 53
  %1041 = getelementptr inbounds [80 x i8], ptr %1040, i64 0, i64 79
  store i8 0, ptr %1041, align 1, !tbaa !22
  %1042 = load ptr, ptr %10, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.nifti_image, ptr %1042, i32 0, i32 54
  %1044 = getelementptr inbounds [24 x i8], ptr %1043, i64 0, i64 0
  %1045 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 29
  %1046 = getelementptr inbounds [24 x i8], ptr %1045, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1044, ptr align 4 %1046, i64 23, i1 false)
  %1047 = load ptr, ptr %10, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.nifti_image, ptr %1047, i32 0, i32 54
  %1049 = getelementptr inbounds [24 x i8], ptr %1048, i64 0, i64 23
  store i8 0, ptr %1049, align 1, !tbaa !22
  %1050 = load i32, ptr %8, align 4, !tbaa !21
  %1051 = icmp ne i32 %1050, 0
  br i1 %1051, label %1052, label %1058

1052:                                             ; preds = %1030
  %1053 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 42
  %1054 = getelementptr inbounds [4 x i8], ptr %1053, i64 0, i64 1
  %1055 = load i8, ptr %1054, align 1, !tbaa !22
  %1056 = sext i8 %1055 to i32
  %1057 = icmp eq i32 %1056, 43
  br label %1058

1058:                                             ; preds = %1052, %1030
  %1059 = phi i1 [ false, %1030 ], [ %1057, %1052 ]
  %1060 = zext i1 %1059 to i32
  store i32 %1060, ptr %9, align 4, !tbaa !21
  %1061 = load i32, ptr %9, align 4, !tbaa !21
  %1062 = icmp ne i32 %1061, 0
  br i1 %1062, label %1063, label %1071

1063:                                             ; preds = %1058
  %1064 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 16
  %1065 = load float, ptr %1064, align 4, !tbaa !104
  %1066 = fptosi float %1065 to i32
  store i32 %1066, ptr %7, align 4, !tbaa !21
  %1067 = load i32, ptr %7, align 4, !tbaa !21
  %1068 = icmp slt i32 %1067, 348
  br i1 %1068, label %1069, label %1070

1069:                                             ; preds = %1063
  store i32 348, ptr %7, align 4, !tbaa !21
  br label %1070

1070:                                             ; preds = %1069, %1063
  br label %1075

1071:                                             ; preds = %1058
  %1072 = getelementptr inbounds %struct.nifti_1_header, ptr %0, i32 0, i32 16
  %1073 = load float, ptr %1072, align 4, !tbaa !104
  %1074 = fptosi float %1073 to i32
  store i32 %1074, ptr %7, align 4, !tbaa !21
  br label %1075

1075:                                             ; preds = %1071, %1070
  %1076 = load i32, ptr %7, align 4, !tbaa !21
  %1077 = load ptr, ptr %10, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.nifti_image, ptr %1077, i32 0, i32 57
  store i32 %1076, ptr %1078, align 8, !tbaa !105
  %1079 = load ptr, ptr %4, align 8, !tbaa !5
  %1080 = icmp ne ptr %1079, null
  br i1 %1080, label %1081, label %1101

1081:                                             ; preds = %1075
  %1082 = load ptr, ptr %10, align 8, !tbaa !5
  %1083 = load ptr, ptr %4, align 8, !tbaa !5
  %1084 = call i32 @nifti_set_filenames(ptr noundef %1082, ptr noundef %1083, i32 noundef 0, i32 noundef 0)
  %1085 = load ptr, ptr %10, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.nifti_image, ptr %1085, i32 0, i32 56
  %1087 = load ptr, ptr %1086, align 8, !tbaa !15
  %1088 = icmp eq ptr %1087, null
  br i1 %1088, label %1089, label %1100

1089:                                             ; preds = %1081
  br label %1090

1090:                                             ; preds = %1089
  %1091 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1091, ptr noundef @.str.152, ptr noundef @.str.164) #6
  %1093 = load ptr, ptr %10, align 8, !tbaa !5
  %1094 = icmp ne ptr %1093, null
  br i1 %1094, label %1095, label %1097

1095:                                             ; preds = %1090
  %1096 = load ptr, ptr %10, align 8, !tbaa !5
  call void @free(ptr noundef %1096) #6
  br label %1097

1097:                                             ; preds = %1095, %1090
  store ptr null, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1112

1098:                                             ; No predecessors!
  br label %1099

1099:                                             ; preds = %1098
  br label %1100

1100:                                             ; preds = %1099, %1081
  br label %1106

1101:                                             ; preds = %1075
  %1102 = load ptr, ptr %10, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.nifti_image, ptr %1102, i32 0, i32 55
  store ptr null, ptr %1103, align 8, !tbaa !9
  %1104 = load ptr, ptr %10, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.nifti_image, ptr %1104, i32 0, i32 56
  store ptr null, ptr %1105, align 8, !tbaa !15
  br label %1106

1106:                                             ; preds = %1101, %1100
  %1107 = load ptr, ptr %10, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.nifti_image, ptr %1107, i32 0, i32 61
  store i32 0, ptr %1108, align 8, !tbaa !106
  %1109 = load ptr, ptr %10, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.nifti_image, ptr %1109, i32 0, i32 62
  store ptr null, ptr %1110, align 8, !tbaa !107
  %1111 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1111, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1112

1112:                                             ; preds = %1106, %1097, %430, %178, %161, %71, %60, %31
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  %1113 = load ptr, ptr %3, align 8
  ret ptr %1113
}

; Function Attrs: nounwind uwtable
declare hidden i32 @need_nhdr_swap(i16 noundef signext, i32 noundef) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i1 @llvm.is.fpclass.f32(float, i32 immarg) #5

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }
attributes #7 = { nounwind allocsize(0,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, !6, i64 632}
!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 640}
!16 = !{!10, !6, i64 664}
!17 = !{!18, !18, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!20, !11, i64 0}
!20 = !{!"nifti_1_header", !11, i64 0, !7, i64 4, !7, i64 14, !11, i64 32, !18, i64 36, !7, i64 38, !7, i64 39, !7, i64 40, !13, i64 56, !13, i64 60, !13, i64 64, !18, i64 68, !18, i64 70, !18, i64 72, !18, i64 74, !7, i64 76, !13, i64 108, !13, i64 112, !13, i64 116, !18, i64 120, !7, i64 122, !7, i64 123, !13, i64 124, !13, i64 128, !13, i64 132, !13, i64 136, !11, i64 140, !11, i64 144, !7, i64 148, !7, i64 228, !18, i64 252, !18, i64 254, !13, i64 256, !13, i64 260, !13, i64 264, !13, i64 268, !13, i64 272, !13, i64 276, !7, i64 280, !7, i64 296, !7, i64 312, !7, i64 328, !7, i64 344}
!21 = !{!11, !11, i64 0}
!22 = !{!7, !7, i64 0}
!23 = !{!10, !11, i64 688}
!24 = !{!25, !11, i64 0}
!25 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8}
!26 = !{!20, !18, i64 70}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = !{!13, !13, i64 0}
!31 = distinct !{!31, !28}
!32 = !{!10, !11, i64 488}
!33 = !{!10, !11, i64 656}
!34 = !{!10, !11, i64 0}
!35 = !{!10, !11, i64 4}
!36 = !{!10, !11, i64 8}
!37 = !{!10, !11, i64 12}
!38 = !{!10, !11, i64 16}
!39 = !{!10, !11, i64 20}
!40 = !{!10, !11, i64 24}
!41 = !{!10, !11, i64 28}
!42 = !{!10, !12, i64 64}
!43 = distinct !{!43, !28}
!44 = !{!10, !11, i64 76}
!45 = !{!10, !11, i64 72}
!46 = !{!10, !13, i64 80}
!47 = !{!10, !13, i64 84}
!48 = !{!10, !13, i64 88}
!49 = !{!10, !13, i64 92}
!50 = !{!10, !13, i64 96}
!51 = !{!10, !13, i64 100}
!52 = !{!10, !13, i64 104}
!53 = !{!20, !18, i64 252}
!54 = !{!10, !11, i64 156}
!55 = !{!20, !13, i64 256}
!56 = !{!10, !13, i64 192}
!57 = !{!20, !13, i64 260}
!58 = !{!10, !13, i64 196}
!59 = !{!20, !13, i64 264}
!60 = !{!10, !13, i64 200}
!61 = !{!20, !13, i64 268}
!62 = !{!10, !13, i64 204}
!63 = !{!20, !13, i64 272}
!64 = !{!10, !13, i64 208}
!65 = !{!20, !13, i64 276}
!66 = !{!10, !13, i64 212}
!67 = !{!10, !13, i64 216}
!68 = !{i64 0, i64 64, !22}
!69 = !{!20, !18, i64 254}
!70 = !{!10, !11, i64 160}
!71 = !{!20, !13, i64 112}
!72 = !{!10, !13, i64 140}
!73 = !{!20, !13, i64 116}
!74 = !{!10, !13, i64 144}
!75 = !{!20, !18, i64 68}
!76 = !{!10, !11, i64 492}
!77 = !{!20, !13, i64 56}
!78 = !{!10, !13, i64 496}
!79 = !{!20, !13, i64 60}
!80 = !{!10, !13, i64 500}
!81 = !{!20, !13, i64 64}
!82 = !{!10, !13, i64 504}
!83 = !{!20, !13, i64 136}
!84 = !{!10, !13, i64 476}
!85 = !{!20, !7, i64 123}
!86 = !{!10, !11, i64 480}
!87 = !{!10, !11, i64 484}
!88 = !{!20, !7, i64 39}
!89 = !{!10, !11, i64 164}
!90 = !{!10, !11, i64 168}
!91 = !{!10, !11, i64 172}
!92 = !{!20, !7, i64 122}
!93 = !{!10, !11, i64 176}
!94 = !{!20, !18, i64 74}
!95 = !{!10, !11, i64 180}
!96 = !{!20, !18, i64 120}
!97 = !{!10, !11, i64 184}
!98 = !{!20, !13, i64 132}
!99 = !{!10, !13, i64 188}
!100 = !{!20, !13, i64 128}
!101 = !{!10, !13, i64 148}
!102 = !{!20, !13, i64 124}
!103 = !{!10, !13, i64 152}
!104 = !{!20, !13, i64 108}
!105 = !{!10, !11, i64 648}
!106 = !{!10, !11, i64 672}
!107 = !{!10, !6, i64 680}


; 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.nifti_global_options = type { i32, i32, i32 }
%struct.mat44 = type { [4 x [4 x float]] }
%struct.nifti_1_header = type { i32, [10 x i8], [18 x i8], i32, i16, i8, i8, [8 x i16], float, float, float, i16, i16, i16, i16, [8 x float], float, float, float, i16, i8, i8, float, float, float, float, i32, i32, [80 x i8], [24 x i8], i16, i16, float, float, float, float, float, float, [4 x float], [4 x float], [4 x float], [16 x i8], [4 x i8] }

@stderr = external local_unnamed_addr global ptr, align 8
@g_opts = external hidden local_unnamed_addr global %struct.nifti_global_options, align 4
@.str.152 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [13 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 i32 @nifti_disp_matrix_orient(ptr noundef, ptr noundef byval(%struct.mat44) align 8) local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
declare dso_local void @nifti_quatern_to_mat44(ptr dead_on_unwind noalias writable sret(%struct.mat44) align 4, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float 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) #4

; Function Attrs: nounwind uwtable
declare dso_local void @nifti_mat44_inverse(ptr dead_on_unwind noalias writable sret(%struct.mat44) align 4, ptr noundef byval(%struct.mat44) align 8) local_unnamed_addr #3

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

; 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 #5

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @nifti_short_order() local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
define dso_local noundef ptr @nifti_convert_nhdr2nim(ptr noundef byval(%struct.nifti_1_header) align 8 %0, ptr noundef %1) local_unnamed_addr #3 {
  %3 = alloca %struct.mat44, align 4
  %4 = alloca %struct.mat44, align 8
  %5 = alloca %struct.mat44, align 4
  %6 = alloca %struct.mat44, align 8
  %7 = alloca %struct.mat44, align 4
  %8 = alloca %struct.mat44, align 8
  %9 = alloca %struct.mat44, align 8
  %10 = tail call noalias dereferenceable_or_null(696) ptr @calloc(i64 noundef 1, i64 noundef 696) #9
  %.not = icmp eq ptr %10, null
  br i1 %.not, label %11, label %14

11:                                               ; preds = %2
  %12 = load ptr, ptr @stderr, align 8, !tbaa !5
  %13 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.153) #10
  br label %517

14:                                               ; preds = %2
  %15 = getelementptr inbounds i8, ptr %10, i64 632
  %16 = getelementptr inbounds i8, ptr %10, i64 640
  %17 = getelementptr inbounds i8, ptr %0, i64 40
  %18 = load i16, ptr %17, align 8, !tbaa !9
  %19 = load i32, ptr %0, align 8, !tbaa !11
  %20 = tail call i32 @need_nhdr_swap(i16 noundef signext %18, i32 noundef %19)
  %21 = icmp slt i32 %20, 0
  br i1 %21, label %22, label %29

22:                                               ; preds = %14
  %23 = icmp eq i32 %20, -1
  %24 = load ptr, ptr @stderr, align 8, !tbaa !5
  br i1 %23, label %25, label %27

25:                                               ; preds = %22
  %26 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.154) #10
  tail call void @free(ptr noundef nonnull %10) #11
  br label %517

27:                                               ; preds = %22
  %28 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %24, ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.155) #10
  tail call void @free(ptr noundef nonnull %10) #11
  br label %517

29:                                               ; preds = %14
  %30 = getelementptr inbounds i8, ptr %0, i64 344
  %31 = load i8, ptr %30, align 8, !tbaa !15
  %32 = icmp eq i8 %31, 110
  %33 = getelementptr inbounds i8, ptr %0, i64 347
  %34 = load i8, ptr %33, align 1
  %35 = icmp eq i8 %34, 0
  %or.cond = select i1 %32, i1 %35, i1 false
  br i1 %or.cond, label %36, label %.thread

36:                                               ; preds = %29
  %37 = getelementptr inbounds i8, ptr %0, i64 345
  %38 = load i8, ptr %37, align 1
  %39 = icmp eq i8 %38, 105
  %40 = icmp eq i8 %38, 43
  %or.cond9 = or i1 %39, %40
  %41 = getelementptr inbounds i8, ptr %0, i64 346
  %42 = load i8, ptr %41, align 2
  %43 = add i8 %42, -49
  %44 = icmp ult i8 %43, 9
  %or.cond19 = select i1 %or.cond9, i1 %44, i1 false
  br i1 %or.cond19, label %45, label %.thread

45:                                               ; preds = %36
  %46 = zext nneg i8 %42 to i32
  %47 = add nsw i32 %46, -48
  br label %52

.thread:                                          ; preds = %29, %36
  %48 = getelementptr inbounds i8, ptr %0, i64 252
  %49 = load i8, ptr %48, align 4, !tbaa !15
  %50 = zext i8 %49 to i32
  %51 = getelementptr inbounds i8, ptr %10, i64 688
  store i32 %50, ptr %51, align 8, !tbaa !16
  br label %52

52:                                               ; preds = %45, %.thread
  %53 = phi i1 [ false, %.thread ], [ true, %45 ]
  %54 = phi i32 [ 0, %.thread ], [ %47, %45 ]
  %.not234 = icmp eq i32 %20, 0
  br i1 %.not234, label %61, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr @g_opts, align 4, !tbaa !20
  %57 = icmp sgt i32 %56, 3
  br i1 %57, label %58, label %60

58:                                               ; preds = %55
  %59 = call i32 @disp_nifti_1_header(ptr noundef nonnull @.str.156, ptr noundef nonnull %0)
  br label %60

60:                                               ; preds = %58, %55
  call void @swap_nifti_header(ptr noundef nonnull %0, i32 noundef %54)
  br label %61

61:                                               ; preds = %60, %52
  %62 = load i32, ptr @g_opts, align 4, !tbaa !20
  %63 = icmp sgt i32 %62, 2
  br i1 %63, label %64, label %66

64:                                               ; preds = %61
  %65 = call i32 @disp_nifti_1_header(ptr noundef nonnull @.str.157, ptr noundef nonnull %0)
  br label %66

66:                                               ; preds = %64, %61
  %67 = getelementptr inbounds i8, ptr %0, i64 70
  %68 = load i16, ptr %67, align 2
  %or.cond23 = icmp ult i16 %68, 2
  br i1 %or.cond23, label %69, label %72

69:                                               ; preds = %66
  %70 = load ptr, ptr @stderr, align 8, !tbaa !5
  %71 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %70, ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.158) #10
  call void @free(ptr noundef nonnull %10) #11
  br label %517

72:                                               ; preds = %66
  %73 = getelementptr inbounds i8, ptr %0, i64 42
  %74 = load i16, ptr %73, align 2, !tbaa !9
  %75 = icmp slt i16 %74, 1
  br i1 %75, label %132, label %.preheader244

.preheader244:                                    ; preds = %72
  %76 = load i16, ptr %17, align 8, !tbaa !9
  %77 = sext i16 %76 to i32
  %.not235245 = icmp slt i16 %76, 2
  br i1 %.not235245, label %.lr.ph249.preheader, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.preheader244
  %78 = add nuw nsw i32 %77, 1
  %wide.trip.count = zext nneg i32 %78 to i64
  %79 = add nsw i64 %wide.trip.count, -2
  %min.iters.check = icmp ult i64 %79, 16
  br i1 %min.iters.check, label %.lr.ph.preheader358, label %vector.ph

.lr.ph.preheader358:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 2, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %79, -16
  %ind.end = or disjoint i64 %n.vec, 2
  br label %vector.body

vector.body:                                      ; preds = %pred.store.continue309, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %pred.store.continue309 ]
  %offset.idx = or disjoint i64 %index, 2
  %80 = or disjoint i64 %index, 10
  %81 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %offset.idx
  %82 = getelementptr inbounds i8, ptr %81, i64 16
  %wide.load = load <8 x i16>, ptr %81, align 4, !tbaa !9
  %wide.load279 = load <8 x i16>, ptr %82, align 4, !tbaa !9
  %83 = icmp slt <8 x i16> %wide.load, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
  %84 = icmp slt <8 x i16> %wide.load279, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
  %85 = extractelement <8 x i1> %83, i64 0
  br i1 %85, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body
  %86 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %offset.idx
  store i16 1, ptr %86, align 4, !tbaa !9
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body
  %87 = extractelement <8 x i1> %83, i64 1
  br i1 %87, label %pred.store.if280, label %pred.store.continue281

pred.store.if280:                                 ; preds = %pred.store.continue
  %88 = or disjoint i64 %index, 3
  %89 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %88
  store i16 1, ptr %89, align 2, !tbaa !9
  br label %pred.store.continue281

pred.store.continue281:                           ; preds = %pred.store.if280, %pred.store.continue
  %90 = extractelement <8 x i1> %83, i64 2
  br i1 %90, label %pred.store.if282, label %pred.store.continue283

pred.store.if282:                                 ; preds = %pred.store.continue281
  %91 = or disjoint i64 %index, 4
  %92 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %91
  store i16 1, ptr %92, align 8, !tbaa !9
  br label %pred.store.continue283

pred.store.continue283:                           ; preds = %pred.store.if282, %pred.store.continue281
  %93 = extractelement <8 x i1> %83, i64 3
  br i1 %93, label %pred.store.if284, label %pred.store.continue285

pred.store.if284:                                 ; preds = %pred.store.continue283
  %94 = or disjoint i64 %index, 5
  %95 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %94
  store i16 1, ptr %95, align 2, !tbaa !9
  br label %pred.store.continue285

pred.store.continue285:                           ; preds = %pred.store.if284, %pred.store.continue283
  %96 = extractelement <8 x i1> %83, i64 4
  br i1 %96, label %pred.store.if286, label %pred.store.continue287

pred.store.if286:                                 ; preds = %pred.store.continue285
  %97 = or disjoint i64 %index, 6
  %98 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %97
  store i16 1, ptr %98, align 4, !tbaa !9
  br label %pred.store.continue287

pred.store.continue287:                           ; preds = %pred.store.if286, %pred.store.continue285
  %99 = extractelement <8 x i1> %83, i64 5
  br i1 %99, label %pred.store.if288, label %pred.store.continue289

pred.store.if288:                                 ; preds = %pred.store.continue287
  %100 = or disjoint i64 %index, 7
  %101 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %100
  store i16 1, ptr %101, align 2, !tbaa !9
  br label %pred.store.continue289

pred.store.continue289:                           ; preds = %pred.store.if288, %pred.store.continue287
  %102 = extractelement <8 x i1> %83, i64 6
  br i1 %102, label %pred.store.if290, label %pred.store.continue291

pred.store.if290:                                 ; preds = %pred.store.continue289
  %103 = or disjoint i64 %index, 8
  %104 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %103
  store i16 1, ptr %104, align 8, !tbaa !9
  br label %pred.store.continue291

pred.store.continue291:                           ; preds = %pred.store.if290, %pred.store.continue289
  %105 = extractelement <8 x i1> %83, i64 7
  br i1 %105, label %pred.store.if292, label %pred.store.continue293

pred.store.if292:                                 ; preds = %pred.store.continue291
  %106 = or disjoint i64 %index, 9
  %107 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %106
  store i16 1, ptr %107, align 2, !tbaa !9
  br label %pred.store.continue293

pred.store.continue293:                           ; preds = %pred.store.if292, %pred.store.continue291
  %108 = extractelement <8 x i1> %84, i64 0
  br i1 %108, label %pred.store.if294, label %pred.store.continue295

pred.store.if294:                                 ; preds = %pred.store.continue293
  %109 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %80
  store i16 1, ptr %109, align 4, !tbaa !9
  br label %pred.store.continue295

pred.store.continue295:                           ; preds = %pred.store.if294, %pred.store.continue293
  %110 = extractelement <8 x i1> %84, i64 1
  br i1 %110, label %pred.store.if296, label %pred.store.continue297

pred.store.if296:                                 ; preds = %pred.store.continue295
  %111 = or disjoint i64 %index, 11
  %112 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %111
  store i16 1, ptr %112, align 2, !tbaa !9
  br label %pred.store.continue297

pred.store.continue297:                           ; preds = %pred.store.if296, %pred.store.continue295
  %113 = extractelement <8 x i1> %84, i64 2
  br i1 %113, label %pred.store.if298, label %pred.store.continue299

pred.store.if298:                                 ; preds = %pred.store.continue297
  %114 = or disjoint i64 %index, 12
  %115 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %114
  store i16 1, ptr %115, align 8, !tbaa !9
  br label %pred.store.continue299

pred.store.continue299:                           ; preds = %pred.store.if298, %pred.store.continue297
  %116 = extractelement <8 x i1> %84, i64 3
  br i1 %116, label %pred.store.if300, label %pred.store.continue301

pred.store.if300:                                 ; preds = %pred.store.continue299
  %117 = or disjoint i64 %index, 13
  %118 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %117
  store i16 1, ptr %118, align 2, !tbaa !9
  br label %pred.store.continue301

pred.store.continue301:                           ; preds = %pred.store.if300, %pred.store.continue299
  %119 = extractelement <8 x i1> %84, i64 4
  br i1 %119, label %pred.store.if302, label %pred.store.continue303

pred.store.if302:                                 ; preds = %pred.store.continue301
  %120 = or disjoint i64 %index, 14
  %121 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %120
  store i16 1, ptr %121, align 4, !tbaa !9
  br label %pred.store.continue303

pred.store.continue303:                           ; preds = %pred.store.if302, %pred.store.continue301
  %122 = extractelement <8 x i1> %84, i64 5
  br i1 %122, label %pred.store.if304, label %pred.store.continue305

pred.store.if304:                                 ; preds = %pred.store.continue303
  %123 = or disjoint i64 %index, 15
  %124 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %123
  store i16 1, ptr %124, align 2, !tbaa !9
  br label %pred.store.continue305

pred.store.continue305:                           ; preds = %pred.store.if304, %pred.store.continue303
  %125 = extractelement <8 x i1> %84, i64 6
  br i1 %125, label %pred.store.if306, label %pred.store.continue307

pred.store.if306:                                 ; preds = %pred.store.continue305
  %126 = add i64 %index, 16
  %127 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %126
  store i16 1, ptr %127, align 8, !tbaa !9
  br label %pred.store.continue307

pred.store.continue307:                           ; preds = %pred.store.if306, %pred.store.continue305
  %128 = extractelement <8 x i1> %84, i64 7
  br i1 %128, label %pred.store.if308, label %pred.store.continue309

pred.store.if308:                                 ; preds = %pred.store.continue307
  %129 = add i64 %index, 17
  %130 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %129
  store i16 1, ptr %130, align 2, !tbaa !9
  br label %pred.store.continue309

pred.store.continue309:                           ; preds = %pred.store.if308, %pred.store.continue307
  %index.next = add nuw i64 %index, 16
  %131 = icmp eq i64 %index.next, %n.vec
  br i1 %131, label %middle.block, label %vector.body, !llvm.loop !22

middle.block:                                     ; preds = %pred.store.continue309
  %cmp.n = icmp eq i64 %79, %n.vec
  br i1 %cmp.n, label %.preheader243, label %.lr.ph.preheader358

132:                                              ; preds = %72
  %133 = load ptr, ptr @stderr, align 8, !tbaa !5
  %134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %133, ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.159) #10
  call void @free(ptr noundef nonnull %10) #11
  br label %517

.preheader243:                                    ; preds = %196, %middle.block
  %135 = icmp slt i16 %76, 7
  br i1 %135, label %.lr.ph249.preheader, label %.lr.ph252

.lr.ph249.preheader:                              ; preds = %.preheader244, %.preheader243
  %136 = sext i16 %76 to i64
  %137 = sub nsw i64 7, %136
  %min.iters.check312 = icmp ult i64 %137, 16
  br i1 %min.iters.check312, label %.lr.ph249.preheader357, label %vector.ph313

.lr.ph249.preheader357:                           ; preds = %middle.block310, %.lr.ph249.preheader
  %indvars.iv260.ph = phi i64 [ %136, %.lr.ph249.preheader ], [ %ind.end316, %middle.block310 ]
  br label %.lr.ph249

vector.ph313:                                     ; preds = %.lr.ph249.preheader
  %n.vec315 = and i64 %137, -16
  %ind.end316 = add nsw i64 %n.vec315, %136
  br label %vector.body318

vector.body318:                                   ; preds = %pred.store.continue354, %vector.ph313
  %index319 = phi i64 [ 0, %vector.ph313 ], [ %index.next355, %pred.store.continue354 ]
  %offset.idx320 = add i64 %index319, %136
  %138 = add nsw i64 %offset.idx320, 1
  %139 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %138
  %140 = getelementptr inbounds i8, ptr %139, i64 16
  %wide.load321 = load <8 x i16>, ptr %139, align 2, !tbaa !9
  %wide.load322 = load <8 x i16>, ptr %140, align 2, !tbaa !9
  %141 = icmp ugt <8 x i16> %wide.load321, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
  %142 = icmp ugt <8 x i16> %wide.load322, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
  %143 = extractelement <8 x i1> %141, i64 0
  br i1 %143, label %pred.store.if323, label %pred.store.continue324

pred.store.if323:                                 ; preds = %vector.body318
  %144 = add nsw i64 %offset.idx320, 1
  %145 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %144
  store i16 1, ptr %145, align 2, !tbaa !9
  br label %pred.store.continue324

pred.store.continue324:                           ; preds = %pred.store.if323, %vector.body318
  %146 = extractelement <8 x i1> %141, i64 1
  br i1 %146, label %pred.store.if325, label %pred.store.continue326

pred.store.if325:                                 ; preds = %pred.store.continue324
  %147 = add i64 %offset.idx320, 2
  %148 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %147
  store i16 1, ptr %148, align 2, !tbaa !9
  br label %pred.store.continue326

pred.store.continue326:                           ; preds = %pred.store.if325, %pred.store.continue324
  %149 = extractelement <8 x i1> %141, i64 2
  br i1 %149, label %pred.store.if327, label %pred.store.continue328

pred.store.if327:                                 ; preds = %pred.store.continue326
  %150 = add i64 %offset.idx320, 3
  %151 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %150
  store i16 1, ptr %151, align 2, !tbaa !9
  br label %pred.store.continue328

pred.store.continue328:                           ; preds = %pred.store.if327, %pred.store.continue326
  %152 = extractelement <8 x i1> %141, i64 3
  br i1 %152, label %pred.store.if329, label %pred.store.continue330

pred.store.if329:                                 ; preds = %pred.store.continue328
  %153 = add i64 %offset.idx320, 4
  %154 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %153
  store i16 1, ptr %154, align 2, !tbaa !9
  br label %pred.store.continue330

pred.store.continue330:                           ; preds = %pred.store.if329, %pred.store.continue328
  %155 = extractelement <8 x i1> %141, i64 4
  br i1 %155, label %pred.store.if331, label %pred.store.continue332

pred.store.if331:                                 ; preds = %pred.store.continue330
  %156 = add i64 %offset.idx320, 5
  %157 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %156
  store i16 1, ptr %157, align 2, !tbaa !9
  br label %pred.store.continue332

pred.store.continue332:                           ; preds = %pred.store.if331, %pred.store.continue330
  %158 = extractelement <8 x i1> %141, i64 5
  br i1 %158, label %pred.store.if333, label %pred.store.continue334

pred.store.if333:                                 ; preds = %pred.store.continue332
  %159 = add i64 %offset.idx320, 6
  %160 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %159
  store i16 1, ptr %160, align 2, !tbaa !9
  br label %pred.store.continue334

pred.store.continue334:                           ; preds = %pred.store.if333, %pred.store.continue332
  %161 = extractelement <8 x i1> %141, i64 6
  br i1 %161, label %pred.store.if335, label %pred.store.continue336

pred.store.if335:                                 ; preds = %pred.store.continue334
  %162 = add i64 %offset.idx320, 7
  %163 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %162
  store i16 1, ptr %163, align 2, !tbaa !9
  br label %pred.store.continue336

pred.store.continue336:                           ; preds = %pred.store.if335, %pred.store.continue334
  %164 = extractelement <8 x i1> %141, i64 7
  br i1 %164, label %pred.store.if337, label %pred.store.continue338

pred.store.if337:                                 ; preds = %pred.store.continue336
  %165 = add i64 %offset.idx320, 8
  %166 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %165
  store i16 1, ptr %166, align 2, !tbaa !9
  br label %pred.store.continue338

pred.store.continue338:                           ; preds = %pred.store.if337, %pred.store.continue336
  %167 = extractelement <8 x i1> %142, i64 0
  br i1 %167, label %pred.store.if339, label %pred.store.continue340

pred.store.if339:                                 ; preds = %pred.store.continue338
  %168 = add i64 %offset.idx320, 9
  %169 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %168
  store i16 1, ptr %169, align 2, !tbaa !9
  br label %pred.store.continue340

pred.store.continue340:                           ; preds = %pred.store.if339, %pred.store.continue338
  %170 = extractelement <8 x i1> %142, i64 1
  br i1 %170, label %pred.store.if341, label %pred.store.continue342

pred.store.if341:                                 ; preds = %pred.store.continue340
  %171 = add i64 %offset.idx320, 10
  %172 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %171
  store i16 1, ptr %172, align 2, !tbaa !9
  br label %pred.store.continue342

pred.store.continue342:                           ; preds = %pred.store.if341, %pred.store.continue340
  %173 = extractelement <8 x i1> %142, i64 2
  br i1 %173, label %pred.store.if343, label %pred.store.continue344

pred.store.if343:                                 ; preds = %pred.store.continue342
  %174 = add i64 %offset.idx320, 11
  %175 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %174
  store i16 1, ptr %175, align 2, !tbaa !9
  br label %pred.store.continue344

pred.store.continue344:                           ; preds = %pred.store.if343, %pred.store.continue342
  %176 = extractelement <8 x i1> %142, i64 3
  br i1 %176, label %pred.store.if345, label %pred.store.continue346

pred.store.if345:                                 ; preds = %pred.store.continue344
  %177 = add i64 %offset.idx320, 12
  %178 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %177
  store i16 1, ptr %178, align 2, !tbaa !9
  br label %pred.store.continue346

pred.store.continue346:                           ; preds = %pred.store.if345, %pred.store.continue344
  %179 = extractelement <8 x i1> %142, i64 4
  br i1 %179, label %pred.store.if347, label %pred.store.continue348

pred.store.if347:                                 ; preds = %pred.store.continue346
  %180 = add i64 %offset.idx320, 13
  %181 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %180
  store i16 1, ptr %181, align 2, !tbaa !9
  br label %pred.store.continue348

pred.store.continue348:                           ; preds = %pred.store.if347, %pred.store.continue346
  %182 = extractelement <8 x i1> %142, i64 5
  br i1 %182, label %pred.store.if349, label %pred.store.continue350

pred.store.if349:                                 ; preds = %pred.store.continue348
  %183 = add i64 %offset.idx320, 14
  %184 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %183
  store i16 1, ptr %184, align 2, !tbaa !9
  br label %pred.store.continue350

pred.store.continue350:                           ; preds = %pred.store.if349, %pred.store.continue348
  %185 = extractelement <8 x i1> %142, i64 6
  br i1 %185, label %pred.store.if351, label %pred.store.continue352

pred.store.if351:                                 ; preds = %pred.store.continue350
  %186 = add i64 %offset.idx320, 15
  %187 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %186
  store i16 1, ptr %187, align 2, !tbaa !9
  br label %pred.store.continue352

pred.store.continue352:                           ; preds = %pred.store.if351, %pred.store.continue350
  %188 = extractelement <8 x i1> %142, i64 7
  br i1 %188, label %pred.store.if353, label %pred.store.continue354

pred.store.if353:                                 ; preds = %pred.store.continue352
  %189 = add i64 %offset.idx320, 16
  %190 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %189
  store i16 1, ptr %190, align 2, !tbaa !9
  br label %pred.store.continue354

pred.store.continue354:                           ; preds = %pred.store.if353, %pred.store.continue352
  %index.next355 = add nuw i64 %index319, 16
  %191 = icmp eq i64 %index.next355, %n.vec315
  br i1 %191, label %middle.block310, label %vector.body318, !llvm.loop !26

middle.block310:                                  ; preds = %pred.store.continue354
  %cmp.n356 = icmp eq i64 %137, %n.vec315
  br i1 %cmp.n356, label %.preheader, label %.lr.ph249.preheader357

.lr.ph:                                           ; preds = %.lr.ph.preheader358, %196
  %indvars.iv = phi i64 [ %indvars.iv.next, %196 ], [ %indvars.iv.ph, %.lr.ph.preheader358 ]
  %192 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv
  %193 = load i16, ptr %192, align 2, !tbaa !9
  %194 = icmp slt i16 %193, 1
  br i1 %194, label %195, label %196

195:                                              ; preds = %.lr.ph
  store i16 1, ptr %192, align 2, !tbaa !9
  br label %196

196:                                              ; preds = %.lr.ph, %195
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.preheader243, label %.lr.ph, !llvm.loop !27

.preheader:                                       ; preds = %204, %middle.block310
  %.pre = load i16, ptr %17, align 8, !tbaa !9
  %.pre275 = zext nneg i16 %.pre to i32
  %.not236250 = icmp slt i16 %.pre, 1
  br i1 %.not236250, label %._crit_edge, label %.lr.ph252

.lr.ph252:                                        ; preds = %.preheader243, %.preheader
  %.pre-phi278 = phi i32 [ %.pre275, %.preheader ], [ %77, %.preheader243 ]
  %197 = getelementptr inbounds i8, ptr %0, i64 76
  %198 = add nsw i32 %.pre-phi278, 1
  %wide.trip.count267 = zext i32 %198 to i64
  %199 = add nsw i64 %wide.trip.count267, -1
  %xtraiter = and i64 %199, 1
  %200 = icmp eq i32 %198, 2
  br i1 %200, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph252.new

.lr.ph252.new:                                    ; preds = %.lr.ph252
  %unroll_iter = and i64 %199, -2
  br label %205

.lr.ph249:                                        ; preds = %.lr.ph249.preheader357, %204
  %indvars.iv260 = phi i64 [ %indvars.iv.next261, %204 ], [ %indvars.iv260.ph, %.lr.ph249.preheader357 ]
  %indvars.iv.next261 = add nsw i64 %indvars.iv260, 1
  %201 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv.next261
  %202 = load i16, ptr %201, align 2, !tbaa !9
  %switch = icmp ult i16 %202, 2
  br i1 %switch, label %204, label %203

203:                                              ; preds = %.lr.ph249
  store i16 1, ptr %201, align 2, !tbaa !9
  br label %204

204:                                              ; preds = %.lr.ph249, %203
  %exitcond263.not = icmp eq i64 %indvars.iv.next261, 7
  br i1 %exitcond263.not, label %.preheader, label %.lr.ph249, !llvm.loop !28

205:                                              ; preds = %213, %.lr.ph252.new
  %indvars.iv264 = phi i64 [ 1, %.lr.ph252.new ], [ %indvars.iv.next265.1, %213 ]
  %niter = phi i64 [ 0, %.lr.ph252.new ], [ %niter.next.1, %213 ]
  %206 = getelementptr inbounds [8 x float], ptr %197, i64 0, i64 %indvars.iv264
  %207 = load float, ptr %206, align 4, !tbaa !29
  %or.cond242 = call i1 @llvm.is.fpclass.f32(float %207, i32 615)
  br i1 %or.cond242, label %208, label %209

208:                                              ; preds = %205
  store float 1.000000e+00, ptr %206, align 4, !tbaa !29
  br label %209

209:                                              ; preds = %205, %208
  %indvars.iv.next265 = add nuw nsw i64 %indvars.iv264, 1
  %210 = getelementptr inbounds [8 x float], ptr %197, i64 0, i64 %indvars.iv.next265
  %211 = load float, ptr %210, align 4, !tbaa !29
  %or.cond242.1 = call i1 @llvm.is.fpclass.f32(float %211, i32 615)
  br i1 %or.cond242.1, label %212, label %213

212:                                              ; preds = %209
  store float 1.000000e+00, ptr %210, align 4, !tbaa !29
  br label %213

213:                                              ; preds = %212, %209
  %indvars.iv.next265.1 = add nuw nsw i64 %indvars.iv264, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %205, !llvm.loop !30

._crit_edge.loopexit.unr-lcssa:                   ; preds = %213, %.lr.ph252
  %indvars.iv264.unr = phi i64 [ 1, %.lr.ph252 ], [ %indvars.iv.next265.1, %213 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge.loopexit.unr-lcssa
  %214 = getelementptr inbounds [8 x float], ptr %197, i64 0, i64 %indvars.iv264.unr
  %215 = load float, ptr %214, align 4, !tbaa !29
  %or.cond242.epil = call i1 @llvm.is.fpclass.f32(float %215, i32 615)
  br i1 %or.cond242.epil, label %216, label %._crit_edge

216:                                              ; preds = %.epil.preheader
  store float 1.000000e+00, ptr %214, align 4, !tbaa !29
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %216, %.epil.preheader, %.preheader
  %217 = getelementptr inbounds i8, ptr %0, i64 345
  %218 = load i8, ptr %217, align 1
  %219 = icmp eq i8 %218, 43
  %220 = select i1 %219, i32 1, i32 2
  %.sink = select i1 %53, i32 %220, i32 0
  %221 = getelementptr inbounds i8, ptr %10, i64 488
  store i32 %.sink, ptr %221, align 8
  %222 = call i32 @nifti_short_order()
  %223 = sub nsw i32 3, %222
  %.sink274 = select i1 %.not234, i32 %222, i32 %223
  %224 = getelementptr inbounds i8, ptr %10, i64 656
  store i32 %.sink274, ptr %224, align 8
  %225 = load i16, ptr %17, align 8, !tbaa !9
  %226 = sext i16 %225 to i32
  %227 = getelementptr inbounds i8, ptr %10, i64 32
  store i32 %226, ptr %227, align 8, !tbaa !31
  store i32 %226, ptr %10, align 8, !tbaa !32
  %228 = load i16, ptr %73, align 2, !tbaa !9
  %229 = sext i16 %228 to i32
  %230 = getelementptr inbounds i8, ptr %10, i64 36
  store i32 %229, ptr %230, align 4, !tbaa !31
  %231 = getelementptr inbounds i8, ptr %10, i64 4
  store i32 %229, ptr %231, align 4, !tbaa !33
  %232 = getelementptr inbounds i8, ptr %0, i64 44
  %233 = load i16, ptr %232, align 4, !tbaa !9
  %234 = sext i16 %233 to i32
  %235 = getelementptr inbounds i8, ptr %10, i64 40
  store i32 %234, ptr %235, align 8, !tbaa !31
  %236 = getelementptr inbounds i8, ptr %10, i64 8
  store i32 %234, ptr %236, align 8, !tbaa !34
  %237 = getelementptr inbounds i8, ptr %0, i64 46
  %238 = load i16, ptr %237, align 2, !tbaa !9
  %239 = sext i16 %238 to i32
  %240 = getelementptr inbounds i8, ptr %10, i64 44
  store i32 %239, ptr %240, align 4, !tbaa !31
  %241 = getelementptr inbounds i8, ptr %10, i64 12
  store i32 %239, ptr %241, align 4, !tbaa !35
  %242 = getelementptr inbounds i8, ptr %0, i64 48
  %243 = load i16, ptr %242, align 8, !tbaa !9
  %244 = sext i16 %243 to i32
  %245 = getelementptr inbounds i8, ptr %10, i64 48
  store i32 %244, ptr %245, align 8, !tbaa !31
  %246 = getelementptr inbounds i8, ptr %10, i64 16
  store i32 %244, ptr %246, align 8, !tbaa !36
  %247 = getelementptr inbounds i8, ptr %0, i64 50
  %248 = load i16, ptr %247, align 2, !tbaa !9
  %249 = sext i16 %248 to i32
  %250 = getelementptr inbounds i8, ptr %10, i64 52
  store i32 %249, ptr %250, align 4, !tbaa !31
  %251 = getelementptr inbounds i8, ptr %10, i64 20
  store i32 %249, ptr %251, align 4, !tbaa !37
  %252 = getelementptr inbounds i8, ptr %0, i64 52
  %253 = load i16, ptr %252, align 4, !tbaa !9
  %254 = sext i16 %253 to i32
  %255 = getelementptr inbounds i8, ptr %10, i64 56
  store i32 %254, ptr %255, align 8, !tbaa !31
  %256 = getelementptr inbounds i8, ptr %10, i64 24
  store i32 %254, ptr %256, align 8, !tbaa !38
  %257 = getelementptr inbounds i8, ptr %0, i64 54
  %258 = load i16, ptr %257, align 2, !tbaa !9
  %259 = sext i16 %258 to i32
  %260 = getelementptr inbounds i8, ptr %10, i64 60
  store i32 %259, ptr %260, align 4, !tbaa !31
  %261 = getelementptr inbounds i8, ptr %10, i64 28
  store i32 %259, ptr %261, align 4, !tbaa !39
  %262 = getelementptr inbounds i8, ptr %10, i64 64
  store i64 1, ptr %262, align 8, !tbaa !40
  %.not237253 = icmp slt i16 %225, 1
  br i1 %.not237253, label %304, label %.lr.ph256

.lr.ph256:                                        ; preds = %._crit_edge
  %263 = zext nneg i32 %226 to i64
  %xtraiter360 = and i64 %263, 7
  %264 = icmp ult i16 %225, 8
  br i1 %264, label %._crit_edge257.unr-lcssa, label %.lr.ph256.new

.lr.ph256.new:                                    ; preds = %.lr.ph256
  %unroll_iter363 = and i64 %263, 32760
  br label %265

265:                                              ; preds = %265, %.lr.ph256.new
  %indvars.iv269 = phi i64 [ 1, %.lr.ph256.new ], [ %indvars.iv.next270.7, %265 ]
  %266 = phi i64 [ 1, %.lr.ph256.new ], [ %298, %265 ]
  %niter364 = phi i64 [ 0, %.lr.ph256.new ], [ %niter364.next.7, %265 ]
  %267 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv269
  %268 = load i16, ptr %267, align 2, !tbaa !9
  %269 = sext i16 %268 to i64
  %270 = mul i64 %266, %269
  %indvars.iv.next270 = add nuw nsw i64 %indvars.iv269, 1
  %271 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv.next270
  %272 = load i16, ptr %271, align 2, !tbaa !9
  %273 = sext i16 %272 to i64
  %274 = mul i64 %270, %273
  %indvars.iv.next270.1 = add nuw nsw i64 %indvars.iv269, 2
  %275 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv.next270.1
  %276 = load i16, ptr %275, align 2, !tbaa !9
  %277 = sext i16 %276 to i64
  %278 = mul i64 %274, %277
  %indvars.iv.next270.2 = add nuw nsw i64 %indvars.iv269, 3
  %279 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv.next270.2
  %280 = load i16, ptr %279, align 2, !tbaa !9
  %281 = sext i16 %280 to i64
  %282 = mul i64 %278, %281
  %indvars.iv.next270.3 = add nuw nsw i64 %indvars.iv269, 4
  %283 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv.next270.3
  %284 = load i16, ptr %283, align 2, !tbaa !9
  %285 = sext i16 %284 to i64
  %286 = mul i64 %282, %285
  %indvars.iv.next270.4 = add nuw nsw i64 %indvars.iv269, 5
  %287 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv.next270.4
  %288 = load i16, ptr %287, align 2, !tbaa !9
  %289 = sext i16 %288 to i64
  %290 = mul i64 %286, %289
  %indvars.iv.next270.5 = add nuw nsw i64 %indvars.iv269, 6
  %291 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv.next270.5
  %292 = load i16, ptr %291, align 2, !tbaa !9
  %293 = sext i16 %292 to i64
  %294 = mul i64 %290, %293
  %indvars.iv.next270.6 = add nuw nsw i64 %indvars.iv269, 7
  %295 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv.next270.6
  %296 = load i16, ptr %295, align 2, !tbaa !9
  %297 = sext i16 %296 to i64
  %298 = mul i64 %294, %297
  %indvars.iv.next270.7 = add nuw nsw i64 %indvars.iv269, 8
  %niter364.next.7 = add i64 %niter364, 8
  %niter364.ncmp.7 = icmp eq i64 %niter364.next.7, %unroll_iter363
  br i1 %niter364.ncmp.7, label %._crit_edge257.unr-lcssa, label %265, !llvm.loop !41

._crit_edge257.unr-lcssa:                         ; preds = %265, %.lr.ph256
  %.lcssa.ph = phi i64 [ poison, %.lr.ph256 ], [ %298, %265 ]
  %indvars.iv269.unr = phi i64 [ 1, %.lr.ph256 ], [ %indvars.iv.next270.7, %265 ]
  %.unr = phi i64 [ 1, %.lr.ph256 ], [ %298, %265 ]
  %lcmp.mod361.not = icmp eq i64 %xtraiter360, 0
  br i1 %lcmp.mod361.not, label %._crit_edge257, label %.epil.preheader359

.epil.preheader359:                               ; preds = %._crit_edge257.unr-lcssa, %.epil.preheader359
  %indvars.iv269.epil = phi i64 [ %indvars.iv.next270.epil, %.epil.preheader359 ], [ %indvars.iv269.unr, %._crit_edge257.unr-lcssa ]
  %299 = phi i64 [ %303, %.epil.preheader359 ], [ %.unr, %._crit_edge257.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader359 ], [ 0, %._crit_edge257.unr-lcssa ]
  %300 = getelementptr inbounds [8 x i16], ptr %17, i64 0, i64 %indvars.iv269.epil
  %301 = load i16, ptr %300, align 2, !tbaa !9
  %302 = sext i16 %301 to i64
  %303 = mul i64 %299, %302
  %indvars.iv.next270.epil = add nuw nsw i64 %indvars.iv269.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter360
  br i1 %epil.iter.cmp.not, label %._crit_edge257, label %.epil.preheader359, !llvm.loop !42

._crit_edge257:                                   ; preds = %.epil.preheader359, %._crit_edge257.unr-lcssa
  %.lcssa = phi i64 [ %.lcssa.ph, %._crit_edge257.unr-lcssa ], [ %303, %.epil.preheader359 ]
  store i64 %.lcssa, ptr %262, align 8, !tbaa !40
  br label %304

304:                                              ; preds = %._crit_edge257, %._crit_edge
  %305 = load i16, ptr %67, align 2, !tbaa !44
  %306 = sext i16 %305 to i32
  %307 = getelementptr inbounds i8, ptr %10, i64 76
  store i32 %306, ptr %307, align 4, !tbaa !45
  %308 = getelementptr inbounds i8, ptr %10, i64 72
  %309 = getelementptr inbounds i8, ptr %10, i64 652
  call void @nifti_datatype_sizes(i32 noundef %306, ptr noundef nonnull %308, ptr noundef nonnull %309)
  %310 = load i32, ptr %308, align 8, !tbaa !46
  %311 = icmp eq i32 %310, 0
  br i1 %311, label %312, label %315

312:                                              ; preds = %304
  %313 = load ptr, ptr @stderr, align 8, !tbaa !5
  %314 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %313, ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.158) #10
  call void @free(ptr noundef nonnull %10) #11
  br label %517

315:                                              ; preds = %304
  %316 = getelementptr inbounds i8, ptr %0, i64 80
  %317 = getelementptr inbounds i8, ptr %10, i64 112
  %318 = getelementptr inbounds i8, ptr %10, i64 80
  %319 = load <4 x float>, ptr %316, align 8, !tbaa !29
  store <4 x float> %319, ptr %317, align 4, !tbaa !29
  store <4 x float> %319, ptr %318, align 8, !tbaa !29
  %320 = getelementptr inbounds i8, ptr %0, i64 96
  %321 = getelementptr inbounds i8, ptr %10, i64 128
  %322 = getelementptr inbounds i8, ptr %10, i64 96
  %323 = load <2 x float>, ptr %320, align 8, !tbaa !29
  store <2 x float> %323, ptr %321, align 4, !tbaa !29
  store <2 x float> %323, ptr %322, align 8, !tbaa !29
  %324 = getelementptr inbounds i8, ptr %0, i64 104
  %325 = load float, ptr %324, align 8, !tbaa !29
  %326 = getelementptr inbounds i8, ptr %10, i64 136
  store float %325, ptr %326, align 4, !tbaa !29
  %327 = getelementptr inbounds i8, ptr %10, i64 104
  store float %325, ptr %327, align 8, !tbaa !47
  %328 = icmp eq i32 %54, 0
  %329 = getelementptr inbounds i8, ptr %0, i64 252
  %330 = load i16, ptr %329, align 4
  %331 = icmp slt i16 %330, 1
  %or.cond27 = select i1 %328, i1 true, i1 %331
  br i1 %or.cond27, label %332, label %349

332:                                              ; preds = %315
  %333 = getelementptr inbounds i8, ptr %10, i64 220
  %334 = extractelement <4 x float> %319, i64 0
  store float %334, ptr %333, align 4, !tbaa !29
  %335 = getelementptr inbounds i8, ptr %10, i64 240
  %336 = extractelement <4 x float> %319, i64 1
  store float %336, ptr %335, align 4, !tbaa !29
  %337 = getelementptr inbounds i8, ptr %10, i64 260
  %338 = extractelement <4 x float> %319, i64 2
  store float %338, ptr %337, align 4, !tbaa !29
  %339 = getelementptr inbounds i8, ptr %10, i64 224
  %340 = getelementptr inbounds i8, ptr %10, i64 244
  %341 = getelementptr inbounds i8, ptr %10, i64 264
  %342 = getelementptr inbounds i8, ptr %10, i64 280
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %339, i8 0, i64 16, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %340, i8 0, i64 16, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %341, i8 0, i64 16, i1 false)
  store float 1.000000e+00, ptr %342, align 4, !tbaa !29
  %343 = getelementptr inbounds i8, ptr %10, i64 156
  store i32 0, ptr %343, align 4, !tbaa !48
  %344 = load i32, ptr @g_opts, align 4, !tbaa !20
  %345 = icmp sgt i32 %344, 1
  br i1 %345, label %346, label %384

346:                                              ; preds = %332
  %347 = load ptr, ptr @stderr, align 8, !tbaa !5
  %348 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %347, ptr noundef nonnull @.str.160) #10
  br label %384

349:                                              ; preds = %315
  %350 = getelementptr inbounds i8, ptr %0, i64 76
  %351 = getelementptr inbounds i8, ptr %0, i64 256
  %352 = getelementptr inbounds i8, ptr %10, i64 192
  %353 = load <4 x float>, ptr %351, align 8
  %354 = call <4 x float> @llvm.fabs.v4f32(<4 x float> %353)
  %355 = fcmp one <4 x float> %354, <float 0x7FF0000000000000, float 0x7FF0000000000000, float 0x7FF0000000000000, float 0x7FF0000000000000>
  %356 = select <4 x i1> %355, <4 x float> %353, <4 x float> zeroinitializer
  store <4 x float> %356, ptr %352, align 8, !tbaa !29
  %357 = getelementptr inbounds i8, ptr %0, i64 272
  %358 = getelementptr inbounds i8, ptr %10, i64 208
  %359 = load <2 x float>, ptr %357, align 8
  %360 = call <2 x float> @llvm.fabs.v2f32(<2 x float> %359)
  %361 = fcmp one <2 x float> %360, <float 0x7FF0000000000000, float 0x7FF0000000000000>
  %362 = select <2 x i1> %361, <2 x float> %359, <2 x float> zeroinitializer
  store <2 x float> %362, ptr %358, align 8, !tbaa !29
  %363 = load float, ptr %350, align 4, !tbaa !29
  %364 = fcmp olt float %363, 0.000000e+00
  %365 = select i1 %364, float -1.000000e+00, float 1.000000e+00
  %366 = getelementptr inbounds i8, ptr %10, i64 216
  store float %365, ptr %366, align 8, !tbaa !49
  %367 = getelementptr inbounds i8, ptr %10, i64 220
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) #11
  %368 = extractelement <4 x float> %356, i64 0
  %369 = extractelement <4 x float> %356, i64 1
  %370 = extractelement <4 x float> %356, i64 2
  %371 = extractelement <4 x float> %356, i64 3
  %372 = extractelement <2 x float> %362, i64 0
  %373 = extractelement <2 x float> %362, i64 1
  %374 = extractelement <4 x float> %319, i64 0
  %375 = extractelement <4 x float> %319, i64 1
  %376 = extractelement <4 x float> %319, i64 2
  call void @nifti_quatern_to_mat44(ptr dead_on_unwind nonnull writable sret(%struct.mat44) align 4 %3, float noundef %368, float noundef %369, float noundef %370, float noundef %371, float noundef %372, float noundef %373, float noundef %374, float noundef %375, float noundef %376, float noundef %365)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %367, ptr noundef nonnull align 4 dereferenceable(64) %3, i64 64, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #11
  %377 = load i16, ptr %329, align 4, !tbaa !51
  %378 = sext i16 %377 to i32
  %379 = getelementptr inbounds i8, ptr %10, i64 156
  store i32 %378, ptr %379, align 4, !tbaa !48
  %380 = load i32, ptr @g_opts, align 4, !tbaa !20
  %381 = icmp sgt i32 %380, 1
  br i1 %381, label %382, label %384

382:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull align 4 dereferenceable(64) %367, i64 64, i1 false), !tbaa.struct !50
  %383 = call i32 @nifti_disp_matrix_orient(ptr noundef nonnull @.str.161, ptr noundef nonnull byval(%struct.mat44) align 8 %4)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #11
  br label %384

384:                                              ; preds = %349, %382, %332, %346
  %385 = getelementptr inbounds i8, ptr %10, i64 284
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #11
  %386 = getelementptr inbounds i8, ptr %10, i64 220
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, ptr noundef nonnull align 4 dereferenceable(64) %386, i64 64, i1 false), !tbaa.struct !50
  call void @nifti_mat44_inverse(ptr dead_on_unwind nonnull writable sret(%struct.mat44) align 4 %5, ptr noundef nonnull byval(%struct.mat44) align 8 %6)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %385, ptr noundef nonnull align 4 dereferenceable(64) %5, i64 64, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #11
  %387 = getelementptr inbounds i8, ptr %0, i64 254
  %388 = load i16, ptr %387, align 2
  %389 = icmp slt i16 %388, 1
  %or.cond31 = select i1 %328, i1 true, i1 %389
  br i1 %or.cond31, label %390, label %397

390:                                              ; preds = %384
  %391 = getelementptr inbounds i8, ptr %10, i64 160
  store i32 0, ptr %391, align 8, !tbaa !52
  %392 = load i32, ptr @g_opts, align 4, !tbaa !20
  %393 = icmp sgt i32 %392, 1
  br i1 %393, label %394, label %416

394:                                              ; preds = %390
  %395 = load ptr, ptr @stderr, align 8, !tbaa !5
  %396 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %395, ptr noundef nonnull @.str.162) #10
  br label %416

397:                                              ; preds = %384
  %398 = getelementptr inbounds i8, ptr %0, i64 280
  %399 = getelementptr inbounds i8, ptr %10, i64 348
  %400 = load <4 x float>, ptr %398, align 8, !tbaa !29
  store <4 x float> %400, ptr %399, align 4, !tbaa !29
  %401 = getelementptr inbounds i8, ptr %0, i64 296
  %402 = getelementptr inbounds i8, ptr %10, i64 364
  %403 = load <4 x float>, ptr %401, align 8, !tbaa !29
  store <4 x float> %403, ptr %402, align 4, !tbaa !29
  %404 = getelementptr inbounds i8, ptr %0, i64 312
  %405 = getelementptr inbounds i8, ptr %10, i64 380
  %406 = load <4 x float>, ptr %404, align 8, !tbaa !29
  store <4 x float> %406, ptr %405, align 4, !tbaa !29
  %407 = getelementptr inbounds i8, ptr %10, i64 396
  store <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 1.000000e+00>, ptr %407, align 4, !tbaa !29
  %408 = getelementptr inbounds i8, ptr %10, i64 412
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, ptr noundef nonnull align 4 dereferenceable(64) %399, i64 64, i1 false), !tbaa.struct !50
  call void @nifti_mat44_inverse(ptr dead_on_unwind nonnull writable sret(%struct.mat44) align 4 %7, ptr noundef nonnull byval(%struct.mat44) align 8 %8)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %408, ptr noundef nonnull align 4 dereferenceable(64) %7, i64 64, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #11
  %409 = load i16, ptr %387, align 2, !tbaa !53
  %410 = sext i16 %409 to i32
  %411 = getelementptr inbounds i8, ptr %10, i64 160
  store i32 %410, ptr %411, align 8, !tbaa !52
  %412 = load i32, ptr @g_opts, align 4, !tbaa !20
  %413 = icmp sgt i32 %412, 1
  br i1 %413, label %414, label %416

414:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef nonnull align 4 dereferenceable(64) %399, i64 64, i1 false), !tbaa.struct !50
  %415 = call i32 @nifti_disp_matrix_orient(ptr noundef nonnull @.str.163, ptr noundef nonnull byval(%struct.mat44) align 8 %9)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #11
  br label %416

416:                                              ; preds = %397, %414, %390, %394
  br i1 %53, label %417, label %485

417:                                              ; preds = %416
  %418 = getelementptr inbounds i8, ptr %0, i64 112
  %419 = getelementptr inbounds i8, ptr %10, i64 140
  %420 = load <2 x float>, ptr %418, align 8
  %421 = call <2 x float> @llvm.fabs.v2f32(<2 x float> %420)
  %422 = fcmp one <2 x float> %421, <float 0x7FF0000000000000, float 0x7FF0000000000000>
  %423 = select <2 x i1> %422, <2 x float> %420, <2 x float> zeroinitializer
  store <2 x float> %423, ptr %419, align 4, !tbaa !29
  %424 = getelementptr inbounds i8, ptr %0, i64 68
  %425 = load i16, ptr %424, align 4, !tbaa !54
  %426 = sext i16 %425 to i32
  %427 = getelementptr inbounds i8, ptr %10, i64 492
  store i32 %426, ptr %427, align 4, !tbaa !55
  %428 = getelementptr inbounds i8, ptr %0, i64 56
  %429 = getelementptr inbounds i8, ptr %10, i64 496
  %430 = load <2 x float>, ptr %428, align 8
  %431 = call <2 x float> @llvm.fabs.v2f32(<2 x float> %430)
  %432 = fcmp one <2 x float> %431, <float 0x7FF0000000000000, float 0x7FF0000000000000>
  %433 = select <2 x i1> %432, <2 x float> %430, <2 x float> zeroinitializer
  store <2 x float> %433, ptr %429, align 8, !tbaa !29
  %434 = getelementptr inbounds i8, ptr %0, i64 64
  %435 = load float, ptr %434, align 8
  %436 = call float @llvm.fabs.f32(float %435)
  %437 = fcmp one float %436, 0x7FF0000000000000
  %438 = select i1 %437, float %435, float 0.000000e+00
  %439 = getelementptr inbounds i8, ptr %10, i64 504
  store float %438, ptr %439, align 8, !tbaa !56
  %440 = getelementptr inbounds i8, ptr %0, i64 136
  %441 = load float, ptr %440, align 8
  %442 = call float @llvm.fabs.f32(float %441)
  %443 = fcmp one float %442, 0x7FF0000000000000
  %444 = select i1 %443, float %441, float 0.000000e+00
  %445 = getelementptr inbounds i8, ptr %10, i64 476
  store float %444, ptr %445, align 4, !tbaa !57
  %446 = getelementptr inbounds i8, ptr %10, i64 508
  %447 = getelementptr inbounds i8, ptr %0, i64 328
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(15) %446, ptr noundef nonnull align 8 dereferenceable(15) %447, i64 15, i1 false)
  %448 = getelementptr inbounds i8, ptr %10, i64 523
  store i8 0, ptr %448, align 1, !tbaa !15
  %449 = getelementptr inbounds i8, ptr %0, i64 123
  %450 = load <16 x i8>, ptr %449, align 1
  %451 = getelementptr inbounds i8, ptr %10, i64 480
  %452 = shufflevector <16 x i8> %450, <16 x i8> poison, <2 x i32> zeroinitializer
  %453 = and <2 x i8> %452, <i8 7, i8 56>
  %454 = zext nneg <2 x i8> %453 to <2 x i32>
  store <2 x i32> %454, ptr %451, align 8, !tbaa !31
  %455 = getelementptr inbounds i8, ptr %0, i64 39
  %456 = load i8, ptr %455, align 1, !tbaa !58
  %457 = getelementptr inbounds i8, ptr %10, i64 164
  %458 = lshr i8 %456, 2
  %459 = insertelement <2 x i8> poison, i8 %456, i64 0
  %460 = insertelement <2 x i8> %459, i8 %458, i64 1
  %461 = and <2 x i8> %460, <i8 3, i8 3>
  %462 = zext nneg <2 x i8> %461 to <2 x i32>
  store <2 x i32> %462, ptr %457, align 4, !tbaa !31
  %463 = lshr i8 %456, 4
  %464 = and i8 %463, 3
  %465 = zext nneg i8 %464 to i32
  %466 = getelementptr inbounds i8, ptr %10, i64 172
  store i32 %465, ptr %466, align 4, !tbaa !59
  %467 = getelementptr inbounds i8, ptr %0, i64 122
  %468 = load i8, ptr %467, align 2, !tbaa !60
  %469 = sext i8 %468 to i32
  %470 = getelementptr inbounds i8, ptr %10, i64 176
  store i32 %469, ptr %470, align 8, !tbaa !61
  %471 = getelementptr inbounds i8, ptr %0, i64 74
  %472 = load i16, ptr %471, align 2, !tbaa !62
  %473 = sext i16 %472 to i32
  %474 = getelementptr inbounds i8, ptr %10, i64 180
  store i32 %473, ptr %474, align 4, !tbaa !63
  %475 = getelementptr inbounds i8, ptr %0, i64 120
  %476 = load i16, ptr %475, align 8, !tbaa !64
  %477 = sext i16 %476 to i32
  %478 = getelementptr inbounds i8, ptr %10, i64 184
  store i32 %477, ptr %478, align 8, !tbaa !65
  %479 = getelementptr inbounds i8, ptr %0, i64 132
  %480 = load float, ptr %479, align 4
  %481 = call float @llvm.fabs.f32(float %480)
  %482 = fcmp one float %481, 0x7FF0000000000000
  %483 = select i1 %482, float %480, float 0.000000e+00
  %484 = getelementptr inbounds i8, ptr %10, i64 188
  store float %483, ptr %484, align 4, !tbaa !66
  br label %485

485:                                              ; preds = %417, %416
  %486 = getelementptr inbounds i8, ptr %10, i64 148
  %487 = getelementptr inbounds i8, ptr %0, i64 124
  %488 = load <2 x float>, ptr %487, align 4
  %489 = shufflevector <2 x float> %488, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %490 = call <2 x float> @llvm.fabs.v2f32(<2 x float> %489)
  %491 = fcmp one <2 x float> %490, <float 0x7FF0000000000000, float 0x7FF0000000000000>
  %492 = select <2 x i1> %491, <2 x float> %489, <2 x float> zeroinitializer
  store <2 x float> %492, ptr %486, align 4, !tbaa !29
  %493 = getelementptr inbounds i8, ptr %10, i64 524
  %494 = getelementptr inbounds i8, ptr %0, i64 148
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(79) %493, ptr noundef nonnull align 4 dereferenceable(79) %494, i64 79, i1 false)
  %495 = getelementptr inbounds i8, ptr %10, i64 603
  store i8 0, ptr %495, align 1, !tbaa !15
  %496 = getelementptr inbounds i8, ptr %10, i64 604
  %497 = getelementptr inbounds i8, ptr %0, i64 228
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(23) %496, ptr noundef nonnull align 4 dereferenceable(23) %497, i64 23, i1 false)
  %498 = getelementptr inbounds i8, ptr %10, i64 627
  store i8 0, ptr %498, align 1, !tbaa !15
  %499 = load i8, ptr %217, align 1
  %500 = icmp eq i8 %499, 43
  %501 = select i1 %53, i1 %500, i1 false
  %502 = getelementptr inbounds i8, ptr %0, i64 108
  %503 = load float, ptr %502, align 4, !tbaa !67
  %504 = fptosi float %503 to i32
  %spec.store.select = call i32 @llvm.smax.i32(i32 %504, i32 348)
  %.0225 = select i1 %501, i32 %spec.store.select, i32 %504
  %505 = getelementptr inbounds i8, ptr %10, i64 648
  store i32 %.0225, ptr %505, align 8, !tbaa !68
  %.not238 = icmp eq ptr %1, null
  br i1 %.not238, label %513, label %506

506:                                              ; preds = %485
  %507 = call i32 @nifti_set_filenames(ptr noundef nonnull %10, ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0)
  %508 = load ptr, ptr %16, align 8, !tbaa !69
  %509 = icmp eq ptr %508, null
  br i1 %509, label %510, label %514

510:                                              ; preds = %506
  %511 = load ptr, ptr @stderr, align 8, !tbaa !5
  %512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %511, ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.164) #10
  call void @free(ptr noundef nonnull %10) #11
  br label %517

513:                                              ; preds = %485
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %15, i8 0, i64 16, i1 false)
  br label %514

514:                                              ; preds = %506, %513
  %515 = getelementptr inbounds i8, ptr %10, i64 672
  store i32 0, ptr %515, align 8, !tbaa !70
  %516 = getelementptr inbounds i8, ptr %10, i64 680
  store ptr null, ptr %516, align 8, !tbaa !71
  br label %517

517:                                              ; preds = %514, %510, %312, %132, %69, %27, %25, %11
  %.0 = phi ptr [ null, %25 ], [ null, %27 ], [ null, %69 ], [ null, %132 ], [ null, %312 ], [ null, %510 ], [ %10, %514 ], [ null, %11 ]
  ret ptr %.0
}

; Function Attrs: nounwind uwtable
declare hidden i32 @need_nhdr_swap(i16 noundef signext, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i1 @llvm.is.fpclass.f32(float, i32 immarg) #6

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fabs.f32(float) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #7

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fabs.v4f32(<4 x float>) #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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { nounwind allocsize(0,1) }
attributes #10 = { cold nounwind }
attributes #11 = { nounwind }

!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 = !{!"short", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"nifti_1_header", !13, i64 0, !7, i64 4, !7, i64 14, !13, i64 32, !10, i64 36, !7, i64 38, !7, i64 39, !7, i64 40, !14, i64 56, !14, i64 60, !14, i64 64, !10, i64 68, !10, i64 70, !10, i64 72, !10, i64 74, !7, i64 76, !14, i64 108, !14, i64 112, !14, i64 116, !10, i64 120, !7, i64 122, !7, i64 123, !14, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !13, i64 140, !13, i64 144, !7, i64 148, !7, i64 228, !10, i64 252, !10, i64 254, !14, i64 256, !14, i64 260, !14, i64 264, !14, i64 268, !14, i64 272, !14, i64 276, !7, i64 280, !7, i64 296, !7, i64 312, !7, i64 328, !7, i64 344}
!13 = !{!"int", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !13, i64 688}
!17 = !{!"", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !7, i64 32, !18, i64 64, !13, i64 72, !13, 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, !13, i64 156, !13, i64 160, !13, i64 164, !13, i64 168, !13, i64 172, !13, i64 176, !13, i64 180, !13, 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, !19, i64 220, !19, i64 284, !19, i64 348, !19, i64 412, !14, i64 476, !13, i64 480, !13, i64 484, !13, i64 488, !13, 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, !13, i64 648, !13, i64 652, !13, i64 656, !6, i64 664, !13, i64 672, !6, i64 680, !13, i64 688}
!18 = !{!"long", !7, i64 0}
!19 = !{!"", !7, i64 0}
!20 = !{!21, !13, i64 0}
!21 = !{!"", !13, i64 0, !13, i64 4, !13, i64 8}
!22 = distinct !{!22, !23, !24, !25}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !23, !24, !25}
!27 = distinct !{!27, !23, !25, !24}
!28 = distinct !{!28, !23, !25, !24}
!29 = !{!14, !14, i64 0}
!30 = distinct !{!30, !23}
!31 = !{!13, !13, i64 0}
!32 = !{!17, !13, i64 0}
!33 = !{!17, !13, i64 4}
!34 = !{!17, !13, i64 8}
!35 = !{!17, !13, i64 12}
!36 = !{!17, !13, i64 16}
!37 = !{!17, !13, i64 20}
!38 = !{!17, !13, i64 24}
!39 = !{!17, !13, i64 28}
!40 = !{!17, !18, i64 64}
!41 = distinct !{!41, !23}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.unroll.disable"}
!44 = !{!12, !10, i64 70}
!45 = !{!17, !13, i64 76}
!46 = !{!17, !13, i64 72}
!47 = !{!17, !14, i64 104}
!48 = !{!17, !13, i64 156}
!49 = !{!17, !14, i64 216}
!50 = !{i64 0, i64 64, !15}
!51 = !{!12, !10, i64 252}
!52 = !{!17, !13, i64 160}
!53 = !{!12, !10, i64 254}
!54 = !{!12, !10, i64 68}
!55 = !{!17, !13, i64 492}
!56 = !{!17, !14, i64 504}
!57 = !{!17, !14, i64 476}
!58 = !{!12, !7, i64 39}
!59 = !{!17, !13, i64 172}
!60 = !{!12, !7, i64 122}
!61 = !{!17, !13, i64 176}
!62 = !{!12, !10, i64 74}
!63 = !{!17, !13, i64 180}
!64 = !{!12, !10, i64 120}
!65 = !{!17, !13, i64 184}
!66 = !{!17, !14, i64 188}
!67 = !{!12, !14, i64 108}
!68 = !{!17, !13, i64 648}
!69 = !{!17, !6, i64 640}
!70 = !{!17, !13, i64 672}
!71 = !{!17, !6, i64 680}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MemCpyOptPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass