; LLVM IR from thalium/icebox :: third_party/virtualbox/src/VBox/Devices/EFI/Firmware/MdeModulePkg/Library (InternalPrintLibSPrintMarker)

; 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.__va_list_tag = type { i32, i32, ptr, ptr }
%struct.GUID = type { i32, i16, i16, [8 x i8] }
%struct.TIME = type { i16, i8, i8, i8, i8, i8, i8, i32, i16, i8, i8 }

@.str.1 = external hidden unnamed_addr constant [159 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [33 x i8], align 1
@mStatusString = external dso_local global [39 x ptr], align 16
@.str.47 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [70 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

declare zeroext i8 @DebugAssertEnabled() #1

declare void @DebugAssert(ptr noundef, i64 noundef, ptr noundef) #1

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

declare i64 @AsciiStrSize(ptr noundef) #1

declare i64 @StrSize(ptr noundef) #1

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @InternalPrintLibSPrint(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ...) #2

; Function Attrs: nounwind uwtable
define dso_local i64 @InternalPrintLibSPrintMarker(ptr noundef %0, i64 noundef %1, i64 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #2 {
  %7 = alloca i64, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca [38 x i8], align 16
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i64, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i8, align 1
  %33 = alloca i64, align 8
  %34 = alloca i8, align 1
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i32, align 4
  %41 = alloca i16, align 2
  %42 = alloca i16, align 2
  %43 = alloca i64, align 8
  %44 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i64 %1, ptr %9, align 8, !tbaa !9
  store i64 %2, ptr %10, align 8, !tbaa !9
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 38, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  %45 = load i64, ptr %10, align 8, !tbaa !9
  %46 = and i64 %45, 8192
  %47 = icmp ne i64 %46, 0
  br i1 %47, label %48, label %53

48:                                               ; preds = %6
  %49 = load i64, ptr %9, align 8, !tbaa !9
  %50 = icmp eq i64 %49, 0
  br i1 %50, label %51, label %52

51:                                               ; preds = %48
  store ptr null, ptr %8, align 8, !tbaa !5
  br label %52

52:                                               ; preds = %51, %48
  br label %69

53:                                               ; preds = %6
  %54 = load i64, ptr %9, align 8, !tbaa !9
  %55 = icmp eq i64 %54, 0
  br i1 %55, label %56, label %57

56:                                               ; preds = %53
  store i64 0, ptr %7, align 8
  store i32 1, ptr %44, align 4
  br label %1273

57:                                               ; preds = %53
  br label %58

58:                                               ; preds = %57
  %59 = call zeroext i8 @DebugAssertEnabled()
  %60 = icmp ne i8 %59, 0
  br i1 %60, label %61, label %66

61:                                               ; preds = %58
  %62 = load ptr, ptr %8, align 8, !tbaa !5
  %63 = icmp ne ptr %62, null
  br i1 %63, label %65, label %64

64:                                               ; preds = %61
  call void @DebugAssert(ptr noundef @.str.1, i64 noundef 1248, ptr noundef @.str.47)
  br label %65

65:                                               ; preds = %64, %61
  br label %66

66:                                               ; preds = %65, %58
  br label %67

67:                                               ; preds = %66
  br label %68

68:                                               ; preds = %67
  br label %69

69:                                               ; preds = %68, %52
  %70 = load i64, ptr %10, align 8, !tbaa !9
  %71 = and i64 %70, 64
  %72 = icmp ne i64 %71, 0
  br i1 %72, label %73, label %74

73:                                               ; preds = %69
  store i32 2, ptr %17, align 4, !tbaa !11
  br label %75

74:                                               ; preds = %69
  store i32 1, ptr %17, align 4, !tbaa !11
  br label %75

75:                                               ; preds = %74, %73
  store i64 0, ptr %43, align 8, !tbaa !9
  store ptr null, ptr %15, align 8, !tbaa !5
  store ptr null, ptr %14, align 8, !tbaa !5
  %76 = load ptr, ptr %8, align 8, !tbaa !5
  %77 = icmp ne ptr %76, null
  br i1 %77, label %78, label %88

78:                                               ; preds = %75
  %79 = load i64, ptr %9, align 8, !tbaa !9
  %80 = add i64 %79, -1
  store i64 %80, ptr %9, align 8, !tbaa !9
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %81, ptr %14, align 8, !tbaa !5
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  %83 = load i64, ptr %9, align 8, !tbaa !9
  %84 = load i32, ptr %17, align 4, !tbaa !11
  %85 = zext i32 %84 to i64
  %86 = mul i64 %83, %85
  %87 = getelementptr inbounds i8, ptr %82, i64 %86
  store ptr %87, ptr %15, align 8, !tbaa !5
  br label %88

88:                                               ; preds = %78, %75
  %89 = load i64, ptr %10, align 8, !tbaa !9
  %90 = and i64 %89, 256
  %91 = icmp ne i64 %90, 0
  br i1 %91, label %92, label %105

92:                                               ; preds = %88
  br label %93

93:                                               ; preds = %92
  %94 = call zeroext i8 @DebugAssertEnabled()
  %95 = icmp ne i8 %94, 0
  br i1 %95, label %96, label %102

96:                                               ; preds = %93
  %97 = load ptr, ptr %11, align 8, !tbaa !5
  %98 = call i64 @StrSize(ptr noundef %97)
  %99 = icmp ne i64 %98, 0
  br i1 %99, label %101, label %100

100:                                              ; preds = %96
  call void @DebugAssert(ptr noundef @.str.1, i64 noundef 1279, ptr noundef @.str.7)
  br label %101

101:                                              ; preds = %100, %96
  br label %102

102:                                              ; preds = %101, %93
  br label %103

103:                                              ; preds = %102
  br label %104

104:                                              ; preds = %103
  store i64 2, ptr %18, align 8, !tbaa !9
  store i64 65535, ptr %19, align 8, !tbaa !9
  br label %118

105:                                              ; preds = %88
  br label %106

106:                                              ; preds = %105
  %107 = call zeroext i8 @DebugAssertEnabled()
  %108 = icmp ne i8 %107, 0
  br i1 %108, label %109, label %115

109:                                              ; preds = %106
  %110 = load ptr, ptr %11, align 8, !tbaa !5
  %111 = call i64 @AsciiStrSize(ptr noundef %110)
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %114, label %113

113:                                              ; preds = %109
  call void @DebugAssert(ptr noundef @.str.1, i64 noundef 1287, ptr noundef @.str.6)
  br label %114

114:                                              ; preds = %113, %109
  br label %115

115:                                              ; preds = %114, %106
  br label %116

116:                                              ; preds = %115
  br label %117

117:                                              ; preds = %116
  store i64 1, ptr %18, align 8, !tbaa !9
  store i64 255, ptr %19, align 8, !tbaa !9
  br label %118

118:                                              ; preds = %117, %104
  %119 = load ptr, ptr %11, align 8, !tbaa !5
  %120 = load i8, ptr %119, align 1, !tbaa !13
  %121 = sext i8 %120 to i32
  %122 = and i32 %121, 255
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = getelementptr inbounds i8, ptr %123, i64 1
  %125 = load i8, ptr %124, align 1, !tbaa !13
  %126 = sext i8 %125 to i32
  %127 = shl i32 %126, 8
  %128 = or i32 %122, %127
  %129 = sext i32 %128 to i64
  %130 = load i64, ptr %19, align 8, !tbaa !9
  %131 = and i64 %129, %130
  store i64 %131, ptr %20, align 8, !tbaa !9
  br label %132

132:                                              ; preds = %1187, %118
  %133 = load i64, ptr %20, align 8, !tbaa !9
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %135, label %1204

135:                                              ; preds = %132
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = icmp ne ptr %136, null
  br i1 %137, label %138, label %143

138:                                              ; preds = %135
  %139 = load ptr, ptr %8, align 8, !tbaa !5
  %140 = load ptr, ptr %15, align 8, !tbaa !5
  %141 = icmp uge ptr %139, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %138
  br label %1204

143:                                              ; preds = %138, %135
  %144 = load i64, ptr %10, align 8, !tbaa !9
  %145 = and i64 %144, 8512
  store i64 %145, ptr %10, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  store i64 1, ptr %22, align 8, !tbaa !9
  store i8 0, ptr %34, align 1, !tbaa !13
  store i8 0, ptr %36, align 1, !tbaa !13
  store i8 0, ptr %35, align 1, !tbaa !13
  store i64 0, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %37, align 8, !tbaa !9
  %146 = load i64, ptr %20, align 8, !tbaa !9
  switch i64 %146, label %878 [
    i64 37, label %147
    i64 13, label %827
    i64 10, label %853
  ]

147:                                              ; preds = %143
  store i8 0, ptr %32, align 1, !tbaa !13
  br label %148

148:                                              ; preds = %307, %147
  %149 = load i8, ptr %32, align 1, !tbaa !13
  %150 = icmp ne i8 %149, 0
  %151 = xor i1 %150, true
  br i1 %151, label %152, label %308

152:                                              ; preds = %148
  %153 = load i64, ptr %18, align 8, !tbaa !9
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = getelementptr inbounds i8, ptr %154, i64 %153
  store ptr %155, ptr %11, align 8, !tbaa !5
  %156 = load ptr, ptr %11, align 8, !tbaa !5
  %157 = load i8, ptr %156, align 1, !tbaa !13
  %158 = sext i8 %157 to i32
  %159 = and i32 %158, 255
  %160 = load ptr, ptr %11, align 8, !tbaa !5
  %161 = getelementptr inbounds i8, ptr %160, i64 1
  %162 = load i8, ptr %161, align 1, !tbaa !13
  %163 = sext i8 %162 to i32
  %164 = shl i32 %163, 8
  %165 = or i32 %159, %164
  %166 = sext i32 %165 to i64
  %167 = load i64, ptr %19, align 8, !tbaa !9
  %168 = and i64 %166, %167
  store i64 %168, ptr %20, align 8, !tbaa !9
  %169 = load i64, ptr %20, align 8, !tbaa !9
  switch i64 %169, label %306 [
    i64 46, label %170
    i64 45, label %173
    i64 43, label %176
    i64 32, label %179
    i64 44, label %182
    i64 76, label %185
    i64 108, label %185
    i64 42, label %188
    i64 48, label %247
    i64 49, label %255
    i64 50, label %255
    i64 51, label %255
    i64 52, label %255
    i64 53, label %255
    i64 54, label %255
    i64 55, label %255
    i64 56, label %255
    i64 57, label %255
    i64 0, label %301
  ]

170:                                              ; preds = %152
  %171 = load i64, ptr %10, align 8, !tbaa !9
  %172 = or i64 %171, 2048
  store i64 %172, ptr %10, align 8, !tbaa !9
  br label %307

173:                                              ; preds = %152
  %174 = load i64, ptr %10, align 8, !tbaa !9
  %175 = or i64 %174, 1
  store i64 %175, ptr %10, align 8, !tbaa !9
  br label %307

176:                                              ; preds = %152
  %177 = load i64, ptr %10, align 8, !tbaa !9
  %178 = or i64 %177, 2
  store i64 %178, ptr %10, align 8, !tbaa !9
  br label %307

179:                                              ; preds = %152
  %180 = load i64, ptr %10, align 8, !tbaa !9
  %181 = or i64 %180, 4
  store i64 %181, ptr %10, align 8, !tbaa !9
  br label %307

182:                                              ; preds = %152
  %183 = load i64, ptr %10, align 8, !tbaa !9
  %184 = or i64 %183, 8
  store i64 %184, ptr %10, align 8, !tbaa !9
  br label %307

185:                                              ; preds = %152, %152
  %186 = load i64, ptr %10, align 8, !tbaa !9
  %187 = or i64 %186, 16
  store i64 %187, ptr %10, align 8, !tbaa !9
  br label %307

188:                                              ; preds = %152
  %189 = load i64, ptr %10, align 8, !tbaa !9
  %190 = and i64 %189, 2048
  %191 = icmp eq i64 %190, 0
  br i1 %191, label %192, label %220

192:                                              ; preds = %188
  %193 = load i64, ptr %10, align 8, !tbaa !9
  %194 = or i64 %193, 512
  store i64 %194, ptr %10, align 8, !tbaa !9
  %195 = load ptr, ptr %13, align 8, !tbaa !5
  %196 = icmp eq ptr %195, null
  br i1 %196, label %197, label %214

197:                                              ; preds = %192
  %198 = load ptr, ptr %12, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.__va_list_tag, ptr %198, i32 0, i32 0
  %200 = load i32, ptr %199, align 8
  %201 = icmp ule i32 %200, 40
  br i1 %201, label %202, label %207

202:                                              ; preds = %197
  %203 = getelementptr inbounds %struct.__va_list_tag, ptr %198, i32 0, i32 3
  %204 = load ptr, ptr %203, align 8
  %205 = getelementptr i8, ptr %204, i32 %200
  %206 = add i32 %200, 8
  store i32 %206, ptr %199, align 8
  br label %211

207:                                              ; preds = %197
  %208 = getelementptr inbounds %struct.__va_list_tag, ptr %198, i32 0, i32 2
  %209 = load ptr, ptr %208, align 8
  %210 = getelementptr i8, ptr %209, i32 8
  store ptr %210, ptr %208, align 8
  br label %211

211:                                              ; preds = %207, %202
  %212 = phi ptr [ %205, %202 ], [ %209, %207 ]
  %213 = load i64, ptr %212, align 8, !tbaa !9
  store i64 %213, ptr %21, align 8, !tbaa !9
  br label %219

214:                                              ; preds = %192
  %215 = load ptr, ptr %13, align 8, !tbaa !5
  %216 = getelementptr inbounds i64, ptr %215, i64 1
  store ptr %216, ptr %13, align 8, !tbaa !5
  %217 = getelementptr inbounds i64, ptr %216, i64 -1
  %218 = load i64, ptr %217, align 8, !tbaa !9
  store i64 %218, ptr %21, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %214, %211
  br label %246

220:                                              ; preds = %188
  %221 = load ptr, ptr %13, align 8, !tbaa !5
  %222 = icmp eq ptr %221, null
  br i1 %222, label %223, label %240

223:                                              ; preds = %220
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.__va_list_tag, ptr %224, i32 0, i32 0
  %226 = load i32, ptr %225, align 8
  %227 = icmp ule i32 %226, 40
  br i1 %227, label %228, label %233

228:                                              ; preds = %223
  %229 = getelementptr inbounds %struct.__va_list_tag, ptr %224, i32 0, i32 3
  %230 = load ptr, ptr %229, align 8
  %231 = getelementptr i8, ptr %230, i32 %226
  %232 = add i32 %226, 8
  store i32 %232, ptr %225, align 8
  br label %237

233:                                              ; preds = %223
  %234 = getelementptr inbounds %struct.__va_list_tag, ptr %224, i32 0, i32 2
  %235 = load ptr, ptr %234, align 8
  %236 = getelementptr i8, ptr %235, i32 8
  store ptr %236, ptr %234, align 8
  br label %237

237:                                              ; preds = %233, %228
  %238 = phi ptr [ %231, %228 ], [ %235, %233 ]
  %239 = load i64, ptr %238, align 8, !tbaa !9
  store i64 %239, ptr %22, align 8, !tbaa !9
  br label %245

240:                                              ; preds = %220
  %241 = load ptr, ptr %13, align 8, !tbaa !5
  %242 = getelementptr inbounds i64, ptr %241, i64 1
  store ptr %242, ptr %13, align 8, !tbaa !5
  %243 = getelementptr inbounds i64, ptr %242, i64 -1
  %244 = load i64, ptr %243, align 8, !tbaa !9
  store i64 %244, ptr %22, align 8, !tbaa !9
  br label %245

245:                                              ; preds = %240, %237
  br label %246

246:                                              ; preds = %245, %219
  br label %307

247:                                              ; preds = %152
  %248 = load i64, ptr %10, align 8, !tbaa !9
  %249 = and i64 %248, 2048
  %250 = icmp eq i64 %249, 0
  br i1 %250, label %251, label %254

251:                                              ; preds = %247
  %252 = load i64, ptr %10, align 8, !tbaa !9
  %253 = or i64 %252, 32
  store i64 %253, ptr %10, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %251, %247
  br label %255

255:                                              ; preds = %254, %152, %152, %152, %152, %152, %152, %152, %152, %152
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %264, %255
  %257 = load i64, ptr %20, align 8, !tbaa !9
  %258 = icmp uge i64 %257, 48
  br i1 %258, label %259, label %262

259:                                              ; preds = %256
  %260 = load i64, ptr %20, align 8, !tbaa !9
  %261 = icmp ule i64 %260, 57
  br label %262

262:                                              ; preds = %259, %256
  %263 = phi i1 [ false, %256 ], [ %261, %259 ]
  br i1 %263, label %264, label %286

264:                                              ; preds = %262
  %265 = load i64, ptr %28, align 8, !tbaa !9
  %266 = mul i64 %265, 10
  %267 = load i64, ptr %20, align 8, !tbaa !9
  %268 = add i64 %266, %267
  %269 = sub i64 %268, 48
  store i64 %269, ptr %28, align 8, !tbaa !9
  %270 = load i64, ptr %18, align 8, !tbaa !9
  %271 = load ptr, ptr %11, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 %270
  store ptr %272, ptr %11, align 8, !tbaa !5
  %273 = load ptr, ptr %11, align 8, !tbaa !5
  %274 = load i8, ptr %273, align 1, !tbaa !13
  %275 = sext i8 %274 to i32
  %276 = and i32 %275, 255
  %277 = load ptr, ptr %11, align 8, !tbaa !5
  %278 = getelementptr inbounds i8, ptr %277, i64 1
  %279 = load i8, ptr %278, align 1, !tbaa !13
  %280 = sext i8 %279 to i32
  %281 = shl i32 %280, 8
  %282 = or i32 %276, %281
  %283 = sext i32 %282 to i64
  %284 = load i64, ptr %19, align 8, !tbaa !9
  %285 = and i64 %283, %284
  store i64 %285, ptr %20, align 8, !tbaa !9
  br label %256, !llvm.loop !14

286:                                              ; preds = %262
  %287 = load i64, ptr %18, align 8, !tbaa !9
  %288 = load ptr, ptr %11, align 8, !tbaa !5
  %289 = sub i64 0, %287
  %290 = getelementptr inbounds i8, ptr %288, i64 %289
  store ptr %290, ptr %11, align 8, !tbaa !5
  %291 = load i64, ptr %10, align 8, !tbaa !9
  %292 = and i64 %291, 2048
  %293 = icmp eq i64 %292, 0
  br i1 %293, label %294, label %298

294:                                              ; preds = %286
  %295 = load i64, ptr %10, align 8, !tbaa !9
  %296 = or i64 %295, 512
  store i64 %296, ptr %10, align 8, !tbaa !9
  %297 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %297, ptr %21, align 8, !tbaa !9
  br label %300

298:                                              ; preds = %286
  %299 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %299, ptr %22, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %298, %294
  br label %307

301:                                              ; preds = %152
  %302 = load i64, ptr %18, align 8, !tbaa !9
  %303 = load ptr, ptr %11, align 8, !tbaa !5
  %304 = sub i64 0, %302
  %305 = getelementptr inbounds i8, ptr %303, i64 %304
  store ptr %305, ptr %11, align 8, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %301, %152
  store i8 1, ptr %32, align 1, !tbaa !13
  br label %307

307:                                              ; preds = %306, %300, %246, %185, %182, %179, %176, %173, %170
  br label %148, !llvm.loop !16

308:                                              ; preds = %148
  %309 = load i64, ptr %20, align 8, !tbaa !9
  switch i64 %309, label %823 [
    i64 112, label %310
    i64 88, label %315
    i64 120, label %318
    i64 100, label %321
    i64 115, label %498
    i64 83, label %498
    i64 97, label %501
    i64 99, label %538
    i64 103, label %568
    i64 116, label %656
    i64 114, label %710
    i64 13, label %771
    i64 10, label %797
    i64 37, label %822
  ]

310:                                              ; preds = %308
  %311 = load i64, ptr %10, align 8, !tbaa !9
  %312 = and i64 %311, -55
  store i64 %312, ptr %10, align 8, !tbaa !9
  %313 = load i64, ptr %10, align 8, !tbaa !9
  %314 = or i64 %313, 16
  store i64 %314, ptr %10, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %310, %308
  %316 = load i64, ptr %10, align 8, !tbaa !9
  %317 = or i64 %316, 32
  store i64 %317, ptr %10, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %315, %308
  %319 = load i64, ptr %10, align 8, !tbaa !9
  %320 = or i64 %319, 128
  store i64 %320, ptr %10, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %318, %308
  %322 = load i64, ptr %10, align 8, !tbaa !9
  %323 = and i64 %322, 16
  %324 = icmp eq i64 %323, 0
  br i1 %324, label %325, label %354

325:                                              ; preds = %321
  %326 = load ptr, ptr %13, align 8, !tbaa !5
  %327 = icmp eq ptr %326, null
  br i1 %327, label %328, label %347

328:                                              ; preds = %325
  %329 = load ptr, ptr %12, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.__va_list_tag, ptr %329, i32 0, i32 0
  %331 = load i32, ptr %330, align 8
  %332 = icmp ule i32 %331, 40
  br i1 %332, label %333, label %338

333:                                              ; preds = %328
  %334 = getelementptr inbounds %struct.__va_list_tag, ptr %329, i32 0, i32 3
  %335 = load ptr, ptr %334, align 8
  %336 = getelementptr i8, ptr %335, i32 %331
  %337 = add i32 %331, 8
  store i32 %337, ptr %330, align 8
  br label %342

338:                                              ; preds = %328
  %339 = getelementptr inbounds %struct.__va_list_tag, ptr %329, i32 0, i32 2
  %340 = load ptr, ptr %339, align 8
  %341 = getelementptr i8, ptr %340, i32 8
  store ptr %341, ptr %339, align 8
  br label %342

342:                                              ; preds = %338, %333
  %343 = phi ptr [ %336, %333 ], [ %340, %338 ]
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = trunc i64 %344 to i32
  %346 = sext i32 %345 to i64
  store i64 %346, ptr %23, align 8, !tbaa !9
  br label %353

347:                                              ; preds = %325
  %348 = load ptr, ptr %13, align 8, !tbaa !5
  %349 = getelementptr inbounds i64, ptr %348, i64 1
  store ptr %349, ptr %13, align 8, !tbaa !5
  %350 = getelementptr inbounds i64, ptr %349, i64 -1
  %351 = load i32, ptr %350, align 4, !tbaa !11
  %352 = sext i32 %351 to i64
  store i64 %352, ptr %23, align 8, !tbaa !9
  br label %353

353:                                              ; preds = %347, %342
  br label %380

354:                                              ; preds = %321
  %355 = load ptr, ptr %13, align 8, !tbaa !5
  %356 = icmp eq ptr %355, null
  br i1 %356, label %357, label %374

357:                                              ; preds = %354
  %358 = load ptr, ptr %12, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.__va_list_tag, ptr %358, i32 0, i32 0
  %360 = load i32, ptr %359, align 8
  %361 = icmp ule i32 %360, 40
  br i1 %361, label %362, label %367

362:                                              ; preds = %357
  %363 = getelementptr inbounds %struct.__va_list_tag, ptr %358, i32 0, i32 3
  %364 = load ptr, ptr %363, align 8
  %365 = getelementptr i8, ptr %364, i32 %360
  %366 = add i32 %360, 8
  store i32 %366, ptr %359, align 8
  br label %371

367:                                              ; preds = %357
  %368 = getelementptr inbounds %struct.__va_list_tag, ptr %358, i32 0, i32 2
  %369 = load ptr, ptr %368, align 8
  %370 = getelementptr i8, ptr %369, i32 8
  store ptr %370, ptr %368, align 8
  br label %371

371:                                              ; preds = %367, %362
  %372 = phi ptr [ %365, %362 ], [ %369, %367 ]
  %373 = load i64, ptr %372, align 8, !tbaa !9
  store i64 %373, ptr %23, align 8, !tbaa !9
  br label %379

374:                                              ; preds = %354
  %375 = load ptr, ptr %13, align 8, !tbaa !5
  %376 = getelementptr inbounds i64, ptr %375, i64 1
  store ptr %376, ptr %13, align 8, !tbaa !5
  %377 = getelementptr inbounds i64, ptr %376, i64 -1
  %378 = load i64, ptr %377, align 8, !tbaa !9
  store i64 %378, ptr %23, align 8, !tbaa !9
  br label %379

379:                                              ; preds = %374, %371
  br label %380

380:                                              ; preds = %379, %353
  %381 = load i64, ptr %10, align 8, !tbaa !9
  %382 = and i64 %381, 4
  %383 = icmp ne i64 %382, 0
  br i1 %383, label %384, label %385

384:                                              ; preds = %380
  store i8 32, ptr %34, align 1, !tbaa !13
  br label %385

385:                                              ; preds = %384, %380
  %386 = load i64, ptr %10, align 8, !tbaa !9
  %387 = and i64 %386, 2
  %388 = icmp ne i64 %387, 0
  br i1 %388, label %389, label %390

389:                                              ; preds = %385
  store i8 43, ptr %34, align 1, !tbaa !13
  br label %390

390:                                              ; preds = %389, %385
  %391 = load i64, ptr %10, align 8, !tbaa !9
  %392 = and i64 %391, 8
  %393 = icmp ne i64 %392, 0
  br i1 %393, label %394, label %395

394:                                              ; preds = %390
  store i8 1, ptr %36, align 1, !tbaa !13
  br label %395

395:                                              ; preds = %394, %390
  %396 = load i64, ptr %10, align 8, !tbaa !9
  %397 = and i64 %396, 128
  %398 = icmp eq i64 %397, 0
  br i1 %398, label %399, label %414

399:                                              ; preds = %395
  store i64 10, ptr %38, align 8, !tbaa !9
  %400 = load i8, ptr %36, align 1, !tbaa !13
  %401 = icmp ne i8 %400, 0
  br i1 %401, label %402, label %405

402:                                              ; preds = %399
  %403 = load i64, ptr %10, align 8, !tbaa !9
  %404 = and i64 %403, -33
  store i64 %404, ptr %10, align 8, !tbaa !9
  store i64 1, ptr %22, align 8, !tbaa !9
  br label %405

405:                                              ; preds = %402, %399
  %406 = load i64, ptr %23, align 8, !tbaa !9
  %407 = icmp slt i64 %406, 0
  br i1 %407, label %408, label %413

408:                                              ; preds = %405
  %409 = load i64, ptr %10, align 8, !tbaa !9
  %410 = or i64 %409, 2
  store i64 %410, ptr %10, align 8, !tbaa !9
  store i8 45, ptr %34, align 1, !tbaa !13
  %411 = load i64, ptr %23, align 8, !tbaa !9
  %412 = sub nsw i64 0, %411
  store i64 %412, ptr %23, align 8, !tbaa !9
  br label %413

413:                                              ; preds = %408, %405
  br label %426

414:                                              ; preds = %395
  store i64 16, ptr %38, align 8, !tbaa !9
  store i8 0, ptr %36, align 1, !tbaa !13
  %415 = load i64, ptr %10, align 8, !tbaa !9
  %416 = and i64 %415, 16
  %417 = icmp eq i64 %416, 0
  br i1 %417, label %418, label %425

418:                                              ; preds = %414
  %419 = load i64, ptr %23, align 8, !tbaa !9
  %420 = icmp slt i64 %419, 0
  br i1 %420, label %421, label %425

421:                                              ; preds = %418
  %422 = load i64, ptr %23, align 8, !tbaa !9
  %423 = trunc i64 %422 to i32
  %424 = zext i32 %423 to i64
  store i64 %424, ptr %23, align 8, !tbaa !9
  br label %425

425:                                              ; preds = %421, %418, %414
  br label %426

426:                                              ; preds = %425, %413
  %427 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  %428 = load i64, ptr %23, align 8, !tbaa !9
  %429 = load i64, ptr %38, align 8, !tbaa !9
  %430 = call ptr @InternalPrintLibValueToString(ptr noundef %427, i64 noundef %428, i64 noundef %429)
  %431 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  %432 = ptrtoint ptr %430 to i64
  %433 = ptrtoint ptr %431 to i64
  %434 = sub i64 %432, %433
  store i64 %434, ptr %28, align 8, !tbaa !9
  %435 = load i64, ptr %23, align 8, !tbaa !9
  %436 = icmp eq i64 %435, 0
  br i1 %436, label %437, label %441

437:                                              ; preds = %426
  %438 = load i64, ptr %22, align 8, !tbaa !9
  %439 = icmp eq i64 %438, 0
  br i1 %439, label %440, label %441

440:                                              ; preds = %437
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %441

441:                                              ; preds = %440, %437, %426
  %442 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  %443 = load i64, ptr %28, align 8, !tbaa !9
  %444 = getelementptr inbounds i8, ptr %442, i64 %443
  store ptr %444, ptr %24, align 8, !tbaa !5
  %445 = load i64, ptr %28, align 8, !tbaa !9
  %446 = urem i64 %445, 3
  store i64 %446, ptr %37, align 8, !tbaa !9
  %447 = load i64, ptr %37, align 8, !tbaa !9
  %448 = icmp ne i64 %447, 0
  br i1 %448, label %449, label %452

449:                                              ; preds = %441
  %450 = load i64, ptr %37, align 8, !tbaa !9
  %451 = sub i64 3, %450
  store i64 %451, ptr %37, align 8, !tbaa !9
  br label %452

452:                                              ; preds = %449, %441
  %453 = load i8, ptr %36, align 1, !tbaa !13
  %454 = zext i8 %453 to i32
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %465

456:                                              ; preds = %452
  %457 = load i64, ptr %28, align 8, !tbaa !9
  %458 = icmp ne i64 %457, 0
  br i1 %458, label %459, label %465

459:                                              ; preds = %456
  %460 = load i64, ptr %28, align 8, !tbaa !9
  %461 = sub i64 %460, 1
  %462 = udiv i64 %461, 3
  %463 = load i64, ptr %28, align 8, !tbaa !9
  %464 = add i64 %463, %462
  store i64 %464, ptr %28, align 8, !tbaa !9
  br label %465

465:                                              ; preds = %459, %456, %452
  %466 = load i8, ptr %34, align 1, !tbaa !13
  %467 = sext i8 %466 to i32
  %468 = icmp ne i32 %467, 0
  br i1 %468, label %469, label %474

469:                                              ; preds = %465
  %470 = load i64, ptr %28, align 8, !tbaa !9
  %471 = add i64 %470, 1
  store i64 %471, ptr %28, align 8, !tbaa !9
  %472 = load i64, ptr %22, align 8, !tbaa !9
  %473 = add i64 %472, 1
  store i64 %473, ptr %22, align 8, !tbaa !9
  br label %474

474:                                              ; preds = %469, %465
  %475 = load i64, ptr %10, align 8, !tbaa !9
  %476 = or i64 %475, 4096
  store i64 %476, ptr %10, align 8, !tbaa !9
  store i8 1, ptr %35, align 1, !tbaa !13
  %477 = load i64, ptr %10, align 8, !tbaa !9
  %478 = and i64 %477, 32
  %479 = icmp ne i64 %478, 0
  br i1 %479, label %480, label %497

480:                                              ; preds = %474
  %481 = load i64, ptr %10, align 8, !tbaa !9
  %482 = and i64 %481, 1
  %483 = icmp eq i64 %482, 0
  br i1 %483, label %484, label %496

484:                                              ; preds = %480
  %485 = load i64, ptr %10, align 8, !tbaa !9
  %486 = and i64 %485, 512
  %487 = icmp ne i64 %486, 0
  br i1 %487, label %488, label %495

488:                                              ; preds = %484
  %489 = load i64, ptr %10, align 8, !tbaa !9
  %490 = and i64 %489, 2048
  %491 = icmp eq i64 %490, 0
  br i1 %491, label %492, label %494

492:                                              ; preds = %488
  %493 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %493, ptr %22, align 8, !tbaa !9
  br label %494

494:                                              ; preds = %492, %488
  br label %495

495:                                              ; preds = %494, %484
  br label %496

496:                                              ; preds = %495, %480
  br label %497

497:                                              ; preds = %496, %474
  br label %826

498:                                              ; preds = %308, %308
  %499 = load i64, ptr %10, align 8, !tbaa !9
  %500 = or i64 %499, 1024
  store i64 %500, ptr %10, align 8, !tbaa !9
  br label %501

501:                                              ; preds = %498, %308
  %502 = load ptr, ptr %13, align 8, !tbaa !5
  %503 = icmp eq ptr %502, null
  br i1 %503, label %504, label %521

504:                                              ; preds = %501
  %505 = load ptr, ptr %12, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.__va_list_tag, ptr %505, i32 0, i32 0
  %507 = load i32, ptr %506, align 8
  %508 = icmp ule i32 %507, 40
  br i1 %508, label %509, label %514

509:                                              ; preds = %504
  %510 = getelementptr inbounds %struct.__va_list_tag, ptr %505, i32 0, i32 3
  %511 = load ptr, ptr %510, align 8
  %512 = getelementptr i8, ptr %511, i32 %507
  %513 = add i32 %507, 8
  store i32 %513, ptr %506, align 8
  br label %518

514:                                              ; preds = %504
  %515 = getelementptr inbounds %struct.__va_list_tag, ptr %505, i32 0, i32 2
  %516 = load ptr, ptr %515, align 8
  %517 = getelementptr i8, ptr %516, i32 8
  store ptr %517, ptr %515, align 8
  br label %518

518:                                              ; preds = %514, %509
  %519 = phi ptr [ %512, %509 ], [ %516, %514 ]
  %520 = load ptr, ptr %519, align 8, !tbaa !5
  store ptr %520, ptr %24, align 8, !tbaa !5
  br label %526

521:                                              ; preds = %501
  %522 = load ptr, ptr %13, align 8, !tbaa !5
  %523 = getelementptr inbounds i64, ptr %522, i64 1
  store ptr %523, ptr %13, align 8, !tbaa !5
  %524 = getelementptr inbounds i64, ptr %523, i64 -1
  %525 = load ptr, ptr %524, align 8, !tbaa !5
  store ptr %525, ptr %24, align 8, !tbaa !5
  br label %526

526:                                              ; preds = %521, %518
  %527 = load ptr, ptr %24, align 8, !tbaa !5
  %528 = icmp eq ptr %527, null
  br i1 %528, label %529, label %532

529:                                              ; preds = %526
  %530 = load i64, ptr %10, align 8, !tbaa !9
  %531 = and i64 %530, -1025
  store i64 %531, ptr %10, align 8, !tbaa !9
  store ptr @.str.48, ptr %24, align 8, !tbaa !5
  br label %532

532:                                              ; preds = %529, %526
  %533 = load i64, ptr %10, align 8, !tbaa !9
  %534 = and i64 %533, 2048
  %535 = icmp eq i64 %534, 0
  br i1 %535, label %536, label %537

536:                                              ; preds = %532
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %537

537:                                              ; preds = %536, %532
  br label %826

538:                                              ; preds = %308
  %539 = load ptr, ptr %13, align 8, !tbaa !5
  %540 = icmp eq ptr %539, null
  br i1 %540, label %541, label %559

541:                                              ; preds = %538
  %542 = load ptr, ptr %12, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.__va_list_tag, ptr %542, i32 0, i32 0
  %544 = load i32, ptr %543, align 8
  %545 = icmp ule i32 %544, 40
  br i1 %545, label %546, label %551

546:                                              ; preds = %541
  %547 = getelementptr inbounds %struct.__va_list_tag, ptr %542, i32 0, i32 3
  %548 = load ptr, ptr %547, align 8
  %549 = getelementptr i8, ptr %548, i32 %544
  %550 = add i32 %544, 8
  store i32 %550, ptr %543, align 8
  br label %555

551:                                              ; preds = %541
  %552 = getelementptr inbounds %struct.__va_list_tag, ptr %542, i32 0, i32 2
  %553 = load ptr, ptr %552, align 8
  %554 = getelementptr i8, ptr %553, i32 8
  store ptr %554, ptr %552, align 8
  br label %555

555:                                              ; preds = %551, %546
  %556 = phi ptr [ %549, %546 ], [ %553, %551 ]
  %557 = load i64, ptr %556, align 8, !tbaa !9
  %558 = and i64 %557, 65535
  store i64 %558, ptr %25, align 8, !tbaa !9
  br label %565

559:                                              ; preds = %538
  %560 = load ptr, ptr %13, align 8, !tbaa !5
  %561 = getelementptr inbounds i64, ptr %560, i64 1
  store ptr %561, ptr %13, align 8, !tbaa !5
  %562 = getelementptr inbounds i64, ptr %561, i64 -1
  %563 = load i64, ptr %562, align 8, !tbaa !9
  %564 = and i64 %563, 65535
  store i64 %564, ptr %25, align 8, !tbaa !9
  br label %565

565:                                              ; preds = %559, %555
  store ptr %25, ptr %24, align 8, !tbaa !5
  %566 = load i64, ptr %10, align 8, !tbaa !9
  %567 = or i64 %566, 1024
  store i64 %567, ptr %10, align 8, !tbaa !9
  br label %826

568:                                              ; preds = %308
  %569 = load ptr, ptr %13, align 8, !tbaa !5
  %570 = icmp eq ptr %569, null
  br i1 %570, label %571, label %588

571:                                              ; preds = %568
  %572 = load ptr, ptr %12, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.__va_list_tag, ptr %572, i32 0, i32 0
  %574 = load i32, ptr %573, align 8
  %575 = icmp ule i32 %574, 40
  br i1 %575, label %576, label %581

576:                                              ; preds = %571
  %577 = getelementptr inbounds %struct.__va_list_tag, ptr %572, i32 0, i32 3
  %578 = load ptr, ptr %577, align 8
  %579 = getelementptr i8, ptr %578, i32 %574
  %580 = add i32 %574, 8
  store i32 %580, ptr %573, align 8
  br label %585

581:                                              ; preds = %571
  %582 = getelementptr inbounds %struct.__va_list_tag, ptr %572, i32 0, i32 2
  %583 = load ptr, ptr %582, align 8
  %584 = getelementptr i8, ptr %583, i32 8
  store ptr %584, ptr %582, align 8
  br label %585

585:                                              ; preds = %581, %576
  %586 = phi ptr [ %579, %576 ], [ %583, %581 ]
  %587 = load ptr, ptr %586, align 8, !tbaa !5
  store ptr %587, ptr %26, align 8, !tbaa !5
  br label %593

588:                                              ; preds = %568
  %589 = load ptr, ptr %13, align 8, !tbaa !5
  %590 = getelementptr inbounds i64, ptr %589, i64 1
  store ptr %590, ptr %13, align 8, !tbaa !5
  %591 = getelementptr inbounds i64, ptr %590, i64 -1
  %592 = load ptr, ptr %591, align 8, !tbaa !5
  store ptr %592, ptr %26, align 8, !tbaa !5
  br label %593

593:                                              ; preds = %588, %585
  %594 = load ptr, ptr %26, align 8, !tbaa !5
  %595 = icmp eq ptr %594, null
  br i1 %595, label %596, label %597

596:                                              ; preds = %593
  store ptr @.str.49, ptr %24, align 8, !tbaa !5
  br label %655

597:                                              ; preds = %593
  %598 = load ptr, ptr %26, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.GUID, ptr %598, i32 0, i32 0
  %600 = call i32 @ReadUnaligned32(ptr noundef %599)
  store i32 %600, ptr %40, align 4, !tbaa !11
  %601 = load ptr, ptr %26, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.GUID, ptr %601, i32 0, i32 1
  %603 = call zeroext i16 @ReadUnaligned16(ptr noundef %602)
  store i16 %603, ptr %41, align 2, !tbaa !17
  %604 = load ptr, ptr %26, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.GUID, ptr %604, i32 0, i32 2
  %606 = call zeroext i16 @ReadUnaligned16(ptr noundef %605)
  store i16 %606, ptr %42, align 2, !tbaa !17
  %607 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  %608 = load i32, ptr %40, align 4, !tbaa !11
  %609 = load i16, ptr %41, align 2, !tbaa !17
  %610 = zext i16 %609 to i32
  %611 = load i16, ptr %42, align 2, !tbaa !17
  %612 = zext i16 %611 to i32
  %613 = load ptr, ptr %26, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.GUID, ptr %613, i32 0, i32 3
  %615 = getelementptr inbounds [8 x i8], ptr %614, i64 0, i64 0
  %616 = load i8, ptr %615, align 4, !tbaa !13
  %617 = zext i8 %616 to i32
  %618 = load ptr, ptr %26, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.GUID, ptr %618, i32 0, i32 3
  %620 = getelementptr inbounds [8 x i8], ptr %619, i64 0, i64 1
  %621 = load i8, ptr %620, align 1, !tbaa !13
  %622 = zext i8 %621 to i32
  %623 = load ptr, ptr %26, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.GUID, ptr %623, i32 0, i32 3
  %625 = getelementptr inbounds [8 x i8], ptr %624, i64 0, i64 2
  %626 = load i8, ptr %625, align 2, !tbaa !13
  %627 = zext i8 %626 to i32
  %628 = load ptr, ptr %26, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.GUID, ptr %628, i32 0, i32 3
  %630 = getelementptr inbounds [8 x i8], ptr %629, i64 0, i64 3
  %631 = load i8, ptr %630, align 1, !tbaa !13
  %632 = zext i8 %631 to i32
  %633 = load ptr, ptr %26, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.GUID, ptr %633, i32 0, i32 3
  %635 = getelementptr inbounds [8 x i8], ptr %634, i64 0, i64 4
  %636 = load i8, ptr %635, align 4, !tbaa !13
  %637 = zext i8 %636 to i32
  %638 = load ptr, ptr %26, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.GUID, ptr %638, i32 0, i32 3
  %640 = getelementptr inbounds [8 x i8], ptr %639, i64 0, i64 5
  %641 = load i8, ptr %640, align 1, !tbaa !13
  %642 = zext i8 %641 to i32
  %643 = load ptr, ptr %26, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.GUID, ptr %643, i32 0, i32 3
  %645 = getelementptr inbounds [8 x i8], ptr %644, i64 0, i64 6
  %646 = load i8, ptr %645, align 2, !tbaa !13
  %647 = zext i8 %646 to i32
  %648 = load ptr, ptr %26, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.GUID, ptr %648, i32 0, i32 3
  %650 = getelementptr inbounds [8 x i8], ptr %649, i64 0, i64 7
  %651 = load i8, ptr %650, align 1, !tbaa !13
  %652 = zext i8 %651 to i32
  %653 = call i64 (ptr, i64, i64, ptr, ...) @InternalPrintLibSPrint(ptr noundef %607, i64 noundef 38, i64 noundef 0, ptr noundef @.str.50, i32 noundef %608, i32 noundef %610, i32 noundef %612, i32 noundef %617, i32 noundef %622, i32 noundef %627, i32 noundef %632, i32 noundef %637, i32 noundef %642, i32 noundef %647, i32 noundef %652)
  %654 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  store ptr %654, ptr %24, align 8, !tbaa !5
  br label %655

655:                                              ; preds = %597, %596
  br label %826

656:                                              ; preds = %308
  %657 = load ptr, ptr %13, align 8, !tbaa !5
  %658 = icmp eq ptr %657, null
  br i1 %658, label %659, label %676

659:                                              ; preds = %656
  %660 = load ptr, ptr %12, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.__va_list_tag, ptr %660, i32 0, i32 0
  %662 = load i32, ptr %661, align 8
  %663 = icmp ule i32 %662, 40
  br i1 %663, label %664, label %669

664:                                              ; preds = %659
  %665 = getelementptr inbounds %struct.__va_list_tag, ptr %660, i32 0, i32 3
  %666 = load ptr, ptr %665, align 8
  %667 = getelementptr i8, ptr %666, i32 %662
  %668 = add i32 %662, 8
  store i32 %668, ptr %661, align 8
  br label %673

669:                                              ; preds = %659
  %670 = getelementptr inbounds %struct.__va_list_tag, ptr %660, i32 0, i32 2
  %671 = load ptr, ptr %670, align 8
  %672 = getelementptr i8, ptr %671, i32 8
  store ptr %672, ptr %670, align 8
  br label %673

673:                                              ; preds = %669, %664
  %674 = phi ptr [ %667, %664 ], [ %671, %669 ]
  %675 = load ptr, ptr %674, align 8, !tbaa !5
  store ptr %675, ptr %27, align 8, !tbaa !5
  br label %681

676:                                              ; preds = %656
  %677 = load ptr, ptr %13, align 8, !tbaa !5
  %678 = getelementptr inbounds i64, ptr %677, i64 1
  store ptr %678, ptr %13, align 8, !tbaa !5
  %679 = getelementptr inbounds i64, ptr %678, i64 -1
  %680 = load ptr, ptr %679, align 8, !tbaa !5
  store ptr %680, ptr %27, align 8, !tbaa !5
  br label %681

681:                                              ; preds = %676, %673
  %682 = load ptr, ptr %27, align 8, !tbaa !5
  %683 = icmp eq ptr %682, null
  br i1 %683, label %684, label %685

684:                                              ; preds = %681
  store ptr @.str.51, ptr %24, align 8, !tbaa !5
  br label %709

685:                                              ; preds = %681
  %686 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  %687 = load ptr, ptr %27, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.TIME, ptr %687, i32 0, i32 1
  %689 = load i8, ptr %688, align 2, !tbaa !19
  %690 = zext i8 %689 to i32
  %691 = load ptr, ptr %27, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.TIME, ptr %691, i32 0, i32 2
  %693 = load i8, ptr %692, align 1, !tbaa !21
  %694 = zext i8 %693 to i32
  %695 = load ptr, ptr %27, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.TIME, ptr %695, i32 0, i32 0
  %697 = load i16, ptr %696, align 4, !tbaa !22
  %698 = zext i16 %697 to i32
  %699 = load ptr, ptr %27, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.TIME, ptr %699, i32 0, i32 3
  %701 = load i8, ptr %700, align 4, !tbaa !23
  %702 = zext i8 %701 to i32
  %703 = load ptr, ptr %27, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.TIME, ptr %703, i32 0, i32 4
  %705 = load i8, ptr %704, align 1, !tbaa !24
  %706 = zext i8 %705 to i32
  %707 = call i64 (ptr, i64, i64, ptr, ...) @InternalPrintLibSPrint(ptr noundef %686, i64 noundef 38, i64 noundef 0, ptr noundef @.str.52, i32 noundef %690, i32 noundef %694, i32 noundef %698, i32 noundef %702, i32 noundef %706)
  %708 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  store ptr %708, ptr %24, align 8, !tbaa !5
  br label %709

709:                                              ; preds = %685, %684
  br label %826

710:                                              ; preds = %308
  %711 = load ptr, ptr %13, align 8, !tbaa !5
  %712 = icmp eq ptr %711, null
  br i1 %712, label %713, label %730

713:                                              ; preds = %710
  %714 = load ptr, ptr %12, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.__va_list_tag, ptr %714, i32 0, i32 0
  %716 = load i32, ptr %715, align 8
  %717 = icmp ule i32 %716, 40
  br i1 %717, label %718, label %723

718:                                              ; preds = %713
  %719 = getelementptr inbounds %struct.__va_list_tag, ptr %714, i32 0, i32 3
  %720 = load ptr, ptr %719, align 8
  %721 = getelementptr i8, ptr %720, i32 %716
  %722 = add i32 %716, 8
  store i32 %722, ptr %715, align 8
  br label %727

723:                                              ; preds = %713
  %724 = getelementptr inbounds %struct.__va_list_tag, ptr %714, i32 0, i32 2
  %725 = load ptr, ptr %724, align 8
  %726 = getelementptr i8, ptr %725, i32 8
  store ptr %726, ptr %724, align 8
  br label %727

727:                                              ; preds = %723, %718
  %728 = phi ptr [ %721, %718 ], [ %725, %723 ]
  %729 = load i64, ptr %728, align 8, !tbaa !9
  store i64 %729, ptr %39, align 8, !tbaa !9
  br label %735

730:                                              ; preds = %710
  %731 = load ptr, ptr %13, align 8, !tbaa !5
  %732 = getelementptr inbounds i64, ptr %731, i64 1
  store ptr %732, ptr %13, align 8, !tbaa !5
  %733 = getelementptr inbounds i64, ptr %732, i64 -1
  %734 = load i64, ptr %733, align 8, !tbaa !9
  store i64 %734, ptr %39, align 8, !tbaa !9
  br label %735

735:                                              ; preds = %730, %727
  %736 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  store ptr %736, ptr %24, align 8, !tbaa !5
  %737 = load i64, ptr %39, align 8, !tbaa !9
  %738 = icmp slt i64 %737, 0
  br i1 %738, label %739, label %753

739:                                              ; preds = %735
  %740 = load i64, ptr %39, align 8, !tbaa !9
  %741 = and i64 %740, 9223372036854775807
  store i64 %741, ptr %33, align 8, !tbaa !9
  %742 = load i64, ptr %33, align 8, !tbaa !9
  %743 = icmp ugt i64 %742, 0
  br i1 %743, label %744, label %752

744:                                              ; preds = %739
  %745 = load i64, ptr %33, align 8, !tbaa !9
  %746 = icmp ule i64 %745, 33
  br i1 %746, label %747, label %752

747:                                              ; preds = %744
  %748 = load i64, ptr %33, align 8, !tbaa !9
  %749 = add i64 %748, 5
  %750 = getelementptr inbounds [39 x ptr], ptr @mStatusString, i64 0, i64 %749
  %751 = load ptr, ptr %750, align 8, !tbaa !5
  store ptr %751, ptr %24, align 8, !tbaa !5
  br label %752

752:                                              ; preds = %747, %744, %739
  br label %762

753:                                              ; preds = %735
  %754 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %754, ptr %33, align 8, !tbaa !9
  %755 = load i64, ptr %33, align 8, !tbaa !9
  %756 = icmp ule i64 %755, 5
  br i1 %756, label %757, label %761

757:                                              ; preds = %753
  %758 = load i64, ptr %33, align 8, !tbaa !9
  %759 = getelementptr inbounds [39 x ptr], ptr @mStatusString, i64 0, i64 %758
  %760 = load ptr, ptr %759, align 8, !tbaa !5
  store ptr %760, ptr %24, align 8, !tbaa !5
  br label %761

761:                                              ; preds = %757, %753
  br label %762

762:                                              ; preds = %761, %752
  %763 = load ptr, ptr %24, align 8, !tbaa !5
  %764 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  %765 = icmp eq ptr %763, %764
  br i1 %765, label %766, label %770

766:                                              ; preds = %762
  %767 = getelementptr inbounds [38 x i8], ptr %16, i64 0, i64 0
  %768 = load i64, ptr %39, align 8, !tbaa !9
  %769 = call i64 (ptr, i64, i64, ptr, ...) @InternalPrintLibSPrint(ptr noundef %767, i64 noundef 38, i64 noundef 0, ptr noundef @.str.53, i64 noundef %768)
  br label %770

770:                                              ; preds = %766, %762
  br label %826

771:                                              ; preds = %308
  %772 = load i64, ptr %18, align 8, !tbaa !9
  %773 = load ptr, ptr %11, align 8, !tbaa !5
  %774 = getelementptr inbounds i8, ptr %773, i64 %772
  store ptr %774, ptr %11, align 8, !tbaa !5
  %775 = load ptr, ptr %11, align 8, !tbaa !5
  %776 = load i8, ptr %775, align 1, !tbaa !13
  %777 = sext i8 %776 to i32
  %778 = and i32 %777, 255
  %779 = load ptr, ptr %11, align 8, !tbaa !5
  %780 = getelementptr inbounds i8, ptr %779, i64 1
  %781 = load i8, ptr %780, align 1, !tbaa !13
  %782 = sext i8 %781 to i32
  %783 = shl i32 %782, 8
  %784 = or i32 %778, %783
  %785 = sext i32 %784 to i64
  %786 = load i64, ptr %19, align 8, !tbaa !9
  %787 = and i64 %785, %786
  store i64 %787, ptr %20, align 8, !tbaa !9
  %788 = load i64, ptr %20, align 8, !tbaa !9
  %789 = icmp eq i64 %788, 10
  br i1 %789, label %790, label %791

790:                                              ; preds = %771
  store ptr @.str.54, ptr %24, align 8, !tbaa !5
  br label %796

791:                                              ; preds = %771
  store ptr @.str.55, ptr %24, align 8, !tbaa !5
  %792 = load i64, ptr %18, align 8, !tbaa !9
  %793 = load ptr, ptr %11, align 8, !tbaa !5
  %794 = sub i64 0, %792
  %795 = getelementptr inbounds i8, ptr %793, i64 %794
  store ptr %795, ptr %11, align 8, !tbaa !5
  br label %796

796:                                              ; preds = %791, %790
  br label %826

797:                                              ; preds = %308
  store ptr @.str.54, ptr %24, align 8, !tbaa !5
  %798 = load i64, ptr %18, align 8, !tbaa !9
  %799 = load ptr, ptr %11, align 8, !tbaa !5
  %800 = getelementptr inbounds i8, ptr %799, i64 %798
  store ptr %800, ptr %11, align 8, !tbaa !5
  %801 = load ptr, ptr %11, align 8, !tbaa !5
  %802 = load i8, ptr %801, align 1, !tbaa !13
  %803 = sext i8 %802 to i32
  %804 = and i32 %803, 255
  %805 = load ptr, ptr %11, align 8, !tbaa !5
  %806 = getelementptr inbounds i8, ptr %805, i64 1
  %807 = load i8, ptr %806, align 1, !tbaa !13
  %808 = sext i8 %807 to i32
  %809 = shl i32 %808, 8
  %810 = or i32 %804, %809
  %811 = sext i32 %810 to i64
  %812 = load i64, ptr %19, align 8, !tbaa !9
  %813 = and i64 %811, %812
  store i64 %813, ptr %20, align 8, !tbaa !9
  %814 = load i64, ptr %20, align 8, !tbaa !9
  %815 = icmp ne i64 %814, 13
  br i1 %815, label %816, label %821

816:                                              ; preds = %797
  %817 = load i64, ptr %18, align 8, !tbaa !9
  %818 = load ptr, ptr %11, align 8, !tbaa !5
  %819 = sub i64 0, %817
  %820 = getelementptr inbounds i8, ptr %818, i64 %819
  store ptr %820, ptr %11, align 8, !tbaa !5
  br label %821

821:                                              ; preds = %816, %797
  br label %826

822:                                              ; preds = %308
  br label %823

823:                                              ; preds = %822, %308
  store ptr %20, ptr %24, align 8, !tbaa !5
  %824 = load i64, ptr %10, align 8, !tbaa !9
  %825 = or i64 %824, 1024
  store i64 %825, ptr %10, align 8, !tbaa !9
  br label %826

826:                                              ; preds = %823, %821, %796, %770, %709, %655, %565, %537, %497
  br label %881

827:                                              ; preds = %143
  %828 = load i64, ptr %18, align 8, !tbaa !9
  %829 = load ptr, ptr %11, align 8, !tbaa !5
  %830 = getelementptr inbounds i8, ptr %829, i64 %828
  store ptr %830, ptr %11, align 8, !tbaa !5
  %831 = load ptr, ptr %11, align 8, !tbaa !5
  %832 = load i8, ptr %831, align 1, !tbaa !13
  %833 = sext i8 %832 to i32
  %834 = and i32 %833, 255
  %835 = load ptr, ptr %11, align 8, !tbaa !5
  %836 = getelementptr inbounds i8, ptr %835, i64 1
  %837 = load i8, ptr %836, align 1, !tbaa !13
  %838 = sext i8 %837 to i32
  %839 = shl i32 %838, 8
  %840 = or i32 %834, %839
  %841 = sext i32 %840 to i64
  %842 = load i64, ptr %19, align 8, !tbaa !9
  %843 = and i64 %841, %842
  store i64 %843, ptr %20, align 8, !tbaa !9
  %844 = load i64, ptr %20, align 8, !tbaa !9
  %845 = icmp eq i64 %844, 10
  br i1 %845, label %846, label %847

846:                                              ; preds = %827
  store ptr @.str.54, ptr %24, align 8, !tbaa !5
  br label %852

847:                                              ; preds = %827
  store ptr @.str.55, ptr %24, align 8, !tbaa !5
  %848 = load i64, ptr %18, align 8, !tbaa !9
  %849 = load ptr, ptr %11, align 8, !tbaa !5
  %850 = sub i64 0, %848
  %851 = getelementptr inbounds i8, ptr %849, i64 %850
  store ptr %851, ptr %11, align 8, !tbaa !5
  br label %852

852:                                              ; preds = %847, %846
  br label %881

853:                                              ; preds = %143
  store ptr @.str.54, ptr %24, align 8, !tbaa !5
  %854 = load i64, ptr %18, align 8, !tbaa !9
  %855 = load ptr, ptr %11, align 8, !tbaa !5
  %856 = getelementptr inbounds i8, ptr %855, i64 %854
  store ptr %856, ptr %11, align 8, !tbaa !5
  %857 = load ptr, ptr %11, align 8, !tbaa !5
  %858 = load i8, ptr %857, align 1, !tbaa !13
  %859 = sext i8 %858 to i32
  %860 = and i32 %859, 255
  %861 = load ptr, ptr %11, align 8, !tbaa !5
  %862 = getelementptr inbounds i8, ptr %861, i64 1
  %863 = load i8, ptr %862, align 1, !tbaa !13
  %864 = sext i8 %863 to i32
  %865 = shl i32 %864, 8
  %866 = or i32 %860, %865
  %867 = sext i32 %866 to i64
  %868 = load i64, ptr %19, align 8, !tbaa !9
  %869 = and i64 %867, %868
  store i64 %869, ptr %20, align 8, !tbaa !9
  %870 = load i64, ptr %20, align 8, !tbaa !9
  %871 = icmp ne i64 %870, 13
  br i1 %871, label %872, label %877

872:                                              ; preds = %853
  %873 = load i64, ptr %18, align 8, !tbaa !9
  %874 = load ptr, ptr %11, align 8, !tbaa !5
  %875 = sub i64 0, %873
  %876 = getelementptr inbounds i8, ptr %874, i64 %875
  store ptr %876, ptr %11, align 8, !tbaa !5
  br label %877

877:                                              ; preds = %872, %853
  br label %881

878:                                              ; preds = %143
  store ptr %20, ptr %24, align 8, !tbaa !5
  %879 = load i64, ptr %10, align 8, !tbaa !9
  %880 = or i64 %879, 1024
  store i64 %880, ptr %10, align 8, !tbaa !9
  br label %881

881:                                              ; preds = %878, %877, %852, %826
  %882 = load i64, ptr %10, align 8, !tbaa !9
  %883 = and i64 %882, 1024
  %884 = icmp ne i64 %883, 0
  br i1 %884, label %885, label %886

885:                                              ; preds = %881
  store i64 65535, ptr %29, align 8, !tbaa !9
  store i64 2, ptr %30, align 8, !tbaa !9
  br label %887

886:                                              ; preds = %881
  store i64 255, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %30, align 8, !tbaa !9
  br label %887

887:                                              ; preds = %886, %885
  %888 = load i64, ptr %10, align 8, !tbaa !9
  %889 = and i64 %888, 4096
  %890 = icmp ne i64 %889, 0
  br i1 %890, label %891, label %894

891:                                              ; preds = %887
  %892 = load i64, ptr %30, align 8, !tbaa !9
  %893 = sub nsw i64 0, %892
  store i64 %893, ptr %30, align 8, !tbaa !9
  br label %935

894:                                              ; preds = %887
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %895

895:                                              ; preds = %931, %894
  %896 = load i64, ptr %28, align 8, !tbaa !9
  %897 = load i64, ptr %22, align 8, !tbaa !9
  %898 = icmp ult i64 %896, %897
  br i1 %898, label %903, label %899

899:                                              ; preds = %895
  %900 = load i64, ptr %10, align 8, !tbaa !9
  %901 = and i64 %900, 2048
  %902 = icmp eq i64 %901, 0
  br label %903

903:                                              ; preds = %899, %895
  %904 = phi i1 [ true, %895 ], [ %902, %899 ]
  br i1 %904, label %905, label %934

905:                                              ; preds = %903
  %906 = load ptr, ptr %24, align 8, !tbaa !5
  %907 = load i64, ptr %28, align 8, !tbaa !9
  %908 = load i64, ptr %30, align 8, !tbaa !9
  %909 = mul i64 %907, %908
  %910 = getelementptr inbounds i8, ptr %906, i64 %909
  %911 = load i8, ptr %910, align 1, !tbaa !13
  %912 = sext i8 %911 to i32
  %913 = and i32 %912, 255
  %914 = load ptr, ptr %24, align 8, !tbaa !5
  %915 = load i64, ptr %28, align 8, !tbaa !9
  %916 = load i64, ptr %30, align 8, !tbaa !9
  %917 = mul i64 %915, %916
  %918 = add i64 %917, 1
  %919 = getelementptr inbounds i8, ptr %914, i64 %918
  %920 = load i8, ptr %919, align 1, !tbaa !13
  %921 = sext i8 %920 to i32
  %922 = shl i32 %921, 8
  %923 = or i32 %913, %922
  %924 = sext i32 %923 to i64
  %925 = load i64, ptr %29, align 8, !tbaa !9
  %926 = and i64 %924, %925
  store i64 %926, ptr %31, align 8, !tbaa !9
  %927 = load i64, ptr %31, align 8, !tbaa !9
  %928 = icmp eq i64 %927, 0
  br i1 %928, label %929, label %930

929:                                              ; preds = %905
  br label %934

930:                                              ; preds = %905
  br label %931

931:                                              ; preds = %930
  %932 = load i64, ptr %28, align 8, !tbaa !9
  %933 = add i64 %932, 1
  store i64 %933, ptr %28, align 8, !tbaa !9
  br label %895, !llvm.loop !25

934:                                              ; preds = %929, %903
  br label %935

935:                                              ; preds = %934, %891
  %936 = load i64, ptr %22, align 8, !tbaa !9
  %937 = load i64, ptr %28, align 8, !tbaa !9
  %938 = icmp ult i64 %936, %937
  br i1 %938, label %939, label %941

939:                                              ; preds = %935
  %940 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %940, ptr %22, align 8, !tbaa !9
  br label %941

941:                                              ; preds = %939, %935
  %942 = load i64, ptr %10, align 8, !tbaa !9
  %943 = and i64 %942, 513
  %944 = icmp eq i64 %943, 512
  br i1 %944, label %945, label %970

945:                                              ; preds = %941
  %946 = load i64, ptr %21, align 8, !tbaa !9
  %947 = load i64, ptr %22, align 8, !tbaa !9
  %948 = sub i64 %946, %947
  %949 = load i32, ptr %17, align 4, !tbaa !11
  %950 = zext i32 %949 to i64
  %951 = mul i64 %948, %950
  %952 = load i64, ptr %43, align 8, !tbaa !9
  %953 = add i64 %952, %951
  store i64 %953, ptr %43, align 8, !tbaa !9
  %954 = load i64, ptr %10, align 8, !tbaa !9
  %955 = and i64 %954, 8192
  %956 = icmp eq i64 %955, 0
  br i1 %956, label %957, label %969

957:                                              ; preds = %945
  %958 = load ptr, ptr %8, align 8, !tbaa !5
  %959 = icmp ne ptr %958, null
  br i1 %959, label %960, label %969

960:                                              ; preds = %957
  %961 = load ptr, ptr %8, align 8, !tbaa !5
  %962 = load ptr, ptr %15, align 8, !tbaa !5
  %963 = load i64, ptr %21, align 8, !tbaa !9
  %964 = load i64, ptr %22, align 8, !tbaa !9
  %965 = sub i64 %963, %964
  %966 = load i32, ptr %17, align 4, !tbaa !11
  %967 = zext i32 %966 to i64
  %968 = call ptr @InternalPrintLibFillBuffer(ptr noundef %961, ptr noundef %962, i64 noundef %965, i64 noundef 32, i64 noundef %967)
  store ptr %968, ptr %8, align 8, !tbaa !5
  br label %969

969:                                              ; preds = %960, %957, %945
  br label %970

970:                                              ; preds = %969, %941
  %971 = load i8, ptr %35, align 1, !tbaa !13
  %972 = icmp ne i8 %971, 0
  br i1 %972, label %973, label %1023

973:                                              ; preds = %970
  %974 = load i8, ptr %34, align 1, !tbaa !13
  %975 = sext i8 %974 to i32
  %976 = icmp ne i32 %975, 0
  br i1 %976, label %977, label %998

977:                                              ; preds = %973
  %978 = load i32, ptr %17, align 4, !tbaa !11
  %979 = mul i32 1, %978
  %980 = zext i32 %979 to i64
  %981 = load i64, ptr %43, align 8, !tbaa !9
  %982 = add i64 %981, %980
  store i64 %982, ptr %43, align 8, !tbaa !9
  %983 = load i64, ptr %10, align 8, !tbaa !9
  %984 = and i64 %983, 8192
  %985 = icmp eq i64 %984, 0
  br i1 %985, label %986, label %997

986:                                              ; preds = %977
  %987 = load ptr, ptr %8, align 8, !tbaa !5
  %988 = icmp ne ptr %987, null
  br i1 %988, label %989, label %997

989:                                              ; preds = %986
  %990 = load ptr, ptr %8, align 8, !tbaa !5
  %991 = load ptr, ptr %15, align 8, !tbaa !5
  %992 = load i8, ptr %34, align 1, !tbaa !13
  %993 = sext i8 %992 to i64
  %994 = load i32, ptr %17, align 4, !tbaa !11
  %995 = zext i32 %994 to i64
  %996 = call ptr @InternalPrintLibFillBuffer(ptr noundef %990, ptr noundef %991, i64 noundef 1, i64 noundef %993, i64 noundef %995)
  store ptr %996, ptr %8, align 8, !tbaa !5
  br label %997

997:                                              ; preds = %989, %986, %977
  br label %998

998:                                              ; preds = %997, %973
  %999 = load i64, ptr %22, align 8, !tbaa !9
  %1000 = load i64, ptr %28, align 8, !tbaa !9
  %1001 = sub i64 %999, %1000
  %1002 = load i32, ptr %17, align 4, !tbaa !11
  %1003 = zext i32 %1002 to i64
  %1004 = mul i64 %1001, %1003
  %1005 = load i64, ptr %43, align 8, !tbaa !9
  %1006 = add i64 %1005, %1004
  store i64 %1006, ptr %43, align 8, !tbaa !9
  %1007 = load i64, ptr %10, align 8, !tbaa !9
  %1008 = and i64 %1007, 8192
  %1009 = icmp eq i64 %1008, 0
  br i1 %1009, label %1010, label %1022

1010:                                             ; preds = %998
  %1011 = load ptr, ptr %8, align 8, !tbaa !5
  %1012 = icmp ne ptr %1011, null
  br i1 %1012, label %1013, label %1022

1013:                                             ; preds = %1010
  %1014 = load ptr, ptr %8, align 8, !tbaa !5
  %1015 = load ptr, ptr %15, align 8, !tbaa !5
  %1016 = load i64, ptr %22, align 8, !tbaa !9
  %1017 = load i64, ptr %28, align 8, !tbaa !9
  %1018 = sub i64 %1016, %1017
  %1019 = load i32, ptr %17, align 4, !tbaa !11
  %1020 = zext i32 %1019 to i64
  %1021 = call ptr @InternalPrintLibFillBuffer(ptr noundef %1014, ptr noundef %1015, i64 noundef %1018, i64 noundef 48, i64 noundef %1020)
  store ptr %1021, ptr %8, align 8, !tbaa !5
  br label %1022

1022:                                             ; preds = %1013, %1010, %998
  br label %1073

1023:                                             ; preds = %970
  %1024 = load i64, ptr %22, align 8, !tbaa !9
  %1025 = load i64, ptr %28, align 8, !tbaa !9
  %1026 = sub i64 %1024, %1025
  %1027 = load i32, ptr %17, align 4, !tbaa !11
  %1028 = zext i32 %1027 to i64
  %1029 = mul i64 %1026, %1028
  %1030 = load i64, ptr %43, align 8, !tbaa !9
  %1031 = add i64 %1030, %1029
  store i64 %1031, ptr %43, align 8, !tbaa !9
  %1032 = load i64, ptr %10, align 8, !tbaa !9
  %1033 = and i64 %1032, 8192
  %1034 = icmp eq i64 %1033, 0
  br i1 %1034, label %1035, label %1047

1035:                                             ; preds = %1023
  %1036 = load ptr, ptr %8, align 8, !tbaa !5
  %1037 = icmp ne ptr %1036, null
  br i1 %1037, label %1038, label %1047

1038:                                             ; preds = %1035
  %1039 = load ptr, ptr %8, align 8, !tbaa !5
  %1040 = load ptr, ptr %15, align 8, !tbaa !5
  %1041 = load i64, ptr %22, align 8, !tbaa !9
  %1042 = load i64, ptr %28, align 8, !tbaa !9
  %1043 = sub i64 %1041, %1042
  %1044 = load i32, ptr %17, align 4, !tbaa !11
  %1045 = zext i32 %1044 to i64
  %1046 = call ptr @InternalPrintLibFillBuffer(ptr noundef %1039, ptr noundef %1040, i64 noundef %1043, i64 noundef 32, i64 noundef %1045)
  store ptr %1046, ptr %8, align 8, !tbaa !5
  br label %1047

1047:                                             ; preds = %1038, %1035, %1023
  %1048 = load i8, ptr %34, align 1, !tbaa !13
  %1049 = sext i8 %1048 to i32
  %1050 = icmp ne i32 %1049, 0
  br i1 %1050, label %1051, label %1072

1051:                                             ; preds = %1047
  %1052 = load i32, ptr %17, align 4, !tbaa !11
  %1053 = mul i32 1, %1052
  %1054 = zext i32 %1053 to i64
  %1055 = load i64, ptr %43, align 8, !tbaa !9
  %1056 = add i64 %1055, %1054
  store i64 %1056, ptr %43, align 8, !tbaa !9
  %1057 = load i64, ptr %10, align 8, !tbaa !9
  %1058 = and i64 %1057, 8192
  %1059 = icmp eq i64 %1058, 0
  br i1 %1059, label %1060, label %1071

1060:                                             ; preds = %1051
  %1061 = load ptr, ptr %8, align 8, !tbaa !5
  %1062 = icmp ne ptr %1061, null
  br i1 %1062, label %1063, label %1071

1063:                                             ; preds = %1060
  %1064 = load ptr, ptr %8, align 8, !tbaa !5
  %1065 = load ptr, ptr %15, align 8, !tbaa !5
  %1066 = load i8, ptr %34, align 1, !tbaa !13
  %1067 = sext i8 %1066 to i64
  %1068 = load i32, ptr %17, align 4, !tbaa !11
  %1069 = zext i32 %1068 to i64
  %1070 = call ptr @InternalPrintLibFillBuffer(ptr noundef %1064, ptr noundef %1065, i64 noundef 1, i64 noundef %1067, i64 noundef %1069)
  store ptr %1070, ptr %8, align 8, !tbaa !5
  br label %1071

1071:                                             ; preds = %1063, %1060, %1051
  br label %1072

1072:                                             ; preds = %1071, %1047
  br label %1073

1073:                                             ; preds = %1072, %1022
  store i64 0, ptr %33, align 8, !tbaa !9
  %1074 = load i8, ptr %34, align 1, !tbaa !13
  %1075 = sext i8 %1074 to i32
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1077, label %1080

1077:                                             ; preds = %1073
  %1078 = load i64, ptr %33, align 8, !tbaa !9
  %1079 = add i64 %1078, 1
  store i64 %1079, ptr %33, align 8, !tbaa !9
  br label %1080

1080:                                             ; preds = %1077, %1073
  br label %1081

1081:                                             ; preds = %1157, %1080
  %1082 = load i64, ptr %33, align 8, !tbaa !9
  %1083 = load i64, ptr %28, align 8, !tbaa !9
  %1084 = icmp ult i64 %1082, %1083
  br i1 %1084, label %1085, label %1158

1085:                                             ; preds = %1081
  %1086 = load ptr, ptr %24, align 8, !tbaa !5
  %1087 = load i8, ptr %1086, align 1, !tbaa !13
  %1088 = sext i8 %1087 to i32
  %1089 = and i32 %1088, 255
  %1090 = load ptr, ptr %24, align 8, !tbaa !5
  %1091 = getelementptr inbounds i8, ptr %1090, i64 1
  %1092 = load i8, ptr %1091, align 1, !tbaa !13
  %1093 = sext i8 %1092 to i32
  %1094 = shl i32 %1093, 8
  %1095 = or i32 %1089, %1094
  %1096 = sext i32 %1095 to i64
  %1097 = load i64, ptr %29, align 8, !tbaa !9
  %1098 = and i64 %1096, %1097
  store i64 %1098, ptr %31, align 8, !tbaa !9
  %1099 = load i32, ptr %17, align 4, !tbaa !11
  %1100 = mul i32 1, %1099
  %1101 = zext i32 %1100 to i64
  %1102 = load i64, ptr %43, align 8, !tbaa !9
  %1103 = add i64 %1102, %1101
  store i64 %1103, ptr %43, align 8, !tbaa !9
  %1104 = load i64, ptr %10, align 8, !tbaa !9
  %1105 = and i64 %1104, 8192
  %1106 = icmp eq i64 %1105, 0
  br i1 %1106, label %1107, label %1117

1107:                                             ; preds = %1085
  %1108 = load ptr, ptr %8, align 8, !tbaa !5
  %1109 = icmp ne ptr %1108, null
  br i1 %1109, label %1110, label %1117

1110:                                             ; preds = %1107
  %1111 = load ptr, ptr %8, align 8, !tbaa !5
  %1112 = load ptr, ptr %15, align 8, !tbaa !5
  %1113 = load i64, ptr %31, align 8, !tbaa !9
  %1114 = load i32, ptr %17, align 4, !tbaa !11
  %1115 = zext i32 %1114 to i64
  %1116 = call ptr @InternalPrintLibFillBuffer(ptr noundef %1111, ptr noundef %1112, i64 noundef 1, i64 noundef %1113, i64 noundef %1115)
  store ptr %1116, ptr %8, align 8, !tbaa !5
  br label %1117

1117:                                             ; preds = %1110, %1107, %1085
  %1118 = load i64, ptr %30, align 8, !tbaa !9
  %1119 = load ptr, ptr %24, align 8, !tbaa !5
  %1120 = getelementptr inbounds i8, ptr %1119, i64 %1118
  store ptr %1120, ptr %24, align 8, !tbaa !5
  %1121 = load i64, ptr %33, align 8, !tbaa !9
  %1122 = add i64 %1121, 1
  store i64 %1122, ptr %33, align 8, !tbaa !9
  %1123 = load i8, ptr %36, align 1, !tbaa !13
  %1124 = icmp ne i8 %1123, 0
  br i1 %1124, label %1125, label %1157

1125:                                             ; preds = %1117
  %1126 = load i64, ptr %37, align 8, !tbaa !9
  %1127 = add i64 %1126, 1
  store i64 %1127, ptr %37, align 8, !tbaa !9
  %1128 = load i64, ptr %37, align 8, !tbaa !9
  %1129 = icmp eq i64 %1128, 3
  br i1 %1129, label %1130, label %1156

1130:                                             ; preds = %1125
  store i64 0, ptr %37, align 8, !tbaa !9
  %1131 = load i64, ptr %33, align 8, !tbaa !9
  %1132 = add i64 %1131, 1
  store i64 %1132, ptr %33, align 8, !tbaa !9
  %1133 = load i64, ptr %33, align 8, !tbaa !9
  %1134 = load i64, ptr %28, align 8, !tbaa !9
  %1135 = icmp ult i64 %1133, %1134
  br i1 %1135, label %1136, label %1155

1136:                                             ; preds = %1130
  %1137 = load i32, ptr %17, align 4, !tbaa !11
  %1138 = mul i32 1, %1137
  %1139 = zext i32 %1138 to i64
  %1140 = load i64, ptr %43, align 8, !tbaa !9
  %1141 = add i64 %1140, %1139
  store i64 %1141, ptr %43, align 8, !tbaa !9
  %1142 = load i64, ptr %10, align 8, !tbaa !9
  %1143 = and i64 %1142, 8192
  %1144 = icmp eq i64 %1143, 0
  br i1 %1144, label %1145, label %1154

1145:                                             ; preds = %1136
  %1146 = load ptr, ptr %8, align 8, !tbaa !5
  %1147 = icmp ne ptr %1146, null
  br i1 %1147, label %1148, label %1154

1148:                                             ; preds = %1145
  %1149 = load ptr, ptr %8, align 8, !tbaa !5
  %1150 = load ptr, ptr %15, align 8, !tbaa !5
  %1151 = load i32, ptr %17, align 4, !tbaa !11
  %1152 = zext i32 %1151 to i64
  %1153 = call ptr @InternalPrintLibFillBuffer(ptr noundef %1149, ptr noundef %1150, i64 noundef 1, i64 noundef 44, i64 noundef %1152)
  store ptr %1153, ptr %8, align 8, !tbaa !5
  br label %1154

1154:                                             ; preds = %1148, %1145, %1136
  br label %1155

1155:                                             ; preds = %1154, %1130
  br label %1156

1156:                                             ; preds = %1155, %1125
  br label %1157

1157:                                             ; preds = %1156, %1117
  br label %1081, !llvm.loop !26

1158:                                             ; preds = %1081
  %1159 = load i64, ptr %10, align 8, !tbaa !9
  %1160 = and i64 %1159, 513
  %1161 = icmp eq i64 %1160, 513
  br i1 %1161, label %1162, label %1187

1162:                                             ; preds = %1158
  %1163 = load i64, ptr %21, align 8, !tbaa !9
  %1164 = load i64, ptr %22, align 8, !tbaa !9
  %1165 = sub i64 %1163, %1164
  %1166 = load i32, ptr %17, align 4, !tbaa !11
  %1167 = zext i32 %1166 to i64
  %1168 = mul i64 %1165, %1167
  %1169 = load i64, ptr %43, align 8, !tbaa !9
  %1170 = add i64 %1169, %1168
  store i64 %1170, ptr %43, align 8, !tbaa !9
  %1171 = load i64, ptr %10, align 8, !tbaa !9
  %1172 = and i64 %1171, 8192
  %1173 = icmp eq i64 %1172, 0
  br i1 %1173, label %1174, label %1186

1174:                                             ; preds = %1162
  %1175 = load ptr, ptr %8, align 8, !tbaa !5
  %1176 = icmp ne ptr %1175, null
  br i1 %1176, label %1177, label %1186

1177:                                             ; preds = %1174
  %1178 = load ptr, ptr %8, align 8, !tbaa !5
  %1179 = load ptr, ptr %15, align 8, !tbaa !5
  %1180 = load i64, ptr %21, align 8, !tbaa !9
  %1181 = load i64, ptr %22, align 8, !tbaa !9
  %1182 = sub i64 %1180, %1181
  %1183 = load i32, ptr %17, align 4, !tbaa !11
  %1184 = zext i32 %1183 to i64
  %1185 = call ptr @InternalPrintLibFillBuffer(ptr noundef %1178, ptr noundef %1179, i64 noundef %1182, i64 noundef 32, i64 noundef %1184)
  store ptr %1185, ptr %8, align 8, !tbaa !5
  br label %1186

1186:                                             ; preds = %1177, %1174, %1162
  br label %1187

1187:                                             ; preds = %1186, %1158
  %1188 = load i64, ptr %18, align 8, !tbaa !9
  %1189 = load ptr, ptr %11, align 8, !tbaa !5
  %1190 = getelementptr inbounds i8, ptr %1189, i64 %1188
  store ptr %1190, ptr %11, align 8, !tbaa !5
  %1191 = load ptr, ptr %11, align 8, !tbaa !5
  %1192 = load i8, ptr %1191, align 1, !tbaa !13
  %1193 = sext i8 %1192 to i32
  %1194 = and i32 %1193, 255
  %1195 = load ptr, ptr %11, align 8, !tbaa !5
  %1196 = getelementptr inbounds i8, ptr %1195, i64 1
  %1197 = load i8, ptr %1196, align 1, !tbaa !13
  %1198 = sext i8 %1197 to i32
  %1199 = shl i32 %1198, 8
  %1200 = or i32 %1194, %1199
  %1201 = sext i32 %1200 to i64
  %1202 = load i64, ptr %19, align 8, !tbaa !9
  %1203 = and i64 %1201, %1202
  store i64 %1203, ptr %20, align 8, !tbaa !9
  br label %132, !llvm.loop !27

1204:                                             ; preds = %142, %132
  %1205 = load i64, ptr %10, align 8, !tbaa !9
  %1206 = and i64 %1205, 8192
  %1207 = icmp ne i64 %1206, 0
  br i1 %1207, label %1208, label %1213

1208:                                             ; preds = %1204
  %1209 = load i64, ptr %43, align 8, !tbaa !9
  %1210 = load i32, ptr %17, align 4, !tbaa !11
  %1211 = zext i32 %1210 to i64
  %1212 = udiv i64 %1209, %1211
  store i64 %1212, ptr %7, align 8
  store i32 1, ptr %44, align 4
  br label %1273

1213:                                             ; preds = %1204
  br label %1214

1214:                                             ; preds = %1213
  %1215 = call zeroext i8 @DebugAssertEnabled()
  %1216 = icmp ne i8 %1215, 0
  br i1 %1216, label %1217, label %1222

1217:                                             ; preds = %1214
  %1218 = load ptr, ptr %8, align 8, !tbaa !5
  %1219 = icmp ne ptr %1218, null
  br i1 %1219, label %1221, label %1220

1220:                                             ; preds = %1217
  call void @DebugAssert(ptr noundef @.str.1, i64 noundef 1837, ptr noundef @.str.47)
  br label %1221

1221:                                             ; preds = %1220, %1217
  br label %1222

1222:                                             ; preds = %1221, %1214
  br label %1223

1223:                                             ; preds = %1222
  br label %1224

1224:                                             ; preds = %1223
  %1225 = load ptr, ptr %8, align 8, !tbaa !5
  %1226 = load ptr, ptr %15, align 8, !tbaa !5
  %1227 = load i32, ptr %17, align 4, !tbaa !11
  %1228 = zext i32 %1227 to i64
  %1229 = getelementptr inbounds i8, ptr %1226, i64 %1228
  %1230 = load i32, ptr %17, align 4, !tbaa !11
  %1231 = zext i32 %1230 to i64
  %1232 = call ptr @InternalPrintLibFillBuffer(ptr noundef %1225, ptr noundef %1229, i64 noundef 1, i64 noundef 0, i64 noundef %1231)
  br label %1233

1233:                                             ; preds = %1224
  %1234 = call zeroext i8 @DebugAssertEnabled()
  %1235 = icmp ne i8 %1234, 0
  br i1 %1235, label %1236, label %1246

1236:                                             ; preds = %1233
  %1237 = load i64, ptr %10, align 8, !tbaa !9
  %1238 = and i64 %1237, 64
  %1239 = icmp eq i64 %1238, 0
  br i1 %1239, label %1245, label %1240

1240:                                             ; preds = %1236
  %1241 = load ptr, ptr %14, align 8, !tbaa !5
  %1242 = call i64 @StrSize(ptr noundef %1241)
  %1243 = icmp ne i64 %1242, 0
  br i1 %1243, label %1245, label %1244

1244:                                             ; preds = %1240
  call void @DebugAssert(ptr noundef @.str.1, i64 noundef 1846, ptr noundef @.str.56)
  br label %1245

1245:                                             ; preds = %1244, %1240, %1236
  br label %1246

1246:                                             ; preds = %1245, %1233
  br label %1247

1247:                                             ; preds = %1246
  br label %1248

1248:                                             ; preds = %1247
  br label %1249

1249:                                             ; preds = %1248
  %1250 = call zeroext i8 @DebugAssertEnabled()
  %1251 = icmp ne i8 %1250, 0
  br i1 %1251, label %1252, label %1262

1252:                                             ; preds = %1249
  %1253 = load i64, ptr %10, align 8, !tbaa !9
  %1254 = and i64 %1253, 64
  %1255 = icmp ne i64 %1254, 0
  br i1 %1255, label %1261, label %1256

1256:                                             ; preds = %1252
  %1257 = load ptr, ptr %14, align 8, !tbaa !5
  %1258 = call i64 @AsciiStrSize(ptr noundef %1257)
  %1259 = icmp ne i64 %1258, 0
  br i1 %1259, label %1261, label %1260

1260:                                             ; preds = %1256
  call void @DebugAssert(ptr noundef @.str.1, i64 noundef 1851, ptr noundef @.str.57)
  br label %1261

1261:                                             ; preds = %1260, %1256, %1252
  br label %1262

1262:                                             ; preds = %1261, %1249
  br label %1263

1263:                                             ; preds = %1262
  br label %1264

1264:                                             ; preds = %1263
  %1265 = load ptr, ptr %8, align 8, !tbaa !5
  %1266 = load ptr, ptr %14, align 8, !tbaa !5
  %1267 = ptrtoint ptr %1265 to i64
  %1268 = ptrtoint ptr %1266 to i64
  %1269 = sub i64 %1267, %1268
  %1270 = load i32, ptr %17, align 4, !tbaa !11
  %1271 = zext i32 %1270 to i64
  %1272 = sdiv i64 %1269, %1271
  store i64 %1272, ptr %7, align 8
  store i32 1, ptr %44, align 4
  br label %1273

1273:                                             ; preds = %1264, %1208, %56
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 38, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  %1274 = load i64, ptr %7, align 8
  ret i64 %1274
}

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

declare i32 @ReadUnaligned32(ptr noundef) #1

declare zeroext i16 @ReadUnaligned16(ptr noundef) #1

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

!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 = !{!"long long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!18, !18, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!20, !7, i64 2}
!20 = !{!"", !18, i64 0, !7, i64 2, !7, i64 3, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7, !12, i64 8, !18, i64 12, !7, i64 14, !7, i64 15}
!21 = !{!20, !7, i64 3}
!22 = !{!20, !18, i64 0}
!23 = !{!20, !7, i64 4}
!24 = !{!20, !7, i64 5}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}


; 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"

@.str.1 = external hidden unnamed_addr constant [159 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [33 x i8], align 1
@mStatusString = external dso_local local_unnamed_addr global [39 x ptr], align 16
@.str.47 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [70 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

declare zeroext i8 @DebugAssertEnabled() local_unnamed_addr #1

declare void @DebugAssert(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

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

declare i64 @AsciiStrSize(ptr noundef) local_unnamed_addr #1

declare i64 @StrSize(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local ptr @InternalPrintLibValueToString(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i64 @InternalPrintLibSPrint(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ...) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local i64 @InternalPrintLibSPrintMarker(ptr noundef %0, i64 noundef %1, i64 noundef %2, ptr noundef %3, ptr nocapture noundef %4, ptr noundef readonly %5) local_unnamed_addr #2 {
  %7 = alloca [38 x i8], align 16
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 38, ptr nonnull %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  %10 = and i64 %2, 8192
  %.not = icmp eq i64 %10, 0
  %11 = icmp eq i64 %1, 0
  br i1 %.not, label %13, label %12

12:                                               ; preds = %6
  %spec.select = select i1 %11, ptr null, ptr %0
  br label %19

13:                                               ; preds = %6
  br i1 %11, label %575, label %14

14:                                               ; preds = %13
  %15 = tail call zeroext i8 @DebugAssertEnabled() #4
  %16 = icmp eq i8 %15, 0
  %17 = icmp ne ptr %0, null
  %or.cond25 = or i1 %17, %16
  br i1 %or.cond25, label %19, label %18

18:                                               ; preds = %14
  tail call void @DebugAssert(ptr noundef nonnull @.str.1, i64 noundef 1248, ptr noundef nonnull @.str.47) #4
  br label %19

19:                                               ; preds = %12, %14, %18
  %.0344 = phi ptr [ %0, %14 ], [ null, %18 ], [ %spec.select, %12 ]
  %20 = and i64 %2, 64
  %.not450.not.not.not.not.not.not = icmp eq i64 %20, 0
  %. = select i1 %.not450.not.not.not.not.not.not, i64 1, i64 2
  %.not451 = icmp eq ptr %.0344, null
  %21 = add i64 %1, -1
  %.lobit = lshr exact i64 %20, 6
  %22 = shl i64 %21, %.lobit
  %23 = getelementptr inbounds i8, ptr %.0344, i64 %22
  %.0404 = select i1 %.not451, ptr null, ptr %23
  %24 = and i64 %2, 256
  %.not452 = icmp eq i64 %24, 0
  %25 = tail call zeroext i8 @DebugAssertEnabled() #4
  %.not453 = icmp eq i8 %25, 0
  br i1 %.not452, label %30, label %26

26:                                               ; preds = %19
  br i1 %.not453, label %34, label %27

27:                                               ; preds = %26
  %28 = tail call i64 @StrSize(ptr noundef %3) #4
  %.not456 = icmp eq i64 %28, 0
  br i1 %.not456, label %29, label %34

29:                                               ; preds = %27
  tail call void @DebugAssert(ptr noundef nonnull @.str.1, i64 noundef 1279, ptr noundef nonnull @.str.7) #4
  br label %34

30:                                               ; preds = %19
  br i1 %.not453, label %34, label %31

31:                                               ; preds = %30
  %32 = tail call i64 @AsciiStrSize(ptr noundef %3) #4
  %.not454 = icmp eq i64 %32, 0
  br i1 %.not454, label %33, label %34

33:                                               ; preds = %31
  tail call void @DebugAssert(ptr noundef nonnull @.str.1, i64 noundef 1287, ptr noundef nonnull @.str.6) #4
  br label %34

34:                                               ; preds = %30, %33, %31, %26, %29, %27
  %.0402 = phi i64 [ 2, %27 ], [ 2, %29 ], [ 2, %26 ], [ 1, %31 ], [ 1, %33 ], [ 1, %30 ]
  %.0401 = phi i64 [ 65535, %27 ], [ 65535, %29 ], [ 65535, %26 ], [ 255, %31 ], [ 255, %33 ], [ 255, %30 ]
  %35 = load i8, ptr %3, align 1, !tbaa !5
  %36 = zext i8 %35 to i64
  %37 = getelementptr inbounds i8, ptr %3, i64 1
  %38 = load i8, ptr %37, align 1, !tbaa !5
  %39 = sext i8 %38 to i64
  %40 = shl nsw i64 %39, 8
  %.masked = and i64 %40, 4294967040
  %.pn554576 = or disjoint i64 %.masked, %36
  %storemerge555 = and i64 %.0401, %.pn554576
  store i64 %storemerge555, ptr %8, align 8, !tbaa !8
  %.not457556 = icmp eq i64 %storemerge555, 0
  br i1 %.not457556, label %._crit_edge565, label %.lr.ph564

.lr.ph564:                                        ; preds = %34
  %41 = getelementptr inbounds i8, ptr %4, i64 8
  %42 = getelementptr inbounds i8, ptr %4, i64 16
  %43 = ptrtoint ptr %7 to i64
  br label %44

44:                                               ; preds = %.lr.ph564, %539
  %storemerge562 = phi i64 [ %storemerge555, %.lr.ph564 ], [ %storemerge, %539 ]
  %.0561 = phi i64 [ 0, %.lr.ph564 ], [ %.6, %539 ]
  %.1345560 = phi ptr [ %.0344, %.lr.ph564 ], [ %.9, %539 ]
  %.0406559 = phi ptr [ %5, %.lr.ph564 ], [ %.9415, %539 ]
  %.0416558 = phi i64 [ %2, %.lr.ph564 ], [ %.11.fr, %539 ]
  %.0426557 = phi ptr [ %3, %.lr.ph564 ], [ %540, %539 ]
  %45 = icmp ne ptr %.1345560, null
  %.not458 = icmp uge ptr %.1345560, %.0404
  %or.cond485.not = select i1 %45, i1 %.not458, i1 false
  br i1 %or.cond485.not, label %._crit_edge565, label %46

46:                                               ; preds = %44
  %47 = and i64 %.0416558, 8512
  %trunc517 = trunc nuw i64 %storemerge562 to i16
  switch i16 %trunc517, label %415 [
    i16 37, label %.preheader527
    i16 13, label %394
    i16 10, label %405
  ]

.preheader527:                                    ; preds = %46, %.preheader527.backedge
  %.0373537 = phi i64 [ %.0373537.be, %.preheader527.backedge ], [ 0, %46 ]
  %.0390536 = phi i64 [ %.0390536.be, %.preheader527.backedge ], [ 1, %46 ]
  %.0398535 = phi i64 [ %.0398535.be, %.preheader527.backedge ], [ 0, %46 ]
  %.1407534 = phi ptr [ %.1407534.be, %.preheader527.backedge ], [ %.0406559, %46 ]
  %.1417533 = phi i64 [ %.1417533.be, %.preheader527.backedge ], [ %47, %46 ]
  %.1427532 = phi ptr [ %.1427532.be, %.preheader527.backedge ], [ %.0426557, %46 ]
  %48 = getelementptr inbounds i8, ptr %.1427532, i64 %.0402
  %49 = load i8, ptr %48, align 1, !tbaa !5
  %50 = zext i8 %49 to i64
  %51 = getelementptr inbounds i8, ptr %48, i64 1
  %52 = load i8, ptr %51, align 1, !tbaa !5
  %53 = sext i8 %52 to i64
  %54 = shl nsw i64 %53, 8
  %.masked580 = and i64 %54, 4294967040
  %55 = or disjoint i64 %.masked580, %50
  %56 = and i64 %.0401, %55
  store i64 %56, ptr %8, align 8, !tbaa !8
  %trunc = trunc nuw i64 %56 to i16
  switch i16 %trunc, label %.loopexit603.loopexit [
    i16 46, label %57
    i16 45, label %59
    i16 43, label %61
    i16 32, label %63
    i16 44, label %65
    i16 76, label %67
    i16 108, label %67
    i16 42, label %69
    i16 48, label %111
    i16 49, label %115
    i16 50, label %115
    i16 51, label %115
    i16 52, label %115
    i16 53, label %115
    i16 54, label %115
    i16 55, label %115
    i16 56, label %115
    i16 57, label %115
    i16 0, label %.loopexit603
  ]

57:                                               ; preds = %.preheader527
  %58 = or i64 %.1417533, 2048
  br label %.preheader527.backedge

59:                                               ; preds = %.preheader527
  %60 = or i64 %.1417533, 1
  br label %.preheader527.backedge

61:                                               ; preds = %.preheader527
  %62 = or i64 %.1417533, 2
  br label %.preheader527.backedge

63:                                               ; preds = %.preheader527
  %64 = or i64 %.1417533, 4
  br label %.preheader527.backedge

65:                                               ; preds = %.preheader527
  %66 = or i64 %.1417533, 8
  br label %.preheader527.backedge

67:                                               ; preds = %.preheader527, %.preheader527
  %68 = or i64 %.1417533, 16
  br label %.preheader527.backedge

69:                                               ; preds = %.preheader527
  %70 = and i64 %.1417533, 2048
  %71 = icmp eq i64 %70, 0
  br i1 %71, label %72, label %92

72:                                               ; preds = %69
  %73 = or i64 %.1417533, 512
  %74 = icmp eq ptr %.1407534, null
  br i1 %74, label %75, label %89

75:                                               ; preds = %72
  %76 = load i32, ptr %4, align 8
  %77 = icmp ult i32 %76, 41
  br i1 %77, label %78, label %83

78:                                               ; preds = %75
  %79 = load ptr, ptr %42, align 8
  %80 = zext nneg i32 %76 to i64
  %81 = getelementptr i8, ptr %79, i64 %80
  %82 = add nuw nsw i32 %76, 8
  store i32 %82, ptr %4, align 8
  br label %86

83:                                               ; preds = %75
  %84 = load ptr, ptr %41, align 8
  %85 = getelementptr i8, ptr %84, i64 8
  store ptr %85, ptr %41, align 8
  br label %86

86:                                               ; preds = %83, %78
  %87 = phi ptr [ %81, %78 ], [ %84, %83 ]
  %88 = load i64, ptr %87, align 8, !tbaa !8
  br label %.preheader527.backedge

89:                                               ; preds = %72
  %90 = getelementptr inbounds i8, ptr %.1407534, i64 8
  %91 = load i64, ptr %.1407534, align 8, !tbaa !8
  br label %.preheader527.backedge

92:                                               ; preds = %69
  %93 = icmp eq ptr %.1407534, null
  br i1 %93, label %94, label %108

94:                                               ; preds = %92
  %95 = load i32, ptr %4, align 8
  %96 = icmp ult i32 %95, 41
  br i1 %96, label %97, label %102

97:                                               ; preds = %94
  %98 = load ptr, ptr %42, align 8
  %99 = zext nneg i32 %95 to i64
  %100 = getelementptr i8, ptr %98, i64 %99
  %101 = add nuw nsw i32 %95, 8
  store i32 %101, ptr %4, align 8
  br label %105

102:                                              ; preds = %94
  %103 = load ptr, ptr %41, align 8
  %104 = getelementptr i8, ptr %103, i64 8
  store ptr %104, ptr %41, align 8
  br label %105

105:                                              ; preds = %102, %97
  %106 = phi ptr [ %100, %97 ], [ %103, %102 ]
  %107 = load i64, ptr %106, align 8, !tbaa !8
  br label %.preheader527.backedge

108:                                              ; preds = %92
  %109 = getelementptr inbounds i8, ptr %.1407534, i64 8
  %110 = load i64, ptr %.1407534, align 8, !tbaa !8
  br label %.preheader527.backedge

111:                                              ; preds = %.preheader527
  %112 = lshr i64 %.1417533, 6
  %113 = and i64 %112, 32
  %114 = xor i64 %113, 32
  %spec.select486 = or i64 %114, %.1417533
  br label %115

115:                                              ; preds = %111, %.preheader527, %.preheader527, %.preheader527, %.preheader527, %.preheader527, %.preheader527, %.preheader527, %.preheader527, %.preheader527
  %.2418 = phi i64 [ %.1417533, %.preheader527 ], [ %.1417533, %.preheader527 ], [ %.1417533, %.preheader527 ], [ %.1417533, %.preheader527 ], [ %.1417533, %.preheader527 ], [ %.1417533, %.preheader527 ], [ %.1417533, %.preheader527 ], [ %.1417533, %.preheader527 ], [ %.1417533, %.preheader527 ], [ %spec.select486, %111 ]
  %116 = add nsw i64 %56, -48
  %117 = icmp ult i64 %116, 10
  br i1 %117, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %115, %.lr.ph
  %.1374529 = phi i64 [ %121, %.lr.ph ], [ 0, %115 ]
  %.2428528 = phi ptr [ %122, %.lr.ph ], [ %48, %115 ]
  %118 = phi i64 [ %130, %.lr.ph ], [ %56, %115 ]
  %119 = mul i64 %.1374529, 10
  %120 = add nsw i64 %118, -48
  %121 = add i64 %120, %119
  %122 = getelementptr inbounds i8, ptr %.2428528, i64 %.0402
  %123 = load i8, ptr %122, align 1, !tbaa !5
  %124 = zext i8 %123 to i64
  %125 = getelementptr inbounds i8, ptr %122, i64 1
  %126 = load i8, ptr %125, align 1, !tbaa !5
  %127 = sext i8 %126 to i64
  %128 = shl nsw i64 %127, 8
  %.masked581 = and i64 %128, 4294967040
  %129 = or disjoint i64 %.masked581, %124
  %130 = and i64 %.0401, %129
  store i64 %130, ptr %8, align 8, !tbaa !8
  %131 = add nsw i64 %130, -48
  %132 = icmp ult i64 %131, 10
  br i1 %132, label %.lr.ph, label %._crit_edge, !llvm.loop !10

._crit_edge:                                      ; preds = %.lr.ph, %115
  %133 = phi ptr [ %.1427532, %115 ], [ %.2428528, %.lr.ph ]
  %.1374.lcssa = phi i64 [ 0, %115 ], [ %121, %.lr.ph ]
  %134 = and i64 %.2418, 2048
  %135 = icmp eq i64 %134, 0
  br i1 %135, label %136, label %.preheader527.backedge

.preheader527.backedge:                           ; preds = %._crit_edge, %136, %89, %86, %108, %105, %67, %65, %63, %61, %59, %57
  %.0373537.be = phi i64 [ %.1374.lcssa, %136 ], [ %.0373537, %86 ], [ %.0373537, %89 ], [ %.0373537, %105 ], [ %.0373537, %108 ], [ %.0373537, %67 ], [ %.0373537, %65 ], [ %.0373537, %63 ], [ %.0373537, %61 ], [ %.0373537, %59 ], [ %.0373537, %57 ], [ %.1374.lcssa, %._crit_edge ]
  %.0390536.be = phi i64 [ %.0390536, %136 ], [ %.0390536, %86 ], [ %.0390536, %89 ], [ %107, %105 ], [ %110, %108 ], [ %.0390536, %67 ], [ %.0390536, %65 ], [ %.0390536, %63 ], [ %.0390536, %61 ], [ %.0390536, %59 ], [ %.0390536, %57 ], [ %.1374.lcssa, %._crit_edge ]
  %.0398535.be = phi i64 [ %.1374.lcssa, %136 ], [ %88, %86 ], [ %91, %89 ], [ %.0398535, %105 ], [ %.0398535, %108 ], [ %.0398535, %67 ], [ %.0398535, %65 ], [ %.0398535, %63 ], [ %.0398535, %61 ], [ %.0398535, %59 ], [ %.0398535, %57 ], [ %.0398535, %._crit_edge ]
  %.1407534.be = phi ptr [ %.1407534, %136 ], [ null, %86 ], [ %90, %89 ], [ null, %105 ], [ %109, %108 ], [ %.1407534, %67 ], [ %.1407534, %65 ], [ %.1407534, %63 ], [ %.1407534, %61 ], [ %.1407534, %59 ], [ %.1407534, %57 ], [ %.1407534, %._crit_edge ]
  %.1417533.be = phi i64 [ %137, %136 ], [ %73, %86 ], [ %73, %89 ], [ %.1417533, %105 ], [ %.1417533, %108 ], [ %68, %67 ], [ %66, %65 ], [ %64, %63 ], [ %62, %61 ], [ %60, %59 ], [ %58, %57 ], [ %.2418, %._crit_edge ]
  %.1427532.be = phi ptr [ %133, %136 ], [ %48, %86 ], [ %48, %89 ], [ %48, %105 ], [ %48, %108 ], [ %48, %67 ], [ %48, %65 ], [ %48, %63 ], [ %48, %61 ], [ %48, %59 ], [ %48, %57 ], [ %133, %._crit_edge ]
  br label %.preheader527, !llvm.loop !12

136:                                              ; preds = %._crit_edge
  %137 = or i64 %.2418, 512
  br label %.preheader527.backedge

.loopexit603.loopexit:                            ; preds = %.preheader527
  br label %.loopexit603

.loopexit603:                                     ; preds = %.preheader527, %.loopexit603.loopexit
  %.4430.ph = phi ptr [ %48, %.loopexit603.loopexit ], [ %.1427532, %.preheader527 ]
  %.2392.ph = phi i64 [ %.0390536, %.loopexit603.loopexit ], [ 0, %.preheader527 ]
  %trunc618 = trunc nuw i64 %56 to i16
  switch i16 %trunc618, label %392 [
    i16 112, label %138
    i16 88, label %141
    i16 120, label %143
    i16 100, label %145
    i16 115, label %222
    i16 83, label %222
    i16 97, label %224
    i16 99, label %244
    i16 103, label %261
    i16 116, label %311
    i16 114, label %344
    i16 13, label %371
    i16 10, label %382
  ]

138:                                              ; preds = %.loopexit603
  %139 = and i64 %.1417533, -55
  %140 = or disjoint i64 %139, 16
  br label %141

141:                                              ; preds = %138, %.loopexit603
  %.4420 = phi i64 [ %.1417533, %.loopexit603 ], [ %140, %138 ]
  %142 = or i64 %.4420, 32
  br label %143

143:                                              ; preds = %141, %.loopexit603
  %.5421 = phi i64 [ %.1417533, %.loopexit603 ], [ %142, %141 ]
  %144 = or i64 %.5421, 128
  br label %145

145:                                              ; preds = %143, %.loopexit603
  %.6422 = phi i64 [ %.1417533, %.loopexit603 ], [ %144, %143 ]
  %146 = and i64 %.6422, 16
  %147 = icmp eq i64 %146, 0
  %148 = icmp eq ptr %.1407534, null
  br i1 %147, label %149, label %169

149:                                              ; preds = %145
  br i1 %148, label %150, label %165

150:                                              ; preds = %149
  %151 = load i32, ptr %4, align 8
  %152 = icmp ult i32 %151, 41
  br i1 %152, label %153, label %158

153:                                              ; preds = %150
  %154 = load ptr, ptr %42, align 8
  %155 = zext nneg i32 %151 to i64
  %156 = getelementptr i8, ptr %154, i64 %155
  %157 = add nuw nsw i32 %151, 8
  store i32 %157, ptr %4, align 8
  br label %161

158:                                              ; preds = %150
  %159 = load ptr, ptr %41, align 8
  %160 = getelementptr i8, ptr %159, i64 8
  store ptr %160, ptr %41, align 8
  br label %161

161:                                              ; preds = %158, %153
  %162 = phi ptr [ %156, %153 ], [ %159, %158 ]
  %163 = load i64, ptr %162, align 8, !tbaa !8
  %sext = shl i64 %163, 32
  %164 = ashr exact i64 %sext, 32
  br label %187

165:                                              ; preds = %149
  %166 = getelementptr inbounds i8, ptr %.1407534, i64 8
  %167 = load i32, ptr %.1407534, align 4, !tbaa !13
  %168 = sext i32 %167 to i64
  br label %187

169:                                              ; preds = %145
  br i1 %148, label %170, label %184

170:                                              ; preds = %169
  %171 = load i32, ptr %4, align 8
  %172 = icmp ult i32 %171, 41
  br i1 %172, label %173, label %178

173:                                              ; preds = %170
  %174 = load ptr, ptr %42, align 8
  %175 = zext nneg i32 %171 to i64
  %176 = getelementptr i8, ptr %174, i64 %175
  %177 = add nuw nsw i32 %171, 8
  store i32 %177, ptr %4, align 8
  br label %181

178:                                              ; preds = %170
  %179 = load ptr, ptr %41, align 8
  %180 = getelementptr i8, ptr %179, i64 8
  store ptr %180, ptr %41, align 8
  br label %181

181:                                              ; preds = %178, %173
  %182 = phi ptr [ %176, %173 ], [ %179, %178 ]
  %183 = load i64, ptr %182, align 8, !tbaa !8
  br label %187

184:                                              ; preds = %169
  %185 = getelementptr inbounds i8, ptr %.1407534, i64 8
  %186 = load i64, ptr %.1407534, align 8, !tbaa !8
  br label %187

187:                                              ; preds = %181, %184, %161, %165
  %.3409 = phi ptr [ null, %161 ], [ %166, %165 ], [ null, %181 ], [ %185, %184 ]
  %.0388 = phi i64 [ %164, %161 ], [ %168, %165 ], [ %183, %181 ], [ %186, %184 ]
  %188 = trunc i64 %.6422 to i8
  %189 = shl i8 %188, 3
  %spec.select487 = and i8 %189, 32
  %190 = and i64 %.6422, 2
  %.not464 = icmp eq i64 %190, 0
  %.1362 = select i1 %.not464, i8 %spec.select487, i8 43
  %191 = and i64 %.6422, 8
  %.lobit519 = lshr exact i64 %191, 3
  %.0357 = trunc nuw nsw i64 %.lobit519 to i8
  %192 = and i64 %.6422, 128
  %193 = icmp eq i64 %192, 0
  br i1 %193, label %194, label %200

194:                                              ; preds = %187
  %.not465.not = icmp eq i64 %191, 0
  %195 = and i64 %.6422, -161
  %spec.select488 = select i1 %.not465.not, i64 %.6422, i64 %195
  %spec.select489 = select i1 %.not465.not, i64 %.2392.ph, i64 1
  %196 = icmp slt i64 %.0388, 0
  br i1 %196, label %197, label %203

197:                                              ; preds = %194
  %198 = or i64 %spec.select488, 2
  %199 = sub nsw i64 0, %.0388
  br label %203

200:                                              ; preds = %187
  %201 = icmp slt i64 %.0388, 0
  %or.cond = select i1 %147, i1 %201, i1 false
  %202 = and i64 %.0388, 4294967295
  %spec.select490 = select i1 %or.cond, i64 %202, i64 %.0388
  br label %203

203:                                              ; preds = %200, %194, %197
  %.8424 = phi i64 [ %198, %197 ], [ %spec.select488, %194 ], [ %.6422, %200 ]
  %.4394 = phi i64 [ %spec.select489, %197 ], [ %spec.select489, %194 ], [ %.2392.ph, %200 ]
  %.1389 = phi i64 [ %199, %197 ], [ %.0388, %194 ], [ %spec.select490, %200 ]
  %.2363 = phi i8 [ 45, %197 ], [ %.1362, %194 ], [ %.1362, %200 ]
  %.1358 = phi i8 [ %.0357, %197 ], [ %.0357, %194 ], [ 0, %200 ]
  %.0352 = phi i64 [ 10, %197 ], [ 10, %194 ], [ 16, %200 ]
  %204 = call ptr @InternalPrintLibValueToString(ptr noundef nonnull %7, i64 noundef %.1389, i64 noundef %.0352)
  %205 = ptrtoint ptr %204 to i64
  %206 = sub i64 %205, %43
  %207 = icmp eq i64 %.1389, 0
  %208 = icmp eq i64 %.4394, 0
  %or.cond3 = select i1 %207, i1 %208, i1 false
  %spec.store.select = select i1 %or.cond3, i64 0, i64 %206
  %209 = getelementptr inbounds i8, ptr %7, i64 %spec.store.select
  %210 = urem i64 %spec.store.select, 3
  %.not467 = icmp eq i64 %210, 0
  %211 = xor i64 %210, 3
  %spec.select491 = select i1 %.not467, i64 0, i64 %211
  %212 = icmp ne i8 %.1358, 0
  %213 = icmp ne i64 %spec.store.select, 0
  %or.cond5 = and i1 %212, %213
  br i1 %or.cond5, label %214, label %218

214:                                              ; preds = %203
  %215 = add i64 %spec.store.select, -1
  %216 = udiv i64 %215, 3
  %217 = add i64 %216, %spec.store.select
  br label %218

218:                                              ; preds = %214, %203
  %.3376 = phi i64 [ %217, %214 ], [ %spec.store.select, %203 ]
  %.not468 = icmp ne i8 %.2363, 0
  %219 = zext i1 %.not468 to i64
  %.5395 = add i64 %.4394, %219
  %.4377 = add i64 %.3376, %219
  %220 = or i64 %.8424, 4096
  %221 = and i64 %.8424, 2593
  %or.cond496 = icmp eq i64 %221, 544
  %spec.select510 = select i1 %or.cond496, i64 %.0398535, i64 %.5395
  br label %417

222:                                              ; preds = %.loopexit603, %.loopexit603
  %223 = or i64 %.1417533, 1024
  br label %224

224:                                              ; preds = %222, %.loopexit603
  %.9425 = phi i64 [ %.1417533, %.loopexit603 ], [ %223, %222 ]
  %225 = icmp eq ptr %.1407534, null
  br i1 %225, label %226, label %237

226:                                              ; preds = %224
  %227 = load i32, ptr %4, align 8
  %228 = icmp ult i32 %227, 41
  br i1 %228, label %229, label %234

229:                                              ; preds = %226
  %230 = load ptr, ptr %42, align 8
  %231 = zext nneg i32 %227 to i64
  %232 = getelementptr i8, ptr %230, i64 %231
  %233 = add nuw nsw i32 %227, 8
  store i32 %233, ptr %4, align 8
  br label %239

234:                                              ; preds = %226
  %235 = load ptr, ptr %41, align 8
  %236 = getelementptr i8, ptr %235, i64 8
  store ptr %236, ptr %41, align 8
  br label %239

237:                                              ; preds = %224
  %238 = getelementptr inbounds i8, ptr %.1407534, i64 8
  br label %239

239:                                              ; preds = %229, %234, %237
  %.4410 = phi ptr [ %238, %237 ], [ null, %234 ], [ null, %229 ]
  %.0383.in = phi ptr [ %.1407534, %237 ], [ %235, %234 ], [ %232, %229 ]
  %.0383 = load ptr, ptr %.0383.in, align 8, !tbaa !15
  %240 = icmp eq ptr %.0383, null
  %241 = and i64 %.9425, -1025
  %spec.select497 = select i1 %240, i64 %241, i64 %.9425
  %spec.select498 = select i1 %240, ptr @.str.48, ptr %.0383
  %242 = and i64 %spec.select497, 2048
  %243 = icmp eq i64 %242, 0
  %spec.select509 = select i1 %243, i64 0, i64 %.2392.ph
  br label %417

244:                                              ; preds = %.loopexit603
  %245 = icmp eq ptr %.1407534, null
  br i1 %245, label %246, label %257

246:                                              ; preds = %244
  %247 = load i32, ptr %4, align 8
  %248 = icmp ult i32 %247, 41
  br i1 %248, label %249, label %254

249:                                              ; preds = %246
  %250 = load ptr, ptr %42, align 8
  %251 = zext nneg i32 %247 to i64
  %252 = getelementptr i8, ptr %250, i64 %251
  %253 = add nuw nsw i32 %247, 8
  store i32 %253, ptr %4, align 8
  br label %259

254:                                              ; preds = %246
  %255 = load ptr, ptr %41, align 8
  %256 = getelementptr i8, ptr %255, i64 8
  store ptr %256, ptr %41, align 8
  br label %259

257:                                              ; preds = %244
  %258 = getelementptr inbounds i8, ptr %.1407534, i64 8
  br label %259

259:                                              ; preds = %249, %254, %257
  %storemerge462.in.in = phi ptr [ %.1407534, %257 ], [ %252, %249 ], [ %255, %254 ]
  %.5411 = phi ptr [ %258, %257 ], [ null, %249 ], [ null, %254 ]
  %storemerge462.in = load i64, ptr %storemerge462.in.in, align 8, !tbaa !8
  %storemerge462 = and i64 %storemerge462.in, 65535
  store i64 %storemerge462, ptr %9, align 8, !tbaa !8
  %260 = or i64 %.1417533, 1024
  br label %417

261:                                              ; preds = %.loopexit603
  %262 = icmp eq ptr %.1407534, null
  br i1 %262, label %263, label %274

263:                                              ; preds = %261
  %264 = load i32, ptr %4, align 8
  %265 = icmp ult i32 %264, 41
  br i1 %265, label %266, label %271

266:                                              ; preds = %263
  %267 = load ptr, ptr %42, align 8
  %268 = zext nneg i32 %264 to i64
  %269 = getelementptr i8, ptr %267, i64 %268
  %270 = add nuw nsw i32 %264, 8
  store i32 %270, ptr %4, align 8
  br label %276

271:                                              ; preds = %263
  %272 = load ptr, ptr %41, align 8
  %273 = getelementptr i8, ptr %272, i64 8
  store ptr %273, ptr %41, align 8
  br label %276

274:                                              ; preds = %261
  %275 = getelementptr inbounds i8, ptr %.1407534, i64 8
  br label %276

276:                                              ; preds = %266, %271, %274
  %.6412 = phi ptr [ %275, %274 ], [ null, %271 ], [ null, %266 ]
  %.0382.in = phi ptr [ %.1407534, %274 ], [ %272, %271 ], [ %269, %266 ]
  %.0382 = load ptr, ptr %.0382.in, align 8, !tbaa !15
  %277 = icmp eq ptr %.0382, null
  br i1 %277, label %417, label %278

278:                                              ; preds = %276
  %279 = call i32 @ReadUnaligned32(ptr noundef nonnull %.0382) #4
  %280 = getelementptr inbounds i8, ptr %.0382, i64 4
  %281 = call zeroext i16 @ReadUnaligned16(ptr noundef nonnull %280) #4
  %282 = getelementptr inbounds i8, ptr %.0382, i64 6
  %283 = call zeroext i16 @ReadUnaligned16(ptr noundef nonnull %282) #4
  %284 = zext i16 %281 to i32
  %285 = zext i16 %283 to i32
  %286 = getelementptr inbounds i8, ptr %.0382, i64 8
  %287 = load i8, ptr %286, align 4, !tbaa !5
  %288 = zext i8 %287 to i32
  %289 = getelementptr inbounds i8, ptr %.0382, i64 9
  %290 = load i8, ptr %289, align 1, !tbaa !5
  %291 = zext i8 %290 to i32
  %292 = getelementptr inbounds i8, ptr %.0382, i64 10
  %293 = load i8, ptr %292, align 2, !tbaa !5
  %294 = zext i8 %293 to i32
  %295 = getelementptr inbounds i8, ptr %.0382, i64 11
  %296 = load i8, ptr %295, align 1, !tbaa !5
  %297 = zext i8 %296 to i32
  %298 = getelementptr inbounds i8, ptr %.0382, i64 12
  %299 = load i8, ptr %298, align 4, !tbaa !5
  %300 = zext i8 %299 to i32
  %301 = getelementptr inbounds i8, ptr %.0382, i64 13
  %302 = load i8, ptr %301, align 1, !tbaa !5
  %303 = zext i8 %302 to i32
  %304 = getelementptr inbounds i8, ptr %.0382, i64 14
  %305 = load i8, ptr %304, align 2, !tbaa !5
  %306 = zext i8 %305 to i32
  %307 = getelementptr inbounds i8, ptr %.0382, i64 15
  %308 = load i8, ptr %307, align 1, !tbaa !5
  %309 = zext i8 %308 to i32
  %310 = call i64 (ptr, i64, i64, ptr, ...) @InternalPrintLibSPrint(ptr noundef nonnull %7, i64 noundef 38, i64 noundef 0, ptr noundef nonnull @.str.50, i32 noundef %279, i32 noundef %284, i32 noundef %285, i32 noundef %288, i32 noundef %291, i32 noundef %294, i32 noundef %297, i32 noundef %300, i32 noundef %303, i32 noundef %306, i32 noundef %309)
  br label %417

311:                                              ; preds = %.loopexit603
  %312 = icmp eq ptr %.1407534, null
  br i1 %312, label %313, label %324

313:                                              ; preds = %311
  %314 = load i32, ptr %4, align 8
  %315 = icmp ult i32 %314, 41
  br i1 %315, label %316, label %321

316:                                              ; preds = %313
  %317 = load ptr, ptr %42, align 8
  %318 = zext nneg i32 %314 to i64
  %319 = getelementptr i8, ptr %317, i64 %318
  %320 = add nuw nsw i32 %314, 8
  store i32 %320, ptr %4, align 8
  br label %326

321:                                              ; preds = %313
  %322 = load ptr, ptr %41, align 8
  %323 = getelementptr i8, ptr %322, i64 8
  store ptr %323, ptr %41, align 8
  br label %326

324:                                              ; preds = %311
  %325 = getelementptr inbounds i8, ptr %.1407534, i64 8
  br label %326

326:                                              ; preds = %316, %321, %324
  %.7413 = phi ptr [ %325, %324 ], [ null, %321 ], [ null, %316 ]
  %.0381.in = phi ptr [ %.1407534, %324 ], [ %322, %321 ], [ %319, %316 ]
  %.0381 = load ptr, ptr %.0381.in, align 8, !tbaa !15
  %327 = icmp eq ptr %.0381, null
  br i1 %327, label %417, label %328

328:                                              ; preds = %326
  %329 = getelementptr inbounds i8, ptr %.0381, i64 2
  %330 = load i8, ptr %329, align 2, !tbaa !17
  %331 = zext i8 %330 to i32
  %332 = getelementptr inbounds i8, ptr %.0381, i64 3
  %333 = load i8, ptr %332, align 1, !tbaa !20
  %334 = zext i8 %333 to i32
  %335 = load i16, ptr %.0381, align 4, !tbaa !21
  %336 = zext i16 %335 to i32
  %337 = getelementptr inbounds i8, ptr %.0381, i64 4
  %338 = load i8, ptr %337, align 4, !tbaa !22
  %339 = zext i8 %338 to i32
  %340 = getelementptr inbounds i8, ptr %.0381, i64 5
  %341 = load i8, ptr %340, align 1, !tbaa !23
  %342 = zext i8 %341 to i32
  %343 = call i64 (ptr, i64, i64, ptr, ...) @InternalPrintLibSPrint(ptr noundef nonnull %7, i64 noundef 38, i64 noundef 0, ptr noundef nonnull @.str.52, i32 noundef %331, i32 noundef %334, i32 noundef %336, i32 noundef %339, i32 noundef %342)
  br label %417

344:                                              ; preds = %.loopexit603
  %345 = icmp eq ptr %.1407534, null
  br i1 %345, label %346, label %357

346:                                              ; preds = %344
  %347 = load i32, ptr %4, align 8
  %348 = icmp ult i32 %347, 41
  br i1 %348, label %349, label %354

349:                                              ; preds = %346
  %350 = load ptr, ptr %42, align 8
  %351 = zext nneg i32 %347 to i64
  %352 = getelementptr i8, ptr %350, i64 %351
  %353 = add nuw nsw i32 %347, 8
  store i32 %353, ptr %4, align 8
  br label %359

354:                                              ; preds = %346
  %355 = load ptr, ptr %41, align 8
  %356 = getelementptr i8, ptr %355, i64 8
  store ptr %356, ptr %41, align 8
  br label %359

357:                                              ; preds = %344
  %358 = getelementptr inbounds i8, ptr %.1407534, i64 8
  br label %359

359:                                              ; preds = %349, %354, %357
  %.8414 = phi ptr [ %358, %357 ], [ null, %354 ], [ null, %349 ]
  %.0351.in = phi ptr [ %.1407534, %357 ], [ %355, %354 ], [ %352, %349 ]
  %.0351 = load i64, ptr %.0351.in, align 8, !tbaa !8
  %360 = icmp slt i64 %.0351, 0
  br i1 %360, label %361, label %366

361:                                              ; preds = %359
  %362 = and i64 %.0351, 9223372036854775807
  %363 = add nsw i64 %362, -1
  %or.cond7 = icmp ult i64 %363, 33
  br i1 %or.cond7, label %364, label %.thread

364:                                              ; preds = %361
  %365 = add nuw nsw i64 %362, 5
  br label %368

366:                                              ; preds = %359
  %367 = icmp ult i64 %.0351, 6
  br i1 %367, label %368, label %.thread

368:                                              ; preds = %366, %364
  %.pn518 = phi i64 [ %365, %364 ], [ %.0351, %366 ]
  %.2385.in = getelementptr inbounds [39 x ptr], ptr @mStatusString, i64 0, i64 %.pn518
  %.2385 = load ptr, ptr %.2385.in, align 8, !tbaa !15
  %369 = icmp eq ptr %.2385, %7
  br i1 %369, label %.thread, label %417

.thread:                                          ; preds = %366, %361, %368
  %.2385512 = phi ptr [ %.2385, %368 ], [ %7, %361 ], [ %7, %366 ]
  %370 = call i64 (ptr, i64, i64, ptr, ...) @InternalPrintLibSPrint(ptr noundef nonnull %7, i64 noundef 38, i64 noundef 0, ptr noundef nonnull @.str.53, i64 noundef %.0351)
  br label %417

371:                                              ; preds = %.loopexit603
  %372 = getelementptr inbounds i8, ptr %.4430.ph, i64 %.0402
  %373 = load i8, ptr %372, align 1, !tbaa !5
  %374 = zext i8 %373 to i64
  %375 = getelementptr inbounds i8, ptr %372, i64 1
  %376 = load i8, ptr %375, align 1, !tbaa !5
  %377 = sext i8 %376 to i64
  %378 = shl nsw i64 %377, 8
  %.masked583 = and i64 %378, 4294967040
  %379 = or disjoint i64 %.masked583, %374
  %380 = and i64 %.0401, %379
  store i64 %380, ptr %8, align 8, !tbaa !8
  %381 = icmp eq i64 %380, 10
  %..1427 = select i1 %381, ptr %372, ptr %.4430.ph
  %.str.54..str.55 = select i1 %381, ptr @.str.54, ptr @.str.55
  br label %417

382:                                              ; preds = %.loopexit603
  %383 = getelementptr inbounds i8, ptr %.4430.ph, i64 %.0402
  %384 = load i8, ptr %383, align 1, !tbaa !5
  %385 = zext i8 %384 to i64
  %386 = getelementptr inbounds i8, ptr %383, i64 1
  %387 = load i8, ptr %386, align 1, !tbaa !5
  %388 = sext i8 %387 to i64
  %389 = shl nsw i64 %388, 8
  %.masked582 = and i64 %389, 4294967040
  %390 = or disjoint i64 %.masked582, %385
  %391 = and i64 %.0401, %390
  store i64 %391, ptr %8, align 8, !tbaa !8
  %.not461 = icmp eq i64 %391, 13
  %spec.select499 = select i1 %.not461, ptr %383, ptr %.4430.ph
  br label %417

392:                                              ; preds = %.loopexit603
  %393 = or i64 %.1417533, 1024
  br label %417

394:                                              ; preds = %46
  %395 = getelementptr inbounds i8, ptr %.0426557, i64 %.0402
  %396 = load i8, ptr %395, align 1, !tbaa !5
  %397 = zext i8 %396 to i64
  %398 = getelementptr inbounds i8, ptr %395, i64 1
  %399 = load i8, ptr %398, align 1, !tbaa !5
  %400 = sext i8 %399 to i64
  %401 = shl nsw i64 %400, 8
  %.masked579 = and i64 %401, 4294967040
  %402 = or disjoint i64 %.masked579, %397
  %403 = and i64 %.0401, %402
  store i64 %403, ptr %8, align 8, !tbaa !8
  %404 = icmp eq i64 %403, 10
  %..0426 = select i1 %404, ptr %395, ptr %.0426557
  %.str.54..str.55500 = select i1 %404, ptr @.str.54, ptr @.str.55
  br label %417

405:                                              ; preds = %46
  %406 = getelementptr inbounds i8, ptr %.0426557, i64 %.0402
  %407 = load i8, ptr %406, align 1, !tbaa !5
  %408 = zext i8 %407 to i64
  %409 = getelementptr inbounds i8, ptr %406, i64 1
  %410 = load i8, ptr %409, align 1, !tbaa !5
  %411 = sext i8 %410 to i64
  %412 = shl nsw i64 %411, 8
  %.masked578 = and i64 %412, 4294967040
  %413 = or disjoint i64 %.masked578, %408
  %414 = and i64 %.0401, %413
  store i64 %414, ptr %8, align 8, !tbaa !8
  %.not459 = icmp eq i64 %414, 13
  %spec.select501 = select i1 %.not459, ptr %406, ptr %.0426557
  br label %417

415:                                              ; preds = %46
  %416 = or disjoint i64 %47, 1024
  br label %417

417:                                              ; preds = %218, %239, %405, %382, %394, %371, %326, %276, %259, %392, %278, %328, %.thread, %368, %415
  %.5431 = phi ptr [ %.0426557, %415 ], [ %.4430.ph, %392 ], [ %.4430.ph, %.thread ], [ %.4430.ph, %368 ], [ %.4430.ph, %328 ], [ %.4430.ph, %278 ], [ %.4430.ph, %259 ], [ %.4430.ph, %276 ], [ %.4430.ph, %326 ], [ %..1427, %371 ], [ %spec.select499, %382 ], [ %..0426, %394 ], [ %spec.select501, %405 ], [ %.4430.ph, %239 ], [ %.4430.ph, %218 ]
  %.11 = phi i64 [ %416, %415 ], [ %393, %392 ], [ %.1417533, %.thread ], [ %.1417533, %368 ], [ %.1417533, %328 ], [ %.1417533, %278 ], [ %260, %259 ], [ %.1417533, %276 ], [ %.1417533, %326 ], [ %.1417533, %371 ], [ %.1417533, %382 ], [ %47, %394 ], [ %47, %405 ], [ %spec.select497, %239 ], [ %220, %218 ]
  %.9415 = phi ptr [ %.0406559, %415 ], [ %.1407534, %392 ], [ %.8414, %.thread ], [ %.8414, %368 ], [ %.7413, %328 ], [ %.6412, %278 ], [ %.5411, %259 ], [ %.6412, %276 ], [ %.7413, %326 ], [ %.1407534, %371 ], [ %.1407534, %382 ], [ %.0406559, %394 ], [ %.0406559, %405 ], [ %.4410, %239 ], [ %.3409, %218 ]
  %.2400 = phi i64 [ 0, %415 ], [ %.0398535, %392 ], [ %.0398535, %.thread ], [ %.0398535, %368 ], [ %.0398535, %328 ], [ %.0398535, %278 ], [ %.0398535, %259 ], [ %.0398535, %276 ], [ %.0398535, %326 ], [ %.0398535, %371 ], [ %.0398535, %382 ], [ 0, %394 ], [ 0, %405 ], [ %.0398535, %239 ], [ %.0398535, %218 ]
  %.6396 = phi i64 [ 1, %415 ], [ %.2392.ph, %392 ], [ %.2392.ph, %.thread ], [ %.2392.ph, %368 ], [ %.2392.ph, %328 ], [ %.2392.ph, %278 ], [ %.2392.ph, %259 ], [ %.2392.ph, %276 ], [ %.2392.ph, %326 ], [ %.2392.ph, %371 ], [ %.2392.ph, %382 ], [ 1, %394 ], [ 1, %405 ], [ %spec.select509, %239 ], [ %spec.select510, %218 ]
  %.3386 = phi ptr [ %8, %415 ], [ %8, %392 ], [ %.2385512, %.thread ], [ %.2385, %368 ], [ %7, %328 ], [ %7, %278 ], [ %9, %259 ], [ @.str.49, %276 ], [ @.str.51, %326 ], [ %.str.54..str.55, %371 ], [ @.str.54, %382 ], [ %.str.54..str.55500, %394 ], [ @.str.54, %405 ], [ %spec.select498, %239 ], [ %209, %218 ]
  %.5378 = phi i64 [ 0, %415 ], [ %.0373537, %392 ], [ %.0373537, %.thread ], [ %.0373537, %368 ], [ %.0373537, %328 ], [ %.0373537, %278 ], [ %.0373537, %259 ], [ %.0373537, %276 ], [ %.0373537, %326 ], [ %.0373537, %371 ], [ %.0373537, %382 ], [ 0, %394 ], [ 0, %405 ], [ %.0373537, %239 ], [ %.4377, %218 ]
  %.3364 = phi i8 [ 0, %415 ], [ 0, %392 ], [ 0, %.thread ], [ 0, %368 ], [ 0, %328 ], [ 0, %278 ], [ 0, %259 ], [ 0, %276 ], [ 0, %326 ], [ 0, %371 ], [ 0, %382 ], [ 0, %394 ], [ 0, %405 ], [ 0, %239 ], [ %.2363, %218 ]
  %.not473 = phi i1 [ true, %415 ], [ true, %392 ], [ true, %.thread ], [ true, %368 ], [ true, %328 ], [ true, %278 ], [ true, %259 ], [ true, %276 ], [ true, %326 ], [ true, %371 ], [ true, %382 ], [ true, %394 ], [ true, %405 ], [ true, %239 ], [ false, %218 ]
  %.2359 = phi i8 [ 0, %415 ], [ 0, %392 ], [ 0, %.thread ], [ 0, %368 ], [ 0, %328 ], [ 0, %278 ], [ 0, %259 ], [ 0, %276 ], [ 0, %326 ], [ 0, %371 ], [ 0, %382 ], [ 0, %394 ], [ 0, %405 ], [ 0, %239 ], [ %.1358, %218 ]
  %.1354 = phi i64 [ 0, %415 ], [ 0, %392 ], [ 0, %.thread ], [ 0, %368 ], [ 0, %328 ], [ 0, %278 ], [ 0, %259 ], [ 0, %276 ], [ 0, %326 ], [ 0, %371 ], [ 0, %382 ], [ 0, %394 ], [ 0, %405 ], [ 0, %239 ], [ %spec.select491, %218 ]
  %.11.fr = freeze i64 %.11
  %418 = and i64 %.11.fr, 1024
  %.not471.not = icmp eq i64 %418, 0
  %.502 = select i1 %.not471.not, i64 255, i64 65535
  %.503 = select i1 %.not471.not, i64 1, i64 2
  %419 = and i64 %.11.fr, 4096
  %.not472 = icmp eq i64 %419, 0
  br i1 %.not472, label %.preheader, label %437

.preheader:                                       ; preds = %417
  %.lobit521 = lshr exact i64 %418, 10
  %420 = and i64 %.11.fr, 2048
  %421 = icmp eq i64 %420, 0
  %422 = icmp ne i64 %.6396, 0
  %423 = or i1 %421, %422
  br i1 %423, label %.lr.ph540, label %.loopexit

.lr.ph540:                                        ; preds = %.preheader
  br i1 %421, label %.lr.ph540.split.us, label %.lr.ph540.split.preheader

.lr.ph540.split.preheader:                        ; preds = %.lr.ph540
  %umax = call i64 @llvm.umax.i64(i64 %.6396, i64 1)
  br label %.lr.ph540.split

.lr.ph540.split.us:                               ; preds = %.lr.ph540, %.lr.ph540.split.us
  %.6379539.us = phi i64 [ %436, %.lr.ph540.split.us ], [ 0, %.lr.ph540 ]
  %424 = shl i64 %.6379539.us, %.lobit521
  %425 = getelementptr inbounds i8, ptr %.3386, i64 %424
  %426 = load i8, ptr %425, align 1, !tbaa !5
  %427 = zext i8 %426 to i64
  %428 = add i64 %424, 1
  %429 = getelementptr inbounds i8, ptr %.3386, i64 %428
  %430 = load i8, ptr %429, align 1, !tbaa !5
  %431 = sext i8 %430 to i64
  %432 = shl nsw i64 %431, 8
  %.masked585 = and i64 %432, 4294967040
  %433 = or disjoint i64 %.masked585, %427
  %434 = and i64 %.502, %433
  %435 = icmp eq i64 %434, 0
  %436 = add i64 %.6379539.us, 1
  br i1 %435, label %.loopexit, label %.lr.ph540.split.us

437:                                              ; preds = %417
  %.503.neg = select i1 %.not471.not, i64 -1, i64 -2
  br label %.loopexit

.lr.ph540.split:                                  ; preds = %.lr.ph540.split.preheader, %450
  %.6379539 = phi i64 [ %451, %450 ], [ 0, %.lr.ph540.split.preheader ]
  %438 = shl i64 %.6379539, %.lobit521
  %439 = getelementptr inbounds i8, ptr %.3386, i64 %438
  %440 = load i8, ptr %439, align 1, !tbaa !5
  %441 = zext i8 %440 to i64
  %442 = add i64 %438, 1
  %443 = getelementptr inbounds i8, ptr %.3386, i64 %442
  %444 = load i8, ptr %443, align 1, !tbaa !5
  %445 = sext i8 %444 to i64
  %446 = shl nsw i64 %445, 8
  %.masked584 = and i64 %446, 4294967040
  %447 = or disjoint i64 %.masked584, %441
  %448 = and i64 %.502, %447
  %449 = icmp eq i64 %448, 0
  br i1 %449, label %.loopexit, label %450

450:                                              ; preds = %.lr.ph540.split
  %451 = add nuw i64 %.6379539, 1
  %exitcond.not = icmp eq i64 %451, %umax
  br i1 %exitcond.not, label %.loopexit, label %.lr.ph540.split, !llvm.loop !24

.loopexit:                                        ; preds = %.lr.ph540.split, %450, %.lr.ph540.split.us, %.preheader, %437
  %.7380 = phi i64 [ %.5378, %437 ], [ 0, %.preheader ], [ %.6379539.us, %.lr.ph540.split.us ], [ %.6379539, %.lr.ph540.split ], [ %umax, %450 ]
  %.1371 = phi i64 [ %.503.neg, %437 ], [ %.503, %.preheader ], [ %.503, %.lr.ph540.split.us ], [ %.503, %450 ], [ %.503, %.lr.ph540.split ]
  %spec.select504 = call i64 @llvm.umax.i64(i64 %.6396, i64 %.7380)
  %452 = and i64 %.11.fr, 513
  %453 = icmp eq i64 %452, 512
  br i1 %453, label %454, label %462

454:                                              ; preds = %.loopexit
  %455 = sub i64 %.2400, %spec.select504
  %456 = shl i64 %455, %.lobit
  %457 = add i64 %456, %.0561
  %458 = and i64 %.11.fr, 8192
  %459 = icmp eq i64 %458, 0
  %or.cond9 = and i1 %45, %459
  br i1 %or.cond9, label %460, label %462

460:                                              ; preds = %454
  %461 = call ptr @InternalPrintLibFillBuffer(ptr noundef nonnull %.1345560, ptr noundef %.0404, i64 noundef %455, i64 noundef 32, i64 noundef %.)
  br label %462

462:                                              ; preds = %454, %460, %.loopexit
  %.2346 = phi ptr [ %461, %460 ], [ %.1345560, %454 ], [ %.1345560, %.loopexit ]
  %.1 = phi i64 [ %457, %460 ], [ %457, %454 ], [ %.0561, %.loopexit ]
  br i1 %.not473, label %480, label %463

463:                                              ; preds = %462
  %.not475 = icmp eq i8 %.3364, 0
  br i1 %.not475, label %._crit_edge575, label %464

._crit_edge575:                                   ; preds = %463
  %.pre = and i64 %.11.fr, 8192
  br label %472

464:                                              ; preds = %463
  %465 = add i64 %.1, %.
  %466 = and i64 %.11.fr, 8192
  %467 = icmp eq i64 %466, 0
  %468 = icmp ne ptr %.2346, null
  %or.cond11 = select i1 %467, i1 %468, i1 false
  br i1 %or.cond11, label %469, label %472

469:                                              ; preds = %464
  %470 = zext nneg i8 %.3364 to i64
  %471 = call ptr @InternalPrintLibFillBuffer(ptr noundef nonnull %.2346, ptr noundef %.0404, i64 noundef 1, i64 noundef %470, i64 noundef %.)
  br label %472

472:                                              ; preds = %._crit_edge575, %464, %469
  %.pre-phi = phi i64 [ %.pre, %._crit_edge575 ], [ %466, %464 ], [ 0, %469 ]
  %.3347 = phi ptr [ %.2346, %._crit_edge575 ], [ %.2346, %464 ], [ %471, %469 ]
  %.2 = phi i64 [ %.1, %._crit_edge575 ], [ %465, %464 ], [ %465, %469 ]
  %473 = sub i64 %spec.select504, %.7380
  %474 = shl i64 %473, %.lobit
  %475 = add i64 %.2, %474
  %476 = icmp eq i64 %.pre-phi, 0
  %477 = icmp ne ptr %.3347, null
  %or.cond13 = select i1 %476, i1 %477, i1 false
  br i1 %or.cond13, label %478, label %496

478:                                              ; preds = %472
  %479 = call ptr @InternalPrintLibFillBuffer(ptr noundef nonnull %.3347, ptr noundef %.0404, i64 noundef %473, i64 noundef 48, i64 noundef %.)
  br label %496

480:                                              ; preds = %462
  %481 = sub i64 %spec.select504, %.7380
  %482 = shl i64 %481, %.lobit
  %483 = add i64 %.1, %482
  %484 = and i64 %.11.fr, 8192
  %485 = icmp eq i64 %484, 0
  %486 = icmp ne ptr %.2346, null
  %or.cond15 = select i1 %485, i1 %486, i1 false
  br i1 %or.cond15, label %487, label %489

487:                                              ; preds = %480
  %488 = call ptr @InternalPrintLibFillBuffer(ptr noundef nonnull %.2346, ptr noundef %.0404, i64 noundef %481, i64 noundef 32, i64 noundef %.)
  br label %489

489:                                              ; preds = %487, %480
  %.4348 = phi ptr [ %488, %487 ], [ %.2346, %480 ]
  %.not474 = icmp eq i8 %.3364, 0
  br i1 %.not474, label %496, label %490

490:                                              ; preds = %489
  %491 = add i64 %483, %.
  %492 = icmp ne ptr %.4348, null
  %or.cond17 = select i1 %485, i1 %492, i1 false
  br i1 %or.cond17, label %493, label %496

493:                                              ; preds = %490
  %494 = zext nneg i8 %.3364 to i64
  %495 = call ptr @InternalPrintLibFillBuffer(ptr noundef nonnull %.4348, ptr noundef %.0404, i64 noundef 1, i64 noundef %494, i64 noundef %.)
  br label %496

496:                                              ; preds = %489, %493, %490, %472, %478
  %.5349 = phi ptr [ %479, %478 ], [ %.3347, %472 ], [ %495, %493 ], [ %.4348, %490 ], [ %.4348, %489 ]
  %.3 = phi i64 [ %475, %478 ], [ %475, %472 ], [ %491, %493 ], [ %491, %490 ], [ %483, %489 ]
  %.not476 = icmp ne i8 %.3364, 0
  %spec.select505 = zext i1 %.not476 to i64
  %497 = icmp ugt i64 %.7380, %spec.select505
  br i1 %497, label %.lr.ph550, label %._crit_edge551

.lr.ph550:                                        ; preds = %496
  %498 = and i64 %.11.fr, 8192
  %499 = icmp eq i64 %498, 0
  %.not477 = icmp eq i8 %.2359, 0
  br label %500

500:                                              ; preds = %.lr.ph550, %527
  %.4548 = phi i64 [ %.3, %.lr.ph550 ], [ %.5, %527 ]
  %.6350547 = phi ptr [ %.5349, %.lr.ph550 ], [ %.8, %527 ]
  %.2355546 = phi i64 [ %.1354, %.lr.ph550 ], [ %.3356, %527 ]
  %.1366545 = phi i64 [ %spec.select505, %.lr.ph550 ], [ %.2367, %527 ]
  %.4387544 = phi ptr [ %.3386, %.lr.ph550 ], [ %514, %527 ]
  %501 = add i64 %.4548, %.
  %502 = icmp ne ptr %.6350547, null
  %or.cond19 = select i1 %499, i1 %502, i1 false
  br i1 %or.cond19, label %503, label %513

503:                                              ; preds = %500
  %504 = getelementptr inbounds i8, ptr %.4387544, i64 1
  %505 = load i8, ptr %504, align 1, !tbaa !5
  %506 = sext i8 %505 to i64
  %507 = shl nsw i64 %506, 8
  %508 = load i8, ptr %.4387544, align 1, !tbaa !5
  %509 = zext i8 %508 to i64
  %.masked586 = and i64 %507, 4294967040
  %510 = or disjoint i64 %.masked586, %509
  %511 = and i64 %.502, %510
  %512 = call ptr @InternalPrintLibFillBuffer(ptr noundef nonnull %.6350547, ptr noundef %.0404, i64 noundef 1, i64 noundef %511, i64 noundef %.)
  br label %513

513:                                              ; preds = %503, %500
  %.7 = phi ptr [ %512, %503 ], [ %.6350547, %500 ]
  %514 = getelementptr inbounds i8, ptr %.4387544, i64 %.1371
  %515 = add nuw i64 %.1366545, 1
  br i1 %.not477, label %527, label %516

516:                                              ; preds = %513
  %517 = add nuw nsw i64 %.2355546, 1
  %518 = icmp eq i64 %517, 3
  br i1 %518, label %519, label %527

519:                                              ; preds = %516
  %520 = add i64 %.1366545, 2
  %521 = icmp ult i64 %520, %.7380
  br i1 %521, label %522, label %527

522:                                              ; preds = %519
  %523 = add i64 %501, %.
  %524 = icmp ne ptr %.7, null
  %or.cond21 = select i1 %499, i1 %524, i1 false
  br i1 %or.cond21, label %525, label %527

525:                                              ; preds = %522
  %526 = call ptr @InternalPrintLibFillBuffer(ptr noundef nonnull %.7, ptr noundef %.0404, i64 noundef 1, i64 noundef 44, i64 noundef %.)
  br label %527

527:                                              ; preds = %516, %522, %525, %519, %513
  %.2367 = phi i64 [ %520, %525 ], [ %520, %522 ], [ %520, %519 ], [ %515, %516 ], [ %515, %513 ]
  %.3356 = phi i64 [ 0, %525 ], [ 0, %522 ], [ 0, %519 ], [ %517, %516 ], [ %.2355546, %513 ]
  %.8 = phi ptr [ %526, %525 ], [ %.7, %522 ], [ %.7, %519 ], [ %.7, %516 ], [ %.7, %513 ]
  %.5 = phi i64 [ %523, %525 ], [ %523, %522 ], [ %501, %519 ], [ %501, %516 ], [ %501, %513 ]
  %528 = icmp ult i64 %.2367, %.7380
  br i1 %528, label %500, label %._crit_edge551, !llvm.loop !25

._crit_edge551:                                   ; preds = %527, %496
  %.6350.lcssa = phi ptr [ %.5349, %496 ], [ %.8, %527 ]
  %.4.lcssa = phi i64 [ %.3, %496 ], [ %.5, %527 ]
  %529 = icmp eq i64 %452, 513
  br i1 %529, label %530, label %539

530:                                              ; preds = %._crit_edge551
  %531 = sub i64 %.2400, %spec.select504
  %532 = shl i64 %531, %.lobit
  %533 = add i64 %.4.lcssa, %532
  %534 = and i64 %.11.fr, 8192
  %535 = icmp eq i64 %534, 0
  %536 = icmp ne ptr %.6350.lcssa, null
  %or.cond23 = select i1 %535, i1 %536, i1 false
  br i1 %or.cond23, label %537, label %539

537:                                              ; preds = %530
  %538 = call ptr @InternalPrintLibFillBuffer(ptr noundef nonnull %.6350.lcssa, ptr noundef %.0404, i64 noundef %531, i64 noundef 32, i64 noundef %.)
  br label %539

539:                                              ; preds = %530, %537, %._crit_edge551
  %.9 = phi ptr [ %538, %537 ], [ %.6350.lcssa, %530 ], [ %.6350.lcssa, %._crit_edge551 ]
  %.6 = phi i64 [ %533, %537 ], [ %533, %530 ], [ %.4.lcssa, %._crit_edge551 ]
  %540 = getelementptr inbounds i8, ptr %.5431, i64 %.0402
  %541 = load i8, ptr %540, align 1, !tbaa !5
  %542 = zext i8 %541 to i64
  %543 = getelementptr inbounds i8, ptr %540, i64 1
  %544 = load i8, ptr %543, align 1, !tbaa !5
  %545 = sext i8 %544 to i64
  %546 = shl nsw i64 %545, 8
  %.masked587 = and i64 %546, 4294967040
  %.pn577 = or disjoint i64 %.masked587, %542
  %storemerge = and i64 %.0401, %.pn577
  store i64 %storemerge, ptr %8, align 8, !tbaa !8
  %.not457 = icmp eq i64 %storemerge, 0
  br i1 %.not457, label %._crit_edge565, label %44, !llvm.loop !26

._crit_edge565:                                   ; preds = %539, %44, %34
  %.0416.lcssa = phi i64 [ %2, %34 ], [ %.0416558, %44 ], [ %.11.fr, %539 ]
  %.1345.lcssa = phi ptr [ %.0344, %34 ], [ %.1345560, %44 ], [ %.9, %539 ]
  %.0.lcssa = phi i64 [ 0, %34 ], [ %.0561, %44 ], [ %.6, %539 ]
  %547 = and i64 %.0416.lcssa, 8192
  %.not478 = icmp eq i64 %547, 0
  br i1 %.not478, label %550, label %548

548:                                              ; preds = %._crit_edge565
  %549 = lshr i64 %.0.lcssa, %.lobit
  br label %575

550:                                              ; preds = %._crit_edge565
  %551 = call zeroext i8 @DebugAssertEnabled() #4
  %552 = icmp eq i8 %551, 0
  %553 = icmp ne ptr %.1345.lcssa, null
  %or.cond27 = select i1 %552, i1 true, i1 %553
  br i1 %or.cond27, label %555, label %554

554:                                              ; preds = %550
  call void @DebugAssert(ptr noundef nonnull @.str.1, i64 noundef 1837, ptr noundef nonnull @.str.47) #4
  br label %555

555:                                              ; preds = %554, %550
  %556 = getelementptr inbounds i8, ptr %.0404, i64 %.
  %557 = call ptr @InternalPrintLibFillBuffer(ptr noundef %.1345.lcssa, ptr noundef nonnull %556, i64 noundef 1, i64 noundef 0, i64 noundef %.)
  %558 = call zeroext i8 @DebugAssertEnabled() #4
  %.not479 = icmp eq i8 %558, 0
  %559 = and i64 %.0416.lcssa, 64
  %560 = icmp eq i64 %559, 0
  %or.cond507 = or i1 %560, %.not479
  br i1 %or.cond507, label %565, label %561

561:                                              ; preds = %555
  %562 = call i64 @StrSize(ptr noundef %.0344) #4
  %.not480 = icmp eq i64 %562, 0
  br i1 %.not480, label %563, label %.thread514

563:                                              ; preds = %561
  call void @DebugAssert(ptr noundef nonnull @.str.1, i64 noundef 1846, ptr noundef nonnull @.str.56) #4
  br label %.thread514

.thread514:                                       ; preds = %563, %561
  %564 = call zeroext i8 @DebugAssertEnabled() #4
  br label %570

565:                                              ; preds = %555
  %566 = call zeroext i8 @DebugAssertEnabled() #4
  %.not481 = icmp ne i8 %566, 0
  %or.cond508 = and i1 %560, %.not481
  br i1 %or.cond508, label %567, label %570

567:                                              ; preds = %565
  %568 = call i64 @AsciiStrSize(ptr noundef %.0344) #4
  %.not483 = icmp eq i64 %568, 0
  br i1 %.not483, label %569, label %570

569:                                              ; preds = %567
  call void @DebugAssert(ptr noundef nonnull @.str.1, i64 noundef 1851, ptr noundef nonnull @.str.57) #4
  br label %570

570:                                              ; preds = %.thread514, %567, %569, %565
  %571 = ptrtoint ptr %.1345.lcssa to i64
  %572 = ptrtoint ptr %.0344 to i64
  %573 = sub i64 %571, %572
  %574 = sdiv i64 %573, %.
  br label %575

575:                                              ; preds = %13, %570, %548
  %.0343 = phi i64 [ %549, %548 ], [ %574, %570 ], [ 0, %13 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 38, ptr nonnull %7) #4
  ret i64 %.0343
}

; Function Attrs: nounwind uwtable
declare dso_local ptr @InternalPrintLibFillBuffer(ptr noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

declare i32 @ReadUnaligned32(ptr noundef) local_unnamed_addr #1

declare zeroext i16 @ReadUnaligned16(ptr noundef) local_unnamed_addr #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #3

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #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 #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 nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"long long", !6, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = distinct !{!12, !11}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !6, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"any pointer", !6, i64 0}
!17 = !{!18, !6, i64 2}
!18 = !{!"", !19, i64 0, !6, i64 2, !6, i64 3, !6, i64 4, !6, i64 5, !6, i64 6, !6, i64 7, !14, i64 8, !19, i64 12, !6, i64 14, !6, i64 15}
!19 = !{!"short", !6, i64 0}
!20 = !{!18, !6, i64 3}
!21 = !{!18, !19, i64 0}
!22 = !{!18, !6, i64 4}
!23 = !{!18, !6, i64 5}
!24 = distinct !{!24, !11}
!25 = distinct !{!25, !11}
!26 = distinct !{!26, !11}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass