; LLVM IR from Farama-Foundation/stable-retro :: cores/32x/pico/sound (sn76496)

; 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.SN76496 = type { i32, i32, [16 x i32], [8 x i32], i32, [4 x i32], i32, i32, [4 x i32], [4 x i32], [4 x i32], [1 x i32] }

@ono_sn = external hidden global %struct.SN76496, align 4

; Function Attrs: nounwind uwtable
define dso_local void @SN76496Write(i32 noundef %0) #0 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  store i32 %0, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #2
  store ptr @ono_sn, ptr %3, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #2
  %7 = load ptr, ptr %3, align 8, !tbaa !9
  %8 = getelementptr inbounds %struct.SN76496, ptr %7, i32 0, i32 4
  %9 = load i32, ptr %8, align 4, !tbaa !11
  store i32 %9, ptr %5, align 4, !tbaa !5
  %10 = load i32, ptr %2, align 4, !tbaa !5
  %11 = and i32 %10, 128
  %12 = icmp ne i32 %11, 0
  br i1 %12, label %13, label %19

13:                                               ; preds = %1
  %14 = load i32, ptr %2, align 4, !tbaa !5
  %15 = and i32 %14, 112
  %16 = ashr i32 %15, 4
  %17 = load ptr, ptr %3, align 8, !tbaa !9
  %18 = getelementptr inbounds %struct.SN76496, ptr %17, i32 0, i32 4
  store i32 %16, ptr %18, align 4, !tbaa !11
  store i32 %16, ptr %5, align 4, !tbaa !5
  br label %19

19:                                               ; preds = %13, %1
  %20 = load i32, ptr %5, align 4, !tbaa !5
  %21 = sdiv i32 %20, 2
  store i32 %21, ptr %6, align 4, !tbaa !5
  %22 = load i32, ptr %2, align 4, !tbaa !5
  %23 = and i32 %22, 128
  %24 = icmp ne i32 %23, 0
  br i1 %24, label %51, label %25

25:                                               ; preds = %19
  %26 = load i32, ptr %5, align 4, !tbaa !5
  %27 = icmp eq i32 %26, 0
  br i1 %27, label %34, label %28

28:                                               ; preds = %25
  %29 = load i32, ptr %5, align 4, !tbaa !5
  %30 = icmp eq i32 %29, 2
  br i1 %30, label %34, label %31

31:                                               ; preds = %28
  %32 = load i32, ptr %5, align 4, !tbaa !5
  %33 = icmp eq i32 %32, 4
  br i1 %33, label %34, label %51

34:                                               ; preds = %31, %28, %25
  %35 = load ptr, ptr %3, align 8, !tbaa !9
  %36 = getelementptr inbounds %struct.SN76496, ptr %35, i32 0, i32 3
  %37 = load i32, ptr %5, align 4, !tbaa !5
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds [8 x i32], ptr %36, i64 0, i64 %38
  %40 = load i32, ptr %39, align 4, !tbaa !5
  %41 = and i32 %40, 15
  %42 = load i32, ptr %2, align 4, !tbaa !5
  %43 = and i32 %42, 63
  %44 = shl i32 %43, 4
  %45 = or i32 %41, %44
  %46 = load ptr, ptr %3, align 8, !tbaa !9
  %47 = getelementptr inbounds %struct.SN76496, ptr %46, i32 0, i32 3
  %48 = load i32, ptr %5, align 4, !tbaa !5
  %49 = sext i32 %48 to i64
  %50 = getelementptr inbounds [8 x i32], ptr %47, i64 0, i64 %49
  store i32 %45, ptr %50, align 4, !tbaa !5
  br label %67

51:                                               ; preds = %31, %19
  %52 = load ptr, ptr %3, align 8, !tbaa !9
  %53 = getelementptr inbounds %struct.SN76496, ptr %52, i32 0, i32 3
  %54 = load i32, ptr %5, align 4, !tbaa !5
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds [8 x i32], ptr %53, i64 0, i64 %55
  %57 = load i32, ptr %56, align 4, !tbaa !5
  %58 = and i32 %57, 1008
  %59 = load i32, ptr %2, align 4, !tbaa !5
  %60 = and i32 %59, 15
  %61 = or i32 %58, %60
  %62 = load ptr, ptr %3, align 8, !tbaa !9
  %63 = getelementptr inbounds %struct.SN76496, ptr %62, i32 0, i32 3
  %64 = load i32, ptr %5, align 4, !tbaa !5
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %65
  store i32 %61, ptr %66, align 4, !tbaa !5
  br label %67

