; LLVM IR from Stephane-D/SGDK :: sample/snd/xgm-player/src (ym_state)

; 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.YM = type { [6 x %struct.YM_CH], i16 }
%struct.YM_CH = type { [4 x %struct.YM_SLOT], i16, i16, i16, i16 }
%struct.YM_SLOT = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }

; Function Attrs: nounwind uwtable
define dso_local void @YM_init(ptr noundef %0) #0 {
  %2 = alloca ptr, align 8
  %3 = alloca i16, align 2
  %4 = alloca i16, align 2
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %3) #2
  call void @llvm.lifetime.start.p0(i64 2, ptr %4) #2
  %7 = load ptr, ptr %2, align 8, !tbaa !5
  %8 = getelementptr inbounds %struct.YM, ptr %7, i32 0, i32 1
  store i16 0, ptr %8, align 2, !tbaa !9
  store i16 0, ptr %3, align 2, !tbaa !12
  br label %9

9:                                                ; preds = %71, %1
  %10 = load i16, ptr %3, align 2, !tbaa !12
  %11 = zext i16 %10 to i32
  %12 = icmp slt i32 %11, 6
  br i1 %12, label %13, label %74

13:                                               ; preds = %9
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #2
  %14 = load ptr, ptr %2, align 8, !tbaa !5
  %15 = getelementptr inbounds %struct.YM, ptr %14, i32 0, i32 0
  %16 = load i16, ptr %3, align 2, !tbaa !12
  %17 = zext i16 %16 to i64
  %18 = getelementptr inbounds [6 x %struct.YM_CH], ptr %15, i64 0, i64 %17
  store ptr %18, ptr %5, align 8, !tbaa !5
  %19 = load ptr, ptr %5, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct.YM_CH, ptr %19, i32 0, i32 1
  store i16 0, ptr %20, align 2, !tbaa !13
  %21 = load ptr, ptr %5, align 8, !tbaa !5
  %22 = getelementptr inbounds %struct.YM_CH, ptr %21, i32 0, i32 2
  store i16 0, ptr %22, align 2, !tbaa !15
  %23 = load ptr, ptr %5, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.YM_CH, ptr %23, i32 0, i32 3
  store i16 0, ptr %24, align 2, !tbaa !16
  %25 = load ptr, ptr %5, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.YM_CH, ptr %25, i32 0, i32 4
  store i16 0, ptr %26, align 2, !tbaa !17
  store i16 0, ptr %4, align 2, !tbaa !12
  br label %27

27:                                               ; preds = %67, %13
  %28 = load i16, ptr %4, align 2, !tbaa !12
  %29 = zext i16 %28 to i32
  %30 = icmp slt i32 %29, 4
  br i1 %30, label %31, label %70

31:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #2
  %32 = load ptr, ptr %5, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.YM_CH, ptr %32, i32 0, i32 0
  %34 = load i16, ptr %4, align 2, !tbaa !12
  %35 = zext i16 %34 to i64
  %36 = getelementptr inbounds [4 x %struct.YM_SLOT], ptr %33, i64 0, i64 %35
  store ptr %36, ptr %6, align 8, !tbaa !5
  %37 = load ptr, ptr %6, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.YM_SLOT, ptr %37, i32 0, i32 0
  store i16 0, ptr %38, align 2, !tbaa !18
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.YM_SLOT, ptr %39, i32 0, i32 1
  store i16 0, ptr %40, align 2, !tbaa !20
  %41 = load ptr, ptr %6, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.YM_SLOT, ptr %41, i32 0, i32 2
  store i16 8128, ptr %42, align 2, !tbaa !21
  %43 = load ptr, ptr %6, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.YM_SLOT, ptr %43, i32 0, i32 3
  store i16 0, ptr %44, align 2, !tbaa !22
  %45 = load ptr, ptr %6, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.YM_SLOT, ptr %45, i32 0, i32 4
  store i16 0, ptr %46, align 2, !tbaa !23
  %47 = load ptr, ptr %6, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.YM_SLOT, ptr %47, i32 0, i32 5
  store i16 0, ptr %48, align 2, !tbaa !24
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.YM_SLOT, ptr %49, i32 0, i32 6
  store i16 0, ptr %50, align 2, !tbaa !25
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.YM_SLOT, ptr %51, i32 0, i32 7
  store i16 0, ptr %52, align 2, !tbaa !26
  %53 = load ptr, ptr %6, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.YM_SLOT, ptr %53, i32 0, i32 8
  store i16 8128, ptr %54, align 2, !tbaa !27
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.YM_SLOT, ptr %55, i32 0, i32 9
  store i16 8128, ptr %56, align 2, !tbaa !28
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.YM_SLOT, ptr %57, i32 0, i32 10
  store i16 0, ptr %58, align 2, !tbaa !29
  %59 = load i16, ptr %4, align 2, !tbaa !12
  %60 = zext i16 %59 to i32
  %61 = icmp eq i32 %60, 3
  %62 = zext i1 %61 to i64
  %63 = select i1 %61, i32 1, i32 0
  %64 = trunc i32 %63 to i16
  %65 = load ptr, ptr %6, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.YM_SLOT, ptr %65, i32 0, i32 11
  store i16 %64, ptr %66, align 2, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #2
  br label %67

67:                                               ; preds = %31
  %68 = load i16, ptr %4, align 2, !tbaa !12
  %69 = add i16 %68, 1
  store i16 %69, ptr %4, align 2, !tbaa !12
  br label %27, !llvm.loop !31

70:                                               ; preds = %27
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #2
  br label %71

71:                                               ; preds = %70
  %72 = load i16, ptr %3, align 2, !tbaa !12
  %73 = add i16 %72, 1
  store i16 %73, ptr %3, align 2, !tbaa !12
  br label %9, !llvm.loop !33

74:                                               ; preds = %9
  call void @llvm.lifetime.end.p0(i64 2, ptr %4) #2
  call void @llvm.lifetime.end.p0(i64 2, 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 624}
!10 = !{!"", !7, i64 0, !11, i64 624}
!11 = !{!"short", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = !{!14, !11, i64 96}
!14 = !{!"", !7, i64 0, !11, i64 96, !11, i64 98, !11, i64 100, !11, i64 102}
!15 = !{!14, !11, i64 98}
!16 = !{!14, !11, i64 100}
!17 = !{!14, !11, i64 102}
!18 = !{!19, !11, i64 0}
!19 = !{!"", !11, i64 0, !11, i64 2, !11, i64 4, !11, i64 6, !11, i64 8, !11, i64 10, !11, i64 12, !11, i64 14, !11, i64 16, !11, i64 18, !11, i64 20, !11, i64 22}
!20 = !{!19, !11, i64 2}
!21 = !{!19, !11, i64 4}
!22 = !{!19, !11, i64 6}
!23 = !{!19, !11, i64 8}
!24 = !{!19, !11, i64 10}
!25 = !{!19, !11, i64 12}
!26 = !{!19, !11, i64 14}
!27 = !{!19, !11, i64 16}
!28 = !{!19, !11, i64 18}
!29 = !{!19, !11, i64 20}
!30 = !{!19, !11, i64 22}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}


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

; Function Attrs: nofree norecurse nosync nounwind memory(argmem: write) uwtable
define dso_local void @YM_init(ptr nocapture noundef writeonly %0) local_unnamed_addr #0 {
  %2 = getelementptr inbounds i8, ptr %0, i64 624
  store i16 0, ptr %2, align 2, !tbaa !5
  %3 = getelementptr inbounds i8, ptr %0, i64 96
  store i16 0, ptr %0, align 2, !tbaa !10
  %4 = getelementptr inbounds i8, ptr %0, i64 2
  store i16 0, ptr %4, align 2, !tbaa !12
  %5 = getelementptr inbounds i8, ptr %0, i64 4
  store i64 0, ptr %3, align 2
  store i16 8128, ptr %5, align 2, !tbaa !13
  %6 = getelementptr inbounds i8, ptr %0, i64 6
  %7 = getelementptr inbounds i8, ptr %0, i64 16
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %6, i8 0, i64 10, i1 false)
  store i16 8128, ptr %7, align 2, !tbaa !14
  %8 = getelementptr inbounds i8, ptr %0, i64 18
  store i16 8128, ptr %8, align 2, !tbaa !15
  %9 = getelementptr inbounds i8, ptr %0, i64 20
  %10 = getelementptr inbounds i8, ptr %0, i64 28
  store i64 0, ptr %9, align 2
  store i16 8128, ptr %10, align 2, !tbaa !13
  %11 = getelementptr inbounds i8, ptr %0, i64 30
  %12 = getelementptr inbounds i8, ptr %0, i64 40
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %11, i8 0, i64 10, i1 false)
  store i16 8128, ptr %12, align 2, !tbaa !14
  %13 = getelementptr inbounds i8, ptr %0, i64 42
  store i16 8128, ptr %13, align 2, !tbaa !15
  %14 = getelementptr inbounds i8, ptr %0, i64 44
  %15 = getelementptr inbounds i8, ptr %0, i64 52
  store i64 0, ptr %14, align 2
  store i16 8128, ptr %15, align 2, !tbaa !13
  %16 = getelementptr inbounds i8, ptr %0, i64 54
  %17 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %16, i8 0, i64 10, i1 false)
  store i16 8128, ptr %17, align 2, !tbaa !14
  %18 = getelementptr inbounds i8, ptr %0, i64 66
  store i16 8128, ptr %18, align 2, !tbaa !15
  %19 = getelementptr inbounds i8, ptr %0, i64 68
  %20 = getelementptr inbounds i8, ptr %0, i64 76
  store i64 0, ptr %19, align 2
  store i16 8128, ptr %20, align 2, !tbaa !13
  %21 = getelementptr inbounds i8, ptr %0, i64 78
  %22 = getelementptr inbounds i8, ptr %0, i64 88
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %21, i8 0, i64 10, i1 false)
  store <4 x i16> <i16 8128, i16 8128, i16 0, i16 1>, ptr %22, align 2, !tbaa !16
  %23 = getelementptr inbounds i8, ptr %0, i64 104
  %24 = getelementptr inbounds i8, ptr %0, i64 200
  store i16 0, ptr %23, align 2, !tbaa !10
  %25 = getelementptr inbounds i8, ptr %0, i64 106
  store i16 0, ptr %25, align 2, !tbaa !12
  %26 = getelementptr inbounds i8, ptr %0, i64 108
  store i64 0, ptr %24, align 2
  store i16 8128, ptr %26, align 2, !tbaa !13
  %27 = getelementptr inbounds i8, ptr %0, i64 110
  %28 = getelementptr inbounds i8, ptr %0, i64 120
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %27, i8 0, i64 10, i1 false)
  store i16 8128, ptr %28, align 2, !tbaa !14
  %29 = getelementptr inbounds i8, ptr %0, i64 122
  store i16 8128, ptr %29, align 2, !tbaa !15
  %30 = getelementptr inbounds i8, ptr %0, i64 124
  %31 = getelementptr inbounds i8, ptr %0, i64 132
  store i64 0, ptr %30, align 2
  store i16 8128, ptr %31, align 2, !tbaa !13
  %32 = getelementptr inbounds i8, ptr %0, i64 134
  %33 = getelementptr inbounds i8, ptr %0, i64 144
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %32, i8 0, i64 10, i1 false)
  store i16 8128, ptr %33, align 2, !tbaa !14
  %34 = getelementptr inbounds i8, ptr %0, i64 146
  store i16 8128, ptr %34, align 2, !tbaa !15
  %35 = getelementptr inbounds i8, ptr %0, i64 148
  %36 = getelementptr inbounds i8, ptr %0, i64 156
  store i64 0, ptr %35, align 2
  store i16 8128, ptr %36, align 2, !tbaa !13
  %37 = getelementptr inbounds i8, ptr %0, i64 158
  %38 = getelementptr inbounds i8, ptr %0, i64 168
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %37, i8 0, i64 10, i1 false)
  store i16 8128, ptr %38, align 2, !tbaa !14
  %39 = getelementptr inbounds i8, ptr %0, i64 170
  store i16 8128, ptr %39, align 2, !tbaa !15
  %40 = getelementptr inbounds i8, ptr %0, i64 172
  %41 = getelementptr inbounds i8, ptr %0, i64 180
  store i64 0, ptr %40, align 2
  store i16 8128, ptr %41, align 2, !tbaa !13
  %42 = getelementptr inbounds i8, ptr %0, i64 182
  %43 = getelementptr inbounds i8, ptr %0, i64 192
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %42, i8 0, i64 10, i1 false)
  store <4 x i16> <i16 8128, i16 8128, i16 0, i16 1>, ptr %43, align 2, !tbaa !16
  %44 = getelementptr inbounds i8, ptr %0, i64 208
  %45 = getelementptr inbounds i8, ptr %0, i64 304
  store i16 0, ptr %44, align 2, !tbaa !10
  %46 = getelementptr inbounds i8, ptr %0, i64 210
  store i16 0, ptr %46, align 2, !tbaa !12
  %47 = getelementptr inbounds i8, ptr %0, i64 212
  store i64 0, ptr %45, align 2
  store i16 8128, ptr %47, align 2, !tbaa !13
  %48 = getelementptr inbounds i8, ptr %0, i64 214
  %49 = getelementptr inbounds i8, ptr %0, i64 224
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %48, i8 0, i64 10, i1 false)
  store i16 8128, ptr %49, align 2, !tbaa !14
  %50 = getelementptr inbounds i8, ptr %0, i64 226
  store i16 8128, ptr %50, align 2, !tbaa !15
  %51 = getelementptr inbounds i8, ptr %0, i64 228
  %52 = getelementptr inbounds i8, ptr %0, i64 236
  store i64 0, ptr %51, align 2
  store i16 8128, ptr %52, align 2, !tbaa !13
  %53 = getelementptr inbounds i8, ptr %0, i64 238
  %54 = getelementptr inbounds i8, ptr %0, i64 248
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %53, i8 0, i64 10, i1 false)
  store i16 8128, ptr %54, align 2, !tbaa !14
  %55 = getelementptr inbounds i8, ptr %0, i64 250
  store i16 8128, ptr %55, align 2, !tbaa !15
  %56 = getelementptr inbounds i8, ptr %0, i64 252
  %57 = getelementptr inbounds i8, ptr %0, i64 260
  store i64 0, ptr %56, align 2
  store i16 8128, ptr %57, align 2, !tbaa !13
  %58 = getelementptr inbounds i8, ptr %0, i64 262
  %59 = getelementptr inbounds i8, ptr %0, i64 272
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %58, i8 0, i64 10, i1 false)
  store i16 8128, ptr %59, align 2, !tbaa !14
  %60 = getelementptr inbounds i8, ptr %0, i64 274
  store i16 8128, ptr %60, align 2, !tbaa !15
  %61 = getelementptr inbounds i8, ptr %0, i64 276
  %62 = getelementptr inbounds i8, ptr %0, i64 284
  store i64 0, ptr %61, align 2
  store i16 8128, ptr %62, align 2, !tbaa !13
  %63 = getelementptr inbounds i8, ptr %0, i64 286
  %64 = getelementptr inbounds i8, ptr %0, i64 296
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %63, i8 0, i64 10, i1 false)
  store <4 x i16> <i16 8128, i16 8128, i16 0, i16 1>, ptr %64, align 2, !tbaa !16
  %65 = getelementptr inbounds i8, ptr %0, i64 312
  %66 = getelementptr inbounds i8, ptr %0, i64 408
  store i16 0, ptr %65, align 2, !tbaa !10
  %67 = getelementptr inbounds i8, ptr %0, i64 314
  store i16 0, ptr %67, align 2, !tbaa !12
  %68 = getelementptr inbounds i8, ptr %0, i64 316
  store i64 0, ptr %66, align 2
  store i16 8128, ptr %68, align 2, !tbaa !13
  %69 = getelementptr inbounds i8, ptr %0, i64 318
  %70 = getelementptr inbounds i8, ptr %0, i64 328
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %69, i8 0, i64 10, i1 false)
  store i16 8128, ptr %70, align 2, !tbaa !14
  %71 = getelementptr inbounds i8, ptr %0, i64 330
  store i16 8128, ptr %71, align 2, !tbaa !15
  %72 = getelementptr inbounds i8, ptr %0, i64 332
  %73 = getelementptr inbounds i8, ptr %0, i64 340
  store i64 0, ptr %72, align 2
  store i16 8128, ptr %73, align 2, !tbaa !13
  %74 = getelementptr inbounds i8, ptr %0, i64 342
  %75 = getelementptr inbounds i8, ptr %0, i64 352
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %74, i8 0, i64 10, i1 false)
  store i16 8128, ptr %75, align 2, !tbaa !14
  %76 = getelementptr inbounds i8, ptr %0, i64 354
  store i16 8128, ptr %76, align 2, !tbaa !15
  %77 = getelementptr inbounds i8, ptr %0, i64 356
  %78 = getelementptr inbounds i8, ptr %0, i64 364
  store i64 0, ptr %77, align 2
  store i16 8128, ptr %78, align 2, !tbaa !13
  %79 = getelementptr inbounds i8, ptr %0, i64 366
  %80 = getelementptr inbounds i8, ptr %0, i64 376
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %79, i8 0, i64 10, i1 false)
  store i16 8128, ptr %80, align 2, !tbaa !14
  %81 = getelementptr inbounds i8, ptr %0, i64 378
  store i16 8128, ptr %81, align 2, !tbaa !15
  %82 = getelementptr inbounds i8, ptr %0, i64 380
  %83 = getelementptr inbounds i8, ptr %0, i64 388
  store i64 0, ptr %82, align 2
  store i16 8128, ptr %83, align 2, !tbaa !13
  %84 = getelementptr inbounds i8, ptr %0, i64 390
  %85 = getelementptr inbounds i8, ptr %0, i64 400
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %84, i8 0, i64 10, i1 false)
  store <4 x i16> <i16 8128, i16 8128, i16 0, i16 1>, ptr %85, align 2, !tbaa !16
  %86 = getelementptr inbounds i8, ptr %0, i64 416
  %87 = getelementptr inbounds i8, ptr %0, i64 512
  store i16 0, ptr %86, align 2, !tbaa !10
  %88 = getelementptr inbounds i8, ptr %0, i64 418
  store i16 0, ptr %88, align 2, !tbaa !12
  %89 = getelementptr inbounds i8, ptr %0, i64 420
  store i64 0, ptr %87, align 2
  store i16 8128, ptr %89, align 2, !tbaa !13
  %90 = getelementptr inbounds i8, ptr %0, i64 422
  %91 = getelementptr inbounds i8, ptr %0, i64 432
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %90, i8 0, i64 10, i1 false)
  store i16 8128, ptr %91, align 2, !tbaa !14
  %92 = getelementptr inbounds i8, ptr %0, i64 434
  store i16 8128, ptr %92, align 2, !tbaa !15
  %93 = getelementptr inbounds i8, ptr %0, i64 436
  %94 = getelementptr inbounds i8, ptr %0, i64 444
  store i64 0, ptr %93, align 2
  store i16 8128, ptr %94, align 2, !tbaa !13
  %95 = getelementptr inbounds i8, ptr %0, i64 446
  %96 = getelementptr inbounds i8, ptr %0, i64 456
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %95, i8 0, i64 10, i1 false)
  store i16 8128, ptr %96, align 2, !tbaa !14
  %97 = getelementptr inbounds i8, ptr %0, i64 458
  store i16 8128, ptr %97, align 2, !tbaa !15
  %98 = getelementptr inbounds i8, ptr %0, i64 460
  %99 = getelementptr inbounds i8, ptr %0, i64 468
  store i64 0, ptr %98, align 2
  store i16 8128, ptr %99, align 2, !tbaa !13
  %100 = getelementptr inbounds i8, ptr %0, i64 470
  %101 = getelementptr inbounds i8, ptr %0, i64 480
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %100, i8 0, i64 10, i1 false)
  store i16 8128, ptr %101, align 2, !tbaa !14
  %102 = getelementptr inbounds i8, ptr %0, i64 482
  store i16 8128, ptr %102, align 2, !tbaa !15
  %103 = getelementptr inbounds i8, ptr %0, i64 484
  %104 = getelementptr inbounds i8, ptr %0, i64 492
  store i64 0, ptr %103, align 2
  store i16 8128, ptr %104, align 2, !tbaa !13
  %105 = getelementptr inbounds i8, ptr %0, i64 494
  %106 = getelementptr inbounds i8, ptr %0, i64 504
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %105, i8 0, i64 10, i1 false)
  store <4 x i16> <i16 8128, i16 8128, i16 0, i16 1>, ptr %106, align 2, !tbaa !16
  %107 = getelementptr inbounds i8, ptr %0, i64 520
  %108 = getelementptr inbounds i8, ptr %0, i64 616
  store i16 0, ptr %107, align 2, !tbaa !10
  %109 = getelementptr inbounds i8, ptr %0, i64 522
  store i16 0, ptr %109, align 2, !tbaa !12
  %110 = getelementptr inbounds i8, ptr %0, i64 524
  store i64 0, ptr %108, align 2
  store i16 8128, ptr %110, align 2, !tbaa !13
  %111 = getelementptr inbounds i8, ptr %0, i64 526
  %112 = getelementptr inbounds i8, ptr %0, i64 536
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %111, i8 0, i64 10, i1 false)
  store i16 8128, ptr %112, align 2, !tbaa !14
  %113 = getelementptr inbounds i8, ptr %0, i64 538
  store i16 8128, ptr %113, align 2, !tbaa !15
  %114 = getelementptr inbounds i8, ptr %0, i64 540
  %115 = getelementptr inbounds i8, ptr %0, i64 548
  store i64 0, ptr %114, align 2
  store i16 8128, ptr %115, align 2, !tbaa !13
  %116 = getelementptr inbounds i8, ptr %0, i64 550
  %117 = getelementptr inbounds i8, ptr %0, i64 560
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %116, i8 0, i64 10, i1 false)
  store i16 8128, ptr %117, align 2, !tbaa !14
  %118 = getelementptr inbounds i8, ptr %0, i64 562
  store i16 8128, ptr %118, align 2, !tbaa !15
  %119 = getelementptr inbounds i8, ptr %0, i64 564
  %120 = getelementptr inbounds i8, ptr %0, i64 572
  store i64 0, ptr %119, align 2
  store i16 8128, ptr %120, align 2, !tbaa !13
  %121 = getelementptr inbounds i8, ptr %0, i64 574
  %122 = getelementptr inbounds i8, ptr %0, i64 584
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %121, i8 0, i64 10, i1 false)
  store i16 8128, ptr %122, align 2, !tbaa !14
  %123 = getelementptr inbounds i8, ptr %0, i64 586
  store i16 8128, ptr %123, align 2, !tbaa !15
  %124 = getelementptr inbounds i8, ptr %0, i64 588
  %125 = getelementptr inbounds i8, ptr %0, i64 596
  store i64 0, ptr %124, align 2
  store i16 8128, ptr %125, align 2, !tbaa !13
  %126 = getelementptr inbounds i8, ptr %0, i64 598
  %127 = getelementptr inbounds i8, ptr %0, i64 608
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(10) %126, i8 0, i64 10, i1 false)
  store <4 x i16> <i16 8128, i16 8128, i16 0, i16 1>, ptr %127, align 2, !tbaa !16
  ret void
}

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

attributes #0 = { nofree norecurse nosync nounwind memory(argmem: write) 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 nounwind willreturn memory(argmem: write) }

!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, !9, i64 624}
!6 = !{!"", !7, i64 0, !9, i64 624}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"short", !7, i64 0}
!10 = !{!11, !9, i64 0}
!11 = !{!"", !9, i64 0, !9, i64 2, !9, i64 4, !9, i64 6, !9, i64 8, !9, i64 10, !9, i64 12, !9, i64 14, !9, i64 16, !9, i64 18, !9, i64 20, !9, i64 22}
!12 = !{!11, !9, i64 2}
!13 = !{!11, !9, i64 4}
!14 = !{!11, !9, i64 16}
!15 = !{!11, !9, i64 18}
!16 = !{!9, !9, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass