unittest
{
	assert( [ "a" ].parse.expand.solve == "vowel" );
	assert( [ "z" ].parse.expand.solve == "consonant" );
	assert( [ "s" ].parse.expand.solve == "consonant" );
}



import std.conv;
import std.range;
import std.stdio;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto c = input.front;
	return tuple( c );
}

auto solve( string c )
{
	if( c == "a" || c == "e" || c == "i" || c == "o" || c == "u" ) return "vowel";
	else                                                           return "consonant";
}

; ModuleID = '/data/TheStack_IR/OJ_Samples/Collated/D/Source_5487/source.d'
source_filename = "/data/TheStack_IR/OJ_Samples/Collated/D/Source_5487/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_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.TypeInfo = type { [19 x i8*]*, i8* }
%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] }
%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl" = type { %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", i8, [7 x i8], { i64, 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 }
%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl" = type { %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", i64 }
%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S" = type { %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl" }
%"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.exception.ErrnoException = type <{ [10 x i8*]*, i8*, { i64, i8* }, { i64, i8* }, i64, %object.Throwable.TraceInfo*, %object.Throwable*, i32, 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 }>
%object.ModuleInfo = type { i32, i32 }
%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy" = type { %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted" }
%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted" = type { %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore" }
%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore" = type { %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* }
%"std.typecons.Tuple!string.Tuple" = type { { i64, i8* } }
%std.stdio.File.LockingTextWriter = type { %std.stdio.File, i32, i16, [4 x i8], [6 x i8], i64 }
%"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"* }
%nest.decodeImpl = type { i8*, i64 }

@.str = private unnamed_addr constant [2 x i8] c"a\00" ; [#uses = 1]
@.str.1 = private unnamed_addr constant [2 x i8] c"e\00" ; [#uses = 1]
@.str.2 = private unnamed_addr constant [2 x i8] c"i\00" ; [#uses = 1]
@.str.3 = private unnamed_addr constant [2 x i8] c"o\00" ; [#uses = 1]
@.str.4 = private unnamed_addr constant [2 x i8] c"u\00" ; [#uses = 1]
@.str.5 = private unnamed_addr constant [6 x i8] c"vowel\00" ; [#uses = 1]
@.str.6 = private unnamed_addr constant [10 x i8] c"consonant\00" ; [#uses = 1]
@_D9Exception7__ClassZ = external global %object.TypeInfo_Class ; [#uses = 7]
@_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]
@_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__initZ = weak_odr constant %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl" { %"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 }, i8 0, [7 x i8] zeroinitializer, { i64, i8* } zeroinitializer }, align 8 ; [#uses = 1]
@_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 = 4]
@_D14TypeInfo_Const6__vtblZ = external constant [19 x i8*] ; [#uses = 9]
@_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.7, 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 = 3]
@_D15TypeInfo_Struct6__vtblZ = external constant [19 x i8*] ; [#uses = 3]
@.str.7 = 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_xb6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* @_D10TypeInfo_b6__initZ } ; [#uses = 3]
@_D10TypeInfo_b6__initZ = external global %object.TypeInfo ; [#uses = 2]
@_D13TypeInfo_xAya6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Aya6__initZ to %object.TypeInfo*) } ; [#uses = 2]
@_D12TypeInfo_Aya6__initZ = external global %object.TypeInfo_Array ; [#uses = 1]
@.str.8 = private unnamed_addr constant [52 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/stdio.d\00" ; [#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]
@_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.9, 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]
@.str.9 = 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]
@_D10TypeInfo_a6__initZ = external global %object.TypeInfo ; [#uses = 1]
@_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.10, i32 0, i32 0) }, { i64, i8* } zeroinitializer } ; [#uses = 1]
@_D13TypeInfo_Enum6__vtblZ = external constant [19 x i8*] ; [#uses = 1]
@.str.10 = private unnamed_addr constant [40 x i8] c"std.typecons.Flag!\22keepTerminator\22.Flag\00" ; [#uses = 1]
@_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]
@_D11TypeInfo_xm6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* @_D10TypeInfo_m6__initZ } ; [#uses = 3]
@_D10TypeInfo_m6__initZ = external global %object.TypeInfo ; [#uses = 1]
@.str.11 = private unnamed_addr constant [55 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/typecons.d\00" ; [#uses = 1]
@.str.12 = private unnamed_addr constant [46 x i8] c"Attempted to access an uninitialized payload.\00" ; [#uses = 1]
@_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4Impl6__initZ = weak_odr local_unnamed_addr constant %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl" { %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl" { %"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 }, i8 0, [7 x i8] zeroinitializer, { i64, i8* } zeroinitializer }, i64 0 }, align 8 ; [#uses = 0]
@_D53TypeInfo_xS3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__initZ to %object.TypeInfo*) } ; [#uses = 3]
@_D52TypeInfo_S3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__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.13, i32 0, i32 0) }, { i64, i8* } { i64 88, i8* bitcast (%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__initZ to i8*) }, i64 (i8*)* bitcast (i64 (%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*)* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw9__xtoHashFNbNeKxSQCiQChQCe__TQCcTyaTaZQClZm to i64 (i8*)*), i1 (i8*, i8*)* bitcast (i1 (%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*)* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw11__xopEqualsFKxSQChQCgQCd__TQCbTyaTaZQCkKxQBbZb 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.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*)* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw11__fieldDtorMFNeZv to void (i8*)*), void (i8*)* bitcast (void (%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*)* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw15__fieldPostblitMFNbNlNeZv to void (i8*)*), i32 8, [4 x i8] zeroinitializer, %object.TypeInfo* null, %object.TypeInfo* null, i8* bitcast ([2 x i64]* @_D6object__T10RTInfoImplVAmA2i88i1109ZQBayG2m to i8*) } ; [#uses = 3]
@.str.13 = private unnamed_addr constant [44 x i8] c"S3std5stdio4File__T14ByLineCopyImplTyaTaZQw\00" ; [#uses = 1]
@_D6object__T10RTInfoImplVAmA2i88i1109ZQBayG2m = weak_odr constant [2 x i64] [i64 88, i64 1109], align 8 ; [#uses = 1]
@_D6object9Throwable7__ClassZ = external global %object.TypeInfo_Class ; [#uses = 3]
@_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ = weak_odr local_unnamed_addr constant %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S" { %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl" { %"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 }, i8 0, [7 x i8] zeroinitializer, { i64, 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.14 = private unnamed_addr constant [73 x i8] c"Cannot move object with internal pointer unless `opPostMove` is defined.\00" ; [#uses = 1]
@.str.15 = 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.16 = 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.17 = private unnamed_addr constant [28 x i8] c"Swap: lhs internal pointer.\00" ; [#uses = 1]
@.str.18 = private unnamed_addr constant [28 x i8] c"Swap: rhs internal pointer.\00" ; [#uses = 1]
@.str.19 = private unnamed_addr constant [25 x i8] c"Swap: lhs points to rhs.\00" ; [#uses = 1]
@.str.20 = private unnamed_addr constant [25 x i8] c"Swap: rhs points to lhs.\00" ; [#uses = 1]
@_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]
@.str.21 = 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.22 = private unnamed_addr constant [19 x i8] c"Enforcement failed\00" ; [#uses = 1]
@_D11TypeInfo_Aa6__initZ = external global %object.TypeInfo_Array ; [#uses = 1]
@_D6object__T10RTInfoImplVAmA2i96i1109ZQBayG2m = weak_odr local_unnamed_addr constant [2 x i64] [i64 96, i64 1109], align 8 ; [#uses = 0]
@_D6object__T10RTInfoImplVAmA2i16i2ZQxyG2m = weak_odr local_unnamed_addr constant [2 x i64] [i64 16, i64 2], align 8 ; [#uses = 0]
@_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]
@.str.24 = private unnamed_addr constant [50 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/utf.d\00" ; [#uses = 1]
@.str.25 = private unnamed_addr constant [23 x i8] c"Invalid UTF-8 sequence\00" ; [#uses = 1]
@.str.26 = private unnamed_addr constant [45 x i8] c"Attempted to decode past the end of a string\00" ; [#uses = 1]
@_D3std3utf12UTFException7__ClassZ = external global %object.TypeInfo_Class ; [#uses = 2]
@_D3std3utf12UTFException6__vtblZ = external constant [11 x i8*] ; [#uses = 2]
@_D3std3utf12UTFException6__initZ = external local_unnamed_addr constant %std.utf.UTFException, align 8 ; [#uses = 1]
@.str.27 = private unnamed_addr constant [41 x i8] c"Encoding an invalid code point in UTF-32\00" ; [#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 {
  %.sret_tmp = alloca %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", align 8 ; [#uses = 2, size/byte = 8]
  %1 = tail call %std.stdio.File* @_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File() #2 ; [#uses = 1]
  call void @_D3std5stdio4File__T10byLineCopyTaTyaZQsMFEQBp8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEaQDzQDw__T10ByLineCopyTyaTaZQs(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* noalias nonnull sret align 8 %.sret_tmp, %std.stdio.File* nonnull %1, i8 zeroext 10, i1 zeroext false) #2
  %2 = call %"std.typecons.Tuple!string.Tuple" @_D6source__T5parseTS3std5stdio4File__T10ByLineCopyTyaTaZQsZQBvFQBsZSQBw8typecons__T5TupleTAyaZQl(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* noalias nocapture nonnull align 8 %.sret_tmp) #2 ; [#uses = 2]
  %.fca.0.0.extract = extractvalue %"std.typecons.Tuple!string.Tuple" %2, 0, 0 ; [#uses = 1]
  %.fca.0.1.extract = extractvalue %"std.typecons.Tuple!string.Tuple" %2, 0, 1 ; [#uses = 1]
  %.fca.0.insert = insertvalue { i64, i8* } undef, i64 %.fca.0.0.extract, 0 ; [#uses = 1]
  %.fca.1.insert = insertvalue { i64, i8* } %.fca.0.insert, i8* %.fca.0.1.extract, 1 ; [#uses = 1]
  %3 = call { i64, i8* } @_D6source5solveFNaNbNiNfAyaZQe({ i64, i8* } %.fca.1.insert) #2 ; [#uses = 1]
  call void @_D3std5stdio__T7writelnTAyaZQnFNfQjZv({ i64, i8* } %3) #2
  ret i32 0
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio__T7writelnTAyaZQnFNfQjZv({ i64, i8* } %_param_0_arg) local_unnamed_addr #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %w = alloca %std.stdio.File.LockingTextWriter, align 8 ; [#uses = 5, size/byte = 48]
  %__tmpfordtor209 = alloca %std.stdio.File, align 8 ; [#uses = 4, size/byte = 24]
  call void @_D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File(%std.stdio.File* noalias nonnull sret align 8 %__tmpfordtor209) #2
  invoke void @_D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter(%std.stdio.File.LockingTextWriter* noalias nonnull sret align 8 %w, %std.stdio.File* nonnull %__tmpfordtor209) #2
          to label %toElem.success unwind label %dtor.__tmpfordtor209

toElem.success:                                   ; preds = %0
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__tmpfordtor209) #2
  invoke void @_D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv(%std.stdio.File.LockingTextWriter* nonnull %w, { i64, i8* } %_param_0_arg) #2
          to label %postinvoke2 unwind label %finally

postinvoke2:                                      ; preds = %toElem.success
  invoke void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %w, i8 zeroext 10) #2
          to label %try.success unwind label %finally

finally:                                          ; preds = %toElem.success, %postinvoke2
  %1 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %2 = extractvalue { i8*, i32 } %1, 0            ; [#uses = 1]
  call void @_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv(%std.stdio.File.LockingTextWriter* nonnull %w) #2
  br label %eh.resume

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

dtor.__tmpfordtor209:                             ; preds = %0
  %3 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %4 = extractvalue { i8*, i32 } %3, 0            ; [#uses = 1]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__tmpfordtor209) #2
  br label %eh.resume

eh.resume:                                        ; preds = %dtor.__tmpfordtor209, %finally
  %eh.ptr.2 = phi i8* [ %2, %finally ], [ %4, %dtor.__tmpfordtor209 ] ; [#uses = 1, type = i8*]
  call void @_Unwind_Resume(i8* %eh.ptr.2)
  unreachable
}

; [#uses = 1]
; Function Attrs: uwtable
define { i64, i8* } @_D6source5solveFNaNbNiNfAyaZQe({ i64, i8* } %c_arg) local_unnamed_addr #1 {
  %1 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } { i64 1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i32 0, i32 0) }, { i64, i8* } %c_arg) #2 ; [#uses = 1]
  br i1 %1, label %ororend8, label %oror

oror:                                             ; preds = %0
  %2 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } { i64 1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i32 0, i32 0) }, { i64, i8* } %c_arg) #2 ; [#uses = 1]
  br i1 %2, label %ororend8, label %oror1

oror1:                                            ; preds = %oror
  %3 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } { i64 1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i32 0, i32 0) }, { i64, i8* } %c_arg) #2 ; [#uses = 1]
  br i1 %3, label %ororend8, label %oror4

oror4:                                            ; preds = %oror1
  %4 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } { i64 1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i32 0, i32 0) }, { i64, i8* } %c_arg) #2 ; [#uses = 1]
  br i1 %4, label %ororend8, label %oror7

oror7:                                            ; preds = %oror4
  %5 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } { i64 1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i32 0, i32 0) }, { i64, i8* } %c_arg) #2 ; [#uses = 1]
  %phi.sel = select i1 %5, { i64, i8* } { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0) }, { i64, i8* } { i64 9, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i32 0, i32 0) } ; [#uses = 1]
  br label %ororend8

ororend8:                                         ; preds = %0, %oror, %oror1, %oror7, %oror4
  %ororval9 = phi { i64, i8* } [ { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0) }, %oror4 ], [ %phi.sel, %oror7 ], [ { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0) }, %oror1 ], [ { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0) }, %oror ], [ { i64 5, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0) }, %0 ] ; [#uses = 1, type = { i64, i8* }]
  ret { i64, i8* } %ororval9
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr %"std.typecons.Tuple!string.Tuple" @_D6source__T5parseTS3std5stdio4File__T10ByLineCopyTyaTaZQsZQBvFQBsZSQBw8typecons__T5TupleTAyaZQl(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* noalias nocapture align 8 %input) local_unnamed_addr #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %1 = invoke { i64, i8* } @_D3std5stdio4File__T10ByLineCopyTyaTaZQs5frontMFNdZAya(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* nonnull %input) #1
          to label %return unwind label %eh.resume ; [#uses = 2]

return:                                           ; preds = %0
  %_param_0_arg.fca.0.extract.i.i = extractvalue { i64, i8* } %1, 0 ; [#uses = 1]
  %_param_0_arg.fca.1.extract.i.i = extractvalue { i64, i8* } %1, 1 ; [#uses = 1]
  %2 = getelementptr inbounds %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %input, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"*]
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %2) #2
  %.fca.0.0.insert = insertvalue %"std.typecons.Tuple!string.Tuple" undef, i64 %_param_0_arg.fca.0.extract.i.i, 0, 0 ; [#uses = 1]
  %.fca.0.1.insert = insertvalue %"std.typecons.Tuple!string.Tuple" %.fca.0.0.insert, i8* %_param_0_arg.fca.1.extract.i.i, 0, 1 ; [#uses = 1]
  ret %"std.typecons.Tuple!string.Tuple" %.fca.0.1.insert

eh.resume:                                        ; preds = %0
  %3 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %4 = extractvalue { i8*, i32 } %3, 0            ; [#uses = 1]
  %5 = getelementptr inbounds %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %input, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"*]
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %5) #2
  tail call void @_Unwind_Resume(i8* %4)
  unreachable
}

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10byLineCopyTaTyaZQsMFEQBp8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEaQDzQDw__T10ByLineCopyTyaTaZQs(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* noalias sret align 8 %.sret_arg, %std.stdio.File* nonnull %.this_arg, i8 zeroext %terminator_arg, i1 zeroext %keepTerminator_arg) local_unnamed_addr #1 {
  %__copytmp89 = alloca %std.stdio.File, align 8  ; [#uses = 3, size/byte = 24]
  %1 = getelementptr inbounds %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %.sret_arg, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  store %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8
  %2 = bitcast %std.stdio.File* %__copytmp89 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 %__copytmp89) #2
  %4 = call %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* @_D3std5stdio4File__T10ByLineCopyTyaTaZQs6__ctorMFNcSQByQBxQBuEQCi8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEtQEsQEp__TQEnTyaTaZQEw(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* nonnull returned %.sret_arg, i8 zeroext %terminator_arg, i1 zeroext %keepTerminator_arg, %std.stdio.File* noalias nocapture nonnull align 8 %__copytmp89) #2 ; [#uses = 0]
  ret void
}

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

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

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

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* @_D3std5stdio4File__T10ByLineCopyTyaTaZQs6__ctorMFNcSQByQBxQBuEQCi8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEtQEsQEp__TQEnTyaTaZQEw(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* nonnull returned %.this_arg, i8 zeroext %terminator_arg, i1 zeroext %kt_arg, %std.stdio.File* noalias nocapture align 8 %f) local_unnamed_addr #1 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 = getelementptr inbounds %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %.this_arg, i64 0, i32 0 ; [#uses = 2, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"*]
  %3 = bitcast %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %.this_arg to i64* ; [#uses = 1]
  store i64 0, i64* %3, align 1
  %4 = invoke %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo__T6__ctorTSQEtQDpQDmTEQFeQFd__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQCzMFNcKQCzKQCsKaZSQIcQIb__TQHvTQHmVQFzi0ZQIj(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull returned %2, i8* nonnull dereferenceable(1) %terminator, i8* nonnull dereferenceable(1) %kt, %std.stdio.File* dereferenceable(24) %f) #2
          to label %return unwind label %landingPad2 ; [#uses = 0]

catch.object.Exception:                           ; preds = %landingPad2
  %5 = call %object.Throwable* @_d_eh_enter_catch(i8* %9) ; [#uses = 1]
  invoke void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %2) #2
          to label %postinvoke unwind label %landingPad

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

postinvoke1:                                      ; preds = %postinvoke
  unreachable

return:                                           ; preds = %0
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %f) #2
  ret %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %.this_arg

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

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

landingPad2:                                      ; preds = %0
  %8 = landingpad { i8*, i32 }
          cleanup
          catch %object.TypeInfo_Class* @_D9Exception7__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* @_D9Exception7__ClassZ to i8*)) ; [#uses = 1]
  %12 = icmp eq i32 %10, %11                      ; [#uses = 1]
  br i1 %12, label %catch.object.Exception, label %eh.resume
}

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

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

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

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

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

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

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

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo__T6__ctorTSQEtQDpQDmTEQFeQFd__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQCzMFNcKQCzKQCsKaZSQIcQIb__TQHvTQHmVQFzi0ZQIj(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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 #1 {
label.__returnLabel:
  %0 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"*]
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore__T10initializeTSQFpQElQEiTEQGaQFz__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQDeMFKQCxKQCqKaZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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) #2
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 1]
  %.not = icmp eq %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %label.__returnLabel
  ret %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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.11, i32 0, i32 0) }, i32 6537) #6
  unreachable
}

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std5stdio4File__T10ByLineCopyTyaTaZQs5emptyMFNdZb(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"*]
  %2 = tail call %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTyaTaZQEw(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %1) #2 ; [#uses = 1]
  %3 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %4 = tail call zeroext i1 @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl5emptyMFNdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %3) #2 ; [#uses = 1]
  ret i1 %4
}

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTyaTaZQEw(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*]
  ret %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %3

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

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std5stdio4File__T10ByLineCopyTyaTaZQs5frontMFNdZAya(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"*]
  %2 = tail call %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTyaTaZQEw(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %1) #2 ; [#uses = 1]
  %3 = tail call { i64, i8* } @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw5frontMFNdZAya(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull %2) #2 ; [#uses = 1]
  ret { i64, i8* } %3
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw5frontMFNdZAya(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 1 ; [#uses = 2, type = i8*]
  %2 = load i8, i8* %1, align 1, !range !16       ; [#uses = 1]
  %.not = icmp eq i8 %2, 0                        ; [#uses = 1]
  br i1 %.not, label %if, label %.endif_crit_edge

.endif_crit_edge:                                 ; preds = %0
  %.elt.phi.trans.insert = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 3, i32 0 ; [#uses = 1, type = i64*]
  %.unpack.pre = load i64, i64* %.elt.phi.trans.insert, align 8 ; [#uses = 1]
  %.elt1.phi.trans.insert = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 3, i32 1 ; [#uses = 1, type = i8**]
  %.unpack2.pre = load i8*, i8** %.elt1.phi.trans.insert, align 8 ; [#uses = 1]
  br label %endif

if:                                               ; preds = %0
  %3 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %4 = tail call { i64, i8* } @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl5frontMFNdZAa(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %3) #2 ; [#uses = 1]
  %5 = tail call { i64, i8* } @_D6object__T4_dupTxaTaZQlFNaNbNeMAxaZAa({ i64, i8* } %4) #2 ; [#uses = 2]
  %.ptr = extractvalue { i64, i8* } %5, 1         ; [#uses = 2]
  %.len = extractvalue { i64, i8* } %5, 0         ; [#uses = 2]
  %6 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 3, i32 0 ; [#uses = 1, type = i64*]
  store i64 %.len, i64* %6, align 8
  %7 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 3, i32 1 ; [#uses = 1, type = i8**]
  store i8* %.ptr, i8** %7, align 8
  store i8 1, i8* %1, align 1
  br label %endif

endif:                                            ; preds = %.endif_crit_edge, %if
  %.unpack2 = phi i8* [ %.unpack2.pre, %.endif_crit_edge ], [ %.ptr, %if ] ; [#uses = 1, type = i8*]
  %.unpack = phi i64 [ %.unpack.pre, %.endif_crit_edge ], [ %.len, %if ] ; [#uses = 1, type = i64]
  %8 = insertvalue { i64, i8* } undef, i64 %.unpack, 0 ; [#uses = 1]
  %9 = insertvalue { i64, i8* } %8, i8* %.unpack2, 1 ; [#uses = 1]
  ret { i64, i8* } %9
}

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw8popFrontMFZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, 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 %1) #2
  %2 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 0, i32 5 ; [#uses = 1, type = i8*]
  store i8 0, i8* %2, align 1
  %3 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i8*]
  store i8 0, i8* %3, align 1
  ret void
}

; [#uses = 6]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 2, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not5 = icmp eq %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"*]
  %7 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %8 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %7, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %8) #2
  %9 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %7 to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(88) %9, i8* nonnull align 8 dereferenceable(88) bitcast (%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__initZ to i8*), i64 88, i1 false) #2
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore15deallocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %6) #1
  ret void

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

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

endif.i:                                          ; preds = %0
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo10__postblitMFNaNbNiNfZv.exit

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo10__postblitMFNaNbNiNfZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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.ByLineCopy!(immutable(char), char).ByLineCopy"* @_D3std5stdio4File__T10ByLineCopyTyaTaZQs8opAssignMFNcNjSQCcQCbQBy__TQBwTyaTaZQCfZQBa(%"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* nonnull %.this_arg, %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* noalias nocapture align 8 %p) local_unnamed_addr #1 {
  %__swap69 = alloca %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", align 8 ; [#uses = 2, size/byte = 8]
  %1 = bitcast %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %.this_arg to i64* ; [#uses = 2]
  %2 = bitcast %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %__swap69 to i64* ; [#uses = 1]
  %3 = load i64, i64* %1, align 1                 ; [#uses = 1]
  store i64 %3, i64* %2, align 8
  %4 = bitcast %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %p to i64* ; [#uses = 1]
  %5 = load i64, i64* %4, align 8                 ; [#uses = 1]
  store i64 %5, i64* %1, align 1
  %6 = getelementptr inbounds %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy", %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %__swap69, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"*]
  call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %6) #2
  ret %"std.stdio.File.ByLineCopy!(immutable(char), char).ByLineCopy"* %.this_arg
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__ctorMFNcNfSQCeQCdQCaEQCo8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEzQEyQEv__TQEtTyaTaZQFc(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull returned %.this_arg, i8 zeroext %terminator_arg, i1 zeroext %kt_arg, %std.stdio.File* noalias nocapture align 8 %f) local_unnamed_addr #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %__copytmp78 = alloca %std.stdio.File, align 8  ; [#uses = 3, size/byte = 24]
  %1 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %2 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_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 (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false)
  %3 = bitcast %std.stdio.File* %__copytmp78 to i8* ; [#uses = 1]
  %4 = bitcast %std.stdio.File* %f to i8*         ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(24) %3, i8* nonnull align 8 dereferenceable(24) %4, i64 24, i1 false)
  call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %__copytmp78) #2
  %5 = invoke %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__ctorMFNcNfSQCeQCdQCaEQCo8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEzQEyQEv__TQEtTaTaZQFbQEl(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull returned %1, i8 zeroext %terminator_arg, i1 zeroext %kt_arg, %std.stdio.File* noalias nocapture nonnull align 8 %__copytmp78) #2
          to label %return unwind label %landingPad2 ; [#uses = 0]

catch.object.Exception:                           ; preds = %landingPad2
  %6 = call %object.Throwable* @_d_eh_enter_catch(i8* %11) ; [#uses = 1]
  %7 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  invoke void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %7) #2
          to label %postinvoke unwind label %landingPad

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

postinvoke1:                                      ; preds = %postinvoke
  unreachable

return:                                           ; preds = %0
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %f) #2
  ret %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg

landingPad:                                       ; preds = %catch.object.Exception, %postinvoke
  %8 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %9 = extractvalue { i8*, i32 } %8, 0            ; [#uses = 1]
  br label %eh.resume

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

landingPad2:                                      ; preds = %0
  %10 = landingpad { i8*, i32 }
          cleanup
          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
}

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

; [#uses = 2]
; 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 #1 {
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) #2
  %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) #2
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg
}

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl5emptyMFNdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) local_unnamed_addr #1 {
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"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 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* } @_D6object__T3dupTaZQhFNaNbNdNfAxaZAa({ i64, i8* } %a_arg) local_unnamed_addr #1 {
  %1 = tail call { i64, i8* } @_D6object__T4_dupTxaTaZQlFNaNbNeMAxaZAa({ i64, i8* } %a_arg) #2 ; [#uses = 1]
  ret { i64, i8* } %1
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl5frontMFNdZAa(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) local_unnamed_addr #1 {
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) #2
  %.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 #1 {
  tail call void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"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 5 ; [#uses = 1, type = i8*]
  store i8 0, i8* %1, align 1
  ret void
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl11__fieldDtorMFNeZv(%"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 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %1) #2
  ret void
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw15__fieldPostblitMFNbNlNeZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull %.this_arg) #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %1) #2
  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) #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*]
  tail call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %1) #2
  ret void
}

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw11__xopEqualsFKxSQChQCgQCd__TQCbTyaTaZQCkKxQBbZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %q, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %p) #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %2 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %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 %andandend20

andand:                                           ; preds = %0
  %.elt = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %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]
  %.elt43 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack44 = load i8*, i8** %.elt43, align 8    ; [#uses = 1]
  %7 = insertvalue { i64, i8* } %6, i8* %.unpack44, 1 ; [#uses = 1]
  %.elt45 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack46 = load i64, i64* %.elt45, align 8    ; [#uses = 1]
  %8 = insertvalue { i64, i8* } undef, i64 %.unpack46, 0 ; [#uses = 1]
  %.elt47 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack48 = load i8*, i8** %.elt47, align 8    ; [#uses = 1]
  %9 = insertvalue { i64, i8* } %8, i8* %.unpack48, 1 ; [#uses = 1]
  %10 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %9, { i64, i8* } %7) #2 ; [#uses = 1]
  br i1 %10, label %andand1, label %andandend20

andand1:                                          ; preds = %andand
  %.elt49 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack50 = load i64, i64* %.elt49, align 8    ; [#uses = 1]
  %11 = insertvalue { i64, i8* } undef, i64 %.unpack50, 0 ; [#uses = 1]
  %.elt51 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack52 = load i8*, i8** %.elt51, align 8    ; [#uses = 1]
  %12 = insertvalue { i64, i8* } %11, i8* %.unpack52, 1 ; [#uses = 1]
  %.elt53 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack54 = load i64, i64* %.elt53, align 8    ; [#uses = 1]
  %13 = insertvalue { i64, i8* } undef, i64 %.unpack54, 0 ; [#uses = 1]
  %.elt55 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack56 = load i8*, i8** %.elt55, align 8    ; [#uses = 1]
  %14 = insertvalue { i64, i8* } %13, i8* %.unpack56, 1 ; [#uses = 1]
  %15 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %14, { i64, i8* } %12) #2 ; [#uses = 1]
  br i1 %15, label %andand4, label %andandend20

andand4:                                          ; preds = %andand1
  %.elt57 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack58 = load i64, i64* %.elt57, align 8    ; [#uses = 1]
  %16 = insertvalue { i64, i8* } undef, i64 %.unpack58, 0 ; [#uses = 1]
  %.elt59 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack60 = load i8*, i8** %.elt59, align 8    ; [#uses = 1]
  %17 = insertvalue { i64, i8* } %16, i8* %.unpack60, 1 ; [#uses = 1]
  %.elt61 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack62 = load i64, i64* %.elt61, align 8    ; [#uses = 1]
  %18 = insertvalue { i64, i8* } undef, i64 %.unpack62, 0 ; [#uses = 1]
  %.elt63 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack64 = load i8*, i8** %.elt63, align 8    ; [#uses = 1]
  %19 = insertvalue { i64, i8* } %18, i8* %.unpack64, 1 ; [#uses = 1]
  %20 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %19, { i64, i8* } %17) #2 ; [#uses = 1]
  br i1 %20, label %andand7, label %andandend20

andand7:                                          ; preds = %andand4
  %21 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 0, i32 3 ; [#uses = 1, type = i8*]
  %22 = load i8, i8* %21, align 1                 ; [#uses = 1]
  %23 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %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 %andandend20

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

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

andand16:                                         ; preds = %andand13
  %36 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 1 ; [#uses = 1, type = i8*]
  %37 = load i8, i8* %36, align 1, !range !16     ; [#uses = 1]
  %38 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 1 ; [#uses = 1, type = i8*]
  %39 = load i8, i8* %38, align 1, !range !16     ; [#uses = 1]
  %40 = icmp eq i8 %37, %39                       ; [#uses = 1]
  br i1 %40, label %andand19, label %andandend20

andand19:                                         ; preds = %andand16
  %.elt65 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 3, i32 0 ; [#uses = 1, type = i64*]
  %.unpack66 = load i64, i64* %.elt65, align 8    ; [#uses = 1]
  %41 = insertvalue { i64, i8* } undef, i64 %.unpack66, 0 ; [#uses = 1]
  %.elt67 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 3, i32 1 ; [#uses = 1, type = i8**]
  %.unpack68 = load i8*, i8** %.elt67, align 8    ; [#uses = 1]
  %42 = insertvalue { i64, i8* } %41, i8* %.unpack68, 1 ; [#uses = 1]
  %.elt69 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 3, i32 0 ; [#uses = 1, type = i64*]
  %.unpack70 = load i64, i64* %.elt69, align 8    ; [#uses = 1]
  %43 = insertvalue { i64, i8* } undef, i64 %.unpack70, 0 ; [#uses = 1]
  %.elt71 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %q, i64 0, i32 3, i32 1 ; [#uses = 1, type = i8**]
  %.unpack72 = load i8*, i8** %.elt71, align 8    ; [#uses = 1]
  %44 = insertvalue { i64, i8* } %43, i8* %.unpack72, 1 ; [#uses = 1]
  %45 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %44, { i64, i8* } %42) #2 ; [#uses = 1]
  br label %andandend20

andandend20:                                      ; preds = %0, %andand, %andand1, %andand4, %andand7, %andand10, %andand13, %andand19, %andand16
  %andandval21 = phi i1 [ false, %andand16 ], [ %45, %andand19 ], [ false, %andand13 ], [ false, %andand10 ], [ false, %andand7 ], [ false, %andand4 ], [ false, %andand1 ], [ false, %andand ], [ false, %0 ] ; [#uses = 1, type = i1]
  ret i1 %andandval21
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i64 @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw9__xtoHashFNbNeKxSQCiQChQCe__TQCcTyaTaZQClZm(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %p) #1 {
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.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %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_xb6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl3" = getelementptr inbounds [19 x i8*], [19 x i8*]* %6, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %7 = bitcast i8** %"getHash@vtbl3" 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.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 1 ; [#uses = 1, type = i8*]
  %10 = tail call i64 %8(%object.TypeInfo_Const* nonnull @_D11TypeInfo_xb6__initZ, i8* nonnull %9) ; [#uses = 1]
  %11 = add i64 %10, %5                           ; [#uses = 1]
  %12 = mul i64 %11, 33                           ; [#uses = 1]
  %13 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D13TypeInfo_xAya6__initZ, i64 0, i32 0), align 8 ; [#uses = 1]
  %"getHash@vtbl5" = getelementptr inbounds [19 x i8*], [19 x i8*]* %13, i64 0, i64 5 ; [#uses = 1, type = i8**]
  %14 = bitcast i8** %"getHash@vtbl5" to i64 (%object.TypeInfo_Const*, i8*)** ; [#uses = 1]
  %15 = load i64 (%object.TypeInfo_Const*, i8*)*, i64 (%object.TypeInfo_Const*, i8*)** %14, align 8 ; [#uses = 1]
  %16 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %p, i64 0, i32 3 ; [#uses = 1, type = { i64, i8* }*]
  %17 = bitcast { i64, i8* }* %16 to i8*          ; [#uses = 1]
  %18 = tail call i64 %15(%object.TypeInfo_Const* nonnull @_D13TypeInfo_xAya6__initZ, i8* nonnull %17) ; [#uses = 1]
  %19 = add i64 %18, %12                          ; [#uses = 1]
  ret i64 %19
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i64 @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl9__xtoHashFNbNeKxSQCiQChQCe__TQCcTaTaZQCkQBuZm(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %p) #1 {
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]
; 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) #1 {
  %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) #2 ; [#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) #2 ; [#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) #2 ; [#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 !16     ; [#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 !16     ; [#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 !16     ; [#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 !16     ; [#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 %"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 #1 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 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0 ; [#uses = 2, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"*]
  %3 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg to i64* ; [#uses = 1]
  store i64 0, i64* %3, align 1
  %4 = invoke %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo__T6__ctorTSQEtQDpQDmTEQFeQFd__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQCzMFNcKQCzKQCsKaZSQIcQIb__TQHvTQHmVQFzi0ZQIj(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull returned %2, i8* nonnull dereferenceable(1) %terminator, i8* nonnull dereferenceable(1) %kt, %std.stdio.File* dereferenceable(24) %f) #2
          to label %return unwind label %landingPad2 ; [#uses = 0]

catch.object.Exception:                           ; preds = %landingPad2
  %5 = call %object.Throwable* @_d_eh_enter_catch(i8* %9) ; [#uses = 1]
  invoke void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %2) #2
          to label %postinvoke unwind label %landingPad

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

postinvoke1:                                      ; preds = %postinvoke
  unreachable

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

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

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

landingPad2:                                      ; preds = %0
  %8 = landingpad { i8*, i32 }
          cleanup
          catch %object.TypeInfo_Class* @_D9Exception7__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* @_D9Exception7__ClassZ to i8*)) ; [#uses = 1]
  %12 = icmp eq i32 %10, %11                      ; [#uses = 1]
  br i1 %12, label %catch.object.Exception, label %eh.resume
}

; [#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 #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"*]
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %1) #2
  ret void
}

; [#uses = 1]
; 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 #1 {
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) #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 = 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.11, i32 0, i32 0) }, i32 6537) #6
  unreachable
}

; [#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 #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"*]
  %2 = tail call %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %1) #2 ; [#uses = 1]
  %3 = tail call zeroext i1 @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl5emptyMFNdZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %2) #2 ; [#uses = 1]
  ret i1 %3
}

; [#uses = 3]
; 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 #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 = 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.12, i32 0, i32 0) }, { i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.11, i32 0, i32 0) }, i32 6644) #6
  unreachable
}

; [#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 #1 {
  %1 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"*]
  %2 = tail call %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFwQEsQEp__TQEnTaTaZQEvQEf(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %1) #2 ; [#uses = 1]
  %3 = tail call { i64, i8* } @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl5frontMFNdZAa(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %2) #2 ; [#uses = 1]
  ret { i64, i8* } %3
}

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

; [#uses = 5]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl8needLineMFZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull %.this_arg) local_unnamed_addr #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 = 2, type = i8*]
  %2 = load i8, i8* %1, align 1, !range !16       ; [#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 = 3, type = %std.stdio.File*]
  %4 = tail call zeroext i1 @_D3std5stdio4File6isOpenMxFNaNbNdNfZb(%std.stdio.File* nonnull %3) #2 ; [#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 = 3, 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 = 2]
  %.ptr14 = load i64, i64* %7, align 8            ; [#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*]
  %.len = load i64, i64* %8, align 8              ; [#uses = 1]
  %9 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %5, i64 0, i32 0 ; [#uses = 3, type = i64*]
  store i64 %.len, i64* %9, align 8
  %10 = 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**]
  %11 = bitcast i8** %10 to i64*                  ; [#uses = 2]
  store i64 %.ptr14, i64* %11, align 8
  %12 = 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*]
  %13 = load i8, i8* %12, align 1                 ; [#uses = 1]
  %14 = zext i8 %13 to i32                        ; [#uses = 1]
  %15 = tail call i64 @_D3std5stdio4File__T6readlnTaZQkMFKAawZm(%std.stdio.File* nonnull %3, i32 %14, { i64, i8* }* nonnull dereferenceable(16) %5) #2 ; [#uses = 0]
  %.len1 = load i64, i64* %9, align 8             ; [#uses = 4]
  %.len2 = load i64, i64* %8, align 8             ; [#uses = 1]
  %16 = icmp ugt i64 %.len1, %.len2               ; [#uses = 1]
  br i1 %16, label %endif4.thread, label %endif4

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

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

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

else:                                             ; preds = %endif4.thread, %endif4
  %18 = 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*]
  %19 = load i8, i8* %18, align 1, !range !16     ; [#uses = 1]
  %20 = icmp eq i8 %19, 0                         ; [#uses = 1]
  br i1 %20, label %_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb.exit, label %endif8

_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb.exit: ; preds = %else
  %.unpack16 = load i8*, i8** %10, align 8        ; [#uses = 1]
  %21 = load i8, i8* %12, align 1                 ; [#uses = 1]
  %22 = add i64 %.len1, -1                        ; [#uses = 2]
  %23 = getelementptr inbounds i8, i8* %.unpack16, i64 %22 ; [#uses = 1, type = i8*]
  %24 = load i8, i8* %23, align 1                 ; [#uses = 1]
  %25 = icmp eq i8 %24, %21                       ; [#uses = 1]
  br i1 %25, label %bounds.ok, label %endif8

bounds.ok:                                        ; preds = %_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb.exit
  store i64 %22, i64* %9, 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.8, i32 0, i32 0) }, i32 2502) #6
  unreachable
}

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

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

; [#uses = 1]
; 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 #1 {
  %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.21, i32 0, i32 0) }, i64 2083, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.8, i32 0, i32 0) }) #14
  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) #2 ; [#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) #2 ; [#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 #1 {
  %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 #2

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TAaTaZQBiFNaNbNiNfQraZb(i8 zeroext %withThis_arg, { i64, i8* } %doesThisEnd_arg) local_unnamed_addr #1 {
  %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 = 3]
; Function Attrs: cold noreturn uwtable
declare void @_d_arraybounds_slice({ i64, i8* }, i32, i64, i64, i64) local_unnamed_addr #6

; [#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 #1 {
  %__swap53 = 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"* %__swap53 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"* %__swap53, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %4) #2
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %.this_arg
}

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

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

; [#uses = 4]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #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 = 2, 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 = 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"*]
  %7 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %8 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %7, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %8) #2
  %9 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %7 to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %9, 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
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore15deallocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %6) #1
  ret void

assertFailed:                                     ; preds = %endif
  tail call void @_d_assert({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.11, i32 0, i32 0) }, i32 6570) #6
  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 #1 {
  %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 #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 = 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 #1 {
  %__swap66 = alloca %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", align 8 ; [#uses = 2, size/byte = 8]
  %1 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg to i64* ; [#uses = 2]
  %2 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %__swap66 to i64* ; [#uses = 1]
  %3 = load i64, i64* %1, align 1                 ; [#uses = 1]
  store i64 %3, i64* %2, align 8
  %4 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %p to i64* ; [#uses = 1]
  %5 = load i64, i64* %4, align 8                 ; [#uses = 1]
  store i64 %5, i64* %1, align 1
  %6 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %__swap66, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"*]
  call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %6) #2
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl"* %.this_arg
}

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

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

; [#uses = 2]
declare void @gc_removeRange(i8*) local_unnamed_addr #10

; [#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 #1 {
  %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) #2
  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 #1 {
  %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) #2
  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 #1 {
  %__swap65 = 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"* %__swap65 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"* %__swap65, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %4) #2
  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 #1 {
  %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) #2 ; [#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) #2 ; [#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) #2 ; [#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 !16     ; [#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 !16     ; [#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 !16     ; [#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 !16     ; [#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 #1 {
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 #1 {
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) #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 = 2, 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 = 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 @_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %3) #2
  %4 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, 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"* %4, i64 0, i32 1 ; [#uses = 1, type = i64*]
  store i64 1, i64* %5, align 8
  ret void
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = tail call i8* @_D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv(i64 72, i64 1) #2 ; [#uses = 2]
  %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) #2
  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 #1 {
  tail call void @_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %target) #2
  ret void
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr i8* @_D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv(i64 %size_arg, i64 %nmemb_arg) local_unnamed_addr #1 {
  %1 = tail call i8* @calloc(i64 %nmemb_arg, i64 %size_arg) #2 ; [#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) #2
  br label %endif

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

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore15deallocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #1 {
  %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) #2
  %4 = load i8*, i8** %2, align 8                 ; [#uses = 1]
  tail call void @free(i8* %4) #2
  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 #1 {
  %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 #1 {
  %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 #1 {
  %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 #1 {
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) #1
  %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) #2
  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 #1 {
  %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) #2
  %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) #2
  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 #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 = getelementptr inbounds %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* %rhs, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  tail call void @_D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl5stdio4File__T10ByLineImplTaTaZQr4ImplVEQEcQCu24RefCountedAutoInitializei0ZQDo15RefCountedStoreQCkZQFjFNaNbNiNeKQFqKQFuZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %2, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** nonnull dereferenceable(8) %1) #2
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted"* nonnull %rhs) #1
  ret void
}

; [#uses = 1]
; 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 #1 {
  %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.20, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.15, i32 0, i32 0) }, i32 2831) #6
  unreachable

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

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

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 27, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.17, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.15, i32 0, i32 0) }, i32 2828) #6
  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 #1 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 = 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"*]
  invoke void @_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T10ByLineImplTaTaZQr4ImplZQCbFNfMKQBzMNkKQCgZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %rhs, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %3) #2
          to label %try.success unwind label %eh.resume

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

postinvoke:                                       ; preds = %assertFailed
  unreachable

try.success:                                      ; preds = %assertPassed
  %4 = 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 %4) #2
  ret void

eh.resume:                                        ; preds = %assertPassed, %assertFailed
  %5 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %6 = extractvalue { i8*, i32 } %5, 0            ; [#uses = 1]
  %7 = 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 %7) #2
  tail call void @_Unwind_Resume(i8* %6)
  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 #1 {
  tail call void @_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T10ByLineImplTaTaZQr4ImplZQCbFNfMKQBzMNkKQCgZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %target) #2
  ret void
}

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

; [#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 #1 {
  %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) #2
  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 #1 {
  %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) #2
  ret void
}

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

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4Impl11__xopEqualsFKxSQFuQFt__TQFnTQFeVQDri0ZQGbQCnQBzKxQBjZb(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* dereferenceable(96) %q, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* dereferenceable(96) %p) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %2 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 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 %andandend23

andand:                                           ; preds = %0
  %.elt = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 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]
  %.elt53 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack54 = load i8*, i8** %.elt53, align 8    ; [#uses = 1]
  %7 = insertvalue { i64, i8* } %6, i8* %.unpack54, 1 ; [#uses = 1]
  %.elt55 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack56 = load i64, i64* %.elt55, align 8    ; [#uses = 1]
  %8 = insertvalue { i64, i8* } undef, i64 %.unpack56, 0 ; [#uses = 1]
  %.elt57 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack58 = load i8*, i8** %.elt57, align 8    ; [#uses = 1]
  %9 = insertvalue { i64, i8* } %8, i8* %.unpack58, 1 ; [#uses = 1]
  %10 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %9, { i64, i8* } %7) #2 ; [#uses = 1]
  br i1 %10, label %andand1, label %andandend23

andand1:                                          ; preds = %andand
  %.elt59 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack60 = load i64, i64* %.elt59, align 8    ; [#uses = 1]
  %11 = insertvalue { i64, i8* } undef, i64 %.unpack60, 0 ; [#uses = 1]
  %.elt61 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack62 = load i8*, i8** %.elt61, align 8    ; [#uses = 1]
  %12 = insertvalue { i64, i8* } %11, i8* %.unpack62, 1 ; [#uses = 1]
  %.elt63 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack64 = load i64, i64* %.elt63, align 8    ; [#uses = 1]
  %13 = insertvalue { i64, i8* } undef, i64 %.unpack64, 0 ; [#uses = 1]
  %.elt65 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack66 = load i8*, i8** %.elt65, align 8    ; [#uses = 1]
  %14 = insertvalue { i64, i8* } %13, i8* %.unpack66, 1 ; [#uses = 1]
  %15 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %14, { i64, i8* } %12) #2 ; [#uses = 1]
  br i1 %15, label %andand4, label %andandend23

andand4:                                          ; preds = %andand1
  %.elt67 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack68 = load i64, i64* %.elt67, align 8    ; [#uses = 1]
  %16 = insertvalue { i64, i8* } undef, i64 %.unpack68, 0 ; [#uses = 1]
  %.elt69 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack70 = load i8*, i8** %.elt69, align 8    ; [#uses = 1]
  %17 = insertvalue { i64, i8* } %16, i8* %.unpack70, 1 ; [#uses = 1]
  %.elt71 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack72 = load i64, i64* %.elt71, align 8    ; [#uses = 1]
  %18 = insertvalue { i64, i8* } undef, i64 %.unpack72, 0 ; [#uses = 1]
  %.elt73 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack74 = load i8*, i8** %.elt73, align 8    ; [#uses = 1]
  %19 = insertvalue { i64, i8* } %18, i8* %.unpack74, 1 ; [#uses = 1]
  %20 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %19, { i64, i8* } %17) #2 ; [#uses = 1]
  br i1 %20, label %andand7, label %andandend23

andand7:                                          ; preds = %andand4
  %21 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 0, i32 3 ; [#uses = 1, type = i8*]
  %22 = load i8, i8* %21, align 1                 ; [#uses = 1]
  %23 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 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 %andandend23

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

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

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

andand19:                                         ; preds = %andand16
  %.elt75 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 3, i32 0 ; [#uses = 1, type = i64*]
  %.unpack76 = load i64, i64* %.elt75, align 8    ; [#uses = 1]
  %41 = insertvalue { i64, i8* } undef, i64 %.unpack76, 0 ; [#uses = 1]
  %.elt77 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 0, i32 3, i32 1 ; [#uses = 1, type = i8**]
  %.unpack78 = load i8*, i8** %.elt77, align 8    ; [#uses = 1]
  %42 = insertvalue { i64, i8* } %41, i8* %.unpack78, 1 ; [#uses = 1]
  %.elt79 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 3, i32 0 ; [#uses = 1, type = i64*]
  %.unpack80 = load i64, i64* %.elt79, align 8    ; [#uses = 1]
  %43 = insertvalue { i64, i8* } undef, i64 %.unpack80, 0 ; [#uses = 1]
  %.elt81 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 0, i32 3, i32 1 ; [#uses = 1, type = i8**]
  %.unpack82 = load i8*, i8** %.elt81, align 8    ; [#uses = 1]
  %44 = insertvalue { i64, i8* } %43, i8* %.unpack82, 1 ; [#uses = 1]
  %45 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %44, { i64, i8* } %42) #2 ; [#uses = 1]
  br i1 %45, label %andand22, label %andandend23

andand22:                                         ; preds = %andand19
  %46 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %47 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %q, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %48 = load i64, i64* %46, align 8               ; [#uses = 1]
  %49 = load i64, i64* %47, align 8               ; [#uses = 1]
  %50 = icmp eq i64 %48, %49                      ; [#uses = 1]
  br label %andandend23

andandend23:                                      ; preds = %0, %andand, %andand1, %andand4, %andand7, %andand10, %andand13, %andand16, %andand22, %andand19
  %andandval24 = phi i1 [ false, %andand19 ], [ %50, %andand22 ], [ false, %andand16 ], [ false, %andand13 ], [ false, %andand10 ], [ false, %andand7 ], [ false, %andand4 ], [ false, %andand1 ], [ false, %andand ], [ false, %0 ] ; [#uses = 1, type = i1]
  ret i1 %andandval24
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4Impl9__xtoHashFNbNeKxSQFvQFu__TQFoTQFfVQDsi0ZQGcQCoQCaZm(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* dereferenceable(96) %p) local_unnamed_addr #1 {
unrolledstmt:
  %0 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D53TypeInfo_xS3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %p to i8* ; [#uses = 1]
  %4 = tail call i64 %2(%object.TypeInfo_Const* nonnull @_D53TypeInfo_xS3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4moveMFNaNbNiKQEjZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %source) local_unnamed_addr #1 {
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) #2
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 2, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 1]
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*]
  tail call void @_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T14ByLineCopyImplTyaTaZQwZQCjFNaNbNiNfMKQCfMNkKQCmZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %source, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %3) #2
  %4 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 1]
  %5 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %4, i64 0, i32 1 ; [#uses = 1, type = i64*]
  store i64 1, i64* %5, align 8
  ret void
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = tail call i8* @_D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv(i64 96, i64 1) #2 ; [#uses = 2]
  %2 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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 88, %object.TypeInfo* null) #10
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T11moveEmplaceTSQBp5stdio4File__T14ByLineCopyImplTyaTaZQwZQCfFNaNbNiKQCcKQCgZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %source) local_unnamed_addr #1 {
  tail call void @_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T14ByLineCopyImplTyaTaZQwZQCjFNaNbNiNfMKQCfMNkKQCmZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %source, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target) #2
  ret void
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore15deallocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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) #10
  %4 = load i8*, i8** %2, align 8                 ; [#uses = 1]
  tail call void @free(i8* %4) #10
  store %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* null, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8
  ret void
}

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore8refCountMxFNaNbNdNiNfZm(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15refCountedStoreMNgFNaNbNcNdNiNfZNgSQFsQFr__TQFlTQFcVQDpi0ZQFz15RefCountedStore(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"*]
  ret %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %1
}

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo8opAssignMFSQEtQEs__TQEmTQEdVQCqi0ZQFaZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* noalias nocapture align 8 %rhs) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %rhs, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  tail call void @_D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl5stdio4File__T14ByLineCopyImplTyaTaZQwVEQEcQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4ImplZQFlFNaNbNiNeKQFsKQFwZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %2, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** nonnull dereferenceable(8) %1) #2
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo6__dtorMFZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %rhs) #1
  ret void
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl5stdio4File__T14ByLineCopyImplTyaTaZQwVEQEcQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4ImplZQFlFNaNbNiNeKQFsKQFwZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %rhs, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %lhs) local_unnamed_addr #1 {
  %1 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %lhs to i8** ; [#uses = 1]
  %2 = load i8*, i8** %1, align 8                 ; [#uses = 5]
  %3 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %lhs to i8* ; [#uses = 2]
  %4 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %lhs, i64 1 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %5 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %rhs to i8** ; [#uses = 1]
  %8 = load i8*, i8** %7, align 8                 ; [#uses = 5]
  %9 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %rhs to i8* ; [#uses = 2]
  %10 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %rhs, i64 1 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %11 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %lhs to i64* ; [#uses = 1]
  %18 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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.20, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.15, i32 0, i32 0) }, i32 2831) #6
  unreachable

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

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo8opAssignMFNfQDrZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* nonnull %.this_arg, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* noalias nocapture align 8 %rhs) local_unnamed_addr #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*]
  invoke void @_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T14ByLineCopyImplTyaTaZQwZQCbFNfMKQBzMNkKQCgZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %rhs, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %3) #2
          to label %try.success unwind label %eh.resume

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

postinvoke:                                       ; preds = %assertFailed
  unreachable

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

eh.resume:                                        ; preds = %assertPassed, %assertFailed
  %5 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %6 = extractvalue { i8*, i32 } %5, 0            ; [#uses = 1]
  %7 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %rhs, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %7) #2
  tail call void @_Unwind_Resume(i8* %6)
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T4moveTSQBh5stdio4File__T14ByLineCopyImplTyaTaZQwZQBxFNfKQByKQCcZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %source) local_unnamed_addr #1 {
  tail call void @_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T14ByLineCopyImplTyaTaZQwZQCbFNfMKQBzMNkKQCgZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %source, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target) #2
  ret void
}

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

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore__T10initializeTSQFpQElQEiTEQGaQFz__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQDeMFKQCxKQCqKaZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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 #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) #1
  %1 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore", %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* %.this_arg, i64 0, i32 0 ; [#uses = 2, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %2 = load %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 2]
  %3 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2 to %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* ; [#uses = 1]
  %4 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2 to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(88) %4, i8* nonnull align 8 dereferenceable(88) bitcast (%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ to i8*), i64 88, i1 false) #2
  %5 = invoke %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S__T6__ctorZQiMFNcNfKQEmKQEfKaZSQIgQIeQHy__TQHsTQHjTQHnTQFvTQFoTaZQIoFKQIgKQGoKQGhKaZQDi(%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* nonnull returned %3, i8* nonnull dereferenceable(1) %_param_2, i8* nonnull dereferenceable(1) %_param_1, %std.stdio.File* nonnull dereferenceable(24) %_param_0) #2
          to label %postinvoke unwind label %landingPad ; [#uses = 0]

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

catch.object.Throwable:                           ; preds = %landingPad
  %8 = tail call %object.Throwable* @_d_eh_enter_catch(i8* %10) ; [#uses = 1]
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T14ByLineCopyImplTyaTaZQwVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore15deallocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) #1
  tail call void @_d_throw_exception(%object.Throwable* %8) #6
  unreachable

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D4core8lifetime__T7emplaceTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTSQBsQBrQBoTEQCd8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQEyFNfPQEwKQDiKQDbKaZQp(i8* dereferenceable(1) %_param_3, i8* dereferenceable(1) %_param_2, %std.stdio.File* dereferenceable(24) %_param_1, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %chunk_arg) local_unnamed_addr #1 {
  %1 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %chunk_arg to %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* ; [#uses = 1]
  %2 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %chunk_arg to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(88) %2, i8* nonnull align 8 dereferenceable(88) bitcast (%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ to i8*), i64 88, i1 false) #2
  %3 = tail call %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S__T6__ctorZQiMFNcNfKQEmKQEfKaZSQIgQIeQHy__TQHsTQHjTQHnTQFvTQFoTaZQIoFKQIgKQGoKQGhKaZQDi(%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), 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) #2 ; [#uses = 0]
  ret %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %chunk_arg
}

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFNfKQFaKQDiKQDbKaZv(i8* dereferenceable(1) %_param_3, i8* dereferenceable(1) %_param_2, %std.stdio.File* dereferenceable(24) %_param_1, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %chunk) local_unnamed_addr #1 {
  %1 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %chunk to %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* ; [#uses = 1]
  %2 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %chunk to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(88) %2, i8* nonnull align 8 dereferenceable(88) bitcast (%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S6__initZ to i8*), i64 88, i1 false) #2
  %3 = tail call %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S__T6__ctorZQiMFNcNfKQEmKQEfKaZSQIgQIeQHy__TQHsTQHjTQHnTQFvTQFoTaZQIoFKQIgKQGoKQGhKaZQDi(%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), 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) #2 ; [#uses = 0]
  ret void
}

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

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S11__xopEqualsFKxSQHsQHqQHk__TQHeTQGvTQGzTQFhTQFaTaZQIaFKQHsKQGaKQFtKaZQCuKxQChZb(%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* dereferenceable(88) %q, %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* dereferenceable(88) %p) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File.Impl**]
  %2 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 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 %andandend20

andand:                                           ; preds = %0
  %.elt = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 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]
  %.elt43 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack44 = load i8*, i8** %.elt43, align 8    ; [#uses = 1]
  %7 = insertvalue { i64, i8* } %6, i8* %.unpack44, 1 ; [#uses = 1]
  %.elt45 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack46 = load i64, i64* %.elt45, align 8    ; [#uses = 1]
  %8 = insertvalue { i64, i8* } undef, i64 %.unpack46, 0 ; [#uses = 1]
  %.elt47 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack48 = load i8*, i8** %.elt47, align 8    ; [#uses = 1]
  %9 = insertvalue { i64, i8* } %8, i8* %.unpack48, 1 ; [#uses = 1]
  %10 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %9, { i64, i8* } %7) #2 ; [#uses = 1]
  br i1 %10, label %andand1, label %andandend20

andand1:                                          ; preds = %andand
  %.elt49 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack50 = load i64, i64* %.elt49, align 8    ; [#uses = 1]
  %11 = insertvalue { i64, i8* } undef, i64 %.unpack50, 0 ; [#uses = 1]
  %.elt51 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack52 = load i8*, i8** %.elt51, align 8    ; [#uses = 1]
  %12 = insertvalue { i64, i8* } %11, i8* %.unpack52, 1 ; [#uses = 1]
  %.elt53 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 1, i32 0 ; [#uses = 1, type = i64*]
  %.unpack54 = load i64, i64* %.elt53, align 8    ; [#uses = 1]
  %13 = insertvalue { i64, i8* } undef, i64 %.unpack54, 0 ; [#uses = 1]
  %.elt55 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 1, i32 1 ; [#uses = 1, type = i8**]
  %.unpack56 = load i8*, i8** %.elt55, align 8    ; [#uses = 1]
  %14 = insertvalue { i64, i8* } %13, i8* %.unpack56, 1 ; [#uses = 1]
  %15 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %14, { i64, i8* } %12) #2 ; [#uses = 1]
  br i1 %15, label %andand4, label %andandend20

andand4:                                          ; preds = %andand1
  %.elt57 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack58 = load i64, i64* %.elt57, align 8    ; [#uses = 1]
  %16 = insertvalue { i64, i8* } undef, i64 %.unpack58, 0 ; [#uses = 1]
  %.elt59 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack60 = load i8*, i8** %.elt59, align 8    ; [#uses = 1]
  %17 = insertvalue { i64, i8* } %16, i8* %.unpack60, 1 ; [#uses = 1]
  %.elt61 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 2, i32 0 ; [#uses = 1, type = i64*]
  %.unpack62 = load i64, i64* %.elt61, align 8    ; [#uses = 1]
  %18 = insertvalue { i64, i8* } undef, i64 %.unpack62, 0 ; [#uses = 1]
  %.elt63 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 0, i32 2, i32 1 ; [#uses = 1, type = i8**]
  %.unpack64 = load i8*, i8** %.elt63, align 8    ; [#uses = 1]
  %19 = insertvalue { i64, i8* } %18, i8* %.unpack64, 1 ; [#uses = 1]
  %20 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %19, { i64, i8* } %17) #2 ; [#uses = 1]
  br i1 %20, label %andand7, label %andandend20

andand7:                                          ; preds = %andand4
  %21 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 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!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 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 %andandend20

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

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

andand16:                                         ; preds = %andand13
  %36 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8*]
  %37 = load i8, i8* %36, align 1, !range !16     ; [#uses = 1]
  %38 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8*]
  %39 = load i8, i8* %38, align 1, !range !16     ; [#uses = 1]
  %40 = icmp eq i8 %37, %39                       ; [#uses = 1]
  br i1 %40, label %andand19, label %andandend20

andand19:                                         ; preds = %andand16
  %.elt65 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 3, i32 0 ; [#uses = 1, type = i64*]
  %.unpack66 = load i64, i64* %.elt65, align 8    ; [#uses = 1]
  %41 = insertvalue { i64, i8* } undef, i64 %.unpack66, 0 ; [#uses = 1]
  %.elt67 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p, i64 0, i32 0, i32 3, i32 1 ; [#uses = 1, type = i8**]
  %.unpack68 = load i8*, i8** %.elt67, align 8    ; [#uses = 1]
  %42 = insertvalue { i64, i8* } %41, i8* %.unpack68, 1 ; [#uses = 1]
  %.elt69 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 3, i32 0 ; [#uses = 1, type = i64*]
  %.unpack70 = load i64, i64* %.elt69, align 8    ; [#uses = 1]
  %43 = insertvalue { i64, i8* } undef, i64 %.unpack70, 0 ; [#uses = 1]
  %.elt71 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %q, i64 0, i32 0, i32 3, i32 1 ; [#uses = 1, type = i8**]
  %.unpack72 = load i8*, i8** %.elt71, align 8    ; [#uses = 1]
  %44 = insertvalue { i64, i8* } %43, i8* %.unpack72, 1 ; [#uses = 1]
  %45 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %44, { i64, i8* } %42) #2 ; [#uses = 1]
  br label %andandend20

andandend20:                                      ; preds = %0, %andand, %andand1, %andand4, %andand7, %andand10, %andand13, %andand19, %andand16
  %andandval21 = phi i1 [ false, %andand16 ], [ %45, %andand19 ], [ false, %andand13 ], [ false, %andand10 ], [ false, %andand7 ], [ false, %andand4 ], [ false, %andand1 ], [ false, %andand ], [ false, %0 ] ; [#uses = 1, type = i1]
  ret i1 %andandval21
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S9__xtoHashFNbNeKxSQHtQHrQHl__TQHfTQGwTQHaTQFiTQFbTaZQIbFKQHtKQGbKQFuKaZQCvZm(%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* dereferenceable(88) %p) local_unnamed_addr #1 {
unrolledstmt:
  %0 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Const, %object.TypeInfo_Const* @_D53TypeInfo_xS3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__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!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %p to i8* ; [#uses = 1]
  %4 = tail call i64 %2(%object.TypeInfo_Const* nonnull @_D53TypeInfo_xS3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__initZ, i8* nonnull %3) ; [#uses = 1]
  ret i64 %4
}

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

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* @_D4core8internal8lifetime__T10emplaceRefTS3std5stdio4File__T14ByLineCopyImplTyaTaZQwTQBsTSQBwQBvQBsTEQCh8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqTaZQFgFKQEyKQDgKQCzKaZ1S__T6__ctorZQiMFNcNfKQEmKQEfKaZSQIgQIeQHy__TQHsTQHjTQHnTQFvTQFoTaZQIoFKQIgKQGoKQGhKaZQDi(%"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), 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 #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %__copytmp87 = alloca %std.stdio.File, align 8  ; [#uses = 3, size/byte = 24]
  %1 = getelementptr inbounds %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S", %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*]
  %2 = bitcast %"core.internal.lifetime.emplaceRef!(ByLineCopyImpl!(immutable(char), char), ByLineCopyImpl!(immutable(char), char), File, Flag, char).emplaceRef.S"* %.this_arg to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(88) %2, i8* nonnull align 8 dereferenceable(88) bitcast (%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__initZ to i8*), i64 88, i1 false)
  %3 = bitcast %std.stdio.File* %__copytmp87 to i8* ; [#uses = 1]
  %4 = bitcast %std.stdio.File* %_param_0 to i8*  ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(24) %3, i8* nonnull align 1 dereferenceable(24) %4, i64 24, i1 false)
  call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %__copytmp87) #2
  %5 = load i8, i8* %_param_1, align 1, !range !16 ; [#uses = 1]
  %6 = icmp ne i8 %5, 0                           ; [#uses = 1]
  %7 = load i8, i8* %_param_2, align 1            ; [#uses = 1]
  %8 = invoke %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* @_D3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__ctorMFNcNfSQCeQCdQCaEQCo8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEzQEyQEv__TQEtTyaTaZQFc(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull returned %1, i8 zeroext %7, i1 zeroext %6, %std.stdio.File* noalias nocapture nonnull align 8 %__copytmp87) #1
          to label %try.success.or.caught unwind label %landingPad ; [#uses = 0]

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

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

landingPad:                                       ; preds = %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 = 3]
; 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 #1 {
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) #2 ; [#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) #2
  %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) #2
  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.16, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.15, i32 0, i32 0) }, i32 1436) #6
  unreachable

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

; [#uses = 1]
; 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 #1 {
unrolledstmt:
  %0 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  %1 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T10ByLineImplTaTaZQr4ImplTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTaTaZQCwQCgZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %target, %std.stdio.File* nonnull dereferenceable(24) %0) #2 ; [#uses = 1]
  br i1 %1, label %if, label %unrolledstmt1

if:                                               ; preds = %unrolledstmt1, %unrolledstmt
  ret i1 true

unrolledstmt1:                                    ; preds = %unrolledstmt
  %2 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 1 ; [#uses = 1, type = { i64, i8* }*]
  %3 = tail call zeroext i1 @_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %target, { i64, i8* }* nonnull dereferenceable(16) %2) #2 ; [#uses = 1]
  br i1 %3, label %if, label %unrolledstmt2

unrolledstmt2:                                    ; preds = %unrolledstmt1
  %4 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 2 ; [#uses = 1, type = { i64, i8* }*]
  %5 = tail call zeroext i1 @_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTaTaZQCoQByZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %target, { i64, i8* }* nonnull dereferenceable(16) %4) #2 ; [#uses = 1]
  ret i1 %5
}

; [#uses = 1]
; 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 #1 {
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 = 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.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 ; [#uses = 1, type = { i64, i8* }*]
  %7 = tail call zeroext i1 @_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T10ByLineImplTaTaZQr4ImplTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTaTaZQCpQBzZb(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %target, { i64, i8* }* nonnull dereferenceable(16) %6) #2 ; [#uses = 1]
  ret i1 %7
}

; [#uses = 2]
; 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 #1 {
  %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 = 1]
  %3 = insertvalue { i64, i8* } undef, i64 %.len, 0 ; [#uses = 1]
  %4 = insertvalue { i64, i8* } %3, i8* %.ptr, 1  ; [#uses = 1]
  %5 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 1]
  %6 = insertvalue { i64, i8* } { i64 64, i8* undef }, i8* %5, 1 ; [#uses = 1]
  %7 = tail call { i64, i8* } @_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf({ i64, i8* } %6, { i64, i8* } %4) #1 ; [#uses = 1]
  %.len1 = extractvalue { i64, i8* } %7, 0        ; [#uses = 1]
  %8 = icmp ne i64 %.len1, 0                      ; [#uses = 1]
  ret i1 %8
}

; [#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 #1 {
  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 #1 {
  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 #1 {
  ret i1 false
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T18isUnionAliasedImplTSQBn5stdio4File__T10ByLineImplTaTaZQr4ImplZQCmFNaNbNiNfmZb(i64 %offset_arg) local_unnamed_addr #1 {
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 #1 {
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 = 1]
; 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 #1 {
  %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 = 1]
  %3 = insertvalue { i64, i8* } undef, i64 %.len, 0 ; [#uses = 1]
  %4 = insertvalue { i64, i8* } %3, i8* %.ptr, 1  ; [#uses = 1]
  %5 = bitcast %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %target to i8* ; [#uses = 1]
  %6 = insertvalue { i64, i8* } { i64 64, i8* undef }, i8* %5, 1 ; [#uses = 1]
  %7 = tail call { i64, i8* } @_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf({ i64, i8* } %6, { i64, i8* } %4) #2 ; [#uses = 1]
  %.len1 = extractvalue { i64, i8* } %7, 0        ; [#uses = 1]
  %8 = icmp ne i64 %.len1, 0                      ; [#uses = 1]
  ret i1 %8
}

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

; [#uses = 4]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf({ i64, i8* } %b_arg, { i64, i8* } %a_arg) local_unnamed_addr #1 {
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 #1 {
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 #1 {
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 = 2]
; 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 #1 {
  %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) #2
  tail call void @_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T10ByLineImplTaTaZQr4ImplZQCjFNaNbNiNfMKQCfMNkKQCmZv(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %source, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %target) #1
  ret void
}

; [#uses = 1]
; 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 #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  tail call void @_D3std8typecons__T10RefCountedTSQBe5stdio4File__T10ByLineImplTaTaZQr4ImplVEQCvQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore13allocateStoreMFNaNbNiZv(%"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore"* nonnull %.this_arg) #1
  %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 = 2, 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]
  %3 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2 to %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* ; [#uses = 1]
  %4 = bitcast %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"* %2 to i8* ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(64) %4, 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) #2
  %5 = 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 %3, i8* nonnull dereferenceable(1) %_param_2, i8* nonnull dereferenceable(1) %_param_1, %std.stdio.File* nonnull dereferenceable(24) %_param_0) #2
          to label %postinvoke unwind label %landingPad ; [#uses = 0]

postinvoke:                                       ; preds = %0
  %6 = load %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(Impl, RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %1, align 8 ; [#uses = 1]
  %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 1 ; [#uses = 1, type = i64*]
  store i64 1, i64* %7, align 8
  ret void

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

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

eh.resume:                                        ; preds = %landingPad
  tail call void @_Unwind_Resume(i8* %10)
  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 #1 {
  %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) #2
  %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) #2 ; [#uses = 0]
  ret %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %chunk_arg
}

; [#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 #1 {
  %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) #2
  %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) #2 ; [#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 #1 {
  %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) #2
  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 #1 {
  %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) #2
  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 #1 {
  %__swap119 = 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"* %__swap119 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"* %__swap119, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %4) #2
  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 #1 {
  %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) #2 ; [#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) #2 ; [#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) #2 ; [#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 !16     ; [#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 !16     ; [#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 !16     ; [#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 !16     ; [#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 #1 {
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 #1 {
  %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) #2
  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 #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
  %__copytmp126 = alloca %std.stdio.File, align 8 ; [#uses = 3, size/byte = 24]
  %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 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %2 = bitcast %"core.internal.lifetime.emplaceRef!(Impl, Impl, File, Flag, char).emplaceRef.S"* %.this_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 (%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__initZ to i8*), i64 64, i1 false)
  %3 = bitcast %std.stdio.File* %__copytmp126 to i8* ; [#uses = 1]
  %4 = bitcast %std.stdio.File* %_param_0 to i8*  ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(24) %3, i8* nonnull align 1 dereferenceable(24) %4, i64 24, i1 false)
  call void @_D3std5stdio4File10__postblitMFNbNfZv(%std.stdio.File* nonnull %__copytmp126) #2
  %5 = load i8, i8* %_param_1, align 1, !range !16 ; [#uses = 1]
  %6 = icmp ne i8 %5, 0                           ; [#uses = 1]
  %7 = load i8, i8* %_param_2, align 1            ; [#uses = 1]
  %8 = invoke %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* @_D3std5stdio4File__T10ByLineImplTaTaZQr4Impl6__ctorMFNcNfSQCeQCdQCaEQCo8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqaZSQEzQEyQEv__TQEtTaTaZQFbQEl(%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull returned %1, i8 zeroext %7, i1 zeroext %6, %std.stdio.File* noalias nocapture nonnull align 8 %__copytmp126) #1
          to label %try.success.or.caught unwind label %landingPad ; [#uses = 0]

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) #1
  call void @_d_throw_exception(%object.Throwable* %9) #6
  unreachable

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

landingPad:                                       ; preds = %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 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 #1 {
  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) #14
  unreachable

endif:                                            ; preds = %0
  ret i1 true
}

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

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

; [#uses = 2]
; 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 = 1]
  %.newclass_gc_alloc = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D9Exception7__ClassZ) #5 ; [#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
  %4 = tail call { i64, i8* } @_D6object__T4_dupTxaTyaZQmFNaNbNeMAxaZAya({ i64, i8* } %msg_arg) #2 ; [#uses = 2]
  %.ptr1 = extractvalue { i64, i8* } %4, 1        ; [#uses = 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.22, i64 0, i64 0), %condfalse ], [ %.ptr1, %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) #2 ; [#uses = 0]
  %9 = bitcast %object.Object* %.newclass_gc_alloc to %object.Throwable* ; [#uses = 1]
  tail call void @_d_throw_exception(%object.Throwable* %9) #6
  unreachable
}

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D6object__T4idupTxaZQjFNaNbNdNfAxaZAya({ i64, i8* } %a_arg) local_unnamed_addr #1 {
  %1 = tail call { i64, i8* } @_D6object__T4_dupTxaTyaZQmFNaNbNeMAxaZAya({ i64, i8* } %a_arg) #2 ; [#uses = 1]
  ret { i64, i8* } %1
}

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D6object__T4_dupTxaTyaZQmFNaNbNeMAxaZAya({ i64, i8* } %a_arg) local_unnamed_addr #1 {
  %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) #2 ; [#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) #2
  ret { i64, i8* } %1
}

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D6object__T8_dupCtfeTxaTyaZQqFNaNbNfMAxaZAya({ i64, i8* } %a_arg) local_unnamed_addr #1 {
  %res = alloca { i64, i8* }, align 8             ; [#uses = 4, size/byte = 16]
  %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 = 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**]
  %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 label %forcond

forcond:                                          ; preds = %forbody, %0
  %__key152.0 = phi i64 [ 0, %0 ], [ %4, %forbody ] ; [#uses = 3, type = i64]
  %exitcond.not = icmp eq i64 %__key152.0, %a_arg.fca.0.extract ; [#uses = 1]
  br i1 %exitcond.not, label %endfor, label %forbody

forbody:                                          ; preds = %forcond
  %2 = getelementptr inbounds i8, i8* %a_arg.fca.1.extract, i64 %__key152.0 ; [#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) #5 ; [#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 i64 %__key152.0, 1                     ; [#uses = 1]
  br label %forcond

endfor:                                           ; preds = %forcond
  %.fca.0.load = load i64, i64* %.fca.0.gep, align 8 ; [#uses = 1]
  %.fca.0.insert = insertvalue { i64, i8* } undef, i64 %.fca.0.load, 0 ; [#uses = 1]
  %.fca.1.load = load i8*, i8** %.fca.1.gep, align 8 ; [#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 = 2]
; Function Attrs: uwtable
declare { i64, i8* } @_d_arrayappendcTX(%object.TypeInfo*, { i64, i8* }* dereferenceable(16), i64) local_unnamed_addr #5

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

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D6object__T4_dupTxaTaZQlFNaNbNeMAxaZAa({ i64, i8* } %a_arg) local_unnamed_addr #1 {
  %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) #2 ; [#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) #2
  ret { i64, i8* } %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D6object__T8_dupCtfeTxaTaZQpFNaNbNfMAxaZAa({ i64, i8* } %a_arg) local_unnamed_addr #1 {
  %res = alloca { i64, i8* }, align 8             ; [#uses = 4, size/byte = 16]
  %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 = 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**]
  %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 label %forcond

forcond:                                          ; preds = %forbody, %0
  %__key176.0 = phi i64 [ 0, %0 ], [ %4, %forbody ] ; [#uses = 3, type = i64]
  %exitcond.not = icmp eq i64 %__key176.0, %a_arg.fca.0.extract ; [#uses = 1]
  br i1 %exitcond.not, label %endfor, label %forbody

forbody:                                          ; preds = %forcond
  %2 = getelementptr inbounds i8, i8* %a_arg.fca.1.extract, i64 %__key176.0 ; [#uses = 1, type = i8*]
  %.appendedArray = call { i64, i8* } @_d_arrayappendcTX(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D11TypeInfo_Aa6__initZ to %object.TypeInfo*), { i64, i8* }* nonnull dereferenceable(16) %res, i64 1) #5 ; [#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 i64 %__key176.0, 1                     ; [#uses = 1]
  br label %forcond

endfor:                                           ; preds = %forcond
  %.fca.0.load = load i64, i64* %.fca.0.gep, align 8 ; [#uses = 1]
  %.fca.0.insert = insertvalue { i64, i8* } undef, i64 %.fca.0.load, 0 ; [#uses = 1]
  %.fca.1.load = load i8*, i8** %.fca.1.gep, align 8 ; [#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 = 3]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T14ByLineCopyImplTyaTaZQwZQCjFNaNbNiNfMKQCfMNkKQCmZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %source, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target) local_unnamed_addr #1 {
andandend:
  %0 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T14ByLineCopyImplTyaTaZQwTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTyaTaZQCpKxQBbZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %source, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %source) #2 ; [#uses = 1]
  br i1 %0, label %assertFailed, label %assertPassed

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

assertPassed3:                                    ; preds = %assertPassed
  %1 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %target to i8* ; [#uses = 1]
  %2 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %source to i8* ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(88) %1, i8* nonnull align 1 dereferenceable(88) %2, i64 88, i1 false) #2
  %3 = load [19 x i8*]*, [19 x i8*]** getelementptr inbounds (%object.TypeInfo_Struct, %object.TypeInfo_Struct* @_D52TypeInfo_S3std5stdio4File__T14ByLineCopyImplTyaTaZQw6__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__T14ByLineCopyImplTyaTaZQw6__initZ) ; [#uses = 1]
  %.ptr8 = extractvalue { i64, i8* } %6, 1        ; [#uses = 1]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 dereferenceable(88) %2, i8* nonnull align 1 dereferenceable(88) %.ptr8, i64 88, i1 false) #2
  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.16, i32 0, i32 0) }, { i64, i8* } { i64 64, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.15, i32 0, i32 0) }, i32 1436) #6
  unreachable

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T14ByLineCopyImplTyaTaZQwTQBrTvZQClFNaNbNiNeKxSQDrQClQCi__TQCgTyaTaZQCpKxQBbZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %source) local_unnamed_addr #1 {
unrolledstmt:
  %0 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %source, i64 0, i32 0 ; [#uses = 1, type = %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"*]
  %1 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTSQCxQBrQBo__T14ByLineCopyImplTyaTaZQwTvZQDtFNaNbNiNeKxSQEzQDtQDq__TQDoTaTaZQDwQDgKxSQGcQEwQEt__TQDfTyaTaZQDoZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* nonnull dereferenceable(64) %0) #2 ; [#uses = 1]
  br i1 %1, label %if, label %unrolledstmt2

if:                                               ; preds = %unrolledstmt
  ret i1 true

unrolledstmt2:                                    ; preds = %unrolledstmt
  %2 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %source, i64 0, i32 3 ; [#uses = 1, type = { i64, i8* }*]
  %3 = tail call zeroext i1 @_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T14ByLineCopyImplTyaTaZQwTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTyaTaZQCqZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target, { i64, i8* }* nonnull dereferenceable(16) %2) #2 ; [#uses = 1]
  ret i1 %3
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4File__T10ByLineImplTaTaZQr4ImplTSQCxQBrQBo__T14ByLineCopyImplTyaTaZQwTvZQDtFNaNbNiNeKxSQEzQDtQDq__TQDoTaTaZQDwQDgKxSQGcQEwQEt__TQDfTyaTaZQDoZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target, %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* dereferenceable(64) %source) local_unnamed_addr #1 {
unrolledstmt:
  %0 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  %1 = tail call zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T14ByLineCopyImplTyaTaZQwTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTyaTaZQCxZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target, %std.stdio.File* nonnull dereferenceable(24) %0) #2 ; [#uses = 1]
  br i1 %1, label %if, label %unrolledstmt1

if:                                               ; preds = %unrolledstmt1, %unrolledstmt
  ret i1 true

unrolledstmt1:                                    ; preds = %unrolledstmt
  %2 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 1 ; [#uses = 1, type = { i64, i8* }*]
  %3 = tail call zeroext i1 @_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T14ByLineCopyImplTyaTaZQwTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTyaTaZQCpZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target, { i64, i8* }* nonnull dereferenceable(16) %2) #2 ; [#uses = 1]
  br i1 %3, label %if, label %unrolledstmt2

unrolledstmt2:                                    ; preds = %unrolledstmt1
  %4 = getelementptr inbounds %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl", %"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl"* %source, i64 0, i32 2 ; [#uses = 1, type = { i64, i8* }*]
  %5 = tail call zeroext i1 @_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T14ByLineCopyImplTyaTaZQwTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTyaTaZQCpZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target, { i64, i8* }* nonnull dereferenceable(16) %4) #2 ; [#uses = 1]
  ret i1 %5
}

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

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T14ByLineCopyImplTyaTaZQwTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTyaTaZQCqZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target, { i64, i8* }* dereferenceable(16) %source) local_unnamed_addr #1 {
  %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 = 1]
  %3 = insertvalue { i64, i8* } undef, i64 %.len, 0 ; [#uses = 1]
  %4 = insertvalue { i64, i8* } %3, i8* %.ptr, 1  ; [#uses = 1]
  %5 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %target to i8* ; [#uses = 1]
  %6 = insertvalue { i64, i8* } { i64 88, i8* undef }, i8* %5, 1 ; [#uses = 1]
  %7 = tail call { i64, i8* } @_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf({ i64, i8* } %6, { i64, i8* } %4) #1 ; [#uses = 1]
  %.len1 = extractvalue { i64, i8* } %7, 0        ; [#uses = 1]
  %8 = icmp ne i64 %.len1, 0                      ; [#uses = 1]
  ret i1 %8
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T18isUnionAliasedImplTSQBn5stdio4File__T14ByLineCopyImplTyaTaZQwZQCmFNaNbNiNfmZb(i64 %offset_arg) local_unnamed_addr #1 {
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, 64                ; [#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, 72                ; [#uses = 1]
  %4 = zext i1 %3 to i32                          ; [#uses = 1]
  %spec.select12 = add nuw nsw i32 %count.1, %4   ; [#uses = 1]
  %5 = icmp ugt i32 %spec.select12, 1             ; [#uses = 1]
  ret i1 %5
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQqQm__T14ByLineCopyImplTyaTaZQwTvZQCqFNaNbNiNeKxSQDwQCqQCnKxSQEiQDcQCz__TQCoTyaTaZQCxZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target, %std.stdio.File* dereferenceable(24) %source) local_unnamed_addr #1 {
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.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %target to i8* ; [#uses = 1]
  %3 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %target, i64 1 ; [#uses = 1, type = %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*]
  %4 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %3 to i8* ; [#uses = 1]
  %.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 ; [#uses = 1, type = { i64, i8* }*]
  %7 = tail call zeroext i1 @_D3std9exception__T11doesPointToTAyaTSQBk5stdio4File__T14ByLineCopyImplTyaTaZQwTvZQClFNaNbNiNeKxAyaKxSQDwQCmQCj__TQChTyaTaZQCqZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target, { i64, i8* }* nonnull dereferenceable(16) %6) #2 ; [#uses = 1]
  ret i1 %7
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTAxaTSQBk5stdio4File__T14ByLineCopyImplTyaTaZQwTvZQClFNaNbNiNeKxAaKxSQDvQClQCi__TQCgTyaTaZQCpZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target, { i64, i8* }* dereferenceable(16) %source) local_unnamed_addr #1 {
  %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 = 1]
  %3 = insertvalue { i64, i8* } undef, i64 %.len, 0 ; [#uses = 1]
  %4 = insertvalue { i64, i8* } %3, i8* %.ptr, 1  ; [#uses = 1]
  %5 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %target to i8* ; [#uses = 1]
  %6 = insertvalue { i64, i8* } { i64 88, i8* undef }, i8* %5, 1 ; [#uses = 1]
  %7 = tail call { i64, i8* } @_D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf({ i64, i8* } %6, { i64, i8* } %4) #1 ; [#uses = 1]
  %.len1 = extractvalue { i64, i8* } %7, 0        ; [#uses = 1]
  %8 = icmp ne i64 %.len1, 0                      ; [#uses = 1]
  ret i1 %8
}

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9exception__T11doesPointToTPxSQBi5stdio4File4ImplTSQCdQvQr__T14ByLineCopyImplTyaTaZQwTvZQCxFNaNbNiNeKxPQCwKxSQEjQDbQCy__TQCiTyaTaZQCrZb(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target, %std.stdio.File.Impl** dereferenceable(8) %source) local_unnamed_addr #1 {
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.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %target to i8* ; [#uses = 1]
  %3 = getelementptr inbounds %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %target, i64 1 ; [#uses = 1, type = %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"*]
  %4 = bitcast %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %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__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk5stdio4File__T14ByLineCopyImplTyaTaZQwVEQEbQCu24RefCountedAutoInitializei0ZQDo15RefCountedStore4ImplTQFfTvZQFzFNaNbNiNeKxPSQHgQFz__TQFtTQFkVQDxi0ZQGhQCtQCfKxQBkZb(%"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %target, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** dereferenceable(8) %source) local_unnamed_addr #1 {
andandend:
  %0 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %source to i8** ; [#uses = 1]
  %1 = load i8*, i8** %0, align 8                 ; [#uses = 2]
  %2 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %target to i8* ; [#uses = 1]
  %3 = getelementptr inbounds %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"*, %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"** %target, i64 1 ; [#uses = 1, type = %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), RefCountedAutoInitialize.no).RefCounted.RefCountedStore.Impl"**]
  %4 = bitcast %"std.typecons.RefCounted!(ByLineCopyImpl!(immutable(char), char), 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 = 2]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T8moveImplTSQBl5stdio4File__T14ByLineCopyImplTyaTaZQwZQCbFNfMKQBzMNkKQCgZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %source, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* dereferenceable(88) %target) local_unnamed_addr #1 {
  %1 = icmp eq %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %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.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl", %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* %target, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.stdio.File*]
  tail call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %2) #2
  tail call void @_D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5stdio4File__T14ByLineCopyImplTyaTaZQwZQCjFNaNbNiNfMKQCfMNkKQCmZv(%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %source, %"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl"* nonnull dereferenceable(88) %target) #1
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.typecons.Tuple!string.Tuple" @_D3std8typecons__T5tupleZ__TQkTAyaZQrFNaNbNiNfQpZSQBwQBv__T5TupleTQBjZQl({ i64, i8* } %_param_0_arg) local_unnamed_addr #1 {
  %_param_0_arg.fca.0.extract.i = extractvalue { i64, i8* } %_param_0_arg, 0 ; [#uses = 1]
  %_param_0_arg.fca.1.extract.i = extractvalue { i64, i8* } %_param_0_arg, 1 ; [#uses = 1]
  %.fca.0.0.insert = insertvalue %"std.typecons.Tuple!string.Tuple" undef, i64 %_param_0_arg.fca.0.extract.i, 0, 0 ; [#uses = 1]
  %.fca.0.1.insert = insertvalue %"std.typecons.Tuple!string.Tuple" %.fca.0.0.insert, i8* %_param_0_arg.fca.1.extract.i, 0, 1 ; [#uses = 1]
  ret %"std.typecons.Tuple!string.Tuple" %.fca.0.1.insert
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.typecons.Tuple!string.Tuple"* @_D3std8typecons__T5TupleTAyaZQl6__ctorMFNaNbNcNiNfQzZSQCaQBz__TQBtTQBqZQCb(%"std.typecons.Tuple!string.Tuple"* nonnull returned %.this_arg, { i64, i8* } %_param_0_arg) local_unnamed_addr #1 {
  %_param_0_arg.fca.0.extract = extractvalue { i64, i8* } %_param_0_arg, 0 ; [#uses = 1]
  %_param_0_arg.fca.1.extract = extractvalue { i64, i8* } %_param_0_arg, 1 ; [#uses = 1]
  %1 = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %_param_0_arg.fca.0.extract, i64* %1, align 8
  %2 = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %.this_arg, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %_param_0_arg.fca.1.extract, i8** %2, align 8
  ret %"std.typecons.Tuple!string.Tuple"* %.this_arg
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std8typecons__T5TupleTAyaZQl6toHashMxFNaNbNiNfZm(%"std.typecons.Tuple!string.Tuple"* nonnull %.this_arg) local_unnamed_addr #1 {
  %.elt = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %.this_arg, i64 0, i32 0, 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]
  %.elt2 = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %.this_arg, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8**]
  %.unpack3 = load i8*, i8** %.elt2, align 8      ; [#uses = 1]
  %2 = insertvalue { i64, i8* } %1, i8* %.unpack3, 1 ; [#uses = 1]
  %3 = tail call i64 @_D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm(i64 0, { i64, i8* } %2) #2 ; [#uses = 1]
  ret i64 %3
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D4core8internal4hash__T6hashOfTAyaZQmFNaNbNiNfMxAyamZm(i64 %seed_arg, { i64, i8* } %val_arg) local_unnamed_addr #1 {
  %1 = tail call i64 @_D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm(i64 %seed_arg, { i64, i8* } %val_arg) #2 ; [#uses = 1]
  ret i64 %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std8typecons__T5TupleTAyaZQl11__xopEqualsFKxSQBuQBt__TQBnTQBkZQBvKxQxZb(%"std.typecons.Tuple!string.Tuple"* dereferenceable(16) %q, %"std.typecons.Tuple!string.Tuple"* dereferenceable(16) %p) local_unnamed_addr #1 {
  %.unpack.elt = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %q, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.unpack.unpack = load i64, i64* %.unpack.elt, align 8 ; [#uses = 1]
  %1 = insertvalue { i64, i8* } undef, i64 %.unpack.unpack, 0 ; [#uses = 1]
  %.unpack.elt1 = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %q, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8**]
  %.unpack.unpack2 = load i8*, i8** %.unpack.elt1, align 8 ; [#uses = 1]
  %.unpack3 = insertvalue { i64, i8* } %1, i8* %.unpack.unpack2, 1 ; [#uses = 1]
  %2 = insertvalue %"std.typecons.Tuple!string.Tuple" undef, { i64, i8* } %.unpack3, 0 ; [#uses = 1]
  %3 = tail call zeroext i1 @_D3std8typecons__T5TupleTAyaZQl__T8opEqualsTxSQBsQBr__TQBlTQBiZQBtZQBhMxFNaNbNiNfxQBlZb(%"std.typecons.Tuple!string.Tuple"* nonnull %p, %"std.typecons.Tuple!string.Tuple" %2) #2 ; [#uses = 1]
  ret i1 %3
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std8typecons__T5TupleTAyaZQl__T8opEqualsTxSQBsQBr__TQBlTQBiZQBtZQBhMxFNaNbNiNfxQBlZb(%"std.typecons.Tuple!string.Tuple"* nonnull %.this_arg, %"std.typecons.Tuple!string.Tuple" %rhs_arg) local_unnamed_addr #1 {
  %rhs_arg.fca.0.0.extract = extractvalue %"std.typecons.Tuple!string.Tuple" %rhs_arg, 0, 0 ; [#uses = 1]
  %rhs_arg.fca.0.1.extract = extractvalue %"std.typecons.Tuple!string.Tuple" %rhs_arg, 0, 1 ; [#uses = 1]
  %.elt = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %.this_arg, i64 0, i32 0, 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.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %.this_arg, i64 0, i32 0, 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]
  %.fca.0.insert = insertvalue { i64, i8* } undef, i64 %rhs_arg.fca.0.0.extract, 0 ; [#uses = 1]
  %.fca.1.insert = insertvalue { i64, i8* } %.fca.0.insert, i8* %rhs_arg.fca.0.1.extract, 1 ; [#uses = 1]
  %3 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %.fca.1.insert, { i64, i8* } %2) #2 ; [#uses = 1]
  ret i1 %3
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std8typecons__T5TupleTAyaZQl8__xopCmpFKxSQBqQBp__TQBjTQBgZQBrKxQxZi(%"std.typecons.Tuple!string.Tuple"* dereferenceable(16) %q, %"std.typecons.Tuple!string.Tuple"* dereferenceable(16) %p) local_unnamed_addr #1 {
  %.unpack.elt = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %p, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.unpack.unpack = load i64, i64* %.unpack.elt, align 8 ; [#uses = 1]
  %1 = insertvalue { i64, i8* } undef, i64 %.unpack.unpack, 0 ; [#uses = 1]
  %.unpack.elt1 = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %p, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8**]
  %.unpack.unpack2 = load i8*, i8** %.unpack.elt1, align 8 ; [#uses = 1]
  %.unpack3 = insertvalue { i64, i8* } %1, i8* %.unpack.unpack2, 1 ; [#uses = 1]
  %2 = insertvalue %"std.typecons.Tuple!string.Tuple" undef, { i64, i8* } %.unpack3, 0 ; [#uses = 1]
  %3 = tail call i32 @_D3std8typecons__T5TupleTAyaZQl__T5opCmpTxSQBpQBo__TQBiTQBfZQBqZQBeMxFNaNbNiNfxQBlZi(%"std.typecons.Tuple!string.Tuple"* nonnull %q, %"std.typecons.Tuple!string.Tuple" %2) #2 ; [#uses = 1]
  ret i32 %3
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i32 @_D3std8typecons__T5TupleTAyaZQl__T5opCmpTxSQBpQBo__TQBiTQBfZQBqZQBeMxFNaNbNiNfxQBlZi(%"std.typecons.Tuple!string.Tuple"* nonnull %.this_arg, %"std.typecons.Tuple!string.Tuple" %rhs_arg) local_unnamed_addr #1 {
  %rhs_arg.fca.0.0.extract = extractvalue %"std.typecons.Tuple!string.Tuple" %rhs_arg, 0, 0 ; [#uses = 1]
  %rhs_arg.fca.0.1.extract = extractvalue %"std.typecons.Tuple!string.Tuple" %rhs_arg, 0, 1 ; [#uses = 1]
  %.elt = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 2, type = i64*]
  %.unpack = load i64, i64* %.elt, align 8        ; [#uses = 1]
  %1 = insertvalue { i64, i8* } undef, i64 %.unpack, 0 ; [#uses = 1]
  %.elt11 = getelementptr inbounds %"std.typecons.Tuple!string.Tuple", %"std.typecons.Tuple!string.Tuple"* %.this_arg, i64 0, i32 0, i32 1 ; [#uses = 2, type = i8**]
  %.unpack12 = load i8*, i8** %.elt11, align 8    ; [#uses = 1]
  %2 = insertvalue { i64, i8* } %1, i8* %.unpack12, 1 ; [#uses = 1]
  %.fca.0.insert = insertvalue { i64, i8* } undef, i64 %rhs_arg.fca.0.0.extract, 0 ; [#uses = 1]
  %.fca.1.insert = insertvalue { i64, i8* } %.fca.0.insert, i8* %rhs_arg.fca.0.1.extract, 1 ; [#uses = 2]
  %3 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %.fca.1.insert, { i64, i8* } %2) #2 ; [#uses = 1]
  br i1 %3, label %condend, label %if

if:                                               ; preds = %0
  %.unpack14 = load i64, i64* %.elt, align 8      ; [#uses = 1]
  %4 = insertvalue { i64, i8* } undef, i64 %.unpack14, 0 ; [#uses = 1]
  %.unpack16 = load i8*, i8** %.elt11, align 8    ; [#uses = 1]
  %5 = insertvalue { i64, i8* } %4, i8* %.unpack16, 1 ; [#uses = 1]
  %6 = tail call i32 @_D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi({ i64, i8* } %.fca.1.insert, { i64, i8* } %5) #2 ; [#uses = 1]
  %.inv = icmp sgt i32 %6, -1                     ; [#uses = 1]
  %. = select i1 %.inv, i32 1, i32 -1             ; [#uses = 1]
  br label %condend

condend:                                          ; preds = %0, %if
  %condtmp.0.sroa.speculated = phi i32 [ %., %if ], [ 0, %0 ] ; [#uses = 1, type = i32]
  ret i32 %condtmp.0.sroa.speculated
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr i64 @_D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm(i64 %seed_arg, { i64, i8* } %bytes_arg) local_unnamed_addr #1 {
  %bytes_arg.fca.0.extract = extractvalue { i64, i8* } %bytes_arg, 0 ; [#uses = 3]
  %bytes_arg.fca.1.extract = extractvalue { i64, i8* } %bytes_arg, 1 ; [#uses = 2]
  %1 = and i64 %bytes_arg.fca.0.extract, -4       ; [#uses = 1]
  %2 = trunc i64 %seed_arg to i32                 ; [#uses = 1]
  %3 = getelementptr inbounds i8, i8* %bytes_arg.fca.1.extract, i64 %1 ; [#uses = 4, type = i8*]
  br label %forcond

forcond:                                          ; preds = %forbody, %0
  %h1.0 = phi i32 [ %2, %0 ], [ %15, %forbody ]   ; [#uses = 3, type = i32]
  %data.0 = phi i8* [ %bytes_arg.fca.1.extract, %0 ], [ %16, %forbody ] ; [#uses = 3, type = i8*]
  %.not = icmp eq i8* %data.0, %3                 ; [#uses = 1]
  br i1 %.not, label %endfor, label %forbody

forbody:                                          ; preds = %forcond
  %4 = tail call i32 @_D4core8internal4hash__T9get32bitsZQlFNaNbNiMPxhZk(i8* %data.0) #2 ; [#uses = 2]
  %5 = mul i32 %4, -862048943                     ; [#uses = 1]
  %6 = mul i32 %4, 380141568                      ; [#uses = 1]
  %7 = lshr i32 %5, 17                            ; [#uses = 1]
  %8 = or i32 %7, %6                              ; [#uses = 1]
  %9 = mul i32 %8, 461845907                      ; [#uses = 1]
  %10 = xor i32 %9, %h1.0                         ; [#uses = 2]
  %11 = shl i32 %10, 13                           ; [#uses = 1]
  %12 = lshr i32 %10, 19                          ; [#uses = 1]
  %13 = or i32 %11, %12                           ; [#uses = 1]
  %14 = mul i32 %13, 5                            ; [#uses = 1]
  %15 = add i32 %14, -430675100                   ; [#uses = 1]
  %16 = getelementptr inbounds i8, i8* %data.0, i64 4 ; [#uses = 1, type = i8*]
  br label %forcond

endfor:                                           ; preds = %forcond
  %17 = and i64 %bytes_arg.fca.0.extract, 3       ; [#uses = 1]
  switch i64 %17, label %switchend [
    i64 3, label %case
    i64 2, label %goto_case
    i64 1, label %goto_case2
  ]

case:                                             ; preds = %endfor
  %18 = getelementptr inbounds i8, i8* %3, i64 2  ; [#uses = 1, type = i8*]
  %19 = load i8, i8* %18, align 1                 ; [#uses = 1]
  %20 = zext i8 %19 to i32                        ; [#uses = 1]
  %21 = shl nuw nsw i32 %20, 16                   ; [#uses = 1]
  br label %goto_case

goto_case:                                        ; preds = %endfor, %case
  %k11.0 = phi i32 [ 0, %endfor ], [ %21, %case ] ; [#uses = 1, type = i32]
  %22 = getelementptr inbounds i8, i8* %3, i64 1  ; [#uses = 1, type = i8*]
  %23 = load i8, i8* %22, align 1                 ; [#uses = 1]
  %24 = zext i8 %23 to i32                        ; [#uses = 1]
  %25 = shl nuw nsw i32 %24, 8                    ; [#uses = 1]
  %26 = or i32 %25, %k11.0                        ; [#uses = 1]
  br label %goto_case2

goto_case2:                                       ; preds = %endfor, %goto_case
  %k11.1 = phi i32 [ 0, %endfor ], [ %26, %goto_case ] ; [#uses = 1, type = i32]
  %27 = load i8, i8* %3, align 1                  ; [#uses = 1]
  %28 = zext i8 %27 to i32                        ; [#uses = 1]
  %29 = xor i32 %k11.1, %28                       ; [#uses = 2]
  %30 = mul i32 %29, -862048943                   ; [#uses = 1]
  %31 = mul i32 %29, 380141568                    ; [#uses = 1]
  %32 = lshr i32 %30, 17                          ; [#uses = 1]
  %33 = or i32 %32, %31                           ; [#uses = 1]
  %34 = mul i32 %33, 461845907                    ; [#uses = 1]
  %35 = xor i32 %34, %h1.0                        ; [#uses = 1]
  br label %switchend

switchend:                                        ; preds = %goto_case2, %endfor
  %h1.1 = phi i32 [ %h1.0, %endfor ], [ %35, %goto_case2 ] ; [#uses = 1, type = i32]
  %36 = trunc i64 %bytes_arg.fca.0.extract to i32 ; [#uses = 1]
  %37 = xor i32 %h1.1, %36                        ; [#uses = 2]
  %38 = lshr i32 %37, 16                          ; [#uses = 1]
  %39 = xor i32 %38, %37                          ; [#uses = 1]
  %40 = mul i32 %39, -2048144789                  ; [#uses = 2]
  %41 = lshr i32 %40, 13                          ; [#uses = 1]
  %42 = xor i32 %41, %40                          ; [#uses = 1]
  %43 = mul i32 %42, -1028477387                  ; [#uses = 2]
  %44 = lshr i32 %43, 16                          ; [#uses = 1]
  %45 = xor i32 %44, %43                          ; [#uses = 1]
  %46 = zext i32 %45 to i64                       ; [#uses = 1]
  ret i64 %46
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D4core8internal7convert__T7toUbyteTaZQlFNaNbNiNeMNkxAaZAxh({ i64, i8* } %arr_arg) local_unnamed_addr #1 {
  ret { i64, i8* } %arr_arg
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i32 @_D4core8internal4hash__T9get32bitsZQlFNaNbNiMPxhZk(i8* %x_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds i8, i8* %x_arg, i64 3 ; [#uses = 1, type = i8*]
  %2 = load i8, i8* %1, align 1                   ; [#uses = 1]
  %3 = zext i8 %2 to i32                          ; [#uses = 1]
  %4 = shl nuw i32 %3, 24                         ; [#uses = 1]
  %5 = getelementptr inbounds i8, i8* %x_arg, i64 2 ; [#uses = 1, type = i8*]
  %6 = load i8, i8* %5, align 1                   ; [#uses = 1]
  %7 = zext i8 %6 to i32                          ; [#uses = 1]
  %8 = shl nuw nsw i32 %7, 16                     ; [#uses = 1]
  %9 = or i32 %8, %4                              ; [#uses = 1]
  %10 = getelementptr inbounds i8, i8* %x_arg, i64 1 ; [#uses = 1, type = i8*]
  %11 = load i8, i8* %10, align 1                 ; [#uses = 1]
  %12 = zext i8 %11 to i32                        ; [#uses = 1]
  %13 = shl nuw nsw i32 %12, 8                    ; [#uses = 1]
  %14 = or i32 %9, %13                            ; [#uses = 1]
  %15 = load i8, i8* %x_arg, align 1              ; [#uses = 1]
  %16 = zext i8 %15 to i32                        ; [#uses = 1]
  %17 = or i32 %14, %16                           ; [#uses = 1]
  ret i32 %17
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D4core8internal5array10comparison__T5__cmpTaZQjFNaNbNiNeMxAaMxQeZi({ i64, i8* } %rhs_arg, { i64, i8* } %lhs_arg) local_unnamed_addr #1 {
  %1 = tail call i32 @_D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi({ i64, i8* } %rhs_arg, { i64, i8* } %lhs_arg) #2 ; [#uses = 1]
  ret i32 %1
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr i32 @_D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi({ i64, i8* } %s2_arg, { i64, i8* } %s1_arg) local_unnamed_addr #1 {
condend:
  %s1_arg.fca.0.extract = extractvalue { i64, i8* } %s1_arg, 0 ; [#uses = 3]
  %s1_arg.fca.1.extract = extractvalue { i64, i8* } %s1_arg, 1 ; [#uses = 1]
  %s2_arg.fca.0.extract = extractvalue { i64, i8* } %s2_arg, 0 ; [#uses = 3]
  %s2_arg.fca.1.extract = extractvalue { i64, i8* } %s2_arg, 1 ; [#uses = 1]
  %.not = icmp ugt i64 %s1_arg.fca.0.extract, %s2_arg.fca.0.extract ; [#uses = 2]
  %s2_arg.fca.0.extract.s1_arg.fca.0.extract = select i1 %.not, i64 %s2_arg.fca.0.extract, i64 %s1_arg.fca.0.extract ; [#uses = 1]
  %0 = tail call i32 @memcmp(i8* %s1_arg.fca.1.extract, i8* %s2_arg.fca.1.extract, i64 %s2_arg.fca.0.extract.s1_arg.fca.0.extract) #2 ; [#uses = 2]
  %.not20 = icmp eq i32 %0, 0                     ; [#uses = 1]
  br i1 %.not20, label %endif, label %if

if:                                               ; preds = %condend
  ret i32 %0

endif:                                            ; preds = %condend
  %1 = zext i1 %.not to i32                       ; [#uses = 1]
  %2 = icmp ult i64 %s1_arg.fca.0.extract, %s2_arg.fca.0.extract ; [#uses = 1]
  %.neg = sext i1 %2 to i32                       ; [#uses = 1]
  %3 = add nsw i32 %.neg, %1                      ; [#uses = 1]
  ret i32 %3
}

; [#uses = 1]
; Function Attrs: nofree nounwind readonly
declare i32 @memcmp(i8* nocapture, i8* nocapture, i64) local_unnamed_addr #13

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

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

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, { i64, i8* } %writeme_arg) local_unnamed_addr #1 {
  %writeme_arg.fca.0.extract = extractvalue { i64, i8* } %writeme_arg, 0 ; [#uses = 2]
  %writeme_arg.fca.1.extract = extractvalue { i64, i8* } %writeme_arg, 1 ; [#uses = 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]
  br i1 %3, label %if, label %forcond

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 @_D3std5stdio__T13trustedFwriteTaZQsFNbNiNePOS4core4stdcQBx8_IO_FILExAaZm({ i64, i8* } %writeme_arg, %core.stdc.stdio._IO_FILE* %7) #2 ; [#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.8, i32 0, i32 0) }) #14
  unreachable

endif2:                                           ; preds = %forcond, %if
  ret void

forcond:                                          ; preds = %0, %forbody
  %__key215.0 = phi i64 [ %11, %forbody ], [ 0, %0 ] ; [#uses = 3, type = i64]
  %exitcond.not = icmp eq i64 %__key215.0, %writeme_arg.fca.0.extract ; [#uses = 1]
  br i1 %exitcond.not, label %endif2, label %forbody

forbody:                                          ; preds = %forcond
  %9 = getelementptr inbounds i8, i8* %writeme_arg.fca.1.extract, i64 %__key215.0 ; [#uses = 1, type = i8*]
  %10 = load i8, i8* %9, align 1                  ; [#uses = 1]
  tail call void @_D3std5stdio4File17LockingTextWriter__T3putTyaZQiMFNfyaZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, i8 zeroext %10) #2
  %11 = add i64 %__key215.0, 1                    ; [#uses = 1]
  br label %forcond
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, i8 zeroext %c_arg) local_unnamed_addr #1 {
  %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) #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]
  %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) #2 ; [#uses = 1]
  %6 = tail call i32 @fputc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %5) #2 ; [#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) #2 ; [#uses = 1]
  %9 = tail call i32 @fputwc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %8) #2 ; [#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 = 1]
  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 = insertvalue { i64, i8* } { i64 4, i8* undef }, i8* %19, 1 ; [#uses = 1]
  %21 = tail call i32 @_D3std3utf__T6strideTAaZQlFNaNfQkZk({ i64, i8* } %20) #1 ; [#uses = 2]
  %22 = zext i32 %21 to i64                       ; [#uses = 3]
  %23 = load i64, i64* %14, align 8               ; [#uses = 1]
  %24 = icmp eq i64 %23, %22                      ; [#uses = 1]
  br i1 %24, label %if7, label %endif

if7:                                              ; preds = %bounds.ok
  %bounds.cmp.up = icmp ult i32 %21, 5            ; [#uses = 1]
  br i1 %bounds.cmp.up, label %bounds.ok9, label %bounds.fail10

bounds.ok9:                                       ; preds = %if7
  %25 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %22, i64* %25, align 8
  %26 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %19, i8** %26, align 8
  %27 = call i32 @_D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNfKQmZw({ i64, i8* }* nonnull dereferenceable(16) %str) #1 ; [#uses = 1]
  %28 = getelementptr inbounds [1 x i32], [1 x i32]* %wbuf, i64 0, i64 0 ; [#uses = 2, type = i32*]
  store i32 65535, i32* %28, align 4
  %29 = call i64 @_D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG1wwZm(i32 %27, [1 x i32]* nonnull dereferenceable(4) %wbuf) #1 ; [#uses = 1]
  br label %forcond

forcond:                                          ; preds = %bounds.ok12, %bounds.ok9
  %bounds.cmp11 = phi i1 [ false, %bounds.ok12 ], [ true, %bounds.ok9 ] ; [#uses = 1, type = i1]
  %__key220.0 = phi i64 [ 1, %bounds.ok12 ], [ 0, %bounds.ok9 ] ; [#uses = 1, type = i64]
  %30 = icmp ult i64 %__key220.0, %29             ; [#uses = 1]
  br i1 %30, label %forbody, label %endfor

forbody:                                          ; preds = %forcond
  br i1 %bounds.cmp11, label %bounds.ok12, label %bounds.fail13

bounds.ok12:                                      ; preds = %forbody
  %31 = load i32, i32* %28, align 4               ; [#uses = 1]
  %32 = call %core.stdc.stdio._IO_FILE* @_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE(%std.stdio.File.LockingTextWriter* nonnull %.this_arg) #2 ; [#uses = 1]
  %33 = call i32 @fputwc_unlocked(i32 %31, %core.stdc.stdio._IO_FILE* %32) #2 ; [#uses = 0]
  br label %forcond

bounds.fail13:                                    ; preds = %forbody
  call void @_d_arraybounds_index({ i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.8, i32 0, i32 0) }, i32 3310, i64 1, i64 1) #6
  unreachable

endfor:                                           ; preds = %forcond
  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.8, i32 0, i32 0) }, i32 3305, i64 0, i64 %22, i64 4) #6
  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.8, i32 0, i32 0) }, i32 3301, i64 %15, i64 4) #6
  unreachable

endif:                                            ; preds = %if1, %bounds.ok, %endfor, %if4, %if
  ret void
}

; [#uses = 1]
; 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 #1 {
  %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) #2 ; [#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 #1 {
  %.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) #14
  unreachable

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File17LockingTextWriter__T3putTyaZQiMFNfyaZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, i8 zeroext %c_arg) local_unnamed_addr #1 {
  %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) #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]
  %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) #2 ; [#uses = 1]
  %6 = tail call i32 @fputc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %5) #2 ; [#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) #2 ; [#uses = 1]
  %9 = tail call i32 @fputwc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %8) #2 ; [#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 = 1]
  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 = insertvalue { i64, i8* } { i64 4, i8* undef }, i8* %19, 1 ; [#uses = 1]
  %21 = tail call i32 @_D3std3utf__T6strideTAaZQlFNaNfQkZk({ i64, i8* } %20) #2 ; [#uses = 2]
  %22 = zext i32 %21 to i64                       ; [#uses = 3]
  %23 = load i64, i64* %14, align 8               ; [#uses = 1]
  %24 = icmp eq i64 %23, %22                      ; [#uses = 1]
  br i1 %24, label %if7, label %endif

if7:                                              ; preds = %bounds.ok
  %bounds.cmp.up = icmp ult i32 %21, 5            ; [#uses = 1]
  br i1 %bounds.cmp.up, label %bounds.ok9, label %bounds.fail10

bounds.ok9:                                       ; preds = %if7
  %25 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %22, i64* %25, align 8
  %26 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %19, i8** %26, align 8
  %27 = call i32 @_D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNfKQmZw({ i64, i8* }* nonnull dereferenceable(16) %str) #2 ; [#uses = 1]
  %28 = getelementptr inbounds [1 x i32], [1 x i32]* %wbuf, i64 0, i64 0 ; [#uses = 2, type = i32*]
  store i32 65535, i32* %28, align 4
  %29 = call i64 @_D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG1wwZm(i32 %27, [1 x i32]* nonnull dereferenceable(4) %wbuf) #2 ; [#uses = 1]
  br label %forcond

forcond:                                          ; preds = %bounds.ok12, %bounds.ok9
  %bounds.cmp11 = phi i1 [ false, %bounds.ok12 ], [ true, %bounds.ok9 ] ; [#uses = 1, type = i1]
  %__key218.0 = phi i64 [ 1, %bounds.ok12 ], [ 0, %bounds.ok9 ] ; [#uses = 1, type = i64]
  %30 = icmp ult i64 %__key218.0, %29             ; [#uses = 1]
  br i1 %30, label %forbody, label %endfor

forbody:                                          ; preds = %forcond
  br i1 %bounds.cmp11, label %bounds.ok12, label %bounds.fail13

bounds.ok12:                                      ; preds = %forbody
  %31 = load i32, i32* %28, align 4               ; [#uses = 1]
  %32 = call %core.stdc.stdio._IO_FILE* @_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE(%std.stdio.File.LockingTextWriter* nonnull %.this_arg) #2 ; [#uses = 1]
  %33 = call i32 @fputwc_unlocked(i32 %31, %core.stdc.stdio._IO_FILE* %32) #2 ; [#uses = 0]
  br label %forcond

bounds.fail13:                                    ; preds = %forbody
  call void @_d_arraybounds_index({ i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.8, i32 0, i32 0) }, i32 3310, i64 1, i64 1) #6
  unreachable

endfor:                                           ; preds = %forcond
  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.8, i32 0, i32 0) }, i32 3305, i64 0, i64 %22, i64 4) #6
  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.8, i32 0, i32 0) }, i32 3301, i64 %15, i64 4) #6
  unreachable

endif:                                            ; preds = %if1, %bounds.ok, %endfor, %if4, %if
  ret void
}

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

; [#uses = 2]
; 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 = 1]
  %.newclass_gc_alloc = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D3std9exception14ErrnoException7__ClassZ) #5 ; [#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
  %4 = tail call { i64, i8* } @_D6object__T4_dupTxaTyaZQmFNaNbNeMAxaZAya({ i64, i8* } %msg_arg) #2 ; [#uses = 2]
  %.ptr1 = extractvalue { i64, i8* } %4, 1        ; [#uses = 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* [ %.ptr1, %condtrue ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, 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) #2 ; [#uses = 0]
  %6 = bitcast %object.Object* %.newclass_gc_alloc to %object.Throwable* ; [#uses = 1]
  tail call void @_d_throw_exception(%object.Throwable* %6) #6
  unreachable
}

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

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

; [#uses = 4]
; 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__T3putTyaZQiMFNfyaZ13trustedFPUTWCFNbNiNewPS4core4stdcQDh8_IO_FILEZw(%core.stdc.stdio._IO_FILE* %h_arg, i32 %ch_arg) local_unnamed_addr #1 {
  %1 = tail call i32 @fputwc_unlocked(i32 %ch_arg, %core.stdc.stdio._IO_FILE* %h_arg) #2 ; [#uses = 1]
  ret i32 %1
}

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

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

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

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T6strideTAaZQlFNaNfQkZk({ i64, i8* } %str_arg) local_unnamed_addr #1 {
  %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) #2 ; [#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.24, i32 0, i32 0) }, i32 403, i64 0, i64 0) #6
  unreachable
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNfKQmZw({ i64, i8* }* dereferenceable(16) %str) local_unnamed_addr #1 {
  %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) #2 ; [#uses = 1]
  ret i32 %1
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr i64 @_D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG1wwZm(i32 %c_arg, [1 x i32]* dereferenceable(4) %buf) local_unnamed_addr #1 {
arrayinit.cond:
  %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 = tail call i32 @_D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDmFNaNfQCiwZw(i32 %c_arg, { i64, i8* } { i64 40, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.27, i32 0, i32 0) }) #2 ; [#uses = 1]
  br label %endif

else:                                             ; preds = %arrayinit.cond
  %5 = tail call zeroext i1 @_D3std3utf12isValidDcharFNaNbNiNfwZb(i32 %c_arg) #2 ; [#uses = 1]
  br i1 %5, 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.24, i32 0, i32 0) }, i32 2506) #6
  unreachable

endif:                                            ; preds = %else, %if
  %c.0 = phi i32 [ %4, %if ], [ %c_arg, %else ]   ; [#uses = 1, type = i32]
  store i32 %c.0, i32* %0, align 4
  ret i64 1
}

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNeKQmJmZw(i64* dereferenceable(8) %numCodeUnits, { i64, i8* }* dereferenceable(16) %str) local_unnamed_addr #1 {
  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.24, i32 0, i32 0) }, i32 1292, i64 0, i64 0) #6
  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) #2 ; [#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.24, i32 0, i32 0) }, i32 1299, i64 %11, i64 %.len14, i64 %.len14) #6
  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) #2 ; [#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.24, i32 0, i32 0) }, i32 1285) #6
  unreachable

assertFailed:                                     ; preds = %0
  tail call void @_d_assert({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.24, i32 0, i32 0) }, i32 1281) #6
  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 #1 {
  %.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) #1 ; [#uses = 1]
  %9 = bitcast %std.utf.UTFException* %8 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %9) #6
  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) #1 ; [#uses = 1]
  %13 = bitcast %std.utf.UTFException* %12 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %13) #6
  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) #1 ; [#uses = 1]
  %20 = bitcast %std.utf.UTFException* %19 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %20) #6
  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) #1 ; [#uses = 1]
  %29 = bitcast %std.utf.UTFException* %28 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %29) #6
  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) #1 ; [#uses = 1]
  %35 = bitcast %std.utf.UTFException* %34 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %35) #6
  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) #1 ; [#uses = 1]
  %42 = bitcast %std.utf.UTFException* %41 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %42) #6
  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) #1 ; [#uses = 1]
  %52 = bitcast %std.utf.UTFException* %51 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %52) #6
  unreachable

endif23:                                          ; preds = %if20
  %53 = tail call zeroext i1 @_D3std3utf12isValidDcharFNaNbNiNfwZb(i32 %47) #2 ; [#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) #1 ; [#uses = 1]
  %56 = bitcast %std.utf.UTFException* %55 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %56) #6
  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) #1 ; [#uses = 1]
  %62 = bitcast %std.utf.UTFException* %61 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %62) #6
  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) #1 ; [#uses = 1]
  %69 = bitcast %std.utf.UTFException* %68 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %69) #6
  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) #1 ; [#uses = 1]
  %77 = bitcast %std.utf.UTFException* %76 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %77) #6
  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) #1 ; [#uses = 1]
  %82 = bitcast %std.utf.UTFException* %81 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %82) #6
  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) #1 ; [#uses = 1]
  %85 = bitcast %std.utf.UTFException* %84 to %object.Throwable* ; [#uses = 1]
  call void @_d_throw_exception(%object.Throwable* %85) #6
  unreachable
}

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

; [#uses = 10]
; Function Attrs: uwtable
define weak_odr %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException(i8* nonnull %.nest_arg) local_unnamed_addr #1 {
  %pstr = bitcast i8* %.nest_arg to i8**          ; [#uses = 1]
  %length = getelementptr inbounds i8, i8* %.nest_arg, i64 8 ; [#uses = 1, type = i8*]
  %1 = bitcast i8* %length to i64*                ; [#uses = 1]
  %2 = load i64, i64* %1, align 8                 ; [#uses = 1]
  %3 = load i8*, i8** %pstr, align 8              ; [#uses = 1]
  %4 = insertvalue { i64, i8* } undef, i64 %2, 0  ; [#uses = 1]
  %5 = insertvalue { i64, i8* } %4, i8* %3, 1     ; [#uses = 1]
  %6 = tail call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException({ i64, i8* } { i64 22, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i32 0, i32 0) }, { i64, i8* } %5) #2 ; [#uses = 1]
  ret %std.utf.UTFException* %6
}

; [#uses = 2]
; 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 #1 {
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.24, i32 0, i32 0) }, i32 1544, i64 %str_arg.fca.0.extract, i64 %str_arg.fca.0.extract) #6
  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) #5 ; [#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.24, i32 0, i32 0) }, i64 %.lcssa, { i64, i8* } %msg_arg) #2 ; [#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 #1 {
  %pstr = bitcast i8* %.nest_arg to i8**          ; [#uses = 1]
  %length = getelementptr inbounds i8, i8* %.nest_arg, i64 8 ; [#uses = 1, type = i8*]
  %1 = bitcast i8* %length to i64*                ; [#uses = 1]
  %2 = load i64, i64* %1, align 8                 ; [#uses = 1]
  %3 = load i8*, i8** %pstr, align 8              ; [#uses = 1]
  %4 = insertvalue { i64, i8* } undef, i64 %2, 0  ; [#uses = 1]
  %5 = insertvalue { i64, i8* } %4, i8* %3, 1     ; [#uses = 1]
  %6 = tail call %std.utf.UTFException* @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException({ i64, i8* } { i64 44, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.26, i32 0, i32 0) }, { i64, i8* } %5) #2 ; [#uses = 1]
  ret %std.utf.UTFException* %6
}

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDmFNaNfQCiwZw(i32 %c_arg, { i64, i8* } %msg_arg) local_unnamed_addr #1 {
  %.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) #5 ; [#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.24, i32 0, i32 0) }, { i64, i8* }* nonnull byval align 8 %.lval_copy_for_ImplicitByvalRewrite) #2 ; [#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) #6
  unreachable
}

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

; [#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 #1 {
  %1 = tail call i32 @fputc_unlocked(i32 %ch_arg, %core.stdc.stdio._IO_FILE* %h_arg) #2 ; [#uses = 1]
  ret i32 %1
}

; [#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 #1 {
  %1 = tail call i32 @fputwc_unlocked(i32 %ch_arg, %core.stdc.stdio._IO_FILE* %h_arg) #2 ; [#uses = 1]
  ret i32 %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 #5

attributes #0 = { uwtable "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16,+cx16" }
attributes #1 = { uwtable "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #2 = { "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #3 = { argmemonly nounwind willreturn }
attributes #4 = { nounwind uwtable }
attributes #5 = { uwtable }
attributes #6 = { cold noreturn uwtable }
attributes #7 = { argmemonly nounwind willreturn writeonly }
attributes #8 = { nounwind readnone }
attributes #9 = { nounwind "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16,+cx16" }
attributes #10 = { "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16,+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 = { nofree nounwind readonly "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #14 = { noreturn "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }

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

!0 = !{%object.Exception* undef}
!1 = !{%object.Exception undef, i1 false}
!2 = !{%"std.stdio.File.ByLineImpl!(char, char).ByLineImpl.Impl" undef}
!3 = !{i1 undef}
!4 = !{{ i64, i8* } undef}
!5 = !{%std.stdio.File undef}
!6 = !{i8 undef}
!7 = !{i64 undef}
!8 = !{%"std.stdio.File.ByLineCopyImpl!(immutable(char), char).ByLineCopyImpl" undef}
!9 = !{%object.Throwable* undef}
!10 = !{%object.Throwable undef, i1 true}
!11 = !{%std.exception.ErrnoException* undef}
!12 = !{%std.exception.ErrnoException undef, i1 false}
!13 = !{%std.utf.UTFException* undef}
!14 = !{%std.utf.UTFException undef, i1 false}
!15 = !{!"ldc version 1.28.0"}
!16 = !{i8 0, i8 2}