67:                                               ; preds = %51, %34
  %68 = load ptr, ptr %3, align 8, !tbaa !9
  %69 = getelementptr inbounds %struct.SN76496, ptr %68, i32 0, i32 3
  %70 = load i32, ptr %5, align 4, !tbaa !5
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds [8 x i32], ptr %69, i64 0, i64 %71
  %73 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %73, ptr %2, align 4, !tbaa !5
  %74 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %74, label %202 [
    i32 0, label %75
    i32 2, label %75
    i32 4, label %75
    i32 1, label %149
    i32 3, label %149
    i32 5, label %149
    i32 7, label %149
    i32 6, label %162
  ]

75:                                               ; preds = %67, %67, %67
  %76 = load ptr, ptr %3, align 8, !tbaa !9
  %77 = getelementptr inbounds %struct.SN76496, ptr %76, i32 0, i32 1
  %78 = load i32, ptr %77, align 4, !tbaa !13
  %79 = load i32, ptr %2, align 4, !tbaa !5
  %80 = mul i32 %78, %79
  %81 = load ptr, ptr %3, align 8, !tbaa !9
  %82 = getelementptr inbounds %struct.SN76496, ptr %81, i32 0, i32 8
  %83 = load i32, ptr %6, align 4, !tbaa !5
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds [4 x i32], ptr %82, i64 0, i64 %84
  store i32 %80, ptr %85, align 4, !tbaa !5
  %86 = load ptr, ptr %3, align 8, !tbaa !9
  %87 = getelementptr inbounds %struct.SN76496, ptr %86, i32 0, i32 8
  %88 = load i32, ptr %6, align 4, !tbaa !5
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds [4 x i32], ptr %87, i64 0, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = icmp eq i32 %91, 0
  br i1 %92, label %93, label %102

93:                                               ; preds = %75
  %94 = load ptr, ptr %3, align 8, !tbaa !9
  %95 = getelementptr inbounds %struct.SN76496, ptr %94, i32 0, i32 1
  %96 = load i32, ptr %95, align 4, !tbaa !13
  %97 = load ptr, ptr %3, align 8, !tbaa !9
  %98 = getelementptr inbounds %struct.SN76496, ptr %97, i32 0, i32 8
  %99 = load i32, ptr %6, align 4, !tbaa !5
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds [4 x i32], ptr %98, i64 0, i64 %100
  store i32 %96, ptr %101, align 4, !tbaa !5
  br label %102

102:                                              ; preds = %93, %75
  %103 = load ptr, ptr %3, align 8, !tbaa !9
  %104 = getelementptr inbounds %struct.SN76496, ptr %103, i32 0, i32 9
  %105 = load i32, ptr %6, align 4, !tbaa !5
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds [4 x i32], ptr %104, i64 0, i64 %106
  %108 = load i32, ptr %107, align 4, !tbaa !5
  %109 = load ptr, ptr %3, align 8, !tbaa !9
  %110 = getelementptr inbounds %struct.SN76496, ptr %109, i32 0, i32 8
  %111 = load i32, ptr %6, align 4, !tbaa !5
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds [4 x i32], ptr %110, i64 0, i64 %112
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = icmp sgt i32 %108, %114
  br i1 %115, label %116, label %128

116:                                              ; preds = %102
  %117 = load ptr, ptr %3, align 8, !tbaa !9
  %118 = getelementptr inbounds %struct.SN76496, ptr %117, i32 0, i32 8
  %119 = load i32, ptr %6, align 4, !tbaa !5
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds [4 x i32], ptr %118, i64 0, i64 %120
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %123 = load ptr, ptr %3, align 8, !tbaa !9
  %124 = getelementptr inbounds %struct.SN76496, ptr %123, i32 0, i32 9
  %125 = load i32, ptr %6, align 4, !tbaa !5
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds [4 x i32], ptr %124, i64 0, i64 %126
  store i32 %122, ptr %127, align 4, !tbaa !5
  br label %128

128:                                              ; preds = %116, %102
  %129 = load i32, ptr %5, align 4, !tbaa !5
  %130 = icmp eq i32 %129, 4
  br i1 %130, label %131, label %148

131:                                              ; preds = %128
  %132 = load ptr, ptr %3, align 8, !tbaa !9
  %133 = getelementptr inbounds %struct.SN76496, ptr %132, i32 0, i32 3
  %134 = getelementptr inbounds [8 x i32], ptr %133, i64 0, i64 6
  %135 = load i32, ptr %134, align 4, !tbaa !5
  %136 = and i32 %135, 3
  %137 = icmp eq i32 %136, 3
  br i1 %137, label %138, label %147

138:                                              ; preds = %131
  %139 = load ptr, ptr %3, align 8, !tbaa !9
  %140 = getelementptr inbounds %struct.SN76496, ptr %139, i32 0, i32 8
  %141 = getelementptr inbounds [4 x i32], ptr %140, i64 0, i64 2
  %142 = load i32, ptr %141, align 4, !tbaa !5
  %143 = mul nsw i32 2, %142
  %144 = load ptr, ptr %3, align 8, !tbaa !9
  %145 = getelementptr inbounds %struct.SN76496, ptr %144, i32 0, i32 8
  %146 = getelementptr inbounds [4 x i32], ptr %145, i64 0, i64 3
  store i32 %143, ptr %146, align 4, !tbaa !5
  br label %147

147:                                              ; preds = %138, %131
  br label %148

148:                                              ; preds = %147, %128
  br label %202

149:                                              ; preds = %67, %67, %67, %67
  %150 = load ptr, ptr %3, align 8, !tbaa !9
  %151 = getelementptr inbounds %struct.SN76496, ptr %150, i32 0, i32 2
  %152 = load i32, ptr %2, align 4, !tbaa !5
  %153 = and i32 %152, 15
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [16 x i32], ptr %151, i64 0, i64 %154
  %156 = load i32, ptr %155, align 4, !tbaa !5
  %157 = load ptr, ptr %3, align 8, !tbaa !9
  %158 = getelementptr inbounds %struct.SN76496, ptr %157, i32 0, i32 5
  %159 = load i32, ptr %6, align 4, !tbaa !5
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds [4 x i32], ptr %158, i64 0, i64 %160
  store i32 %156, ptr %161, align 4, !tbaa !5
  br label %202

162:                                              ; preds = %67
  %163 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %163, ptr %4, align 4, !tbaa !5
  %164 = load i32, ptr %4, align 4, !tbaa !5
  %165 = and i32 %164, 4
  %166 = icmp ne i32 %165, 0
  %167 = zext i1 %166 to i64
  %168 = select i1 %166, i32 36864, i32 32768
  %169 = load ptr, ptr %3, align 8, !tbaa !9
  %170 = getelementptr inbounds %struct.SN76496, ptr %169, i32 0, i32 7
  store i32 %168, ptr %170, align 4, !tbaa !14
  %171 = load i32, ptr %4, align 4, !tbaa !5
  %172 = and i32 %171, 3
  store i32 %172, ptr %4, align 4, !tbaa !5
  %173 = load i32, ptr %4, align 4, !tbaa !5
  %174 = icmp eq i32 %173, 3
  br i1 %174, label %175, label %180

175:                                              ; preds = %162
  %176 = load ptr, ptr %3, align 8, !tbaa !9
  %177 = getelementptr inbounds %struct.SN76496, ptr %176, i32 0, i32 8
  %178 = getelementptr inbounds [4 x i32], ptr %177, i64 0, i64 2
  %179 = load i32, ptr %178, align 4, !tbaa !5
  br label %187

180:                                              ; preds = %162
  %181 = load ptr, ptr %3, align 8, !tbaa !9
  %182 = getelementptr inbounds %struct.SN76496, ptr %181, i32 0, i32 1
  %183 = load i32, ptr %182, align 4, !tbaa !13
  %184 = load i32, ptr %4, align 4, !tbaa !5
  %185 = add nsw i32 4, %184
  %186 = shl i32 %183, %185
  br label %187

187:                                              ; preds = %180, %175
  %188 = phi i32 [ %179, %175 ], [ %186, %180 ]
  %189 = mul i32 2, %188
  %190 = load ptr, ptr %3, align 8, !tbaa !9
  %191 = getelementptr inbounds %struct.SN76496, ptr %190, i32 0, i32 8
  %192 = getelementptr inbounds [4 x i32], ptr %191, i64 0, i64 3
  store i32 %189, ptr %192, align 4, !tbaa !5
  %193 = load ptr, ptr %3, align 8, !tbaa !9
  %194 = getelementptr inbounds %struct.SN76496, ptr %193, i32 0, i32 6
  store i32 32768, ptr %194, align 4, !tbaa !15
  %195 = load ptr, ptr %3, align 8, !tbaa !9
  %196 = getelementptr inbounds %struct.SN76496, ptr %195, i32 0, i32 6
  %197 = load i32, ptr %196, align 4, !tbaa !15
  %198 = and i32 %197, 1
  %199 = load ptr, ptr %3, align 8, !tbaa !9
  %200 = getelementptr inbounds %struct.SN76496, ptr %199, i32 0, i32 10
  %201 = getelementptr inbounds [4 x i32], ptr %200, i64 0, i64 3
  store i32 %198, ptr %201, align 4, !tbaa !5
  br label %202

202:                                              ; preds = %187, %149, %148, %67
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #2
  ret void
}

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 104}
!12 = !{!"SN76496", !6, i64 0, !6, i64 4, !7, i64 8, !7, i64 72, !6, i64 104, !7, i64 108, !6, i64 124, !6, i64 128, !7, i64 132, !7, i64 148, !7, i64 164, !7, i64 180}
!13 = !{!12, !6, i64 4}
!14 = !{!12, !6, i64 128}
!15 = !{!12, !6, i64 124}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.SN76496 = type { i32, i32, [16 x i32], [8 x i32], i32, [4 x i32], i32, i32, [4 x i32], [4 x i32], [4 x i32], [1 x i32] }

@ono_sn = external hidden local_unnamed_addr global %struct.SN76496, align 4

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) uwtable
define dso_local void @SN76496Write(i32 noundef %0) local_unnamed_addr #0 {
  %2 = load i32, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 104), align 4, !tbaa !5
  %3 = and i32 %0, 128
  %.not = icmp eq i32 %3, 0
  br i1 %.not, label %7, label %4

4:                                                ; preds = %1
  %5 = lshr i32 %0, 4
  %6 = and i32 %5, 7
  store i32 %6, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 104), align 4, !tbaa !5
  %.zext = lshr i32 %6, 1
  br label %17

7:                                                ; preds = %1
  %8 = sdiv i32 %2, 2
  switch i32 %2, label %17 [
    i32 4, label %9
    i32 2, label %9
    i32 0, label %9
  ]

9:                                                ; preds = %7, %7, %7
  %10 = zext nneg i32 %2 to i64
  %11 = getelementptr inbounds [8 x i32], ptr getelementptr inbounds (i8, ptr @ono_sn, i64 72), i64 0, i64 %10
  %12 = load i32, ptr %11, align 4, !tbaa !10
  %13 = and i32 %12, 15
  %14 = shl i32 %0, 4
  %15 = and i32 %14, 1008
  %16 = or disjoint i32 %13, %15
  store i32 %16, ptr %11, align 4, !tbaa !10
  br label %25

17:                                               ; preds = %4, %7
  %18 = phi i32 [ %8, %7 ], [ %.zext, %4 ]
  %.065 = phi i32 [ %2, %7 ], [ %6, %4 ]
  %19 = sext i32 %.065 to i64
  %20 = getelementptr inbounds [8 x i32], ptr getelementptr inbounds (i8, ptr @ono_sn, i64 72), i64 0, i64 %19
  %21 = load i32, ptr %20, align 4, !tbaa !10
  %22 = and i32 %21, 1008
  %23 = and i32 %0, 15
  %24 = or disjoint i32 %22, %23
  store i32 %24, ptr %20, align 4, !tbaa !10
  br label %25

25:                                               ; preds = %17, %9
  %26 = phi i32 [ %24, %17 ], [ %16, %9 ]
  %27 = phi i32 [ %18, %17 ], [ %8, %9 ]
  %.067 = phi i32 [ %.065, %17 ], [ %2, %9 ]
  switch i32 %.067, label %69 [
    i32 0, label %28
    i32 2, label %28
    i32 4, label %28
    i32 1, label %51
    i32 3, label %51
    i32 5, label %51
    i32 7, label %51
    i32 6, label %58
  ]

28:                                               ; preds = %25, %25, %25
  %29 = load i32, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 4), align 4, !tbaa !11
  %30 = mul i32 %29, %26
  %31 = sext i32 %27 to i64
  %32 = getelementptr inbounds [4 x i32], ptr getelementptr inbounds (i8, ptr @ono_sn, i64 132), i64 0, i64 %31
  store i32 %30, ptr %32, align 4, !tbaa !10
  %33 = icmp eq i32 %30, 0
  br i1 %33, label %34, label %36

34:                                               ; preds = %28
  %35 = load i32, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 4), align 4, !tbaa !11
  store i32 %35, ptr %32, align 4, !tbaa !10
  br label %36

36:                                               ; preds = %34, %28
  %37 = phi i32 [ %35, %34 ], [ %30, %28 ]
  %38 = getelementptr inbounds [4 x i32], ptr getelementptr inbounds (i8, ptr @ono_sn, i64 148), i64 0, i64 %31
  %39 = load i32, ptr %38, align 4, !tbaa !10
  %40 = icmp sgt i32 %39, %37
  br i1 %40, label %41, label %42

41:                                               ; preds = %36
  store i32 %37, ptr %38, align 4, !tbaa !10
  br label %42

42:                                               ; preds = %41, %36
  %43 = icmp eq i32 %.067, 4
  br i1 %43, label %44, label %69

44:                                               ; preds = %42
  %45 = load i32, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 96), align 4, !tbaa !10
  %46 = and i32 %45, 3
  %47 = icmp eq i32 %46, 3
  br i1 %47, label %48, label %69

48:                                               ; preds = %44
  %49 = load i32, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 140), align 4, !tbaa !10
  %50 = shl nsw i32 %49, 1
  store i32 %50, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 144), align 4, !tbaa !10
  br label %69

51:                                               ; preds = %25, %25, %25, %25
  %52 = and i32 %26, 15
  %53 = zext nneg i32 %52 to i64
  %54 = getelementptr inbounds [16 x i32], ptr getelementptr inbounds (i8, ptr @ono_sn, i64 8), i64 0, i64 %53
  %55 = load i32, ptr %54, align 4, !tbaa !10
  %56 = sext i32 %27 to i64
  %57 = getelementptr inbounds [4 x i32], ptr getelementptr inbounds (i8, ptr @ono_sn, i64 108), i64 0, i64 %56
  store i32 %55, ptr %57, align 4, !tbaa !10
  br label %69

58:                                               ; preds = %25
  %59 = and i32 %26, 4
  %.not63 = icmp eq i32 %59, 0
  %60 = select i1 %.not63, i32 32768, i32 36864
  store i32 %60, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 128), align 4, !tbaa !12
  %61 = and i32 %26, 3
  %62 = icmp eq i32 %61, 3
  %63 = load i32, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 140), align 4
  %64 = load i32, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 4), align 4
  %65 = or disjoint i32 %61, 4
  %66 = shl i32 %64, %65
  %67 = select i1 %62, i32 %63, i32 %66
  %68 = shl i32 %67, 1
  store i32 %68, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 144), align 4, !tbaa !10
  store i32 32768, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 124), align 4, !tbaa !13
  store i32 0, ptr getelementptr inbounds (i8, ptr @ono_sn, i64 176), align 4, !tbaa !10
  br label %69

69:                                               ; preds = %42, %48, %44, %58, %51, %25
  ret void
}

attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) 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" }

!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, !7, i64 104}
!6 = !{!"SN76496", !7, i64 0, !7, i64 4, !8, i64 8, !8, i64 72, !7, i64 104, !8, i64 108, !7, i64 124, !7, i64 128, !8, i64 132, !8, i64 148, !8, i64 164, !8, i64 180}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!7, !7, i64 0}
!11 = !{!6, !7, i64 4}
!12 = !{!6, !7, i64 128}
!13 = !{!6, !7, i64 124}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass