; LLVM IR from ConcealNetwork/conceal-desktop :: libqrencode (qrenc)

; 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.option = type { ptr, i32, ptr, i32 }

@optstring = external hidden global ptr, align 8
@options = external hidden constant [24 x %struct.option], align 16
@optarg = external global ptr, align 8
@size = external hidden global i32, align 4
@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [18 x i8], align 1
@version = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [21 x i8], align 1
@level = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [19 x i8], align 1
@margin = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@dpi = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@image_type = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [24 x i8], align 1
@structured = external hidden global i32, align 4
@hint = external hidden global i32, align 4
@casesensitive = external hidden global i32, align 4
@eightbit = external hidden global i32, align 4
@micro = external hidden global i32, align 4
@fg_color = external hidden global [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [33 x i8], align 1
@bg_color = external hidden global [4 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [30 x i8], align 1
@optind = external global i32, align 4
@stdin = external global ptr, align 8
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [64 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  store i32 -1, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  store ptr null, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  store ptr null, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  store ptr null, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 0, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  br label %13

13:                                               ; preds = %198, %2
  %14 = load i32, ptr %4, align 4, !tbaa !5
  %15 = load ptr, ptr %5, align 8, !tbaa !9
  %16 = load ptr, ptr @optstring, align 8, !tbaa !9
  %17 = call i32 @getopt_long(i32 noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef @options, ptr noundef %7) #7
  store i32 %17, ptr %6, align 4, !tbaa !5
  %18 = icmp ne i32 %17, -1
  br i1 %18, label %19, label %199

19:                                               ; preds = %13
  %20 = load i32, ptr %6, align 4, !tbaa !5
  switch i32 %20, label %195 [
    i32 104, label %21
    i32 111, label %27
    i32 114, label %29
    i32 115, label %31
    i32 118, label %41
    i32 108, label %51
    i32 109, label %64
    i32 100, label %74
    i32 116, label %84
    i32 83, label %172
    i32 107, label %173
    i32 99, label %174
    i32 105, label %175
    i32 56, label %176
    i32 77, label %177
    i32 102, label %178
    i32 98, label %186
    i32 86, label %194
    i32 0, label %198
  ]

21:                                               ; preds = %19
  %22 = load i32, ptr %7, align 4, !tbaa !5
  %23 = icmp eq i32 %22, 0
  br i1 %23, label %24, label %25

24:                                               ; preds = %21
  call void @usage(i32 noundef 1, i32 noundef 1, i32 noundef 0)
  br label %26

25:                                               ; preds = %21
  call void @usage(i32 noundef 1, i32 noundef 0, i32 noundef 0)
  br label %26

26:                                               ; preds = %25, %24
  call void @exit(i32 noundef 0) #8
  unreachable

27:                                               ; preds = %19
  %28 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %28, ptr %8, align 8, !tbaa !9
  br label %198

29:                                               ; preds = %19
  %30 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %30, ptr %9, align 8, !tbaa !9
  br label %198

31:                                               ; preds = %19
  %32 = load ptr, ptr @optarg, align 8, !tbaa !9
  %33 = call i32 @atoi(ptr noundef %32) #9
  store i32 %33, ptr @size, align 4, !tbaa !5
  %34 = load i32, ptr @size, align 4, !tbaa !5
  %35 = icmp sle i32 %34, 0
  br i1 %35, label %36, label %40

36:                                               ; preds = %31
  %37 = load ptr, ptr @stderr, align 8, !tbaa !9
  %38 = load i32, ptr @size, align 4, !tbaa !5
  %39 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %37, ptr noundef @.str, i32 noundef %38) #7
  call void @exit(i32 noundef 1) #8
  unreachable

40:                                               ; preds = %31
  br label %198

41:                                               ; preds = %19
  %42 = load ptr, ptr @optarg, align 8, !tbaa !9
  %43 = call i32 @atoi(ptr noundef %42) #9
  store i32 %43, ptr @version, align 4, !tbaa !5
  %44 = load i32, ptr @version, align 4, !tbaa !5
  %45 = icmp slt i32 %44, 0
  br i1 %45, label %46, label %50

46:                                               ; preds = %41
  %47 = load ptr, ptr @stderr, align 8, !tbaa !9
  %48 = load i32, ptr @version, align 4, !tbaa !5
  %49 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %47, ptr noundef @.str.1, i32 noundef %48) #7
  call void @exit(i32 noundef 1) #8
  unreachable

50:                                               ; preds = %41
  br label %198

51:                                               ; preds = %19
  %52 = load ptr, ptr @optarg, align 8, !tbaa !9
  %53 = load i8, ptr %52, align 1, !tbaa !11
  %54 = sext i8 %53 to i32
  switch i32 %54, label %59 [
    i32 108, label %55
    i32 76, label %55
    i32 109, label %56
    i32 77, label %56
    i32 113, label %57
    i32 81, label %57
    i32 104, label %58
    i32 72, label %58
  ]

55:                                               ; preds = %51, %51
  store i32 0, ptr @level, align 4, !tbaa !5
  br label %63

56:                                               ; preds = %51, %51
  store i32 1, ptr @level, align 4, !tbaa !5
  br label %63

57:                                               ; preds = %51, %51
  store i32 2, ptr @level, align 4, !tbaa !5
  br label %63

58:                                               ; preds = %51, %51
  store i32 3, ptr @level, align 4, !tbaa !5
  br label %63

59:                                               ; preds = %51
  %60 = load ptr, ptr @stderr, align 8, !tbaa !9
  %61 = load ptr, ptr @optarg, align 8, !tbaa !9
  %62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %60, ptr noundef @.str.2, ptr noundef %61) #7
  call void @exit(i32 noundef 1) #8
  unreachable

63:                                               ; preds = %58, %57, %56, %55
  br label %198

64:                                               ; preds = %19
  %65 = load ptr, ptr @optarg, align 8, !tbaa !9
  %66 = call i32 @atoi(ptr noundef %65) #9
  store i32 %66, ptr @margin, align 4, !tbaa !5
  %67 = load i32, ptr @margin, align 4, !tbaa !5
  %68 = icmp slt i32 %67, 0
  br i1 %68, label %69, label %73

69:                                               ; preds = %64
  %70 = load ptr, ptr @stderr, align 8, !tbaa !9
  %71 = load i32, ptr @margin, align 4, !tbaa !5
  %72 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %70, ptr noundef @.str.3, i32 noundef %71) #7
  call void @exit(i32 noundef 1) #8
  unreachable

73:                                               ; preds = %64
  br label %198

74:                                               ; preds = %19
  %75 = load ptr, ptr @optarg, align 8, !tbaa !9
  %76 = call i32 @atoi(ptr noundef %75) #9
  store i32 %76, ptr @dpi, align 4, !tbaa !5
  %77 = load i32, ptr @dpi, align 4, !tbaa !5
  %78 = icmp slt i32 %77, 0
  br i1 %78, label %79, label %83

79:                                               ; preds = %74
  %80 = load ptr, ptr @stderr, align 8, !tbaa !9
  %81 = load i32, ptr @dpi, align 4, !tbaa !5
  %82 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %80, ptr noundef @.str.4, i32 noundef %81) #7
  call void @exit(i32 noundef 1) #8
  unreachable

83:                                               ; preds = %74
  br label %198

84:                                               ; preds = %19
  %85 = load ptr, ptr @optarg, align 8, !tbaa !9
  %86 = call i32 @strcasecmp(ptr noundef %85, ptr noundef @.str.5) #9
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %88, label %89

88:                                               ; preds = %84
  store i32 1, ptr @image_type, align 4, !tbaa !5
  br label %171

89:                                               ; preds = %84
  %90 = load ptr, ptr @optarg, align 8, !tbaa !9
  %91 = call i32 @strcasecmp(ptr noundef %90, ptr noundef @.str.6) #9
  %92 = icmp eq i32 %91, 0
  br i1 %92, label %93, label %94

93:                                               ; preds = %89
  store i32 0, ptr @image_type, align 4, !tbaa !5
  br label %170

94:                                               ; preds = %89
  %95 = load ptr, ptr @optarg, align 8, !tbaa !9
  %96 = call i32 @strcasecmp(ptr noundef %95, ptr noundef @.str.7) #9
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %94
  store i32 2, ptr @image_type, align 4, !tbaa !5
  br label %169

99:                                               ; preds = %94
  %100 = load ptr, ptr @optarg, align 8, !tbaa !9
  %101 = call i32 @strcasecmp(ptr noundef %100, ptr noundef @.str.8) #9
  %102 = icmp eq i32 %101, 0
  br i1 %102, label %103, label %104

103:                                              ; preds = %99
  store i32 3, ptr @image_type, align 4, !tbaa !5
  br label %168

104:                                              ; preds = %99
  %105 = load ptr, ptr @optarg, align 8, !tbaa !9
  %106 = call i32 @strcasecmp(ptr noundef %105, ptr noundef @.str.9) #9
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %108, label %109

108:                                              ; preds = %104
  store i32 4, ptr @image_type, align 4, !tbaa !5
  br label %167

109:                                              ; preds = %104
  %110 = load ptr, ptr @optarg, align 8, !tbaa !9
  %111 = call i32 @strcasecmp(ptr noundef %110, ptr noundef @.str.10) #9
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %113, label %114

113:                                              ; preds = %109
  store i32 5, ptr @image_type, align 4, !tbaa !5
  br label %166

114:                                              ; preds = %109
  %115 = load ptr, ptr @optarg, align 8, !tbaa !9
  %116 = call i32 @strcasecmp(ptr noundef %115, ptr noundef @.str.11) #9
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %119

118:                                              ; preds = %114
  store i32 6, ptr @image_type, align 4, !tbaa !5
  br label %165

119:                                              ; preds = %114
  %120 = load ptr, ptr @optarg, align 8, !tbaa !9
  %121 = call i32 @strcasecmp(ptr noundef %120, ptr noundef @.str.12) #9
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %123, label %124

123:                                              ; preds = %119
  store i32 8, ptr @image_type, align 4, !tbaa !5
  br label %164

124:                                              ; preds = %119
  %125 = load ptr, ptr @optarg, align 8, !tbaa !9
  %126 = call i32 @strcasecmp(ptr noundef %125, ptr noundef @.str.13) #9
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  store i32 7, ptr @image_type, align 4, !tbaa !5
  br label %163

129:                                              ; preds = %124
  %130 = load ptr, ptr @optarg, align 8, !tbaa !9
  %131 = call i32 @strcasecmp(ptr noundef %130, ptr noundef @.str.14) #9
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %133, label %134

133:                                              ; preds = %129
  store i32 9, ptr @image_type, align 4, !tbaa !5
  br label %162

134:                                              ; preds = %129
  %135 = load ptr, ptr @optarg, align 8, !tbaa !9
  %136 = call i32 @strcasecmp(ptr noundef %135, ptr noundef @.str.15) #9
  %137 = icmp eq i32 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %134
  store i32 10, ptr @image_type, align 4, !tbaa !5
  br label %161

139:                                              ; preds = %134
  %140 = load ptr, ptr @optarg, align 8, !tbaa !9
  %141 = call i32 @strcasecmp(ptr noundef %140, ptr noundef @.str.16) #9
  %142 = icmp eq i32 %141, 0
  br i1 %142, label %143, label %144

143:                                              ; preds = %139
  store i32 11, ptr @image_type, align 4, !tbaa !5
  br label %160

144:                                              ; preds = %139
  %145 = load ptr, ptr @optarg, align 8, !tbaa !9
  %146 = call i32 @strcasecmp(ptr noundef %145, ptr noundef @.str.17) #9
  %147 = icmp eq i32 %146, 0
  br i1 %147, label %148, label %149

148:                                              ; preds = %144
  store i32 12, ptr @image_type, align 4, !tbaa !5
  br label %159

149:                                              ; preds = %144
  %150 = load ptr, ptr @optarg, align 8, !tbaa !9
  %151 = call i32 @strcasecmp(ptr noundef %150, ptr noundef @.str.18) #9
  %152 = icmp eq i32 %151, 0
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  store i32 13, ptr @image_type, align 4, !tbaa !5
  br label %158

154:                                              ; preds = %149
  %155 = load ptr, ptr @stderr, align 8, !tbaa !9
  %156 = load ptr, ptr @optarg, align 8, !tbaa !9
  %157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %155, ptr noundef @.str.19, ptr noundef %156) #7
  call void @exit(i32 noundef 1) #8
  unreachable

158:                                              ; preds = %153
  br label %159

159:                                              ; preds = %158, %148
  br label %160

160:                                              ; preds = %159, %143
  br label %161

161:                                              ; preds = %160, %138
  br label %162

162:                                              ; preds = %161, %133
  br label %163

163:                                              ; preds = %162, %128
  br label %164

164:                                              ; preds = %163, %123
  br label %165

165:                                              ; preds = %164, %118
  br label %166

166:                                              ; preds = %165, %113
  br label %167

167:                                              ; preds = %166, %108
  br label %168

168:                                              ; preds = %167, %103
  br label %169

169:                                              ; preds = %168, %98
  br label %170

170:                                              ; preds = %169, %93
  br label %171

171:                                              ; preds = %170, %88
  br label %198

172:                                              ; preds = %19
  store i32 1, ptr @structured, align 4, !tbaa !5
  br label %198

173:                                              ; preds = %19
  store i32 3, ptr @hint, align 4, !tbaa !5
  br label %198

174:                                              ; preds = %19
  store i32 1, ptr @casesensitive, align 4, !tbaa !5
  br label %198

175:                                              ; preds = %19
  store i32 0, ptr @casesensitive, align 4, !tbaa !5
  br label %198

176:                                              ; preds = %19
  store i32 1, ptr @eightbit, align 4, !tbaa !5
  br label %198

177:                                              ; preds = %19
  store i32 1, ptr @micro, align 4, !tbaa !5
  br label %198

178:                                              ; preds = %19
  %179 = load ptr, ptr @optarg, align 8, !tbaa !9
  %180 = call i32 @color_set(ptr noundef @fg_color, ptr noundef %179)
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %182, label %185

182:                                              ; preds = %178
  %183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef @.str.20) #7
  call void @exit(i32 noundef 1) #8
  unreachable

185:                                              ; preds = %178
  br label %198

186:                                              ; preds = %19
  %187 = load ptr, ptr @optarg, align 8, !tbaa !9
  %188 = call i32 @color_set(ptr noundef @bg_color, ptr noundef %187)
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %190, label %193

190:                                              ; preds = %186
  %191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %192 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %191, ptr noundef @.str.21) #7
  call void @exit(i32 noundef 1) #8
  unreachable

193:                                              ; preds = %186
  br label %198

194:                                              ; preds = %19
  call void @usage(i32 noundef 0, i32 noundef 0, i32 noundef 0)
  call void @exit(i32 noundef 0) #8
  unreachable

195:                                              ; preds = %19
  %196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %197 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %196, ptr noundef @.str.22) #7
  call void @exit(i32 noundef 1) #8
  unreachable

198:                                              ; preds = %193, %185, %177, %176, %175, %174, %173, %172, %171, %83, %73, %63, %50, %40, %29, %27, %19
  br label %13, !llvm.loop !12

199:                                              ; preds = %13
  %200 = load i32, ptr %4, align 4, !tbaa !5
  %201 = icmp eq i32 %200, 1
  br i1 %201, label %202, label %203

202:                                              ; preds = %199
  call void @usage(i32 noundef 1, i32 noundef 0, i32 noundef 1)
  call void @exit(i32 noundef 1) #8
  unreachable

203:                                              ; preds = %199
  %204 = load ptr, ptr %8, align 8, !tbaa !9
  %205 = icmp eq ptr %204, null
  br i1 %205, label %206, label %212

206:                                              ; preds = %203
  %207 = load i32, ptr @image_type, align 4, !tbaa !5
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %212

209:                                              ; preds = %206
  %210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %211 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %210, ptr noundef @.str.23) #7
  call void @exit(i32 noundef 1) #8
  unreachable

212:                                              ; preds = %206, %203
  %213 = load i32, ptr @optind, align 4, !tbaa !5
  %214 = load i32, ptr %4, align 4, !tbaa !5
  %215 = icmp slt i32 %213, %214
  br i1 %215, label %216, label %225

216:                                              ; preds = %212
  %217 = load ptr, ptr %5, align 8, !tbaa !9
  %218 = load i32, ptr @optind, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds ptr, ptr %217, i64 %219
  %221 = load ptr, ptr %220, align 8, !tbaa !9
  store ptr %221, ptr %10, align 8, !tbaa !9
  %222 = load ptr, ptr %10, align 8, !tbaa !9
  %223 = call i64 @strlen(ptr noundef %222) #9
  %224 = trunc i64 %223 to i32
  store i32 %224, ptr %11, align 4, !tbaa !5
  br label %225

225:                                              ; preds = %216, %212
  %226 = load ptr, ptr %10, align 8, !tbaa !9
  %227 = icmp eq ptr %226, null
  br i1 %227, label %228, label %247

228:                                              ; preds = %225
  %229 = load ptr, ptr %9, align 8, !tbaa !9
  %230 = icmp eq ptr %229, null
  br i1 %230, label %231, label %233

231:                                              ; preds = %228
  %232 = load ptr, ptr @stdin, align 8, !tbaa !9
  br label %236

233:                                              ; preds = %228
  %234 = load ptr, ptr %9, align 8, !tbaa !9
  %235 = call noalias ptr @fopen(ptr noundef %234, ptr noundef @.str.24)
  br label %236

236:                                              ; preds = %233, %231
  %237 = phi ptr [ %232, %231 ], [ %235, %233 ]
  store ptr %237, ptr %12, align 8, !tbaa !9
  %238 = load ptr, ptr %12, align 8, !tbaa !9
  %239 = icmp eq ptr %238, null
  br i1 %239, label %240, label %244

240:                                              ; preds = %236
  %241 = load ptr, ptr @stderr, align 8, !tbaa !9
  %242 = load ptr, ptr %9, align 8, !tbaa !9
  %243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %241, ptr noundef @.str.25, ptr noundef %242) #7
  call void @exit(i32 noundef 1) #8
  unreachable

244:                                              ; preds = %236
  %245 = load ptr, ptr %12, align 8, !tbaa !9
  %246 = call ptr @readFile(ptr noundef %245, ptr noundef %11)
  store ptr %246, ptr %10, align 8, !tbaa !9
  br label %247

247:                                              ; preds = %244, %225
  %248 = load i32, ptr @micro, align 4, !tbaa !5
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %256

250:                                              ; preds = %247
  %251 = load i32, ptr @version, align 4, !tbaa !5
  %252 = icmp sgt i32 %251, 4
  br i1 %252, label %253, label %256

253:                                              ; preds = %250
  %254 = load ptr, ptr @stderr, align 8, !tbaa !9
  %255 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %254, ptr noundef @.str.26, i32 noundef 4) #7
  call void @exit(i32 noundef 1) #8
  unreachable

256:                                              ; preds = %250, %247
  %257 = load i32, ptr @micro, align 4, !tbaa !5
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %265, label %259

259:                                              ; preds = %256
  %260 = load i32, ptr @version, align 4, !tbaa !5
  %261 = icmp sgt i32 %260, 40
  br i1 %261, label %262, label %265

262:                                              ; preds = %259
  %263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %263, ptr noundef @.str.26, i32 noundef 40) #7
  call void @exit(i32 noundef 1) #8
  unreachable

265:                                              ; preds = %259, %256
  br label %266

266:                                              ; preds = %265
  %267 = load i32, ptr @margin, align 4, !tbaa !5
  %268 = icmp slt i32 %267, 0
  br i1 %268, label %269, label %275

269:                                              ; preds = %266
  %270 = load i32, ptr @micro, align 4, !tbaa !5
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %273

272:                                              ; preds = %269
  store i32 2, ptr @margin, align 4, !tbaa !5
  br label %274

273:                                              ; preds = %269
  store i32 4, ptr @margin, align 4, !tbaa !5
  br label %274

274:                                              ; preds = %273, %272
  br label %275

275:                                              ; preds = %274, %266
  %276 = load i32, ptr @micro, align 4, !tbaa !5
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %278, label %285

278:                                              ; preds = %275
  %279 = load i32, ptr @structured, align 4, !tbaa !5
  %280 = icmp ne i32 %279, 0
  br i1 %280, label %281, label %284

281:                                              ; preds = %278
  %282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %283 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %282, ptr noundef @.str.27) #7
  call void @exit(i32 noundef 1) #8
  unreachable

284:                                              ; preds = %278
  br label %285

285:                                              ; preds = %284, %275
  %286 = load i32, ptr @structured, align 4, !tbaa !5
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %298

288:                                              ; preds = %285
  %289 = load i32, ptr @version, align 4, !tbaa !5
  %290 = icmp eq i32 %289, 0
  br i1 %290, label %291, label %294

291:                                              ; preds = %288
  %292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %293 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %292, ptr noundef @.str.28) #7
  call void @exit(i32 noundef 1) #8
  unreachable

294:                                              ; preds = %288
  %295 = load ptr, ptr %10, align 8, !tbaa !9
  %296 = load i32, ptr %11, align 4, !tbaa !5
  %297 = load ptr, ptr %8, align 8, !tbaa !9
  call void @qrencodeStructured(ptr noundef %295, i32 noundef %296, ptr noundef %297)
  br label %302

298:                                              ; preds = %285
  %299 = load ptr, ptr %10, align 8, !tbaa !9
  %300 = load i32, ptr %11, align 4, !tbaa !5
  %301 = load ptr, ptr %8, align 8, !tbaa !9
  call void @qrencode(ptr noundef %299, i32 noundef %300, ptr noundef %301)
  br label %302

302:                                              ; preds = %298, %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  ret i32 0
}

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

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

; Function Attrs: nounwind uwtable
declare hidden void @usage(i32 noundef, i32 noundef, i32 noundef) #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #3

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #4

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @color_set(ptr noundef, ptr noundef) #0

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

declare noalias ptr @fopen(ptr noundef, ptr noundef) #6

; Function Attrs: nounwind uwtable
declare hidden ptr @readFile(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden void @qrencodeStructured(ptr noundef, i32 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden void @qrencode(ptr noundef, i32 noundef, ptr noundef) #0

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}


; 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.option = type { ptr, i32, ptr, i32 }

@optstring = external hidden local_unnamed_addr global ptr, align 8
@options = external hidden constant [24 x %struct.option], align 16
@optarg = external local_unnamed_addr global ptr, align 8
@size = external hidden local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [18 x i8], align 1
@version = external hidden local_unnamed_addr global i32, align 4
@.str.1 = external hidden unnamed_addr constant [21 x i8], align 1
@level = external hidden local_unnamed_addr global i32, align 4
@.str.2 = external hidden unnamed_addr constant [19 x i8], align 1
@margin = external hidden local_unnamed_addr global i32, align 4
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@dpi = external hidden local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@image_type = external hidden local_unnamed_addr global i32, align 4
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [24 x i8], align 1
@structured = external hidden local_unnamed_addr global i32, align 4
@hint = external hidden local_unnamed_addr global i32, align 4
@casesensitive = external hidden local_unnamed_addr global i32, align 4
@eightbit = external hidden local_unnamed_addr global i32, align 4
@micro = external hidden local_unnamed_addr global i32, align 4
@fg_color = external hidden global [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [33 x i8], align 1
@bg_color = external hidden global [4 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [30 x i8], align 1
@optind = external local_unnamed_addr global i32, align 4
@stdin = external local_unnamed_addr global ptr, align 8
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [64 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #8
  store i32 -1, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #8
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %5

5:                                                ; preds = %.backedge, %2
  %.026 = phi ptr [ null, %2 ], [ %.026.be, %.backedge ]
  %.0 = phi ptr [ null, %2 ], [ %.0.be, %.backedge ]
  %6 = load ptr, ptr @optstring, align 8, !tbaa !9
  %7 = call i32 @getopt_long(i32 noundef %0, ptr noundef %1, ptr noundef %6, ptr noundef nonnull @options, ptr noundef nonnull %3) #8
  switch i32 %7, label %132 [
    i32 -1, label %135
    i32 104, label %8
    i32 111, label %11
    i32 114, label %13
    i32 115, label %15
    i32 118, label %22
    i32 108, label %29
    i32 109, label %39
    i32 100, label %46
    i32 116, label %53
    i32 83, label %113
    i32 107, label %114
    i32 99, label %115
    i32 105, label %116
    i32 56, label %117
    i32 77, label %118
    i32 102, label %119
    i32 98, label %125
    i32 86, label %131
    i32 0, label %.backedge
  ]

.backedge:                                        ; preds = %5, %125, %119, %57, %65, %73, %81, %89, %97, %105, %109, %101, %93, %85, %77, %69, %61, %46, %39, %32, %33, %34, %35, %22, %15, %118, %117, %116, %115, %114, %113, %13, %11
  %.026.be = phi ptr [ %.026, %125 ], [ %.026, %119 ], [ %.026, %118 ], [ %.026, %117 ], [ %.026, %116 ], [ %.026, %115 ], [ %.026, %114 ], [ %.026, %113 ], [ %.026, %57 ], [ %.026, %61 ], [ %.026, %65 ], [ %.026, %69 ], [ %.026, %73 ], [ %.026, %77 ], [ %.026, %81 ], [ %.026, %85 ], [ %.026, %89 ], [ %.026, %93 ], [ %.026, %97 ], [ %.026, %101 ], [ %.026, %105 ], [ %.026, %109 ], [ %.026, %46 ], [ %.026, %39 ], [ %.026, %35 ], [ %.026, %34 ], [ %.026, %33 ], [ %.026, %32 ], [ %.026, %22 ], [ %.026, %15 ], [ %14, %13 ], [ %.026, %11 ], [ %.026, %5 ]
  %.0.be = phi ptr [ %.0, %125 ], [ %.0, %119 ], [ %.0, %118 ], [ %.0, %117 ], [ %.0, %116 ], [ %.0, %115 ], [ %.0, %114 ], [ %.0, %113 ], [ %.0, %57 ], [ %.0, %61 ], [ %.0, %65 ], [ %.0, %69 ], [ %.0, %73 ], [ %.0, %77 ], [ %.0, %81 ], [ %.0, %85 ], [ %.0, %89 ], [ %.0, %93 ], [ %.0, %97 ], [ %.0, %101 ], [ %.0, %105 ], [ %.0, %109 ], [ %.0, %46 ], [ %.0, %39 ], [ %.0, %35 ], [ %.0, %34 ], [ %.0, %33 ], [ %.0, %32 ], [ %.0, %22 ], [ %.0, %15 ], [ %.0, %13 ], [ %12, %11 ], [ %.0, %5 ]
  br label %5, !llvm.loop !11

8:                                                ; preds = %5
  %9 = load i32, ptr %3, align 4, !tbaa !5
  %10 = icmp eq i32 %9, 0
  %. = zext i1 %10 to i32
  call void @usage(i32 noundef 1, i32 noundef %., i32 noundef 0)
  call void @exit(i32 noundef 0) #9
  unreachable

11:                                               ; preds = %5
  %12 = load ptr, ptr @optarg, align 8, !tbaa !9
  br label %.backedge

13:                                               ; preds = %5
  %14 = load ptr, ptr @optarg, align 8, !tbaa !9
  br label %.backedge

15:                                               ; preds = %5
  %16 = load ptr, ptr @optarg, align 8, !tbaa !9
  %17 = call i32 @atoi(ptr nocapture noundef %16) #10
  store i32 %17, ptr @size, align 4, !tbaa !5
  %18 = icmp slt i32 %17, 1
  br i1 %18, label %19, label %.backedge

19:                                               ; preds = %15
  %20 = load ptr, ptr @stderr, align 8, !tbaa !9
  %21 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %20, ptr noundef nonnull @.str, i32 noundef %17) #11
  call void @exit(i32 noundef 1) #9
  unreachable

22:                                               ; preds = %5
  %23 = load ptr, ptr @optarg, align 8, !tbaa !9
  %24 = call i32 @atoi(ptr nocapture noundef %23) #10
  store i32 %24, ptr @version, align 4, !tbaa !5
  %25 = icmp slt i32 %24, 0
  br i1 %25, label %26, label %.backedge

26:                                               ; preds = %22
  %27 = load ptr, ptr @stderr, align 8, !tbaa !9
  %28 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.1, i32 noundef %24) #11
  call void @exit(i32 noundef 1) #9
  unreachable

29:                                               ; preds = %5
  %30 = load ptr, ptr @optarg, align 8, !tbaa !9
  %31 = load i8, ptr %30, align 1, !tbaa !13
  switch i8 %31, label %36 [
    i8 108, label %32
    i8 76, label %32
    i8 109, label %33
    i8 77, label %33
    i8 113, label %34
    i8 81, label %34
    i8 104, label %35
    i8 72, label %35
  ]

32:                                               ; preds = %29, %29
  store i32 0, ptr @level, align 4, !tbaa !5
  br label %.backedge

33:                                               ; preds = %29, %29
  store i32 1, ptr @level, align 4, !tbaa !5
  br label %.backedge

34:                                               ; preds = %29, %29
  store i32 2, ptr @level, align 4, !tbaa !5
  br label %.backedge

35:                                               ; preds = %29, %29
  store i32 3, ptr @level, align 4, !tbaa !5
  br label %.backedge

36:                                               ; preds = %29
  %37 = load ptr, ptr @stderr, align 8, !tbaa !9
  %38 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %37, ptr noundef nonnull @.str.2, ptr noundef nonnull %30) #11
  call void @exit(i32 noundef 1) #9
  unreachable

39:                                               ; preds = %5
  %40 = load ptr, ptr @optarg, align 8, !tbaa !9
  %41 = call i32 @atoi(ptr nocapture noundef %40) #10
  store i32 %41, ptr @margin, align 4, !tbaa !5
  %42 = icmp slt i32 %41, 0
  br i1 %42, label %43, label %.backedge

43:                                               ; preds = %39
  %44 = load ptr, ptr @stderr, align 8, !tbaa !9
  %45 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %44, ptr noundef nonnull @.str.3, i32 noundef %41) #11
  call void @exit(i32 noundef 1) #9
  unreachable

46:                                               ; preds = %5
  %47 = load ptr, ptr @optarg, align 8, !tbaa !9
  %48 = call i32 @atoi(ptr nocapture noundef %47) #10
  store i32 %48, ptr @dpi, align 4, !tbaa !5
  %49 = icmp slt i32 %48, 0
  br i1 %49, label %50, label %.backedge

50:                                               ; preds = %46
  %51 = load ptr, ptr @stderr, align 8, !tbaa !9
  %52 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %51, ptr noundef nonnull @.str.4, i32 noundef %48) #11
  call void @exit(i32 noundef 1) #9
  unreachable

53:                                               ; preds = %5
  %54 = load ptr, ptr @optarg, align 8, !tbaa !9
  %55 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.5) #10
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %58

57:                                               ; preds = %53
  store i32 1, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

58:                                               ; preds = %53
  %59 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.6) #10
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %61, label %62

61:                                               ; preds = %58
  store i32 0, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

62:                                               ; preds = %58
  %63 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.7) #10
  %64 = icmp eq i32 %63, 0
  br i1 %64, label %65, label %66

65:                                               ; preds = %62
  store i32 2, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

66:                                               ; preds = %62
  %67 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.8) #10
  %68 = icmp eq i32 %67, 0
  br i1 %68, label %69, label %70

69:                                               ; preds = %66
  store i32 3, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

70:                                               ; preds = %66
  %71 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.9) #10
  %72 = icmp eq i32 %71, 0
  br i1 %72, label %73, label %74

73:                                               ; preds = %70
  store i32 4, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

74:                                               ; preds = %70
  %75 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.10) #10
  %76 = icmp eq i32 %75, 0
  br i1 %76, label %77, label %78

77:                                               ; preds = %74
  store i32 5, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

78:                                               ; preds = %74
  %79 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.11) #10
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %81, label %82

81:                                               ; preds = %78
  store i32 6, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

82:                                               ; preds = %78
  %83 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.12) #10
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %82
  store i32 8, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

86:                                               ; preds = %82
  %87 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.13) #10
  %88 = icmp eq i32 %87, 0
  br i1 %88, label %89, label %90

89:                                               ; preds = %86
  store i32 7, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

90:                                               ; preds = %86
  %91 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.14) #10
  %92 = icmp eq i32 %91, 0
  br i1 %92, label %93, label %94

93:                                               ; preds = %90
  store i32 9, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

94:                                               ; preds = %90
  %95 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.15) #10
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %98

97:                                               ; preds = %94
  store i32 10, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

98:                                               ; preds = %94
  %99 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.16) #10
  %100 = icmp eq i32 %99, 0
  br i1 %100, label %101, label %102

101:                                              ; preds = %98
  store i32 11, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

102:                                              ; preds = %98
  %103 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.17) #10
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %105, label %106

105:                                              ; preds = %102
  store i32 12, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

106:                                              ; preds = %102
  %107 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.18) #10
  %108 = icmp eq i32 %107, 0
  br i1 %108, label %109, label %110

109:                                              ; preds = %106
  store i32 13, ptr @image_type, align 4, !tbaa !5
  br label %.backedge

110:                                              ; preds = %106
  %111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %112 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %111, ptr noundef nonnull @.str.19, ptr noundef %54) #11
  call void @exit(i32 noundef 1) #9
  unreachable

113:                                              ; preds = %5
  store i32 1, ptr @structured, align 4, !tbaa !5
  br label %.backedge

114:                                              ; preds = %5
  store i32 3, ptr @hint, align 4, !tbaa !5
  br label %.backedge

115:                                              ; preds = %5
  store i32 1, ptr @casesensitive, align 4, !tbaa !5
  br label %.backedge

116:                                              ; preds = %5
  store i32 0, ptr @casesensitive, align 4, !tbaa !5
  br label %.backedge

117:                                              ; preds = %5
  store i32 1, ptr @eightbit, align 4, !tbaa !5
  br label %.backedge

118:                                              ; preds = %5
  store i32 1, ptr @micro, align 4, !tbaa !5
  br label %.backedge

119:                                              ; preds = %5
  %120 = load ptr, ptr @optarg, align 8, !tbaa !9
  %121 = call i32 @color_set(ptr noundef nonnull @fg_color, ptr noundef %120)
  %.not37 = icmp eq i32 %121, 0
  br i1 %.not37, label %.backedge, label %122

122:                                              ; preds = %119
  %123 = load ptr, ptr @stderr, align 8, !tbaa !9
  %124 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %123, ptr noundef nonnull @.str.20) #11
  call void @exit(i32 noundef 1) #9
  unreachable

125:                                              ; preds = %5
  %126 = load ptr, ptr @optarg, align 8, !tbaa !9
  %127 = call i32 @color_set(ptr noundef nonnull @bg_color, ptr noundef %126)
  %.not36 = icmp eq i32 %127, 0
  br i1 %.not36, label %.backedge, label %128

128:                                              ; preds = %125
  %129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %129, ptr noundef nonnull @.str.21) #11
  call void @exit(i32 noundef 1) #9
  unreachable

131:                                              ; preds = %5
  call void @usage(i32 noundef 0, i32 noundef 0, i32 noundef 0)
  call void @exit(i32 noundef 0) #9
  unreachable

132:                                              ; preds = %5
  %133 = load ptr, ptr @stderr, align 8, !tbaa !9
  %134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %133, ptr noundef nonnull @.str.22) #11
  call void @exit(i32 noundef 1) #9
  unreachable

135:                                              ; preds = %5
  %136 = icmp eq i32 %0, 1
  br i1 %136, label %137, label %138

137:                                              ; preds = %135
  call void @usage(i32 noundef 1, i32 noundef 0, i32 noundef 1)
  call void @exit(i32 noundef 1) #9
  unreachable

138:                                              ; preds = %135
  %139 = icmp eq ptr %.0, null
  %140 = load i32, ptr @image_type, align 4
  %141 = icmp eq i32 %140, 0
  %or.cond = select i1 %139, i1 %141, i1 false
  br i1 %or.cond, label %142, label %145

142:                                              ; preds = %138
  %143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %144 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %143, ptr noundef nonnull @.str.23) #11
  call void @exit(i32 noundef 1) #9
  unreachable

145:                                              ; preds = %138
  %146 = load i32, ptr @optind, align 4, !tbaa !5
  %147 = icmp slt i32 %146, %0
  br i1 %147, label %148, label %.thread

148:                                              ; preds = %145
  %149 = sext i32 %146 to i64
  %150 = getelementptr inbounds ptr, ptr %1, i64 %149
  %151 = load ptr, ptr %150, align 8, !tbaa !9
  %152 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %151) #10
  %153 = trunc i64 %152 to i32
  store i32 %153, ptr %4, align 4, !tbaa !5
  %154 = icmp eq ptr %151, null
  br i1 %154, label %.thread, label %168

.thread:                                          ; preds = %145, %148
  %155 = icmp eq ptr %.026, null
  br i1 %155, label %156, label %158

156:                                              ; preds = %.thread
  %157 = load ptr, ptr @stdin, align 8, !tbaa !9
  br label %160

158:                                              ; preds = %.thread
  %159 = call noalias ptr @fopen(ptr noundef nonnull %.026, ptr noundef nonnull @.str.24)
  br label %160

160:                                              ; preds = %158, %156
  %161 = phi ptr [ %157, %156 ], [ %159, %158 ]
  %162 = icmp eq ptr %161, null
  br i1 %162, label %163, label %166

163:                                              ; preds = %160
  %164 = load ptr, ptr @stderr, align 8, !tbaa !9
  %165 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %164, ptr noundef nonnull @.str.25, ptr noundef %.026) #11
  call void @exit(i32 noundef 1) #9
  unreachable

166:                                              ; preds = %160
  %167 = call ptr @readFile(ptr noundef nonnull %161, ptr noundef nonnull %4)
  br label %168

168:                                              ; preds = %166, %148
  %.125 = phi ptr [ %167, %166 ], [ %151, %148 ]
  %169 = load i32, ptr @micro, align 4, !tbaa !5
  %170 = icmp ne i32 %169, 0
  %171 = load i32, ptr @version, align 4
  %172 = icmp sgt i32 %171, 4
  %or.cond3 = select i1 %170, i1 %172, i1 false
  br i1 %or.cond3, label %173, label %176

173:                                              ; preds = %168
  %174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %175 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef nonnull @.str.26, i32 noundef 4) #11
  call void @exit(i32 noundef 1) #9
  unreachable

176:                                              ; preds = %168
  %177 = icmp eq i32 %169, 0
  %178 = icmp sgt i32 %171, 40
  %or.cond5 = select i1 %177, i1 %178, i1 false
  br i1 %or.cond5, label %179, label %182

179:                                              ; preds = %176
  %180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %181 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %180, ptr noundef nonnull @.str.26, i32 noundef 40) #11
  call void @exit(i32 noundef 1) #9
  unreachable

182:                                              ; preds = %176
  %183 = load i32, ptr @margin, align 4, !tbaa !5
  %184 = icmp slt i32 %183, 0
  br i1 %184, label %185, label %188

185:                                              ; preds = %182
  br i1 %170, label %186, label %.thread39

186:                                              ; preds = %185
  store i32 2, ptr @margin, align 4, !tbaa !5
  br label %188

.thread39:                                        ; preds = %185
  store i32 4, ptr @margin, align 4, !tbaa !5
  %187 = load i32, ptr @structured, align 4
  %.not = icmp eq i32 %187, 0
  br i1 %.not, label %202, label %195

188:                                              ; preds = %186, %182
  %189 = load i32, ptr @structured, align 4
  %190 = icmp ne i32 %189, 0
  %or.cond7 = select i1 %170, i1 %190, i1 false
  br i1 %or.cond7, label %191, label %194

191:                                              ; preds = %188
  %192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %193 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %192, ptr noundef nonnull @.str.27) #11
  call void @exit(i32 noundef 1) #9
  unreachable

194:                                              ; preds = %188
  br i1 %190, label %195, label %202

195:                                              ; preds = %.thread39, %194
  %196 = icmp eq i32 %171, 0
  br i1 %196, label %197, label %200

197:                                              ; preds = %195
  %198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %198, ptr noundef nonnull @.str.28) #11
  call void @exit(i32 noundef 1) #9
  unreachable

200:                                              ; preds = %195
  %201 = load i32, ptr %4, align 4, !tbaa !5
  call void @qrencodeStructured(ptr noundef %.125, i32 noundef %201, ptr noundef %.0)
  br label %204

202:                                              ; preds = %.thread39, %194
  %203 = load i32, ptr %4, align 4, !tbaa !5
  call void @qrencode(ptr noundef %.125, i32 noundef %203, ptr noundef %.0)
  br label %204

204:                                              ; preds = %202, %200
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #8
  ret i32 0
}

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

; Function Attrs: nounwind
declare i32 @getopt_long(i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @usage(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #4

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @color_set(ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden ptr @readFile(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden void @qrencodeStructured(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden void @qrencode(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nofree nounwind willreturn memory(read) 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 #5 = { 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 #6 = { mustprogress nofree nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { nounwind willreturn memory(read) }
attributes #11 = { cold 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!7, !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass