Skip to content

Instantly share code, notes, and snippets.

@maleadt
Created October 16, 2026 08:17
Show Gist options
  • Select an option

  • Save maleadt/687ee32cfff610add861a3f99f928849 to your computer and use it in GitHub Desktop.

Select an option

Save maleadt/687ee32cfff610add861a3f99f928849 to your computer and use it in GitHub Desktop.
SLP vectorizer compile-time reproducer (PHI-rooted attempts on a Keccak loop; LLVM 22 vs 23 vs main)

SLP vectorizer compile-time reproducer (x86_64, -mcpu=haswell; same with the default CPU).

  • keccak-round-reduced.ll: 333 lines, llvm-reduce output, one loop with 26 PHIs and xor/fshl chains. SLP vectorizes nothing in it and executes ~0.5e9 instructions.

  • absorb-pre-slp.ll: the original function as it reaches the SLP pass at -O3 (dumped with -print-before=slp-vectorizer).

  • absorb-unopt.ll: the original function before any optimization.

    opt -passes=slp-vectorizer -mcpu=haswell -time-passes keccak-round-reduced.ll -o /dev/null opt -passes=slp-vectorizer -mcpu=haswell -time-passes absorb-pre-slp.ll -o /dev/null opt -O3 -mcpu=haswell -time-passes absorb-unopt.ll -o /dev/null

    for comparison: opt ... -slp-phi-vectorization-budget=0

; ModuleID = 'absorb-pre-slp.ll'
source_filename = "<stdin>"
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-ni:10:11:12:13"
target triple = "x86_64-unknown-linux-gnu"
@_j_constYY.2 = external hidden unnamed_addr constant i64, align 8
@_j_constYY.5 = external hidden unnamed_addr constant [24 x i64], align 8
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #0
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p11.i64(ptr noalias writeonly captures(none), ptr addrspace(11) noalias readonly captures(none), i64, i1 immarg) #0
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
define hidden swiftcc void @absorb(ptr noalias nofree noundef nonnull writeonly sret([25 x i64]) align 8 captures(none) dereferenceable(200) %0, ptr nonnull swiftself %1, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(200) %2, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(48) %3, ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8) %4) local_unnamed_addr #2 {
%6 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr nonnull %6)
%7 = alloca [10 x i64], align 8
call void @llvm.lifetime.start.p0(ptr nonnull %7)
%8 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr nonnull %8)
%9 = alloca ptr addrspace(10), align 8
%10 = alloca ptr addrspace(10), align 8
%11 = alloca ptr addrspace(10), align 8
%12 = alloca ptr addrspace(10), align 8
%13 = alloca ptr addrspace(10), align 8
%14 = alloca ptr addrspace(10), align 8
%15 = alloca ptr addrspace(10), align 8
%16 = alloca ptr addrspace(10), align 8
%17 = alloca ptr addrspace(10), align 8
%18 = alloca ptr addrspace(10), align 8
%19 = alloca ptr addrspace(10), align 8
%20 = alloca ptr addrspace(10), align 8
%21 = alloca ptr addrspace(10), align 8
%22 = alloca ptr addrspace(10), align 8
%23 = alloca ptr addrspace(10), align 8
%24 = alloca ptr addrspace(10), align 8
%25 = alloca ptr addrspace(10), align 8
%26 = alloca ptr addrspace(10), align 8
%27 = alloca ptr addrspace(10), align 8
%28 = alloca ptr addrspace(10), align 8
store i64 0, ptr %28, align 8
store i64 0, ptr %27, align 8
store i64 0, ptr %26, align 8
store i64 0, ptr %25, align 8
store i64 0, ptr %24, align 8
store i64 0, ptr %23, align 8
store i64 0, ptr %22, align 8
store i64 0, ptr %21, align 8
store i64 0, ptr %20, align 8
store i64 0, ptr %19, align 8
store i64 0, ptr %18, align 8
store i64 0, ptr %17, align 8
store i64 0, ptr %16, align 8
store i64 0, ptr %15, align 8
store i64 0, ptr %14, align 8
store i64 0, ptr %13, align 8
store i64 0, ptr %12, align 8
store i64 0, ptr %11, align 8
store i64 0, ptr %10, align 8
store i64 0, ptr %9, align 8
%29 = getelementptr inbounds nuw i8, ptr %1, i64 16
%30 = load ptr, ptr %29, align 8
%31 = getelementptr inbounds nuw i8, ptr %30, i64 16
%32 = load atomic ptr, ptr %31 monotonic, align 8
fence syncscope("singlethread") seq_cst
fence syncscope("singlethread") seq_cst
%33 = getelementptr inbounds nuw i8, ptr addrspace(11) %3, i64 16
%34 = load i64, ptr addrspace(11) %33, align 8
%35 = getelementptr inbounds nuw i8, ptr addrspace(11) %3, i64 8
%36 = load i64, ptr addrspace(11) %35, align 8
%37 = sub i64 %34, %36
%38 = add i64 %37, 1
%39 = sdiv i64 %38, 8
%40 = srem i64 %39, 21
%41 = sub nsw i64 %39, %40
%.not = icmp eq i64 %41, 1
br i1 %.not, label %.thread627, label %42
42: ; preds = %5
%43 = icmp sgt i64 %41, 1
br i1 %43, label %44, label %.thread
44: ; preds = %42
%45 = add nsw i64 %41, -1
%46 = urem i64 %45, 21
%47 = sub nsw i64 %41, %46
br label %.thread627
48: ; preds = %.thread627, %472
%.sroa.0502.0 = phi i64 [ %.sroa.0502.0.copyload, %.thread627 ], [ %470, %472 ]
%.sroa.6504.0 = phi i64 [ %.sroa.6504.0.copyload, %.thread627 ], [ %396, %472 ]
%.sroa.7507.0 = phi i64 [ %.sroa.7507.0.copyload, %.thread627 ], [ %399, %472 ]
%.sroa.8510.0 = phi i64 [ %.sroa.8510.0.copyload, %.thread627 ], [ %402, %472 ]
%.sroa.9513.0 = phi i64 [ %.sroa.9513.0.copyload, %.thread627 ], [ %405, %472 ]
%.sroa.10516.0 = phi i64 [ %.sroa.10516.0.copyload, %.thread627 ], [ %408, %472 ]
%.sroa.11519.0 = phi i64 [ %.sroa.11519.0.copyload, %.thread627 ], [ %411, %472 ]
%.sroa.12522.0 = phi i64 [ %.sroa.12522.0.copyload, %.thread627 ], [ %414, %472 ]
%.sroa.13525.0 = phi i64 [ %.sroa.13525.0.copyload, %.thread627 ], [ %417, %472 ]
%.sroa.14528.0 = phi i64 [ %.sroa.14528.0.copyload, %.thread627 ], [ %420, %472 ]
%.sroa.15531.0 = phi i64 [ %.sroa.15531.0.copyload, %.thread627 ], [ %423, %472 ]
%.sroa.16534.0 = phi i64 [ %.sroa.16534.0.copyload, %.thread627 ], [ %426, %472 ]
%.sroa.17537.0 = phi i64 [ %.sroa.17537.0.copyload, %.thread627 ], [ %429, %472 ]
%.sroa.18540.0 = phi i64 [ %.sroa.18540.0.copyload, %.thread627 ], [ %432, %472 ]
%.sroa.19543.0 = phi i64 [ %.sroa.19543.0.copyload, %.thread627 ], [ %435, %472 ]
%.sroa.20546.0 = phi i64 [ %.sroa.20546.0.copyload, %.thread627 ], [ %438, %472 ]
%.sroa.21549.0 = phi i64 [ %.sroa.21549.0.copyload, %.thread627 ], [ %441, %472 ]
%.sroa.22552.0 = phi i64 [ %.sroa.22552.0.copyload, %.thread627 ], [ %444, %472 ]
%.sroa.23555.0 = phi i64 [ %.sroa.23555.0.copyload, %.thread627 ], [ %447, %472 ]
%.sroa.24558.0 = phi i64 [ %.sroa.24558.0.copyload, %.thread627 ], [ %450, %472 ]
%.sroa.25561.0 = phi i64 [ %.sroa.25561.0.copyload, %.thread627 ], [ %453, %472 ]
%.sroa.26564.0 = phi i64 [ %.sroa.26564.0.copyload, %.thread627 ], [ %456, %472 ]
%.sroa.27567.0 = phi i64 [ %.sroa.27567.0.copyload, %.thread627 ], [ %459, %472 ]
%.sroa.28570.0 = phi i64 [ %.sroa.28570.0.copyload, %.thread627 ], [ %462, %472 ]
%.sroa.29573.0 = phi i64 [ %.sroa.29573.0.copyload, %.thread627 ], [ %465, %472 ]
%49 = phi i64 [ 1, %.thread627 ], [ %473, %472 ]
%50 = add i64 %49, -1
%51 = add i64 %49, 20
%.not576 = icmp sgt i64 %49, 9223372036854775787
%52 = select i1 %.not576, i64 %50, i64 %51
store i64 %49, ptr %6, align 8
store i64 %52, ptr %771, align 8
%53 = icmp sge i64 %52, %49
%54 = icmp uge i64 %50, %774
%55 = add i64 %52, -1
%56 = icmp uge i64 %55, %774
%.not582 = or i1 %54, %56
%.not579 = and i1 %53, %.not582
br i1 %.not579, label %57, label %59
57: ; preds = %48
%58 = addrspacecast ptr %6 to ptr addrspace(11)
call swiftcc void @throw_boundserror_2(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, ptr addrspace(11) readonly captures(none) %58) #5
unreachable
59: ; preds = %48
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %775, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false)
call void @llvm.memcpy.p0.p11.i64(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr addrspace(11) noundef nonnull align 8 dereferenceable(48) %3, i64 48, i1 false)
%60 = load ptr addrspace(10), ptr %4, align 8
%61 = sub i64 %52, %49
%62 = add i64 %61, 1
%.not583 = icmp eq i64 %62, 0
br i1 %.not583, label %85, label %63
63: ; preds = %59
%64 = addrspacecast ptr addrspace(10) %60 to ptr addrspace(11)
%65 = load ptr, ptr addrspace(11) %64, align 8
%66 = getelementptr inbounds nuw i8, ptr addrspace(11) %64, i64 8
%67 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%68 = load i64, ptr addrspace(11) %780, align 8
%69 = load i64, ptr addrspace(11) %779, align 8
%70 = add i64 %68, -1
%71 = add i64 %70, %69
%72 = getelementptr i8, ptr %65, i64 %71
%73 = shl i64 %50, 3
%74 = getelementptr i8, ptr %72, i64 %73
%75 = load i64, ptr %74, align 1
%76 = xor i64 %75, %.sroa.0502.0
%77 = load ptr, ptr addrspace(11) %64, align 8
%78 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%79 = getelementptr i8, ptr %77, i64 %71
%80 = shl i64 %49, 3
%81 = getelementptr i8, ptr %79, i64 %80
%82 = load i64, ptr %81, align 1
%83 = xor i64 %82, %.sroa.6504.0
%84 = icmp ult i64 %62, 3
br i1 %84, label %95, label %87
85: ; preds = %59
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %28, align 8
%86 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %86, ptr readonly captures(none) %28, i64 signext 1) #5
unreachable
87: ; preds = %63
%88 = load ptr, ptr addrspace(11) %64, align 8
%89 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%90 = getelementptr i8, ptr %88, i64 %71
%91 = getelementptr i8, ptr %90, i64 %80
%92 = getelementptr i8, ptr %91, i64 8
%93 = load i64, ptr %92, align 1
%94 = xor i64 %93, %.sroa.7507.0
%.not584 = icmp eq i64 %62, 3
br i1 %.not584, label %106, label %97
95: ; preds = %63
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %27, align 8
%96 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %96, ptr readonly captures(none) %27, i64 signext 3) #5
unreachable
97: ; preds = %87
%98 = load ptr, ptr addrspace(11) %64, align 8
%99 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%100 = getelementptr i8, ptr %98, i64 %71
%101 = getelementptr i8, ptr %100, i64 %80
%102 = getelementptr i8, ptr %101, i64 16
%103 = load i64, ptr %102, align 1
%104 = xor i64 %103, %.sroa.8510.0
%105 = icmp ult i64 %62, 5
br i1 %105, label %116, label %108
106: ; preds = %87
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %26, align 8
%107 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %107, ptr readonly captures(none) %26, i64 signext 4) #5
unreachable
108: ; preds = %97
%109 = load ptr, ptr addrspace(11) %64, align 8
%110 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%111 = getelementptr i8, ptr %109, i64 %71
%112 = getelementptr i8, ptr %111, i64 %80
%113 = getelementptr i8, ptr %112, i64 24
%114 = load i64, ptr %113, align 1
%115 = xor i64 %114, %.sroa.9513.0
%.not585 = icmp eq i64 %62, 5
br i1 %.not585, label %127, label %118
116: ; preds = %97
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %25, align 8
%117 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %117, ptr readonly captures(none) %25, i64 signext 5) #5
unreachable
118: ; preds = %108
%119 = load ptr, ptr addrspace(11) %64, align 8
%120 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%121 = getelementptr i8, ptr %119, i64 %71
%122 = getelementptr i8, ptr %121, i64 %80
%123 = getelementptr i8, ptr %122, i64 32
%124 = load i64, ptr %123, align 1
%125 = xor i64 %124, %.sroa.10516.0
%126 = icmp ult i64 %62, 7
br i1 %126, label %137, label %129
127: ; preds = %108
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %24, align 8
%128 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %128, ptr readonly captures(none) %24, i64 signext 6) #5
unreachable
129: ; preds = %118
%130 = load ptr, ptr addrspace(11) %64, align 8
%131 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%132 = getelementptr i8, ptr %130, i64 %71
%133 = getelementptr i8, ptr %132, i64 %80
%134 = getelementptr i8, ptr %133, i64 40
%135 = load i64, ptr %134, align 1
%136 = xor i64 %135, %.sroa.11519.0
%.not586 = icmp eq i64 %62, 7
br i1 %.not586, label %148, label %139
137: ; preds = %118
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %23, align 8
%138 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %138, ptr readonly captures(none) %23, i64 signext 7) #5
unreachable
139: ; preds = %129
%140 = load ptr, ptr addrspace(11) %64, align 8
%141 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%142 = getelementptr i8, ptr %140, i64 %71
%143 = getelementptr i8, ptr %142, i64 %80
%144 = getelementptr i8, ptr %143, i64 48
%145 = load i64, ptr %144, align 1
%146 = xor i64 %145, %.sroa.12522.0
%147 = icmp ult i64 %62, 9
br i1 %147, label %158, label %150
148: ; preds = %129
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %22, align 8
%149 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %149, ptr readonly captures(none) %22, i64 signext 8) #5
unreachable
150: ; preds = %139
%151 = load ptr, ptr addrspace(11) %64, align 8
%152 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%153 = getelementptr i8, ptr %151, i64 %71
%154 = getelementptr i8, ptr %153, i64 %80
%155 = getelementptr i8, ptr %154, i64 56
%156 = load i64, ptr %155, align 1
%157 = xor i64 %156, %.sroa.13525.0
%.not587 = icmp eq i64 %62, 9
br i1 %.not587, label %169, label %160
158: ; preds = %139
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %21, align 8
%159 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %159, ptr readonly captures(none) %21, i64 signext 9) #5
unreachable
160: ; preds = %150
%161 = load ptr, ptr addrspace(11) %64, align 8
%162 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%163 = getelementptr i8, ptr %161, i64 %71
%164 = getelementptr i8, ptr %163, i64 %80
%165 = getelementptr i8, ptr %164, i64 64
%166 = load i64, ptr %165, align 1
%167 = xor i64 %166, %.sroa.14528.0
%168 = icmp ult i64 %62, 11
br i1 %168, label %179, label %171
169: ; preds = %150
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %20, align 8
%170 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %170, ptr readonly captures(none) %20, i64 signext 10) #5
unreachable
171: ; preds = %160
%172 = load ptr, ptr addrspace(11) %64, align 8
%173 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%174 = getelementptr i8, ptr %172, i64 %71
%175 = getelementptr i8, ptr %174, i64 %80
%176 = getelementptr i8, ptr %175, i64 72
%177 = load i64, ptr %176, align 1
%178 = xor i64 %177, %.sroa.15531.0
%.not588 = icmp eq i64 %62, 11
br i1 %.not588, label %190, label %181
179: ; preds = %160
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %19, align 8
%180 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %180, ptr readonly captures(none) %19, i64 signext 11) #5
unreachable
181: ; preds = %171
%182 = load ptr, ptr addrspace(11) %64, align 8
%183 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%184 = getelementptr i8, ptr %182, i64 %71
%185 = getelementptr i8, ptr %184, i64 %80
%186 = getelementptr i8, ptr %185, i64 80
%187 = load i64, ptr %186, align 1
%188 = xor i64 %187, %.sroa.16534.0
%189 = icmp ult i64 %62, 13
br i1 %189, label %200, label %192
190: ; preds = %171
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %18, align 8
%191 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %191, ptr readonly captures(none) %18, i64 signext 12) #5
unreachable
192: ; preds = %181
%193 = load ptr, ptr addrspace(11) %64, align 8
%194 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%195 = getelementptr i8, ptr %193, i64 %71
%196 = getelementptr i8, ptr %195, i64 %80
%197 = getelementptr i8, ptr %196, i64 88
%198 = load i64, ptr %197, align 1
%199 = xor i64 %198, %.sroa.17537.0
%.not589 = icmp eq i64 %62, 13
br i1 %.not589, label %211, label %202
200: ; preds = %181
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %17, align 8
%201 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %201, ptr readonly captures(none) %17, i64 signext 13) #5
unreachable
202: ; preds = %192
%203 = load ptr, ptr addrspace(11) %64, align 8
%204 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%205 = getelementptr i8, ptr %203, i64 %71
%206 = getelementptr i8, ptr %205, i64 %80
%207 = getelementptr i8, ptr %206, i64 96
%208 = load i64, ptr %207, align 1
%209 = xor i64 %208, %.sroa.18540.0
%210 = icmp ult i64 %62, 15
br i1 %210, label %221, label %213
211: ; preds = %192
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %16, align 8
%212 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %212, ptr readonly captures(none) %16, i64 signext 14) #5
unreachable
213: ; preds = %202
%214 = load ptr, ptr addrspace(11) %64, align 8
%215 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%216 = getelementptr i8, ptr %214, i64 %71
%217 = getelementptr i8, ptr %216, i64 %80
%218 = getelementptr i8, ptr %217, i64 104
%219 = load i64, ptr %218, align 1
%220 = xor i64 %219, %.sroa.19543.0
%.not590 = icmp eq i64 %62, 15
br i1 %.not590, label %232, label %223
221: ; preds = %202
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %15, align 8
%222 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %222, ptr readonly captures(none) %15, i64 signext 15) #5
unreachable
223: ; preds = %213
%224 = load ptr, ptr addrspace(11) %64, align 8
%225 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%226 = getelementptr i8, ptr %224, i64 %71
%227 = getelementptr i8, ptr %226, i64 %80
%228 = getelementptr i8, ptr %227, i64 112
%229 = load i64, ptr %228, align 1
%230 = xor i64 %229, %.sroa.20546.0
%231 = icmp ult i64 %62, 17
br i1 %231, label %242, label %234
232: ; preds = %213
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %14, align 8
%233 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %233, ptr readonly captures(none) %14, i64 signext 16) #5
unreachable
234: ; preds = %223
%235 = load ptr, ptr addrspace(11) %64, align 8
%236 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%237 = getelementptr i8, ptr %235, i64 %71
%238 = getelementptr i8, ptr %237, i64 %80
%239 = getelementptr i8, ptr %238, i64 120
%240 = load i64, ptr %239, align 1
%241 = xor i64 %240, %.sroa.21549.0
%.not591 = icmp eq i64 %62, 17
br i1 %.not591, label %253, label %244
242: ; preds = %223
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %13, align 8
%243 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %243, ptr readonly captures(none) %13, i64 signext 17) #5
unreachable
244: ; preds = %234
%245 = load ptr, ptr addrspace(11) %64, align 8
%246 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%247 = getelementptr i8, ptr %245, i64 %71
%248 = getelementptr i8, ptr %247, i64 %80
%249 = getelementptr i8, ptr %248, i64 128
%250 = load i64, ptr %249, align 1
%251 = xor i64 %250, %.sroa.22552.0
%252 = icmp ult i64 %62, 19
br i1 %252, label %263, label %255
253: ; preds = %234
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %12, align 8
%254 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %254, ptr readonly captures(none) %12, i64 signext 18) #5
unreachable
255: ; preds = %244
%256 = load ptr, ptr addrspace(11) %64, align 8
%257 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%258 = getelementptr i8, ptr %256, i64 %71
%259 = getelementptr i8, ptr %258, i64 %80
%260 = getelementptr i8, ptr %259, i64 136
%261 = load i64, ptr %260, align 1
%262 = xor i64 %261, %.sroa.23555.0
%.not592 = icmp eq i64 %62, 19
br i1 %.not592, label %269, label %265
263: ; preds = %244
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %11, align 8
%264 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %264, ptr readonly captures(none) %11, i64 signext 19) #5
unreachable
265: ; preds = %255
%266 = load ptr, ptr addrspace(11) %64, align 8
%267 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%268 = icmp ult i64 %62, 21
br i1 %268, label %284, label %271
269: ; preds = %255
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %10, align 8
%270 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %270, ptr readonly captures(none) %10, i64 signext 20) #5
unreachable
271: ; preds = %265
%272 = getelementptr i8, ptr %266, i64 %71
%273 = getelementptr i8, ptr %272, i64 %80
%274 = getelementptr i8, ptr %273, i64 144
%275 = load i64, ptr %274, align 1
%276 = xor i64 %275, %.sroa.24558.0
%277 = load ptr, ptr addrspace(11) %64, align 8
%278 = load ptr addrspace(10), ptr addrspace(11) %66, align 8
%279 = getelementptr i8, ptr %277, i64 %71
%280 = getelementptr i8, ptr %279, i64 %80
%281 = getelementptr i8, ptr %280, i64 152
%282 = load i64, ptr %281, align 1
%283 = xor i64 %282, %.sroa.25561.0
br label %286
284: ; preds = %265
store i64 %50, ptr %776, align 8
store i64 %778, ptr %777, align 8
store ptr addrspace(10) %60, ptr %9, align 8
%285 = addrspacecast ptr %7 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %285, ptr readonly captures(none) %9, i64 signext 21) #5
unreachable
286: ; preds = %286, %271
%287 = phi i64 [ 13, %271 ], [ %471, %286 ]
%288 = phi i64 [ %76, %271 ], [ %470, %286 ]
%289 = phi i64 [ %125, %271 ], [ %408, %286 ]
%290 = phi i64 [ %178, %271 ], [ %423, %286 ]
%291 = phi i64 [ %230, %271 ], [ %438, %286 ]
%292 = phi i64 [ %283, %271 ], [ %453, %286 ]
%293 = phi i64 [ %83, %271 ], [ %396, %286 ]
%294 = phi i64 [ %136, %271 ], [ %411, %286 ]
%295 = phi i64 [ %188, %271 ], [ %426, %286 ]
%296 = phi i64 [ %241, %271 ], [ %441, %286 ]
%297 = phi i64 [ %.sroa.26564.0, %271 ], [ %456, %286 ]
%298 = phi i64 [ %94, %271 ], [ %399, %286 ]
%299 = phi i64 [ %146, %271 ], [ %414, %286 ]
%300 = phi i64 [ %199, %271 ], [ %429, %286 ]
%301 = phi i64 [ %251, %271 ], [ %444, %286 ]
%302 = phi i64 [ %.sroa.27567.0, %271 ], [ %459, %286 ]
%303 = phi i64 [ %104, %271 ], [ %402, %286 ]
%304 = phi i64 [ %157, %271 ], [ %417, %286 ]
%305 = phi i64 [ %209, %271 ], [ %432, %286 ]
%306 = phi i64 [ %262, %271 ], [ %447, %286 ]
%307 = phi i64 [ %.sroa.28570.0, %271 ], [ %462, %286 ]
%308 = phi i64 [ %115, %271 ], [ %405, %286 ]
%309 = phi i64 [ %167, %271 ], [ %420, %286 ]
%310 = phi i64 [ %220, %271 ], [ %435, %286 ]
%311 = phi i64 [ %276, %271 ], [ %450, %286 ]
%312 = phi i64 [ %.sroa.29573.0, %271 ], [ %465, %286 ]
%313 = xor i64 %289, %288
%314 = xor i64 %313, %290
%315 = xor i64 %314, %291
%316 = xor i64 %315, %292
%317 = xor i64 %294, %293
%318 = xor i64 %317, %295
%319 = xor i64 %318, %296
%320 = xor i64 %319, %297
%321 = xor i64 %299, %298
%322 = xor i64 %321, %300
%323 = xor i64 %322, %301
%324 = xor i64 %323, %302
%325 = xor i64 %304, %303
%326 = xor i64 %325, %305
%327 = xor i64 %326, %306
%328 = xor i64 %327, %307
%329 = xor i64 %309, %308
%330 = xor i64 %329, %310
%331 = xor i64 %330, %311
%332 = xor i64 %331, %312
%333 = tail call i64 @llvm.fshl.i64(i64 %320, i64 %320, i64 1)
%334 = xor i64 %332, %333
%335 = tail call i64 @llvm.fshl.i64(i64 %324, i64 %324, i64 1)
%336 = xor i64 %335, %316
%337 = tail call i64 @llvm.fshl.i64(i64 %328, i64 %328, i64 1)
%338 = xor i64 %337, %320
%339 = tail call i64 @llvm.fshl.i64(i64 %332, i64 %332, i64 1)
%340 = xor i64 %339, %324
%341 = tail call i64 @llvm.fshl.i64(i64 %316, i64 %316, i64 1)
%342 = xor i64 %328, %341
%343 = xor i64 %334, %288
%344 = xor i64 %336, %293
%345 = xor i64 %338, %298
%346 = xor i64 %340, %303
%347 = xor i64 %342, %308
%348 = xor i64 %334, %289
%349 = xor i64 %336, %294
%350 = xor i64 %338, %299
%351 = xor i64 %340, %304
%352 = xor i64 %309, %342
%353 = xor i64 %334, %290
%354 = xor i64 %336, %295
%355 = xor i64 %338, %300
%356 = xor i64 %340, %305
%357 = xor i64 %310, %342
%358 = xor i64 %334, %291
%359 = xor i64 %336, %296
%360 = xor i64 %338, %301
%361 = xor i64 %340, %306
%362 = xor i64 %311, %342
%363 = xor i64 %334, %292
%364 = xor i64 %336, %297
%365 = xor i64 %338, %302
%366 = xor i64 %340, %307
%367 = xor i64 %312, %342
%368 = tail call i64 @llvm.fshl.i64(i64 %349, i64 %349, i64 44)
%369 = tail call i64 @llvm.fshl.i64(i64 %355, i64 %355, i64 43)
%370 = tail call i64 @llvm.fshl.i64(i64 %361, i64 %361, i64 21)
%371 = tail call i64 @llvm.fshl.i64(i64 %367, i64 %367, i64 14)
%372 = tail call i64 @llvm.fshl.i64(i64 %346, i64 %346, i64 28)
%373 = tail call i64 @llvm.fshl.i64(i64 %352, i64 %352, i64 20)
%374 = tail call i64 @llvm.fshl.i64(i64 %353, i64 %353, i64 3)
%375 = tail call i64 @llvm.fshl.i64(i64 %359, i64 %359, i64 45)
%376 = tail call i64 @llvm.fshl.i64(i64 %365, i64 %365, i64 61)
%377 = tail call i64 @llvm.fshl.i64(i64 %344, i64 %344, i64 1)
%378 = tail call i64 @llvm.fshl.i64(i64 %350, i64 %350, i64 6)
%379 = tail call i64 @llvm.fshl.i64(i64 %356, i64 %356, i64 25)
%380 = tail call i64 @llvm.fshl.i64(i64 %362, i64 %362, i64 8)
%381 = tail call i64 @llvm.fshl.i64(i64 %363, i64 %363, i64 18)
%382 = tail call i64 @llvm.fshl.i64(i64 %347, i64 %347, i64 27)
%383 = tail call i64 @llvm.fshl.i64(i64 %348, i64 %348, i64 36)
%384 = tail call i64 @llvm.fshl.i64(i64 %354, i64 %354, i64 10)
%385 = tail call i64 @llvm.fshl.i64(i64 %360, i64 %360, i64 15)
%386 = tail call i64 @llvm.fshl.i64(i64 %366, i64 %366, i64 56)
%387 = tail call i64 @llvm.fshl.i64(i64 %345, i64 %345, i64 62)
%388 = tail call i64 @llvm.fshl.i64(i64 %351, i64 %351, i64 55)
%389 = tail call i64 @llvm.fshl.i64(i64 %357, i64 %357, i64 39)
%390 = tail call i64 @llvm.fshl.i64(i64 %358, i64 %358, i64 41)
%391 = tail call i64 @llvm.fshl.i64(i64 %364, i64 %364, i64 2)
%392 = xor i64 %368, -1
%393 = and i64 %369, %392
%394 = xor i64 %369, -1
%395 = and i64 %370, %394
%396 = xor i64 %395, %368
%397 = xor i64 %370, -1
%398 = and i64 %371, %397
%399 = xor i64 %398, %369
%400 = xor i64 %371, -1
%401 = and i64 %343, %400
%402 = xor i64 %370, %401
%403 = xor i64 %343, -1
%404 = and i64 %368, %403
%405 = xor i64 %404, %371
%406 = xor i64 %373, -1
%407 = and i64 %374, %406
%408 = xor i64 %372, %407
%409 = xor i64 %374, -1
%410 = and i64 %375, %409
%411 = xor i64 %410, %373
%412 = xor i64 %375, -1
%413 = and i64 %376, %412
%414 = xor i64 %374, %413
%415 = xor i64 %376, -1
%416 = and i64 %372, %415
%417 = xor i64 %416, %375
%418 = xor i64 %372, -1
%419 = and i64 %373, %418
%420 = xor i64 %419, %376
%421 = xor i64 %378, -1
%422 = and i64 %379, %421
%423 = xor i64 %422, %377
%424 = xor i64 %379, -1
%425 = and i64 %380, %424
%426 = xor i64 %425, %378
%427 = xor i64 %380, -1
%428 = and i64 %381, %427
%429 = xor i64 %379, %428
%430 = xor i64 %381, -1
%431 = and i64 %377, %430
%432 = xor i64 %431, %380
%433 = xor i64 %377, -1
%434 = and i64 %378, %433
%435 = xor i64 %381, %434
%436 = xor i64 %383, -1
%437 = and i64 %384, %436
%438 = xor i64 %437, %382
%439 = xor i64 %384, -1
%440 = and i64 %385, %439
%441 = xor i64 %383, %440
%442 = xor i64 %385, -1
%443 = and i64 %386, %442
%444 = xor i64 %443, %384
%445 = xor i64 %386, -1
%446 = and i64 %382, %445
%447 = xor i64 %446, %385
%448 = xor i64 %382, -1
%449 = and i64 %383, %448
%450 = xor i64 %386, %449
%451 = xor i64 %388, -1
%452 = and i64 %389, %451
%453 = xor i64 %452, %387
%454 = xor i64 %389, -1
%455 = and i64 %390, %454
%456 = xor i64 %388, %455
%457 = xor i64 %390, -1
%458 = and i64 %391, %457
%459 = xor i64 %458, %389
%460 = xor i64 %391, -1
%461 = and i64 %387, %460
%462 = xor i64 %390, %461
%463 = xor i64 %387, -1
%464 = and i64 %388, %463
%465 = xor i64 %464, %391
%466 = getelementptr [8 x i8], ptr @_j_constYY.5, i64 %287
%467 = getelementptr i8, ptr %466, i64 -8
%468 = load i64, ptr %467, align 8
%469 = xor i64 %393, %468
%470 = xor i64 %469, %343
%.not593 = icmp eq i64 %287, 24
%471 = add nuw nsw i64 %287, 1
br i1 %.not593, label %472, label %286
472: ; preds = %286
%.not594 = icmp eq i64 %49, %770
%473 = add i64 %49, 21
br i1 %.not594, label %.loopexit, label %48
.loopexit: ; preds = %.thread, %472
%.pre-phi = phi i64 [ %.pre, %.thread ], [ %773, %472 ]
%.sroa.0230.0 = phi i64 [ %.sroa.0230.0.copyload231, %.thread ], [ %470, %472 ]
%.sroa.6232.0 = phi i64 [ %.sroa.6232.0.copyload234, %.thread ], [ %396, %472 ]
%.sroa.7235.0 = phi i64 [ %.sroa.7235.0.copyload237, %.thread ], [ %399, %472 ]
%.sroa.8238.0 = phi i64 [ %.sroa.8238.0.copyload240, %.thread ], [ %402, %472 ]
%.sroa.9241.0 = phi i64 [ %.sroa.9241.0.copyload243, %.thread ], [ %405, %472 ]
%.sroa.10244.0 = phi i64 [ %.sroa.10244.0.copyload246, %.thread ], [ %408, %472 ]
%.sroa.11247.0 = phi i64 [ %.sroa.11247.0.copyload249, %.thread ], [ %411, %472 ]
%.sroa.12250.0 = phi i64 [ %.sroa.12250.0.copyload252, %.thread ], [ %414, %472 ]
%.sroa.13253.0 = phi i64 [ %.sroa.13253.0.copyload255, %.thread ], [ %417, %472 ]
%.sroa.14256.0 = phi i64 [ %.sroa.14256.0.copyload258, %.thread ], [ %420, %472 ]
%.sroa.15259.0 = phi i64 [ %.sroa.15259.0.copyload261, %.thread ], [ %423, %472 ]
%.sroa.16262.0 = phi i64 [ %.sroa.16262.0.copyload264, %.thread ], [ %426, %472 ]
%.sroa.17265.0 = phi i64 [ %.sroa.17265.0.copyload267, %.thread ], [ %429, %472 ]
%.sroa.18268.0 = phi i64 [ %.sroa.18268.0.copyload270, %.thread ], [ %432, %472 ]
%.sroa.19271.0 = phi i64 [ %.sroa.19271.0.copyload273, %.thread ], [ %435, %472 ]
%.sroa.20274.0 = phi i64 [ %.sroa.20274.0.copyload276, %.thread ], [ %438, %472 ]
%.sroa.21277.0 = phi i64 [ %.sroa.21277.0.copyload279, %.thread ], [ %441, %472 ]
%.sroa.22280.0 = phi i64 [ %.sroa.22280.0.copyload282, %.thread ], [ %444, %472 ]
%.sroa.23283.0 = phi i64 [ %.sroa.23283.0.copyload285, %.thread ], [ %447, %472 ]
%.sroa.24286.0 = phi i64 [ %.sroa.24286.0.copyload288, %.thread ], [ %450, %472 ]
%.sroa.25289.0 = phi i64 [ %.sroa.25289.0.copyload291, %.thread ], [ %453, %472 ]
%.sroa.26292.0 = phi i64 [ %.sroa.26292.0.copyload294, %.thread ], [ %456, %472 ]
%.sroa.27.0 = phi i64 [ %.sroa.27.0.copyload296, %.thread ], [ %459, %472 ]
%.sroa.28.0 = phi i64 [ %.sroa.28.0.copyload298, %.thread ], [ %462, %472 ]
%.sroa.29.0 = phi i64 [ %.sroa.29.0.copyload300, %.thread ], [ %465, %472 ]
%474 = add nsw i64 %41, 1
%475 = icmp slt i64 %38, 8
%476 = select i1 %475, i64 0, i64 %.pre-phi
%477 = tail call i64 @llvm.smax.i64(i64 %41, i64 %476)
store i64 %474, ptr %8, align 8
%478 = getelementptr inbounds nuw i8, ptr %8, i64 8
store i64 %477, ptr %478, align 8
%479 = icmp sgt i64 %476, %41
%480 = icmp uge i64 %41, %476
%481 = add nsw i64 %477, -1
%482 = icmp uge i64 %481, %476
%.not601 = or i1 %480, %482
%.not598 = and i1 %479, %.not601
br i1 %.not598, label %483, label %485
483: ; preds = %.loopexit
%484 = addrspacecast ptr %8 to ptr addrspace(11)
call swiftcc void @throw_boundserror_2(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, ptr addrspace(11) readonly captures(none) %484) #5
unreachable
485: ; preds = %.loopexit
%486 = sub nsw i64 %477, %474
%487 = add nsw i64 %486, 1
%.not602 = icmp eq i64 %487, 0
br i1 %.not602, label %.thread948, label %488
488: ; preds = %485
%489 = load ptr addrspace(10), ptr %4, align 8
%490 = addrspacecast ptr addrspace(10) %489 to ptr addrspace(11)
%491 = load ptr, ptr addrspace(11) %490, align 8
%492 = getelementptr inbounds nuw i8, ptr addrspace(11) %490, i64 8
%493 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%494 = getelementptr inbounds nuw i8, ptr addrspace(11) %3, i64 24
%495 = getelementptr inbounds nuw i8, ptr addrspace(11) %3, i64 32
%496 = load i64, ptr addrspace(11) %495, align 8
%497 = load i64, ptr addrspace(11) %494, align 8
%498 = getelementptr i8, ptr %491, i64 %497
%499 = getelementptr i8, ptr %498, i64 %496
%500 = getelementptr i8, ptr %499, i64 -1
%501 = shl i64 %41, 3
%502 = getelementptr i8, ptr %500, i64 %501
%503 = load i64, ptr %502, align 1
%504 = xor i64 %503, %.sroa.0230.0
%505 = icmp eq i64 %476, %474
br i1 %505, label %.thread948, label %506
506: ; preds = %488
%507 = load ptr, ptr addrspace(11) %490, align 8
%508 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%509 = getelementptr i8, ptr %507, i64 %497
%510 = getelementptr i8, ptr %509, i64 %496
%511 = getelementptr i8, ptr %510, i64 7
%512 = getelementptr i8, ptr %511, i64 %501
%513 = load i64, ptr %512, align 1
%514 = xor i64 %513, %.sroa.6232.0
%515 = icmp ult i64 %487, 3
br i1 %515, label %.thread948, label %516
516: ; preds = %506
%517 = load ptr, ptr addrspace(11) %490, align 8
%518 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%519 = getelementptr i8, ptr %517, i64 %497
%520 = getelementptr i8, ptr %519, i64 %496
%521 = getelementptr i8, ptr %520, i64 15
%522 = getelementptr i8, ptr %521, i64 %501
%523 = load i64, ptr %522, align 1
%524 = xor i64 %523, %.sroa.7235.0
%525 = icmp eq i64 %487, 3
br i1 %525, label %.thread948, label %526
526: ; preds = %516
%527 = load ptr, ptr addrspace(11) %490, align 8
%528 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%529 = getelementptr i8, ptr %527, i64 %497
%530 = getelementptr i8, ptr %529, i64 %496
%531 = getelementptr i8, ptr %530, i64 23
%532 = getelementptr i8, ptr %531, i64 %501
%533 = load i64, ptr %532, align 1
%534 = xor i64 %533, %.sroa.8238.0
%535 = icmp ult i64 %487, 5
br i1 %535, label %.thread948, label %536
536: ; preds = %526
%537 = load ptr, ptr addrspace(11) %490, align 8
%538 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%539 = getelementptr i8, ptr %537, i64 %497
%540 = getelementptr i8, ptr %539, i64 %496
%541 = getelementptr i8, ptr %540, i64 31
%542 = getelementptr i8, ptr %541, i64 %501
%543 = load i64, ptr %542, align 1
%544 = xor i64 %543, %.sroa.9241.0
%545 = icmp eq i64 %487, 5
br i1 %545, label %.thread948, label %546
546: ; preds = %536
%547 = load ptr, ptr addrspace(11) %490, align 8
%548 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%549 = getelementptr i8, ptr %547, i64 %497
%550 = getelementptr i8, ptr %549, i64 %496
%551 = getelementptr i8, ptr %550, i64 39
%552 = getelementptr i8, ptr %551, i64 %501
%553 = load i64, ptr %552, align 1
%554 = xor i64 %553, %.sroa.10244.0
%555 = icmp ult i64 %487, 7
br i1 %555, label %.thread948, label %556
556: ; preds = %546
%557 = load ptr, ptr addrspace(11) %490, align 8
%558 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%559 = getelementptr i8, ptr %557, i64 %497
%560 = getelementptr i8, ptr %559, i64 %496
%561 = getelementptr i8, ptr %560, i64 47
%562 = getelementptr i8, ptr %561, i64 %501
%563 = load i64, ptr %562, align 1
%564 = xor i64 %563, %.sroa.11247.0
%565 = icmp eq i64 %487, 7
br i1 %565, label %.thread948, label %566
566: ; preds = %556
%567 = load ptr, ptr addrspace(11) %490, align 8
%568 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%569 = getelementptr i8, ptr %567, i64 %497
%570 = getelementptr i8, ptr %569, i64 %496
%571 = getelementptr i8, ptr %570, i64 55
%572 = getelementptr i8, ptr %571, i64 %501
%573 = load i64, ptr %572, align 1
%574 = xor i64 %573, %.sroa.12250.0
%575 = icmp ult i64 %487, 9
br i1 %575, label %.thread948, label %576
576: ; preds = %566
%577 = load ptr, ptr addrspace(11) %490, align 8
%578 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%579 = getelementptr i8, ptr %577, i64 %497
%580 = getelementptr i8, ptr %579, i64 %496
%581 = getelementptr i8, ptr %580, i64 63
%582 = getelementptr i8, ptr %581, i64 %501
%583 = load i64, ptr %582, align 1
%584 = xor i64 %583, %.sroa.13253.0
%585 = icmp eq i64 %487, 9
br i1 %585, label %.thread948, label %586
586: ; preds = %576
%587 = load ptr, ptr addrspace(11) %490, align 8
%588 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%589 = getelementptr i8, ptr %587, i64 %497
%590 = getelementptr i8, ptr %589, i64 %496
%591 = getelementptr i8, ptr %590, i64 71
%592 = getelementptr i8, ptr %591, i64 %501
%593 = load i64, ptr %592, align 1
%594 = xor i64 %593, %.sroa.14256.0
%595 = icmp ult i64 %487, 11
br i1 %595, label %.thread948, label %596
596: ; preds = %586
%597 = load ptr, ptr addrspace(11) %490, align 8
%598 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%599 = getelementptr i8, ptr %597, i64 %497
%600 = getelementptr i8, ptr %599, i64 %496
%601 = getelementptr i8, ptr %600, i64 79
%602 = getelementptr i8, ptr %601, i64 %501
%603 = load i64, ptr %602, align 1
%604 = xor i64 %603, %.sroa.15259.0
%605 = icmp eq i64 %487, 11
br i1 %605, label %.thread948, label %606
606: ; preds = %596
%607 = load ptr, ptr addrspace(11) %490, align 8
%608 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%609 = getelementptr i8, ptr %607, i64 %497
%610 = getelementptr i8, ptr %609, i64 %496
%611 = getelementptr i8, ptr %610, i64 87
%612 = getelementptr i8, ptr %611, i64 %501
%613 = load i64, ptr %612, align 1
%614 = xor i64 %613, %.sroa.16262.0
%615 = icmp ult i64 %487, 13
br i1 %615, label %.thread948, label %616
616: ; preds = %606
%617 = load ptr, ptr addrspace(11) %490, align 8
%618 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%619 = getelementptr i8, ptr %617, i64 %497
%620 = getelementptr i8, ptr %619, i64 %496
%621 = getelementptr i8, ptr %620, i64 95
%622 = getelementptr i8, ptr %621, i64 %501
%623 = load i64, ptr %622, align 1
%624 = xor i64 %623, %.sroa.17265.0
%625 = icmp eq i64 %487, 13
br i1 %625, label %.thread948, label %626
626: ; preds = %616
%627 = load ptr, ptr addrspace(11) %490, align 8
%628 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%629 = getelementptr i8, ptr %627, i64 %497
%630 = getelementptr i8, ptr %629, i64 %496
%631 = getelementptr i8, ptr %630, i64 103
%632 = getelementptr i8, ptr %631, i64 %501
%633 = load i64, ptr %632, align 1
%634 = xor i64 %633, %.sroa.18268.0
%635 = icmp ult i64 %487, 15
br i1 %635, label %.thread948, label %636
636: ; preds = %626
%637 = load ptr, ptr addrspace(11) %490, align 8
%638 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%639 = getelementptr i8, ptr %637, i64 %497
%640 = getelementptr i8, ptr %639, i64 %496
%641 = getelementptr i8, ptr %640, i64 111
%642 = getelementptr i8, ptr %641, i64 %501
%643 = load i64, ptr %642, align 1
%644 = xor i64 %643, %.sroa.19271.0
%645 = icmp eq i64 %487, 15
br i1 %645, label %.thread948, label %646
646: ; preds = %636
%647 = load ptr, ptr addrspace(11) %490, align 8
%648 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%649 = getelementptr i8, ptr %647, i64 %497
%650 = getelementptr i8, ptr %649, i64 %496
%651 = getelementptr i8, ptr %650, i64 119
%652 = getelementptr i8, ptr %651, i64 %501
%653 = load i64, ptr %652, align 1
%654 = xor i64 %653, %.sroa.20274.0
%655 = icmp ult i64 %487, 17
br i1 %655, label %.thread948, label %656
656: ; preds = %646
%657 = load ptr, ptr addrspace(11) %490, align 8
%658 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%659 = getelementptr i8, ptr %657, i64 %497
%660 = getelementptr i8, ptr %659, i64 %496
%661 = getelementptr i8, ptr %660, i64 127
%662 = getelementptr i8, ptr %661, i64 %501
%663 = load i64, ptr %662, align 1
%664 = xor i64 %663, %.sroa.21277.0
%665 = icmp eq i64 %487, 17
br i1 %665, label %.thread948, label %666
666: ; preds = %656
%667 = load ptr, ptr addrspace(11) %490, align 8
%668 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%669 = getelementptr i8, ptr %667, i64 %497
%670 = getelementptr i8, ptr %669, i64 %496
%671 = getelementptr i8, ptr %670, i64 135
%672 = getelementptr i8, ptr %671, i64 %501
%673 = load i64, ptr %672, align 1
%674 = xor i64 %673, %.sroa.22280.0
%675 = icmp ult i64 %487, 19
br i1 %675, label %.thread948, label %676
676: ; preds = %666
%677 = load ptr, ptr addrspace(11) %490, align 8
%678 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%679 = getelementptr i8, ptr %677, i64 %497
%680 = getelementptr i8, ptr %679, i64 %496
%681 = getelementptr i8, ptr %680, i64 143
%682 = getelementptr i8, ptr %681, i64 %501
%683 = load i64, ptr %682, align 1
%684 = xor i64 %683, %.sroa.23283.0
%685 = icmp eq i64 %487, 19
br i1 %685, label %.thread948, label %686
686: ; preds = %676
%687 = load ptr, ptr addrspace(11) %490, align 8
%688 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%689 = getelementptr i8, ptr %687, i64 %497
%690 = getelementptr i8, ptr %689, i64 %496
%691 = getelementptr i8, ptr %690, i64 151
%692 = getelementptr i8, ptr %691, i64 %501
%693 = load i64, ptr %692, align 1
%694 = xor i64 %693, %.sroa.24286.0
%695 = icmp ult i64 %487, 21
br i1 %695, label %.thread948, label %696
696: ; preds = %686
%697 = load ptr, ptr addrspace(11) %490, align 8
%698 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%699 = getelementptr i8, ptr %697, i64 %497
%700 = getelementptr i8, ptr %699, i64 %496
%701 = getelementptr i8, ptr %700, i64 159
%702 = getelementptr i8, ptr %701, i64 %501
%703 = load i64, ptr %702, align 1
%704 = xor i64 %703, %.sroa.25289.0
%705 = icmp eq i64 %487, 21
br i1 %705, label %.thread948, label %706
706: ; preds = %696
%707 = load ptr, ptr addrspace(11) %490, align 8
%708 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%709 = getelementptr i8, ptr %707, i64 %497
%710 = getelementptr i8, ptr %709, i64 %496
%711 = getelementptr i8, ptr %710, i64 167
%712 = getelementptr i8, ptr %711, i64 %501
%713 = load i64, ptr %712, align 1
%714 = xor i64 %713, %.sroa.26292.0
%715 = icmp ult i64 %487, 23
br i1 %715, label %.thread948, label %716
716: ; preds = %706
%717 = load ptr, ptr addrspace(11) %490, align 8
%718 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%719 = getelementptr i8, ptr %717, i64 %497
%720 = getelementptr i8, ptr %719, i64 %496
%721 = getelementptr i8, ptr %720, i64 175
%722 = getelementptr i8, ptr %721, i64 %501
%723 = load i64, ptr %722, align 1
%724 = xor i64 %723, %.sroa.27.0
%725 = icmp eq i64 %487, 23
br i1 %725, label %.thread948, label %726
726: ; preds = %716
%727 = load ptr, ptr addrspace(11) %490, align 8
%728 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%729 = getelementptr i8, ptr %727, i64 %497
%730 = getelementptr i8, ptr %729, i64 %496
%731 = getelementptr i8, ptr %730, i64 183
%732 = getelementptr i8, ptr %731, i64 %501
%733 = load i64, ptr %732, align 1
%734 = xor i64 %733, %.sroa.28.0
%735 = icmp ult i64 %487, 25
br i1 %735, label %.thread948, label %736
736: ; preds = %726
%737 = load ptr, ptr addrspace(11) %490, align 8
%738 = load ptr addrspace(10), ptr addrspace(11) %492, align 8
%739 = getelementptr i8, ptr %737, i64 %497
%740 = getelementptr i8, ptr %739, i64 %496
%741 = getelementptr i8, ptr %740, i64 191
%742 = getelementptr i8, ptr %741, i64 %501
%743 = load i64, ptr %742, align 1
%744 = xor i64 %743, %.sroa.29.0
br label %.thread948
.thread948: ; preds = %736, %726, %716, %706, %696, %686, %676, %666, %656, %646, %636, %626, %616, %606, %596, %586, %576, %566, %556, %546, %536, %526, %516, %506, %488, %485
%745 = phi i64 [ %734, %736 ], [ %734, %726 ], [ %.sroa.28.0, %716 ], [ %.sroa.28.0, %706 ], [ %.sroa.28.0, %696 ], [ %.sroa.28.0, %686 ], [ %.sroa.28.0, %676 ], [ %.sroa.28.0, %666 ], [ %.sroa.28.0, %656 ], [ %.sroa.28.0, %646 ], [ %.sroa.28.0, %636 ], [ %.sroa.28.0, %626 ], [ %.sroa.28.0, %616 ], [ %.sroa.28.0, %606 ], [ %.sroa.28.0, %596 ], [ %.sroa.28.0, %586 ], [ %.sroa.28.0, %576 ], [ %.sroa.28.0, %566 ], [ %.sroa.28.0, %556 ], [ %.sroa.28.0, %546 ], [ %.sroa.28.0, %536 ], [ %.sroa.28.0, %526 ], [ %.sroa.28.0, %516 ], [ %.sroa.28.0, %506 ], [ %.sroa.28.0, %488 ], [ %.sroa.28.0, %485 ]
%746 = phi i64 [ %714, %736 ], [ %714, %726 ], [ %714, %716 ], [ %714, %706 ], [ %.sroa.26292.0, %696 ], [ %.sroa.26292.0, %686 ], [ %.sroa.26292.0, %676 ], [ %.sroa.26292.0, %666 ], [ %.sroa.26292.0, %656 ], [ %.sroa.26292.0, %646 ], [ %.sroa.26292.0, %636 ], [ %.sroa.26292.0, %626 ], [ %.sroa.26292.0, %616 ], [ %.sroa.26292.0, %606 ], [ %.sroa.26292.0, %596 ], [ %.sroa.26292.0, %586 ], [ %.sroa.26292.0, %576 ], [ %.sroa.26292.0, %566 ], [ %.sroa.26292.0, %556 ], [ %.sroa.26292.0, %546 ], [ %.sroa.26292.0, %536 ], [ %.sroa.26292.0, %526 ], [ %.sroa.26292.0, %516 ], [ %.sroa.26292.0, %506 ], [ %.sroa.26292.0, %488 ], [ %.sroa.26292.0, %485 ]
%747 = phi i64 [ %694, %736 ], [ %694, %726 ], [ %694, %716 ], [ %694, %706 ], [ %694, %696 ], [ %694, %686 ], [ %.sroa.24286.0, %676 ], [ %.sroa.24286.0, %666 ], [ %.sroa.24286.0, %656 ], [ %.sroa.24286.0, %646 ], [ %.sroa.24286.0, %636 ], [ %.sroa.24286.0, %626 ], [ %.sroa.24286.0, %616 ], [ %.sroa.24286.0, %606 ], [ %.sroa.24286.0, %596 ], [ %.sroa.24286.0, %586 ], [ %.sroa.24286.0, %576 ], [ %.sroa.24286.0, %566 ], [ %.sroa.24286.0, %556 ], [ %.sroa.24286.0, %546 ], [ %.sroa.24286.0, %536 ], [ %.sroa.24286.0, %526 ], [ %.sroa.24286.0, %516 ], [ %.sroa.24286.0, %506 ], [ %.sroa.24286.0, %488 ], [ %.sroa.24286.0, %485 ]
%748 = phi i64 [ %674, %736 ], [ %674, %726 ], [ %674, %716 ], [ %674, %706 ], [ %674, %696 ], [ %674, %686 ], [ %674, %676 ], [ %674, %666 ], [ %.sroa.22280.0, %656 ], [ %.sroa.22280.0, %646 ], [ %.sroa.22280.0, %636 ], [ %.sroa.22280.0, %626 ], [ %.sroa.22280.0, %616 ], [ %.sroa.22280.0, %606 ], [ %.sroa.22280.0, %596 ], [ %.sroa.22280.0, %586 ], [ %.sroa.22280.0, %576 ], [ %.sroa.22280.0, %566 ], [ %.sroa.22280.0, %556 ], [ %.sroa.22280.0, %546 ], [ %.sroa.22280.0, %536 ], [ %.sroa.22280.0, %526 ], [ %.sroa.22280.0, %516 ], [ %.sroa.22280.0, %506 ], [ %.sroa.22280.0, %488 ], [ %.sroa.22280.0, %485 ]
%749 = phi i64 [ %654, %736 ], [ %654, %726 ], [ %654, %716 ], [ %654, %706 ], [ %654, %696 ], [ %654, %686 ], [ %654, %676 ], [ %654, %666 ], [ %654, %656 ], [ %654, %646 ], [ %.sroa.20274.0, %636 ], [ %.sroa.20274.0, %626 ], [ %.sroa.20274.0, %616 ], [ %.sroa.20274.0, %606 ], [ %.sroa.20274.0, %596 ], [ %.sroa.20274.0, %586 ], [ %.sroa.20274.0, %576 ], [ %.sroa.20274.0, %566 ], [ %.sroa.20274.0, %556 ], [ %.sroa.20274.0, %546 ], [ %.sroa.20274.0, %536 ], [ %.sroa.20274.0, %526 ], [ %.sroa.20274.0, %516 ], [ %.sroa.20274.0, %506 ], [ %.sroa.20274.0, %488 ], [ %.sroa.20274.0, %485 ]
%750 = phi i64 [ %634, %736 ], [ %634, %726 ], [ %634, %716 ], [ %634, %706 ], [ %634, %696 ], [ %634, %686 ], [ %634, %676 ], [ %634, %666 ], [ %634, %656 ], [ %634, %646 ], [ %634, %636 ], [ %634, %626 ], [ %.sroa.18268.0, %616 ], [ %.sroa.18268.0, %606 ], [ %.sroa.18268.0, %596 ], [ %.sroa.18268.0, %586 ], [ %.sroa.18268.0, %576 ], [ %.sroa.18268.0, %566 ], [ %.sroa.18268.0, %556 ], [ %.sroa.18268.0, %546 ], [ %.sroa.18268.0, %536 ], [ %.sroa.18268.0, %526 ], [ %.sroa.18268.0, %516 ], [ %.sroa.18268.0, %506 ], [ %.sroa.18268.0, %488 ], [ %.sroa.18268.0, %485 ]
%751 = phi i64 [ %614, %736 ], [ %614, %726 ], [ %614, %716 ], [ %614, %706 ], [ %614, %696 ], [ %614, %686 ], [ %614, %676 ], [ %614, %666 ], [ %614, %656 ], [ %614, %646 ], [ %614, %636 ], [ %614, %626 ], [ %614, %616 ], [ %614, %606 ], [ %.sroa.16262.0, %596 ], [ %.sroa.16262.0, %586 ], [ %.sroa.16262.0, %576 ], [ %.sroa.16262.0, %566 ], [ %.sroa.16262.0, %556 ], [ %.sroa.16262.0, %546 ], [ %.sroa.16262.0, %536 ], [ %.sroa.16262.0, %526 ], [ %.sroa.16262.0, %516 ], [ %.sroa.16262.0, %506 ], [ %.sroa.16262.0, %488 ], [ %.sroa.16262.0, %485 ]
%752 = phi i64 [ %594, %736 ], [ %594, %726 ], [ %594, %716 ], [ %594, %706 ], [ %594, %696 ], [ %594, %686 ], [ %594, %676 ], [ %594, %666 ], [ %594, %656 ], [ %594, %646 ], [ %594, %636 ], [ %594, %626 ], [ %594, %616 ], [ %594, %606 ], [ %594, %596 ], [ %594, %586 ], [ %.sroa.14256.0, %576 ], [ %.sroa.14256.0, %566 ], [ %.sroa.14256.0, %556 ], [ %.sroa.14256.0, %546 ], [ %.sroa.14256.0, %536 ], [ %.sroa.14256.0, %526 ], [ %.sroa.14256.0, %516 ], [ %.sroa.14256.0, %506 ], [ %.sroa.14256.0, %488 ], [ %.sroa.14256.0, %485 ]
%753 = phi i64 [ %574, %736 ], [ %574, %726 ], [ %574, %716 ], [ %574, %706 ], [ %574, %696 ], [ %574, %686 ], [ %574, %676 ], [ %574, %666 ], [ %574, %656 ], [ %574, %646 ], [ %574, %636 ], [ %574, %626 ], [ %574, %616 ], [ %574, %606 ], [ %574, %596 ], [ %574, %586 ], [ %574, %576 ], [ %574, %566 ], [ %.sroa.12250.0, %556 ], [ %.sroa.12250.0, %546 ], [ %.sroa.12250.0, %536 ], [ %.sroa.12250.0, %526 ], [ %.sroa.12250.0, %516 ], [ %.sroa.12250.0, %506 ], [ %.sroa.12250.0, %488 ], [ %.sroa.12250.0, %485 ]
%754 = phi i64 [ %554, %736 ], [ %554, %726 ], [ %554, %716 ], [ %554, %706 ], [ %554, %696 ], [ %554, %686 ], [ %554, %676 ], [ %554, %666 ], [ %554, %656 ], [ %554, %646 ], [ %554, %636 ], [ %554, %626 ], [ %554, %616 ], [ %554, %606 ], [ %554, %596 ], [ %554, %586 ], [ %554, %576 ], [ %554, %566 ], [ %554, %556 ], [ %554, %546 ], [ %.sroa.10244.0, %536 ], [ %.sroa.10244.0, %526 ], [ %.sroa.10244.0, %516 ], [ %.sroa.10244.0, %506 ], [ %.sroa.10244.0, %488 ], [ %.sroa.10244.0, %485 ]
%755 = phi i64 [ %534, %736 ], [ %534, %726 ], [ %534, %716 ], [ %534, %706 ], [ %534, %696 ], [ %534, %686 ], [ %534, %676 ], [ %534, %666 ], [ %534, %656 ], [ %534, %646 ], [ %534, %636 ], [ %534, %626 ], [ %534, %616 ], [ %534, %606 ], [ %534, %596 ], [ %534, %586 ], [ %534, %576 ], [ %534, %566 ], [ %534, %556 ], [ %534, %546 ], [ %534, %536 ], [ %534, %526 ], [ %.sroa.8238.0, %516 ], [ %.sroa.8238.0, %506 ], [ %.sroa.8238.0, %488 ], [ %.sroa.8238.0, %485 ]
%756 = phi i64 [ %514, %736 ], [ %514, %726 ], [ %514, %716 ], [ %514, %706 ], [ %514, %696 ], [ %514, %686 ], [ %514, %676 ], [ %514, %666 ], [ %514, %656 ], [ %514, %646 ], [ %514, %636 ], [ %514, %626 ], [ %514, %616 ], [ %514, %606 ], [ %514, %596 ], [ %514, %586 ], [ %514, %576 ], [ %514, %566 ], [ %514, %556 ], [ %514, %546 ], [ %514, %536 ], [ %514, %526 ], [ %514, %516 ], [ %514, %506 ], [ %.sroa.6232.0, %488 ], [ %.sroa.6232.0, %485 ]
%757 = phi i64 [ %504, %736 ], [ %504, %726 ], [ %504, %716 ], [ %504, %706 ], [ %504, %696 ], [ %504, %686 ], [ %504, %676 ], [ %504, %666 ], [ %504, %656 ], [ %504, %646 ], [ %504, %636 ], [ %504, %626 ], [ %504, %616 ], [ %504, %606 ], [ %504, %596 ], [ %504, %586 ], [ %504, %576 ], [ %504, %566 ], [ %504, %556 ], [ %504, %546 ], [ %504, %536 ], [ %504, %526 ], [ %504, %516 ], [ %504, %506 ], [ %504, %488 ], [ %.sroa.0230.0, %485 ]
%758 = phi i64 [ %524, %736 ], [ %524, %726 ], [ %524, %716 ], [ %524, %706 ], [ %524, %696 ], [ %524, %686 ], [ %524, %676 ], [ %524, %666 ], [ %524, %656 ], [ %524, %646 ], [ %524, %636 ], [ %524, %626 ], [ %524, %616 ], [ %524, %606 ], [ %524, %596 ], [ %524, %586 ], [ %524, %576 ], [ %524, %566 ], [ %524, %556 ], [ %524, %546 ], [ %524, %536 ], [ %524, %526 ], [ %524, %516 ], [ %.sroa.7235.0, %506 ], [ %.sroa.7235.0, %488 ], [ %.sroa.7235.0, %485 ]
%759 = phi i64 [ %544, %736 ], [ %544, %726 ], [ %544, %716 ], [ %544, %706 ], [ %544, %696 ], [ %544, %686 ], [ %544, %676 ], [ %544, %666 ], [ %544, %656 ], [ %544, %646 ], [ %544, %636 ], [ %544, %626 ], [ %544, %616 ], [ %544, %606 ], [ %544, %596 ], [ %544, %586 ], [ %544, %576 ], [ %544, %566 ], [ %544, %556 ], [ %544, %546 ], [ %544, %536 ], [ %.sroa.9241.0, %526 ], [ %.sroa.9241.0, %516 ], [ %.sroa.9241.0, %506 ], [ %.sroa.9241.0, %488 ], [ %.sroa.9241.0, %485 ]
%760 = phi i64 [ %564, %736 ], [ %564, %726 ], [ %564, %716 ], [ %564, %706 ], [ %564, %696 ], [ %564, %686 ], [ %564, %676 ], [ %564, %666 ], [ %564, %656 ], [ %564, %646 ], [ %564, %636 ], [ %564, %626 ], [ %564, %616 ], [ %564, %606 ], [ %564, %596 ], [ %564, %586 ], [ %564, %576 ], [ %564, %566 ], [ %564, %556 ], [ %.sroa.11247.0, %546 ], [ %.sroa.11247.0, %536 ], [ %.sroa.11247.0, %526 ], [ %.sroa.11247.0, %516 ], [ %.sroa.11247.0, %506 ], [ %.sroa.11247.0, %488 ], [ %.sroa.11247.0, %485 ]
%761 = phi i64 [ %584, %736 ], [ %584, %726 ], [ %584, %716 ], [ %584, %706 ], [ %584, %696 ], [ %584, %686 ], [ %584, %676 ], [ %584, %666 ], [ %584, %656 ], [ %584, %646 ], [ %584, %636 ], [ %584, %626 ], [ %584, %616 ], [ %584, %606 ], [ %584, %596 ], [ %584, %586 ], [ %584, %576 ], [ %.sroa.13253.0, %566 ], [ %.sroa.13253.0, %556 ], [ %.sroa.13253.0, %546 ], [ %.sroa.13253.0, %536 ], [ %.sroa.13253.0, %526 ], [ %.sroa.13253.0, %516 ], [ %.sroa.13253.0, %506 ], [ %.sroa.13253.0, %488 ], [ %.sroa.13253.0, %485 ]
%762 = phi i64 [ %604, %736 ], [ %604, %726 ], [ %604, %716 ], [ %604, %706 ], [ %604, %696 ], [ %604, %686 ], [ %604, %676 ], [ %604, %666 ], [ %604, %656 ], [ %604, %646 ], [ %604, %636 ], [ %604, %626 ], [ %604, %616 ], [ %604, %606 ], [ %604, %596 ], [ %.sroa.15259.0, %586 ], [ %.sroa.15259.0, %576 ], [ %.sroa.15259.0, %566 ], [ %.sroa.15259.0, %556 ], [ %.sroa.15259.0, %546 ], [ %.sroa.15259.0, %536 ], [ %.sroa.15259.0, %526 ], [ %.sroa.15259.0, %516 ], [ %.sroa.15259.0, %506 ], [ %.sroa.15259.0, %488 ], [ %.sroa.15259.0, %485 ]
%763 = phi i64 [ %624, %736 ], [ %624, %726 ], [ %624, %716 ], [ %624, %706 ], [ %624, %696 ], [ %624, %686 ], [ %624, %676 ], [ %624, %666 ], [ %624, %656 ], [ %624, %646 ], [ %624, %636 ], [ %624, %626 ], [ %624, %616 ], [ %.sroa.17265.0, %606 ], [ %.sroa.17265.0, %596 ], [ %.sroa.17265.0, %586 ], [ %.sroa.17265.0, %576 ], [ %.sroa.17265.0, %566 ], [ %.sroa.17265.0, %556 ], [ %.sroa.17265.0, %546 ], [ %.sroa.17265.0, %536 ], [ %.sroa.17265.0, %526 ], [ %.sroa.17265.0, %516 ], [ %.sroa.17265.0, %506 ], [ %.sroa.17265.0, %488 ], [ %.sroa.17265.0, %485 ]
%764 = phi i64 [ %644, %736 ], [ %644, %726 ], [ %644, %716 ], [ %644, %706 ], [ %644, %696 ], [ %644, %686 ], [ %644, %676 ], [ %644, %666 ], [ %644, %656 ], [ %644, %646 ], [ %644, %636 ], [ %.sroa.19271.0, %626 ], [ %.sroa.19271.0, %616 ], [ %.sroa.19271.0, %606 ], [ %.sroa.19271.0, %596 ], [ %.sroa.19271.0, %586 ], [ %.sroa.19271.0, %576 ], [ %.sroa.19271.0, %566 ], [ %.sroa.19271.0, %556 ], [ %.sroa.19271.0, %546 ], [ %.sroa.19271.0, %536 ], [ %.sroa.19271.0, %526 ], [ %.sroa.19271.0, %516 ], [ %.sroa.19271.0, %506 ], [ %.sroa.19271.0, %488 ], [ %.sroa.19271.0, %485 ]
%765 = phi i64 [ %664, %736 ], [ %664, %726 ], [ %664, %716 ], [ %664, %706 ], [ %664, %696 ], [ %664, %686 ], [ %664, %676 ], [ %664, %666 ], [ %664, %656 ], [ %.sroa.21277.0, %646 ], [ %.sroa.21277.0, %636 ], [ %.sroa.21277.0, %626 ], [ %.sroa.21277.0, %616 ], [ %.sroa.21277.0, %606 ], [ %.sroa.21277.0, %596 ], [ %.sroa.21277.0, %586 ], [ %.sroa.21277.0, %576 ], [ %.sroa.21277.0, %566 ], [ %.sroa.21277.0, %556 ], [ %.sroa.21277.0, %546 ], [ %.sroa.21277.0, %536 ], [ %.sroa.21277.0, %526 ], [ %.sroa.21277.0, %516 ], [ %.sroa.21277.0, %506 ], [ %.sroa.21277.0, %488 ], [ %.sroa.21277.0, %485 ]
%766 = phi i64 [ %684, %736 ], [ %684, %726 ], [ %684, %716 ], [ %684, %706 ], [ %684, %696 ], [ %684, %686 ], [ %684, %676 ], [ %.sroa.23283.0, %666 ], [ %.sroa.23283.0, %656 ], [ %.sroa.23283.0, %646 ], [ %.sroa.23283.0, %636 ], [ %.sroa.23283.0, %626 ], [ %.sroa.23283.0, %616 ], [ %.sroa.23283.0, %606 ], [ %.sroa.23283.0, %596 ], [ %.sroa.23283.0, %586 ], [ %.sroa.23283.0, %576 ], [ %.sroa.23283.0, %566 ], [ %.sroa.23283.0, %556 ], [ %.sroa.23283.0, %546 ], [ %.sroa.23283.0, %536 ], [ %.sroa.23283.0, %526 ], [ %.sroa.23283.0, %516 ], [ %.sroa.23283.0, %506 ], [ %.sroa.23283.0, %488 ], [ %.sroa.23283.0, %485 ]
%767 = phi i64 [ %704, %736 ], [ %704, %726 ], [ %704, %716 ], [ %704, %706 ], [ %704, %696 ], [ %.sroa.25289.0, %686 ], [ %.sroa.25289.0, %676 ], [ %.sroa.25289.0, %666 ], [ %.sroa.25289.0, %656 ], [ %.sroa.25289.0, %646 ], [ %.sroa.25289.0, %636 ], [ %.sroa.25289.0, %626 ], [ %.sroa.25289.0, %616 ], [ %.sroa.25289.0, %606 ], [ %.sroa.25289.0, %596 ], [ %.sroa.25289.0, %586 ], [ %.sroa.25289.0, %576 ], [ %.sroa.25289.0, %566 ], [ %.sroa.25289.0, %556 ], [ %.sroa.25289.0, %546 ], [ %.sroa.25289.0, %536 ], [ %.sroa.25289.0, %526 ], [ %.sroa.25289.0, %516 ], [ %.sroa.25289.0, %506 ], [ %.sroa.25289.0, %488 ], [ %.sroa.25289.0, %485 ]
%768 = phi i64 [ %724, %736 ], [ %724, %726 ], [ %724, %716 ], [ %.sroa.27.0, %706 ], [ %.sroa.27.0, %696 ], [ %.sroa.27.0, %686 ], [ %.sroa.27.0, %676 ], [ %.sroa.27.0, %666 ], [ %.sroa.27.0, %656 ], [ %.sroa.27.0, %646 ], [ %.sroa.27.0, %636 ], [ %.sroa.27.0, %626 ], [ %.sroa.27.0, %616 ], [ %.sroa.27.0, %606 ], [ %.sroa.27.0, %596 ], [ %.sroa.27.0, %586 ], [ %.sroa.27.0, %576 ], [ %.sroa.27.0, %566 ], [ %.sroa.27.0, %556 ], [ %.sroa.27.0, %546 ], [ %.sroa.27.0, %536 ], [ %.sroa.27.0, %526 ], [ %.sroa.27.0, %516 ], [ %.sroa.27.0, %506 ], [ %.sroa.27.0, %488 ], [ %.sroa.27.0, %485 ]
%769 = phi i64 [ %744, %736 ], [ %.sroa.29.0, %726 ], [ %.sroa.29.0, %716 ], [ %.sroa.29.0, %706 ], [ %.sroa.29.0, %696 ], [ %.sroa.29.0, %686 ], [ %.sroa.29.0, %676 ], [ %.sroa.29.0, %666 ], [ %.sroa.29.0, %656 ], [ %.sroa.29.0, %646 ], [ %.sroa.29.0, %636 ], [ %.sroa.29.0, %626 ], [ %.sroa.29.0, %616 ], [ %.sroa.29.0, %606 ], [ %.sroa.29.0, %596 ], [ %.sroa.29.0, %586 ], [ %.sroa.29.0, %576 ], [ %.sroa.29.0, %566 ], [ %.sroa.29.0, %556 ], [ %.sroa.29.0, %546 ], [ %.sroa.29.0, %536 ], [ %.sroa.29.0, %526 ], [ %.sroa.29.0, %516 ], [ %.sroa.29.0, %506 ], [ %.sroa.29.0, %488 ], [ %.sroa.29.0, %485 ]
store i64 %757, ptr %0, align 8
%.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8
store i64 %756, ptr %.sroa.3.0..sroa_idx, align 8
%.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16
store i64 %758, ptr %.sroa.4.0..sroa_idx, align 8
%.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24
store i64 %755, ptr %.sroa.5.0..sroa_idx, align 8
%.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 32
store i64 %759, ptr %.sroa.6.0..sroa_idx, align 8
%.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40
store i64 %754, ptr %.sroa.7.0..sroa_idx, align 8
%.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 48
store i64 %760, ptr %.sroa.8.0..sroa_idx, align 8
%.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 56
store i64 %753, ptr %.sroa.9.0..sroa_idx, align 8
%.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 64
store i64 %761, ptr %.sroa.10.0..sroa_idx, align 8
%.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 72
store i64 %752, ptr %.sroa.11.0..sroa_idx, align 8
%.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 80
store i64 %762, ptr %.sroa.12.0..sroa_idx, align 8
%.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 88
store i64 %751, ptr %.sroa.13.0..sroa_idx, align 8
%.sroa.14.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 96
store i64 %763, ptr %.sroa.14.0..sroa_idx, align 8
%.sroa.15.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 104
store i64 %750, ptr %.sroa.15.0..sroa_idx, align 8
%.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 112
store i64 %764, ptr %.sroa.16.0..sroa_idx, align 8
%.sroa.17.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 120
store i64 %749, ptr %.sroa.17.0..sroa_idx, align 8
%.sroa.18.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 128
store i64 %765, ptr %.sroa.18.0..sroa_idx, align 8
%.sroa.19.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 136
store i64 %748, ptr %.sroa.19.0..sroa_idx, align 8
%.sroa.20.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 144
store i64 %766, ptr %.sroa.20.0..sroa_idx, align 8
%.sroa.21.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 152
store i64 %747, ptr %.sroa.21.0..sroa_idx, align 8
%.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 160
store i64 %767, ptr %.sroa.22.0..sroa_idx, align 8
%.sroa.23.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 168
store i64 %746, ptr %.sroa.23.0..sroa_idx, align 8
%.sroa.24.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 176
store i64 %768, ptr %.sroa.24.0..sroa_idx, align 8
%.sroa.25.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 184
store i64 %745, ptr %.sroa.25.0..sroa_idx, align 8
%.sroa.26.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 192
store i64 %769, ptr %.sroa.26.0..sroa_idx, align 8
ret void
.thread627: ; preds = %44, %5
%770 = phi i64 [ %47, %44 ], [ 1, %5 ]
%.sroa.29573.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 192
%.sroa.29573.0.copyload = load i64, ptr addrspace(11) %.sroa.29573.0..sroa_idx, align 8
%.sroa.28570.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 184
%.sroa.28570.0.copyload = load i64, ptr addrspace(11) %.sroa.28570.0..sroa_idx, align 8
%.sroa.27567.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 176
%.sroa.27567.0.copyload = load i64, ptr addrspace(11) %.sroa.27567.0..sroa_idx, align 8
%.sroa.26564.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 168
%.sroa.26564.0.copyload = load i64, ptr addrspace(11) %.sroa.26564.0..sroa_idx, align 8
%.sroa.25561.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 160
%.sroa.25561.0.copyload = load i64, ptr addrspace(11) %.sroa.25561.0..sroa_idx, align 8
%.sroa.24558.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 152
%.sroa.24558.0.copyload = load i64, ptr addrspace(11) %.sroa.24558.0..sroa_idx, align 8
%.sroa.23555.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 144
%.sroa.23555.0.copyload = load i64, ptr addrspace(11) %.sroa.23555.0..sroa_idx, align 8
%.sroa.22552.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 136
%.sroa.22552.0.copyload = load i64, ptr addrspace(11) %.sroa.22552.0..sroa_idx, align 8
%.sroa.21549.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 128
%.sroa.21549.0.copyload = load i64, ptr addrspace(11) %.sroa.21549.0..sroa_idx, align 8
%.sroa.20546.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 120
%.sroa.20546.0.copyload = load i64, ptr addrspace(11) %.sroa.20546.0..sroa_idx, align 8
%.sroa.19543.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 112
%.sroa.19543.0.copyload = load i64, ptr addrspace(11) %.sroa.19543.0..sroa_idx, align 8
%.sroa.18540.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 104
%.sroa.18540.0.copyload = load i64, ptr addrspace(11) %.sroa.18540.0..sroa_idx, align 8
%.sroa.17537.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 96
%.sroa.17537.0.copyload = load i64, ptr addrspace(11) %.sroa.17537.0..sroa_idx, align 8
%.sroa.16534.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 88
%.sroa.16534.0.copyload = load i64, ptr addrspace(11) %.sroa.16534.0..sroa_idx, align 8
%.sroa.15531.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 80
%.sroa.15531.0.copyload = load i64, ptr addrspace(11) %.sroa.15531.0..sroa_idx, align 8
%.sroa.14528.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 72
%.sroa.14528.0.copyload = load i64, ptr addrspace(11) %.sroa.14528.0..sroa_idx, align 8
%.sroa.13525.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 64
%.sroa.13525.0.copyload = load i64, ptr addrspace(11) %.sroa.13525.0..sroa_idx, align 8
%.sroa.12522.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 56
%.sroa.12522.0.copyload = load i64, ptr addrspace(11) %.sroa.12522.0..sroa_idx, align 8
%.sroa.11519.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 48
%.sroa.11519.0.copyload = load i64, ptr addrspace(11) %.sroa.11519.0..sroa_idx, align 8
%.sroa.10516.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 40
%.sroa.10516.0.copyload = load i64, ptr addrspace(11) %.sroa.10516.0..sroa_idx, align 8
%.sroa.9513.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 32
%.sroa.9513.0.copyload = load i64, ptr addrspace(11) %.sroa.9513.0..sroa_idx, align 8
%.sroa.8510.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 24
%.sroa.8510.0.copyload = load i64, ptr addrspace(11) %.sroa.8510.0..sroa_idx, align 8
%.sroa.7507.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 16
%.sroa.7507.0.copyload = load i64, ptr addrspace(11) %.sroa.7507.0..sroa_idx, align 8
%.sroa.6504.0..sroa_idx = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 8
%.sroa.6504.0.copyload = load i64, ptr addrspace(11) %.sroa.6504.0..sroa_idx, align 8
%.sroa.0502.0.copyload = load i64, ptr addrspace(11) %2, align 8
%771 = getelementptr inbounds nuw i8, ptr %6, i64 8
%772 = icmp slt i64 %38, 8
%773 = tail call i64 @llvm.smax.i64(i64 %39, i64 0)
%774 = select i1 %772, i64 0, i64 %773
%775 = getelementptr inbounds nuw i8, ptr %7, i64 48
%776 = getelementptr inbounds nuw i8, ptr %7, i64 64
%777 = getelementptr inbounds nuw i8, ptr %7, i64 72
%778 = load i64, ptr @_j_constYY.2, align 8
%779 = getelementptr inbounds nuw i8, ptr addrspace(11) %3, i64 24
%780 = getelementptr inbounds nuw i8, ptr addrspace(11) %3, i64 32
br label %48
.thread: ; preds = %42
%.sroa.0230.0.copyload231 = load i64, ptr addrspace(11) %2, align 8
%.sroa.6232.0..sroa_idx233 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 8
%.sroa.6232.0.copyload234 = load i64, ptr addrspace(11) %.sroa.6232.0..sroa_idx233, align 8
%.sroa.7235.0..sroa_idx236 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 16
%.sroa.7235.0.copyload237 = load i64, ptr addrspace(11) %.sroa.7235.0..sroa_idx236, align 8
%.sroa.8238.0..sroa_idx239 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 24
%.sroa.8238.0.copyload240 = load i64, ptr addrspace(11) %.sroa.8238.0..sroa_idx239, align 8
%.sroa.9241.0..sroa_idx242 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 32
%.sroa.9241.0.copyload243 = load i64, ptr addrspace(11) %.sroa.9241.0..sroa_idx242, align 8
%.sroa.10244.0..sroa_idx245 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 40
%.sroa.10244.0.copyload246 = load i64, ptr addrspace(11) %.sroa.10244.0..sroa_idx245, align 8
%.sroa.11247.0..sroa_idx248 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 48
%.sroa.11247.0.copyload249 = load i64, ptr addrspace(11) %.sroa.11247.0..sroa_idx248, align 8
%.sroa.12250.0..sroa_idx251 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 56
%.sroa.12250.0.copyload252 = load i64, ptr addrspace(11) %.sroa.12250.0..sroa_idx251, align 8
%.sroa.13253.0..sroa_idx254 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 64
%.sroa.13253.0.copyload255 = load i64, ptr addrspace(11) %.sroa.13253.0..sroa_idx254, align 8
%.sroa.14256.0..sroa_idx257 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 72
%.sroa.14256.0.copyload258 = load i64, ptr addrspace(11) %.sroa.14256.0..sroa_idx257, align 8
%.sroa.15259.0..sroa_idx260 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 80
%.sroa.15259.0.copyload261 = load i64, ptr addrspace(11) %.sroa.15259.0..sroa_idx260, align 8
%.sroa.16262.0..sroa_idx263 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 88
%.sroa.16262.0.copyload264 = load i64, ptr addrspace(11) %.sroa.16262.0..sroa_idx263, align 8
%.sroa.17265.0..sroa_idx266 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 96
%.sroa.17265.0.copyload267 = load i64, ptr addrspace(11) %.sroa.17265.0..sroa_idx266, align 8
%.sroa.18268.0..sroa_idx269 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 104
%.sroa.18268.0.copyload270 = load i64, ptr addrspace(11) %.sroa.18268.0..sroa_idx269, align 8
%.sroa.19271.0..sroa_idx272 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 112
%.sroa.19271.0.copyload273 = load i64, ptr addrspace(11) %.sroa.19271.0..sroa_idx272, align 8
%.sroa.20274.0..sroa_idx275 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 120
%.sroa.20274.0.copyload276 = load i64, ptr addrspace(11) %.sroa.20274.0..sroa_idx275, align 8
%.sroa.21277.0..sroa_idx278 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 128
%.sroa.21277.0.copyload279 = load i64, ptr addrspace(11) %.sroa.21277.0..sroa_idx278, align 8
%.sroa.22280.0..sroa_idx281 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 136
%.sroa.22280.0.copyload282 = load i64, ptr addrspace(11) %.sroa.22280.0..sroa_idx281, align 8
%.sroa.23283.0..sroa_idx284 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 144
%.sroa.23283.0.copyload285 = load i64, ptr addrspace(11) %.sroa.23283.0..sroa_idx284, align 8
%.sroa.24286.0..sroa_idx287 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 152
%.sroa.24286.0.copyload288 = load i64, ptr addrspace(11) %.sroa.24286.0..sroa_idx287, align 8
%.sroa.25289.0..sroa_idx290 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 160
%.sroa.25289.0.copyload291 = load i64, ptr addrspace(11) %.sroa.25289.0..sroa_idx290, align 8
%.sroa.26292.0..sroa_idx293 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 168
%.sroa.26292.0.copyload294 = load i64, ptr addrspace(11) %.sroa.26292.0..sroa_idx293, align 8
%.sroa.27.0..sroa_idx295 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 176
%.sroa.27.0.copyload296 = load i64, ptr addrspace(11) %.sroa.27.0..sroa_idx295, align 8
%.sroa.28.0..sroa_idx297 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 184
%.sroa.28.0.copyload298 = load i64, ptr addrspace(11) %.sroa.28.0..sroa_idx297, align 8
%.sroa.29.0..sroa_idx299 = getelementptr inbounds nuw i8, ptr addrspace(11) %2, i64 192
%.sroa.29.0.copyload300 = load i64, ptr addrspace(11) %.sroa.29.0..sroa_idx299, align 8
%.pre = tail call i64 @llvm.smax.i64(i64 %39, i64 0)
br label %.loopexit
}
; Function Attrs: noinline noreturn
declare hidden swiftcc void @throw_boundserror_1(ptr nonnull swiftself, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(80), ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8), i64 signext) local_unnamed_addr #3
; Function Attrs: noinline noreturn
declare hidden swiftcc void @throw_boundserror_2(ptr nonnull swiftself, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(48), ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8), ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(16)) local_unnamed_addr #3
; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #4
; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.fshl.i64(i64, i64, i64) #4
attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" }
attributes #3 = { noinline noreturn "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" }
attributes #4 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { noreturn }
; ModuleID = 'absorb-unopt.ll'
source_filename = "<stdin>"
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-ni:10:11:12:13"
target triple = "x86_64-unknown-linux-gnu"
@jl_diverror_exception = external constant ptr
@_j_constYY.2 = external hidden unnamed_addr constant i64, align 8
@_j_constYY.5 = external hidden unnamed_addr constant [24 x i64], align 8
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #0
; Function Attrs: noreturn
declare void @ijl_throw(ptr addrspace(12)) #1
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #2
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p11.i64(ptr noalias writeonly captures(none), ptr addrspace(11) noalias readonly captures(none), i64, i1 immarg) #2
; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write)
declare void @llvm.trap() #3
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(ptr captures(none)) #4
define hidden swiftcc void @absorb(ptr noalias noundef nonnull sret([25 x i64]) align 8 captures(none) dereferenceable(200) %0, ptr nonnull swiftself %1, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(200) %2, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(48) %3, ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8) %4) #5 {
%6 = alloca [25 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %6)
%7 = alloca [25 x i64], align 8
%8 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %8)
%9 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %9)
%10 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %10)
%11 = alloca [1 x [2 x i64]], align 8
call void @llvm.lifetime.start.p0(ptr %11)
%12 = alloca [10 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %12)
%13 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %13)
%14 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %14)
%15 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %15)
%16 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %16)
%17 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %17)
%18 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %18)
%19 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %19)
%20 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %20)
%21 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %21)
%22 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %22)
%23 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %23)
%24 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %24)
%25 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %25)
%26 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %26)
%27 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %27)
%28 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %28)
%29 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %29)
%30 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %30)
%31 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %31)
%32 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %32)
%33 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %33)
%34 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %34)
%35 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %35)
%36 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %36)
%37 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %37)
%38 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %38)
%39 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %39)
%40 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %40)
%41 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %41)
%42 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %42)
%43 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %43)
%44 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %44)
%45 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %45)
%46 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %46)
%47 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %47)
%48 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %48)
%49 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %49)
%50 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %50)
%51 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %51)
%52 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %52)
%53 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %53)
%54 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %54)
%55 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %55)
%56 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %56)
%57 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %57)
%58 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %58)
%59 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %59)
%60 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %60)
%61 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %61)
%62 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %62)
%63 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %63)
%64 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %64)
%65 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %65)
%66 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %66)
%67 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %67)
%68 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %68)
%69 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %69)
%70 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %70)
%71 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %71)
%72 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %72)
%73 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %73)
%74 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %74)
%75 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %75)
%76 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %76)
%77 = alloca [25 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %77)
%78 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %78)
%79 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %79)
%80 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %80)
%81 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %81)
%82 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %82)
%83 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %83)
%84 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %84)
%85 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %85)
%86 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %86)
%87 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %87)
%88 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %88)
%89 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %89)
%90 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %90)
%91 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %91)
%92 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %92)
%93 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %93)
%94 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %94)
%95 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %95)
%96 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %96)
%97 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %97)
%98 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %98)
%99 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %99)
%100 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %100)
%101 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %101)
%102 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %102)
%103 = alloca [25 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %103)
%104 = alloca [25 x i64], align 8
%105 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %105)
%106 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %106)
%107 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %107)
%108 = alloca [1 x [2 x i64]], align 8
call void @llvm.lifetime.start.p0(ptr %108)
%109 = alloca [10 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %109)
%110 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %110)
%111 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %111)
%112 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %112)
%113 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %113)
%114 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %114)
%115 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %115)
%116 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %116)
%117 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %117)
%118 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %118)
%119 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %119)
%120 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %120)
%121 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %121)
%122 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %122)
%123 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %123)
%124 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %124)
%125 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %125)
%126 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %126)
%127 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %127)
%128 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %128)
%129 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %129)
%130 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %130)
%131 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %131)
%132 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %132)
%133 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %133)
%134 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %134)
%135 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %135)
%136 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %136)
%137 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %137)
%138 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %138)
%139 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %139)
%140 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %140)
%141 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %141)
%142 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %142)
%143 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %143)
%144 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %144)
%145 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %145)
%146 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %146)
%147 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %147)
%148 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %148)
%149 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %149)
%150 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %150)
%151 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %151)
%152 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %152)
%153 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %153)
%154 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %154)
%155 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %155)
%156 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %156)
%157 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %157)
%158 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %158)
%159 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %159)
%160 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %160)
%161 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %161)
%162 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %162)
%163 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %163)
%164 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %164)
%165 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %165)
%166 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %166)
%167 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %167)
%168 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %168)
%169 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %169)
%170 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %170)
%171 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %171)
%172 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %172)
%173 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %173)
%174 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %174)
%175 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %175)
%176 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %176)
%177 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %177)
%178 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %178)
%179 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %179)
%180 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %180)
%181 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %181)
%182 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %182)
%183 = alloca [2 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %183)
%184 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %184)
%185 = alloca { ptr, ptr addrspace(10) }, align 8
call void @llvm.lifetime.start.p0(ptr %185)
%186 = alloca [25 x i64], align 8
call void @llvm.lifetime.start.p0(ptr %186)
%187 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %187)
%188 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %188)
%189 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %189)
%190 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %190)
%191 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %191)
%192 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %192)
%193 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %193)
%194 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %194)
%195 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %195)
%196 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %196)
%197 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %197)
%198 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %198)
%199 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %199)
%200 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %200)
%201 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %201)
%202 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %202)
%203 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %203)
%204 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %204)
%205 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %205)
%206 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %206)
%207 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %207)
%208 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %208)
%209 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %209)
%210 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %210)
%211 = alloca i64, align 8
call void @llvm.lifetime.start.p0(ptr %211)
%212 = alloca ptr addrspace(10), align 8
%213 = alloca ptr addrspace(10), align 8
%214 = alloca ptr addrspace(10), align 8
%215 = alloca ptr addrspace(10), align 8
%216 = alloca ptr addrspace(10), align 8
%217 = alloca ptr addrspace(10), align 8
%218 = alloca ptr addrspace(10), align 8
%219 = alloca ptr addrspace(10), align 8
%220 = alloca ptr addrspace(10), align 8
%221 = alloca ptr addrspace(10), align 8
%222 = alloca ptr addrspace(10), align 8
%223 = alloca ptr addrspace(10), align 8
%224 = alloca ptr addrspace(10), align 8
%225 = alloca ptr addrspace(10), align 8
%226 = alloca ptr addrspace(10), align 8
%227 = alloca ptr addrspace(10), align 8
%228 = alloca ptr addrspace(10), align 8
%229 = alloca ptr addrspace(10), align 8
%230 = alloca ptr addrspace(10), align 8
%231 = alloca ptr addrspace(10), align 8
%232 = alloca ptr addrspace(10), align 8
%233 = alloca ptr addrspace(10), align 8
%234 = alloca ptr addrspace(10), align 8
%235 = alloca ptr addrspace(10), align 8
%236 = alloca ptr addrspace(10), align 8
%237 = alloca ptr addrspace(10), align 8
%238 = alloca ptr addrspace(10), align 8
%239 = alloca ptr addrspace(10), align 8
%240 = alloca ptr addrspace(10), align 8
%241 = alloca ptr addrspace(10), align 8
%242 = alloca ptr addrspace(10), align 8
%243 = alloca ptr addrspace(10), align 8
%244 = alloca ptr addrspace(10), align 8
%245 = alloca ptr addrspace(10), align 8
%246 = alloca ptr addrspace(10), align 8
%247 = alloca ptr addrspace(10), align 8
%248 = alloca ptr addrspace(10), align 8
%249 = alloca ptr addrspace(10), align 8
%250 = alloca ptr addrspace(10), align 8
%251 = alloca ptr addrspace(10), align 8
%252 = alloca ptr addrspace(10), align 8
%253 = alloca ptr addrspace(10), align 8
%254 = alloca ptr addrspace(10), align 8
%255 = alloca ptr addrspace(10), align 8
%256 = alloca ptr addrspace(10), align 8
%257 = alloca ptr addrspace(10), align 8
call void @llvm.memset.p0.i64(ptr align 8 %257, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %256, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %255, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %254, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %253, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %252, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %251, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %250, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %249, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %248, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %247, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %246, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %245, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %244, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %243, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %242, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %241, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %240, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %239, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %238, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %237, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %236, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %235, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %234, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %233, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %232, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %231, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %230, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %229, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %228, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %227, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %226, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %225, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %224, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %223, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %222, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %221, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %220, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %219, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %218, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %217, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %216, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %215, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %214, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %213, i8 0, i64 8, i1 false)
call void @llvm.memset.p0.i64(ptr align 8 %212, i8 0, i64 8, i1 false)
%258 = getelementptr inbounds i8, ptr %1, i32 -192
%259 = getelementptr inbounds i8, ptr %258, i32 208
%260 = load ptr, ptr %259, align 8
%261 = getelementptr inbounds i8, ptr %260, i32 16
%262 = load atomic ptr, ptr %261 monotonic, align 8
fence syncscope("singlethread") seq_cst
fence syncscope("singlethread") seq_cst
%263 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%264 = getelementptr inbounds i8, ptr addrspace(11) %263, i32 8
%265 = load i64, ptr addrspace(11) %264, align 8
%266 = load i64, ptr addrspace(11) %263, align 8
%267 = sub i64 %265, %266
%268 = add i64 1, %267
%269 = mul i64 %268, 1
%270 = icmp ne i64 %269, -9223372036854775808
%271 = or i1 true, %270
%272 = and i1 true, %271
%273 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %272, label %4137, label %4135
274: ; preds = %4161
%275 = icmp eq i64 %4163, 1
%276 = xor i1 %275, true
br i1 %276, label %278, label %277
277: ; preds = %274
br label %314
278: ; preds = %274
%279 = icmp slt i64 1, %4163
%280 = zext i1 %279 to i8
%281 = icmp eq i8 1, %280
%282 = xor i1 %281, true
%283 = xor i1 %282, true
br i1 %283, label %287, label %284
284: ; preds = %278
br label %285
285: ; preds = %284
br label %286
286: ; preds = %285
br label %314
287: ; preds = %278
%288 = icmp slt i64 1, %4163
%289 = xor i1 %288, true
br i1 %289, label %292, label %290
290: ; preds = %287
%291 = sub i64 %4163, 1
br label %294
292: ; preds = %287
%293 = sub i64 1, %4163
br label %294
294: ; preds = %292, %290
%295 = phi i64 [ %291, %290 ], [ %293, %292 ]
%296 = phi i64 [ 21, %290 ], [ -21, %292 ]
%297 = icmp slt i64 %295, 0
%298 = xor i1 %297, true
br i1 %298, label %301, label %299
299: ; preds = %294
%300 = call swiftcc i64 @jlpkg_overflow_case_0(ptr nonnull swiftself %1, i64 signext %295, i64 signext %296)
br label %304
301: ; preds = %294
%302 = icmp ne i64 %296, 0
%303 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %302, label %4668, label %4666
304: ; preds = %4673, %299
%305 = phi i64 [ %300, %299 ], [ %4674, %4673 ]
%306 = icmp slt i64 1, %4163
%307 = xor i1 %306, true
br i1 %307, label %310, label %308
308: ; preds = %304
%309 = sub i64 %4163, %305
br label %312
310: ; preds = %304
%311 = add i64 %4163, %305
br label %312
312: ; preds = %310, %308
%313 = phi i64 [ %309, %308 ], [ %311, %310 ]
br label %314
314: ; preds = %312, %286, %277
%315 = phi i64 [ %4163, %277 ], [ 0, %286 ], [ %313, %312 ]
br label %316
316: ; preds = %314
br label %317
317: ; preds = %316
br label %318
318: ; preds = %317
br label %319
319: ; preds = %318
br label %320
320: ; preds = %319
%321 = icmp eq i64 1, %315
%322 = xor i1 %321, true
%323 = icmp slt i64 1, %315
%324 = zext i1 %323 to i8
%325 = icmp eq i8 1, %324
%326 = xor i1 %325, true
%327 = and i1 %322, %326
%328 = xor i1 %327, true
br i1 %328, label %330, label %329
329: ; preds = %320
br label %331
330: ; preds = %320
br label %331
331: ; preds = %330, %329
%332 = phi i8 [ 1, %329 ], [ 0, %330 ]
%333 = phi i64 [ 1, %330 ], [ undef, %329 ]
%334 = phi i64 [ 1, %330 ], [ undef, %329 ]
%335 = trunc i8 %332 to i1
%336 = xor i1 %335, true
%337 = xor i1 %336, true
br i1 %337, label %338, label %340
338: ; preds = %331
call void @llvm.lifetime.start.p0(ptr %104)
%339 = icmp ne ptr addrspace(11) %2, null
br i1 %339, label %4690, label %4691
340: ; preds = %331
call void @llvm.lifetime.start.p0(ptr %7)
%341 = icmp ne ptr addrspace(11) %2, null
br i1 %341, label %4675, label %4676
342: ; preds = %4684, %4679
%343 = phi i64 [ %333, %4679 ], [ %2173, %4684 ]
%344 = phi i64 [ %334, %4679 ], [ %2174, %4684 ]
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %6, ptr align 8 %7, i64 200, i1 false)
call void @llvm.lifetime.end.p0(ptr %7)
%345 = sub i64 %343, 1
%346 = add i64 %345, 21
%347 = icmp sle i64 %343, %346
%348 = xor i1 %347, true
br i1 %348, label %350, label %349
349: ; preds = %342
br label %352
350: ; preds = %342
%351 = sub i64 %343, 1
br label %352
352: ; preds = %350, %349
%353 = phi i64 [ %346, %349 ], [ %351, %350 ]
%354 = getelementptr inbounds i8, ptr %8, i32 0
store i64 %343, ptr %9, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %354, ptr align 8 %9, i64 8, i1 false)
%355 = getelementptr inbounds i8, ptr %8, i32 8
store i64 %353, ptr %10, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %355, ptr align 8 %10, i64 8, i1 false)
br label %356
356: ; preds = %352
br label %357
357: ; preds = %356
%358 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%359 = getelementptr inbounds i8, ptr addrspace(11) %358, i32 8
%360 = load i64, ptr addrspace(11) %359, align 8
%361 = load i64, ptr addrspace(11) %358, align 8
%362 = sub i64 %360, %361
%363 = add i64 1, %362
%364 = mul i64 %363, 1
%365 = icmp ne i64 %364, -9223372036854775808
%366 = or i1 true, %365
%367 = and i1 true, %366
%368 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %367, label %4166, label %4164
369: ; preds = %4166
br label %371
370: ; preds = %4166
br label %371
371: ; preds = %370, %369
br label %372
372: ; preds = %371
br label %373
373: ; preds = %372
br label %374
374: ; preds = %373
br label %375
375: ; preds = %374
br label %376
376: ; preds = %375
br label %377
377: ; preds = %376
br i1 false, label %415, label %378
378: ; preds = %377
%379 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%380 = getelementptr inbounds i8, ptr addrspace(11) %379, i32 8
%381 = load i64, ptr addrspace(11) %380, align 8
%382 = load i64, ptr addrspace(11) %379, align 8
%383 = sub i64 %381, %382
%384 = add i64 1, %383
%385 = mul i64 %384, 1
%386 = icmp ne i64 %385, -9223372036854775808
%387 = or i1 true, %386
%388 = and i1 true, %387
%389 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %388, label %4174, label %4172
390: ; preds = %4174
br label %392
391: ; preds = %4174
br label %392
392: ; preds = %391, %390
%393 = phi i64 [ %4177, %390 ], [ 0, %391 ]
br label %394
394: ; preds = %392
br label %395
395: ; preds = %394
%396 = icmp slt i64 0, %393
%397 = xor i1 %396, true
%398 = select i1 %397, i64 0, i64 %393
br label %399
399: ; preds = %395
br label %400
400: ; preds = %399
br label %401
401: ; preds = %400
%402 = icmp slt i64 %353, %343
%403 = sub i64 %343, 1
%404 = icmp ult i64 %403, %398
%405 = sub i64 %353, 1
%406 = icmp ult i64 %405, %398
%407 = and i1 %404, %406
%408 = or i1 %402, %407
br label %409
409: ; preds = %401
%410 = xor i1 %408, true
br i1 %410, label %412, label %411
411: ; preds = %409
br label %414
412: ; preds = %409
%413 = addrspacecast ptr %8 to ptr addrspace(11)
call swiftcc void @throw_boundserror_2(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, ptr addrspace(11) readonly captures(none) %413) #1
call void @llvm.trap()
unreachable
414: ; preds = %411
br label %415
415: ; preds = %414, %377
%416 = getelementptr inbounds i8, ptr %11, i32 0
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %416, ptr align 8 %8, i64 16, i1 false)
%417 = sub i64 %343, 1
%418 = getelementptr inbounds i8, ptr %12, i32 0
call void @llvm.memcpy.p0.p11.i64(ptr align 8 %418, ptr addrspace(11) align 8 %3, i64 48, i1 false)
%419 = load ptr addrspace(10), ptr %4, align 8
%420 = getelementptr inbounds i8, ptr %12, i32 48
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %420, ptr align 8 %11, i64 16, i1 false)
%421 = getelementptr inbounds i8, ptr %12, i32 64
store i64 %417, ptr %13, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %421, ptr align 8 %13, i64 8, i1 false)
%422 = getelementptr inbounds i8, ptr %12, i32 72
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %422, ptr align 8 @_j_constYY.2, i64 8, i1 false)
br label %423
423: ; preds = %415
br i1 false, label %430, label %424
424: ; preds = %423
%425 = sub i64 %353, %343
%426 = add i64 1, %425
%427 = icmp ult i64 0, %426
%428 = xor i1 %427, true
br i1 %428, label %445, label %429
429: ; preds = %424
br label %430
430: ; preds = %429, %423
%431 = add i64 %417, 1
br i1 true, label %457, label %432
432: ; preds = %430
%433 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%434 = getelementptr inbounds i8, ptr addrspace(11) %433, i32 8
%435 = load i64, ptr addrspace(11) %434, align 8
%436 = load i64, ptr addrspace(11) %433, align 8
%437 = sub i64 %435, %436
%438 = add i64 1, %437
%439 = mul i64 %438, 1
%440 = icmp ne i64 %439, -9223372036854775808
%441 = or i1 true, %440
%442 = and i1 true, %441
%443 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %442, label %4182, label %4180
444: ; preds = %4182
br label %448
445: ; preds = %424
store ptr addrspace(10) %419, ptr %257, align 8
%446 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %446, ptr readonly captures(none) %257, i64 signext 1) #1
call void @llvm.trap()
unreachable
447: ; preds = %4182
br label %448
448: ; preds = %447, %444
%449 = phi i64 [ %4185, %444 ], [ 0, %447 ]
%450 = icmp slt i64 0, %449
%451 = xor i1 %450, true
%452 = select i1 %451, i64 0, i64 %449
%453 = sub i64 %431, 1
%454 = icmp ult i64 %453, %452
%455 = xor i1 %454, true
br i1 %455, label %485, label %456
456: ; preds = %448
br label %457
457: ; preds = %456, %430
%458 = load ptr addrspace(10), ptr %4, align 8
%459 = addrspacecast ptr addrspace(10) %458 to ptr addrspace(11)
%460 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %459, i32 0, i32 0
%461 = load ptr, ptr addrspace(11) %460, align 8
%462 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %459, i32 0, i32 1
%463 = load ptr addrspace(10), ptr addrspace(11) %462, align 8
%464 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %461, 0
%465 = insertvalue { ptr, ptr addrspace(10) } %464, ptr addrspace(10) %463, 1
%466 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%467 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%468 = load i64, ptr addrspace(11) %467, align 8
%469 = mul i64 %468, 1
%470 = load i64, ptr addrspace(11) %466, align 8
%471 = add i64 %470, %469
%472 = sub i64 %471, 1
%473 = mul i64 %472, 1
%474 = getelementptr inbounds i8, ptr %14, i32 0
store i64 %473, ptr %15, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %474, ptr align 8 %15, i64 8, i1 false)
%475 = getelementptr inbounds i8, ptr %14, i32 8
store { ptr, ptr addrspace(10) } %465, ptr %16, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %475, ptr align 8 %16, i64 8, i1 false)
%476 = getelementptr inbounds i8, ptr %16, i32 8
%477 = load ptr addrspace(10), ptr %476, align 8
%478 = extractvalue { ptr, ptr addrspace(10) } %465, 0
%479 = getelementptr i8, ptr %478, i64 %473
%480 = sub i64 %431, 1
%481 = mul i64 8, %480
%482 = getelementptr i8, ptr %479, i64 %481
%483 = getelementptr inbounds i64, ptr %482, i64 0
%484 = load i64, ptr %483, align 1
br label %486
485: ; preds = %448
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %431) #1
call void @llvm.trap()
unreachable
486: ; preds = %457
%487 = load i64, ptr %6, align 8
%488 = xor i64 %487, %484
%489 = getelementptr inbounds i8, ptr %6, i32 8
br i1 false, label %496, label %490
490: ; preds = %486
%491 = sub i64 %353, %343
%492 = add i64 1, %491
%493 = icmp ult i64 1, %492
%494 = xor i1 %493, true
br i1 %494, label %511, label %495
495: ; preds = %490
br label %496
496: ; preds = %495, %486
%497 = add i64 %417, 2
br i1 true, label %523, label %498
498: ; preds = %496
%499 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%500 = getelementptr inbounds i8, ptr addrspace(11) %499, i32 8
%501 = load i64, ptr addrspace(11) %500, align 8
%502 = load i64, ptr addrspace(11) %499, align 8
%503 = sub i64 %501, %502
%504 = add i64 1, %503
%505 = mul i64 %504, 1
%506 = icmp ne i64 %505, -9223372036854775808
%507 = or i1 true, %506
%508 = and i1 true, %507
%509 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %508, label %4190, label %4188
510: ; preds = %4190
br label %514
511: ; preds = %490
store ptr addrspace(10) %419, ptr %256, align 8
%512 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %512, ptr readonly captures(none) %256, i64 signext 2) #1
call void @llvm.trap()
unreachable
513: ; preds = %4190
br label %514
514: ; preds = %513, %510
%515 = phi i64 [ %4193, %510 ], [ 0, %513 ]
%516 = icmp slt i64 0, %515
%517 = xor i1 %516, true
%518 = select i1 %517, i64 0, i64 %515
%519 = sub i64 %497, 1
%520 = icmp ult i64 %519, %518
%521 = xor i1 %520, true
br i1 %521, label %551, label %522
522: ; preds = %514
br label %523
523: ; preds = %522, %496
%524 = load ptr addrspace(10), ptr %4, align 8
%525 = addrspacecast ptr addrspace(10) %524 to ptr addrspace(11)
%526 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %525, i32 0, i32 0
%527 = load ptr, ptr addrspace(11) %526, align 8
%528 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %525, i32 0, i32 1
%529 = load ptr addrspace(10), ptr addrspace(11) %528, align 8
%530 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %527, 0
%531 = insertvalue { ptr, ptr addrspace(10) } %530, ptr addrspace(10) %529, 1
%532 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%533 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%534 = load i64, ptr addrspace(11) %533, align 8
%535 = mul i64 %534, 1
%536 = load i64, ptr addrspace(11) %532, align 8
%537 = add i64 %536, %535
%538 = sub i64 %537, 1
%539 = mul i64 %538, 1
%540 = getelementptr inbounds i8, ptr %17, i32 0
store i64 %539, ptr %18, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %540, ptr align 8 %18, i64 8, i1 false)
%541 = getelementptr inbounds i8, ptr %17, i32 8
store { ptr, ptr addrspace(10) } %531, ptr %19, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %541, ptr align 8 %19, i64 8, i1 false)
%542 = getelementptr inbounds i8, ptr %19, i32 8
%543 = load ptr addrspace(10), ptr %542, align 8
%544 = extractvalue { ptr, ptr addrspace(10) } %531, 0
%545 = getelementptr i8, ptr %544, i64 %539
%546 = sub i64 %497, 1
%547 = mul i64 8, %546
%548 = getelementptr i8, ptr %545, i64 %547
%549 = getelementptr inbounds i64, ptr %548, i64 0
%550 = load i64, ptr %549, align 1
br label %552
551: ; preds = %514
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %497) #1
call void @llvm.trap()
unreachable
552: ; preds = %523
%553 = load i64, ptr %489, align 8
%554 = xor i64 %553, %550
%555 = getelementptr inbounds i8, ptr %6, i32 16
br i1 false, label %562, label %556
556: ; preds = %552
%557 = sub i64 %353, %343
%558 = add i64 1, %557
%559 = icmp ult i64 2, %558
%560 = xor i1 %559, true
br i1 %560, label %577, label %561
561: ; preds = %556
br label %562
562: ; preds = %561, %552
%563 = add i64 %417, 3
br i1 true, label %589, label %564
564: ; preds = %562
%565 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%566 = getelementptr inbounds i8, ptr addrspace(11) %565, i32 8
%567 = load i64, ptr addrspace(11) %566, align 8
%568 = load i64, ptr addrspace(11) %565, align 8
%569 = sub i64 %567, %568
%570 = add i64 1, %569
%571 = mul i64 %570, 1
%572 = icmp ne i64 %571, -9223372036854775808
%573 = or i1 true, %572
%574 = and i1 true, %573
%575 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %574, label %4198, label %4196
576: ; preds = %4198
br label %580
577: ; preds = %556
store ptr addrspace(10) %419, ptr %255, align 8
%578 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %578, ptr readonly captures(none) %255, i64 signext 3) #1
call void @llvm.trap()
unreachable
579: ; preds = %4198
br label %580
580: ; preds = %579, %576
%581 = phi i64 [ %4201, %576 ], [ 0, %579 ]
%582 = icmp slt i64 0, %581
%583 = xor i1 %582, true
%584 = select i1 %583, i64 0, i64 %581
%585 = sub i64 %563, 1
%586 = icmp ult i64 %585, %584
%587 = xor i1 %586, true
br i1 %587, label %617, label %588
588: ; preds = %580
br label %589
589: ; preds = %588, %562
%590 = load ptr addrspace(10), ptr %4, align 8
%591 = addrspacecast ptr addrspace(10) %590 to ptr addrspace(11)
%592 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %591, i32 0, i32 0
%593 = load ptr, ptr addrspace(11) %592, align 8
%594 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %591, i32 0, i32 1
%595 = load ptr addrspace(10), ptr addrspace(11) %594, align 8
%596 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %593, 0
%597 = insertvalue { ptr, ptr addrspace(10) } %596, ptr addrspace(10) %595, 1
%598 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%599 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%600 = load i64, ptr addrspace(11) %599, align 8
%601 = mul i64 %600, 1
%602 = load i64, ptr addrspace(11) %598, align 8
%603 = add i64 %602, %601
%604 = sub i64 %603, 1
%605 = mul i64 %604, 1
%606 = getelementptr inbounds i8, ptr %20, i32 0
store i64 %605, ptr %21, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %606, ptr align 8 %21, i64 8, i1 false)
%607 = getelementptr inbounds i8, ptr %20, i32 8
store { ptr, ptr addrspace(10) } %597, ptr %22, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %607, ptr align 8 %22, i64 8, i1 false)
%608 = getelementptr inbounds i8, ptr %22, i32 8
%609 = load ptr addrspace(10), ptr %608, align 8
%610 = extractvalue { ptr, ptr addrspace(10) } %597, 0
%611 = getelementptr i8, ptr %610, i64 %605
%612 = sub i64 %563, 1
%613 = mul i64 8, %612
%614 = getelementptr i8, ptr %611, i64 %613
%615 = getelementptr inbounds i64, ptr %614, i64 0
%616 = load i64, ptr %615, align 1
br label %618
617: ; preds = %580
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %563) #1
call void @llvm.trap()
unreachable
618: ; preds = %589
%619 = load i64, ptr %555, align 8
%620 = xor i64 %619, %616
%621 = getelementptr inbounds i8, ptr %6, i32 24
br i1 false, label %628, label %622
622: ; preds = %618
%623 = sub i64 %353, %343
%624 = add i64 1, %623
%625 = icmp ult i64 3, %624
%626 = xor i1 %625, true
br i1 %626, label %643, label %627
627: ; preds = %622
br label %628
628: ; preds = %627, %618
%629 = add i64 %417, 4
br i1 true, label %655, label %630
630: ; preds = %628
%631 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%632 = getelementptr inbounds i8, ptr addrspace(11) %631, i32 8
%633 = load i64, ptr addrspace(11) %632, align 8
%634 = load i64, ptr addrspace(11) %631, align 8
%635 = sub i64 %633, %634
%636 = add i64 1, %635
%637 = mul i64 %636, 1
%638 = icmp ne i64 %637, -9223372036854775808
%639 = or i1 true, %638
%640 = and i1 true, %639
%641 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %640, label %4206, label %4204
642: ; preds = %4206
br label %646
643: ; preds = %622
store ptr addrspace(10) %419, ptr %254, align 8
%644 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %644, ptr readonly captures(none) %254, i64 signext 4) #1
call void @llvm.trap()
unreachable
645: ; preds = %4206
br label %646
646: ; preds = %645, %642
%647 = phi i64 [ %4209, %642 ], [ 0, %645 ]
%648 = icmp slt i64 0, %647
%649 = xor i1 %648, true
%650 = select i1 %649, i64 0, i64 %647
%651 = sub i64 %629, 1
%652 = icmp ult i64 %651, %650
%653 = xor i1 %652, true
br i1 %653, label %683, label %654
654: ; preds = %646
br label %655
655: ; preds = %654, %628
%656 = load ptr addrspace(10), ptr %4, align 8
%657 = addrspacecast ptr addrspace(10) %656 to ptr addrspace(11)
%658 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %657, i32 0, i32 0
%659 = load ptr, ptr addrspace(11) %658, align 8
%660 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %657, i32 0, i32 1
%661 = load ptr addrspace(10), ptr addrspace(11) %660, align 8
%662 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %659, 0
%663 = insertvalue { ptr, ptr addrspace(10) } %662, ptr addrspace(10) %661, 1
%664 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%665 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%666 = load i64, ptr addrspace(11) %665, align 8
%667 = mul i64 %666, 1
%668 = load i64, ptr addrspace(11) %664, align 8
%669 = add i64 %668, %667
%670 = sub i64 %669, 1
%671 = mul i64 %670, 1
%672 = getelementptr inbounds i8, ptr %23, i32 0
store i64 %671, ptr %24, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %672, ptr align 8 %24, i64 8, i1 false)
%673 = getelementptr inbounds i8, ptr %23, i32 8
store { ptr, ptr addrspace(10) } %663, ptr %25, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %673, ptr align 8 %25, i64 8, i1 false)
%674 = getelementptr inbounds i8, ptr %25, i32 8
%675 = load ptr addrspace(10), ptr %674, align 8
%676 = extractvalue { ptr, ptr addrspace(10) } %663, 0
%677 = getelementptr i8, ptr %676, i64 %671
%678 = sub i64 %629, 1
%679 = mul i64 8, %678
%680 = getelementptr i8, ptr %677, i64 %679
%681 = getelementptr inbounds i64, ptr %680, i64 0
%682 = load i64, ptr %681, align 1
br label %684
683: ; preds = %646
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %629) #1
call void @llvm.trap()
unreachable
684: ; preds = %655
%685 = load i64, ptr %621, align 8
%686 = xor i64 %685, %682
%687 = getelementptr inbounds i8, ptr %6, i32 32
br i1 false, label %694, label %688
688: ; preds = %684
%689 = sub i64 %353, %343
%690 = add i64 1, %689
%691 = icmp ult i64 4, %690
%692 = xor i1 %691, true
br i1 %692, label %709, label %693
693: ; preds = %688
br label %694
694: ; preds = %693, %684
%695 = add i64 %417, 5
br i1 true, label %721, label %696
696: ; preds = %694
%697 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%698 = getelementptr inbounds i8, ptr addrspace(11) %697, i32 8
%699 = load i64, ptr addrspace(11) %698, align 8
%700 = load i64, ptr addrspace(11) %697, align 8
%701 = sub i64 %699, %700
%702 = add i64 1, %701
%703 = mul i64 %702, 1
%704 = icmp ne i64 %703, -9223372036854775808
%705 = or i1 true, %704
%706 = and i1 true, %705
%707 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %706, label %4214, label %4212
708: ; preds = %4214
br label %712
709: ; preds = %688
store ptr addrspace(10) %419, ptr %253, align 8
%710 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %710, ptr readonly captures(none) %253, i64 signext 5) #1
call void @llvm.trap()
unreachable
711: ; preds = %4214
br label %712
712: ; preds = %711, %708
%713 = phi i64 [ %4217, %708 ], [ 0, %711 ]
%714 = icmp slt i64 0, %713
%715 = xor i1 %714, true
%716 = select i1 %715, i64 0, i64 %713
%717 = sub i64 %695, 1
%718 = icmp ult i64 %717, %716
%719 = xor i1 %718, true
br i1 %719, label %749, label %720
720: ; preds = %712
br label %721
721: ; preds = %720, %694
%722 = load ptr addrspace(10), ptr %4, align 8
%723 = addrspacecast ptr addrspace(10) %722 to ptr addrspace(11)
%724 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %723, i32 0, i32 0
%725 = load ptr, ptr addrspace(11) %724, align 8
%726 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %723, i32 0, i32 1
%727 = load ptr addrspace(10), ptr addrspace(11) %726, align 8
%728 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %725, 0
%729 = insertvalue { ptr, ptr addrspace(10) } %728, ptr addrspace(10) %727, 1
%730 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%731 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%732 = load i64, ptr addrspace(11) %731, align 8
%733 = mul i64 %732, 1
%734 = load i64, ptr addrspace(11) %730, align 8
%735 = add i64 %734, %733
%736 = sub i64 %735, 1
%737 = mul i64 %736, 1
%738 = getelementptr inbounds i8, ptr %26, i32 0
store i64 %737, ptr %27, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %738, ptr align 8 %27, i64 8, i1 false)
%739 = getelementptr inbounds i8, ptr %26, i32 8
store { ptr, ptr addrspace(10) } %729, ptr %28, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %739, ptr align 8 %28, i64 8, i1 false)
%740 = getelementptr inbounds i8, ptr %28, i32 8
%741 = load ptr addrspace(10), ptr %740, align 8
%742 = extractvalue { ptr, ptr addrspace(10) } %729, 0
%743 = getelementptr i8, ptr %742, i64 %737
%744 = sub i64 %695, 1
%745 = mul i64 8, %744
%746 = getelementptr i8, ptr %743, i64 %745
%747 = getelementptr inbounds i64, ptr %746, i64 0
%748 = load i64, ptr %747, align 1
br label %750
749: ; preds = %712
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %695) #1
call void @llvm.trap()
unreachable
750: ; preds = %721
%751 = load i64, ptr %687, align 8
%752 = xor i64 %751, %748
%753 = getelementptr inbounds i8, ptr %6, i32 40
br i1 false, label %760, label %754
754: ; preds = %750
%755 = sub i64 %353, %343
%756 = add i64 1, %755
%757 = icmp ult i64 5, %756
%758 = xor i1 %757, true
br i1 %758, label %775, label %759
759: ; preds = %754
br label %760
760: ; preds = %759, %750
%761 = add i64 %417, 6
br i1 true, label %787, label %762
762: ; preds = %760
%763 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%764 = getelementptr inbounds i8, ptr addrspace(11) %763, i32 8
%765 = load i64, ptr addrspace(11) %764, align 8
%766 = load i64, ptr addrspace(11) %763, align 8
%767 = sub i64 %765, %766
%768 = add i64 1, %767
%769 = mul i64 %768, 1
%770 = icmp ne i64 %769, -9223372036854775808
%771 = or i1 true, %770
%772 = and i1 true, %771
%773 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %772, label %4222, label %4220
774: ; preds = %4222
br label %778
775: ; preds = %754
store ptr addrspace(10) %419, ptr %252, align 8
%776 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %776, ptr readonly captures(none) %252, i64 signext 6) #1
call void @llvm.trap()
unreachable
777: ; preds = %4222
br label %778
778: ; preds = %777, %774
%779 = phi i64 [ %4225, %774 ], [ 0, %777 ]
%780 = icmp slt i64 0, %779
%781 = xor i1 %780, true
%782 = select i1 %781, i64 0, i64 %779
%783 = sub i64 %761, 1
%784 = icmp ult i64 %783, %782
%785 = xor i1 %784, true
br i1 %785, label %815, label %786
786: ; preds = %778
br label %787
787: ; preds = %786, %760
%788 = load ptr addrspace(10), ptr %4, align 8
%789 = addrspacecast ptr addrspace(10) %788 to ptr addrspace(11)
%790 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %789, i32 0, i32 0
%791 = load ptr, ptr addrspace(11) %790, align 8
%792 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %789, i32 0, i32 1
%793 = load ptr addrspace(10), ptr addrspace(11) %792, align 8
%794 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %791, 0
%795 = insertvalue { ptr, ptr addrspace(10) } %794, ptr addrspace(10) %793, 1
%796 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%797 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%798 = load i64, ptr addrspace(11) %797, align 8
%799 = mul i64 %798, 1
%800 = load i64, ptr addrspace(11) %796, align 8
%801 = add i64 %800, %799
%802 = sub i64 %801, 1
%803 = mul i64 %802, 1
%804 = getelementptr inbounds i8, ptr %29, i32 0
store i64 %803, ptr %30, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %804, ptr align 8 %30, i64 8, i1 false)
%805 = getelementptr inbounds i8, ptr %29, i32 8
store { ptr, ptr addrspace(10) } %795, ptr %31, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %805, ptr align 8 %31, i64 8, i1 false)
%806 = getelementptr inbounds i8, ptr %31, i32 8
%807 = load ptr addrspace(10), ptr %806, align 8
%808 = extractvalue { ptr, ptr addrspace(10) } %795, 0
%809 = getelementptr i8, ptr %808, i64 %803
%810 = sub i64 %761, 1
%811 = mul i64 8, %810
%812 = getelementptr i8, ptr %809, i64 %811
%813 = getelementptr inbounds i64, ptr %812, i64 0
%814 = load i64, ptr %813, align 1
br label %816
815: ; preds = %778
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %761) #1
call void @llvm.trap()
unreachable
816: ; preds = %787
%817 = load i64, ptr %753, align 8
%818 = xor i64 %817, %814
%819 = getelementptr inbounds i8, ptr %6, i32 48
br i1 false, label %826, label %820
820: ; preds = %816
%821 = sub i64 %353, %343
%822 = add i64 1, %821
%823 = icmp ult i64 6, %822
%824 = xor i1 %823, true
br i1 %824, label %841, label %825
825: ; preds = %820
br label %826
826: ; preds = %825, %816
%827 = add i64 %417, 7
br i1 true, label %853, label %828
828: ; preds = %826
%829 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%830 = getelementptr inbounds i8, ptr addrspace(11) %829, i32 8
%831 = load i64, ptr addrspace(11) %830, align 8
%832 = load i64, ptr addrspace(11) %829, align 8
%833 = sub i64 %831, %832
%834 = add i64 1, %833
%835 = mul i64 %834, 1
%836 = icmp ne i64 %835, -9223372036854775808
%837 = or i1 true, %836
%838 = and i1 true, %837
%839 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %838, label %4230, label %4228
840: ; preds = %4230
br label %844
841: ; preds = %820
store ptr addrspace(10) %419, ptr %251, align 8
%842 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %842, ptr readonly captures(none) %251, i64 signext 7) #1
call void @llvm.trap()
unreachable
843: ; preds = %4230
br label %844
844: ; preds = %843, %840
%845 = phi i64 [ %4233, %840 ], [ 0, %843 ]
%846 = icmp slt i64 0, %845
%847 = xor i1 %846, true
%848 = select i1 %847, i64 0, i64 %845
%849 = sub i64 %827, 1
%850 = icmp ult i64 %849, %848
%851 = xor i1 %850, true
br i1 %851, label %881, label %852
852: ; preds = %844
br label %853
853: ; preds = %852, %826
%854 = load ptr addrspace(10), ptr %4, align 8
%855 = addrspacecast ptr addrspace(10) %854 to ptr addrspace(11)
%856 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %855, i32 0, i32 0
%857 = load ptr, ptr addrspace(11) %856, align 8
%858 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %855, i32 0, i32 1
%859 = load ptr addrspace(10), ptr addrspace(11) %858, align 8
%860 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %857, 0
%861 = insertvalue { ptr, ptr addrspace(10) } %860, ptr addrspace(10) %859, 1
%862 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%863 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%864 = load i64, ptr addrspace(11) %863, align 8
%865 = mul i64 %864, 1
%866 = load i64, ptr addrspace(11) %862, align 8
%867 = add i64 %866, %865
%868 = sub i64 %867, 1
%869 = mul i64 %868, 1
%870 = getelementptr inbounds i8, ptr %32, i32 0
store i64 %869, ptr %33, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %870, ptr align 8 %33, i64 8, i1 false)
%871 = getelementptr inbounds i8, ptr %32, i32 8
store { ptr, ptr addrspace(10) } %861, ptr %34, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %871, ptr align 8 %34, i64 8, i1 false)
%872 = getelementptr inbounds i8, ptr %34, i32 8
%873 = load ptr addrspace(10), ptr %872, align 8
%874 = extractvalue { ptr, ptr addrspace(10) } %861, 0
%875 = getelementptr i8, ptr %874, i64 %869
%876 = sub i64 %827, 1
%877 = mul i64 8, %876
%878 = getelementptr i8, ptr %875, i64 %877
%879 = getelementptr inbounds i64, ptr %878, i64 0
%880 = load i64, ptr %879, align 1
br label %882
881: ; preds = %844
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %827) #1
call void @llvm.trap()
unreachable
882: ; preds = %853
%883 = load i64, ptr %819, align 8
%884 = xor i64 %883, %880
%885 = getelementptr inbounds i8, ptr %6, i32 56
br i1 false, label %892, label %886
886: ; preds = %882
%887 = sub i64 %353, %343
%888 = add i64 1, %887
%889 = icmp ult i64 7, %888
%890 = xor i1 %889, true
br i1 %890, label %907, label %891
891: ; preds = %886
br label %892
892: ; preds = %891, %882
%893 = add i64 %417, 8
br i1 true, label %919, label %894
894: ; preds = %892
%895 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%896 = getelementptr inbounds i8, ptr addrspace(11) %895, i32 8
%897 = load i64, ptr addrspace(11) %896, align 8
%898 = load i64, ptr addrspace(11) %895, align 8
%899 = sub i64 %897, %898
%900 = add i64 1, %899
%901 = mul i64 %900, 1
%902 = icmp ne i64 %901, -9223372036854775808
%903 = or i1 true, %902
%904 = and i1 true, %903
%905 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %904, label %4238, label %4236
906: ; preds = %4238
br label %910
907: ; preds = %886
store ptr addrspace(10) %419, ptr %250, align 8
%908 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %908, ptr readonly captures(none) %250, i64 signext 8) #1
call void @llvm.trap()
unreachable
909: ; preds = %4238
br label %910
910: ; preds = %909, %906
%911 = phi i64 [ %4241, %906 ], [ 0, %909 ]
%912 = icmp slt i64 0, %911
%913 = xor i1 %912, true
%914 = select i1 %913, i64 0, i64 %911
%915 = sub i64 %893, 1
%916 = icmp ult i64 %915, %914
%917 = xor i1 %916, true
br i1 %917, label %947, label %918
918: ; preds = %910
br label %919
919: ; preds = %918, %892
%920 = load ptr addrspace(10), ptr %4, align 8
%921 = addrspacecast ptr addrspace(10) %920 to ptr addrspace(11)
%922 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %921, i32 0, i32 0
%923 = load ptr, ptr addrspace(11) %922, align 8
%924 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %921, i32 0, i32 1
%925 = load ptr addrspace(10), ptr addrspace(11) %924, align 8
%926 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %923, 0
%927 = insertvalue { ptr, ptr addrspace(10) } %926, ptr addrspace(10) %925, 1
%928 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%929 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%930 = load i64, ptr addrspace(11) %929, align 8
%931 = mul i64 %930, 1
%932 = load i64, ptr addrspace(11) %928, align 8
%933 = add i64 %932, %931
%934 = sub i64 %933, 1
%935 = mul i64 %934, 1
%936 = getelementptr inbounds i8, ptr %35, i32 0
store i64 %935, ptr %36, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %936, ptr align 8 %36, i64 8, i1 false)
%937 = getelementptr inbounds i8, ptr %35, i32 8
store { ptr, ptr addrspace(10) } %927, ptr %37, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %937, ptr align 8 %37, i64 8, i1 false)
%938 = getelementptr inbounds i8, ptr %37, i32 8
%939 = load ptr addrspace(10), ptr %938, align 8
%940 = extractvalue { ptr, ptr addrspace(10) } %927, 0
%941 = getelementptr i8, ptr %940, i64 %935
%942 = sub i64 %893, 1
%943 = mul i64 8, %942
%944 = getelementptr i8, ptr %941, i64 %943
%945 = getelementptr inbounds i64, ptr %944, i64 0
%946 = load i64, ptr %945, align 1
br label %948
947: ; preds = %910
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %893) #1
call void @llvm.trap()
unreachable
948: ; preds = %919
%949 = load i64, ptr %885, align 8
%950 = xor i64 %949, %946
%951 = getelementptr inbounds i8, ptr %6, i32 64
br i1 false, label %958, label %952
952: ; preds = %948
%953 = sub i64 %353, %343
%954 = add i64 1, %953
%955 = icmp ult i64 8, %954
%956 = xor i1 %955, true
br i1 %956, label %973, label %957
957: ; preds = %952
br label %958
958: ; preds = %957, %948
%959 = add i64 %417, 9
br i1 true, label %985, label %960
960: ; preds = %958
%961 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%962 = getelementptr inbounds i8, ptr addrspace(11) %961, i32 8
%963 = load i64, ptr addrspace(11) %962, align 8
%964 = load i64, ptr addrspace(11) %961, align 8
%965 = sub i64 %963, %964
%966 = add i64 1, %965
%967 = mul i64 %966, 1
%968 = icmp ne i64 %967, -9223372036854775808
%969 = or i1 true, %968
%970 = and i1 true, %969
%971 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %970, label %4246, label %4244
972: ; preds = %4246
br label %976
973: ; preds = %952
store ptr addrspace(10) %419, ptr %249, align 8
%974 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %974, ptr readonly captures(none) %249, i64 signext 9) #1
call void @llvm.trap()
unreachable
975: ; preds = %4246
br label %976
976: ; preds = %975, %972
%977 = phi i64 [ %4249, %972 ], [ 0, %975 ]
%978 = icmp slt i64 0, %977
%979 = xor i1 %978, true
%980 = select i1 %979, i64 0, i64 %977
%981 = sub i64 %959, 1
%982 = icmp ult i64 %981, %980
%983 = xor i1 %982, true
br i1 %983, label %1013, label %984
984: ; preds = %976
br label %985
985: ; preds = %984, %958
%986 = load ptr addrspace(10), ptr %4, align 8
%987 = addrspacecast ptr addrspace(10) %986 to ptr addrspace(11)
%988 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %987, i32 0, i32 0
%989 = load ptr, ptr addrspace(11) %988, align 8
%990 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %987, i32 0, i32 1
%991 = load ptr addrspace(10), ptr addrspace(11) %990, align 8
%992 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %989, 0
%993 = insertvalue { ptr, ptr addrspace(10) } %992, ptr addrspace(10) %991, 1
%994 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%995 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%996 = load i64, ptr addrspace(11) %995, align 8
%997 = mul i64 %996, 1
%998 = load i64, ptr addrspace(11) %994, align 8
%999 = add i64 %998, %997
%1000 = sub i64 %999, 1
%1001 = mul i64 %1000, 1
%1002 = getelementptr inbounds i8, ptr %38, i32 0
store i64 %1001, ptr %39, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1002, ptr align 8 %39, i64 8, i1 false)
%1003 = getelementptr inbounds i8, ptr %38, i32 8
store { ptr, ptr addrspace(10) } %993, ptr %40, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1003, ptr align 8 %40, i64 8, i1 false)
%1004 = getelementptr inbounds i8, ptr %40, i32 8
%1005 = load ptr addrspace(10), ptr %1004, align 8
%1006 = extractvalue { ptr, ptr addrspace(10) } %993, 0
%1007 = getelementptr i8, ptr %1006, i64 %1001
%1008 = sub i64 %959, 1
%1009 = mul i64 8, %1008
%1010 = getelementptr i8, ptr %1007, i64 %1009
%1011 = getelementptr inbounds i64, ptr %1010, i64 0
%1012 = load i64, ptr %1011, align 1
br label %1014
1013: ; preds = %976
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %959) #1
call void @llvm.trap()
unreachable
1014: ; preds = %985
%1015 = load i64, ptr %951, align 8
%1016 = xor i64 %1015, %1012
%1017 = getelementptr inbounds i8, ptr %6, i32 72
br i1 false, label %1024, label %1018
1018: ; preds = %1014
%1019 = sub i64 %353, %343
%1020 = add i64 1, %1019
%1021 = icmp ult i64 9, %1020
%1022 = xor i1 %1021, true
br i1 %1022, label %1039, label %1023
1023: ; preds = %1018
br label %1024
1024: ; preds = %1023, %1014
%1025 = add i64 %417, 10
br i1 true, label %1051, label %1026
1026: ; preds = %1024
%1027 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1028 = getelementptr inbounds i8, ptr addrspace(11) %1027, i32 8
%1029 = load i64, ptr addrspace(11) %1028, align 8
%1030 = load i64, ptr addrspace(11) %1027, align 8
%1031 = sub i64 %1029, %1030
%1032 = add i64 1, %1031
%1033 = mul i64 %1032, 1
%1034 = icmp ne i64 %1033, -9223372036854775808
%1035 = or i1 true, %1034
%1036 = and i1 true, %1035
%1037 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1036, label %4254, label %4252
1038: ; preds = %4254
br label %1042
1039: ; preds = %1018
store ptr addrspace(10) %419, ptr %248, align 8
%1040 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1040, ptr readonly captures(none) %248, i64 signext 10) #1
call void @llvm.trap()
unreachable
1041: ; preds = %4254
br label %1042
1042: ; preds = %1041, %1038
%1043 = phi i64 [ %4257, %1038 ], [ 0, %1041 ]
%1044 = icmp slt i64 0, %1043
%1045 = xor i1 %1044, true
%1046 = select i1 %1045, i64 0, i64 %1043
%1047 = sub i64 %1025, 1
%1048 = icmp ult i64 %1047, %1046
%1049 = xor i1 %1048, true
br i1 %1049, label %1079, label %1050
1050: ; preds = %1042
br label %1051
1051: ; preds = %1050, %1024
%1052 = load ptr addrspace(10), ptr %4, align 8
%1053 = addrspacecast ptr addrspace(10) %1052 to ptr addrspace(11)
%1054 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1053, i32 0, i32 0
%1055 = load ptr, ptr addrspace(11) %1054, align 8
%1056 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1053, i32 0, i32 1
%1057 = load ptr addrspace(10), ptr addrspace(11) %1056, align 8
%1058 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1055, 0
%1059 = insertvalue { ptr, ptr addrspace(10) } %1058, ptr addrspace(10) %1057, 1
%1060 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1061 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1062 = load i64, ptr addrspace(11) %1061, align 8
%1063 = mul i64 %1062, 1
%1064 = load i64, ptr addrspace(11) %1060, align 8
%1065 = add i64 %1064, %1063
%1066 = sub i64 %1065, 1
%1067 = mul i64 %1066, 1
%1068 = getelementptr inbounds i8, ptr %41, i32 0
store i64 %1067, ptr %42, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1068, ptr align 8 %42, i64 8, i1 false)
%1069 = getelementptr inbounds i8, ptr %41, i32 8
store { ptr, ptr addrspace(10) } %1059, ptr %43, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1069, ptr align 8 %43, i64 8, i1 false)
%1070 = getelementptr inbounds i8, ptr %43, i32 8
%1071 = load ptr addrspace(10), ptr %1070, align 8
%1072 = extractvalue { ptr, ptr addrspace(10) } %1059, 0
%1073 = getelementptr i8, ptr %1072, i64 %1067
%1074 = sub i64 %1025, 1
%1075 = mul i64 8, %1074
%1076 = getelementptr i8, ptr %1073, i64 %1075
%1077 = getelementptr inbounds i64, ptr %1076, i64 0
%1078 = load i64, ptr %1077, align 1
br label %1080
1079: ; preds = %1042
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1025) #1
call void @llvm.trap()
unreachable
1080: ; preds = %1051
%1081 = load i64, ptr %1017, align 8
%1082 = xor i64 %1081, %1078
%1083 = getelementptr inbounds i8, ptr %6, i32 80
br i1 false, label %1090, label %1084
1084: ; preds = %1080
%1085 = sub i64 %353, %343
%1086 = add i64 1, %1085
%1087 = icmp ult i64 10, %1086
%1088 = xor i1 %1087, true
br i1 %1088, label %1105, label %1089
1089: ; preds = %1084
br label %1090
1090: ; preds = %1089, %1080
%1091 = add i64 %417, 11
br i1 true, label %1117, label %1092
1092: ; preds = %1090
%1093 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1094 = getelementptr inbounds i8, ptr addrspace(11) %1093, i32 8
%1095 = load i64, ptr addrspace(11) %1094, align 8
%1096 = load i64, ptr addrspace(11) %1093, align 8
%1097 = sub i64 %1095, %1096
%1098 = add i64 1, %1097
%1099 = mul i64 %1098, 1
%1100 = icmp ne i64 %1099, -9223372036854775808
%1101 = or i1 true, %1100
%1102 = and i1 true, %1101
%1103 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1102, label %4262, label %4260
1104: ; preds = %4262
br label %1108
1105: ; preds = %1084
store ptr addrspace(10) %419, ptr %247, align 8
%1106 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1106, ptr readonly captures(none) %247, i64 signext 11) #1
call void @llvm.trap()
unreachable
1107: ; preds = %4262
br label %1108
1108: ; preds = %1107, %1104
%1109 = phi i64 [ %4265, %1104 ], [ 0, %1107 ]
%1110 = icmp slt i64 0, %1109
%1111 = xor i1 %1110, true
%1112 = select i1 %1111, i64 0, i64 %1109
%1113 = sub i64 %1091, 1
%1114 = icmp ult i64 %1113, %1112
%1115 = xor i1 %1114, true
br i1 %1115, label %1145, label %1116
1116: ; preds = %1108
br label %1117
1117: ; preds = %1116, %1090
%1118 = load ptr addrspace(10), ptr %4, align 8
%1119 = addrspacecast ptr addrspace(10) %1118 to ptr addrspace(11)
%1120 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1119, i32 0, i32 0
%1121 = load ptr, ptr addrspace(11) %1120, align 8
%1122 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1119, i32 0, i32 1
%1123 = load ptr addrspace(10), ptr addrspace(11) %1122, align 8
%1124 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1121, 0
%1125 = insertvalue { ptr, ptr addrspace(10) } %1124, ptr addrspace(10) %1123, 1
%1126 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1127 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1128 = load i64, ptr addrspace(11) %1127, align 8
%1129 = mul i64 %1128, 1
%1130 = load i64, ptr addrspace(11) %1126, align 8
%1131 = add i64 %1130, %1129
%1132 = sub i64 %1131, 1
%1133 = mul i64 %1132, 1
%1134 = getelementptr inbounds i8, ptr %44, i32 0
store i64 %1133, ptr %45, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1134, ptr align 8 %45, i64 8, i1 false)
%1135 = getelementptr inbounds i8, ptr %44, i32 8
store { ptr, ptr addrspace(10) } %1125, ptr %46, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1135, ptr align 8 %46, i64 8, i1 false)
%1136 = getelementptr inbounds i8, ptr %46, i32 8
%1137 = load ptr addrspace(10), ptr %1136, align 8
%1138 = extractvalue { ptr, ptr addrspace(10) } %1125, 0
%1139 = getelementptr i8, ptr %1138, i64 %1133
%1140 = sub i64 %1091, 1
%1141 = mul i64 8, %1140
%1142 = getelementptr i8, ptr %1139, i64 %1141
%1143 = getelementptr inbounds i64, ptr %1142, i64 0
%1144 = load i64, ptr %1143, align 1
br label %1146
1145: ; preds = %1108
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1091) #1
call void @llvm.trap()
unreachable
1146: ; preds = %1117
%1147 = load i64, ptr %1083, align 8
%1148 = xor i64 %1147, %1144
%1149 = getelementptr inbounds i8, ptr %6, i32 88
br i1 false, label %1156, label %1150
1150: ; preds = %1146
%1151 = sub i64 %353, %343
%1152 = add i64 1, %1151
%1153 = icmp ult i64 11, %1152
%1154 = xor i1 %1153, true
br i1 %1154, label %1171, label %1155
1155: ; preds = %1150
br label %1156
1156: ; preds = %1155, %1146
%1157 = add i64 %417, 12
br i1 true, label %1183, label %1158
1158: ; preds = %1156
%1159 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1160 = getelementptr inbounds i8, ptr addrspace(11) %1159, i32 8
%1161 = load i64, ptr addrspace(11) %1160, align 8
%1162 = load i64, ptr addrspace(11) %1159, align 8
%1163 = sub i64 %1161, %1162
%1164 = add i64 1, %1163
%1165 = mul i64 %1164, 1
%1166 = icmp ne i64 %1165, -9223372036854775808
%1167 = or i1 true, %1166
%1168 = and i1 true, %1167
%1169 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1168, label %4270, label %4268
1170: ; preds = %4270
br label %1174
1171: ; preds = %1150
store ptr addrspace(10) %419, ptr %246, align 8
%1172 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1172, ptr readonly captures(none) %246, i64 signext 12) #1
call void @llvm.trap()
unreachable
1173: ; preds = %4270
br label %1174
1174: ; preds = %1173, %1170
%1175 = phi i64 [ %4273, %1170 ], [ 0, %1173 ]
%1176 = icmp slt i64 0, %1175
%1177 = xor i1 %1176, true
%1178 = select i1 %1177, i64 0, i64 %1175
%1179 = sub i64 %1157, 1
%1180 = icmp ult i64 %1179, %1178
%1181 = xor i1 %1180, true
br i1 %1181, label %1211, label %1182
1182: ; preds = %1174
br label %1183
1183: ; preds = %1182, %1156
%1184 = load ptr addrspace(10), ptr %4, align 8
%1185 = addrspacecast ptr addrspace(10) %1184 to ptr addrspace(11)
%1186 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1185, i32 0, i32 0
%1187 = load ptr, ptr addrspace(11) %1186, align 8
%1188 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1185, i32 0, i32 1
%1189 = load ptr addrspace(10), ptr addrspace(11) %1188, align 8
%1190 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1187, 0
%1191 = insertvalue { ptr, ptr addrspace(10) } %1190, ptr addrspace(10) %1189, 1
%1192 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1193 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1194 = load i64, ptr addrspace(11) %1193, align 8
%1195 = mul i64 %1194, 1
%1196 = load i64, ptr addrspace(11) %1192, align 8
%1197 = add i64 %1196, %1195
%1198 = sub i64 %1197, 1
%1199 = mul i64 %1198, 1
%1200 = getelementptr inbounds i8, ptr %47, i32 0
store i64 %1199, ptr %48, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1200, ptr align 8 %48, i64 8, i1 false)
%1201 = getelementptr inbounds i8, ptr %47, i32 8
store { ptr, ptr addrspace(10) } %1191, ptr %49, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1201, ptr align 8 %49, i64 8, i1 false)
%1202 = getelementptr inbounds i8, ptr %49, i32 8
%1203 = load ptr addrspace(10), ptr %1202, align 8
%1204 = extractvalue { ptr, ptr addrspace(10) } %1191, 0
%1205 = getelementptr i8, ptr %1204, i64 %1199
%1206 = sub i64 %1157, 1
%1207 = mul i64 8, %1206
%1208 = getelementptr i8, ptr %1205, i64 %1207
%1209 = getelementptr inbounds i64, ptr %1208, i64 0
%1210 = load i64, ptr %1209, align 1
br label %1212
1211: ; preds = %1174
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1157) #1
call void @llvm.trap()
unreachable
1212: ; preds = %1183
%1213 = load i64, ptr %1149, align 8
%1214 = xor i64 %1213, %1210
%1215 = getelementptr inbounds i8, ptr %6, i32 96
br i1 false, label %1222, label %1216
1216: ; preds = %1212
%1217 = sub i64 %353, %343
%1218 = add i64 1, %1217
%1219 = icmp ult i64 12, %1218
%1220 = xor i1 %1219, true
br i1 %1220, label %1237, label %1221
1221: ; preds = %1216
br label %1222
1222: ; preds = %1221, %1212
%1223 = add i64 %417, 13
br i1 true, label %1249, label %1224
1224: ; preds = %1222
%1225 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1226 = getelementptr inbounds i8, ptr addrspace(11) %1225, i32 8
%1227 = load i64, ptr addrspace(11) %1226, align 8
%1228 = load i64, ptr addrspace(11) %1225, align 8
%1229 = sub i64 %1227, %1228
%1230 = add i64 1, %1229
%1231 = mul i64 %1230, 1
%1232 = icmp ne i64 %1231, -9223372036854775808
%1233 = or i1 true, %1232
%1234 = and i1 true, %1233
%1235 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1234, label %4278, label %4276
1236: ; preds = %4278
br label %1240
1237: ; preds = %1216
store ptr addrspace(10) %419, ptr %245, align 8
%1238 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1238, ptr readonly captures(none) %245, i64 signext 13) #1
call void @llvm.trap()
unreachable
1239: ; preds = %4278
br label %1240
1240: ; preds = %1239, %1236
%1241 = phi i64 [ %4281, %1236 ], [ 0, %1239 ]
%1242 = icmp slt i64 0, %1241
%1243 = xor i1 %1242, true
%1244 = select i1 %1243, i64 0, i64 %1241
%1245 = sub i64 %1223, 1
%1246 = icmp ult i64 %1245, %1244
%1247 = xor i1 %1246, true
br i1 %1247, label %1277, label %1248
1248: ; preds = %1240
br label %1249
1249: ; preds = %1248, %1222
%1250 = load ptr addrspace(10), ptr %4, align 8
%1251 = addrspacecast ptr addrspace(10) %1250 to ptr addrspace(11)
%1252 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1251, i32 0, i32 0
%1253 = load ptr, ptr addrspace(11) %1252, align 8
%1254 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1251, i32 0, i32 1
%1255 = load ptr addrspace(10), ptr addrspace(11) %1254, align 8
%1256 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1253, 0
%1257 = insertvalue { ptr, ptr addrspace(10) } %1256, ptr addrspace(10) %1255, 1
%1258 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1259 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1260 = load i64, ptr addrspace(11) %1259, align 8
%1261 = mul i64 %1260, 1
%1262 = load i64, ptr addrspace(11) %1258, align 8
%1263 = add i64 %1262, %1261
%1264 = sub i64 %1263, 1
%1265 = mul i64 %1264, 1
%1266 = getelementptr inbounds i8, ptr %50, i32 0
store i64 %1265, ptr %51, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1266, ptr align 8 %51, i64 8, i1 false)
%1267 = getelementptr inbounds i8, ptr %50, i32 8
store { ptr, ptr addrspace(10) } %1257, ptr %52, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1267, ptr align 8 %52, i64 8, i1 false)
%1268 = getelementptr inbounds i8, ptr %52, i32 8
%1269 = load ptr addrspace(10), ptr %1268, align 8
%1270 = extractvalue { ptr, ptr addrspace(10) } %1257, 0
%1271 = getelementptr i8, ptr %1270, i64 %1265
%1272 = sub i64 %1223, 1
%1273 = mul i64 8, %1272
%1274 = getelementptr i8, ptr %1271, i64 %1273
%1275 = getelementptr inbounds i64, ptr %1274, i64 0
%1276 = load i64, ptr %1275, align 1
br label %1278
1277: ; preds = %1240
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1223) #1
call void @llvm.trap()
unreachable
1278: ; preds = %1249
%1279 = load i64, ptr %1215, align 8
%1280 = xor i64 %1279, %1276
%1281 = getelementptr inbounds i8, ptr %6, i32 104
br i1 false, label %1288, label %1282
1282: ; preds = %1278
%1283 = sub i64 %353, %343
%1284 = add i64 1, %1283
%1285 = icmp ult i64 13, %1284
%1286 = xor i1 %1285, true
br i1 %1286, label %1303, label %1287
1287: ; preds = %1282
br label %1288
1288: ; preds = %1287, %1278
%1289 = add i64 %417, 14
br i1 true, label %1315, label %1290
1290: ; preds = %1288
%1291 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1292 = getelementptr inbounds i8, ptr addrspace(11) %1291, i32 8
%1293 = load i64, ptr addrspace(11) %1292, align 8
%1294 = load i64, ptr addrspace(11) %1291, align 8
%1295 = sub i64 %1293, %1294
%1296 = add i64 1, %1295
%1297 = mul i64 %1296, 1
%1298 = icmp ne i64 %1297, -9223372036854775808
%1299 = or i1 true, %1298
%1300 = and i1 true, %1299
%1301 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1300, label %4286, label %4284
1302: ; preds = %4286
br label %1306
1303: ; preds = %1282
store ptr addrspace(10) %419, ptr %244, align 8
%1304 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1304, ptr readonly captures(none) %244, i64 signext 14) #1
call void @llvm.trap()
unreachable
1305: ; preds = %4286
br label %1306
1306: ; preds = %1305, %1302
%1307 = phi i64 [ %4289, %1302 ], [ 0, %1305 ]
%1308 = icmp slt i64 0, %1307
%1309 = xor i1 %1308, true
%1310 = select i1 %1309, i64 0, i64 %1307
%1311 = sub i64 %1289, 1
%1312 = icmp ult i64 %1311, %1310
%1313 = xor i1 %1312, true
br i1 %1313, label %1343, label %1314
1314: ; preds = %1306
br label %1315
1315: ; preds = %1314, %1288
%1316 = load ptr addrspace(10), ptr %4, align 8
%1317 = addrspacecast ptr addrspace(10) %1316 to ptr addrspace(11)
%1318 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1317, i32 0, i32 0
%1319 = load ptr, ptr addrspace(11) %1318, align 8
%1320 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1317, i32 0, i32 1
%1321 = load ptr addrspace(10), ptr addrspace(11) %1320, align 8
%1322 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1319, 0
%1323 = insertvalue { ptr, ptr addrspace(10) } %1322, ptr addrspace(10) %1321, 1
%1324 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1325 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1326 = load i64, ptr addrspace(11) %1325, align 8
%1327 = mul i64 %1326, 1
%1328 = load i64, ptr addrspace(11) %1324, align 8
%1329 = add i64 %1328, %1327
%1330 = sub i64 %1329, 1
%1331 = mul i64 %1330, 1
%1332 = getelementptr inbounds i8, ptr %53, i32 0
store i64 %1331, ptr %54, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1332, ptr align 8 %54, i64 8, i1 false)
%1333 = getelementptr inbounds i8, ptr %53, i32 8
store { ptr, ptr addrspace(10) } %1323, ptr %55, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1333, ptr align 8 %55, i64 8, i1 false)
%1334 = getelementptr inbounds i8, ptr %55, i32 8
%1335 = load ptr addrspace(10), ptr %1334, align 8
%1336 = extractvalue { ptr, ptr addrspace(10) } %1323, 0
%1337 = getelementptr i8, ptr %1336, i64 %1331
%1338 = sub i64 %1289, 1
%1339 = mul i64 8, %1338
%1340 = getelementptr i8, ptr %1337, i64 %1339
%1341 = getelementptr inbounds i64, ptr %1340, i64 0
%1342 = load i64, ptr %1341, align 1
br label %1344
1343: ; preds = %1306
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1289) #1
call void @llvm.trap()
unreachable
1344: ; preds = %1315
%1345 = load i64, ptr %1281, align 8
%1346 = xor i64 %1345, %1342
%1347 = getelementptr inbounds i8, ptr %6, i32 112
br i1 false, label %1354, label %1348
1348: ; preds = %1344
%1349 = sub i64 %353, %343
%1350 = add i64 1, %1349
%1351 = icmp ult i64 14, %1350
%1352 = xor i1 %1351, true
br i1 %1352, label %1369, label %1353
1353: ; preds = %1348
br label %1354
1354: ; preds = %1353, %1344
%1355 = add i64 %417, 15
br i1 true, label %1381, label %1356
1356: ; preds = %1354
%1357 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1358 = getelementptr inbounds i8, ptr addrspace(11) %1357, i32 8
%1359 = load i64, ptr addrspace(11) %1358, align 8
%1360 = load i64, ptr addrspace(11) %1357, align 8
%1361 = sub i64 %1359, %1360
%1362 = add i64 1, %1361
%1363 = mul i64 %1362, 1
%1364 = icmp ne i64 %1363, -9223372036854775808
%1365 = or i1 true, %1364
%1366 = and i1 true, %1365
%1367 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1366, label %4294, label %4292
1368: ; preds = %4294
br label %1372
1369: ; preds = %1348
store ptr addrspace(10) %419, ptr %243, align 8
%1370 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1370, ptr readonly captures(none) %243, i64 signext 15) #1
call void @llvm.trap()
unreachable
1371: ; preds = %4294
br label %1372
1372: ; preds = %1371, %1368
%1373 = phi i64 [ %4297, %1368 ], [ 0, %1371 ]
%1374 = icmp slt i64 0, %1373
%1375 = xor i1 %1374, true
%1376 = select i1 %1375, i64 0, i64 %1373
%1377 = sub i64 %1355, 1
%1378 = icmp ult i64 %1377, %1376
%1379 = xor i1 %1378, true
br i1 %1379, label %1409, label %1380
1380: ; preds = %1372
br label %1381
1381: ; preds = %1380, %1354
%1382 = load ptr addrspace(10), ptr %4, align 8
%1383 = addrspacecast ptr addrspace(10) %1382 to ptr addrspace(11)
%1384 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1383, i32 0, i32 0
%1385 = load ptr, ptr addrspace(11) %1384, align 8
%1386 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1383, i32 0, i32 1
%1387 = load ptr addrspace(10), ptr addrspace(11) %1386, align 8
%1388 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1385, 0
%1389 = insertvalue { ptr, ptr addrspace(10) } %1388, ptr addrspace(10) %1387, 1
%1390 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1391 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1392 = load i64, ptr addrspace(11) %1391, align 8
%1393 = mul i64 %1392, 1
%1394 = load i64, ptr addrspace(11) %1390, align 8
%1395 = add i64 %1394, %1393
%1396 = sub i64 %1395, 1
%1397 = mul i64 %1396, 1
%1398 = getelementptr inbounds i8, ptr %56, i32 0
store i64 %1397, ptr %57, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1398, ptr align 8 %57, i64 8, i1 false)
%1399 = getelementptr inbounds i8, ptr %56, i32 8
store { ptr, ptr addrspace(10) } %1389, ptr %58, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1399, ptr align 8 %58, i64 8, i1 false)
%1400 = getelementptr inbounds i8, ptr %58, i32 8
%1401 = load ptr addrspace(10), ptr %1400, align 8
%1402 = extractvalue { ptr, ptr addrspace(10) } %1389, 0
%1403 = getelementptr i8, ptr %1402, i64 %1397
%1404 = sub i64 %1355, 1
%1405 = mul i64 8, %1404
%1406 = getelementptr i8, ptr %1403, i64 %1405
%1407 = getelementptr inbounds i64, ptr %1406, i64 0
%1408 = load i64, ptr %1407, align 1
br label %1410
1409: ; preds = %1372
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1355) #1
call void @llvm.trap()
unreachable
1410: ; preds = %1381
%1411 = load i64, ptr %1347, align 8
%1412 = xor i64 %1411, %1408
%1413 = getelementptr inbounds i8, ptr %6, i32 120
br i1 false, label %1420, label %1414
1414: ; preds = %1410
%1415 = sub i64 %353, %343
%1416 = add i64 1, %1415
%1417 = icmp ult i64 15, %1416
%1418 = xor i1 %1417, true
br i1 %1418, label %1435, label %1419
1419: ; preds = %1414
br label %1420
1420: ; preds = %1419, %1410
%1421 = add i64 %417, 16
br i1 true, label %1447, label %1422
1422: ; preds = %1420
%1423 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1424 = getelementptr inbounds i8, ptr addrspace(11) %1423, i32 8
%1425 = load i64, ptr addrspace(11) %1424, align 8
%1426 = load i64, ptr addrspace(11) %1423, align 8
%1427 = sub i64 %1425, %1426
%1428 = add i64 1, %1427
%1429 = mul i64 %1428, 1
%1430 = icmp ne i64 %1429, -9223372036854775808
%1431 = or i1 true, %1430
%1432 = and i1 true, %1431
%1433 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1432, label %4302, label %4300
1434: ; preds = %4302
br label %1438
1435: ; preds = %1414
store ptr addrspace(10) %419, ptr %242, align 8
%1436 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1436, ptr readonly captures(none) %242, i64 signext 16) #1
call void @llvm.trap()
unreachable
1437: ; preds = %4302
br label %1438
1438: ; preds = %1437, %1434
%1439 = phi i64 [ %4305, %1434 ], [ 0, %1437 ]
%1440 = icmp slt i64 0, %1439
%1441 = xor i1 %1440, true
%1442 = select i1 %1441, i64 0, i64 %1439
%1443 = sub i64 %1421, 1
%1444 = icmp ult i64 %1443, %1442
%1445 = xor i1 %1444, true
br i1 %1445, label %1475, label %1446
1446: ; preds = %1438
br label %1447
1447: ; preds = %1446, %1420
%1448 = load ptr addrspace(10), ptr %4, align 8
%1449 = addrspacecast ptr addrspace(10) %1448 to ptr addrspace(11)
%1450 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1449, i32 0, i32 0
%1451 = load ptr, ptr addrspace(11) %1450, align 8
%1452 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1449, i32 0, i32 1
%1453 = load ptr addrspace(10), ptr addrspace(11) %1452, align 8
%1454 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1451, 0
%1455 = insertvalue { ptr, ptr addrspace(10) } %1454, ptr addrspace(10) %1453, 1
%1456 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1457 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1458 = load i64, ptr addrspace(11) %1457, align 8
%1459 = mul i64 %1458, 1
%1460 = load i64, ptr addrspace(11) %1456, align 8
%1461 = add i64 %1460, %1459
%1462 = sub i64 %1461, 1
%1463 = mul i64 %1462, 1
%1464 = getelementptr inbounds i8, ptr %59, i32 0
store i64 %1463, ptr %60, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1464, ptr align 8 %60, i64 8, i1 false)
%1465 = getelementptr inbounds i8, ptr %59, i32 8
store { ptr, ptr addrspace(10) } %1455, ptr %61, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1465, ptr align 8 %61, i64 8, i1 false)
%1466 = getelementptr inbounds i8, ptr %61, i32 8
%1467 = load ptr addrspace(10), ptr %1466, align 8
%1468 = extractvalue { ptr, ptr addrspace(10) } %1455, 0
%1469 = getelementptr i8, ptr %1468, i64 %1463
%1470 = sub i64 %1421, 1
%1471 = mul i64 8, %1470
%1472 = getelementptr i8, ptr %1469, i64 %1471
%1473 = getelementptr inbounds i64, ptr %1472, i64 0
%1474 = load i64, ptr %1473, align 1
br label %1476
1475: ; preds = %1438
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1421) #1
call void @llvm.trap()
unreachable
1476: ; preds = %1447
%1477 = load i64, ptr %1413, align 8
%1478 = xor i64 %1477, %1474
%1479 = getelementptr inbounds i8, ptr %6, i32 128
br i1 false, label %1486, label %1480
1480: ; preds = %1476
%1481 = sub i64 %353, %343
%1482 = add i64 1, %1481
%1483 = icmp ult i64 16, %1482
%1484 = xor i1 %1483, true
br i1 %1484, label %1501, label %1485
1485: ; preds = %1480
br label %1486
1486: ; preds = %1485, %1476
%1487 = add i64 %417, 17
br i1 true, label %1513, label %1488
1488: ; preds = %1486
%1489 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1490 = getelementptr inbounds i8, ptr addrspace(11) %1489, i32 8
%1491 = load i64, ptr addrspace(11) %1490, align 8
%1492 = load i64, ptr addrspace(11) %1489, align 8
%1493 = sub i64 %1491, %1492
%1494 = add i64 1, %1493
%1495 = mul i64 %1494, 1
%1496 = icmp ne i64 %1495, -9223372036854775808
%1497 = or i1 true, %1496
%1498 = and i1 true, %1497
%1499 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1498, label %4310, label %4308
1500: ; preds = %4310
br label %1504
1501: ; preds = %1480
store ptr addrspace(10) %419, ptr %241, align 8
%1502 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1502, ptr readonly captures(none) %241, i64 signext 17) #1
call void @llvm.trap()
unreachable
1503: ; preds = %4310
br label %1504
1504: ; preds = %1503, %1500
%1505 = phi i64 [ %4313, %1500 ], [ 0, %1503 ]
%1506 = icmp slt i64 0, %1505
%1507 = xor i1 %1506, true
%1508 = select i1 %1507, i64 0, i64 %1505
%1509 = sub i64 %1487, 1
%1510 = icmp ult i64 %1509, %1508
%1511 = xor i1 %1510, true
br i1 %1511, label %1541, label %1512
1512: ; preds = %1504
br label %1513
1513: ; preds = %1512, %1486
%1514 = load ptr addrspace(10), ptr %4, align 8
%1515 = addrspacecast ptr addrspace(10) %1514 to ptr addrspace(11)
%1516 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1515, i32 0, i32 0
%1517 = load ptr, ptr addrspace(11) %1516, align 8
%1518 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1515, i32 0, i32 1
%1519 = load ptr addrspace(10), ptr addrspace(11) %1518, align 8
%1520 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1517, 0
%1521 = insertvalue { ptr, ptr addrspace(10) } %1520, ptr addrspace(10) %1519, 1
%1522 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1523 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1524 = load i64, ptr addrspace(11) %1523, align 8
%1525 = mul i64 %1524, 1
%1526 = load i64, ptr addrspace(11) %1522, align 8
%1527 = add i64 %1526, %1525
%1528 = sub i64 %1527, 1
%1529 = mul i64 %1528, 1
%1530 = getelementptr inbounds i8, ptr %62, i32 0
store i64 %1529, ptr %63, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1530, ptr align 8 %63, i64 8, i1 false)
%1531 = getelementptr inbounds i8, ptr %62, i32 8
store { ptr, ptr addrspace(10) } %1521, ptr %64, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1531, ptr align 8 %64, i64 8, i1 false)
%1532 = getelementptr inbounds i8, ptr %64, i32 8
%1533 = load ptr addrspace(10), ptr %1532, align 8
%1534 = extractvalue { ptr, ptr addrspace(10) } %1521, 0
%1535 = getelementptr i8, ptr %1534, i64 %1529
%1536 = sub i64 %1487, 1
%1537 = mul i64 8, %1536
%1538 = getelementptr i8, ptr %1535, i64 %1537
%1539 = getelementptr inbounds i64, ptr %1538, i64 0
%1540 = load i64, ptr %1539, align 1
br label %1542
1541: ; preds = %1504
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1487) #1
call void @llvm.trap()
unreachable
1542: ; preds = %1513
%1543 = load i64, ptr %1479, align 8
%1544 = xor i64 %1543, %1540
%1545 = getelementptr inbounds i8, ptr %6, i32 136
br i1 false, label %1552, label %1546
1546: ; preds = %1542
%1547 = sub i64 %353, %343
%1548 = add i64 1, %1547
%1549 = icmp ult i64 17, %1548
%1550 = xor i1 %1549, true
br i1 %1550, label %1567, label %1551
1551: ; preds = %1546
br label %1552
1552: ; preds = %1551, %1542
%1553 = add i64 %417, 18
br i1 true, label %1579, label %1554
1554: ; preds = %1552
%1555 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1556 = getelementptr inbounds i8, ptr addrspace(11) %1555, i32 8
%1557 = load i64, ptr addrspace(11) %1556, align 8
%1558 = load i64, ptr addrspace(11) %1555, align 8
%1559 = sub i64 %1557, %1558
%1560 = add i64 1, %1559
%1561 = mul i64 %1560, 1
%1562 = icmp ne i64 %1561, -9223372036854775808
%1563 = or i1 true, %1562
%1564 = and i1 true, %1563
%1565 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1564, label %4318, label %4316
1566: ; preds = %4318
br label %1570
1567: ; preds = %1546
store ptr addrspace(10) %419, ptr %240, align 8
%1568 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1568, ptr readonly captures(none) %240, i64 signext 18) #1
call void @llvm.trap()
unreachable
1569: ; preds = %4318
br label %1570
1570: ; preds = %1569, %1566
%1571 = phi i64 [ %4321, %1566 ], [ 0, %1569 ]
%1572 = icmp slt i64 0, %1571
%1573 = xor i1 %1572, true
%1574 = select i1 %1573, i64 0, i64 %1571
%1575 = sub i64 %1553, 1
%1576 = icmp ult i64 %1575, %1574
%1577 = xor i1 %1576, true
br i1 %1577, label %1607, label %1578
1578: ; preds = %1570
br label %1579
1579: ; preds = %1578, %1552
%1580 = load ptr addrspace(10), ptr %4, align 8
%1581 = addrspacecast ptr addrspace(10) %1580 to ptr addrspace(11)
%1582 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1581, i32 0, i32 0
%1583 = load ptr, ptr addrspace(11) %1582, align 8
%1584 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1581, i32 0, i32 1
%1585 = load ptr addrspace(10), ptr addrspace(11) %1584, align 8
%1586 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1583, 0
%1587 = insertvalue { ptr, ptr addrspace(10) } %1586, ptr addrspace(10) %1585, 1
%1588 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1589 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1590 = load i64, ptr addrspace(11) %1589, align 8
%1591 = mul i64 %1590, 1
%1592 = load i64, ptr addrspace(11) %1588, align 8
%1593 = add i64 %1592, %1591
%1594 = sub i64 %1593, 1
%1595 = mul i64 %1594, 1
%1596 = getelementptr inbounds i8, ptr %65, i32 0
store i64 %1595, ptr %66, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1596, ptr align 8 %66, i64 8, i1 false)
%1597 = getelementptr inbounds i8, ptr %65, i32 8
store { ptr, ptr addrspace(10) } %1587, ptr %67, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1597, ptr align 8 %67, i64 8, i1 false)
%1598 = getelementptr inbounds i8, ptr %67, i32 8
%1599 = load ptr addrspace(10), ptr %1598, align 8
%1600 = extractvalue { ptr, ptr addrspace(10) } %1587, 0
%1601 = getelementptr i8, ptr %1600, i64 %1595
%1602 = sub i64 %1553, 1
%1603 = mul i64 8, %1602
%1604 = getelementptr i8, ptr %1601, i64 %1603
%1605 = getelementptr inbounds i64, ptr %1604, i64 0
%1606 = load i64, ptr %1605, align 1
br label %1608
1607: ; preds = %1570
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1553) #1
call void @llvm.trap()
unreachable
1608: ; preds = %1579
%1609 = load i64, ptr %1545, align 8
%1610 = xor i64 %1609, %1606
%1611 = getelementptr inbounds i8, ptr %6, i32 144
br i1 false, label %1618, label %1612
1612: ; preds = %1608
%1613 = sub i64 %353, %343
%1614 = add i64 1, %1613
%1615 = icmp ult i64 18, %1614
%1616 = xor i1 %1615, true
br i1 %1616, label %1633, label %1617
1617: ; preds = %1612
br label %1618
1618: ; preds = %1617, %1608
%1619 = add i64 %417, 19
br i1 true, label %1645, label %1620
1620: ; preds = %1618
%1621 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1622 = getelementptr inbounds i8, ptr addrspace(11) %1621, i32 8
%1623 = load i64, ptr addrspace(11) %1622, align 8
%1624 = load i64, ptr addrspace(11) %1621, align 8
%1625 = sub i64 %1623, %1624
%1626 = add i64 1, %1625
%1627 = mul i64 %1626, 1
%1628 = icmp ne i64 %1627, -9223372036854775808
%1629 = or i1 true, %1628
%1630 = and i1 true, %1629
%1631 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1630, label %4326, label %4324
1632: ; preds = %4326
br label %1636
1633: ; preds = %1612
store ptr addrspace(10) %419, ptr %239, align 8
%1634 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1634, ptr readonly captures(none) %239, i64 signext 19) #1
call void @llvm.trap()
unreachable
1635: ; preds = %4326
br label %1636
1636: ; preds = %1635, %1632
%1637 = phi i64 [ %4329, %1632 ], [ 0, %1635 ]
%1638 = icmp slt i64 0, %1637
%1639 = xor i1 %1638, true
%1640 = select i1 %1639, i64 0, i64 %1637
%1641 = sub i64 %1619, 1
%1642 = icmp ult i64 %1641, %1640
%1643 = xor i1 %1642, true
br i1 %1643, label %1673, label %1644
1644: ; preds = %1636
br label %1645
1645: ; preds = %1644, %1618
%1646 = load ptr addrspace(10), ptr %4, align 8
%1647 = addrspacecast ptr addrspace(10) %1646 to ptr addrspace(11)
%1648 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1647, i32 0, i32 0
%1649 = load ptr, ptr addrspace(11) %1648, align 8
%1650 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1647, i32 0, i32 1
%1651 = load ptr addrspace(10), ptr addrspace(11) %1650, align 8
%1652 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1649, 0
%1653 = insertvalue { ptr, ptr addrspace(10) } %1652, ptr addrspace(10) %1651, 1
%1654 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1655 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1656 = load i64, ptr addrspace(11) %1655, align 8
%1657 = mul i64 %1656, 1
%1658 = load i64, ptr addrspace(11) %1654, align 8
%1659 = add i64 %1658, %1657
%1660 = sub i64 %1659, 1
%1661 = mul i64 %1660, 1
%1662 = getelementptr inbounds i8, ptr %68, i32 0
store i64 %1661, ptr %69, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1662, ptr align 8 %69, i64 8, i1 false)
%1663 = getelementptr inbounds i8, ptr %68, i32 8
store { ptr, ptr addrspace(10) } %1653, ptr %70, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1663, ptr align 8 %70, i64 8, i1 false)
%1664 = getelementptr inbounds i8, ptr %70, i32 8
%1665 = load ptr addrspace(10), ptr %1664, align 8
%1666 = extractvalue { ptr, ptr addrspace(10) } %1653, 0
%1667 = getelementptr i8, ptr %1666, i64 %1661
%1668 = sub i64 %1619, 1
%1669 = mul i64 8, %1668
%1670 = getelementptr i8, ptr %1667, i64 %1669
%1671 = getelementptr inbounds i64, ptr %1670, i64 0
%1672 = load i64, ptr %1671, align 1
br label %1674
1673: ; preds = %1636
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1619) #1
call void @llvm.trap()
unreachable
1674: ; preds = %1645
%1675 = load i64, ptr %1611, align 8
%1676 = xor i64 %1675, %1672
%1677 = getelementptr inbounds i8, ptr %6, i32 152
br i1 false, label %1684, label %1678
1678: ; preds = %1674
%1679 = sub i64 %353, %343
%1680 = add i64 1, %1679
%1681 = icmp ult i64 19, %1680
%1682 = xor i1 %1681, true
br i1 %1682, label %1699, label %1683
1683: ; preds = %1678
br label %1684
1684: ; preds = %1683, %1674
%1685 = add i64 %417, 20
br i1 true, label %1711, label %1686
1686: ; preds = %1684
%1687 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1688 = getelementptr inbounds i8, ptr addrspace(11) %1687, i32 8
%1689 = load i64, ptr addrspace(11) %1688, align 8
%1690 = load i64, ptr addrspace(11) %1687, align 8
%1691 = sub i64 %1689, %1690
%1692 = add i64 1, %1691
%1693 = mul i64 %1692, 1
%1694 = icmp ne i64 %1693, -9223372036854775808
%1695 = or i1 true, %1694
%1696 = and i1 true, %1695
%1697 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1696, label %4334, label %4332
1698: ; preds = %4334
br label %1702
1699: ; preds = %1678
store ptr addrspace(10) %419, ptr %238, align 8
%1700 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1700, ptr readonly captures(none) %238, i64 signext 20) #1
call void @llvm.trap()
unreachable
1701: ; preds = %4334
br label %1702
1702: ; preds = %1701, %1698
%1703 = phi i64 [ %4337, %1698 ], [ 0, %1701 ]
%1704 = icmp slt i64 0, %1703
%1705 = xor i1 %1704, true
%1706 = select i1 %1705, i64 0, i64 %1703
%1707 = sub i64 %1685, 1
%1708 = icmp ult i64 %1707, %1706
%1709 = xor i1 %1708, true
br i1 %1709, label %1739, label %1710
1710: ; preds = %1702
br label %1711
1711: ; preds = %1710, %1684
%1712 = load ptr addrspace(10), ptr %4, align 8
%1713 = addrspacecast ptr addrspace(10) %1712 to ptr addrspace(11)
%1714 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1713, i32 0, i32 0
%1715 = load ptr, ptr addrspace(11) %1714, align 8
%1716 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1713, i32 0, i32 1
%1717 = load ptr addrspace(10), ptr addrspace(11) %1716, align 8
%1718 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1715, 0
%1719 = insertvalue { ptr, ptr addrspace(10) } %1718, ptr addrspace(10) %1717, 1
%1720 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1721 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1722 = load i64, ptr addrspace(11) %1721, align 8
%1723 = mul i64 %1722, 1
%1724 = load i64, ptr addrspace(11) %1720, align 8
%1725 = add i64 %1724, %1723
%1726 = sub i64 %1725, 1
%1727 = mul i64 %1726, 1
%1728 = getelementptr inbounds i8, ptr %71, i32 0
store i64 %1727, ptr %72, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1728, ptr align 8 %72, i64 8, i1 false)
%1729 = getelementptr inbounds i8, ptr %71, i32 8
store { ptr, ptr addrspace(10) } %1719, ptr %73, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1729, ptr align 8 %73, i64 8, i1 false)
%1730 = getelementptr inbounds i8, ptr %73, i32 8
%1731 = load ptr addrspace(10), ptr %1730, align 8
%1732 = extractvalue { ptr, ptr addrspace(10) } %1719, 0
%1733 = getelementptr i8, ptr %1732, i64 %1727
%1734 = sub i64 %1685, 1
%1735 = mul i64 8, %1734
%1736 = getelementptr i8, ptr %1733, i64 %1735
%1737 = getelementptr inbounds i64, ptr %1736, i64 0
%1738 = load i64, ptr %1737, align 1
br label %1740
1739: ; preds = %1702
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1685) #1
call void @llvm.trap()
unreachable
1740: ; preds = %1711
%1741 = load i64, ptr %1677, align 8
%1742 = xor i64 %1741, %1738
%1743 = getelementptr inbounds i8, ptr %6, i32 160
br i1 false, label %1750, label %1744
1744: ; preds = %1740
%1745 = sub i64 %353, %343
%1746 = add i64 1, %1745
%1747 = icmp ult i64 20, %1746
%1748 = xor i1 %1747, true
br i1 %1748, label %1765, label %1749
1749: ; preds = %1744
br label %1750
1750: ; preds = %1749, %1740
%1751 = add i64 %417, 21
br i1 true, label %1777, label %1752
1752: ; preds = %1750
%1753 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%1754 = getelementptr inbounds i8, ptr addrspace(11) %1753, i32 8
%1755 = load i64, ptr addrspace(11) %1754, align 8
%1756 = load i64, ptr addrspace(11) %1753, align 8
%1757 = sub i64 %1755, %1756
%1758 = add i64 1, %1757
%1759 = mul i64 %1758, 1
%1760 = icmp ne i64 %1759, -9223372036854775808
%1761 = or i1 true, %1760
%1762 = and i1 true, %1761
%1763 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %1762, label %4342, label %4340
1764: ; preds = %4342
br label %1768
1765: ; preds = %1744
store ptr addrspace(10) %419, ptr %237, align 8
%1766 = addrspacecast ptr %12 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %1766, ptr readonly captures(none) %237, i64 signext 21) #1
call void @llvm.trap()
unreachable
1767: ; preds = %4342
br label %1768
1768: ; preds = %1767, %1764
%1769 = phi i64 [ %4345, %1764 ], [ 0, %1767 ]
%1770 = icmp slt i64 0, %1769
%1771 = xor i1 %1770, true
%1772 = select i1 %1771, i64 0, i64 %1769
%1773 = sub i64 %1751, 1
%1774 = icmp ult i64 %1773, %1772
%1775 = xor i1 %1774, true
br i1 %1775, label %1805, label %1776
1776: ; preds = %1768
br label %1777
1777: ; preds = %1776, %1750
%1778 = load ptr addrspace(10), ptr %4, align 8
%1779 = addrspacecast ptr addrspace(10) %1778 to ptr addrspace(11)
%1780 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1779, i32 0, i32 0
%1781 = load ptr, ptr addrspace(11) %1780, align 8
%1782 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %1779, i32 0, i32 1
%1783 = load ptr addrspace(10), ptr addrspace(11) %1782, align 8
%1784 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %1781, 0
%1785 = insertvalue { ptr, ptr addrspace(10) } %1784, ptr addrspace(10) %1783, 1
%1786 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%1787 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%1788 = load i64, ptr addrspace(11) %1787, align 8
%1789 = mul i64 %1788, 1
%1790 = load i64, ptr addrspace(11) %1786, align 8
%1791 = add i64 %1790, %1789
%1792 = sub i64 %1791, 1
%1793 = mul i64 %1792, 1
%1794 = getelementptr inbounds i8, ptr %74, i32 0
store i64 %1793, ptr %75, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1794, ptr align 8 %75, i64 8, i1 false)
%1795 = getelementptr inbounds i8, ptr %74, i32 8
store { ptr, ptr addrspace(10) } %1785, ptr %76, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1795, ptr align 8 %76, i64 8, i1 false)
%1796 = getelementptr inbounds i8, ptr %76, i32 8
%1797 = load ptr addrspace(10), ptr %1796, align 8
%1798 = extractvalue { ptr, ptr addrspace(10) } %1785, 0
%1799 = getelementptr i8, ptr %1798, i64 %1793
%1800 = sub i64 %1751, 1
%1801 = mul i64 8, %1800
%1802 = getelementptr i8, ptr %1799, i64 %1801
%1803 = getelementptr inbounds i64, ptr %1802, i64 0
%1804 = load i64, ptr %1803, align 1
br label %1806
1805: ; preds = %1768
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %1751) #1
call void @llvm.trap()
unreachable
1806: ; preds = %1777
%1807 = load i64, ptr %1743, align 8
%1808 = xor i64 %1807, %1804
%1809 = getelementptr inbounds i8, ptr %6, i32 168
%1810 = load i64, ptr %1809, align 8
%1811 = xor i64 %1810, 0
%1812 = getelementptr inbounds i8, ptr %6, i32 176
%1813 = load i64, ptr %1812, align 8
%1814 = xor i64 %1813, 0
%1815 = getelementptr inbounds i8, ptr %6, i32 184
%1816 = load i64, ptr %1815, align 8
%1817 = xor i64 %1816, 0
%1818 = getelementptr inbounds i8, ptr %6, i32 192
%1819 = load i64, ptr %1818, align 8
%1820 = xor i64 %1819, 0
br label %1821
1821: ; preds = %2163, %1806
%1822 = phi i64 [ 13, %1806 ], [ %2157, %2163 ]
%1823 = phi i64 [ 13, %1806 ], [ %2158, %2163 ]
%1824 = phi i64 [ %488, %1806 ], [ %2122, %2163 ]
%1825 = phi i64 [ %818, %1806 ], [ %2061, %2163 ]
%1826 = phi i64 [ %1148, %1806 ], [ %2076, %2163 ]
%1827 = phi i64 [ %1478, %1806 ], [ %2091, %2163 ]
%1828 = phi i64 [ %1808, %1806 ], [ %2106, %2163 ]
%1829 = phi i64 [ %554, %1806 ], [ %2049, %2163 ]
%1830 = phi i64 [ %884, %1806 ], [ %2064, %2163 ]
%1831 = phi i64 [ %1214, %1806 ], [ %2079, %2163 ]
%1832 = phi i64 [ %1544, %1806 ], [ %2094, %2163 ]
%1833 = phi i64 [ %1811, %1806 ], [ %2109, %2163 ]
%1834 = phi i64 [ %620, %1806 ], [ %2052, %2163 ]
%1835 = phi i64 [ %950, %1806 ], [ %2067, %2163 ]
%1836 = phi i64 [ %1280, %1806 ], [ %2082, %2163 ]
%1837 = phi i64 [ %1610, %1806 ], [ %2097, %2163 ]
%1838 = phi i64 [ %1814, %1806 ], [ %2112, %2163 ]
%1839 = phi i64 [ %686, %1806 ], [ %2055, %2163 ]
%1840 = phi i64 [ %1016, %1806 ], [ %2070, %2163 ]
%1841 = phi i64 [ %1346, %1806 ], [ %2085, %2163 ]
%1842 = phi i64 [ %1676, %1806 ], [ %2100, %2163 ]
%1843 = phi i64 [ %1817, %1806 ], [ %2115, %2163 ]
%1844 = phi i64 [ %752, %1806 ], [ %2058, %2163 ]
%1845 = phi i64 [ %1082, %1806 ], [ %2073, %2163 ]
%1846 = phi i64 [ %1412, %1806 ], [ %2088, %2163 ]
%1847 = phi i64 [ %1742, %1806 ], [ %2103, %2163 ]
%1848 = phi i64 [ %1820, %1806 ], [ %2118, %2163 ]
%1849 = xor i64 %1824, %1825
%1850 = xor i64 %1849, %1826
%1851 = xor i64 %1850, %1827
%1852 = xor i64 %1851, %1828
%1853 = xor i64 %1829, %1830
%1854 = xor i64 %1853, %1831
%1855 = xor i64 %1854, %1832
%1856 = xor i64 %1855, %1833
%1857 = xor i64 %1834, %1835
%1858 = xor i64 %1857, %1836
%1859 = xor i64 %1858, %1837
%1860 = xor i64 %1859, %1838
%1861 = xor i64 %1839, %1840
%1862 = xor i64 %1861, %1841
%1863 = xor i64 %1862, %1842
%1864 = xor i64 %1863, %1843
%1865 = xor i64 %1844, %1845
%1866 = xor i64 %1865, %1846
%1867 = xor i64 %1866, %1847
%1868 = xor i64 %1867, %1848
%1869 = shl i64 %1856, 1
%1870 = select i1 false, i64 0, i64 %1869
%1871 = lshr i64 %1856, 63
%1872 = select i1 false, i64 0, i64 %1871
%1873 = or i64 %1870, %1872
%1874 = xor i64 %1868, %1873
%1875 = shl i64 %1860, 1
%1876 = select i1 false, i64 0, i64 %1875
%1877 = lshr i64 %1860, 63
%1878 = select i1 false, i64 0, i64 %1877
%1879 = or i64 %1876, %1878
%1880 = xor i64 %1852, %1879
%1881 = shl i64 %1864, 1
%1882 = select i1 false, i64 0, i64 %1881
%1883 = lshr i64 %1864, 63
%1884 = select i1 false, i64 0, i64 %1883
%1885 = or i64 %1882, %1884
%1886 = xor i64 %1856, %1885
%1887 = shl i64 %1868, 1
%1888 = select i1 false, i64 0, i64 %1887
%1889 = lshr i64 %1868, 63
%1890 = select i1 false, i64 0, i64 %1889
%1891 = or i64 %1888, %1890
%1892 = xor i64 %1860, %1891
%1893 = shl i64 %1852, 1
%1894 = select i1 false, i64 0, i64 %1893
%1895 = lshr i64 %1852, 63
%1896 = select i1 false, i64 0, i64 %1895
%1897 = or i64 %1894, %1896
%1898 = xor i64 %1864, %1897
%1899 = xor i64 %1824, %1874
%1900 = xor i64 %1829, %1880
%1901 = xor i64 %1834, %1886
%1902 = xor i64 %1839, %1892
%1903 = xor i64 %1844, %1898
%1904 = xor i64 %1825, %1874
%1905 = xor i64 %1830, %1880
%1906 = xor i64 %1835, %1886
%1907 = xor i64 %1840, %1892
%1908 = xor i64 %1845, %1898
%1909 = xor i64 %1826, %1874
%1910 = xor i64 %1831, %1880
%1911 = xor i64 %1836, %1886
%1912 = xor i64 %1841, %1892
%1913 = xor i64 %1846, %1898
%1914 = xor i64 %1827, %1874
%1915 = xor i64 %1832, %1880
%1916 = xor i64 %1837, %1886
%1917 = xor i64 %1842, %1892
%1918 = xor i64 %1847, %1898
%1919 = xor i64 %1828, %1874
%1920 = xor i64 %1833, %1880
%1921 = xor i64 %1838, %1886
%1922 = xor i64 %1843, %1892
%1923 = xor i64 %1848, %1898
%1924 = shl i64 %1905, 44
%1925 = select i1 false, i64 0, i64 %1924
%1926 = lshr i64 %1905, 20
%1927 = select i1 false, i64 0, i64 %1926
%1928 = or i64 %1925, %1927
%1929 = shl i64 %1911, 43
%1930 = select i1 false, i64 0, i64 %1929
%1931 = lshr i64 %1911, 21
%1932 = select i1 false, i64 0, i64 %1931
%1933 = or i64 %1930, %1932
%1934 = shl i64 %1917, 21
%1935 = select i1 false, i64 0, i64 %1934
%1936 = lshr i64 %1917, 43
%1937 = select i1 false, i64 0, i64 %1936
%1938 = or i64 %1935, %1937
%1939 = shl i64 %1923, 14
%1940 = select i1 false, i64 0, i64 %1939
%1941 = lshr i64 %1923, 50
%1942 = select i1 false, i64 0, i64 %1941
%1943 = or i64 %1940, %1942
%1944 = shl i64 %1902, 28
%1945 = select i1 false, i64 0, i64 %1944
%1946 = lshr i64 %1902, 36
%1947 = select i1 false, i64 0, i64 %1946
%1948 = or i64 %1945, %1947
%1949 = shl i64 %1908, 20
%1950 = select i1 false, i64 0, i64 %1949
%1951 = lshr i64 %1908, 44
%1952 = select i1 false, i64 0, i64 %1951
%1953 = or i64 %1950, %1952
%1954 = shl i64 %1909, 3
%1955 = select i1 false, i64 0, i64 %1954
%1956 = lshr i64 %1909, 61
%1957 = select i1 false, i64 0, i64 %1956
%1958 = or i64 %1955, %1957
%1959 = shl i64 %1915, 45
%1960 = select i1 false, i64 0, i64 %1959
%1961 = lshr i64 %1915, 19
%1962 = select i1 false, i64 0, i64 %1961
%1963 = or i64 %1960, %1962
%1964 = shl i64 %1921, 61
%1965 = select i1 false, i64 0, i64 %1964
%1966 = lshr i64 %1921, 3
%1967 = select i1 false, i64 0, i64 %1966
%1968 = or i64 %1965, %1967
%1969 = shl i64 %1900, 1
%1970 = select i1 false, i64 0, i64 %1969
%1971 = lshr i64 %1900, 63
%1972 = select i1 false, i64 0, i64 %1971
%1973 = or i64 %1970, %1972
%1974 = shl i64 %1906, 6
%1975 = select i1 false, i64 0, i64 %1974
%1976 = lshr i64 %1906, 58
%1977 = select i1 false, i64 0, i64 %1976
%1978 = or i64 %1975, %1977
%1979 = shl i64 %1912, 25
%1980 = select i1 false, i64 0, i64 %1979
%1981 = lshr i64 %1912, 39
%1982 = select i1 false, i64 0, i64 %1981
%1983 = or i64 %1980, %1982
%1984 = shl i64 %1918, 8
%1985 = select i1 false, i64 0, i64 %1984
%1986 = lshr i64 %1918, 56
%1987 = select i1 false, i64 0, i64 %1986
%1988 = or i64 %1985, %1987
%1989 = shl i64 %1919, 18
%1990 = select i1 false, i64 0, i64 %1989
%1991 = lshr i64 %1919, 46
%1992 = select i1 false, i64 0, i64 %1991
%1993 = or i64 %1990, %1992
%1994 = shl i64 %1903, 27
%1995 = select i1 false, i64 0, i64 %1994
%1996 = lshr i64 %1903, 37
%1997 = select i1 false, i64 0, i64 %1996
%1998 = or i64 %1995, %1997
%1999 = shl i64 %1904, 36
%2000 = select i1 false, i64 0, i64 %1999
%2001 = lshr i64 %1904, 28
%2002 = select i1 false, i64 0, i64 %2001
%2003 = or i64 %2000, %2002
%2004 = shl i64 %1910, 10
%2005 = select i1 false, i64 0, i64 %2004
%2006 = lshr i64 %1910, 54
%2007 = select i1 false, i64 0, i64 %2006
%2008 = or i64 %2005, %2007
%2009 = shl i64 %1916, 15
%2010 = select i1 false, i64 0, i64 %2009
%2011 = lshr i64 %1916, 49
%2012 = select i1 false, i64 0, i64 %2011
%2013 = or i64 %2010, %2012
%2014 = shl i64 %1922, 56
%2015 = select i1 false, i64 0, i64 %2014
%2016 = lshr i64 %1922, 8
%2017 = select i1 false, i64 0, i64 %2016
%2018 = or i64 %2015, %2017
%2019 = shl i64 %1901, 62
%2020 = select i1 false, i64 0, i64 %2019
%2021 = lshr i64 %1901, 2
%2022 = select i1 false, i64 0, i64 %2021
%2023 = or i64 %2020, %2022
%2024 = shl i64 %1907, 55
%2025 = select i1 false, i64 0, i64 %2024
%2026 = lshr i64 %1907, 9
%2027 = select i1 false, i64 0, i64 %2026
%2028 = or i64 %2025, %2027
%2029 = shl i64 %1913, 39
%2030 = select i1 false, i64 0, i64 %2029
%2031 = lshr i64 %1913, 25
%2032 = select i1 false, i64 0, i64 %2031
%2033 = or i64 %2030, %2032
%2034 = shl i64 %1914, 41
%2035 = select i1 false, i64 0, i64 %2034
%2036 = lshr i64 %1914, 23
%2037 = select i1 false, i64 0, i64 %2036
%2038 = or i64 %2035, %2037
%2039 = shl i64 %1920, 2
%2040 = select i1 false, i64 0, i64 %2039
%2041 = lshr i64 %1920, 62
%2042 = select i1 false, i64 0, i64 %2041
%2043 = or i64 %2040, %2042
%2044 = xor i64 %1928, -1
%2045 = and i64 %2044, %1933
%2046 = xor i64 %1899, %2045
%2047 = xor i64 %1933, -1
%2048 = and i64 %2047, %1938
%2049 = xor i64 %1928, %2048
%2050 = xor i64 %1938, -1
%2051 = and i64 %2050, %1943
%2052 = xor i64 %1933, %2051
%2053 = xor i64 %1943, -1
%2054 = and i64 %2053, %1899
%2055 = xor i64 %1938, %2054
%2056 = xor i64 %1899, -1
%2057 = and i64 %2056, %1928
%2058 = xor i64 %1943, %2057
%2059 = xor i64 %1953, -1
%2060 = and i64 %2059, %1958
%2061 = xor i64 %1948, %2060
%2062 = xor i64 %1958, -1
%2063 = and i64 %2062, %1963
%2064 = xor i64 %1953, %2063
%2065 = xor i64 %1963, -1
%2066 = and i64 %2065, %1968
%2067 = xor i64 %1958, %2066
%2068 = xor i64 %1968, -1
%2069 = and i64 %2068, %1948
%2070 = xor i64 %1963, %2069
%2071 = xor i64 %1948, -1
%2072 = and i64 %2071, %1953
%2073 = xor i64 %1968, %2072
%2074 = xor i64 %1978, -1
%2075 = and i64 %2074, %1983
%2076 = xor i64 %1973, %2075
%2077 = xor i64 %1983, -1
%2078 = and i64 %2077, %1988
%2079 = xor i64 %1978, %2078
%2080 = xor i64 %1988, -1
%2081 = and i64 %2080, %1993
%2082 = xor i64 %1983, %2081
%2083 = xor i64 %1993, -1
%2084 = and i64 %2083, %1973
%2085 = xor i64 %1988, %2084
%2086 = xor i64 %1973, -1
%2087 = and i64 %2086, %1978
%2088 = xor i64 %1993, %2087
%2089 = xor i64 %2003, -1
%2090 = and i64 %2089, %2008
%2091 = xor i64 %1998, %2090
%2092 = xor i64 %2008, -1
%2093 = and i64 %2092, %2013
%2094 = xor i64 %2003, %2093
%2095 = xor i64 %2013, -1
%2096 = and i64 %2095, %2018
%2097 = xor i64 %2008, %2096
%2098 = xor i64 %2018, -1
%2099 = and i64 %2098, %1998
%2100 = xor i64 %2013, %2099
%2101 = xor i64 %1998, -1
%2102 = and i64 %2101, %2003
%2103 = xor i64 %2018, %2102
%2104 = xor i64 %2028, -1
%2105 = and i64 %2104, %2033
%2106 = xor i64 %2023, %2105
%2107 = xor i64 %2033, -1
%2108 = and i64 %2107, %2038
%2109 = xor i64 %2028, %2108
%2110 = xor i64 %2038, -1
%2111 = and i64 %2110, %2043
%2112 = xor i64 %2033, %2111
%2113 = xor i64 %2043, -1
%2114 = and i64 %2113, %2023
%2115 = xor i64 %2038, %2114
%2116 = xor i64 %2023, -1
%2117 = and i64 %2116, %2028
%2118 = xor i64 %2043, %2117
%2119 = sub i64 %1822, 1
%2120 = getelementptr inbounds i64, ptr @_j_constYY.5, i64 %2119
%2121 = load i64, ptr %2120, align 8
%2122 = xor i64 %2046, %2121
br i1 true, label %2124, label %2123
2123: ; preds = %1821
br label %2124
2124: ; preds = %2123, %1821
%2125 = getelementptr inbounds i8, ptr %77, i32 0
store i64 %2122, ptr %78, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2125, ptr align 8 %78, i64 8, i1 false)
%2126 = getelementptr inbounds i8, ptr %77, i32 8
store i64 %2049, ptr %79, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2126, ptr align 8 %79, i64 8, i1 false)
%2127 = getelementptr inbounds i8, ptr %77, i32 16
store i64 %2052, ptr %80, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2127, ptr align 8 %80, i64 8, i1 false)
%2128 = getelementptr inbounds i8, ptr %77, i32 24
store i64 %2055, ptr %81, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2128, ptr align 8 %81, i64 8, i1 false)
%2129 = getelementptr inbounds i8, ptr %77, i32 32
store i64 %2058, ptr %82, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2129, ptr align 8 %82, i64 8, i1 false)
%2130 = getelementptr inbounds i8, ptr %77, i32 40
store i64 %2061, ptr %83, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2130, ptr align 8 %83, i64 8, i1 false)
%2131 = getelementptr inbounds i8, ptr %77, i32 48
store i64 %2064, ptr %84, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2131, ptr align 8 %84, i64 8, i1 false)
%2132 = getelementptr inbounds i8, ptr %77, i32 56
store i64 %2067, ptr %85, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2132, ptr align 8 %85, i64 8, i1 false)
%2133 = getelementptr inbounds i8, ptr %77, i32 64
store i64 %2070, ptr %86, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2133, ptr align 8 %86, i64 8, i1 false)
%2134 = getelementptr inbounds i8, ptr %77, i32 72
store i64 %2073, ptr %87, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2134, ptr align 8 %87, i64 8, i1 false)
%2135 = getelementptr inbounds i8, ptr %77, i32 80
store i64 %2076, ptr %88, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2135, ptr align 8 %88, i64 8, i1 false)
%2136 = getelementptr inbounds i8, ptr %77, i32 88
store i64 %2079, ptr %89, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2136, ptr align 8 %89, i64 8, i1 false)
%2137 = getelementptr inbounds i8, ptr %77, i32 96
store i64 %2082, ptr %90, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2137, ptr align 8 %90, i64 8, i1 false)
%2138 = getelementptr inbounds i8, ptr %77, i32 104
store i64 %2085, ptr %91, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2138, ptr align 8 %91, i64 8, i1 false)
%2139 = getelementptr inbounds i8, ptr %77, i32 112
store i64 %2088, ptr %92, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2139, ptr align 8 %92, i64 8, i1 false)
%2140 = getelementptr inbounds i8, ptr %77, i32 120
store i64 %2091, ptr %93, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2140, ptr align 8 %93, i64 8, i1 false)
%2141 = getelementptr inbounds i8, ptr %77, i32 128
store i64 %2094, ptr %94, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2141, ptr align 8 %94, i64 8, i1 false)
%2142 = getelementptr inbounds i8, ptr %77, i32 136
store i64 %2097, ptr %95, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2142, ptr align 8 %95, i64 8, i1 false)
%2143 = getelementptr inbounds i8, ptr %77, i32 144
store i64 %2100, ptr %96, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2143, ptr align 8 %96, i64 8, i1 false)
%2144 = getelementptr inbounds i8, ptr %77, i32 152
store i64 %2103, ptr %97, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2144, ptr align 8 %97, i64 8, i1 false)
%2145 = getelementptr inbounds i8, ptr %77, i32 160
store i64 %2106, ptr %98, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2145, ptr align 8 %98, i64 8, i1 false)
%2146 = getelementptr inbounds i8, ptr %77, i32 168
store i64 %2109, ptr %99, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2146, ptr align 8 %99, i64 8, i1 false)
%2147 = getelementptr inbounds i8, ptr %77, i32 176
store i64 %2112, ptr %100, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2147, ptr align 8 %100, i64 8, i1 false)
%2148 = getelementptr inbounds i8, ptr %77, i32 184
store i64 %2115, ptr %101, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2148, ptr align 8 %101, i64 8, i1 false)
%2149 = getelementptr inbounds i8, ptr %77, i32 192
store i64 %2118, ptr %102, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2149, ptr align 8 %102, i64 8, i1 false)
br label %2150
2150: ; preds = %2124
%2151 = icmp eq i64 %1823, 24
%2152 = xor i1 %2151, true
br i1 %2152, label %2154, label %2153
2153: ; preds = %2150
br label %2156
2154: ; preds = %2150
%2155 = add i64 %1823, 1
br label %2156
2156: ; preds = %2154, %2153
%2157 = phi i64 [ %2155, %2154 ], [ undef, %2153 ]
%2158 = phi i64 [ %2155, %2154 ], [ undef, %2153 ]
%2159 = phi i8 [ 1, %2153 ], [ 0, %2154 ]
%2160 = trunc i8 %2159 to i1
%2161 = xor i1 %2160, true
%2162 = xor i1 %2161, true
br i1 %2162, label %2164, label %2163
2163: ; preds = %2156
br label %1821
2164: ; preds = %2156
br label %2165
2165: ; preds = %2164
br label %2166
2166: ; preds = %2165
%2167 = icmp eq i64 %344, %315
%2168 = xor i1 %2167, true
br i1 %2168, label %2170, label %2169
2169: ; preds = %2166
br label %2172
2170: ; preds = %2166
%2171 = add i64 %344, 21
br label %2172
2172: ; preds = %2170, %2169
%2173 = phi i64 [ %2171, %2170 ], [ undef, %2169 ]
%2174 = phi i64 [ %2171, %2170 ], [ undef, %2169 ]
%2175 = phi i8 [ 1, %2169 ], [ 0, %2170 ]
%2176 = trunc i8 %2175 to i1
%2177 = xor i1 %2176, true
%2178 = xor i1 %2177, true
br i1 %2178, label %2179, label %2181
2179: ; preds = %2172
call void @llvm.lifetime.start.p0(ptr %104)
%2180 = icmp ne ptr %77, null
br i1 %2180, label %4685, label %4686
2181: ; preds = %2172
call void @llvm.lifetime.start.p0(ptr %7)
%2182 = icmp ne ptr %77, null
br i1 %2182, label %4680, label %4681
2183: ; preds = %4694, %4689
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %103, ptr align 8 %104, i64 200, i1 false)
call void @llvm.lifetime.end.p0(ptr %104)
%2184 = add i64 %4163, 1
%2185 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2186 = getelementptr inbounds i8, ptr addrspace(11) %2185, i32 8
%2187 = load i64, ptr addrspace(11) %2186, align 8
%2188 = load i64, ptr addrspace(11) %2185, align 8
%2189 = sub i64 %2187, %2188
%2190 = add i64 1, %2189
%2191 = mul i64 %2190, 1
%2192 = icmp ne i64 %2191, -9223372036854775808
%2193 = or i1 true, %2192
%2194 = and i1 true, %2193
%2195 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2194, label %4350, label %4348
2196: ; preds = %4350
br label %2198
2197: ; preds = %4350
br label %2198
2198: ; preds = %2197, %2196
%2199 = phi i64 [ %4353, %2196 ], [ 0, %2197 ]
br label %2200
2200: ; preds = %2198
br label %2201
2201: ; preds = %2200
%2202 = icmp slt i64 0, %2199
%2203 = xor i1 %2202, true
%2204 = select i1 %2203, i64 0, i64 %2199
br label %2205
2205: ; preds = %2201
br label %2206
2206: ; preds = %2205
br label %2207
2207: ; preds = %2206
br label %2208
2208: ; preds = %2207
%2209 = icmp sle i64 %2184, %2204
%2210 = xor i1 %2209, true
br i1 %2210, label %2212, label %2211
2211: ; preds = %2208
br label %2214
2212: ; preds = %2208
%2213 = sub i64 %2184, 1
br label %2214
2214: ; preds = %2212, %2211
%2215 = phi i64 [ %2204, %2211 ], [ %2213, %2212 ]
%2216 = getelementptr inbounds i8, ptr %105, i32 0
store i64 %2184, ptr %106, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2216, ptr align 8 %106, i64 8, i1 false)
%2217 = getelementptr inbounds i8, ptr %105, i32 8
store i64 %2215, ptr %107, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2217, ptr align 8 %107, i64 8, i1 false)
br label %2218
2218: ; preds = %2214
br label %2219
2219: ; preds = %2218
%2220 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2221 = getelementptr inbounds i8, ptr addrspace(11) %2220, i32 8
%2222 = load i64, ptr addrspace(11) %2221, align 8
%2223 = load i64, ptr addrspace(11) %2220, align 8
%2224 = sub i64 %2222, %2223
%2225 = add i64 1, %2224
%2226 = mul i64 %2225, 1
%2227 = icmp ne i64 %2226, -9223372036854775808
%2228 = or i1 true, %2227
%2229 = and i1 true, %2228
%2230 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2229, label %4358, label %4356
2231: ; preds = %4358
br label %2233
2232: ; preds = %4358
br label %2233
2233: ; preds = %2232, %2231
br label %2234
2234: ; preds = %2233
br label %2235
2235: ; preds = %2234
br label %2236
2236: ; preds = %2235
br label %2237
2237: ; preds = %2236
br label %2238
2238: ; preds = %2237
br label %2239
2239: ; preds = %2238
br i1 false, label %2277, label %2240
2240: ; preds = %2239
%2241 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2242 = getelementptr inbounds i8, ptr addrspace(11) %2241, i32 8
%2243 = load i64, ptr addrspace(11) %2242, align 8
%2244 = load i64, ptr addrspace(11) %2241, align 8
%2245 = sub i64 %2243, %2244
%2246 = add i64 1, %2245
%2247 = mul i64 %2246, 1
%2248 = icmp ne i64 %2247, -9223372036854775808
%2249 = or i1 true, %2248
%2250 = and i1 true, %2249
%2251 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2250, label %4366, label %4364
2252: ; preds = %4366
br label %2254
2253: ; preds = %4366
br label %2254
2254: ; preds = %2253, %2252
%2255 = phi i64 [ %4369, %2252 ], [ 0, %2253 ]
br label %2256
2256: ; preds = %2254
br label %2257
2257: ; preds = %2256
%2258 = icmp slt i64 0, %2255
%2259 = xor i1 %2258, true
%2260 = select i1 %2259, i64 0, i64 %2255
br label %2261
2261: ; preds = %2257
br label %2262
2262: ; preds = %2261
br label %2263
2263: ; preds = %2262
%2264 = icmp slt i64 %2215, %2184
%2265 = sub i64 %2184, 1
%2266 = icmp ult i64 %2265, %2260
%2267 = sub i64 %2215, 1
%2268 = icmp ult i64 %2267, %2260
%2269 = and i1 %2266, %2268
%2270 = or i1 %2264, %2269
br label %2271
2271: ; preds = %2263
%2272 = xor i1 %2270, true
br i1 %2272, label %2274, label %2273
2273: ; preds = %2271
br label %2276
2274: ; preds = %2271
%2275 = addrspacecast ptr %105 to ptr addrspace(11)
call swiftcc void @throw_boundserror_2(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, ptr addrspace(11) readonly captures(none) %2275) #1
call void @llvm.trap()
unreachable
2276: ; preds = %2273
br label %2277
2277: ; preds = %2276, %2239
%2278 = getelementptr inbounds i8, ptr %108, i32 0
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2278, ptr align 8 %105, i64 16, i1 false)
%2279 = sub i64 %2184, 1
%2280 = getelementptr inbounds i8, ptr %109, i32 0
call void @llvm.memcpy.p0.p11.i64(ptr align 8 %2280, ptr addrspace(11) align 8 %3, i64 48, i1 false)
%2281 = load ptr addrspace(10), ptr %4, align 8
%2282 = getelementptr inbounds i8, ptr %109, i32 48
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2282, ptr align 8 %108, i64 16, i1 false)
%2283 = getelementptr inbounds i8, ptr %109, i32 64
store i64 %2279, ptr %110, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2283, ptr align 8 %110, i64 8, i1 false)
%2284 = getelementptr inbounds i8, ptr %109, i32 72
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2284, ptr align 8 @_j_constYY.2, i64 8, i1 false)
br label %2285
2285: ; preds = %2277
%2286 = sub i64 %2215, %2184
%2287 = add i64 1, %2286
%2288 = icmp ult i64 0, %2287
%2289 = xor i1 %2288, true
br i1 %2289, label %2353, label %2290
2290: ; preds = %2285
br i1 false, label %2297, label %2291
2291: ; preds = %2290
%2292 = sub i64 %2215, %2184
%2293 = add i64 1, %2292
%2294 = icmp ult i64 0, %2293
%2295 = xor i1 %2294, true
br i1 %2295, label %2312, label %2296
2296: ; preds = %2291
br label %2297
2297: ; preds = %2296, %2290
%2298 = add i64 %2279, 1
br i1 true, label %2324, label %2299
2299: ; preds = %2297
%2300 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2301 = getelementptr inbounds i8, ptr addrspace(11) %2300, i32 8
%2302 = load i64, ptr addrspace(11) %2301, align 8
%2303 = load i64, ptr addrspace(11) %2300, align 8
%2304 = sub i64 %2302, %2303
%2305 = add i64 1, %2304
%2306 = mul i64 %2305, 1
%2307 = icmp ne i64 %2306, -9223372036854775808
%2308 = or i1 true, %2307
%2309 = and i1 true, %2308
%2310 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2309, label %4374, label %4372
2311: ; preds = %4374
br label %2315
2312: ; preds = %2291
store ptr addrspace(10) %2281, ptr %236, align 8
%2313 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2313, ptr readonly captures(none) %236, i64 signext 1) #1
call void @llvm.trap()
unreachable
2314: ; preds = %4374
br label %2315
2315: ; preds = %2314, %2311
%2316 = phi i64 [ %4377, %2311 ], [ 0, %2314 ]
%2317 = icmp slt i64 0, %2316
%2318 = xor i1 %2317, true
%2319 = select i1 %2318, i64 0, i64 %2316
%2320 = sub i64 %2298, 1
%2321 = icmp ult i64 %2320, %2319
%2322 = xor i1 %2321, true
br i1 %2322, label %2352, label %2323
2323: ; preds = %2315
br label %2324
2324: ; preds = %2323, %2297
%2325 = load ptr addrspace(10), ptr %4, align 8
%2326 = addrspacecast ptr addrspace(10) %2325 to ptr addrspace(11)
%2327 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2326, i32 0, i32 0
%2328 = load ptr, ptr addrspace(11) %2327, align 8
%2329 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2326, i32 0, i32 1
%2330 = load ptr addrspace(10), ptr addrspace(11) %2329, align 8
%2331 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2328, 0
%2332 = insertvalue { ptr, ptr addrspace(10) } %2331, ptr addrspace(10) %2330, 1
%2333 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2334 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2335 = load i64, ptr addrspace(11) %2334, align 8
%2336 = mul i64 %2335, 1
%2337 = load i64, ptr addrspace(11) %2333, align 8
%2338 = add i64 %2337, %2336
%2339 = sub i64 %2338, 1
%2340 = mul i64 %2339, 1
%2341 = getelementptr inbounds i8, ptr %111, i32 0
store i64 %2340, ptr %112, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2341, ptr align 8 %112, i64 8, i1 false)
%2342 = getelementptr inbounds i8, ptr %111, i32 8
store { ptr, ptr addrspace(10) } %2332, ptr %113, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2342, ptr align 8 %113, i64 8, i1 false)
%2343 = getelementptr inbounds i8, ptr %113, i32 8
%2344 = load ptr addrspace(10), ptr %2343, align 8
%2345 = extractvalue { ptr, ptr addrspace(10) } %2332, 0
%2346 = getelementptr i8, ptr %2345, i64 %2340
%2347 = sub i64 %2298, 1
%2348 = mul i64 8, %2347
%2349 = getelementptr i8, ptr %2346, i64 %2348
%2350 = getelementptr inbounds i64, ptr %2349, i64 0
%2351 = load i64, ptr %2350, align 1
br label %2354
2352: ; preds = %2315
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2298) #1
call void @llvm.trap()
unreachable
2353: ; preds = %2285
br label %2354
2354: ; preds = %2353, %2324
%2355 = phi i64 [ %2351, %2324 ], [ 0, %2353 ]
%2356 = load i64, ptr %103, align 8
%2357 = xor i64 %2356, %2355
%2358 = getelementptr inbounds i8, ptr %103, i32 8
%2359 = sub i64 %2215, %2184
%2360 = add i64 1, %2359
%2361 = icmp ult i64 1, %2360
%2362 = xor i1 %2361, true
br i1 %2362, label %2426, label %2363
2363: ; preds = %2354
br i1 false, label %2370, label %2364
2364: ; preds = %2363
%2365 = sub i64 %2215, %2184
%2366 = add i64 1, %2365
%2367 = icmp ult i64 1, %2366
%2368 = xor i1 %2367, true
br i1 %2368, label %2385, label %2369
2369: ; preds = %2364
br label %2370
2370: ; preds = %2369, %2363
%2371 = add i64 %2279, 2
br i1 true, label %2397, label %2372
2372: ; preds = %2370
%2373 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2374 = getelementptr inbounds i8, ptr addrspace(11) %2373, i32 8
%2375 = load i64, ptr addrspace(11) %2374, align 8
%2376 = load i64, ptr addrspace(11) %2373, align 8
%2377 = sub i64 %2375, %2376
%2378 = add i64 1, %2377
%2379 = mul i64 %2378, 1
%2380 = icmp ne i64 %2379, -9223372036854775808
%2381 = or i1 true, %2380
%2382 = and i1 true, %2381
%2383 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2382, label %4382, label %4380
2384: ; preds = %4382
br label %2388
2385: ; preds = %2364
store ptr addrspace(10) %2281, ptr %235, align 8
%2386 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2386, ptr readonly captures(none) %235, i64 signext 2) #1
call void @llvm.trap()
unreachable
2387: ; preds = %4382
br label %2388
2388: ; preds = %2387, %2384
%2389 = phi i64 [ %4385, %2384 ], [ 0, %2387 ]
%2390 = icmp slt i64 0, %2389
%2391 = xor i1 %2390, true
%2392 = select i1 %2391, i64 0, i64 %2389
%2393 = sub i64 %2371, 1
%2394 = icmp ult i64 %2393, %2392
%2395 = xor i1 %2394, true
br i1 %2395, label %2425, label %2396
2396: ; preds = %2388
br label %2397
2397: ; preds = %2396, %2370
%2398 = load ptr addrspace(10), ptr %4, align 8
%2399 = addrspacecast ptr addrspace(10) %2398 to ptr addrspace(11)
%2400 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2399, i32 0, i32 0
%2401 = load ptr, ptr addrspace(11) %2400, align 8
%2402 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2399, i32 0, i32 1
%2403 = load ptr addrspace(10), ptr addrspace(11) %2402, align 8
%2404 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2401, 0
%2405 = insertvalue { ptr, ptr addrspace(10) } %2404, ptr addrspace(10) %2403, 1
%2406 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2407 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2408 = load i64, ptr addrspace(11) %2407, align 8
%2409 = mul i64 %2408, 1
%2410 = load i64, ptr addrspace(11) %2406, align 8
%2411 = add i64 %2410, %2409
%2412 = sub i64 %2411, 1
%2413 = mul i64 %2412, 1
%2414 = getelementptr inbounds i8, ptr %114, i32 0
store i64 %2413, ptr %115, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2414, ptr align 8 %115, i64 8, i1 false)
%2415 = getelementptr inbounds i8, ptr %114, i32 8
store { ptr, ptr addrspace(10) } %2405, ptr %116, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2415, ptr align 8 %116, i64 8, i1 false)
%2416 = getelementptr inbounds i8, ptr %116, i32 8
%2417 = load ptr addrspace(10), ptr %2416, align 8
%2418 = extractvalue { ptr, ptr addrspace(10) } %2405, 0
%2419 = getelementptr i8, ptr %2418, i64 %2413
%2420 = sub i64 %2371, 1
%2421 = mul i64 8, %2420
%2422 = getelementptr i8, ptr %2419, i64 %2421
%2423 = getelementptr inbounds i64, ptr %2422, i64 0
%2424 = load i64, ptr %2423, align 1
br label %2427
2425: ; preds = %2388
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2371) #1
call void @llvm.trap()
unreachable
2426: ; preds = %2354
br label %2427
2427: ; preds = %2426, %2397
%2428 = phi i64 [ %2424, %2397 ], [ 0, %2426 ]
%2429 = load i64, ptr %2358, align 8
%2430 = xor i64 %2429, %2428
%2431 = getelementptr inbounds i8, ptr %103, i32 16
%2432 = sub i64 %2215, %2184
%2433 = add i64 1, %2432
%2434 = icmp ult i64 2, %2433
%2435 = xor i1 %2434, true
br i1 %2435, label %2499, label %2436
2436: ; preds = %2427
br i1 false, label %2443, label %2437
2437: ; preds = %2436
%2438 = sub i64 %2215, %2184
%2439 = add i64 1, %2438
%2440 = icmp ult i64 2, %2439
%2441 = xor i1 %2440, true
br i1 %2441, label %2458, label %2442
2442: ; preds = %2437
br label %2443
2443: ; preds = %2442, %2436
%2444 = add i64 %2279, 3
br i1 true, label %2470, label %2445
2445: ; preds = %2443
%2446 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2447 = getelementptr inbounds i8, ptr addrspace(11) %2446, i32 8
%2448 = load i64, ptr addrspace(11) %2447, align 8
%2449 = load i64, ptr addrspace(11) %2446, align 8
%2450 = sub i64 %2448, %2449
%2451 = add i64 1, %2450
%2452 = mul i64 %2451, 1
%2453 = icmp ne i64 %2452, -9223372036854775808
%2454 = or i1 true, %2453
%2455 = and i1 true, %2454
%2456 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2455, label %4390, label %4388
2457: ; preds = %4390
br label %2461
2458: ; preds = %2437
store ptr addrspace(10) %2281, ptr %234, align 8
%2459 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2459, ptr readonly captures(none) %234, i64 signext 3) #1
call void @llvm.trap()
unreachable
2460: ; preds = %4390
br label %2461
2461: ; preds = %2460, %2457
%2462 = phi i64 [ %4393, %2457 ], [ 0, %2460 ]
%2463 = icmp slt i64 0, %2462
%2464 = xor i1 %2463, true
%2465 = select i1 %2464, i64 0, i64 %2462
%2466 = sub i64 %2444, 1
%2467 = icmp ult i64 %2466, %2465
%2468 = xor i1 %2467, true
br i1 %2468, label %2498, label %2469
2469: ; preds = %2461
br label %2470
2470: ; preds = %2469, %2443
%2471 = load ptr addrspace(10), ptr %4, align 8
%2472 = addrspacecast ptr addrspace(10) %2471 to ptr addrspace(11)
%2473 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2472, i32 0, i32 0
%2474 = load ptr, ptr addrspace(11) %2473, align 8
%2475 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2472, i32 0, i32 1
%2476 = load ptr addrspace(10), ptr addrspace(11) %2475, align 8
%2477 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2474, 0
%2478 = insertvalue { ptr, ptr addrspace(10) } %2477, ptr addrspace(10) %2476, 1
%2479 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2480 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2481 = load i64, ptr addrspace(11) %2480, align 8
%2482 = mul i64 %2481, 1
%2483 = load i64, ptr addrspace(11) %2479, align 8
%2484 = add i64 %2483, %2482
%2485 = sub i64 %2484, 1
%2486 = mul i64 %2485, 1
%2487 = getelementptr inbounds i8, ptr %117, i32 0
store i64 %2486, ptr %118, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2487, ptr align 8 %118, i64 8, i1 false)
%2488 = getelementptr inbounds i8, ptr %117, i32 8
store { ptr, ptr addrspace(10) } %2478, ptr %119, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2488, ptr align 8 %119, i64 8, i1 false)
%2489 = getelementptr inbounds i8, ptr %119, i32 8
%2490 = load ptr addrspace(10), ptr %2489, align 8
%2491 = extractvalue { ptr, ptr addrspace(10) } %2478, 0
%2492 = getelementptr i8, ptr %2491, i64 %2486
%2493 = sub i64 %2444, 1
%2494 = mul i64 8, %2493
%2495 = getelementptr i8, ptr %2492, i64 %2494
%2496 = getelementptr inbounds i64, ptr %2495, i64 0
%2497 = load i64, ptr %2496, align 1
br label %2500
2498: ; preds = %2461
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2444) #1
call void @llvm.trap()
unreachable
2499: ; preds = %2427
br label %2500
2500: ; preds = %2499, %2470
%2501 = phi i64 [ %2497, %2470 ], [ 0, %2499 ]
%2502 = load i64, ptr %2431, align 8
%2503 = xor i64 %2502, %2501
%2504 = getelementptr inbounds i8, ptr %103, i32 24
%2505 = sub i64 %2215, %2184
%2506 = add i64 1, %2505
%2507 = icmp ult i64 3, %2506
%2508 = xor i1 %2507, true
br i1 %2508, label %2572, label %2509
2509: ; preds = %2500
br i1 false, label %2516, label %2510
2510: ; preds = %2509
%2511 = sub i64 %2215, %2184
%2512 = add i64 1, %2511
%2513 = icmp ult i64 3, %2512
%2514 = xor i1 %2513, true
br i1 %2514, label %2531, label %2515
2515: ; preds = %2510
br label %2516
2516: ; preds = %2515, %2509
%2517 = add i64 %2279, 4
br i1 true, label %2543, label %2518
2518: ; preds = %2516
%2519 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2520 = getelementptr inbounds i8, ptr addrspace(11) %2519, i32 8
%2521 = load i64, ptr addrspace(11) %2520, align 8
%2522 = load i64, ptr addrspace(11) %2519, align 8
%2523 = sub i64 %2521, %2522
%2524 = add i64 1, %2523
%2525 = mul i64 %2524, 1
%2526 = icmp ne i64 %2525, -9223372036854775808
%2527 = or i1 true, %2526
%2528 = and i1 true, %2527
%2529 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2528, label %4398, label %4396
2530: ; preds = %4398
br label %2534
2531: ; preds = %2510
store ptr addrspace(10) %2281, ptr %233, align 8
%2532 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2532, ptr readonly captures(none) %233, i64 signext 4) #1
call void @llvm.trap()
unreachable
2533: ; preds = %4398
br label %2534
2534: ; preds = %2533, %2530
%2535 = phi i64 [ %4401, %2530 ], [ 0, %2533 ]
%2536 = icmp slt i64 0, %2535
%2537 = xor i1 %2536, true
%2538 = select i1 %2537, i64 0, i64 %2535
%2539 = sub i64 %2517, 1
%2540 = icmp ult i64 %2539, %2538
%2541 = xor i1 %2540, true
br i1 %2541, label %2571, label %2542
2542: ; preds = %2534
br label %2543
2543: ; preds = %2542, %2516
%2544 = load ptr addrspace(10), ptr %4, align 8
%2545 = addrspacecast ptr addrspace(10) %2544 to ptr addrspace(11)
%2546 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2545, i32 0, i32 0
%2547 = load ptr, ptr addrspace(11) %2546, align 8
%2548 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2545, i32 0, i32 1
%2549 = load ptr addrspace(10), ptr addrspace(11) %2548, align 8
%2550 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2547, 0
%2551 = insertvalue { ptr, ptr addrspace(10) } %2550, ptr addrspace(10) %2549, 1
%2552 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2553 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2554 = load i64, ptr addrspace(11) %2553, align 8
%2555 = mul i64 %2554, 1
%2556 = load i64, ptr addrspace(11) %2552, align 8
%2557 = add i64 %2556, %2555
%2558 = sub i64 %2557, 1
%2559 = mul i64 %2558, 1
%2560 = getelementptr inbounds i8, ptr %120, i32 0
store i64 %2559, ptr %121, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2560, ptr align 8 %121, i64 8, i1 false)
%2561 = getelementptr inbounds i8, ptr %120, i32 8
store { ptr, ptr addrspace(10) } %2551, ptr %122, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2561, ptr align 8 %122, i64 8, i1 false)
%2562 = getelementptr inbounds i8, ptr %122, i32 8
%2563 = load ptr addrspace(10), ptr %2562, align 8
%2564 = extractvalue { ptr, ptr addrspace(10) } %2551, 0
%2565 = getelementptr i8, ptr %2564, i64 %2559
%2566 = sub i64 %2517, 1
%2567 = mul i64 8, %2566
%2568 = getelementptr i8, ptr %2565, i64 %2567
%2569 = getelementptr inbounds i64, ptr %2568, i64 0
%2570 = load i64, ptr %2569, align 1
br label %2573
2571: ; preds = %2534
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2517) #1
call void @llvm.trap()
unreachable
2572: ; preds = %2500
br label %2573
2573: ; preds = %2572, %2543
%2574 = phi i64 [ %2570, %2543 ], [ 0, %2572 ]
%2575 = load i64, ptr %2504, align 8
%2576 = xor i64 %2575, %2574
%2577 = getelementptr inbounds i8, ptr %103, i32 32
%2578 = sub i64 %2215, %2184
%2579 = add i64 1, %2578
%2580 = icmp ult i64 4, %2579
%2581 = xor i1 %2580, true
br i1 %2581, label %2645, label %2582
2582: ; preds = %2573
br i1 false, label %2589, label %2583
2583: ; preds = %2582
%2584 = sub i64 %2215, %2184
%2585 = add i64 1, %2584
%2586 = icmp ult i64 4, %2585
%2587 = xor i1 %2586, true
br i1 %2587, label %2604, label %2588
2588: ; preds = %2583
br label %2589
2589: ; preds = %2588, %2582
%2590 = add i64 %2279, 5
br i1 true, label %2616, label %2591
2591: ; preds = %2589
%2592 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2593 = getelementptr inbounds i8, ptr addrspace(11) %2592, i32 8
%2594 = load i64, ptr addrspace(11) %2593, align 8
%2595 = load i64, ptr addrspace(11) %2592, align 8
%2596 = sub i64 %2594, %2595
%2597 = add i64 1, %2596
%2598 = mul i64 %2597, 1
%2599 = icmp ne i64 %2598, -9223372036854775808
%2600 = or i1 true, %2599
%2601 = and i1 true, %2600
%2602 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2601, label %4406, label %4404
2603: ; preds = %4406
br label %2607
2604: ; preds = %2583
store ptr addrspace(10) %2281, ptr %232, align 8
%2605 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2605, ptr readonly captures(none) %232, i64 signext 5) #1
call void @llvm.trap()
unreachable
2606: ; preds = %4406
br label %2607
2607: ; preds = %2606, %2603
%2608 = phi i64 [ %4409, %2603 ], [ 0, %2606 ]
%2609 = icmp slt i64 0, %2608
%2610 = xor i1 %2609, true
%2611 = select i1 %2610, i64 0, i64 %2608
%2612 = sub i64 %2590, 1
%2613 = icmp ult i64 %2612, %2611
%2614 = xor i1 %2613, true
br i1 %2614, label %2644, label %2615
2615: ; preds = %2607
br label %2616
2616: ; preds = %2615, %2589
%2617 = load ptr addrspace(10), ptr %4, align 8
%2618 = addrspacecast ptr addrspace(10) %2617 to ptr addrspace(11)
%2619 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2618, i32 0, i32 0
%2620 = load ptr, ptr addrspace(11) %2619, align 8
%2621 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2618, i32 0, i32 1
%2622 = load ptr addrspace(10), ptr addrspace(11) %2621, align 8
%2623 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2620, 0
%2624 = insertvalue { ptr, ptr addrspace(10) } %2623, ptr addrspace(10) %2622, 1
%2625 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2626 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2627 = load i64, ptr addrspace(11) %2626, align 8
%2628 = mul i64 %2627, 1
%2629 = load i64, ptr addrspace(11) %2625, align 8
%2630 = add i64 %2629, %2628
%2631 = sub i64 %2630, 1
%2632 = mul i64 %2631, 1
%2633 = getelementptr inbounds i8, ptr %123, i32 0
store i64 %2632, ptr %124, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2633, ptr align 8 %124, i64 8, i1 false)
%2634 = getelementptr inbounds i8, ptr %123, i32 8
store { ptr, ptr addrspace(10) } %2624, ptr %125, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2634, ptr align 8 %125, i64 8, i1 false)
%2635 = getelementptr inbounds i8, ptr %125, i32 8
%2636 = load ptr addrspace(10), ptr %2635, align 8
%2637 = extractvalue { ptr, ptr addrspace(10) } %2624, 0
%2638 = getelementptr i8, ptr %2637, i64 %2632
%2639 = sub i64 %2590, 1
%2640 = mul i64 8, %2639
%2641 = getelementptr i8, ptr %2638, i64 %2640
%2642 = getelementptr inbounds i64, ptr %2641, i64 0
%2643 = load i64, ptr %2642, align 1
br label %2646
2644: ; preds = %2607
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2590) #1
call void @llvm.trap()
unreachable
2645: ; preds = %2573
br label %2646
2646: ; preds = %2645, %2616
%2647 = phi i64 [ %2643, %2616 ], [ 0, %2645 ]
%2648 = load i64, ptr %2577, align 8
%2649 = xor i64 %2648, %2647
%2650 = getelementptr inbounds i8, ptr %103, i32 40
%2651 = sub i64 %2215, %2184
%2652 = add i64 1, %2651
%2653 = icmp ult i64 5, %2652
%2654 = xor i1 %2653, true
br i1 %2654, label %2718, label %2655
2655: ; preds = %2646
br i1 false, label %2662, label %2656
2656: ; preds = %2655
%2657 = sub i64 %2215, %2184
%2658 = add i64 1, %2657
%2659 = icmp ult i64 5, %2658
%2660 = xor i1 %2659, true
br i1 %2660, label %2677, label %2661
2661: ; preds = %2656
br label %2662
2662: ; preds = %2661, %2655
%2663 = add i64 %2279, 6
br i1 true, label %2689, label %2664
2664: ; preds = %2662
%2665 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2666 = getelementptr inbounds i8, ptr addrspace(11) %2665, i32 8
%2667 = load i64, ptr addrspace(11) %2666, align 8
%2668 = load i64, ptr addrspace(11) %2665, align 8
%2669 = sub i64 %2667, %2668
%2670 = add i64 1, %2669
%2671 = mul i64 %2670, 1
%2672 = icmp ne i64 %2671, -9223372036854775808
%2673 = or i1 true, %2672
%2674 = and i1 true, %2673
%2675 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2674, label %4414, label %4412
2676: ; preds = %4414
br label %2680
2677: ; preds = %2656
store ptr addrspace(10) %2281, ptr %231, align 8
%2678 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2678, ptr readonly captures(none) %231, i64 signext 6) #1
call void @llvm.trap()
unreachable
2679: ; preds = %4414
br label %2680
2680: ; preds = %2679, %2676
%2681 = phi i64 [ %4417, %2676 ], [ 0, %2679 ]
%2682 = icmp slt i64 0, %2681
%2683 = xor i1 %2682, true
%2684 = select i1 %2683, i64 0, i64 %2681
%2685 = sub i64 %2663, 1
%2686 = icmp ult i64 %2685, %2684
%2687 = xor i1 %2686, true
br i1 %2687, label %2717, label %2688
2688: ; preds = %2680
br label %2689
2689: ; preds = %2688, %2662
%2690 = load ptr addrspace(10), ptr %4, align 8
%2691 = addrspacecast ptr addrspace(10) %2690 to ptr addrspace(11)
%2692 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2691, i32 0, i32 0
%2693 = load ptr, ptr addrspace(11) %2692, align 8
%2694 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2691, i32 0, i32 1
%2695 = load ptr addrspace(10), ptr addrspace(11) %2694, align 8
%2696 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2693, 0
%2697 = insertvalue { ptr, ptr addrspace(10) } %2696, ptr addrspace(10) %2695, 1
%2698 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2699 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2700 = load i64, ptr addrspace(11) %2699, align 8
%2701 = mul i64 %2700, 1
%2702 = load i64, ptr addrspace(11) %2698, align 8
%2703 = add i64 %2702, %2701
%2704 = sub i64 %2703, 1
%2705 = mul i64 %2704, 1
%2706 = getelementptr inbounds i8, ptr %126, i32 0
store i64 %2705, ptr %127, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2706, ptr align 8 %127, i64 8, i1 false)
%2707 = getelementptr inbounds i8, ptr %126, i32 8
store { ptr, ptr addrspace(10) } %2697, ptr %128, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2707, ptr align 8 %128, i64 8, i1 false)
%2708 = getelementptr inbounds i8, ptr %128, i32 8
%2709 = load ptr addrspace(10), ptr %2708, align 8
%2710 = extractvalue { ptr, ptr addrspace(10) } %2697, 0
%2711 = getelementptr i8, ptr %2710, i64 %2705
%2712 = sub i64 %2663, 1
%2713 = mul i64 8, %2712
%2714 = getelementptr i8, ptr %2711, i64 %2713
%2715 = getelementptr inbounds i64, ptr %2714, i64 0
%2716 = load i64, ptr %2715, align 1
br label %2719
2717: ; preds = %2680
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2663) #1
call void @llvm.trap()
unreachable
2718: ; preds = %2646
br label %2719
2719: ; preds = %2718, %2689
%2720 = phi i64 [ %2716, %2689 ], [ 0, %2718 ]
%2721 = load i64, ptr %2650, align 8
%2722 = xor i64 %2721, %2720
%2723 = getelementptr inbounds i8, ptr %103, i32 48
%2724 = sub i64 %2215, %2184
%2725 = add i64 1, %2724
%2726 = icmp ult i64 6, %2725
%2727 = xor i1 %2726, true
br i1 %2727, label %2791, label %2728
2728: ; preds = %2719
br i1 false, label %2735, label %2729
2729: ; preds = %2728
%2730 = sub i64 %2215, %2184
%2731 = add i64 1, %2730
%2732 = icmp ult i64 6, %2731
%2733 = xor i1 %2732, true
br i1 %2733, label %2750, label %2734
2734: ; preds = %2729
br label %2735
2735: ; preds = %2734, %2728
%2736 = add i64 %2279, 7
br i1 true, label %2762, label %2737
2737: ; preds = %2735
%2738 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2739 = getelementptr inbounds i8, ptr addrspace(11) %2738, i32 8
%2740 = load i64, ptr addrspace(11) %2739, align 8
%2741 = load i64, ptr addrspace(11) %2738, align 8
%2742 = sub i64 %2740, %2741
%2743 = add i64 1, %2742
%2744 = mul i64 %2743, 1
%2745 = icmp ne i64 %2744, -9223372036854775808
%2746 = or i1 true, %2745
%2747 = and i1 true, %2746
%2748 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2747, label %4422, label %4420
2749: ; preds = %4422
br label %2753
2750: ; preds = %2729
store ptr addrspace(10) %2281, ptr %230, align 8
%2751 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2751, ptr readonly captures(none) %230, i64 signext 7) #1
call void @llvm.trap()
unreachable
2752: ; preds = %4422
br label %2753
2753: ; preds = %2752, %2749
%2754 = phi i64 [ %4425, %2749 ], [ 0, %2752 ]
%2755 = icmp slt i64 0, %2754
%2756 = xor i1 %2755, true
%2757 = select i1 %2756, i64 0, i64 %2754
%2758 = sub i64 %2736, 1
%2759 = icmp ult i64 %2758, %2757
%2760 = xor i1 %2759, true
br i1 %2760, label %2790, label %2761
2761: ; preds = %2753
br label %2762
2762: ; preds = %2761, %2735
%2763 = load ptr addrspace(10), ptr %4, align 8
%2764 = addrspacecast ptr addrspace(10) %2763 to ptr addrspace(11)
%2765 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2764, i32 0, i32 0
%2766 = load ptr, ptr addrspace(11) %2765, align 8
%2767 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2764, i32 0, i32 1
%2768 = load ptr addrspace(10), ptr addrspace(11) %2767, align 8
%2769 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2766, 0
%2770 = insertvalue { ptr, ptr addrspace(10) } %2769, ptr addrspace(10) %2768, 1
%2771 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2772 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2773 = load i64, ptr addrspace(11) %2772, align 8
%2774 = mul i64 %2773, 1
%2775 = load i64, ptr addrspace(11) %2771, align 8
%2776 = add i64 %2775, %2774
%2777 = sub i64 %2776, 1
%2778 = mul i64 %2777, 1
%2779 = getelementptr inbounds i8, ptr %129, i32 0
store i64 %2778, ptr %130, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2779, ptr align 8 %130, i64 8, i1 false)
%2780 = getelementptr inbounds i8, ptr %129, i32 8
store { ptr, ptr addrspace(10) } %2770, ptr %131, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2780, ptr align 8 %131, i64 8, i1 false)
%2781 = getelementptr inbounds i8, ptr %131, i32 8
%2782 = load ptr addrspace(10), ptr %2781, align 8
%2783 = extractvalue { ptr, ptr addrspace(10) } %2770, 0
%2784 = getelementptr i8, ptr %2783, i64 %2778
%2785 = sub i64 %2736, 1
%2786 = mul i64 8, %2785
%2787 = getelementptr i8, ptr %2784, i64 %2786
%2788 = getelementptr inbounds i64, ptr %2787, i64 0
%2789 = load i64, ptr %2788, align 1
br label %2792
2790: ; preds = %2753
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2736) #1
call void @llvm.trap()
unreachable
2791: ; preds = %2719
br label %2792
2792: ; preds = %2791, %2762
%2793 = phi i64 [ %2789, %2762 ], [ 0, %2791 ]
%2794 = load i64, ptr %2723, align 8
%2795 = xor i64 %2794, %2793
%2796 = getelementptr inbounds i8, ptr %103, i32 56
%2797 = sub i64 %2215, %2184
%2798 = add i64 1, %2797
%2799 = icmp ult i64 7, %2798
%2800 = xor i1 %2799, true
br i1 %2800, label %2864, label %2801
2801: ; preds = %2792
br i1 false, label %2808, label %2802
2802: ; preds = %2801
%2803 = sub i64 %2215, %2184
%2804 = add i64 1, %2803
%2805 = icmp ult i64 7, %2804
%2806 = xor i1 %2805, true
br i1 %2806, label %2823, label %2807
2807: ; preds = %2802
br label %2808
2808: ; preds = %2807, %2801
%2809 = add i64 %2279, 8
br i1 true, label %2835, label %2810
2810: ; preds = %2808
%2811 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2812 = getelementptr inbounds i8, ptr addrspace(11) %2811, i32 8
%2813 = load i64, ptr addrspace(11) %2812, align 8
%2814 = load i64, ptr addrspace(11) %2811, align 8
%2815 = sub i64 %2813, %2814
%2816 = add i64 1, %2815
%2817 = mul i64 %2816, 1
%2818 = icmp ne i64 %2817, -9223372036854775808
%2819 = or i1 true, %2818
%2820 = and i1 true, %2819
%2821 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2820, label %4430, label %4428
2822: ; preds = %4430
br label %2826
2823: ; preds = %2802
store ptr addrspace(10) %2281, ptr %229, align 8
%2824 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2824, ptr readonly captures(none) %229, i64 signext 8) #1
call void @llvm.trap()
unreachable
2825: ; preds = %4430
br label %2826
2826: ; preds = %2825, %2822
%2827 = phi i64 [ %4433, %2822 ], [ 0, %2825 ]
%2828 = icmp slt i64 0, %2827
%2829 = xor i1 %2828, true
%2830 = select i1 %2829, i64 0, i64 %2827
%2831 = sub i64 %2809, 1
%2832 = icmp ult i64 %2831, %2830
%2833 = xor i1 %2832, true
br i1 %2833, label %2863, label %2834
2834: ; preds = %2826
br label %2835
2835: ; preds = %2834, %2808
%2836 = load ptr addrspace(10), ptr %4, align 8
%2837 = addrspacecast ptr addrspace(10) %2836 to ptr addrspace(11)
%2838 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2837, i32 0, i32 0
%2839 = load ptr, ptr addrspace(11) %2838, align 8
%2840 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2837, i32 0, i32 1
%2841 = load ptr addrspace(10), ptr addrspace(11) %2840, align 8
%2842 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2839, 0
%2843 = insertvalue { ptr, ptr addrspace(10) } %2842, ptr addrspace(10) %2841, 1
%2844 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2845 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2846 = load i64, ptr addrspace(11) %2845, align 8
%2847 = mul i64 %2846, 1
%2848 = load i64, ptr addrspace(11) %2844, align 8
%2849 = add i64 %2848, %2847
%2850 = sub i64 %2849, 1
%2851 = mul i64 %2850, 1
%2852 = getelementptr inbounds i8, ptr %132, i32 0
store i64 %2851, ptr %133, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2852, ptr align 8 %133, i64 8, i1 false)
%2853 = getelementptr inbounds i8, ptr %132, i32 8
store { ptr, ptr addrspace(10) } %2843, ptr %134, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2853, ptr align 8 %134, i64 8, i1 false)
%2854 = getelementptr inbounds i8, ptr %134, i32 8
%2855 = load ptr addrspace(10), ptr %2854, align 8
%2856 = extractvalue { ptr, ptr addrspace(10) } %2843, 0
%2857 = getelementptr i8, ptr %2856, i64 %2851
%2858 = sub i64 %2809, 1
%2859 = mul i64 8, %2858
%2860 = getelementptr i8, ptr %2857, i64 %2859
%2861 = getelementptr inbounds i64, ptr %2860, i64 0
%2862 = load i64, ptr %2861, align 1
br label %2865
2863: ; preds = %2826
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2809) #1
call void @llvm.trap()
unreachable
2864: ; preds = %2792
br label %2865
2865: ; preds = %2864, %2835
%2866 = phi i64 [ %2862, %2835 ], [ 0, %2864 ]
%2867 = load i64, ptr %2796, align 8
%2868 = xor i64 %2867, %2866
%2869 = getelementptr inbounds i8, ptr %103, i32 64
%2870 = sub i64 %2215, %2184
%2871 = add i64 1, %2870
%2872 = icmp ult i64 8, %2871
%2873 = xor i1 %2872, true
br i1 %2873, label %2937, label %2874
2874: ; preds = %2865
br i1 false, label %2881, label %2875
2875: ; preds = %2874
%2876 = sub i64 %2215, %2184
%2877 = add i64 1, %2876
%2878 = icmp ult i64 8, %2877
%2879 = xor i1 %2878, true
br i1 %2879, label %2896, label %2880
2880: ; preds = %2875
br label %2881
2881: ; preds = %2880, %2874
%2882 = add i64 %2279, 9
br i1 true, label %2908, label %2883
2883: ; preds = %2881
%2884 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2885 = getelementptr inbounds i8, ptr addrspace(11) %2884, i32 8
%2886 = load i64, ptr addrspace(11) %2885, align 8
%2887 = load i64, ptr addrspace(11) %2884, align 8
%2888 = sub i64 %2886, %2887
%2889 = add i64 1, %2888
%2890 = mul i64 %2889, 1
%2891 = icmp ne i64 %2890, -9223372036854775808
%2892 = or i1 true, %2891
%2893 = and i1 true, %2892
%2894 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2893, label %4438, label %4436
2895: ; preds = %4438
br label %2899
2896: ; preds = %2875
store ptr addrspace(10) %2281, ptr %228, align 8
%2897 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2897, ptr readonly captures(none) %228, i64 signext 9) #1
call void @llvm.trap()
unreachable
2898: ; preds = %4438
br label %2899
2899: ; preds = %2898, %2895
%2900 = phi i64 [ %4441, %2895 ], [ 0, %2898 ]
%2901 = icmp slt i64 0, %2900
%2902 = xor i1 %2901, true
%2903 = select i1 %2902, i64 0, i64 %2900
%2904 = sub i64 %2882, 1
%2905 = icmp ult i64 %2904, %2903
%2906 = xor i1 %2905, true
br i1 %2906, label %2936, label %2907
2907: ; preds = %2899
br label %2908
2908: ; preds = %2907, %2881
%2909 = load ptr addrspace(10), ptr %4, align 8
%2910 = addrspacecast ptr addrspace(10) %2909 to ptr addrspace(11)
%2911 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2910, i32 0, i32 0
%2912 = load ptr, ptr addrspace(11) %2911, align 8
%2913 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2910, i32 0, i32 1
%2914 = load ptr addrspace(10), ptr addrspace(11) %2913, align 8
%2915 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2912, 0
%2916 = insertvalue { ptr, ptr addrspace(10) } %2915, ptr addrspace(10) %2914, 1
%2917 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2918 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2919 = load i64, ptr addrspace(11) %2918, align 8
%2920 = mul i64 %2919, 1
%2921 = load i64, ptr addrspace(11) %2917, align 8
%2922 = add i64 %2921, %2920
%2923 = sub i64 %2922, 1
%2924 = mul i64 %2923, 1
%2925 = getelementptr inbounds i8, ptr %135, i32 0
store i64 %2924, ptr %136, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2925, ptr align 8 %136, i64 8, i1 false)
%2926 = getelementptr inbounds i8, ptr %135, i32 8
store { ptr, ptr addrspace(10) } %2916, ptr %137, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2926, ptr align 8 %137, i64 8, i1 false)
%2927 = getelementptr inbounds i8, ptr %137, i32 8
%2928 = load ptr addrspace(10), ptr %2927, align 8
%2929 = extractvalue { ptr, ptr addrspace(10) } %2916, 0
%2930 = getelementptr i8, ptr %2929, i64 %2924
%2931 = sub i64 %2882, 1
%2932 = mul i64 8, %2931
%2933 = getelementptr i8, ptr %2930, i64 %2932
%2934 = getelementptr inbounds i64, ptr %2933, i64 0
%2935 = load i64, ptr %2934, align 1
br label %2938
2936: ; preds = %2899
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2882) #1
call void @llvm.trap()
unreachable
2937: ; preds = %2865
br label %2938
2938: ; preds = %2937, %2908
%2939 = phi i64 [ %2935, %2908 ], [ 0, %2937 ]
%2940 = load i64, ptr %2869, align 8
%2941 = xor i64 %2940, %2939
%2942 = getelementptr inbounds i8, ptr %103, i32 72
%2943 = sub i64 %2215, %2184
%2944 = add i64 1, %2943
%2945 = icmp ult i64 9, %2944
%2946 = xor i1 %2945, true
br i1 %2946, label %3010, label %2947
2947: ; preds = %2938
br i1 false, label %2954, label %2948
2948: ; preds = %2947
%2949 = sub i64 %2215, %2184
%2950 = add i64 1, %2949
%2951 = icmp ult i64 9, %2950
%2952 = xor i1 %2951, true
br i1 %2952, label %2969, label %2953
2953: ; preds = %2948
br label %2954
2954: ; preds = %2953, %2947
%2955 = add i64 %2279, 10
br i1 true, label %2981, label %2956
2956: ; preds = %2954
%2957 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%2958 = getelementptr inbounds i8, ptr addrspace(11) %2957, i32 8
%2959 = load i64, ptr addrspace(11) %2958, align 8
%2960 = load i64, ptr addrspace(11) %2957, align 8
%2961 = sub i64 %2959, %2960
%2962 = add i64 1, %2961
%2963 = mul i64 %2962, 1
%2964 = icmp ne i64 %2963, -9223372036854775808
%2965 = or i1 true, %2964
%2966 = and i1 true, %2965
%2967 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %2966, label %4446, label %4444
2968: ; preds = %4446
br label %2972
2969: ; preds = %2948
store ptr addrspace(10) %2281, ptr %227, align 8
%2970 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %2970, ptr readonly captures(none) %227, i64 signext 10) #1
call void @llvm.trap()
unreachable
2971: ; preds = %4446
br label %2972
2972: ; preds = %2971, %2968
%2973 = phi i64 [ %4449, %2968 ], [ 0, %2971 ]
%2974 = icmp slt i64 0, %2973
%2975 = xor i1 %2974, true
%2976 = select i1 %2975, i64 0, i64 %2973
%2977 = sub i64 %2955, 1
%2978 = icmp ult i64 %2977, %2976
%2979 = xor i1 %2978, true
br i1 %2979, label %3009, label %2980
2980: ; preds = %2972
br label %2981
2981: ; preds = %2980, %2954
%2982 = load ptr addrspace(10), ptr %4, align 8
%2983 = addrspacecast ptr addrspace(10) %2982 to ptr addrspace(11)
%2984 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2983, i32 0, i32 0
%2985 = load ptr, ptr addrspace(11) %2984, align 8
%2986 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %2983, i32 0, i32 1
%2987 = load ptr addrspace(10), ptr addrspace(11) %2986, align 8
%2988 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %2985, 0
%2989 = insertvalue { ptr, ptr addrspace(10) } %2988, ptr addrspace(10) %2987, 1
%2990 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%2991 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%2992 = load i64, ptr addrspace(11) %2991, align 8
%2993 = mul i64 %2992, 1
%2994 = load i64, ptr addrspace(11) %2990, align 8
%2995 = add i64 %2994, %2993
%2996 = sub i64 %2995, 1
%2997 = mul i64 %2996, 1
%2998 = getelementptr inbounds i8, ptr %138, i32 0
store i64 %2997, ptr %139, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2998, ptr align 8 %139, i64 8, i1 false)
%2999 = getelementptr inbounds i8, ptr %138, i32 8
store { ptr, ptr addrspace(10) } %2989, ptr %140, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2999, ptr align 8 %140, i64 8, i1 false)
%3000 = getelementptr inbounds i8, ptr %140, i32 8
%3001 = load ptr addrspace(10), ptr %3000, align 8
%3002 = extractvalue { ptr, ptr addrspace(10) } %2989, 0
%3003 = getelementptr i8, ptr %3002, i64 %2997
%3004 = sub i64 %2955, 1
%3005 = mul i64 8, %3004
%3006 = getelementptr i8, ptr %3003, i64 %3005
%3007 = getelementptr inbounds i64, ptr %3006, i64 0
%3008 = load i64, ptr %3007, align 1
br label %3011
3009: ; preds = %2972
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %2955) #1
call void @llvm.trap()
unreachable
3010: ; preds = %2938
br label %3011
3011: ; preds = %3010, %2981
%3012 = phi i64 [ %3008, %2981 ], [ 0, %3010 ]
%3013 = load i64, ptr %2942, align 8
%3014 = xor i64 %3013, %3012
%3015 = getelementptr inbounds i8, ptr %103, i32 80
%3016 = sub i64 %2215, %2184
%3017 = add i64 1, %3016
%3018 = icmp ult i64 10, %3017
%3019 = xor i1 %3018, true
br i1 %3019, label %3083, label %3020
3020: ; preds = %3011
br i1 false, label %3027, label %3021
3021: ; preds = %3020
%3022 = sub i64 %2215, %2184
%3023 = add i64 1, %3022
%3024 = icmp ult i64 10, %3023
%3025 = xor i1 %3024, true
br i1 %3025, label %3042, label %3026
3026: ; preds = %3021
br label %3027
3027: ; preds = %3026, %3020
%3028 = add i64 %2279, 11
br i1 true, label %3054, label %3029
3029: ; preds = %3027
%3030 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3031 = getelementptr inbounds i8, ptr addrspace(11) %3030, i32 8
%3032 = load i64, ptr addrspace(11) %3031, align 8
%3033 = load i64, ptr addrspace(11) %3030, align 8
%3034 = sub i64 %3032, %3033
%3035 = add i64 1, %3034
%3036 = mul i64 %3035, 1
%3037 = icmp ne i64 %3036, -9223372036854775808
%3038 = or i1 true, %3037
%3039 = and i1 true, %3038
%3040 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3039, label %4454, label %4452
3041: ; preds = %4454
br label %3045
3042: ; preds = %3021
store ptr addrspace(10) %2281, ptr %226, align 8
%3043 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3043, ptr readonly captures(none) %226, i64 signext 11) #1
call void @llvm.trap()
unreachable
3044: ; preds = %4454
br label %3045
3045: ; preds = %3044, %3041
%3046 = phi i64 [ %4457, %3041 ], [ 0, %3044 ]
%3047 = icmp slt i64 0, %3046
%3048 = xor i1 %3047, true
%3049 = select i1 %3048, i64 0, i64 %3046
%3050 = sub i64 %3028, 1
%3051 = icmp ult i64 %3050, %3049
%3052 = xor i1 %3051, true
br i1 %3052, label %3082, label %3053
3053: ; preds = %3045
br label %3054
3054: ; preds = %3053, %3027
%3055 = load ptr addrspace(10), ptr %4, align 8
%3056 = addrspacecast ptr addrspace(10) %3055 to ptr addrspace(11)
%3057 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3056, i32 0, i32 0
%3058 = load ptr, ptr addrspace(11) %3057, align 8
%3059 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3056, i32 0, i32 1
%3060 = load ptr addrspace(10), ptr addrspace(11) %3059, align 8
%3061 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3058, 0
%3062 = insertvalue { ptr, ptr addrspace(10) } %3061, ptr addrspace(10) %3060, 1
%3063 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3064 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3065 = load i64, ptr addrspace(11) %3064, align 8
%3066 = mul i64 %3065, 1
%3067 = load i64, ptr addrspace(11) %3063, align 8
%3068 = add i64 %3067, %3066
%3069 = sub i64 %3068, 1
%3070 = mul i64 %3069, 1
%3071 = getelementptr inbounds i8, ptr %141, i32 0
store i64 %3070, ptr %142, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3071, ptr align 8 %142, i64 8, i1 false)
%3072 = getelementptr inbounds i8, ptr %141, i32 8
store { ptr, ptr addrspace(10) } %3062, ptr %143, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3072, ptr align 8 %143, i64 8, i1 false)
%3073 = getelementptr inbounds i8, ptr %143, i32 8
%3074 = load ptr addrspace(10), ptr %3073, align 8
%3075 = extractvalue { ptr, ptr addrspace(10) } %3062, 0
%3076 = getelementptr i8, ptr %3075, i64 %3070
%3077 = sub i64 %3028, 1
%3078 = mul i64 8, %3077
%3079 = getelementptr i8, ptr %3076, i64 %3078
%3080 = getelementptr inbounds i64, ptr %3079, i64 0
%3081 = load i64, ptr %3080, align 1
br label %3084
3082: ; preds = %3045
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3028) #1
call void @llvm.trap()
unreachable
3083: ; preds = %3011
br label %3084
3084: ; preds = %3083, %3054
%3085 = phi i64 [ %3081, %3054 ], [ 0, %3083 ]
%3086 = load i64, ptr %3015, align 8
%3087 = xor i64 %3086, %3085
%3088 = getelementptr inbounds i8, ptr %103, i32 88
%3089 = sub i64 %2215, %2184
%3090 = add i64 1, %3089
%3091 = icmp ult i64 11, %3090
%3092 = xor i1 %3091, true
br i1 %3092, label %3156, label %3093
3093: ; preds = %3084
br i1 false, label %3100, label %3094
3094: ; preds = %3093
%3095 = sub i64 %2215, %2184
%3096 = add i64 1, %3095
%3097 = icmp ult i64 11, %3096
%3098 = xor i1 %3097, true
br i1 %3098, label %3115, label %3099
3099: ; preds = %3094
br label %3100
3100: ; preds = %3099, %3093
%3101 = add i64 %2279, 12
br i1 true, label %3127, label %3102
3102: ; preds = %3100
%3103 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3104 = getelementptr inbounds i8, ptr addrspace(11) %3103, i32 8
%3105 = load i64, ptr addrspace(11) %3104, align 8
%3106 = load i64, ptr addrspace(11) %3103, align 8
%3107 = sub i64 %3105, %3106
%3108 = add i64 1, %3107
%3109 = mul i64 %3108, 1
%3110 = icmp ne i64 %3109, -9223372036854775808
%3111 = or i1 true, %3110
%3112 = and i1 true, %3111
%3113 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3112, label %4462, label %4460
3114: ; preds = %4462
br label %3118
3115: ; preds = %3094
store ptr addrspace(10) %2281, ptr %225, align 8
%3116 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3116, ptr readonly captures(none) %225, i64 signext 12) #1
call void @llvm.trap()
unreachable
3117: ; preds = %4462
br label %3118
3118: ; preds = %3117, %3114
%3119 = phi i64 [ %4465, %3114 ], [ 0, %3117 ]
%3120 = icmp slt i64 0, %3119
%3121 = xor i1 %3120, true
%3122 = select i1 %3121, i64 0, i64 %3119
%3123 = sub i64 %3101, 1
%3124 = icmp ult i64 %3123, %3122
%3125 = xor i1 %3124, true
br i1 %3125, label %3155, label %3126
3126: ; preds = %3118
br label %3127
3127: ; preds = %3126, %3100
%3128 = load ptr addrspace(10), ptr %4, align 8
%3129 = addrspacecast ptr addrspace(10) %3128 to ptr addrspace(11)
%3130 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3129, i32 0, i32 0
%3131 = load ptr, ptr addrspace(11) %3130, align 8
%3132 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3129, i32 0, i32 1
%3133 = load ptr addrspace(10), ptr addrspace(11) %3132, align 8
%3134 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3131, 0
%3135 = insertvalue { ptr, ptr addrspace(10) } %3134, ptr addrspace(10) %3133, 1
%3136 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3137 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3138 = load i64, ptr addrspace(11) %3137, align 8
%3139 = mul i64 %3138, 1
%3140 = load i64, ptr addrspace(11) %3136, align 8
%3141 = add i64 %3140, %3139
%3142 = sub i64 %3141, 1
%3143 = mul i64 %3142, 1
%3144 = getelementptr inbounds i8, ptr %144, i32 0
store i64 %3143, ptr %145, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3144, ptr align 8 %145, i64 8, i1 false)
%3145 = getelementptr inbounds i8, ptr %144, i32 8
store { ptr, ptr addrspace(10) } %3135, ptr %146, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3145, ptr align 8 %146, i64 8, i1 false)
%3146 = getelementptr inbounds i8, ptr %146, i32 8
%3147 = load ptr addrspace(10), ptr %3146, align 8
%3148 = extractvalue { ptr, ptr addrspace(10) } %3135, 0
%3149 = getelementptr i8, ptr %3148, i64 %3143
%3150 = sub i64 %3101, 1
%3151 = mul i64 8, %3150
%3152 = getelementptr i8, ptr %3149, i64 %3151
%3153 = getelementptr inbounds i64, ptr %3152, i64 0
%3154 = load i64, ptr %3153, align 1
br label %3157
3155: ; preds = %3118
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3101) #1
call void @llvm.trap()
unreachable
3156: ; preds = %3084
br label %3157
3157: ; preds = %3156, %3127
%3158 = phi i64 [ %3154, %3127 ], [ 0, %3156 ]
%3159 = load i64, ptr %3088, align 8
%3160 = xor i64 %3159, %3158
%3161 = getelementptr inbounds i8, ptr %103, i32 96
%3162 = sub i64 %2215, %2184
%3163 = add i64 1, %3162
%3164 = icmp ult i64 12, %3163
%3165 = xor i1 %3164, true
br i1 %3165, label %3229, label %3166
3166: ; preds = %3157
br i1 false, label %3173, label %3167
3167: ; preds = %3166
%3168 = sub i64 %2215, %2184
%3169 = add i64 1, %3168
%3170 = icmp ult i64 12, %3169
%3171 = xor i1 %3170, true
br i1 %3171, label %3188, label %3172
3172: ; preds = %3167
br label %3173
3173: ; preds = %3172, %3166
%3174 = add i64 %2279, 13
br i1 true, label %3200, label %3175
3175: ; preds = %3173
%3176 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3177 = getelementptr inbounds i8, ptr addrspace(11) %3176, i32 8
%3178 = load i64, ptr addrspace(11) %3177, align 8
%3179 = load i64, ptr addrspace(11) %3176, align 8
%3180 = sub i64 %3178, %3179
%3181 = add i64 1, %3180
%3182 = mul i64 %3181, 1
%3183 = icmp ne i64 %3182, -9223372036854775808
%3184 = or i1 true, %3183
%3185 = and i1 true, %3184
%3186 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3185, label %4470, label %4468
3187: ; preds = %4470
br label %3191
3188: ; preds = %3167
store ptr addrspace(10) %2281, ptr %224, align 8
%3189 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3189, ptr readonly captures(none) %224, i64 signext 13) #1
call void @llvm.trap()
unreachable
3190: ; preds = %4470
br label %3191
3191: ; preds = %3190, %3187
%3192 = phi i64 [ %4473, %3187 ], [ 0, %3190 ]
%3193 = icmp slt i64 0, %3192
%3194 = xor i1 %3193, true
%3195 = select i1 %3194, i64 0, i64 %3192
%3196 = sub i64 %3174, 1
%3197 = icmp ult i64 %3196, %3195
%3198 = xor i1 %3197, true
br i1 %3198, label %3228, label %3199
3199: ; preds = %3191
br label %3200
3200: ; preds = %3199, %3173
%3201 = load ptr addrspace(10), ptr %4, align 8
%3202 = addrspacecast ptr addrspace(10) %3201 to ptr addrspace(11)
%3203 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3202, i32 0, i32 0
%3204 = load ptr, ptr addrspace(11) %3203, align 8
%3205 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3202, i32 0, i32 1
%3206 = load ptr addrspace(10), ptr addrspace(11) %3205, align 8
%3207 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3204, 0
%3208 = insertvalue { ptr, ptr addrspace(10) } %3207, ptr addrspace(10) %3206, 1
%3209 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3210 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3211 = load i64, ptr addrspace(11) %3210, align 8
%3212 = mul i64 %3211, 1
%3213 = load i64, ptr addrspace(11) %3209, align 8
%3214 = add i64 %3213, %3212
%3215 = sub i64 %3214, 1
%3216 = mul i64 %3215, 1
%3217 = getelementptr inbounds i8, ptr %147, i32 0
store i64 %3216, ptr %148, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3217, ptr align 8 %148, i64 8, i1 false)
%3218 = getelementptr inbounds i8, ptr %147, i32 8
store { ptr, ptr addrspace(10) } %3208, ptr %149, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3218, ptr align 8 %149, i64 8, i1 false)
%3219 = getelementptr inbounds i8, ptr %149, i32 8
%3220 = load ptr addrspace(10), ptr %3219, align 8
%3221 = extractvalue { ptr, ptr addrspace(10) } %3208, 0
%3222 = getelementptr i8, ptr %3221, i64 %3216
%3223 = sub i64 %3174, 1
%3224 = mul i64 8, %3223
%3225 = getelementptr i8, ptr %3222, i64 %3224
%3226 = getelementptr inbounds i64, ptr %3225, i64 0
%3227 = load i64, ptr %3226, align 1
br label %3230
3228: ; preds = %3191
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3174) #1
call void @llvm.trap()
unreachable
3229: ; preds = %3157
br label %3230
3230: ; preds = %3229, %3200
%3231 = phi i64 [ %3227, %3200 ], [ 0, %3229 ]
%3232 = load i64, ptr %3161, align 8
%3233 = xor i64 %3232, %3231
%3234 = getelementptr inbounds i8, ptr %103, i32 104
%3235 = sub i64 %2215, %2184
%3236 = add i64 1, %3235
%3237 = icmp ult i64 13, %3236
%3238 = xor i1 %3237, true
br i1 %3238, label %3302, label %3239
3239: ; preds = %3230
br i1 false, label %3246, label %3240
3240: ; preds = %3239
%3241 = sub i64 %2215, %2184
%3242 = add i64 1, %3241
%3243 = icmp ult i64 13, %3242
%3244 = xor i1 %3243, true
br i1 %3244, label %3261, label %3245
3245: ; preds = %3240
br label %3246
3246: ; preds = %3245, %3239
%3247 = add i64 %2279, 14
br i1 true, label %3273, label %3248
3248: ; preds = %3246
%3249 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3250 = getelementptr inbounds i8, ptr addrspace(11) %3249, i32 8
%3251 = load i64, ptr addrspace(11) %3250, align 8
%3252 = load i64, ptr addrspace(11) %3249, align 8
%3253 = sub i64 %3251, %3252
%3254 = add i64 1, %3253
%3255 = mul i64 %3254, 1
%3256 = icmp ne i64 %3255, -9223372036854775808
%3257 = or i1 true, %3256
%3258 = and i1 true, %3257
%3259 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3258, label %4478, label %4476
3260: ; preds = %4478
br label %3264
3261: ; preds = %3240
store ptr addrspace(10) %2281, ptr %223, align 8
%3262 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3262, ptr readonly captures(none) %223, i64 signext 14) #1
call void @llvm.trap()
unreachable
3263: ; preds = %4478
br label %3264
3264: ; preds = %3263, %3260
%3265 = phi i64 [ %4481, %3260 ], [ 0, %3263 ]
%3266 = icmp slt i64 0, %3265
%3267 = xor i1 %3266, true
%3268 = select i1 %3267, i64 0, i64 %3265
%3269 = sub i64 %3247, 1
%3270 = icmp ult i64 %3269, %3268
%3271 = xor i1 %3270, true
br i1 %3271, label %3301, label %3272
3272: ; preds = %3264
br label %3273
3273: ; preds = %3272, %3246
%3274 = load ptr addrspace(10), ptr %4, align 8
%3275 = addrspacecast ptr addrspace(10) %3274 to ptr addrspace(11)
%3276 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3275, i32 0, i32 0
%3277 = load ptr, ptr addrspace(11) %3276, align 8
%3278 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3275, i32 0, i32 1
%3279 = load ptr addrspace(10), ptr addrspace(11) %3278, align 8
%3280 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3277, 0
%3281 = insertvalue { ptr, ptr addrspace(10) } %3280, ptr addrspace(10) %3279, 1
%3282 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3283 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3284 = load i64, ptr addrspace(11) %3283, align 8
%3285 = mul i64 %3284, 1
%3286 = load i64, ptr addrspace(11) %3282, align 8
%3287 = add i64 %3286, %3285
%3288 = sub i64 %3287, 1
%3289 = mul i64 %3288, 1
%3290 = getelementptr inbounds i8, ptr %150, i32 0
store i64 %3289, ptr %151, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3290, ptr align 8 %151, i64 8, i1 false)
%3291 = getelementptr inbounds i8, ptr %150, i32 8
store { ptr, ptr addrspace(10) } %3281, ptr %152, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3291, ptr align 8 %152, i64 8, i1 false)
%3292 = getelementptr inbounds i8, ptr %152, i32 8
%3293 = load ptr addrspace(10), ptr %3292, align 8
%3294 = extractvalue { ptr, ptr addrspace(10) } %3281, 0
%3295 = getelementptr i8, ptr %3294, i64 %3289
%3296 = sub i64 %3247, 1
%3297 = mul i64 8, %3296
%3298 = getelementptr i8, ptr %3295, i64 %3297
%3299 = getelementptr inbounds i64, ptr %3298, i64 0
%3300 = load i64, ptr %3299, align 1
br label %3303
3301: ; preds = %3264
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3247) #1
call void @llvm.trap()
unreachable
3302: ; preds = %3230
br label %3303
3303: ; preds = %3302, %3273
%3304 = phi i64 [ %3300, %3273 ], [ 0, %3302 ]
%3305 = load i64, ptr %3234, align 8
%3306 = xor i64 %3305, %3304
%3307 = getelementptr inbounds i8, ptr %103, i32 112
%3308 = sub i64 %2215, %2184
%3309 = add i64 1, %3308
%3310 = icmp ult i64 14, %3309
%3311 = xor i1 %3310, true
br i1 %3311, label %3375, label %3312
3312: ; preds = %3303
br i1 false, label %3319, label %3313
3313: ; preds = %3312
%3314 = sub i64 %2215, %2184
%3315 = add i64 1, %3314
%3316 = icmp ult i64 14, %3315
%3317 = xor i1 %3316, true
br i1 %3317, label %3334, label %3318
3318: ; preds = %3313
br label %3319
3319: ; preds = %3318, %3312
%3320 = add i64 %2279, 15
br i1 true, label %3346, label %3321
3321: ; preds = %3319
%3322 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3323 = getelementptr inbounds i8, ptr addrspace(11) %3322, i32 8
%3324 = load i64, ptr addrspace(11) %3323, align 8
%3325 = load i64, ptr addrspace(11) %3322, align 8
%3326 = sub i64 %3324, %3325
%3327 = add i64 1, %3326
%3328 = mul i64 %3327, 1
%3329 = icmp ne i64 %3328, -9223372036854775808
%3330 = or i1 true, %3329
%3331 = and i1 true, %3330
%3332 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3331, label %4486, label %4484
3333: ; preds = %4486
br label %3337
3334: ; preds = %3313
store ptr addrspace(10) %2281, ptr %222, align 8
%3335 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3335, ptr readonly captures(none) %222, i64 signext 15) #1
call void @llvm.trap()
unreachable
3336: ; preds = %4486
br label %3337
3337: ; preds = %3336, %3333
%3338 = phi i64 [ %4489, %3333 ], [ 0, %3336 ]
%3339 = icmp slt i64 0, %3338
%3340 = xor i1 %3339, true
%3341 = select i1 %3340, i64 0, i64 %3338
%3342 = sub i64 %3320, 1
%3343 = icmp ult i64 %3342, %3341
%3344 = xor i1 %3343, true
br i1 %3344, label %3374, label %3345
3345: ; preds = %3337
br label %3346
3346: ; preds = %3345, %3319
%3347 = load ptr addrspace(10), ptr %4, align 8
%3348 = addrspacecast ptr addrspace(10) %3347 to ptr addrspace(11)
%3349 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3348, i32 0, i32 0
%3350 = load ptr, ptr addrspace(11) %3349, align 8
%3351 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3348, i32 0, i32 1
%3352 = load ptr addrspace(10), ptr addrspace(11) %3351, align 8
%3353 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3350, 0
%3354 = insertvalue { ptr, ptr addrspace(10) } %3353, ptr addrspace(10) %3352, 1
%3355 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3356 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3357 = load i64, ptr addrspace(11) %3356, align 8
%3358 = mul i64 %3357, 1
%3359 = load i64, ptr addrspace(11) %3355, align 8
%3360 = add i64 %3359, %3358
%3361 = sub i64 %3360, 1
%3362 = mul i64 %3361, 1
%3363 = getelementptr inbounds i8, ptr %153, i32 0
store i64 %3362, ptr %154, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3363, ptr align 8 %154, i64 8, i1 false)
%3364 = getelementptr inbounds i8, ptr %153, i32 8
store { ptr, ptr addrspace(10) } %3354, ptr %155, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3364, ptr align 8 %155, i64 8, i1 false)
%3365 = getelementptr inbounds i8, ptr %155, i32 8
%3366 = load ptr addrspace(10), ptr %3365, align 8
%3367 = extractvalue { ptr, ptr addrspace(10) } %3354, 0
%3368 = getelementptr i8, ptr %3367, i64 %3362
%3369 = sub i64 %3320, 1
%3370 = mul i64 8, %3369
%3371 = getelementptr i8, ptr %3368, i64 %3370
%3372 = getelementptr inbounds i64, ptr %3371, i64 0
%3373 = load i64, ptr %3372, align 1
br label %3376
3374: ; preds = %3337
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3320) #1
call void @llvm.trap()
unreachable
3375: ; preds = %3303
br label %3376
3376: ; preds = %3375, %3346
%3377 = phi i64 [ %3373, %3346 ], [ 0, %3375 ]
%3378 = load i64, ptr %3307, align 8
%3379 = xor i64 %3378, %3377
%3380 = getelementptr inbounds i8, ptr %103, i32 120
%3381 = sub i64 %2215, %2184
%3382 = add i64 1, %3381
%3383 = icmp ult i64 15, %3382
%3384 = xor i1 %3383, true
br i1 %3384, label %3448, label %3385
3385: ; preds = %3376
br i1 false, label %3392, label %3386
3386: ; preds = %3385
%3387 = sub i64 %2215, %2184
%3388 = add i64 1, %3387
%3389 = icmp ult i64 15, %3388
%3390 = xor i1 %3389, true
br i1 %3390, label %3407, label %3391
3391: ; preds = %3386
br label %3392
3392: ; preds = %3391, %3385
%3393 = add i64 %2279, 16
br i1 true, label %3419, label %3394
3394: ; preds = %3392
%3395 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3396 = getelementptr inbounds i8, ptr addrspace(11) %3395, i32 8
%3397 = load i64, ptr addrspace(11) %3396, align 8
%3398 = load i64, ptr addrspace(11) %3395, align 8
%3399 = sub i64 %3397, %3398
%3400 = add i64 1, %3399
%3401 = mul i64 %3400, 1
%3402 = icmp ne i64 %3401, -9223372036854775808
%3403 = or i1 true, %3402
%3404 = and i1 true, %3403
%3405 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3404, label %4494, label %4492
3406: ; preds = %4494
br label %3410
3407: ; preds = %3386
store ptr addrspace(10) %2281, ptr %221, align 8
%3408 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3408, ptr readonly captures(none) %221, i64 signext 16) #1
call void @llvm.trap()
unreachable
3409: ; preds = %4494
br label %3410
3410: ; preds = %3409, %3406
%3411 = phi i64 [ %4497, %3406 ], [ 0, %3409 ]
%3412 = icmp slt i64 0, %3411
%3413 = xor i1 %3412, true
%3414 = select i1 %3413, i64 0, i64 %3411
%3415 = sub i64 %3393, 1
%3416 = icmp ult i64 %3415, %3414
%3417 = xor i1 %3416, true
br i1 %3417, label %3447, label %3418
3418: ; preds = %3410
br label %3419
3419: ; preds = %3418, %3392
%3420 = load ptr addrspace(10), ptr %4, align 8
%3421 = addrspacecast ptr addrspace(10) %3420 to ptr addrspace(11)
%3422 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3421, i32 0, i32 0
%3423 = load ptr, ptr addrspace(11) %3422, align 8
%3424 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3421, i32 0, i32 1
%3425 = load ptr addrspace(10), ptr addrspace(11) %3424, align 8
%3426 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3423, 0
%3427 = insertvalue { ptr, ptr addrspace(10) } %3426, ptr addrspace(10) %3425, 1
%3428 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3429 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3430 = load i64, ptr addrspace(11) %3429, align 8
%3431 = mul i64 %3430, 1
%3432 = load i64, ptr addrspace(11) %3428, align 8
%3433 = add i64 %3432, %3431
%3434 = sub i64 %3433, 1
%3435 = mul i64 %3434, 1
%3436 = getelementptr inbounds i8, ptr %156, i32 0
store i64 %3435, ptr %157, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3436, ptr align 8 %157, i64 8, i1 false)
%3437 = getelementptr inbounds i8, ptr %156, i32 8
store { ptr, ptr addrspace(10) } %3427, ptr %158, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3437, ptr align 8 %158, i64 8, i1 false)
%3438 = getelementptr inbounds i8, ptr %158, i32 8
%3439 = load ptr addrspace(10), ptr %3438, align 8
%3440 = extractvalue { ptr, ptr addrspace(10) } %3427, 0
%3441 = getelementptr i8, ptr %3440, i64 %3435
%3442 = sub i64 %3393, 1
%3443 = mul i64 8, %3442
%3444 = getelementptr i8, ptr %3441, i64 %3443
%3445 = getelementptr inbounds i64, ptr %3444, i64 0
%3446 = load i64, ptr %3445, align 1
br label %3449
3447: ; preds = %3410
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3393) #1
call void @llvm.trap()
unreachable
3448: ; preds = %3376
br label %3449
3449: ; preds = %3448, %3419
%3450 = phi i64 [ %3446, %3419 ], [ 0, %3448 ]
%3451 = load i64, ptr %3380, align 8
%3452 = xor i64 %3451, %3450
%3453 = getelementptr inbounds i8, ptr %103, i32 128
%3454 = sub i64 %2215, %2184
%3455 = add i64 1, %3454
%3456 = icmp ult i64 16, %3455
%3457 = xor i1 %3456, true
br i1 %3457, label %3521, label %3458
3458: ; preds = %3449
br i1 false, label %3465, label %3459
3459: ; preds = %3458
%3460 = sub i64 %2215, %2184
%3461 = add i64 1, %3460
%3462 = icmp ult i64 16, %3461
%3463 = xor i1 %3462, true
br i1 %3463, label %3480, label %3464
3464: ; preds = %3459
br label %3465
3465: ; preds = %3464, %3458
%3466 = add i64 %2279, 17
br i1 true, label %3492, label %3467
3467: ; preds = %3465
%3468 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3469 = getelementptr inbounds i8, ptr addrspace(11) %3468, i32 8
%3470 = load i64, ptr addrspace(11) %3469, align 8
%3471 = load i64, ptr addrspace(11) %3468, align 8
%3472 = sub i64 %3470, %3471
%3473 = add i64 1, %3472
%3474 = mul i64 %3473, 1
%3475 = icmp ne i64 %3474, -9223372036854775808
%3476 = or i1 true, %3475
%3477 = and i1 true, %3476
%3478 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3477, label %4502, label %4500
3479: ; preds = %4502
br label %3483
3480: ; preds = %3459
store ptr addrspace(10) %2281, ptr %220, align 8
%3481 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3481, ptr readonly captures(none) %220, i64 signext 17) #1
call void @llvm.trap()
unreachable
3482: ; preds = %4502
br label %3483
3483: ; preds = %3482, %3479
%3484 = phi i64 [ %4505, %3479 ], [ 0, %3482 ]
%3485 = icmp slt i64 0, %3484
%3486 = xor i1 %3485, true
%3487 = select i1 %3486, i64 0, i64 %3484
%3488 = sub i64 %3466, 1
%3489 = icmp ult i64 %3488, %3487
%3490 = xor i1 %3489, true
br i1 %3490, label %3520, label %3491
3491: ; preds = %3483
br label %3492
3492: ; preds = %3491, %3465
%3493 = load ptr addrspace(10), ptr %4, align 8
%3494 = addrspacecast ptr addrspace(10) %3493 to ptr addrspace(11)
%3495 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3494, i32 0, i32 0
%3496 = load ptr, ptr addrspace(11) %3495, align 8
%3497 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3494, i32 0, i32 1
%3498 = load ptr addrspace(10), ptr addrspace(11) %3497, align 8
%3499 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3496, 0
%3500 = insertvalue { ptr, ptr addrspace(10) } %3499, ptr addrspace(10) %3498, 1
%3501 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3502 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3503 = load i64, ptr addrspace(11) %3502, align 8
%3504 = mul i64 %3503, 1
%3505 = load i64, ptr addrspace(11) %3501, align 8
%3506 = add i64 %3505, %3504
%3507 = sub i64 %3506, 1
%3508 = mul i64 %3507, 1
%3509 = getelementptr inbounds i8, ptr %159, i32 0
store i64 %3508, ptr %160, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3509, ptr align 8 %160, i64 8, i1 false)
%3510 = getelementptr inbounds i8, ptr %159, i32 8
store { ptr, ptr addrspace(10) } %3500, ptr %161, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3510, ptr align 8 %161, i64 8, i1 false)
%3511 = getelementptr inbounds i8, ptr %161, i32 8
%3512 = load ptr addrspace(10), ptr %3511, align 8
%3513 = extractvalue { ptr, ptr addrspace(10) } %3500, 0
%3514 = getelementptr i8, ptr %3513, i64 %3508
%3515 = sub i64 %3466, 1
%3516 = mul i64 8, %3515
%3517 = getelementptr i8, ptr %3514, i64 %3516
%3518 = getelementptr inbounds i64, ptr %3517, i64 0
%3519 = load i64, ptr %3518, align 1
br label %3522
3520: ; preds = %3483
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3466) #1
call void @llvm.trap()
unreachable
3521: ; preds = %3449
br label %3522
3522: ; preds = %3521, %3492
%3523 = phi i64 [ %3519, %3492 ], [ 0, %3521 ]
%3524 = load i64, ptr %3453, align 8
%3525 = xor i64 %3524, %3523
%3526 = getelementptr inbounds i8, ptr %103, i32 136
%3527 = sub i64 %2215, %2184
%3528 = add i64 1, %3527
%3529 = icmp ult i64 17, %3528
%3530 = xor i1 %3529, true
br i1 %3530, label %3594, label %3531
3531: ; preds = %3522
br i1 false, label %3538, label %3532
3532: ; preds = %3531
%3533 = sub i64 %2215, %2184
%3534 = add i64 1, %3533
%3535 = icmp ult i64 17, %3534
%3536 = xor i1 %3535, true
br i1 %3536, label %3553, label %3537
3537: ; preds = %3532
br label %3538
3538: ; preds = %3537, %3531
%3539 = add i64 %2279, 18
br i1 true, label %3565, label %3540
3540: ; preds = %3538
%3541 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3542 = getelementptr inbounds i8, ptr addrspace(11) %3541, i32 8
%3543 = load i64, ptr addrspace(11) %3542, align 8
%3544 = load i64, ptr addrspace(11) %3541, align 8
%3545 = sub i64 %3543, %3544
%3546 = add i64 1, %3545
%3547 = mul i64 %3546, 1
%3548 = icmp ne i64 %3547, -9223372036854775808
%3549 = or i1 true, %3548
%3550 = and i1 true, %3549
%3551 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3550, label %4510, label %4508
3552: ; preds = %4510
br label %3556
3553: ; preds = %3532
store ptr addrspace(10) %2281, ptr %219, align 8
%3554 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3554, ptr readonly captures(none) %219, i64 signext 18) #1
call void @llvm.trap()
unreachable
3555: ; preds = %4510
br label %3556
3556: ; preds = %3555, %3552
%3557 = phi i64 [ %4513, %3552 ], [ 0, %3555 ]
%3558 = icmp slt i64 0, %3557
%3559 = xor i1 %3558, true
%3560 = select i1 %3559, i64 0, i64 %3557
%3561 = sub i64 %3539, 1
%3562 = icmp ult i64 %3561, %3560
%3563 = xor i1 %3562, true
br i1 %3563, label %3593, label %3564
3564: ; preds = %3556
br label %3565
3565: ; preds = %3564, %3538
%3566 = load ptr addrspace(10), ptr %4, align 8
%3567 = addrspacecast ptr addrspace(10) %3566 to ptr addrspace(11)
%3568 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3567, i32 0, i32 0
%3569 = load ptr, ptr addrspace(11) %3568, align 8
%3570 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3567, i32 0, i32 1
%3571 = load ptr addrspace(10), ptr addrspace(11) %3570, align 8
%3572 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3569, 0
%3573 = insertvalue { ptr, ptr addrspace(10) } %3572, ptr addrspace(10) %3571, 1
%3574 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3575 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3576 = load i64, ptr addrspace(11) %3575, align 8
%3577 = mul i64 %3576, 1
%3578 = load i64, ptr addrspace(11) %3574, align 8
%3579 = add i64 %3578, %3577
%3580 = sub i64 %3579, 1
%3581 = mul i64 %3580, 1
%3582 = getelementptr inbounds i8, ptr %162, i32 0
store i64 %3581, ptr %163, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3582, ptr align 8 %163, i64 8, i1 false)
%3583 = getelementptr inbounds i8, ptr %162, i32 8
store { ptr, ptr addrspace(10) } %3573, ptr %164, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3583, ptr align 8 %164, i64 8, i1 false)
%3584 = getelementptr inbounds i8, ptr %164, i32 8
%3585 = load ptr addrspace(10), ptr %3584, align 8
%3586 = extractvalue { ptr, ptr addrspace(10) } %3573, 0
%3587 = getelementptr i8, ptr %3586, i64 %3581
%3588 = sub i64 %3539, 1
%3589 = mul i64 8, %3588
%3590 = getelementptr i8, ptr %3587, i64 %3589
%3591 = getelementptr inbounds i64, ptr %3590, i64 0
%3592 = load i64, ptr %3591, align 1
br label %3595
3593: ; preds = %3556
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3539) #1
call void @llvm.trap()
unreachable
3594: ; preds = %3522
br label %3595
3595: ; preds = %3594, %3565
%3596 = phi i64 [ %3592, %3565 ], [ 0, %3594 ]
%3597 = load i64, ptr %3526, align 8
%3598 = xor i64 %3597, %3596
%3599 = getelementptr inbounds i8, ptr %103, i32 144
%3600 = sub i64 %2215, %2184
%3601 = add i64 1, %3600
%3602 = icmp ult i64 18, %3601
%3603 = xor i1 %3602, true
br i1 %3603, label %3667, label %3604
3604: ; preds = %3595
br i1 false, label %3611, label %3605
3605: ; preds = %3604
%3606 = sub i64 %2215, %2184
%3607 = add i64 1, %3606
%3608 = icmp ult i64 18, %3607
%3609 = xor i1 %3608, true
br i1 %3609, label %3626, label %3610
3610: ; preds = %3605
br label %3611
3611: ; preds = %3610, %3604
%3612 = add i64 %2279, 19
br i1 true, label %3638, label %3613
3613: ; preds = %3611
%3614 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3615 = getelementptr inbounds i8, ptr addrspace(11) %3614, i32 8
%3616 = load i64, ptr addrspace(11) %3615, align 8
%3617 = load i64, ptr addrspace(11) %3614, align 8
%3618 = sub i64 %3616, %3617
%3619 = add i64 1, %3618
%3620 = mul i64 %3619, 1
%3621 = icmp ne i64 %3620, -9223372036854775808
%3622 = or i1 true, %3621
%3623 = and i1 true, %3622
%3624 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3623, label %4518, label %4516
3625: ; preds = %4518
br label %3629
3626: ; preds = %3605
store ptr addrspace(10) %2281, ptr %218, align 8
%3627 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3627, ptr readonly captures(none) %218, i64 signext 19) #1
call void @llvm.trap()
unreachable
3628: ; preds = %4518
br label %3629
3629: ; preds = %3628, %3625
%3630 = phi i64 [ %4521, %3625 ], [ 0, %3628 ]
%3631 = icmp slt i64 0, %3630
%3632 = xor i1 %3631, true
%3633 = select i1 %3632, i64 0, i64 %3630
%3634 = sub i64 %3612, 1
%3635 = icmp ult i64 %3634, %3633
%3636 = xor i1 %3635, true
br i1 %3636, label %3666, label %3637
3637: ; preds = %3629
br label %3638
3638: ; preds = %3637, %3611
%3639 = load ptr addrspace(10), ptr %4, align 8
%3640 = addrspacecast ptr addrspace(10) %3639 to ptr addrspace(11)
%3641 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3640, i32 0, i32 0
%3642 = load ptr, ptr addrspace(11) %3641, align 8
%3643 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3640, i32 0, i32 1
%3644 = load ptr addrspace(10), ptr addrspace(11) %3643, align 8
%3645 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3642, 0
%3646 = insertvalue { ptr, ptr addrspace(10) } %3645, ptr addrspace(10) %3644, 1
%3647 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3648 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3649 = load i64, ptr addrspace(11) %3648, align 8
%3650 = mul i64 %3649, 1
%3651 = load i64, ptr addrspace(11) %3647, align 8
%3652 = add i64 %3651, %3650
%3653 = sub i64 %3652, 1
%3654 = mul i64 %3653, 1
%3655 = getelementptr inbounds i8, ptr %165, i32 0
store i64 %3654, ptr %166, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3655, ptr align 8 %166, i64 8, i1 false)
%3656 = getelementptr inbounds i8, ptr %165, i32 8
store { ptr, ptr addrspace(10) } %3646, ptr %167, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3656, ptr align 8 %167, i64 8, i1 false)
%3657 = getelementptr inbounds i8, ptr %167, i32 8
%3658 = load ptr addrspace(10), ptr %3657, align 8
%3659 = extractvalue { ptr, ptr addrspace(10) } %3646, 0
%3660 = getelementptr i8, ptr %3659, i64 %3654
%3661 = sub i64 %3612, 1
%3662 = mul i64 8, %3661
%3663 = getelementptr i8, ptr %3660, i64 %3662
%3664 = getelementptr inbounds i64, ptr %3663, i64 0
%3665 = load i64, ptr %3664, align 1
br label %3668
3666: ; preds = %3629
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3612) #1
call void @llvm.trap()
unreachable
3667: ; preds = %3595
br label %3668
3668: ; preds = %3667, %3638
%3669 = phi i64 [ %3665, %3638 ], [ 0, %3667 ]
%3670 = load i64, ptr %3599, align 8
%3671 = xor i64 %3670, %3669
%3672 = getelementptr inbounds i8, ptr %103, i32 152
%3673 = sub i64 %2215, %2184
%3674 = add i64 1, %3673
%3675 = icmp ult i64 19, %3674
%3676 = xor i1 %3675, true
br i1 %3676, label %3740, label %3677
3677: ; preds = %3668
br i1 false, label %3684, label %3678
3678: ; preds = %3677
%3679 = sub i64 %2215, %2184
%3680 = add i64 1, %3679
%3681 = icmp ult i64 19, %3680
%3682 = xor i1 %3681, true
br i1 %3682, label %3699, label %3683
3683: ; preds = %3678
br label %3684
3684: ; preds = %3683, %3677
%3685 = add i64 %2279, 20
br i1 true, label %3711, label %3686
3686: ; preds = %3684
%3687 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3688 = getelementptr inbounds i8, ptr addrspace(11) %3687, i32 8
%3689 = load i64, ptr addrspace(11) %3688, align 8
%3690 = load i64, ptr addrspace(11) %3687, align 8
%3691 = sub i64 %3689, %3690
%3692 = add i64 1, %3691
%3693 = mul i64 %3692, 1
%3694 = icmp ne i64 %3693, -9223372036854775808
%3695 = or i1 true, %3694
%3696 = and i1 true, %3695
%3697 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3696, label %4526, label %4524
3698: ; preds = %4526
br label %3702
3699: ; preds = %3678
store ptr addrspace(10) %2281, ptr %217, align 8
%3700 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3700, ptr readonly captures(none) %217, i64 signext 20) #1
call void @llvm.trap()
unreachable
3701: ; preds = %4526
br label %3702
3702: ; preds = %3701, %3698
%3703 = phi i64 [ %4529, %3698 ], [ 0, %3701 ]
%3704 = icmp slt i64 0, %3703
%3705 = xor i1 %3704, true
%3706 = select i1 %3705, i64 0, i64 %3703
%3707 = sub i64 %3685, 1
%3708 = icmp ult i64 %3707, %3706
%3709 = xor i1 %3708, true
br i1 %3709, label %3739, label %3710
3710: ; preds = %3702
br label %3711
3711: ; preds = %3710, %3684
%3712 = load ptr addrspace(10), ptr %4, align 8
%3713 = addrspacecast ptr addrspace(10) %3712 to ptr addrspace(11)
%3714 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3713, i32 0, i32 0
%3715 = load ptr, ptr addrspace(11) %3714, align 8
%3716 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3713, i32 0, i32 1
%3717 = load ptr addrspace(10), ptr addrspace(11) %3716, align 8
%3718 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3715, 0
%3719 = insertvalue { ptr, ptr addrspace(10) } %3718, ptr addrspace(10) %3717, 1
%3720 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3721 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3722 = load i64, ptr addrspace(11) %3721, align 8
%3723 = mul i64 %3722, 1
%3724 = load i64, ptr addrspace(11) %3720, align 8
%3725 = add i64 %3724, %3723
%3726 = sub i64 %3725, 1
%3727 = mul i64 %3726, 1
%3728 = getelementptr inbounds i8, ptr %168, i32 0
store i64 %3727, ptr %169, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3728, ptr align 8 %169, i64 8, i1 false)
%3729 = getelementptr inbounds i8, ptr %168, i32 8
store { ptr, ptr addrspace(10) } %3719, ptr %170, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3729, ptr align 8 %170, i64 8, i1 false)
%3730 = getelementptr inbounds i8, ptr %170, i32 8
%3731 = load ptr addrspace(10), ptr %3730, align 8
%3732 = extractvalue { ptr, ptr addrspace(10) } %3719, 0
%3733 = getelementptr i8, ptr %3732, i64 %3727
%3734 = sub i64 %3685, 1
%3735 = mul i64 8, %3734
%3736 = getelementptr i8, ptr %3733, i64 %3735
%3737 = getelementptr inbounds i64, ptr %3736, i64 0
%3738 = load i64, ptr %3737, align 1
br label %3741
3739: ; preds = %3702
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3685) #1
call void @llvm.trap()
unreachable
3740: ; preds = %3668
br label %3741
3741: ; preds = %3740, %3711
%3742 = phi i64 [ %3738, %3711 ], [ 0, %3740 ]
%3743 = load i64, ptr %3672, align 8
%3744 = xor i64 %3743, %3742
%3745 = getelementptr inbounds i8, ptr %103, i32 160
%3746 = sub i64 %2215, %2184
%3747 = add i64 1, %3746
%3748 = icmp ult i64 20, %3747
%3749 = xor i1 %3748, true
br i1 %3749, label %3813, label %3750
3750: ; preds = %3741
br i1 false, label %3757, label %3751
3751: ; preds = %3750
%3752 = sub i64 %2215, %2184
%3753 = add i64 1, %3752
%3754 = icmp ult i64 20, %3753
%3755 = xor i1 %3754, true
br i1 %3755, label %3772, label %3756
3756: ; preds = %3751
br label %3757
3757: ; preds = %3756, %3750
%3758 = add i64 %2279, 21
br i1 true, label %3784, label %3759
3759: ; preds = %3757
%3760 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3761 = getelementptr inbounds i8, ptr addrspace(11) %3760, i32 8
%3762 = load i64, ptr addrspace(11) %3761, align 8
%3763 = load i64, ptr addrspace(11) %3760, align 8
%3764 = sub i64 %3762, %3763
%3765 = add i64 1, %3764
%3766 = mul i64 %3765, 1
%3767 = icmp ne i64 %3766, -9223372036854775808
%3768 = or i1 true, %3767
%3769 = and i1 true, %3768
%3770 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3769, label %4534, label %4532
3771: ; preds = %4534
br label %3775
3772: ; preds = %3751
store ptr addrspace(10) %2281, ptr %216, align 8
%3773 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3773, ptr readonly captures(none) %216, i64 signext 21) #1
call void @llvm.trap()
unreachable
3774: ; preds = %4534
br label %3775
3775: ; preds = %3774, %3771
%3776 = phi i64 [ %4537, %3771 ], [ 0, %3774 ]
%3777 = icmp slt i64 0, %3776
%3778 = xor i1 %3777, true
%3779 = select i1 %3778, i64 0, i64 %3776
%3780 = sub i64 %3758, 1
%3781 = icmp ult i64 %3780, %3779
%3782 = xor i1 %3781, true
br i1 %3782, label %3812, label %3783
3783: ; preds = %3775
br label %3784
3784: ; preds = %3783, %3757
%3785 = load ptr addrspace(10), ptr %4, align 8
%3786 = addrspacecast ptr addrspace(10) %3785 to ptr addrspace(11)
%3787 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3786, i32 0, i32 0
%3788 = load ptr, ptr addrspace(11) %3787, align 8
%3789 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3786, i32 0, i32 1
%3790 = load ptr addrspace(10), ptr addrspace(11) %3789, align 8
%3791 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3788, 0
%3792 = insertvalue { ptr, ptr addrspace(10) } %3791, ptr addrspace(10) %3790, 1
%3793 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3794 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3795 = load i64, ptr addrspace(11) %3794, align 8
%3796 = mul i64 %3795, 1
%3797 = load i64, ptr addrspace(11) %3793, align 8
%3798 = add i64 %3797, %3796
%3799 = sub i64 %3798, 1
%3800 = mul i64 %3799, 1
%3801 = getelementptr inbounds i8, ptr %171, i32 0
store i64 %3800, ptr %172, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3801, ptr align 8 %172, i64 8, i1 false)
%3802 = getelementptr inbounds i8, ptr %171, i32 8
store { ptr, ptr addrspace(10) } %3792, ptr %173, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3802, ptr align 8 %173, i64 8, i1 false)
%3803 = getelementptr inbounds i8, ptr %173, i32 8
%3804 = load ptr addrspace(10), ptr %3803, align 8
%3805 = extractvalue { ptr, ptr addrspace(10) } %3792, 0
%3806 = getelementptr i8, ptr %3805, i64 %3800
%3807 = sub i64 %3758, 1
%3808 = mul i64 8, %3807
%3809 = getelementptr i8, ptr %3806, i64 %3808
%3810 = getelementptr inbounds i64, ptr %3809, i64 0
%3811 = load i64, ptr %3810, align 1
br label %3814
3812: ; preds = %3775
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3758) #1
call void @llvm.trap()
unreachable
3813: ; preds = %3741
br label %3814
3814: ; preds = %3813, %3784
%3815 = phi i64 [ %3811, %3784 ], [ 0, %3813 ]
%3816 = load i64, ptr %3745, align 8
%3817 = xor i64 %3816, %3815
%3818 = getelementptr inbounds i8, ptr %103, i32 168
%3819 = sub i64 %2215, %2184
%3820 = add i64 1, %3819
%3821 = icmp ult i64 21, %3820
%3822 = xor i1 %3821, true
br i1 %3822, label %3886, label %3823
3823: ; preds = %3814
br i1 false, label %3830, label %3824
3824: ; preds = %3823
%3825 = sub i64 %2215, %2184
%3826 = add i64 1, %3825
%3827 = icmp ult i64 21, %3826
%3828 = xor i1 %3827, true
br i1 %3828, label %3845, label %3829
3829: ; preds = %3824
br label %3830
3830: ; preds = %3829, %3823
%3831 = add i64 %2279, 22
br i1 true, label %3857, label %3832
3832: ; preds = %3830
%3833 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3834 = getelementptr inbounds i8, ptr addrspace(11) %3833, i32 8
%3835 = load i64, ptr addrspace(11) %3834, align 8
%3836 = load i64, ptr addrspace(11) %3833, align 8
%3837 = sub i64 %3835, %3836
%3838 = add i64 1, %3837
%3839 = mul i64 %3838, 1
%3840 = icmp ne i64 %3839, -9223372036854775808
%3841 = or i1 true, %3840
%3842 = and i1 true, %3841
%3843 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3842, label %4542, label %4540
3844: ; preds = %4542
br label %3848
3845: ; preds = %3824
store ptr addrspace(10) %2281, ptr %215, align 8
%3846 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3846, ptr readonly captures(none) %215, i64 signext 22) #1
call void @llvm.trap()
unreachable
3847: ; preds = %4542
br label %3848
3848: ; preds = %3847, %3844
%3849 = phi i64 [ %4545, %3844 ], [ 0, %3847 ]
%3850 = icmp slt i64 0, %3849
%3851 = xor i1 %3850, true
%3852 = select i1 %3851, i64 0, i64 %3849
%3853 = sub i64 %3831, 1
%3854 = icmp ult i64 %3853, %3852
%3855 = xor i1 %3854, true
br i1 %3855, label %3885, label %3856
3856: ; preds = %3848
br label %3857
3857: ; preds = %3856, %3830
%3858 = load ptr addrspace(10), ptr %4, align 8
%3859 = addrspacecast ptr addrspace(10) %3858 to ptr addrspace(11)
%3860 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3859, i32 0, i32 0
%3861 = load ptr, ptr addrspace(11) %3860, align 8
%3862 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3859, i32 0, i32 1
%3863 = load ptr addrspace(10), ptr addrspace(11) %3862, align 8
%3864 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3861, 0
%3865 = insertvalue { ptr, ptr addrspace(10) } %3864, ptr addrspace(10) %3863, 1
%3866 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3867 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3868 = load i64, ptr addrspace(11) %3867, align 8
%3869 = mul i64 %3868, 1
%3870 = load i64, ptr addrspace(11) %3866, align 8
%3871 = add i64 %3870, %3869
%3872 = sub i64 %3871, 1
%3873 = mul i64 %3872, 1
%3874 = getelementptr inbounds i8, ptr %174, i32 0
store i64 %3873, ptr %175, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3874, ptr align 8 %175, i64 8, i1 false)
%3875 = getelementptr inbounds i8, ptr %174, i32 8
store { ptr, ptr addrspace(10) } %3865, ptr %176, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3875, ptr align 8 %176, i64 8, i1 false)
%3876 = getelementptr inbounds i8, ptr %176, i32 8
%3877 = load ptr addrspace(10), ptr %3876, align 8
%3878 = extractvalue { ptr, ptr addrspace(10) } %3865, 0
%3879 = getelementptr i8, ptr %3878, i64 %3873
%3880 = sub i64 %3831, 1
%3881 = mul i64 8, %3880
%3882 = getelementptr i8, ptr %3879, i64 %3881
%3883 = getelementptr inbounds i64, ptr %3882, i64 0
%3884 = load i64, ptr %3883, align 1
br label %3887
3885: ; preds = %3848
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3831) #1
call void @llvm.trap()
unreachable
3886: ; preds = %3814
br label %3887
3887: ; preds = %3886, %3857
%3888 = phi i64 [ %3884, %3857 ], [ 0, %3886 ]
%3889 = load i64, ptr %3818, align 8
%3890 = xor i64 %3889, %3888
%3891 = getelementptr inbounds i8, ptr %103, i32 176
%3892 = sub i64 %2215, %2184
%3893 = add i64 1, %3892
%3894 = icmp ult i64 22, %3893
%3895 = xor i1 %3894, true
br i1 %3895, label %3959, label %3896
3896: ; preds = %3887
br i1 false, label %3903, label %3897
3897: ; preds = %3896
%3898 = sub i64 %2215, %2184
%3899 = add i64 1, %3898
%3900 = icmp ult i64 22, %3899
%3901 = xor i1 %3900, true
br i1 %3901, label %3918, label %3902
3902: ; preds = %3897
br label %3903
3903: ; preds = %3902, %3896
%3904 = add i64 %2279, 23
br i1 true, label %3930, label %3905
3905: ; preds = %3903
%3906 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3907 = getelementptr inbounds i8, ptr addrspace(11) %3906, i32 8
%3908 = load i64, ptr addrspace(11) %3907, align 8
%3909 = load i64, ptr addrspace(11) %3906, align 8
%3910 = sub i64 %3908, %3909
%3911 = add i64 1, %3910
%3912 = mul i64 %3911, 1
%3913 = icmp ne i64 %3912, -9223372036854775808
%3914 = or i1 true, %3913
%3915 = and i1 true, %3914
%3916 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3915, label %4550, label %4548
3917: ; preds = %4550
br label %3921
3918: ; preds = %3897
store ptr addrspace(10) %2281, ptr %214, align 8
%3919 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3919, ptr readonly captures(none) %214, i64 signext 23) #1
call void @llvm.trap()
unreachable
3920: ; preds = %4550
br label %3921
3921: ; preds = %3920, %3917
%3922 = phi i64 [ %4553, %3917 ], [ 0, %3920 ]
%3923 = icmp slt i64 0, %3922
%3924 = xor i1 %3923, true
%3925 = select i1 %3924, i64 0, i64 %3922
%3926 = sub i64 %3904, 1
%3927 = icmp ult i64 %3926, %3925
%3928 = xor i1 %3927, true
br i1 %3928, label %3958, label %3929
3929: ; preds = %3921
br label %3930
3930: ; preds = %3929, %3903
%3931 = load ptr addrspace(10), ptr %4, align 8
%3932 = addrspacecast ptr addrspace(10) %3931 to ptr addrspace(11)
%3933 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3932, i32 0, i32 0
%3934 = load ptr, ptr addrspace(11) %3933, align 8
%3935 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %3932, i32 0, i32 1
%3936 = load ptr addrspace(10), ptr addrspace(11) %3935, align 8
%3937 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %3934, 0
%3938 = insertvalue { ptr, ptr addrspace(10) } %3937, ptr addrspace(10) %3936, 1
%3939 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%3940 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%3941 = load i64, ptr addrspace(11) %3940, align 8
%3942 = mul i64 %3941, 1
%3943 = load i64, ptr addrspace(11) %3939, align 8
%3944 = add i64 %3943, %3942
%3945 = sub i64 %3944, 1
%3946 = mul i64 %3945, 1
%3947 = getelementptr inbounds i8, ptr %177, i32 0
store i64 %3946, ptr %178, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3947, ptr align 8 %178, i64 8, i1 false)
%3948 = getelementptr inbounds i8, ptr %177, i32 8
store { ptr, ptr addrspace(10) } %3938, ptr %179, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3948, ptr align 8 %179, i64 8, i1 false)
%3949 = getelementptr inbounds i8, ptr %179, i32 8
%3950 = load ptr addrspace(10), ptr %3949, align 8
%3951 = extractvalue { ptr, ptr addrspace(10) } %3938, 0
%3952 = getelementptr i8, ptr %3951, i64 %3946
%3953 = sub i64 %3904, 1
%3954 = mul i64 8, %3953
%3955 = getelementptr i8, ptr %3952, i64 %3954
%3956 = getelementptr inbounds i64, ptr %3955, i64 0
%3957 = load i64, ptr %3956, align 1
br label %3960
3958: ; preds = %3921
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3904) #1
call void @llvm.trap()
unreachable
3959: ; preds = %3887
br label %3960
3960: ; preds = %3959, %3930
%3961 = phi i64 [ %3957, %3930 ], [ 0, %3959 ]
%3962 = load i64, ptr %3891, align 8
%3963 = xor i64 %3962, %3961
%3964 = getelementptr inbounds i8, ptr %103, i32 184
%3965 = sub i64 %2215, %2184
%3966 = add i64 1, %3965
%3967 = icmp ult i64 23, %3966
%3968 = xor i1 %3967, true
br i1 %3968, label %4032, label %3969
3969: ; preds = %3960
br i1 false, label %3976, label %3970
3970: ; preds = %3969
%3971 = sub i64 %2215, %2184
%3972 = add i64 1, %3971
%3973 = icmp ult i64 23, %3972
%3974 = xor i1 %3973, true
br i1 %3974, label %3991, label %3975
3975: ; preds = %3970
br label %3976
3976: ; preds = %3975, %3969
%3977 = add i64 %2279, 24
br i1 true, label %4003, label %3978
3978: ; preds = %3976
%3979 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%3980 = getelementptr inbounds i8, ptr addrspace(11) %3979, i32 8
%3981 = load i64, ptr addrspace(11) %3980, align 8
%3982 = load i64, ptr addrspace(11) %3979, align 8
%3983 = sub i64 %3981, %3982
%3984 = add i64 1, %3983
%3985 = mul i64 %3984, 1
%3986 = icmp ne i64 %3985, -9223372036854775808
%3987 = or i1 true, %3986
%3988 = and i1 true, %3987
%3989 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %3988, label %4558, label %4556
3990: ; preds = %4558
br label %3994
3991: ; preds = %3970
store ptr addrspace(10) %2281, ptr %213, align 8
%3992 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3992, ptr readonly captures(none) %213, i64 signext 24) #1
call void @llvm.trap()
unreachable
3993: ; preds = %4558
br label %3994
3994: ; preds = %3993, %3990
%3995 = phi i64 [ %4561, %3990 ], [ 0, %3993 ]
%3996 = icmp slt i64 0, %3995
%3997 = xor i1 %3996, true
%3998 = select i1 %3997, i64 0, i64 %3995
%3999 = sub i64 %3977, 1
%4000 = icmp ult i64 %3999, %3998
%4001 = xor i1 %4000, true
br i1 %4001, label %4031, label %4002
4002: ; preds = %3994
br label %4003
4003: ; preds = %4002, %3976
%4004 = load ptr addrspace(10), ptr %4, align 8
%4005 = addrspacecast ptr addrspace(10) %4004 to ptr addrspace(11)
%4006 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %4005, i32 0, i32 0
%4007 = load ptr, ptr addrspace(11) %4006, align 8
%4008 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %4005, i32 0, i32 1
%4009 = load ptr addrspace(10), ptr addrspace(11) %4008, align 8
%4010 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %4007, 0
%4011 = insertvalue { ptr, ptr addrspace(10) } %4010, ptr addrspace(10) %4009, 1
%4012 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%4013 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%4014 = load i64, ptr addrspace(11) %4013, align 8
%4015 = mul i64 %4014, 1
%4016 = load i64, ptr addrspace(11) %4012, align 8
%4017 = add i64 %4016, %4015
%4018 = sub i64 %4017, 1
%4019 = mul i64 %4018, 1
%4020 = getelementptr inbounds i8, ptr %180, i32 0
store i64 %4019, ptr %181, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4020, ptr align 8 %181, i64 8, i1 false)
%4021 = getelementptr inbounds i8, ptr %180, i32 8
store { ptr, ptr addrspace(10) } %4011, ptr %182, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4021, ptr align 8 %182, i64 8, i1 false)
%4022 = getelementptr inbounds i8, ptr %182, i32 8
%4023 = load ptr addrspace(10), ptr %4022, align 8
%4024 = extractvalue { ptr, ptr addrspace(10) } %4011, 0
%4025 = getelementptr i8, ptr %4024, i64 %4019
%4026 = sub i64 %3977, 1
%4027 = mul i64 8, %4026
%4028 = getelementptr i8, ptr %4025, i64 %4027
%4029 = getelementptr inbounds i64, ptr %4028, i64 0
%4030 = load i64, ptr %4029, align 1
br label %4033
4031: ; preds = %3994
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %3977) #1
call void @llvm.trap()
unreachable
4032: ; preds = %3960
br label %4033
4033: ; preds = %4032, %4003
%4034 = phi i64 [ %4030, %4003 ], [ 0, %4032 ]
%4035 = load i64, ptr %3964, align 8
%4036 = xor i64 %4035, %4034
%4037 = getelementptr inbounds i8, ptr %103, i32 192
%4038 = sub i64 %2215, %2184
%4039 = add i64 1, %4038
%4040 = icmp ult i64 24, %4039
%4041 = xor i1 %4040, true
br i1 %4041, label %4105, label %4042
4042: ; preds = %4033
br i1 false, label %4049, label %4043
4043: ; preds = %4042
%4044 = sub i64 %2215, %2184
%4045 = add i64 1, %4044
%4046 = icmp ult i64 24, %4045
%4047 = xor i1 %4046, true
br i1 %4047, label %4064, label %4048
4048: ; preds = %4043
br label %4049
4049: ; preds = %4048, %4042
%4050 = add i64 %2279, 25
br i1 true, label %4076, label %4051
4051: ; preds = %4049
%4052 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%4053 = getelementptr inbounds i8, ptr addrspace(11) %4052, i32 8
%4054 = load i64, ptr addrspace(11) %4053, align 8
%4055 = load i64, ptr addrspace(11) %4052, align 8
%4056 = sub i64 %4054, %4055
%4057 = add i64 1, %4056
%4058 = mul i64 %4057, 1
%4059 = icmp ne i64 %4058, -9223372036854775808
%4060 = or i1 true, %4059
%4061 = and i1 true, %4060
%4062 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %4061, label %4566, label %4564
4063: ; preds = %4566
br label %4067
4064: ; preds = %4043
store ptr addrspace(10) %2281, ptr %212, align 8
%4065 = addrspacecast ptr %109 to ptr addrspace(11)
call swiftcc void @throw_boundserror_1(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %4065, ptr readonly captures(none) %212, i64 signext 25) #1
call void @llvm.trap()
unreachable
4066: ; preds = %4566
br label %4067
4067: ; preds = %4066, %4063
%4068 = phi i64 [ %4569, %4063 ], [ 0, %4066 ]
%4069 = icmp slt i64 0, %4068
%4070 = xor i1 %4069, true
%4071 = select i1 %4070, i64 0, i64 %4068
%4072 = sub i64 %4050, 1
%4073 = icmp ult i64 %4072, %4071
%4074 = xor i1 %4073, true
br i1 %4074, label %4104, label %4075
4075: ; preds = %4067
br label %4076
4076: ; preds = %4075, %4049
%4077 = load ptr addrspace(10), ptr %4, align 8
%4078 = addrspacecast ptr addrspace(10) %4077 to ptr addrspace(11)
%4079 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %4078, i32 0, i32 0
%4080 = load ptr, ptr addrspace(11) %4079, align 8
%4081 = getelementptr inbounds nuw { ptr, ptr addrspace(10) }, ptr addrspace(11) %4078, i32 0, i32 1
%4082 = load ptr addrspace(10), ptr addrspace(11) %4081, align 8
%4083 = insertvalue { ptr, ptr addrspace(10) } zeroinitializer, ptr %4080, 0
%4084 = insertvalue { ptr, ptr addrspace(10) } %4083, ptr addrspace(10) %4082, 1
%4085 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 24
%4086 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 32
%4087 = load i64, ptr addrspace(11) %4086, align 8
%4088 = mul i64 %4087, 1
%4089 = load i64, ptr addrspace(11) %4085, align 8
%4090 = add i64 %4089, %4088
%4091 = sub i64 %4090, 1
%4092 = mul i64 %4091, 1
%4093 = getelementptr inbounds i8, ptr %183, i32 0
store i64 %4092, ptr %184, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4093, ptr align 8 %184, i64 8, i1 false)
%4094 = getelementptr inbounds i8, ptr %183, i32 8
store { ptr, ptr addrspace(10) } %4084, ptr %185, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4094, ptr align 8 %185, i64 8, i1 false)
%4095 = getelementptr inbounds i8, ptr %185, i32 8
%4096 = load ptr addrspace(10), ptr %4095, align 8
%4097 = extractvalue { ptr, ptr addrspace(10) } %4084, 0
%4098 = getelementptr i8, ptr %4097, i64 %4092
%4099 = sub i64 %4050, 1
%4100 = mul i64 8, %4099
%4101 = getelementptr i8, ptr %4098, i64 %4100
%4102 = getelementptr inbounds i64, ptr %4101, i64 0
%4103 = load i64, ptr %4102, align 1
br label %4106
4104: ; preds = %4067
call swiftcc void @throw_boundserror_0(ptr nonnull swiftself %1, ptr addrspace(11) readonly captures(none) %3, ptr readonly captures(none) %4, i64 signext %4050) #1
call void @llvm.trap()
unreachable
4105: ; preds = %4033
br label %4106
4106: ; preds = %4105, %4076
%4107 = phi i64 [ %4103, %4076 ], [ 0, %4105 ]
%4108 = load i64, ptr %4037, align 8
%4109 = xor i64 %4108, %4107
%4110 = getelementptr inbounds i8, ptr %186, i32 0
store i64 %2357, ptr %187, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4110, ptr align 8 %187, i64 8, i1 false)
%4111 = getelementptr inbounds i8, ptr %186, i32 8
store i64 %2430, ptr %188, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4111, ptr align 8 %188, i64 8, i1 false)
%4112 = getelementptr inbounds i8, ptr %186, i32 16
store i64 %2503, ptr %189, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4112, ptr align 8 %189, i64 8, i1 false)
%4113 = getelementptr inbounds i8, ptr %186, i32 24
store i64 %2576, ptr %190, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4113, ptr align 8 %190, i64 8, i1 false)
%4114 = getelementptr inbounds i8, ptr %186, i32 32
store i64 %2649, ptr %191, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4114, ptr align 8 %191, i64 8, i1 false)
%4115 = getelementptr inbounds i8, ptr %186, i32 40
store i64 %2722, ptr %192, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4115, ptr align 8 %192, i64 8, i1 false)
%4116 = getelementptr inbounds i8, ptr %186, i32 48
store i64 %2795, ptr %193, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4116, ptr align 8 %193, i64 8, i1 false)
%4117 = getelementptr inbounds i8, ptr %186, i32 56
store i64 %2868, ptr %194, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4117, ptr align 8 %194, i64 8, i1 false)
%4118 = getelementptr inbounds i8, ptr %186, i32 64
store i64 %2941, ptr %195, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4118, ptr align 8 %195, i64 8, i1 false)
%4119 = getelementptr inbounds i8, ptr %186, i32 72
store i64 %3014, ptr %196, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4119, ptr align 8 %196, i64 8, i1 false)
%4120 = getelementptr inbounds i8, ptr %186, i32 80
store i64 %3087, ptr %197, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4120, ptr align 8 %197, i64 8, i1 false)
%4121 = getelementptr inbounds i8, ptr %186, i32 88
store i64 %3160, ptr %198, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4121, ptr align 8 %198, i64 8, i1 false)
%4122 = getelementptr inbounds i8, ptr %186, i32 96
store i64 %3233, ptr %199, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4122, ptr align 8 %199, i64 8, i1 false)
%4123 = getelementptr inbounds i8, ptr %186, i32 104
store i64 %3306, ptr %200, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4123, ptr align 8 %200, i64 8, i1 false)
%4124 = getelementptr inbounds i8, ptr %186, i32 112
store i64 %3379, ptr %201, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4124, ptr align 8 %201, i64 8, i1 false)
%4125 = getelementptr inbounds i8, ptr %186, i32 120
store i64 %3452, ptr %202, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4125, ptr align 8 %202, i64 8, i1 false)
%4126 = getelementptr inbounds i8, ptr %186, i32 128
store i64 %3525, ptr %203, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4126, ptr align 8 %203, i64 8, i1 false)
%4127 = getelementptr inbounds i8, ptr %186, i32 136
store i64 %3598, ptr %204, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4127, ptr align 8 %204, i64 8, i1 false)
%4128 = getelementptr inbounds i8, ptr %186, i32 144
store i64 %3671, ptr %205, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4128, ptr align 8 %205, i64 8, i1 false)
%4129 = getelementptr inbounds i8, ptr %186, i32 152
store i64 %3744, ptr %206, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4129, ptr align 8 %206, i64 8, i1 false)
%4130 = getelementptr inbounds i8, ptr %186, i32 160
store i64 %3817, ptr %207, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4130, ptr align 8 %207, i64 8, i1 false)
%4131 = getelementptr inbounds i8, ptr %186, i32 168
store i64 %3890, ptr %208, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4131, ptr align 8 %208, i64 8, i1 false)
%4132 = getelementptr inbounds i8, ptr %186, i32 176
store i64 %3963, ptr %209, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4132, ptr align 8 %209, i64 8, i1 false)
%4133 = getelementptr inbounds i8, ptr %186, i32 184
store i64 %4036, ptr %210, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4133, ptr align 8 %210, i64 8, i1 false)
%4134 = getelementptr inbounds i8, ptr %186, i32 192
store i64 %4109, ptr %211, align 8
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4134, ptr align 8 %211, i64 8, i1 false)
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 8 %186, i64 200, i1 false)
ret void
4135: ; preds = %5
%4136 = addrspacecast ptr %273 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4136)
unreachable
4137: ; preds = %5
%4138 = sdiv i64 %269, 8
%4139 = getelementptr inbounds i8, ptr addrspace(11) %3, i32 8
%4140 = getelementptr inbounds i8, ptr addrspace(11) %4139, i32 8
%4141 = load i64, ptr addrspace(11) %4140, align 8
%4142 = load i64, ptr addrspace(11) %4139, align 8
%4143 = sub i64 %4141, %4142
%4144 = add i64 1, %4143
%4145 = mul i64 %4144, 1
%4146 = icmp ne i64 %4145, -9223372036854775808
%4147 = or i1 true, %4146
%4148 = and i1 true, %4147
%4149 = load ptr, ptr @jl_diverror_exception, align 8
br i1 %4148, label %4152, label %4150
4150: ; preds = %4137
%4151 = addrspacecast ptr %4149 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4151)
unreachable
4152: ; preds = %4137
%4153 = sdiv i64 %4145, 8
%4154 = load ptr, ptr @jl_diverror_exception, align 8
br i1 true, label %4157, label %4155
4155: ; preds = %4152
%4156 = addrspacecast ptr %4154 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4156)
unreachable
4157: ; preds = %4152
br i1 false, label %4158, label %4159
4158: ; preds = %4157
br label %4161
4159: ; preds = %4157
%4160 = srem i64 %4153, 21
br label %4161
4161: ; preds = %4159, %4158
%4162 = phi i64 [ 0, %4158 ], [ %4160, %4159 ]
%4163 = sub i64 %4138, %4162
br label %274
4164: ; preds = %357
%4165 = addrspacecast ptr %368 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4165)
unreachable
4166: ; preds = %357
%4167 = sdiv i64 %364, 8
%4168 = add i64 1, %4167
%4169 = sub i64 %4168, 1
%4170 = icmp sle i64 1, %4169
%4171 = xor i1 %4170, true
br i1 %4171, label %370, label %369
4172: ; preds = %378
%4173 = addrspacecast ptr %389 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4173)
unreachable
4174: ; preds = %378
%4175 = sdiv i64 %385, 8
%4176 = add i64 1, %4175
%4177 = sub i64 %4176, 1
%4178 = icmp sle i64 1, %4177
%4179 = xor i1 %4178, true
br i1 %4179, label %391, label %390
4180: ; preds = %432
%4181 = addrspacecast ptr %443 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4181)
unreachable
4182: ; preds = %432
%4183 = sdiv i64 %439, 8
%4184 = add i64 1, %4183
%4185 = sub i64 %4184, 1
%4186 = icmp sle i64 1, %4185
%4187 = xor i1 %4186, true
br i1 %4187, label %447, label %444
4188: ; preds = %498
%4189 = addrspacecast ptr %509 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4189)
unreachable
4190: ; preds = %498
%4191 = sdiv i64 %505, 8
%4192 = add i64 1, %4191
%4193 = sub i64 %4192, 1
%4194 = icmp sle i64 1, %4193
%4195 = xor i1 %4194, true
br i1 %4195, label %513, label %510
4196: ; preds = %564
%4197 = addrspacecast ptr %575 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4197)
unreachable
4198: ; preds = %564
%4199 = sdiv i64 %571, 8
%4200 = add i64 1, %4199
%4201 = sub i64 %4200, 1
%4202 = icmp sle i64 1, %4201
%4203 = xor i1 %4202, true
br i1 %4203, label %579, label %576
4204: ; preds = %630
%4205 = addrspacecast ptr %641 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4205)
unreachable
4206: ; preds = %630
%4207 = sdiv i64 %637, 8
%4208 = add i64 1, %4207
%4209 = sub i64 %4208, 1
%4210 = icmp sle i64 1, %4209
%4211 = xor i1 %4210, true
br i1 %4211, label %645, label %642
4212: ; preds = %696
%4213 = addrspacecast ptr %707 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4213)
unreachable
4214: ; preds = %696
%4215 = sdiv i64 %703, 8
%4216 = add i64 1, %4215
%4217 = sub i64 %4216, 1
%4218 = icmp sle i64 1, %4217
%4219 = xor i1 %4218, true
br i1 %4219, label %711, label %708
4220: ; preds = %762
%4221 = addrspacecast ptr %773 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4221)
unreachable
4222: ; preds = %762
%4223 = sdiv i64 %769, 8
%4224 = add i64 1, %4223
%4225 = sub i64 %4224, 1
%4226 = icmp sle i64 1, %4225
%4227 = xor i1 %4226, true
br i1 %4227, label %777, label %774
4228: ; preds = %828
%4229 = addrspacecast ptr %839 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4229)
unreachable
4230: ; preds = %828
%4231 = sdiv i64 %835, 8
%4232 = add i64 1, %4231
%4233 = sub i64 %4232, 1
%4234 = icmp sle i64 1, %4233
%4235 = xor i1 %4234, true
br i1 %4235, label %843, label %840
4236: ; preds = %894
%4237 = addrspacecast ptr %905 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4237)
unreachable
4238: ; preds = %894
%4239 = sdiv i64 %901, 8
%4240 = add i64 1, %4239
%4241 = sub i64 %4240, 1
%4242 = icmp sle i64 1, %4241
%4243 = xor i1 %4242, true
br i1 %4243, label %909, label %906
4244: ; preds = %960
%4245 = addrspacecast ptr %971 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4245)
unreachable
4246: ; preds = %960
%4247 = sdiv i64 %967, 8
%4248 = add i64 1, %4247
%4249 = sub i64 %4248, 1
%4250 = icmp sle i64 1, %4249
%4251 = xor i1 %4250, true
br i1 %4251, label %975, label %972
4252: ; preds = %1026
%4253 = addrspacecast ptr %1037 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4253)
unreachable
4254: ; preds = %1026
%4255 = sdiv i64 %1033, 8
%4256 = add i64 1, %4255
%4257 = sub i64 %4256, 1
%4258 = icmp sle i64 1, %4257
%4259 = xor i1 %4258, true
br i1 %4259, label %1041, label %1038
4260: ; preds = %1092
%4261 = addrspacecast ptr %1103 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4261)
unreachable
4262: ; preds = %1092
%4263 = sdiv i64 %1099, 8
%4264 = add i64 1, %4263
%4265 = sub i64 %4264, 1
%4266 = icmp sle i64 1, %4265
%4267 = xor i1 %4266, true
br i1 %4267, label %1107, label %1104
4268: ; preds = %1158
%4269 = addrspacecast ptr %1169 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4269)
unreachable
4270: ; preds = %1158
%4271 = sdiv i64 %1165, 8
%4272 = add i64 1, %4271
%4273 = sub i64 %4272, 1
%4274 = icmp sle i64 1, %4273
%4275 = xor i1 %4274, true
br i1 %4275, label %1173, label %1170
4276: ; preds = %1224
%4277 = addrspacecast ptr %1235 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4277)
unreachable
4278: ; preds = %1224
%4279 = sdiv i64 %1231, 8
%4280 = add i64 1, %4279
%4281 = sub i64 %4280, 1
%4282 = icmp sle i64 1, %4281
%4283 = xor i1 %4282, true
br i1 %4283, label %1239, label %1236
4284: ; preds = %1290
%4285 = addrspacecast ptr %1301 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4285)
unreachable
4286: ; preds = %1290
%4287 = sdiv i64 %1297, 8
%4288 = add i64 1, %4287
%4289 = sub i64 %4288, 1
%4290 = icmp sle i64 1, %4289
%4291 = xor i1 %4290, true
br i1 %4291, label %1305, label %1302
4292: ; preds = %1356
%4293 = addrspacecast ptr %1367 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4293)
unreachable
4294: ; preds = %1356
%4295 = sdiv i64 %1363, 8
%4296 = add i64 1, %4295
%4297 = sub i64 %4296, 1
%4298 = icmp sle i64 1, %4297
%4299 = xor i1 %4298, true
br i1 %4299, label %1371, label %1368
4300: ; preds = %1422
%4301 = addrspacecast ptr %1433 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4301)
unreachable
4302: ; preds = %1422
%4303 = sdiv i64 %1429, 8
%4304 = add i64 1, %4303
%4305 = sub i64 %4304, 1
%4306 = icmp sle i64 1, %4305
%4307 = xor i1 %4306, true
br i1 %4307, label %1437, label %1434
4308: ; preds = %1488
%4309 = addrspacecast ptr %1499 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4309)
unreachable
4310: ; preds = %1488
%4311 = sdiv i64 %1495, 8
%4312 = add i64 1, %4311
%4313 = sub i64 %4312, 1
%4314 = icmp sle i64 1, %4313
%4315 = xor i1 %4314, true
br i1 %4315, label %1503, label %1500
4316: ; preds = %1554
%4317 = addrspacecast ptr %1565 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4317)
unreachable
4318: ; preds = %1554
%4319 = sdiv i64 %1561, 8
%4320 = add i64 1, %4319
%4321 = sub i64 %4320, 1
%4322 = icmp sle i64 1, %4321
%4323 = xor i1 %4322, true
br i1 %4323, label %1569, label %1566
4324: ; preds = %1620
%4325 = addrspacecast ptr %1631 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4325)
unreachable
4326: ; preds = %1620
%4327 = sdiv i64 %1627, 8
%4328 = add i64 1, %4327
%4329 = sub i64 %4328, 1
%4330 = icmp sle i64 1, %4329
%4331 = xor i1 %4330, true
br i1 %4331, label %1635, label %1632
4332: ; preds = %1686
%4333 = addrspacecast ptr %1697 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4333)
unreachable
4334: ; preds = %1686
%4335 = sdiv i64 %1693, 8
%4336 = add i64 1, %4335
%4337 = sub i64 %4336, 1
%4338 = icmp sle i64 1, %4337
%4339 = xor i1 %4338, true
br i1 %4339, label %1701, label %1698
4340: ; preds = %1752
%4341 = addrspacecast ptr %1763 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4341)
unreachable
4342: ; preds = %1752
%4343 = sdiv i64 %1759, 8
%4344 = add i64 1, %4343
%4345 = sub i64 %4344, 1
%4346 = icmp sle i64 1, %4345
%4347 = xor i1 %4346, true
br i1 %4347, label %1767, label %1764
4348: ; preds = %2183
%4349 = addrspacecast ptr %2195 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4349)
unreachable
4350: ; preds = %2183
%4351 = sdiv i64 %2191, 8
%4352 = add i64 1, %4351
%4353 = sub i64 %4352, 1
%4354 = icmp sle i64 1, %4353
%4355 = xor i1 %4354, true
br i1 %4355, label %2197, label %2196
4356: ; preds = %2219
%4357 = addrspacecast ptr %2230 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4357)
unreachable
4358: ; preds = %2219
%4359 = sdiv i64 %2226, 8
%4360 = add i64 1, %4359
%4361 = sub i64 %4360, 1
%4362 = icmp sle i64 1, %4361
%4363 = xor i1 %4362, true
br i1 %4363, label %2232, label %2231
4364: ; preds = %2240
%4365 = addrspacecast ptr %2251 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4365)
unreachable
4366: ; preds = %2240
%4367 = sdiv i64 %2247, 8
%4368 = add i64 1, %4367
%4369 = sub i64 %4368, 1
%4370 = icmp sle i64 1, %4369
%4371 = xor i1 %4370, true
br i1 %4371, label %2253, label %2252
4372: ; preds = %2299
%4373 = addrspacecast ptr %2310 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4373)
unreachable
4374: ; preds = %2299
%4375 = sdiv i64 %2306, 8
%4376 = add i64 1, %4375
%4377 = sub i64 %4376, 1
%4378 = icmp sle i64 1, %4377
%4379 = xor i1 %4378, true
br i1 %4379, label %2314, label %2311
4380: ; preds = %2372
%4381 = addrspacecast ptr %2383 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4381)
unreachable
4382: ; preds = %2372
%4383 = sdiv i64 %2379, 8
%4384 = add i64 1, %4383
%4385 = sub i64 %4384, 1
%4386 = icmp sle i64 1, %4385
%4387 = xor i1 %4386, true
br i1 %4387, label %2387, label %2384
4388: ; preds = %2445
%4389 = addrspacecast ptr %2456 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4389)
unreachable
4390: ; preds = %2445
%4391 = sdiv i64 %2452, 8
%4392 = add i64 1, %4391
%4393 = sub i64 %4392, 1
%4394 = icmp sle i64 1, %4393
%4395 = xor i1 %4394, true
br i1 %4395, label %2460, label %2457
4396: ; preds = %2518
%4397 = addrspacecast ptr %2529 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4397)
unreachable
4398: ; preds = %2518
%4399 = sdiv i64 %2525, 8
%4400 = add i64 1, %4399
%4401 = sub i64 %4400, 1
%4402 = icmp sle i64 1, %4401
%4403 = xor i1 %4402, true
br i1 %4403, label %2533, label %2530
4404: ; preds = %2591
%4405 = addrspacecast ptr %2602 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4405)
unreachable
4406: ; preds = %2591
%4407 = sdiv i64 %2598, 8
%4408 = add i64 1, %4407
%4409 = sub i64 %4408, 1
%4410 = icmp sle i64 1, %4409
%4411 = xor i1 %4410, true
br i1 %4411, label %2606, label %2603
4412: ; preds = %2664
%4413 = addrspacecast ptr %2675 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4413)
unreachable
4414: ; preds = %2664
%4415 = sdiv i64 %2671, 8
%4416 = add i64 1, %4415
%4417 = sub i64 %4416, 1
%4418 = icmp sle i64 1, %4417
%4419 = xor i1 %4418, true
br i1 %4419, label %2679, label %2676
4420: ; preds = %2737
%4421 = addrspacecast ptr %2748 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4421)
unreachable
4422: ; preds = %2737
%4423 = sdiv i64 %2744, 8
%4424 = add i64 1, %4423
%4425 = sub i64 %4424, 1
%4426 = icmp sle i64 1, %4425
%4427 = xor i1 %4426, true
br i1 %4427, label %2752, label %2749
4428: ; preds = %2810
%4429 = addrspacecast ptr %2821 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4429)
unreachable
4430: ; preds = %2810
%4431 = sdiv i64 %2817, 8
%4432 = add i64 1, %4431
%4433 = sub i64 %4432, 1
%4434 = icmp sle i64 1, %4433
%4435 = xor i1 %4434, true
br i1 %4435, label %2825, label %2822
4436: ; preds = %2883
%4437 = addrspacecast ptr %2894 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4437)
unreachable
4438: ; preds = %2883
%4439 = sdiv i64 %2890, 8
%4440 = add i64 1, %4439
%4441 = sub i64 %4440, 1
%4442 = icmp sle i64 1, %4441
%4443 = xor i1 %4442, true
br i1 %4443, label %2898, label %2895
4444: ; preds = %2956
%4445 = addrspacecast ptr %2967 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4445)
unreachable
4446: ; preds = %2956
%4447 = sdiv i64 %2963, 8
%4448 = add i64 1, %4447
%4449 = sub i64 %4448, 1
%4450 = icmp sle i64 1, %4449
%4451 = xor i1 %4450, true
br i1 %4451, label %2971, label %2968
4452: ; preds = %3029
%4453 = addrspacecast ptr %3040 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4453)
unreachable
4454: ; preds = %3029
%4455 = sdiv i64 %3036, 8
%4456 = add i64 1, %4455
%4457 = sub i64 %4456, 1
%4458 = icmp sle i64 1, %4457
%4459 = xor i1 %4458, true
br i1 %4459, label %3044, label %3041
4460: ; preds = %3102
%4461 = addrspacecast ptr %3113 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4461)
unreachable
4462: ; preds = %3102
%4463 = sdiv i64 %3109, 8
%4464 = add i64 1, %4463
%4465 = sub i64 %4464, 1
%4466 = icmp sle i64 1, %4465
%4467 = xor i1 %4466, true
br i1 %4467, label %3117, label %3114
4468: ; preds = %3175
%4469 = addrspacecast ptr %3186 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4469)
unreachable
4470: ; preds = %3175
%4471 = sdiv i64 %3182, 8
%4472 = add i64 1, %4471
%4473 = sub i64 %4472, 1
%4474 = icmp sle i64 1, %4473
%4475 = xor i1 %4474, true
br i1 %4475, label %3190, label %3187
4476: ; preds = %3248
%4477 = addrspacecast ptr %3259 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4477)
unreachable
4478: ; preds = %3248
%4479 = sdiv i64 %3255, 8
%4480 = add i64 1, %4479
%4481 = sub i64 %4480, 1
%4482 = icmp sle i64 1, %4481
%4483 = xor i1 %4482, true
br i1 %4483, label %3263, label %3260
4484: ; preds = %3321
%4485 = addrspacecast ptr %3332 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4485)
unreachable
4486: ; preds = %3321
%4487 = sdiv i64 %3328, 8
%4488 = add i64 1, %4487
%4489 = sub i64 %4488, 1
%4490 = icmp sle i64 1, %4489
%4491 = xor i1 %4490, true
br i1 %4491, label %3336, label %3333
4492: ; preds = %3394
%4493 = addrspacecast ptr %3405 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4493)
unreachable
4494: ; preds = %3394
%4495 = sdiv i64 %3401, 8
%4496 = add i64 1, %4495
%4497 = sub i64 %4496, 1
%4498 = icmp sle i64 1, %4497
%4499 = xor i1 %4498, true
br i1 %4499, label %3409, label %3406
4500: ; preds = %3467
%4501 = addrspacecast ptr %3478 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4501)
unreachable
4502: ; preds = %3467
%4503 = sdiv i64 %3474, 8
%4504 = add i64 1, %4503
%4505 = sub i64 %4504, 1
%4506 = icmp sle i64 1, %4505
%4507 = xor i1 %4506, true
br i1 %4507, label %3482, label %3479
4508: ; preds = %3540
%4509 = addrspacecast ptr %3551 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4509)
unreachable
4510: ; preds = %3540
%4511 = sdiv i64 %3547, 8
%4512 = add i64 1, %4511
%4513 = sub i64 %4512, 1
%4514 = icmp sle i64 1, %4513
%4515 = xor i1 %4514, true
br i1 %4515, label %3555, label %3552
4516: ; preds = %3613
%4517 = addrspacecast ptr %3624 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4517)
unreachable
4518: ; preds = %3613
%4519 = sdiv i64 %3620, 8
%4520 = add i64 1, %4519
%4521 = sub i64 %4520, 1
%4522 = icmp sle i64 1, %4521
%4523 = xor i1 %4522, true
br i1 %4523, label %3628, label %3625
4524: ; preds = %3686
%4525 = addrspacecast ptr %3697 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4525)
unreachable
4526: ; preds = %3686
%4527 = sdiv i64 %3693, 8
%4528 = add i64 1, %4527
%4529 = sub i64 %4528, 1
%4530 = icmp sle i64 1, %4529
%4531 = xor i1 %4530, true
br i1 %4531, label %3701, label %3698
4532: ; preds = %3759
%4533 = addrspacecast ptr %3770 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4533)
unreachable
4534: ; preds = %3759
%4535 = sdiv i64 %3766, 8
%4536 = add i64 1, %4535
%4537 = sub i64 %4536, 1
%4538 = icmp sle i64 1, %4537
%4539 = xor i1 %4538, true
br i1 %4539, label %3774, label %3771
4540: ; preds = %3832
%4541 = addrspacecast ptr %3843 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4541)
unreachable
4542: ; preds = %3832
%4543 = sdiv i64 %3839, 8
%4544 = add i64 1, %4543
%4545 = sub i64 %4544, 1
%4546 = icmp sle i64 1, %4545
%4547 = xor i1 %4546, true
br i1 %4547, label %3847, label %3844
4548: ; preds = %3905
%4549 = addrspacecast ptr %3916 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4549)
unreachable
4550: ; preds = %3905
%4551 = sdiv i64 %3912, 8
%4552 = add i64 1, %4551
%4553 = sub i64 %4552, 1
%4554 = icmp sle i64 1, %4553
%4555 = xor i1 %4554, true
br i1 %4555, label %3920, label %3917
4556: ; preds = %3978
%4557 = addrspacecast ptr %3989 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4557)
unreachable
4558: ; preds = %3978
%4559 = sdiv i64 %3985, 8
%4560 = add i64 1, %4559
%4561 = sub i64 %4560, 1
%4562 = icmp sle i64 1, %4561
%4563 = xor i1 %4562, true
br i1 %4563, label %3993, label %3990
4564: ; preds = %4051
%4565 = addrspacecast ptr %4062 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4565)
unreachable
4566: ; preds = %4051
%4567 = sdiv i64 %4058, 8
%4568 = add i64 1, %4567
%4569 = sub i64 %4568, 1
%4570 = icmp sle i64 1, %4569
%4571 = xor i1 %4570, true
br i1 %4571, label %4066, label %4063
4572: ; No predecessors!
call void @llvm.trap()
unreachable
4573: ; No predecessors!
call void @llvm.trap()
unreachable
4574: ; No predecessors!
call void @llvm.trap()
unreachable
4575: ; No predecessors!
call void @llvm.trap()
unreachable
4576: ; No predecessors!
call void @llvm.trap()
unreachable
4577: ; No predecessors!
call void @llvm.trap()
unreachable
4578: ; No predecessors!
call void @llvm.trap()
unreachable
4579: ; No predecessors!
call void @llvm.trap()
unreachable
4580: ; No predecessors!
call void @llvm.trap()
unreachable
4581: ; No predecessors!
call void @llvm.trap()
unreachable
4582: ; No predecessors!
call void @llvm.trap()
unreachable
4583: ; No predecessors!
call void @llvm.trap()
unreachable
4584: ; No predecessors!
call void @llvm.trap()
unreachable
4585: ; No predecessors!
call void @llvm.trap()
unreachable
4586: ; No predecessors!
call void @llvm.trap()
unreachable
4587: ; No predecessors!
call void @llvm.trap()
unreachable
4588: ; No predecessors!
call void @llvm.trap()
unreachable
4589: ; No predecessors!
call void @llvm.trap()
unreachable
4590: ; No predecessors!
call void @llvm.trap()
unreachable
4591: ; No predecessors!
call void @llvm.trap()
unreachable
4592: ; No predecessors!
call void @llvm.trap()
unreachable
4593: ; No predecessors!
call void @llvm.trap()
unreachable
4594: ; No predecessors!
call void @llvm.trap()
unreachable
4595: ; No predecessors!
call void @llvm.trap()
unreachable
4596: ; No predecessors!
call void @llvm.trap()
unreachable
4597: ; No predecessors!
call void @llvm.trap()
unreachable
4598: ; No predecessors!
call void @llvm.trap()
unreachable
4599: ; No predecessors!
call void @llvm.trap()
unreachable
4600: ; No predecessors!
call void @llvm.trap()
unreachable
4601: ; No predecessors!
call void @llvm.trap()
unreachable
4602: ; No predecessors!
call void @llvm.trap()
unreachable
4603: ; No predecessors!
call void @llvm.trap()
unreachable
4604: ; No predecessors!
call void @llvm.trap()
unreachable
4605: ; No predecessors!
call void @llvm.trap()
unreachable
4606: ; No predecessors!
call void @llvm.trap()
unreachable
4607: ; No predecessors!
call void @llvm.trap()
unreachable
4608: ; No predecessors!
call void @llvm.trap()
unreachable
4609: ; No predecessors!
call void @llvm.trap()
unreachable
4610: ; No predecessors!
call void @llvm.trap()
unreachable
4611: ; No predecessors!
call void @llvm.trap()
unreachable
4612: ; No predecessors!
call void @llvm.trap()
unreachable
4613: ; No predecessors!
call void @llvm.trap()
unreachable
4614: ; No predecessors!
call void @llvm.trap()
unreachable
4615: ; No predecessors!
call void @llvm.trap()
unreachable
4616: ; No predecessors!
call void @llvm.trap()
unreachable
4617: ; No predecessors!
call void @llvm.trap()
unreachable
4618: ; No predecessors!
call void @llvm.trap()
unreachable
4619: ; No predecessors!
call void @llvm.trap()
unreachable
4620: ; No predecessors!
call void @llvm.trap()
unreachable
4621: ; No predecessors!
call void @llvm.trap()
unreachable
4622: ; No predecessors!
call void @llvm.trap()
unreachable
4623: ; No predecessors!
call void @llvm.trap()
unreachable
4624: ; No predecessors!
call void @llvm.trap()
unreachable
4625: ; No predecessors!
call void @llvm.trap()
unreachable
4626: ; No predecessors!
call void @llvm.trap()
unreachable
4627: ; No predecessors!
call void @llvm.trap()
unreachable
4628: ; No predecessors!
call void @llvm.trap()
unreachable
4629: ; No predecessors!
call void @llvm.trap()
unreachable
4630: ; No predecessors!
call void @llvm.trap()
unreachable
4631: ; No predecessors!
call void @llvm.trap()
unreachable
4632: ; No predecessors!
call void @llvm.trap()
unreachable
4633: ; No predecessors!
call void @llvm.trap()
unreachable
4634: ; No predecessors!
call void @llvm.trap()
unreachable
4635: ; No predecessors!
call void @llvm.trap()
unreachable
4636: ; No predecessors!
call void @llvm.trap()
unreachable
4637: ; No predecessors!
call void @llvm.trap()
unreachable
4638: ; No predecessors!
call void @llvm.trap()
unreachable
4639: ; No predecessors!
call void @llvm.trap()
unreachable
4640: ; No predecessors!
call void @llvm.trap()
unreachable
4641: ; No predecessors!
call void @llvm.trap()
unreachable
4642: ; No predecessors!
call void @llvm.trap()
unreachable
4643: ; No predecessors!
call void @llvm.trap()
unreachable
4644: ; No predecessors!
call void @llvm.trap()
unreachable
4645: ; No predecessors!
call void @llvm.trap()
unreachable
4646: ; No predecessors!
call void @llvm.trap()
unreachable
4647: ; No predecessors!
call void @llvm.trap()
unreachable
4648: ; No predecessors!
call void @llvm.trap()
unreachable
4649: ; No predecessors!
call void @llvm.trap()
unreachable
4650: ; No predecessors!
call void @llvm.trap()
unreachable
4651: ; No predecessors!
call void @llvm.trap()
unreachable
4652: ; No predecessors!
call void @llvm.trap()
unreachable
4653: ; No predecessors!
call void @llvm.trap()
unreachable
4654: ; No predecessors!
call void @llvm.trap()
unreachable
4655: ; No predecessors!
call void @llvm.trap()
unreachable
4656: ; No predecessors!
call void @llvm.trap()
unreachable
4657: ; No predecessors!
call void @llvm.trap()
unreachable
4658: ; No predecessors!
call void @llvm.trap()
unreachable
4659: ; No predecessors!
call void @llvm.trap()
unreachable
4660: ; No predecessors!
call void @llvm.trap()
unreachable
4661: ; No predecessors!
call void @llvm.trap()
unreachable
4662: ; No predecessors!
call void @llvm.trap()
unreachable
4663: ; No predecessors!
call void @llvm.trap()
unreachable
4664: ; No predecessors!
call void @llvm.trap()
unreachable
4665: ; No predecessors!
call void @llvm.trap()
unreachable
4666: ; preds = %301
%4667 = addrspacecast ptr %303 to ptr addrspace(12)
call void @ijl_throw(ptr addrspace(12) %4667)
unreachable
4668: ; preds = %301
%4669 = icmp eq i64 %296, -1
br i1 %4669, label %4670, label %4671
4670: ; preds = %4668
br label %4673
4671: ; preds = %4668
%4672 = srem i64 %295, %296
br label %4673
4673: ; preds = %4671, %4670
%4674 = phi i64 [ 0, %4670 ], [ %4672, %4671 ]
br label %304
4675: ; preds = %340
br label %4676
4676: ; preds = %4675, %340
%4677 = phi i1 [ false, %340 ], [ true, %4675 ]
br i1 %4677, label %4678, label %4679
4678: ; preds = %4676
call void @llvm.memcpy.p0.p11.i64(ptr align 8 %7, ptr addrspace(11) align 8 %2, i64 200, i1 false)
br label %4679
4679: ; preds = %4678, %4676
br label %342
4680: ; preds = %2181
br label %4681
4681: ; preds = %4680, %2181
%4682 = phi i1 [ false, %2181 ], [ true, %4680 ]
br i1 %4682, label %4683, label %4684
4683: ; preds = %4681
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %77, i64 200, i1 false)
br label %4684
4684: ; preds = %4683, %4681
br label %342
4685: ; preds = %2179
br label %4686
4686: ; preds = %4685, %2179
%4687 = phi i1 [ false, %2179 ], [ true, %4685 ]
br i1 %4687, label %4688, label %4689
4688: ; preds = %4686
call void @llvm.memcpy.p0.p0.i64(ptr align 8 %104, ptr align 8 %77, i64 200, i1 false)
br label %4689
4689: ; preds = %4688, %4686
br label %2183
4690: ; preds = %338
br label %4691
4691: ; preds = %4690, %338
%4692 = phi i1 [ false, %338 ], [ true, %4690 ]
br i1 %4692, label %4693, label %4694
4693: ; preds = %4691
call void @llvm.memcpy.p0.p11.i64(ptr align 8 %104, ptr addrspace(11) align 8 %2, i64 200, i1 false)
br label %4694
4694: ; preds = %4693, %4691
br label %2183
}
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(ptr captures(none)) #4
; Function Attrs: noinline noreturn
declare hidden swiftcc void @throw_boundserror_0(ptr nonnull swiftself, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(48), ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8), i64 signext) #6
; Function Attrs: noinline noreturn
declare hidden swiftcc void @throw_boundserror_1(ptr nonnull swiftself, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(80), ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8), i64 signext) #6
; Function Attrs: noinline noreturn
declare hidden swiftcc void @throw_boundserror_2(ptr nonnull swiftself, ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(48), ptr noundef nonnull readonly align 8 captures(none) dereferenceable(8), ptr addrspace(11) noundef nonnull readonly align 8 captures(none) dereferenceable(16)) #6
; Function Attrs: naked noinline
declare hidden swiftcc void @jlpkg_overflow_case_0() #7
attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #1 = { noreturn }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { cold noreturn nounwind memory(inaccessiblemem: write) }
attributes #4 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { "frame-pointer"="all" "probe-stack"="inline-asm" }
attributes #6 = { noinline noreturn "frame-pointer"="all" "probe-stack"="inline-asm" }
attributes #7 = { naked noinline "frame-pointer"="none" "thunk" }
; ModuleID = 'keccak-round-reduced.ll'
source_filename = "keccak-round-reduced.ll"
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-ni:10:11:12:13"
target triple = "x86_64-unknown-linux-gnu"
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #0
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p11.i64(ptr noalias writeonly captures(none), ptr addrspace(11) noalias readonly captures(none), i64, i1 immarg) #0
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
define void @keccak_absorb(ptr %0, ptr addrspace(10) %1, ptr %2, ptr %3, ptr addrspace(10) %4, ptr %5, i64 %6, ptr %7, ptr %8, i64 %9, ptr %10, ptr addrspace(10) %11) #2 {
.thread627:
%12 = shl i64 0, 3
%13 = getelementptr i8, ptr null, i64 %12
%14 = load i64, ptr %13, align 1
%15 = xor i64 %14, 0
%16 = load ptr, ptr addrspace(11) null, align 8
%17 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%18 = getelementptr i8, ptr %16, i64 0
%19 = shl i64 1, 3
%20 = getelementptr i8, ptr %18, i64 %19
%21 = load i64, ptr %20, align 1
%22 = xor i64 %21, 0
%23 = icmp ult i64 0, 3
%24 = load ptr, ptr addrspace(11) null, align 8
%25 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%26 = getelementptr i8, ptr %24, i64 0
%27 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%28 = getelementptr i8, ptr null, i64 0
%29 = getelementptr i8, ptr %28, i64 %19
%30 = getelementptr i8, ptr %29, i64 24
%31 = load i64, ptr %30, align 1
%32 = xor i64 %31, 0
%.not585 = icmp eq i64 0, 5
br label %33
33: ; preds = %.thread627
%34 = load ptr, ptr addrspace(11) null, align 8
%35 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%36 = getelementptr i8, ptr %34, i64 0
%37 = getelementptr i8, ptr %36, i64 %19
%38 = getelementptr i8, ptr %37, i64 32
%39 = load i64, ptr %38, align 1
%40 = xor i64 %39, 0
%41 = icmp ult i64 0, 7
%42 = load ptr, ptr addrspace(11) null, align 8
%43 = load ptr addrspace(10), ptr addrspace(11) null, align 8
br label %44
44: ; preds = %33
%45 = load ptr, ptr addrspace(11) null, align 8
%46 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%47 = getelementptr i8, ptr %45, i64 0
%48 = getelementptr i8, ptr %47, i64 %19
%49 = getelementptr i8, ptr %0, i64 56
%50 = load i64, ptr %2, align 1
%51 = xor i64 %50, 0
%.not587 = icmp eq i64 0, 9
%52 = load ptr, ptr addrspace(11) null, align 8
%53 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%54 = getelementptr i8, ptr %52, i64 0
%55 = getelementptr i8, ptr %54, i64 %19
%56 = getelementptr i8, ptr %55, i64 64
%57 = load i64, ptr %56, align 1
%58 = xor i64 %57, 0
%59 = icmp ult i64 0, 11
br label %60
60: ; preds = %44
%61 = load ptr, ptr addrspace(11) null, align 8
%62 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%63 = getelementptr i8, ptr %61, i64 0
%64 = getelementptr i8, ptr %63, i64 %19
%65 = getelementptr i8, ptr %64, i64 72
%66 = load i64, ptr %65, align 1
%67 = xor i64 %66, 0
%.not588 = icmp eq i64 0, 11
%68 = load ptr, ptr addrspace(11) null, align 8
%69 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%70 = getelementptr i8, ptr %68, i64 0
%71 = getelementptr i8, ptr %70, i64 %19
%72 = getelementptr i8, ptr %71, i64 80
%73 = load i64, ptr %72, align 1
%74 = xor i64 %73, 0
%75 = icmp ult i64 0, 13
%76 = load ptr, ptr addrspace(11) null, align 8
%77 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%78 = getelementptr i8, ptr %76, i64 0
%79 = getelementptr i8, ptr %78, i64 %19
%80 = getelementptr i8, ptr %79, i64 88
%81 = load i64, ptr %80, align 1
%82 = xor i64 %81, 0
%.not589 = icmp eq i64 0, 13
br label %83
83: ; preds = %60
%84 = load ptr, ptr addrspace(11) null, align 8
%85 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%86 = xor i64 0, 0
%87 = icmp ult i64 0, 15
%88 = load ptr, ptr addrspace(11) null, align 8
%89 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%90 = getelementptr i8, ptr %88, i64 0
%91 = getelementptr i8, ptr %90, i64 %19
%92 = getelementptr i8, ptr %91, i64 104
%93 = load i64, ptr %92, align 1
%94 = xor i64 %93, 0
%.not590 = icmp eq i64 0, 15
%95 = load ptr, ptr addrspace(11) null, align 8
%96 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%97 = getelementptr i8, ptr %95, i64 0
%98 = getelementptr i8, ptr %97, i64 %19
%99 = getelementptr i8, ptr %98, i64 112
%100 = load i64, ptr %99, align 1
%101 = xor i64 %100, 0
%102 = icmp ult i64 0, 17
br label %103
103: ; preds = %83
%104 = load ptr, ptr addrspace(11) null, align 8
%105 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%106 = getelementptr i8, ptr %104, i64 0
%107 = getelementptr i8, ptr %106, i64 %19
%108 = getelementptr i8, ptr %107, i64 120
%109 = load i64, ptr %108, align 1
%110 = xor i64 %109, 0
%.not591 = icmp eq i64 0, 17
%111 = load ptr, ptr addrspace(11) null, align 8
%112 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%113 = getelementptr i8, ptr %111, i64 0
%114 = getelementptr i8, ptr %113, i64 %19
%115 = getelementptr i8, ptr %3, i64 128
%116 = load i64, ptr %5, align 1
%117 = xor i64 %6, 0
%118 = icmp ult i64 0, 19
%119 = load ptr, ptr addrspace(11) null, align 8
%120 = load ptr addrspace(10), ptr addrspace(11) null, align 8
%121 = getelementptr i8, ptr %7, i64 0
%122 = getelementptr i8, ptr %8, i64 %9
%123 = getelementptr i8, ptr %10, i64 136
%124 = load i64, ptr %123, align 1
br label %125
125: ; preds = %103
%126 = load i64, ptr null, align 1
%127 = xor i64 %126, 0
br label %128
128: ; preds = %128, %125
%129 = phi i64 [ 13, %125 ], [ %294, %128 ]
%130 = phi i64 [ %15, %125 ], [ %293, %128 ]
%131 = phi i64 [ %40, %125 ], [ %247, %128 ]
%132 = phi i64 [ %67, %125 ], [ %262, %128 ]
%133 = phi i64 [ %101, %125 ], [ 0, %128 ]
%134 = phi i64 [ %127, %125 ], [ %278, %128 ]
%135 = phi i64 [ %22, %125 ], [ %235, %128 ]
%136 = phi i64 [ 0, %125 ], [ %250, %128 ]
%137 = phi i64 [ %74, %125 ], [ %265, %128 ]
%138 = phi i64 [ %110, %125 ], [ 0, %128 ]
%139 = phi i64 [ 0, %125 ], [ %281, %128 ]
%140 = phi i64 [ 0, %125 ], [ %238, %128 ]
%141 = phi i64 [ 0, %125 ], [ %253, %128 ]
%142 = phi i64 [ %82, %125 ], [ %268, %128 ]
%143 = phi i64 [ %117, %125 ], [ %269, %128 ]
%144 = phi i64 [ 0, %125 ], [ %284, %128 ]
%145 = phi i64 [ 0, %125 ], [ %241, %128 ]
%146 = phi i64 [ %51, %125 ], [ %256, %128 ]
%147 = phi i64 [ %86, %125 ], [ 0, %128 ]
%148 = phi i64 [ 0, %125 ], [ %272, %128 ]
%149 = phi i64 [ 0, %125 ], [ %287, %128 ]
%150 = phi i64 [ %32, %125 ], [ %244, %128 ]
%151 = phi i64 [ %58, %125 ], [ %259, %128 ]
%152 = phi i64 [ %94, %125 ], [ 0, %128 ]
%153 = phi i64 [ 0, %125 ], [ %275, %128 ]
%154 = phi i64 [ 0, %125 ], [ %288, %128 ]
%155 = xor i64 %131, %130
%156 = xor i64 %155, %132
%157 = xor i64 %156, %133
%158 = xor i64 %157, %134
%159 = xor i64 %136, %135
%160 = xor i64 %159, %137
%161 = xor i64 %160, %138
%162 = xor i64 %161, %139
%163 = xor i64 %141, %140
%164 = xor i64 %163, %142
%165 = xor i64 %164, %143
%166 = xor i64 %165, %144
%167 = xor i64 %146, %145
%168 = xor i64 %167, %147
%169 = xor i64 %168, %148
%170 = xor i64 %169, %149
%171 = xor i64 %151, %150
%172 = xor i64 %171, %152
%173 = xor i64 %172, %153
%174 = xor i64 %173, %154
%175 = tail call i64 @llvm.fshl.i64(i64 %162, i64 %162, i64 1)
%176 = xor i64 %174, %175
%177 = tail call i64 @llvm.fshl.i64(i64 %166, i64 %166, i64 1)
%178 = xor i64 %177, %158
%179 = tail call i64 @llvm.fshl.i64(i64 %170, i64 %170, i64 1)
%180 = xor i64 %179, %162
%181 = tail call i64 @llvm.fshl.i64(i64 %174, i64 %174, i64 1)
%182 = xor i64 %181, %166
%183 = tail call i64 @llvm.fshl.i64(i64 %158, i64 %158, i64 1)
%184 = xor i64 %170, %183
%185 = xor i64 %176, %130
%186 = xor i64 %178, %135
%187 = xor i64 %180, %140
%188 = xor i64 %182, %145
%189 = xor i64 %184, %150
%190 = xor i64 %176, %131
%191 = xor i64 %178, %136
%192 = xor i64 %180, %141
%193 = xor i64 %182, %146
%194 = xor i64 %151, %184
%195 = xor i64 %176, %132
%196 = xor i64 %178, %137
%197 = xor i64 %180, %142
%198 = xor i64 %182, %147
%199 = xor i64 %152, %184
%200 = xor i64 %176, %133
%201 = xor i64 %178, %138
%202 = xor i64 %180, %143
%203 = xor i64 %182, %148
%204 = xor i64 %153, %184
%205 = xor i64 %176, %134
%206 = xor i64 %178, %139
%207 = xor i64 %180, %144
%208 = xor i64 %182, %149
%209 = xor i64 %154, %184
%210 = tail call i64 @llvm.fshl.i64(i64 %191, i64 %191, i64 44)
%211 = tail call i64 @llvm.fshl.i64(i64 %197, i64 %197, i64 43)
%212 = tail call i64 @llvm.fshl.i64(i64 %203, i64 %203, i64 21)
%213 = tail call i64 @llvm.fshl.i64(i64 %209, i64 %209, i64 14)
%214 = tail call i64 @llvm.fshl.i64(i64 %188, i64 %188, i64 28)
%215 = tail call i64 @llvm.fshl.i64(i64 %194, i64 %194, i64 20)
%216 = tail call i64 @llvm.fshl.i64(i64 %195, i64 %195, i64 3)
%217 = tail call i64 @llvm.fshl.i64(i64 %201, i64 %201, i64 45)
%218 = tail call i64 @llvm.fshl.i64(i64 %207, i64 %207, i64 61)
%219 = tail call i64 @llvm.fshl.i64(i64 %186, i64 %186, i64 1)
%220 = tail call i64 @llvm.fshl.i64(i64 %192, i64 %192, i64 6)
%221 = tail call i64 @llvm.fshl.i64(i64 %198, i64 %198, i64 25)
%222 = tail call i64 @llvm.fshl.i64(i64 %204, i64 %204, i64 8)
%223 = tail call i64 @llvm.fshl.i64(i64 %205, i64 %205, i64 18)
%224 = tail call i64 @llvm.fshl.i64(i64 %189, i64 %189, i64 27)
%225 = tail call i64 @llvm.fshl.i64(i64 %208, i64 %208, i64 56)
%226 = tail call i64 @llvm.fshl.i64(i64 %187, i64 %187, i64 62)
%227 = tail call i64 @llvm.fshl.i64(i64 %193, i64 %193, i64 55)
%228 = tail call i64 @llvm.fshl.i64(i64 %199, i64 %199, i64 39)
%229 = tail call i64 @llvm.fshl.i64(i64 %200, i64 %200, i64 41)
%230 = tail call i64 @llvm.fshl.i64(i64 %206, i64 %206, i64 2)
%231 = xor i64 %210, -1
%232 = and i64 %211, %231
%233 = xor i64 %211, -1
%234 = and i64 %212, %233
%235 = xor i64 %234, %210
%236 = xor i64 %212, -1
%237 = and i64 %213, %236
%238 = xor i64 %237, %211
%239 = xor i64 %213, -1
%240 = and i64 %185, %239
%241 = xor i64 %212, %240
%242 = xor i64 %185, -1
%243 = and i64 %210, %242
%244 = xor i64 %243, %213
%245 = xor i64 %215, -1
%246 = and i64 %216, %245
%247 = xor i64 %214, %246
%248 = xor i64 %216, -1
%249 = and i64 %217, %248
%250 = xor i64 %249, %215
%251 = xor i64 %217, -1
%252 = and i64 %218, %251
%253 = xor i64 %216, %252
%254 = xor i64 %218, -1
%255 = and i64 %214, %254
%256 = xor i64 %255, %217
%257 = xor i64 %214, -1
%258 = and i64 %215, %257
%259 = xor i64 %258, %218
%260 = xor i64 %220, -1
%261 = and i64 %221, %260
%262 = xor i64 %261, %219
%263 = xor i64 %221, -1
%264 = and i64 %222, %263
%265 = xor i64 %264, %220
%266 = xor i64 %222, -1
%267 = and i64 %223, %266
%268 = xor i64 %221, %267
%269 = xor i64 0, 0
%270 = xor i64 %225, -1
%271 = and i64 %224, %270
%272 = xor i64 %271, 0
%273 = xor i64 %224, -1
%274 = and i64 0, %273
%275 = xor i64 %225, %274
%276 = xor i64 %227, -1
%277 = and i64 %228, %276
%278 = xor i64 %277, %226
%279 = xor i64 %228, -1
%280 = and i64 %229, %279
%281 = xor i64 %227, %280
%282 = xor i64 %229, -1
%283 = and i64 %230, %282
%284 = xor i64 %283, %228
%285 = xor i64 %230, -1
%286 = and i64 %226, %285
%287 = xor i64 %229, %286
%288 = xor i64 0, %230
%289 = getelementptr [8 x i8], ptr null, i64 %129
%290 = getelementptr i8, ptr %289, i64 -8
%291 = load i64, ptr %290, align 8
%292 = xor i64 %232, %291
%293 = xor i64 %292, %185
%.not593 = icmp eq i64 %129, 24
%294 = add nuw nsw i64 %129, 1
br label %128
}
; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #3
; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.fshl.i64(i64, i64, i64) #3
attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" }
attributes #3 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment