import std.stdio;

enum conv = [
    'I':1,
    'V':5,
    'X':10,
    'L':50,
    'C':100,
    'D':500,
    'M':1000
];

void main()
{
    foreach(input; stdin.byLine())
    {
        int arabia = 0;
        if(input.length == 1) arabia = conv[input[0]];
        else
        {
            foreach(i; 1 .. input.length)
            {
                if(conv[input[i - 1]] < conv[input[i]])
                {
                    arabia -= conv[input[i - 1]];
                }
                else
                {
                    arabia += conv[input[i - 1]];
                }
            }
            arabia += conv[input[$ - 1]];
        }
        arabia.writeln;
    }
}
; ModuleID = '/data/TheStack_IR/OJ_Samples/Collated/D/Source_10900/source.d'
source_filename = "/data/TheStack_IR/OJ_Samples/Collated/D/Source_10900/source.d"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

%0 = type { i32, i32, [7 x i8] }
%object.TypeInfo_AssociativeArray = type { [19 x i8*]*, i8*, %object.TypeInfo*, %object.TypeInfo* }
%object.TypeInfo = type { [19 x i8*]*, i8* }
%object.TypeInfo_Class = type { [20 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, { i64, i8** }, { i64, %object.Interface* }, %object.TypeInfo_Class*, i8*, void (%object.Object*)*, i32, [4 x i8], i8*, { i64, %object.OffsetTypeInfo* }, void (%object.Object*)*, i8* }
%object.Interface = type { %object.TypeInfo_Class*, { i64, i8** }, i64 }
%object.OffsetTypeInfo = type { i64, %object.TypeInfo* }
%object.Object = type { [5 x i8*]*, i8* }
%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl" = type { %std.stdio.File, { i64, i8* }, { i64, i8* }, i8, i8, i8, [5 x i8] }
%std.stdio.File = type { %std.stdio.File.Impl*, { i64, i8* } }
%std.stdio.File.Impl = type { %core.stdc.stdio._IO_FILE*, i32, i8, [3 x i8], i32, [4 x i8] }
%core.stdc.stdio._IO_FILE = type { i32, [4 x i8], i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %core.stdc.stdio._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], [4 x i8], i8*, i64, i8*, i8*, %core.stdc.stdio._IO_FILE*, i8*, i64, i32, [20 x i8] }
%object.TypeInfo_Const = type { [19 x i8*]*, i8*, %object.TypeInfo* }
%object.TypeInfo_Struct = type { [19 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, i64 (i8*)*, i1 (i8*, i8*)*, i32 (i8*, i8*)*, { i64, i8* } (i8*)*, i32, [4 x i8], void (i8*)*, void (i8*)*, i32, [4 x i8], %object.TypeInfo*, %object.TypeInfo*, i8* }
%object.TypeInfo_Array = type { [19 x i8*]*, i8*, %object.TypeInfo* }
%object.TypeInfo_Enum = type { [19 x i8*]*, i8*, %object.TypeInfo*, { i64, i8* }, { i64, i8* } }
%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl" = type { %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", i64 }
%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S" = type { %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl" }
%object.Exception = type <{ [10 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, i64, %object.Throwable.TraceInfo*, %object.Throwable*, i32 }>
%object.Throwable.TraceInfo = type { [4 x i8*]* }
%object.Throwable = type <{ [10 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, i64, %object.Throwable.TraceInfo*, %object.Throwable*, i32 }>
%std.utf.UTFException = type <{ [11 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, i64, %object.Throwable.TraceInfo*, %object.Throwable*, i32, [4 x i8], i64, [4 x i32], i64 }>
%std.exception.ErrnoException = type <{ [10 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, i64, %object.Throwable.TraceInfo*, %object.Throwable*, i32, i32 }>
%object.ModuleInfo = type { i32, i32 }
%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl" = type { %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted" }
%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted" = type { %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore" }
%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore" = type { %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* }
%std.stdio.File.LockingTextWriter = type { %std.stdio.File, i32, i16, [4 x i8], [6 x i8], i64 }
%nest.decodeImpl = type { i8*, i64 }

@_D12TypeInfo_Hai6__initZ = linkonce_odr global %object.TypeInfo_AssociativeArray { [19 x i8*]* @_D25TypeInfo_AssociativeArray6__vtblZ, i8* null, %object.TypeInfo* @_D10TypeInfo_i6__initZ, %object.TypeInfo* @_D10TypeInfo_a6__initZ } ; [#uses = 6]
@_D25TypeInfo_AssociativeArray6__vtblZ = external constant [19 x i8*] ; [#uses = 1]
@_D10TypeInfo_i6__initZ = external global %object.TypeInfo ; [#uses = 1]
@_D10TypeInfo_a6__initZ = external global %object.TypeInfo ; [#uses = 8]
@.aaKeysStorage = internal global [7 x i8] c"IVXLCDM" ; [#uses = 1]
@.aaValuesStorage = internal global [7 x i32] [i32 1, i32 5, i32 10, i32 50, i32 100, i32 500, i32 1000] ; [#uses = 1]
@.str = private unnamed_addr constant [62 x i8] c"/data/TheStack_IR/OJ_Samples/Collated/D/Source_10900/source.d\00" ; [#uses = 1]
@.aaKeysStorage.1 = internal global [7 x i8] c"IVXLCDM" ; [#uses = 1]
@.aaValuesStorage.2 = internal global [7 x i32] [i32 1, i32 5, i32 10, i32 50, i32 100, i32 500, i32 1000] ; [#uses = 1]
@.aaKeysStorage.3 = internal global [7 x i8] c"IVXLCDM" ; [#uses = 1]
@.aaValuesStorage.4 = internal global [7 x i32] [i32 1, i32 5, i32 10, i32 50, i32 100, i32 500, i32 1000] ; [#uses = 1]
@.aaKeysStorage.5 = internal global [7 x i8] c"IVXLCDM" ; [#uses = 1]
@.aaValuesStorage.6 = internal global [7 x i32] [i32 1, i32 5, i32 10, i32 50, i32 100, i32 500, i32 1000] ; [#uses = 1]
@.aaKeysStorage.7 = internal global [7 x i8] c"IVXLCDM" ; [#uses = 1]
@.aaValuesStorage.8 = internal global [7 x i32] [i32 1, i32 5, i32 10, i32 50, i32 100, i32 500, i32 1000] ; [#uses = 1]
@.aaKeysStorage.9 = internal global [7 x i8] c"IVXLCDM" ; [#uses = 1]
@.aaValuesStorage.10 = internal global [7 x i32] [i32 1, i32 5, i32 10, i32 50, i32 100, i32 500, i32 1000] ; [#uses = 1]
@_D9Exception7__ClassZ = external global %object.TypeInfo_Class ; [#uses = 4]
@.str.11 = private unnamed_addr constant [52 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/stdio.d\00" ; [#uses = 1]
@_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ = weak_odr constant %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl" { %std.stdio.File zeroinitializer, { i64, i8* } zeroinitializer, { i64, i8* } zeroinitializer, i8 -1, i8 0, i8 0, [5 x i8] zeroinitializer }, align 8 ; [#uses = 1]
@_D26TypeInfo_xS3std5stdio4File6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D25TypeInfo_S3std5stdio4File6__initZ to %object.TypeInfo*) } ; [#uses = 2]
@_D14TypeInfo_Const6__vtblZ = external constant [19 x i8*] ; [#uses = 7]
@_D25TypeInfo_S3std5stdio4File6__initZ = linkonce_odr global %object.TypeInfo_Struct { [19 x i8*]* @_D15TypeInfo_Struct6__vtblZ, i8* null, { i64, i8* } { i64 16, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i32 0, i32 0) }, { i64, i8* } { i64 24, i8* null }, i64 (i8*)* bitcast (i64 (%std.stdio.File*)* @_D3std5stdio4File9__xtoHashFNbNeKxSQBhQBgQBdZm to i64 (i8*)*), i1 (i8*, i8*)* bitcast (i1 (%std.stdio.File*, %std.stdio.File*)* @_D3std5stdio4File11__xopEqualsFKxSQBgQBfQBcKxQmZb to i1 (i8*, i8*)*), i32 (i8*, i8*)* null, { i64, i8* } (i8*)* null, i32 1, [4 x i8] zeroinitializer, void (i8*)* bitcast (void (%std.stdio.File*)* @_D3std5stdio4File6__dtorMFNfZv to void (i8*)*), void (i8*)* bitcast (void (%std.stdio.File*)* @_D3std5stdio4File10__postblitMFNbNfZv to void (i8*)*), i32 8, [4 x i8] zeroinitializer, %object.TypeInfo* null, %object.TypeInfo* null, i8* inttoptr (i64 1 to i8*) } ; [#uses = 1]
@_D15TypeInfo_Struct6__vtblZ = external constant [19 x i8*] ; [#uses = 2]
@.str.12 = private unnamed_addr constant [17 x i8] c"S3std5stdio4File\00" ; [#uses = 1]
@_D12TypeInfo_xAa6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Axa6__initZ to %object.TypeInfo*) } ; [#uses = 3]
@_D12TypeInfo_Axa6__initZ = external global %object.TypeInfo_Array ; [#uses = 1]
@_D11TypeInfo_xa6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* @_D10TypeInfo_a6__initZ } ; [#uses = 2]
@_D72TypeInfo_xE3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Enum* @_D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ to %object.TypeInfo*) } ; [#uses = 2]
@_D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ = linkonce_odr global %object.TypeInfo_Enum { [19 x i8*]* @_D13TypeInfo_Enum6__vtblZ, i8* null, %object.TypeInfo* @_D10TypeInfo_b6__initZ, { i64, i8* } { i64 39, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.13, i32 0, i32 0) }, { i64, i8* } zeroinitializer } ; [#uses = 1]
@_D13TypeInfo_Enum6__vtblZ = external constant [19 x i8*] ; [#uses = 1]
@_D10TypeInfo_b6__initZ = external global %object.TypeInfo ; [#uses = 2]
@.str.13 = private unnamed_addr constant [40 x i8] c"std.typecons.Flag!\22keepTerminator\22.Flag\00" ; [#uses = 1]
@_D11TypeInfo_xb6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* @_D10TypeInfo_b6__initZ } ; [#uses = 2]
@_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCk6__initZ = weak_odr local_unnamed_addr constant %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl" { %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl" { %std.stdio.File zeroinitializer, { i64, i8* } zeroinitializer, { i64, i8* } zeroinitializer, i8 -1, i8 0, i8 0, [5 x i8] zeroinitializer }, i64 0 }, align 8 ; [#uses = 0]
@_D53TypeInfo_xS3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to %object.TypeInfo*) } ; [#uses = 3]
@_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ = linkonce_odr global %object.TypeInfo_Struct { [19 x i8*]* @_D15TypeInfo_Struct6__vtblZ, i8* null, { i64, i8* } { i64 43, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.14, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*) }, i64 (i8*)* bitcast (i64 (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*)* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl9__xtoHashFNbNeKxSQCiQChQCe__TQCcTaTaZQCkQBuZm to i64 (i8*)*), i1 (i8*, i8*)* bitcast (i1 (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*)* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl11__xopEqualsFKxSQChQCgQCd__TQCbTaTaZQCjQBtKxQBdZb to i1 (i8*, i8*)*), i32 (i8*, i8*)* null, { i64, i8* } (i8*)* null, i32 1, [4 x i8] zeroinitializer, void (i8*)* bitcast (void (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*)* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl11__fieldDtorMFNeZv to void (i8*)*), void (i8*)* bitcast (void (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*)* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl15__fieldPostblitMFNbNlNeZv to void (i8*)*), i32 8, [4 x i8] zeroinitializer, %object.TypeInfo* null, %object.TypeInfo* null, i8* bitcast ([2 x i64]* @_D6object__T10RTInfoImplVAmA2i64i85ZQyyG2m to i8*) } ; [#uses = 8]
@.str.14 = private unnamed_addr constant [44 x i8] c"S3std5stdio4File__T10ByLineImplTaTaZQr4Impl\00" ; [#uses = 1]
@_D6object__T10RTInfoImplVAmA2i64i85ZQyyG2m = weak_odr constant [2 x i64] [i64 64, i64 85], align 8 ; [#uses = 1]
@_D11TypeInfo_xm6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* @_D10TypeInfo_m6__initZ } ; [#uses = 2]
@_D10TypeInfo_m6__initZ = external global %object.TypeInfo ; [#uses = 1]
@.str.15 = private unnamed_addr constant [55 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/typecons.d\00" ; [#uses = 1]
@.str.16 = private unnamed_addr constant [46 x i8] c"Attempted to access an uninitialized payload.\00" ; [#uses = 1]
@_D6object9Throwable7__ClassZ = external global %object.TypeInfo_Class ; [#uses = 2]
@_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ = weak_odr local_unnamed_addr constant %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S" { %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl" { %std.stdio.File zeroinitializer, { i64, i8* } zeroinitializer, { i64, i8* } zeroinitializer, i8 -1, i8 0, i8 0, [5 x i8] zeroinitializer } }, align 8 ; [#uses = 1]
@_D6object__T10RTInfoImplVAmA2i72i85ZQyyG2m = weak_odr local_unnamed_addr constant [2 x i64] [i64 72, i64 85], align 8 ; [#uses = 0]
@.str.17 = private unnamed_addr constant [73 x i8] c"Cannot move object with internal pointer unless `opPostMove` is defined.\00" ; [#uses = 1]
@.str.18 = private unnamed_addr constant [65 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/algorithm/mutation.d\00" ; [#uses = 1]
@.str.19 = private unnamed_addr constant [40 x i8] c"source and target must not be identical\00" ; [#uses = 1]
@_D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m = weak_odr local_unnamed_addr constant [2 x i64] [i64 8, i64 1], align 8 ; [#uses = 0]
@.str.20 = private unnamed_addr constant [28 x i8] c"Swap: lhs internal pointer.\00" ; [#uses = 1]
@.str.21 = private unnamed_addr constant [28 x i8] c"Swap: rhs internal pointer.\00" ; [#uses = 1]
@.str.22 = private unnamed_addr constant [25 x i8] c"Swap: lhs points to rhs.\00" ; [#uses = 1]
@.str.23 = private unnamed_addr constant [25 x i8] c"Swap: rhs points to lhs.\00" ; [#uses = 1]
@.str.24 = private unnamed_addr constant [39 x i8] c"Attempt to read from an unopened file.\00" ; [#uses = 1]
@_D9Exception6__vtblZ = external constant [10 x i8*] ; [#uses = 1]
@_D9Exception6__initZ = external local_unnamed_addr constant %object.Exception, align 8 ; [#uses = 1]
@.str.25 = private unnamed_addr constant [19 x i8] c"Enforcement failed\00" ; [#uses = 1]
@_D12TypeInfo_Aya6__initZ = external global %object.TypeInfo_Array ; [#uses = 1]
@_D3std3utf12UTFException7__ClassZ = external global %object.TypeInfo_Class ; [#uses = 8]
@.str.27 = private unnamed_addr constant [50 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/utf.d\00" ; [#uses = 1]
@.str.28 = private unnamed_addr constant [23 x i8] c"Invalid UTF-8 sequence\00" ; [#uses = 1]
@.str.29 = private unnamed_addr constant [45 x i8] c"Attempted to decode past the end of a string\00" ; [#uses = 1]
@_D3std3utf12UTFException6__vtblZ = external constant [11 x i8*] ; [#uses = 5]
@_D3std3utf12UTFException6__initZ = external local_unnamed_addr constant %std.utf.UTFException, align 8 ; [#uses = 1]
@.str.30 = private unnamed_addr constant [41 x i8] c"Encoding an invalid code point in UTF-32\00" ; [#uses = 1]
@.str.31 = private unnamed_addr constant [63 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/core/internal/string.d\00" ; [#uses = 1]
@_D3std9exception14ErrnoException7__ClassZ = external global %object.TypeInfo_Class ; [#uses = 1]
@_D3std9exception14ErrnoException6__vtblZ = external constant [10 x i8*] ; [#uses = 1]
@_D3std9exception14ErrnoException6__initZ = external local_unnamed_addr constant %std.exception.ErrnoException, align 8 ; [#uses = 1]
@_D6source12__ModuleInfoZ = global %0 { i32 -2147483644, i32 0, [7 x i8] c"source\00" } ; [#uses = 1]
@_D6source11__moduleRefZ = linkonce_odr hidden global %object.ModuleInfo* bitcast (%0* @_D6source12__ModuleInfoZ to %object.ModuleInfo*), section "__minfo" ; [#uses = 1]
@__start___minfo = external hidden global %object.ModuleInfo* ; [#uses = 1]
@__stop___minfo = external hidden global %object.ModuleInfo* ; [#uses = 1]
@ldc.dso_slot = linkonce_odr hidden global i8* null ; [#uses = 1]
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @ldc.register_dso, i8* bitcast (void ()* @ldc.register_dso to i8*) }] ; [#uses = 0]
@llvm.global_dtors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @ldc.register_dso, i8* bitcast (void ()* @ldc.register_dso to i8*) }] ; [#uses = 0]
@llvm.used = appending global [1 x i8*] [i8* bitcast (%object.ModuleInfo** @_D6source11__moduleRefZ to i8*)], section "llvm.metadata" ; [#uses = 0]

; [#uses = 1]
; Function Attrs: uwtable
define i32 @_Dmain({ i64, { i64, i8* }* } %unnamed) #0 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %__tmpfordtor149.i = alloca %std.stdio.File, align 8 ; [#uses = 5, size/byte = 24]
  %__copytmp58.i = alloca %std.stdio.File, align 8 ; [#uses = 3, size/byte = 24]
  %__aggr135 = alloca %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", align 8 ; [#uses = 3, size/byte = 8]
  %1 = tail call %std.stdio.File* @_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File() #1 ; [#uses = 1]
  %2 = bitcast %std.stdio.File* %__copytmp58.i to i8* ; [#uses = 3]
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %2)
  %3 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %__aggr135, i64 0, i32 0, i32 0, i32 0 ; [#uses = 7, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  store %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8, !alias.scope !17
  %4 = bitcast %std.stdio.File* %1 to i8*         ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(24) %2, i8* nonnull align 1 dereferenceable(24) %4, i64 24, i1 false), !noalias !17
  call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %__copytmp58.i) #1, !noalias !17
  %5 = call %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr6__ctorMFNcSQBxQBwQBtEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEsQErQEo__TQEmTaTaZQEu(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull returned %__aggr135, i8 zeroext 10, i1 zeroext false, %std.stdio.File* noalias nocapture nonnull align 8 %__copytmp58.i) #1 ; [#uses = 0]
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %2)
  %6 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 2]
  %.not.i.i159 = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %6, null ; [#uses = 1]
  br i1 %.not.i.i159, label %assertFailed.i.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i.lr.ph

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i.lr.ph: ; preds = %0
  %7 = bitcast %std.stdio.File* %__tmpfordtor149.i to i8* ; [#uses = 2]
  br label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i

assertFailed.i.i:                                 ; preds = %_D3std5stdio4File__T10ByLineImplTaTaZQr8popFrontMFZv.exit, %0
  invoke void @_d_assert_msg({ i64, i8* } { i64 45, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6644) #4
          to label %.noexc unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

.noexc:                                           ; preds = %assertFailed.i.i
  unreachable

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i: ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i.lr.ph, %_D3std5stdio4File__T10ByLineImplTaTaZQr8popFrontMFZv.exit
  %8 = phi %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* [ %6, %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i.lr.ph ], [ %51, %_D3std5stdio4File__T10ByLineImplTaTaZQr8popFrontMFZv.exit ] ; [#uses = 3, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*]
  %9 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %8, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  invoke void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %9) #1
          to label %postinvoke unwind label %landingPad.loopexit.split-lp.loopexit

postinvoke:                                       ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i
  %10 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %8, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.len.i.i = load i64, i64* %10, align 8         ; [#uses = 1]
  %11 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %8, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.ptr.i.i = load i8*, i8** %11, align 8         ; [#uses = 1]
  %12 = icmp eq i64 %.len.i.i, 0                  ; [#uses = 1]
  %13 = icmp eq i8* %.ptr.i.i, null               ; [#uses = 1]
  %14 = and i1 %12, %13                           ; [#uses = 1]
  br i1 %14, label %finally, label %forbody

forbody:                                          ; preds = %postinvoke
  %15 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 4]
  %.not.i.i116 = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %15, null ; [#uses = 1]
  br i1 %.not.i.i116, label %assertFailed.i.i117, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i118

assertFailed.i.i117:                              ; preds = %forbody
  invoke void @_d_assert_msg({ i64, i8* } { i64 45, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6644) #4
          to label %.noexc119 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

.noexc119:                                        ; preds = %assertFailed.i.i117
  unreachable

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i118: ; preds = %forbody
  %16 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %15, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  invoke void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %16) #1
          to label %postinvoke1 unwind label %landingPad.loopexit.split-lp.loopexit

postinvoke1:                                      ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i118
  %.elt.i.i = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %15, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack.i.i = load i64, i64* %.elt.i.i, align 8 ; [#uses = 4]
  %.elt1.i.i = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %15, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack2.i.i = load i8*, i8** %.elt1.i.i, align 8 ; [#uses = 4]
  %17 = icmp eq i64 %.unpack.i.i, 1               ; [#uses = 1]
  br i1 %17, label %if, label %forcond10.preheader

forcond10.preheader:                              ; preds = %postinvoke1
  %.not = icmp eq i64 %.unpack.i.i, 0             ; [#uses = 2]
  br i1 %.not, label %endfor13, label %forbody11

if:                                               ; preds = %postinvoke1
  %aa = invoke i8* @_d_assocarrayliteralTX(%object.TypeInfo_AssociativeArray* nonnull @_D12TypeInfo_Hai6__initZ, { i64, i8* } { i64 7, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.aaKeysStorage, i32 0, i32 0) }, { i64, i8* } { i64 7, i8* bitcast ([7 x i32]* @.aaValuesStorage to i8*) }) #3
          to label %bounds.ok unwind label %landingPad.loopexit.split-lp.loopexit ; [#uses = 1]

bounds.ok:                                        ; preds = %if
  %18 = bitcast i8* %aa to i8**                   ; [#uses = 1]
  %aa.index = invoke i8* @_aaInX(i8** nocapture dereferenceable(8) %18, %object.TypeInfo* nonnull @_D10TypeInfo_a6__initZ, i8* nocapture %.unpack2.i.i) #5
          to label %postinvoke7 unwind label %landingPad.loopexit.split-lp.loopexit ; [#uses = 2]

postinvoke7:                                      ; preds = %bounds.ok
  %aaboundscheck.not = icmp eq i8* %aa.index, null ; [#uses = 1]
  br i1 %aaboundscheck.not, label %aaboundscheckfail, label %aaboundsok

aaboundsok:                                       ; preds = %postinvoke7
  %19 = bitcast i8* %aa.index to i32*             ; [#uses = 1]
  %20 = load i32, i32* %19, align 4               ; [#uses = 1]
  br label %endif

aaboundscheckfail:                                ; preds = %postinvoke7
  invoke void @_d_arraybounds({ i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i32 0, i32 0) }, i32 18) #4
          to label %postinvoke8 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

postinvoke8:                                      ; preds = %aaboundscheckfail
  unreachable

forbody11:                                        ; preds = %forcond10.preheader, %forinc12
  %arabia.0158 = phi i32 [ %arabia.1, %forinc12 ], [ 0, %forcond10.preheader ] ; [#uses = 2, type = i32]
  %__key136.0157 = phi i64 [ %39, %forinc12 ], [ 1, %forcond10.preheader ] ; [#uses = 3, type = i64]
  %aa15 = invoke i8* @_d_assocarrayliteralTX(%object.TypeInfo_AssociativeArray* nonnull @_D12TypeInfo_Hai6__initZ, { i64, i8* } { i64 7, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.aaKeysStorage.1, i32 0, i32 0) }, { i64, i8* } { i64 7, i8* bitcast ([7 x i32]* @.aaValuesStorage.2 to i8*) }) #3
          to label %bounds.ok18 unwind label %landingPad.loopexit ; [#uses = 1]

bounds.ok18:                                      ; preds = %forbody11
  %21 = add i64 %__key136.0157, -1                ; [#uses = 1]
  %22 = getelementptr inbounds i8, i8* %.unpack2.i.i, i64 %21 ; [#uses = 3, type = i8*]
  %23 = bitcast i8* %aa15 to i8**                 ; [#uses = 1]
  %aa.index23 = invoke i8* @_aaInX(i8** nocapture dereferenceable(8) %23, %object.TypeInfo* nonnull @_D10TypeInfo_a6__initZ, i8* nocapture %22) #5
          to label %postinvoke22 unwind label %landingPad.loopexit ; [#uses = 2]

postinvoke22:                                     ; preds = %bounds.ok18
  %24 = bitcast i8* %aa.index23 to i32*           ; [#uses = 1]
  %aaboundscheck26.not = icmp eq i8* %aa.index23, null ; [#uses = 1]
  br i1 %aaboundscheck26.not, label %aaboundscheckfail25, label %aaboundsok24

aaboundsok24:                                     ; preds = %postinvoke22
  %aa29 = invoke i8* @_d_assocarrayliteralTX(%object.TypeInfo_AssociativeArray* nonnull @_D12TypeInfo_Hai6__initZ, { i64, i8* } { i64 7, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.aaKeysStorage.3, i32 0, i32 0) }, { i64, i8* } { i64 7, i8* bitcast ([7 x i32]* @.aaValuesStorage.4 to i8*) }) #3
          to label %bounds.ok32 unwind label %landingPad.loopexit ; [#uses = 1]

bounds.ok32:                                      ; preds = %aaboundsok24
  %25 = getelementptr inbounds i8, i8* %.unpack2.i.i, i64 %__key136.0157 ; [#uses = 1, type = i8*]
  %26 = bitcast i8* %aa29 to i8**                 ; [#uses = 1]
  %aa.index37 = invoke i8* @_aaInX(i8** nocapture dereferenceable(8) %26, %object.TypeInfo* nonnull @_D10TypeInfo_a6__initZ, i8* nocapture nonnull %25) #5
          to label %postinvoke36 unwind label %landingPad.loopexit ; [#uses = 2]

postinvoke36:                                     ; preds = %bounds.ok32
  %aaboundscheck40.not = icmp eq i8* %aa.index37, null ; [#uses = 1]
  br i1 %aaboundscheck40.not, label %aaboundscheckfail39, label %aaboundsok38

aaboundsok38:                                     ; preds = %postinvoke36
  %27 = bitcast i8* %aa.index37 to i32*           ; [#uses = 1]
  %28 = load i32, i32* %24, align 4               ; [#uses = 1]
  %29 = load i32, i32* %27, align 4               ; [#uses = 1]
  %30 = icmp slt i32 %28, %29                     ; [#uses = 1]
  br i1 %30, label %if42, label %else44

if42:                                             ; preds = %aaboundsok38
  %aa46 = invoke i8* @_d_assocarrayliteralTX(%object.TypeInfo_AssociativeArray* nonnull @_D12TypeInfo_Hai6__initZ, { i64, i8* } { i64 7, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.aaKeysStorage.5, i32 0, i32 0) }, { i64, i8* } { i64 7, i8* bitcast ([7 x i32]* @.aaValuesStorage.6 to i8*) }) #3
          to label %bounds.ok49 unwind label %landingPad.loopexit ; [#uses = 1]

bounds.ok49:                                      ; preds = %if42
  %31 = bitcast i8* %aa46 to i8**                 ; [#uses = 1]
  %aa.index54 = invoke i8* @_aaInX(i8** nocapture dereferenceable(8) %31, %object.TypeInfo* nonnull @_D10TypeInfo_a6__initZ, i8* nocapture %22) #5
          to label %postinvoke53 unwind label %landingPad.loopexit ; [#uses = 2]

postinvoke53:                                     ; preds = %bounds.ok49
  %aaboundscheck57.not = icmp eq i8* %aa.index54, null ; [#uses = 1]
  br i1 %aaboundscheck57.not, label %aaboundscheckfail56, label %aaboundsok55

aaboundsok55:                                     ; preds = %postinvoke53
  %32 = bitcast i8* %aa.index54 to i32*           ; [#uses = 1]
  %33 = load i32, i32* %32, align 4               ; [#uses = 1]
  %34 = sub i32 %arabia.0158, %33                 ; [#uses = 1]
  br label %forinc12

aaboundscheckfail56:                              ; preds = %postinvoke53
  invoke void @_d_arraybounds({ i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i32 0, i32 0) }, i32 25) #4
          to label %postinvoke58 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

postinvoke58:                                     ; preds = %aaboundscheckfail56
  unreachable

else44:                                           ; preds = %aaboundsok38
  %aa60 = invoke i8* @_d_assocarrayliteralTX(%object.TypeInfo_AssociativeArray* nonnull @_D12TypeInfo_Hai6__initZ, { i64, i8* } { i64 7, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.aaKeysStorage.7, i32 0, i32 0) }, { i64, i8* } { i64 7, i8* bitcast ([7 x i32]* @.aaValuesStorage.8 to i8*) }) #3
          to label %bounds.ok63 unwind label %landingPad.loopexit ; [#uses = 1]

bounds.ok63:                                      ; preds = %else44
  %35 = bitcast i8* %aa60 to i8**                 ; [#uses = 1]
  %aa.index68 = invoke i8* @_aaInX(i8** nocapture dereferenceable(8) %35, %object.TypeInfo* nonnull @_D10TypeInfo_a6__initZ, i8* nocapture %22) #5
          to label %postinvoke67 unwind label %landingPad.loopexit ; [#uses = 2]

postinvoke67:                                     ; preds = %bounds.ok63
  %aaboundscheck71.not = icmp eq i8* %aa.index68, null ; [#uses = 1]
  br i1 %aaboundscheck71.not, label %aaboundscheckfail70, label %aaboundsok69

aaboundsok69:                                     ; preds = %postinvoke67
  %36 = bitcast i8* %aa.index68 to i32*           ; [#uses = 1]
  %37 = load i32, i32* %36, align 4               ; [#uses = 1]
  %38 = add i32 %37, %arabia.0158                 ; [#uses = 1]
  br label %forinc12

aaboundscheckfail70:                              ; preds = %postinvoke67
  invoke void @_d_arraybounds({ i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i32 0, i32 0) }, i32 29) #4
          to label %postinvoke72 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

postinvoke72:                                     ; preds = %aaboundscheckfail70
  unreachable

aaboundscheckfail39:                              ; preds = %postinvoke36
  invoke void @_d_arraybounds({ i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i32 0, i32 0) }, i32 23) #4
          to label %postinvoke41 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

postinvoke41:                                     ; preds = %aaboundscheckfail39
  unreachable

aaboundscheckfail25:                              ; preds = %postinvoke22
  invoke void @_d_arraybounds({ i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i32 0, i32 0) }, i32 23) #4
          to label %postinvoke27 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

postinvoke27:                                     ; preds = %aaboundscheckfail25
  unreachable

forinc12:                                         ; preds = %aaboundsok55, %aaboundsok69
  %arabia.1 = phi i32 [ %34, %aaboundsok55 ], [ %38, %aaboundsok69 ] ; [#uses = 2, type = i32]
  %39 = add nuw i64 %__key136.0157, 1             ; [#uses = 2]
  %exitcond.not = icmp eq i64 %39, %.unpack.i.i   ; [#uses = 1]
  br i1 %exitcond.not, label %endfor13, label %forbody11

endfor13:                                         ; preds = %forinc12, %forcond10.preheader
  %arabia.0.lcssa = phi i32 [ 0, %forcond10.preheader ], [ %arabia.1, %forinc12 ] ; [#uses = 1, type = i32]
  %aa74 = invoke i8* @_d_assocarrayliteralTX(%object.TypeInfo_AssociativeArray* nonnull @_D12TypeInfo_Hai6__initZ, { i64, i8* } { i64 7, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.aaKeysStorage.9, i32 0, i32 0) }, { i64, i8* } { i64 7, i8* bitcast ([7 x i32]* @.aaValuesStorage.10 to i8*) }) #3
          to label %postinvoke73 unwind label %landingPad.loopexit.split-lp.loopexit ; [#uses = 1]

postinvoke73:                                     ; preds = %endfor13
  %40 = add i64 %.unpack.i.i, -1                  ; [#uses = 2]
  br i1 %.not, label %bounds.fail79, label %bounds.ok78

bounds.ok78:                                      ; preds = %postinvoke73
  %41 = getelementptr inbounds i8, i8* %.unpack2.i.i, i64 %40 ; [#uses = 1, type = i8*]
  %42 = bitcast i8* %aa74 to i8**                 ; [#uses = 1]
  %aa.index83 = invoke i8* @_aaInX(i8** nocapture dereferenceable(8) %42, %object.TypeInfo* nonnull @_D10TypeInfo_a6__initZ, i8* nocapture %41) #5
          to label %postinvoke82 unwind label %landingPad.loopexit.split-lp.loopexit ; [#uses = 2]

postinvoke82:                                     ; preds = %bounds.ok78
  %aaboundscheck86.not = icmp eq i8* %aa.index83, null ; [#uses = 1]
  br i1 %aaboundscheck86.not, label %aaboundscheckfail85, label %aaboundsok84

aaboundsok84:                                     ; preds = %postinvoke82
  %43 = bitcast i8* %aa.index83 to i32*           ; [#uses = 1]
  %44 = load i32, i32* %43, align 4               ; [#uses = 1]
  %45 = add i32 %44, %arabia.0.lcssa              ; [#uses = 1]
  br label %endif

aaboundscheckfail85:                              ; preds = %postinvoke82
  invoke void @_d_arraybounds({ i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i32 0, i32 0) }, i32 32) #4
          to label %postinvoke87 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

postinvoke87:                                     ; preds = %aaboundscheckfail85
  unreachable

bounds.fail79:                                    ; preds = %postinvoke73
  invoke void @_d_arraybounds_index({ i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str, i32 0, i32 0) }, i32 32, i64 %40, i64 0) #4
          to label %postinvoke80 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

postinvoke80:                                     ; preds = %bounds.fail79
  unreachable

endif:                                            ; preds = %aaboundsok84, %aaboundsok
  %arabia.2 = phi i32 [ %20, %aaboundsok ], [ %45, %aaboundsok84 ] ; [#uses = 1, type = i32]
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %7)
  invoke void @_D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File(%std.stdio.File* noalias nonnull sret align 8 %__tmpfordtor149.i) #1
          to label %.noexc121 unwind label %landingPad.loopexit.split-lp.loopexit

.noexc121:                                        ; preds = %endif
  invoke void @_D3std5stdio4File__T5writeTiTaZQlMFNfiaZv(%std.stdio.File* nonnull %__tmpfordtor149.i, i8 zeroext 10, i32 %arabia.2) #1
          to label %toElem.success.i unwind label %eh.resume.i

toElem.success.i:                                 ; preds = %.noexc121
  invoke void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__tmpfordtor149.i) #1
          to label %forinc unwind label %landingPad.loopexit.split-lp.loopexit

eh.resume.i:                                      ; preds = %.noexc121
  %46 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  invoke void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__tmpfordtor149.i) #1
          to label %.noexc123 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

.noexc123:                                        ; preds = %eh.resume.i
  %47 = extractvalue { i8*, i32 } %46, 0          ; [#uses = 1]
  invoke void @_Unwind_Resume(i8* %47)
          to label %.noexc124 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

.noexc124:                                        ; preds = %.noexc123
  unreachable

forinc:                                           ; preds = %toElem.success.i
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %7)
  %48 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 3]
  %.not.i.i125 = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %48, null ; [#uses = 1]
  br i1 %.not.i.i125, label %assertFailed.i.i126, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i127

assertFailed.i.i126:                              ; preds = %forinc
  invoke void @_d_assert_msg({ i64, i8* } { i64 45, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6644) #4
          to label %.noexc128 unwind label %landingPad.loopexit.split-lp.loopexit.split-lp

.noexc128:                                        ; preds = %assertFailed.i.i126
  unreachable

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i127: ; preds = %forinc
  %49 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %48, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  invoke void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %49) #1
          to label %_D3std5stdio4File__T10ByLineImplTaTaZQr8popFrontMFZv.exit unwind label %landingPad.loopexit.split-lp.loopexit

_D3std5stdio4File__T10ByLineImplTaTaZQr8popFrontMFZv.exit: ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i127
  %50 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %48, i64 0, i32 0, i32 5 ; [#uses = 1, type = i8*]
  store i8 0, i8* %50, align 1
  %51 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 2]
  %.not.i.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %51, null ; [#uses = 1]
  br i1 %.not.i.i, label %assertFailed.i.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i

finally:                                          ; preds = %postinvoke, %landingPad
  %eh.ptr.0 = phi i8* [ %61, %landingPad ], [ undef, %postinvoke ] ; [#uses = 1, type = i8*]
  %cond = phi i1 [ false, %landingPad ], [ true, %postinvoke ] ; [#uses = 1, type = i1]
  %52 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 4]
  %.not5.i.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %52, null ; [#uses = 1]
  br i1 %.not5.i.i, label %_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit, label %endif.i.i

endif.i.i:                                        ; preds = %finally
  %53 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %52, i64 0, i32 1 ; [#uses = 2, type = i64*]
  %54 = load i64, i64* %53, align 8               ; [#uses = 2]
  %.not.i.i130 = icmp eq i64 %54, 0               ; [#uses = 1]
  br i1 %.not.i.i130, label %assertFailed.i.i131, label %assertPassed.i.i

assertPassed.i.i:                                 ; preds = %endif.i.i
  %55 = add i64 %54, -1                           ; [#uses = 2]
  store i64 %55, i64* %53, align 8
  %.not4.i.i = icmp eq i64 %55, 0                 ; [#uses = 1]
  br i1 %.not4.i.i, label %endif2.i.i, label %_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit

endif2.i.i:                                       ; preds = %assertPassed.i.i
  %56 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %52, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %56) #1
  %57 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %52 to i8* ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %57, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false) #1
  %58 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %__aggr135 to i8** ; [#uses = 2]
  %59 = load i8*, i8** %58, align 8               ; [#uses = 1]
  call void @gc_removeRange(i8* %59) #1
  %60 = load i8*, i8** %58, align 8               ; [#uses = 1]
  call void @free(i8* %60) #1
  store %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8
  br label %_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit

assertFailed.i.i131:                              ; preds = %endif.i.i
  call void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6570) #4
  unreachable

_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit: ; preds = %finally, %assertPassed.i.i, %endif2.i.i
  br i1 %cond, label %try.success, label %eh.resume

try.success:                                      ; preds = %_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit
  ret i32 0

landingPad.loopexit:                              ; preds = %forbody11, %bounds.ok18, %aaboundsok24, %bounds.ok32, %if42, %bounds.ok49, %else44, %bounds.ok63
  %lpad.loopexit = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  br label %landingPad

landingPad.loopexit.split-lp.loopexit:            ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i127, %toElem.success.i, %endif, %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i118, %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit.i, %bounds.ok78, %endfor13, %bounds.ok, %if
  %lpad.loopexit132 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  br label %landingPad

landingPad.loopexit.split-lp.loopexit.split-lp:   ; preds = %assertFailed.i.i126, %.noexc123, %eh.resume.i, %assertFailed.i.i117, %assertFailed.i.i, %aaboundscheckfail85, %bounds.fail79, %aaboundscheckfail70, %aaboundscheckfail56, %aaboundscheckfail39, %aaboundscheckfail25, %aaboundscheckfail
  %lpad.loopexit.split-lp133 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  br label %landingPad

landingPad:                                       ; preds = %landingPad.loopexit.split-lp.loopexit, %landingPad.loopexit.split-lp.loopexit.split-lp, %landingPad.loopexit
  %lpad.phi = phi { i8*, i32 } [ %lpad.loopexit, %landingPad.loopexit ], [ %lpad.loopexit132, %landingPad.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp133, %landingPad.loopexit.split-lp.loopexit.split-lp ] ; [#uses = 1, type = { i8*, i32 }]
  %61 = extractvalue { i8*, i32 } %lpad.phi, 0    ; [#uses = 1]
  br label %finally

eh.resume:                                        ; preds = %_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit
  call void @_Unwind_Resume(i8* %eh.ptr.0)
  unreachable
}

; [#uses = 1]
declare %std.stdio.File* @_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File() local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T6byLineTaTaZQmMFEQBj8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQDuQDtQDq__T10ByLineImplTaTaZQr(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* noalias sret align 8 %.sret_arg, %std.stdio.File* nonnull %.this_arg, i8 zeroext %terminator_arg, i1 zeroext %keepTerminator_arg) local_unnamed_addr #2 {
  %__copytmp58 = alloca %std.stdio.File, align 8  ; [#uses = 3, size/byte = 24]
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.sret_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  store %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8
  %2 = bitcast %std.stdio.File* %__copytmp58 to i8* ; [#uses = 1]
  %3 = bitcast %std.stdio.File* %.this_arg to i8* ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(24) %2, i8* nonnull align 1 dereferenceable(24) %3, i64 24, i1 false)
  call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %__copytmp58) #1
  %4 = call %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr6__ctorMFNcSQBxQBwQBtEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEsQErQEo__TQEmTaTaZQEu(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull returned %.sret_arg, i8 zeroext %terminator_arg, i1 zeroext %keepTerminator_arg, %std.stdio.File* noalias nocapture nonnull align 8 %__copytmp58) #1 ; [#uses = 0]
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 3, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not5.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not5.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv.exit, label %endif.i

endif.i:                                          ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 1 ; [#uses = 2, type = i64*]
  %4 = load i64, i64* %3, align 8                 ; [#uses = 2]
  %.not.i = icmp eq i64 %4, 0                     ; [#uses = 1]
  br i1 %.not.i, label %assertFailed.i, label %assertPassed.i

assertPassed.i:                                   ; preds = %endif.i
  %5 = add i64 %4, -1                             ; [#uses = 2]
  store i64 %5, i64* %3, align 8
  %.not4.i = icmp eq i64 %5, 0                    ; [#uses = 1]
  br i1 %.not4.i, label %endif2.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv.exit

endif2.i:                                         ; preds = %assertPassed.i
  %6 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %7 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %6, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %7) #1
  %8 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %6 to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %8, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false) #1
  %9 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg to i8** ; [#uses = 2]
  %10 = load i8*, i8** %9, align 8                ; [#uses = 1]
  tail call void @gc_removeRange(i8* %10) #1
  %11 = load i8*, i8** %9, align 8                ; [#uses = 1]
  tail call void @free(i8* %11) #1
  store %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8
  br label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv.exit

assertFailed.i:                                   ; preds = %endif.i
  tail call void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6570) #4
  unreachable

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv.exit: ; preds = %0, %assertPassed.i, %endif2.i
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std5stdio4File__T10ByLineImplTaTaZQr5emptyMFNdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 4]
  %.not.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not.i, label %assertFailed.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit

assertFailed.i:                                   ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 45, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6644) #4
  unreachable

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit: ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %3) #1
  %4 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.len.i = load i64, i64* %4, align 8            ; [#uses = 1]
  %5 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.ptr.i = load i8*, i8** %5, align 8            ; [#uses = 1]
  %6 = icmp eq i64 %.len.i, 0                     ; [#uses = 1]
  %7 = icmp eq i8* %.ptr.i, null                  ; [#uses = 1]
  %8 = and i1 %6, %7                              ; [#uses = 1]
  ret i1 %8
}

; [#uses = 8]
; Function Attrs: uwtable
declare i32 @_d_eh_personality(i32, i32, i64, i8*, i8*) #3

; [#uses = 9]
; Function Attrs: cold noreturn uwtable
declare void @_Unwind_Resume(i8*) local_unnamed_addr #4

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std5stdio4File__T10ByLineImplTaTaZQr5frontMFNdZAa(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 4]
  %.not.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not.i, label %assertFailed.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit

assertFailed.i:                                   ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 45, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6644) #4
  unreachable

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit: ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %3) #1
  %.elt.i = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack.i = load i64, i64* %.elt.i, align 8    ; [#uses = 1]
  %4 = insertvalue { i64, i8* } undef, i64 %.unpack.i, 0 ; [#uses = 1]
  %.elt1.i = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack2.i = load i8*, i8** %.elt1.i, align 8  ; [#uses = 1]
  %5 = insertvalue { i64, i8* } %4, i8* %.unpack2.i, 1 ; [#uses = 1]
  ret { i64, i8* } %5
}

; [#uses = 6]
; Function Attrs: uwtable
declare i8* @_d_assocarrayliteralTX(%object.TypeInfo_AssociativeArray*, { i64, i8* }, { i64, i8* }) local_unnamed_addr #3

; [#uses = 14]
; Function Attrs: cold noreturn uwtable
declare void @_d_arraybounds_index({ i64, i8* }, i32, i64, i64) local_unnamed_addr #4

; [#uses = 6]
; Function Attrs: readonly uwtable
declare i8* @_aaInX(i8** nocapture dereferenceable(8), %object.TypeInfo*, i8* nocapture) local_unnamed_addr #5

; [#uses = 6]
; Function Attrs: cold noreturn uwtable
declare void @_d_arraybounds({ i64, i8* }, i32) local_unnamed_addr #4

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio__T7writelnTiZQlFNfiZv(i32 %_param_0_arg) local_unnamed_addr #2 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %__tmpfordtor149 = alloca %std.stdio.File, align 8 ; [#uses = 4, size/byte = 24]
  call void @_D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File(%std.stdio.File* noalias nonnull sret align 8 %__tmpfordtor149) #1
  invoke void @_D3std5stdio4File__T5writeTiTaZQlMFNfiaZv(%std.stdio.File* nonnull %__tmpfordtor149, i8 zeroext 10, i32 %_param_0_arg) #1
          to label %toElem.success unwind label %eh.resume

toElem.success:                                   ; preds = %0
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__tmpfordtor149) #1
  ret void

eh.resume:                                        ; preds = %0
  %1 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %2 = extractvalue { i8*, i32 } %1, 0            ; [#uses = 1]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__tmpfordtor149) #1
  call void @_Unwind_Resume(i8* %2)
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr8popFrontMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 3]
  %.not.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not.i, label %assertFailed.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit

assertFailed.i:                                   ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 45, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6644) #4
  unreachable

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf.exit: ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %3) #1
  %4 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0, i32 5 ; [#uses = 1, type = i8*]
  store i8 0, i8* %4, align 1
  ret void
}

; [#uses = 1]
declare i32 @_d_run_main(i32, i8**, i8*) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define i32 @main(i32 %argc_arg, i8** %argv_arg) local_unnamed_addr #2 {
  %1 = tail call i32 @_d_run_main(i32 %argc_arg, i8** %argv_arg, i8* bitcast (i32 ({ i64, { i64, i8* }* })* @_Dmain to i8*)) #1 ; [#uses = 1]
  ret i32 %1
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr6__ctorMFNcSQBxQBwQBtEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEsQErQEo__TQEmTaTaZQEu(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull returned %.this_arg, i8 zeroext %terminator_arg, i1 zeroext %kt_arg, %std.stdio.File* noalias nocapture align 8 %f) local_unnamed_addr #2 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %kt = alloca i8, align 1                        ; [#uses = 2, size/byte = 1]
  %terminator = alloca i8, align 1                ; [#uses = 2, size/byte = 1]
  %1 = zext i1 %kt_arg to i8                      ; [#uses = 1]
  store i8 %1, i8* %kt, align 1
  store i8 %terminator_arg, i8* %terminator, align 1
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg to i64* ; [#uses = 1]
  store i64 0, i64* %2, align 1
  %3 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"*]
  invoke void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore__T10initializeTSQFpQElQEiTEQGaQFz__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQDeMFKQCxKQCqKaZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %3, i8* nonnull dereferenceable(1) %terminator, i8* nonnull dereferenceable(1) %kt, %std.stdio.File* nonnull dereferenceable(24) %f) #1
          to label %.noexc unwind label %landingPad2

.noexc:                                           ; preds = %0
  %4 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %5 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %4, align 8 ; [#uses = 1]
  %.not.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %5, null ; [#uses = 1]
  br i1 %.not.i, label %assertFailed.i, label %return

assertFailed.i:                                   ; preds = %.noexc
  invoke void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6537) #4
          to label %.noexc5 unwind label %landingPad2

.noexc5:                                          ; preds = %assertFailed.i
  unreachable

catch.object.Exception:                           ; preds = %landingPad2
  %6 = call %object.Throwable* @_d_eh_enter_catch(i8* %21) ; [#uses = 1]
  %7 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 3, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %8 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %7, align 8 ; [#uses = 2]
  %.not5.i.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %8, null ; [#uses = 1]
  br i1 %.not5.i.i, label %postinvoke, label %endif.i.i

endif.i.i:                                        ; preds = %catch.object.Exception
  %9 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %8, i64 0, i32 1 ; [#uses = 2, type = i64*]
  %10 = load i64, i64* %9, align 8                ; [#uses = 2]
  %.not.i.i = icmp eq i64 %10, 0                  ; [#uses = 1]
  br i1 %.not.i.i, label %assertFailed.i.i, label %assertPassed.i.i

assertPassed.i.i:                                 ; preds = %endif.i.i
  %11 = add i64 %10, -1                           ; [#uses = 2]
  store i64 %11, i64* %9, align 8
  %.not4.i.i = icmp eq i64 %11, 0                 ; [#uses = 1]
  br i1 %.not4.i.i, label %endif2.i.i, label %postinvoke

endif2.i.i:                                       ; preds = %assertPassed.i.i
  %12 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %7, align 8 ; [#uses = 2]
  %13 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %12, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  invoke void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %13) #1
          to label %.noexc6 unwind label %landingPad

.noexc6:                                          ; preds = %endif2.i.i
  %14 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %12 to i8* ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %14, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false) #1
  %15 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg to i8** ; [#uses = 2]
  %16 = load i8*, i8** %15, align 8               ; [#uses = 1]
  invoke void @gc_removeRange(i8* %16) #1
          to label %.noexc7 unwind label %landingPad

.noexc7:                                          ; preds = %.noexc6
  %17 = load i8*, i8** %15, align 8               ; [#uses = 1]
  call void @free(i8* %17) #1
  store %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %7, align 8
  br label %postinvoke

assertFailed.i.i:                                 ; preds = %endif.i.i
  invoke void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6570) #4
          to label %.noexc8 unwind label %landingPad

.noexc8:                                          ; preds = %assertFailed.i.i
  unreachable

postinvoke:                                       ; preds = %.noexc7, %assertPassed.i.i, %catch.object.Exception
  invoke void @_d_throw_exception(%object.Throwable* %6) #4
          to label %postinvoke1 unwind label %landingPad

postinvoke1:                                      ; preds = %postinvoke
  unreachable

return:                                           ; preds = %.noexc
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %f) #1
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg

landingPad:                                       ; preds = %assertFailed.i.i, %.noexc6, %endif2.i.i, %postinvoke
  %18 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %19 = extractvalue { i8*, i32 } %18, 0          ; [#uses = 1]
  br label %eh.resume

eh.resume:                                        ; preds = %landingPad, %landingPad2
  %eh.ptr.0.ph = phi i8* [ %21, %landingPad2 ], [ %19, %landingPad ] ; [#uses = 1, type = i8*]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %f) #1
  call void @_Unwind_Resume(i8* %eh.ptr.0.ph)
  unreachable

landingPad2:                                      ; preds = %assertFailed.i, %0
  %20 = landingpad { i8*, i32 }
          cleanup
          catch %object.TypeInfo_Class* @_D9Exception7__ClassZ ; [#uses = 2]
  %21 = extractvalue { i8*, i32 } %20, 0          ; [#uses = 2]
  %22 = extractvalue { i8*, i32 } %20, 1          ; [#uses = 1]
  %23 = call i32 @llvm.eh.typeid.for(i8* bitcast (%object.TypeInfo_Class* @_D9Exception7__ClassZ to i8*)) ; [#uses = 1]
  %24 = icmp eq i32 %22, %23                      ; [#uses = 1]
  br i1 %24, label %catch.object.Exception, label %eh.resume
}

; [#uses = 48]
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #6

; [#uses = 9]
declare void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull) #1

; [#uses = 29]
declare void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull) #1

; [#uses = 5]
; Function Attrs: nounwind uwtable
declare %object.Throwable* @_d_eh_enter_catch(i8*) local_unnamed_addr #7

; [#uses = 22]
; Function Attrs: cold noreturn uwtable
declare void @_d_throw_exception(%object.Throwable*) local_unnamed_addr #4

; [#uses = 2]
; Function Attrs: argmemonly nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #8

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo__T6__ctorTSQEtQDpQDmTEQFeQFd__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQCzMFNcKQCzKQCsKaZSQIcQIb__TQHvTQHmVQFzi0ZQIj(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull returned %.this_arg, i8* dereferenceable(1) %_param_2, i8* dereferenceable(1) %_param_1, %std.stdio.File* dereferenceable(24) %_param_0) local_unnamed_addr #2 {
label.__returnLabel:
  %0 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"*]
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore__T10initializeTSQFpQElQEiTEQGaQFz__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQDeMFKQCxKQCqKaZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %0, i8* nonnull dereferenceable(1) %_param_2, i8* nonnull dereferenceable(1) %_param_1, %std.stdio.File* nonnull dereferenceable(24) %_param_0) #1
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 1]
  %.not = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %label.__returnLabel
  ret %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg

assertFailed:                                     ; preds = %label.__returnLabel
  tail call void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6537) #4
  unreachable
}

; [#uses = 5]
; Function Attrs: nounwind readnone
declare i32 @llvm.eh.typeid.for(i8*) #9

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %3

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 45, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6644) #4
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl5emptyMFNdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) local_unnamed_addr #2 {
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) #1
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.len = load i64, i64* %1, align 8              ; [#uses = 1]
  %2 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.ptr = load i8*, i8** %2, align 8              ; [#uses = 1]
  %3 = icmp eq i64 %.len, 0                       ; [#uses = 1]
  %4 = icmp eq i8* %.ptr, null                    ; [#uses = 1]
  %5 = and i1 %3, %4                              ; [#uses = 1]
  ret i1 %5
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl5frontMFNdZAa(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) local_unnamed_addr #2 {
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) #1
  %.elt = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack = load i64, i64* %.elt, align 8        ; [#uses = 1]
  %1 = insertvalue { i64, i8* } undef, i64 %.unpack, 0 ; [#uses = 1]
  %.elt1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack2 = load i8*, i8** %.elt1, align 8      ; [#uses = 1]
  %2 = insertvalue { i64, i8* } %1, i8* %.unpack2, 1 ; [#uses = 1]
  ret { i64, i8* } %2
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8popFrontMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) local_unnamed_addr #2 {
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) #1
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 5 ; [#uses = 1, type = i8*]
  store i8 0, i8* %1, align 1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__ctorMFNcNfSQCeQCdQCaEQCo8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEzQEyQEv__TQEtTaTaZQFbQEl(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull returned %.this_arg, i8 zeroext %terminator_arg, i1 zeroext %kt_arg, %std.stdio.File* noalias nocapture align 8 %f) local_unnamed_addr #2 {
finally:
  %0 = zext i1 %kt_arg to i8                      ; [#uses = 1]
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg to i8* ; [#uses = 1]
  %3 = bitcast %std.stdio.File* %f to i8*         ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(24) %2, i8* nonnull align 8 dereferenceable(24) %3, i64 24, i1 false)
  tail call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %1) #1
  %4 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 3 ; [#uses = 1, type = i8*]
  store i8 %terminator_arg, i8* %4, align 1
  %5 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 4 ; [#uses = 1, type = i8*]
  store i8 %0, i8* %5, align 1
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %f) #1
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg
}

; [#uses = 9]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 5 ; [#uses = 2, type = i8*]
  %2 = load i8, i8* %1, align 1, !range !20       ; [#uses = 1]
  %.not = icmp eq i8 %2, 0                        ; [#uses = 1]
  br i1 %.not, label %endif, label %if

if:                                               ; preds = %0
  ret void

endif:                                            ; preds = %0
  %3 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 0 ; [#uses = 2, type = %std.stdio.File*]
  %4 = tail call zeroext i1 @_D3std5stdio4File6isOpenMxFNaNbNdNfZb(%std.stdio.File* nonnull %3) #1 ; [#uses = 1]
  br i1 %4, label %assertPassed, label %assertFailed

assertPassed:                                     ; preds = %endif
  %5 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 1 ; [#uses = 4, type = { i64, i8* }*]
  %6 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %7 = bitcast i8** %6 to i64*                    ; [#uses = 1]
  %8 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 2, i32 0 ; [#uses = 3, type = i64*]
  %9 = bitcast i64* %8 to <2 x i64>*              ; [#uses = 1]
  %10 = load <2 x i64>, <2 x i64>* %9, align 8    ; [#uses = 1]
  %11 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %5, i64 0, i32 0 ; [#uses = 2, type = i64*]
  %12 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 1, i32 1 ; [#uses = 2, type = i8**]
  %13 = bitcast i8** %12 to i64*                  ; [#uses = 1]
  %14 = bitcast { i64, i8* }* %5 to <2 x i64>*    ; [#uses = 1]
  store <2 x i64> %10, <2 x i64>* %14, align 8
  %15 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 3 ; [#uses = 2, type = i8*]
  %16 = load i8, i8* %15, align 1                 ; [#uses = 1]
  %17 = zext i8 %16 to i32                        ; [#uses = 1]
  %18 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 4, type = %std.stdio.File.Impl**]
  %19 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %18, align 8 ; [#uses = 3]
  %.not.i = icmp eq %std.stdio.File.Impl* %19, null ; [#uses = 1]
  br i1 %.not.i, label %if.i.i, label %andandend.i

andandend.i:                                      ; preds = %assertPassed
  %20 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %19, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %21 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %20, align 8 ; [#uses = 2]
  %.not9.i = icmp eq %core.stdc.stdio._IO_FILE* %21, null ; [#uses = 1]
  br i1 %.not9.i, label %if.i.i, label %_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit.i

if.i.i:                                           ; preds = %andandend.i, %assertPassed
  tail call void @_D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamMAxaZNn({ i64, i8* } { i64 38, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.24, i32 0, i32 0) }, i64 2083, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }) #13
  unreachable

_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit.i: ; preds = %andandend.i
  %22 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %19, i64 0, i32 4 ; [#uses = 1, type = i32*]
  %23 = load i32, i32* %22, align 4               ; [#uses = 1]
  %24 = icmp eq i32 %23, 0                        ; [#uses = 1]
  br i1 %24, label %if.i, label %_D3std5stdio4File__T6readlnTaZQkMFKAawZm.exit

if.i:                                             ; preds = %_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit.i
  %25 = tail call i32 @fwide(%core.stdc.stdio._IO_FILE* nonnull %21, i32 0) #1 ; [#uses = 2]
  %26 = icmp slt i32 %25, 0                       ; [#uses = 1]
  br i1 %26, label %if1.i, label %else.i

if1.i:                                            ; preds = %if.i
  %27 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %18, align 8 ; [#uses = 1]
  %28 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %27, i64 0, i32 4 ; [#uses = 1, type = i32*]
  store i32 1, i32* %28, align 4
  br label %_D3std5stdio4File__T6readlnTaZQkMFKAawZm.exit

else.i:                                           ; preds = %if.i
  %.not7.i = icmp eq i32 %25, 0                   ; [#uses = 1]
  br i1 %.not7.i, label %_D3std5stdio4File__T6readlnTaZQkMFKAawZm.exit, label %if3.i

if3.i:                                            ; preds = %else.i
  %29 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %18, align 8 ; [#uses = 1]
  %30 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %29, i64 0, i32 4 ; [#uses = 1, type = i32*]
  store i32 2, i32* %30, align 4
  br label %_D3std5stdio4File__T6readlnTaZQkMFKAawZm.exit

_D3std5stdio4File__T6readlnTaZQkMFKAawZm.exit:    ; preds = %_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit.i, %if1.i, %else.i, %if3.i
  %31 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %18, align 8 ; [#uses = 2]
  %32 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %31, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %33 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %32, align 8 ; [#uses = 1]
  %34 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %31, i64 0, i32 4 ; [#uses = 1, type = i32*]
  %35 = load i32, i32* %34, align 4               ; [#uses = 1]
  %36 = tail call i64 @_D3std5stdio10readlnImplFPOS4core4stdcQBg8_IO_FILEKAawEQCbQCa4File11OrientationZm(i32 %35, i32 %17, { i64, i8* }* nonnull dereferenceable(16) %5, %core.stdc.stdio._IO_FILE* %33) #1 ; [#uses = 0]
  %.len1 = load i64, i64* %11, align 8            ; [#uses = 4]
  %.len2 = load i64, i64* %8, align 8             ; [#uses = 1]
  %37 = icmp ugt i64 %.len1, %.len2               ; [#uses = 1]
  br i1 %37, label %endif4.thread, label %endif4

endif4.thread:                                    ; preds = %_D3std5stdio4File__T6readlnTaZQkMFKAawZm.exit
  %.ptr519 = load i64, i64* %13, align 8          ; [#uses = 1]
  store i64 %.len1, i64* %8, align 8
  store i64 %.ptr519, i64* %7, align 8
  br label %else

endif4:                                           ; preds = %_D3std5stdio4File__T6readlnTaZQkMFKAawZm.exit
  %.not.i20 = icmp eq i64 %.len1, 0               ; [#uses = 1]
  br i1 %.not.i20, label %if7, label %else

if7:                                              ; preds = %endif4
  tail call void @_D3std5stdio4File6detachMFNeZv(%std.stdio.File* nonnull %3) #1
  %38 = bitcast { i64, i8* }* %5 to i8*           ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %38, i8 0, i64 16, i1 false)
  br label %endif8

else:                                             ; preds = %endif4.thread, %endif4
  %39 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 4 ; [#uses = 1, type = i8*]
  %40 = load i8, i8* %39, align 1, !range !20     ; [#uses = 1]
  %41 = icmp eq i8 %40, 0                         ; [#uses = 1]
  br i1 %41, label %_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb.exit, label %endif8

_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb.exit: ; preds = %else
  %.unpack16 = load i8*, i8** %12, align 8        ; [#uses = 1]
  %42 = load i8, i8* %15, align 1                 ; [#uses = 1]
  %43 = add i64 %.len1, -1                        ; [#uses = 2]
  %44 = getelementptr inbounds i8, i8* %.unpack16, i64 %43 ; [#uses = 1, type = i8*]
  %45 = load i8, i8* %44, align 1                 ; [#uses = 1]
  %46 = icmp eq i8 %45, %42                       ; [#uses = 1]
  br i1 %46, label %bounds.ok, label %endif8

bounds.ok:                                        ; preds = %_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb.exit
  store i64 %43, i64* %11, align 8
  br label %endif8

endif8:                                           ; preds = %_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb.exit, %bounds.ok, %else, %if7
  store i8 1, i8* %1, align 1
  ret void

assertFailed:                                     ; preds = %endif
  tail call void @_d_assert({ i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }, i32 2502) #4
  unreachable
}

; [#uses = 1]
declare zeroext i1 @_D3std5stdio4File6isOpenMxFNaNbNdNfZb(%std.stdio.File* nonnull) local_unnamed_addr #1

; [#uses = 16]
; Function Attrs: cold noreturn uwtable
declare void @_d_assert({ i64, i8* }, i32) local_unnamed_addr #4

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std5stdio4File__T6readlnTaZQkMFKAawZm(%std.stdio.File* nonnull %.this_arg, i32 %terminator_arg, { i64, i8* }* dereferenceable(16) %buf) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %std.stdio.File, %std.stdio.File* %.this_arg, i64 0, i32 0 ; [#uses = 4, type = %std.stdio.File.Impl**]
  %2 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %1, align 8 ; [#uses = 3]
  %.not = icmp eq %std.stdio.File.Impl* %2, null  ; [#uses = 1]
  br i1 %.not, label %if.i, label %andandend

andandend:                                        ; preds = %0
  %3 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %2, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %4 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %3, align 8 ; [#uses = 2]
  %.not9 = icmp eq %core.stdc.stdio._IO_FILE* %4, null ; [#uses = 1]
  br i1 %.not9, label %if.i, label %_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit

if.i:                                             ; preds = %andandend, %0
  tail call void @_D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamMAxaZNn({ i64, i8* } { i64 38, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.24, i32 0, i32 0) }, i64 2083, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }) #13
  unreachable

_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit: ; preds = %andandend
  %5 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %2, i64 0, i32 4 ; [#uses = 1, type = i32*]
  %6 = load i32, i32* %5, align 4                 ; [#uses = 1]
  %7 = icmp eq i32 %6, 0                          ; [#uses = 1]
  br i1 %7, label %if, label %endif

if:                                               ; preds = %_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit
  %8 = tail call i32 @fwide(%core.stdc.stdio._IO_FILE* nonnull %4, i32 0) #1 ; [#uses = 2]
  %9 = icmp slt i32 %8, 0                         ; [#uses = 1]
  br i1 %9, label %if1, label %else

if1:                                              ; preds = %if
  %10 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %1, align 8 ; [#uses = 1]
  %11 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %10, i64 0, i32 4 ; [#uses = 1, type = i32*]
  store i32 1, i32* %11, align 4
  br label %endif

else:                                             ; preds = %if
  %.not7 = icmp eq i32 %8, 0                      ; [#uses = 1]
  br i1 %.not7, label %endif, label %if3

if3:                                              ; preds = %else
  %12 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %1, align 8 ; [#uses = 1]
  %13 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %12, i64 0, i32 4 ; [#uses = 1, type = i32*]
  store i32 2, i32* %13, align 4
  br label %endif

endif:                                            ; preds = %else, %if1, %if3, %_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit
  %14 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %1, align 8 ; [#uses = 2]
  %15 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %14, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %16 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %15, align 8 ; [#uses = 1]
  %17 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %14, i64 0, i32 4 ; [#uses = 1, type = i32*]
  %18 = load i32, i32* %17, align 4               ; [#uses = 1]
  %19 = tail call i64 @_D3std5stdio10readlnImplFPOS4core4stdcQBg8_IO_FILEKAawEQCbQCa4File11OrientationZm(i32 %18, i32 %terminator_arg, { i64, i8* }* nonnull dereferenceable(16) %buf, %core.stdc.stdio._IO_FILE* %16) #1 ; [#uses = 1]
  ret i64 %19
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std5range10primitives__T5emptyTAaZQkFNaNbNdNiNfMKQsZb({ i64, i8* }* dereferenceable(16) %a) local_unnamed_addr #2 {
  %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a, i64 0, i32 0 ; [#uses = 1, type = i64*]
  %.len = load i64, i64* %1, align 8              ; [#uses = 1]
  %.not = icmp eq i64 %.len, 0                    ; [#uses = 1]
  ret i1 %.not
}

; [#uses = 1]
declare void @_D3std5stdio4File6detachMFNeZv(%std.stdio.File* nonnull) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb(i8 zeroext %withThis_arg, { i64, i8* } %doesThisEnd_arg) local_unnamed_addr #2 {
  %doesThisEnd_arg.fca.0.extract = extractvalue { i64, i8* } %doesThisEnd_arg, 0 ; [#uses = 2]
  %.not.i = icmp eq i64 %doesThisEnd_arg.fca.0.extract, 0 ; [#uses = 1]
  br i1 %.not.i, label %if, label %bounds.ok

if:                                               ; preds = %0
  ret i1 false

bounds.ok:                                        ; preds = %0
  %doesThisEnd_arg.fca.1.extract = extractvalue { i64, i8* } %doesThisEnd_arg, 1 ; [#uses = 1]
  %1 = add i64 %doesThisEnd_arg.fca.0.extract, -1 ; [#uses = 1]
  %2 = getelementptr inbounds i8, i8* %doesThisEnd_arg.fca.1.extract, i64 %1 ; [#uses = 1, type = i8*]
  %3 = load i8, i8* %2, align 1                   ; [#uses = 1]
  %4 = icmp eq i8 %3, %withThis_arg               ; [#uses = 1]
  ret i1 %4
}

; [#uses = 2]
; Function Attrs: cold noreturn uwtable
declare void @_d_arraybounds_slice({ i64, i8* }, i32, i64, i64, i64) local_unnamed_addr #4

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl11__fieldDtorMFNeZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %1) #1
  ret void
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl15__fieldPostblitMFNbNlNeZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %1) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8opAssignMFNcNjNeSQCiQChQCe__TQCcTaTaZQCkQBuZQBc(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* noalias nocapture align 8 %p) local_unnamed_addr #2 {
  %__swap28 = alloca %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", align 8 ; [#uses = 2, size/byte = 64]
  %1 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %__swap28 to i8* ; [#uses = 1]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg to i8* ; [#uses = 2]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(64) %1, i8* nonnull align 1 dereferenceable(64) %2, i64 64, i1 false)
  %3 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %2, i8* nonnull align 8 dereferenceable(64) %3, i64 64, i1 false)
  %4 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %__swap28, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %4) #1
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl11__xopEqualsFKxSQChQCgQCd__TQCbTaTaZQCjQBtKxQBdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %q, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %p) #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %2 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %3 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %1, align 8 ; [#uses = 1]
  %4 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %2, align 8 ; [#uses = 1]
  %5 = icmp eq %std.stdio.File.Impl* %3, %4       ; [#uses = 1]
  br i1 %5, label %andand, label %andandend14

andand:                                           ; preds = %0
  %.elt = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack = load i64, i64* %.elt, align 8        ; [#uses = 1]
  %6 = insertvalue { i64, i8* } undef, i64 %.unpack, 0 ; [#uses = 1]
  %.elt26 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack27 = load i8*, i8** %.elt26, align 8    ; [#uses = 1]
  %7 = insertvalue { i64, i8* } %6, i8* %.unpack27, 1 ; [#uses = 1]
  %.elt28 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack29 = load i64, i64* %.elt28, align 8    ; [#uses = 1]
  %8 = insertvalue { i64, i8* } undef, i64 %.unpack29, 0 ; [#uses = 1]
  %.elt30 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack31 = load i8*, i8** %.elt30, align 8    ; [#uses = 1]
  %9 = insertvalue { i64, i8* } %8, i8* %.unpack31, 1 ; [#uses = 1]
  %10 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %9, { i64, i8* } %7) #1 ; [#uses = 1]
  br i1 %10, label %andand1, label %andandend14

andand1:                                          ; preds = %andand
  %.elt32 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack33 = load i64, i64* %.elt32, align 8    ; [#uses = 1]
  %11 = insertvalue { i64, i8* } undef, i64 %.unpack33, 0 ; [#uses = 1]
  %.elt34 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack35 = load i8*, i8** %.elt34, align 8    ; [#uses = 1]
  %12 = insertvalue { i64, i8* } %11, i8* %.unpack35, 1 ; [#uses = 1]
  %.elt36 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack37 = load i64, i64* %.elt36, align 8    ; [#uses = 1]
  %13 = insertvalue { i64, i8* } undef, i64 %.unpack37, 0 ; [#uses = 1]
  %.elt38 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack39 = load i8*, i8** %.elt38, align 8    ; [#uses = 1]
  %14 = insertvalue { i64, i8* } %13, i8* %.unpack39, 1 ; [#uses = 1]
  %15 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %14, { i64, i8* } %12) #1 ; [#uses = 1]
  br i1 %15, label %andand4, label %andandend14

andand4:                                          ; preds = %andand1
  %.elt40 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack41 = load i64, i64* %.elt40, align 8    ; [#uses = 1]
  %16 = insertvalue { i64, i8* } undef, i64 %.unpack41, 0 ; [#uses = 1]
  %.elt42 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack43 = load i8*, i8** %.elt42, align 8    ; [#uses = 1]
  %17 = insertvalue { i64, i8* } %16, i8* %.unpack43, 1 ; [#uses = 1]
  %.elt44 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack45 = load i64, i64* %.elt44, align 8    ; [#uses = 1]
  %18 = insertvalue { i64, i8* } undef, i64 %.unpack45, 0 ; [#uses = 1]
  %.elt46 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack47 = load i8*, i8** %.elt46, align 8    ; [#uses = 1]
  %19 = insertvalue { i64, i8* } %18, i8* %.unpack47, 1 ; [#uses = 1]
  %20 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %19, { i64, i8* } %17) #1 ; [#uses = 1]
  br i1 %20, label %andand7, label %andandend14

andand7:                                          ; preds = %andand4
  %21 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 3 ; [#uses = 1, type = i8*]
  %22 = load i8, i8* %21, align 1                 ; [#uses = 1]
  %23 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 3 ; [#uses = 1, type = i8*]
  %24 = load i8, i8* %23, align 1                 ; [#uses = 1]
  %25 = icmp eq i8 %22, %24                       ; [#uses = 1]
  br i1 %25, label %andand10, label %andandend14

andand10:                                         ; preds = %andand7
  %26 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 4 ; [#uses = 1, type = i8*]
  %27 = load i8, i8* %26, align 1, !range !20     ; [#uses = 1]
  %28 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 4 ; [#uses = 1, type = i8*]
  %29 = load i8, i8* %28, align 1, !range !20     ; [#uses = 1]
  %30 = icmp eq i8 %27, %29                       ; [#uses = 1]
  br i1 %30, label %andand13, label %andandend14

andand13:                                         ; preds = %andand10
  %31 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 5 ; [#uses = 1, type = i8*]
  %32 = load i8, i8* %31, align 1, !range !20     ; [#uses = 1]
  %33 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %q, i64 0, i32 5 ; [#uses = 1, type = i8*]
  %34 = load i8, i8* %33, align 1, !range !20     ; [#uses = 1]
  %35 = icmp eq i8 %32, %34                       ; [#uses = 1]
  br label %andandend14

andandend14:                                      ; preds = %0, %andand, %andand1, %andand4, %andand7, %andand13, %andand10
  %andandval15 = phi i1 [ false, %andand10 ], [ %35, %andand13 ], [ false, %andand7 ], [ false, %andand4 ], [ false, %andand1 ], [ false, %andand ], [ false, %0 ] ; [#uses = 1, type = i1]
  ret i1 %andandval15
}

; [#uses = 9]
declare zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* }, { i64, i8* }) local_unnamed_addr #1

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i64 @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl9__xtoHashFNbNeKxSQCiQChQCe__TQCcTaTaZQCkQBuZm(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %p) #2 {
unrolledstmt:
  %0 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D26TypeInfo_xS3std5stdio4File6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl" = getelementptr inbounds [19 x i8*], [19 x i8*]* %0, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %1 = bitcast i8** %"getHash@vtbl" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %2 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %1, align 8 ; [#uses = 1]
  %3 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p to i8* ; [#uses = 1]
  %4 = tail call i64 %2(%object.TypeInfo_Const* nonnull @_D26TypeInfo_xS3std5stdio4File6__initZ, i8* nonnull %3) ; [#uses = 1]
  %5 = mul i64 %4, 33                             ; [#uses = 1]
  %6 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D12TypeInfo_xAa6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl6" = getelementptr inbounds [19 x i8*], [19 x i8*]* %6, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %7 = bitcast i8** %"getHash@vtbl6" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %8 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %7, align 8 ; [#uses = 1]
  %9 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 1 ; [#uses = 1, type = { i64, i8* }*]
  %10 = bitcast { i64, i8* }* %9 to i8*           ; [#uses = 1]
  %11 = tail call i64 %8(%object.TypeInfo_Const* nonnull @_D12TypeInfo_xAa6__initZ, i8* nonnull %10) ; [#uses = 1]
  %12 = add i64 %11, %5                           ; [#uses = 1]
  %13 = mul i64 %12, 33                           ; [#uses = 1]
  %14 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D12TypeInfo_xAa6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl8" = getelementptr inbounds [19 x i8*], [19 x i8*]* %14, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %15 = bitcast i8** %"getHash@vtbl8" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %16 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %15, align 8 ; [#uses = 1]
  %17 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 2 ; [#uses = 1, type = { i64, i8* }*]
  %18 = bitcast { i64, i8* }* %17 to i8*          ; [#uses = 1]
  %19 = tail call i64 %16(%object.TypeInfo_Const* nonnull @_D12TypeInfo_xAa6__initZ, i8* nonnull %18) ; [#uses = 1]
  %20 = add i64 %19, %13                          ; [#uses = 1]
  %21 = mul i64 %20, 33                           ; [#uses = 1]
  %22 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D11TypeInfo_xa6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl10" = getelementptr inbounds [19 x i8*], [19 x i8*]* %22, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %23 = bitcast i8** %"getHash@vtbl10" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %24 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %23, align 8 ; [#uses = 1]
  %25 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 3 ; [#uses = 1, type = i8*]
  %26 = tail call i64 %24(%object.TypeInfo_Const* nonnull @_D11TypeInfo_xa6__initZ, i8* nonnull %25) ; [#uses = 1]
  %27 = add i64 %26, %21                          ; [#uses = 1]
  %28 = mul i64 %27, 33                           ; [#uses = 1]
  %29 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D72TypeInfo_xE3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl12" = getelementptr inbounds [19 x i8*], [19 x i8*]* %29, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %30 = bitcast i8** %"getHash@vtbl12" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %31 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %30, align 8 ; [#uses = 1]
  %32 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 4 ; [#uses = 1, type = i8*]
  %33 = tail call i64 %31(%object.TypeInfo_Const* nonnull @_D72TypeInfo_xE3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ, i8* nonnull %32) ; [#uses = 1]
  %34 = add i64 %33, %28                          ; [#uses = 1]
  %35 = mul i64 %34, 33                           ; [#uses = 1]
  %36 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D11TypeInfo_xb6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl14" = getelementptr inbounds [19 x i8*], [19 x i8*]* %36, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %37 = bitcast i8** %"getHash@vtbl14" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %38 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %37, align 8 ; [#uses = 1]
  %39 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %p, i64 0, i32 5 ; [#uses = 1, type = i8*]
  %40 = tail call i64 %38(%object.TypeInfo_Const* nonnull @_D11TypeInfo_xb6__initZ, i8* nonnull %39) ; [#uses = 1]
  %41 = add i64 %40, %35                          ; [#uses = 1]
  ret i64 %41
}

; [#uses = 1]
declare i64 @_D3std5stdio4File9__xtoHashFNbNeKxSQBhQBgQBdZm(%std.stdio.File* dereferenceable(24)) #1

; [#uses = 1]
declare zeroext i1 @_D3std5stdio4File11__xopEqualsFKxSQBgQBfQBcKxQmZb(%std.stdio.File* dereferenceable(24), %std.stdio.File* dereferenceable(24)) #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 3, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not5 = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not5, label %if, label %endif

if:                                               ; preds = %0, %assertPassed
  ret void

endif:                                            ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 1 ; [#uses = 2, type = i64*]
  %4 = load i64, i64* %3, align 8                 ; [#uses = 2]
  %.not = icmp eq i64 %4, 0                       ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %endif
  %5 = add i64 %4, -1                             ; [#uses = 2]
  store i64 %5, i64* %3, align 8
  %.not4 = icmp eq i64 %5, 0                      ; [#uses = 1]
  br i1 %.not4, label %endif2, label %if

endif2:                                           ; preds = %assertPassed
  %6 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %7 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %6, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %7) #1
  %8 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %6 to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %8, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false) #1
  %9 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg to i8** ; [#uses = 2]
  %10 = load i8*, i8** %9, align 8                ; [#uses = 1]
  tail call void @gc_removeRange(i8* %10) #1
  %11 = load i8*, i8** %9, align 8                ; [#uses = 1]
  tail call void @free(i8* %11) #1
  store %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8
  ret void

assertFailed:                                     ; preds = %endif
  tail call void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6570) #4
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr15__fieldPostblitMFNaNbNiNlZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not.i = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo10__postblitMFNaNbNiNfZv.exit, label %endif.i

endif.i:                                          ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 1 ; [#uses = 2, type = i64*]
  %4 = load i64, i64* %3, align 8                 ; [#uses = 1]
  %5 = add i64 %4, 1                              ; [#uses = 1]
  store i64 %5, i64* %3, align 8
  br label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo10__postblitMFNaNbNiNfZv.exit

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo10__postblitMFNaNbNiNfZv.exit: ; preds = %0, %endif.i
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo10__postblitMFNaNbNiNfZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not, label %if, label %endif

if:                                               ; preds = %0
  ret void

endif:                                            ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 1 ; [#uses = 2, type = i64*]
  %4 = load i64, i64* %3, align 8                 ; [#uses = 1]
  %5 = add i64 %4, 1                              ; [#uses = 1]
  store i64 %5, i64* %3, align 8
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr8opAssignMFNcNjSQCbQCaQBx__TQBvTaTaZQCdZQz(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* nonnull %.this_arg, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* noalias nocapture align 8 %p) local_unnamed_addr #2 {
  %1 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg to i64* ; [#uses = 2]
  %2 = load i64, i64* %1, align 1                 ; [#uses = 3]
  %3 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %p to i64* ; [#uses = 1]
  %4 = load i64, i64* %3, align 8                 ; [#uses = 1]
  store i64 %4, i64* %1, align 1
  %5 = inttoptr i64 %2 to %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* ; [#uses = 2]
  %.not5.i.i = icmp eq i64 %2, 0                  ; [#uses = 1]
  br i1 %.not5.i.i, label %_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit, label %endif.i.i

endif.i.i:                                        ; preds = %0
  %6 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %5, i64 0, i32 1 ; [#uses = 2, type = i64*]
  %7 = load i64, i64* %6, align 8                 ; [#uses = 2]
  %.not.i.i = icmp eq i64 %7, 0                   ; [#uses = 1]
  br i1 %.not.i.i, label %assertFailed.i.i, label %assertPassed.i.i

assertPassed.i.i:                                 ; preds = %endif.i.i
  %8 = add i64 %7, -1                             ; [#uses = 2]
  store i64 %8, i64* %6, align 8
  %.not4.i.i = icmp eq i64 %8, 0                  ; [#uses = 1]
  br i1 %.not4.i.i, label %endif2.i.i, label %_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit

endif2.i.i:                                       ; preds = %assertPassed.i.i
  %9 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %5, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %9) #1
  %10 = inttoptr i64 %2 to i8*                    ; [#uses = 3]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %10, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false) #1
  tail call void @gc_removeRange(i8* nonnull %10) #1
  tail call void @free(i8* %10) #1
  br label %_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit

assertFailed.i.i:                                 ; preds = %endif.i.i
  tail call void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6570) #4
  unreachable

_D3std5stdio4File__T10ByLineImplTaTaZQr11__fieldDtorMFZv.exit: ; preds = %0, %assertPassed.i.i, %endif2.i.i
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg
}

; [#uses = 7]
; Function Attrs: nounwind
declare void @free(i8* nocapture) local_unnamed_addr #10

; [#uses = 3]
declare void @gc_addRange(i8*, i64, %object.TypeInfo*) local_unnamed_addr #1

; [#uses = 7]
declare void @gc_removeRange(i8*) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCk11__fieldDtorMFNeZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %1) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCk15__fieldPostblitMFNbNlNeZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %1) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCk8opAssignMFNcNjNeSQFtQFs__TQFmTQFdVQDqi0ZQGaQCmQEiZQBi(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* nonnull %.this_arg, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* noalias nocapture align 8 %p) local_unnamed_addr #2 {
  %__swap40 = alloca %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", align 8 ; [#uses = 2, size/byte = 72]
  %1 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %__swap40 to i8* ; [#uses = 1]
  %2 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %.this_arg to i8* ; [#uses = 2]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(72) %1, i8* nonnull align 1 dereferenceable(72) %2, i64 72, i1 false)
  %3 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(72) %2, i8* nonnull align 8 dereferenceable(72) %3, i64 72, i1 false)
  %4 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %__swap40, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %4) #1
  ret %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %.this_arg
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCk11__xopEqualsFKxSQFsQFr__TQFlTQFcVQDpi0ZQFzQClQEhKxQBjZb(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* dereferenceable(72) %q, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* dereferenceable(72) %p) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %2 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %3 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %1, align 8 ; [#uses = 1]
  %4 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %2, align 8 ; [#uses = 1]
  %5 = icmp eq %std.stdio.File.Impl* %3, %4       ; [#uses = 1]
  br i1 %5, label %andand, label %andandend17

andand:                                           ; preds = %0
  %.elt = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack = load i64, i64* %.elt, align 8        ; [#uses = 1]
  %6 = insertvalue { i64, i8* } undef, i64 %.unpack, 0 ; [#uses = 1]
  %.elt34 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack35 = load i8*, i8** %.elt34, align 8    ; [#uses = 1]
  %7 = insertvalue { i64, i8* } %6, i8* %.unpack35, 1 ; [#uses = 1]
  %.elt36 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack37 = load i64, i64* %.elt36, align 8    ; [#uses = 1]
  %8 = insertvalue { i64, i8* } undef, i64 %.unpack37, 0 ; [#uses = 1]
  %.elt38 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack39 = load i8*, i8** %.elt38, align 8    ; [#uses = 1]
  %9 = insertvalue { i64, i8* } %8, i8* %.unpack39, 1 ; [#uses = 1]
  %10 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %9, { i64, i8* } %7) #1 ; [#uses = 1]
  br i1 %10, label %andand1, label %andandend17

andand1:                                          ; preds = %andand
  %.elt40 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack41 = load i64, i64* %.elt40, align 8    ; [#uses = 1]
  %11 = insertvalue { i64, i8* } undef, i64 %.unpack41, 0 ; [#uses = 1]
  %.elt42 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack43 = load i8*, i8** %.elt42, align 8    ; [#uses = 1]
  %12 = insertvalue { i64, i8* } %11, i8* %.unpack43, 1 ; [#uses = 1]
  %.elt44 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack45 = load i64, i64* %.elt44, align 8    ; [#uses = 1]
  %13 = insertvalue { i64, i8* } undef, i64 %.unpack45, 0 ; [#uses = 1]
  %.elt46 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack47 = load i8*, i8** %.elt46, align 8    ; [#uses = 1]
  %14 = insertvalue { i64, i8* } %13, i8* %.unpack47, 1 ; [#uses = 1]
  %15 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %14, { i64, i8* } %12) #1 ; [#uses = 1]
  br i1 %15, label %andand4, label %andandend17

andand4:                                          ; preds = %andand1
  %.elt48 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack49 = load i64, i64* %.elt48, align 8    ; [#uses = 1]
  %16 = insertvalue { i64, i8* } undef, i64 %.unpack49, 0 ; [#uses = 1]
  %.elt50 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack51 = load i8*, i8** %.elt50, align 8    ; [#uses = 1]
  %17 = insertvalue { i64, i8* } %16, i8* %.unpack51, 1 ; [#uses = 1]
  %.elt52 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack53 = load i64, i64* %.elt52, align 8    ; [#uses = 1]
  %18 = insertvalue { i64, i8* } undef, i64 %.unpack53, 0 ; [#uses = 1]
  %.elt54 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack55 = load i8*, i8** %.elt54, align 8    ; [#uses = 1]
  %19 = insertvalue { i64, i8* } %18, i8* %.unpack55, 1 ; [#uses = 1]
  %20 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %19, { i64, i8* } %17) #1 ; [#uses = 1]
  br i1 %20, label %andand7, label %andandend17

andand7:                                          ; preds = %andand4
  %21 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 3 ; [#uses = 1, type = i8*]
  %22 = load i8, i8* %21, align 1                 ; [#uses = 1]
  %23 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 3 ; [#uses = 1, type = i8*]
  %24 = load i8, i8* %23, align 1                 ; [#uses = 1]
  %25 = icmp eq i8 %22, %24                       ; [#uses = 1]
  br i1 %25, label %andand10, label %andandend17

andand10:                                         ; preds = %andand7
  %26 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 4 ; [#uses = 1, type = i8*]
  %27 = load i8, i8* %26, align 1, !range !20     ; [#uses = 1]
  %28 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 4 ; [#uses = 1, type = i8*]
  %29 = load i8, i8* %28, align 1, !range !20     ; [#uses = 1]
  %30 = icmp eq i8 %27, %29                       ; [#uses = 1]
  br i1 %30, label %andand13, label %andandend17

andand13:                                         ; preds = %andand10
  %31 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 5 ; [#uses = 1, type = i8*]
  %32 = load i8, i8* %31, align 1, !range !20     ; [#uses = 1]
  %33 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 5 ; [#uses = 1, type = i8*]
  %34 = load i8, i8* %33, align 1, !range !20     ; [#uses = 1]
  %35 = icmp eq i8 %32, %34                       ; [#uses = 1]
  br i1 %35, label %andand16, label %andandend17

andand16:                                         ; preds = %andand13
  %36 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %37 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %38 = load i64, i64* %36, align 8               ; [#uses = 1]
  %39 = load i64, i64* %37, align 8               ; [#uses = 1]
  %40 = icmp eq i64 %38, %39                      ; [#uses = 1]
  br label %andandend17

andandend17:                                      ; preds = %0, %andand, %andand1, %andand4, %andand7, %andand10, %andand16, %andand13
  %andandval18 = phi i1 [ false, %andand13 ], [ %40, %andand16 ], [ false, %andand10 ], [ false, %andand7 ], [ false, %andand4 ], [ false, %andand1 ], [ false, %andand ], [ false, %0 ] ; [#uses = 1, type = i1]
  ret i1 %andandval18
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCk9__xtoHashFNbNeKxSQFtQFs__TQFmTQFdVQDqi0ZQGaQCmQEiZm(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* dereferenceable(72) %p) local_unnamed_addr #2 {
unrolledstmt:
  %0 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D53TypeInfo_xS3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl" = getelementptr inbounds [19 x i8*], [19 x i8*]* %0, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %1 = bitcast i8** %"getHash@vtbl" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %2 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %1, align 8 ; [#uses = 1]
  %3 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p to i8* ; [#uses = 1]
  %4 = tail call i64 %2(%object.TypeInfo_Const* nonnull @_D53TypeInfo_xS3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i8* nonnull %3) ; [#uses = 1]
  %5 = mul i64 %4, 33                             ; [#uses = 1]
  %6 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D11TypeInfo_xm6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl2" = getelementptr inbounds [19 x i8*], [19 x i8*]* %6, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %7 = bitcast i8** %"getHash@vtbl2" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %8 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %7, align 8 ; [#uses = 1]
  %9 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %10 = bitcast i64* %9 to i8*                    ; [#uses = 1]
  %11 = tail call i64 %8(%object.TypeInfo_Const* nonnull @_D11TypeInfo_xm6__initZ, i8* nonnull %10) ; [#uses = 1]
  %12 = add i64 %11, %5                           ; [#uses = 1]
  ret i64 %12
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4moveMFNaNbNiKQEjZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %source) local_unnamed_addr #2 {
  %1 = tail call dereferenceable_or_null(72) i8* @calloc(i64 1, i64 72) #1 ; [#uses = 3]
  %.not.i.i = icmp eq i8* %1, null                ; [#uses = 1]
  br i1 %.not.i.i, label %if.i.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit

if.i.i:                                           ; preds = %0
  tail call void @onOutOfMemoryError(i8* null) #1
  br label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit: ; preds = %0, %if.i.i
  %2 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg to i8** ; [#uses = 1]
  store i8* %1, i8** %2, align 8
  tail call void @gc_addRange(i8* %1, i64 64, %object.TypeInfo* null) #1
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 2, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %4 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 2]
  %5 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTaTaZQCoQByKxQBdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source) #1 ; [#uses = 1]
  br i1 %5, label %assertFailed.i.i, label %assertPassed.i.i

assertPassed.i.i:                                 ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit
  %6 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %4, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %.not.i.i1 = icmp eq %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %6, %source ; [#uses = 1]
  br i1 %.not.i.i1, label %assertFailed4.i.i, label %_D3std9algorithm8mutation__T11moveEmplaceTSQBp5stdio4File__T10ByLineImplTaTaZQr4ImplZQCfFNaNbNiKQCcKQCgZv.exit

assertFailed4.i.i:                                ; preds = %assertPassed.i.i
  tail call void @_d_assert_msg({ i64, i8* } { i64 39, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.19, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1436) #4
  unreachable

assertFailed.i.i:                                 ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 72, i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.17, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1429) #4
  unreachable

_D3std9algorithm8mutation__T11moveEmplaceTSQBp5stdio4File__T10ByLineImplTaTaZQr4ImplZQCfFNaNbNiKQCcKQCgZv.exit: ; preds = %assertPassed.i.i
  %7 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %4 to i8* ; [#uses = 1]
  %8 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source to i8* ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %7, i8* nonnull align 1 dereferenceable(64) %8, i64 64, i1 false) #1
  %9 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Struct, %object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"initializer@vtbl.i.i" = getelementptr inbounds [19 x i8*], [19 x i8*]* %9, i64 0, i64 11 ; [#uses = 1, type = i8**]
  %10 = bitcast i8** %"initializer@vtbl.i.i" to { i64, i8* } (%object.TypeInfo_Struct*)** ; [#uses = 1]
  %11 = load { i64, i8* } (%object.TypeInfo_Struct*)*, { i64, i8* } (%object.TypeInfo_Struct*)** %10, align 8 ; [#uses = 1]
  %12 = tail call { i64, i8* } %11(%object.TypeInfo_Struct* nonnull @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ) ; [#uses = 1]
  %.ptr8.i.i = extractvalue { i64, i8* } %12, 1   ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %8, i8* nonnull align 1 dereferenceable(64) %.ptr8.i.i, i64 64, i1 false) #1
  %13 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 1]
  %14 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %13, i64 0, i32 1 ; [#uses = 1, type = i64*]
  store i64 1, i64* %14, align 8
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = tail call dereferenceable_or_null(72) i8* @calloc(i64 1, i64 72) #1 ; [#uses = 3]
  %.not.i = icmp eq i8* %1, null                  ; [#uses = 1]
  br i1 %.not.i, label %if.i, label %_D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv.exit

if.i:                                             ; preds = %0
  tail call void @onOutOfMemoryError(i8* null) #1
  br label %_D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv.exit

_D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv.exit: ; preds = %0, %if.i
  %2 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg to i8** ; [#uses = 1]
  store i8* %1, i8** %2, align 8
  tail call void @gc_addRange(i8* %1, i64 64, %object.TypeInfo* null) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T11moveEmplaceTSQBp5stdio4File__T10ByLineImplTaTaZQr4ImplZQCfFNaNbNiKQCcKQCgZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %source) local_unnamed_addr #2 {
  %1 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTaTaZQCoQByKxQBdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source) #1 ; [#uses = 1]
  br i1 %1, label %assertFailed.i, label %assertPassed.i

assertPassed.i:                                   ; preds = %0
  %.not.i = icmp eq %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, %target ; [#uses = 1]
  br i1 %.not.i, label %assertFailed4.i, label %_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit

assertFailed4.i:                                  ; preds = %assertPassed.i
  tail call void @_d_assert_msg({ i64, i8* } { i64 39, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.19, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1436) #4
  unreachable

assertFailed.i:                                   ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 72, i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.17, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1429) #4
  unreachable

_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit: ; preds = %assertPassed.i
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 1]
  %3 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source to i8* ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %2, i8* nonnull align 1 dereferenceable(64) %3, i64 64, i1 false) #1
  %4 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Struct, %object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"initializer@vtbl.i" = getelementptr inbounds [19 x i8*], [19 x i8*]* %4, i64 0, i64 11 ; [#uses = 1, type = i8**]
  %5 = bitcast i8** %"initializer@vtbl.i" to { i64, i8* } (%object.TypeInfo_Struct*)** ; [#uses = 1]
  %6 = load { i64, i8* } (%object.TypeInfo_Struct*)*, { i64, i8* } (%object.TypeInfo_Struct*)** %5, align 8 ; [#uses = 1]
  %7 = tail call { i64, i8* } %6(%object.TypeInfo_Struct* nonnull @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ) ; [#uses = 1]
  %.ptr8.i = extractvalue { i64, i8* } %7, 1      ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %3, i8* nonnull align 1 dereferenceable(64) %.ptr8.i, i64 64, i1 false) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i8* @_D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv(i64 %size_arg, i64 %nmemb_arg) local_unnamed_addr #2 {
  %1 = tail call i8* @calloc(i64 %nmemb_arg, i64 %size_arg) #1 ; [#uses = 2]
  %.not = icmp eq i8* %1, null                    ; [#uses = 1]
  br i1 %.not, label %if, label %endif

if:                                               ; preds = %0
  tail call void @onOutOfMemoryError(i8* null) #1
  br label %endif

endif:                                            ; preds = %if, %0
  ret i8* %1
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore15deallocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg to i8** ; [#uses = 2]
  %3 = load i8*, i8** %2, align 8                 ; [#uses = 1]
  tail call void @gc_removeRange(i8* %3) #1
  %4 = load i8*, i8** %2, align 8                 ; [#uses = 1]
  tail call void @free(i8* %4) #1
  store %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13isInitializedMxFNaNbNdNiNfZb(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 1]
  %3 = icmp ne %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  ret i1 %3
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore8refCountMxFNaNbNdNiNfZm(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not, label %condend, label %condtrue

condtrue:                                         ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %condtmp.0.sroa.speculate.load.condtrue = load i64, i64* %3, align 8 ; [#uses = 1]
  br label %condend

condend:                                          ; preds = %0, %condtrue
  %condtmp.0.sroa.speculated = phi i64 [ %condtmp.0.sroa.speculate.load.condtrue, %condtrue ], [ 0, %0 ] ; [#uses = 1, type = i64]
  ret i64 %condtmp.0.sroa.speculated
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15refCountedStoreMNgFNaNbNcNdNiNfZNgSQFsQFr__TQFlTQFcVQDpi0ZQFz15RefCountedStore(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"*]
  ret %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__ctorMFNcQDpZSQExQEw__TQEqTQEhVQCui0ZQFe(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull returned %.this_arg, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* noalias nocapture align 8 %val) local_unnamed_addr #2 {
finally:
  %0 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"*]
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4moveMFNaNbNiKQEjZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %0, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %val) #2
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %val, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %1) #1
  ret %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D6object__T7destroyVbi1TS3std5stdio4File__T10ByLineImplTaTaZQr4ImplZQCfFNfKQBzZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %obj) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %obj, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %1) #1
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %obj to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %2, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo8opAssignMFSQEtQEs__TQEmTQEdVQCqi0ZQFaZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* noalias nocapture align 8 %rhs) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %rhs, i64 0, i32 0, i32 0 ; [#uses = 2, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg to i8** ; [#uses = 1]
  %3 = load i8*, i8** %2, align 8                 ; [#uses = 7]
  %4 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg to i8* ; [#uses = 2]
  %5 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 1, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %6 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %5 to i8* ; [#uses = 2]
  %.not.i.i = icmp uge i8* %3, %4                 ; [#uses = 1]
  %7 = icmp ult i8* %3, %6                        ; [#uses = 1]
  %andandval.i.i = and i1 %.not.i.i, %7           ; [#uses = 1]
  br i1 %andandval.i.i, label %assertFailed.i, label %assertPassed.i

assertPassed.i:                                   ; preds = %0
  %8 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %rhs to i8** ; [#uses = 3]
  %9 = load i8*, i8** %8, align 8                 ; [#uses = 5]
  %10 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %rhs to i8* ; [#uses = 2]
  %11 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %rhs, i64 1, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %12 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %11 to i8* ; [#uses = 2]
  %.not.i11.i = icmp uge i8* %9, %10              ; [#uses = 1]
  %13 = icmp ult i8* %9, %12                      ; [#uses = 1]
  %andandval.i12.i = and i1 %.not.i11.i, %13      ; [#uses = 1]
  br i1 %andandval.i12.i, label %assertFailed2.i, label %assertPassed1.i

assertPassed1.i:                                  ; preds = %assertPassed.i
  %.not.i9.i = icmp uge i8* %3, %10               ; [#uses = 1]
  %14 = icmp ult i8* %3, %12                      ; [#uses = 1]
  %andandval.i10.i = and i1 %.not.i9.i, %14       ; [#uses = 1]
  br i1 %andandval.i10.i, label %assertFailed4.i, label %assertPassed3.i

assertPassed3.i:                                  ; preds = %assertPassed1.i
  %.not.i7.i = icmp uge i8* %9, %4                ; [#uses = 1]
  %15 = icmp ult i8* %9, %6                       ; [#uses = 1]
  %andandval.i8.i = and i1 %.not.i7.i, %15        ; [#uses = 1]
  br i1 %andandval.i8.i, label %assertFailed6.i, label %_D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl5stdio4File__T10ByLineImplTaTaZQr4ImplVEQEcQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCkZQFjFNaNbNiNeKQFqKQFuZv.exit

assertFailed6.i:                                  ; preds = %assertPassed3.i
  tail call void @_d_assert_msg({ i64, i8* } { i64 24, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.23, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 2831) #4
  unreachable

assertFailed4.i:                                  ; preds = %assertPassed1.i
  tail call void @_d_assert_msg({ i64, i8* } { i64 24, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.22, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 2830) #4
  unreachable

assertFailed2.i:                                  ; preds = %assertPassed.i
  tail call void @_d_assert_msg({ i64, i8* } { i64 27, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.21, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 2829) #4
  unreachable

assertFailed.i:                                   ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 27, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.20, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 2828) #4
  unreachable

_D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl5stdio4File__T10ByLineImplTaTaZQr4ImplVEQEcQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCkZQFjFNaNbNiNeKQFqKQFuZv.exit: ; preds = %assertPassed3.i
  %16 = ptrtoint i8* %9 to i64                    ; [#uses = 1]
  %17 = ptrtoint i8* %3 to i64                    ; [#uses = 1]
  %18 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg to i64* ; [#uses = 1]
  %19 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %rhs to i64* ; [#uses = 1]
  store i64 %16, i64* %18, align 8
  store i64 %17, i64* %19, align 8
  %.not5.i = icmp eq i8* %3, null                 ; [#uses = 1]
  br i1 %.not5.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv.exit, label %endif.i

endif.i:                                          ; preds = %_D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl5stdio4File__T10ByLineImplTaTaZQr4ImplVEQEcQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCkZQFjFNaNbNiNeKQFqKQFuZv.exit
  %20 = getelementptr inbounds i8, i8* %3, i64 64 ; [#uses = 1, type = i8*]
  %21 = bitcast i8* %20 to i64*                   ; [#uses = 2]
  %22 = load i64, i64* %21, align 8               ; [#uses = 2]
  %.not.i = icmp eq i64 %22, 0                    ; [#uses = 1]
  br i1 %.not.i, label %assertFailed.i2, label %assertPassed.i1

assertPassed.i1:                                  ; preds = %endif.i
  %23 = add i64 %22, -1                           ; [#uses = 2]
  store i64 %23, i64* %21, align 8
  %.not4.i = icmp eq i64 %23, 0                   ; [#uses = 1]
  br i1 %.not4.i, label %endif2.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv.exit

endif2.i:                                         ; preds = %assertPassed.i1
  %24 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %25 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %24, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %25) #1
  %26 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %24 to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %26, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false) #1
  %27 = load i8*, i8** %8, align 8                ; [#uses = 1]
  tail call void @gc_removeRange(i8* %27) #1
  %28 = load i8*, i8** %8, align 8                ; [#uses = 1]
  tail call void @free(i8* %28) #1
  store %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8
  br label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv.exit

assertFailed.i2:                                  ; preds = %endif.i
  tail call void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6570) #4
  unreachable

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv.exit: ; preds = %_D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl5stdio4File__T10ByLineImplTaTaZQr4ImplVEQEcQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCkZQFjFNaNbNiNeKQFqKQFuZv.exit, %assertPassed.i1, %endif2.i
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl5stdio4File__T10ByLineImplTaTaZQr4ImplVEQEcQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCkZQFjFNaNbNiNeKQFqKQFuZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %rhs, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %lhs) local_unnamed_addr #2 {
  %1 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %lhs to i8** ; [#uses = 1]
  %2 = load i8*, i8** %1, align 8                 ; [#uses = 5]
  %3 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %lhs to i8* ; [#uses = 2]
  %4 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %lhs, i64 1 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %5 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %4 to i8* ; [#uses = 2]
  %.not.i = icmp uge i8* %2, %3                   ; [#uses = 1]
  %6 = icmp ult i8* %2, %5                        ; [#uses = 1]
  %andandval.i = and i1 %.not.i, %6               ; [#uses = 1]
  br i1 %andandval.i, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  %7 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %rhs to i8** ; [#uses = 1]
  %8 = load i8*, i8** %7, align 8                 ; [#uses = 5]
  %9 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %rhs to i8* ; [#uses = 2]
  %10 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %rhs, i64 1 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %11 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %10 to i8* ; [#uses = 2]
  %.not.i11 = icmp uge i8* %8, %9                 ; [#uses = 1]
  %12 = icmp ult i8* %8, %11                      ; [#uses = 1]
  %andandval.i12 = and i1 %.not.i11, %12          ; [#uses = 1]
  br i1 %andandval.i12, label %assertFailed2, label %assertPassed1

assertPassed1:                                    ; preds = %assertPassed
  %.not.i9 = icmp uge i8* %2, %9                  ; [#uses = 1]
  %13 = icmp ult i8* %2, %11                      ; [#uses = 1]
  %andandval.i10 = and i1 %.not.i9, %13           ; [#uses = 1]
  br i1 %andandval.i10, label %assertFailed4, label %assertPassed3

assertPassed3:                                    ; preds = %assertPassed1
  %.not.i7 = icmp uge i8* %8, %3                  ; [#uses = 1]
  %14 = icmp ult i8* %8, %5                       ; [#uses = 1]
  %andandval.i8 = and i1 %.not.i7, %14            ; [#uses = 1]
  br i1 %andandval.i8, label %assertFailed6, label %assertPassed5

assertPassed5:                                    ; preds = %assertPassed3
  %15 = ptrtoint i8* %8 to i64                    ; [#uses = 1]
  %16 = ptrtoint i8* %2 to i64                    ; [#uses = 1]
  %17 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %lhs to i64* ; [#uses = 1]
  %18 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %rhs to i64* ; [#uses = 1]
  store i64 %15, i64* %17, align 8
  store i64 %16, i64* %18, align 8
  ret void

assertFailed6:                                    ; preds = %assertPassed3
  tail call void @_d_assert_msg({ i64, i8* } { i64 24, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.23, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 2831) #4
  unreachable

assertFailed4:                                    ; preds = %assertPassed1
  tail call void @_d_assert_msg({ i64, i8* } { i64 24, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.22, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 2830) #4
  unreachable

assertFailed2:                                    ; preds = %assertPassed
  tail call void @_d_assert_msg({ i64, i8* } { i64 27, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.21, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 2829) #4
  unreachable

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 27, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.20, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 2828) #4
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo8opAssignMFNfQDrZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* noalias nocapture align 8 %rhs) local_unnamed_addr #2 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 4]
  %.not = icmp eq %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %4 = icmp eq %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %3, %rhs ; [#uses = 1]
  br i1 %4, label %try.success, label %endif.i.i

endif.i.i:                                        ; preds = %assertPassed
  %5 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  invoke void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %5) #1
          to label %.noexc unwind label %eh.resume

.noexc:                                           ; preds = %endif.i.i
  %6 = invoke zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTaTaZQCoQByKxQBdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %rhs, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %rhs) #1
          to label %.noexc2 unwind label %eh.resume ; [#uses = 1]

.noexc2:                                          ; preds = %.noexc
  br i1 %6, label %assertFailed.i.i.i, label %_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit.i.i

assertFailed.i.i.i:                               ; preds = %.noexc2
  invoke void @_d_assert_msg({ i64, i8* } { i64 72, i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.17, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1429) #4
          to label %.noexc3 unwind label %eh.resume

.noexc3:                                          ; preds = %assertFailed.i.i.i
  unreachable

_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit.i.i: ; preds = %.noexc2
  %7 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2 to i8* ; [#uses = 1]
  %8 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %rhs to i8* ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %7, i8* nonnull align 8 dereferenceable(64) %8, i64 64, i1 false) #1
  %9 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Struct, %object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"initializer@vtbl.i.i.i" = getelementptr inbounds [19 x i8*], [19 x i8*]* %9, i64 0, i64 11 ; [#uses = 1, type = i8**]
  %10 = bitcast i8** %"initializer@vtbl.i.i.i" to { i64, i8* } (%object.TypeInfo_Struct*)** ; [#uses = 1]
  %11 = load { i64, i8* } (%object.TypeInfo_Struct*)*, { i64, i8* } (%object.TypeInfo_Struct*)** %10, align 8 ; [#uses = 1]
  %12 = invoke { i64, i8* } %11(%object.TypeInfo_Struct* nonnull @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ)
          to label %.noexc4 unwind label %eh.resume ; [#uses = 1]

.noexc4:                                          ; preds = %_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit.i.i
  %.ptr8.i.i.i = extractvalue { i64, i8* } %12, 1 ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(64) %8, i8* nonnull align 1 dereferenceable(64) %.ptr8.i.i.i, i64 64, i1 false) #1
  br label %try.success

assertFailed:                                     ; preds = %0
  invoke void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i32 0, i32 0) }, i32 6599) #4
          to label %postinvoke unwind label %eh.resume

postinvoke:                                       ; preds = %assertFailed
  unreachable

try.success:                                      ; preds = %assertPassed, %.noexc4
  %13 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %rhs, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %13) #1
  ret void

eh.resume:                                        ; preds = %_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit.i.i, %assertFailed.i.i.i, %.noexc, %endif.i.i, %assertFailed
  %14 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %15 = extractvalue { i8*, i32 } %14, 0          ; [#uses = 1]
  %16 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %rhs, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %16) #1
  tail call void @_Unwind_Resume(i8* %15)
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T4moveTSQBh5stdio4File__T10ByLineImplTaTaZQr4ImplZQBxFNfKQByKQCcZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %source) local_unnamed_addr #2 {
  %1 = icmp eq %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, %target ; [#uses = 1]
  br i1 %1, label %_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T10ByLineImplTaTaZQr4ImplZQCbFNfMKQBzMNkKQCgZv.exit, label %endif.i

endif.i:                                          ; preds = %0
  %2 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %2) #1
  %3 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTaTaZQCoQByKxQBdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source) #1 ; [#uses = 1]
  br i1 %3, label %assertFailed.i.i, label %_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit.i

assertFailed.i.i:                                 ; preds = %endif.i
  tail call void @_d_assert_msg({ i64, i8* } { i64 72, i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.17, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1429) #4
  unreachable

_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit.i: ; preds = %endif.i
  %4 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 1]
  %5 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source to i8* ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %4, i8* nonnull align 1 dereferenceable(64) %5, i64 64, i1 false) #1
  %6 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Struct, %object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"initializer@vtbl.i.i" = getelementptr inbounds [19 x i8*], [19 x i8*]* %6, i64 0, i64 11 ; [#uses = 1, type = i8**]
  %7 = bitcast i8** %"initializer@vtbl.i.i" to { i64, i8* } (%object.TypeInfo_Struct*)** ; [#uses = 1]
  %8 = load { i64, i8* } (%object.TypeInfo_Struct*)*, { i64, i8* } (%object.TypeInfo_Struct*)** %7, align 8 ; [#uses = 1]
  %9 = tail call { i64, i8* } %8(%object.TypeInfo_Struct* nonnull @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ) ; [#uses = 1]
  %.ptr8.i.i = extractvalue { i64, i8* } %9, 1    ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %5, i8* nonnull align 1 dereferenceable(64) %.ptr8.i.i, i64 64, i1 false) #1
  br label %_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T10ByLineImplTaTaZQr4ImplZQCbFNfMKQBzMNkKQCgZv.exit

_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T10ByLineImplTaTaZQr4ImplZQCbFNfMKQBzMNkKQCgZv.exit: ; preds = %0, %_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit.i
  ret void
}

; [#uses = 24]
; Function Attrs: cold noreturn uwtable
declare void @_d_assert_msg({ i64, i8* }, { i64, i8* }, i32) local_unnamed_addr #4

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D4core8internal11destruction__T15destructRecurseTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplZQCkFNfKQBzZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %s) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %s, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %1) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D4core8internal8lifetime__T18emplaceInitializerTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplZQCnFNaNbNiNeMKQCgZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %chunk) local_unnamed_addr #2 {
  %1 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %chunk to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %1, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false) #1
  ret void
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore__T10initializeTSQFpQElQEiTEQGaQFz__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQDeMFKQCxKQCqKaZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg, i8* dereferenceable(1) %_param_2, i8* dereferenceable(1) %_param_1, %std.stdio.File* dereferenceable(24) %_param_0) local_unnamed_addr #2 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %1 = tail call dereferenceable_or_null(72) i8* @calloc(i64 1, i64 72) #1 ; [#uses = 3]
  %.not.i.i = icmp eq i8* %1, null                ; [#uses = 1]
  br i1 %.not.i.i, label %if.i.i, label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit

if.i.i:                                           ; preds = %0
  tail call void @onOutOfMemoryError(i8* null) #1
  br label %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit

_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit: ; preds = %0, %if.i.i
  %2 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg to i8** ; [#uses = 1]
  store i8* %1, i8** %2, align 8
  tail call void @gc_addRange(i8* %1, i64 64, %object.TypeInfo* null) #1
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 2, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %4 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 2]
  %5 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %4 to %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* ; [#uses = 1]
  %6 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %4 to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %6, i8* nonnull align 8 dereferenceable(64) bitcast (%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ to i8*), i64 64, i1 false) #1
  %7 = invoke %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S__T6__ctorZQiMFNcNfKQEmKQEfKaZSQIgQIeQHy__TQHsTQHjTQHnTQFvTQFoTaZQIoFKQIgKQGoKQGhKaZQDi(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* nonnull returned %5, i8* nonnull dereferenceable(1) %_param_2, i8* nonnull dereferenceable(1) %_param_1, %std.stdio.File* nonnull dereferenceable(24) %_param_0) #1
          to label %postinvoke unwind label %landingPad ; [#uses = 0]

postinvoke:                                       ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit
  %8 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3, align 8 ; [#uses = 1]
  %9 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %8, i64 0, i32 1 ; [#uses = 1, type = i64*]
  store i64 1, i64* %9, align 8
  ret void

catch.object.Throwable:                           ; preds = %landingPad
  %10 = tail call %object.Throwable* @_d_eh_enter_catch(i8* %12) ; [#uses = 1]
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore15deallocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) #2
  tail call void @_d_throw_exception(%object.Throwable* %10) #4
  unreachable

landingPad:                                       ; preds = %_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv.exit
  %11 = landingpad { i8*, i32 }
          catch %object.TypeInfo_Class* @_D6object9Throwable7__ClassZ ; [#uses = 2]
  %12 = extractvalue { i8*, i32 } %11, 0          ; [#uses = 2]
  %13 = extractvalue { i8*, i32 } %11, 1          ; [#uses = 1]
  %14 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (%object.TypeInfo_Class* @_D6object9Throwable7__ClassZ to i8*)) ; [#uses = 1]
  %15 = icmp eq i32 %13, %14                      ; [#uses = 1]
  br i1 %15, label %catch.object.Throwable, label %eh.resume

eh.resume:                                        ; preds = %landingPad
  tail call void @_Unwind_Resume(i8* %12)
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D4core8lifetime__T7emplaceTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTSQBsQBrQBoTEQCd8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQEyFNfPQEwKQDiKQDbKaZQp(i8* dereferenceable(1) %_param_3, i8* dereferenceable(1) %_param_2, %std.stdio.File* dereferenceable(24) %_param_1, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %chunk_arg) local_unnamed_addr #2 {
  %1 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %chunk_arg to %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* ; [#uses = 1]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %chunk_arg to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %2, i8* nonnull align 8 dereferenceable(64) bitcast (%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ to i8*), i64 64, i1 false) #1
  %3 = tail call %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S__T6__ctorZQiMFNcNfKQEmKQEfKaZSQIgQIeQHy__TQHsTQHjTQHnTQFvTQFoTaZQIoFKQIgKQGoKQGhKaZQDi(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* nonnull returned %1, i8* nonnull dereferenceable(1) %_param_3, i8* nonnull dereferenceable(1) %_param_2, %std.stdio.File* nonnull dereferenceable(24) %_param_1) #1 ; [#uses = 0]
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %chunk_arg
}

; [#uses = 4]
; Function Attrs: nofree nounwind
declare noalias i8* @calloc(i64, i64) local_unnamed_addr #11

; [#uses = 4]
declare void @onOutOfMemoryError(i8*) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFNfKQFaKQDiKQDbKaZv(i8* dereferenceable(1) %_param_3, i8* dereferenceable(1) %_param_2, %std.stdio.File* dereferenceable(24) %_param_1, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %chunk) local_unnamed_addr #2 {
  %1 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %chunk to %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* ; [#uses = 1]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %chunk to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %2, i8* nonnull align 8 dereferenceable(64) bitcast (%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ to i8*), i64 64, i1 false) #1
  %3 = tail call %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S__T6__ctorZQiMFNcNfKQEmKQEfKaZSQIgQIeQHy__TQHsTQHjTQHnTQFvTQFoTaZQIoFKQIgKQGoKQGhKaZQDi(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* nonnull returned %1, i8* nonnull dereferenceable(1) %_param_3, i8* nonnull dereferenceable(1) %_param_2, %std.stdio.File* nonnull dereferenceable(24) %_param_1) #1 ; [#uses = 0]
  ret void
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S11__fieldDtorMFNeZv(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %1) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S15__fieldPostblitMFNbNlNeZv(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* nonnull %.this_arg) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %1) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S8opAssignMFNcNjNeSQHtQHrQHl__TQHfTQGwTQHaTQFiTQFbTaZQIbFKQHtKQGbKQFuKaZQCvZQCg(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* nonnull %.this_arg, %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* noalias nocapture align 8 %p) local_unnamed_addr #2 {
  %__swap49 = alloca %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", align 8 ; [#uses = 2, size/byte = 64]
  %1 = bitcast %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %__swap49 to i8* ; [#uses = 1]
  %2 = bitcast %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg to i8* ; [#uses = 2]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(64) %1, i8* nonnull align 1 dereferenceable(64) %2, i64 64, i1 false)
  %3 = bitcast %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %2, i8* nonnull align 8 dereferenceable(64) %3, i64 64, i1 false)
  %4 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %__swap49, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %4) #1
  ret %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S11__xopEqualsFKxSQHsQHqQHk__TQHeTQGvTQGzTQFhTQFaTaZQIaFKQHsKQGaKQFtKaZQCuKxQChZb(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* dereferenceable(64) %q, %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* dereferenceable(64) %p) local_unnamed_addr #2 {
  %1 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %2 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %3 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %1, align 8 ; [#uses = 1]
  %4 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %2, align 8 ; [#uses = 1]
  %5 = icmp eq %std.stdio.File.Impl* %3, %4       ; [#uses = 1]
  br i1 %5, label %andand, label %andandend14

andand:                                           ; preds = %0
  %.elt = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack = load i64, i64* %.elt, align 8        ; [#uses = 1]
  %6 = insertvalue { i64, i8* } undef, i64 %.unpack, 0 ; [#uses = 1]
  %.elt26 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack27 = load i8*, i8** %.elt26, align 8    ; [#uses = 1]
  %7 = insertvalue { i64, i8* } %6, i8* %.unpack27, 1 ; [#uses = 1]
  %.elt28 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack29 = load i64, i64* %.elt28, align 8    ; [#uses = 1]
  %8 = insertvalue { i64, i8* } undef, i64 %.unpack29, 0 ; [#uses = 1]
  %.elt30 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack31 = load i8*, i8** %.elt30, align 8    ; [#uses = 1]
  %9 = insertvalue { i64, i8* } %8, i8* %.unpack31, 1 ; [#uses = 1]
  %10 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %9, { i64, i8* } %7) #1 ; [#uses = 1]
  br i1 %10, label %andand1, label %andandend14

andand1:                                          ; preds = %andand
  %.elt32 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack33 = load i64, i64* %.elt32, align 8    ; [#uses = 1]
  %11 = insertvalue { i64, i8* } undef, i64 %.unpack33, 0 ; [#uses = 1]
  %.elt34 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack35 = load i8*, i8** %.elt34, align 8    ; [#uses = 1]
  %12 = insertvalue { i64, i8* } %11, i8* %.unpack35, 1 ; [#uses = 1]
  %.elt36 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack37 = load i64, i64* %.elt36, align 8    ; [#uses = 1]
  %13 = insertvalue { i64, i8* } undef, i64 %.unpack37, 0 ; [#uses = 1]
  %.elt38 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack39 = load i8*, i8** %.elt38, align 8    ; [#uses = 1]
  %14 = insertvalue { i64, i8* } %13, i8* %.unpack39, 1 ; [#uses = 1]
  %15 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %14, { i64, i8* } %12) #1 ; [#uses = 1]
  br i1 %15, label %andand4, label %andandend14

andand4:                                          ; preds = %andand1
  %.elt40 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack41 = load i64, i64* %.elt40, align 8    ; [#uses = 1]
  %16 = insertvalue { i64, i8* } undef, i64 %.unpack41, 0 ; [#uses = 1]
  %.elt42 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack43 = load i8*, i8** %.elt42, align 8    ; [#uses = 1]
  %17 = insertvalue { i64, i8* } %16, i8* %.unpack43, 1 ; [#uses = 1]
  %.elt44 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack45 = load i64, i64* %.elt44, align 8    ; [#uses = 1]
  %18 = insertvalue { i64, i8* } undef, i64 %.unpack45, 0 ; [#uses = 1]
  %.elt46 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack47 = load i8*, i8** %.elt46, align 8    ; [#uses = 1]
  %19 = insertvalue { i64, i8* } %18, i8* %.unpack47, 1 ; [#uses = 1]
  %20 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %19, { i64, i8* } %17) #1 ; [#uses = 1]
  br i1 %20, label %andand7, label %andandend14

andand7:                                          ; preds = %andand4
  %21 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 3 ; [#uses = 1, type = i8*]
  %22 = load i8, i8* %21, align 1                 ; [#uses = 1]
  %23 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 3 ; [#uses = 1, type = i8*]
  %24 = load i8, i8* %23, align 1                 ; [#uses = 1]
  %25 = icmp eq i8 %22, %24                       ; [#uses = 1]
  br i1 %25, label %andand10, label %andandend14

andand10:                                         ; preds = %andand7
  %26 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 4 ; [#uses = 1, type = i8*]
  %27 = load i8, i8* %26, align 1, !range !20     ; [#uses = 1]
  %28 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 4 ; [#uses = 1, type = i8*]
  %29 = load i8, i8* %28, align 1, !range !20     ; [#uses = 1]
  %30 = icmp eq i8 %27, %29                       ; [#uses = 1]
  br i1 %30, label %andand13, label %andandend14

andand13:                                         ; preds = %andand10
  %31 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 5 ; [#uses = 1, type = i8*]
  %32 = load i8, i8* %31, align 1, !range !20     ; [#uses = 1]
  %33 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 5 ; [#uses = 1, type = i8*]
  %34 = load i8, i8* %33, align 1, !range !20     ; [#uses = 1]
  %35 = icmp eq i8 %32, %34                       ; [#uses = 1]
  br label %andandend14

andandend14:                                      ; preds = %0, %andand, %andand1, %andand4, %andand7, %andand13, %andand10
  %andandval15 = phi i1 [ false, %andand10 ], [ %35, %andand13 ], [ false, %andand7 ], [ false, %andand4 ], [ false, %andand1 ], [ false, %andand ], [ false, %0 ] ; [#uses = 1, type = i1]
  ret i1 %andandval15
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S9__xtoHashFNbNeKxSQHtQHrQHl__TQHfTQGwTQHaTQFiTQFbTaZQIbFKQHtKQGbKQFuKaZQCvZm(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* dereferenceable(64) %p) local_unnamed_addr #2 {
unrolledstmt:
  %0 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D53TypeInfo_xS3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl" = getelementptr inbounds [19 x i8*], [19 x i8*]* %0, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %1 = bitcast i8** %"getHash@vtbl" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %2 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %1, align 8 ; [#uses = 1]
  %3 = bitcast %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %p to i8* ; [#uses = 1]
  %4 = tail call i64 %2(%object.TypeInfo_Const* nonnull @_D53TypeInfo_xS3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i8* nonnull %3) ; [#uses = 1]
  ret i64 %4
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1SZQHkFNaNbNiNeMKQHdZv(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* dereferenceable(64) %chunk) local_unnamed_addr #2 {
  %1 = bitcast %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %chunk to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %1, i8* nonnull align 8 dereferenceable(64) bitcast (%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ to i8*), i64 64, i1 false) #1
  ret void
}

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S__T6__ctorZQiMFNcNfKQEmKQEfKaZSQIgQIeQHy__TQHsTQHjTQHnTQFvTQFoTaZQIoFKQIgKQGoKQGhKaZQDi(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* nonnull returned %.this_arg, i8* dereferenceable(1) %_param_2, i8* dereferenceable(1) %_param_1, %std.stdio.File* dereferenceable(24) %_param_0) local_unnamed_addr #2 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %__copytmp56 = alloca %std.stdio.File, align 8  ; [#uses = 3, size/byte = 24]
  %1 = bitcast %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg to i8* ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %1, i8* nonnull align 8 dereferenceable(64) bitcast (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false)
  %2 = bitcast %std.stdio.File* %__copytmp56 to i8* ; [#uses = 2]
  %3 = bitcast %std.stdio.File* %_param_0 to i8*  ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(24) %2, i8* nonnull align 1 dereferenceable(24) %3, i64 24, i1 false)
  call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %__copytmp56) #1
  %4 = load i8, i8* %_param_1, align 1, !range !20 ; [#uses = 1]
  %5 = load i8, i8* %_param_2, align 1            ; [#uses = 1]
  %6 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(24) %1, i8* nonnull align 8 dereferenceable(24) %2, i64 24, i1 false)
  invoke void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %6) #1
          to label %.noexc unwind label %landingPad

.noexc:                                           ; preds = %0
  %7 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg, i64 0, i32 0, i32 3 ; [#uses = 1, type = i8*]
  store i8 %5, i8* %7, align 1, !noalias !21
  %8 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg, i64 0, i32 0, i32 4 ; [#uses = 1, type = i8*]
  store i8 %4, i8* %8, align 1, !noalias !21
  invoke void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__copytmp56) #1
          to label %try.success.or.caught unwind label %landingPad

catch.object.Exception:                           ; preds = %landingPad
  %9 = call %object.Throwable* @_d_eh_enter_catch(i8* %11) ; [#uses = 1]
  call void @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T10ByLineImplTaTaZQr4ImplTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S11__fieldDtorMFNeZv(%"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* nonnull %.this_arg) #2
  call void @_d_throw_exception(%object.Throwable* %9) #4
  unreachable

try.success.or.caught:                            ; preds = %.noexc
  ret %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_arg

landingPad:                                       ; preds = %.noexc, %0
  %10 = landingpad { i8*, i32 }
          catch %object.TypeInfo_Class* @_D9Exception7__ClassZ ; [#uses = 2]
  %11 = extractvalue { i8*, i32 } %10, 0          ; [#uses = 2]
  %12 = extractvalue { i8*, i32 } %10, 1          ; [#uses = 1]
  %13 = call i32 @llvm.eh.typeid.for(i8* bitcast (%object.TypeInfo_Class* @_D9Exception7__ClassZ to i8*)) ; [#uses = 1]
  %14 = icmp eq i32 %12, %13                      ; [#uses = 1]
  br i1 %14, label %catch.object.Exception, label %eh.resume

eh.resume:                                        ; preds = %landingPad
  call void @_Unwind_Resume(i8* %11)
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target) local_unnamed_addr #2 {
andandend:
  %0 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTaTaZQCoQByKxQBdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source) #1 ; [#uses = 1]
  br i1 %0, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %andandend
  %.not = icmp eq %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, %target ; [#uses = 1]
  br i1 %.not, label %assertFailed4, label %assertPassed3

assertPassed3:                                    ; preds = %assertPassed
  %1 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 1]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source to i8* ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %1, i8* nonnull align 1 dereferenceable(64) %2, i64 64, i1 false) #1
  %3 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Struct, %object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"initializer@vtbl" = getelementptr inbounds [19 x i8*], [19 x i8*]* %3, i64 0, i64 11 ; [#uses = 1, type = i8**]
  %4 = bitcast i8** %"initializer@vtbl" to { i64, i8* } (%object.TypeInfo_Struct*)** ; [#uses = 1]
  %5 = load { i64, i8* } (%object.TypeInfo_Struct*)*, { i64, i8* } (%object.TypeInfo_Struct*)** %4, align 8 ; [#uses = 1]
  %6 = tail call { i64, i8* } %5(%object.TypeInfo_Struct* nonnull @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ) ; [#uses = 1]
  %.ptr8 = extractvalue { i64, i8* } %6, 1        ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %2, i8* nonnull align 1 dereferenceable(64) %.ptr8, i64 64, i1 false) #1
  ret void

assertFailed4:                                    ; preds = %assertPassed
  tail call void @_d_assert_msg({ i64, i8* } { i64 39, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.19, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1436) #4
  unreachable

assertFailed:                                     ; preds = %andandend
  tail call void @_d_assert_msg({ i64, i8* } { i64 72, i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.17, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1429) #4
  unreachable
}

; [#uses = 6]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTaTaZQCoQByKxQBdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %source) local_unnamed_addr #2 {
unrolledstmt:
  %0 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source to i8** ; [#uses = 1]
  %1 = load i8*, i8** %0, align 8                 ; [#uses = 2]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 13]
  %3 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target, i64 1 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %4 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %3 to i8* ; [#uses = 10]
  %.not.i.i = icmp uge i8* %1, %2                 ; [#uses = 1]
  %5 = icmp ult i8* %1, %4                        ; [#uses = 1]
  %andandval.i.i = and i1 %.not.i.i, %5           ; [#uses = 1]
  br i1 %andandval.i.i, label %if, label %unrolledstmt1.i

unrolledstmt1.i:                                  ; preds = %unrolledstmt
  %6 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.len.i.i = load i64, i64* %6, align 8          ; [#uses = 1]
  %7 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.ptr.i.i = load i8*, i8** %7, align 8          ; [#uses = 6]
  %8 = getelementptr inbounds i8, i8* %.ptr.i.i, i64 %.len.i.i ; [#uses = 3, type = i8*]
  %9 = icmp ugt i8* %8, %4                        ; [#uses = 1]
  %b_arg.a_arg.i.i.i.i = select i1 %9, i8* %4, i8* %8 ; [#uses = 2]
  %.not.i.i.i = icmp ule i8* %.ptr.i.i, %2        ; [#uses = 1]
  %10 = icmp ugt i8* %8, %2                       ; [#uses = 1]
  %andandval.i.i.i = and i1 %.not.i.i.i, %10      ; [#uses = 1]
  br i1 %andandval.i.i.i, label %if.i.i.i, label %endif.i.i.i

if.i.i.i:                                         ; preds = %unrolledstmt1.i
  %11 = ptrtoint i8* %b_arg.a_arg.i.i.i.i to i64  ; [#uses = 1]
  %12 = ptrtoint %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i64 ; [#uses = 1]
  %13 = sub i64 %11, %12                          ; [#uses = 1]
  %14 = insertvalue { i64, i8* } undef, i64 %13, 0 ; [#uses = 1]
  %15 = insertvalue { i64, i8* } %14, i8* %2, 1   ; [#uses = 1]
  br label %_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T10ByLineImplTaTaZQr4ImplTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTaTaZQCwQCgZb.exit

endif.i.i.i:                                      ; preds = %unrolledstmt1.i
  %.not28.i.i.i = icmp uge i8* %.ptr.i.i, %2      ; [#uses = 1]
  %16 = icmp ult i8* %.ptr.i.i, %4                ; [#uses = 1]
  %andandval17.i.i.i = and i1 %.not28.i.i.i, %16  ; [#uses = 1]
  br i1 %andandval17.i.i.i, label %if18.i.i.i, label %_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T10ByLineImplTaTaZQr4ImplTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTaTaZQCwQCgZb.exit

if18.i.i.i:                                       ; preds = %endif.i.i.i
  %17 = ptrtoint i8* %b_arg.a_arg.i.i.i.i to i64  ; [#uses = 1]
  %18 = ptrtoint i8* %.ptr.i.i to i64             ; [#uses = 1]
  %19 = sub i64 %17, %18                          ; [#uses = 1]
  %20 = insertvalue { i64, i8* } undef, i64 %19, 0 ; [#uses = 1]
  %21 = insertvalue { i64, i8* } %20, i8* %.ptr.i.i, 1 ; [#uses = 1]
  br label %_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T10ByLineImplTaTaZQr4ImplTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTaTaZQCwQCgZb.exit

_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T10ByLineImplTaTaZQr4ImplTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTaTaZQCwQCgZb.exit: ; preds = %if.i.i.i, %endif.i.i.i, %if18.i.i.i
  %22 = phi { i64, i8* } [ %15, %if.i.i.i ], [ %21, %if18.i.i.i ], [ zeroinitializer, %endif.i.i.i ] ; [#uses = 1, type = { i64, i8* }]
  %.len1.i.i = extractvalue { i64, i8* } %22, 0   ; [#uses = 1]
  %.not = icmp eq i64 %.len1.i.i, 0               ; [#uses = 1]
  br i1 %.not, label %unrolledstmt1, label %if

if:                                               ; preds = %_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit35, %_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T10ByLineImplTaTaZQr4ImplTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTaTaZQCwQCgZb.exit, %unrolledstmt
  ret i1 true

unrolledstmt1:                                    ; preds = %_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T10ByLineImplTaTaZQr4ImplTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTaTaZQCwQCgZb.exit
  %23 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.len.i24 = load i64, i64* %23, align 8         ; [#uses = 1]
  %24 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.ptr.i25 = load i8*, i8** %24, align 8         ; [#uses = 6]
  %25 = getelementptr inbounds i8, i8* %.ptr.i25, i64 %.len.i24 ; [#uses = 3, type = i8*]
  %26 = icmp ugt i8* %25, %4                      ; [#uses = 1]
  %b_arg.a_arg.i.i.i26 = select i1 %26, i8* %4, i8* %25 ; [#uses = 2]
  %.not.i.i27 = icmp ule i8* %.ptr.i25, %2        ; [#uses = 1]
  %27 = icmp ugt i8* %25, %2                      ; [#uses = 1]
  %andandval.i.i28 = and i1 %.not.i.i27, %27      ; [#uses = 1]
  br i1 %andandval.i.i28, label %if.i.i29, label %endif.i.i32

if.i.i29:                                         ; preds = %unrolledstmt1
  %28 = ptrtoint i8* %b_arg.a_arg.i.i.i26 to i64  ; [#uses = 1]
  %29 = ptrtoint %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i64 ; [#uses = 1]
  %30 = sub i64 %28, %29                          ; [#uses = 1]
  %31 = insertvalue { i64, i8* } undef, i64 %30, 0 ; [#uses = 1]
  %32 = insertvalue { i64, i8* } %31, i8* %2, 1   ; [#uses = 1]
  br label %_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit35

endif.i.i32:                                      ; preds = %unrolledstmt1
  %.not28.i.i30 = icmp uge i8* %.ptr.i25, %2      ; [#uses = 1]
  %33 = icmp ult i8* %.ptr.i25, %4                ; [#uses = 1]
  %andandval17.i.i31 = and i1 %.not28.i.i30, %33  ; [#uses = 1]
  br i1 %andandval17.i.i31, label %if18.i.i33, label %_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit35

if18.i.i33:                                       ; preds = %endif.i.i32
  %34 = ptrtoint i8* %b_arg.a_arg.i.i.i26 to i64  ; [#uses = 1]
  %35 = ptrtoint i8* %.ptr.i25 to i64             ; [#uses = 1]
  %36 = sub i64 %34, %35                          ; [#uses = 1]
  %37 = insertvalue { i64, i8* } undef, i64 %36, 0 ; [#uses = 1]
  %38 = insertvalue { i64, i8* } %37, i8* %.ptr.i25, 1 ; [#uses = 1]
  br label %_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit35

_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit35: ; preds = %if.i.i29, %endif.i.i32, %if18.i.i33
  %39 = phi { i64, i8* } [ %32, %if.i.i29 ], [ %38, %if18.i.i33 ], [ zeroinitializer, %endif.i.i32 ] ; [#uses = 1, type = { i64, i8* }]
  %.len1.i34 = extractvalue { i64, i8* } %39, 0   ; [#uses = 1]
  %.not36 = icmp eq i64 %.len1.i34, 0             ; [#uses = 1]
  br i1 %.not36, label %unrolledstmt2, label %if

unrolledstmt2:                                    ; preds = %_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit35
  %40 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.len.i = load i64, i64* %40, align 8           ; [#uses = 1]
  %41 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.ptr.i = load i8*, i8** %41, align 8           ; [#uses = 6]
  %42 = getelementptr inbounds i8, i8* %.ptr.i, i64 %.len.i ; [#uses = 3, type = i8*]
  %43 = icmp ugt i8* %42, %4                      ; [#uses = 1]
  %b_arg.a_arg.i.i.i = select i1 %43, i8* %4, i8* %42 ; [#uses = 2]
  %.not.i.i22 = icmp ule i8* %.ptr.i, %2          ; [#uses = 1]
  %44 = icmp ugt i8* %42, %2                      ; [#uses = 1]
  %andandval.i.i23 = and i1 %.not.i.i22, %44      ; [#uses = 1]
  br i1 %andandval.i.i23, label %if.i.i, label %endif.i.i

if.i.i:                                           ; preds = %unrolledstmt2
  %45 = ptrtoint i8* %b_arg.a_arg.i.i.i to i64    ; [#uses = 1]
  %46 = ptrtoint %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i64 ; [#uses = 1]
  %47 = sub i64 %45, %46                          ; [#uses = 1]
  %48 = insertvalue { i64, i8* } undef, i64 %47, 0 ; [#uses = 1]
  %49 = insertvalue { i64, i8* } %48, i8* %2, 1   ; [#uses = 1]
  br label %_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit

endif.i.i:                                        ; preds = %unrolledstmt2
  %.not28.i.i = icmp uge i8* %.ptr.i, %2          ; [#uses = 1]
  %50 = icmp ult i8* %.ptr.i, %4                  ; [#uses = 1]
  %andandval17.i.i = and i1 %.not28.i.i, %50      ; [#uses = 1]
  br i1 %andandval17.i.i, label %if18.i.i, label %_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit

if18.i.i:                                         ; preds = %endif.i.i
  %51 = ptrtoint i8* %b_arg.a_arg.i.i.i to i64    ; [#uses = 1]
  %52 = ptrtoint i8* %.ptr.i to i64               ; [#uses = 1]
  %53 = sub i64 %51, %52                          ; [#uses = 1]
  %54 = insertvalue { i64, i8* } undef, i64 %53, 0 ; [#uses = 1]
  %55 = insertvalue { i64, i8* } %54, i8* %.ptr.i, 1 ; [#uses = 1]
  br label %_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit

_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb.exit: ; preds = %if.i.i, %endif.i.i, %if18.i.i
  %56 = phi { i64, i8* } [ %49, %if.i.i ], [ %55, %if18.i.i ], [ zeroinitializer, %endif.i.i ] ; [#uses = 1, type = { i64, i8* }]
  %.len1.i = extractvalue { i64, i8* } %56, 0     ; [#uses = 1]
  %.not37 = icmp ne i64 %.len1.i, 0               ; [#uses = 1]
  ret i1 %.not37
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T10ByLineImplTaTaZQr4ImplTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTaTaZQCwQCgZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, %std.stdio.File* dereferenceable(24) %source) local_unnamed_addr #2 {
unrolledstmt:
  %0 = bitcast %std.stdio.File* %source to i8**   ; [#uses = 1]
  %1 = load i8*, i8** %0, align 8                 ; [#uses = 2]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 5]
  %3 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target, i64 1 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %4 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %3 to i8* ; [#uses = 4]
  %.not.i = icmp uge i8* %1, %2                   ; [#uses = 1]
  %5 = icmp ult i8* %1, %4                        ; [#uses = 1]
  %andandval.i = and i1 %.not.i, %5               ; [#uses = 1]
  br i1 %andandval.i, label %if, label %unrolledstmt1

if:                                               ; preds = %unrolledstmt
  ret i1 true

unrolledstmt1:                                    ; preds = %unrolledstmt
  %6 = getelementptr inbounds %std.stdio.File, %std.stdio.File* %source, i64 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.len.i = load i64, i64* %6, align 8            ; [#uses = 1]
  %7 = getelementptr inbounds %std.stdio.File, %std.stdio.File* %source, i64 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.ptr.i = load i8*, i8** %7, align 8            ; [#uses = 6]
  %8 = getelementptr inbounds i8, i8* %.ptr.i, i64 %.len.i ; [#uses = 3, type = i8*]
  %9 = icmp ugt i8* %8, %4                        ; [#uses = 1]
  %b_arg.a_arg.i.i.i = select i1 %9, i8* %4, i8* %8 ; [#uses = 2]
  %.not.i.i = icmp ule i8* %.ptr.i, %2            ; [#uses = 1]
  %10 = icmp ugt i8* %8, %2                       ; [#uses = 1]
  %andandval.i.i = and i1 %.not.i.i, %10          ; [#uses = 1]
  br i1 %andandval.i.i, label %if.i.i, label %endif.i.i

if.i.i:                                           ; preds = %unrolledstmt1
  %11 = ptrtoint i8* %b_arg.a_arg.i.i.i to i64    ; [#uses = 1]
  %12 = ptrtoint %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i64 ; [#uses = 1]
  %13 = sub i64 %11, %12                          ; [#uses = 1]
  %14 = insertvalue { i64, i8* } undef, i64 %13, 0 ; [#uses = 1]
  %15 = insertvalue { i64, i8* } %14, i8* %2, 1   ; [#uses = 1]
  br label %_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTaTaZQCpQBzZb.exit

endif.i.i:                                        ; preds = %unrolledstmt1
  %.not28.i.i = icmp uge i8* %.ptr.i, %2          ; [#uses = 1]
  %16 = icmp ult i8* %.ptr.i, %4                  ; [#uses = 1]
  %andandval17.i.i = and i1 %.not28.i.i, %16      ; [#uses = 1]
  br i1 %andandval17.i.i, label %if18.i.i, label %_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTaTaZQCpQBzZb.exit

if18.i.i:                                         ; preds = %endif.i.i
  %17 = ptrtoint i8* %b_arg.a_arg.i.i.i to i64    ; [#uses = 1]
  %18 = ptrtoint i8* %.ptr.i to i64               ; [#uses = 1]
  %19 = sub i64 %17, %18                          ; [#uses = 1]
  %20 = insertvalue { i64, i8* } undef, i64 %19, 0 ; [#uses = 1]
  %21 = insertvalue { i64, i8* } %20, i8* %.ptr.i, 1 ; [#uses = 1]
  br label %_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTaTaZQCpQBzZb.exit

_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTaTaZQCpQBzZb.exit: ; preds = %if.i.i, %endif.i.i, %if18.i.i
  %22 = phi { i64, i8* } [ %15, %if.i.i ], [ %21, %if18.i.i ], [ zeroinitializer, %endif.i.i ] ; [#uses = 1, type = { i64, i8* }]
  %.len1.i = extractvalue { i64, i8* } %22, 0     ; [#uses = 1]
  %23 = icmp ne i64 %.len1.i, 0                   ; [#uses = 1]
  ret i1 %23
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, { i64, i8* }* dereferenceable(16) %source) local_unnamed_addr #2 {
  %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %source, i64 0, i32 0 ; [#uses = 1, type = i64*]
  %.len = load i64, i64* %1, align 8              ; [#uses = 1]
  %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %source, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %.ptr = load i8*, i8** %2, align 8              ; [#uses = 6]
  %3 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 4]
  %4 = getelementptr inbounds i8, i8* %.ptr, i64 %.len ; [#uses = 3, type = i8*]
  %5 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target, i64 1 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %6 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %5 to i8* ; [#uses = 3]
  %7 = icmp ugt i8* %4, %6                        ; [#uses = 1]
  %b_arg.a_arg.i.i = select i1 %7, i8* %6, i8* %4 ; [#uses = 2]
  %.not.i = icmp ule i8* %.ptr, %3                ; [#uses = 1]
  %8 = icmp ugt i8* %4, %3                        ; [#uses = 1]
  %andandval.i = and i1 %.not.i, %8               ; [#uses = 1]
  br i1 %andandval.i, label %if.i, label %endif.i

if.i:                                             ; preds = %0
  %9 = ptrtoint i8* %b_arg.a_arg.i.i to i64       ; [#uses = 1]
  %10 = ptrtoint %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i64 ; [#uses = 1]
  %11 = sub i64 %9, %10                           ; [#uses = 1]
  %12 = insertvalue { i64, i8* } undef, i64 %11, 0 ; [#uses = 1]
  %13 = insertvalue { i64, i8* } %12, i8* %3, 1   ; [#uses = 1]
  br label %_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf.exit

endif.i:                                          ; preds = %0
  %.not28.i = icmp uge i8* %.ptr, %3              ; [#uses = 1]
  %14 = icmp ult i8* %.ptr, %6                    ; [#uses = 1]
  %andandval17.i = and i1 %.not28.i, %14          ; [#uses = 1]
  br i1 %andandval17.i, label %if18.i, label %_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf.exit

if18.i:                                           ; preds = %endif.i
  %15 = ptrtoint i8* %b_arg.a_arg.i.i to i64      ; [#uses = 1]
  %16 = ptrtoint i8* %.ptr to i64                 ; [#uses = 1]
  %17 = sub i64 %15, %16                          ; [#uses = 1]
  %18 = insertvalue { i64, i8* } undef, i64 %17, 0 ; [#uses = 1]
  %19 = insertvalue { i64, i8* } %18, i8* %.ptr, 1 ; [#uses = 1]
  br label %_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf.exit

_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf.exit: ; preds = %endif.i, %if18.i, %if.i
  %20 = phi { i64, i8* } [ %13, %if.i ], [ %19, %if18.i ], [ zeroinitializer, %endif.i ] ; [#uses = 1, type = { i64, i8* }]
  %.len1 = extractvalue { i64, i8* } %20, 0       ; [#uses = 1]
  %21 = icmp ne i64 %.len1, 0                     ; [#uses = 1]
  ret i1 %21
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTaTSQBi5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQCjFNaNbNiNeKxaKxSQDsQCkQCh__TQCfTaTaZQCnQBxZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, i8* dereferenceable(1) %source) local_unnamed_addr #2 {
  ret i1 false
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTEQBg8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTSQDq5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQErFNaNbNiNeKxEQFxQEr__TQElVQEja14_6b6565705465726d696e61746f72ZQFzKxSQIaQEkQEh__TQEfTaTaZQEnQDxZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, i8* dereferenceable(1) %source) local_unnamed_addr #2 {
  ret i1 false
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTbTSQBi5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQCjFNaNbNiNeKxbKxSQDsQCkQCh__TQCfTaTaZQCnQBxZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, i8* dereferenceable(1) %source) local_unnamed_addr #2 {
  ret i1 false
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T18isUnionAliasedImplTSQBn5stdio4File__T10ByLineImplTaTaZQr4ImplZQCmFNaNbNiNfmZb(i64 %offset_arg) local_unnamed_addr #2 {
unrolledstmt:
  %0 = icmp eq i64 %offset_arg, 0                 ; [#uses = 2]
  %spec.select = zext i1 %0 to i32                ; [#uses = 1]
  %1 = icmp eq i64 %offset_arg, 24                ; [#uses = 1]
  %2 = select i1 %0, i32 2, i32 1                 ; [#uses = 1]
  %count.1 = select i1 %1, i32 %2, i32 %spec.select ; [#uses = 1]
  %3 = icmp eq i64 %offset_arg, 40                ; [#uses = 1]
  %4 = zext i1 %3 to i32                          ; [#uses = 1]
  %5 = icmp eq i64 %offset_arg, 56                ; [#uses = 1]
  %6 = zext i1 %5 to i32                          ; [#uses = 1]
  %7 = icmp eq i64 %offset_arg, 57                ; [#uses = 1]
  %8 = zext i1 %7 to i32                          ; [#uses = 1]
  %9 = icmp eq i64 %offset_arg, 58                ; [#uses = 1]
  %10 = zext i1 %9 to i32                         ; [#uses = 1]
  %spec.select27 = add nuw nsw i32 %6, %4         ; [#uses = 1]
  %count.3 = add nuw nsw i32 %spec.select27, %8   ; [#uses = 1]
  %spec.select28 = add nuw nsw i32 %count.3, %10  ; [#uses = 1]
  %count.5 = add nuw nsw i32 %spec.select28, %count.1 ; [#uses = 1]
  %11 = icmp ugt i32 %count.5, 1                  ; [#uses = 1]
  ret i1 %11
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTPxSQBi5stdio4File4ImplTSQCdQvQr__T10ByLineImplTaTaZQrQBkTvZQCvFNaNbNiNeKxPQCuKxSQEhQCzQCw__TQCgTaTaZQCoQDiZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, %std.stdio.File.Impl** dereferenceable(8) %source) local_unnamed_addr #2 {
andandend:
  %0 = bitcast %std.stdio.File.Impl** %source to i8** ; [#uses = 1]
  %1 = load i8*, i8** %0, align 8                 ; [#uses = 2]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 1]
  %3 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target, i64 1 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %4 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %3 to i8* ; [#uses = 1]
  %.not = icmp uge i8* %1, %2                     ; [#uses = 1]
  %5 = icmp ult i8* %1, %4                        ; [#uses = 1]
  %andandval = and i1 %.not, %5                   ; [#uses = 1]
  ret i1 %andandval
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTaTaZQCpQBzZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target, { i64, i8* }* dereferenceable(16) %source) local_unnamed_addr #2 {
  %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %source, i64 0, i32 0 ; [#uses = 1, type = i64*]
  %.len = load i64, i64* %1, align 8              ; [#uses = 1]
  %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %source, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %.ptr = load i8*, i8** %2, align 8              ; [#uses = 6]
  %3 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 4]
  %4 = getelementptr inbounds i8, i8* %.ptr, i64 %.len ; [#uses = 3, type = i8*]
  %5 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target, i64 1 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %6 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %5 to i8* ; [#uses = 3]
  %7 = icmp ugt i8* %4, %6                        ; [#uses = 1]
  %b_arg.a_arg.i.i = select i1 %7, i8* %6, i8* %4 ; [#uses = 2]
  %.not.i = icmp ule i8* %.ptr, %3                ; [#uses = 1]
  %8 = icmp ugt i8* %4, %3                        ; [#uses = 1]
  %andandval.i = and i1 %.not.i, %8               ; [#uses = 1]
  br i1 %andandval.i, label %if.i, label %endif.i

if.i:                                             ; preds = %0
  %9 = ptrtoint i8* %b_arg.a_arg.i.i to i64       ; [#uses = 1]
  %10 = ptrtoint %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i64 ; [#uses = 1]
  %11 = sub i64 %9, %10                           ; [#uses = 1]
  %12 = insertvalue { i64, i8* } undef, i64 %11, 0 ; [#uses = 1]
  %13 = insertvalue { i64, i8* } %12, i8* %3, 1   ; [#uses = 1]
  br label %_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf.exit

endif.i:                                          ; preds = %0
  %.not28.i = icmp uge i8* %.ptr, %3              ; [#uses = 1]
  %14 = icmp ult i8* %.ptr, %6                    ; [#uses = 1]
  %andandval17.i = and i1 %.not28.i, %14          ; [#uses = 1]
  br i1 %andandval17.i, label %if18.i, label %_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf.exit

if18.i:                                           ; preds = %endif.i
  %15 = ptrtoint i8* %b_arg.a_arg.i.i to i64      ; [#uses = 1]
  %16 = ptrtoint i8* %.ptr to i64                 ; [#uses = 1]
  %17 = sub i64 %15, %16                          ; [#uses = 1]
  %18 = insertvalue { i64, i8* } undef, i64 %17, 0 ; [#uses = 1]
  %19 = insertvalue { i64, i8* } %18, i8* %.ptr, 1 ; [#uses = 1]
  br label %_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf.exit

_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf.exit: ; preds = %endif.i, %if18.i, %if.i
  %20 = phi { i64, i8* } [ %13, %if.i ], [ %19, %if18.i ], [ zeroinitializer, %endif.i ] ; [#uses = 1, type = { i64, i8* }]
  %.len1 = extractvalue { i64, i8* } %20, 0       ; [#uses = 1]
  %21 = icmp ne i64 %.len1, 0                     ; [#uses = 1]
  ret i1 %21
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T18isUnionAliasedImplTSQBn5stdio4FileZQBlFNaNbNiNfmZb(i64 %offset_arg) local_unnamed_addr #2 {
unrolledstmt:
  ret i1 false
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf({ i64, i8* } %b_arg, { i64, i8* } %a_arg) local_unnamed_addr #2 {
andandend:
  %a_arg.fca.0.extract = extractvalue { i64, i8* } %a_arg, 0 ; [#uses = 1]
  %a_arg.fca.1.extract = extractvalue { i64, i8* } %a_arg, 1 ; [#uses = 6]
  %b_arg.fca.0.extract = extractvalue { i64, i8* } %b_arg, 0 ; [#uses = 1]
  %b_arg.fca.1.extract = extractvalue { i64, i8* } %b_arg, 1 ; [#uses = 6]
  %0 = getelementptr inbounds i8, i8* %a_arg.fca.1.extract, i64 %a_arg.fca.0.extract ; [#uses = 3, type = i8*]
  %1 = getelementptr inbounds i8, i8* %b_arg.fca.1.extract, i64 %b_arg.fca.0.extract ; [#uses = 3, type = i8*]
  %2 = icmp ult i8* %1, %0                        ; [#uses = 1]
  %b_arg.a_arg.i = select i1 %2, i8* %1, i8* %0   ; [#uses = 2]
  %.not = icmp ule i8* %a_arg.fca.1.extract, %b_arg.fca.1.extract ; [#uses = 1]
  %3 = icmp ult i8* %b_arg.fca.1.extract, %0      ; [#uses = 1]
  %andandval = and i1 %.not, %3                   ; [#uses = 1]
  br i1 %andandval, label %if, label %endif

if:                                               ; preds = %andandend
  %4 = ptrtoint i8* %b_arg.a_arg.i to i64         ; [#uses = 1]
  %5 = ptrtoint i8* %b_arg.fca.1.extract to i64   ; [#uses = 1]
  %6 = sub i64 %4, %5                             ; [#uses = 1]
  %7 = insertvalue { i64, i8* } undef, i64 %6, 0  ; [#uses = 1]
  %8 = insertvalue { i64, i8* } %7, i8* %b_arg.fca.1.extract, 1 ; [#uses = 1]
  ret { i64, i8* } %8

endif:                                            ; preds = %andandend
  %.not28 = icmp ule i8* %b_arg.fca.1.extract, %a_arg.fca.1.extract ; [#uses = 1]
  %9 = icmp ult i8* %a_arg.fca.1.extract, %1      ; [#uses = 1]
  %andandval17 = and i1 %.not28, %9               ; [#uses = 1]
  br i1 %andandval17, label %if18, label %endif19

if18:                                             ; preds = %endif
  %10 = ptrtoint i8* %b_arg.a_arg.i to i64        ; [#uses = 1]
  %11 = ptrtoint i8* %a_arg.fca.1.extract to i64  ; [#uses = 1]
  %12 = sub i64 %10, %11                          ; [#uses = 1]
  %13 = insertvalue { i64, i8* } undef, i64 %12, 0 ; [#uses = 1]
  %14 = insertvalue { i64, i8* } %13, i8* %a_arg.fca.1.extract, 1 ; [#uses = 1]
  ret { i64, i8* } %14

endif19:                                          ; preds = %endif
  ret { i64, i8* } zeroinitializer
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i8* @_D3std9algorithm10comparison__T3minTPvTQdZQlFNaNbNiNfQrQtZQw(i8* %b_arg, i8* %a_arg) local_unnamed_addr #2 {
condend:
  %0 = icmp ult i8* %b_arg, %a_arg                ; [#uses = 1]
  %b_arg.a_arg = select i1 %0, i8* %b_arg, i8* %a_arg ; [#uses = 1]
  ret i8* %b_arg.a_arg
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk5stdio4File__T10ByLineImplTaTaZQr4ImplVEQEbQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCkTQFdTvZQFxFNaNbNiNeKxPSQHeQFx__TQFrTQFiVQDvi0ZQGfQCrQEnKxQBkZb(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %target, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %source) local_unnamed_addr #2 {
andandend:
  %0 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %source to i8** ; [#uses = 1]
  %1 = load i8*, i8** %0, align 8                 ; [#uses = 2]
  %2 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %target to i8* ; [#uses = 1]
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %target, i64 1 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %4 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %3 to i8* ; [#uses = 1]
  %.not = icmp uge i8* %1, %2                     ; [#uses = 1]
  %5 = icmp ult i8* %1, %4                        ; [#uses = 1]
  %andandval = and i1 %.not, %5                   ; [#uses = 1]
  ret i1 %andandval
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T10ByLineImplTaTaZQr4ImplZQCbFNfMKQBzMNkKQCgZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %target) local_unnamed_addr #2 {
  %1 = icmp eq %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, %target ; [#uses = 1]
  br i1 %1, label %if, label %endif

if:                                               ; preds = %0
  ret void

endif:                                            ; preds = %0
  %2 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %2) #1
  %3 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTaTaZQCoQByKxQBdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source) #1 ; [#uses = 1]
  br i1 %3, label %assertFailed.i, label %_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit

assertFailed.i:                                   ; preds = %endif
  tail call void @_d_assert_msg({ i64, i8* } { i64 72, i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.17, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.18, i32 0, i32 0) }, i32 1429) #4
  unreachable

_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv.exit: ; preds = %endif
  %4 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 1]
  %5 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source to i8* ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %4, i8* nonnull align 1 dereferenceable(64) %5, i64 64, i1 false) #1
  %6 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Struct, %object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"initializer@vtbl.i" = getelementptr inbounds [19 x i8*], [19 x i8*]* %6, i64 0, i64 11 ; [#uses = 1, type = i8**]
  %7 = bitcast i8** %"initializer@vtbl.i" to { i64, i8* } (%object.TypeInfo_Struct*)** ; [#uses = 1]
  %8 = load { i64, i8* } (%object.TypeInfo_Struct*)*, { i64, i8* } (%object.TypeInfo_Struct*)** %7, align 8 ; [#uses = 1]
  %9 = tail call { i64, i8* } %8(%object.TypeInfo_Struct* nonnull @_D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ) ; [#uses = 1]
  %.ptr8.i = extractvalue { i64, i8* } %9, 1      ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %5, i8* nonnull align 1 dereferenceable(64) %.ptr8.i, i64 64, i1 false) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb(i64 %line_arg, { i64, i8* } %file_arg, { i8*, { i64, i8* } (i8*)* } %msg_arg, i1 zeroext %value_arg) local_unnamed_addr #2 {
  br i1 %value_arg, label %endif, label %if

if:                                               ; preds = %0
  %msg_arg.fca.1.extract = extractvalue { i8*, { i64, i8* } (i8*)* } %msg_arg, 1 ; [#uses = 1]
  %msg_arg.fca.0.extract = extractvalue { i8*, { i64, i8* } (i8*)* } %msg_arg, 0 ; [#uses = 1]
  %1 = tail call { i64, i8* } %msg_arg.fca.1.extract(i8* nonnull %msg_arg.fca.0.extract) ; [#uses = 1]
  tail call void @_D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamMAxaZNn({ i64, i8* } %1, i64 %line_arg, { i64, i8* } %file_arg) #13
  unreachable

endif:                                            ; preds = %0
  ret i1 true
}

; [#uses = 2]
declare i32 @fwide(%core.stdc.stdio._IO_FILE*, i32) local_unnamed_addr #1

; [#uses = 2]
declare i64 @_D3std5stdio10readlnImplFPOS4core4stdcQBg8_IO_FILEKAawEQCbQCa4File11OrientationZm(i32, i32, { i64, i8* }* dereferenceable(16), %core.stdc.stdio._IO_FILE*) local_unnamed_addr #1

; [#uses = 3]
; Function Attrs: noreturn uwtable
define weak_odr void @_D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamMAxaZNn({ i64, i8* } %msg_arg, i64 %line_arg, { i64, i8* } %file_arg) local_unnamed_addr #12 {
  %.makelvaluetmp = alloca { i64, i8* }, align 8  ; [#uses = 2, size/byte = 16]
  %.makelvaluetmp2 = alloca { i64, i8* }, align 8 ; [#uses = 2, size/byte = 16]
  %msg_arg.fca.1.extract = extractvalue { i64, i8* } %msg_arg, 1 ; [#uses = 2]
  %.newclass_gc_alloc = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D9Exception7__ClassZ) #3 ; [#uses = 5]
  %vtbl = bitcast %object.Object* %.newclass_gc_alloc to [10 x i8*]** ; [#uses = 1]
  store [10 x i8*]* @_D9Exception6__vtblZ, [10 x i8*]** %vtbl, align 8
  %1 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* null, i8** %1, align 8
  %2 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc, i64 1 ; [#uses = 1, type = %object.Object*]
  %3 = bitcast %object.Object* %2 to i8*          ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(60) %3, i8* nonnull align 8 dereferenceable(60) bitcast ({ i64, i8* }* getelementptr inbounds (%object.Exception, %object.Exception* @_D9Exception6__initZ, i64 0, i32 2) to i8*), i64 60, i1 false)
  %.not = icmp eq i8* %msg_arg.fca.1.extract, null ; [#uses = 1]
  br i1 %.not, label %condfalse, label %condtrue

condtrue:                                         ; preds = %0
  %a_arg.fca.0.extract.i.i = extractvalue { i64, i8* } %msg_arg, 0 ; [#uses = 2]
  %4 = tail call { i64, i8* } @_d_newarrayU(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Axa6__initZ to %object.TypeInfo*), i64 %a_arg.fca.0.extract.i.i) #1 ; [#uses = 2]
  %.ptr.i.i = extractvalue { i64, i8* } %4, 1     ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %.ptr.i.i, i8* nonnull align 1 %msg_arg.fca.1.extract, i64 %a_arg.fca.0.extract.i.i, i1 false) #1
  %.len = extractvalue { i64, i8* } %4, 0         ; [#uses = 1]
  %5 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %.makelvaluetmp, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %.len, i64* %5, align 8
  br label %condend

condfalse:                                        ; preds = %0
  %6 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %.makelvaluetmp2, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 18, i64* %6, align 8
  br label %condend

condend:                                          ; preds = %condfalse, %condtrue
  %.makelvaluetmp2.sink = phi { i64, i8* }* [ %.makelvaluetmp2, %condfalse ], [ %.makelvaluetmp, %condtrue ] ; [#uses = 2, type = { i64, i8* }*]
  %.sink = phi i8* [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.25, i64 0, i64 0), %condfalse ], [ %.ptr.i.i, %condtrue ] ; [#uses = 1, type = i8*]
  %7 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %.makelvaluetmp2.sink, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %.sink, i8** %7, align 8
  %.newclass_gc = bitcast %object.Object* %.newclass_gc_alloc to %object.Exception* ; [#uses = 1]
  %8 = tail call %object.Exception* @_D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx(%object.Exception* nonnull returned %.newclass_gc, %object.Throwable* null, i64 %line_arg, { i64, i8* } %file_arg, { i64, i8* }* nonnull byval align 8 %.makelvaluetmp2.sink) #1 ; [#uses = 0]
  %9 = bitcast %object.Object* %.newclass_gc_alloc to %object.Throwable* ; [#uses = 1]
  tail call void @_d_throw_exception(%object.Throwable* %9) #4
  unreachable
}

; [#uses = 7]
; Function Attrs: uwtable
declare noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class*) local_unnamed_addr #3

; [#uses = 1]
declare %object.Exception* @_D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx(%object.Exception* nonnull returned, %object.Throwable*, i64, { i64, i8* }, { i64, i8* }* byval align 8) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D6object__T4idupTxaZQjFNaNbNdNfAxaZAya({ i64, i8* } %a_arg) local_unnamed_addr #2 {
  %a_arg.fca.0.extract.i = extractvalue { i64, i8* } %a_arg, 0 ; [#uses = 2]
  %a_arg.fca.1.extract.i = extractvalue { i64, i8* } %a_arg, 1 ; [#uses = 1]
  %1 = tail call { i64, i8* } @_d_newarrayU(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Axa6__initZ to %object.TypeInfo*), i64 %a_arg.fca.0.extract.i) #1 ; [#uses = 2]
  %.ptr.i = extractvalue { i64, i8* } %1, 1       ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %.ptr.i, i8* align 1 %a_arg.fca.1.extract.i, i64 %a_arg.fca.0.extract.i, i1 false) #1
  ret { i64, i8* } %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D6object__T4_dupTxaTyaZQmFNaNbNeMAxaZAya({ i64, i8* } %a_arg) local_unnamed_addr #2 {
  %a_arg.fca.0.extract = extractvalue { i64, i8* } %a_arg, 0 ; [#uses = 2]
  %a_arg.fca.1.extract = extractvalue { i64, i8* } %a_arg, 1 ; [#uses = 1]
  %1 = tail call { i64, i8* } @_d_newarrayU(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Axa6__initZ to %object.TypeInfo*), i64 %a_arg.fca.0.extract) #1 ; [#uses = 2]
  %.ptr = extractvalue { i64, i8* } %1, 1         ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %.ptr, i8* align 1 %a_arg.fca.1.extract, i64 %a_arg.fca.0.extract, i1 false) #1
  ret { i64, i8* } %1
}

; [#uses = 4]
declare { i64, i8* } @_d_newarrayU(%object.TypeInfo*, i64) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D6object__T8_dupCtfeTxaTyaZQqFNaNbNfMAxaZAya({ i64, i8* } %a_arg) local_unnamed_addr #2 {
  %res = alloca { i64, i8* }, align 8             ; [#uses = 4, size/byte = 16]
  %a_arg.fca.0.extract = extractvalue { i64, i8* } %a_arg, 0 ; [#uses = 2]
  %a_arg.fca.1.extract = extractvalue { i64, i8* } %a_arg, 1 ; [#uses = 1]
  %.fca.0.gep = getelementptr inbounds { i64, i8* }, { i64, i8* }* %res, i64 0, i32 0 ; [#uses = 2, type = i64*]
  %.fca.1.gep = getelementptr inbounds { i64, i8* }, { i64, i8* }* %res, i64 0, i32 1 ; [#uses = 2, type = i8**]
  %.not = icmp eq i64 %a_arg.fca.0.extract, 0     ; [#uses = 1]
  %1 = bitcast { i64, i8* }* %res to i8*          ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %1, i8 0, i64 16, i1 false)
  br i1 %.not, label %endfor, label %forbody

forbody:                                          ; preds = %0, %forbody
  %__key112.015 = phi i64 [ %4, %forbody ], [ 0, %0 ] ; [#uses = 2, type = i64]
  %2 = getelementptr inbounds i8, i8* %a_arg.fca.1.extract, i64 %__key112.015 ; [#uses = 1, type = i8*]
  %.appendedArray = call { i64, i8* } @_d_arrayappendcTX(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Aya6__initZ to %object.TypeInfo*), { i64, i8* }* nonnull dereferenceable(16) %res, i64 1) #3 ; [#uses = 0]
  %.len3 = load i64, i64* %.fca.0.gep, align 8    ; [#uses = 1]
  %.ptr4 = load i8*, i8** %.fca.1.gep, align 8    ; [#uses = 1]
  %.lastIndex = add i64 %.len3, -1                ; [#uses = 1]
  %.lastElem = getelementptr inbounds i8, i8* %.ptr4, i64 %.lastIndex ; [#uses = 1, type = i8*]
  %3 = load i8, i8* %2, align 1                   ; [#uses = 1]
  store i8 %3, i8* %.lastElem, align 1
  %4 = add nuw i64 %__key112.015, 1               ; [#uses = 2]
  %exitcond.not = icmp eq i64 %4, %a_arg.fca.0.extract ; [#uses = 1]
  br i1 %exitcond.not, label %endfor.loopexit, label %forbody

endfor.loopexit:                                  ; preds = %forbody
  %.fca.0.load.pre = load i64, i64* %.fca.0.gep, align 8 ; [#uses = 1]
  %.fca.1.load.pre = load i8*, i8** %.fca.1.gep, align 8 ; [#uses = 1]
  br label %endfor

endfor:                                           ; preds = %endfor.loopexit, %0
  %.fca.1.load = phi i8* [ %.fca.1.load.pre, %endfor.loopexit ], [ null, %0 ] ; [#uses = 1, type = i8*]
  %.fca.0.load = phi i64 [ %.fca.0.load.pre, %endfor.loopexit ], [ 0, %0 ] ; [#uses = 1, type = i64]
  %.fca.0.insert = insertvalue { i64, i8* } undef, i64 %.fca.0.load, 0 ; [#uses = 1]
  %.fca.1.insert14 = insertvalue { i64, i8* } %.fca.0.insert, i8* %.fca.1.load, 1 ; [#uses = 1]
  ret { i64, i8* } %.fca.1.insert14
}

; [#uses = 1]
; Function Attrs: uwtable
declare { i64, i8* } @_d_arrayappendcTX(%object.TypeInfo*, { i64, i8* }* dereferenceable(16), i64) local_unnamed_addr #3

; [#uses = 2]
declare void @_D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File(%std.stdio.File* noalias sret align 8) local_unnamed_addr #1

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T5writeTiTaZQlMFNfiaZv(%std.stdio.File* nonnull %.this_arg, i8 zeroext %_param_1_arg, i32 %_param_0_arg) local_unnamed_addr #2 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
unrolledstmt:
  %w = alloca %std.stdio.File.LockingTextWriter, align 8 ; [#uses = 7, size/byte = 48]
  %__copytmp147 = alloca %std.stdio.File.LockingTextWriter, align 8 ; [#uses = 3, size/byte = 48]
  call void @_D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter(%std.stdio.File.LockingTextWriter* noalias nonnull sret align 8 %w, %std.stdio.File* nonnull %.this_arg) #1
  %0 = bitcast %std.stdio.File.LockingTextWriter* %__copytmp147 to i8* ; [#uses = 1]
  %1 = bitcast %std.stdio.File.LockingTextWriter* %w to i8* ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(48) %0, i8* nonnull align 8 dereferenceable(48) %1, i64 48, i1 false)
  invoke void @_D3std5stdio4File17LockingTextWriter14__aggrPostblitMFNeZv(%std.stdio.File.LockingTextWriter* nonnull %__copytmp147) #1
          to label %postinvoke3 unwind label %landingPad2

postinvoke3:                                      ; preds = %unrolledstmt
  invoke void @_D3std4conv__T11toTextRangeTiTSQBd5stdio4File17LockingTextWriterZQBzFNfiQBqZv(%std.stdio.File.LockingTextWriter* noalias nocapture nonnull align 8 %__copytmp147, i32 %_param_0_arg) #1
          to label %unrolledstmt1 unwind label %landingPad2

catch.std.utf.UTFException:                       ; preds = %landingPad2
  %2 = call %object.Throwable* @_d_eh_enter_catch(i8* %9) ; [#uses = 1]
  %3 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %w, i64 0, i32 2 ; [#uses = 1, type = i16*]
  store i16 0, i16* %3, align 4
  invoke void @_d_throw_exception(%object.Throwable* %2) #4
          to label %postinvoke unwind label %landingPad

postinvoke:                                       ; preds = %catch.std.utf.UTFException
  unreachable

unrolledstmt1:                                    ; preds = %postinvoke3
  invoke void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %w, i8 zeroext %_param_1_arg) #1
          to label %try.success unwind label %landingPad11

catch.std.utf.UTFException7:                      ; preds = %landingPad11
  %4 = call %object.Throwable* @_d_eh_enter_catch(i8* %14) ; [#uses = 1]
  %5 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %w, i64 0, i32 2 ; [#uses = 1, type = i16*]
  store i16 0, i16* %5, align 4
  invoke void @_d_throw_exception(%object.Throwable* %4) #4
          to label %postinvoke9 unwind label %landingPad

postinvoke9:                                      ; preds = %catch.std.utf.UTFException7
  unreachable

try.success:                                      ; preds = %unrolledstmt1
  call void @_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv(%std.stdio.File.LockingTextWriter* nonnull %w) #1
  ret void

landingPad:                                       ; preds = %catch.std.utf.UTFException7, %catch.std.utf.UTFException
  %6 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %7 = extractvalue { i8*, i32 } %6, 0            ; [#uses = 1]
  br label %eh.resume

eh.resume:                                        ; preds = %landingPad, %landingPad2, %landingPad11
  %eh.ptr.0.ph = phi i8* [ %14, %landingPad11 ], [ %9, %landingPad2 ], [ %7, %landingPad ] ; [#uses = 1, type = i8*]
  call void @_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv(%std.stdio.File.LockingTextWriter* nonnull %w) #1
  call void @_Unwind_Resume(i8* %eh.ptr.0.ph)
  unreachable

landingPad2:                                      ; preds = %postinvoke3, %unrolledstmt
  %8 = landingpad { i8*, i32 }
          cleanup
          catch %object.TypeInfo_Class* @_D3std3utf12UTFException7__ClassZ ; [#uses = 2]
  %9 = extractvalue { i8*, i32 } %8, 0            ; [#uses = 2]
  %10 = extractvalue { i8*, i32 } %8, 1           ; [#uses = 1]
  %11 = call i32 @llvm.eh.typeid.for(i8* bitcast (%object.TypeInfo_Class* @_D3std3utf12UTFException7__ClassZ to i8*)) ; [#uses = 1]
  %12 = icmp eq i32 %10, %11                      ; [#uses = 1]
  br i1 %12, label %catch.std.utf.UTFException, label %eh.resume

landingPad11:                                     ; preds = %unrolledstmt1
  %13 = landingpad { i8*, i32 }
          cleanup
          catch %object.TypeInfo_Class* @_D3std3utf12UTFException7__ClassZ ; [#uses = 2]
  %14 = extractvalue { i8*, i32 } %13, 0          ; [#uses = 2]
  %15 = extractvalue { i8*, i32 } %13, 1          ; [#uses = 1]
  %16 = call i32 @llvm.eh.typeid.for(i8* bitcast (%object.TypeInfo_Class* @_D3std3utf12UTFException7__ClassZ to i8*)) ; [#uses = 1]
  %17 = icmp eq i32 %15, %16                      ; [#uses = 1]
  br i1 %17, label %catch.std.utf.UTFException7, label %eh.resume
}

; [#uses = 1]
declare void @_D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter(%std.stdio.File.LockingTextWriter* noalias sret align 8, %std.stdio.File* nonnull) local_unnamed_addr #1

; [#uses = 4]
declare void @_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv(%std.stdio.File.LockingTextWriter* nonnull) local_unnamed_addr #1

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std4conv__T11toTextRangeTiTSQBd5stdio4File17LockingTextWriterZQBzFNfiQBqZv(%std.stdio.File.LockingTextWriter* noalias nocapture align 8 %writer, i32 %value_arg) local_unnamed_addr #2 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %buf5 = alloca [20 x i8], align 1               ; [#uses = 2, size/byte = 20]
  %buf14 = alloca [20 x i8], align 1              ; [#uses = 2, size/byte = 20]
  %1 = icmp slt i32 %value_arg, 0                 ; [#uses = 1]
  %2 = sext i32 %value_arg to i64                 ; [#uses = 2]
  br i1 %1, label %if, label %dowhile.i

if:                                               ; preds = %0
  %negval.i = sub nsw i64 0, %2                   ; [#uses = 1]
  br label %dowhile.i.i

dowhile.i.i:                                      ; preds = %bounds.ok.i.i, %if
  %value.0.i.i = phi i64 [ %negval.i, %if ], [ %value.1.i.i, %bounds.ok.i.i ] ; [#uses = 4, type = i64]
  %i.0.i.i = phi i64 [ 20, %if ], [ %6, %bounds.ok.i.i ] ; [#uses = 3, type = i64]
  %3 = icmp ult i64 %value.0.i.i, 10              ; [#uses = 1]
  br i1 %3, label %endif.i.i, label %else.i.i

else.i.i:                                         ; preds = %dowhile.i.i
  %4 = urem i64 %value.0.i.i, 10                  ; [#uses = 1]
  %5 = udiv i64 %value.0.i.i, 10                  ; [#uses = 1]
  br label %endif.i.i

endif.i.i:                                        ; preds = %else.i.i, %dowhile.i.i
  %value.1.i.i = phi i64 [ %5, %else.i.i ], [ 0, %dowhile.i.i ] ; [#uses = 2, type = i64]
  %x.0.in.i.i = phi i64 [ %4, %else.i.i ], [ %value.0.i.i, %dowhile.i.i ] ; [#uses = 1, type = i64]
  %6 = add nsw i64 %i.0.i.i, -1                   ; [#uses = 4]
  %bounds.cmp.i.i = icmp ult i64 %6, 20           ; [#uses = 1]
  br i1 %bounds.cmp.i.i, label %bounds.ok.i.i, label %bounds.fail.i.i

bounds.ok.i.i:                                    ; preds = %endif.i.i
  %x.0.i.i = trunc i64 %x.0.in.i.i to i8          ; [#uses = 1]
  %7 = getelementptr inbounds [20 x i8], [20 x i8]* %buf5, i64 0, i64 %6 ; [#uses = 1, type = i8*]
  %8 = add nuw nsw i8 %x.0.i.i, 48                ; [#uses = 1]
  store i8 %8, i8* %7, align 1
  %.not.i.i = icmp eq i64 %value.1.i.i, 0         ; [#uses = 1]
  br i1 %.not.i.i, label %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit.i, label %dowhile.i.i

bounds.fail.i.i:                                  ; preds = %endif.i.i
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 48, i64 -1, i64 20) #4
  unreachable

_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit.i: ; preds = %bounds.ok.i.i
  %9 = getelementptr inbounds [20 x i8], [20 x i8]* %buf5, i64 0, i64 %6 ; [#uses = 2, type = i8*]
  %10 = icmp sgt i64 %i.0.i.i, 1                  ; [#uses = 1]
  br i1 %10, label %_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh.exit.i, label %assertFailed.i.i

assertFailed.i.i:                                 ; preds = %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit.i
  tail call void @_d_assert({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 122) #4
  unreachable

_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh.exit.i: ; preds = %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit.i
  %11 = getelementptr inbounds i8, i8* %9, i64 -1 ; [#uses = 2, type = i8*]
  %12 = sub nuw nsw i64 22, %i.0.i.i              ; [#uses = 4]
  %bounds.cmp.not.i = icmp eq i64 %12, 0          ; [#uses = 1]
  br i1 %bounds.cmp.not.i, label %bounds.fail.i, label %bounds.ok.i

bounds.ok.i:                                      ; preds = %_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh.exit.i
  store i8 45, i8* %11, align 1
  %13 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %writer, i64 0, i32 1 ; [#uses = 1, type = i32*]
  %14 = load i32, i32* %13, align 8               ; [#uses = 1]
  %15 = icmp slt i32 %14, 1                       ; [#uses = 1]
  br i1 %15, label %if.i.i.i, label %forbody.i.i.i

bounds.fail.i:                                    ; preds = %_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh.exit.i
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 124, i64 0, i64 0) #4
  unreachable

if.i.i.i:                                         ; preds = %bounds.ok.i
  %16 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %writer, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %17 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %16, align 8 ; [#uses = 1]
  %18 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %17, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %19 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %18, align 8 ; [#uses = 1]
  %20 = call i64 @fwrite(i8* nonnull %11, i64 1, i64 %12, %core.stdc.stdio._IO_FILE* %19) #1 ; [#uses = 1]
  %.not.i.i.i = icmp eq i64 %20, %12              ; [#uses = 1]
  br i1 %.not.i.i.i, label %try.success, label %if1.i.i.i

if1.i.i.i:                                        ; preds = %if.i.i.i
  invoke void @_D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn({ i64, i8* } zeroinitializer, i64 3263, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }) #13
          to label %.noexc unwind label %eh.resume.loopexit.split-lp.loopexit.split-lp

.noexc:                                           ; preds = %if1.i.i.i
  unreachable

forbody.i.i.i:                                    ; preds = %bounds.ok.i, %.noexc6.forbody.i.i.i_crit_edge
  %21 = phi i8 [ %.pre43, %.noexc6.forbody.i.i.i_crit_edge ], [ 45, %bounds.ok.i ] ; [#uses = 1, type = i8]
  %__key146.010.i.i.i = phi i64 [ %22, %.noexc6.forbody.i.i.i_crit_edge ], [ 0, %bounds.ok.i ] ; [#uses = 2, type = i64]
  invoke void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %writer, i8 zeroext %21) #2
          to label %.noexc6 unwind label %eh.resume.loopexit

.noexc6:                                          ; preds = %forbody.i.i.i
  %22 = add nuw nsw i64 %__key146.010.i.i.i, 1    ; [#uses = 2]
  %exitcond.not.i.i.i = icmp eq i64 %22, %12      ; [#uses = 1]
  br i1 %exitcond.not.i.i.i, label %try.success, label %.noexc6.forbody.i.i.i_crit_edge

.noexc6.forbody.i.i.i_crit_edge:                  ; preds = %.noexc6
  %.phi.trans.insert42 = getelementptr inbounds i8, i8* %9, i64 %__key146.010.i.i.i ; [#uses = 1, type = i8*]
  %.pre43 = load i8, i8* %.phi.trans.insert42, align 1 ; [#uses = 1]
  br label %forbody.i.i.i

dowhile.i:                                        ; preds = %0, %bounds.ok.i8
  %value.0.i = phi i64 [ %value.1.i, %bounds.ok.i8 ], [ %2, %0 ] ; [#uses = 4, type = i64]
  %i.0.i = phi i64 [ %26, %bounds.ok.i8 ], [ 20, %0 ] ; [#uses = 2, type = i64]
  %23 = icmp ult i64 %value.0.i, 10               ; [#uses = 1]
  br i1 %23, label %endif.i, label %else.i

else.i:                                           ; preds = %dowhile.i
  %24 = urem i64 %value.0.i, 10                   ; [#uses = 1]
  %25 = udiv i64 %value.0.i, 10                   ; [#uses = 1]
  br label %endif.i

endif.i:                                          ; preds = %else.i, %dowhile.i
  %value.1.i = phi i64 [ %25, %else.i ], [ 0, %dowhile.i ] ; [#uses = 2, type = i64]
  %x.0.in.i = phi i64 [ %24, %else.i ], [ %value.0.i, %dowhile.i ] ; [#uses = 1, type = i64]
  %26 = add nsw i64 %i.0.i, -1                    ; [#uses = 4]
  %bounds.cmp.i = icmp ult i64 %26, 20            ; [#uses = 1]
  br i1 %bounds.cmp.i, label %bounds.ok.i8, label %bounds.fail.i9

bounds.ok.i8:                                     ; preds = %endif.i
  %x.0.i = trunc i64 %x.0.in.i to i8              ; [#uses = 1]
  %27 = getelementptr inbounds [20 x i8], [20 x i8]* %buf14, i64 0, i64 %26 ; [#uses = 1, type = i8*]
  %28 = add nuw nsw i8 %x.0.i, 48                 ; [#uses = 2]
  store i8 %28, i8* %27, align 1
  %.not.i = icmp eq i64 %value.1.i, 0             ; [#uses = 1]
  br i1 %.not.i, label %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit, label %dowhile.i

bounds.fail.i9:                                   ; preds = %endif.i
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 48, i64 -1, i64 20) #4
  unreachable

_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit: ; preds = %bounds.ok.i8
  %29 = getelementptr inbounds [20 x i8], [20 x i8]* %buf14, i64 0, i64 %26 ; [#uses = 2, type = i8*]
  %30 = sub nuw nsw i64 21, %i.0.i                ; [#uses = 3]
  %31 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %writer, i64 0, i32 1 ; [#uses = 1, type = i32*]
  %32 = load i32, i32* %31, align 8               ; [#uses = 1]
  %33 = icmp slt i32 %32, 1                       ; [#uses = 1]
  br i1 %33, label %if.i.i.i13, label %forbody.i.i.i17

if.i.i.i13:                                       ; preds = %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit
  %34 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %writer, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %35 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %34, align 8 ; [#uses = 1]
  %36 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %35, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %37 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %36, align 8 ; [#uses = 1]
  %38 = call i64 @fwrite(i8* nonnull %29, i64 1, i64 %30, %core.stdc.stdio._IO_FILE* %37) #1 ; [#uses = 1]
  %.not.i.i.i12 = icmp eq i64 %38, %30            ; [#uses = 1]
  br i1 %.not.i.i.i12, label %try.success, label %if1.i.i.i14

if1.i.i.i14:                                      ; preds = %if.i.i.i13
  invoke void @_D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn({ i64, i8* } zeroinitializer, i64 3263, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }) #13
          to label %.noexc18 unwind label %eh.resume.loopexit.split-lp.loopexit.split-lp

.noexc18:                                         ; preds = %if1.i.i.i14
  unreachable

forbody.i.i.i17:                                  ; preds = %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit, %.noexc19.forbody.i.i.i17_crit_edge
  %39 = phi i8 [ %.pre, %.noexc19.forbody.i.i.i17_crit_edge ], [ %28, %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit ] ; [#uses = 1, type = i8]
  %__key146.010.i.i.i15 = phi i64 [ %40, %.noexc19.forbody.i.i.i17_crit_edge ], [ 0, %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit ] ; [#uses = 1, type = i64]
  invoke void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %writer, i8 zeroext %39) #2
          to label %.noexc19 unwind label %eh.resume.loopexit.split-lp.loopexit

.noexc19:                                         ; preds = %forbody.i.i.i17
  %40 = add nuw nsw i64 %__key146.010.i.i.i15, 1  ; [#uses = 3]
  %exitcond.not.i.i.i16 = icmp eq i64 %40, %30    ; [#uses = 1]
  br i1 %exitcond.not.i.i.i16, label %try.success, label %.noexc19.forbody.i.i.i17_crit_edge

.noexc19.forbody.i.i.i17_crit_edge:               ; preds = %.noexc19
  %.phi.trans.insert = getelementptr inbounds i8, i8* %29, i64 %40 ; [#uses = 1, type = i8*]
  %.pre = load i8, i8* %.phi.trans.insert, align 1 ; [#uses = 1]
  br label %forbody.i.i.i17

try.success:                                      ; preds = %.noexc19, %.noexc6, %if.i.i.i, %if.i.i.i13
  tail call void @_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv(%std.stdio.File.LockingTextWriter* nonnull %writer) #1
  ret void

eh.resume.loopexit:                               ; preds = %forbody.i.i.i
  %lpad.loopexit = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  br label %eh.resume

eh.resume.loopexit.split-lp.loopexit:             ; preds = %forbody.i.i.i17
  %lpad.loopexit23 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  br label %eh.resume

eh.resume.loopexit.split-lp.loopexit.split-lp:    ; preds = %if1.i.i.i14, %if1.i.i.i
  %lpad.loopexit.split-lp24 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  br label %eh.resume

eh.resume:                                        ; preds = %eh.resume.loopexit.split-lp.loopexit, %eh.resume.loopexit.split-lp.loopexit.split-lp, %eh.resume.loopexit
  %lpad.phi = phi { i8*, i32 } [ %lpad.loopexit, %eh.resume.loopexit ], [ %lpad.loopexit23, %eh.resume.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp24, %eh.resume.loopexit.split-lp.loopexit.split-lp ] ; [#uses = 1, type = { i8*, i32 }]
  %41 = extractvalue { i8*, i32 } %lpad.phi, 0    ; [#uses = 1]
  tail call void @_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv(%std.stdio.File.LockingTextWriter* nonnull %writer) #1
  tail call void @_Unwind_Resume(i8* %41)
  unreachable
}

; [#uses = 1]
declare void @_D3std5stdio4File17LockingTextWriter14__aggrPostblitMFNeZv(%std.stdio.File.LockingTextWriter* nonnull) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTaZQBqFNfKQBsaZv(i8 zeroext %e_arg, %std.stdio.File.LockingTextWriter* dereferenceable(48) %r) local_unnamed_addr #2 {
  tail call void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %r, i8 zeroext %e_arg) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTaZQBsFNfKQBsKaZv(i8* dereferenceable(1) %e, %std.stdio.File.LockingTextWriter* dereferenceable(48) %r) local_unnamed_addr #2 {
  %1 = load i8, i8* %e, align 1                   ; [#uses = 1]
  tail call void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %r, i8 zeroext %1) #1
  ret void
}

; [#uses = 8]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, i8 zeroext %c_arg) local_unnamed_addr #2 {
  %numCodeUnits.i = alloca i64, align 8           ; [#uses = 3, size/byte = 8]
  %str = alloca { i64, i8* }, align 8             ; [#uses = 3, size/byte = 16]
  %wbuf = alloca [1 x i32], align 4               ; [#uses = 2, size/byte = 4]
  tail call void @_D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg) #1
  %1 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i32*]
  %2 = load i32, i32* %1, align 4                 ; [#uses = 1]
  %3 = icmp slt i32 %2, 1                         ; [#uses = 1]
  %4 = zext i8 %c_arg to i32                      ; [#uses = 2]
  br i1 %3, label %if, label %else

if:                                               ; preds = %0
  %5 = tail call %core.stdc.stdio._IO_FILE* @_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE(%std.stdio.File.LockingTextWriter* nonnull %.this_arg) #1 ; [#uses = 1]
  %6 = tail call i32 @fputc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %5) #1 ; [#uses = 0]
  br label %endif

else:                                             ; preds = %0
  %7 = icmp sgt i8 %c_arg, -1                     ; [#uses = 1]
  br i1 %7, label %if1, label %else3

if1:                                              ; preds = %else
  %8 = tail call %core.stdc.stdio._IO_FILE* @_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE(%std.stdio.File.LockingTextWriter* nonnull %.this_arg) #1 ; [#uses = 1]
  %9 = tail call i32 @fputwc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %8) #1 ; [#uses = 0]
  br label %endif

else3:                                            ; preds = %else
  %10 = icmp ugt i8 %c_arg, -65                   ; [#uses = 1]
  %11 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %.this_arg, i64 0, i32 3 ; [#uses = 2, type = [4 x i8]*]
  br i1 %10, label %if4, label %else6

if4:                                              ; preds = %else3
  %12 = getelementptr inbounds [4 x i8], [4 x i8]* %11, i64 0, i64 0 ; [#uses = 1, type = i8*]
  store i8 %c_arg, i8* %12, align 1
  %13 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %.this_arg, i64 0, i32 5 ; [#uses = 1, type = i64*]
  store i64 1, i64* %13, align 8
  br label %endif

else6:                                            ; preds = %else3
  %14 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %.this_arg, i64 0, i32 5 ; [#uses = 5, type = i64*]
  %15 = load i64, i64* %14, align 8               ; [#uses = 3]
  %bounds.cmp = icmp ult i64 %15, 4               ; [#uses = 1]
  br i1 %bounds.cmp, label %bounds.ok, label %bounds.fail

bounds.ok:                                        ; preds = %else6
  %16 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %.this_arg, i64 0, i32 3, i64 %15 ; [#uses = 1, type = i8*]
  store i8 %c_arg, i8* %16, align 1
  %17 = load i64, i64* %14, align 8               ; [#uses = 1]
  %18 = add i64 %17, 1                            ; [#uses = 2]
  store i64 %18, i64* %14, align 8
  %19 = getelementptr [4 x i8], [4 x i8]* %11, i64 0, i64 0 ; [#uses = 2, type = i8*]
  %20 = load i8, i8* %19, align 1                 ; [#uses = 2]
  %21 = icmp sgt i8 %20, -1                       ; [#uses = 1]
  br i1 %21, label %_D3std3utf__T6strideTAaZQlFNaNfQkZk.exit, label %else.i

else.i:                                           ; preds = %bounds.ok
  %22 = tail call i32 @_D3std3utf10strideImplFNaNeamZk(i64 0, i8 zeroext %20) #1 ; [#uses = 1]
  %phi.cast = zext i32 %22 to i64                 ; [#uses = 1]
  %.pre = load i64, i64* %14, align 8             ; [#uses = 1]
  br label %_D3std3utf__T6strideTAaZQlFNaNfQkZk.exit

_D3std3utf__T6strideTAaZQlFNaNfQkZk.exit:         ; preds = %bounds.ok, %else.i
  %23 = phi i64 [ %.pre, %else.i ], [ %18, %bounds.ok ] ; [#uses = 4, type = i64]
  %24 = phi i64 [ %phi.cast, %else.i ], [ 1, %bounds.ok ] ; [#uses = 1, type = i64]
  %25 = icmp eq i64 %23, %24                      ; [#uses = 1]
  br i1 %25, label %if7, label %endif

if7:                                              ; preds = %_D3std3utf__T6strideTAaZQlFNaNfQkZk.exit
  %bounds.cmp.up = icmp ult i64 %23, 5            ; [#uses = 1]
  br i1 %bounds.cmp.up, label %bounds.ok9, label %bounds.fail10

bounds.ok9:                                       ; preds = %if7
  %26 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %23, i64* %26, align 8
  %27 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %19, i8** %27, align 8
  %28 = bitcast i64* %numCodeUnits.i to i8*       ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %28)
  store i64 0, i64* %numCodeUnits.i, align 8
  %29 = call i32 @_D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNeKQmJmZw(i64* nonnull dereferenceable(8) %numCodeUnits.i, { i64, i8* }* nonnull dereferenceable(16) %str) #1 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %28)
  %30 = getelementptr inbounds [1 x i32], [1 x i32]* %wbuf, i64 0, i64 0 ; [#uses = 2, type = i32*]
  store i32 65535, i32* %30, align 4
  %31 = call i64 @_D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG1wwZm(i32 %29, [1 x i32]* nonnull dereferenceable(4) %wbuf) #1 ; [#uses = 2]
  %.not = icmp eq i64 %31, 0                      ; [#uses = 1]
  br i1 %.not, label %endfor, label %forbody.lr.ph

forbody.lr.ph:                                    ; preds = %bounds.ok9
  %.not25 = icmp eq i64 %31, 1                    ; [#uses = 1]
  %32 = load i32, i32* %30, align 4               ; [#uses = 1]
  %33 = call %core.stdc.stdio._IO_FILE* @_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE(%std.stdio.File.LockingTextWriter* nonnull %.this_arg) #1 ; [#uses = 1]
  %34 = call i32 @fputwc_unlocked(i32 %32, %core.stdc.stdio._IO_FILE* %33) #1 ; [#uses = 0]
  br i1 %.not25, label %endfor, label %bounds.ok12.us

bounds.ok12.us:                                   ; preds = %forbody.lr.ph
  call void @_d_arraybounds_index({ i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }, i32 3310, i64 1, i64 1) #4
  unreachable

endfor:                                           ; preds = %forbody.lr.ph, %bounds.ok9
  store i64 0, i64* %14, align 8
  br label %endif

bounds.fail10:                                    ; preds = %if7
  tail call void @_d_arraybounds_slice({ i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }, i32 3305, i64 0, i64 %23, i64 4) #4
  unreachable

bounds.fail:                                      ; preds = %else6
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }, i32 3301, i64 %15, i64 4) #4
  unreachable

endif:                                            ; preds = %if1, %_D3std3utf__T6strideTAaZQlFNaNfQkZk.exit, %endfor, %if4, %if
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZ12trustedFPUTCFNbNiNeiPS4core4stdcQDe8_IO_FILEZi(%core.stdc.stdio._IO_FILE* %h_arg, i32 %ch_arg) local_unnamed_addr #2 {
  %1 = tail call i32 @fputc_unlocked(i32 %ch_arg, %core.stdc.stdio._IO_FILE* %h_arg) #1 ; [#uses = 1]
  ret i32 %1
}

; [#uses = 2]
; Function Attrs: nofree nounwind
declare i32 @fputc_unlocked(i32, %core.stdc.stdio._IO_FILE* nocapture) local_unnamed_addr #11

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZ13trustedFPUTWCFNbNiNewPS4core4stdcQDf8_IO_FILEZw(%core.stdc.stdio._IO_FILE* %h_arg, i32 %ch_arg) local_unnamed_addr #2 {
  %1 = tail call i32 @fputwc_unlocked(i32 %ch_arg, %core.stdc.stdio._IO_FILE* %h_arg) #1 ; [#uses = 1]
  ret i32 %1
}

; [#uses = 3]
declare i32 @fputwc_unlocked(i32, %core.stdc.stdio._IO_FILE*) local_unnamed_addr #1

; [#uses = 1]
declare void @_D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv(%std.stdio.File.LockingTextWriter* nonnull) local_unnamed_addr #1

; [#uses = 3]
declare %core.stdc.stdio._IO_FILE* @_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE(%std.stdio.File.LockingTextWriter* nonnull) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T6strideTAaZQlFNaNfQkZk({ i64, i8* } %str_arg) local_unnamed_addr #2 {
  %str_arg.fca.0.extract = extractvalue { i64, i8* } %str_arg, 0 ; [#uses = 1]
  %bounds.cmp.not = icmp eq i64 %str_arg.fca.0.extract, 0 ; [#uses = 1]
  br i1 %bounds.cmp.not, label %bounds.fail, label %bounds.ok

bounds.ok:                                        ; preds = %0
  %str_arg.fca.1.extract = extractvalue { i64, i8* } %str_arg, 1 ; [#uses = 1]
  %1 = load i8, i8* %str_arg.fca.1.extract, align 1 ; [#uses = 2]
  %2 = icmp sgt i8 %1, -1                         ; [#uses = 1]
  br i1 %2, label %if, label %else

if:                                               ; preds = %bounds.ok
  ret i32 1

else:                                             ; preds = %bounds.ok
  %3 = tail call i32 @_D3std3utf10strideImplFNaNeamZk(i64 0, i8 zeroext %1) #1 ; [#uses = 1]
  ret i32 %3

bounds.fail:                                      ; preds = %0
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 403, i64 0, i64 0) #4
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNfKQmZw({ i64, i8* }* dereferenceable(16) %str) local_unnamed_addr #2 {
  %numCodeUnits = alloca i64, align 8             ; [#uses = 2, size/byte = 8]
  store i64 0, i64* %numCodeUnits, align 8
  %1 = call i32 @_D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNeKQmJmZw(i64* nonnull dereferenceable(8) %numCodeUnits, { i64, i8* }* nonnull dereferenceable(16) %str) #1 ; [#uses = 1]
  ret i32 %1
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i64 @_D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG1wwZm(i32 %c_arg, [1 x i32]* dereferenceable(4) %buf) local_unnamed_addr #2 {
arrayinit.cond:
  %.lval_copy_for_ImplicitByvalRewrite.i = alloca { i64, i8* }, align 8 ; [#uses = 4, size/byte = 16]
  %arrayliteral.i = alloca [1 x i32], align 4     ; [#uses = 2, size/byte = 4]
  %0 = getelementptr inbounds [1 x i32], [1 x i32]* %buf, i64 0, i64 0 ; [#uses = 2, type = i32*]
  store i32 65535, i32* %0, align 4
  %1 = and i32 %c_arg, -2048                      ; [#uses = 1]
  %2 = icmp eq i32 %1, 55296                      ; [#uses = 1]
  %3 = icmp ugt i32 %c_arg, 1114111               ; [#uses = 1]
  %ororval = or i1 %3, %2                         ; [#uses = 1]
  br i1 %ororval, label %if, label %else

if:                                               ; preds = %arrayinit.cond
  %4 = bitcast { i64, i8* }* %.lval_copy_for_ImplicitByvalRewrite.i to i8* ; [#uses = 1]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %4)
  %5 = bitcast [1 x i32]* %arrayliteral.i to i8*  ; [#uses = 1]
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %5)
  %.newclass_gc_alloc.i = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D3std3utf12UTFException7__ClassZ) #3 ; [#uses = 4]
  %.newclass_gc.i = bitcast %object.Object* %.newclass_gc_alloc.i to %std.utf.UTFException* ; [#uses = 2]
  %vtbl.i = bitcast %object.Object* %.newclass_gc_alloc.i to [11 x i8*]** ; [#uses = 2]
  store [11 x i8*]* @_D3std3utf12UTFException6__vtblZ, [11 x i8*]** %vtbl.i, align 8
  %6 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc.i, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* null, i8** %6, align 8
  %7 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc.i, i64 1 ; [#uses = 1, type = %object.Object*]
  %8 = bitcast %object.Object* %7 to i8*          ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(96) %8, i8* nonnull align 8 dereferenceable(96) bitcast ({ i64, i8* }* getelementptr inbounds (%std.utf.UTFException, %std.utf.UTFException* @_D3std3utf12UTFException6__initZ, i64 0, i32 2) to i8*), i64 96, i1 false)
  %msg.sroa.0.0..sroa_idx.i = getelementptr inbounds { i64, i8* }, { i64, i8* }* %.lval_copy_for_ImplicitByvalRewrite.i, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 40, i64* %msg.sroa.0.0..sroa_idx.i, align 8
  %msg.sroa.2.0..sroa_idx1.i = getelementptr inbounds { i64, i8* }, { i64, i8* }* %.lval_copy_for_ImplicitByvalRewrite.i, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.30, i64 0, i64 0), i8** %msg.sroa.2.0..sroa_idx1.i, align 8
  %9 = tail call %std.utf.UTFException* @_D3std3utf12UTFException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl(%std.utf.UTFException* nonnull returned %.newclass_gc.i, %object.Throwable* null, i64 2301, { i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, { i64, i8* }* nonnull byval align 8 %.lval_copy_for_ImplicitByvalRewrite.i) #1 ; [#uses = 0]
  %10 = load [11 x i8*]*, [11 x i8*]** %vtbl.i, align 8 ; [#uses = 1]
  %"setSequence@vtbl.i" = getelementptr inbounds [11 x i8*], [11 x i8*]* %10, i64 0, i64 10 ; [#uses = 1, type = i8**]
  %11 = bitcast i8** %"setSequence@vtbl.i" to %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** ; [#uses = 1]
  %12 = load %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })*, %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** %11, align 8 ; [#uses = 1]
  %13 = getelementptr inbounds [1 x i32], [1 x i32]* %arrayliteral.i, i64 0, i64 0 ; [#uses = 2, type = i32*]
  store i32 %c_arg, i32* %13, align 4
  %14 = insertvalue { i64, i32* } { i64 1, i32* undef }, i32* %13, 1 ; [#uses = 1]
  %15 = call %std.utf.UTFException* %12(%std.utf.UTFException* nonnull %.newclass_gc.i, { i64, i32* } %14) ; [#uses = 1]
  %16 = bitcast %std.utf.UTFException* %15 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %16) #4
  unreachable

else:                                             ; preds = %arrayinit.cond
  %17 = tail call zeroext i1 @_D3std3utf12isValidDcharFNaNbNiNfwZb(i32 %c_arg) #1 ; [#uses = 1]
  br i1 %17, label %endif, label %assertFailed

assertFailed:                                     ; preds = %else
  tail call void @_d_assert({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 2506) #4
  unreachable

endif:                                            ; preds = %else
  store i32 %c_arg, i32* %0, align 4
  ret i64 1
}

; [#uses = 2]
declare i32 @_D3std3utf10strideImplFNaNeamZk(i64, i8 zeroext) local_unnamed_addr #1

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNeKQmJmZw(i64* dereferenceable(8) %numCodeUnits, { i64, i8* }* dereferenceable(16) %str) local_unnamed_addr #2 {
  store i64 0, i64* %numCodeUnits, align 8
  %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 0 ; [#uses = 5, type = i64*]
  %.len.i = load i64, i64* %1, align 8            ; [#uses = 2]
  %.not.i = icmp eq i64 %.len.i, 0                ; [#uses = 1]
  br i1 %.not.i, label %assertFailed, label %bounds.ok

bounds.ok:                                        ; preds = %0
  %2 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 1 ; [#uses = 5, type = i8**]
  %.ptr = load i8*, i8** %2, align 8              ; [#uses = 2]
  %3 = load i8, i8* %.ptr, align 1                ; [#uses = 1]
  %4 = icmp sgt i8 %3, -1                         ; [#uses = 1]
  br i1 %4, label %if, label %else

if:                                               ; preds = %bounds.ok
  store i64 1, i64* %numCodeUnits, align 8
  %.len1 = load i64, i64* %1, align 8             ; [#uses = 2]
  %bounds.cmp2.not = icmp eq i64 %.len1, 0        ; [#uses = 1]
  br i1 %bounds.cmp2.not, label %bounds.fail4, label %bounds.ok3

bounds.ok3:                                       ; preds = %if
  %.ptr5 = load i8*, i8** %2, align 8             ; [#uses = 2]
  %5 = load i8, i8* %.ptr5, align 1               ; [#uses = 1]
  %lowerbound = getelementptr inbounds i8, i8* %.ptr5, i64 1 ; [#uses = 1, type = i8*]
  %6 = add i64 %.len1, -1                         ; [#uses = 1]
  store i64 %6, i64* %1, align 8
  store i8* %lowerbound, i8** %2, align 8
  %7 = zext i8 %5 to i32                          ; [#uses = 1]
  br label %label.__returnLabel

bounds.fail4:                                     ; preds = %if
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 1292, i64 0, i64 0) #4
  unreachable

else:                                             ; preds = %bounds.ok
  %8 = insertvalue { i64, i8* } undef, i64 %.len.i, 0 ; [#uses = 1]
  %9 = insertvalue { i64, i8* } %8, i8* %.ptr, 1  ; [#uses = 1]
  %10 = tail call i32 @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaQkKmZw(i64* nonnull dereferenceable(8) %numCodeUnits, { i64, i8* } %9) #1 ; [#uses = 1]
  %11 = load i64, i64* %numCodeUnits, align 8     ; [#uses = 4]
  %.len14 = load i64, i64* %1, align 8            ; [#uses = 4]
  %bounds.cmp.lo18.not = icmp ult i64 %.len14, %11 ; [#uses = 1]
  br i1 %bounds.cmp.lo18.not, label %bounds.fail16, label %bounds.ok15

bounds.ok15:                                      ; preds = %else
  %.ptr19 = load i8*, i8** %2, align 8            ; [#uses = 1]
  %lowerbound20 = getelementptr inbounds i8, i8* %.ptr19, i64 %11 ; [#uses = 1, type = i8*]
  %12 = sub i64 %.len14, %11                      ; [#uses = 1]
  store i64 %12, i64* %1, align 8
  store i8* %lowerbound20, i8** %2, align 8
  br label %label.__returnLabel

bounds.fail16:                                    ; preds = %else
  tail call void @_d_arraybounds_slice({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 1299, i64 %11, i64 %.len14, i64 %.len14) #4
  unreachable

label.__returnLabel:                              ; preds = %bounds.ok15, %bounds.ok3
  %__result.0 = phi i32 [ %7, %bounds.ok3 ], [ %10, %bounds.ok15 ] ; [#uses = 2, type = i32]
  %13 = tail call zeroext i1 @_D3std3utf12isValidDcharFNaNbNiNfwZb(i32 %__result.0) #1 ; [#uses = 1]
  br i1 %13, label %assertPassed23, label %assertFailed24

assertPassed23:                                   ; preds = %label.__returnLabel
  ret i32 %__result.0

assertFailed24:                                   ; preds = %label.__returnLabel
  tail call void @_d_assert({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 1285) #4
  unreachable

assertFailed:                                     ; preds = %0
  tail call void @_d_assert({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 1281) #4
  unreachable
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaQkKmZw(i64* dereferenceable(8) %index, { i64, i8* } %str_arg) local_unnamed_addr #2 {
  %.frame = alloca %nest.decodeImpl, align 8      ; [#uses = 15, size/byte = 16]
  %str_arg.fca.0.extract = extractvalue { i64, i8* } %str_arg, 0 ; [#uses = 1]
  %str_arg.fca.1.extract = extractvalue { i64, i8* } %str_arg, 1 ; [#uses = 1]
  %pstr = getelementptr inbounds %nest.decodeImpl, %nest.decodeImpl* %.frame, i64 0, i32 0 ; [#uses = 1, type = i8**]
  %length = getelementptr inbounds %nest.decodeImpl, %nest.decodeImpl* %.frame, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %1 = load i64, i64* %index, align 8             ; [#uses = 4]
  %2 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 %1 ; [#uses = 5, type = i8*]
  store i8* %2, i8** %pstr, align 8
  %3 = sub i64 %str_arg.fca.0.extract, %1         ; [#uses = 4]
  store i64 %3, i64* %length, align 8
  %4 = load i8, i8* %2, align 1                   ; [#uses = 4]
  %5 = zext i8 %4 to i32                          ; [#uses = 3]
  %6 = and i32 %5, 192                            ; [#uses = 1]
  %.not = icmp eq i32 %6, 192                     ; [#uses = 1]
  br i1 %.not, label %endif, label %if

if:                                               ; preds = %0
  %7 = bitcast %nest.decodeImpl* %.frame to i8*   ; [#uses = 1]
  %8 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %7) #2 ; [#uses = 1]
  %9 = bitcast %std.utf.UTFException* %8 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %9) #4
  unreachable

endif:                                            ; preds = %0
  %10 = icmp eq i64 %3, 1                         ; [#uses = 1]
  br i1 %10, label %if3, label %endif4

if3:                                              ; preds = %endif
  %11 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %12 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ11outOfBoundsMFNaNbZCQFgQFf12UTFException(i8* nonnull %11) #2 ; [#uses = 1]
  %13 = bitcast %std.utf.UTFException* %12 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %13) #4
  unreachable

endif4:                                           ; preds = %endif
  %14 = getelementptr inbounds i8, i8* %2, i64 1  ; [#uses = 1, type = i8*]
  %15 = load i8, i8* %14, align 1                 ; [#uses = 1]
  %16 = zext i8 %15 to i32                        ; [#uses = 2]
  %17 = and i32 %16, 192                          ; [#uses = 1]
  %.not75 = icmp eq i32 %17, 128                  ; [#uses = 1]
  br i1 %.not75, label %endif7, label %if6

if6:                                              ; preds = %endif4
  %18 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %19 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %18) #2 ; [#uses = 1]
  %20 = bitcast %std.utf.UTFException* %19 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %20) #4
  unreachable

endif7:                                           ; preds = %endif4
  %21 = shl nuw nsw i32 %5, 6                     ; [#uses = 1]
  %22 = and i32 %16, 63                           ; [#uses = 1]
  %23 = or i32 %22, %21                           ; [#uses = 4]
  %.mask79 = and i8 %4, 32                        ; [#uses = 1]
  %24 = icmp eq i8 %.mask79, 0                    ; [#uses = 1]
  br i1 %24, label %if9, label %unrolledstmt1

if9:                                              ; preds = %endif7
  %25 = and i32 %5, 30                            ; [#uses = 1]
  %26 = icmp eq i32 %25, 0                        ; [#uses = 1]
  br i1 %26, label %if11, label %endif12

if11:                                             ; preds = %if9
  %27 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %28 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %27) #2 ; [#uses = 1]
  %29 = bitcast %std.utf.UTFException* %28 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %29) #4
  unreachable

endif12:                                          ; preds = %if9
  %30 = and i32 %23, 2047                         ; [#uses = 1]
  %31 = add i64 %1, 2                             ; [#uses = 1]
  store i64 %31, i64* %index, align 8
  ret i32 %30

unrolledstmt1:                                    ; preds = %endif7
  %32 = icmp eq i64 %3, 2                         ; [#uses = 1]
  br i1 %32, label %if14, label %endif15

if14:                                             ; preds = %unrolledstmt1
  %33 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %34 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ11outOfBoundsMFNaNbZCQFgQFf12UTFException(i8* nonnull %33) #2 ; [#uses = 1]
  %35 = bitcast %std.utf.UTFException* %34 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %35) #4
  unreachable

endif15:                                          ; preds = %unrolledstmt1
  %36 = getelementptr inbounds i8, i8* %2, i64 2  ; [#uses = 1, type = i8*]
  %37 = load i8, i8* %36, align 1                 ; [#uses = 1]
  %38 = zext i8 %37 to i32                        ; [#uses = 2]
  %39 = and i32 %38, 192                          ; [#uses = 1]
  %.not76 = icmp eq i32 %39, 128                  ; [#uses = 1]
  br i1 %.not76, label %endif18, label %if17

if17:                                             ; preds = %endif15
  %40 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %41 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %40) #2 ; [#uses = 1]
  %42 = bitcast %std.utf.UTFException* %41 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %42) #4
  unreachable

endif18:                                          ; preds = %endif15
  %43 = shl nuw nsw i32 %23, 6                    ; [#uses = 1]
  %44 = and i32 %38, 63                           ; [#uses = 1]
  %45 = or i32 %44, %43                           ; [#uses = 2]
  %.mask80 = and i8 %4, 16                        ; [#uses = 1]
  %46 = icmp eq i8 %.mask80, 0                    ; [#uses = 1]
  br i1 %46, label %if20, label %unrolledstmt2

if20:                                             ; preds = %endif18
  %47 = and i32 %45, 65535                        ; [#uses = 2]
  %48 = and i32 %23, 992                          ; [#uses = 1]
  %49 = icmp eq i32 %48, 0                        ; [#uses = 1]
  br i1 %49, label %if22, label %endif23

if22:                                             ; preds = %if20
  %50 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %51 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %50) #2 ; [#uses = 1]
  %52 = bitcast %std.utf.UTFException* %51 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %52) #4
  unreachable

endif23:                                          ; preds = %if20
  %53 = tail call zeroext i1 @_D3std3utf12isValidDcharFNaNbNiNfwZb(i32 %47) #1 ; [#uses = 1]
  br i1 %53, label %endif26, label %if25

if25:                                             ; preds = %endif23
  %54 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %55 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %54) #2 ; [#uses = 1]
  %56 = bitcast %std.utf.UTFException* %55 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %56) #4
  unreachable

endif26:                                          ; preds = %endif23
  %57 = load i64, i64* %index, align 8            ; [#uses = 1]
  %58 = add i64 %57, 3                            ; [#uses = 1]
  store i64 %58, i64* %index, align 8
  ret i32 %47

unrolledstmt2:                                    ; preds = %endif18
  %59 = icmp eq i64 %3, 3                         ; [#uses = 1]
  br i1 %59, label %if29, label %endif30

if29:                                             ; preds = %unrolledstmt2
  %60 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %61 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ11outOfBoundsMFNaNbZCQFgQFf12UTFException(i8* nonnull %60) #2 ; [#uses = 1]
  %62 = bitcast %std.utf.UTFException* %61 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %62) #4
  unreachable

endif30:                                          ; preds = %unrolledstmt2
  %63 = getelementptr inbounds i8, i8* %2, i64 3  ; [#uses = 1, type = i8*]
  %64 = load i8, i8* %63, align 1                 ; [#uses = 1]
  %65 = zext i8 %64 to i32                        ; [#uses = 2]
  %66 = and i32 %65, 192                          ; [#uses = 1]
  %.not77 = icmp eq i32 %66, 128                  ; [#uses = 1]
  br i1 %.not77, label %endif33, label %if32

if32:                                             ; preds = %endif30
  %67 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %68 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %67) #2 ; [#uses = 1]
  %69 = bitcast %std.utf.UTFException* %68 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %69) #4
  unreachable

endif33:                                          ; preds = %endif30
  %.mask = and i8 %4, 8                           ; [#uses = 1]
  %.not78 = icmp eq i8 %.mask, 0                  ; [#uses = 1]
  br i1 %.not78, label %if35, label %unrolledend

if35:                                             ; preds = %endif33
  %70 = shl nuw nsw i32 %45, 6                    ; [#uses = 1]
  %71 = and i32 %65, 63                           ; [#uses = 1]
  %.masked = and i32 %70, 2097088                 ; [#uses = 1]
  %72 = or i32 %71, %.masked                      ; [#uses = 2]
  %73 = and i32 %23, 496                          ; [#uses = 1]
  %74 = icmp eq i32 %73, 0                        ; [#uses = 1]
  br i1 %74, label %if37, label %endif38

if37:                                             ; preds = %if35
  %75 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %76 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %75) #2 ; [#uses = 1]
  %77 = bitcast %std.utf.UTFException* %76 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %77) #4
  unreachable

endif38:                                          ; preds = %if35
  %78 = add i64 %1, 4                             ; [#uses = 1]
  store i64 %78, i64* %index, align 8
  %79 = icmp ugt i32 %72, 1114111                 ; [#uses = 1]
  br i1 %79, label %if40, label %endif41

if40:                                             ; preds = %endif38
  %80 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %81 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %80) #2 ; [#uses = 1]
  %82 = bitcast %std.utf.UTFException* %81 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %82) #4
  unreachable

endif41:                                          ; preds = %endif38
  ret i32 %72

unrolledend:                                      ; preds = %endif33
  %83 = bitcast %nest.decodeImpl* %.frame to i8*  ; [#uses = 1]
  %84 = call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %83) #2 ; [#uses = 1]
  %85 = bitcast %std.utf.UTFException* %84 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %85) #4
  unreachable
}

; [#uses = 3]
declare zeroext i1 @_D3std3utf12isValidDcharFNaNbNiNfwZb(i32) local_unnamed_addr #1

; [#uses = 10]
; Function Attrs: uwtable
define weak_odr %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %.nest_arg) local_unnamed_addr #2 {
bounds.ok.i:
  %sequence.i = alloca [4 x i32], align 4         ; [#uses = 6, size/byte = 16]
  %pstr = bitcast i8* %.nest_arg to i8**          ; [#uses = 1]
  %length = getelementptr inbounds i8, i8* %.nest_arg, i64 8 ; [#uses = 1, type = i8*]
  %0 = bitcast i8* %length to i64*                ; [#uses = 1]
  %1 = load i64, i64* %0, align 8                 ; [#uses = 9]
  %2 = load i8*, i8** %pstr, align 8              ; [#uses = 7]
  %3 = bitcast [4 x i32]* %sequence.i to i8*      ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %3)
  %exitcond.not.i = icmp eq i64 %1, 0             ; [#uses = 1]
  br i1 %exitcond.not.i, label %bounds.fail3.i, label %bounds.ok2.i

bounds.ok2.i:                                     ; preds = %bounds.ok.i
  %4 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 0 ; [#uses = 1, type = i32*]
  %5 = load i8, i8* %2, align 1                   ; [#uses = 1]
  %6 = zext i8 %5 to i32                          ; [#uses = 1]
  store i32 %6, i32* %4, align 4
  %.not = icmp eq i64 %1, 1                       ; [#uses = 1]
  br i1 %.not, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit, label %bounds.ok9.i

bounds.fail3.i:                                   ; preds = %bounds.ok.i.3, %bounds.ok.i.2, %bounds.ok.i.1, %bounds.ok.i
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 1544, i64 %1, i64 %1) #4
  unreachable

bounds.ok9.i:                                     ; preds = %bounds.ok2.i
  %7 = getelementptr inbounds i8, i8* %2, i64 1   ; [#uses = 1, type = i8*]
  %8 = load i8, i8* %7, align 1                   ; [#uses = 1]
  %9 = and i8 %8, -64                             ; [#uses = 1]
  %10 = icmp eq i8 %9, -128                       ; [#uses = 1]
  br i1 %10, label %bounds.ok.i.1, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit: ; preds = %bounds.ok2.i.3, %bounds.ok2.i, %bounds.ok9.i.2, %bounds.ok2.i.2, %bounds.ok9.i.1, %bounds.ok2.i.1, %bounds.ok9.i
  %.lcssa = phi i64 [ 1, %bounds.ok2.i ], [ 1, %bounds.ok9.i ], [ 2, %bounds.ok2.i.1 ], [ 2, %bounds.ok9.i.1 ], [ 3, %bounds.ok2.i.2 ], [ 3, %bounds.ok9.i.2 ], [ 4, %bounds.ok2.i.3 ] ; [#uses = 2, type = i64]
  %.newclass_gc_alloc.i = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D3std3utf12UTFException7__ClassZ) #3 ; [#uses = 4]
  %.newclass_gc.i = bitcast %object.Object* %.newclass_gc_alloc.i to %std.utf.UTFException* ; [#uses = 2]
  %vtbl.i = bitcast %object.Object* %.newclass_gc_alloc.i to [11 x i8*]** ; [#uses = 2]
  store [11 x i8*]* @_D3std3utf12UTFException6__vtblZ, [11 x i8*]** %vtbl.i, align 8
  %11 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc.i, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* null, i8** %11, align 8
  %12 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc.i, i64 1 ; [#uses = 1, type = %object.Object*]
  %13 = bitcast %object.Object* %12 to i8*        ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(96) %13, i8* nonnull align 8 dereferenceable(96) bitcast ({ i64, i8* }* getelementptr inbounds (%std.utf.UTFException, %std.utf.UTFException* @_D3std3utf12UTFException6__initZ, i64 0, i32 2) to i8*), i64 96, i1 false)
  %14 = tail call %std.utf.UTFException* @_D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk(%std.utf.UTFException* nonnull returned %.newclass_gc.i, %object.Throwable* null, i64 1547, { i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i64 %.lcssa, { i64, i8* } { i64 22, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.28, i32 0, i32 0) }) #1 ; [#uses = 0]
  %15 = load [11 x i8*]*, [11 x i8*]** %vtbl.i, align 8 ; [#uses = 1]
  %"setSequence@vtbl.i" = getelementptr inbounds [11 x i8*], [11 x i8*]* %15, i64 0, i64 10 ; [#uses = 1, type = i8**]
  %16 = bitcast i8** %"setSequence@vtbl.i" to %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** ; [#uses = 1]
  %17 = load %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })*, %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** %16, align 8 ; [#uses = 1]
  %18 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 0 ; [#uses = 1, type = i32*]
  %19 = insertvalue { i64, i32* } undef, i64 %.lcssa, 0 ; [#uses = 1]
  %20 = insertvalue { i64, i32* } %19, i32* %18, 1 ; [#uses = 1]
  %21 = call %std.utf.UTFException* %17(%std.utf.UTFException* nonnull %.newclass_gc.i, { i64, i32* } %20) ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %3)
  ret %std.utf.UTFException* %21

bounds.ok.i.1:                                    ; preds = %bounds.ok9.i
  %exitcond.not.i.1 = icmp eq i64 %1, 1           ; [#uses = 1]
  br i1 %exitcond.not.i.1, label %bounds.fail3.i, label %bounds.ok2.i.1

bounds.ok2.i.1:                                   ; preds = %bounds.ok.i.1
  %22 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 1 ; [#uses = 1, type = i32*]
  %23 = getelementptr inbounds i8, i8* %2, i64 1  ; [#uses = 1, type = i8*]
  %24 = load i8, i8* %23, align 1                 ; [#uses = 1]
  %25 = zext i8 %24 to i32                        ; [#uses = 1]
  store i32 %25, i32* %22, align 4
  %26 = icmp ugt i64 %1, 2                        ; [#uses = 1]
  br i1 %26, label %bounds.ok9.i.1, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

bounds.ok9.i.1:                                   ; preds = %bounds.ok2.i.1
  %27 = getelementptr inbounds i8, i8* %2, i64 2  ; [#uses = 1, type = i8*]
  %28 = load i8, i8* %27, align 1                 ; [#uses = 1]
  %29 = and i8 %28, -64                           ; [#uses = 1]
  %30 = icmp eq i8 %29, -128                      ; [#uses = 1]
  br i1 %30, label %bounds.ok.i.2, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

bounds.ok.i.2:                                    ; preds = %bounds.ok9.i.1
  %exitcond.not.i.2 = icmp eq i64 %1, 2           ; [#uses = 1]
  br i1 %exitcond.not.i.2, label %bounds.fail3.i, label %bounds.ok2.i.2

bounds.ok2.i.2:                                   ; preds = %bounds.ok.i.2
  %31 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 2 ; [#uses = 1, type = i32*]
  %32 = getelementptr inbounds i8, i8* %2, i64 2  ; [#uses = 1, type = i8*]
  %33 = load i8, i8* %32, align 1                 ; [#uses = 1]
  %34 = zext i8 %33 to i32                        ; [#uses = 1]
  store i32 %34, i32* %31, align 4
  %35 = icmp ugt i64 %1, 3                        ; [#uses = 1]
  br i1 %35, label %bounds.ok9.i.2, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

bounds.ok9.i.2:                                   ; preds = %bounds.ok2.i.2
  %36 = getelementptr inbounds i8, i8* %2, i64 3  ; [#uses = 1, type = i8*]
  %37 = load i8, i8* %36, align 1                 ; [#uses = 1]
  %38 = and i8 %37, -64                           ; [#uses = 1]
  %39 = icmp eq i8 %38, -128                      ; [#uses = 1]
  br i1 %39, label %bounds.ok.i.3, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

bounds.ok.i.3:                                    ; preds = %bounds.ok9.i.2
  %exitcond.not.i.3 = icmp eq i64 %1, 3           ; [#uses = 1]
  br i1 %exitcond.not.i.3, label %bounds.fail3.i, label %bounds.ok2.i.3

bounds.ok2.i.3:                                   ; preds = %bounds.ok.i.3
  %40 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 3 ; [#uses = 1, type = i32*]
  %41 = getelementptr inbounds i8, i8* %2, i64 3  ; [#uses = 1, type = i8*]
  %42 = load i8, i8* %41, align 1                 ; [#uses = 1]
  %43 = zext i8 %42 to i32                        ; [#uses = 1]
  store i32 %43, i32* %40, align 4
  br label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException({ i64, i8* } %msg_arg, { i64, i8* } %str_arg) local_unnamed_addr #2 {
bounds.ok:
  %sequence = alloca [4 x i32], align 4           ; [#uses = 5, size/byte = 16]
  %str_arg.fca.0.extract = extractvalue { i64, i8* } %str_arg, 0 ; [#uses = 9]
  %str_arg.fca.1.extract = extractvalue { i64, i8* } %str_arg, 1 ; [#uses = 7]
  %exitcond.not = icmp eq i64 %str_arg.fca.0.extract, 0 ; [#uses = 1]
  br i1 %exitcond.not, label %bounds.fail3, label %bounds.ok2

bounds.ok2:                                       ; preds = %bounds.ok
  %0 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence, i64 0, i64 0 ; [#uses = 1, type = i32*]
  %1 = load i8, i8* %str_arg.fca.1.extract, align 1 ; [#uses = 1]
  %2 = zext i8 %1 to i32                          ; [#uses = 1]
  store i32 %2, i32* %0, align 4
  %.not = icmp eq i64 %str_arg.fca.0.extract, 1   ; [#uses = 1]
  br i1 %.not, label %enddowhile, label %bounds.ok9

bounds.fail3:                                     ; preds = %bounds.ok.3, %bounds.ok.2, %bounds.ok.1, %bounds.ok
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 1544, i64 %str_arg.fca.0.extract, i64 %str_arg.fca.0.extract) #4
  unreachable

bounds.ok9:                                       ; preds = %bounds.ok2
  %3 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 1 ; [#uses = 1, type = i8*]
  %4 = load i8, i8* %3, align 1                   ; [#uses = 1]
  %5 = and i8 %4, -64                             ; [#uses = 1]
  %6 = icmp eq i8 %5, -128                        ; [#uses = 1]
  br i1 %6, label %bounds.ok.1, label %enddowhile

enddowhile:                                       ; preds = %bounds.ok2.3, %bounds.ok2, %bounds.ok9.2, %bounds.ok2.2, %bounds.ok9.1, %bounds.ok2.1, %bounds.ok9
  %.lcssa = phi i64 [ 1, %bounds.ok2 ], [ 1, %bounds.ok9 ], [ 2, %bounds.ok2.1 ], [ 2, %bounds.ok9.1 ], [ 3, %bounds.ok2.2 ], [ 3, %bounds.ok9.2 ], [ 4, %bounds.ok2.3 ] ; [#uses = 2, type = i64]
  %.newclass_gc_alloc = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D3std3utf12UTFException7__ClassZ) #3 ; [#uses = 4]
  %.newclass_gc = bitcast %object.Object* %.newclass_gc_alloc to %std.utf.UTFException* ; [#uses = 2]
  %vtbl = bitcast %object.Object* %.newclass_gc_alloc to [11 x i8*]** ; [#uses = 2]
  store [11 x i8*]* @_D3std3utf12UTFException6__vtblZ, [11 x i8*]** %vtbl, align 8
  %7 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* null, i8** %7, align 8
  %8 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc, i64 1 ; [#uses = 1, type = %object.Object*]
  %9 = bitcast %object.Object* %8 to i8*          ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(96) %9, i8* nonnull align 8 dereferenceable(96) bitcast ({ i64, i8* }* getelementptr inbounds (%std.utf.UTFException, %std.utf.UTFException* @_D3std3utf12UTFException6__initZ, i64 0, i32 2) to i8*), i64 96, i1 false)
  %10 = tail call %std.utf.UTFException* @_D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk(%std.utf.UTFException* nonnull returned %.newclass_gc, %object.Throwable* null, i64 1547, { i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i64 %.lcssa, { i64, i8* } %msg_arg) #1 ; [#uses = 0]
  %11 = load [11 x i8*]*, [11 x i8*]** %vtbl, align 8 ; [#uses = 1]
  %"setSequence@vtbl" = getelementptr inbounds [11 x i8*], [11 x i8*]* %11, i64 0, i64 10 ; [#uses = 1, type = i8**]
  %12 = bitcast i8** %"setSequence@vtbl" to %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** ; [#uses = 1]
  %13 = load %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })*, %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** %12, align 8 ; [#uses = 1]
  %14 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence, i64 0, i64 0 ; [#uses = 1, type = i32*]
  %15 = insertvalue { i64, i32* } undef, i64 %.lcssa, 0 ; [#uses = 1]
  %16 = insertvalue { i64, i32* } %15, i32* %14, 1 ; [#uses = 1]
  %17 = call %std.utf.UTFException* %13(%std.utf.UTFException* nonnull %.newclass_gc, { i64, i32* } %16) ; [#uses = 1]
  ret %std.utf.UTFException* %17

bounds.ok.1:                                      ; preds = %bounds.ok9
  %exitcond.not.1 = icmp eq i64 %str_arg.fca.0.extract, 1 ; [#uses = 1]
  br i1 %exitcond.not.1, label %bounds.fail3, label %bounds.ok2.1

bounds.ok2.1:                                     ; preds = %bounds.ok.1
  %18 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence, i64 0, i64 1 ; [#uses = 1, type = i32*]
  %19 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 1 ; [#uses = 1, type = i8*]
  %20 = load i8, i8* %19, align 1                 ; [#uses = 1]
  %21 = zext i8 %20 to i32                        ; [#uses = 1]
  store i32 %21, i32* %18, align 4
  %22 = icmp ugt i64 %str_arg.fca.0.extract, 2    ; [#uses = 1]
  br i1 %22, label %bounds.ok9.1, label %enddowhile

bounds.ok9.1:                                     ; preds = %bounds.ok2.1
  %23 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 2 ; [#uses = 1, type = i8*]
  %24 = load i8, i8* %23, align 1                 ; [#uses = 1]
  %25 = and i8 %24, -64                           ; [#uses = 1]
  %26 = icmp eq i8 %25, -128                      ; [#uses = 1]
  br i1 %26, label %bounds.ok.2, label %enddowhile

bounds.ok.2:                                      ; preds = %bounds.ok9.1
  %exitcond.not.2 = icmp eq i64 %str_arg.fca.0.extract, 2 ; [#uses = 1]
  br i1 %exitcond.not.2, label %bounds.fail3, label %bounds.ok2.2

bounds.ok2.2:                                     ; preds = %bounds.ok.2
  %27 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence, i64 0, i64 2 ; [#uses = 1, type = i32*]
  %28 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 2 ; [#uses = 1, type = i8*]
  %29 = load i8, i8* %28, align 1                 ; [#uses = 1]
  %30 = zext i8 %29 to i32                        ; [#uses = 1]
  store i32 %30, i32* %27, align 4
  %31 = icmp ugt i64 %str_arg.fca.0.extract, 3    ; [#uses = 1]
  br i1 %31, label %bounds.ok9.2, label %enddowhile

bounds.ok9.2:                                     ; preds = %bounds.ok2.2
  %32 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 3 ; [#uses = 1, type = i8*]
  %33 = load i8, i8* %32, align 1                 ; [#uses = 1]
  %34 = and i8 %33, -64                           ; [#uses = 1]
  %35 = icmp eq i8 %34, -128                      ; [#uses = 1]
  br i1 %35, label %bounds.ok.3, label %enddowhile

bounds.ok.3:                                      ; preds = %bounds.ok9.2
  %exitcond.not.3 = icmp eq i64 %str_arg.fca.0.extract, 3 ; [#uses = 1]
  br i1 %exitcond.not.3, label %bounds.fail3, label %bounds.ok2.3

bounds.ok2.3:                                     ; preds = %bounds.ok.3
  %36 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence, i64 0, i64 3 ; [#uses = 1, type = i32*]
  %37 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 3 ; [#uses = 1, type = i8*]
  %38 = load i8, i8* %37, align 1                 ; [#uses = 1]
  %39 = zext i8 %38 to i32                        ; [#uses = 1]
  store i32 %39, i32* %36, align 4
  br label %enddowhile
}

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ11outOfBoundsMFNaNbZCQFgQFf12UTFException(i8* nonnull %.nest_arg) local_unnamed_addr #2 {
bounds.ok.i:
  %sequence.i = alloca [4 x i32], align 4         ; [#uses = 6, size/byte = 16]
  %pstr = bitcast i8* %.nest_arg to i8**          ; [#uses = 1]
  %length = getelementptr inbounds i8, i8* %.nest_arg, i64 8 ; [#uses = 1, type = i8*]
  %0 = bitcast i8* %length to i64*                ; [#uses = 1]
  %1 = load i64, i64* %0, align 8                 ; [#uses = 9]
  %2 = load i8*, i8** %pstr, align 8              ; [#uses = 7]
  %3 = bitcast [4 x i32]* %sequence.i to i8*      ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %3)
  %exitcond.not.i = icmp eq i64 %1, 0             ; [#uses = 1]
  br i1 %exitcond.not.i, label %bounds.fail3.i, label %bounds.ok2.i

bounds.ok2.i:                                     ; preds = %bounds.ok.i
  %4 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 0 ; [#uses = 1, type = i32*]
  %5 = load i8, i8* %2, align 1                   ; [#uses = 1]
  %6 = zext i8 %5 to i32                          ; [#uses = 1]
  store i32 %6, i32* %4, align 4
  %.not = icmp eq i64 %1, 1                       ; [#uses = 1]
  br i1 %.not, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit, label %bounds.ok9.i

bounds.fail3.i:                                   ; preds = %bounds.ok.i.3, %bounds.ok.i.2, %bounds.ok.i.1, %bounds.ok.i
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i32 1544, i64 %1, i64 %1) #4
  unreachable

bounds.ok9.i:                                     ; preds = %bounds.ok2.i
  %7 = getelementptr inbounds i8, i8* %2, i64 1   ; [#uses = 1, type = i8*]
  %8 = load i8, i8* %7, align 1                   ; [#uses = 1]
  %9 = and i8 %8, -64                             ; [#uses = 1]
  %10 = icmp eq i8 %9, -128                       ; [#uses = 1]
  br i1 %10, label %bounds.ok.i.1, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit: ; preds = %bounds.ok2.i.3, %bounds.ok2.i, %bounds.ok9.i.2, %bounds.ok2.i.2, %bounds.ok9.i.1, %bounds.ok2.i.1, %bounds.ok9.i
  %.lcssa = phi i64 [ 1, %bounds.ok2.i ], [ 1, %bounds.ok9.i ], [ 2, %bounds.ok2.i.1 ], [ 2, %bounds.ok9.i.1 ], [ 3, %bounds.ok2.i.2 ], [ 3, %bounds.ok9.i.2 ], [ 4, %bounds.ok2.i.3 ] ; [#uses = 2, type = i64]
  %.newclass_gc_alloc.i = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D3std3utf12UTFException7__ClassZ) #3 ; [#uses = 4]
  %.newclass_gc.i = bitcast %object.Object* %.newclass_gc_alloc.i to %std.utf.UTFException* ; [#uses = 2]
  %vtbl.i = bitcast %object.Object* %.newclass_gc_alloc.i to [11 x i8*]** ; [#uses = 2]
  store [11 x i8*]* @_D3std3utf12UTFException6__vtblZ, [11 x i8*]** %vtbl.i, align 8
  %11 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc.i, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* null, i8** %11, align 8
  %12 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc.i, i64 1 ; [#uses = 1, type = %object.Object*]
  %13 = bitcast %object.Object* %12 to i8*        ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(96) %13, i8* nonnull align 8 dereferenceable(96) bitcast ({ i64, i8* }* getelementptr inbounds (%std.utf.UTFException, %std.utf.UTFException* @_D3std3utf12UTFException6__initZ, i64 0, i32 2) to i8*), i64 96, i1 false)
  %14 = tail call %std.utf.UTFException* @_D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk(%std.utf.UTFException* nonnull returned %.newclass_gc.i, %object.Throwable* null, i64 1547, { i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, i64 %.lcssa, { i64, i8* } { i64 44, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.29, i32 0, i32 0) }) #1 ; [#uses = 0]
  %15 = load [11 x i8*]*, [11 x i8*]** %vtbl.i, align 8 ; [#uses = 1]
  %"setSequence@vtbl.i" = getelementptr inbounds [11 x i8*], [11 x i8*]* %15, i64 0, i64 10 ; [#uses = 1, type = i8**]
  %16 = bitcast i8** %"setSequence@vtbl.i" to %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** ; [#uses = 1]
  %17 = load %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })*, %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** %16, align 8 ; [#uses = 1]
  %18 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 0 ; [#uses = 1, type = i32*]
  %19 = insertvalue { i64, i32* } undef, i64 %.lcssa, 0 ; [#uses = 1]
  %20 = insertvalue { i64, i32* } %19, i32* %18, 1 ; [#uses = 1]
  %21 = call %std.utf.UTFException* %17(%std.utf.UTFException* nonnull %.newclass_gc.i, { i64, i32* } %20) ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %3)
  ret %std.utf.UTFException* %21

bounds.ok.i.1:                                    ; preds = %bounds.ok9.i
  %exitcond.not.i.1 = icmp eq i64 %1, 1           ; [#uses = 1]
  br i1 %exitcond.not.i.1, label %bounds.fail3.i, label %bounds.ok2.i.1

bounds.ok2.i.1:                                   ; preds = %bounds.ok.i.1
  %22 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 1 ; [#uses = 1, type = i32*]
  %23 = getelementptr inbounds i8, i8* %2, i64 1  ; [#uses = 1, type = i8*]
  %24 = load i8, i8* %23, align 1                 ; [#uses = 1]
  %25 = zext i8 %24 to i32                        ; [#uses = 1]
  store i32 %25, i32* %22, align 4
  %26 = icmp ugt i64 %1, 2                        ; [#uses = 1]
  br i1 %26, label %bounds.ok9.i.1, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

bounds.ok9.i.1:                                   ; preds = %bounds.ok2.i.1
  %27 = getelementptr inbounds i8, i8* %2, i64 2  ; [#uses = 1, type = i8*]
  %28 = load i8, i8* %27, align 1                 ; [#uses = 1]
  %29 = and i8 %28, -64                           ; [#uses = 1]
  %30 = icmp eq i8 %29, -128                      ; [#uses = 1]
  br i1 %30, label %bounds.ok.i.2, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

bounds.ok.i.2:                                    ; preds = %bounds.ok9.i.1
  %exitcond.not.i.2 = icmp eq i64 %1, 2           ; [#uses = 1]
  br i1 %exitcond.not.i.2, label %bounds.fail3.i, label %bounds.ok2.i.2

bounds.ok2.i.2:                                   ; preds = %bounds.ok.i.2
  %31 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 2 ; [#uses = 1, type = i32*]
  %32 = getelementptr inbounds i8, i8* %2, i64 2  ; [#uses = 1, type = i8*]
  %33 = load i8, i8* %32, align 1                 ; [#uses = 1]
  %34 = zext i8 %33 to i32                        ; [#uses = 1]
  store i32 %34, i32* %31, align 4
  %35 = icmp ugt i64 %1, 3                        ; [#uses = 1]
  br i1 %35, label %bounds.ok9.i.2, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

bounds.ok9.i.2:                                   ; preds = %bounds.ok2.i.2
  %36 = getelementptr inbounds i8, i8* %2, i64 3  ; [#uses = 1, type = i8*]
  %37 = load i8, i8* %36, align 1                 ; [#uses = 1]
  %38 = and i8 %37, -64                           ; [#uses = 1]
  %39 = icmp eq i8 %38, -128                      ; [#uses = 1]
  br i1 %39, label %bounds.ok.i.3, label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit

bounds.ok.i.3:                                    ; preds = %bounds.ok9.i.2
  %exitcond.not.i.3 = icmp eq i64 %1, 3           ; [#uses = 1]
  br i1 %exitcond.not.i.3, label %bounds.fail3.i, label %bounds.ok2.i.3

bounds.ok2.i.3:                                   ; preds = %bounds.ok.i.3
  %40 = getelementptr inbounds [4 x i32], [4 x i32]* %sequence.i, i64 0, i64 3 ; [#uses = 1, type = i32*]
  %41 = getelementptr inbounds i8, i8* %2, i64 3  ; [#uses = 1, type = i8*]
  %42 = load i8, i8* %41, align 1                 ; [#uses = 1]
  %43 = zext i8 %42 to i32                        ; [#uses = 1]
  store i32 %43, i32* %40, align 4
  br label %_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException.exit
}

; [#uses = 3]
declare %std.utf.UTFException* @_D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk(%std.utf.UTFException* nonnull returned, %object.Throwable*, i64, { i64, i8* }, i64, { i64, i8* }) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDmFNaNfQCiwZw(i32 %c_arg, { i64, i8* } %msg_arg) local_unnamed_addr #2 {
  %.lval_copy_for_ImplicitByvalRewrite = alloca { i64, i8* }, align 8 ; [#uses = 3, size/byte = 16]
  %arrayliteral = alloca [1 x i32], align 4       ; [#uses = 1, size/byte = 4]
  %msg_arg.fca.0.extract = extractvalue { i64, i8* } %msg_arg, 0 ; [#uses = 1]
  %msg_arg.fca.1.extract = extractvalue { i64, i8* } %msg_arg, 1 ; [#uses = 1]
  %.newclass_gc_alloc = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D3std3utf12UTFException7__ClassZ) #3 ; [#uses = 4]
  %.newclass_gc = bitcast %object.Object* %.newclass_gc_alloc to %std.utf.UTFException* ; [#uses = 2]
  %vtbl = bitcast %object.Object* %.newclass_gc_alloc to [11 x i8*]** ; [#uses = 2]
  store [11 x i8*]* @_D3std3utf12UTFException6__vtblZ, [11 x i8*]** %vtbl, align 8
  %1 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* null, i8** %1, align 8
  %2 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc, i64 1 ; [#uses = 1, type = %object.Object*]
  %3 = bitcast %object.Object* %2 to i8*          ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(96) %3, i8* nonnull align 8 dereferenceable(96) bitcast ({ i64, i8* }* getelementptr inbounds (%std.utf.UTFException, %std.utf.UTFException* @_D3std3utf12UTFException6__initZ, i64 0, i32 2) to i8*), i64 96, i1 false)
  %msg.sroa.0.0..sroa_idx = getelementptr inbounds { i64, i8* }, { i64, i8* }* %.lval_copy_for_ImplicitByvalRewrite, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %msg_arg.fca.0.extract, i64* %msg.sroa.0.0..sroa_idx, align 8
  %msg.sroa.2.0..sroa_idx1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %.lval_copy_for_ImplicitByvalRewrite, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %msg_arg.fca.1.extract, i8** %msg.sroa.2.0..sroa_idx1, align 8
  %4 = tail call %std.utf.UTFException* @_D3std3utf12UTFException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl(%std.utf.UTFException* nonnull returned %.newclass_gc, %object.Throwable* null, i64 2301, { i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i32 0, i32 0) }, { i64, i8* }* nonnull byval align 8 %.lval_copy_for_ImplicitByvalRewrite) #1 ; [#uses = 0]
  %5 = load [11 x i8*]*, [11 x i8*]** %vtbl, align 8 ; [#uses = 1]
  %"setSequence@vtbl" = getelementptr inbounds [11 x i8*], [11 x i8*]* %5, i64 0, i64 10 ; [#uses = 1, type = i8**]
  %6 = bitcast i8** %"setSequence@vtbl" to %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** ; [#uses = 1]
  %7 = load %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })*, %std.utf.UTFException* (%std.utf.UTFException*, { i64, i32* })** %6, align 8 ; [#uses = 1]
  %8 = getelementptr inbounds [1 x i32], [1 x i32]* %arrayliteral, i64 0, i64 0 ; [#uses = 2, type = i32*]
  store i32 %c_arg, i32* %8, align 4
  %9 = insertvalue { i64, i32* } { i64 1, i32* undef }, i32* %8, 1 ; [#uses = 1]
  %10 = call %std.utf.UTFException* %7(%std.utf.UTFException* nonnull %.newclass_gc, { i64, i32* } %9) ; [#uses = 1]
  %11 = bitcast %std.utf.UTFException* %10 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %11) #4
  unreachable
}

; [#uses = 2]
declare %std.utf.UTFException* @_D3std3utf12UTFException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl(%std.utf.UTFException* nonnull returned, %object.Throwable*, i64, { i64, i8* }, { i64, i8* }* byval align 8) local_unnamed_addr #1

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAaZQBrFNfKQBtQnZv({ i64, i8* } %e_arg, %std.stdio.File.LockingTextWriter* dereferenceable(48) %r) local_unnamed_addr #2 {
  %e_arg.fca.0.extract = extractvalue { i64, i8* } %e_arg, 0 ; [#uses = 4]
  %e_arg.fca.1.extract = extractvalue { i64, i8* } %e_arg, 1 ; [#uses = 2]
  %1 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %r, i64 0, i32 1 ; [#uses = 1, type = i32*]
  %2 = load i32, i32* %1, align 4                 ; [#uses = 1]
  %3 = icmp slt i32 %2, 1                         ; [#uses = 1]
  br i1 %3, label %if.i.i, label %forcond.preheader.i.i

forcond.preheader.i.i:                            ; preds = %0
  %.not11.i.i = icmp eq i64 %e_arg.fca.0.extract, 0 ; [#uses = 1]
  br i1 %.not11.i.i, label %_D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAaZQBtFNfKQBtKQoZv.exit, label %forbody.i.i

if.i.i:                                           ; preds = %0
  %4 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %r, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %5 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %4, align 8 ; [#uses = 1]
  %6 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %5, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %7 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %6, align 8 ; [#uses = 1]
  %8 = tail call i64 @fwrite(i8* %e_arg.fca.1.extract, i64 1, i64 %e_arg.fca.0.extract, %core.stdc.stdio._IO_FILE* %7) #1 ; [#uses = 1]
  %.not.i.i = icmp eq i64 %8, %e_arg.fca.0.extract ; [#uses = 1]
  br i1 %.not.i.i, label %_D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAaZQBtFNfKQBtKQoZv.exit, label %if1.i.i

if1.i.i:                                          ; preds = %if.i.i
  tail call void @_D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn({ i64, i8* } zeroinitializer, i64 3263, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }) #13
  unreachable

forbody.i.i:                                      ; preds = %forcond.preheader.i.i, %forbody.i.i
  %__key146.010.i.i = phi i64 [ %11, %forbody.i.i ], [ 0, %forcond.preheader.i.i ] ; [#uses = 2, type = i64]
  %9 = getelementptr inbounds i8, i8* %e_arg.fca.1.extract, i64 %__key146.010.i.i ; [#uses = 1, type = i8*]
  %10 = load i8, i8* %9, align 1                  ; [#uses = 1]
  tail call void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %r, i8 zeroext %10) #2
  %11 = add nuw i64 %__key146.010.i.i, 1          ; [#uses = 2]
  %exitcond.not.i.i = icmp eq i64 %11, %e_arg.fca.0.extract ; [#uses = 1]
  br i1 %exitcond.not.i.i, label %_D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAaZQBtFNfKQBtKQoZv.exit, label %forbody.i.i

_D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAaZQBtFNfKQBtKQoZv.exit: ; preds = %forbody.i.i, %forcond.preheader.i.i, %if.i.i
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZQd({ i64, i8* } %buf_arg, i64 %value_arg) local_unnamed_addr #2 {
endif:
  %buf_arg.fca.0.extract = extractvalue { i64, i8* } %buf_arg, 0 ; [#uses = 4]
  %buf_arg.fca.1.extract = extractvalue { i64, i8* } %buf_arg, 1 ; [#uses = 2]
  %0 = icmp slt i64 %value_arg, 0                 ; [#uses = 2]
  %negval = sub i64 0, %value_arg                 ; [#uses = 1]
  %spec.select = select i1 %0, i64 %negval, i64 %value_arg ; [#uses = 1]
  br label %dowhile.i

dowhile.i:                                        ; preds = %bounds.ok.i, %endif
  %value.0.i = phi i64 [ %spec.select, %endif ], [ %value.1.i, %bounds.ok.i ] ; [#uses = 4, type = i64]
  %i.0.i = phi i64 [ %buf_arg.fca.0.extract, %endif ], [ %4, %bounds.ok.i ] ; [#uses = 1, type = i64]
  %1 = icmp ult i64 %value.0.i, 10                ; [#uses = 1]
  br i1 %1, label %endif.i, label %else.i

else.i:                                           ; preds = %dowhile.i
  %2 = urem i64 %value.0.i, 10                    ; [#uses = 1]
  %3 = udiv i64 %value.0.i, 10                    ; [#uses = 1]
  br label %endif.i

endif.i:                                          ; preds = %else.i, %dowhile.i
  %value.1.i = phi i64 [ %3, %else.i ], [ 0, %dowhile.i ] ; [#uses = 2, type = i64]
  %x.0.in.i = phi i64 [ %2, %else.i ], [ %value.0.i, %dowhile.i ] ; [#uses = 1, type = i64]
  %4 = add i64 %i.0.i, -1                         ; [#uses = 7]
  %bounds.cmp.i = icmp ugt i64 %buf_arg.fca.0.extract, %4 ; [#uses = 1]
  br i1 %bounds.cmp.i, label %bounds.ok.i, label %bounds.fail.i

bounds.ok.i:                                      ; preds = %endif.i
  %x.0.i = trunc i64 %x.0.in.i to i8              ; [#uses = 1]
  %5 = getelementptr inbounds i8, i8* %buf_arg.fca.1.extract, i64 %4 ; [#uses = 1, type = i8*]
  %6 = add nuw nsw i8 %x.0.i, 48                  ; [#uses = 1]
  store i8 %6, i8* %5, align 1
  %.not.i = icmp eq i64 %value.1.i, 0             ; [#uses = 1]
  br i1 %.not.i, label %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit, label %dowhile.i

bounds.fail.i:                                    ; preds = %endif.i
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 48, i64 %4, i64 %buf_arg.fca.0.extract) #4
  unreachable

_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit: ; preds = %bounds.ok.i
  %7 = getelementptr inbounds i8, i8* %buf_arg.fca.1.extract, i64 %4 ; [#uses = 2, type = i8*]
  %8 = sub i64 %buf_arg.fca.0.extract, %4         ; [#uses = 2]
  br i1 %0, label %if2, label %endif3

if2:                                              ; preds = %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit
  %9 = icmp sgt i64 %4, 0                         ; [#uses = 1]
  br i1 %9, label %_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh.exit, label %assertFailed.i

assertFailed.i:                                   ; preds = %if2
  tail call void @_d_assert({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 122) #4
  unreachable

_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh.exit: ; preds = %if2
  %10 = getelementptr inbounds i8, i8* %7, i64 -1 ; [#uses = 2, type = i8*]
  %11 = add i64 %8, 1                             ; [#uses = 2]
  %bounds.cmp.not = icmp eq i64 %11, 0            ; [#uses = 1]
  br i1 %bounds.cmp.not, label %bounds.fail, label %bounds.ok

bounds.ok:                                        ; preds = %_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh.exit
  store i8 45, i8* %10, align 1
  br label %endif3

bounds.fail:                                      ; preds = %_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh.exit
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 124, i64 0, i64 0) #4
  unreachable

endif3:                                           ; preds = %bounds.ok, %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit
  %r.sroa.6.0 = phi i8* [ %10, %bounds.ok ], [ %7, %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit ] ; [#uses = 1, type = i8*]
  %r.sroa.0.0 = phi i64 [ %11, %bounds.ok ], [ %8, %_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd.exit ] ; [#uses = 1, type = i64]
  %.fca.0.insert10 = insertvalue { i64, i8* } undef, i64 %r.sroa.0.0, 0 ; [#uses = 1]
  %.fca.1.insert19 = insertvalue { i64, i8* } %.fca.0.insert10, i8* %r.sroa.6.0, 1 ; [#uses = 1]
  ret { i64, i8* } %.fca.1.insert19
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmMNkAaZQd({ i64, i8* } %buf_arg, i64 %value_arg) local_unnamed_addr #2 {
  %buf_arg.fca.0.extract = extractvalue { i64, i8* } %buf_arg, 0 ; [#uses = 4]
  %buf_arg.fca.1.extract = extractvalue { i64, i8* } %buf_arg, 1 ; [#uses = 2]
  br label %dowhile

dowhile:                                          ; preds = %bounds.ok, %0
  %value.0 = phi i64 [ %value_arg, %0 ], [ %value.1, %bounds.ok ] ; [#uses = 4, type = i64]
  %i.0 = phi i64 [ %buf_arg.fca.0.extract, %0 ], [ %4, %bounds.ok ] ; [#uses = 1, type = i64]
  %1 = icmp ult i64 %value.0, 10                  ; [#uses = 1]
  br i1 %1, label %endif, label %else

else:                                             ; preds = %dowhile
  %2 = urem i64 %value.0, 10                      ; [#uses = 1]
  %3 = udiv i64 %value.0, 10                      ; [#uses = 1]
  br label %endif

endif:                                            ; preds = %dowhile, %else
  %value.1 = phi i64 [ %3, %else ], [ 0, %dowhile ] ; [#uses = 2, type = i64]
  %x.0.in = phi i64 [ %2, %else ], [ %value.0, %dowhile ] ; [#uses = 1, type = i64]
  %4 = add i64 %i.0, -1                           ; [#uses = 6]
  %bounds.cmp = icmp ugt i64 %buf_arg.fca.0.extract, %4 ; [#uses = 1]
  br i1 %bounds.cmp, label %bounds.ok, label %bounds.fail

bounds.ok:                                        ; preds = %endif
  %x.0 = trunc i64 %x.0.in to i8                  ; [#uses = 1]
  %5 = getelementptr inbounds i8, i8* %buf_arg.fca.1.extract, i64 %4 ; [#uses = 1, type = i8*]
  %6 = add nuw nsw i8 %x.0, 48                    ; [#uses = 1]
  store i8 %6, i8* %5, align 1
  %.not = icmp eq i64 %value.1, 0                 ; [#uses = 1]
  br i1 %.not, label %bounds.ok3, label %dowhile

bounds.fail:                                      ; preds = %endif
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 48, i64 %4, i64 %buf_arg.fca.0.extract) #4
  unreachable

bounds.ok3:                                       ; preds = %bounds.ok
  %7 = getelementptr inbounds i8, i8* %buf_arg.fca.1.extract, i64 %4 ; [#uses = 1, type = i8*]
  %8 = sub i64 %buf_arg.fca.0.extract, %4         ; [#uses = 1]
  %9 = insertvalue { i64, i8* } undef, i64 %8, 0  ; [#uses = 1]
  %10 = insertvalue { i64, i8* } %9, i8* %7, 1    ; [#uses = 1]
  ret { i64, i8* } %10
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflMNkAaZ12trustedSliceMFNaNbNiNeNkQBdZQBh(i8* nonnull %.nest_arg, { i64, i8* } %r_arg) local_unnamed_addr #2 {
  %r_arg.fca.1.extract = extractvalue { i64, i8* } %r_arg, 1 ; [#uses = 2]
  %1 = getelementptr inbounds i8, i8* %.nest_arg, i64 8 ; [#uses = 1, type = i8*]
  %2 = bitcast i8* %1 to i8**                     ; [#uses = 1]
  %.ptr1 = load i8*, i8** %2, align 8             ; [#uses = 1]
  %3 = icmp ugt i8* %r_arg.fca.1.extract, %.ptr1  ; [#uses = 1]
  br i1 %3, label %assertPassed, label %assertFailed

assertPassed:                                     ; preds = %0
  %r_arg.fca.0.extract = extractvalue { i64, i8* } %r_arg, 0 ; [#uses = 1]
  %4 = getelementptr inbounds i8, i8* %r_arg.fca.1.extract, i64 -1 ; [#uses = 1, type = i8*]
  %5 = add i64 %r_arg.fca.0.extract, 1            ; [#uses = 1]
  %6 = insertvalue { i64, i8* } undef, i64 %5, 0  ; [#uses = 1]
  %7 = insertvalue { i64, i8* } %6, i8* %4, 1     ; [#uses = 1]
  ret { i64, i8* } %7

assertFailed:                                     ; preds = %0
  tail call void @_d_assert({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.31, i32 0, i32 0) }, i32 122) #4
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAaZQBtFNfKQBtKQoZv({ i64, i8* }* dereferenceable(16) %e, %std.stdio.File.LockingTextWriter* dereferenceable(48) %r) local_unnamed_addr #2 {
  %.elt = getelementptr inbounds { i64, i8* }, { i64, i8* }* %e, i64 0, i32 0 ; [#uses = 1, type = i64*]
  %.unpack = load i64, i64* %.elt, align 8        ; [#uses = 4]
  %.elt1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %e, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %.unpack2 = load i8*, i8** %.elt1, align 8      ; [#uses = 2]
  %1 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %r, i64 0, i32 1 ; [#uses = 1, type = i32*]
  %2 = load i32, i32* %1, align 4                 ; [#uses = 1]
  %3 = icmp slt i32 %2, 1                         ; [#uses = 1]
  br i1 %3, label %if.i, label %forcond.preheader.i

forcond.preheader.i:                              ; preds = %0
  %.not11.i = icmp eq i64 %.unpack, 0             ; [#uses = 1]
  br i1 %.not11.i, label %_D3std5stdio4File17LockingTextWriter__T3putTAaZQiMFNfMQkZv.exit, label %forbody.i

if.i:                                             ; preds = %0
  %4 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %r, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %5 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %4, align 8 ; [#uses = 1]
  %6 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %5, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %7 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %6, align 8 ; [#uses = 1]
  %8 = tail call i64 @fwrite(i8* %.unpack2, i64 1, i64 %.unpack, %core.stdc.stdio._IO_FILE* %7) #1 ; [#uses = 1]
  %.not.i = icmp eq i64 %8, %.unpack              ; [#uses = 1]
  br i1 %.not.i, label %_D3std5stdio4File17LockingTextWriter__T3putTAaZQiMFNfMQkZv.exit, label %if1.i

if1.i:                                            ; preds = %if.i
  tail call void @_D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn({ i64, i8* } zeroinitializer, i64 3263, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }) #13
  unreachable

forbody.i:                                        ; preds = %forcond.preheader.i, %forbody.i
  %__key146.010.i = phi i64 [ %11, %forbody.i ], [ 0, %forcond.preheader.i ] ; [#uses = 2, type = i64]
  %9 = getelementptr inbounds i8, i8* %.unpack2, i64 %__key146.010.i ; [#uses = 1, type = i8*]
  %10 = load i8, i8* %9, align 1                  ; [#uses = 1]
  tail call void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %r, i8 zeroext %10) #2
  %11 = add nuw i64 %__key146.010.i, 1            ; [#uses = 2]
  %exitcond.not.i = icmp eq i64 %11, %.unpack     ; [#uses = 1]
  br i1 %exitcond.not.i, label %_D3std5stdio4File17LockingTextWriter__T3putTAaZQiMFNfMQkZv.exit, label %forbody.i

_D3std5stdio4File17LockingTextWriter__T3putTAaZQiMFNfMQkZv.exit: ; preds = %forbody.i, %forcond.preheader.i, %if.i
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File17LockingTextWriter__T3putTAaZQiMFNfMQkZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, { i64, i8* } %writeme_arg) local_unnamed_addr #2 {
  %writeme_arg.fca.0.extract = extractvalue { i64, i8* } %writeme_arg, 0 ; [#uses = 4]
  %writeme_arg.fca.1.extract = extractvalue { i64, i8* } %writeme_arg, 1 ; [#uses = 2]
  %1 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i32*]
  %2 = load i32, i32* %1, align 4                 ; [#uses = 1]
  %3 = icmp slt i32 %2, 1                         ; [#uses = 1]
  br i1 %3, label %if, label %forcond.preheader

forcond.preheader:                                ; preds = %0
  %.not11 = icmp eq i64 %writeme_arg.fca.0.extract, 0 ; [#uses = 1]
  br i1 %.not11, label %endif2, label %forbody

if:                                               ; preds = %0
  %4 = getelementptr inbounds %std.stdio.File.LockingTextWriter, %std.stdio.File.LockingTextWriter* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %5 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %4, align 8 ; [#uses = 1]
  %6 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %5, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %7 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %6, align 8 ; [#uses = 1]
  %8 = tail call i64 @fwrite(i8* %writeme_arg.fca.1.extract, i64 1, i64 %writeme_arg.fca.0.extract, %core.stdc.stdio._IO_FILE* %7) #1 ; [#uses = 1]
  %.not = icmp eq i64 %8, %writeme_arg.fca.0.extract ; [#uses = 1]
  br i1 %.not, label %endif2, label %if1

if1:                                              ; preds = %if
  tail call void @_D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn({ i64, i8* } zeroinitializer, i64 3263, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.11, i32 0, i32 0) }) #13
  unreachable

endif2:                                           ; preds = %forbody, %forcond.preheader, %if
  ret void

forbody:                                          ; preds = %forcond.preheader, %forbody
  %__key146.010 = phi i64 [ %11, %forbody ], [ 0, %forcond.preheader ] ; [#uses = 2, type = i64]
  %9 = getelementptr inbounds i8, i8* %writeme_arg.fca.1.extract, i64 %__key146.010 ; [#uses = 1, type = i8*]
  %10 = load i8, i8* %9, align 1                  ; [#uses = 1]
  tail call void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, i8 zeroext %10) #2
  %11 = add nuw i64 %__key146.010, 1              ; [#uses = 2]
  %exitcond.not = icmp eq i64 %11, %writeme_arg.fca.0.extract ; [#uses = 1]
  br i1 %exitcond.not, label %endif2, label %forbody
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std5stdio__T13trustedFwriteTaZQsFNbNiNePOS4core4stdcQBx8_IO_FILExAaZm({ i64, i8* } %obj_arg, %core.stdc.stdio._IO_FILE* %f_arg) local_unnamed_addr #2 {
  %obj_arg.fca.0.extract = extractvalue { i64, i8* } %obj_arg, 0 ; [#uses = 1]
  %obj_arg.fca.1.extract = extractvalue { i64, i8* } %obj_arg, 1 ; [#uses = 1]
  %1 = tail call i64 @fwrite(i8* %obj_arg.fca.1.extract, i64 1, i64 %obj_arg.fca.0.extract, %core.stdc.stdio._IO_FILE* %f_arg) #1 ; [#uses = 1]
  ret i64 %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTiZQBrFNfiLAxaAyamZi(i64 %line_arg, { i64, i8* } %file_arg, { i8*, { i64, i8* } (i8*)* } %msg_arg, i32 %value_arg) local_unnamed_addr #2 {
  %.not = icmp eq i32 %value_arg, 0               ; [#uses = 1]
  br i1 %.not, label %if, label %endif

if:                                               ; preds = %0
  %msg_arg.fca.1.extract = extractvalue { i8*, { i64, i8* } (i8*)* } %msg_arg, 1 ; [#uses = 1]
  %msg_arg.fca.0.extract = extractvalue { i8*, { i64, i8* } (i8*)* } %msg_arg, 0 ; [#uses = 1]
  %1 = tail call { i64, i8* } %msg_arg.fca.1.extract(i8* nonnull %msg_arg.fca.0.extract) ; [#uses = 1]
  tail call void @_D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn({ i64, i8* } %1, i64 %line_arg, { i64, i8* } %file_arg) #13
  unreachable

endif:                                            ; preds = %0
  ret i32 %value_arg
}

; [#uses = 6]
; Function Attrs: nofree nounwind
declare i64 @fwrite(i8* nocapture, i64, i64, %core.stdc.stdio._IO_FILE* nocapture) local_unnamed_addr #11

; [#uses = 6]
; Function Attrs: noreturn uwtable
define weak_odr void @_D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn({ i64, i8* } %msg_arg, i64 %line_arg, { i64, i8* } %file_arg) local_unnamed_addr #12 {
  %msg_arg.fca.1.extract = extractvalue { i64, i8* } %msg_arg, 1 ; [#uses = 2]
  %.newclass_gc_alloc = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D3std9exception14ErrnoException7__ClassZ) #3 ; [#uses = 5]
  %vtbl = bitcast %object.Object* %.newclass_gc_alloc to [10 x i8*]** ; [#uses = 1]
  store [10 x i8*]* @_D3std9exception14ErrnoException6__vtblZ, [10 x i8*]** %vtbl, align 8
  %1 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* null, i8** %1, align 8
  %2 = getelementptr inbounds %object.Object, %object.Object* %.newclass_gc_alloc, i64 1 ; [#uses = 1, type = %object.Object*]
  %3 = bitcast %object.Object* %2 to i8*          ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %3, i8* nonnull align 8 dereferenceable(64) bitcast ({ i64, i8* }* getelementptr inbounds (%std.exception.ErrnoException, %std.exception.ErrnoException* @_D3std9exception14ErrnoException6__initZ, i64 0, i32 2) to i8*), i64 64, i1 false)
  %.not = icmp eq i8* %msg_arg.fca.1.extract, null ; [#uses = 1]
  br i1 %.not, label %condend, label %condtrue

condtrue:                                         ; preds = %0
  %a_arg.fca.0.extract.i.i = extractvalue { i64, i8* } %msg_arg, 0 ; [#uses = 2]
  %4 = tail call { i64, i8* } @_d_newarrayU(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Axa6__initZ to %object.TypeInfo*), i64 %a_arg.fca.0.extract.i.i) #1 ; [#uses = 2]
  %.ptr.i.i = extractvalue { i64, i8* } %4, 1     ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %.ptr.i.i, i8* nonnull align 1 %msg_arg.fca.1.extract, i64 %a_arg.fca.0.extract.i.i, i1 false) #1
  %.len = extractvalue { i64, i8* } %4, 0         ; [#uses = 1]
  br label %condend

condend:                                          ; preds = %0, %condtrue
  %condtmp.0.sroa.phi.sroa.speculated = phi i64 [ %.len, %condtrue ], [ 18, %0 ] ; [#uses = 1, type = i64]
  %condtmp.0.sroa.phi7.sroa.speculated = phi i8* [ %.ptr.i.i, %condtrue ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.25, i64 0, i64 0), %0 ] ; [#uses = 1, type = i8*]
  %.newclass_gc = bitcast %object.Object* %.newclass_gc_alloc to %std.exception.ErrnoException* ; [#uses = 1]
  %.fca.0.insert5 = insertvalue { i64, i8* } undef, i64 %condtmp.0.sroa.phi.sroa.speculated, 0 ; [#uses = 1]
  %.fca.1.insert6 = insertvalue { i64, i8* } %.fca.0.insert5, i8* %condtmp.0.sroa.phi7.sroa.speculated, 1 ; [#uses = 1]
  %5 = tail call %std.exception.ErrnoException* @_D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp(%std.exception.ErrnoException* nonnull returned %.newclass_gc, i64 %line_arg, { i64, i8* } %file_arg, { i64, i8* } %.fca.1.insert6) #1 ; [#uses = 0]
  %6 = bitcast %object.Object* %.newclass_gc_alloc to %object.Throwable* ; [#uses = 1]
  tail call void @_d_throw_exception(%object.Throwable* %6) #4
  unreachable
}

; [#uses = 1]
declare %std.exception.ErrnoException* @_D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp(%std.exception.ErrnoException* nonnull returned, i64, { i64, i8* }, { i64, i8* }) local_unnamed_addr #1

; [#uses = 2]
define linkonce_odr hidden void @ldc.register_dso() {
  %1 = alloca { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }, align 8 ; [#uses = 5, size/byte = 32]
  %2 = getelementptr inbounds { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }, { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }* %1, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 1, i64* %2, align 8
  %3 = getelementptr inbounds { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }, { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }* %1, i64 0, i32 1 ; [#uses = 1, type = i8***]
  store i8** @ldc.dso_slot, i8*** %3, align 8
  %4 = getelementptr inbounds { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }, { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }* %1, i64 0, i32 2 ; [#uses = 1, type = %object.ModuleInfo***]
  store %object.ModuleInfo** @__start___minfo, %object.ModuleInfo*** %4, align 8
  %5 = getelementptr inbounds { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }, { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }* %1, i64 0, i32 3 ; [#uses = 1, type = %object.ModuleInfo***]
  store %object.ModuleInfo** @__stop___minfo, %object.ModuleInfo*** %5, align 8
  %6 = bitcast { i64, i8**, %object.ModuleInfo**, %object.ModuleInfo** }* %1 to i8* ; [#uses = 1]
  call void @_d_dso_registry(i8* nonnull %6)
  ret void
}

; [#uses = 1]
; Function Attrs: uwtable
declare void @_d_dso_registry(i8*) local_unnamed_addr #3

; [#uses = 7]
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #6

; [#uses = 5]
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #6

attributes #0 = { uwtable "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16,+cx16" }
attributes #1 = { "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #2 = { uwtable "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #3 = { uwtable }
attributes #4 = { cold noreturn uwtable }
attributes #5 = { readonly uwtable }
attributes #6 = { argmemonly nounwind willreturn }
attributes #7 = { nounwind uwtable }
attributes #8 = { argmemonly nounwind willreturn writeonly }
attributes #9 = { nounwind readnone }
attributes #10 = { nounwind "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #11 = { nofree nounwind "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #12 = { noreturn uwtable "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #13 = { noreturn "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }

!llvm.ldc.typeinfo._D12TypeInfo_Hai6__initZ = !{!0}
!llvm.ldc.typeinfo._D10TypeInfo_i6__initZ = !{!1}
!llvm.ldc.typeinfo._D10TypeInfo_a6__initZ = !{!2}
!llvm.ldc.typeinfo._D9Exception7__ClassZ = !{!3}
!llvm.ldc.classinfo._D9Exception7__ClassZ = !{!4}
!llvm.ldc.typeinfo._D26TypeInfo_xS3std5stdio4File6__initZ = !{!5}
!llvm.ldc.typeinfo._D25TypeInfo_S3std5stdio4File6__initZ = !{!5}
!llvm.ldc.typeinfo._D12TypeInfo_xAa6__initZ = !{!6}
!llvm.ldc.typeinfo._D12TypeInfo_Axa6__initZ = !{!6}
!llvm.ldc.typeinfo._D11TypeInfo_xa6__initZ = !{!2}
!llvm.ldc.typeinfo._D72TypeInfo_xE3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ = !{!7}
!llvm.ldc.typeinfo._D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ = !{!7}
!llvm.ldc.typeinfo._D10TypeInfo_b6__initZ = !{!7}
!llvm.ldc.typeinfo._D11TypeInfo_xb6__initZ = !{!7}
!llvm.ldc.typeinfo._D53TypeInfo_xS3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ = !{!8}
!llvm.ldc.typeinfo._D52TypeInfo_S3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ = !{!8}
!llvm.ldc.typeinfo._D11TypeInfo_xm6__initZ = !{!9}
!llvm.ldc.typeinfo._D10TypeInfo_m6__initZ = !{!9}
!llvm.ldc.typeinfo._D6object9Throwable7__ClassZ = !{!10}
!llvm.ldc.classinfo._D6object9Throwable7__ClassZ = !{!11}
!llvm.ldc.typeinfo._D12TypeInfo_Aya6__initZ = !{!6}
!llvm.ldc.typeinfo._D3std3utf12UTFException7__ClassZ = !{!12}
!llvm.ldc.classinfo._D3std3utf12UTFException7__ClassZ = !{!13}
!llvm.ldc.typeinfo._D3std9exception14ErrnoException7__ClassZ = !{!14}
!llvm.ldc.classinfo._D3std9exception14ErrnoException7__ClassZ = !{!15}
!llvm.ident = !{!16}

!0 = !{i8* undef}
!1 = !{i32 undef}
!2 = !{i8 undef}
!3 = !{%object.Exception* undef}
!4 = !{%object.Exception undef, i1 false}
!5 = !{%std.stdio.File undef}
!6 = !{{ i64, i8* } undef}
!7 = !{i1 undef}
!8 = !{%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl" undef}
!9 = !{i64 undef}
!10 = !{%object.Throwable* undef}
!11 = !{%object.Throwable undef, i1 true}
!12 = !{%std.utf.UTFException* undef}
!13 = !{%std.utf.UTFException undef, i1 false}
!14 = !{%std.exception.ErrnoException* undef}
!15 = !{%std.exception.ErrnoException undef, i1 false}
!16 = !{!"ldc version 1.28.0"}
!17 = !{!18}
!18 = distinct !{!18, !19, !"_D3std5stdio4File__T6byLineTaTaZQmMFEQBj8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQDuQDtQDq__T10ByLineImplTaTaZQr: %.sret_arg"}
!19 = distinct !{!19, !"_D3std5stdio4File__T6byLineTaTaZQmMFEQBj8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQDuQDtQDq__T10ByLineImplTaTaZQr"}
!20 = !{i8 0, i8 2}
!21 = !{!22}
!22 = distinct !{!22, !23, !"_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__ctorMFNcNfSQCeQCdQCaEQCo8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEzQEyQEv__TQEtTaTaZQFbQEl: %f"}
!23 = distinct !{!23, !"_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__ctorMFNcNfSQCeQCdQCaEQCo8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEzQEyQEv__TQEtTaTaZQFbQEl"}
