LLVM small vs big
278 removals
356 lines
185 additions
261 lines
; ModuleID = 'BitcodeBuffer'
; ModuleID = 'BitcodeBuffer'
source_filename = "biggy"
source_filename = "biggy"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-macosx14.5.0-unknown"
target triple = "x86_64-unknown-macosx14.5.0-unknown"
%macho.mach_header_64 = type { i32, i32, i32, i32, i32, i32, i32, i32 }
%macho.mach_header_64 = type { i32, i32, i32, i32, i32, i32, i32, i32 }
%Thread.Mutex.Recursive = type { i64, i64, %Thread.Mutex, [4 x i8] }
%Thread.Mutex.Recursive = type { i64, i64, %Thread.Mutex, [4 x i8] }
%Thread.Mutex = type { %Thread.Mutex.DarwinImpl }
%Thread.Mutex = type { %Thread.Mutex.DarwinImpl }
%Thread.Mutex.DarwinImpl = type { %c.darwin.os_unfair_lock }
%Thread.Mutex.DarwinImpl = type { %c.darwin.os_unfair_lock }
%c.darwin.os_unfair_lock = type { i32 }
%c.darwin.os_unfair_lock = type { i32 }
%"atomic.Value(u8)" = type { i8 }
%"atomic.Value(u8)" = type { i8 }
%fmt.FormatOptions = type { { i64, i8, [7 x i8] }, { i64, i8, [7 x i8] }, i21, i2, [3 x i8] }
%fmt.FormatOptions = type { { i64, i8, [7 x i8] }, { i64, i8, [7 x i8] }, i21, i2, [3 x i8] }
%io.Writer = type { ptr, ptr }
%io.Writer = type { ptr, ptr }
%"io.fixed_buffer_stream.FixedBufferStream([]u8)" = type { { ptr, i64 }, i64 }
%"io.fixed_buffer_stream.FixedBufferStream([]u8)" = type { { ptr, i64 }, i64 }
@os.argv = internal unnamed_addr global { ptr, i64 } undef, align 8
@os.argv = internal unnamed_addr global { ptr, i64 } undef, align 8
@os.environ = internal unnamed_addr global { ptr, i64 } undef, align 8
@os.environ = internal unnamed_addr global { ptr, i64 } undef, align 8
@__anon_1669 = internal unnamed_addr constant { { ptr }, i32, i32 } { { ptr } { ptr @start.noopSigHandler }, i32 0, i32 0 }, align 8
@__anon_1669 = internal unnamed_addr constant { { ptr }, i32, i32 } { { ptr } { ptr @start.noopSigHandler }, i32 0, i32 0 }, align 8
@_mh_execute_header = weak_odr dso_local local_unnamed_addr global %macho.mach_header_64 undef, align 4
@_mh_execute_header = weak_odr dso_local local_unnamed_addr global %macho.mach_header_64 undef, align 4
@__anon_2157 = internal unnamed_addr constant [16 x i8] c"(msg truncated)\00", align 1
@__anon_2157 = internal unnamed_addr constant [16 x i8] c"(msg truncated)\00", align 1
@Progress.stderr_mutex = internal unnamed_addr global %Thread.Mutex.Recursive { i64 -1, i64 0, %Thread.Mutex zeroinitializer, [4 x i8] undef }, align 8
@Progress.stderr_mutex = internal unnamed_addr global %Thread.Mutex.Recursive { i64 -1, i64 0, %Thread.Mutex zeroinitializer, [4 x i8] undef }, align 8
@__anon_1474 = internal unnamed_addr constant [5 x i8] c"{d}\0A\00", align 1
@__anon_1474 = internal unnamed_addr constant [5 x i8] c"{d}\0A\00", align 1
@__anon_1704 = internal unnamed_addr constant [40 x i8] c"failed to set noop SIGPIPE handler: {s}\00", align 1
@__anon_1704 = internal unnamed_addr constant [40 x i8] c"failed to set noop SIGPIPE handler: {s}\00", align 1
@0 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 7, [6 x i8] undef }, align 8
@0 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 7, [6 x i8] undef }, align 8
@1 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 14, [6 x i8] undef }, align 8
@1 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 14, [6 x i8] undef }, align 8
@2 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 12, [6 x i8] undef }, align 8
@2 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 12, [6 x i8] undef }, align 8
@3 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 2, [6 x i8] undef }, align 8
@3 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 2, [6 x i8] undef }, align 8
@4 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 3, [6 x i8] undef }, align 8
@4 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 3, [6 x i8] undef }, align 8
@5 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 4, [6 x i8] undef }, align 8
@5 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 4, [6 x i8] undef }, align 8
@6 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 8, [6 x i8] undef }, align 8
@6 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 8, [6 x i8] undef }, align 8
@7 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 9, [6 x i8] undef }, align 8
@7 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 9, [6 x i8] undef }, align 8
@8 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 15, [6 x i8] undef }, align 8
@8 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 15, [6 x i8] undef }, align 8
@9 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 6, [6 x i8] undef }, align 8
@9 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 6, [6 x i8] undef }, align 8
@debug.panic_stage = internal thread_local unnamed_addr global i64 0, align 8
@debug.panic_stage = internal thread_local unnamed_addr global i64 0, align 8
@debug.panicking = internal unnamed_addr global %"atomic.Value(u8)" zeroinitializer, align 1
@debug.panicking = internal unnamed_addr global %"atomic.Value(u8)" zeroinitializer, align 1
@10 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 23, i3 undef, [1 x i8] undef }, align 2
@10 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 23, i3 undef, [1 x i8] undef }, align 2
@__anon_3651 = internal unnamed_addr constant [3 x i8] c"\EF\BF\BD", align 1
@__anon_3683 = internal unnamed_addr constant [3 x i8] c"\EF\BF\BD", align 1
@11 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 5, [6 x i8] undef }, align 8
@11 = private unnamed_addr constant { i64, i16, [6 x i8] } { i64 undef, i16 5, [6 x i8] undef }, align 8
@__anon_3758 = internal unnamed_addr constant [201 x i8] c"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899\00", align 1
@__anon_3790 = internal unnamed_addr constant [201 x i8] c"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899\00", align 1
@12 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 0, i3 1, [1 x i8] undef }, align 4
@12 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 0, i3 1, [1 x i8] undef }, align 4
@13 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 0, i3 2, [1 x i8] undef }, align 4
@13 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 0, i3 2, [1 x i8] undef }, align 4
@14 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 0, i3 3, [1 x i8] undef }, align 4
@14 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 0, i3 3, [1 x i8] undef }, align 4
@15 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 0, i3 -4, [1 x i8] undef }, align 4
@15 = private unnamed_addr constant { i16, i3, [1 x i8] } { i16 0, i3 -4, [1 x i8] undef }, align 4
@__anon_3287 = internal unnamed_addr constant [18 x i8] c"thread {} panic: \00", align 1
@__anon_3287 = internal unnamed_addr constant [18 x i8] c"thread {} panic: \00", align 1
@16 = private unnamed_addr constant %fmt.FormatOptions { { i64, i8, [7 x i8] } { i64 undef, i8 0, [7 x i8] undef }, { i64, i8, [7 x i8] } { i64 undef, i8 0, [7 x i8] undef }, i21 32, i2 -2, [3 x i8] undef }, align 8
@16 = private unnamed_addr constant %fmt.FormatOptions { { i64, i8, [7 x i8] } { i64 undef, i8 0, [7 x i8] undef }, { i64, i8, [7 x i8] } { i64 undef, i8 0, [7 x i8] undef }, i21 32, i2 -2, [3 x i8] undef }, align 8
@__anon_3300 = internal unnamed_addr constant [5 x i8] c"{s}\0A\00", align 1
@__anon_3300 = internal unnamed_addr constant [5 x i8] c"{s}\0A\00", align 1
@__anon_3318 = internal unnamed_addr constant [36 x i8] c"Panicked during a panic. Aborting.\0A\00", align 1
@__anon_3318 = internal unnamed_addr constant [36 x i8] c"Panicked during a panic. Aborting.\0A\00", align 1
@__anon_3692 = internal unnamed_addr constant [49 x i8] c"Unable to dump stack trace: debug info stripped\0A\00", align 1
@__anon_3724 = internal unnamed_addr constant [49 x i8] c"Unable to dump stack trace: debug info stripped\0A\00", align 1
@17 = private unnamed_addr constant [22 x i8] c"OperationNotSupported\00", align 1
@17 = private unnamed_addr constant [22 x i8] c"OperationNotSupported\00", align 1
; Function Attrs: nounwind uwtable
; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 %0, ptr nonnull align 8 %1, ptr nonnull align 8 %2) local_unnamed_addr #0 {
define dso_local noundef i32 @main(i32 %0, ptr nonnull align 8 %1, ptr nonnull align 8 %2) local_unnamed_addr #0 {
%4 = alloca [16 x i8], align 8
%4 = alloca [16509 x i8], align 1
%.sroa.0.i.i.i.i.i.i.i.i = alloca i16, align 2
%5 = alloca [16 x i8], align 8
%5 = alloca [12 x i8], align 1
%.sroa.0.i.i.i.i.i.i.i.i = alloca i16512, align 16
%6 = alloca [8 x i8], align 8
%6 = alloca [8 x i8], align 8
%7 = alloca [16 x i8], align 8
%7 = alloca [16 x i8], align 8
%8 = alloca [4 x i8], align 4
%8 = alloca [4 x i8], align 4
%9 = alloca [16 x i8], align 8
%9 = alloca [16 x i8], align 8
br label %10
br label %10
10: ; preds = %10, %3
10: ; preds = %10, %3
%lsr.iv = phi i64 [ %lsr.iv.next, %10 ], [ -1, %3 ]
%lsr.iv = phi i64 [ %lsr.iv.next, %10 ], [ -1, %3 ]
%11 = shl i64 %lsr.iv, 3
%11 = shl i64 %lsr.iv, 3
%scevgep14 = getelementptr i8, ptr %2, i64 %11
%scevgep = getelementptr i8, ptr %2, i64 %11
%scevgep15 = getelementptr i8, ptr %scevgep14, i64 8
%scevgep13 = getelementptr i8, ptr %scevgep, i64 8
%12 = load ptr, ptr %scevgep15, align 8
%12 = load ptr, ptr %scevgep13, align 8
%.not = icmp eq ptr %12, null
%.not = icmp eq ptr %12, null
%lsr.iv.next = add i64 %lsr.iv, 1
%lsr.iv.next = add i64 %lsr.iv, 1
br i1 %.not, label %13, label %10
br i1 %.not, label %13, label %10
13: ; preds = %10
13: ; preds = %10
%14 = sext i32 %0 to i64
%14 = sext i32 %0 to i64
store ptr %1, ptr @os.argv, align 8
store ptr %1, ptr @os.argv, align 8
store i64 %14, ptr getelementptr inbounds ({ ptr, i64 }, ptr @os.argv, i64 0, i32 1), align 8
store i64 %14, ptr getelementptr inbounds ({ ptr, i64 }, ptr @os.argv, i64 0, i32 1), align 8
store ptr %2, ptr @os.environ, align 8
store ptr %2, ptr @os.environ, align 8
store i64 %lsr.iv.next, ptr getelementptr inbounds ({ ptr, i64 }, ptr @os.environ, i64 0, i32 1), align 8
store i64 %lsr.iv.next, ptr getelementptr inbounds ({ ptr, i64 }, ptr @os.environ, i64 0, i32 1), align 8
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4)
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4)
%15 = tail call i32 @sigaction(i32 13, ptr noalias nonnull readonly align 8 @__anon_1669, ptr noalias align 8 null)
%15 = tail call i32 @sigaction(i32 13, ptr noalias nonnull readonly align 8 @__anon_1669, ptr noalias align 8 null)
%16 = icmp eq i32 %15, -1
%16 = icmp eq i32 %15, -1
br i1 %16, label %posix.errno__anon_3210.exit.i.i, label %start.maybeIgnoreSigpipe.exit
br i1 %16, label %posix.errno__anon_3210.exit.i.i, label %start.maybeIgnoreSigpipe.exit
posix.errno__anon_3210.exit.i.i: ; preds = %13
posix.errno__anon_3210.exit.i.i: ; preds = %13
%17 = tail call ptr @__error()
%17 = tail call ptr @__error()
%18 = load i32, ptr %17, align 4
%18 = load i32, ptr %17, align 4
%.fr3.i.i = freeze i32 %18
%.fr3.i.i = freeze i32 %18
%19 = and i32 %.fr3.i.i, 65535
%19 = and i32 %.fr3.i.i, 65535
%switch.i.i = icmp eq i32 %19, 0
%switch.i.i = icmp eq i32 %19, 0
br i1 %switch.i.i, label %start.maybeIgnoreSigpipe.exit, label %posix.sigaction.exit.i
br i1 %switch.i.i, label %start.maybeIgnoreSigpipe.exit, label %posix.sigaction.exit.i
posix.sigaction.exit.i: ; preds = %posix.errno__anon_3210.exit.i.i
posix.sigaction.exit.i: ; preds = %posix.errno__anon_3210.exit.i.i
store ptr @17, ptr %4, align 8
store ptr @17, ptr %4, align 8
%.fca.1.gep.i = getelementptr inbounds { ptr, i64 }, ptr %4, i64 0, i32 1
%.fca.1.gep.i = getelementptr inbounds { ptr, i64 }, ptr %4, i64 0, i32 1
store i64 21, ptr %.fca.1.gep.i, align 8
store i64 21, ptr %.fca.1.gep.i, align 8
call fastcc void @debug.panic__anon_2624(ptr nonnull readonly align 8 %4)
call fastcc void @debug.panic__anon_2624(ptr nonnull readonly align 8 %4)
unreachable
unreachable
start.maybeIgnoreSigpipe.exit: ; preds = %13, %posix.errno__anon_3210.exit.i.i
start.maybeIgnoreSigpipe.exit: ; preds = %13, %posix.errno__anon_3210.exit.i.i
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4)
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4)
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7)
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7)
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8)
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8)
call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4)
call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4)
%20 = call i32 @pthread_threadid_np(ptr align 1 null, ptr nonnull align 8 %4)
%20 = call i32 @pthread_threadid_np(ptr align 1 null, ptr nonnull align 8 %4)
%21 = load i64, ptr %4, align 8
%21 = load i64, ptr %4, align 8
call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4)
call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4)
%22 = load atomic i64, ptr @Progress.stderr_mutex unordered, align 8
%22 = load atomic i64, ptr @Progress.stderr_mutex unordered, align 8
%.not.i.i.i.i.i = icmp eq i64 %22, %21
%.not.i.i.i.i.i = icmp eq i64 %22, %21
br i1 %.not.i.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %24
br i1 %.not.i.i.i.i.i, label %._crit_edge.i.i.i.i.i, label %24
._crit_edge.i.i.i.i.i: ; preds = %start.maybeIgnoreSigpipe.exit
._crit_edge.i.i.i.i.i: ; preds = %start.maybeIgnoreSigpipe.exit
%.pre.i.i.i.i.i = load i64, ptr getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 1), align 8
%.pre.i.i.i.i.i = load i64, ptr getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 1), align 8
%23 = add nuw i64 %.pre.i.i.i.i.i, 1
%23 = add nuw i64 %.pre.i.i.i.i.i, 1
br label %Thread.Mutex.Recursive.lock.exit.i.i.i.i
br label %Thread.Mutex.Recursive.lock.exit.i.i.i.i
24: ; preds = %start.maybeIgnoreSigpipe.exit
24: ; preds = %start.maybeIgnoreSigpipe.exit
call void @os_unfair_lock_lock(ptr nonnull align 4 getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 2))
call void @os_unfair_lock_lock(ptr nonnull align 4 getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 2))
store atomic i64 %21, ptr @Progress.stderr_mutex unordered, align 8
store atomic i64 %21, ptr @Progress.stderr_mutex unordered, align 8
br label %Thread.Mutex.Recursive.lock.exit.i.i.i.i
br label %Thread.Mutex.Recursive.lock.exit.i.i.i.i
Thread.Mutex.Recursive.lock.exit.i.i.i.i: ; preds = %24, %._crit_edge.i.i.i.i.i
Thread.Mutex.Recursive.lock.exit.i.i.i.i: ; preds = %24, %._crit_edge.i.i.i.i.i
%25 = phi i64 [ %23, %._crit_edge.i.i.i.i.i ], [ 1, %24 ]
%25 = phi i64 [ %23, %._crit_edge.i.i.i.i.i ], [ 1, %24 ]
store i64 %25, ptr getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 1), align 8
store i64 %25, ptr getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 1), align 8
store i32 2, ptr %8, align 4
store i32 2, ptr %8, align 4
store ptr %8, ptr %7, align 8
store ptr %8, ptr %7, align 8
%.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %7, i64 8
%.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %7, i64 8
store ptr @"io.GenericWriter(fs.File,error{DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,AccessDenied,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer,Unexpected},(function 'write')).typeErasedWriteFn", ptr %.sroa.2.0..sroa_idx.i.i, align 8
store ptr @"io.GenericWriter(fs.File,error{DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,AccessDenied,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer,Unexpected},(function 'write')).typeErasedWriteFn", ptr %.sroa.2.0..sroa_idx.i.i, align 8
call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i)
call void @llvm.lifetime.start.p0(i64 2064, ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i)
call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %4)
call void @llvm.lifetime.start.p0(i64 16509, ptr nonnull %4)
store i11 -535, ptr %.sroa.0.i.i.i.i.i.i.i.i, align 2
store i16508 -10170291864599254685376928579451837474849162567202793202210005589829000001078205320552418457072995021665081016751661498373627049384699318424501181692820593184504087730148641241678808042364595648099335954245308528979249571015745002826186590929629881504912826401439521673436761967613685880371807232457262686567424590031041380673713995838060943073894429776039677102519416452786696299358972088899041919622869132413389847315698310753997445809635163863167518537049953145856120898487515084175003600571605920732046428967026145392827337980304413004181016851665875688004233509871598760500818920715799014335111801474484357883706457620708194488463786749410052154637190792137233742013162514773385877134386262850484887912034511384718707031119901541770568014454622534818196961900563346643897899550007564212094603016505689908364328097828672894286906663226798373444845834693955014696786963085485271317392968218570506297665977171100553475630578002558846609566914043356188967361610411543136798575744314602254384950974207577412792436485393343681447431637237619645239077207141954593409191577470854214214527062603987504056592716485429461337411416260411326122358005905006316691630702571168235469072537497205173435015314507595727846352208189390532350213091213800972487586332217101318593346932069519217231589404890187395493634737698008526992188059185372314824731375396348191019878904912839508442756350390540735539252897915733820543408757569669698347612105479742809551939160392021065832065405409081730683324439021651649491831037679012669450154646742117936765042759895960577820982932866878502251386683008049011770676146352569948875377603710833473891506210586138680283010472789540500225895060555108201701992727326595781983950669964075131259737163476094947430634318943636928287372962645431712200260631668466327845535662057485535837794525134023839265097149357341392598116869488624424785202638945781617525507938417812908847621126603840809577946471124135694835361573590901992187275827560839788808337132342294924890375309400257342009263852446339871433421676949846863282574082039977414219589803793916512909477524042210110800691164503650743380087245557641026211814759138938988902861017910466035027098468734696374409423704953462131615276035702698679732554136720945239658165359508037173360372815496654167204006231237426043465954430397642367117232930610595436866781711749420539266607239120223586178746215762403241013292054006749667406788906806805592302769876093682670642350035696145740990073504781641729792954366610972925522628335087544802633805690233302012159090369683206299864779369074527397582813287667049841022155179568481557777835146467492996478983466483796095978619494437171038193055428615448303476987170979391130540042796021914260857669773809570737629831468265070925527793456242603671249643407962165278914705488149199414094623300052410504342594660990694744188830372516809980695115283847259973757644302706098476458582967338215789704831373221098805862179408470429000015253437609814427186345113105380913865183211103854173139668163034753687379160010280613421026023890596514366114135274946001300700194910144693521056529983593765001894538632102620168685513626721747547826694134393963446602620483818228897392219995580293504842587667052922133905724401820039637095826339208144068128377429384676352007091773106260804817125447038141483776457981313958958092108328282828053626226628090709775490475240442376407471420986088375725056540403885755395629035905003996346421829048422358054746864793871834883615300995578921735883258386042117891005285543107032952574305665807856936503308918143218775773797369587210043046599546768617072387732655869462532049808040881980586736124414441700729276886084859965622473856577848273644660887511279610766981550723531537893109091954772728621697718590103892582178423141920898008271694828510750734262472584519256218653510185043492778801555081506017195136331276343395988406747764213253662884510302885907963443294007599360288788267089632492610674522627379722948196647439768648579013784052729708248828866232668193464937159485130054818011877242971754480988588904950251544526947897977338033018106506447157602740037907962641818493560785107234932326553825207764543212594416681681823492669465597871034101589352735991725895285081352274192696182365962855972508506787548097373692081044103866483153776147626484118284798381649312916432153698693244624539921281359272516104764491311933680047951327243268187343845278680242472956504586941343915803694364446442435372361783481084800047708582833218561233645375187287580425881439984086029571534196348134033146101419942736419641888862430531852148834144585678127762684826323916687596634753290731198722290470721336516647215194644802980928563903497893503658792688705282357034713790871476544032008607911697136089003142015145531481746494131435796427849458279257616606660487172062438048287573657170255549994951125054212584895866729458830403990657106990989224437000964710449092864360449583564842610076950491711517265333959716772707478792311035106252904185320928056511, ptr %.sroa.0.i.i.i.i.i.i.i.i, align 16
%.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i = load i16, ptr %.sroa.0.i.i.i.i.i.i.i.i, align 2
%.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i = load i16512, ptr %.sroa.0.i.i.i.i.i.i.i.i, align 16
%26 = trunc i16 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i to i11
%26 = trunc i16512 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i to i16508
%27 = icmp ugt i11 %26, 99
%27 = icmp ugt i16508 %26, 99
br i1 %27, label %.lr.ph.i.i.i.i.i.i.i.i.preheader, label %._crit_edge.i.i.i.i.i.i.i.i
%extract.t.i.i.i.i.i.i.i.i = trunc i16512 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i to i8
%extract.t9.i.i.i.i.i.i.i.i = trunc i16512 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i to i64
br i1 %27, label %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases.preheader, label %._crit_edge.i.i.i.i.i.i.i.i
.lr.ph.i.i.i.i.i.i.i.i.preheader: ; preds = %Thread.Mutex.Recursive.lock.exit.i.i.i.i
.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases.preheader: ; preds = %Thread.Mutex.Recursive.lock.exit.i.i.i.i
%28 = trunc i16 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i to i11
%28 = trunc i16512 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i to i16508
br label %.lr.ph.i.i.i.i.i.i.i.i
br label %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases
.lr.ph.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.preheader, %.lr.ph.i.i.i.i.i.i.i.i
.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases: ; preds = %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases.preheader, %udiv-end
%29 = phi i11 [ %36, %.lr.ph.i.i.i.i.i.i.i.i ], [ %28, %.lr.ph.i.i.i.i.i.i.i.i.preheader ]
%29 = phi i16508 [ %76, %udiv-end ], [ %28, %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases.preheader ]
%.sroa.09.14.i.i.i.i.i.i.i.i = phi i64 [ %30, %.lr.ph.i.i.i.i.i.i.i.i ], [ 12, %.lr.ph.i.i.i.i.i.i.i.i.preheader ]
%.sroa.09.14.i.i.i.i.i.i.i.i = phi i64 [ %30, %udiv-end ], [ 16509, %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases.preheader ]
%30 = add i64 %.sroa.09.14.i.i.i.i.i.i.i.i, -2
%30 = add i64 %.sroa.09.14.i.i.i.i.i.i.i.i, -2
%scevgep = getelementptr i8, ptr %4, i64 %.sroa.09.14.i.i.i.i.i.i.i.i
%.frozen = freeze i16508 %29
%scevgep13 = getelementptr i8, ptr %scevgep, i64 -2
%31 = freeze i16508 100
%.frozen = freeze i11 %29
%32 = freeze i16508 %.frozen
%31 = udiv i11 %.frozen, 100
%33 = icmp eq i16508 %31, 0
%32 = mul i11 %31, 100
%34 = icmp eq i16508 %32, 0
%.decomposed = sub i11 %.frozen, %32
%35 = or i1 %33, %34
%promoted = zext i11 %.decomposed to i64
%36 = call i16508 @llvm.ctlz.i16508(i16508 %31, i1 true)
%33 = shl nuw nsw i64 %promoted, 1
%37 = call i16508 @llvm.ctlz.i16508(i16508 %32, i1 true)
%34 = getelementptr inbounds i8, ptr @__anon_3758, i64 %33
%38 = sub i16508 %36, %37
%35 = load i16, ptr %34, align 1, !noalias !2
%39 = icmp ugt i16508 %38, 16507
store i16 %35, ptr %scevgep13, align 1
%40 = select i1 %35, i1 true, i1 %39
store i11 %31, ptr %.sroa.0.i.i.i.i.i.i.i.i, align 2
%41 = icmp eq i16508 %38, 16507
%.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.1.i.i.i.i.i.i.i.i = load i16, ptr %.sroa.0.i.i.i.i.i.i.i.i, align 2
%42 = select i1 %40, i16508 0, i16508 %32
%36 = trunc i16 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.1.i.i.i.i.i.i.i.i to i11
%43 = select i1 %40, i1 true, i1 %41
%37 = icmp ugt i11 %36, 99
br i1 %43, label %udiv-end, label %udiv-bb1
br i1 %37, label %.lr.ph.i.i.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i.i.i
._crit_edge.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i, %Thread.Mutex.Recursive.lock.exit.i.i.i.i
udiv-loop-exit: ; preds = %udiv-do-while, %udiv-bb1
%.sroa.09.1.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 12, %Thread.Mutex.Recursive.lock.exit.i.i.i.i ], [ %30, %.lr.ph.i.i.i.i.i.i.i.i ]
%44 = phi i16508 [ 0, %udiv-bb1 ], [ %59, %udiv-do-while ]
%.sroa.0.0..sroa.0.0..sroa.0.0.1.lcssa.i.i.i.i.i.i.i.i = phi i16 [ %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.13.i.i.i.i.i.i.i.i, %Thread.Mutex.Recursive.lock.exit.i.i.i.i ], [ %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.1.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ]
%45 = phi i16508 [ %68, %udiv-bb1 ], [ %56, %udiv-do-while ]
%.lcssa.i.i.i.i.i.i.i.i = phi i11 [ %26, %Thread.Mutex.Recursive.lock.exit.i.i.i.i ], [ %36, %.lr.ph.i.i.i.i.i.i.i.i ]
%46 = shl i16508 %45, 1
%38 = icmp ult i11 %.lcssa.i.i.i.i.i.i.i.i, 10
%47 = or i16508 %44, %46
br i1 %38, label %39, label %44
br label %udiv-end
39: ; preds = %._crit_edge.i.i.i.i.i.i.i.i
udiv-do-while: ; preds = %udiv-do-while, %udiv-preheader
%40 = add i64 %.sroa.09.1.lcssa.i.i.i.i.i.i.i.i, -1
%48 = phi i16508 [ 0, %udiv-preheader ], [ %59, %udiv-do-while ]
%41 = getelementptr inbounds [12 x i8], ptr %4, i64 0, i64 %40
%49 = phi i16508 [ %66, %udiv-preheader ], [ %62, %udiv-do-while ]
%42 = trunc i16 %.sroa.0.0..sroa.0.0..sroa.0.0.1.lcssa.i.i.i.i.i.i.i.i to i8
%50 = phi i16508 [ %64, %udiv-preheader ], [ %61, %udiv-do-while ]
%43 = add nuw nsw i8 %42, 48
%51 = phi i16508 [ %68, %udiv-preheader ], [ %56, %udiv-do-while ]
store i8 %43, ptr %41, align 1
%52 = shl i16508 %50, 1
%53 = lshr i16508 %51, 16507
%54 = or i16508 %52, %53
%55 = shl i16508 %51, 1
%56 = or i16508 %48, %55
%57 = sub i16508 %65, %54
%58 = ashr i16508 %57, 16507
%59 = and i16508 %58, 1
%60 = and i16508 %58, %31
%61 = sub i16508 %54, %60
%62 = add i16508 %49, -1
%63 = icmp eq i16508 %62, 0
br i1 %63, label %udiv-loop-exit, label %udiv-do-while
udiv-preheader: ; preds = %udiv-bb1
%64 = lshr i16508 %32, %66
%65 = add i16508 %31, -1
br label %udiv-do-while
udiv-bb1: ; preds = %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases
%66 = add i16508 %38, 1
%67 = sub i16508 16507, %38
%68 = shl i16508 %32, %67
%69 = icmp eq i16508 %66, 0
br i1 %69, label %udiv-loop-exit, label %udiv-preheader
udiv-end: ; preds = %udiv-loop-exit, %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases
%70 = phi i16508 [ %47, %udiv-loop-exit ], [ %42, %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases ]
%71 = mul i16508 %70, 100
%.decomposed = sub i16508 %.frozen, %71
%72 = trunc i16508 %.decomposed to i64
%73 = shl nuw nsw i64 %72, 1
%74 = getelementptr inbounds i8, ptr @__anon_3790, i64 %73
%75 = load i16, ptr %74, align 1, !noalias !2
%sunkaddr = getelementptr inbounds i8, ptr %4, i64 %30
store i16 %75, ptr %sunkaddr, align 1
store i16508 %70, ptr %.sroa.0.i.i.i.i.i.i.i.i, align 16
%.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.1.i.i.i.i.i.i.i.i = load i16512, ptr %.sroa.0.i.i.i.i.i.i.i.i, align 16
%76 = trunc i16512 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.1.i.i.i.i.i.i.i.i to i16508
%77 = icmp ugt i16508 %76, 99
br i1 %77, label %.lr.ph.i.i.i.i.i.i.i.i_udiv-special-cases, label %._crit_edge.loopexit.i.i.i.i.i.i.i.i
._crit_edge.loopexit.i.i.i.i.i.i.i.i: ; preds = %udiv-end
%78 = trunc i16512 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.1.i.i.i.i.i.i.i.i to i16508
%extract.t10.i.i.i.i.i.i.i.i = trunc i16512 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.1.i.i.i.i.i.i.i.i to i64
%extract.t7.i.i.i.i.i.i.i.i = trunc i16512 %.sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.i.0..sroa.0.i.i.0..sroa.0.i.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.0.0..sroa.0.0.1.i.i.i.i.i.i.i.i to i8
br label %._crit_edge.i.i.i.i.i.i.i.i
._crit_edge.i.i.i.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i.i.i.i, %Thread.Mutex.Recursive.lock.exit.i.i.i.i
%.sroa.09.1.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 16509, %Thread.Mutex.Recursive.lock.exit.i.i.i.i ], [ %30, %._crit_edge.loopexit.i.i.i.i.i.i.i.i ]
%.sroa.0.0..sroa.0.0..sroa.0.0.1.lcssa.off0.i.i.i.i.i.i.i.i = phi i8 [ %extract.t.i.i.i.i.i.i.i.i, %Thread.Mutex.Recursive.lock.exit.i.i.i.i ], [ %extract.t7.i.i.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i.i.i ]
%.sroa.0.0..sroa.0.0..sroa.0.0.1.lcssa.off08.i.i.i.i.i.i.i.i = phi i64 [ %extract.t9.i.i.i.i.i.i.i.i, %Thread.Mutex.Recursive.lock.exit.i.i.i.i ], [ %extract.t10.i.i.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i.i.i ]
%.lcssa.i.i.i.i.i.i.i.i = phi i16508 [ %26, %Thread.Mutex.Recursive.lock.exit.i.i.i.i ], [ %78, %._crit_edge.loopexit.i.i.i.i.i.i.i.i ]
%79 = icmp ult i16508 %.lcssa.i.i.i.i.i.i.i.i, 10
br i1 %79, label %80, label %84
80: ; preds = %._crit_edge.i.i.i.i.i.i.i.i
%81 = add i64 %.sroa.09.1.lcssa.i.i.i.i.i.i.i.i, -1
%82 = getelementptr inbounds [16509 x i8], ptr %4, i64 0, i64 %81
%83 = add nuw nsw i8 %.sroa.0.0..sroa.0.0..sroa.0.0.1.lcssa.off0.i.i.i.i.i.i.i.i, 48
store i8 %83, ptr %82, align 1
br label %fmt.formatType__anon_3567.exit.i.i.i.i
br label %fmt.formatType__anon_3567.exit.i.i.i.i
44: ; preds = %._crit_edge.i.i.i.i.i.i.i.i
84: ; preds = %._crit_edge.i.i.i.i.i.i.i.i
%45 = add i64 %.sroa.09.1.lcssa.i.i.i.i.i.i.i.i, -2
%85 = add i64 %.sroa.09.1.lcssa.i.i.i.i.i.i.i.i, -2
%46 = getelementptr inbounds i8, ptr %4, i64 %45
%86 = getelementptr inbounds i8, ptr %4, i64 %85
%.mask.i.i.i.i.i.i.i.i = shl i16 %.sroa.0.0..sroa.0.0..sroa.0.0.1.lcssa.i.i.i.i.i.i.i.i, 1
%87 = shl nuw nsw i64 %.sroa.0.0..sroa.0.0..sroa.0.0.1.lcssa.off08.i.i.i.i.i.i.i.i, 1
%promoted18 = zext i16 %.mask.i.i.i.i.i.i.i.i to i64
%88 = getelementptr inbounds i8, ptr @__anon_3790, i64 %87
%47 = and i64 %promoted18, 4094
%89 = load i16, ptr %88, align 1, !noalias !5
%48 = getelementptr inbounds i8, ptr @__anon_3758, i64 %47
store i16 %89, ptr %86, align 1
%49 = load i16, ptr %48, align 1, !noalias !5
store i16 %49, ptr %46, align 1
br label %fmt.formatType__anon_3567.exit.i.i.i.i
br label %fmt.formatType__anon_3567.exit.i.i.i.i
fmt.formatType__anon_3567.exit.i.i.i.i: ; preds = %44, %39
fmt.formatType__anon_3567.exit.i.i.i.i: ; preds = %84, %80
%.sroa.09.0.i.i.i.i.i.i.i.i = phi i64 [ %40, %39 ], [ %45, %44 ]
%.sroa.09.0.i.i.i.i.i.i.i.i = phi i64 [ %81, %80 ], [ %85, %84 ]
%50 = getelementptr inbounds i8, ptr %4, i64 %.sroa.09.0.i.i.i.i.i.i.i.i
%90 = getelementptr inbounds i8, ptr %4, i64 %.sroa.09.0.i.i.i.i.i.i.i.i
%51 = sub nuw i64 12, %.sroa.09.0.i.i.i.i.i.i.i.i
%91 = sub nuw i64 16509, %.sroa.09.0.i.i.i.i.i.i.i.i
%52 = call fastcc i16 @fmt.formatBuf__anon_3980(ptr nonnull readonly align 1 %50, i64 %51, ptr nonnull readonly align 8 @16, ptr nonnull readonly align 8 %7)
%92 = call fastcc i16 @fmt.formatBuf__anon_3980(ptr nonnull readonly align 1 %90, i64 %91, ptr nonnull readonly align 8 @16, ptr nonnull readonly align 8 %7)
call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i)
call void @llvm.lifetime.end.p0(i64 2064, ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i)
call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4)
call void @llvm.lifetime.end.p0(i64 16509, ptr nonnull %4)
%.not.i.i.i.i = icmp eq i16 %52, 0
%.not.i.i.i.i = icmp eq i16 %92, 0
br i1 %.not.i.i.i.i, label %.preheader.i.i, label %.loopexit.i.i
br i1 %.not.i.i.i.i, label %.preheader.i.i, label %.loopexit.i.i
.preheader.i.i: ; preds = %fmt.formatType__anon_3567.exit.i.i.i.i
.preheader.i.i: ; preds = %fmt.formatType__anon_3567.exit.i.i.i.i
br label %55
br label %95
53: ; preds = %55
%54 = add nuw i64 %.sroa.0.0.copyload.i.i, %.sroa.0.014.i.i.i.i.i
%.not.i.i.i4.i.i = icmp eq i64 %54, 1
br i1 %.not.i.i.i4.i.i, label %io.Writer.print__anon_2829.exit.i.i, label %55
55: ; preds = %53, %.preheader.i.i
%.sroa.0.014.i.i.i.i.i = phi i64 [ %54, %53 ], [ 0, %.preheader.i.i ]
%56 = getelementptr inbounds i8, ptr getelementptr inbounds ([5 x i8], ptr @__anon_1474, i64 0, i64 3), i64 %.sroa.0.014.i.i.i.i.i
%57 = sub nuw i64 1, %.sroa.0.014.i.i.i.i.i
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4)
%.val.i.i.i = load i32, ptr %8, align 4, !noalias !8
call fastcc void @fs.File.write(ptr noalias %4, i32 %.val.i.i.i, ptr nonnull readonly align 1 %56, i64 %57), !noalias !8
%.sroa.0.0.copyload.i.i = load i64, ptr %4, align 8, !noalias !13
%sunkaddr = getelementptr inbounds i8, ptr %4, i64 8
%.sroa.4.0.copyload.i.i = load i16, ptr %sunkaddr, align 8, !noalias !13
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4)
%.not7.i.i.i.i.i = icmp eq i16 %.sroa.4.0.copyload.i.i, 0
br i1 %.not7.i.i.i.i.i, label %53, label %.loopexit.i.i
common.ret.sink.split.i.i: ; preds = %.loopexit.i.i, %io.Writer.print__anon_2829.exit.i.i
store atomic i64 -1, ptr @Progress.stderr_mutex unordered, align 8
call void @os_unfair_lock_unlock(ptr nonnull align 4 getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 2))
br label %biggy.main.exit
io.Writer.print__anon_2829.exit.i.i: ; preds = %53
%58 = load i64, ptr getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 1), align 8
%59 = add i64 %58, -1
store i64 %59, ptr getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 1), align 8
%60 = icmp eq i64 %59, 0
br i1 %60, label %common.ret.sink.split.i.i, label %biggy.main.exit
.loopexit.i.i: ; preds = %55, %fmt.formatType__anon_3567.exit.i.i.i.i
%61 = load i64, ptr getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 1), align 8
%62 = add i64 %61, -1
store i64 %62, ptr getelementptr inbounds (%Thread.Mutex.Recursive, ptr @Progress.stderr_mutex, i64 0, i32 1), align 8
%63 = icmp eq i64 %62, 0
br i1 %63, label %common.ret.sink.split.i.i, label %biggy.main.exit
biggy.main.exit: ; preds = %common.ret.sink.split.i.i, %io.Writer.print__anon_2829.exit.i.i, %.loopexit.i.i
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7)
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8)
ret i32 0
}
; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable
define internal void @start.noopSigHandler(i32 %0) unnamed_addr #1 {
ret void
}
; Function Attrs: cold noreturn nounwind uwtable
define internal fastcc void @debug.panic__anon_2624(ptr nocapture nonnull readonly align 8 %0) unnamed_addr #2 !section_prefix !14 {
tail call fastcc void @debug.panicExtra__anon_3213(ptr nonnull readonly align 8 %0)
unreachable
}
; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3
; Function Attrs: nounwind uwtable
define internal fastcc void @"io.GenericWriter(fs.File,error{DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,AccessDenied,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer,Unexpected},(function 'write')).typeErasedWriteFn"(ptr noalias nocapture nonnull writeonly sret({ i64, i16, [6 x i8] }) %0, ptr nocapture nonnull readonly align 1 %1, ptr nocapture nonnull readonly align 1 %2, i64 %3) unnamed_addr #0 {
%5 = alloca [16 x i8], align 8
%.val = load i32, ptr %1, align 4
call fastcc void @fs.File.write(ptr noalias %5, i32 %.val, ptr nonnull readonly align 1 %2, i64 %3)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %5, i64 16, i1 false)
ret void
}
; Function Attrs: nounwind uwtable
declare i32 @sigaction(i32, ptr noalias readonly align 8, ptr noalias align 8) local_unnamed_addr #0
; Function Attrs: cold noreturn nounwind uwtable
define internal fastcc void @debug.panicExtra__anon_3213(ptr nocapture nonnull readonly align 8 %0) unnamed_addr #2 !section_prefix !14 {
%2 = alloca [16 x i8], align 8
%3 = alloca [8 x i8], align 8
%4 = alloca [24 x i8], align 8
%5 = alloca [4111 x i8], align 1
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2)
call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3)
call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4)
store ptr %5, ptr %4, align 8, !noalias !15
%.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 8
store i64 4096, ptr %.sroa.2.0..sroa_idx.i, align 8, !noalias !15
%.sroa.3.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 16
store i64 0, ptr %.sroa.3.0..sroa_idx.i, align 8, !noalias !15
%6 = ptrtoint ptr %4 to i64
store i64 %6, ptr %3, align 8, !noalias !15
store ptr %3, ptr %2, align 8, !noalias !15
%7 = getelementptr inbounds %io.Writer, ptr %2, i64 0, i32 1
store ptr @"io.GenericWriter(*io.fixed_buffer_stream.FixedBufferStream([]u8),error{NoSpaceLeft},(function 'write')).typeErasedWriteFn", ptr %7, align 8, !noalias !15
br label %8
8: ; preds = %12, %1
%.sroa.0.014.i.i.i = phi i64 [ 0, %1 ], [ %20, %12 ]
%9 = load ptr, ptr %3, align 8, !noalias !18
%10 = getelementptr inbounds %"io.fixed_buffer_stream.FixedBufferStream([]u8)", ptr %9, i64 0, i32 1
%11 = load i64, ptr %10, align 8, !noalias !23
%.elt8.i.i.i = getelementptr inbounds { ptr, i64 }, ptr %9, i64 0, i32 1
%.unpack9.i.i.i = load i64, ptr %.elt8.i.i.i, align 8, !noalias !23
%.not.i.i6.i = icmp ugt i64 %.unpack9.i.i.i, %11
br i1 %.not.i.i6.i, label %12, label %.loopexit
12: ; preds = %8
%13 = sub nuw i64 36, %.sroa.0.014.i.i.i
%14 = getelementptr inbounds i8, ptr @__anon_1704, i64 %.sroa.0.014.i.i.i
%.unpack.i.i.i = load ptr, ptr %9, align 8, !noalias !23
%15 = sub nuw i64 %.unpack9.i.i.i, %11
%16 = call i64 @llvm.umin.i64(i64 %15, i64 %13)
%17 = getelementptr inbounds i8, ptr %.unpack.i.i.i, i64 %11
call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr nonnull align 1 %14, i64 %16, i1 false), !noalias !23
%sunkaddr = getelementptr inbounds i8, ptr %9, i64 16
%18 = load i64, ptr %sunkaddr, align 8, !noalias !23
%19 = add nuw i64 %18, %16
store i64 %19, ptr %sunkaddr, align 8, !noalias !23
%20 = add nuw i64 %16, %.sroa.0.014.i.i.i
%.not.i.i.i = icmp eq i64 %20, 36
br i1 %.not.i.i.i, label %fmt.format__anon_3616.exit.i, label %8
fmt.format__anon_3616.exit.i: ; preds = %12
%.unpack.i.i = load ptr, ptr %0, align 8, !noalias !15
%.elt1.i.i = getelementptr inbounds { ptr, i64 }, ptr %0, i64 0, i32 1
%.unpack2.i.i = load i64, ptr %.elt1.i.i, align 8, !noalias !15
%21 = call fastcc i16 @fmt.formatBuf__anon_3980(ptr nonnull readonly align 1 %.unpack.i.i, i64 %.unpack2.i.i, ptr nonnull readonly align 8 @16, ptr nonnull readonly align 8 %2), !noalias !15
%22 = icmp eq i16 %21, 0
br i1 %22, label %24, label %.loopexit
23: ; preds = %.loopexit, %24
%.fca.0.load.pn = phi ptr [ %.val.i, %24 ], [ %5, %.loopexit ]
%.fca.1.load.pn = phi i64 [ %.val3.i, %24 ], [ 4111, %.loopexit ]
call fastcc void @debug.panicImpl(ptr nonnull readonly align 1 %.fca.0.load.pn, i64 %.fca.1.load.pn)
unreachable
24: ; preds = %fmt.format__anon_3616.exit.i
%.val.i = load ptr, ptr %4, align 8, !noalias !15
%sunkaddr6 = getelementptr inbounds i8, ptr %4, i64 16
%.val3.i = load i64, ptr %sunkaddr6, align 8, !noalias !15
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2)
call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3)
call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4)
br label %23
.loopexit: ; preds = %8, %fmt.format__anon_3616.exit.i
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2)
call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3)
call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4)
%25 = getelementptr inbounds i8, ptr %5, i64 4096
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %25, ptr noundef nonnull align 1 dereferenceable(15) @__anon_2157, i64 15, i1 false)
br label %23
}
; Function Attrs: nounwind uwtable
define internal fastcc void @fs.File.write(ptr noalias nocapture nonnull writeonly %0, i32 %.0.val, ptr nocapture nonnull readonly align 1 %1, i64 %2) unnamed_addr #0 {
%.sroa.16 = alloca [6 x i8], align 2
tail call void @llvm.experimental.noalias.scope.decl(metadata !26)
%4 = icmp eq i64 %2, 0
br i1 %4, label %6, label %.preheader.i
.preheader.i: ; preds = %3
93: ; preds = %95
%5 = tail call i64 @llvm.umin.i64(i64 %2, i64 2147
%94 = add nuw i64 %.sroa.0.0.copyload.i.i, %.sroa.0.014.i.i.i.i.i
%.not.i.i.i4.i.i = icmp eq i64 %94, 1
br i1 %.not.i.i.i4.i.i, la