; LLVM IR from whoiswelliton/Computer_Engineering_UTFPR-PB :: Embedded_Systems/TIVA Connected TM4C1294XL Projects/01 - lwIP_HTTPServer_on_TIVA (aton)

; 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.ip4_addr = type { i32 }

@.str = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [188 x i8], align 1

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

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

declare i32 @lwip_htonl(i32 noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @ip4addr_aton(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca [4 x i32], align 16
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  %12 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  store ptr %12, ptr %10, align 8, !tbaa !5
  %13 = load ptr, ptr %4, align 8, !tbaa !5
  %14 = load i8, ptr %13, align 1, !tbaa !9
  store i8 %14, ptr %8, align 1, !tbaa !9
  br label %15

15:                                               ; preds = %131, %2
  %16 = call ptr @__ctype_b_loc() #5
  %17 = load ptr, ptr %16, align 8, !tbaa !5
  %18 = load i8, ptr %8, align 1, !tbaa !9
  %19 = zext i8 %18 to i32
  %20 = sext i32 %19 to i64
  %21 = getelementptr inbounds i16, ptr %17, i64 %20
  %22 = load i16, ptr %21, align 2, !tbaa !10
  %23 = zext i16 %22 to i32
  %24 = and i32 %23, 2048
  %25 = icmp ne i32 %24, 0
  br i1 %25, label %27, label %26

26:                                               ; preds = %15
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

27:                                               ; preds = %15
  store i32 0, ptr %6, align 4, !tbaa !12
  store i8 10, ptr %7, align 1, !tbaa !9
  %28 = load i8, ptr %8, align 1, !tbaa !9
  %29 = sext i8 %28 to i32
  %30 = icmp eq i32 %29, 48
  br i1 %30, label %31, label %48

31:                                               ; preds = %27
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %32, i32 1
  store ptr %33, ptr %4, align 8, !tbaa !5
  %34 = load i8, ptr %33, align 1, !tbaa !9
  store i8 %34, ptr %8, align 1, !tbaa !9
  %35 = load i8, ptr %8, align 1, !tbaa !9
  %36 = sext i8 %35 to i32
  %37 = icmp eq i32 %36, 120
  br i1 %37, label %42, label %38

38:                                               ; preds = %31
  %39 = load i8, ptr %8, align 1, !tbaa !9
  %40 = sext i8 %39 to i32
  %41 = icmp eq i32 %40, 88
  br i1 %41, label %42, label %46

42:                                               ; preds = %38, %31
  store i8 16, ptr %7, align 1, !tbaa !9
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = getelementptr inbounds i8, ptr %43, i32 1
  store ptr %44, ptr %4, align 8, !tbaa !5
  %45 = load i8, ptr %44, align 1, !tbaa !9
  store i8 %45, ptr %8, align 1, !tbaa !9
  br label %47

46:                                               ; preds = %38
  store i8 8, ptr %7, align 1, !tbaa !9
  br label %47

47:                                               ; preds = %46, %42
  br label %48

48:                                               ; preds = %47, %27
  br label %49

49:                                               ; preds = %112, %48
  %50 = call ptr @__ctype_b_loc() #5
  %51 = load ptr, ptr %50, align 8, !tbaa !5
  %52 = load i8, ptr %8, align 1, !tbaa !9
  %53 = zext i8 %52 to i32
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds i16, ptr %51, i64 %54
  %56 = load i16, ptr %55, align 2, !tbaa !10
  %57 = zext i16 %56 to i32
  %58 = and i32 %57, 2048
  %59 = icmp ne i32 %58, 0
  br i1 %59, label %60, label %72

60:                                               ; preds = %49
  %61 = load i32, ptr %6, align 4, !tbaa !12
  %62 = load i8, ptr %7, align 1, !tbaa !9
  %63 = zext i8 %62 to i32
  %64 = mul i32 %61, %63
  %65 = load i8, ptr %8, align 1, !tbaa !9
  %66 = sext i8 %65 to i32
  %67 = sub nsw i32 %66, 48
  %68 = add i32 %64, %67
  store i32 %68, ptr %6, align 4, !tbaa !12
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = getelementptr inbounds i8, ptr %69, i32 1
  store ptr %70, ptr %4, align 8, !tbaa !5
  %71 = load i8, ptr %70, align 1, !tbaa !9
  store i8 %71, ptr %8, align 1, !tbaa !9
  br label %112

72:                                               ; preds = %49
  %73 = load i8, ptr %7, align 1, !tbaa !9
  %74 = zext i8 %73 to i32
  %75 = icmp eq i32 %74, 16
  br i1 %75, label %76, label %110

76:                                               ; preds = %72
  %77 = call ptr @__ctype_b_loc() #5
  %78 = load ptr, ptr %77, align 8, !tbaa !5
  %79 = load i8, ptr %8, align 1, !tbaa !9
  %80 = zext i8 %79 to i32
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds i16, ptr %78, i64 %81
  %83 = load i16, ptr %82, align 2, !tbaa !10
  %84 = zext i16 %83 to i32
  %85 = and i32 %84, 4096
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %110

87:                                               ; preds = %76
  %88 = load i32, ptr %6, align 4, !tbaa !12
  %89 = shl i32 %88, 4
  %90 = load i8, ptr %8, align 1, !tbaa !9
  %91 = sext i8 %90 to i32
  %92 = add nsw i32 %91, 10
  %93 = call ptr @__ctype_b_loc() #5
  %94 = load ptr, ptr %93, align 8, !tbaa !5
  %95 = load i8, ptr %8, align 1, !tbaa !9
  %96 = zext i8 %95 to i32
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds i16, ptr %94, i64 %97
  %99 = load i16, ptr %98, align 2, !tbaa !10
  %100 = zext i16 %99 to i32
  %101 = and i32 %100, 512
  %102 = icmp ne i32 %101, 0
  %103 = zext i1 %102 to i64
  %104 = select i1 %102, i32 97, i32 65
  %105 = sub nsw i32 %92, %104
  %106 = or i32 %89, %105
  store i32 %106, ptr %6, align 4, !tbaa !12
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds i8, ptr %107, i32 1
  store ptr %108, ptr %4, align 8, !tbaa !5
  %109 = load i8, ptr %108, align 1, !tbaa !9
  store i8 %109, ptr %8, align 1, !tbaa !9
  br label %111

110:                                              ; preds = %76, %72
  br label %113

111:                                              ; preds = %87
  br label %112

112:                                              ; preds = %111, %60
  br label %49

113:                                              ; preds = %110
  %114 = load i8, ptr %8, align 1, !tbaa !9
  %115 = sext i8 %114 to i32
  %116 = icmp eq i32 %115, 46
  br i1 %116, label %117, label %130

117:                                              ; preds = %113
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  %120 = getelementptr inbounds i32, ptr %119, i64 3
  %121 = icmp uge ptr %118, %120
  br i1 %121, label %122, label %123

122:                                              ; preds = %117
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

123:                                              ; preds = %117
  %124 = load i32, ptr %6, align 4, !tbaa !12
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = getelementptr inbounds i32, ptr %125, i32 1
  store ptr %126, ptr %10, align 8, !tbaa !5
  store i32 %124, ptr %125, align 4, !tbaa !12
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %127, i32 1
  store ptr %128, ptr %4, align 8, !tbaa !5
  %129 = load i8, ptr %128, align 1, !tbaa !9
  store i8 %129, ptr %8, align 1, !tbaa !9
  br label %131

130:                                              ; preds = %113
  br label %132

131:                                              ; preds = %123
  br label %15

132:                                              ; preds = %130
  %133 = load i8, ptr %8, align 1, !tbaa !9
  %134 = sext i8 %133 to i32
  %135 = icmp ne i32 %134, 0
  br i1 %135, label %136, label %148

136:                                              ; preds = %132
  %137 = call ptr @__ctype_b_loc() #5
  %138 = load ptr, ptr %137, align 8, !tbaa !5
  %139 = load i8, ptr %8, align 1, !tbaa !9
  %140 = zext i8 %139 to i32
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds i16, ptr %138, i64 %141
  %143 = load i16, ptr %142, align 2, !tbaa !10
  %144 = zext i16 %143 to i32
  %145 = and i32 %144, 8192
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %148, label %147

147:                                              ; preds = %136
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

148:                                              ; preds = %136, %132
  %149 = load ptr, ptr %10, align 8, !tbaa !5
  %150 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  %151 = ptrtoint ptr %149 to i64
  %152 = ptrtoint ptr %150 to i64
  %153 = sub i64 %151, %152
  %154 = sdiv exact i64 %153, 4
  %155 = add nsw i64 %154, 1
  switch i64 %155, label %227 [
    i64 0, label %156
    i64 1, label %235
    i64 2, label %157
    i64 3, label %173
    i64 4, label %196
  ]

156:                                              ; preds = %148
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

157:                                              ; preds = %148
  %158 = load i32, ptr %6, align 4, !tbaa !12
  %159 = zext i32 %158 to i64
  %160 = icmp ugt i64 %159, 16777215
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

162:                                              ; preds = %157
  %163 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  %164 = load i32, ptr %163, align 16, !tbaa !12
  %165 = icmp ugt i32 %164, 255
  br i1 %165, label %166, label %167

166:                                              ; preds = %162
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

167:                                              ; preds = %162
  %168 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  %169 = load i32, ptr %168, align 16, !tbaa !12
  %170 = shl i32 %169, 24
  %171 = load i32, ptr %6, align 4, !tbaa !12
  %172 = or i32 %171, %170
  store i32 %172, ptr %6, align 4, !tbaa !12
  br label %235

173:                                              ; preds = %148
  %174 = load i32, ptr %6, align 4, !tbaa !12
  %175 = icmp ugt i32 %174, 65535
  br i1 %175, label %176, label %177

176:                                              ; preds = %173
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

177:                                              ; preds = %173
  %178 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  %179 = load i32, ptr %178, align 16, !tbaa !12
  %180 = icmp ugt i32 %179, 255
  br i1 %180, label %185, label %181

181:                                              ; preds = %177
  %182 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 1
  %183 = load i32, ptr %182, align 4, !tbaa !12
  %184 = icmp ugt i32 %183, 255
  br i1 %184, label %185, label %186

185:                                              ; preds = %181, %177
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

186:                                              ; preds = %181
  %187 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  %188 = load i32, ptr %187, align 16, !tbaa !12
  %189 = shl i32 %188, 24
  %190 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 1
  %191 = load i32, ptr %190, align 4, !tbaa !12
  %192 = shl i32 %191, 16
  %193 = or i32 %189, %192
  %194 = load i32, ptr %6, align 4, !tbaa !12
  %195 = or i32 %194, %193
  store i32 %195, ptr %6, align 4, !tbaa !12
  br label %235

196:                                              ; preds = %148
  %197 = load i32, ptr %6, align 4, !tbaa !12
  %198 = icmp ugt i32 %197, 255
  br i1 %198, label %199, label %200

199:                                              ; preds = %196
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

200:                                              ; preds = %196
  %201 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  %202 = load i32, ptr %201, align 16, !tbaa !12
  %203 = icmp ugt i32 %202, 255
  br i1 %203, label %212, label %204

204:                                              ; preds = %200
  %205 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 1
  %206 = load i32, ptr %205, align 4, !tbaa !12
  %207 = icmp ugt i32 %206, 255
  br i1 %207, label %212, label %208

208:                                              ; preds = %204
  %209 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 2
  %210 = load i32, ptr %209, align 8, !tbaa !12
  %211 = icmp ugt i32 %210, 255
  br i1 %211, label %212, label %213

212:                                              ; preds = %208, %204, %200
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

213:                                              ; preds = %208
  %214 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 0
  %215 = load i32, ptr %214, align 16, !tbaa !12
  %216 = shl i32 %215, 24
  %217 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 1
  %218 = load i32, ptr %217, align 4, !tbaa !12
  %219 = shl i32 %218, 16
  %220 = or i32 %216, %219
  %221 = getelementptr inbounds [4 x i32], ptr %9, i64 0, i64 2
  %222 = load i32, ptr %221, align 8, !tbaa !12
  %223 = shl i32 %222, 8
  %224 = or i32 %220, %223
  %225 = load i32, ptr %6, align 4, !tbaa !12
  %226 = or i32 %225, %224
  store i32 %226, ptr %6, align 4, !tbaa !12
  br label %235

227:                                              ; preds = %148
  br label %228

228:                                              ; preds = %227
  br label %229

229:                                              ; preds = %228
  %230 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 249, ptr noundef @.str.2)
  br label %231

231:                                              ; preds = %229
  br label %232

232:                                              ; preds = %231
  br label %233

233:                                              ; preds = %232
  br label %234

234:                                              ; preds = %233
  br label %235

235:                                              ; preds = %234, %213, %186, %167, %148
  %236 = load ptr, ptr %5, align 8, !tbaa !5
  %237 = icmp ne ptr %236, null
  br i1 %237, label %238, label %243

238:                                              ; preds = %235
  %239 = load i32, ptr %6, align 4, !tbaa !12
  %240 = call i32 @lwip_htonl(i32 noundef %239)
  %241 = load ptr, ptr %5, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.ip4_addr, ptr %241, i32 0, i32 0
  store i32 %240, ptr %242, align 4, !tbaa !14
  br label %243

243:                                              ; preds = %238, %235
  store i32 1, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %244

244:                                              ; preds = %243, %212, %199, %185, %176, %166, %161, %156, %147, %122, %26
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  %245 = load i32, ptr %3, align 4
  ret i32 %245
}

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() #3

declare i32 @printf(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 willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { nounwind willreturn memory(none) }

!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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"short", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !13, i64 0}
!15 = !{!"ip4_addr", !13, i64 0}


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

declare i32 @lwip_htonl(i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 2) i32 @ip4addr_aton(ptr nocapture noundef readonly %0, ptr noundef writeonly %1) local_unnamed_addr #1 {
  %3 = tail call ptr @__ctype_b_loc() #3
  %4 = load ptr, ptr %3, align 8, !tbaa !5
  %.04693 = load i8, ptr %0, align 1, !tbaa !9
  %5 = zext i8 %.04693 to i64
  %6 = getelementptr inbounds i16, ptr %4, i64 %5
  %7 = load i16, ptr %6, align 2, !tbaa !10
  %8 = and i16 %7, 2048
  %.not94 = icmp eq i16 %8, 0
  br i1 %.not94, label %.loopexit, label %.lr.ph100.preheader

.lr.ph100.preheader:                              ; preds = %2
  %9 = icmp eq i8 %.04693, 48
  br i1 %9, label %10, label %.split.us

10:                                               ; preds = %.lr.ph100.preheader
  %11 = getelementptr inbounds i8, ptr %0, i64 1
  %12 = load i8, ptr %11, align 1, !tbaa !9
  %13 = and i8 %12, -33
  %or.cond = icmp eq i8 %13, 88
  br i1 %or.cond, label %.split.preheader, label %.split.us

.split.preheader:                                 ; preds = %10
  %14 = getelementptr inbounds i8, ptr %0, i64 2
  br label %.split

.split.us:                                        ; preds = %.lr.ph100.preheader, %10
  %.153.ph = phi ptr [ %11, %10 ], [ %0, %.lr.ph100.preheader ]
  %.047.ph = phi i32 [ 8, %10 ], [ 10, %.lr.ph100.preheader ]
  %.1.ph = phi i8 [ %12, %10 ], [ %.04693, %.lr.ph100.preheader ]
  %15 = zext i8 %.1.ph to i64
  %16 = getelementptr inbounds i16, ptr %4, i64 %15
  %17 = load i16, ptr %16, align 2, !tbaa !10
  %18 = and i16 %17, 2048
  %.not64.us86 = icmp eq i16 %18, 0
  br i1 %.not64.us86, label %.split81.us, label %.lr.ph

.lr.ph:                                           ; preds = %.split.us, %.lr.ph
  %.2.us89 = phi i8 [ %.3.us, %.lr.ph ], [ %.1.ph, %.split.us ]
  %.048.us88 = phi i32 [ %22, %.lr.ph ], [ 0, %.split.us ]
  %.254.us87 = phi ptr [ %.355.us, %.lr.ph ], [ %.153.ph, %.split.us ]
  %19 = mul i32 %.048.us88, %.047.ph
  %20 = sext i8 %.2.us89 to i32
  %21 = add i32 %19, -48
  %22 = add i32 %21, %20
  %.355.us = getelementptr inbounds i8, ptr %.254.us87, i64 1
  %.3.us = load i8, ptr %.355.us, align 1, !tbaa !9
  %23 = zext i8 %.3.us to i64
  %24 = getelementptr inbounds i16, ptr %4, i64 %23
  %25 = load i16, ptr %24, align 2, !tbaa !10
  %26 = and i16 %25, 2048
  %.not64.us = icmp eq i16 %26, 0
  br i1 %.not64.us, label %.split81.us, label %.lr.ph

.split:                                           ; preds = %.split.preheader, %47
  %.sink = phi ptr [ %14, %.split.preheader ], [ %.355, %47 ]
  %.048 = phi i32 [ 0, %.split.preheader ], [ %.149, %47 ]
  %27 = load i8, ptr %.sink, align 1, !tbaa !9
  %28 = zext i8 %27 to i64
  %29 = getelementptr inbounds i16, ptr %4, i64 %28
  %30 = load i16, ptr %29, align 2, !tbaa !10
  %31 = zext i16 %30 to i32
  %32 = and i32 %31, 2048
  %.not64 = icmp eq i32 %32, 0
  br i1 %.not64, label %38, label %33

33:                                               ; preds = %.split
  %34 = shl i32 %.048, 4
  %35 = sext i8 %27 to i32
  %36 = add i32 %34, -48
  %37 = add i32 %36, %35
  br label %47

38:                                               ; preds = %.split
  %39 = and i32 %31, 4096
  %.not65 = icmp eq i32 %39, 0
  br i1 %.not65, label %.split81.us, label %40

40:                                               ; preds = %38
  %41 = shl i32 %.048, 4
  %42 = sext i8 %27 to i32
  %43 = add nsw i32 %42, 10
  %44 = and i32 %31, 512
  %.not70 = icmp eq i32 %44, 0
  %.neg = select i1 %.not70, i32 -65, i32 -97
  %45 = add nsw i32 %43, %.neg
  %46 = or i32 %45, %41
  br label %47

47:                                               ; preds = %40, %33
  %.149 = phi i32 [ %37, %33 ], [ %46, %40 ]
  %.355 = getelementptr inbounds i8, ptr %.sink, i64 1
  br label %.split

.split81.us:                                      ; preds = %.lr.ph, %38, %.split.us
  %.us-phi = phi ptr [ %.153.ph, %.split.us ], [ %.sink, %38 ], [ %.355.us, %.lr.ph ]
  %.us-phi82 = phi i32 [ 0, %.split.us ], [ %.048, %38 ], [ %22, %.lr.ph ]
  %.us-phi83 = phi i8 [ %.1.ph, %.split.us ], [ %27, %38 ], [ %.3.us, %.lr.ph ]
  %.us-phi84 = phi i16 [ %17, %.split.us ], [ %30, %38 ], [ %25, %.lr.ph ]
  switch i8 %.us-phi83, label %180 [
    i8 46, label %48
    i8 0, label %.loopexit73.thread157
  ]

48:                                               ; preds = %.split81.us
  %49 = getelementptr inbounds i8, ptr %.us-phi, i64 1
  %.046 = load i8, ptr %49, align 1, !tbaa !9
  %50 = zext i8 %.046 to i64
  %51 = getelementptr inbounds i16, ptr %4, i64 %50
  %52 = load i16, ptr %51, align 2, !tbaa !10
  %53 = and i16 %52, 2048
  %.not = icmp eq i16 %53, 0
  br i1 %.not, label %.loopexit, label %.lr.ph100.1

.lr.ph100.1:                                      ; preds = %48
  %54 = icmp eq i8 %.046, 48
  br i1 %54, label %55, label %.split.us.1

55:                                               ; preds = %.lr.ph100.1
  %56 = getelementptr inbounds i8, ptr %.us-phi, i64 2
  %57 = load i8, ptr %56, align 1, !tbaa !9
  %58 = and i8 %57, -33
  %or.cond.1 = icmp eq i8 %58, 88
  br i1 %or.cond.1, label %.split.preheader.1, label %.split.us.1

.split.preheader.1:                               ; preds = %55
  %59 = getelementptr inbounds i8, ptr %.us-phi, i64 3
  br label %.split.1

.split.1:                                         ; preds = %79, %.split.preheader.1
  %.355.1.sink = phi ptr [ %.355.1, %79 ], [ %59, %.split.preheader.1 ]
  %.048.1 = phi i32 [ %.149.1, %79 ], [ 0, %.split.preheader.1 ]
  %.3.1 = load i8, ptr %.355.1.sink, align 1, !tbaa !9
  %60 = zext i8 %.3.1 to i64
  %61 = getelementptr inbounds i16, ptr %4, i64 %60
  %62 = load i16, ptr %61, align 2, !tbaa !10
  %63 = zext i16 %62 to i32
  %64 = and i32 %63, 2048
  %.not64.1 = icmp eq i32 %64, 0
  br i1 %.not64.1, label %70, label %65

65:                                               ; preds = %.split.1
  %66 = shl i32 %.048.1, 4
  %67 = sext i8 %.3.1 to i32
  %68 = add i32 %66, -48
  %69 = add i32 %68, %67
  br label %79

70:                                               ; preds = %.split.1
  %71 = and i32 %63, 4096
  %.not65.1 = icmp eq i32 %71, 0
  br i1 %.not65.1, label %.split81.us.1, label %72

72:                                               ; preds = %70
  %73 = shl i32 %.048.1, 4
  %74 = sext i8 %.3.1 to i32
  %75 = add nsw i32 %74, 10
  %76 = and i32 %63, 512
  %.not70.1 = icmp eq i32 %76, 0
  %.neg.1 = select i1 %.not70.1, i32 -65, i32 -97
  %77 = add nsw i32 %75, %.neg.1
  %78 = or i32 %77, %73
  br label %79

79:                                               ; preds = %72, %65
  %.149.1 = phi i32 [ %69, %65 ], [ %78, %72 ]
  %.355.1 = getelementptr inbounds i8, ptr %.355.1.sink, i64 1
  br label %.split.1

.split.us.1:                                      ; preds = %.lr.ph100.1, %55
  %.153.1.ph = phi ptr [ %56, %55 ], [ %49, %.lr.ph100.1 ]
  %.047.1.ph = phi i32 [ 8, %55 ], [ 10, %.lr.ph100.1 ]
  %.1.1.ph = phi i8 [ %57, %55 ], [ %.046, %.lr.ph100.1 ]
  %80 = zext i8 %.1.1.ph to i64
  %81 = getelementptr inbounds i16, ptr %4, i64 %80
  %82 = load i16, ptr %81, align 2, !tbaa !10
  %83 = and i16 %82, 2048
  %.not64.us86.1 = icmp eq i16 %83, 0
  br i1 %.not64.us86.1, label %.split81.us.1, label %.lr.ph.1

.lr.ph.1:                                         ; preds = %.split.us.1, %.lr.ph.1
  %.2.us89.1 = phi i8 [ %.3.us.1, %.lr.ph.1 ], [ %.1.1.ph, %.split.us.1 ]
  %.048.us88.1 = phi i32 [ %87, %.lr.ph.1 ], [ 0, %.split.us.1 ]
  %.254.us87.1 = phi ptr [ %.355.us.1, %.lr.ph.1 ], [ %.153.1.ph, %.split.us.1 ]
  %84 = mul i32 %.048.us88.1, %.047.1.ph
  %85 = sext i8 %.2.us89.1 to i32
  %86 = add i32 %84, -48
  %87 = add i32 %86, %85
  %.355.us.1 = getelementptr inbounds i8, ptr %.254.us87.1, i64 1
  %.3.us.1 = load i8, ptr %.355.us.1, align 1, !tbaa !9
  %88 = zext i8 %.3.us.1 to i64
  %89 = getelementptr inbounds i16, ptr %4, i64 %88
  %90 = load i16, ptr %89, align 2, !tbaa !10
  %91 = and i16 %90, 2048
  %.not64.us.1 = icmp eq i16 %91, 0
  br i1 %.not64.us.1, label %.split81.us.1, label %.lr.ph.1

.split81.us.1:                                    ; preds = %.lr.ph.1, %70, %.split.us.1
  %.us-phi.1 = phi ptr [ %.153.1.ph, %.split.us.1 ], [ %.355.1.sink, %70 ], [ %.355.us.1, %.lr.ph.1 ]
  %.us-phi82.1 = phi i32 [ 0, %.split.us.1 ], [ %.048.1, %70 ], [ %87, %.lr.ph.1 ]
  %.us-phi83.1 = phi i8 [ %.1.1.ph, %.split.us.1 ], [ %.3.1, %70 ], [ %.3.us.1, %.lr.ph.1 ]
  %.us-phi84.1 = phi i16 [ %82, %.split.us.1 ], [ %62, %70 ], [ %90, %.lr.ph.1 ]
  switch i8 %.us-phi83.1, label %180 [
    i8 46, label %92
    i8 0, label %.loopexit73.thread162
  ]

92:                                               ; preds = %.split81.us.1
  %93 = getelementptr inbounds i8, ptr %.us-phi.1, i64 1
  %.046.1 = load i8, ptr %93, align 1, !tbaa !9
  %94 = zext i8 %.046.1 to i64
  %95 = getelementptr inbounds i16, ptr %4, i64 %94
  %96 = load i16, ptr %95, align 2, !tbaa !10
  %97 = and i16 %96, 2048
  %.not.1 = icmp eq i16 %97, 0
  br i1 %.not.1, label %.loopexit, label %.lr.ph100.2

.lr.ph100.2:                                      ; preds = %92
  %98 = icmp eq i8 %.046.1, 48
  br i1 %98, label %99, label %.split.us.2

99:                                               ; preds = %.lr.ph100.2
  %100 = getelementptr inbounds i8, ptr %.us-phi.1, i64 2
  %101 = load i8, ptr %100, align 1, !tbaa !9
  %102 = and i8 %101, -33
  %or.cond.2 = icmp eq i8 %102, 88
  br i1 %or.cond.2, label %.split.preheader.2, label %.split.us.2

.split.preheader.2:                               ; preds = %99
  %103 = getelementptr inbounds i8, ptr %.us-phi.1, i64 3
  br label %.split.2

.split.2:                                         ; preds = %123, %.split.preheader.2
  %.355.2.sink = phi ptr [ %.355.2, %123 ], [ %103, %.split.preheader.2 ]
  %.048.2 = phi i32 [ %.149.2, %123 ], [ 0, %.split.preheader.2 ]
  %.3.2 = load i8, ptr %.355.2.sink, align 1, !tbaa !9
  %104 = zext i8 %.3.2 to i64
  %105 = getelementptr inbounds i16, ptr %4, i64 %104
  %106 = load i16, ptr %105, align 2, !tbaa !10
  %107 = zext i16 %106 to i32
  %108 = and i32 %107, 2048
  %.not64.2 = icmp eq i32 %108, 0
  br i1 %.not64.2, label %114, label %109

109:                                              ; preds = %.split.2
  %110 = shl i32 %.048.2, 4
  %111 = sext i8 %.3.2 to i32
  %112 = add i32 %110, -48
  %113 = add i32 %112, %111
  br label %123

114:                                              ; preds = %.split.2
  %115 = and i32 %107, 4096
  %.not65.2 = icmp eq i32 %115, 0
  br i1 %.not65.2, label %.split81.us.2, label %116

116:                                              ; preds = %114
  %117 = shl i32 %.048.2, 4
  %118 = sext i8 %.3.2 to i32
  %119 = add nsw i32 %118, 10
  %120 = and i32 %107, 512
  %.not70.2 = icmp eq i32 %120, 0
  %.neg.2 = select i1 %.not70.2, i32 -65, i32 -97
  %121 = add nsw i32 %119, %.neg.2
  %122 = or i32 %121, %117
  br label %123

123:                                              ; preds = %116, %109
  %.149.2 = phi i32 [ %113, %109 ], [ %122, %116 ]
  %.355.2 = getelementptr inbounds i8, ptr %.355.2.sink, i64 1
  br label %.split.2

.split.us.2:                                      ; preds = %.lr.ph100.2, %99
  %.153.2.ph = phi ptr [ %100, %99 ], [ %93, %.lr.ph100.2 ]
  %.047.2.ph = phi i32 [ 8, %99 ], [ 10, %.lr.ph100.2 ]
  %.1.2.ph = phi i8 [ %101, %99 ], [ %.046.1, %.lr.ph100.2 ]
  %124 = zext i8 %.1.2.ph to i64
  %125 = getelementptr inbounds i16, ptr %4, i64 %124
  %126 = load i16, ptr %125, align 2, !tbaa !10
  %127 = and i16 %126, 2048
  %.not64.us86.2 = icmp eq i16 %127, 0
  br i1 %.not64.us86.2, label %.split81.us.2, label %.lr.ph.2

.lr.ph.2:                                         ; preds = %.split.us.2, %.lr.ph.2
  %.2.us89.2 = phi i8 [ %.3.us.2, %.lr.ph.2 ], [ %.1.2.ph, %.split.us.2 ]
  %.048.us88.2 = phi i32 [ %131, %.lr.ph.2 ], [ 0, %.split.us.2 ]
  %.254.us87.2 = phi ptr [ %.355.us.2, %.lr.ph.2 ], [ %.153.2.ph, %.split.us.2 ]
  %128 = mul i32 %.048.us88.2, %.047.2.ph
  %129 = sext i8 %.2.us89.2 to i32
  %130 = add i32 %128, -48
  %131 = add i32 %130, %129
  %.355.us.2 = getelementptr inbounds i8, ptr %.254.us87.2, i64 1
  %.3.us.2 = load i8, ptr %.355.us.2, align 1, !tbaa !9
  %132 = zext i8 %.3.us.2 to i64
  %133 = getelementptr inbounds i16, ptr %4, i64 %132
  %134 = load i16, ptr %133, align 2, !tbaa !10
  %135 = and i16 %134, 2048
  %.not64.us.2 = icmp eq i16 %135, 0
  br i1 %.not64.us.2, label %.split81.us.2, label %.lr.ph.2

.split81.us.2:                                    ; preds = %.lr.ph.2, %114, %.split.us.2
  %.us-phi.2 = phi ptr [ %.153.2.ph, %.split.us.2 ], [ %.355.2.sink, %114 ], [ %.355.us.2, %.lr.ph.2 ]
  %.us-phi82.2 = phi i32 [ 0, %.split.us.2 ], [ %.048.2, %114 ], [ %131, %.lr.ph.2 ]
  %.us-phi83.2 = phi i8 [ %.1.2.ph, %.split.us.2 ], [ %.3.2, %114 ], [ %.3.us.2, %.lr.ph.2 ]
  %.us-phi84.2 = phi i16 [ %126, %.split.us.2 ], [ %106, %114 ], [ %134, %.lr.ph.2 ]
  switch i8 %.us-phi83.2, label %180 [
    i8 46, label %136
    i8 0, label %.loopexit73.thread168
  ]

136:                                              ; preds = %.split81.us.2
  %137 = getelementptr inbounds i8, ptr %.us-phi.2, i64 1
  %.046.2 = load i8, ptr %137, align 1, !tbaa !9
  %138 = zext i8 %.046.2 to i64
  %139 = getelementptr inbounds i16, ptr %4, i64 %138
  %140 = load i16, ptr %139, align 2, !tbaa !10
  %141 = and i16 %140, 2048
  %.not.2 = icmp eq i16 %141, 0
  br i1 %.not.2, label %.loopexit, label %.lr.ph100.3

.lr.ph100.3:                                      ; preds = %136
  %142 = icmp eq i8 %.046.2, 48
  br i1 %142, label %143, label %.split.us.3

143:                                              ; preds = %.lr.ph100.3
  %144 = getelementptr inbounds i8, ptr %.us-phi.2, i64 2
  %145 = load i8, ptr %144, align 1, !tbaa !9
  %146 = and i8 %145, -33
  %or.cond.3 = icmp eq i8 %146, 88
  br i1 %or.cond.3, label %.split.preheader.3, label %.split.us.3

.split.preheader.3:                               ; preds = %143
  %147 = getelementptr inbounds i8, ptr %.us-phi.2, i64 3
  br label %.split.3

.split.3:                                         ; preds = %167, %.split.preheader.3
  %.355.3.sink = phi ptr [ %.355.3, %167 ], [ %147, %.split.preheader.3 ]
  %.048.3 = phi i32 [ %.149.3, %167 ], [ 0, %.split.preheader.3 ]
  %.3.3 = load i8, ptr %.355.3.sink, align 1, !tbaa !9
  %148 = zext i8 %.3.3 to i64
  %149 = getelementptr inbounds i16, ptr %4, i64 %148
  %150 = load i16, ptr %149, align 2, !tbaa !10
  %151 = zext i16 %150 to i32
  %152 = and i32 %151, 2048
  %.not64.3 = icmp eq i32 %152, 0
  br i1 %.not64.3, label %158, label %153

153:                                              ; preds = %.split.3
  %154 = shl i32 %.048.3, 4
  %155 = sext i8 %.3.3 to i32
  %156 = add i32 %154, -48
  %157 = add i32 %156, %155
  br label %167

158:                                              ; preds = %.split.3
  %159 = and i32 %151, 4096
  %.not65.3 = icmp eq i32 %159, 0
  br i1 %.not65.3, label %.split81.us.3, label %160

160:                                              ; preds = %158
  %161 = shl i32 %.048.3, 4
  %162 = sext i8 %.3.3 to i32
  %163 = add nsw i32 %162, 10
  %164 = and i32 %151, 512
  %.not70.3 = icmp eq i32 %164, 0
  %.neg.3 = select i1 %.not70.3, i32 -65, i32 -97
  %165 = add nsw i32 %163, %.neg.3
  %166 = or i32 %165, %161
  br label %167

167:                                              ; preds = %160, %153
  %.149.3 = phi i32 [ %157, %153 ], [ %166, %160 ]
  %.355.3 = getelementptr inbounds i8, ptr %.355.3.sink, i64 1
  br label %.split.3

.split.us.3:                                      ; preds = %.lr.ph100.3, %143
  %.153.3.ph = phi ptr [ %144, %143 ], [ %137, %.lr.ph100.3 ]
  %.047.3.ph = phi i32 [ 8, %143 ], [ 10, %.lr.ph100.3 ]
  %.1.3.ph = phi i8 [ %145, %143 ], [ %.046.2, %.lr.ph100.3 ]
  %168 = zext i8 %.1.3.ph to i64
  %169 = getelementptr inbounds i16, ptr %4, i64 %168
  %170 = load i16, ptr %169, align 2, !tbaa !10
  %171 = and i16 %170, 2048
  %.not64.us86.3 = icmp eq i16 %171, 0
  br i1 %.not64.us86.3, label %.split81.us.3, label %.lr.ph.3

.lr.ph.3:                                         ; preds = %.split.us.3, %.lr.ph.3
  %.2.us89.3 = phi i8 [ %.3.us.3, %.lr.ph.3 ], [ %.1.3.ph, %.split.us.3 ]
  %.048.us88.3 = phi i32 [ %175, %.lr.ph.3 ], [ 0, %.split.us.3 ]
  %.254.us87.3 = phi ptr [ %.355.us.3, %.lr.ph.3 ], [ %.153.3.ph, %.split.us.3 ]
  %172 = mul i32 %.048.us88.3, %.047.3.ph
  %173 = sext i8 %.2.us89.3 to i32
  %174 = add i32 %172, -48
  %175 = add i32 %174, %173
  %.355.us.3 = getelementptr inbounds i8, ptr %.254.us87.3, i64 1
  %.3.us.3 = load i8, ptr %.355.us.3, align 1, !tbaa !9
  %176 = zext i8 %.3.us.3 to i64
  %177 = getelementptr inbounds i16, ptr %4, i64 %176
  %178 = load i16, ptr %177, align 2, !tbaa !10
  %179 = and i16 %178, 2048
  %.not64.us.3 = icmp eq i16 %179, 0
  br i1 %.not64.us.3, label %.split81.us.3, label %.lr.ph.3

.split81.us.3:                                    ; preds = %.lr.ph.3, %158, %.split.us.3
  %.us-phi82.3 = phi i32 [ 0, %.split.us.3 ], [ %.048.3, %158 ], [ %175, %.lr.ph.3 ]
  %.us-phi83.3 = phi i8 [ %.1.3.ph, %.split.us.3 ], [ %.3.3, %158 ], [ %.3.us.3, %.lr.ph.3 ]
  %.us-phi84.3 = phi i16 [ %170, %.split.us.3 ], [ %150, %158 ], [ %178, %.lr.ph.3 ]
  switch i8 %.us-phi83.3, label %180 [
    i8 46, label %.loopexit
    i8 0, label %.loopexit73.thread
  ]

180:                                              ; preds = %.split81.us.3, %.split81.us.2, %.split81.us.1, %.split81.us
  %.sroa.9.0 = phi i32 [ undef, %.split81.us ], [ undef, %.split81.us.1 ], [ undef, %.split81.us.2 ], [ %.us-phi82.2, %.split81.us.3 ]
  %.sroa.6.0 = phi i32 [ undef, %.split81.us ], [ undef, %.split81.us.1 ], [ %.us-phi82.1, %.split81.us.2 ], [ %.us-phi82.1, %.split81.us.3 ]
  %.us-phi82.lcssa = phi i32 [ %.us-phi82, %.split81.us ], [ %.us-phi82.1, %.split81.us.1 ], [ %.us-phi82.2, %.split81.us.2 ], [ %.us-phi82.3, %.split81.us.3 ]
  %.us-phi84.lcssa = phi i16 [ %.us-phi84, %.split81.us ], [ %.us-phi84.1, %.split81.us.1 ], [ %.us-phi84.2, %.split81.us.2 ], [ %.us-phi84.3, %.split81.us.3 ]
  %.0.idx96.lcssa = phi i64 [ 0, %.split81.us ], [ 1, %.split81.us.1 ], [ 2, %.split81.us.2 ], [ 3, %.split81.us.3 ]
  %181 = and i16 %.us-phi84.lcssa, 8192
  %.not67 = icmp eq i16 %181, 0
  br i1 %.not67, label %.loopexit, label %.loopexit73

.loopexit73:                                      ; preds = %180
  switch i64 %.0.idx96.lcssa, label %default.unreachable [
    i64 3, label %.loopexit73.thread
    i64 0, label %.loopexit73.thread157
    i64 1, label %.loopexit73.thread162
    i64 2, label %.loopexit73.thread168
  ]

.loopexit73.thread162:                            ; preds = %.split81.us.1, %.loopexit73
  %.us-phi82112167 = phi i32 [ %.us-phi82.lcssa, %.loopexit73 ], [ %.us-phi82.1, %.split81.us.1 ]
  %182 = icmp ugt i32 %.us-phi82112167, 16777215
  %183 = icmp ugt i32 %.us-phi82, 255
  %or.cond190 = select i1 %182, i1 true, i1 %183
  br i1 %or.cond190, label %.loopexit, label %184

184:                                              ; preds = %.loopexit73.thread162
  %185 = shl nuw i32 %.us-phi82, 24
  %186 = or disjoint i32 %185, %.us-phi82112167
  br label %.loopexit73.thread157

.loopexit73.thread168:                            ; preds = %.split81.us.2, %.loopexit73
  %.us-phi82112174 = phi i32 [ %.us-phi82.lcssa, %.loopexit73 ], [ %.us-phi82.2, %.split81.us.2 ]
  %.sroa.6.2173 = phi i32 [ %.sroa.6.0, %.loopexit73 ], [ %.us-phi82.1, %.split81.us.2 ]
  %187 = icmp ugt i32 %.us-phi82112174, 65535
  br i1 %187, label %.loopexit, label %188

188:                                              ; preds = %.loopexit73.thread168
  %189 = icmp ugt i32 %.us-phi82, 255
  %190 = icmp ugt i32 %.sroa.6.2173, 255
  %or.cond5 = select i1 %189, i1 true, i1 %190
  br i1 %or.cond5, label %.loopexit, label %191

191:                                              ; preds = %188
  %192 = shl nuw i32 %.us-phi82, 24
  %193 = shl nuw nsw i32 %.sroa.6.2173, 16
  %194 = or disjoint i32 %192, %193
  %195 = or disjoint i32 %194, %.us-phi82112174
  br label %.loopexit73.thread157

.loopexit73.thread:                               ; preds = %.split81.us.3, %.loopexit73
  %.us-phi82112156 = phi i32 [ %.us-phi82.lcssa, %.loopexit73 ], [ %.us-phi82.3, %.split81.us.3 ]
  %.sroa.6.2155 = phi i32 [ %.sroa.6.0, %.loopexit73 ], [ %.us-phi82.1, %.split81.us.3 ]
  %.sroa.9.2154 = phi i32 [ %.sroa.9.0, %.loopexit73 ], [ %.us-phi82.2, %.split81.us.3 ]
  %196 = icmp ugt i32 %.us-phi82112156, 255
  br i1 %196, label %.loopexit, label %197

197:                                              ; preds = %.loopexit73.thread
  %198 = icmp ugt i32 %.us-phi82, 255
  %199 = icmp ugt i32 %.sroa.6.2155, 255
  %or.cond8 = select i1 %198, i1 true, i1 %199
  %200 = icmp ugt i32 %.sroa.9.2154, 255
  %or.cond11 = select i1 %or.cond8, i1 true, i1 %200
  br i1 %or.cond11, label %.loopexit, label %201

201:                                              ; preds = %197
  %202 = shl nuw i32 %.us-phi82, 24
  %203 = shl nuw nsw i32 %.sroa.6.2155, 16
  %204 = shl nuw nsw i32 %.sroa.9.2154, 8
  %205 = or disjoint i32 %202, %203
  %206 = or disjoint i32 %205, %204
  %207 = or disjoint i32 %206, %.us-phi82112156
  br label %.loopexit73.thread157

default.unreachable:                              ; preds = %.loopexit73
  unreachable

.loopexit73.thread157:                            ; preds = %.split81.us, %201, %191, %184, %.loopexit73
  %.250 = phi i32 [ %207, %201 ], [ %195, %191 ], [ %186, %184 ], [ %.us-phi82.lcssa, %.loopexit73 ], [ %.us-phi82, %.split81.us ]
  %.not68 = icmp eq ptr %1, null
  br i1 %.not68, label %.loopexit, label %208

208:                                              ; preds = %.loopexit73.thread157
  %209 = tail call i32 @lwip_htonl(i32 noundef %.250) #4
  store i32 %209, ptr %1, align 4, !tbaa !12
  br label %.loopexit

.loopexit:                                        ; preds = %48, %92, %136, %.split81.us.3, %2, %.loopexit73.thread157, %208, %197, %.loopexit73.thread, %188, %.loopexit73.thread168, %.loopexit73.thread162, %180
  %.051 = phi i32 [ 0, %180 ], [ 0, %.loopexit73.thread162 ], [ 0, %.loopexit73.thread168 ], [ 0, %188 ], [ 0, %.loopexit73.thread ], [ 0, %197 ], [ 1, %208 ], [ 1, %.loopexit73.thread157 ], [ 0, %2 ], [ 0, %.split81.us.3 ], [ 0, %136 ], [ 0, %92 ], [ 0, %48 ]
  ret i32 %.051
}

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() local_unnamed_addr #2

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind willreturn memory(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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"short", !7, i64 0}
!12 = !{!13, !14, i64 0}
!13 = !{!"ip4_addr", !14, i64 0}
!14 = !{!"int", !7, i64 0}


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