import std.stdio;
import std.string;
import std.conv;
import std.typecons;
import std.algorithm;
import std.functional;
import std.bigint;
import std.numeric;
import std.array;
import std.math;
import std.range;
import std.container;
import std.ascii;
void times(alias fun)(int n) {
    foreach(i; 0..n) fun();
}
auto rep(alias fun, T = typeof(fun()))(int n) {
    T[] res = new T[n];
    foreach(ref e; res) e = fun();
    return res;
}
// fold was added in D 2.071.0.
template fold(fun...) if (fun.length >= 1) {
    auto fold(R, S...)(R r, S seed) {
        static if (S.length < 2) {
            return reduce!fun(seed, r);
        } else {
            return reduce!fun(tuple(seed), r);
        }
    }
}

void main() {
    3.rep!(() => readln.chomp.map!(c => c-'a').pipe!(str => DList!int(str))).pipe!((ary) {
        int now = 0;
        while(!ary[now].empty) {
            int tmp = ary[now].front;
            ary[now].removeFront;
            now = tmp;
        }
        return now;
    }).pipe!(i => "ABC"[i]).writeln;
}

; ModuleID = '/data/TheStack_IR/OJ_Samples/Collated/D/Source_4215/source.d'
source_filename = "/data/TheStack_IR/OJ_Samples/Collated/D/Source_4215/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* }
%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 }>
%object.TypeInfo_Array = type { [19 x i8*]*, i8*, %object.TypeInfo* }
%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.TypeInfo_Const = type { [19 x i8*]*, i8*, %object.TypeInfo* }
%object.TypeInfo_Pointer = 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.ModuleInfo = type { i32, i32 }
%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.container.dlist.DList!int.DList" = type { %std.container.dlist.BaseNode* }
%std.container.dlist.BaseNode = type { %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode* }
%nest.decodeImpl = type { i8*, i64 }
%"source.main.__lambda1.MapResult!(__lambda1, string).MapResult" = type { { i64, i8* }, i8* }
%"std.container.dlist.DList!int.DList.Range" = type { %std.container.dlist.DRange }
%std.container.dlist.DRange = type { %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode* }
%"std.container.dlist.DList!int.DList.PayNode" = type { %std.container.dlist.BaseNode, i32, [4 x i8] }
%"std.range.Take!(Range).Take" = type { %"std.container.dlist.DList!int.DList.Range", i64 }
%std.stdio.File.LockingTextWriter = type { %std.stdio.File, i32, i16, [4 x i8], [6 x i8], i64 }
%nest.decodeImpl.0 = type { i8*, i64 }

@.str = private unnamed_addr constant [4 x i8] c"ABC\00" ; [#uses = 1]
@.str.1 = private unnamed_addr constant [61 x i8] c"/data/TheStack_IR/OJ_Samples/Collated/D/Source_4215/source.d\00" ; [#uses = 1]
@.str.2 = private unnamed_addr constant [39 x i8] c"Attempt to read from an unopened file.\00" ; [#uses = 1]
@.str.3 = private unnamed_addr constant [52 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/stdio.d\00" ; [#uses = 1]
@_D9Exception7__ClassZ = external global %object.TypeInfo_Class ; [#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.4 = private unnamed_addr constant [19 x i8] c"Enforcement failed\00" ; [#uses = 1]
@_D12TypeInfo_Axa6__initZ = external global %object.TypeInfo_Array ; [#uses = 1]
@_D12TypeInfo_Aya6__initZ = external global %object.TypeInfo_Array ; [#uses = 1]
@.str.5 = private unnamed_addr constant [56 x i8] c"Attempting to fetch the front of an empty array of char\00" ; [#uses = 1]
@.str.6 = private unnamed_addr constant [63 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/range/primitives.d\00" ; [#uses = 1]
@.str.7 = private unnamed_addr constant [45 x i8] c"Attempted to decode past the end of a string\00" ; [#uses = 1]
@.str.8 = private unnamed_addr constant [50 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/utf.d\00" ; [#uses = 1]
@.str.9 = private unnamed_addr constant [58 x i8] c"Attempting to popFront() past the end of an array of char\00" ; [#uses = 1]
@_D3std5range10primitives__T8popFrontTaZQmFNaNbNeMKANgaZ12charWidthTabyAh = weak_odr local_unnamed_addr constant { i64, i8* } { i64 64, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.constarray, i32 0, i32 0) }, align 8 ; [#uses = 0]
@.constarray = internal global [64 x i8] c"\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\04\04\04\04\04\04\04\04\05\05\05\05\06\06\01\01" ; [#uses = 5]
@.str.10 = private unnamed_addr constant [23 x i8] c"Invalid UTF-8 sequence\00" ; [#uses = 1]
@_D3std3utf12UTFException7__ClassZ = external global %object.TypeInfo_Class ; [#uses = 11]
@_D3std3utf12UTFException6__vtblZ = external constant [11 x i8*] ; [#uses = 8]
@_D3std3utf12UTFException6__initZ = external local_unnamed_addr constant %std.utf.UTFException, align 8 ; [#uses = 1]
@.str.12 = private unnamed_addr constant [37 x i8] c"Attempting to popFront an empty map.\00" ; [#uses = 1]
@.str.13 = private unnamed_addr constant [66 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/algorithm/iteration.d\00" ; [#uses = 1]
@.str.14 = private unnamed_addr constant [47 x i8] c"Attempting to fetch the front of an empty map.\00" ; [#uses = 1]
@_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]
@_D14TypeInfo_Const6__vtblZ = external constant [19 x i8*] ; [#uses = 3]
@_D12TypeInfo_xPv6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Pointer* @_D12TypeInfo_Pxv6__initZ to %object.TypeInfo*) } ; [#uses = 2]
@_D12TypeInfo_Pxv6__initZ = linkonce_odr global %object.TypeInfo_Pointer { [19 x i8*]* @_D16TypeInfo_Pointer6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Const* @_D11TypeInfo_xv6__initZ to %object.TypeInfo*) } ; [#uses = 1]
@_D16TypeInfo_Pointer6__vtblZ = external constant [19 x i8*] ; [#uses = 1]
@_D11TypeInfo_xv6__initZ = linkonce_odr global %object.TypeInfo_Const { [19 x i8*]* @_D14TypeInfo_Const6__vtblZ, i8* null, %object.TypeInfo* @_D10TypeInfo_v6__initZ } ; [#uses = 1]
@_D10TypeInfo_v6__initZ = external global %object.TypeInfo ; [#uses = 1]
@_D6object__T10RTInfoImplVAmA2i24i6ZQxyG2m = weak_odr local_unnamed_addr constant [2 x i64] [i64 24, i64 6], align 8 ; [#uses = 0]
@_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__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.15, i32 0, i32 0) }, { i64, i8* } { i64 24, i8* null }, i64 (i8*)* null, i1 (i8*, i8*)* null, i32 (i8*, i8*)* null, { i64, i8* } (i8*)* null, i32 1, [4 x i8] zeroinitializer, void (i8*)* null, void (i8*)* null, i32 8, [4 x i8] zeroinitializer, %object.TypeInfo* null, %object.TypeInfo* null, i8* bitcast ([2 x i64]* @_D6object__T10RTInfoImplVAmA2i24i3ZQxyG2m to i8*) } ; [#uses = 1]
@_D15TypeInfo_Struct6__vtblZ = external constant [19 x i8*] ; [#uses = 2]
@.str.15 = private unnamed_addr constant [44 x i8] c"S3std9container5dlist__T5DListTiZQj7PayNode\00" ; [#uses = 1]
@_D6object__T10RTInfoImplVAmA2i24i3ZQxyG2m = weak_odr constant [2 x i64] [i64 24, i64 3], align 8 ; [#uses = 1]
@.str.16 = private unnamed_addr constant [30 x i8] c"Root pointer must not be null\00" ; [#uses = 1]
@.str.17 = private unnamed_addr constant [62 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/container/dlist.d\00" ; [#uses = 1]
@.str.18 = private unnamed_addr constant [27 x i8] c"DList.front: List is empty\00" ; [#uses = 1]
@.str.19 = private unnamed_addr constant [26 x i8] c"DList.back: List is empty\00" ; [#uses = 1]
@.str.20 = private unnamed_addr constant [31 x i8] c"DList.removeAny: List is empty\00" ; [#uses = 1]
@.str.21 = private unnamed_addr constant [33 x i8] c"DList.removeFront: List is empty\00" ; [#uses = 1]
@.str.22 = private unnamed_addr constant [26 x i8] c"DList: Inconsistent state\00" ; [#uses = 1]
@.str.23 = private unnamed_addr constant [32 x i8] c"DList.removeBack: List is empty\00" ; [#uses = 1]
@.str.24 = private unnamed_addr constant [42 x i8] c"Cannot remove from an un-initialized List\00" ; [#uses = 1]
@.str.25 = private unnamed_addr constant [23 x i8] c"Remove: Range is empty\00" ; [#uses = 1]
@.str.26 = private unnamed_addr constant [27 x i8] c"popFirstOf: Range is empty\00" ; [#uses = 1]
@.str.27 = private unnamed_addr constant [26 x i8] c"popLastOf: Range is empty\00" ; [#uses = 1]
@.str.28 = private unnamed_addr constant [55 x i8] c"Attempting to fetch the front of an empty Take!(Range)\00" ; [#uses = 1]
@.str.29 = private unnamed_addr constant [60 x i8] c"/usr/lib/ldc/x86_64-linux-gnu/include/d/std/range/package.d\00" ; [#uses = 1]
@.str.30 = private unnamed_addr constant [56 x i8] c"Attempting to popFront() past the end of a Take!(Range)\00" ; [#uses = 1]
@.str.31 = private unnamed_addr constant [59 x i8] c"Attempting to assign to the front of an empty Take!(Range)\00" ; [#uses = 1]
@.str.32 = private unnamed_addr constant [54 x i8] c"Attempting to move the front of an empty Take!(Range)\00" ; [#uses = 1]
@_D6object__T10RTInfoImplVAmA2i16i3ZQxyG2m = weak_odr local_unnamed_addr constant [2 x i64] [i64 16, i64 3], align 8 ; [#uses = 0]
@_D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m = weak_odr constant [2 x i64] [i64 8, i64 1], align 8 ; [#uses = 1]
@_D45TypeInfo_AS3std9container5dlist__T5DListTiZQj6__initZ = linkonce_odr global %object.TypeInfo_Array { [19 x i8*]* @_D14TypeInfo_Array6__vtblZ, i8* null, %object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D44TypeInfo_S3std9container5dlist__T5DListTiZQj6__initZ to %object.TypeInfo*) } ; [#uses = 1]
@_D14TypeInfo_Array6__vtblZ = external constant [19 x i8*] ; [#uses = 1]
@_D44TypeInfo_S3std9container5dlist__T5DListTiZQj6__initZ = linkonce_odr global %object.TypeInfo_Struct { [19 x i8*]* @_D15TypeInfo_Struct6__vtblZ, i8* null, { i64, i8* } { i64 35, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.33, i32 0, i32 0) }, { i64, i8* } { i64 8, i8* null }, i64 (i8*)* null, i1 (i8*, i8*)* bitcast (i1 (%"std.container.dlist.DList!int.DList"*, %"std.container.dlist.DList!int.DList"*)* @_D3std9container5dlist__T5DListTiZQj11__xopEqualsFKxSQBzQByQBr__TQBoTiZQBuKxQyZb to i1 (i8*, i8*)*), i32 (i8*, i8*)* null, { i64, i8* } (i8*)* null, i32 1, [4 x i8] zeroinitializer, void (i8*)* null, void (i8*)* null, i32 8, [4 x i8] zeroinitializer, %object.TypeInfo* @_D10TypeInfo_l6__initZ, %object.TypeInfo* null, i8* bitcast ([2 x i64]* @_D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m to i8*) } ; [#uses = 1]
@.str.33 = private unnamed_addr constant [36 x i8] c"S3std9container5dlist__T5DListTiZQj\00" ; [#uses = 1]
@_D10TypeInfo_l6__initZ = external global %object.TypeInfo ; [#uses = 1]
@.str.34 = 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 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
forbody.i:
  %__tmpfordtor204.i = alloca %std.stdio.File, align 8 ; [#uses = 5, size/byte = 24]
  %.nongc_mem9 = alloca [3 x %"std.container.dlist.DList!int.DList"], align 8 ; [#uses = 4, size/byte = 24]
  %0 = tail call %"std.container.dlist.DList!int.DList" @_D6source4mainFZ9__lambda1FZS3std9container5dlist__T5DListTiZQj() #1 ; [#uses = 1]
  %.fca.0.extract.i = extractvalue %"std.container.dlist.DList!int.DList" %0, 0 ; [#uses = 5]
  %.sroa.0.0..sroa_idx.i = getelementptr inbounds [3 x %"std.container.dlist.DList!int.DList"], [3 x %"std.container.dlist.DList!int.DList"]* %.nongc_mem9, i64 0, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %.fca.0.extract.i, %std.container.dlist.BaseNode** %.sroa.0.0..sroa_idx.i, align 8
  %1 = tail call %"std.container.dlist.DList!int.DList" @_D6source4mainFZ9__lambda1FZS3std9container5dlist__T5DListTiZQj() #1 ; [#uses = 1]
  %.fca.0.extract.i.1 = extractvalue %"std.container.dlist.DList!int.DList" %1, 0 ; [#uses = 1]
  %.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds [3 x %"std.container.dlist.DList!int.DList"], [3 x %"std.container.dlist.DList!int.DList"]* %.nongc_mem9, i64 0, i64 1, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %.fca.0.extract.i.1, %std.container.dlist.BaseNode** %.sroa.0.0..sroa_idx.i.1, align 8
  %2 = tail call %"std.container.dlist.DList!int.DList" @_D6source4mainFZ9__lambda1FZS3std9container5dlist__T5DListTiZQj() #1 ; [#uses = 1]
  %.fca.0.extract.i.2 = extractvalue %"std.container.dlist.DList!int.DList" %2, 0 ; [#uses = 1]
  %.sroa.0.0..sroa_idx.i.2 = getelementptr inbounds [3 x %"std.container.dlist.DList!int.DList"], [3 x %"std.container.dlist.DList!int.DList"]* %.nongc_mem9, i64 0, i64 2, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %.fca.0.extract.i.2, %std.container.dlist.BaseNode** %.sroa.0.0..sroa_idx.i.2, align 8
  %3 = icmp eq %std.container.dlist.BaseNode* %.fca.0.extract.i, null ; [#uses = 1]
  br i1 %3, label %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i.preheader

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i.preheader: ; preds = %forbody.i
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %.fca.0.extract.i, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 2]
  %6 = icmp eq %std.container.dlist.BaseNode* %.fca.0.extract.i, %5 ; [#uses = 1]
  br i1 %6, label %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit, label %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5.i.i

bounds.ok.i:                                      ; preds = %_D3std9container5dlist__T5DListTiZQj11removeFrontMFNaNbNfZv.exit.i
  %7 = zext i32 %22 to i64                        ; [#uses = 1]
  %8 = getelementptr inbounds [3 x %"std.container.dlist.DList!int.DList"], [3 x %"std.container.dlist.DList!int.DList"]* %.nongc_mem9, i64 0, i64 %7, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %9 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %8, align 8 ; [#uses = 4]
  %10 = icmp eq %std.container.dlist.BaseNode* %9, null ; [#uses = 1]
  br i1 %10, label %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit.loopexit, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i: ; preds = %bounds.ok.i
  %11 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %9, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %12 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %11, align 8 ; [#uses = 2]
  %13 = icmp eq %std.container.dlist.BaseNode* %9, %12 ; [#uses = 1]
  br i1 %13, label %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit.loopexit, label %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5.i.i

bounds.fail.i:                                    ; preds = %_D3std9container5dlist__T5DListTiZQj11removeFrontMFNaNbNfZv.exit.i
  %14 = sext i32 %22 to i64                       ; [#uses = 1]
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 60, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.1, i32 0, i32 0) }, i32 36, i64 %14, i64 3) #2
  unreachable

_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5.i.i: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i.preheader, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i
  %15 = phi %std.container.dlist.BaseNode* [ %12, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i ], [ %5, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i.preheader ] ; [#uses = 3, type = %std.container.dlist.BaseNode*]
  %16 = phi %std.container.dlist.BaseNode* [ %9, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i ], [ %.fca.0.extract.i, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i.preheader ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %17 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %15, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %18 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %17, align 8 ; [#uses = 1]
  %19 = icmp eq %std.container.dlist.BaseNode* %16, %18 ; [#uses = 1]
  br i1 %19, label %_D3std9container5dlist__T5DListTiZQj11removeFrontMFNaNbNfZv.exit.i, label %assertFailed2.i.i

assertFailed2.i.i:                                ; preds = %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5.i.i
  tail call void @_d_assert_msg({ i64, i8* } { i64 25, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.22, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 548) #2
  unreachable

_D3std9container5dlist__T5DListTiZQj11removeFrontMFNaNbNfZv.exit.i: ; preds = %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5.i.i
  %20 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %15, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %21 = bitcast %std.container.dlist.BaseNode* %20 to i32* ; [#uses = 1]
  %22 = load i32, i32* %21, align 4               ; [#uses = 4]
  %23 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %15, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %24 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %23, align 8 ; [#uses = 1]
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %24, %std.container.dlist.BaseNode* nonnull %16) #3
  %bounds.cmp.i = icmp ult i32 %22, 3             ; [#uses = 1]
  br i1 %bounds.cmp.i, label %bounds.ok.i, label %bounds.fail.i

_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit.loopexit: ; preds = %bounds.ok.i, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i
  %phi.cast = zext i32 %22 to i64                 ; [#uses = 1]
  br label %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit

_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit: ; preds = %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit.loopexit, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i.preheader, %forbody.i
  %now.028.i.lcssa = phi i64 [ 0, %forbody.i ], [ 0, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i.preheader ], [ %phi.cast, %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit.loopexit ] ; [#uses = 1, type = i64]
  %25 = getelementptr inbounds [4 x i8], [4 x i8]* @.str, i64 0, i64 %now.028.i.lcssa ; [#uses = 1, type = i8*]
  %26 = load i8, i8* %25, align 1                 ; [#uses = 1]
  %27 = bitcast %std.stdio.File* %__tmpfordtor204.i to i8* ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %27)
  call void @_D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File(%std.stdio.File* noalias nonnull sret align 8 %__tmpfordtor204.i) #3
  invoke void @_D3std5stdio4File__T5writeTyaTaZQmMFNfyaaZv(%std.stdio.File* nonnull %__tmpfordtor204.i, i8 zeroext 10, i8 zeroext %26) #3
          to label %_D3std5stdio__T7writelnTyaZQmFNfyaZv.exit unwind label %eh.resume.i

eh.resume.i:                                      ; preds = %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit
  %28 = landingpad { i8*, i32 }
          cleanup                                 ; [#uses = 1]
  %29 = extractvalue { i8*, i32 } %28, 0          ; [#uses = 1]
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__tmpfordtor204.i) #3
  call void @_Unwind_Resume(i8* %29)
  unreachable

_D3std5stdio__T7writelnTyaZQmFNfyaZv.exit:        ; preds = %_D6source4mainFZ__T9__lambda3TiZQnFNaNbNiNfiZya.exit
  call void @_D3std5stdio4File6__dtorMFNfZv(%std.stdio.File* nonnull %__tmpfordtor204.i) #3
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %27)
  ret i32 0
}

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

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

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 3]
  %3 = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %3, label %ororend, label %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit

_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit: ; preds = %0
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 1]
  %6 = icmp eq %std.container.dlist.BaseNode* %2, %5 ; [#uses = 1]
  br label %ororend

ororend:                                          ; preds = %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit, %0
  %ororval = phi i1 [ true, %0 ], [ %6, %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit ] ; [#uses = 1, type = i1]
  ret i1 %ororval
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32* @_D3std9container5dlist__T5DListTiZQj5frontMNgFNaNbNcNdNiNfZNgi(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 3]
  %3 = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 2]
  %6 = icmp eq %std.container.dlist.BaseNode* %2, %5 ; [#uses = 1]
  br i1 %6, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit

_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %5, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %8 = bitcast %std.container.dlist.BaseNode* %7 to i32* ; [#uses = 1]
  ret i32* %8

assertFailed:                                     ; preds = %0, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 26, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.18, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 374) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9container5dlist__T5DListTiZQj11removeFrontMFNaNbNfZv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 5]
  %3 = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 3]
  %6 = icmp eq %std.container.dlist.BaseNode* %2, %5 ; [#uses = 1]
  br i1 %6, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5

_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %5, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %8 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 1]
  %9 = icmp eq %std.container.dlist.BaseNode* %2, %8 ; [#uses = 1]
  br i1 %9, label %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit, label %assertFailed2

_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit: ; preds = %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5
  %10 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %5, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %11 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %10, align 8 ; [#uses = 1]
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %11, %std.container.dlist.BaseNode* nonnull %2) #3
  ret void

assertFailed2:                                    ; preds = %_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode.exit5
  tail call void @_d_assert_msg({ i64, i8* } { i64 25, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.22, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 548) #2
  unreachable

assertFailed:                                     ; preds = %0, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 32, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.21, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 547) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr { i64, %"std.container.dlist.DList!int.DList"* } @_D6source__T3repS_DQr4mainFZ9__lambda1FZS3std9container5dlist__T5DListTiZQjTQBkZQCqFiZAQBv(i32 %n_arg) local_unnamed_addr #1 {
  %1 = sext i32 %n_arg to i64                     ; [#uses = 4]
  %.gc_mem = tail call { i64, i8* } @_d_newarrayT(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D45TypeInfo_AS3std9container5dlist__T5DListTiZQj6__initZ to %object.TypeInfo*), i64 %1) #5 ; [#uses = 1]
  %.ptr = extractvalue { i64, i8* } %.gc_mem, 1   ; [#uses = 1]
  %2 = bitcast i8* %.ptr to %"std.container.dlist.DList!int.DList"* ; [#uses = 2]
  %.not = icmp eq i32 %n_arg, 0                   ; [#uses = 1]
  br i1 %.not, label %endfor, label %forbody.preheader

forbody.preheader:                                ; preds = %0
  %3 = icmp ugt i64 %1, 1                         ; [#uses = 1]
  %umax = select i1 %3, i64 %1, i64 1             ; [#uses = 1]
  br label %forbody

forbody:                                          ; preds = %forbody, %forbody.preheader
  %__key192.014 = phi i64 [ %5, %forbody ], [ 0, %forbody.preheader ] ; [#uses = 2, type = i64]
  %4 = tail call %"std.container.dlist.DList!int.DList" @_D6source4mainFZ9__lambda1FZS3std9container5dlist__T5DListTiZQj() #1 ; [#uses = 1]
  %.fca.0.extract = extractvalue %"std.container.dlist.DList!int.DList" %4, 0 ; [#uses = 1]
  %.sroa.0.0..sroa_idx = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %2, i64 %__key192.014, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %.fca.0.extract, %std.container.dlist.BaseNode** %.sroa.0.0..sroa_idx, align 1
  %5 = add nuw i64 %__key192.014, 1               ; [#uses = 2]
  %exitcond.not = icmp eq i64 %5, %umax           ; [#uses = 1]
  br i1 %exitcond.not, label %endfor, label %forbody

endfor:                                           ; preds = %forbody, %0
  %6 = insertvalue { i64, %"std.container.dlist.DList!int.DList"* } undef, i64 %1, 0 ; [#uses = 1]
  %.fca.1.insert11 = insertvalue { i64, %"std.container.dlist.DList!int.DList"* } %6, %"std.container.dlist.DList!int.DList"* %2, 1 ; [#uses = 1]
  ret { i64, %"std.container.dlist.DList!int.DList"* } %.fca.1.insert11
}

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

; [#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*)) #3 ; [#uses = 1]
  ret i32 %1
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std5stdio__T6readlnTAyaZQmFwZQj(i32 %terminator_arg) local_unnamed_addr #1 {
  %buf.i = alloca { i64, i8* }, align 8           ; [#uses = 4, size/byte = 16]
  %1 = tail call %std.stdio.File* @_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File() #3 ; [#uses = 1]
  %2 = bitcast { i64, i8* }* %buf.i to i8*        ; [#uses = 3]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %2)
  %3 = getelementptr inbounds %std.stdio.File, %std.stdio.File* %1, i64 0, i32 0 ; [#uses = 4, type = %std.stdio.File.Impl**]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false)
  %4 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %3, align 8 ; [#uses = 3]
  %.not.i.i = icmp eq %std.stdio.File.Impl* %4, null ; [#uses = 1]
  br i1 %.not.i.i, label %if.i.i.i, label %andandend.i.i

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

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

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

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

if1.i.i:                                          ; preds = %if.i.i
  %12 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %3, 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 1, i32* %13, align 4
  br label %_D3std5stdio4File__T6readlnTAyaZQmMFwZQk.exit

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

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

_D3std5stdio4File__T6readlnTAyaZQmMFwZQk.exit:    ; preds = %_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit.i.i, %if1.i.i, %else.i.i, %if3.i.i
  %.fca.0.gep.i = getelementptr inbounds { i64, i8* }, { i64, i8* }* %buf.i, i64 0, i32 0 ; [#uses = 1, type = i64*]
  %.fca.1.gep.i = getelementptr inbounds { i64, i8* }, { i64, i8* }* %buf.i, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %16 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %3, align 8 ; [#uses = 2]
  %17 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %16, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %18 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %17, align 8 ; [#uses = 1]
  %19 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %16, i64 0, i32 4 ; [#uses = 1, type = i32*]
  %20 = load i32, i32* %19, align 4               ; [#uses = 1]
  %21 = call i64 @_D3std5stdio10readlnImplFPOS4core4stdcQBg8_IO_FILEKAawEQCbQCa4File11OrientationZm(i32 %20, i32 %terminator_arg, { i64, i8* }* nonnull dereferenceable(16) %buf.i, %core.stdc.stdio._IO_FILE* %18) #3 ; [#uses = 0]
  %.len.i = load i64, i64* %.fca.0.gep.i, align 8 ; [#uses = 1]
  %.ptr.i = load i8*, i8** %.fca.1.gep.i, align 8 ; [#uses = 1]
  %22 = insertvalue { i64, i8* } undef, i64 %.len.i, 0 ; [#uses = 1]
  %23 = insertvalue { i64, i8* } %22, i8* %.ptr.i, 1 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %2)
  ret { i64, i8* } %23
}

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

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

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

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

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

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

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

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

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

_D3std5stdio4File__T6readlnTaZQkMFKAawZm.exit:    ; preds = %_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb.exit.i, %if1.i, %else.i, %if3.i
  %.fca.0.gep = getelementptr inbounds { i64, i8* }, { i64, i8* }* %buf, i64 0, i32 0 ; [#uses = 1, type = i64*]
  %.fca.1.gep = getelementptr inbounds { i64, i8* }, { i64, i8* }* %buf, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %15 = load %std.stdio.File.Impl*, %std.stdio.File.Impl** %1, align 8 ; [#uses = 2]
  %16 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %15, i64 0, i32 0 ; [#uses = 1, type = %core.stdc.stdio._IO_FILE**]
  %17 = load %core.stdc.stdio._IO_FILE*, %core.stdc.stdio._IO_FILE** %16, align 8 ; [#uses = 1]
  %18 = getelementptr inbounds %std.stdio.File.Impl, %std.stdio.File.Impl* %15, i64 0, i32 4 ; [#uses = 1, type = i32*]
  %19 = load i32, i32* %18, align 4               ; [#uses = 1]
  %20 = call i64 @_D3std5stdio10readlnImplFPOS4core4stdcQBg8_IO_FILEKAawEQCbQCa4File11OrientationZm(i32 %19, i32 %terminator_arg, { i64, i8* }* nonnull dereferenceable(16) %buf, %core.stdc.stdio._IO_FILE* %17) #3 ; [#uses = 0]
  %.len = load i64, i64* %.fca.0.gep, align 8     ; [#uses = 1]
  %.ptr = load i8*, i8** %.fca.1.gep, align 8     ; [#uses = 1]
  %21 = insertvalue { i64, i8* } undef, i64 %.len, 0 ; [#uses = 1]
  %22 = insertvalue { i64, i8* } %21, i8* %.ptr, 1 ; [#uses = 1]
  ret { i64, i8* } %22
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std5stdio4File__T6readlnTaZQkMFKAawZm(%std.stdio.File* nonnull %.this_arg, i32 %terminator_arg, { i64, i8* }* dereferenceable(16) %buf) local_unnamed_addr #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.2, i32 0, i32 0) }, i64 2083, { i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.3, i32 0, i32 0) }) #11
  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) #3 ; [#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) #3 ; [#uses = 1]
  ret i64 %19
}

; [#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) #11
  unreachable

endif:                                            ; preds = %0
  ret i1 true
}

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

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

; [#uses = 4]
; Function Attrs: noreturn uwtable
define weak_odr void @_D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamMAxaZNn({ i64, i8* } %msg_arg, i64 %line_arg, { i64, i8* } %file_arg) local_unnamed_addr #4 {
  %.makelvaluetmp = alloca { i64, i8* }, align 8  ; [#uses = 2, size/byte = 16]
  %.makelvaluetmp2 = alloca { i64, i8* }, align 8 ; [#uses = 2, size/byte = 16]
  %msg_arg.fca.1.extract = extractvalue { i64, i8* } %msg_arg, 1 ; [#uses = 2]
  %.newclass_gc_alloc = tail call noalias %object.Object* @_d_allocclass(%object.TypeInfo_Class* nonnull @_D9Exception7__ClassZ) #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
  %a_arg.fca.0.extract.i.i = extractvalue { i64, i8* } %msg_arg, 0 ; [#uses = 2]
  %4 = tail call { i64, i8* } @_d_newarrayU(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Axa6__initZ to %object.TypeInfo*), i64 %a_arg.fca.0.extract.i.i) #3 ; [#uses = 2]
  %.ptr.i.i = extractvalue { i64, i8* } %4, 1     ; [#uses = 2]
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %.ptr.i.i, i8* nonnull align 1 %msg_arg.fca.1.extract, i64 %a_arg.fca.0.extract.i.i, i1 false) #3
  %.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.4, i64 0, i64 0), %condfalse ], [ %.ptr.i.i, %condtrue ] ; [#uses = 1, type = i8*]
  %7 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %.makelvaluetmp2.sink, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %.sink, i8** %7, align 8
  %.newclass_gc = bitcast %object.Object* %.newclass_gc_alloc to %object.Exception* ; [#uses = 1]
  %8 = tail call %object.Exception* @_D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx(%object.Exception* nonnull returned %.newclass_gc, %object.Throwable* null, i64 %line_arg, { i64, i8* } %file_arg, { i64, i8* }* nonnull byval align 8 %.makelvaluetmp2.sink) #3 ; [#uses = 0]
  %9 = bitcast %object.Object* %.newclass_gc_alloc to %object.Throwable* ; [#uses = 1]
  tail call void @_d_throw_exception(%object.Throwable* %9) #2
  unreachable
}

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

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

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

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

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

; [#uses = 0]
; 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) #3 ; [#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) #3
  ret { i64, i8* } %1
}

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

; [#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 = 2]
  %a_arg.fca.1.extract = extractvalue { i64, i8* } %a_arg, 1 ; [#uses = 1]
  %.fca.0.gep = getelementptr inbounds { i64, i8* }, { i64, i8* }* %res, i64 0, i32 0 ; [#uses = 2, type = i64*]
  %.fca.1.gep = getelementptr inbounds { i64, i8* }, { i64, i8* }* %res, i64 0, i32 1 ; [#uses = 2, type = i8**]
  %.not = icmp eq i64 %a_arg.fca.0.extract, 0     ; [#uses = 1]
  %1 = bitcast { i64, i8* }* %res to i8*          ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %1, i8 0, i64 16, i1 false)
  br i1 %.not, label %endfor, label %forbody

forbody:                                          ; preds = %0, %forbody
  %__key166.015 = phi i64 [ %4, %forbody ], [ 0, %0 ] ; [#uses = 2, type = i64]
  %2 = getelementptr inbounds i8, i8* %a_arg.fca.1.extract, i64 %__key166.015 ; [#uses = 1, type = i8*]
  %.appendedArray = call { i64, i8* } @_d_arrayappendcTX(%object.TypeInfo* bitcast (%object.TypeInfo_Array* @_D12TypeInfo_Aya6__initZ to %object.TypeInfo*), { i64, i8* }* nonnull dereferenceable(16) %res, i64 1) #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 nuw i64 %__key166.015, 1               ; [#uses = 2]
  %exitcond.not = icmp eq i64 %4, %a_arg.fca.0.extract ; [#uses = 1]
  br i1 %exitcond.not, label %endfor.loopexit, label %forbody

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

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std5range10primitives__T5frontTaZQjFNaNdNfMAxaZw({ i64, i8* } %a_arg) local_unnamed_addr #1 {
  %a = alloca { i64, i8* }, align 8               ; [#uses = 3, size/byte = 16]
  %i = alloca i64, align 8                        ; [#uses = 2, size/byte = 8]
  %a_arg.fca.0.extract = extractvalue { i64, i8* } %a_arg, 0 ; [#uses = 2]
  %a_arg.fca.0.gep = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %a_arg.fca.0.extract, i64* %a_arg.fca.0.gep, align 8
  %a_arg.fca.1.extract = extractvalue { i64, i8* } %a_arg, 1 ; [#uses = 1]
  %a_arg.fca.1.gep = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %a_arg.fca.1.extract, i8** %a_arg.fca.1.gep, align 8
  %.not = icmp eq i64 %a_arg.fca.0.extract, 0     ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  store i64 0, i64* %i, align 8
  %1 = call i32 @_D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDhFNaNeKQnKmZw(i64* nonnull dereferenceable(8) %i, { i64, i8* }* nonnull dereferenceable(16) %a) #3 ; [#uses = 1]
  ret i32 %1

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 55, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.5, i32 0, i32 0) }, { i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.6, i32 0, i32 0) }, i32 2502) #2
  unreachable
}

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

; [#uses = 4]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDhFNaNeKQnKmZw(i64* dereferenceable(8) %index, { i64, i8* }* dereferenceable(16) %str) local_unnamed_addr #1 {
  %1 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 0 ; [#uses = 2, type = i64*]
  %.len = load i64, i64* %1, align 8              ; [#uses = 1]
  %2 = load i64, i64* %index, align 8             ; [#uses = 6]
  %3 = icmp ult i64 %2, %.len                     ; [#uses = 1]
  br i1 %3, label %bounds.ok, label %assertFailed

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

if:                                               ; preds = %bounds.ok
  %8 = add nuw i64 %2, 1                          ; [#uses = 1]
  store i64 %8, i64* %index, align 8
  %.len2 = load i64, i64* %1, align 8             ; [#uses = 2]
  %bounds.cmp3 = icmp ult i64 %2, %.len2          ; [#uses = 1]
  br i1 %bounds.cmp3, label %bounds.ok4, label %bounds.fail5

bounds.ok4:                                       ; preds = %if
  %.ptr6 = load i8*, i8** %4, align 8             ; [#uses = 1]
  %9 = getelementptr inbounds i8, i8* %.ptr6, i64 %2 ; [#uses = 1, type = i8*]
  %10 = load i8, i8* %9, align 1                  ; [#uses = 1]
  %11 = zext i8 %10 to i32                        ; [#uses = 1]
  br label %label.__returnLabel

bounds.fail5:                                     ; preds = %if
  tail call void @_d_arraybounds_index({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.8, i32 0, i32 0) }, i32 1184, i64 %2, i64 %.len2) #2
  unreachable

else:                                             ; preds = %bounds.ok
  %12 = tail call i32 @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaKQlKmZw(i64* nonnull dereferenceable(8) %index, { i64, i8* }* nonnull dereferenceable(16) %str) #3 ; [#uses = 1]
  br label %label.__returnLabel

label.__returnLabel:                              ; preds = %else, %bounds.ok4
  %__result.0 = phi i32 [ %11, %bounds.ok4 ], [ %12, %else ] ; [#uses = 2, type = i32]
  %13 = tail call zeroext i1 @_D3std3utf12isValidDcharFNaNbNiNfwZb(i32 %__result.0) #3 ; [#uses = 1]
  br i1 %13, label %assertPassed9, label %assertFailed10

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

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

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 44, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.7, i32 0, i32 0) }, { i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.8, i32 0, i32 0) }, i32 1175) #2
  unreachable
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr i32 @_D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaKQlKmZw(i64* dereferenceable(8) %index, { i64, i8* }* dereferenceable(16) %str) local_unnamed_addr #1 {
  %.frame = alloca %nest.decodeImpl, align 8      ; [#uses = 15, size/byte = 16]
  %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 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %.ptr = load i8*, i8** %1, align 8              ; [#uses = 1]
  %2 = load i64, i64* %index, align 8             ; [#uses = 4]
  %3 = getelementptr inbounds i8, i8* %.ptr, i64 %2 ; [#uses = 5, type = i8*]
  store i8* %3, i8** %pstr, align 8
  %4 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %str, i64 0, i32 0 ; [#uses = 1, type = i64*]
  %.len = load i64, i64* %4, align 8              ; [#uses = 1]
  %5 = sub i64 %.len, %2                          ; [#uses = 4]
  store i64 %5, i64* %length, align 8
  %6 = load i8, i8* %3, align 1                   ; [#uses = 4]
  %7 = zext i8 %6 to i32                          ; [#uses = 3]
  %8 = and i32 %7, 192                            ; [#uses = 1]
  %.not = icmp eq i32 %8, 192                     ; [#uses = 1]
  br i1 %.not, label %endif, label %if

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

if35:                                             ; preds = %endif33
  %72 = shl nuw nsw i32 %47, 6                    ; [#uses = 1]
  %73 = and i32 %67, 63                           ; [#uses = 1]
  %.masked = and i32 %72, 2097088                 ; [#uses = 1]
  %74 = or i32 %73, %.masked                      ; [#uses = 2]
  %75 = and i32 %25, 496                          ; [#uses = 1]
  %76 = icmp eq i32 %75, 0                        ; [#uses = 1]
  br i1 %76, label %if37, label %endif38

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

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

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

endif41:                                          ; preds = %endif38
  ret i32 %74

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

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

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

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

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

condfalse:                                        ; preds = %bounds.ok
  %5 = zext i8 %3 to i64                          ; [#uses = 1]
  %6 = add nuw nsw i64 %5, 4294967104             ; [#uses = 1]
  %7 = and i64 %6, 4294967295                     ; [#uses = 1]
  %8 = getelementptr inbounds [64 x i8], [64 x i8]* @.constarray, i64 0, i64 %7 ; [#uses = 1, type = i8*]
  %9 = load i8, i8* %8, align 1                   ; [#uses = 1]
  %10 = zext i8 %9 to i32                         ; [#uses = 1]
  br label %condend

condend:                                          ; preds = %bounds.ok, %condfalse
  %condtmp.0.sroa.speculated = phi i32 [ %10, %condfalse ], [ 1, %bounds.ok ] ; [#uses = 2, type = i32]
  %11 = zext i32 %condtmp.0.sroa.speculated to i64 ; [#uses = 1]
  %12 = icmp ugt i64 %.len, %11                   ; [#uses = 1]
  %13 = trunc i64 %.len to i32                    ; [#uses = 1]
  %spec.select = select i1 %12, i32 %condtmp.0.sroa.speculated, i32 %13 ; [#uses = 1]
  %14 = sext i32 %spec.select to i64              ; [#uses = 4]
  %bounds.cmp.lo.not = icmp ult i64 %.len, %14    ; [#uses = 1]
  br i1 %bounds.cmp.lo.not, label %bounds.fail8, label %bounds.ok7

bounds.ok7:                                       ; preds = %condend
  %lowerbound = getelementptr inbounds i8, i8* %.ptr, i64 %14 ; [#uses = 1, type = i8*]
  %15 = sub i64 %.len, %14                        ; [#uses = 1]
  store i64 %15, i64* %1, align 8
  store i8* %lowerbound, i8** %2, align 8
  ret void

bounds.fail8:                                     ; preds = %condend
  tail call void @_d_arraybounds_slice({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.6, i32 0, i32 0) }, i32 2313, i64 %14, i64 %.len, i64 0) #2
  unreachable

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 57, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.9, i32 0, i32 0) }, { i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.6, i32 0, i32 0) }, i32 2300) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std9algorithm10comparison__T3minTmTyiZQkFNaNbNiNfmyiZyi(i32 %_param_1_arg, i64 %_param_0_arg) local_unnamed_addr #1 {
condend:
  %0 = icmp slt i32 %_param_1_arg, 0              ; [#uses = 1]
  br i1 %0, label %_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit.thread, label %_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit

_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit: ; preds = %condend
  %1 = zext i32 %_param_1_arg to i64              ; [#uses = 1]
  %2 = icmp ult i64 %1, %_param_0_arg             ; [#uses = 1]
  %3 = trunc i64 %_param_0_arg to i32             ; [#uses = 1]
  br i1 %2, label %_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit.thread, label %4

_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit.thread: ; preds = %condend, %_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit
  br label %4

4:                                                ; preds = %_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit, %_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit.thread
  %5 = phi i32 [ %_param_1_arg, %_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit.thread ], [ %3, %_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb.exit ] ; [#uses = 1, type = i32]
  ret i32 %5
}

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb(i64* dereferenceable(8) %b, i32* dereferenceable(4) %a) local_unnamed_addr #1 {
  %1 = load i32, i32* %a, align 4                 ; [#uses = 2]
  %2 = icmp slt i32 %1, 0                         ; [#uses = 1]
  br i1 %2, label %ororend, label %oror

oror:                                             ; preds = %0
  %3 = load i64, i64* %b, align 8                 ; [#uses = 1]
  %4 = zext i32 %1 to i64                         ; [#uses = 1]
  %5 = icmp ugt i64 %3, %4                        ; [#uses = 1]
  br label %ororend

ororend:                                          ; preds = %oror, %0
  %ororval = phi i1 [ true, %0 ], [ %5, %oror ]   ; [#uses = 1, type = i1]
  ret i1 %ororval
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTyiTmZQpFNaNbNiNfyimZb(i64 %b_arg, i32 %a_arg) local_unnamed_addr #1 {
  %1 = sext i32 %a_arg to i64                     ; [#uses = 1]
  %2 = icmp ult i64 %1, %b_arg                    ; [#uses = 1]
  ret i1 %2
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr { i64, i8* } @_D3std6string__T5chompTAyaZQlFNaNbNiNfQpZQs({ i64, i8* } %str_arg) local_unnamed_addr #1 {
  %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 = 9]
  %.not.i = icmp eq i64 %str_arg.fca.0.extract, 0 ; [#uses = 1]
  br i1 %.not.i, label %if, label %bounds.ok78

if:                                               ; preds = %case22, %bounds.ok29, %bounds.ok38, %case52, %andand54, %bounds.ok78, %0
  ret { i64, i8* } %str_arg

bounds.ok78:                                      ; preds = %0
  %1 = add i64 %str_arg.fca.0.extract, -1         ; [#uses = 2]
  %2 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 %1 ; [#uses = 1, type = i8*]
  %3 = load i8, i8* %2, align 1                   ; [#uses = 1]
  switch i8 %3, label %if [
    i8 10, label %case
    i8 13, label %bounds.ok14
    i8 11, label %bounds.ok14
    i8 12, label %bounds.ok14
    i8 -88, label %case22
    i8 -87, label %case22
    i8 -123, label %case52
  ]

case:                                             ; preds = %bounds.ok78
  %4 = icmp ugt i64 %str_arg.fca.0.extract, 1     ; [#uses = 1]
  br i1 %4, label %andand, label %bounds.ok14

andand:                                           ; preds = %case
  %5 = add i64 %str_arg.fca.0.extract, -2         ; [#uses = 2]
  %6 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 %5 ; [#uses = 1, type = i8*]
  %7 = load i8, i8* %6, align 1                   ; [#uses = 1]
  %8 = icmp eq i8 %7, 13                          ; [#uses = 1]
  br i1 %8, label %bounds.ok6, label %bounds.ok14

bounds.ok6:                                       ; preds = %andand
  %9 = insertvalue { i64, i8* } undef, i64 %5, 0  ; [#uses = 1]
  %10 = insertvalue { i64, i8* } %9, i8* %str_arg.fca.1.extract, 1 ; [#uses = 1]
  ret { i64, i8* } %10

bounds.ok14:                                      ; preds = %bounds.ok78, %case, %andand, %bounds.ok78, %bounds.ok78
  %11 = insertvalue { i64, i8* } undef, i64 %1, 0 ; [#uses = 1]
  %12 = insertvalue { i64, i8* } %11, i8* %str_arg.fca.1.extract, 1 ; [#uses = 1]
  ret { i64, i8* } %12

case22:                                           ; preds = %bounds.ok78, %bounds.ok78
  %13 = icmp ugt i64 %str_arg.fca.0.extract, 2    ; [#uses = 1]
  br i1 %13, label %bounds.ok29, label %if

bounds.ok29:                                      ; preds = %case22
  %14 = add i64 %str_arg.fca.0.extract, -2        ; [#uses = 1]
  %15 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 %14 ; [#uses = 1, type = i8*]
  %16 = load i8, i8* %15, align 1                 ; [#uses = 1]
  %17 = icmp eq i8 %16, -128                      ; [#uses = 1]
  br i1 %17, label %bounds.ok38, label %if

bounds.ok38:                                      ; preds = %bounds.ok29
  %18 = add i64 %str_arg.fca.0.extract, -3        ; [#uses = 2]
  %19 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 %18 ; [#uses = 1, type = i8*]
  %20 = load i8, i8* %19, align 1                 ; [#uses = 1]
  %21 = icmp eq i8 %20, -30                       ; [#uses = 1]
  br i1 %21, label %bounds.ok45, label %if

bounds.ok45:                                      ; preds = %bounds.ok38
  %22 = insertvalue { i64, i8* } undef, i64 %18, 0 ; [#uses = 1]
  %23 = insertvalue { i64, i8* } %22, i8* %str_arg.fca.1.extract, 1 ; [#uses = 1]
  ret { i64, i8* } %23

case52:                                           ; preds = %bounds.ok78
  %24 = icmp ugt i64 %str_arg.fca.0.extract, 1    ; [#uses = 1]
  br i1 %24, label %andand54, label %if

andand54:                                         ; preds = %case52
  %25 = add i64 %str_arg.fca.0.extract, -2        ; [#uses = 2]
  %26 = getelementptr inbounds i8, i8* %str_arg.fca.1.extract, i64 %25 ; [#uses = 1, type = i8*]
  %27 = load i8, i8* %26, align 1                 ; [#uses = 1]
  %28 = icmp eq i8 %27, -62                       ; [#uses = 1]
  br i1 %28, label %bounds.ok66, label %if

bounds.ok66:                                      ; preds = %andand54
  %29 = insertvalue { i64, i8* } undef, i64 %25, 0 ; [#uses = 1]
  %30 = insertvalue { i64, i8* } %29, i8* %str_arg.fca.1.extract, 1 ; [#uses = 1]
  ret { i64, i8* } %30
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm9iteration__T3mapS6source4mainFZ9__lambda1FZQmZ__TQBlTAyaZQBtMFNaNbNiNfQrZSQDlQDkQDd__T9MapResultSQDcQCyFZQCwFZQDbTQCjZQBg(%"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* noalias sret align 8 %.sret_arg, i8* nonnull %.nest_arg, { i64, i8* } %r_arg) local_unnamed_addr #1 {
  %.repack = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.sret_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.repack1 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.sret_arg, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8**]
  %1 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.sret_arg, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %.nest_arg, i8** %1, align 8
  %input_arg.fca.0.extract.i = extractvalue { i64, i8* } %r_arg, 0 ; [#uses = 1]
  %input_arg.fca.1.extract.i = extractvalue { i64, i8* } %r_arg, 1 ; [#uses = 1]
  store i64 %input_arg.fca.0.extract.i, i64* %.repack, align 8
  store i8* %input_arg.fca.1.extract.i, i8** %.repack1, align 8
  ret void
}

; [#uses = 4]
; Function Attrs: uwtable
define linkonce_odr %"std.container.dlist.DList!int.DList" @_D6source4mainFZ9__lambda1FZS3std9container5dlist__T5DListTiZQj() local_unnamed_addr #1 {
  %result.i.i.i.i = alloca i64, align 8           ; [#uses = 3, size/byte = 8]
  %.hidden_copy_for_IndirectByvalRewrite.i.i = alloca %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", align 8 ; [#uses = 5, size/byte = 24]
  %.structliteral.i = alloca %"std.container.dlist.DList!int.DList", align 8 ; [#uses = 4, size/byte = 8]
  %1 = tail call { i64, i8* } @_D3std5stdio__T6readlnTAyaZQmFwZQj(i32 10) #1 ; [#uses = 1]
  %2 = tail call { i64, i8* } @_D3std6string__T5chompTAyaZQlFNaNbNiNfQpZQs({ i64, i8* } %1) #1 ; [#uses = 2]
  %input_arg.fca.0.extract.i.i = extractvalue { i64, i8* } %2, 0 ; [#uses = 2]
  %input_arg.fca.1.extract.i.i = extractvalue { i64, i8* } %2, 1 ; [#uses = 1]
  %3 = bitcast %"std.container.dlist.DList!int.DList"* %.structliteral.i to i8* ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %3)
  %4 = bitcast %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.hidden_copy_for_IndirectByvalRewrite.i.i to i8* ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %4), !noalias !11
  %.sret_tmp.sroa.0.0..sroa_idx = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.hidden_copy_for_IndirectByvalRewrite.i.i, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %input_arg.fca.0.extract.i.i, i64* %.sret_tmp.sroa.0.0..sroa_idx, align 8
  %.sret_tmp.sroa.2.0..sroa_idx2 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.hidden_copy_for_IndirectByvalRewrite.i.i, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* %input_arg.fca.1.extract.i.i, i8** %.sret_tmp.sroa.2.0..sroa_idx2, align 8
  %.sret_tmp.sroa.3.0..sroa_idx3 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.hidden_copy_for_IndirectByvalRewrite.i.i, i64 0, i32 1 ; [#uses = 1, type = i8**]
  store i8* null, i8** %.sret_tmp.sroa.3.0..sroa_idx3, align 8
  %.gc_struct.i.i.i.i = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5, !noalias !14 ; [#uses = 8]
  %5 = getelementptr inbounds i8, i8* %.gc_struct.i.i.i.i, i64 8 ; [#uses = 1, type = i8*]
  %6 = bitcast %"std.container.dlist.DList!int.DList"* %.structliteral.i to i8** ; [#uses = 1]
  %7 = getelementptr inbounds i8, i8* %.gc_struct.i.i.i.i, i64 16 ; [#uses = 1, type = i8*]
  %8 = bitcast i8* %7 to i64*                     ; [#uses = 1]
  store i64 0, i64* %8, align 8, !noalias !17
  store i8* %.gc_struct.i.i.i.i, i8** %6, align 8, !noalias !17
  %9 = bitcast i8* %.gc_struct.i.i.i.i to i8**    ; [#uses = 1]
  store i8* %.gc_struct.i.i.i.i, i8** %9, align 8, !noalias !17
  %10 = bitcast i8* %5 to i8**                    ; [#uses = 1]
  store i8* %.gc_struct.i.i.i.i, i8** %10, align 8, !noalias !17
  %11 = bitcast i64* %result.i.i.i.i to i8*       ; [#uses = 3]
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %11), !noalias !17
  %.not.i.i.i.i.i.i = icmp eq i64 %input_arg.fca.0.extract.i.i, 0 ; [#uses = 1]
  %12 = bitcast i8* %.gc_struct.i.i.i.i to %std.container.dlist.BaseNode* ; [#uses = 2]
  br i1 %.not.i.i.i.i.i.i, label %if.i1.i.i.i, label %endif.i2.i.i.i

if.i1.i.i.i:                                      ; preds = %0
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11), !noalias !17
  br label %_D6source4mainFZ9__lambda1FZ__T9__lambda2TS3std9algorithm9iteration__T9MapResultSQDbQCxFZQCvFZQDaTAyaZQBgZQCxFNaNfQCuZSQCy9container5dlist__T5DListTiZQj.exit

endif.i2.i.i.i:                                   ; preds = %0
  %13 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.structliteral.i, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store i64 0, i64* %result.i.i.i.i, align 8, !noalias !17
  %14 = call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj__T11createRangeTSQCa9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDlMFNaNfKQDhKmZSQFnQFmQFf__TQFcTiZQFi5Range(%"std.container.dlist.DList!int.DList"* nonnull %.structliteral.i, i64* nonnull dereferenceable(8) %result.i.i.i.i, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* nonnull dereferenceable(24) %.hidden_copy_for_IndirectByvalRewrite.i.i) #3, !noalias !14 ; [#uses = 2]
  %.fca.0.0.extract.i.i.i.i = extractvalue %"std.container.dlist.DList!int.DList.Range" %14, 0, 0 ; [#uses = 1]
  %.fca.0.1.extract.i.i.i.i = extractvalue %"std.container.dlist.DList!int.DList.Range" %14, 0, 1 ; [#uses = 1]
  %15 = bitcast i8* %.gc_struct.i.i.i.i to %std.container.dlist.BaseNode** ; [#uses = 1]
  %16 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %15, align 8, !noalias !14 ; [#uses = 1]
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %.fca.0.0.extract.i.i.i.i, %std.container.dlist.BaseNode* %16) #3, !noalias !14
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %12, %std.container.dlist.BaseNode* %.fca.0.1.extract.i.i.i.i) #3, !noalias !14
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11), !noalias !17
  %.fca.0.load.pre.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %13, align 8, !noalias !11 ; [#uses = 1]
  br label %_D6source4mainFZ9__lambda1FZ__T9__lambda2TS3std9algorithm9iteration__T9MapResultSQDbQCxFZQCvFZQDaTAyaZQBgZQCxFNaNfQCuZSQCy9container5dlist__T5DListTiZQj.exit

_D6source4mainFZ9__lambda1FZ__T9__lambda2TS3std9algorithm9iteration__T9MapResultSQDbQCxFZQCvFZQDaTAyaZQBgZQCxFNaNfQCuZSQCy9container5dlist__T5DListTiZQj.exit: ; preds = %if.i1.i.i.i, %endif.i2.i.i.i
  %.fca.0.load.i = phi %std.container.dlist.BaseNode* [ %12, %if.i1.i.i.i ], [ %.fca.0.load.pre.i, %endif.i2.i.i.i ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %4), !noalias !11
  %.fca.0.insert.i = insertvalue %"std.container.dlist.DList!int.DList" undef, %std.container.dlist.BaseNode* %.fca.0.load.i, 0 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %3)
  ret %"std.container.dlist.DList!int.DList" %.fca.0.insert.i
}

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5emptyMFNaNbNdNiNfZb(%"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.len.i = load i64, i64* %1, align 8            ; [#uses = 1]
  %.not.i = icmp eq i64 %.len.i, 0                ; [#uses = 1]
  ret i1 %.not.i
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv(%"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 2, type = i64*]
  %.len.i.i = load i64, i64* %1, align 8          ; [#uses = 6]
  %.not.i.i = icmp eq i64 %.len.i.i, 0            ; [#uses = 1]
  br i1 %.not.i.i, label %assertFailed, label %bounds.ok.i

bounds.ok.i:                                      ; preds = %0
  %2 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.this_arg, i64 0, i32 0, i32 1 ; [#uses = 2, type = i8**]
  %.ptr.i = load i8*, i8** %2, align 8            ; [#uses = 2]
  %3 = load i8, i8* %.ptr.i, align 1              ; [#uses = 2]
  %4 = icmp ult i8 %3, -64                        ; [#uses = 1]
  br i1 %4, label %condend.i, label %condfalse.i

condfalse.i:                                      ; preds = %bounds.ok.i
  %5 = zext i8 %3 to i64                          ; [#uses = 1]
  %6 = add nuw nsw i64 %5, 4294967104             ; [#uses = 1]
  %7 = and i64 %6, 4294967295                     ; [#uses = 1]
  %8 = getelementptr inbounds [64 x i8], [64 x i8]* @.constarray, i64 0, i64 %7 ; [#uses = 1, type = i8*]
  %9 = load i8, i8* %8, align 1                   ; [#uses = 1]
  %10 = zext i8 %9 to i32                         ; [#uses = 1]
  br label %condend.i

condend.i:                                        ; preds = %condfalse.i, %bounds.ok.i
  %condtmp.0.sroa.speculated.i = phi i32 [ %10, %condfalse.i ], [ 1, %bounds.ok.i ] ; [#uses = 2, type = i32]
  %11 = zext i32 %condtmp.0.sroa.speculated.i to i64 ; [#uses = 1]
  %12 = icmp ugt i64 %.len.i.i, %11               ; [#uses = 1]
  %13 = trunc i64 %.len.i.i to i32                ; [#uses = 1]
  %spec.select.i = select i1 %12, i32 %condtmp.0.sroa.speculated.i, i32 %13 ; [#uses = 1]
  %14 = sext i32 %spec.select.i to i64            ; [#uses = 4]
  %bounds.cmp.lo.not.i = icmp ult i64 %.len.i.i, %14 ; [#uses = 1]
  br i1 %bounds.cmp.lo.not.i, label %bounds.fail8.i, label %_D3std5range10primitives__T8popFrontTaZQmFNaNbNiNeMKANgaZv.exit

bounds.fail8.i:                                   ; preds = %condend.i
  tail call void @_d_arraybounds_slice({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.6, i32 0, i32 0) }, i32 2313, i64 %14, i64 %.len.i.i, i64 0) #2
  unreachable

_D3std5range10primitives__T8popFrontTaZQmFNaNbNiNeMKANgaZv.exit: ; preds = %condend.i
  %lowerbound.i = getelementptr inbounds i8, i8* %.ptr.i, i64 %14 ; [#uses = 1, type = i8*]
  %15 = sub i64 %.len.i.i, %14                    ; [#uses = 1]
  store i64 %15, i64* %1, align 8
  store i8* %lowerbound.i, i8** %2, align 8
  ret void

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 36, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i32 0, i32 0) }, { i64, i8* } { i64 65, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.13, i32 0, i32 0) }, i32 620) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk(%"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* nonnull %.this_arg) local_unnamed_addr #1 {
  %a.i = alloca { i64, i8* }, align 8             ; [#uses = 4, size/byte = 16]
  %i.i = alloca i64, align 8                      ; [#uses = 3, size/byte = 8]
  %1 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.len.i.i = load i64, i64* %1, align 8          ; [#uses = 2]
  %.not.i.i = icmp eq i64 %.len.i.i, 0            ; [#uses = 1]
  br i1 %.not.i.i, label %assertFailed, label %_D3std5range10primitives__T5frontTaZQjFNaNdNfMAxaZw.exit

_D3std5range10primitives__T5frontTaZQjFNaNdNfMAxaZw.exit: ; preds = %0
  %2 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.this_arg, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8**]
  %3 = bitcast i8** %2 to i64*                    ; [#uses = 1]
  %.ptr1 = load i64, i64* %3, align 8             ; [#uses = 1]
  %4 = bitcast { i64, i8* }* %a.i to i8*          ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %4)
  %5 = bitcast i64* %i.i to i8*                   ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %5)
  %a_arg.fca.0.gep.i = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a.i, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %.len.i.i, i64* %a_arg.fca.0.gep.i, align 8
  %a_arg.fca.1.gep.i = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a.i, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %6 = bitcast i8** %a_arg.fca.1.gep.i to i64*    ; [#uses = 1]
  store i64 %.ptr1, i64* %6, align 8
  store i64 0, i64* %i.i, align 8
  %7 = call i32 @_D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDhFNaNeKQnKmZw(i64* nonnull dereferenceable(8) %i.i, { i64, i8* }* nonnull dereferenceable(16) %a.i) #3 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %4)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5)
  %8 = add i32 %7, -97                            ; [#uses = 1]
  ret i32 %8

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 46, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.14, i32 0, i32 0) }, { i64, i8* } { i64 65, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.13, i32 0, i32 0) }, i32 626) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs4saveMFNaNbNdNiNfZSQDpQDoQDh__TQDaSQCtQCpFZQCnFZQCsTQChZQDz(%"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* noalias sret align 8 %.sret_arg, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.sret_arg, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %.vthis = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %2 = bitcast i8** %.vthis to i64*               ; [#uses = 1]
  %3 = load i64, i64* %2, align 8                 ; [#uses = 1]
  %4 = bitcast i8** %1 to i64*                    ; [#uses = 1]
  store i64 %3, i64* %4, align 8
  %5 = bitcast %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.this_arg to <2 x i64>* ; [#uses = 1]
  %6 = load <2 x i64>, <2 x i64>* %5, align 8     ; [#uses = 1]
  %7 = bitcast %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.sret_arg to <2 x i64>* ; [#uses = 1]
  store <2 x i64> %6, <2 x i64>* %7, align 8
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs11__xopEqualsFKxSQDnQDmQDf__TQCySQCrQCnFZQClFZQCqTQCfZQDxKxQBrZb(%"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* dereferenceable(24) %q, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* dereferenceable(24) %p) local_unnamed_addr #1 {
  %.elt = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %p, 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 %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %p, 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]
  %.elt3 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %q, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.unpack4 = load i64, i64* %.elt3, align 8      ; [#uses = 1]
  %3 = insertvalue { i64, i8* } undef, i64 %.unpack4, 0 ; [#uses = 1]
  %.elt5 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %q, i64 0, i32 0, i32 1 ; [#uses = 1, type = i8**]
  %.unpack6 = load i8*, i8** %.elt5, align 8      ; [#uses = 1]
  %4 = insertvalue { i64, i8* } %3, i8* %.unpack6, 1 ; [#uses = 1]
  %5 = tail call zeroext i1 @_D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb({ i64, i8* } %4, { i64, i8* } %2) #3 ; [#uses = 1]
  br i1 %5, label %andand, label %andandend

andand:                                           ; preds = %0
  %6 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %p, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %7 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %q, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %8 = load i8*, i8** %6, align 8                 ; [#uses = 1]
  %9 = load i8*, i8** %7, align 8                 ; [#uses = 1]
  %10 = icmp eq i8* %8, %9                        ; [#uses = 1]
  br label %andandend

andandend:                                        ; preds = %andand, %0
  %andandval = phi i1 [ false, %0 ], [ %10, %andand ] ; [#uses = 1, type = i1]
  ret i1 %andandval
}

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs9__xtoHashFNbNeKxSQDoQDnQDg__TQCzSQCsQCoFZQCmFZQCrTQCgZQDyZm(%"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* dereferenceable(24) %p) local_unnamed_addr #1 {
unrolledstmt:
  %0 = 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@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 %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %p to i8* ; [#uses = 1]
  %4 = tail call i64 %2(%object.TypeInfo_Const* nonnull @_D13TypeInfo_xAya6__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_xPv6__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 %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %p, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %10 = bitcast i8** %9 to i8*                    ; [#uses = 1]
  %11 = tail call i64 %8(%object.TypeInfo_Const* nonnull @_D12TypeInfo_xPv6__initZ, i8* nonnull %10) ; [#uses = 1]
  %12 = add i64 %11, %5                           ; [#uses = 1]
  ret i64 %12
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList"* @_D3std9container5dlist__T5DListTiZQj__T6__ctorTSQBu9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDfMFNaNcNfQDiZSQFgQFfQEy__TQEvTiZQFb(%"std.container.dlist.DList!int.DList"* nonnull returned %.this_arg, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* noalias nocapture align 8 %stuff) local_unnamed_addr #1 {
  %result.i.i = alloca i64, align 8               ; [#uses = 3, size/byte = 8]
  %.hidden_copy_for_IndirectByvalRewrite = alloca %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", align 8 ; [#uses = 3, size/byte = 24]
  %1 = bitcast %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.hidden_copy_for_IndirectByvalRewrite to i8* ; [#uses = 1]
  %2 = bitcast %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %stuff to i8* ; [#uses = 1]
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 dereferenceable(24) %1, i8* nonnull align 8 dereferenceable(24) %2, i64 24, i1 false)
  %3 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8, !noalias !20 ; [#uses = 2]
  %.not.i.i = icmp eq %std.container.dlist.BaseNode* %4, null ; [#uses = 1]
  br i1 %.not.i.i, label %endif.i.i, label %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit.i

endif.i.i:                                        ; preds = %0
  %.gc_struct.i.i = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 7]
  %5 = getelementptr inbounds i8, i8* %.gc_struct.i.i, i64 8 ; [#uses = 1, type = i8*]
  %6 = bitcast %"std.container.dlist.DList!int.DList"* %.this_arg to i8** ; [#uses = 1]
  %7 = getelementptr inbounds i8, i8* %.gc_struct.i.i, i64 16 ; [#uses = 1, type = i8*]
  %8 = bitcast i8* %7 to i64*                     ; [#uses = 1]
  store i64 0, i64* %8, align 8, !noalias !20
  store i8* %.gc_struct.i.i, i8** %6, align 8, !noalias !20
  %9 = bitcast i8* %.gc_struct.i.i to i8**        ; [#uses = 1]
  store i8* %.gc_struct.i.i, i8** %9, align 8, !noalias !20
  %10 = bitcast i8* %5 to i8**                    ; [#uses = 1]
  store i8* %.gc_struct.i.i, i8** %10, align 8, !noalias !20
  %11 = bitcast i8* %.gc_struct.i.i to %std.container.dlist.BaseNode* ; [#uses = 1]
  br label %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit.i

_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit.i: ; preds = %endif.i.i, %0
  %12 = phi %std.container.dlist.BaseNode* [ %4, %0 ], [ %11, %endif.i.i ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %13 = bitcast i64* %result.i.i to i8*           ; [#uses = 3]
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %13), !noalias !20
  %14 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %.hidden_copy_for_IndirectByvalRewrite, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.len.i.i.i.i = load i64, i64* %14, align 8, !alias.scope !20 ; [#uses = 1]
  %.not.i.i.i.i = icmp eq i64 %.len.i.i.i.i, 0    ; [#uses = 1]
  br i1 %.not.i.i.i.i, label %if.i1.i, label %endif.i2.i

if.i1.i:                                          ; preds = %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit.i
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %13), !noalias !20
  br label %_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBz9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDkMFNaNfQDgZm.exit

endif.i2.i:                                       ; preds = %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit.i
  store i64 0, i64* %result.i.i, align 8, !noalias !20
  %15 = call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj__T11createRangeTSQCa9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDlMFNaNfKQDhKmZSQFnQFmQFf__TQFcTiZQFi5Range(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64* nonnull dereferenceable(8) %result.i.i, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* nonnull dereferenceable(24) %.hidden_copy_for_IndirectByvalRewrite) #3 ; [#uses = 2]
  %.fca.0.0.extract.i.i = extractvalue %"std.container.dlist.DList!int.DList.Range" %15, 0, 0 ; [#uses = 1]
  %.fca.0.1.extract.i.i = extractvalue %"std.container.dlist.DList!int.DList.Range" %15, 0, 1 ; [#uses = 1]
  %16 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %12, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %17 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %16, align 8 ; [#uses = 1]
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %.fca.0.0.extract.i.i, %std.container.dlist.BaseNode* %17) #3
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %12, %std.container.dlist.BaseNode* %.fca.0.1.extract.i.i) #3
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %13), !noalias !20
  br label %_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBz9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDkMFNaNfQDgZm.exit

_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBz9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDkMFNaNfQDgZm.exit: ; preds = %if.i1.i, %endif.i2.i
  ret %"std.container.dlist.DList!int.DList"* %.this_arg
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %std.container.dlist.BaseNode* @_D3std9container5dlist__T5DListTiZQj7PayNode10asBaseNodeMNgFNaNbNiNeZPNgSQCtQCsQCl8BaseNode(%"std.container.dlist.DList!int.DList.PayNode"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.PayNode", %"std.container.dlist.DList!int.DList.PayNode"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  ret %std.container.dlist.BaseNode* %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 1]
  %.not = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not, label %endif, label %if

if:                                               ; preds = %0
  ret void

endif:                                            ; preds = %0
  %.gc_struct = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 6]
  %3 = getelementptr inbounds i8, i8* %.gc_struct, i64 8 ; [#uses = 1, type = i8*]
  %4 = bitcast %"std.container.dlist.DList!int.DList"* %.this_arg to i8** ; [#uses = 1]
  %5 = getelementptr inbounds i8, i8* %.gc_struct, i64 16 ; [#uses = 1, type = i8*]
  %6 = bitcast i8* %5 to i64*                     ; [#uses = 1]
  store i64 0, i64* %6, align 8
  store i8* %.gc_struct, i8** %4, align 8
  %7 = bitcast i8* %.gc_struct to i8**            ; [#uses = 1]
  store i8* %.gc_struct, i8** %7, align 8
  %8 = bitcast i8* %3 to i8**                     ; [#uses = 1]
  store i8* %.gc_struct, i8** %8, align 8
  ret void
}

; [#uses = 11]
; Function Attrs: uwtable
declare noalias i8* @_d_newitemT(%object.TypeInfo*) local_unnamed_addr #5

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %std.container.dlist.BaseNode** @_D3std9container5dlist__T5DListTiZQj6_firstMNgFNaNbNcNdNiNfZNgPSQCkQCjQCc8BaseNode(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  %3 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  ret %std.container.dlist.BaseNode** %3

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 29, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 225) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %std.container.dlist.BaseNode** @_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 2]
  %.not = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  %3 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  ret %std.container.dlist.BaseNode** %3

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 29, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 230) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range"* @_D3std9container5dlist__T5DListTiZQj5Range6__ctorMFNaNbNcNfPSQChQCgQBz8BaseNodeQuZSQDdQDcQCv__TQCsTiZQCyQCq(%"std.container.dlist.DList!int.DList.Range"* nonnull returned %.this_arg, %std.container.dlist.BaseNode* %last_arg, %std.container.dlist.BaseNode* %first_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %2 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.this_arg to i8* ; [#uses = 1]
  tail call void @llvm.memset.p0i8.i64(i8* nonnull align 1 dereferenceable(16) %2, i8 0, i64 16, i1 false)
  %3 = tail call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %1, %std.container.dlist.BaseNode* %last_arg, %std.container.dlist.BaseNode* %first_arg) #3 ; [#uses = 0]
  ret %"std.container.dlist.DList!int.DList.Range"* %.this_arg
}

; [#uses = 13]
declare %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned, %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode*) local_unnamed_addr #3

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range"* @_D3std9container5dlist__T5DListTiZQj5Range6__ctorMFNaNbNcNfPSQChQCgQBz8BaseNodeZSQDbQDaQCt__TQCqTiZQCwQCo(%"std.container.dlist.DList!int.DList.Range"* nonnull returned %.this_arg, %std.container.dlist.BaseNode* %n_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %2 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.this_arg to i8* ; [#uses = 1]
  tail call void @llvm.memset.p0i8.i64(i8* nonnull align 1 dereferenceable(16) %2, i8 0, i64 16, i1 false)
  %3 = tail call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %1, %std.container.dlist.BaseNode* %n_arg, %std.container.dlist.BaseNode* %n_arg) #3 ; [#uses = 0]
  ret %"std.container.dlist.DList!int.DList.Range"* %.this_arg
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32* @_D3std9container5dlist__T5DListTiZQj5Range5frontMFNaNbNcNdNfZi(%"std.container.dlist.DList!int.DList.Range"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %2 = tail call %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange5frontMFNaNbNdNjNfZPSQBwQBvQBo8BaseNode(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  %3 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %4 = bitcast %std.container.dlist.BaseNode* %3 to i32* ; [#uses = 1]
  ret i32* %4
}

; [#uses = 7]
declare %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange5frontMFNaNbNdNjNfZPSQBwQBvQBo8BaseNode(%std.container.dlist.DRange* nonnull) local_unnamed_addr #3

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32* @_D3std9container5dlist8BaseNode__T10getPayloadTiZQpMNgFNaNbNcNiNeZNgi(%std.container.dlist.BaseNode* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %.this_arg, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %2 = bitcast %std.container.dlist.BaseNode* %1 to i32* ; [#uses = 1]
  ret i32* %2
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32* @_D3std9container5dlist__T5DListTiZQj5Range4backMFNaNbNcNdNfZi(%"std.container.dlist.DList!int.DList.Range"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %2 = tail call %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange4backMFNaNbNdNjNfZPSQBvQBuQBn8BaseNode(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  %3 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %4 = bitcast %std.container.dlist.BaseNode* %3 to i32* ; [#uses = 1]
  ret i32* %4
}

; [#uses = 1]
declare %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange4backMFNaNbNdNjNfZPSQBvQBuQBn8BaseNode(%std.container.dlist.DRange* nonnull) local_unnamed_addr #3

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj5Range4saveMFNaNbNdNiNfZSQChQCgQBz__TQBwTiZQCcQBu(%"std.container.dlist.DList!int.DList.Range"* nonnull %.this_arg) local_unnamed_addr #1 {
  %.unpack.elt = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %.unpack.unpack = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %.unpack.elt, align 8 ; [#uses = 1]
  %1 = insertvalue %std.container.dlist.DRange undef, %std.container.dlist.BaseNode* %.unpack.unpack, 0 ; [#uses = 1]
  %.unpack.elt1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.this_arg, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %.unpack.unpack2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %.unpack.elt1, align 8 ; [#uses = 1]
  %.unpack3 = insertvalue %std.container.dlist.DRange %1, %std.container.dlist.BaseNode* %.unpack.unpack2, 1 ; [#uses = 1]
  %2 = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.DRange %.unpack3, 0 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %2
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9container5dlist__T5DListTiZQj5clearMFNaNbNfZv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %.structliteral.i = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %.structliteral1.i = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %1 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral.i to i8* ; [#uses = 4]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %1)
  %2 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral1.i to i8* ; [#uses = 5]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %2)
  %3 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 4]
  %5 = icmp eq %std.container.dlist.BaseNode* %4, null ; [#uses = 1]
  br i1 %5, label %if.i, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i: ; preds = %0
  %6 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 0, i32 1 ; [#uses = 2, type = %std.container.dlist.BaseNode**]
  %7 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %6, align 8 ; [#uses = 1]
  %8 = icmp eq %std.container.dlist.BaseNode* %4, %7 ; [#uses = 1]
  br i1 %8, label %if.i, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i

if.i:                                             ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i, %0
  %9 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral.i, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %10 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral.i, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %11 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral.i, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %1, i8 0, i64 16, i1 false)
  %12 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %11, %std.container.dlist.BaseNode* null, %std.container.dlist.BaseNode* null) #3 ; [#uses = 0]
  %.fca.0.0.load4.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %9, align 8 ; [#uses = 1]
  %.fca.0.0.insert5.i = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load4.i, 0, 0 ; [#uses = 1]
  %.fca.0.1.load7.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %10, align 8 ; [#uses = 1]
  %.fca.0.1.insert8.i = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert5.i, %std.container.dlist.BaseNode* %.fca.0.1.load7.i, 0, 1 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %1)
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %2)
  br label %_D3std9container5dlist__T5DListTiZQj7opSliceMFNaNbNfZSQCaQBzQBs__TQBpTiZQBv5Range.exit

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i
  %13 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1.i, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %14 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1.i, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false)
  %15 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %6, align 8 ; [#uses = 1]
  %16 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %17 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %16, align 8 ; [#uses = 1]
  %18 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1.i, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false)
  %19 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %18, %std.container.dlist.BaseNode* %17, %std.container.dlist.BaseNode* %15) #3 ; [#uses = 0]
  %.fca.0.0.load.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %13, align 8 ; [#uses = 1]
  %.fca.0.0.insert.i = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load.i, 0, 0 ; [#uses = 1]
  %.fca.0.1.load.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %14, align 8 ; [#uses = 1]
  %.fca.0.1.insert.i = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert.i, %std.container.dlist.BaseNode* %.fca.0.1.load.i, 0, 1 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %1)
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %2)
  br label %_D3std9container5dlist__T5DListTiZQj7opSliceMFNaNbNfZSQCaQBzQBs__TQBpTiZQBv5Range.exit

_D3std9container5dlist__T5DListTiZQj7opSliceMFNaNbNfZSQCaQBzQBs__TQBpTiZQBv5Range.exit: ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i, %if.i
  %20 = phi %"std.container.dlist.DList!int.DList.Range" [ %.fca.0.1.insert8.i, %if.i ], [ %.fca.0.1.insert.i, %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i ] ; [#uses = 1, type = %"std.container.dlist.DList!int.DList.Range" = type { %std.container.dlist.DRange }]
  %21 = call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj6removeMFNaNbNfSQByQBxQBq__TQBnTiZQBt5RangeZQBd(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range" %20) #3 ; [#uses = 0]
  ret void
}

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj6removeMFNaNbNfSQByQBxQBq__TQBnTiZQBt5RangeZQBd(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range" %r_arg) local_unnamed_addr #1 {
  %r = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 3, size/byte = 16]
  %.structliteral = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %.structliteral6 = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 5, size/byte = 16]
  %r_arg.fca.0.0.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %r_arg, 0, 0 ; [#uses = 1]
  %r_arg.fca.0.0.gep = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0, i32 0 ; [#uses = 3, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %r_arg.fca.0.0.extract, %std.container.dlist.BaseNode** %r_arg.fca.0.0.gep, align 8
  %r_arg.fca.0.1.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %r_arg, 0, 1 ; [#uses = 1]
  %r_arg.fca.0.1.gep = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0, i32 1 ; [#uses = 4, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %r_arg.fca.0.1.extract, %std.container.dlist.BaseNode** %r_arg.fca.0.1.gep, align 8
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %2 = call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  br i1 %2, label %if, label %endif

if:                                               ; preds = %0
  %.fca.0.0.load16 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %r_arg.fca.0.0.gep, align 8 ; [#uses = 1]
  %.fca.0.0.insert17 = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load16, 0, 0 ; [#uses = 1]
  %.fca.0.1.load19 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %r_arg.fca.0.1.gep, align 8 ; [#uses = 1]
  %.fca.0.1.insert20 = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert17, %std.container.dlist.BaseNode* %.fca.0.1.load19, 0, 1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %.fca.0.1.insert20

endif:                                            ; preds = %0
  %3 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 2, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 1]
  %.not = icmp eq %std.container.dlist.BaseNode* %4, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %endif
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %r_arg.fca.0.0.gep, align 8 ; [#uses = 2]
  %.not22 = icmp eq %std.container.dlist.BaseNode* %5, null ; [#uses = 1]
  br i1 %.not22, label %assertFailed2, label %assertPassed1

assertPassed1:                                    ; preds = %assertPassed
  %6 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %5, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %7 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %6, align 8 ; [#uses = 1]
  %8 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %r_arg.fca.0.1.gep, align 8 ; [#uses = 1]
  %9 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %8, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %10 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %9, align 8 ; [#uses = 1]
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %10, %std.container.dlist.BaseNode* %7) #3
  %11 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %r_arg.fca.0.1.gep, align 8 ; [#uses = 1]
  %12 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %11, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %13 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %12, align 8 ; [#uses = 2]
  %14 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 3]
  %15 = icmp eq %std.container.dlist.BaseNode* %13, %14 ; [#uses = 1]
  br i1 %15, label %if3, label %else

if3:                                              ; preds = %assertPassed1
  %16 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %17 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %18 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %19 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %19, i8 0, i64 16, i1 false)
  %20 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %18, %std.container.dlist.BaseNode* null, %std.container.dlist.BaseNode* null) #3 ; [#uses = 0]
  %.fca.0.0.load9 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %16, align 8 ; [#uses = 1]
  %.fca.0.0.insert10 = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load9, 0, 0 ; [#uses = 1]
  %.fca.0.1.load12 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %17, align 8 ; [#uses = 1]
  %.fca.0.1.insert13 = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert10, %std.container.dlist.BaseNode* %.fca.0.1.load12, 0, 1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %.fca.0.1.insert13

else:                                             ; preds = %assertPassed1
  %.not.i = icmp eq %std.container.dlist.BaseNode* %14, null ; [#uses = 1]
  %21 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral6 to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %21, i8 0, i64 16, i1 false)
  br i1 %.not.i, label %assertFailed.i, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit

assertFailed.i:                                   ; preds = %else
  call void @_d_assert_msg({ i64, i8* } { i64 29, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 230) #2
  unreachable

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit: ; preds = %else
  %22 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral6, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %23 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral6, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %24 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %14, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %25 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %24, align 8 ; [#uses = 1]
  %26 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral6, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %27 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral6 to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %27, i8 0, i64 16, i1 false)
  %28 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %26, %std.container.dlist.BaseNode* %25, %std.container.dlist.BaseNode* %13) #3 ; [#uses = 0]
  %.fca.0.0.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %22, align 8 ; [#uses = 1]
  %.fca.0.0.insert = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load, 0, 0 ; [#uses = 1]
  %.fca.0.1.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %23, align 8 ; [#uses = 1]
  %.fca.0.1.insert = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert, %std.container.dlist.BaseNode* %.fca.0.1.load, 0, 1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %.fca.0.1.insert

assertFailed2:                                    ; preds = %assertPassed
  call void @_d_assert_msg({ i64, i8* } { i64 22, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 629) #2
  unreachable

assertFailed:                                     ; preds = %endif
  call void @_d_assert_msg({ i64, i8* } { i64 41, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 628) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj7opSliceMFNaNbNfZSQCaQBzQBs__TQBpTiZQBv5Range(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %.structliteral = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %.structliteral1 = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 5, size/byte = 16]
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 4]
  %3 = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %3, label %if, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 2, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 1]
  %6 = icmp eq %std.container.dlist.BaseNode* %2, %5 ; [#uses = 1]
  br i1 %6, label %if, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit

if:                                               ; preds = %0, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  %7 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %8 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %9 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %10 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %10, i8 0, i64 16, i1 false)
  %11 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %9, %std.container.dlist.BaseNode* null, %std.container.dlist.BaseNode* null) #3 ; [#uses = 0]
  %.fca.0.0.load4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 1]
  %.fca.0.0.insert5 = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load4, 0, 0 ; [#uses = 1]
  %.fca.0.1.load7 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %8, align 8 ; [#uses = 1]
  %.fca.0.1.insert8 = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert5, %std.container.dlist.BaseNode* %.fca.0.1.load7, 0, 1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %.fca.0.1.insert8

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  %12 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %13 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %14 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral1 to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %14, i8 0, i64 16, i1 false)
  %15 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 1]
  %16 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %17 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %16, align 8 ; [#uses = 1]
  %18 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %19 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral1 to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %19, i8 0, i64 16, i1 false)
  %20 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %18, %std.container.dlist.BaseNode* %17, %std.container.dlist.BaseNode* %15) #3 ; [#uses = 0]
  %.fca.0.0.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %12, align 8 ; [#uses = 1]
  %.fca.0.0.insert = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load, 0, 0 ; [#uses = 1]
  %.fca.0.1.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %13, align 8 ; [#uses = 1]
  %.fca.0.1.insert = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert, %std.container.dlist.BaseNode* %.fca.0.1.load, 0, 1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %.fca.0.1.insert
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList" @_D3std9container5dlist__T5DListTiZQj3dupMFNaNbNdNfZSQByQBxQBq__TQBnTiZQBt(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %.structliteral.i = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %.structliteral1.i = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %.structliteral = alloca %"std.container.dlist.DList!int.DList", align 8 ; [#uses = 2, size/byte = 8]
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.structliteral, i64 0, i32 0 ; [#uses = 2, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* null, %std.container.dlist.BaseNode** %1, align 8
  %2 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral.i to i8* ; [#uses = 4]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %2)
  %3 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral1.i to i8* ; [#uses = 5]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %3)
  %4 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 4]
  %6 = icmp eq %std.container.dlist.BaseNode* %5, null ; [#uses = 1]
  br i1 %6, label %if.i, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i: ; preds = %0
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %5, i64 0, i32 1 ; [#uses = 2, type = %std.container.dlist.BaseNode**]
  %8 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 1]
  %9 = icmp eq %std.container.dlist.BaseNode* %5, %8 ; [#uses = 1]
  br i1 %9, label %if.i, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i

if.i:                                             ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i, %0
  %10 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral.i, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %11 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral.i, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %12 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral.i, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false)
  %13 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %12, %std.container.dlist.BaseNode* null, %std.container.dlist.BaseNode* null) #3 ; [#uses = 0]
  %.fca.0.0.load4.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %10, align 8 ; [#uses = 1]
  %.fca.0.0.insert5.i = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load4.i, 0, 0 ; [#uses = 1]
  %.fca.0.1.load7.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %11, align 8 ; [#uses = 1]
  %.fca.0.1.insert8.i = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert5.i, %std.container.dlist.BaseNode* %.fca.0.1.load7.i, 0, 1 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %2)
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %3)
  br label %_D3std9container5dlist__T5DListTiZQj7opSliceMFNaNbNfZSQCaQBzQBs__TQBpTiZQBv5Range.exit

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit.i
  %14 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1.i, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %15 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1.i, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false)
  %16 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 1]
  %17 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %5, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %18 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %17, align 8 ; [#uses = 1]
  %19 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral1.i, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false)
  %20 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %19, %std.container.dlist.BaseNode* %18, %std.container.dlist.BaseNode* %16) #3 ; [#uses = 0]
  %.fca.0.0.load.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %14, align 8 ; [#uses = 1]
  %.fca.0.0.insert.i = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load.i, 0, 0 ; [#uses = 1]
  %.fca.0.1.load.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %15, align 8 ; [#uses = 1]
  %.fca.0.1.insert.i = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert.i, %std.container.dlist.BaseNode* %.fca.0.1.load.i, 0, 1 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %2)
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %3)
  br label %_D3std9container5dlist__T5DListTiZQj7opSliceMFNaNbNfZSQCaQBzQBs__TQBpTiZQBv5Range.exit

_D3std9container5dlist__T5DListTiZQj7opSliceMFNaNbNfZSQCaQBzQBs__TQBpTiZQBv5Range.exit: ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i, %if.i
  %21 = phi %"std.container.dlist.DList!int.DList.Range" [ %.fca.0.1.insert8.i, %if.i ], [ %.fca.0.1.insert.i, %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i ] ; [#uses = 1, type = %"std.container.dlist.DList!int.DList.Range" = type { %std.container.dlist.DRange }]
  %22 = call i64 @_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBzQByQBr__TQBoTiZQBu5RangeZQBqMFNaNbNfQBoZm(%"std.container.dlist.DList!int.DList"* nonnull %.structliteral, %"std.container.dlist.DList!int.DList.Range" %21) #3 ; [#uses = 0]
  %.fca.0.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 1]
  %.fca.0.insert = insertvalue %"std.container.dlist.DList!int.DList" undef, %std.container.dlist.BaseNode* %.fca.0.load, 0 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList" %.fca.0.insert
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList"* @_D3std9container5dlist__T5DListTiZQj__T6__ctorTSQBuQBtQBm__TQBjTiZQBp5RangeZQBlMFNaNbNcNfQBqZSQDoQDnQDg__TQDdTiZQDj(%"std.container.dlist.DList!int.DList"* nonnull returned %.this_arg, %"std.container.dlist.DList!int.DList.Range" %stuff_arg) local_unnamed_addr #1 {
  %1 = tail call i64 @_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBzQByQBr__TQBoTiZQBu5RangeZQBqMFNaNbNfQBoZm(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range" %stuff_arg) #3 ; [#uses = 0]
  ret %"std.container.dlist.DList!int.DList"* %.this_arg
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32* @_D3std9container5dlist__T5DListTiZQj4backMNgFNaNbNcNdNiNfZNgi(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 4]
  %3 = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 1]
  %6 = icmp eq %std.container.dlist.BaseNode* %2, %5 ; [#uses = 1]
  br i1 %6, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %8 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 1]
  %9 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %8, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %10 = bitcast %std.container.dlist.BaseNode* %9 to i32* ; [#uses = 1]
  ret i32* %10

assertFailed:                                     ; preds = %0, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 25, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.19, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 385) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std9container5dlist__T5DListTiZQj9removeAnyMFNaNbNfZi(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 6]
  %3 = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 1]
  %6 = icmp eq %std.container.dlist.BaseNode* %2, %5 ; [#uses = 1]
  br i1 %6, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit5.i

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit5.i: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %8 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 3]
  %9 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %8, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %10 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %9, align 8 ; [#uses = 1]
  %11 = icmp eq %std.container.dlist.BaseNode* %10, %2 ; [#uses = 1]
  br i1 %11, label %_D3std9container5dlist__T5DListTiZQj10removeBackMFNaNbNfZv.exit, label %assertFailed2.i

assertFailed2.i:                                  ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit5.i
  tail call void @_d_assert_msg({ i64, i8* } { i64 25, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.22, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 559) #2
  unreachable

_D3std9container5dlist__T5DListTiZQj10removeBackMFNaNbNfZv.exit: ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit5.i
  %12 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %8, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %13 = bitcast %std.container.dlist.BaseNode* %12 to i32* ; [#uses = 1]
  %14 = load i32, i32* %13, align 4               ; [#uses = 1]
  %15 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %8, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %16 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %15, align 8 ; [#uses = 1]
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* nonnull %2, %std.container.dlist.BaseNode* %16) #3
  ret i32 %14

assertFailed:                                     ; preds = %0, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 30, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 528) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std9algorithm8mutation__T4moveTiZQiFNaNbNiNfKiZi(i32* dereferenceable(4) %source) local_unnamed_addr #1 {
  %1 = load i32, i32* %source, align 4            ; [#uses = 1]
  ret i32 %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9container5dlist__T5DListTiZQj10removeBackMFNaNbNfZv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 6]
  %3 = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit

_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 1]
  %6 = icmp eq %std.container.dlist.BaseNode* %2, %5 ; [#uses = 1]
  br i1 %6, label %assertFailed, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit5

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit5: ; preds = %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %8 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 2]
  %9 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %8, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %10 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %9, align 8 ; [#uses = 1]
  %11 = icmp eq %std.container.dlist.BaseNode* %10, %2 ; [#uses = 1]
  br i1 %11, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit, label %assertFailed2

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit: ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit5
  %12 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %8, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %13 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %12, align 8 ; [#uses = 1]
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* nonnull %2, %std.container.dlist.BaseNode* %13) #3
  ret void

assertFailed2:                                    ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit5
  tail call void @_d_assert_msg({ i64, i8* } { i64 25, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.22, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 559) #2
  unreachable

assertFailed:                                     ; preds = %0, %_D3std9container5dlist__T5DListTiZQj5emptyMxFNaNbNdNiNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 31, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.23, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 558) #2
  unreachable
}

; [#uses = 22]
declare void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode*, %std.container.dlist.BaseNode*) local_unnamed_addr #3

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std9container5dlist__T5DListTiZQj11removeFrontMFNaNbNfmZm(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64 %howMany_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 4]
  %.not = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not, label %if, label %forcond

if:                                               ; preds = %0
  ret i64 0

forcond:                                          ; preds = %0, %forcond
  %result.0 = phi i64 [ %4, %forcond ], [ 0, %0 ] ; [#uses = 3, type = i64]
  %.pn = phi %std.container.dlist.BaseNode* [ %p.0, %forcond ], [ %2, %0 ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %p.0.in = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %.pn, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %p.0 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %p.0.in, align 8 ; [#uses = 3]
  %.not7 = icmp ne %std.container.dlist.BaseNode* %p.0, %2 ; [#uses = 1]
  %3 = icmp ult i64 %result.0, %howMany_arg       ; [#uses = 1]
  %andandval = and i1 %3, %.not7                  ; [#uses = 1]
  %4 = add nuw i64 %result.0, 1                   ; [#uses = 1]
  br i1 %andandval, label %forcond, label %endfor

endfor:                                           ; preds = %forcond
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %p.0, %std.container.dlist.BaseNode* nonnull %2) #3
  ret i64 %result.0
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std9container5dlist__T5DListTiZQj10removeBackMFNaNbNfmZm(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64 %howMany_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 4]
  %.not = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not, label %if, label %forcond

if:                                               ; preds = %0
  ret i64 0

forcond:                                          ; preds = %0, %forcond
  %result.0 = phi i64 [ %4, %forcond ], [ 0, %0 ] ; [#uses = 3, type = i64]
  %.pn = phi %std.container.dlist.BaseNode* [ %p.0, %forcond ], [ %2, %0 ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %p.0.in = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %.pn, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %p.0 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %p.0.in, align 8 ; [#uses = 3]
  %.not6 = icmp ne %std.container.dlist.BaseNode* %p.0, %2 ; [#uses = 1]
  %3 = icmp ult i64 %result.0, %howMany_arg       ; [#uses = 1]
  %andandval = and i1 %3, %.not6                  ; [#uses = 1]
  %4 = add nuw i64 %result.0, 1                   ; [#uses = 1]
  br i1 %andandval, label %forcond, label %endfor

endfor:                                           ; preds = %forcond
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* nonnull %2, %std.container.dlist.BaseNode* %p.0) #3
  ret i64 %result.0
}

; [#uses = 12]
declare zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull) local_unnamed_addr #3

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj12linearRemoveMFNaNbNfSQCfQCeQBx__TQBuTiZQCa5RangeZQBd(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range" %r_arg) local_unnamed_addr #1 {
  %1 = tail call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj6removeMFNaNbNfSQByQBxQBq__TQBnTiZQBt5RangeZQBd(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range" %r_arg) #1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9container5dlist__T5DListTiZQj10popFirstOfMFNaNbNfKSQCeQCdQBw__TQBtTiZQBz5RangeZv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range"* dereferenceable(16) %r) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 1]
  %.not = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  %3 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 3]
  %.not3 = icmp eq %std.container.dlist.BaseNode* %4, null ; [#uses = 1]
  br i1 %.not3, label %assertFailed2, label %assertPassed1

assertPassed1:                                    ; preds = %assertPassed
  %5 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %6 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %7 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %6, align 8 ; [#uses = 1]
  %8 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %9 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %8, align 8 ; [#uses = 1]
  tail call void @_D3std9container5dlist6DRange8popFrontMFNaNbNlNfZv(%std.container.dlist.DRange* nonnull %5) #3
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %9, %std.container.dlist.BaseNode* %7) #3
  ret void

assertFailed2:                                    ; preds = %assertPassed
  tail call void @_d_assert_msg({ i64, i8* } { i64 26, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.26, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 657) #2
  unreachable

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 41, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 656) #2
  unreachable
}

; [#uses = 5]
declare void @_D3std9container5dlist6DRange8popFrontMFNaNbNlNfZv(%std.container.dlist.DRange* nonnull) local_unnamed_addr #3

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9container5dlist__T5DListTiZQj9popLastOfMFNaNbNfKSQCcQCbQBu__TQBrTiZQBx5RangeZv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range"* dereferenceable(16) %r) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 1]
  %.not = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  %3 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 1]
  %.not3 = icmp eq %std.container.dlist.BaseNode* %4, null ; [#uses = 1]
  br i1 %.not3, label %assertFailed2, label %assertPassed1

assertPassed1:                                    ; preds = %assertPassed
  %5 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %6 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %7 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %6, align 8 ; [#uses = 2]
  %8 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %7, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %9 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %8, align 8 ; [#uses = 1]
  %10 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %7, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %11 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %10, align 8 ; [#uses = 1]
  tail call void @_D3std9container5dlist6DRange7popBackMFNaNbNlNfZv(%std.container.dlist.DRange* nonnull %5) #3
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %11, %std.container.dlist.BaseNode* %9) #3
  ret void

assertFailed2:                                    ; preds = %assertPassed
  tail call void @_d_assert_msg({ i64, i8* } { i64 25, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.27, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 673) #2
  unreachable

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 41, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 672) #2
  unreachable
}

; [#uses = 1]
declare void @_D3std9container5dlist6DRange7popBackMFNaNbNlNfZv(%std.container.dlist.DRange* nonnull) local_unnamed_addr #3

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj12linearRemoveMFNaNbNfSQCf5range__T4TakeTSQCyQCxQCq__TQCnTiZQCt5RangeZQBjZQBh(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.range.Take!(Range).Take"* byval align 8 %r) local_unnamed_addr #1 {
  %.structliteral = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 1]
  %.not = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %0
  %3 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %r, i64 0, i32 0, i32 0, i32 0 ; [#uses = 2, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 3]
  %.not7 = icmp eq %std.container.dlist.BaseNode* %4, null ; [#uses = 1]
  br i1 %.not7, label %assertFailed2, label %dowhile.preheader

dowhile.preheader:                                ; preds = %assertPassed
  %5 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %r, i64 0, i32 1 ; [#uses = 4, type = i64*]
  %6 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %r, i64 0, i32 0, i32 0 ; [#uses = 3, type = %std.container.dlist.DRange*]
  %7 = load i64, i64* %5, align 8                 ; [#uses = 1]
  %8 = icmp eq i64 %7, 0                          ; [#uses = 1]
  br i1 %8, label %assertFailed.i, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.i

_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.i: ; preds = %dowhile.preheader, %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.dowhile_crit_edge
  %9 = phi %std.container.dlist.BaseNode* [ %.pre, %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.dowhile_crit_edge ], [ %4, %dowhile.preheader ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %10 = call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %6) #3 ; [#uses = 1]
  br i1 %10, label %assertFailed.i, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu8popFrontMFNaNbNfZv.exit

assertFailed.i:                                   ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.dowhile_crit_edge, %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.i, %dowhile.preheader
  call void @_d_assert_msg({ i64, i8* } { i64 55, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.30, i32 0, i32 0) }, { i64, i8* } { i64 59, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.29, i32 0, i32 0) }, i32 2258) #2
  unreachable

_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu8popFrontMFNaNbNfZv.exit: ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.i
  call void @_D3std9container5dlist6DRange8popFrontMFNaNbNlNfZv(%std.container.dlist.DRange* nonnull %6) #3
  %11 = load i64, i64* %5, align 8                ; [#uses = 1]
  %12 = add i64 %11, -1                           ; [#uses = 2]
  store i64 %12, i64* %5, align 8
  %13 = icmp eq i64 %12, 0                        ; [#uses = 1]
  br i1 %13, label %enddowhile, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit

_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit: ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu8popFrontMFNaNbNfZv.exit
  %14 = call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %6) #3 ; [#uses = 1]
  br i1 %14, label %enddowhile, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.dowhile_crit_edge

_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.dowhile_crit_edge: ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  %.pre = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 1]
  %15 = load i64, i64* %5, align 8                ; [#uses = 1]
  %16 = icmp eq i64 %15, 0                        ; [#uses = 1]
  br i1 %16, label %assertFailed.i, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit.i

enddowhile:                                       ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu8popFrontMFNaNbNfZv.exit, %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  %17 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %18 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %19 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %20 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %20, i8 0, i64 16, i1 false)
  %21 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %19, %std.container.dlist.BaseNode* %9, %std.container.dlist.BaseNode* nonnull %4) #3 ; [#uses = 0]
  %.fca.0.0.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %17, align 8 ; [#uses = 1]
  %.fca.0.0.insert5 = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load, 0, 0 ; [#uses = 1]
  %.fca.0.1.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %18, align 8 ; [#uses = 1]
  %.fca.0.1.insert6 = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert5, %std.container.dlist.BaseNode* %.fca.0.1.load, 0, 1 ; [#uses = 1]
  %22 = call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj6removeMFNaNbNfSQByQBxQBq__TQBnTiZQBt5RangeZQBd(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range" %.fca.0.1.insert6) #1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %22

assertFailed2:                                    ; preds = %assertPassed
  tail call void @_d_assert_msg({ i64, i8* } { i64 22, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 690) #2
  unreachable

assertFailed:                                     ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 41, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 689) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu8popFrontMFNaNbNfZv(%"std.range.Take!(Range).Take"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 1 ; [#uses = 3, type = i64*]
  %2 = load i64, i64* %1, align 8                 ; [#uses = 1]
  %3 = icmp eq i64 %2, 0                          ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit

_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 2, type = %std.container.dlist.DRange*]
  %5 = tail call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %4) #3 ; [#uses = 1]
  br i1 %5, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  tail call void @_D3std9container5dlist6DRange8popFrontMFNaNbNlNfZv(%std.container.dlist.DRange* nonnull %4) #3
  %6 = load i64, i64* %1, align 8                 ; [#uses = 1]
  %7 = add i64 %6, -1                             ; [#uses = 1]
  store i64 %7, i64* %1, align 8
  ret void

assertFailed:                                     ; preds = %0, %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 55, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.30, i32 0, i32 0) }, { i64, i8* } { i64 59, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.29, i32 0, i32 0) }, i32 2258) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb(%"std.range.Take!(Range).Take"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %2 = load i64, i64* %1, align 8                 ; [#uses = 1]
  %3 = icmp eq i64 %2, 0                          ; [#uses = 1]
  br i1 %3, label %ororend, label %oror

oror:                                             ; preds = %0
  %4 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %5 = tail call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %4) #3 ; [#uses = 1]
  br label %ororend

ororend:                                          ; preds = %oror, %0
  %ororval = phi i1 [ true, %0 ], [ %5, %oror ]   ; [#uses = 1, type = i1]
  ret i1 %ororval
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9container5dlist__T5DListTiZQj19linearRemoveElementMFNaNbNfiZb(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i32 %value_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 4]
  %.not.i = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not.i, label %endif, label %endif.i

endif.i:                                          ; preds = %0
  %3 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 3]
  %5 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %6 = bitcast %std.container.dlist.BaseNode* %5 to i32* ; [#uses = 1]
  %7 = load i32, i32* %6, align 4                 ; [#uses = 1]
  %.not13.i8 = icmp eq i32 %7, %value_arg         ; [#uses = 1]
  br i1 %.not13.i8, label %if, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i.lr.ph

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i.lr.ph: ; preds = %endif.i
  %8 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %9 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %8, align 8 ; [#uses = 1]
  %10 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %9, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %11 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %10, align 8 ; [#uses = 1]
  br label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i

forcond.i:                                        ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i
  %12 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %16, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %13 = bitcast %std.container.dlist.BaseNode* %12 to i32* ; [#uses = 1]
  %14 = load i32, i32* %13, align 4               ; [#uses = 1]
  %.not13.i = icmp eq i32 %14, %value_arg         ; [#uses = 1]
  br i1 %.not13.i, label %if, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i: ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i.lr.ph, %forcond.i
  %ahead.016.i9 = phi %std.container.dlist.BaseNode* [ %4, %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i.lr.ph ], [ %16, %forcond.i ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %15 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %ahead.016.i9, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %16 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %15, align 8 ; [#uses = 4]
  %17 = icmp eq %std.container.dlist.BaseNode* %16, %11 ; [#uses = 1]
  br i1 %17, label %endif, label %forcond.i

if:                                               ; preds = %forcond.i, %endif.i
  %18 = phi %std.container.dlist.BaseNode* [ %4, %endif.i ], [ %16, %forcond.i ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %merge.i.ph = phi %std.container.dlist.BaseNode* [ %2, %endif.i ], [ %ahead.016.i9, %forcond.i ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %19 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %18, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %20 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %19, align 8 ; [#uses = 1]
  tail call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %20, %std.container.dlist.BaseNode* nonnull %merge.i.ph) #3
  ret i1 true

endif:                                            ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit.i, %0
  ret i1 false
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %std.container.dlist.BaseNode* @_D3std9container5dlist__T5DListTiZQj15findNodeByValueMFNaNbNiNfPSQClQCkQCd8BaseNodeiZQw(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i32 %value_arg, %std.container.dlist.BaseNode* %n_arg) local_unnamed_addr #1 {
  %.not = icmp eq %std.container.dlist.BaseNode* %n_arg, null ; [#uses = 1]
  br i1 %.not, label %if, label %endif

if:                                               ; preds = %forcond, %andand, %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit, %andand.lr.ph, %endif, %0
  %merge = phi %std.container.dlist.BaseNode* [ null, %0 ], [ %n_arg, %endif ], [ %n_arg, %andand.lr.ph ], [ null, %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit ], [ %ahead.01620, %andand ], [ %ahead.01620, %forcond ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  ret %std.container.dlist.BaseNode* %merge

endif:                                            ; preds = %0
  %1 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %n_arg, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 3]
  %.not1214 = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not1214, label %if, label %andand.lr.ph

andand.lr.ph:                                     ; preds = %endif
  %3 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %5 = bitcast %std.container.dlist.BaseNode* %4 to i32* ; [#uses = 1]
  %6 = load i32, i32* %5, align 4                 ; [#uses = 1]
  %.not1319 = icmp eq i32 %6, %value_arg          ; [#uses = 1]
  br i1 %.not1319, label %if, label %forbody.preheader

forbody.preheader:                                ; preds = %andand.lr.ph
  %7 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 2]
  %.not.i = icmp eq %std.container.dlist.BaseNode* %7, null ; [#uses = 1]
  %8 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %7, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  br label %forbody

forcond:                                          ; preds = %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit
  %.not12 = icmp eq %std.container.dlist.BaseNode* %13, null ; [#uses = 1]
  br i1 %.not12, label %if, label %andand

andand:                                           ; preds = %forcond
  %9 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %13, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %10 = bitcast %std.container.dlist.BaseNode* %9 to i32* ; [#uses = 1]
  %11 = load i32, i32* %10, align 4               ; [#uses = 1]
  %.not13 = icmp eq i32 %11, %value_arg           ; [#uses = 1]
  br i1 %.not13, label %if, label %forbody

forbody:                                          ; preds = %forbody.preheader, %andand
  %ahead.01620 = phi %std.container.dlist.BaseNode* [ %13, %andand ], [ %2, %forbody.preheader ] ; [#uses = 3, type = %std.container.dlist.BaseNode*]
  %12 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %ahead.01620, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %13 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %12, align 8 ; [#uses = 4]
  br i1 %.not.i, label %assertFailed.i, label %_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit

assertFailed.i:                                   ; preds = %forbody
  tail call void @_d_assert_msg({ i64, i8* } { i64 29, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.16, i32 0, i32 0) }, { i64, i8* } { i64 61, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i32 0, i32 0) }, i32 230) #2
  unreachable

_D3std9container5dlist__T5DListTiZQj5_lastMNgFNaNbNcNdNiNfZNgPSQCjQCiQCb8BaseNode.exit: ; preds = %forbody
  %14 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %8, align 8 ; [#uses = 1]
  %15 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %14, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %16 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %15, align 8 ; [#uses = 1]
  %17 = icmp eq %std.container.dlist.BaseNode* %13, %16 ; [#uses = 1]
  br i1 %17, label %if, label %forcond
}

; [#uses = 1]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9container5dlist__T5DListTiZQj11__xopEqualsFKxSQBzQByQBr__TQBoTiZQBuKxQyZb(%"std.container.dlist.DList!int.DList"* dereferenceable(8) %q, %"std.container.dlist.DList!int.DList"* dereferenceable(8) %p) #1 {
  %1 = bitcast %"std.container.dlist.DList!int.DList"* %p to i64* ; [#uses = 1]
  %2 = load i64, i64* %1, align 1                 ; [#uses = 2]
  %.cast.i = inttoptr i64 %2 to %std.container.dlist.BaseNode* ; [#uses = 5]
  %3 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %q, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 7]
  %5 = icmp eq %std.container.dlist.BaseNode* %4, %.cast.i ; [#uses = 1]
  br i1 %5, label %_D3std9container5dlist__T5DListTiZQj__T8opEqualsZQkMxFNaNbNiNfKxSQClQCkQCd__TQCaTiZQCgZb.exit, label %endif.i

forcond.if.loopexit_crit_edge.i:                  ; preds = %endif14.i
  %.mux.le.i = and i1 %24, %25                    ; [#uses = 1]
  br label %_D3std9container5dlist__T5DListTiZQj__T8opEqualsZQkMxFNaNbNiNfKxSQClQCkQCd__TQCaTiZQCgZb.exit

endif.i:                                          ; preds = %0
  %6 = icmp eq i64 %2, 0                          ; [#uses = 1]
  br i1 %6, label %if1.i, label %endif2.i

if1.i:                                            ; preds = %endif.i
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %8 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 1]
  %9 = icmp eq %std.container.dlist.BaseNode* %4, %8 ; [#uses = 1]
  br label %_D3std9container5dlist__T5DListTiZQj__T8opEqualsZQkMxFNaNbNiNfKxSQClQCkQCd__TQCaTiZQCgZb.exit

endif2.i:                                         ; preds = %endif.i
  %10 = icmp eq %std.container.dlist.BaseNode* %4, null ; [#uses = 1]
  %11 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %.cast.i, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %12 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %11, align 8 ; [#uses = 3]
  br i1 %10, label %if4.i, label %forcond.preheader.i

forcond.preheader.i:                              ; preds = %endif2.i
  %pr.0.in31.i = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %pr.032.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %pr.0.in31.i, align 8 ; [#uses = 2]
  %13 = icmp eq %std.container.dlist.BaseNode* %12, %.cast.i ; [#uses = 2]
  %14 = icmp eq %std.container.dlist.BaseNode* %pr.032.i, %4 ; [#uses = 2]
  %brmerge33.i = or i1 %13, %14                   ; [#uses = 1]
  %.mux34.i = and i1 %13, %14                     ; [#uses = 1]
  br i1 %brmerge33.i, label %_D3std9container5dlist__T5DListTiZQj__T8opEqualsZQkMxFNaNbNiNfKxSQClQCkQCd__TQCaTiZQCgZb.exit, label %endif11.i

if4.i:                                            ; preds = %endif2.i
  %15 = icmp eq %std.container.dlist.BaseNode* %12, %.cast.i ; [#uses = 1]
  br label %_D3std9container5dlist__T5DListTiZQj__T8opEqualsZQkMxFNaNbNiNfKxSQClQCkQCd__TQCaTiZQCgZb.exit

endif11.i:                                        ; preds = %forcond.preheader.i, %endif14.i
  %pr.036.i = phi %std.container.dlist.BaseNode* [ %pr.0.i, %endif14.i ], [ %pr.032.i, %forcond.preheader.i ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %pl.035.i = phi %std.container.dlist.BaseNode* [ %23, %endif14.i ], [ %12, %forcond.preheader.i ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %16 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %pl.035.i, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %17 = bitcast %std.container.dlist.BaseNode* %16 to i32* ; [#uses = 1]
  %18 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %pr.036.i, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %19 = bitcast %std.container.dlist.BaseNode* %18 to i32* ; [#uses = 1]
  %20 = load i32, i32* %17, align 4               ; [#uses = 1]
  %21 = load i32, i32* %19, align 4               ; [#uses = 1]
  %.not.i = icmp eq i32 %20, %21                  ; [#uses = 1]
  br i1 %.not.i, label %endif14.i, label %_D3std9container5dlist__T5DListTiZQj__T8opEqualsZQkMxFNaNbNiNfKxSQClQCkQCd__TQCaTiZQCgZb.exit

endif14.i:                                        ; preds = %endif11.i
  %22 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %pl.035.i, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %23 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %22, align 8 ; [#uses = 2]
  %pr.0.in.i = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %pr.036.i, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %pr.0.i = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %pr.0.in.i, align 8 ; [#uses = 2]
  %24 = icmp eq %std.container.dlist.BaseNode* %23, %.cast.i ; [#uses = 2]
  %25 = icmp eq %std.container.dlist.BaseNode* %pr.0.i, %4 ; [#uses = 2]
  %brmerge.i = or i1 %24, %25                     ; [#uses = 1]
  br i1 %brmerge.i, label %forcond.if.loopexit_crit_edge.i, label %endif11.i

_D3std9container5dlist__T5DListTiZQj__T8opEqualsZQkMxFNaNbNiNfKxSQClQCkQCd__TQCaTiZQCgZb.exit: ; preds = %endif11.i, %0, %forcond.if.loopexit_crit_edge.i, %forcond.preheader.i, %if4.i, %if1.i
  %26 = phi i1 [ %9, %if1.i ], [ %15, %if4.i ], [ true, %0 ], [ %.mux.le.i, %forcond.if.loopexit_crit_edge.i ], [ %.mux34.i, %forcond.preheader.i ], [ false, %endif11.i ] ; [#uses = 1, type = i1]
  ret i1 %26
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr zeroext i1 @_D3std9container5dlist__T5DListTiZQj__T8opEqualsZQkMxFNaNbNiNfKxSQClQCkQCd__TQCaTiZQCgZb(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList"* dereferenceable(8) %rhs) local_unnamed_addr #1 {
  %1 = bitcast %"std.container.dlist.DList!int.DList"* %.this_arg to i64* ; [#uses = 1]
  %2 = load i64, i64* %1, align 1                 ; [#uses = 2]
  %.cast = inttoptr i64 %2 to %std.container.dlist.BaseNode* ; [#uses = 5]
  %3 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %rhs, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 7]
  %5 = icmp eq %std.container.dlist.BaseNode* %4, %.cast ; [#uses = 1]
  br i1 %5, label %if, label %endif

forcond.if.loopexit_crit_edge:                    ; preds = %endif14
  %.mux.le = and i1 %24, %25                      ; [#uses = 1]
  br label %if

if:                                               ; preds = %endif11, %forcond.preheader, %forcond.if.loopexit_crit_edge, %0
  %merge = phi i1 [ true, %0 ], [ %.mux.le, %forcond.if.loopexit_crit_edge ], [ %.mux34, %forcond.preheader ], [ false, %endif11 ] ; [#uses = 1, type = i1]
  ret i1 %merge

endif:                                            ; preds = %0
  %6 = icmp eq i64 %2, 0                          ; [#uses = 1]
  br i1 %6, label %if1, label %endif2

if1:                                              ; preds = %endif
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %8 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %7, align 8 ; [#uses = 1]
  %9 = icmp eq %std.container.dlist.BaseNode* %4, %8 ; [#uses = 1]
  ret i1 %9

endif2:                                           ; preds = %endif
  %10 = icmp eq %std.container.dlist.BaseNode* %4, null ; [#uses = 1]
  %11 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %.cast, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %12 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %11, align 8 ; [#uses = 3]
  br i1 %10, label %if4, label %forcond.preheader

forcond.preheader:                                ; preds = %endif2
  %pr.0.in31 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %4, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %pr.032 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %pr.0.in31, align 8 ; [#uses = 2]
  %13 = icmp eq %std.container.dlist.BaseNode* %12, %.cast ; [#uses = 2]
  %14 = icmp eq %std.container.dlist.BaseNode* %pr.032, %4 ; [#uses = 2]
  %brmerge33 = or i1 %13, %14                     ; [#uses = 1]
  %.mux34 = and i1 %13, %14                       ; [#uses = 1]
  br i1 %brmerge33, label %if, label %endif11

if4:                                              ; preds = %endif2
  %15 = icmp eq %std.container.dlist.BaseNode* %12, %.cast ; [#uses = 1]
  ret i1 %15

endif11:                                          ; preds = %forcond.preheader, %endif14
  %pr.036 = phi %std.container.dlist.BaseNode* [ %pr.0, %endif14 ], [ %pr.032, %forcond.preheader ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %pl.035 = phi %std.container.dlist.BaseNode* [ %23, %endif14 ], [ %12, %forcond.preheader ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %16 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %pl.035, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %17 = bitcast %std.container.dlist.BaseNode* %16 to i32* ; [#uses = 1]
  %18 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %pr.036, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %19 = bitcast %std.container.dlist.BaseNode* %18 to i32* ; [#uses = 1]
  %20 = load i32, i32* %17, align 4               ; [#uses = 1]
  %21 = load i32, i32* %19, align 4               ; [#uses = 1]
  %.not = icmp eq i32 %20, %21                    ; [#uses = 1]
  br i1 %.not, label %endif14, label %if

endif14:                                          ; preds = %endif11
  %22 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %pl.035, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %23 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %22, align 8 ; [#uses = 2]
  %pr.0.in = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %pr.036, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %pr.0 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %pr.0.in, align 8 ; [#uses = 2]
  %24 = icmp eq %std.container.dlist.BaseNode* %23, %.cast ; [#uses = 2]
  %25 = icmp eq %std.container.dlist.BaseNode* %pr.0, %4 ; [#uses = 2]
  %brmerge = or i1 %24, %25                       ; [#uses = 1]
  br i1 %brmerge, label %forcond.if.loopexit_crit_edge, label %endif11
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32* @_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5frontMFNaNbNcNdNfZi(%"std.range.Take!(Range).Take"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %2 = load i64, i64* %1, align 8                 ; [#uses = 1]
  %3 = icmp eq i64 %2, 0                          ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit

_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 2, type = %std.container.dlist.DRange*]
  %5 = tail call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %4) #3 ; [#uses = 1]
  br i1 %5, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  %6 = tail call %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange5frontMFNaNbNdNjNfZPSQBwQBvQBo8BaseNode(%std.container.dlist.DRange* nonnull %4) #3 ; [#uses = 1]
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %6, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %8 = bitcast %std.container.dlist.BaseNode* %7 to i32* ; [#uses = 1]
  ret i32* %8

assertFailed:                                     ; preds = %0, %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 54, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.28, i32 0, i32 0) }, { i64, i8* } { i64 59, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.29, i32 0, i32 0) }, i32 2249) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu4saveMFNaNbNdNiNfZSQDdQDc__TQCzTQCxZQDh(%"std.range.Take!(Range).Take"* noalias sret align 8 %.sret_arg, %"std.range.Take!(Range).Take"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = bitcast %"std.range.Take!(Range).Take"* %.this_arg to <2 x i64>* ; [#uses = 1]
  %2 = load <2 x i64>, <2 x i64>* %1, align 8     ; [#uses = 1]
  %3 = bitcast %"std.range.Take!(Range).Take"* %.sret_arg to <2 x i64>* ; [#uses = 1]
  store <2 x i64> %2, <2 x i64>* %3, align 8
  %4 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.sret_arg, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %5 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %6 = load i64, i64* %5, align 8                 ; [#uses = 1]
  store i64 %6, i64* %4, align 8
  ret void
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5frontMFNaNbNdNfiZv(%"std.range.Take!(Range).Take"* nonnull %.this_arg, i32 %v_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %2 = load i64, i64* %1, align 8                 ; [#uses = 1]
  %3 = icmp eq i64 %2, 0                          ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit

_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 2, type = %std.container.dlist.DRange*]
  %5 = tail call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %4) #3 ; [#uses = 1]
  br i1 %5, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  %6 = tail call %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange5frontMFNaNbNdNjNfZPSQBwQBvQBo8BaseNode(%std.container.dlist.DRange* nonnull %4) #3 ; [#uses = 1]
  %7 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %6, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %8 = bitcast %std.container.dlist.BaseNode* %7 to i32* ; [#uses = 1]
  store i32 %v_arg, i32* %8, align 4
  ret void

assertFailed:                                     ; preds = %0, %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 58, i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.31, i32 0, i32 0) }, { i64, i8* } { i64 59, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.29, i32 0, i32 0) }, i32 2276) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu9moveFrontMFNaNbNfZi(%"std.range.Take!(Range).Take"* nonnull %.this_arg) local_unnamed_addr #1 {
  %r.i = alloca <2 x i64>, align 16               ; [#uses = 3, size/byte = 16]
  %1 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %2 = load i64, i64* %1, align 8                 ; [#uses = 1]
  %3 = icmp eq i64 %2, 0                          ; [#uses = 1]
  br i1 %3, label %assertFailed, label %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit

_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit: ; preds = %0
  %4 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %5 = tail call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %4) #3 ; [#uses = 1]
  br i1 %5, label %assertFailed, label %assertPassed

assertPassed:                                     ; preds = %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  %6 = bitcast %"std.range.Take!(Range).Take"* %.this_arg to <2 x i64>* ; [#uses = 1]
  %7 = load <2 x i64>, <2 x i64>* %6, align 8     ; [#uses = 1]
  %8 = bitcast <2 x i64>* %r.i to i8*             ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %8)
  store <2 x i64> %7, <2 x i64>* %r.i, align 16
  %9 = bitcast <2 x i64>* %r.i to %std.container.dlist.DRange* ; [#uses = 1]
  %10 = call %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange5frontMFNaNbNdNjNfZPSQBwQBvQBo8BaseNode(%std.container.dlist.DRange* nonnull %9) #3 ; [#uses = 1]
  %11 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %10, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %12 = bitcast %std.container.dlist.BaseNode* %11 to i32* ; [#uses = 1]
  %13 = load i32, i32* %12, align 4               ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %8)
  ret i32 %13

assertFailed:                                     ; preds = %0, %_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu5emptyMFNaNbNdNfZb.exit
  tail call void @_d_assert_msg({ i64, i8* } { i64 53, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.32, i32 0, i32 0) }, { i64, i8* } { i64 59, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.29, i32 0, i32 0) }, i32 2289) #2
  unreachable
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std5range10primitives__T9moveFrontTSQBl9container5dlist__T5DListTiZQj5RangeZQCaFNaNbNfQBzZi(%"std.container.dlist.DList!int.DList.Range" %r_arg) local_unnamed_addr #1 {
  %r = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 3, size/byte = 16]
  %r_arg.fca.0.0.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %r_arg, 0, 0 ; [#uses = 1]
  %r_arg.fca.0.0.gep = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %r_arg.fca.0.0.extract, %std.container.dlist.BaseNode** %r_arg.fca.0.0.gep, align 8
  %r_arg.fca.0.1.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %r_arg, 0, 1 ; [#uses = 1]
  %r_arg.fca.0.1.gep = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %r_arg.fca.0.1.extract, %std.container.dlist.BaseNode** %r_arg.fca.0.1.gep, align 8
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %r, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %2 = call %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange5frontMFNaNbNdNjNfZPSQBwQBvQBo8BaseNode(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  %3 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %4 = bitcast %std.container.dlist.BaseNode* %3 to i32* ; [#uses = 1]
  %5 = load i32, i32* %4, align 4                 ; [#uses = 1]
  ret i32 %5
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std5range__T4TakeTSQu9container5dlist__T5DListTiZQj5RangeZQBu9maxLengthMxFNaNbNdNiNfZm(%"std.range.Take!(Range).Take"* nonnull %.this_arg) local_unnamed_addr #1 {
  %1 = getelementptr inbounds %"std.range.Take!(Range).Take", %"std.range.Take!(Range).Take"* %.this_arg, i64 0, i32 1 ; [#uses = 1, type = i64*]
  %2 = load i64, i64* %1, align 8                 ; [#uses = 1]
  ret i64 %2
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBz9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDkMFNaNfQDgZm(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* noalias nocapture align 8 %stuff) local_unnamed_addr #1 {
  %result.i = alloca i64, align 8                 ; [#uses = 4, size/byte = 8]
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 2]
  %.not.i = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not.i, label %endif.i, label %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit

endif.i:                                          ; preds = %0
  %.gc_struct.i = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 7]
  %3 = getelementptr inbounds i8, i8* %.gc_struct.i, i64 8 ; [#uses = 1, type = i8*]
  %4 = bitcast %"std.container.dlist.DList!int.DList"* %.this_arg to i8** ; [#uses = 1]
  %5 = getelementptr inbounds i8, i8* %.gc_struct.i, i64 16 ; [#uses = 1, type = i8*]
  %6 = bitcast i8* %5 to i64*                     ; [#uses = 1]
  store i64 0, i64* %6, align 8
  store i8* %.gc_struct.i, i8** %4, align 8
  %7 = bitcast i8* %.gc_struct.i to i8**          ; [#uses = 1]
  store i8* %.gc_struct.i, i8** %7, align 8
  %8 = bitcast i8* %3 to i8**                     ; [#uses = 1]
  store i8* %.gc_struct.i, i8** %8, align 8
  %9 = bitcast i8* %.gc_struct.i to %std.container.dlist.BaseNode* ; [#uses = 1]
  br label %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit

_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit: ; preds = %0, %endif.i
  %10 = phi %std.container.dlist.BaseNode* [ %2, %0 ], [ %9, %endif.i ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %11 = bitcast i64* %result.i to i8*             ; [#uses = 3]
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %11)
  %12 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %stuff, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.len.i.i.i = load i64, i64* %12, align 8       ; [#uses = 1]
  %.not.i.i.i = icmp eq i64 %.len.i.i.i, 0        ; [#uses = 1]
  br i1 %.not.i.i.i, label %if.i1, label %endif.i2

if.i1:                                            ; preds = %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11)
  br label %_D3std9container5dlist__T5DListTiZQj__T16insertBeforeNodeTSQCf9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDqMFNaNfPSQFmQFlQFe8BaseNodeKQEbZm.exit

endif.i2:                                         ; preds = %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit
  store i64 0, i64* %result.i, align 8
  %13 = call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj__T11createRangeTSQCa9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDlMFNaNfKQDhKmZSQFnQFmQFf__TQFcTiZQFi5Range(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64* nonnull dereferenceable(8) %result.i, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* nonnull dereferenceable(24) %stuff) #3 ; [#uses = 2]
  %.fca.0.0.extract.i = extractvalue %"std.container.dlist.DList!int.DList.Range" %13, 0, 0 ; [#uses = 1]
  %.fca.0.1.extract.i = extractvalue %"std.container.dlist.DList!int.DList.Range" %13, 0, 1 ; [#uses = 1]
  %14 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %10, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %15 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %14, align 8 ; [#uses = 1]
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %.fca.0.0.extract.i, %std.container.dlist.BaseNode* %15) #3
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %10, %std.container.dlist.BaseNode* %.fca.0.1.extract.i) #3
  %16 = load i64, i64* %result.i, align 8         ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11)
  br label %_D3std9container5dlist__T5DListTiZQj__T16insertBeforeNodeTSQCf9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDqMFNaNfPSQFmQFlQFe8BaseNodeKQEbZm.exit

_D3std9container5dlist__T5DListTiZQj__T16insertBeforeNodeTSQCf9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDqMFNaNfPSQFmQFlQFe8BaseNodeKQEbZm.exit: ; preds = %endif.i2, %if.i1
  %17 = phi i64 [ 0, %if.i1 ], [ %16, %endif.i2 ] ; [#uses = 1, type = i64]
  ret i64 %17
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std9container5dlist__T5DListTiZQj__T16insertBeforeNodeTSQCf9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDqMFNaNfPSQFmQFlQFe8BaseNodeKQEbZm(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* dereferenceable(24) %stuff, %std.container.dlist.BaseNode* %n_arg) local_unnamed_addr #1 {
  %result = alloca i64, align 8                   ; [#uses = 3, size/byte = 8]
  %1 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %stuff, i64 0, i32 0, i32 0 ; [#uses = 1, type = i64*]
  %.len.i.i = load i64, i64* %1, align 8          ; [#uses = 1]
  %.not.i.i = icmp eq i64 %.len.i.i, 0            ; [#uses = 1]
  br i1 %.not.i.i, label %if, label %endif

if:                                               ; preds = %0
  ret i64 0

endif:                                            ; preds = %0
  store i64 0, i64* %result, align 8
  %2 = call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj__T11createRangeTSQCa9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDlMFNaNfKQDhKmZSQFnQFmQFf__TQFcTiZQFi5Range(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64* nonnull dereferenceable(8) %result, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* nonnull dereferenceable(24) %stuff) #3 ; [#uses = 2]
  %.fca.0.0.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %2, 0, 0 ; [#uses = 1]
  %.fca.0.1.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %2, 0, 1 ; [#uses = 1]
  %3 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %n_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %4 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %3, align 8 ; [#uses = 1]
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %.fca.0.0.extract, %std.container.dlist.BaseNode* %4) #3
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %n_arg, %std.container.dlist.BaseNode* %.fca.0.1.extract) #3
  %5 = load i64, i64* %result, align 8            ; [#uses = 1]
  ret i64 %5
}

; [#uses = 4]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj__T11createRangeTSQCa9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDlMFNaNfKQDhKmZSQFnQFmQFf__TQFcTiZQFi5Range(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64* dereferenceable(8) %result, %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* dereferenceable(24) %stuff) local_unnamed_addr #1 {
  %a.i.i7 = alloca { i64, i8* }, align 8          ; [#uses = 4, size/byte = 16]
  %i.i.i8 = alloca i64, align 8                   ; [#uses = 3, size/byte = 8]
  %a.i.i = alloca { i64, i8* }, align 8           ; [#uses = 4, size/byte = 16]
  %i.i.i = alloca i64, align 8                    ; [#uses = 3, size/byte = 8]
  %.structliteral = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %1 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %stuff, i64 0, i32 0, i32 0 ; [#uses = 5, type = i64*]
  %.len.i.i.i = load i64, i64* %1, align 8        ; [#uses = 2]
  %.not.i.i.i = icmp eq i64 %.len.i.i.i, 0        ; [#uses = 1]
  br i1 %.not.i.i.i, label %assertFailed.i, label %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit

assertFailed.i:                                   ; preds = %0
  tail call void @_d_assert_msg({ i64, i8* } { i64 46, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.14, i32 0, i32 0) }, { i64, i8* } { i64 65, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.13, i32 0, i32 0) }, i32 626) #2
  unreachable

_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit: ; preds = %0
  %2 = getelementptr inbounds %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult", %"source.main.__lambda1.MapResult!(__lambda1, string).MapResult"* %stuff, i64 0, i32 0, i32 1 ; [#uses = 5, type = i8**]
  %3 = bitcast i8** %2 to i64*                    ; [#uses = 1]
  %.ptr1.i = load i64, i64* %3, align 8           ; [#uses = 1]
  %4 = bitcast { i64, i8* }* %a.i.i to i8*        ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %4)
  %5 = bitcast i64* %i.i.i to i8*                 ; [#uses = 2]
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %5)
  %a_arg.fca.0.gep.i.i = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a.i.i, i64 0, i32 0 ; [#uses = 1, type = i64*]
  store i64 %.len.i.i.i, i64* %a_arg.fca.0.gep.i.i, align 8
  %a_arg.fca.1.gep.i.i = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a.i.i, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %6 = bitcast i8** %a_arg.fca.1.gep.i.i to i64*  ; [#uses = 1]
  store i64 %.ptr1.i, i64* %6, align 8
  store i64 0, i64* %i.i.i, align 8
  %7 = call i32 @_D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDhFNaNeKQnKmZw(i64* nonnull dereferenceable(8) %i.i.i, { i64, i8* }* nonnull dereferenceable(16) %a.i.i) #3 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %4)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5)
  %8 = add i32 %7, -97                            ; [#uses = 1]
  %.gc_struct.i = call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 4]
  %9 = getelementptr inbounds i8, i8* %.gc_struct.i, i64 16 ; [#uses = 1, type = i8*]
  %10 = bitcast i8* %9 to i32*                    ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %.gc_struct.i, i8 0, i64 16, i1 false)
  store i32 %8, i32* %10, align 4
  %.padding.i = getelementptr inbounds i8, i8* %.gc_struct.i, i64 20 ; [#uses = 1, type = i8*]
  %11 = bitcast i8* %.padding.i to i32*           ; [#uses = 1]
  store i32 0, i32* %11, align 1
  %12 = bitcast i8* %.gc_struct.i to %std.container.dlist.BaseNode* ; [#uses = 3]
  %13 = load i64, i64* %result, align 8           ; [#uses = 1]
  %14 = add i64 %13, 1                            ; [#uses = 1]
  store i64 %14, i64* %result, align 8
  %.len.i.i.i4 = load i64, i64* %1, align 8       ; [#uses = 6]
  %.not.i.i.i5 = icmp eq i64 %.len.i.i.i4, 0      ; [#uses = 1]
  br i1 %.not.i.i.i5, label %assertFailed.i6, label %bounds.ok.i.i

bounds.ok.i.i:                                    ; preds = %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit
  %.ptr.i.i = load i8*, i8** %2, align 8          ; [#uses = 2]
  %15 = load i8, i8* %.ptr.i.i, align 1           ; [#uses = 2]
  %16 = icmp ult i8 %15, -64                      ; [#uses = 1]
  br i1 %16, label %condend.i.i, label %condfalse.i.i

condfalse.i.i:                                    ; preds = %bounds.ok.i.i
  %17 = zext i8 %15 to i64                        ; [#uses = 1]
  %18 = add nuw nsw i64 %17, 4294967104           ; [#uses = 1]
  %19 = and i64 %18, 4294967295                   ; [#uses = 1]
  %20 = getelementptr inbounds [64 x i8], [64 x i8]* @.constarray, i64 0, i64 %19 ; [#uses = 1, type = i8*]
  %21 = load i8, i8* %20, align 1                 ; [#uses = 1]
  %22 = zext i8 %21 to i32                        ; [#uses = 1]
  br label %condend.i.i

condend.i.i:                                      ; preds = %condfalse.i.i, %bounds.ok.i.i
  %condtmp.0.sroa.speculated.i.i = phi i32 [ %22, %condfalse.i.i ], [ 1, %bounds.ok.i.i ] ; [#uses = 2, type = i32]
  %23 = zext i32 %condtmp.0.sroa.speculated.i.i to i64 ; [#uses = 1]
  %24 = icmp ugt i64 %.len.i.i.i4, %23            ; [#uses = 1]
  %25 = trunc i64 %.len.i.i.i4 to i32             ; [#uses = 1]
  %spec.select.i.i = select i1 %24, i32 %condtmp.0.sroa.speculated.i.i, i32 %25 ; [#uses = 1]
  %26 = sext i32 %spec.select.i.i to i64          ; [#uses = 4]
  %bounds.cmp.lo.not.i.i = icmp ult i64 %.len.i.i.i4, %26 ; [#uses = 1]
  br i1 %bounds.cmp.lo.not.i.i, label %bounds.fail8.i.i, label %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit

bounds.fail8.i.i:                                 ; preds = %condend.i.i
  call void @_d_arraybounds_slice({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.6, i32 0, i32 0) }, i32 2313, i64 %26, i64 %.len.i.i.i4, i64 0) #2
  unreachable

assertFailed.i6:                                  ; preds = %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit
  call void @_d_assert_msg({ i64, i8* } { i64 36, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i32 0, i32 0) }, { i64, i8* } { i64 65, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.13, i32 0, i32 0) }, i32 620) #2
  unreachable

_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit: ; preds = %condend.i.i
  %lowerbound.i.i = getelementptr inbounds i8, i8* %.ptr.i.i, i64 %26 ; [#uses = 2, type = i8*]
  %27 = sub i64 %.len.i.i.i4, %26                 ; [#uses = 3]
  store i64 %27, i64* %1, align 8
  store i8* %lowerbound.i.i, i8** %2, align 8
  %.not.i.i35 = icmp eq i64 %27, 0                ; [#uses = 1]
  br i1 %.not.i.i35, label %endfor, label %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15.lr.ph

_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15.lr.ph: ; preds = %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit
  %28 = bitcast { i64, i8* }* %a.i.i7 to i8*      ; [#uses = 2]
  %29 = bitcast i64* %i.i.i8 to i8*               ; [#uses = 2]
  %a_arg.fca.0.gep.i.i12 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a.i.i7, i64 0, i32 0 ; [#uses = 1, type = i64*]
  %a_arg.fca.1.gep.i.i13 = getelementptr inbounds { i64, i8* }, { i64, i8* }* %a.i.i7, i64 0, i32 1 ; [#uses = 1, type = i8**]
  %30 = bitcast i8** %a_arg.fca.1.gep.i.i13 to i64* ; [#uses = 1]
  br label %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15

_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15: ; preds = %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15.lr.ph, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit30
  %.ptr1.i11.in = phi i8* [ %lowerbound.i.i, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15.lr.ph ], [ %lowerbound.i.i28, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit30 ] ; [#uses = 1, type = i8*]
  %last.037 = phi %std.container.dlist.BaseNode* [ %12, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15.lr.ph ], [ %39, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit30 ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %storemerge3136 = phi i64 [ %27, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15.lr.ph ], [ %56, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit30 ] ; [#uses = 1, type = i64]
  %.ptr1.i11 = ptrtoint i8* %.ptr1.i11.in to i64  ; [#uses = 1]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %28)
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %29)
  store i64 %storemerge3136, i64* %a_arg.fca.0.gep.i.i12, align 8
  store i64 %.ptr1.i11, i64* %30, align 8
  store i64 0, i64* %i.i.i8, align 8
  %31 = call i32 @_D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDhFNaNeKQnKmZw(i64* nonnull dereferenceable(8) %i.i.i8, { i64, i8* }* nonnull dereferenceable(16) %a.i.i7) #3 ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %28)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %29)
  %32 = add i32 %31, -97                          ; [#uses = 1]
  %.gc_struct.i16 = call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 7]
  %33 = bitcast i8* %.gc_struct.i16 to %std.container.dlist.BaseNode** ; [#uses = 1]
  store %std.container.dlist.BaseNode* %last.037, %std.container.dlist.BaseNode** %33, align 8
  %34 = getelementptr inbounds i8, i8* %.gc_struct.i16, i64 8 ; [#uses = 1, type = i8*]
  %35 = bitcast i8* %34 to %std.container.dlist.BaseNode** ; [#uses = 1]
  store %std.container.dlist.BaseNode* null, %std.container.dlist.BaseNode** %35, align 8
  %36 = getelementptr inbounds i8, i8* %.gc_struct.i16, i64 16 ; [#uses = 1, type = i8*]
  %37 = bitcast i8* %36 to i32*                   ; [#uses = 1]
  store i32 %32, i32* %37, align 4
  %.padding.i17 = getelementptr inbounds i8, i8* %.gc_struct.i16, i64 20 ; [#uses = 1, type = i8*]
  %38 = bitcast i8* %.padding.i17 to i32*         ; [#uses = 1]
  store i32 0, i32* %38, align 1
  %39 = bitcast i8* %.gc_struct.i16 to %std.container.dlist.BaseNode* ; [#uses = 1]
  %40 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %last.037, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %41 = bitcast %std.container.dlist.BaseNode** %40 to i8** ; [#uses = 1]
  store i8* %.gc_struct.i16, i8** %41, align 8
  %42 = load i64, i64* %result, align 8           ; [#uses = 1]
  %43 = add i64 %42, 1                            ; [#uses = 1]
  store i64 %43, i64* %result, align 8
  %.len.i.i.i18 = load i64, i64* %1, align 8      ; [#uses = 6]
  %.not.i.i.i19 = icmp eq i64 %.len.i.i.i18, 0    ; [#uses = 1]
  br i1 %.not.i.i.i19, label %assertFailed.i29, label %bounds.ok.i.i21

bounds.ok.i.i21:                                  ; preds = %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15
  %.ptr.i.i20 = load i8*, i8** %2, align 8        ; [#uses = 2]
  %44 = load i8, i8* %.ptr.i.i20, align 1         ; [#uses = 2]
  %45 = icmp ult i8 %44, -64                      ; [#uses = 1]
  br i1 %45, label %condend.i.i26, label %condfalse.i.i22

condfalse.i.i22:                                  ; preds = %bounds.ok.i.i21
  %46 = zext i8 %44 to i64                        ; [#uses = 1]
  %47 = add nuw nsw i64 %46, 4294967104           ; [#uses = 1]
  %48 = and i64 %47, 4294967295                   ; [#uses = 1]
  %49 = getelementptr inbounds [64 x i8], [64 x i8]* @.constarray, i64 0, i64 %48 ; [#uses = 1, type = i8*]
  %50 = load i8, i8* %49, align 1                 ; [#uses = 1]
  %51 = zext i8 %50 to i32                        ; [#uses = 1]
  br label %condend.i.i26

condend.i.i26:                                    ; preds = %condfalse.i.i22, %bounds.ok.i.i21
  %condtmp.0.sroa.speculated.i.i23 = phi i32 [ %51, %condfalse.i.i22 ], [ 1, %bounds.ok.i.i21 ] ; [#uses = 2, type = i32]
  %52 = zext i32 %condtmp.0.sroa.speculated.i.i23 to i64 ; [#uses = 1]
  %53 = icmp ugt i64 %.len.i.i.i18, %52           ; [#uses = 1]
  %54 = trunc i64 %.len.i.i.i18 to i32            ; [#uses = 1]
  %spec.select.i.i24 = select i1 %53, i32 %condtmp.0.sroa.speculated.i.i23, i32 %54 ; [#uses = 1]
  %55 = sext i32 %spec.select.i.i24 to i64        ; [#uses = 4]
  %bounds.cmp.lo.not.i.i25 = icmp ult i64 %.len.i.i.i18, %55 ; [#uses = 1]
  br i1 %bounds.cmp.lo.not.i.i25, label %bounds.fail8.i.i27, label %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit30

bounds.fail8.i.i27:                               ; preds = %condend.i.i26
  call void @_d_arraybounds_slice({ i64, i8* } { i64 62, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.6, i32 0, i32 0) }, i32 2313, i64 %55, i64 %.len.i.i.i18, i64 0) #2
  unreachable

assertFailed.i29:                                 ; preds = %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15
  call void @_d_assert_msg({ i64, i8* } { i64 36, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i32 0, i32 0) }, { i64, i8* } { i64 65, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.13, i32 0, i32 0) }, i32 620) #2
  unreachable

_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit30: ; preds = %condend.i.i26
  %lowerbound.i.i28 = getelementptr inbounds i8, i8* %.ptr.i.i20, i64 %55 ; [#uses = 2, type = i8*]
  %56 = sub i64 %.len.i.i.i18, %55                ; [#uses = 3]
  store i64 %56, i64* %1, align 8
  store i8* %lowerbound.i.i28, i8** %2, align 8
  %.not.i.i = icmp eq i64 %56, 0                  ; [#uses = 1]
  br i1 %.not.i.i, label %endfor.loopexit, label %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs5frontMFNaNdNfZk.exit15

endfor.loopexit:                                  ; preds = %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit30
  %57 = bitcast i8* %.gc_struct.i16 to %std.container.dlist.BaseNode* ; [#uses = 1]
  br label %endfor

endfor:                                           ; preds = %endfor.loopexit, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit
  %last.0.lcssa = phi %std.container.dlist.BaseNode* [ %12, %_D3std9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBs8popFrontMFNaNbNiNfZv.exit ], [ %57, %endfor.loopexit ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %58 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %59 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %60 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %61 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %61, i8 0, i64 16, i1 false)
  %62 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %60, %std.container.dlist.BaseNode* %last.0.lcssa, %std.container.dlist.BaseNode* %12) #3 ; [#uses = 0]
  %.fca.0.0.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %58, align 8 ; [#uses = 1]
  %.fca.0.0.insert = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load, 0, 0 ; [#uses = 1]
  %.fca.0.1.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %59, align 8 ; [#uses = 1]
  %.fca.0.1.insert = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert, %std.container.dlist.BaseNode* %.fca.0.1.load, 0, 1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %.fca.0.1.insert
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %std.container.dlist.BaseNode* @_D3std9container5dlist__T5DListTiZQj__T10createNodeTkZQpFNaNbNfkPSQCmQClQCe8BaseNodeQuZQx(%std.container.dlist.BaseNode* %next_arg, %std.container.dlist.BaseNode* %prev_arg, i32 %arg_arg) local_unnamed_addr #1 {
  %.gc_struct = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 5]
  %1 = bitcast i8* %.gc_struct to %std.container.dlist.BaseNode** ; [#uses = 1]
  store %std.container.dlist.BaseNode* %prev_arg, %std.container.dlist.BaseNode** %1, align 8
  %2 = getelementptr inbounds i8, i8* %.gc_struct, i64 8 ; [#uses = 1, type = i8*]
  %3 = bitcast i8* %2 to %std.container.dlist.BaseNode** ; [#uses = 1]
  store %std.container.dlist.BaseNode* %next_arg, %std.container.dlist.BaseNode** %3, align 8
  %4 = getelementptr inbounds i8, i8* %.gc_struct, i64 16 ; [#uses = 1, type = i8*]
  %5 = bitcast i8* %4 to i32*                     ; [#uses = 1]
  store i32 %arg_arg, i32* %5, align 4
  %.padding = getelementptr inbounds i8, i8* %.gc_struct, i64 20 ; [#uses = 1, type = i8*]
  %6 = bitcast i8* %.padding to i32*              ; [#uses = 1]
  store i32 0, i32* %6, align 1
  %7 = bitcast i8* %.gc_struct to %std.container.dlist.BaseNode* ; [#uses = 1]
  ret %std.container.dlist.BaseNode* %7
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr i64 @_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBzQByQBr__TQBoTiZQBu5RangeZQBqMFNaNbNfQBoZm(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range" %stuff_arg) local_unnamed_addr #1 {
  %result.i = alloca i64, align 8                 ; [#uses = 4, size/byte = 8]
  %stuff = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %stuff_arg.fca.0.0.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %stuff_arg, 0, 0 ; [#uses = 1]
  %stuff_arg.fca.0.0.gep = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %stuff, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %stuff_arg.fca.0.0.extract, %std.container.dlist.BaseNode** %stuff_arg.fca.0.0.gep, align 8
  %stuff_arg.fca.0.1.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %stuff_arg, 0, 1 ; [#uses = 1]
  %stuff_arg.fca.0.1.gep = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %stuff, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  store %std.container.dlist.BaseNode* %stuff_arg.fca.0.1.extract, %std.container.dlist.BaseNode** %stuff_arg.fca.0.1.gep, align 8
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList", %"std.container.dlist.DList!int.DList"* %.this_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %2 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %1, align 8 ; [#uses = 2]
  %.not.i = icmp eq %std.container.dlist.BaseNode* %2, null ; [#uses = 1]
  br i1 %.not.i, label %endif.i, label %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit

endif.i:                                          ; preds = %0
  %.gc_struct.i = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 7]
  %3 = getelementptr inbounds i8, i8* %.gc_struct.i, i64 8 ; [#uses = 1, type = i8*]
  %4 = bitcast %"std.container.dlist.DList!int.DList"* %.this_arg to i8** ; [#uses = 1]
  %5 = getelementptr inbounds i8, i8* %.gc_struct.i, i64 16 ; [#uses = 1, type = i8*]
  %6 = bitcast i8* %5 to i64*                     ; [#uses = 1]
  store i64 0, i64* %6, align 8
  store i8* %.gc_struct.i, i8** %4, align 8
  %7 = bitcast i8* %.gc_struct.i to i8**          ; [#uses = 1]
  store i8* %.gc_struct.i, i8** %7, align 8
  %8 = bitcast i8* %3 to i8**                     ; [#uses = 1]
  store i8* %.gc_struct.i, i8** %8, align 8
  %9 = bitcast i8* %.gc_struct.i to %std.container.dlist.BaseNode* ; [#uses = 1]
  br label %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit

_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit: ; preds = %0, %endif.i
  %10 = phi %std.container.dlist.BaseNode* [ %2, %0 ], [ %9, %endif.i ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %11 = bitcast i64* %result.i to i8*             ; [#uses = 3]
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %11)
  %12 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %stuff, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %13 = call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %12) #3 ; [#uses = 1]
  br i1 %13, label %if.i1, label %endif.i2

if.i1:                                            ; preds = %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11)
  br label %_D3std9container5dlist__T5DListTiZQj__T16insertBeforeNodeTSQCfQCeQBx__TQBuTiZQCa5RangeZQBwMFNaNbNfPSQDuQDtQDm8BaseNodeKQCjZm.exit

endif.i2:                                         ; preds = %_D3std9container5dlist__T5DListTiZQj10initializeMFNaNbNfZv.exit
  store i64 0, i64* %result.i, align 8
  %14 = call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj__T11createRangeTSQCaQBzQBs__TQBpTiZQBv5RangeZQBrMFNaNbNfKQBpKmZQBv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64* nonnull dereferenceable(8) %result.i, %"std.container.dlist.DList!int.DList.Range"* nonnull dereferenceable(16) %stuff) #3 ; [#uses = 2]
  %.fca.0.0.extract.i = extractvalue %"std.container.dlist.DList!int.DList.Range" %14, 0, 0 ; [#uses = 1]
  %.fca.0.1.extract.i = extractvalue %"std.container.dlist.DList!int.DList.Range" %14, 0, 1 ; [#uses = 1]
  %15 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %10, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %16 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %15, align 8 ; [#uses = 1]
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %.fca.0.0.extract.i, %std.container.dlist.BaseNode* %16) #3
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %10, %std.container.dlist.BaseNode* %.fca.0.1.extract.i) #3
  %17 = load i64, i64* %result.i, align 8         ; [#uses = 1]
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11)
  br label %_D3std9container5dlist__T5DListTiZQj__T16insertBeforeNodeTSQCfQCeQBx__TQBuTiZQCa5RangeZQBwMFNaNbNfPSQDuQDtQDm8BaseNodeKQCjZm.exit

_D3std9container5dlist__T5DListTiZQj__T16insertBeforeNodeTSQCfQCeQBx__TQBuTiZQCa5RangeZQBwMFNaNbNfPSQDuQDtQDm8BaseNodeKQCjZm.exit: ; preds = %endif.i2, %if.i1
  %18 = phi i64 [ 0, %if.i1 ], [ %17, %endif.i2 ] ; [#uses = 1, type = i64]
  ret i64 %18
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i64 @_D3std9container5dlist__T5DListTiZQj__T16insertBeforeNodeTSQCfQCeQBx__TQBuTiZQCa5RangeZQBwMFNaNbNfPSQDuQDtQDm8BaseNodeKQCjZm(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, %"std.container.dlist.DList!int.DList.Range"* dereferenceable(16) %stuff, %std.container.dlist.BaseNode* %n_arg) local_unnamed_addr #1 {
  %result = alloca i64, align 8                   ; [#uses = 3, size/byte = 8]
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %stuff, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %2 = tail call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  br i1 %2, label %if, label %endif

if:                                               ; preds = %0
  ret i64 0

endif:                                            ; preds = %0
  store i64 0, i64* %result, align 8
  %3 = call %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj__T11createRangeTSQCaQBzQBs__TQBpTiZQBv5RangeZQBrMFNaNbNfKQBpKmZQBv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64* nonnull dereferenceable(8) %result, %"std.container.dlist.DList!int.DList.Range"* nonnull dereferenceable(16) %stuff) #3 ; [#uses = 2]
  %.fca.0.0.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %3, 0, 0 ; [#uses = 1]
  %.fca.0.1.extract = extractvalue %"std.container.dlist.DList!int.DList.Range" %3, 0, 1 ; [#uses = 1]
  %4 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %n_arg, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %5 = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %4, align 8 ; [#uses = 1]
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %.fca.0.0.extract, %std.container.dlist.BaseNode* %5) #3
  call void @_D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv(%std.container.dlist.BaseNode* %n_arg, %std.container.dlist.BaseNode* %.fca.0.1.extract) #3
  %6 = load i64, i64* %result, align 8            ; [#uses = 1]
  ret i64 %6
}

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr %"std.container.dlist.DList!int.DList.Range" @_D3std9container5dlist__T5DListTiZQj__T11createRangeTSQCaQBzQBs__TQBpTiZQBv5RangeZQBrMFNaNbNfKQBpKmZQBv(%"std.container.dlist.DList!int.DList"* nonnull %.this_arg, i64* dereferenceable(8) %result, %"std.container.dlist.DList!int.DList.Range"* dereferenceable(16) %stuff) local_unnamed_addr #1 {
  %.structliteral = alloca %"std.container.dlist.DList!int.DList.Range", align 8 ; [#uses = 4, size/byte = 16]
  %1 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %stuff, i64 0, i32 0 ; [#uses = 6, type = %std.container.dlist.DRange*]
  %2 = tail call %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange5frontMFNaNbNdNjNfZPSQBwQBvQBo8BaseNode(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  %3 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %2, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %4 = bitcast %std.container.dlist.BaseNode* %3 to i32* ; [#uses = 1]
  %.gc_struct.i = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 4]
  %5 = getelementptr inbounds i8, i8* %.gc_struct.i, i64 16 ; [#uses = 1, type = i8*]
  %6 = bitcast i8* %5 to i32*                     ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %.gc_struct.i, i8 0, i64 16, i1 false)
  %7 = load i32, i32* %4, align 4                 ; [#uses = 1]
  store i32 %7, i32* %6, align 4
  %.padding.i = getelementptr inbounds i8, i8* %.gc_struct.i, i64 20 ; [#uses = 1, type = i8*]
  %8 = bitcast i8* %.padding.i to i32*            ; [#uses = 1]
  store i32 0, i32* %8, align 1
  %9 = bitcast i8* %.gc_struct.i to %std.container.dlist.BaseNode* ; [#uses = 3]
  %10 = load i64, i64* %result, align 8           ; [#uses = 1]
  %11 = add i64 %10, 1                            ; [#uses = 1]
  store i64 %11, i64* %result, align 8
  tail call void @_D3std9container5dlist6DRange8popFrontMFNaNbNlNfZv(%std.container.dlist.DRange* nonnull %1) #3
  %12 = tail call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  br i1 %12, label %endfor, label %forbody

forbody:                                          ; preds = %0, %forbody
  %last.06 = phi %std.container.dlist.BaseNode* [ %23, %forbody ], [ %9, %0 ] ; [#uses = 2, type = %std.container.dlist.BaseNode*]
  %13 = tail call %std.container.dlist.BaseNode* @_D3std9container5dlist6DRange5frontMFNaNbNdNjNfZPSQBwQBvQBo8BaseNode(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  %14 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %13, i64 1 ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %15 = bitcast %std.container.dlist.BaseNode* %14 to i32* ; [#uses = 1]
  %.gc_struct.i4 = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 7]
  %16 = bitcast i8* %.gc_struct.i4 to %std.container.dlist.BaseNode** ; [#uses = 1]
  store %std.container.dlist.BaseNode* %last.06, %std.container.dlist.BaseNode** %16, align 8
  %17 = getelementptr inbounds i8, i8* %.gc_struct.i4, i64 8 ; [#uses = 1, type = i8*]
  %18 = bitcast i8* %17 to %std.container.dlist.BaseNode** ; [#uses = 1]
  store %std.container.dlist.BaseNode* null, %std.container.dlist.BaseNode** %18, align 8
  %19 = getelementptr inbounds i8, i8* %.gc_struct.i4, i64 16 ; [#uses = 1, type = i8*]
  %20 = bitcast i8* %19 to i32*                   ; [#uses = 1]
  %21 = load i32, i32* %15, align 4               ; [#uses = 1]
  store i32 %21, i32* %20, align 4
  %.padding.i5 = getelementptr inbounds i8, i8* %.gc_struct.i4, i64 20 ; [#uses = 1, type = i8*]
  %22 = bitcast i8* %.padding.i5 to i32*          ; [#uses = 1]
  store i32 0, i32* %22, align 1
  %23 = bitcast i8* %.gc_struct.i4 to %std.container.dlist.BaseNode* ; [#uses = 1]
  %24 = getelementptr inbounds %std.container.dlist.BaseNode, %std.container.dlist.BaseNode* %last.06, i64 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %25 = bitcast %std.container.dlist.BaseNode** %24 to i8** ; [#uses = 1]
  store i8* %.gc_struct.i4, i8** %25, align 8
  %26 = load i64, i64* %result, align 8           ; [#uses = 1]
  %27 = add i64 %26, 1                            ; [#uses = 1]
  store i64 %27, i64* %result, align 8
  tail call void @_D3std9container5dlist6DRange8popFrontMFNaNbNlNfZv(%std.container.dlist.DRange* nonnull %1) #3
  %28 = tail call zeroext i1 @_D3std9container5dlist6DRange5emptyMxFNaNbNdNlNfZb(%std.container.dlist.DRange* nonnull %1) #3 ; [#uses = 1]
  br i1 %28, label %endfor.loopexit, label %forbody

endfor.loopexit:                                  ; preds = %forbody
  %29 = bitcast i8* %.gc_struct.i4 to %std.container.dlist.BaseNode* ; [#uses = 1]
  br label %endfor

endfor:                                           ; preds = %endfor.loopexit, %0
  %last.0.lcssa = phi %std.container.dlist.BaseNode* [ %9, %0 ], [ %29, %endfor.loopexit ] ; [#uses = 1, type = %std.container.dlist.BaseNode*]
  %30 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 0 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %31 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0, i32 1 ; [#uses = 1, type = %std.container.dlist.BaseNode**]
  %32 = getelementptr inbounds %"std.container.dlist.DList!int.DList.Range", %"std.container.dlist.DList!int.DList.Range"* %.structliteral, i64 0, i32 0 ; [#uses = 1, type = %std.container.dlist.DRange*]
  %33 = bitcast %"std.container.dlist.DList!int.DList.Range"* %.structliteral to i8* ; [#uses = 1]
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %33, i8 0, i64 16, i1 false)
  %34 = call %std.container.dlist.DRange* @_D3std9container5dlist6DRange6__ctorMFNaNbNcNfPSQBuQBtQBm8BaseNodeQuZSQCqQCpQCiQCf(%std.container.dlist.DRange* nonnull returned %32, %std.container.dlist.BaseNode* %last.0.lcssa, %std.container.dlist.BaseNode* %9) #3 ; [#uses = 0]
  %.fca.0.0.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %30, align 8 ; [#uses = 1]
  %.fca.0.0.insert = insertvalue %"std.container.dlist.DList!int.DList.Range" undef, %std.container.dlist.BaseNode* %.fca.0.0.load, 0, 0 ; [#uses = 1]
  %.fca.0.1.load = load %std.container.dlist.BaseNode*, %std.container.dlist.BaseNode** %31, align 8 ; [#uses = 1]
  %.fca.0.1.insert = insertvalue %"std.container.dlist.DList!int.DList.Range" %.fca.0.0.insert, %std.container.dlist.BaseNode* %.fca.0.1.load, 0, 1 ; [#uses = 1]
  ret %"std.container.dlist.DList!int.DList.Range" %.fca.0.1.insert
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr %std.container.dlist.BaseNode* @_D3std9container5dlist__T5DListTiZQj__T10createNodeTiZQpFNaNbNfKiPSQCnQCmQCf8BaseNodeQuZQx(%std.container.dlist.BaseNode* %next_arg, %std.container.dlist.BaseNode* %prev_arg, i32* dereferenceable(4) %arg) local_unnamed_addr #1 {
  %.gc_struct = tail call noalias i8* @_d_newitemT(%object.TypeInfo* bitcast (%object.TypeInfo_Struct* @_D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ to %object.TypeInfo*)) #5 ; [#uses = 5]
  %1 = bitcast i8* %.gc_struct to %std.container.dlist.BaseNode** ; [#uses = 1]
  store %std.container.dlist.BaseNode* %prev_arg, %std.container.dlist.BaseNode** %1, align 8
  %2 = getelementptr inbounds i8, i8* %.gc_struct, i64 8 ; [#uses = 1, type = i8*]
  %3 = bitcast i8* %2 to %std.container.dlist.BaseNode** ; [#uses = 1]
  store %std.container.dlist.BaseNode* %next_arg, %std.container.dlist.BaseNode** %3, align 8
  %4 = getelementptr inbounds i8, i8* %.gc_struct, i64 16 ; [#uses = 1, type = i8*]
  %5 = bitcast i8* %4 to i32*                     ; [#uses = 1]
  %6 = load i32, i32* %arg, align 4               ; [#uses = 1]
  store i32 %6, i32* %5, align 4
  %.padding = getelementptr inbounds i8, i8* %.gc_struct, i64 20 ; [#uses = 1, type = i8*]
  %7 = bitcast i8* %.padding to i32*              ; [#uses = 1]
  store i32 0, i32* %7, align 1
  %8 = bitcast i8* %.gc_struct to %std.container.dlist.BaseNode* ; [#uses = 1]
  ret %std.container.dlist.BaseNode* %8
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std9algorithm8mutation__T8moveImplTiZQmFNaNbNiNfKiZi(i32* dereferenceable(4) %source) local_unnamed_addr #1 {
  %1 = load i32, i32* %source, align 4            ; [#uses = 1]
  ret i32 %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std9algorithm8mutation__T15trustedMoveImplTiZQuFNaNbNiNeKiZi(i32* dereferenceable(4) %source) local_unnamed_addr #1 {
  %1 = load i32, i32* %source, align 4            ; [#uses = 1]
  ret i32 %1
}

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr void @_D3std9algorithm8mutation__T15moveEmplaceImplTiZQuFNaNbNiNfKiKiZv(i32* dereferenceable(4) %source, i32* dereferenceable(4) %target) local_unnamed_addr #1 {
  %1 = load i32, i32* %source, align 4            ; [#uses = 1]
  store i32 %1, i32* %target, align 4
  ret void
}

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

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

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

; [#uses = 2]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File__T5writeTyaTaZQmMFNfyaaZv(%std.stdio.File* nonnull %.this_arg, i8 zeroext %_param_1_arg, i8 zeroext %_param_0_arg) local_unnamed_addr #1 personality i32 (i32, i32, i64, i8*, i8*)* @_d_eh_personality {
unrolledstmt:
  %w = alloca %std.stdio.File.LockingTextWriter, align 8 ; [#uses = 7, size/byte = 48]
  call void @_D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter(%std.stdio.File.LockingTextWriter* noalias nonnull sret align 8 %w, %std.stdio.File* nonnull %.this_arg) #3
  invoke void @_D3std5stdio4File17LockingTextWriter__T3putTyaZQiMFNfyaZv(%std.stdio.File.LockingTextWriter* nonnull %w, i8 zeroext %_param_0_arg) #3
          to label %unrolledstmt1 unwind label %landingPad2

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

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

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

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

postinvoke8:                                      ; preds = %catch.std.utf.UTFException6
  unreachable

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File17LockingTextWriter__T3putTyaZQiMFNfyaZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, i8 zeroext %c_arg) local_unnamed_addr #1 {
  %numCodeUnits.i = alloca i64, align 8           ; [#uses = 3, size/byte = 8]
  %str = alloca { i64, i8* }, align 8             ; [#uses = 3, size/byte = 16]
  %wbuf = alloca [1 x i32], align 4               ; [#uses = 2, size/byte = 4]
  tail call void @_D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg) #3
  %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) #3 ; [#uses = 1]
  %6 = tail call i32 @fputc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %5) #3 ; [#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) #3 ; [#uses = 1]
  %9 = tail call i32 @fputwc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %8) #3 ; [#uses = 0]
  br label %endif

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

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

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

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

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

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

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

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

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

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

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

bounds.fail10:                                    ; preds = %if7
  tail call void @_d_arraybounds_slice({ i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.3, i32 0, i32 0) }, i32 3305, i64 0, i64 %23, i64 4) #2
  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.3, i32 0, i32 0) }, i32 3301, i64 %15, i64 4) #2
  unreachable

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

; [#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) #3 ; [#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 #10

; [#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) #3 ; [#uses = 1]
  ret i32 %1
}

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

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

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

; [#uses = 0]
; 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) #3 ; [#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.8, i32 0, i32 0) }, i32 403, i64 0, i64 0) #2
  unreachable
}

; [#uses = 0]
; 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) #3 ; [#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:
  %.lval_copy_for_ImplicitByvalRewrite.i = alloca { i64, i8* }, align 8 ; [#uses = 4, size/byte = 16]
  %arrayliteral.i = alloca [1 x i32], align 4     ; [#uses = 2, size/byte = 4]
  %0 = getelementptr inbounds [1 x i32], [1 x i32]* %buf, i64 0, i64 0 ; [#uses = 2, type = i32*]
  store i32 65535, i32* %0, align 4
  %1 = and i32 %c_arg, -2048                      ; [#uses = 1]
  %2 = icmp eq i32 %1, 55296                      ; [#uses = 1]
  %3 = icmp ugt i32 %c_arg, 1114111               ; [#uses = 1]
  %ororval = or i1 %3, %2                         ; [#uses = 1]
  br i1 %ororval, label %if, label %else

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

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

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

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

; [#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 = 3]
declare i32 @_D3std3utf10strideImplFNaNeamZk(i64, i8 zeroext) local_unnamed_addr #3

; [#uses = 3]
; 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.8, i32 0, i32 0) }, i32 1292, i64 0, i64 0) #2
  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) #3 ; [#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.8, i32 0, i32 0) }, i32 1299, i64 %11, i64 %.len14, i64 %.len14) #2
  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) #3 ; [#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.8, i32 0, i32 0) }, i32 1285) #2
  unreachable

assertFailed:                                     ; preds = %0
  tail call void @_d_assert({ i64, i8* } { i64 49, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.8, i32 0, i32 0) }, i32 1281) #2
  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.0, 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.0, %nest.decodeImpl.0* %.frame, i64 0, i32 0 ; [#uses = 1, type = i8**]
  %length = getelementptr inbounds %nest.decodeImpl.0, %nest.decodeImpl.0* %.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.0* %.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) #2
  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.0* %.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) #2
  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.0* %.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) #2
  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.0* %.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) #2
  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.0* %.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) #2
  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.0* %.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) #2
  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.0* %.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) #2
  unreachable

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

if25:                                             ; preds = %endif23
  %54 = bitcast %nest.decodeImpl.0* %.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) #2
  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.0* %.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) #2
  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.0* %.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) #2
  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.0* %.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) #2
  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.0* %.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) #2
  unreachable

endif41:                                          ; preds = %endif38
  ret i32 %72

unrolledend:                                      ; preds = %endif33
  %83 = bitcast %nest.decodeImpl.0* %.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) #2
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr 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.8, i32 0, i32 0) }, { i64, i8* }* nonnull byval align 8 %.lval_copy_for_ImplicitByvalRewrite) #3 ; [#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) #2
  unreachable
}

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

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

; [#uses = 3]
; Function Attrs: uwtable
define weak_odr void @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg, i8 zeroext %c_arg) local_unnamed_addr #1 {
  %numCodeUnits.i = alloca i64, align 8           ; [#uses = 3, size/byte = 8]
  %str = alloca { i64, i8* }, align 8             ; [#uses = 3, size/byte = 16]
  %wbuf = alloca [1 x i32], align 4               ; [#uses = 2, size/byte = 4]
  tail call void @_D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv(%std.stdio.File.LockingTextWriter* nonnull %.this_arg) #3
  %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) #3 ; [#uses = 1]
  %6 = tail call i32 @fputc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %5) #3 ; [#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) #3 ; [#uses = 1]
  %9 = tail call i32 @fputwc_unlocked(i32 %4, %core.stdc.stdio._IO_FILE* %8) #3 ; [#uses = 0]
  br label %endif

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

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

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

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

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

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

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

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

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

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

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

bounds.fail10:                                    ; preds = %if7
  tail call void @_d_arraybounds_slice({ i64, i8* } { i64 51, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.3, i32 0, i32 0) }, i32 3305, i64 0, i64 %23, i64 4) #2
  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.3, i32 0, i32 0) }, i32 3301, i64 %15, i64 4) #2
  unreachable

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

; [#uses = 0]
; Function Attrs: uwtable
define weak_odr i32 @_D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfaZ12trustedFPUTCFNbNiNeiPS4core4stdcQDe8_IO_FILEZi(%core.stdc.stdio._IO_FILE* %h_arg, i32 %ch_arg) local_unnamed_addr #1 {
  %1 = tail call i32 @fputc_unlocked(i32 %ch_arg, %core.stdc.stdio._IO_FILE* %h_arg) #3 ; [#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) #3 ; [#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

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

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

attributes #0 = { uwtable "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16,+cx16" }
attributes #1 = { uwtable "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #2 = { cold noreturn uwtable }
attributes #3 = { "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #4 = { noreturn uwtable "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #5 = { uwtable }
attributes #6 = { argmemonly nounwind willreturn }
attributes #7 = { argmemonly nounwind willreturn writeonly }
attributes #8 = { nounwind uwtable }
attributes #9 = { nounwind readnone }
attributes #10 = { nofree nounwind "frame-pointer"="none" "target-cpu"="x86-64" "target-features"="+cx16" }
attributes #11 = { 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._D12TypeInfo_Axa6__initZ = !{!2}
!llvm.ldc.typeinfo._D12TypeInfo_Aya6__initZ = !{!2}
!llvm.ldc.typeinfo._D3std3utf12UTFException7__ClassZ = !{!3}
!llvm.ldc.classinfo._D3std3utf12UTFException7__ClassZ = !{!4}
!llvm.ldc.typeinfo._D13TypeInfo_xAya6__initZ = !{!2}
!llvm.ldc.typeinfo._D12TypeInfo_xPv6__initZ = !{!5}
!llvm.ldc.typeinfo._D12TypeInfo_Pxv6__initZ = !{!5}
!llvm.ldc.typeinfo._D52TypeInfo_S3std9container5dlist__T5DListTiZQj7PayNode6__initZ = !{!6}
!llvm.ldc.typeinfo._D45TypeInfo_AS3std9container5dlist__T5DListTiZQj6__initZ = !{!7}
!llvm.ldc.typeinfo._D44TypeInfo_S3std9container5dlist__T5DListTiZQj6__initZ = !{!8}
!llvm.ldc.typeinfo._D10TypeInfo_l6__initZ = !{!9}
!llvm.ident = !{!10}

!0 = !{%object.Exception* undef}
!1 = !{%object.Exception undef, i1 false}
!2 = !{{ i64, i8* } undef}
!3 = !{%std.utf.UTFException* undef}
!4 = !{%std.utf.UTFException undef, i1 false}
!5 = !{i8* undef}
!6 = !{%"std.container.dlist.DList!int.DList.PayNode" undef}
!7 = !{{ i64, %"std.container.dlist.DList!int.DList"* } undef}
!8 = !{%"std.container.dlist.DList!int.DList" undef}
!9 = !{i64 undef}
!10 = !{!"ldc version 1.28.0"}
!11 = !{!12}
!12 = distinct !{!12, !13, !"_D6source4mainFZ9__lambda1FZ__T9__lambda2TS3std9algorithm9iteration__T9MapResultSQDbQCxFZQCvFZQDaTAyaZQBgZQCxFNaNfQCuZSQCy9container5dlist__T5DListTiZQj: %str"}
!13 = distinct !{!13, !"_D6source4mainFZ9__lambda1FZ__T9__lambda2TS3std9algorithm9iteration__T9MapResultSQDbQCxFZQCvFZQDaTAyaZQBgZQCxFNaNfQCuZSQCy9container5dlist__T5DListTiZQj"}
!14 = !{!15, !12}
!15 = distinct !{!15, !16, !"_D3std9container5dlist__T5DListTiZQj__T6__ctorTSQBu9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDfMFNaNcNfQDiZSQFgQFfQEy__TQEvTiZQFb: %stuff"}
!16 = distinct !{!16, !"_D3std9container5dlist__T5DListTiZQj__T6__ctorTSQBu9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDfMFNaNcNfQDiZSQFgQFfQEy__TQEvTiZQFb"}
!17 = !{!18, !15, !12}
!18 = distinct !{!18, !19, !"_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBz9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDkMFNaNfQDgZm: %stuff"}
!19 = distinct !{!19, !"_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBz9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDkMFNaNfQDgZm"}
!20 = !{!21}
!21 = distinct !{!21, !22, !"_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBz9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDkMFNaNfQDgZm: %stuff"}
!22 = distinct !{!22, !"_D3std9container5dlist__T5DListTiZQj__T10insertBackTSQBz9algorithm9iteration__T9MapResultS6source4mainFZ9__lambda1FZQmTAyaZQBsZQDkMFNaNfQDgZm"}
