Comparing sensitive data, confidential files or internal emails?

Most legal and privacy policies prohibit uploading sensitive data online. Diffchecker Desktop ensures your confidential information never leaves your computer. Work offline and compare documents securely.

LLVM small vs big

Created Diff never expires
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