import sequtils, strutils, algorithm, math
proc scanf(fmt: cstring){.header: "<stdio.h>", varargs.}
proc scan(): int = scanf("%lld", addr result)
when (NimMajor, NimMinor) <= (0, 18): import future else: import sugar

let a = @[1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1,
    15, 2, 2, 5, 4, 1, 4, 1, 51]

echo(a[scan()-1])
; ModuleID = 'source.nim'
source_filename = "source.nim"
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-unknown-linux-gnu"

%TNimType = type { i64, i64, i8, i8, ptr, ptr, ptr, ptr, ptr }
%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w = type { %tyObject_GcStack__L2cWzO4Sp6sT9c4tVOapzJA, i64, i64, %tyObject_CellSeq__s3VRa074yn4plb2eltQ1kw, %tyObject_CellSeq__s3VRa074yn4plb2eltQ1kw, %tyObject_CellSeq__s3VRa074yn4plb2eltQ1kw, i64, %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, %tyObject_GcStat__9bncanb6bxclvOnZsxJa9bhw, %tyObject_CellSet__YFwFoEuumoodPVhKCpK9b4g, %tyObject_CellSeq__s3VRa074yn4plb2eltQ1kw, i64 }
%tyObject_GcStack__L2cWzO4Sp6sT9c4tVOapzJA = type { ptr }
%tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug = type { i64, i64, [256 x ptr], i32, [24 x i32], [24 x [32 x ptr]], ptr, i64, i64, i64, i64, i64, %tyObject_IntSet__fGgcY9c5sTHqI8pjneleQiQ, ptr, ptr, ptr, ptr, i8, i8, i64, %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, %tyObject_HeapLinks__j59cWIu26x552M6CdkxYGCA }
%tyObject_IntSet__fGgcY9c5sTHqI8pjneleQiQ = type { [256 x ptr] }
%tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ = type { [2 x ptr], i64, i64, i64 }
%tyObject_HeapLinks__j59cWIu26x552M6CdkxYGCA = type { i64, [30 x %tyTuple__0oqOrJyfU7ORMIilZiy9aPg], ptr }
%tyTuple__0oqOrJyfU7ORMIilZiy9aPg = type { ptr, i64 }
%tyObject_GcStat__9bncanb6bxclvOnZsxJa9bhw = type { i64, i64, i64, i64, i64, i64, i64 }
%tyObject_CellSet__YFwFoEuumoodPVhKCpK9b4g = type { i64, i64, ptr, ptr }
%tyObject_CellSeq__s3VRa074yn4plb2eltQ1kw = type { i64, i64, ptr }
%TNimNode = type { i8, i64, ptr, ptr, i64, ptr }
%Exception = type { %RootObj, ptr, ptr, ptr, ptr, ptr }
%RootObj = type { ptr }
%tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA = type { ptr, i64, ptr }
%TGenericSeq = type { i64, i64 }
%tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg = type { %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr, ptr, ptr, i64, i64, [8 x i8], [0 x i8] }
%tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA = type { i64, i64 }
%tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw = type { %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr, ptr, [0 x i8] }
%tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ = type { ptr, i64, [8 x i64] }
%tyObject_LLChunk__9bzHzMJMXlkE6oU2AbeKJsg = type { i64, i64, ptr }
%tyObject_Cell__nD1WneZb8PfM7AKNjgr63Q = type { i64, ptr }
%jmp_buf = type { [8 x i64], i32, i32, [16 x i64] }
%tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg = type { ptr, i64 }
%tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg = type { ptr, i64, [4 x i64] }
%NimStringDesc = type { %TGenericSeq, [0 x i8] }
%tyObject_NlvmException__h59a1ij9cwOonlSvYG4fVp5g = type { ptr, ptr, i64, i64, ptr, ptr, %tyObject_UnwindException__RXcliHkeBezPNnnxL9cEnrQ }
%tyObject_UnwindException__RXcliHkeBezPNnnxL9cEnrQ = type { i64, ptr, i64, i64 }
%tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw = type { i64, ptr, i32 }
%tySequence__qwqHTkRvwhrRyENtudHQ7g = type { %TGenericSeq, [0 x i64] }

@nim_program_result = common local_unnamed_addr global i64 0
@strDesc__D0UzA4zsDu5tgpJQ9a9clXPg = private global %TNimType { i64 8, i64 0, i8 28, i8 2, ptr null, ptr null, ptr null, ptr null, ptr null }
@gch__IcYaEuuWivYAS86vFMTS3Q = private global %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w zeroinitializer
@fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ = private unnamed_addr constant [256 x i8] c"\FF\00\01\01\02\02\02\02\03\03\03\03\03\03\03\03\04\04\04\04\04\04\04\04\04\04\04\04\04\04\04\04\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07"
@stderr = external local_unnamed_addr global ptr
@.cstr.out_of_memory_ = private constant [15 x i8] c"out of memory\0A\00"
@.typeinfo.tyRef__yntUFkUrESG8ORSElDDY0g = private constant %TNimType { i64 8, i64 8, i8 22, i8 0, ptr @.typeinfo.tyObject_OverflowDefect__j0N3G7lAxC9aYszSi2tJSuA, ptr null, ptr null, ptr @Marker_tyRef__yntUFkUrESG8ORSElDDY0g, ptr null }
@.typeinfo.tyObject_OverflowDefect__j0N3G7lAxC9aYszSi2tJSuA = private constant %TNimType { i64 48, i64 8, i8 17, i8 0, ptr @.typeinfo.tyObject_ArithmeticDefect__PgAABlZemCt2sHKQFPzBHw, ptr @.nodeinfo.tyObject_OverflowDefect__j0N3G7lAxC9aYszSi2tJSuA, ptr null, ptr null, ptr null }
@.typeinfo.tyObject_ArithmeticDefect__PgAABlZemCt2sHKQFPzBHw = private constant %TNimType { i64 48, i64 8, i8 17, i8 0, ptr @.typeinfo.tyObject_Defect__FxgyJTcNnF80TDlmZsgHHg, ptr @.nodeinfo.tyObject_ArithmeticDefect__PgAABlZemCt2sHKQFPzBHw, ptr null, ptr null, ptr null }
@.typeinfo.tyObject_Defect__FxgyJTcNnF80TDlmZsgHHg = private constant %TNimType { i64 48, i64 8, i8 17, i8 0, ptr @.typeinfo.Exception, ptr @.nodeinfo.tyObject_Defect__FxgyJTcNnF80TDlmZsgHHg, ptr null, ptr null, ptr null }
@.typeinfo.Exception = private constant %TNimType { i64 48, i64 8, i8 17, i8 0, ptr @.typeinfo.RootObj, ptr @.nodeinfo.Exception, ptr null, ptr null, ptr null }
@.typeinfo.RootObj = private constant %TNimType { i64 8, i64 8, i8 17, i8 1, ptr null, ptr @.nodeinfo.RootObj, ptr null, ptr null, ptr null }
@.nodeinfo.RootObj = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 0, ptr null }
@.nodeinfo.Exception = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 5, ptr @.nodes.1 }
@.nodeinfo.Exception.0 = private constant %TNimNode { i8 1, i64 ptrtoint (ptr getelementptr (%Exception, ptr null, i32 0, i32 1) to i64), ptr @.typeinfo.tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw, ptr @.nimnode.slot.parent, i64 0, ptr null }
@.typeinfo.tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw = private constant %TNimType { i64 8, i64 8, i8 22, i8 0, ptr @.typeinfo.Exception, ptr null, ptr null, ptr @Marker_tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw, ptr null }
@.nimnode.slot.parent = private unnamed_addr constant [7 x i8] c"parent\00", align 1
@.nodeinfo.Exception.1 = private constant %TNimNode { i8 1, i64 ptrtoint (ptr getelementptr (%Exception, ptr null, i32 0, i32 2) to i64), ptr @.typeinfo.tyCstring__S9agCYBinaYZnGWcjTdxclg, ptr @.nimnode.slot.name, i64 0, ptr null }
@.typeinfo.tyCstring__S9agCYBinaYZnGWcjTdxclg = private constant %TNimType { i64 8, i64 8, i8 29, i8 3, ptr null, ptr null, ptr null, ptr null, ptr null }
@.nimnode.slot.name = private unnamed_addr constant [5 x i8] c"name\00", align 1
@.nodeinfo.Exception.2 = private constant %TNimNode { i8 1, i64 ptrtoint (ptr getelementptr (%Exception, ptr null, i32 0, i32 3) to i64), ptr @.typeinfo.tyString__77mFvmsOLKik79ci2hXkHEg, ptr @.nimnode.slot.msg, i64 0, ptr null }
@.typeinfo.tyString__77mFvmsOLKik79ci2hXkHEg = private constant %TNimType { i64 8, i64 8, i8 28, i8 2, ptr null, ptr null, ptr null, ptr null, ptr null }
@.nimnode.slot.msg = private unnamed_addr constant [4 x i8] c"msg\00", align 1
@.nodeinfo.Exception.3 = private constant %TNimNode { i8 1, i64 ptrtoint (ptr getelementptr (%Exception, ptr null, i32 0, i32 4) to i64), ptr @.typeinfo.tySequence__p5fQJJ2fzImS5UoW39bqEdA, ptr @.nimnode.slot.trace, i64 0, ptr null }
@.typeinfo.tySequence__p5fQJJ2fzImS5UoW39bqEdA = private constant %TNimType { i64 8, i64 8, i8 24, i8 2, ptr @.typeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA, ptr null, ptr null, ptr @Marker_tySequence__p5fQJJ2fzImS5UoW39bqEdA, ptr null }
@.typeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA = private constant %TNimType { i64 24, i64 8, i8 18, i8 3, ptr null, ptr @.nodeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA, ptr null, ptr null, ptr null }
@.nodeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 3, ptr @.nodes }
@.nodeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA.0 = private constant %TNimNode { i8 1, i64 0, ptr @.typeinfo.tyCstring__S9agCYBinaYZnGWcjTdxclg, ptr @.nimnode.slot.procname, i64 0, ptr null }
@.nimnode.slot.procname = private unnamed_addr constant [9 x i8] c"procname\00", align 1
@.nodeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA.1 = private constant %TNimNode { i8 1, i64 ptrtoint (ptr getelementptr (%tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA, ptr null, i32 0, i32 1) to i64), ptr @.typeinfo.tyInt__rR5Bzr1D5krxoo1NcNyeMA, ptr @.nimnode.slot.line, i64 0, ptr null }
@.typeinfo.tyInt__rR5Bzr1D5krxoo1NcNyeMA = private constant %TNimType { i64 8, i64 8, i8 31, i8 3, ptr null, ptr null, ptr null, ptr null, ptr null }
@.nimnode.slot.line = private unnamed_addr constant [5 x i8] c"line\00", align 1
@.nodeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA.2 = private constant %TNimNode { i8 1, i64 ptrtoint (ptr getelementptr (%tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA, ptr null, i32 0, i32 2) to i64), ptr @.typeinfo.tyCstring__S9agCYBinaYZnGWcjTdxclg, ptr @.nimnode.slot.filename, i64 0, ptr null }
@.nimnode.slot.filename = private unnamed_addr constant [9 x i8] c"filename\00", align 1
@.nodes = private constant [3 x ptr] [ptr @.nodeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA.0, ptr @.nodeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA.1, ptr @.nodeinfo.tyObject_StackTraceEntry__w7UiH3C64UobsEGwcrJgaA.2]
@.nimnode.slot.trace = private unnamed_addr constant [6 x i8] c"trace\00", align 1
@.nodeinfo.Exception.4 = private constant %TNimNode { i8 1, i64 ptrtoint (ptr getelementptr (%Exception, ptr null, i32 0, i32 5) to i64), ptr @.typeinfo.tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw, ptr @.nimnode.slot.up, i64 0, ptr null }
@.nimnode.slot.up = private unnamed_addr constant [3 x i8] c"up\00", align 1
@.nodes.1 = private constant [5 x ptr] [ptr @.nodeinfo.Exception.0, ptr @.nodeinfo.Exception.1, ptr @.nodeinfo.Exception.2, ptr @.nodeinfo.Exception.3, ptr @.nodeinfo.Exception.4]
@.nodeinfo.tyObject_Defect__FxgyJTcNnF80TDlmZsgHHg = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 0, ptr null }
@.nodeinfo.tyObject_ArithmeticDefect__PgAABlZemCt2sHKQFPzBHw = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 0, ptr null }
@.nodeinfo.tyObject_OverflowDefect__j0N3G7lAxC9aYszSi2tJSuA = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 0, ptr null }
@globalMarkersLen = common local_unnamed_addr global i64 0
@globalMarkers = common local_unnamed_addr global [3500 x ptr] zeroinitializer
@threadLocalMarkersLen = common local_unnamed_addr global i64 0
@threadLocalMarkers = common local_unnamed_addr global [3500 x ptr] zeroinitializer
@.cstr.OverflowDefect = private constant [15 x i8] c"OverflowDefect\00"
@.cstr.Error__unhandled.. = private constant [37 x i8] c"Error: unhandled exception: %s [%s]\0A\00"
@.cstr. = private constant [1 x i8] zeroinitializer
@.cstr.Error__cannot_ra.. = private constant [35 x i8] c"Error: cannot raise exception: %d\0A\00"
@.str.over__or_underfl.. = private constant { %TGenericSeq, [19 x i8] } { %TGenericSeq { i64 18, i64 4611686018427387922 }, [19 x i8] c"over- or underflow\00" }
@gHeapidGenerator__hd54mEUTGcVuZLChYgtR9bg = private unnamed_addr global i64 0
@.str.No_stack_traceba.. = private unnamed_addr constant { %TGenericSeq, [30 x i8] } { %TGenericSeq { i64 29, i64 4611686018427387933 }, [30 x i8] c"No stack traceback available\0A\00" }
@.typeinfo.tyRef__X2BdGhiRFy4qfb2g9bsE9c2A = private constant %TNimType { i64 8, i64 8, i8 22, i8 0, ptr @.typeinfo.tyObject_RangeDefect__PmGA4FtqvLVqPW54hgxtxg, ptr null, ptr null, ptr @Marker_tyRef__X2BdGhiRFy4qfb2g9bsE9c2A, ptr null }
@.typeinfo.tyObject_RangeDefect__PmGA4FtqvLVqPW54hgxtxg = private constant %TNimType { i64 48, i64 8, i8 17, i8 0, ptr @.typeinfo.tyObject_Defect__FxgyJTcNnF80TDlmZsgHHg, ptr @.nodeinfo.tyObject_RangeDefect__PmGA4FtqvLVqPW54hgxtxg, ptr null, ptr null, ptr null }
@.nodeinfo.tyObject_RangeDefect__PmGA4FtqvLVqPW54hgxtxg = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 0, ptr null }
@.cstr.RangeDefect = private constant [12 x i8] c"RangeDefect\00"
@.str.value_out_of_ran.. = private constant { %TGenericSeq, [21 x i8] } { %TGenericSeq { i64 20, i64 4611686018427387924 }, [21 x i8] c"value out of range: \00" }
@.str._notin_ = private constant { %TGenericSeq, [8 x i8] } { %TGenericSeq { i64 7, i64 4611686018427387911 }, [8 x i8] c" notin \00" }
@.str.____ = private constant { %TGenericSeq, [5 x i8] } { %TGenericSeq { i64 4, i64 4611686018427387908 }, [5 x i8] c" .. \00" }
@.typeinfo.tyRef__dRsREj7CggcR9csTz9bOCNCA = private constant %TNimType { i64 8, i64 8, i8 22, i8 0, ptr @.typeinfo.tyObject_IndexDefect__35Ucfd9bADPCsQJ5mN5DSSg, ptr null, ptr null, ptr @Marker_tyRef__dRsREj7CggcR9csTz9bOCNCA, ptr null }
@.typeinfo.tyObject_IndexDefect__35Ucfd9bADPCsQJ5mN5DSSg = private constant %TNimType { i64 48, i64 8, i8 17, i8 0, ptr @.typeinfo.tyObject_Defect__FxgyJTcNnF80TDlmZsgHHg, ptr @.nodeinfo.tyObject_IndexDefect__35Ucfd9bADPCsQJ5mN5DSSg, ptr null, ptr null, ptr null }
@.nodeinfo.tyObject_IndexDefect__35Ucfd9bADPCsQJ5mN5DSSg = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 0, ptr null }
@.cstr.IndexDefect = private constant [12 x i8] c"IndexDefect\00"
@.str.index_out_of_bou.. = private constant { %TGenericSeq, [44 x i8] } { %TGenericSeq { i64 43, i64 4611686018427387947 }, [44 x i8] c"index out of bounds, the container is empty\00" }
@.str.index_ = private unnamed_addr constant { %TGenericSeq, [7 x i8] } { %TGenericSeq { i64 6, i64 4611686018427387910 }, [7 x i8] c"index \00" }
@.str._not_in_0____ = private unnamed_addr constant { %TGenericSeq, [14 x i8] } { %TGenericSeq { i64 13, i64 4611686018427387917 }, [14 x i8] c" not in 0 .. \00" }
@digits100__cG5rbZgSpVFbRzcBsjlctg = private unnamed_addr constant [200 x i8] c"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899"
@.str.SIGINT__Interrup.. = private unnamed_addr constant { %TGenericSeq, [32 x i8] } { %TGenericSeq { i64 31, i64 4611686018427387935 }, [32 x i8] c"SIGINT: Interrupted by Ctrl-C.\0A\00" }
@.str.SIGSEGV__Illegal.. = private unnamed_addr constant { %TGenericSeq, [62 x i8] } { %TGenericSeq { i64 61, i64 4611686018427387965 }, [62 x i8] c"SIGSEGV: Illegal storage access. (Attempt to read from nil?)\0A\00" }
@.str.SIGABRT__Abnorma.. = private unnamed_addr constant { %TGenericSeq, [32 x i8] } { %TGenericSeq { i64 31, i64 4611686018427387935 }, [32 x i8] c"SIGABRT: Abnormal termination.\0A\00" }
@.str.SIGFPE__Arithmet.. = private unnamed_addr constant { %TGenericSeq, [27 x i8] } { %TGenericSeq { i64 26, i64 4611686018427387930 }, [27 x i8] c"SIGFPE: Arithmetic error.\0A\00" }
@.str.SIGILL__Illegal_.. = private unnamed_addr constant { %TGenericSeq, [28 x i8] } { %TGenericSeq { i64 27, i64 4611686018427387931 }, [28 x i8] c"SIGILL: Illegal operation.\0A\00" }
@.str.SIGPIPE__Pipe_cl.. = private unnamed_addr constant { %TGenericSeq, [23 x i8] } { %TGenericSeq { i64 22, i64 4611686018427387926 }, [23 x i8] c"SIGPIPE: Pipe closed.\0A\00" }
@.str.unknown_signal_ = private unnamed_addr constant { %TGenericSeq, [16 x i8] } { %TGenericSeq { i64 15, i64 4611686018427387919 }, [16 x i8] c"unknown signal\0A\00" }
@.typeinfo.tyRef__eaxM9cvk9cnRSzfgEze9a0FxA = private constant %TNimType { i64 8, i64 8, i8 22, i8 0, ptr @.typeinfo.tyObject_AssertionDefect__ULq7r1mfkZXU2bKYZ8cNuA, ptr null, ptr null, ptr @Marker_tyRef__eaxM9cvk9cnRSzfgEze9a0FxA, ptr null }
@.typeinfo.tyObject_AssertionDefect__ULq7r1mfkZXU2bKYZ8cNuA = private constant %TNimType { i64 48, i64 8, i8 17, i8 0, ptr @.typeinfo.tyObject_Defect__FxgyJTcNnF80TDlmZsgHHg, ptr @.nodeinfo.tyObject_AssertionDefect__ULq7r1mfkZXU2bKYZ8cNuA, ptr null, ptr null, ptr null }
@.nodeinfo.tyObject_AssertionDefect__ULq7r1mfkZXU2bKYZ8cNuA = private constant %TNimNode { i8 2, i64 0, ptr null, ptr null, i64 0, ptr null }
@.cstr.AssertionDefect = private constant [16 x i8] c"AssertionDefect\00"
@.str.API_usage_error_.. = private constant { %TGenericSeq, [60 x i8] } { %TGenericSeq { i64 59, i64 4611686018427387963 }, [60 x i8] c"API usage error: GC_enable called but GC is already enabled\00" }
@a__S9c9aTs9cATanGY4iXm1EOyGw = private global ptr null
@.seq.source.nim.6.9 = private unnamed_addr constant { %TGenericSeq, [32 x i64] } { %TGenericSeq { i64 32, i64 4611686018427387936 }, [32 x i64] [i64 1, i64 1, i64 1, i64 2, i64 1, i64 2, i64 1, i64 5, i64 2, i64 2, i64 1, i64 5, i64 1, i64 2, i64 1, i64 14, i64 1, i64 5, i64 1, i64 5, i64 2, i64 2, i64 1, i64 15, i64 2, i64 2, i64 5, i64 4, i64 1, i64 4, i64 1, i64 51] }
@.typeinfo.tySequence__qwqHTkRvwhrRyENtudHQ7g = private constant %TNimType { i64 8, i64 8, i8 24, i8 2, ptr @.typeinfo.tyInt__rR5Bzr1D5krxoo1NcNyeMA, ptr null, ptr null, ptr @Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g, ptr null }
@.cstr._lld = private constant [5 x i8] c"%lld\00"
@stdout = external local_unnamed_addr global ptr
@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @.nlvm.registrar, ptr null }]
@.cstr._GC__cannot_regi.. = private constant [64 x i8] c"[GC] cannot register global variable; too many global variables\00"

; Function Attrs: mustprogress nofree noinline nosync nounwind willreturn memory(readwrite, argmem: none, inaccessiblemem: none)
define internal fastcc void @nimGC_setStackBottom(ptr %theStackBottom) unnamed_addr #0 {
secAlloca:
  %load.gch__IcYaEuuWivYAS86vFMTS3Q = load ptr, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, align 16
  %icmp.IntEQ.gc_common.nim.291.24 = icmp eq ptr %load.gch__IcYaEuuWivYAS86vFMTS3Q, null
  br i1 %icmp.IntEQ.gc_common.nim.291.24, label %if.end.gc_common.nim.291.4.sink.split, label %if.false.gc_common.nim.291.4

if.false.gc_common.nim.291.4:                     ; preds = %secAlloca
  %icmp.IntEQ.gc_common.nim.297.24.not = icmp eq ptr %load.gch__IcYaEuuWivYAS86vFMTS3Q, %theStackBottom
  br i1 %icmp.IntEQ.gc_common.nim.297.24.not, label %if.end.gc_common.nim.291.4, label %if.true.gc_common.nim.291.43

if.true.gc_common.nim.291.43:                     ; preds = %if.false.gc_common.nim.291.4
  %cast.pi.gc_common.nim.298.14 = ptrtoint ptr %theStackBottom to i64
  %cast.pi.gc_common.nim.299.14 = ptrtoint ptr %load.gch__IcYaEuuWivYAS86vFMTS3Q to i64
  %IntSGE.gc_common.nim.304.44 = tail call i64 @llvm.smax.i64(i64 %cast.pi.gc_common.nim.298.14, i64 %cast.pi.gc_common.nim.299.14)
  %cast.ip.gc_common.nim.304.27 = inttoptr i64 %IntSGE.gc_common.nim.304.44 to ptr
  br label %if.end.gc_common.nim.291.4.sink.split

if.end.gc_common.nim.291.4.sink.split:            ; preds = %secAlloca, %if.true.gc_common.nim.291.43
  %cast.ip.gc_common.nim.304.27.sink = phi ptr [ %cast.ip.gc_common.nim.304.27, %if.true.gc_common.nim.291.43 ], [ %theStackBottom, %secAlloca ]
  store ptr %cast.ip.gc_common.nim.304.27.sink, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, align 16
  br label %if.end.gc_common.nim.291.4

if.end.gc_common.nim.291.4:                       ; preds = %if.end.gc_common.nim.291.4.sink.split, %if.false.gc_common.nim.291.4
  ret void
}

; Function Attrs: allockind("alloc,uninitialized") allocsize(1)
define linkonce_odr noalias nonnull align 16 ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr %a, i64 %requestedSize) local_unnamed_addr #1 {
secAlloca:
  %binop.Add.osalloc.nim.11.14.i = add i64 %requestedSize, 15
  %binop.And.osalloc.nim.11.23.i = and i64 %binop.Add.osalloc.nim.11.14.i, -16
  %icmp.IntSLE.alloc.nim.704.10 = icmp slt i64 %binop.And.osalloc.nim.11.23.i, 4033
  br i1 %icmp.IntSLE.alloc.nim.704.10, label %if.true.alloc.nim.704.2, label %if.false.alloc.nim.704.2

if.true.alloc.nim.704.2:                          ; preds = %secAlloca
  %binop.SDiv.alloc.nim.706.17 = ashr exact i64 %binop.And.osalloc.nim.11.23.i, 4
  %bra.arr.geparr.alloc.nim.707.29 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 2, i64 %binop.SDiv.alloc.nim.706.17
  %load.bra.arr.geparr.alloc.nim.707.29 = load ptr, ptr %bra.arr.geparr.alloc.nim.707.29, align 8
  %icmp.IntEQ.alloc.nim.708.9 = icmp eq ptr %load.bra.arr.geparr.alloc.nim.707.29, null
  br i1 %icmp.IntEQ.alloc.nim.708.9, label %if.true.alloc.nim.708.4, label %if.false.alloc.nim.708.4

if.true.alloc.nim.708.4:                          ; preds = %if.true.alloc.nim.704.2
  %call.res.alloc.nim.640.23.i = tail call fastcc ptr @getBigChunk__stlXHMKRKFIGOvq8t4ynRQ(ptr nonnull %a, i64 4096)
  %dot.f3.load.c.alloc.nim.710.6 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %call.res.alloc.nim.640.23.i, i64 0, i32 3
  store ptr null, ptr %dot.f3.load.c.alloc.nim.710.6, align 8
  %dot.f1.dot.f0.load.c.alloc.nim.712.6 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %call.res.alloc.nim.640.23.i, i64 0, i32 1
  store i64 %binop.And.osalloc.nim.11.23.i, ptr %dot.f1.dot.f0.load.c.alloc.nim.712.6, align 8
  %dot.f5.load.c.alloc.nim.713.6 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %call.res.alloc.nim.640.23.i, i64 0, i32 5
  store i64 %binop.And.osalloc.nim.11.23.i, ptr %dot.f5.load.c.alloc.nim.713.6, align 8
  %dot.f4.load.c.alloc.nim.714.6 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %call.res.alloc.nim.640.23.i, i64 0, i32 4
  %binop.Sub.alloc.nim.714.53 = sub i64 4032, %binop.And.osalloc.nim.11.23.i
  store i64 %binop.Sub.alloc.nim.714.53, ptr %dot.f4.load.c.alloc.nim.714.6, align 8
  %dot.f1.load.c.alloc.nim.715.6 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %call.res.alloc.nim.640.23.i, i64 0, i32 1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %dot.f1.load.c.alloc.nim.715.6, i8 0, i64 16, i1 false)
  %load.load.arg.head.i = load ptr, ptr %bra.arr.geparr.alloc.nim.707.29, align 8
  store ptr %load.load.arg.head.i, ptr %dot.f1.load.c.alloc.nim.715.6, align 8
  %load.load.arg.head1.i = load ptr, ptr %bra.arr.geparr.alloc.nim.707.29, align 8
  %icmp.IntEQ.alloc.nim.510.10.not.i = icmp eq ptr %load.load.arg.head1.i, null
  br i1 %icmp.IntEQ.alloc.nim.510.10.not.i, label %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit, label %if.true.alloc.nim.510.2.i

if.true.alloc.nim.510.2.i:                        ; preds = %if.true.alloc.nim.708.4
  %dot.f2.load.load.arg.head2.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.load.arg.head1.i, i64 0, i32 2
  store ptr %call.res.alloc.nim.640.23.i, ptr %dot.f2.load.load.arg.head2.i, align 8
  br label %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit

listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit:           ; preds = %if.true.alloc.nim.708.4, %if.true.alloc.nim.510.2.i
  store ptr %call.res.alloc.nim.640.23.i, ptr %bra.arr.geparr.alloc.nim.707.29, align 8
  %dot.f7.load.c.alloc.nim.718.20 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %call.res.alloc.nim.640.23.i, i64 0, i32 7
  %load.dot.f4.load.c.alloc.nim.740.7.pre = load i64, ptr %dot.f4.load.c.alloc.nim.714.6, align 8
  br label %if.end.alloc.nim.708.4

if.false.alloc.nim.708.4:                         ; preds = %if.true.alloc.nim.704.2
  %dot.f3.load.c.alloc.nim.726.9 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.bra.arr.geparr.alloc.nim.707.29, i64 0, i32 3
  %load.dot.f3.load.c.alloc.nim.726.9 = load ptr, ptr %dot.f3.load.c.alloc.nim.726.9, align 8
  %icmp.IntEQ.alloc.nim.726.20 = icmp eq ptr %load.dot.f3.load.c.alloc.nim.726.9, null
  br i1 %icmp.IntEQ.alloc.nim.726.20, label %if.true.alloc.nim.726.6, label %if.false.alloc.nim.726.6

if.true.alloc.nim.726.6:                          ; preds = %if.false.alloc.nim.708.4
  %dot.f7.load.c.alloc.nim.729.54 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.bra.arr.geparr.alloc.nim.707.29, i64 0, i32 7
  %cast.pi.alloc.nim.729.31 = ptrtoint ptr %dot.f7.load.c.alloc.nim.729.54 to i64
  %dot.f5.load.c.alloc.nim.729.66 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.bra.arr.geparr.alloc.nim.707.29, i64 0, i32 5
  %load.dot.f5.load.c.alloc.nim.729.66 = load i64, ptr %dot.f5.load.c.alloc.nim.729.66, align 8
  %binop.Add.arithmetics.nim.407.26.i = add i64 %load.dot.f5.load.c.alloc.nim.729.66, %cast.pi.alloc.nim.729.31
  %cast.ip.alloc.nim.729.17 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i to ptr
  %inc.nv.alloc.nim.730.11 = add i64 %load.dot.f5.load.c.alloc.nim.729.66, %binop.And.osalloc.nim.11.23.i
  store i64 %inc.nv.alloc.nim.730.11, ptr %dot.f5.load.c.alloc.nim.729.66, align 8
  br label %if.end.alloc.nim.726.6

if.false.alloc.nim.726.6:                         ; preds = %if.false.alloc.nim.708.4
  %load.dot.f0.load.dot.f3.load.c.alloc.nim.735.21 = load ptr, ptr %load.dot.f3.load.c.alloc.nim.726.9, align 8
  store ptr %load.dot.f0.load.dot.f3.load.c.alloc.nim.735.21, ptr %dot.f3.load.c.alloc.nim.726.9, align 8
  br label %if.end.alloc.nim.726.6

if.end.alloc.nim.726.6:                           ; preds = %if.false.alloc.nim.726.6, %if.true.alloc.nim.726.6
  %result.0 = phi ptr [ %cast.ip.alloc.nim.729.17, %if.true.alloc.nim.726.6 ], [ %load.dot.f3.load.c.alloc.nim.726.9, %if.false.alloc.nim.726.6 ]
  %dot.f4.load.c.alloc.nim.736.10 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.bra.arr.geparr.alloc.nim.707.29, i64 0, i32 4
  %load.dot.f4.load.c.alloc.nim.736.10 = load i64, ptr %dot.f4.load.c.alloc.nim.736.10, align 8
  %inc.nv.alloc.nim.736.9 = sub i64 %load.dot.f4.load.c.alloc.nim.736.10, %binop.And.osalloc.nim.11.23.i
  store i64 %inc.nv.alloc.nim.736.9, ptr %dot.f4.load.c.alloc.nim.736.10, align 8
  br label %if.end.alloc.nim.708.4

if.end.alloc.nim.708.4:                           ; preds = %if.end.alloc.nim.726.6, %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit
  %load.dot.f4.load.c.alloc.nim.740.7 = phi i64 [ %load.dot.f4.load.c.alloc.nim.740.7.pre, %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit ], [ %inc.nv.alloc.nim.736.9, %if.end.alloc.nim.726.6 ]
  %c.0 = phi ptr [ %call.res.alloc.nim.640.23.i, %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit ], [ %load.bra.arr.geparr.alloc.nim.707.29, %if.end.alloc.nim.726.6 ]
  %result.1 = phi ptr [ %dot.f7.load.c.alloc.nim.718.20, %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit ], [ %result.0, %if.end.alloc.nim.726.6 ]
  %icmp.IntSLT.alloc.nim.740.14 = icmp slt i64 %load.dot.f4.load.c.alloc.nim.740.7, %binop.And.osalloc.nim.11.23.i
  br i1 %icmp.IntSLT.alloc.nim.740.14, label %if.true.alloc.nim.740.4, label %secReturn

if.true.alloc.nim.740.4:                          ; preds = %if.end.alloc.nim.708.4
  %load.load.arg.head.i30 = load ptr, ptr %bra.arr.geparr.alloc.nim.707.29, align 8
  %icmp.IntEQ.alloc.nim.517.7.i = icmp eq ptr %load.load.arg.head.i30, %c.0
  br i1 %icmp.IntEQ.alloc.nim.517.7.i, label %if.true.alloc.nim.517.2.i, label %if.false.alloc.nim.517.2.i

if.true.alloc.nim.517.2.i:                        ; preds = %if.true.alloc.nim.740.4
  %dot.f1.load.arg.c2.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %c.0, i64 0, i32 1
  %load.dot.f1.load.arg.c2.i = load ptr, ptr %dot.f1.load.arg.c2.i, align 8
  store ptr %load.dot.f1.load.arg.c2.i, ptr %bra.arr.geparr.alloc.nim.707.29, align 8
  %icmp.IntEQ.alloc.nim.520.12.not.i = icmp eq ptr %load.dot.f1.load.arg.c2.i, null
  br i1 %icmp.IntEQ.alloc.nim.520.12.not.i, label %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit, label %if.true.alloc.nim.520.4.i

if.true.alloc.nim.520.4.i:                        ; preds = %if.true.alloc.nim.517.2.i
  %dot.f2.load.load.arg.head4.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.dot.f1.load.arg.c2.i, i64 0, i32 2
  store ptr null, ptr %dot.f2.load.load.arg.head4.i, align 8
  br label %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit

if.false.alloc.nim.517.2.i:                       ; preds = %if.true.alloc.nim.740.4
  %dot.f2.load.arg.c5.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %c.0, i64 0, i32 2
  %load.dot.f2.load.arg.c5.i = load ptr, ptr %dot.f2.load.arg.c5.i, align 8
  %dot.f1.load.dot.f2.load.arg.c5.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.dot.f2.load.arg.c5.i, i64 0, i32 1
  %dot.f1.load.arg.c6.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %c.0, i64 0, i32 1
  %load.dot.f1.load.arg.c6.i = load ptr, ptr %dot.f1.load.arg.c6.i, align 8
  store ptr %load.dot.f1.load.arg.c6.i, ptr %dot.f1.load.dot.f2.load.arg.c5.i, align 8
  %load.dot.f1.load.arg.c7.i = load ptr, ptr %dot.f1.load.arg.c6.i, align 8
  %icmp.IntEQ.alloc.nim.524.14.not.i = icmp eq ptr %load.dot.f1.load.arg.c7.i, null
  br i1 %icmp.IntEQ.alloc.nim.524.14.not.i, label %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit, label %if.true.alloc.nim.524.4.i

if.true.alloc.nim.524.4.i:                        ; preds = %if.false.alloc.nim.517.2.i
  %dot.f2.load.dot.f1.load.arg.c8.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.dot.f1.load.arg.c7.i, i64 0, i32 2
  %load.dot.f2.load.arg.c9.i = load ptr, ptr %dot.f2.load.arg.c5.i, align 8
  store ptr %load.dot.f2.load.arg.c9.i, ptr %dot.f2.load.dot.f1.load.arg.c8.i, align 8
  br label %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit

listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit:      ; preds = %if.true.alloc.nim.517.2.i, %if.true.alloc.nim.520.4.i, %if.false.alloc.nim.517.2.i, %if.true.alloc.nim.524.4.i
  %dot.f1.load.arg.c10.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %c.0, i64 0, i32 1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %dot.f1.load.arg.c10.i, i8 0, i64 16, i1 false)
  br label %secReturn

if.false.alloc.nim.704.2:                         ; preds = %secAlloca
  %binop.Add.alloc.nim.750.25 = add i64 %requestedSize, 32
  %icmp.IntSLE.alloc.nim.752.20 = icmp sgt i64 %binop.Add.alloc.nim.750.25, 1056964608
  br i1 %icmp.IntSLE.alloc.nim.752.20, label %ifx.true.alloc.nim.752.12, label %ifx.false.alloc.nim.752.12

ifx.true.alloc.nim.752.12:                        ; preds = %if.false.alloc.nim.704.2
  %call.res.alloc.nim.620.39.i = tail call fastcc ptr @osAllocPages__HMOhWrY1QMa49a2BcJwSDZQ(i64 %binop.Add.alloc.nim.750.25)
  %dot.f7.load.arg.a.i.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 7
  %load.dot.f7.load.arg.a.i.i = load i64, ptr %dot.f7.load.arg.a.i.i, align 8
  %inc.nv.alloc.nim.237.5.i.i = add i64 %load.dot.f7.load.arg.a.i.i, %binop.Add.alloc.nim.750.25
  store i64 %inc.nv.alloc.nim.237.5.i.i, ptr %dot.f7.load.arg.a.i.i, align 8
  %dot.f1.load.result.alloc.nim.625.2.i = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %call.res.alloc.nim.620.39.i, i64 0, i32 1
  %dot.f1.dot.f0.load.result.alloc.nim.627.2.i = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %call.res.alloc.nim.620.39.i, i64 0, i32 1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %dot.f1.load.result.alloc.nim.625.2.i, i8 0, i64 16, i1 false)
  store i64 %binop.Add.alloc.nim.750.25, ptr %dot.f1.dot.f0.load.result.alloc.nim.627.2.i, align 8
  store i64 1, ptr %call.res.alloc.nim.620.39.i, align 8
  %dot.f12.load.arg.a4.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 12
  %cast.pi.alloc.nim.416.11.i.i = ptrtoint ptr %call.res.alloc.nim.620.39.i to i64
  %binop.AShr.alloc.nim.416.32.i.i = ashr i64 %cast.pi.alloc.nim.416.11.i.i, 12
  tail call fastcc void @incl__tSnfTXv7GxXoDyFDm9bvzqg(ptr %a, ptr nonnull %dot.f12.load.arg.a4.i, i64 %binop.AShr.alloc.nim.416.32.i.i)
  br label %ifx.end.alloc.nim.752.12

ifx.false.alloc.nim.752.12:                       ; preds = %if.false.alloc.nim.704.2
  %call.res.alloc.nim.753.29 = tail call fastcc ptr @getBigChunk__stlXHMKRKFIGOvq8t4ynRQ(ptr %a, i64 %binop.Add.alloc.nim.750.25)
  br label %ifx.end.alloc.nim.752.12

ifx.end.alloc.nim.752.12:                         ; preds = %ifx.false.alloc.nim.752.12, %ifx.true.alloc.nim.752.12
  %ifx.res.alloc.nim.752.12.0 = phi ptr [ %call.res.alloc.nim.620.39.i, %ifx.true.alloc.nim.752.12 ], [ %call.res.alloc.nim.753.29, %ifx.false.alloc.nim.752.12 ]
  %dot.f3.load.c6.alloc.nim.756.18 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %ifx.res.alloc.nim.752.12.0, i64 0, i32 3
  %dot.f13.load.arg.a9 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 13
  %load.dot.f13.load.arg.a9 = load ptr, ptr %dot.f13.load.arg.a9, align 8
  %icmp.IntEQ.alloc.nim.760.16 = icmp eq ptr %load.dot.f13.load.arg.a9, null
  br i1 %icmp.IntEQ.alloc.nim.760.16, label %if.true.alloc.nim.760.6, label %if.end.alloc.nim.760.6

if.true.alloc.nim.760.6:                          ; preds = %ifx.end.alloc.nim.752.12
  %dot.f20.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 20
  %load.bra.arr.geparr.alloc.nim.273.18.i = load ptr, ptr %dot.f20.load.arg.a.i, align 8
  %icmp.IntEQ.alloc.nim.273.22.i = icmp eq ptr %load.bra.arr.geparr.alloc.nim.273.18.i, null
  br i1 %icmp.IntEQ.alloc.nim.273.22.i, label %if.true.alloc.nim.273.4.i, label %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit

if.true.alloc.nim.273.4.i:                        ; preds = %if.true.alloc.nim.760.6
  store ptr %dot.f20.load.arg.a.i, ptr %dot.f20.load.arg.a.i, align 8
  %bra.arr.geparr.alloc.nim.275.17.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 20, i32 0, i64 1
  store ptr %dot.f20.load.arg.a.i, ptr %bra.arr.geparr.alloc.nim.275.17.i, align 8
  br label %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit

getBottom__3mqnVBLDtYhZizqw9bvHELA.exit:          ; preds = %if.true.alloc.nim.760.6, %if.true.alloc.nim.273.4.i
  store ptr %dot.f20.load.arg.a.i, ptr %dot.f13.load.arg.a9, align 8
  br label %if.end.alloc.nim.760.6

if.end.alloc.nim.760.6:                           ; preds = %ifx.end.alloc.nim.752.12, %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit
  %cast.pi.alloc.nim.761.21 = ptrtoint ptr %dot.f3.load.c6.alloc.nim.756.18 to i64
  %binop.Add.arithmetics.nim.407.26.i31 = add i64 %binop.Add.alloc.nim.750.25, %cast.pi.alloc.nim.761.21
  tail call fastcc void @add__3D9aOyz4rDquPZKBlqn0xig(ptr nonnull %a, ptr nonnull %dot.f13.load.arg.a9, i64 %cast.pi.alloc.nim.761.21, i64 %binop.Add.arithmetics.nim.407.26.i31)
  %dot.f1.dot.f0.load.c6.alloc.nim.762.15 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %ifx.res.alloc.nim.752.12.0, i64 0, i32 1
  %load.dot.f1.dot.f0.load.c6.alloc.nim.762.15 = load i64, ptr %dot.f1.dot.f0.load.c6.alloc.nim.762.15, align 8
  br label %secReturn

secReturn:                                        ; preds = %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit, %if.end.alloc.nim.708.4, %if.end.alloc.nim.760.6
  %binop.And.osalloc.nim.11.23.i.sink = phi i64 [ %load.dot.f1.dot.f0.load.c6.alloc.nim.762.15, %if.end.alloc.nim.760.6 ], [ %binop.And.osalloc.nim.11.23.i, %if.end.alloc.nim.708.4 ], [ %binop.And.osalloc.nim.11.23.i, %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit ]
  %result.2 = phi ptr [ %dot.f3.load.c6.alloc.nim.756.18, %if.end.alloc.nim.760.6 ], [ %result.1, %if.end.alloc.nim.708.4 ], [ %result.1, %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit ]
  %dot.f10.load.arg.a4.sink33 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 10
  %load.dot.f10.load.arg.a4 = load i64, ptr %dot.f10.load.arg.a4.sink33, align 8
  %inc.nv.alloc.nim.747.8 = add i64 %load.dot.f10.load.arg.a4, %binop.And.osalloc.nim.11.23.i.sink
  store i64 %inc.nv.alloc.nim.747.8, ptr %dot.f10.load.arg.a4.sink33, align 8
  ret ptr %result.2
}

define internal fastcc ptr @getBigChunk__stlXHMKRKFIGOvq8t4ynRQ(ptr nocapture %a, i64 %size) unnamed_addr #2 {
secAlloca:
  %toe.t.load.load.arg.r.i = trunc i64 %size to i32
  %icmp.IntULE.alloc.nim.149.15.i.i = icmp ult i32 %toe.t.load.load.arg.r.i, 65536
  %icmp.IntULE.alloc.nim.150.18.i.i = icmp ult i32 %toe.t.load.load.arg.r.i, 256
  %..i.i = select i1 %icmp.IntULE.alloc.nim.150.18.i.i, i64 0, i64 8
  %icmp.IntULE.alloc.nim.152.18.i.i = icmp ult i32 %toe.t.load.load.arg.r.i, 16777216
  %.8.i.i = select i1 %icmp.IntULE.alloc.nim.152.18.i.i, i64 16, i64 24
  %ifx.res.alloc.nim.149.10.0.i.i = select i1 %icmp.IntULE.alloc.nim.149.15.i.i, i64 %..i.i, i64 %.8.i.i
  %toe.t.load.a.alloc.nim.153.40.i.i = trunc i64 %ifx.res.alloc.nim.149.10.0.i.i to i32
  %binop.LShr.alloc.nim.153.36.i.i = lshr i32 %toe.t.load.load.arg.r.i, %toe.t.load.a.alloc.nim.153.40.i.i
  %nie.z.binop.LShr.alloc.nim.153.36.i.i = zext i32 %binop.LShr.alloc.nim.153.36.i.i to i64
  %bra.arr.geparr.alloc.nim.153.28.i.i = getelementptr inbounds [256 x i8], ptr @fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ, i64 0, i64 %nie.z.binop.LShr.alloc.nim.153.36.i.i
  %load.bra.arr.geparr.alloc.nim.153.28.i.i = load i8, ptr %bra.arr.geparr.alloc.nim.153.28.i.i, align 1
  %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i = sext i8 %load.bra.arr.geparr.alloc.nim.153.28.i.i to i64
  %binop.Add.alloc.nim.153.45.i.i = add nsw i64 %ifx.res.alloc.nim.149.10.0.i.i, -5
  %binop.Sub.alloc.nim.168.42.i = add nsw i64 %binop.Add.alloc.nim.153.45.i.i, %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i
  %notmask.neg.i = shl nuw i64 1, %binop.Sub.alloc.nim.168.42.i
  %binop.Add.osalloc.nim.11.14.i.i = add nuw i64 %notmask.neg.i, 4095
  %binop.And.osalloc.nim.11.23.i.i = and i64 %binop.Add.osalloc.nim.11.14.i.i, -4096
  %binop.Sub.alloc.nim.168.68.i = add i64 %size, -1
  %binop.Add.alloc.nim.169.8.i = add i64 %binop.Sub.alloc.nim.168.68.i, %binop.And.osalloc.nim.11.23.i.i
  %bitnot.load.t.alloc.nim.170.16.i = sub i64 0, %binop.And.osalloc.nim.11.23.i.i
  %binop.And.alloc.nim.170.8.i = and i64 %binop.Add.alloc.nim.169.8.i, %bitnot.load.t.alloc.nim.170.16.i
  %IntSLE.alloc.nim.171.9.i = tail call i64 @llvm.smin.i64(i64 %binop.And.alloc.nim.170.8.i, i64 1056964608)
  %toe.t.load.load.arg.r7.i = trunc i64 %IntSLE.alloc.nim.171.9.i to i32
  %icmp.IntULE.alloc.nim.149.15.i12.i = icmp ult i32 %toe.t.load.load.arg.r7.i, 65536
  %icmp.IntULE.alloc.nim.150.18.i13.i = icmp eq i32 %toe.t.load.load.arg.r7.i, 0
  %..i14.i = select i1 %icmp.IntULE.alloc.nim.150.18.i13.i, i64 0, i64 8
  %icmp.IntULE.alloc.nim.152.18.i15.i = icmp ult i32 %toe.t.load.load.arg.r7.i, 16777216
  %.8.i16.i = select i1 %icmp.IntULE.alloc.nim.152.18.i15.i, i64 16, i64 24
  %ifx.res.alloc.nim.149.10.0.i17.i = select i1 %icmp.IntULE.alloc.nim.149.15.i12.i, i64 %..i14.i, i64 %.8.i16.i
  %toe.t.load.a.alloc.nim.153.40.i18.i = trunc i64 %ifx.res.alloc.nim.149.10.0.i17.i to i32
  %binop.LShr.alloc.nim.153.36.i19.i = lshr i32 %toe.t.load.load.arg.r7.i, %toe.t.load.a.alloc.nim.153.40.i18.i
  %nie.z.binop.LShr.alloc.nim.153.36.i20.i = zext i32 %binop.LShr.alloc.nim.153.36.i19.i to i64
  %bra.arr.geparr.alloc.nim.153.28.i21.i = getelementptr inbounds [256 x i8], ptr @fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ, i64 0, i64 %nie.z.binop.LShr.alloc.nim.153.36.i20.i
  %load.bra.arr.geparr.alloc.nim.153.28.i22.i = load i8, ptr %bra.arr.geparr.alloc.nim.153.28.i21.i, align 1
  %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i23.i = sext i8 %load.bra.arr.geparr.alloc.nim.153.28.i22.i to i64
  %binop.Add.alloc.nim.153.45.i24.i = add nsw i64 %ifx.res.alloc.nim.149.10.0.i17.i, %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i23.i
  %binop.Sub.alloc.nim.173.18.i = add nsw i64 %binop.Add.alloc.nim.153.45.i24.i, -5
  %binop.AShr.alloc.nim.173.10.i = ashr i64 %IntSLE.alloc.nim.171.9.i, %binop.Sub.alloc.nim.173.18.i
  %binop.Sub.alloc.nim.173.33.i = add i64 %binop.AShr.alloc.nim.173.10.i, -32
  %inc.nv.alloc.nim.174.6.i = add nsw i64 %binop.Add.alloc.nim.153.45.i24.i, -6
  %bra.arr.geparr.alloc.nim.189.22.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 4, i64 %inc.nv.alloc.nim.174.6.i
  %load.bra.arr.geparr.alloc.nim.189.22.i = load i32, ptr %bra.arr.geparr.alloc.nim.189.22.i, align 4
  %binop.Shl.alloc.nim.189.41.i = shl i64 4294967295, %binop.Sub.alloc.nim.173.33.i
  %binop.trunc.alloc.nim.189.41.i = trunc i64 %binop.Shl.alloc.nim.189.41.i to i32
  %binop.And.alloc.nim.189.27.i = and i32 %load.bra.arr.geparr.alloc.nim.189.22.i, %binop.trunc.alloc.nim.189.41.i
  %icmp.IntEQ.alloc.nim.191.9.not.i = icmp eq i32 %binop.And.alloc.nim.189.27.i, 0
  br i1 %icmp.IntEQ.alloc.nim.191.9.not.i, label %if.false.alloc.nim.191.2.i, label %findSuitableBlock__asVN3MOMG2rBAqS7SmK0xQ.exit

if.false.alloc.nim.191.2.i:                       ; preds = %secAlloca
  %dot.f3.load.arg.a6.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 3
  %load.dot.f3.load.arg.a6.i = load i32, ptr %dot.f3.load.arg.a6.i, align 4
  %binop.Shl.alloc.nim.195.40.i = shl i64 4294967295, %binop.Sub.alloc.nim.173.18.i
  %binop.trunc.alloc.nim.195.40.i = trunc i64 %binop.Shl.alloc.nim.195.40.i to i32
  %binop.And.alloc.nim.195.26.i = and i32 %load.dot.f3.load.arg.a6.i, %binop.trunc.alloc.nim.195.40.i
  %binop.Add.alloc.nim.156.23.i17.i = sub i32 0, %binop.And.alloc.nim.195.26.i
  %binop.And.alloc.nim.156.10.i18.i = and i32 %binop.And.alloc.nim.195.26.i, %binop.Add.alloc.nim.156.23.i17.i
  %icmp.IntULE.alloc.nim.149.15.i.i19.i = icmp ult i32 %binop.And.alloc.nim.156.10.i18.i, 65536
  %icmp.IntULE.alloc.nim.150.18.i.i20.i = icmp ult i32 %binop.And.alloc.nim.156.10.i18.i, 256
  %..i.i21.i = select i1 %icmp.IntULE.alloc.nim.150.18.i.i20.i, i64 0, i64 8
  %icmp.IntULE.alloc.nim.152.18.i.i22.i = icmp ult i32 %binop.And.alloc.nim.156.10.i18.i, 16777216
  %.8.i.i23.i = select i1 %icmp.IntULE.alloc.nim.152.18.i.i22.i, i64 16, i64 24
  %ifx.res.alloc.nim.149.10.0.i.i24.i = select i1 %icmp.IntULE.alloc.nim.149.15.i.i19.i, i64 %..i.i21.i, i64 %.8.i.i23.i
  %toe.t.load.a.alloc.nim.153.40.i.i25.i = trunc i64 %ifx.res.alloc.nim.149.10.0.i.i24.i to i32
  %binop.LShr.alloc.nim.153.36.i.i26.i = lshr i32 %binop.And.alloc.nim.156.10.i18.i, %toe.t.load.a.alloc.nim.153.40.i.i25.i
  %nie.z.binop.LShr.alloc.nim.153.36.i.i27.i = zext i32 %binop.LShr.alloc.nim.153.36.i.i26.i to i64
  %bra.arr.geparr.alloc.nim.153.28.i.i28.i = getelementptr inbounds [256 x i8], ptr @fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ, i64 0, i64 %nie.z.binop.LShr.alloc.nim.153.36.i.i27.i
  %load.bra.arr.geparr.alloc.nim.153.28.i.i29.i = load i8, ptr %bra.arr.geparr.alloc.nim.153.28.i.i28.i, align 1
  %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i30.i = sext i8 %load.bra.arr.geparr.alloc.nim.153.28.i.i29.i to i64
  %binop.Add.alloc.nim.153.45.i.i31.i = add nsw i64 %ifx.res.alloc.nim.149.10.0.i.i24.i, %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i30.i
  %icmp.IntSLT.alloc.nim.196.10.i = icmp sgt i64 %binop.Add.alloc.nim.153.45.i.i31.i, 0
  br i1 %icmp.IntSLT.alloc.nim.196.10.i, label %if.true.alloc.nim.196.4.i, label %if.true.alloc.nim.599.2

if.true.alloc.nim.196.4.i:                        ; preds = %if.false.alloc.nim.191.2.i
  %bra.arr.geparr.alloc.nim.197.27.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 4, i64 %binop.Add.alloc.nim.153.45.i.i31.i
  %load.bra.arr.geparr.alloc.nim.197.27.i = load i32, ptr %bra.arr.geparr.alloc.nim.197.27.i, align 4
  br label %findSuitableBlock__asVN3MOMG2rBAqS7SmK0xQ.exit

findSuitableBlock__asVN3MOMG2rBAqS7SmK0xQ.exit:   ; preds = %secAlloca, %if.true.alloc.nim.196.4.i
  %fl.0 = phi i64 [ %binop.Add.alloc.nim.153.45.i.i31.i, %if.true.alloc.nim.196.4.i ], [ %inc.nv.alloc.nim.174.6.i, %secAlloca ]
  %load.bra.arr.geparr.alloc.nim.197.27.sink52.i = phi i32 [ %load.bra.arr.geparr.alloc.nim.197.27.i, %if.true.alloc.nim.196.4.i ], [ %binop.And.alloc.nim.189.27.i, %secAlloca ]
  %binop.Add.alloc.nim.156.23.i32.i = sub i32 0, %load.bra.arr.geparr.alloc.nim.197.27.sink52.i
  %binop.And.alloc.nim.156.10.i33.i = and i32 %load.bra.arr.geparr.alloc.nim.197.27.sink52.i, %binop.Add.alloc.nim.156.23.i32.i
  %icmp.IntULE.alloc.nim.149.15.i.i34.i = icmp ult i32 %binop.And.alloc.nim.156.10.i33.i, 65536
  %icmp.IntULE.alloc.nim.150.18.i.i35.i = icmp ult i32 %binop.And.alloc.nim.156.10.i33.i, 256
  %..i.i36.i = select i1 %icmp.IntULE.alloc.nim.150.18.i.i35.i, i64 0, i64 8
  %icmp.IntULE.alloc.nim.152.18.i.i37.i = icmp ult i32 %binop.And.alloc.nim.156.10.i33.i, 16777216
  %.8.i.i38.i = select i1 %icmp.IntULE.alloc.nim.152.18.i.i37.i, i64 16, i64 24
  %ifx.res.alloc.nim.149.10.0.i.i39.i = select i1 %icmp.IntULE.alloc.nim.149.15.i.i34.i, i64 %..i.i36.i, i64 %.8.i.i38.i
  %toe.t.load.a.alloc.nim.153.40.i.i40.i = trunc i64 %ifx.res.alloc.nim.149.10.0.i.i39.i to i32
  %binop.LShr.alloc.nim.153.36.i.i41.i = lshr i32 %binop.And.alloc.nim.156.10.i33.i, %toe.t.load.a.alloc.nim.153.40.i.i40.i
  %nie.z.binop.LShr.alloc.nim.153.36.i.i42.i = zext i32 %binop.LShr.alloc.nim.153.36.i.i41.i to i64
  %bra.arr.geparr.alloc.nim.153.28.i.i43.i = getelementptr inbounds [256 x i8], ptr @fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ, i64 0, i64 %nie.z.binop.LShr.alloc.nim.153.36.i.i42.i
  %load.bra.arr.geparr.alloc.nim.153.28.i.i44.i = load i8, ptr %bra.arr.geparr.alloc.nim.153.28.i.i43.i, align 1
  %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i45.i = sext i8 %load.bra.arr.geparr.alloc.nim.153.28.i.i44.i to i64
  %binop.Add.alloc.nim.153.45.i.i46.i = add nsw i64 %ifx.res.alloc.nim.149.10.0.i.i39.i, %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i45.i
  %bra.arr.geparr.alloc.nim.193.13.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 5, i64 %fl.0, i64 %binop.Add.alloc.nim.153.45.i.i46.i
  %load.bra.arr.geparr.alloc.nim.193.13.i = load ptr, ptr %bra.arr.geparr.alloc.nim.193.13.i, align 8
  %icmp.IntEQ.alloc.nim.599.12 = icmp eq ptr %load.bra.arr.geparr.alloc.nim.193.13.i, null
  br i1 %icmp.IntEQ.alloc.nim.599.12, label %if.true.alloc.nim.599.2, label %if.false.alloc.nim.599.2

if.true.alloc.nim.599.2:                          ; preds = %if.false.alloc.nim.191.2.i, %findSuitableBlock__asVN3MOMG2rBAqS7SmK0xQ.exit
  %icmp.IntSLT.alloc.nim.600.12 = icmp slt i64 %IntSLE.alloc.nim.171.9.i, 524288
  br i1 %icmp.IntSLT.alloc.nim.600.12, label %if.true.alloc.nim.600.4, label %if.false.alloc.nim.600.4

if.true.alloc.nim.600.4:                          ; preds = %if.true.alloc.nim.599.2
  %call.res.alloc.nim.601.30 = tail call fastcc ptr @requestOsChunks__stlXHMKRKFIGOvq8t4ynRQ_2(ptr nonnull %a, i64 524288)
  %call.res.alloc.nim.553.24.i = tail call fastcc ptr @splitChunk2__gSNzk4aToVCSTE1opfEv2A(ptr nonnull %a, ptr %call.res.alloc.nim.601.30, i64 %IntSLE.alloc.nim.171.9.i)
  br label %if.end.alloc.nim.599.2.sink.split

if.false.alloc.nim.600.4:                         ; preds = %if.true.alloc.nim.599.2
  %call.res.alloc.nim.604.30 = tail call fastcc ptr @requestOsChunks__stlXHMKRKFIGOvq8t4ynRQ_2(ptr nonnull %a, i64 %IntSLE.alloc.nim.171.9.i)
  %dot.f1.dot.f0.load.result.alloc.nim.606.9 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %call.res.alloc.nim.604.30, i64 0, i32 1
  %load.dot.f1.dot.f0.load.result.alloc.nim.606.9 = load i64, ptr %dot.f1.dot.f0.load.result.alloc.nim.606.9, align 8
  %icmp.IntSLT.alloc.nim.606.21 = icmp slt i64 %IntSLE.alloc.nim.171.9.i, %load.dot.f1.dot.f0.load.result.alloc.nim.606.9
  br i1 %icmp.IntSLT.alloc.nim.606.21, label %if.true.alloc.nim.606.6, label %if.end.alloc.nim.599.2

if.true.alloc.nim.606.6:                          ; preds = %if.false.alloc.nim.600.4
  %call.res.alloc.nim.553.24.i11 = tail call fastcc ptr @splitChunk2__gSNzk4aToVCSTE1opfEv2A(ptr nonnull %a, ptr nonnull %call.res.alloc.nim.604.30, i64 %IntSLE.alloc.nim.171.9.i)
  br label %if.end.alloc.nim.599.2.sink.split

if.false.alloc.nim.599.2:                         ; preds = %findSuitableBlock__asVN3MOMG2rBAqS7SmK0xQ.exit
  %dot.f1.load.arg.b.i = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %load.bra.arr.geparr.alloc.nim.193.13.i, i64 0, i32 1
  %load.dot.f1.load.arg.b.i = load ptr, ptr %dot.f1.load.arg.b.i, align 8
  store ptr %load.dot.f1.load.arg.b.i, ptr %bra.arr.geparr.alloc.nim.193.13.i, align 8
  %icmp.IntEQ.alloc.nim.219.11.not.i = icmp eq ptr %load.dot.f1.load.arg.b.i, null
  br i1 %icmp.IntEQ.alloc.nim.219.11.not.i, label %if.false.alloc.nim.219.2.i, label %if.true.alloc.nim.219.2.i

if.true.alloc.nim.219.2.i:                        ; preds = %if.false.alloc.nim.599.2
  %dot.f2.load.bra.arr.geparr.alloc.nim.220.4.i = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %load.dot.f1.load.arg.b.i, i64 0, i32 2
  store ptr null, ptr %dot.f2.load.bra.arr.geparr.alloc.nim.220.4.i, align 8
  br label %removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw.exit

if.false.alloc.nim.219.2.i:                       ; preds = %if.false.alloc.nim.599.2
  %bra.arr.geparr.alloc.nim.201.25.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 4, i64 %fl.0
  %load.load.arg.dest1.i.i = load i32, ptr %bra.arr.geparr.alloc.nim.201.25.i, align 4
  %binop.And.alloc.nim.162.36.i.i = and i64 %binop.Add.alloc.nim.153.45.i.i46.i, 31
  %binop.Shl.alloc.nim.162.28.i.i = shl nuw nsw i64 1, %binop.And.alloc.nim.162.36.i.i
  %binop.trunc.alloc.nim.162.28.i.i = trunc i64 %binop.Shl.alloc.nim.162.28.i.i to i32
  %bitnot.binop.trunc.alloc.nim.162.28.i.i = xor i32 %binop.trunc.alloc.nim.162.28.i.i, -1
  %binop.And.alloc.nim.162.14.i.i = and i32 %load.load.arg.dest1.i.i, %bitnot.binop.trunc.alloc.nim.162.28.i.i
  store i32 %binop.And.alloc.nim.162.14.i.i, ptr %bra.arr.geparr.alloc.nim.201.25.i, align 4
  %icmp.IntEQ.alloc.nim.202.20.i = icmp eq i32 %binop.And.alloc.nim.162.14.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.202.20.i, label %if.true.alloc.nim.222.13.i, label %removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw.exit

if.true.alloc.nim.222.13.i:                       ; preds = %if.false.alloc.nim.219.2.i
  %dot.f3.load.arg.a15.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 3
  %load.load.arg.dest1.i26.i = load i32, ptr %dot.f3.load.arg.a15.i, align 4
  %binop.And.alloc.nim.162.36.i27.i = and i64 %fl.0, 31
  %binop.Shl.alloc.nim.162.28.i28.i = shl nuw nsw i64 1, %binop.And.alloc.nim.162.36.i27.i
  %binop.trunc.alloc.nim.162.28.i29.i = trunc i64 %binop.Shl.alloc.nim.162.28.i28.i to i32
  %bitnot.binop.trunc.alloc.nim.162.28.i30.i = xor i32 %binop.trunc.alloc.nim.162.28.i29.i, -1
  %binop.And.alloc.nim.162.14.i31.i = and i32 %load.load.arg.dest1.i26.i, %bitnot.binop.trunc.alloc.nim.162.28.i30.i
  store i32 %binop.And.alloc.nim.162.14.i31.i, ptr %dot.f3.load.arg.a15.i, align 4
  br label %removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw.exit

removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw.exit: ; preds = %if.true.alloc.nim.219.2.i, %if.false.alloc.nim.219.2.i, %if.true.alloc.nim.222.13.i
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %dot.f1.load.arg.b.i, i8 0, i64 16, i1 false)
  %binop.Add.alloc.nim.610.27 = add nsw i64 %IntSLE.alloc.nim.171.9.i, 4096
  %dot.f1.dot.f0.load.result.alloc.nim.610.7 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %load.bra.arr.geparr.alloc.nim.193.13.i, i64 0, i32 1
  %load.dot.f1.dot.f0.load.result.alloc.nim.610.7 = load i64, ptr %dot.f1.dot.f0.load.result.alloc.nim.610.7, align 8
  %icmp.IntSLE.alloc.nim.610.19.not = icmp sgt i64 %binop.Add.alloc.nim.610.27, %load.dot.f1.dot.f0.load.result.alloc.nim.610.7
  br i1 %icmp.IntSLE.alloc.nim.610.19.not, label %if.end.alloc.nim.599.2, label %if.true.alloc.nim.610.4

if.true.alloc.nim.610.4:                          ; preds = %removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw.exit
  %call.res.alloc.nim.553.24.i12 = tail call fastcc ptr @splitChunk2__gSNzk4aToVCSTE1opfEv2A(ptr nonnull %a, ptr nonnull %load.bra.arr.geparr.alloc.nim.193.13.i, i64 %IntSLE.alloc.nim.171.9.i)
  br label %if.end.alloc.nim.599.2.sink.split

if.end.alloc.nim.599.2.sink.split:                ; preds = %if.true.alloc.nim.606.6, %if.true.alloc.nim.600.4, %if.true.alloc.nim.610.4
  %call.res.alloc.nim.553.24.i12.sink = phi ptr [ %call.res.alloc.nim.553.24.i12, %if.true.alloc.nim.610.4 ], [ %call.res.alloc.nim.553.24.i, %if.true.alloc.nim.600.4 ], [ %call.res.alloc.nim.553.24.i11, %if.true.alloc.nim.606.6 ]
  %result.0.ph = phi ptr [ %load.bra.arr.geparr.alloc.nim.193.13.i, %if.true.alloc.nim.610.4 ], [ %call.res.alloc.nim.601.30, %if.true.alloc.nim.600.4 ], [ %call.res.alloc.nim.604.30, %if.true.alloc.nim.606.6 ]
  tail call fastcc void @addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(ptr nonnull %a, ptr %call.res.alloc.nim.553.24.i12.sink)
  br label %if.end.alloc.nim.599.2

if.end.alloc.nim.599.2:                           ; preds = %if.end.alloc.nim.599.2.sink.split, %removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw.exit, %if.false.alloc.nim.600.4
  %result.0 = phi ptr [ %call.res.alloc.nim.604.30, %if.false.alloc.nim.600.4 ], [ %load.bra.arr.geparr.alloc.nim.193.13.i, %removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw.exit ], [ %result.0.ph, %if.end.alloc.nim.599.2.sink.split ]
  store i64 1, ptr %result.0, align 8
  %dot.f12.load.arg.a9 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 12
  %cast.pi.alloc.nim.416.11.i = ptrtoint ptr %result.0 to i64
  %binop.AShr.alloc.nim.416.32.i = ashr i64 %cast.pi.alloc.nim.416.11.i, 12
  tail call fastcc void @incl__tSnfTXv7GxXoDyFDm9bvzqg(ptr nonnull %a, ptr nonnull %dot.f12.load.arg.a9, i64 %binop.AShr.alloc.nim.416.32.i)
  %dot.f9.load.arg.a10 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 9
  %load.dot.f9.load.arg.a10 = load i64, ptr %dot.f9.load.arg.a10, align 8
  %inc.nv.alloc.nim.617.5 = sub i64 %load.dot.f9.load.arg.a10, %IntSLE.alloc.nim.171.9.i
  store i64 %inc.nv.alloc.nim.617.5, ptr %dot.f9.load.arg.a10, align 8
  ret ptr %result.0
}

define internal fastcc ptr @requestOsChunks__stlXHMKRKFIGOvq8t4ynRQ_2(ptr nocapture %a, i64 %size) unnamed_addr #2 {
secAlloca:
  %dot.f18.load.arg.a = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 18
  %load.dot.f18.load.arg.a = load i8, ptr %dot.f18.load.arg.a, align 1
  %not.load.dot.f18.load.arg.a = icmp eq i8 %load.dot.f18.load.arg.a, 0
  br i1 %not.load.dot.f18.load.arg.a, label %if.true.alloc.nim.438.4, label %secAlloca.if.end.alloc.nim.438.4_crit_edge

secAlloca.if.end.alloc.nim.438.4_crit_edge:       ; preds = %secAlloca
  %dot.f19.load.arg.a8.phi.trans.insert = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 19
  %load.dot.f19.load.arg.a8.pre = load i64, ptr %dot.f19.load.arg.a8.phi.trans.insert, align 8
  br label %if.end.alloc.nim.438.4

if.true.alloc.nim.438.4:                          ; preds = %secAlloca
  %dot.f10.load.arg.a1 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 10
  %load.dot.f10.load.arg.a1 = load i64, ptr %dot.f10.load.arg.a1, align 8
  %icmp.IntSLT.alloc.nim.443.17 = icmp slt i64 %load.dot.f10.load.arg.a1, 65536
  %dot.f19.load.arg.a2 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 19
  br i1 %icmp.IntSLT.alloc.nim.443.17, label %if.true.alloc.nim.443.6, label %if.false.alloc.nim.443.6

if.true.alloc.nim.443.6:                          ; preds = %if.true.alloc.nim.438.4
  store i64 16384, ptr %dot.f19.load.arg.a2, align 8
  br label %if.end.alloc.nim.438.4

if.false.alloc.nim.443.6:                         ; preds = %if.true.alloc.nim.438.4
  %binop.AShr.alloc.nim.446.46 = lshr i64 %load.dot.f10.load.arg.a1, 2
  %binop.Add.osalloc.nim.11.14.i = add nuw nsw i64 %binop.AShr.alloc.nim.446.46, 4095
  %binop.And.osalloc.nim.11.23.i = and i64 %binop.Add.osalloc.nim.11.14.i, 9223372036854771712
  %load.dot.f19.load.arg.a4 = load i64, ptr %dot.f19.load.arg.a2, align 8
  %binop.Mul.alloc.nim.446.80 = shl i64 %load.dot.f19.load.arg.a4, 1
  %IntSLE.alloc.nim.446.29 = tail call i64 @llvm.smin.i64(i64 %binop.And.osalloc.nim.11.23.i, i64 %binop.Mul.alloc.nim.446.80)
  %IntSLE.alloc.nim.447.29 = tail call i64 @llvm.smin.i64(i64 %IntSLE.alloc.nim.446.29, i64 1056964608)
  store i64 %IntSLE.alloc.nim.447.29, ptr %dot.f19.load.arg.a2, align 8
  br label %if.end.alloc.nim.438.4

if.end.alloc.nim.438.4:                           ; preds = %secAlloca.if.end.alloc.nim.438.4_crit_edge, %if.true.alloc.nim.443.6, %if.false.alloc.nim.443.6
  %load.dot.f19.load.arg.a8 = phi i64 [ %load.dot.f19.load.arg.a8.pre, %secAlloca.if.end.alloc.nim.438.4_crit_edge ], [ 16384, %if.true.alloc.nim.443.6 ], [ %IntSLE.alloc.nim.447.29, %if.false.alloc.nim.443.6 ]
  %dot.f19.load.arg.a8 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 19
  %icmp.IntSLT.alloc.nim.450.10 = icmp slt i64 %load.dot.f19.load.arg.a8, %size
  br i1 %icmp.IntSLT.alloc.nim.450.10, label %if.true.alloc.nim.450.2, label %if.false.alloc.nim.450.2

if.true.alloc.nim.450.2:                          ; preds = %if.end.alloc.nim.438.4
  %call.res.alloc.nim.451.41 = tail call fastcc ptr @osAllocPages__HMOhWrY1QMa49a2BcJwSDZQ(i64 %size)
  br label %if.end.alloc.nim.450.2

if.false.alloc.nim.450.2:                         ; preds = %if.end.alloc.nim.438.4
  %call.res.osalloc.nim.148.17.i = tail call ptr @mmap(ptr null, i64 %load.dot.f19.load.arg.a8, i32 3, i32 34, i32 -1, i64 0)
  %magicptr = ptrtoint ptr %call.res.osalloc.nim.148.17.i to i64
  switch i64 %magicptr, label %if.false.alloc.nim.454.4 [
    i64 -1, label %if.true.alloc.nim.454.4
    i64 0, label %if.true.alloc.nim.454.4
  ]

if.true.alloc.nim.454.4:                          ; preds = %if.false.alloc.nim.450.2, %if.false.alloc.nim.450.2
  %call.res.alloc.nim.455.43 = tail call fastcc ptr @osAllocPages__HMOhWrY1QMa49a2BcJwSDZQ(i64 %size)
  store i8 1, ptr %dot.f18.load.arg.a, align 1
  br label %if.end.alloc.nim.450.2

if.false.alloc.nim.454.4:                         ; preds = %if.false.alloc.nim.450.2
  %load.dot.f19.load.arg.a11 = load i64, ptr %dot.f19.load.arg.a8, align 8
  br label %if.end.alloc.nim.450.2

if.end.alloc.nim.450.2:                           ; preds = %if.true.alloc.nim.454.4, %if.false.alloc.nim.454.4, %if.true.alloc.nim.450.2
  %size7.0 = phi i64 [ %size, %if.true.alloc.nim.450.2 ], [ %size, %if.true.alloc.nim.454.4 ], [ %load.dot.f19.load.arg.a11, %if.false.alloc.nim.454.4 ]
  %result.0 = phi ptr [ %call.res.alloc.nim.451.41, %if.true.alloc.nim.450.2 ], [ %call.res.alloc.nim.455.43, %if.true.alloc.nim.454.4 ], [ %call.res.osalloc.nim.148.17.i, %if.false.alloc.nim.454.4 ]
  %dot.f7.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 7
  %load.dot.f7.load.arg.a.i = load i64, ptr %dot.f7.load.arg.a.i, align 8
  %inc.nv.alloc.nim.237.5.i = add i64 %load.dot.f7.load.arg.a.i, %size7.0
  store i64 %inc.nv.alloc.nim.237.5.i, ptr %dot.f7.load.arg.a.i, align 8
  %dot.f9.load.arg.a13 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 9
  %load.dot.f9.load.arg.a13 = load i64, ptr %dot.f9.load.arg.a13, align 8
  %inc.nv.alloc.nim.461.5 = add i64 %load.dot.f9.load.arg.a13, %size7.0
  store i64 %inc.nv.alloc.nim.461.5, ptr %dot.f9.load.arg.a13, align 8
  %dot.f21.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 21
  br label %andor.end.alloc.nim.303.18.i

while.true.alloc.nim.303.2.i:                     ; preds = %andor.end.alloc.nim.303.18.i
  %dot.f2.load.it.alloc.nim.303.52.i = getelementptr inbounds %tyObject_HeapLinks__j59cWIu26x552M6CdkxYGCA, ptr %it.012.i, i64 0, i32 2
  %load.dot.f2.load.it.alloc.nim.303.52.i = load ptr, ptr %dot.f2.load.it.alloc.nim.303.52.i, align 8
  %icmp.IntEQ.alloc.nim.303.11.not.i = icmp eq ptr %load.dot.f2.load.it.alloc.nim.303.52.i, null
  br i1 %icmp.IntEQ.alloc.nim.303.11.not.i, label %if.true.alloc.nim.304.2.i, label %andor.end.alloc.nim.303.18.i

andor.end.alloc.nim.303.18.i:                     ; preds = %while.true.alloc.nim.303.2.i, %if.end.alloc.nim.450.2
  %it.012.i = phi ptr [ %dot.f21.load.arg.a.i, %if.end.alloc.nim.450.2 ], [ %load.dot.f2.load.it.alloc.nim.303.52.i, %while.true.alloc.nim.303.2.i ]
  %load.dot.f0.load.it.alloc.nim.303.22.i = load i64, ptr %it.012.i, align 8
  %icmp.IntSLE.alloc.nim.303.29.i = icmp sgt i64 %load.dot.f0.load.it.alloc.nim.303.22.i, 29
  br i1 %icmp.IntSLE.alloc.nim.303.29.i, label %while.true.alloc.nim.303.2.i, label %if.false.alloc.nim.304.2.i

if.true.alloc.nim.304.2.i:                        ; preds = %while.true.alloc.nim.303.2.i
  %call.res.alloc.nim.305.39.i = tail call fastcc ptr @llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg(ptr %a, i64 496)
  %dot.f2.load.n.alloc.nim.306.4.i = getelementptr inbounds %tyObject_HeapLinks__j59cWIu26x552M6CdkxYGCA, ptr %call.res.alloc.nim.305.39.i, i64 0, i32 2
  %dot.f2.dot.f21.load.arg.a2.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 21, i32 2
  %load.dot.f2.dot.f21.load.arg.a2.i = load ptr, ptr %dot.f2.dot.f21.load.arg.a2.i, align 8
  store ptr %load.dot.f2.dot.f21.load.arg.a2.i, ptr %dot.f2.load.n.alloc.nim.306.4.i, align 8
  store ptr %call.res.alloc.nim.305.39.i, ptr %dot.f2.dot.f21.load.arg.a2.i, align 8
  %dot.f1.load.n.alloc.nim.308.4.i = getelementptr inbounds %tyObject_HeapLinks__j59cWIu26x552M6CdkxYGCA, ptr %call.res.alloc.nim.305.39.i, i64 0, i32 1
  store ptr %result.0, ptr %dot.f1.load.n.alloc.nim.308.4.i, align 1
  %par.alloc.nim.308.16.sroa.3.0.bra.arr.geparr.alloc.nim.308.12.sroa_idx.i = getelementptr inbounds %tyObject_HeapLinks__j59cWIu26x552M6CdkxYGCA, ptr %call.res.alloc.nim.305.39.i, i64 0, i32 1, i64 0, i32 1
  store i64 %size7.0, ptr %par.alloc.nim.308.16.sroa.3.0.bra.arr.geparr.alloc.nim.308.12.sroa_idx.i, align 1
  store i64 1, ptr %call.res.alloc.nim.305.39.i, align 8
  br label %addHeapLink__LIRFHBfc9aX3C5dmMmLnpwA.exit

if.false.alloc.nim.304.2.i:                       ; preds = %andor.end.alloc.nim.303.18.i
  %bra.arr.geparr.alloc.nim.312.13.i = getelementptr inbounds %tyObject_HeapLinks__j59cWIu26x552M6CdkxYGCA, ptr %it.012.i, i64 0, i32 1, i64 %load.dot.f0.load.it.alloc.nim.303.22.i
  store ptr %result.0, ptr %bra.arr.geparr.alloc.nim.312.13.i, align 1
  %par.alloc.nim.312.17.sroa.3.0.bra.arr.geparr.alloc.nim.312.13.sroa_idx.i = getelementptr inbounds i8, ptr %bra.arr.geparr.alloc.nim.312.13.i, i64 8
  store i64 %size7.0, ptr %par.alloc.nim.312.17.sroa.3.0.bra.arr.geparr.alloc.nim.312.13.sroa_idx.i, align 1
  %load.dot.f0.load.it.alloc.nim.313.8.i = load i64, ptr %it.012.i, align 8
  %inc.nv.alloc.nim.313.8.i = add i64 %load.dot.f0.load.it.alloc.nim.313.8.i, 1
  store i64 %inc.nv.alloc.nim.313.8.i, ptr %it.012.i, align 8
  br label %addHeapLink__LIRFHBfc9aX3C5dmMmLnpwA.exit

addHeapLink__LIRFHBfc9aX3C5dmMmLnpwA.exit:        ; preds = %if.true.alloc.nim.304.2.i, %if.false.alloc.nim.304.2.i
  %dot.f1.load.result.alloc.nim.472.2 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %result.0, i64 0, i32 1
  %dot.f1.dot.f0.load.result.alloc.nim.474.2 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %result.0, i64 0, i32 1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %dot.f1.load.result.alloc.nim.472.2, i8 0, i64 16, i1 false)
  store i64 %size7.0, ptr %dot.f1.dot.f0.load.result.alloc.nim.474.2, align 8
  %cast.pi.alloc.nim.476.12 = ptrtoint ptr %result.0 to i64
  %binop.Add.arithmetics.nim.407.26.i = add i64 %size7.0, %cast.pi.alloc.nim.476.12
  %cast.ip.alloc.nim.478.13 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i to ptr
  %dot.f12.load.arg.a15 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 12
  %binop.AShr.alloc.nim.416.32.i = ashr i64 %binop.Add.arithmetics.nim.407.26.i, 12
  %binop.AShr.alloc.nim.343.27.i = ashr i64 %binop.Add.arithmetics.nim.407.26.i, 21
  %binop.And.alloc.nim.328.22.i.i = and i64 %binop.AShr.alloc.nim.343.27.i, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i = getelementptr inbounds [256 x ptr], ptr %dot.f12.load.arg.a15, i64 0, i64 %binop.And.alloc.nim.328.22.i.i
  br label %while.cmp.alloc.nim.329.2.i.i

while.cmp.alloc.nim.329.2.i.i:                    ; preds = %while.true.alloc.nim.329.2.i.i, %addHeapLink__LIRFHBfc9aX3C5dmMmLnpwA.exit
  %it.0.in.i.i = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i, %addHeapLink__LIRFHBfc9aX3C5dmMmLnpwA.exit ], [ %it.0.i.i, %while.true.alloc.nim.329.2.i.i ]
  %it.0.i.i = load ptr, ptr %it.0.in.i.i, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i = icmp eq ptr %it.0.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i, label %if.end.alloc.nim.479.2, label %while.true.alloc.nim.329.2.i.i

while.true.alloc.nim.329.2.i.i:                   ; preds = %while.cmp.alloc.nim.329.2.i.i
  %dot.f1.load.it.alloc.nim.330.7.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i, %binop.AShr.alloc.nim.343.27.i
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i, label %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit, label %while.cmp.alloc.nim.329.2.i.i

contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit:          ; preds = %while.true.alloc.nim.329.2.i.i
  %binop.And.alloc.nim.345.16.i = lshr i64 %binop.AShr.alloc.nim.416.32.i, 6
  %binop.AShr.alloc.nim.346.23.i = and i64 %binop.And.alloc.nim.345.16.i, 7
  %bra.arr.geparr.alloc.nim.346.20.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i, i64 0, i32 2, i64 %binop.AShr.alloc.nim.346.23.i
  %load.bra.arr.geparr.alloc.nim.346.20.i = load i64, ptr %bra.arr.geparr.alloc.nim.346.20.i, align 8
  %binop.And.alloc.nim.346.57.i = and i64 %binop.AShr.alloc.nim.416.32.i, 63
  %binop.Shl.alloc.nim.346.50.i = shl nuw i64 1, %binop.And.alloc.nim.346.57.i
  %binop.And.alloc.nim.346.37.i = and i64 %load.bra.arr.geparr.alloc.nim.346.20.i, %binop.Shl.alloc.nim.346.50.i
  %icmp.IntEQ.alloc.nim.346.72.i.not = icmp eq i64 %binop.And.alloc.nim.346.37.i, 0
  br i1 %icmp.IntEQ.alloc.nim.346.72.i.not, label %if.end.alloc.nim.479.2, label %if.true.alloc.nim.479.2

if.true.alloc.nim.479.2:                          ; preds = %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit
  %load.dot.f0.load.next.alloc.nim.481.29 = load i64, ptr %cast.ip.alloc.nim.478.13, align 8
  %binop.And.alloc.nim.481.43 = and i64 %load.dot.f0.load.next.alloc.nim.481.29, 1
  %binop.Or.alloc.nim.481.25 = or i64 %binop.And.alloc.nim.481.43, %size7.0
  store i64 %binop.Or.alloc.nim.481.25, ptr %cast.ip.alloc.nim.478.13, align 8
  br label %if.end.alloc.nim.479.2

if.end.alloc.nim.479.2:                           ; preds = %while.cmp.alloc.nim.329.2.i.i, %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit, %if.true.alloc.nim.479.2
  %dot.f11.load.arg.a16 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 11
  %load.dot.f11.load.arg.a16 = load i64, ptr %dot.f11.load.arg.a16, align 8
  %icmp.IntEQ.alloc.nim.483.31.not = icmp eq i64 %load.dot.f11.load.arg.a16, 0
  %.load.dot.f11.load.arg.a16 = select i1 %icmp.IntEQ.alloc.nim.483.31.not, i64 4096, i64 %load.dot.f11.load.arg.a16
  %binop.Sub.arithmetics.nim.418.26.i = sub i64 %cast.pi.alloc.nim.476.12, %.load.dot.f11.load.arg.a16
  %cast.ip.alloc.nim.486.13 = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i to ptr
  %binop.AShr.alloc.nim.416.32.i32 = ashr i64 %binop.Sub.arithmetics.nim.418.26.i, 12
  %binop.AShr.alloc.nim.343.27.i33 = ashr i64 %binop.Sub.arithmetics.nim.418.26.i, 21
  %binop.And.alloc.nim.328.22.i.i34 = and i64 %binop.AShr.alloc.nim.343.27.i33, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i35 = getelementptr inbounds [256 x ptr], ptr %dot.f12.load.arg.a15, i64 0, i64 %binop.And.alloc.nim.328.22.i.i34
  br label %while.cmp.alloc.nim.329.2.i.i39

while.cmp.alloc.nim.329.2.i.i39:                  ; preds = %while.true.alloc.nim.329.2.i.i43, %if.end.alloc.nim.479.2
  %it.0.in.i.i36 = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i35, %if.end.alloc.nim.479.2 ], [ %it.0.i.i37, %while.true.alloc.nim.329.2.i.i43 ]
  %it.0.i.i37 = load ptr, ptr %it.0.in.i.i36, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i38 = icmp eq ptr %it.0.i.i37, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i38, label %if.false.alloc.nim.487.2, label %while.true.alloc.nim.329.2.i.i43

while.true.alloc.nim.329.2.i.i43:                 ; preds = %while.cmp.alloc.nim.329.2.i.i39
  %dot.f1.load.it.alloc.nim.330.7.i.i40 = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i37, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i41 = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i40, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i42 = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i41, %binop.AShr.alloc.nim.343.27.i33
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i42, label %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit55, label %while.cmp.alloc.nim.329.2.i.i39

contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit55:        ; preds = %while.true.alloc.nim.329.2.i.i43
  %binop.And.alloc.nim.345.16.i44 = lshr i64 %binop.AShr.alloc.nim.416.32.i32, 6
  %binop.AShr.alloc.nim.346.23.i45 = and i64 %binop.And.alloc.nim.345.16.i44, 7
  %bra.arr.geparr.alloc.nim.346.20.i46 = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i37, i64 0, i32 2, i64 %binop.AShr.alloc.nim.346.23.i45
  %load.bra.arr.geparr.alloc.nim.346.20.i47 = load i64, ptr %bra.arr.geparr.alloc.nim.346.20.i46, align 8
  %binop.And.alloc.nim.346.57.i48 = and i64 %binop.AShr.alloc.nim.416.32.i32, 63
  %binop.Shl.alloc.nim.346.50.i49 = shl nuw i64 1, %binop.And.alloc.nim.346.57.i48
  %binop.And.alloc.nim.346.37.i50 = and i64 %load.bra.arr.geparr.alloc.nim.346.20.i47, %binop.Shl.alloc.nim.346.50.i49
  %icmp.IntEQ.alloc.nim.346.72.i51.not = icmp eq i64 %binop.And.alloc.nim.346.37.i50, 0
  br i1 %icmp.IntEQ.alloc.nim.346.72.i51.not, label %if.false.alloc.nim.487.2, label %andor.next.alloc.nim.487.38

andor.next.alloc.nim.487.38:                      ; preds = %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit55
  %dot.f1.load.prev.alloc.nim.487.42 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %cast.ip.alloc.nim.486.13, i64 0, i32 1
  %load.dot.f1.load.prev.alloc.nim.487.42 = load i64, ptr %dot.f1.load.prev.alloc.nim.487.42, align 8
  %icmp.IntEQ.alloc.nim.487.52.not = icmp eq i64 %load.dot.f1.load.prev.alloc.nim.487.42, %.load.dot.f11.load.arg.a16
  br i1 %icmp.IntEQ.alloc.nim.487.52.not, label %if.true.alloc.nim.487.2, label %if.false.alloc.nim.487.2

if.true.alloc.nim.487.2:                          ; preds = %andor.next.alloc.nim.487.38
  %load.dot.f0.dot.f0.load.result.alloc.nim.489.35 = load i64, ptr %result.0, align 8
  %binop.And.alloc.nim.489.51 = and i64 %load.dot.f0.dot.f0.load.result.alloc.nim.489.35, 1
  %binop.Or.alloc.nim.489.31 = or i64 %binop.And.alloc.nim.489.51, %.load.dot.f11.load.arg.a16
  br label %if.end.alloc.nim.487.2

if.false.alloc.nim.487.2:                         ; preds = %while.cmp.alloc.nim.329.2.i.i39, %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit55, %andor.next.alloc.nim.487.38
  %load.dot.f0.dot.f0.load.result.alloc.nim.491.28 = load i64, ptr %result.0, align 8
  %binop.And.alloc.nim.491.44 = and i64 %load.dot.f0.dot.f0.load.result.alloc.nim.491.28, 1
  br label %if.end.alloc.nim.487.2

if.end.alloc.nim.487.2:                           ; preds = %if.false.alloc.nim.487.2, %if.true.alloc.nim.487.2
  %storemerge = phi i64 [ %binop.And.alloc.nim.491.44, %if.false.alloc.nim.487.2 ], [ %binop.Or.alloc.nim.489.31, %if.true.alloc.nim.487.2 ]
  store i64 %storemerge, ptr %result.0, align 8
  store i64 %size7.0, ptr %dot.f11.load.arg.a16, align 8
  ret ptr %result.0
}

define internal fastcc ptr @osAllocPages__HMOhWrY1QMa49a2BcJwSDZQ(i64 %size) unnamed_addr #2 {
secAlloca:
  %call.res.osalloc.nim.142.17 = tail call ptr @mmap(ptr null, i64 %size, i32 3, i32 34, i32 -1, i64 0)
  %magicptr = ptrtoint ptr %call.res.osalloc.nim.142.17 to i64
  switch i64 %magicptr, label %secReturn [
    i64 -1, label %if.true.osalloc.nim.144.4
    i64 0, label %if.true.osalloc.nim.144.4
  ]

if.true.osalloc.nim.144.4:                        ; preds = %secAlloca, %secAlloca
  tail call fastcc void @raiseOutOfMem__mMRdr4sgmnykA9aWeM9aDZlw()
  unreachable

secReturn:                                        ; preds = %secAlloca
  ret ptr %call.res.osalloc.nim.142.17
}

declare ptr @mmap(ptr, i64, i32, i32, i32, i64) local_unnamed_addr #2

; Function Attrs: noinline noreturn nounwind
define internal fastcc void @raiseOutOfMem__mMRdr4sgmnykA9aWeM9aDZlw() unnamed_addr #3 {
secArgs:
  %load.stderr.mmdisp.nim.48.2 = load ptr, ptr @stderr, align 8
  tail call fastcc void @rawWrite(ptr %load.stderr.mmdisp.nim.48.2, ptr nonnull @.cstr.out_of_memory_)
  tail call void @exit(i64 1)
  unreachable
}

; Function Attrs: nofree nounwind
define internal fastcc void @rawWrite(ptr nocapture %f, ptr %s) unnamed_addr #4 {
secAlloca:
  %str.len.isnil.ansi_c.nim.227.40 = icmp eq ptr %s, null
  br i1 %str.len.isnil.ansi_c.nim.227.40, label %str.len.done.ansi_c.nim.227.40, label %str.len.load.ansi_c.nim.227.40

str.len.load.ansi_c.nim.227.40:                   ; preds = %secAlloca
  %str.len.call.ansi_c.nim.227.40 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %s)
  br label %str.len.done.ansi_c.nim.227.40

str.len.done.ansi_c.nim.227.40:                   ; preds = %str.len.load.ansi_c.nim.227.40, %secAlloca
  %str.len.ansi_c.nim.227.40 = phi i64 [ 0, %secAlloca ], [ %str.len.call.ansi_c.nim.227.40, %str.len.load.ansi_c.nim.227.40 ]
  %call.res.ansi_c.nim.227.18 = tail call i64 @fwrite(ptr %s, i64 1, i64 %str.len.ansi_c.nim.227.40, ptr %f)
  %call.res.ansi_c.nim.228.18 = tail call i32 @fflush(ptr %f)
  ret void
}

; Function Attrs: nofree nounwind
declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @fflush(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: noreturn nounwind
declare void @exit(i64) local_unnamed_addr #6

define internal fastcc ptr @llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg(ptr nocapture %a, i64 %size) unnamed_addr #2 {
secAlloca:
  %dot.f6.load.arg.a = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 6
  %load.dot.f6.load.arg.a = load ptr, ptr %dot.f6.load.arg.a, align 8
  %icmp.IntEQ.alloc.nim.252.13 = icmp eq ptr %load.dot.f6.load.arg.a, null
  br i1 %icmp.IntEQ.alloc.nim.252.13, label %if.true.alloc.nim.252.2, label %andor.end.alloc.nim.252.20

andor.end.alloc.nim.252.20:                       ; preds = %secAlloca
  %load.dot.f0.load.dot.f6.load.arg.a1 = load i64, ptr %load.dot.f6.load.arg.a, align 8
  %icmp.IntSLT.alloc.nim.252.28 = icmp slt i64 %load.dot.f0.load.dot.f6.load.arg.a1, %size
  br i1 %icmp.IntSLT.alloc.nim.252.28, label %if.true.alloc.nim.252.2, label %if.end.alloc.nim.252.2

if.true.alloc.nim.252.2:                          ; preds = %secAlloca, %andor.end.alloc.nim.252.20
  %call.res.alloc.nim.258.41 = tail call fastcc ptr @osAllocPages__HMOhWrY1QMa49a2BcJwSDZQ(i64 4096)
  store ptr %call.res.alloc.nim.258.41, ptr %dot.f6.load.arg.a, align 8
  %dot.f7.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 7
  %load.dot.f7.load.arg.a.i = load i64, ptr %dot.f7.load.arg.a.i, align 8
  %inc.nv.alloc.nim.237.5.i = add i64 %load.dot.f7.load.arg.a.i, 4096
  store i64 %inc.nv.alloc.nim.237.5.i, ptr %dot.f7.load.arg.a.i, align 8
  store i64 4072, ptr %call.res.alloc.nim.258.41, align 8
  %load.dot.f6.load.arg.a6 = load ptr, ptr %dot.f6.load.arg.a, align 8
  %dot.f1.load.dot.f6.load.arg.a6 = getelementptr inbounds %tyObject_LLChunk__9bzHzMJMXlkE6oU2AbeKJsg, ptr %load.dot.f6.load.arg.a6, i64 0, i32 1
  store i64 24, ptr %dot.f1.load.dot.f6.load.arg.a6, align 8
  %load.dot.f6.load.arg.a7 = load ptr, ptr %dot.f6.load.arg.a, align 8
  %dot.f2.load.dot.f6.load.arg.a7 = getelementptr inbounds %tyObject_LLChunk__9bzHzMJMXlkE6oU2AbeKJsg, ptr %load.dot.f6.load.arg.a7, i64 0, i32 2
  store ptr %load.dot.f6.load.arg.a, ptr %dot.f2.load.dot.f6.load.arg.a7, align 8
  %load.dot.f6.load.arg.a8.pre = load ptr, ptr %dot.f6.load.arg.a, align 8
  %load.dot.f0.load.dot.f6.load.arg.a10.pre = load i64, ptr %load.dot.f6.load.arg.a8.pre, align 8
  br label %if.end.alloc.nim.252.2

if.end.alloc.nim.252.2:                           ; preds = %andor.end.alloc.nim.252.20, %if.true.alloc.nim.252.2
  %load.dot.f0.load.dot.f6.load.arg.a10 = phi i64 [ %load.dot.f0.load.dot.f6.load.arg.a1, %andor.end.alloc.nim.252.20 ], [ %load.dot.f0.load.dot.f6.load.arg.a10.pre, %if.true.alloc.nim.252.2 ]
  %load.dot.f6.load.arg.a8 = phi ptr [ %load.dot.f6.load.arg.a, %andor.end.alloc.nim.252.20 ], [ %load.dot.f6.load.arg.a8.pre, %if.true.alloc.nim.252.2 ]
  %cast.pi.alloc.nim.265.25 = ptrtoint ptr %load.dot.f6.load.arg.a8 to i64
  %dot.f1.load.dot.f6.load.arg.a9 = getelementptr inbounds %tyObject_LLChunk__9bzHzMJMXlkE6oU2AbeKJsg, ptr %load.dot.f6.load.arg.a8, i64 0, i32 1
  %load.dot.f1.load.dot.f6.load.arg.a9 = load i64, ptr %dot.f1.load.dot.f6.load.arg.a9, align 8
  %binop.Add.alloc.nim.265.52 = add i64 %load.dot.f1.load.dot.f6.load.arg.a9, %cast.pi.alloc.nim.265.25
  %cast.ip.alloc.nim.265.11 = inttoptr i64 %binop.Add.alloc.nim.265.52 to ptr
  %inc.nv.alloc.nim.266.5 = sub i64 %load.dot.f0.load.dot.f6.load.arg.a10, %size
  store i64 %inc.nv.alloc.nim.266.5, ptr %load.dot.f6.load.arg.a8, align 8
  %load.dot.f6.load.arg.a12 = load ptr, ptr %dot.f6.load.arg.a, align 8
  %dot.f1.load.dot.f6.load.arg.a12 = getelementptr inbounds %tyObject_LLChunk__9bzHzMJMXlkE6oU2AbeKJsg, ptr %load.dot.f6.load.arg.a12, i64 0, i32 1
  %load.dot.f1.load.dot.f6.load.arg.a12 = load i64, ptr %dot.f1.load.dot.f6.load.arg.a12, align 8
  %inc.nv.alloc.nim.267.5 = add i64 %load.dot.f1.load.dot.f6.load.arg.a12, %size
  store i64 %inc.nv.alloc.nim.267.5, ptr %dot.f1.load.dot.f6.load.arg.a12, align 8
  tail call void @llvm.memset.p0.i64(ptr align 1 %cast.ip.alloc.nim.265.11, i8 0, i64 %size, i1 false)
  ret ptr %cast.ip.alloc.nim.265.11
}

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

define internal fastcc ptr @splitChunk2__gSNzk4aToVCSTE1opfEv2A(ptr nocapture %a, ptr %c, i64 %size) unnamed_addr #2 {
secAlloca:
  %cast.pi.alloc.nim.536.27 = ptrtoint ptr %c to i64
  %binop.Add.arithmetics.nim.407.26.i = add i64 %cast.pi.alloc.nim.536.27, %size
  %cast.ip.alloc.nim.536.11 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i to ptr
  %dot.f1.dot.f0.load.result.alloc.nim.537.2 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %cast.ip.alloc.nim.536.11, i64 0, i32 1
  %dot.f1.dot.f0.load.arg.c1 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %c, i64 0, i32 1
  %load.dot.f1.dot.f0.load.arg.c1 = load i64, ptr %dot.f1.dot.f0.load.arg.c1, align 8
  %binop.Sub.alloc.nim.537.23 = sub i64 %load.dot.f1.dot.f0.load.arg.c1, %size
  store i64 %binop.Sub.alloc.nim.537.23, ptr %dot.f1.dot.f0.load.result.alloc.nim.537.2, align 8
  %dot.f1.load.result.alloc.nim.541.2 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %cast.ip.alloc.nim.536.11, i64 0, i32 1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %dot.f1.load.result.alloc.nim.541.2, i8 0, i64 16, i1 false)
  store i64 %size, ptr %cast.ip.alloc.nim.536.11, align 8
  %load.dot.f1.dot.f0.load.arg.c1.i = load i64, ptr %dot.f1.dot.f0.load.arg.c1, align 8
  %binop.Add.arithmetics.nim.407.26.i.i = add i64 %load.dot.f1.dot.f0.load.arg.c1.i, %cast.pi.alloc.nim.536.27
  %cast.ip.alloc.nim.530.11.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i to ptr
  %dot.f12.load.arg.a.i.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 12
  %binop.AShr.alloc.nim.419.32.i.i.i = ashr i64 %binop.Add.arithmetics.nim.407.26.i.i, 12
  %binop.AShr.alloc.nim.343.27.i.i.i = ashr i64 %binop.Add.arithmetics.nim.407.26.i.i, 21
  %binop.And.alloc.nim.328.22.i.i.i.i = and i64 %binop.AShr.alloc.nim.343.27.i.i.i, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i.i.i = getelementptr inbounds [256 x ptr], ptr %dot.f12.load.arg.a.i.i, i64 0, i64 %binop.And.alloc.nim.328.22.i.i.i.i
  br label %while.cmp.alloc.nim.329.2.i.i.i.i

while.cmp.alloc.nim.329.2.i.i.i.i:                ; preds = %while.true.alloc.nim.329.2.i.i.i.i, %secAlloca
  %it.0.in.i.i.i.i = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i.i.i, %secAlloca ], [ %it.0.i.i.i.i, %while.true.alloc.nim.329.2.i.i.i.i ]
  %it.0.i.i.i.i = load ptr, ptr %it.0.in.i.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i.i.i = icmp eq ptr %it.0.i.i.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i.i.i, label %updatePrevSize__9b5Bu9akw7RalDC4isB4QVbg.exit, label %while.true.alloc.nim.329.2.i.i.i.i

while.true.alloc.nim.329.2.i.i.i.i:               ; preds = %while.cmp.alloc.nim.329.2.i.i.i.i
  %dot.f1.load.it.alloc.nim.330.7.i.i.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i.i, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i.i.i = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i.i.i = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i.i.i, %binop.AShr.alloc.nim.343.27.i.i.i
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i.i.i, label %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit.i, label %while.cmp.alloc.nim.329.2.i.i.i.i

isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit.i:     ; preds = %while.true.alloc.nim.329.2.i.i.i.i
  %binop.And.alloc.nim.345.16.i.i.i = lshr i64 %binop.AShr.alloc.nim.419.32.i.i.i, 6
  %binop.AShr.alloc.nim.346.23.i.i.i = and i64 %binop.And.alloc.nim.345.16.i.i.i, 7
  %bra.arr.geparr.alloc.nim.346.20.i.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i.i, i64 0, i32 2, i64 %binop.AShr.alloc.nim.346.23.i.i.i
  %load.bra.arr.geparr.alloc.nim.346.20.i.i.i = load i64, ptr %bra.arr.geparr.alloc.nim.346.20.i.i.i, align 8
  %binop.And.alloc.nim.346.57.i.i.i = and i64 %binop.AShr.alloc.nim.419.32.i.i.i, 63
  %binop.Shl.alloc.nim.346.50.i.i.i = shl nuw i64 1, %binop.And.alloc.nim.346.57.i.i.i
  %binop.And.alloc.nim.346.37.i.i.i = and i64 %load.bra.arr.geparr.alloc.nim.346.20.i.i.i, %binop.Shl.alloc.nim.346.50.i.i.i
  %icmp.IntEQ.alloc.nim.346.72.i.i.not.i = icmp eq i64 %binop.And.alloc.nim.346.37.i.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.346.72.i.i.not.i, label %updatePrevSize__9b5Bu9akw7RalDC4isB4QVbg.exit, label %if.true.alloc.nim.532.2.i

if.true.alloc.nim.532.2.i:                        ; preds = %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit.i
  %load.dot.f0.load.ri.alloc.nim.533.31.i = load i64, ptr %cast.ip.alloc.nim.530.11.i, align 8
  %binop.And.alloc.nim.533.43.i = and i64 %load.dot.f0.load.ri.alloc.nim.533.31.i, 1
  %binop.Or.alloc.nim.533.27.i = or i64 %binop.And.alloc.nim.533.43.i, %binop.Sub.alloc.nim.537.23
  store i64 %binop.Or.alloc.nim.533.27.i, ptr %cast.ip.alloc.nim.530.11.i, align 8
  br label %updatePrevSize__9b5Bu9akw7RalDC4isB4QVbg.exit

updatePrevSize__9b5Bu9akw7RalDC4isB4QVbg.exit:    ; preds = %while.cmp.alloc.nim.329.2.i.i.i.i, %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit.i, %if.true.alloc.nim.532.2.i
  store i64 %size, ptr %dot.f1.dot.f0.load.arg.c1, align 8
  %binop.AShr.alloc.nim.416.32.i = ashr i64 %binop.Add.arithmetics.nim.407.26.i, 12
  tail call fastcc void @incl__tSnfTXv7GxXoDyFDm9bvzqg(ptr %a, ptr nonnull %dot.f12.load.arg.a.i.i, i64 %binop.AShr.alloc.nim.416.32.i)
  ret ptr %cast.ip.alloc.nim.536.11
}

define internal fastcc void @incl__tSnfTXv7GxXoDyFDm9bvzqg(ptr nocapture %a, ptr nocapture %s, i64 %key) unnamed_addr #2 {
secAlloca:
  %binop.AShr.alloc.nim.351.30 = ashr i64 %key, 9
  %binop.And.alloc.nim.328.22.i.i = and i64 %binop.AShr.alloc.nim.351.30, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i = getelementptr inbounds [256 x ptr], ptr %s, i64 0, i64 %binop.And.alloc.nim.328.22.i.i
  br label %while.cmp.alloc.nim.329.2.i.i

while.cmp.alloc.nim.329.2.i.i:                    ; preds = %while.true.alloc.nim.329.2.i.i, %secAlloca
  %it.0.in.i.i = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i, %secAlloca ], [ %it.0.i.i, %while.true.alloc.nim.329.2.i.i ]
  %it.0.i.i = load ptr, ptr %it.0.in.i.i, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i = icmp eq ptr %it.0.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i, label %if.true.alloc.nim.336.2.i, label %while.true.alloc.nim.329.2.i.i

while.true.alloc.nim.329.2.i.i:                   ; preds = %while.cmp.alloc.nim.329.2.i.i
  %dot.f1.load.it.alloc.nim.330.7.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i, %binop.AShr.alloc.nim.351.30
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i, label %intSetPut__Cw86Sj6YgVACdT20AkWjcA.exit, label %while.cmp.alloc.nim.329.2.i.i

if.true.alloc.nim.336.2.i:                        ; preds = %while.cmp.alloc.nim.329.2.i.i
  %call.res.alloc.nim.337.33.i = tail call fastcc ptr @llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg(ptr %a, i64 80)
  %load.bra.arr.geparr.alloc.nim.338.24.i = load ptr, ptr %bra.arr.geparr.alloc.nim.328.17.i.i, align 8
  store ptr %load.bra.arr.geparr.alloc.nim.338.24.i, ptr %call.res.alloc.nim.337.33.i, align 8
  store ptr %call.res.alloc.nim.337.33.i, ptr %bra.arr.geparr.alloc.nim.328.17.i.i, align 8
  %dot.f1.load.result.alloc.nim.340.4.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %call.res.alloc.nim.337.33.i, i64 0, i32 1
  store i64 %binop.AShr.alloc.nim.351.30, ptr %dot.f1.load.result.alloc.nim.340.4.i, align 8
  br label %intSetPut__Cw86Sj6YgVACdT20AkWjcA.exit

intSetPut__Cw86Sj6YgVACdT20AkWjcA.exit:           ; preds = %while.true.alloc.nim.329.2.i.i, %if.true.alloc.nim.336.2.i
  %result.0.i = phi ptr [ %call.res.alloc.nim.337.33.i, %if.true.alloc.nim.336.2.i ], [ %it.0.i.i, %while.true.alloc.nim.329.2.i.i ]
  %binop.And.alloc.nim.352.14 = lshr i64 %key, 6
  %binop.AShr.alloc.nim.353.11 = and i64 %binop.And.alloc.nim.352.14, 7
  %bra.arr.geparr.alloc.nim.353.8 = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %result.0.i, i64 0, i32 2, i64 %binop.AShr.alloc.nim.353.11
  %load.bra.arr.geparr.alloc.nim.353.33 = load i64, ptr %bra.arr.geparr.alloc.nim.353.8, align 8
  %binop.And.alloc.nim.353.69 = and i64 %key, 63
  %binop.Shl.alloc.nim.353.62 = shl nuw i64 1, %binop.And.alloc.nim.353.69
  %binop.Or.alloc.nim.353.50 = or i64 %load.bra.arr.geparr.alloc.nim.353.33, %binop.Shl.alloc.nim.353.62
  store i64 %binop.Or.alloc.nim.353.50, ptr %bra.arr.geparr.alloc.nim.353.8, align 8
  ret void
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none)
define internal fastcc void @addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(ptr nocapture %a, ptr %b) unnamed_addr #8 {
secAlloca:
  %dot.f1.dot.f0.load.arg.b = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %b, i64 0, i32 1
  %load.dot.f1.dot.f0.load.arg.b = load i64, ptr %dot.f1.dot.f0.load.arg.b, align 8
  %toe.t.load.arg.r.i = trunc i64 %load.dot.f1.dot.f0.load.arg.b to i32
  %icmp.IntULE.alloc.nim.149.15.i.i = icmp ult i32 %toe.t.load.arg.r.i, 65536
  %icmp.IntULE.alloc.nim.150.18.i.i = icmp ult i32 %toe.t.load.arg.r.i, 256
  %..i.i = select i1 %icmp.IntULE.alloc.nim.150.18.i.i, i64 0, i64 8
  %icmp.IntULE.alloc.nim.152.18.i.i = icmp ult i32 %toe.t.load.arg.r.i, 16777216
  %.8.i.i = select i1 %icmp.IntULE.alloc.nim.152.18.i.i, i64 16, i64 24
  %ifx.res.alloc.nim.149.10.0.i.i = select i1 %icmp.IntULE.alloc.nim.149.15.i.i, i64 %..i.i, i64 %.8.i.i
  %toe.t.load.a.alloc.nim.153.40.i.i = trunc i64 %ifx.res.alloc.nim.149.10.0.i.i to i32
  %binop.LShr.alloc.nim.153.36.i.i = lshr i32 %toe.t.load.arg.r.i, %toe.t.load.a.alloc.nim.153.40.i.i
  %nie.z.binop.LShr.alloc.nim.153.36.i.i = zext i32 %binop.LShr.alloc.nim.153.36.i.i to i64
  %bra.arr.geparr.alloc.nim.153.28.i.i = getelementptr inbounds [256 x i8], ptr @fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ, i64 0, i64 %nie.z.binop.LShr.alloc.nim.153.36.i.i
  %load.bra.arr.geparr.alloc.nim.153.28.i.i = load i8, ptr %bra.arr.geparr.alloc.nim.153.28.i.i, align 1
  %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i = sext i8 %load.bra.arr.geparr.alloc.nim.153.28.i.i to i64
  %binop.Add.alloc.nim.153.45.i.i = add nsw i64 %ifx.res.alloc.nim.149.10.0.i.i, %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i
  %binop.Sub.alloc.nim.183.32.i = add nsw i64 %binop.Add.alloc.nim.153.45.i.i, -5
  %binop.AShr.alloc.nim.183.17.i = ashr i64 %load.dot.f1.dot.f0.load.arg.b, %binop.Sub.alloc.nim.183.32.i
  %binop.Sub.alloc.nim.183.47.i = add i64 %binop.AShr.alloc.nim.183.17.i, -32
  %inc.nv.alloc.nim.184.6.i = add nsw i64 %binop.Add.alloc.nim.153.45.i.i, -6
  %dot.f2.load.arg.b1 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %b, i64 0, i32 2
  store ptr null, ptr %dot.f2.load.arg.b1, align 8
  %dot.f1.load.arg.b2 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %b, i64 0, i32 1
  %bra.arr.geparr.alloc.nim.229.11 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 5, i64 %inc.nv.alloc.nim.184.6.i, i64 %binop.Sub.alloc.nim.183.47.i
  %load.bra.arr.geparr.alloc.nim.229.11 = load ptr, ptr %bra.arr.geparr.alloc.nim.229.11, align 8
  store ptr %load.bra.arr.geparr.alloc.nim.229.11, ptr %dot.f1.load.arg.b2, align 8
  %load.bra.arr.geparr.alloc.nim.230.5 = load ptr, ptr %bra.arr.geparr.alloc.nim.229.11, align 8
  %icmp.IntEQ.alloc.nim.230.11.not = icmp eq ptr %load.bra.arr.geparr.alloc.nim.230.5, null
  br i1 %icmp.IntEQ.alloc.nim.230.11.not, label %if.end.alloc.nim.230.2, label %if.true.alloc.nim.230.2

if.true.alloc.nim.230.2:                          ; preds = %secAlloca
  %dot.f2.load.bra.arr.geparr.alloc.nim.231.4 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %load.bra.arr.geparr.alloc.nim.230.5, i64 0, i32 2
  store ptr %b, ptr %dot.f2.load.bra.arr.geparr.alloc.nim.231.4, align 8
  br label %if.end.alloc.nim.230.2

if.end.alloc.nim.230.2:                           ; preds = %secAlloca, %if.true.alloc.nim.230.2
  store ptr %b, ptr %bra.arr.geparr.alloc.nim.229.11, align 8
  %bra.arr.geparr.alloc.nim.233.23 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 4, i64 %inc.nv.alloc.nim.184.6.i
  %load.load.arg.dest1.i = load i32, ptr %bra.arr.geparr.alloc.nim.233.23, align 4
  %binop.And.alloc.nim.159.31.i = and i64 %binop.AShr.alloc.nim.183.17.i, 31
  %binop.Shl.alloc.nim.159.23.i = shl nuw nsw i64 1, %binop.And.alloc.nim.159.31.i
  %binop.trunc.alloc.nim.159.23.i = trunc i64 %binop.Shl.alloc.nim.159.23.i to i32
  %binop.Or.alloc.nim.159.14.i = or i32 %load.load.arg.dest1.i, %binop.trunc.alloc.nim.159.23.i
  store i32 %binop.Or.alloc.nim.159.14.i, ptr %bra.arr.geparr.alloc.nim.233.23, align 4
  %dot.f3.load.arg.a18 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 3
  %load.load.arg.dest1.i28 = load i32, ptr %dot.f3.load.arg.a18, align 4
  %binop.And.alloc.nim.159.31.i29 = and i64 %inc.nv.alloc.nim.184.6.i, 31
  %binop.Shl.alloc.nim.159.23.i30 = shl nuw nsw i64 1, %binop.And.alloc.nim.159.31.i29
  %binop.trunc.alloc.nim.159.23.i31 = trunc i64 %binop.Shl.alloc.nim.159.23.i30 to i32
  %binop.Or.alloc.nim.159.14.i32 = or i32 %load.load.arg.dest1.i28, %binop.trunc.alloc.nim.159.23.i31
  store i32 %binop.Or.alloc.nim.159.14.i32, ptr %dot.f3.load.arg.a18, align 4
  ret void
}

define internal fastcc void @add__3D9aOyz4rDquPZKBlqn0xig(ptr %a, ptr nocapture %t, i64 %key, i64 %upperBound) unnamed_addr #2 {
secAlloca:
  %load.load.arg.t = load ptr, ptr %t, align 8
  %load.bra.arr.geparr.avltree.nim.12.45 = load ptr, ptr %load.load.arg.t, align 8
  %icmp.IntEQ.avltree.nim.55.7 = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.45, %load.load.arg.t
  br i1 %icmp.IntEQ.avltree.nim.55.7, label %if.true.avltree.nim.55.2, label %if.false.avltree.nim.55.2

if.true.avltree.nim.55.2:                         ; preds = %secAlloca
  %dot.f16.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 16
  %load.dot.f16.load.arg.a.i = load ptr, ptr %dot.f16.load.arg.a.i, align 8
  %icmp.IntEQ.alloc.nim.278.22.not.i = icmp eq ptr %load.dot.f16.load.arg.a.i, null
  br i1 %icmp.IntEQ.alloc.nim.278.22.not.i, label %if.false.alloc.nim.278.4.i, label %if.true.alloc.nim.278.4.i

if.true.alloc.nim.278.4.i:                        ; preds = %if.true.avltree.nim.55.2
  %load.bra.arr.geparr.alloc.nim.280.42.i = load ptr, ptr %load.dot.f16.load.arg.a.i, align 8
  store ptr %load.bra.arr.geparr.alloc.nim.280.42.i, ptr %dot.f16.load.arg.a.i, align 8
  br label %if.end.alloc.nim.278.4.i

if.false.alloc.nim.278.4.i:                       ; preds = %if.true.avltree.nim.55.2
  %call.res.alloc.nim.282.37.i = tail call fastcc ptr @llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg(ptr nonnull %a, i64 40)
  br label %if.end.alloc.nim.278.4.i

if.end.alloc.nim.278.4.i:                         ; preds = %if.false.alloc.nim.278.4.i, %if.true.alloc.nim.278.4.i
  %result.0.i = phi ptr [ %load.dot.f16.load.arg.a.i, %if.true.alloc.nim.278.4.i ], [ %call.res.alloc.nim.282.37.i, %if.false.alloc.nim.278.4.i ]
  %dot.f1.load.result.alloc.nim.285.4.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %result.0.i, i64 0, i32 1
  store i64 %key, ptr %dot.f1.load.result.alloc.nim.285.4.i, align 8
  %dot.f2.load.result.alloc.nim.286.4.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %result.0.i, i64 0, i32 2
  store i64 %upperBound, ptr %dot.f2.load.result.alloc.nim.286.4.i, align 8
  %dot.f20.load.arg.a.i.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 20
  %load.bra.arr.geparr.alloc.nim.273.18.i.i = load ptr, ptr %dot.f20.load.arg.a.i.i, align 8
  %icmp.IntEQ.alloc.nim.273.22.i.i = icmp eq ptr %load.bra.arr.geparr.alloc.nim.273.18.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.273.22.i.i, label %if.true.alloc.nim.273.4.i.i, label %allocAvlNode__Du8pyfSfDLyN9aoS2IcBsHg.exit

if.true.alloc.nim.273.4.i.i:                      ; preds = %if.end.alloc.nim.278.4.i
  store ptr %dot.f20.load.arg.a.i.i, ptr %dot.f20.load.arg.a.i.i, align 8
  %bra.arr.geparr.alloc.nim.275.17.i.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 20, i32 0, i64 1
  store ptr %dot.f20.load.arg.a.i.i, ptr %bra.arr.geparr.alloc.nim.275.17.i.i, align 8
  br label %allocAvlNode__Du8pyfSfDLyN9aoS2IcBsHg.exit

allocAvlNode__Du8pyfSfDLyN9aoS2IcBsHg.exit:       ; preds = %if.end.alloc.nim.278.4.i, %if.true.alloc.nim.273.4.i.i
  store ptr %dot.f20.load.arg.a.i.i, ptr %result.0.i, align 8
  %bra.arr.geparr.alloc.nim.289.15.i = getelementptr inbounds [2 x ptr], ptr %result.0.i, i64 0, i64 1
  store ptr %dot.f20.load.arg.a.i.i, ptr %bra.arr.geparr.alloc.nim.289.15.i, align 8
  %dot.f3.load.result.alloc.nim.290.4.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %result.0.i, i64 0, i32 3
  store i64 1, ptr %dot.f3.load.result.alloc.nim.290.4.i, align 8
  store ptr %result.0.i, ptr %t, align 8
  br label %secReturn

if.false.avltree.nim.55.2:                        ; preds = %secAlloca
  %dot.f1.load.load.arg.t4 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t, i64 0, i32 1
  %load.dot.f1.load.load.arg.t4 = load i64, ptr %dot.f1.load.load.arg.t4, align 8
  %icmp.IntULT.comparisons.nim.188.16.i.not = icmp ugt i64 %load.dot.f1.load.load.arg.t4, %key
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not, label %if.end.avltree.nim.58.4.sink.split, label %if.false.avltree.nim.58.4

if.false.avltree.nim.58.4:                        ; preds = %if.false.avltree.nim.55.2
  %icmp.IntULT.comparisons.nim.188.16.i25.not = icmp ult i64 %load.dot.f1.load.load.arg.t4, %key
  br i1 %icmp.IntULT.comparisons.nim.188.16.i25.not, label %if.true.avltree.nim.58.411, label %if.end.avltree.nim.58.4

if.true.avltree.nim.58.411:                       ; preds = %if.false.avltree.nim.58.4
  %bra.arr.geparr.avltree.nim.67.19 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t, i64 0, i64 1
  br label %if.end.avltree.nim.58.4.sink.split

if.end.avltree.nim.58.4.sink.split:               ; preds = %if.false.avltree.nim.55.2, %if.true.avltree.nim.58.411
  %bra.arr.geparr.avltree.nim.67.19.sink = phi ptr [ %bra.arr.geparr.avltree.nim.67.19, %if.true.avltree.nim.58.411 ], [ %load.load.arg.t, %if.false.avltree.nim.55.2 ]
  tail call fastcc void @add__3D9aOyz4rDquPZKBlqn0xig(ptr %a, ptr nonnull %bra.arr.geparr.avltree.nim.67.19.sink, i64 %key, i64 %upperBound)
  br label %if.end.avltree.nim.58.4

if.end.avltree.nim.58.4:                          ; preds = %if.end.avltree.nim.58.4.sink.split, %if.false.avltree.nim.58.4
  %load.load.arg.t.i = load ptr, ptr %t, align 8
  %load.bra.arr.geparr.avltree.nim.40.11.i = load ptr, ptr %load.load.arg.t.i, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.40.11.i, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i, align 8
  %dot.f3.load.load.arg.t1.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t.i, i64 0, i32 3
  %load.dot.f3.load.load.arg.t1.i = load i64, ptr %dot.f3.load.load.arg.t1.i, align 8
  %icmp.IntEQ.avltree.nim.40.21.i = icmp eq i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i, %load.dot.f3.load.load.arg.t1.i
  br i1 %icmp.IntEQ.avltree.nim.40.21.i, label %if.true.avltree.nim.40.2.i, label %skew__NJo8pxZdXEAIa7wkHls9cOw.exit

if.true.avltree.nim.40.2.i:                       ; preds = %if.end.avltree.nim.58.4
  store ptr %load.bra.arr.geparr.avltree.nim.40.11.i, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.43.25.i = getelementptr inbounds [2 x ptr], ptr %load.bra.arr.geparr.avltree.nim.40.11.i, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.43.25.i = load ptr, ptr %bra.arr.geparr.avltree.nim.43.25.i, align 8
  store ptr %load.bra.arr.geparr.avltree.nim.43.25.i, ptr %load.load.arg.t.i, align 8
  %load.load.arg.t6.i = load ptr, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.44.10.i = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t6.i, i64 0, i64 1
  store ptr %load.load.arg.t.i, ptr %bra.arr.geparr.avltree.nim.44.10.i, align 8
  %load.load.arg.t.i27.pre = load ptr, ptr %t, align 8
  %dot.f3.load.load.arg.t1.i28.phi.trans.insert = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t.i27.pre, i64 0, i32 3
  %load.dot.f3.load.load.arg.t1.i29.pre = load i64, ptr %dot.f3.load.load.arg.t1.i28.phi.trans.insert, align 8
  br label %skew__NJo8pxZdXEAIa7wkHls9cOw.exit

skew__NJo8pxZdXEAIa7wkHls9cOw.exit:               ; preds = %if.end.avltree.nim.58.4, %if.true.avltree.nim.40.2.i
  %load.dot.f3.load.load.arg.t1.i29 = phi i64 [ %load.dot.f3.load.load.arg.t1.i, %if.end.avltree.nim.58.4 ], [ %load.dot.f3.load.load.arg.t1.i29.pre, %if.true.avltree.nim.40.2.i ]
  %load.load.arg.t.i27 = phi ptr [ %load.load.arg.t.i, %if.end.avltree.nim.58.4 ], [ %load.load.arg.t.i27.pre, %if.true.avltree.nim.40.2.i ]
  %bra.arr.geparr.avltree.nim.47.11.i = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t.i27, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.47.11.i = load ptr, ptr %bra.arr.geparr.avltree.nim.47.11.i, align 8
  %bra.arr.geparr.avltree.nim.47.19.i = getelementptr inbounds [2 x ptr], ptr %load.bra.arr.geparr.avltree.nim.47.11.i, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.47.19.i = load ptr, ptr %bra.arr.geparr.avltree.nim.47.19.i, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.47.19.i, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i, align 8
  %icmp.IntEQ.avltree.nim.47.29.i = icmp eq i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i, %load.dot.f3.load.load.arg.t1.i29
  br i1 %icmp.IntEQ.avltree.nim.47.29.i, label %if.true.avltree.nim.47.2.i, label %secReturn

if.true.avltree.nim.47.2.i:                       ; preds = %skew__NJo8pxZdXEAIa7wkHls9cOw.exit
  store ptr %load.bra.arr.geparr.avltree.nim.47.11.i, ptr %t, align 8
  %load.bra.arr.geparr.avltree.nim.50.25.i = load ptr, ptr %load.bra.arr.geparr.avltree.nim.47.11.i, align 8
  store ptr %load.bra.arr.geparr.avltree.nim.50.25.i, ptr %bra.arr.geparr.avltree.nim.47.11.i, align 8
  %load.load.arg.t6.i30 = load ptr, ptr %t, align 8
  store ptr %load.load.arg.t.i27, ptr %load.load.arg.t6.i30, align 8
  %load.load.arg.t7.i = load ptr, ptr %t, align 8
  %dot.f3.load.load.arg.t7.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t7.i, i64 0, i32 3
  %load.dot.f3.load.load.arg.t7.i = load i64, ptr %dot.f3.load.load.arg.t7.i, align 8
  %inc.nv.avltree.nim.52.8.i = add i64 %load.dot.f3.load.load.arg.t7.i, 1
  store i64 %inc.nv.avltree.nim.52.8.i, ptr %dot.f3.load.load.arg.t7.i, align 8
  br label %secReturn

secReturn:                                        ; preds = %if.true.avltree.nim.47.2.i, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit, %allocAvlNode__Du8pyfSfDLyN9aoS2IcBsHg.exit
  ret void
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.sadd.with.overflow.i64(i64, i64) #9

; Function Attrs: cold noinline noreturn
define internal fastcc void @raiseOverflow() unnamed_addr #10 {
secArgs:
  tail call fastcc void @sysFatal__pO9abt7E7FWB3DInHeLgZeQ()
  unreachable
}

; Function Attrs: cold noreturn
define internal fastcc void @sysFatal__pO9abt7E7FWB3DInHeLgZeQ() unnamed_addr #11 {
nilcheck.done.load.objconstr.f3.objconstr.f0.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.44:
  %call.cp.newObj = tail call dereferenceable(48) ptr @newObj(ptr nonnull @.typeinfo.tyRef__yntUFkUrESG8ORSElDDY0g, i64 48)
  store ptr @.typeinfo.tyObject_OverflowDefect__j0N3G7lAxC9aYszSi2tJSuA, ptr %call.cp.newObj, align 16
  %name.load.objconstr.fatal.nim.54.4 = getelementptr inbounds %Exception, ptr %call.cp.newObj, i64 0, i32 2
  store ptr @.cstr.OverflowDefect, ptr %name.load.objconstr.fatal.nim.54.4, align 16
  %objconstr.f3.objconstr.f0.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.44 = getelementptr inbounds %Exception, ptr %call.cp.newObj, i64 0, i32 3
  %call.cp.copyStringRC1 = tail call fastcc ptr @copyStringRC1(ptr nonnull @.str.over__or_underfl..)
  store ptr %call.cp.copyStringRC1, ptr %objconstr.f3.objconstr.f0.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.44, align 8
  tail call fastcc void @nlvmRaise(ptr nonnull %call.cp.newObj)
  unreachable
}

define internal void @Marker_tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw(ptr nocapture readonly %v, i64 %op) {
secAlloca:
  %mk.exceptions.nim.39.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 1
  %load.mk.exceptions.nim.39.4 = load ptr, ptr %mk.exceptions.nim.39.4, align 8
  %toe.t.load.arg.op.i = trunc i64 %op to i8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.39.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.43.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 3
  %load.mk.exceptions.nim.43.4 = load ptr, ptr %mk.exceptions.nim.43.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.43.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.49.6 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 4
  %load.mk.exceptions.nim.49.6 = load ptr, ptr %mk.exceptions.nim.49.6, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.49.6, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.50.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 5
  %load.mk.exceptions.nim.50.4 = load ptr, ptr %mk.exceptions.nim.50.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.50.4, i8 %toe.t.load.arg.op.i)
  ret void
}

; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read)
define internal void @Marker_tySequence__p5fQJJ2fzImS5UoW39bqEdA(ptr readonly %v, i64 %op) #12 {
secAlloca:
  ret void
}

define internal void @Marker_tyRef__yntUFkUrESG8ORSElDDY0g(ptr nocapture readonly %v, i64 %op) {
secAlloca:
  %mk.exceptions.nim.39.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 1
  %load.mk.exceptions.nim.39.4 = load ptr, ptr %mk.exceptions.nim.39.4, align 8
  %toe.t.load.arg.op.i = trunc i64 %op to i8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.39.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.43.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 3
  %load.mk.exceptions.nim.43.4 = load ptr, ptr %mk.exceptions.nim.43.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.43.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.49.6 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 4
  %load.mk.exceptions.nim.49.6 = load ptr, ptr %mk.exceptions.nim.49.6, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.49.6, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.50.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 5
  %load.mk.exceptions.nim.50.4 = load ptr, ptr %mk.exceptions.nim.50.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.50.4, i8 %toe.t.load.arg.op.i)
  ret void
}

; Function Attrs: noinline allockind("alloc,zeroed") allocsize(1)
define linkonce_odr noalias nonnull align 16 ptr @newObj(ptr %typ, i64 %size) local_unnamed_addr #13 {
secAlloca:
  %call.res.gc.nim.486.20 = tail call ptr @rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(ptr %typ, i64 %size, ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q)
  tail call void @llvm.memset.p0.i64(ptr nonnull align 16 %call.res.gc.nim.486.20, i8 0, i64 %size, i1 false)
  ret ptr %call.res.gc.nim.486.20
}

; Function Attrs: allockind("alloc,uninitialized") allocsize(1)
define linkonce_odr noalias nonnull align 16 ptr @rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(ptr %typ, i64 %size, ptr %gch) local_unnamed_addr #1 {
secAlloca:
  tail call fastcc void @collectCT__XHio9cMpnLoH7GyCj1Z9besg(ptr %gch)
  %dot.f7.load.arg.gch1 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7
  %binop.Add.gc.nim.458.50 = add i64 %size, 16
  %call.res.gc.nim.458.32 = tail call ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull %dot.f7.load.arg.gch1, i64 %binop.Add.gc.nim.458.50)
  %dot.f1.load.res.gc.nim.462.2 = getelementptr inbounds %tyObject_Cell__nD1WneZb8PfM7AKNjgr63Q, ptr %call.res.gc.nim.458.32, i64 0, i32 1
  store ptr %typ, ptr %dot.f1.load.res.gc.nim.462.2, align 8
  store i64 4, ptr %call.res.gc.nim.458.32, align 16
  %dot.f3.load.arg.gch.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 3
  %load.dot.f0.dot.f3.load.arg.gch.i = load i64, ptr %dot.f3.load.arg.gch.i, align 8
  %dot.f2.dot.f3.load.arg.gch1.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 3, i32 2
  %load.dot.f2.dot.f3.load.arg.gch1.i = load ptr, ptr %dot.f2.dot.f3.load.arg.gch1.i, align 8
  %icmp.IntSLT.gc.nim.413.9.i = icmp sgt i64 %load.dot.f0.dot.f3.load.arg.gch.i, 8
  br i1 %icmp.IntSLT.gc.nim.413.9.i, label %if.true.gc.nim.413.4.i, label %if.false.gc.nim.413.4.i

if.true.gc.nim.413.4.i:                           ; preds = %secAlloca
  %binop.Sub.gc.nim.415.23.i = add nsw i64 %load.dot.f0.dot.f3.load.arg.gch.i, -1
  %bra.uarr.geparr.gc.nim.408.11.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %binop.Sub.gc.nim.415.23.i
  %load.bra.uarr.geparr.gc.nim.408.11.i = load ptr, ptr %bra.uarr.geparr.gc.nim.408.11.i, align 8
  %load.dot.f0.load.c.gc.nim.409.9.i = load i64, ptr %load.bra.uarr.geparr.gc.nim.408.11.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i.i = icmp ult i64 %load.dot.f0.load.c.gc.nim.409.9.i, 8
  br i1 %icmp.IntULE.comparisons.nim.179.16.i.i, label %if.end.gc.nim.415.21.i, label %if.true.gc.nim.415.21.i

if.true.gc.nim.415.21.i:                          ; preds = %if.true.gc.nim.413.4.i
  %binop.And.gc.nim.410.32.i = and i64 %load.dot.f0.load.c.gc.nim.409.9.i, -5
  store i64 %binop.And.gc.nim.410.32.i, ptr %load.bra.uarr.geparr.gc.nim.408.11.i, align 8
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.408.11.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.end.gc.nim.415.21.i:                           ; preds = %if.true.gc.nim.413.4.i
  %binop.Sub.gc.nim.416.23.i = add nsw i64 %load.dot.f0.dot.f3.load.arg.gch.i, -2
  %bra.uarr.geparr.gc.nim.408.115.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %binop.Sub.gc.nim.416.23.i
  %load.bra.uarr.geparr.gc.nim.408.115.i = load ptr, ptr %bra.uarr.geparr.gc.nim.408.115.i, align 8
  %load.dot.f0.load.c.gc.nim.409.96.i = load i64, ptr %load.bra.uarr.geparr.gc.nim.408.115.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i116.i = icmp ult i64 %load.dot.f0.load.c.gc.nim.409.96.i, 8
  br i1 %icmp.IntULE.comparisons.nim.179.16.i116.i, label %if.end.gc.nim.416.21.i, label %if.true.gc.nim.416.21.i

if.true.gc.nim.416.21.i:                          ; preds = %if.end.gc.nim.415.21.i
  %binop.And.gc.nim.410.3210.i = and i64 %load.dot.f0.load.c.gc.nim.409.96.i, -5
  store i64 %binop.And.gc.nim.410.3210.i, ptr %load.bra.uarr.geparr.gc.nim.408.115.i, align 8
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.408.115.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.end.gc.nim.416.21.i:                           ; preds = %if.end.gc.nim.415.21.i
  %binop.Sub.gc.nim.417.23.i = add nsw i64 %load.dot.f0.dot.f3.load.arg.gch.i, -3
  %bra.uarr.geparr.gc.nim.408.1118.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %binop.Sub.gc.nim.417.23.i
  %load.bra.uarr.geparr.gc.nim.408.1118.i = load ptr, ptr %bra.uarr.geparr.gc.nim.408.1118.i, align 8
  %load.dot.f0.load.c.gc.nim.409.919.i = load i64, ptr %load.bra.uarr.geparr.gc.nim.408.1118.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i118.i = icmp ult i64 %load.dot.f0.load.c.gc.nim.409.919.i, 8
  br i1 %icmp.IntULE.comparisons.nim.179.16.i118.i, label %if.end.gc.nim.417.21.i, label %if.true.gc.nim.417.21.i

if.true.gc.nim.417.21.i:                          ; preds = %if.end.gc.nim.416.21.i
  %binop.And.gc.nim.410.3223.i = and i64 %load.dot.f0.load.c.gc.nim.409.919.i, -5
  store i64 %binop.And.gc.nim.410.3223.i, ptr %load.bra.uarr.geparr.gc.nim.408.1118.i, align 8
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.408.1118.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.end.gc.nim.417.21.i:                           ; preds = %if.end.gc.nim.416.21.i
  %binop.Sub.gc.nim.418.23.i = add nsw i64 %load.dot.f0.dot.f3.load.arg.gch.i, -4
  %bra.uarr.geparr.gc.nim.408.1131.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %binop.Sub.gc.nim.418.23.i
  %load.bra.uarr.geparr.gc.nim.408.1131.i = load ptr, ptr %bra.uarr.geparr.gc.nim.408.1131.i, align 8
  %load.dot.f0.load.c.gc.nim.409.932.i = load i64, ptr %load.bra.uarr.geparr.gc.nim.408.1131.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i120.i = icmp ult i64 %load.dot.f0.load.c.gc.nim.409.932.i, 8
  br i1 %icmp.IntULE.comparisons.nim.179.16.i120.i, label %if.end.gc.nim.418.21.i, label %if.true.gc.nim.418.21.i

if.true.gc.nim.418.21.i:                          ; preds = %if.end.gc.nim.417.21.i
  %binop.And.gc.nim.410.3236.i = and i64 %load.dot.f0.load.c.gc.nim.409.932.i, -5
  store i64 %binop.And.gc.nim.410.3236.i, ptr %load.bra.uarr.geparr.gc.nim.408.1131.i, align 8
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.408.1131.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.end.gc.nim.418.21.i:                           ; preds = %if.end.gc.nim.417.21.i
  %binop.Sub.gc.nim.419.23.i = add nsw i64 %load.dot.f0.dot.f3.load.arg.gch.i, -5
  %bra.uarr.geparr.gc.nim.408.1144.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %binop.Sub.gc.nim.419.23.i
  %load.bra.uarr.geparr.gc.nim.408.1144.i = load ptr, ptr %bra.uarr.geparr.gc.nim.408.1144.i, align 8
  %load.dot.f0.load.c.gc.nim.409.945.i = load i64, ptr %load.bra.uarr.geparr.gc.nim.408.1144.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i122.i = icmp ult i64 %load.dot.f0.load.c.gc.nim.409.945.i, 8
  br i1 %icmp.IntULE.comparisons.nim.179.16.i122.i, label %if.end.gc.nim.419.21.i, label %if.true.gc.nim.419.21.i

if.true.gc.nim.419.21.i:                          ; preds = %if.end.gc.nim.418.21.i
  %binop.And.gc.nim.410.3249.i = and i64 %load.dot.f0.load.c.gc.nim.409.945.i, -5
  store i64 %binop.And.gc.nim.410.3249.i, ptr %load.bra.uarr.geparr.gc.nim.408.1144.i, align 8
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.408.1144.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.end.gc.nim.419.21.i:                           ; preds = %if.end.gc.nim.418.21.i
  %binop.Sub.gc.nim.420.23.i = add nsw i64 %load.dot.f0.dot.f3.load.arg.gch.i, -6
  %bra.uarr.geparr.gc.nim.408.1157.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %binop.Sub.gc.nim.420.23.i
  %load.bra.uarr.geparr.gc.nim.408.1157.i = load ptr, ptr %bra.uarr.geparr.gc.nim.408.1157.i, align 8
  %load.dot.f0.load.c.gc.nim.409.958.i = load i64, ptr %load.bra.uarr.geparr.gc.nim.408.1157.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i124.i = icmp ult i64 %load.dot.f0.load.c.gc.nim.409.958.i, 8
  br i1 %icmp.IntULE.comparisons.nim.179.16.i124.i, label %if.end.gc.nim.420.21.i, label %if.true.gc.nim.420.21.i

if.true.gc.nim.420.21.i:                          ; preds = %if.end.gc.nim.419.21.i
  %binop.And.gc.nim.410.3262.i = and i64 %load.dot.f0.load.c.gc.nim.409.958.i, -5
  store i64 %binop.And.gc.nim.410.3262.i, ptr %load.bra.uarr.geparr.gc.nim.408.1157.i, align 8
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.408.1157.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.end.gc.nim.420.21.i:                           ; preds = %if.end.gc.nim.419.21.i
  %binop.Sub.gc.nim.421.23.i = add nsw i64 %load.dot.f0.dot.f3.load.arg.gch.i, -7
  %bra.uarr.geparr.gc.nim.408.1170.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %binop.Sub.gc.nim.421.23.i
  %load.bra.uarr.geparr.gc.nim.408.1170.i = load ptr, ptr %bra.uarr.geparr.gc.nim.408.1170.i, align 8
  %load.dot.f0.load.c.gc.nim.409.971.i = load i64, ptr %load.bra.uarr.geparr.gc.nim.408.1170.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i126.i = icmp ult i64 %load.dot.f0.load.c.gc.nim.409.971.i, 8
  br i1 %icmp.IntULE.comparisons.nim.179.16.i126.i, label %if.end.gc.nim.421.21.i, label %if.true.gc.nim.421.21.i

if.true.gc.nim.421.21.i:                          ; preds = %if.end.gc.nim.420.21.i
  %binop.And.gc.nim.410.3275.i = and i64 %load.dot.f0.load.c.gc.nim.409.971.i, -5
  store i64 %binop.And.gc.nim.410.3275.i, ptr %load.bra.uarr.geparr.gc.nim.408.1170.i, align 8
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.408.1170.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.end.gc.nim.421.21.i:                           ; preds = %if.end.gc.nim.420.21.i
  %binop.Sub.gc.nim.422.23.i = add nsw i64 %load.dot.f0.dot.f3.load.arg.gch.i, -8
  %bra.uarr.geparr.gc.nim.408.1183.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %binop.Sub.gc.nim.422.23.i
  %load.bra.uarr.geparr.gc.nim.408.1183.i = load ptr, ptr %bra.uarr.geparr.gc.nim.408.1183.i, align 8
  %load.dot.f0.load.c.gc.nim.409.984.i = load i64, ptr %load.bra.uarr.geparr.gc.nim.408.1183.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i128.i = icmp ult i64 %load.dot.f0.load.c.gc.nim.409.984.i, 8
  br i1 %icmp.IntULE.comparisons.nim.179.16.i128.i, label %if.end.gc.nim.422.21.i, label %if.true.gc.nim.422.21.i

if.true.gc.nim.422.21.i:                          ; preds = %if.end.gc.nim.421.21.i
  %binop.And.gc.nim.410.3288.i = and i64 %load.dot.f0.load.c.gc.nim.409.984.i, -5
  store i64 %binop.And.gc.nim.410.3288.i, ptr %load.bra.uarr.geparr.gc.nim.408.1183.i, align 8
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.408.1183.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.end.gc.nim.422.21.i:                           ; preds = %if.end.gc.nim.421.21.i
  tail call fastcc void @add__W9aRfhn7HvnQTPAb8ajo1uw(ptr nonnull %dot.f3.load.arg.gch.i, ptr nonnull %call.res.gc.nim.458.32)
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

if.false.gc.nim.413.4.i:                          ; preds = %secAlloca
  %bra.uarr.geparr.gc.nim.425.7.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch1.i, i64 0, i64 %load.dot.f0.dot.f3.load.arg.gch.i
  store ptr %call.res.gc.nim.458.32, ptr %bra.uarr.geparr.gc.nim.425.7.i, align 8
  %load.dot.f0.dot.f3.load.arg.gch98.i = load i64, ptr %dot.f3.load.arg.gch.i, align 8
  %inc.nv.gc.nim.426.9.i = add i64 %load.dot.f0.dot.f3.load.arg.gch98.i, 1
  store i64 %inc.nv.gc.nim.426.9.i, ptr %dot.f3.load.arg.gch.i, align 8
  br label %addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit

addNewObjToZCT__xkq8ZbJr9bIUKHN9cK4tT5NA.exit:    ; preds = %if.true.gc.nim.415.21.i, %if.true.gc.nim.416.21.i, %if.true.gc.nim.417.21.i, %if.true.gc.nim.418.21.i, %if.true.gc.nim.419.21.i, %if.true.gc.nim.420.21.i, %if.true.gc.nim.421.21.i, %if.true.gc.nim.422.21.i, %if.end.gc.nim.422.21.i, %if.false.gc.nim.413.4.i
  %cast.pi.gc.nim.173.25.i = ptrtoint ptr %call.res.gc.nim.458.32 to i64
  %binop.Add.arithmetics.nim.407.26.i.i = add i64 %cast.pi.gc.nim.173.25.i, 16
  %cast.ip.gc.nim.173.11.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i to ptr
  ret ptr %cast.ip.gc.nim.173.11.i
}

define internal fastcc void @collectCT__XHio9cMpnLoH7GyCj1Z9besg(ptr %gch) unnamed_addr #2 {
secAlloca:
  %registers.i = alloca %jmp_buf, align 8
  %dot.f2.load.arg.gch = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 2
  %load.dot.f2.load.arg.gch = load i64, ptr %dot.f2.load.arg.gch, align 8
  %dot.f3.load.arg.gch1 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 3
  %load.dot.f0.dot.f3.load.arg.gch1 = load i64, ptr %dot.f3.load.arg.gch1, align 8
  %icmp.IntSLE.gc.nim.838.18.not = icmp sgt i64 %load.dot.f2.load.arg.gch, %load.dot.f0.dot.f3.load.arg.gch1
  br i1 %icmp.IntSLE.gc.nim.838.18.not, label %andor.end.gc.nim.838.38, label %andor.next.gc.nim.839.67

andor.end.gc.nim.838.38:                          ; preds = %secAlloca
  %dot.f1.load.arg.gch2 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 1
  %load.dot.f1.load.arg.gch2 = load i64, ptr %dot.f1.load.arg.gch2, align 8
  %dot.f10.load.arg.a.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 10
  %load.dot.f10.load.arg.a.i = load i64, ptr %dot.f10.load.arg.a.i, align 8
  %icmp.IntSLE.gc.nim.839.32.not = icmp sgt i64 %load.dot.f1.load.arg.gch2, %load.dot.f10.load.arg.a.i
  br i1 %icmp.IntSLE.gc.nim.839.32.not, label %secReturn, label %andor.next.gc.nim.839.67

andor.next.gc.nim.839.67:                         ; preds = %secAlloca, %andor.end.gc.nim.838.38
  %dot.f6.load.arg.gch4 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 6
  %load.dot.f6.load.arg.gch4 = load i64, ptr %dot.f6.load.arg.gch4, align 8
  %icmp.IntEQ.gc.nim.840.20.not = icmp eq i64 %load.dot.f6.load.arg.gch4, 0
  br i1 %icmp.IntEQ.gc.nim.840.20.not, label %if.true.gc.nim.838.2, label %secReturn

if.true.gc.nim.838.2:                             ; preds = %andor.next.gc.nim.839.67
  %dot.f8.load.arg.gch.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 8
  %dot.f3.dot.f8.load.arg.gch.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 8, i32 3
  %load.dot.f3.dot.f8.load.arg.gch1.i = load i64, ptr %dot.f3.dot.f8.load.arg.gch.i, align 8
  %call.res.gc.nim.812.64.i = tail call fastcc i64 @stackSize__0yw8cp0rOgL8i0O5kzzb0g()
  %IntSGE.gc.nim.812.31.i = tail call i64 @llvm.smax.i64(i64 %load.dot.f3.dot.f8.load.arg.gch1.i, i64 %call.res.gc.nim.812.64.i)
  store i64 %IntSGE.gc.nim.812.31.i, ptr %dot.f3.dot.f8.load.arg.gch.i, align 8
  %dot.f7.load.arg.gch2.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7
  %dot.f13.load.arg.a1.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 13
  %load.dot.f13.load.arg.a1.i = load ptr, ptr %dot.f13.load.arg.a1.i, align 8
  %load.bra.arr.geparr.avltree.nim.12.452.i.i = load ptr, ptr %load.dot.f13.load.arg.a1.i, align 8
  %icmp.IntEQ.avltree.nim.16.12.not3.i.i = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.452.i.i, %load.dot.f13.load.arg.a1.i
  br i1 %icmp.IntEQ.avltree.nim.16.12.not3.i.i, label %lowGauge__vu9a10GqvNeXA9alSqdG48cw.exit.i, label %while.true.avltree.nim.16.2.i.i

while.true.avltree.nim.16.2.i.i:                  ; preds = %if.true.gc.nim.838.2, %while.true.avltree.nim.16.2.i.i
  %load.bra.arr.geparr.avltree.nim.12.455.i.i = phi ptr [ %load.bra.arr.geparr.avltree.nim.12.45.i.i, %while.true.avltree.nim.16.2.i.i ], [ %load.bra.arr.geparr.avltree.nim.12.452.i.i, %if.true.gc.nim.838.2 ]
  %it.04.i.i = phi ptr [ %load.bra.arr.geparr.avltree.nim.12.455.i.i, %while.true.avltree.nim.16.2.i.i ], [ %load.dot.f13.load.arg.a1.i, %if.true.gc.nim.838.2 ]
  %load.bra.arr.geparr.avltree.nim.12.45.i.i = load ptr, ptr %load.bra.arr.geparr.avltree.nim.12.455.i.i, align 8
  %icmp.IntEQ.avltree.nim.16.12.not.i.i = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.45.i.i, %load.bra.arr.geparr.avltree.nim.12.455.i.i
  br i1 %icmp.IntEQ.avltree.nim.16.12.not.i.i, label %while.cmp.avltree.nim.16.2.secReturn_crit_edge.i.i, label %while.true.avltree.nim.16.2.i.i

while.cmp.avltree.nim.16.2.secReturn_crit_edge.i.i: ; preds = %while.true.avltree.nim.16.2.i.i
  %dot.f1.load.it.avltree.nim.17.13.le.i.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %it.04.i.i, i64 0, i32 1
  %load.dot.f1.load.it.avltree.nim.17.13.le.i.i = load i64, ptr %dot.f1.load.it.avltree.nim.17.13.le.i.i, align 8
  br label %lowGauge__vu9a10GqvNeXA9alSqdG48cw.exit.i

lowGauge__vu9a10GqvNeXA9alSqdG48cw.exit.i:        ; preds = %while.cmp.avltree.nim.16.2.secReturn_crit_edge.i.i, %if.true.gc.nim.838.2
  %result.0.lcssa.i.i = phi i64 [ %load.dot.f1.load.it.avltree.nim.17.13.le.i.i, %while.cmp.avltree.nim.16.2.secReturn_crit_edge.i.i ], [ 0, %if.true.gc.nim.838.2 ]
  store i64 %result.0.lcssa.i.i, ptr %dot.f7.load.arg.gch2.i, align 8
  %load.bra.arr.geparr.avltree.nim.12.452.i4.i = load ptr, ptr %load.dot.f13.load.arg.a1.i, align 8
  %icmp.IntEQ.avltree.nim.23.12.not3.i.i = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.452.i4.i, %load.dot.f13.load.arg.a1.i
  br i1 %icmp.IntEQ.avltree.nim.23.12.not3.i.i, label %prepareForInteriorPointerChecking__ot9aebHKDFT2OPbEVY47F9bQ.exit, label %while.true.avltree.nim.23.2.i.i

while.true.avltree.nim.23.2.i.i:                  ; preds = %lowGauge__vu9a10GqvNeXA9alSqdG48cw.exit.i, %while.true.avltree.nim.23.2.i.i
  %it.04.i5.i = phi ptr [ %load.bra.arr.geparr.avltree.nim.25.16.i.i, %while.true.avltree.nim.23.2.i.i ], [ %load.dot.f13.load.arg.a1.i, %lowGauge__vu9a10GqvNeXA9alSqdG48cw.exit.i ]
  %bra.arr.geparr.avltree.nim.25.16.i.i = getelementptr inbounds [2 x ptr], ptr %it.04.i5.i, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.25.16.i.i = load ptr, ptr %bra.arr.geparr.avltree.nim.25.16.i.i, align 8
  %load.bra.arr.geparr.avltree.nim.12.45.i6.i = load ptr, ptr %load.bra.arr.geparr.avltree.nim.25.16.i.i, align 8
  %icmp.IntEQ.avltree.nim.23.12.not.i.i = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.45.i6.i, %load.bra.arr.geparr.avltree.nim.25.16.i.i
  br i1 %icmp.IntEQ.avltree.nim.23.12.not.i.i, label %while.cmp.avltree.nim.23.2.secReturn_crit_edge.i.i, label %while.true.avltree.nim.23.2.i.i

while.cmp.avltree.nim.23.2.secReturn_crit_edge.i.i: ; preds = %while.true.avltree.nim.23.2.i.i
  %dot.f2.load.it.avltree.nim.24.13.le.i.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %it.04.i5.i, i64 0, i32 2
  %load.dot.f2.load.it.avltree.nim.24.13.le.i.i = load i64, ptr %dot.f2.load.it.avltree.nim.24.13.le.i.i, align 8
  br label %prepareForInteriorPointerChecking__ot9aebHKDFT2OPbEVY47F9bQ.exit

prepareForInteriorPointerChecking__ot9aebHKDFT2OPbEVY47F9bQ.exit: ; preds = %lowGauge__vu9a10GqvNeXA9alSqdG48cw.exit.i, %while.cmp.avltree.nim.23.2.secReturn_crit_edge.i.i
  %result.0.lcssa.i7.i = phi i64 [ %load.dot.f2.load.it.avltree.nim.24.13.le.i.i, %while.cmp.avltree.nim.23.2.secReturn_crit_edge.i.i ], [ -1, %lowGauge__vu9a10GqvNeXA9alSqdG48cw.exit.i ]
  %dot.f1.load.arg.a2.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 1
  store i64 %result.0.lcssa.i7.i, ptr %dot.f1.load.arg.a2.i, align 8
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %registers.i)
  %call.res.gc_common.nim.384.15.i = call i32 @setjmp(ptr nonnull %registers.i)
  %icmp.IntEQ.gc_common.nim.384.27.i = icmp eq i32 %call.res.gc_common.nim.384.15.i, 0
  br i1 %icmp.IntEQ.gc_common.nim.384.27.i, label %if.true.gc.nim.738.18.i, label %markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g.exit

if.true.gc.nim.738.18.i:                          ; preds = %prepareForInteriorPointerChecking__ot9aebHKDFT2OPbEVY47F9bQ.exit
  %load.dot.f0.load.stack.gc_common.nim.386.36.i = load ptr, ptr %gch, align 8
  %cast.pi.gc_common.nim.386.18.i = ptrtoint ptr %load.dot.f0.load.stack.gc_common.nim.386.36.i to i64
  %cast.pi.gc_common.nim.387.17.i = ptrtoint ptr %registers.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i = add i64 %cast.pi.gc_common.nim.387.17.i, 200
  %icmp.IntULT.comparisons.nim.188.16.i.not35.i = icmp ult ptr %registers.i, inttoptr (i64 -200 to ptr)
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not35.i, label %while.true.gc_common.nim.392.12.i, label %while.cmp.gc_common.nim.398.8.preheader.i

while.cmp.gc_common.nim.398.8.preheader.i:        ; preds = %while.true.gc_common.nim.392.12.i, %if.true.gc.nim.738.18.i
  %sp.0.lcssa.i = phi i64 [ %cast.pi.gc_common.nim.387.17.i, %if.true.gc.nim.738.18.i ], [ %binop.Add.arithmetics.nim.407.26.i30.i, %while.true.gc_common.nim.392.12.i ]
  %binop.Sub.gc_common.nim.398.24.i = add i64 %cast.pi.gc_common.nim.386.18.i, -64
  %icmp.IntULT.comparisons.nim.188.16.i31.not37.i = icmp ult i64 %sp.0.lcssa.i, %binop.Sub.gc_common.nim.398.24.i
  br i1 %icmp.IntULT.comparisons.nim.188.16.i31.not37.i, label %while.true.gc_common.nim.398.8.i, label %while.cmp.gc_common.nim.409.8.preheader.i

while.true.gc_common.nim.392.12.i:                ; preds = %if.true.gc.nim.738.18.i, %while.true.gc_common.nim.392.12.i
  %sp.036.i = phi i64 [ %binop.Add.arithmetics.nim.407.26.i30.i, %while.true.gc_common.nim.392.12.i ], [ %cast.pi.gc_common.nim.387.17.i, %if.true.gc.nim.738.18.i ]
  %cast.ip.gc_common.nim.393.26.i = inttoptr i64 %sp.036.i to ptr
  %load.cast.ip.gc_common.nim.393.26.i = load ptr, ptr %cast.ip.gc_common.nim.393.26.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.cast.ip.gc_common.nim.393.26.i)
  %binop.Add.arithmetics.nim.407.26.i30.i = add i64 %sp.036.i, 8
  %icmp.IntULT.comparisons.nim.188.16.i.not.i = icmp ult i64 %binop.Add.arithmetics.nim.407.26.i30.i, %binop.Add.arithmetics.nim.407.26.i.i
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not.i, label %while.true.gc_common.nim.392.12.i, label %while.cmp.gc_common.nim.398.8.preheader.i

while.cmp.gc_common.nim.409.8.preheader.i:        ; preds = %while.true.gc_common.nim.398.8.i, %while.cmp.gc_common.nim.398.8.preheader.i
  %sp.2.lcssa.i = phi i64 [ %sp.0.lcssa.i, %while.cmp.gc_common.nim.398.8.preheader.i ], [ %binop.Add.arithmetics.nim.407.26.i33.i, %while.true.gc_common.nim.398.8.i ]
  %icmp.IntULE.comparisons.nim.179.16.i.not40.i = icmp ugt i64 %sp.2.lcssa.i, %cast.pi.gc_common.nim.386.18.i
  br i1 %icmp.IntULE.comparisons.nim.179.16.i.not40.i, label %markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g.exit, label %while.true.gc_common.nim.409.8.i

while.true.gc_common.nim.398.8.i:                 ; preds = %while.cmp.gc_common.nim.398.8.preheader.i, %while.true.gc_common.nim.398.8.i
  %sp.238.i = phi i64 [ %binop.Add.arithmetics.nim.407.26.i33.i, %while.true.gc_common.nim.398.8.i ], [ %sp.0.lcssa.i, %while.cmp.gc_common.nim.398.8.preheader.i ]
  %cast.ip.gc_common.nim.399.22.i = inttoptr i64 %sp.238.i to ptr
  %load.bra.arr.geparr.gc_common.nim.399.43.i = load ptr, ptr %cast.ip.gc_common.nim.399.22.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.bra.arr.geparr.gc_common.nim.399.43.i)
  %bra.arr.geparr.gc_common.nim.400.43.i = getelementptr inbounds [8 x ptr], ptr %cast.ip.gc_common.nim.399.22.i, i64 0, i64 1
  %load.bra.arr.geparr.gc_common.nim.400.43.i = load ptr, ptr %bra.arr.geparr.gc_common.nim.400.43.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.bra.arr.geparr.gc_common.nim.400.43.i)
  %bra.arr.geparr.gc_common.nim.401.43.i = getelementptr inbounds [8 x ptr], ptr %cast.ip.gc_common.nim.399.22.i, i64 0, i64 2
  %load.bra.arr.geparr.gc_common.nim.401.43.i = load ptr, ptr %bra.arr.geparr.gc_common.nim.401.43.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.bra.arr.geparr.gc_common.nim.401.43.i)
  %bra.arr.geparr.gc_common.nim.402.43.i = getelementptr inbounds [8 x ptr], ptr %cast.ip.gc_common.nim.399.22.i, i64 0, i64 3
  %load.bra.arr.geparr.gc_common.nim.402.43.i = load ptr, ptr %bra.arr.geparr.gc_common.nim.402.43.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.bra.arr.geparr.gc_common.nim.402.43.i)
  %bra.arr.geparr.gc_common.nim.403.43.i = getelementptr inbounds [8 x ptr], ptr %cast.ip.gc_common.nim.399.22.i, i64 0, i64 4
  %load.bra.arr.geparr.gc_common.nim.403.43.i = load ptr, ptr %bra.arr.geparr.gc_common.nim.403.43.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.bra.arr.geparr.gc_common.nim.403.43.i)
  %bra.arr.geparr.gc_common.nim.404.43.i = getelementptr inbounds [8 x ptr], ptr %cast.ip.gc_common.nim.399.22.i, i64 0, i64 5
  %load.bra.arr.geparr.gc_common.nim.404.43.i = load ptr, ptr %bra.arr.geparr.gc_common.nim.404.43.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.bra.arr.geparr.gc_common.nim.404.43.i)
  %bra.arr.geparr.gc_common.nim.405.43.i = getelementptr inbounds [8 x ptr], ptr %cast.ip.gc_common.nim.399.22.i, i64 0, i64 6
  %load.bra.arr.geparr.gc_common.nim.405.43.i = load ptr, ptr %bra.arr.geparr.gc_common.nim.405.43.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.bra.arr.geparr.gc_common.nim.405.43.i)
  %bra.arr.geparr.gc_common.nim.406.43.i = getelementptr inbounds [8 x ptr], ptr %cast.ip.gc_common.nim.399.22.i, i64 0, i64 7
  %load.bra.arr.geparr.gc_common.nim.406.43.i = load ptr, ptr %bra.arr.geparr.gc_common.nim.406.43.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.bra.arr.geparr.gc_common.nim.406.43.i)
  %binop.Add.arithmetics.nim.407.26.i33.i = add i64 %sp.238.i, 64
  %icmp.IntULT.comparisons.nim.188.16.i31.not.i = icmp ult i64 %binop.Add.arithmetics.nim.407.26.i33.i, %binop.Sub.gc_common.nim.398.24.i
  br i1 %icmp.IntULT.comparisons.nim.188.16.i31.not.i, label %while.true.gc_common.nim.398.8.i, label %while.cmp.gc_common.nim.409.8.preheader.i

while.true.gc_common.nim.409.8.i:                 ; preds = %while.cmp.gc_common.nim.409.8.preheader.i, %while.true.gc_common.nim.409.8.i
  %sp.341.i = phi i64 [ %binop.Add.arithmetics.nim.407.26.i34.i, %while.true.gc_common.nim.409.8.i ], [ %sp.2.lcssa.i, %while.cmp.gc_common.nim.409.8.preheader.i ]
  %cast.ip.gc_common.nim.410.22.i = inttoptr i64 %sp.341.i to ptr
  %load.cast.ip.gc_common.nim.410.22.i = load ptr, ptr %cast.ip.gc_common.nim.410.22.i, align 8
  call fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nonnull %gch, ptr %load.cast.ip.gc_common.nim.410.22.i)
  %binop.Add.arithmetics.nim.407.26.i34.i = add i64 %sp.341.i, 8
  %icmp.IntULE.comparisons.nim.179.16.i.not.i = icmp ugt i64 %binop.Add.arithmetics.nim.407.26.i34.i, %cast.pi.gc_common.nim.386.18.i
  br i1 %icmp.IntULE.comparisons.nim.179.16.i.not.i, label %markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g.exit, label %while.true.gc_common.nim.409.8.i

markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g.exit: ; preds = %while.true.gc_common.nim.409.8.i, %prepareForInteriorPointerChecking__ot9aebHKDFT2OPbEVY47F9bQ.exit, %while.cmp.gc_common.nim.409.8.preheader.i
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %registers.i)
  %dot.f4.dot.f8.load.arg.gch4.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 8, i32 4
  %load.dot.f4.dot.f8.load.arg.gch5.i = load i64, ptr %dot.f4.dot.f8.load.arg.gch4.i, align 8
  %dot.f4.load.arg.gch6.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 4
  %load.dot.f0.dot.f4.load.arg.gch6.i = load i64, ptr %dot.f4.load.arg.gch6.i, align 8
  %IntSGE.gc.nim.816.30.i = call i64 @llvm.smax.i64(i64 %load.dot.f4.dot.f8.load.arg.gch5.i, i64 %load.dot.f0.dot.f4.load.arg.gch6.i)
  store i64 %IntSGE.gc.nim.816.30.i, ptr %dot.f4.dot.f8.load.arg.gch4.i, align 8
  %load.dot.f0.dot.f8.load.arg.gch7.i = load i64, ptr %dot.f8.load.arg.gch.i, align 8
  %inc.nv.gc.nim.817.5.i = add i64 %load.dot.f0.dot.f8.load.arg.gch7.i, 1
  store i64 %inc.nv.gc.nim.817.5.i, ptr %dot.f8.load.arg.gch.i, align 8
  call fastcc void @collectZCT__EN6T32AMm3va9bsrdxtF0cg(ptr %gch)
  %dot.f1.load.arg.gch9.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 1
  %load.dot.f1.load.arg.gch9.i = load i64, ptr %dot.f1.load.arg.gch9.i, align 8
  %dot.f10.load.arg.a.i11 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 10
  %load.dot.f10.load.arg.a.i12 = load i64, ptr %dot.f10.load.arg.a.i11, align 8
  %icmp.IntSLE.gc.nim.820.36.not.i = icmp sgt i64 %load.dot.f1.load.arg.gch9.i, %load.dot.f10.load.arg.a.i12
  br i1 %icmp.IntSLE.gc.nim.820.36.not.i, label %collectCTBody__XHio9cMpnLoH7GyCj1Z9besg_2.exit, label %while.cmp.gc.nim.701.2.i.preheader

while.cmp.gc.nim.701.2.i.preheader:               ; preds = %markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g.exit
  %load.dot.f0.dot.f3.load.arg.gch.i16 = load i64, ptr %dot.f3.load.arg.gch1, align 8
  %icmp.IntSLT.gc.nim.701.20.i17 = icmp sgt i64 %load.dot.f0.dot.f3.load.arg.gch.i16, 0
  br i1 %icmp.IntSLT.gc.nim.701.20.i17, label %while.true.gc.nim.701.2.i, label %while.false.gc.nim.701.2.i

while.true.gc.nim.701.2.i:                        ; preds = %while.cmp.gc.nim.701.2.i.preheader, %while.true.gc.nim.701.2.i
  call fastcc void @collectZCT__EN6T32AMm3va9bsrdxtF0cg(ptr nonnull %gch)
  %load.dot.f0.dot.f3.load.arg.gch.i = load i64, ptr %dot.f3.load.arg.gch1, align 8
  %icmp.IntSLT.gc.nim.701.20.i = icmp sgt i64 %load.dot.f0.dot.f3.load.arg.gch.i, 0
  br i1 %icmp.IntSLT.gc.nim.701.20.i, label %while.true.gc.nim.701.2.i, label %while.false.gc.nim.701.2.i

while.false.gc.nim.701.2.i:                       ; preds = %while.true.gc.nim.701.2.i, %while.cmp.gc.nim.701.2.i.preheader
  %dot.f9.load.arg.gch2.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 9
  %dot.f2.load.arg.s.i.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 9, i32 2
  %load.dot.f2.load.arg.s.i.i.i = load ptr, ptr %dot.f2.load.arg.s.i.i.i, align 8
  %icmp.IntEQ.cellsets.nim.99.11.not8.i.i.i = icmp eq ptr %load.dot.f2.load.arg.s.i.i.i, null
  br i1 %icmp.IntEQ.cellsets.nim.99.11.not8.i.i.i, label %cellsetReset__Y9c9cQhDWRSgYkHfKWcqFlsQ_2.exit.i, label %while.true.cellsets.nim.99.2.i.i.i

while.true.cellsets.nim.99.2.i.i.i:               ; preds = %while.false.gc.nim.701.2.i, %while.true.cellsets.nim.99.2.i.i.i
  %it.09.i.i.i = phi ptr [ %load.dot.f0.load.it.cellsets.nim.100.12.i.i.i, %while.true.cellsets.nim.99.2.i.i.i ], [ %load.dot.f2.load.arg.s.i.i.i, %while.false.gc.nim.701.2.i ]
  %load.dot.f0.load.it.cellsets.nim.100.12.i.i.i = load ptr, ptr %it.09.i.i.i, align 8
  %cast.pi.alloc.nim.914.26.i.i.i.i.i.i = ptrtoint ptr %it.09.i.i.i to i64
  %binop.Sub.arithmetics.nim.418.26.i.i.i.i.i.i.i = add i64 %cast.pi.alloc.nim.914.26.i.i.i.i.i.i, -16
  %cast.ip.alloc.nim.914.12.i.i.i.i.i.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i.i.i.i.i.i to ptr
  call fastcc void @rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), ptr %cast.ip.alloc.nim.914.12.i.i.i.i.i.i)
  %icmp.IntEQ.cellsets.nim.99.11.not.i.i.i = icmp eq ptr %load.dot.f0.load.it.cellsets.nim.100.12.i.i.i, null
  br i1 %icmp.IntEQ.cellsets.nim.99.11.not.i.i.i, label %cellsetReset__Y9c9cQhDWRSgYkHfKWcqFlsQ_2.exit.i, label %while.true.cellsets.nim.99.2.i.i.i

cellsetReset__Y9c9cQhDWRSgYkHfKWcqFlsQ_2.exit.i:  ; preds = %while.true.cellsets.nim.99.2.i.i.i, %while.false.gc.nim.701.2.i
  store ptr null, ptr %dot.f2.load.arg.s.i.i.i, align 8
  %dot.f3.load.arg.s2.i.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 9, i32 3
  %load.dot.f3.load.arg.s2.i.i.i = load ptr, ptr %dot.f3.load.arg.s2.i.i.i, align 8
  %cast.pi.alloc.nim.914.26.i.i.i5.i.i.i = ptrtoint ptr %load.dot.f3.load.arg.s2.i.i.i to i64
  %binop.Sub.arithmetics.nim.418.26.i.i.i.i6.i.i.i = add i64 %cast.pi.alloc.nim.914.26.i.i.i5.i.i.i, -16
  %cast.ip.alloc.nim.914.12.i.i.i7.i.i.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i.i.i6.i.i.i to ptr
  call fastcc void @rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), ptr %cast.ip.alloc.nim.914.12.i.i.i7.i.i.i)
  store ptr null, ptr %dot.f3.load.arg.s2.i.i.i, align 8
  store i64 0, ptr %dot.f9.load.arg.gch2.i, align 8
  %call.res.alloc.nim.899.21.i.i.i.i.i.i = call dereferenceable(8208) ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 8208)
  %dot.f1.load.result.alloc.nim.900.23.i.i.i.i.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i.i.i.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i.i.i.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i.i.i.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i.i.i.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i.i.i.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i.i.i.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i.i.i.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i.i.i.i.i to ptr
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %cast.ip.alloc.nim.902.13.i.i.i.i.i.i, i8 0, i64 8192, i1 false)
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i.i.i, ptr %dot.f3.load.arg.s2.i.i.i, align 8
  %dot.f1.load.arg.s1.i.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 9, i32 1
  store i64 1023, ptr %dot.f1.load.arg.s1.i.i.i, align 8
  store i64 0, ptr %dot.f9.load.arg.gch2.i, align 8
  store ptr null, ptr %dot.f2.load.arg.s.i.i.i, align 8
  %dot.f2.dot.f4.load.arg.gch3.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 4, i32 2
  %load.dot.f2.dot.f4.load.arg.gch3.i = load ptr, ptr %dot.f2.dot.f4.load.arg.gch3.i, align 8
  %load.dot.f0.dot.f4.load.arg.gch4.i = load i64, ptr %dot.f4.load.arg.gch6.i, align 8
  %binop.Sub.gc.nim.704.30.i = add i64 %load.dot.f0.dot.f4.load.arg.gch4.i, -1
  %icmp.IntSLE.iterators_1.nim.91.14.not.i818 = icmp slt i64 %binop.Sub.gc.nim.704.30.i, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not.i818, label %while.false.iterators_1.nim.91.4.i, label %while.true.iterators_1.nim.91.4.i10

while.true.iterators_1.nim.91.4.i10:              ; preds = %cellsetReset__Y9c9cQhDWRSgYkHfKWcqFlsQ_2.exit.i, %while.true.iterators_1.nim.91.4.i10
  %res.0.i19 = phi i64 [ %inc.nv.iterators_1.nim.93.9.i9, %while.true.iterators_1.nim.91.4.i10 ], [ 0, %cellsetReset__Y9c9cQhDWRSgYkHfKWcqFlsQ_2.exit.i ]
  %bra.uarr.geparr.gc.nim.706.16.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f4.load.arg.gch3.i, i64 0, i64 %res.0.i19
  %load.bra.uarr.geparr.gc.nim.706.16.i = load ptr, ptr %bra.uarr.geparr.gc.nim.706.16.i, align 8
  call fastcc void @markS__SOJE9bROCOc8iabVsKM64Sg(ptr %gch, ptr %load.bra.uarr.geparr.gc.nim.706.16.i)
  %inc.nv.iterators_1.nim.93.9.i9 = add i64 %res.0.i19, 1
  %icmp.IntSLE.iterators_1.nim.91.14.not.i8 = icmp sgt i64 %inc.nv.iterators_1.nim.93.9.i9, %binop.Sub.gc.nim.704.30.i
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not.i8, label %while.false.iterators_1.nim.91.4.i, label %while.true.iterators_1.nim.91.4.i10

while.false.iterators_1.nim.91.4.i:               ; preds = %while.true.iterators_1.nim.91.4.i10, %cellsetReset__Y9c9cQhDWRSgYkHfKWcqFlsQ_2.exit.i
  %dot.f11.load.arg.gch.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 11
  %load.dot.f11.load.arg.gch.i.i = load i64, ptr %dot.f11.load.arg.gch.i.i, align 8
  %icmp.IntEQ.gc.nim.640.20.i.i = icmp eq i64 %load.dot.f11.load.arg.gch.i.i, 0
  br i1 %icmp.IntEQ.gc.nim.640.20.i.i, label %if.true.gc.nim.640.2.i.i, label %if.end.gc.nim.640.2.i.i

if.true.gc.nim.640.2.i.i:                         ; preds = %while.false.iterators_1.nim.91.4.i
  %load.globalMarkersLen.gc.nim.641.18.i.i = load i64, ptr @globalMarkersLen, align 8
  %binop.Sub.gc.nim.641.34.i.i = add i64 %load.globalMarkersLen.gc.nim.641.18.i.i, -1
  %icmp.IntSLE.iterators_1.nim.91.14.not.i.i20 = icmp slt i64 %binop.Sub.gc.nim.641.34.i.i, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not.i.i20, label %if.end.gc.nim.640.2.i.i, label %while.true.iterators_1.nim.91.4.i.i

while.true.iterators_1.nim.91.4.i.i:              ; preds = %if.true.gc.nim.640.2.i.i, %while.true.iterators_1.nim.91.4.i.i
  %res.0.i.i21 = phi i64 [ %inc.nv.iterators_1.nim.93.9.i.i, %while.true.iterators_1.nim.91.4.i.i ], [ 0, %if.true.gc.nim.640.2.i.i ]
  %bra.arr.geparr.gc.nim.641.8.i.i = getelementptr inbounds [3500 x ptr], ptr @globalMarkers, i64 0, i64 %res.0.i.i21
  %load.bra.arr.geparr.gc.nim.641.8.i.i = load ptr, ptr %bra.arr.geparr.gc.nim.641.8.i.i, align 8
  call void %load.bra.arr.geparr.gc.nim.641.8.i.i()
  %inc.nv.iterators_1.nim.93.9.i.i = add i64 %res.0.i.i21, 1
  %icmp.IntSLE.iterators_1.nim.91.14.not.i.i = icmp sgt i64 %inc.nv.iterators_1.nim.93.9.i.i, %binop.Sub.gc.nim.641.34.i.i
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not.i.i, label %if.end.gc.nim.640.2.i.i, label %while.true.iterators_1.nim.91.4.i.i

if.end.gc.nim.640.2.i.i:                          ; preds = %while.true.iterators_1.nim.91.4.i.i, %if.true.gc.nim.640.2.i.i, %while.false.iterators_1.nim.91.4.i
  %load.threadLocalMarkersLen.gc.nim.642.16.i.i = load i64, ptr @threadLocalMarkersLen, align 8
  %binop.Sub.gc.nim.642.37.i.i = add i64 %load.threadLocalMarkersLen.gc.nim.642.16.i.i, -1
  %icmp.IntSLE.iterators_1.nim.91.147.not.i.i22 = icmp slt i64 %binop.Sub.gc.nim.642.37.i.i, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.147.not.i.i22, label %while.false.iterators_1.nim.91.46.i.i, label %while.true.iterators_1.nim.91.45.i.i

while.true.iterators_1.nim.91.45.i.i:             ; preds = %if.end.gc.nim.640.2.i.i, %while.true.iterators_1.nim.91.45.i.i
  %res3.0.i.i23 = phi i64 [ %inc.nv.iterators_1.nim.93.98.i.i, %while.true.iterators_1.nim.91.45.i.i ], [ 0, %if.end.gc.nim.640.2.i.i ]
  %bra.arr.geparr.gc.nim.642.6.i.i = getelementptr inbounds [3500 x ptr], ptr @threadLocalMarkers, i64 0, i64 %res3.0.i.i23
  %load.bra.arr.geparr.gc.nim.642.6.i.i = load ptr, ptr %bra.arr.geparr.gc.nim.642.6.i.i, align 8
  call void %load.bra.arr.geparr.gc.nim.642.6.i.i()
  %inc.nv.iterators_1.nim.93.98.i.i = add i64 %res3.0.i.i23, 1
  %icmp.IntSLE.iterators_1.nim.91.147.not.i.i = icmp sgt i64 %inc.nv.iterators_1.nim.93.98.i.i, %binop.Sub.gc.nim.642.37.i.i
  br i1 %icmp.IntSLE.iterators_1.nim.91.147.not.i.i, label %while.false.iterators_1.nim.91.46.i.i, label %while.true.iterators_1.nim.91.45.i.i

while.false.iterators_1.nim.91.46.i.i:            ; preds = %while.true.iterators_1.nim.91.45.i.i, %if.end.gc.nim.640.2.i.i
  %dot.f10.load.arg.gch9.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 10
  %dot.f2.dot.f10.load.arg.gch9.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 10, i32 2
  %load.dot.f2.dot.f10.load.arg.gch9.i.i = load ptr, ptr %dot.f2.dot.f10.load.arg.gch9.i.i, align 8
  %load.dot.f0.dot.f10.load.arg.gch12.i.i = load i64, ptr %dot.f10.load.arg.gch9.i.i, align 8
  %binop.Sub.gc.nim.644.39.i.i = add i64 %load.dot.f0.dot.f10.load.arg.gch12.i.i, -1
  %icmp.IntSLE.iterators_1.nim.91.1417.not.i.i24 = icmp slt i64 %binop.Sub.gc.nim.644.39.i.i, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.1417.not.i.i24, label %markGlobals__XHio9cMpnLoH7GyCj1Z9besg_4.exit.i, label %while.true.iterators_1.nim.91.415.i.i

while.true.iterators_1.nim.91.415.i.i:            ; preds = %while.false.iterators_1.nim.91.46.i.i, %while.true.iterators_1.nim.91.415.i.i
  %res13.0.i.i25 = phi i64 [ %inc.nv.iterators_1.nim.93.919.i.i, %while.true.iterators_1.nim.91.415.i.i ], [ 0, %while.false.iterators_1.nim.91.46.i.i ]
  %bra.uarr.geparr.gc.nim.644.6.i.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f10.load.arg.gch9.i.i, i64 0, i64 %res13.0.i.i25
  %load.bra.uarr.geparr.gc.nim.644.6.i.i = load ptr, ptr %bra.uarr.geparr.gc.nim.644.6.i.i, align 8
  call fastcc void @markS__SOJE9bROCOc8iabVsKM64Sg(ptr %gch, ptr %load.bra.uarr.geparr.gc.nim.644.6.i.i)
  %inc.nv.iterators_1.nim.93.919.i.i = add i64 %res13.0.i.i25, 1
  %icmp.IntSLE.iterators_1.nim.91.1417.not.i.i = icmp sgt i64 %inc.nv.iterators_1.nim.93.919.i.i, %binop.Sub.gc.nim.644.39.i.i
  br i1 %icmp.IntSLE.iterators_1.nim.91.1417.not.i.i, label %markGlobals__XHio9cMpnLoH7GyCj1Z9besg_4.exit.i, label %while.true.iterators_1.nim.91.415.i.i

markGlobals__XHio9cMpnLoH7GyCj1Z9besg_4.exit.i:   ; preds = %while.true.iterators_1.nim.91.415.i.i, %while.false.iterators_1.nim.91.46.i.i
  %dot.f17.dot.f7.load.arg.gch.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 17
  store i8 1, ptr %dot.f17.dot.f7.load.arg.gch.i.i, align 1
  %dot.f12.dot.f7.load.arg.gch1.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 12
  br label %while.true.iterators_1.nim.91.4.i10.i

while.true.iterators_1.nim.91.4.i10.i:            ; preds = %while.false.alloc.nim.366.4.i.i, %markGlobals__XHio9cMpnLoH7GyCj1Z9besg_4.exit.i
  %res.052.i.i = phi i64 [ 0, %markGlobals__XHio9cMpnLoH7GyCj1Z9besg_4.exit.i ], [ %inc.nv.iterators_1.nim.93.9.i11.i, %while.false.alloc.nim.366.4.i.i ]
  %bra.arr.geparr.alloc.nim.365.18.i.i = getelementptr inbounds [256 x ptr], ptr %dot.f12.dot.f7.load.arg.gch1.i.i, i64 0, i64 %res.052.i.i
  %r.049.i.i = load ptr, ptr %bra.arr.geparr.alloc.nim.365.18.i.i, align 8
  %icmp.IntEQ.alloc.nim.366.12.not50.i.i = icmp eq ptr %r.049.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.366.12.not50.i.i, label %while.false.alloc.nim.366.4.i.i, label %while.cmp.alloc.nim.368.6.preheader.i.i

while.cmp.alloc.nim.366.4.loopexit.i.i:           ; preds = %while.false.alloc.nim.372.8.i.i
  %r.0.i.i = load ptr, ptr %r.051.i.i, align 8
  %icmp.IntEQ.alloc.nim.366.12.not.i.i = icmp eq ptr %r.0.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.366.12.not.i.i, label %while.false.alloc.nim.366.4.i.i, label %while.cmp.alloc.nim.368.6.preheader.i.i

while.cmp.alloc.nim.368.6.preheader.i.i:          ; preds = %while.true.iterators_1.nim.91.4.i10.i, %while.cmp.alloc.nim.366.4.loopexit.i.i
  %r.051.i.i = phi ptr [ %r.0.i.i, %while.cmp.alloc.nim.366.4.loopexit.i.i ], [ %r.049.i.i, %while.true.iterators_1.nim.91.4.i10.i ]
  %dot.f1.load.r.alloc.nim.374.19.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %r.051.i.i, i64 0, i32 1
  br label %while.true.alloc.nim.368.6.i.i

while.true.alloc.nim.368.6.i.i:                   ; preds = %while.false.alloc.nim.372.8.i.i, %while.cmp.alloc.nim.368.6.preheader.i.i
  %i.048.i.i = phi i64 [ 0, %while.cmp.alloc.nim.368.6.preheader.i.i ], [ %inc.nv.alloc.nim.377.11.i.i, %while.false.alloc.nim.372.8.i.i ]
  %bra.arr.geparr.alloc.nim.369.22.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %r.051.i.i, i64 0, i32 2, i64 %i.048.i.i
  %load.bra.arr.geparr.alloc.nim.369.22.i.i = load i64, ptr %bra.arr.geparr.alloc.nim.369.22.i.i, align 8
  %icmp.IntEQ.alloc.nim.372.16.not45.i.i = icmp eq i64 %load.bra.arr.geparr.alloc.nim.369.22.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.372.16.not45.i.i, label %while.false.alloc.nim.372.8.i.i, label %while.true.alloc.nim.372.8.lr.ph.i.i

while.true.alloc.nim.372.8.lr.ph.i.i:             ; preds = %while.true.alloc.nim.368.6.i.i
  %binop.Shl.alloc.nim.374.47.i.i = shl i64 %i.048.i.i, 6
  br label %while.true.alloc.nim.372.8.i.i

while.true.alloc.nim.372.8.i.i:                   ; preds = %if.end.alloc.nim.373.10.i.i, %while.true.alloc.nim.372.8.lr.ph.i.i
  %w.047.i.i = phi i64 [ %load.bra.arr.geparr.alloc.nim.369.22.i.i, %while.true.alloc.nim.372.8.lr.ph.i.i ], [ %binop.LShr.alloc.nim.376.16.i.i, %if.end.alloc.nim.373.10.i.i ]
  %j.046.i.i = phi i64 [ 0, %while.true.alloc.nim.372.8.lr.ph.i.i ], [ %inc.nv.alloc.nim.375.13.i.i, %if.end.alloc.nim.373.10.i.i ]
  %binop.And.alloc.nim.373.16.i.i = and i64 %w.047.i.i, 1
  %icmp.IntEQ.alloc.nim.373.23.not.i.i = icmp eq i64 %binop.And.alloc.nim.373.16.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.373.23.not.i.i, label %if.end.alloc.nim.373.10.i.i, label %if.true.alloc.nim.373.10.i.i

if.true.alloc.nim.373.10.i.i:                     ; preds = %while.true.alloc.nim.372.8.i.i
  %load.dot.f1.load.r.alloc.nim.374.19.i.i = load i64, ptr %dot.f1.load.r.alloc.nim.374.19.i.i, align 8
  %binop.Shl.alloc.nim.374.25.i.i = shl i64 %load.dot.f1.load.r.alloc.nim.374.19.i.i, 9
  %binop.Add.arithmetics.nim.407.26.i.i.i = add nuw nsw i64 %j.046.i.i, %binop.Shl.alloc.nim.374.47.i.i
  %binop.Or.alloc.nim.388.6.i.i = or i64 %binop.Shl.alloc.nim.374.25.i.i, %binop.Add.arithmetics.nim.407.26.i.i.i
  %binop.AShr.alloc.nim.343.27.i.i.i = ashr i64 %binop.Or.alloc.nim.388.6.i.i, 9
  %binop.And.alloc.nim.328.22.i.i.i.i = and i64 %binop.AShr.alloc.nim.343.27.i.i.i, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i.i.i = getelementptr inbounds [256 x ptr], ptr %dot.f12.dot.f7.load.arg.gch1.i.i, i64 0, i64 %binop.And.alloc.nim.328.22.i.i.i.i
  br label %while.cmp.alloc.nim.329.2.i.i.i.i

while.cmp.alloc.nim.329.2.i.i.i.i:                ; preds = %while.true.alloc.nim.329.2.i.i.i.i, %if.true.alloc.nim.373.10.i.i
  %it.0.in.i.i.i.i = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i.i.i, %if.true.alloc.nim.373.10.i.i ], [ %it.0.i.i.i.i, %while.true.alloc.nim.329.2.i.i.i.i ]
  %it.0.i.i.i.i = load ptr, ptr %it.0.in.i.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i.i.i = icmp eq ptr %it.0.i.i.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i.i.i, label %if.end.alloc.nim.373.10.i.i, label %while.true.alloc.nim.329.2.i.i.i.i

while.true.alloc.nim.329.2.i.i.i.i:               ; preds = %while.cmp.alloc.nim.329.2.i.i.i.i
  %dot.f1.load.it.alloc.nim.330.7.i.i.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i.i, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i.i.i = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i.i.i = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i.i.i, %binop.AShr.alloc.nim.343.27.i.i.i
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i.i.i, label %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit.i.i, label %while.cmp.alloc.nim.329.2.i.i.i.i

contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit.i.i:      ; preds = %while.true.alloc.nim.329.2.i.i.i.i
  %binop.And.alloc.nim.345.16.i.i.i = lshr i64 %binop.Add.arithmetics.nim.407.26.i.i.i, 6
  %binop.AShr.alloc.nim.346.23.i.i.i = and i64 %binop.And.alloc.nim.345.16.i.i.i, 7
  %bra.arr.geparr.alloc.nim.346.20.i.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i.i, i64 0, i32 2, i64 %binop.AShr.alloc.nim.346.23.i.i.i
  %load.bra.arr.geparr.alloc.nim.346.20.i.i.i = load i64, ptr %bra.arr.geparr.alloc.nim.346.20.i.i.i, align 8
  %binop.And.alloc.nim.346.57.i.i.i = and i64 %j.046.i.i, 63
  %binop.Shl.alloc.nim.346.50.i.i.i = shl nuw i64 1, %binop.And.alloc.nim.346.57.i.i.i
  %binop.And.alloc.nim.346.37.i.i.i = and i64 %load.bra.arr.geparr.alloc.nim.346.20.i.i.i, %binop.Shl.alloc.nim.346.50.i.i.i
  %icmp.IntEQ.alloc.nim.346.72.i.not.i.i = icmp eq i64 %binop.And.alloc.nim.346.37.i.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.346.72.i.not.i.i, label %if.end.alloc.nim.373.10.i.i, label %if.true.alloc.nim.388.6.i.i

if.true.alloc.nim.388.6.i.i:                      ; preds = %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit.i.i
  %binop.Shl.alloc.nim.391.29.i.i = shl i64 %binop.Or.alloc.nim.388.6.i.i, 12
  %cast.ip.alloc.nim.391.14.i.i = inttoptr i64 %binop.Shl.alloc.nim.391.29.i.i to ptr
  %load.dot.f0.load.arg.c.i.i.i = load i64, ptr %cast.ip.alloc.nim.391.14.i.i, align 4096
  %binop.And.alloc.nim.384.23.i.i.i = and i64 %load.dot.f0.load.arg.c.i.i.i, 1
  %icmp.IntEQ.alloc.nim.384.30.i.not.i.i = icmp eq i64 %binop.And.alloc.nim.384.23.i.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.384.30.i.not.i.i, label %if.end.alloc.nim.373.10.i.i, label %if.true.alloc.nim.392.6.i.i

if.true.alloc.nim.392.6.i.i:                      ; preds = %if.true.alloc.nim.388.6.i.i
  %dot.f1.load.arg.c.i.i.i = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %cast.ip.alloc.nim.391.14.i.i, i64 0, i32 1
  %load.dot.f1.load.arg.c.i.i.i = load i64, ptr %dot.f1.load.arg.c.i.i.i, align 8
  %icmp.IntSLE.alloc.nim.381.18.i.i.i = icmp sgt i64 %load.dot.f1.load.arg.c.i.i.i, 4032
  br i1 %icmp.IntSLE.alloc.nim.381.18.i.i.i, label %if.false.alloc.nim.393.8.i.i, label %if.true.alloc.nim.393.8.i.i

if.true.alloc.nim.393.8.i.i:                      ; preds = %if.true.alloc.nim.392.6.i.i
  %dot.f7.load.c3.alloc.nim.397.41.i.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.391.14.i.i, i64 0, i32 7
  %cast.pi.alloc.nim.397.18.i.i = ptrtoint ptr %dot.f7.load.c3.alloc.nim.397.41.i.i to i64
  %dot.f5.load.c3.alloc.nim.398.26.i.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.391.14.i.i, i64 0, i32 5
  %load.dot.f5.load.c3.alloc.nim.398.26.i.i = load i64, ptr %dot.f5.load.c3.alloc.nim.398.26.i.i, align 16
  %binop.Add.alloc.nim.398.24.i.i = add i64 %load.dot.f5.load.c3.alloc.nim.398.26.i.i, %cast.pi.alloc.nim.397.18.i.i
  %icmp.IntULT.comparisons.nim.188.16.i.not43.i.i = icmp ugt i64 %binop.Add.alloc.nim.398.24.i.i, %cast.pi.alloc.nim.397.18.i.i
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not43.i.i, label %while.true.alloc.nim.399.10.i.i, label %if.end.alloc.nim.373.10.i.i

while.true.alloc.nim.399.10.i.i:                  ; preds = %if.true.alloc.nim.393.8.i.i, %if.end.gc.nim.621.6.i.i
  %a.044.i.i = phi i64 [ %binop.Add.arithmetics.nim.407.26.i34.i.i, %if.end.gc.nim.621.6.i.i ], [ %cast.pi.alloc.nim.397.18.i.i, %if.true.alloc.nim.393.8.i.i ]
  %cast.ip.gc.nim.621.6.i.i = inttoptr i64 %a.044.i.i to ptr
  %dot.f1.load.arg.p.i.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %cast.ip.gc.nim.621.6.i.i, i64 0, i32 1
  %load.dot.f1.load.arg.p.i.i.i = load i64, ptr %dot.f1.load.arg.p.i.i.i, align 8
  %icmp.IntULT.comparisons.nim.188.16.i.i.i.i = icmp ult i64 %load.dot.f1.load.arg.p.i.i.i, 2
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.i.i.i, label %if.end.gc.nim.621.6.i.i, label %if.true.gc.nim.621.6.i.i

if.true.gc.nim.621.6.i.i:                         ; preds = %while.true.alloc.nim.399.10.i.i
  %call.res.gc.nim.625.11.i.i = call fastcc i8 @contains__ClLkUQKF8KrRxQPdAJDd5w(ptr nonnull %dot.f9.load.arg.gch2.i, ptr nonnull %cast.ip.gc.nim.621.6.i.i)
  %not.call.res.gc.nim.625.11.i.i = icmp eq i8 %call.res.gc.nim.625.11.i.i, 0
  br i1 %not.call.res.gc.nim.625.11.i.i, label %if.true.gc.nim.625.6.i.i, label %if.end.gc.nim.621.6.i.i

if.true.gc.nim.625.6.i.i:                         ; preds = %if.true.gc.nim.621.6.i.i
  call fastcc void @freeCyclicCell__SOJE9bROCOc8iabVsKM64Sg_2(ptr %gch, ptr nonnull %cast.ip.gc.nim.621.6.i.i)
  br label %if.end.gc.nim.621.6.i.i

if.end.gc.nim.621.6.i.i:                          ; preds = %if.true.gc.nim.625.6.i.i, %if.true.gc.nim.621.6.i.i, %while.true.alloc.nim.399.10.i.i
  %binop.Add.arithmetics.nim.407.26.i34.i.i = add i64 %a.044.i.i, %load.dot.f1.load.arg.c.i.i.i
  %icmp.IntULT.comparisons.nim.188.16.i.not.i.i = icmp ult i64 %binop.Add.arithmetics.nim.407.26.i34.i.i, %binop.Add.alloc.nim.398.24.i.i
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not.i.i, label %while.true.alloc.nim.399.10.i.i, label %if.end.alloc.nim.373.10.i.i

if.false.alloc.nim.393.8.i.i:                     ; preds = %if.true.alloc.nim.392.6.i.i
  %dot.f3.load.c7.alloc.nim.404.21.i.i = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %cast.ip.alloc.nim.391.14.i.i, i64 0, i32 3
  %dot.f1.load.arg.p.i35.i.i = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %cast.ip.alloc.nim.391.14.i.i, i64 1, i32 0, i32 1
  %load.dot.f1.load.arg.p.i36.i.i = load i64, ptr %dot.f1.load.arg.p.i35.i.i, align 8
  %icmp.IntULT.comparisons.nim.188.16.i.i37.i.i = icmp ult i64 %load.dot.f1.load.arg.p.i36.i.i, 2
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.i37.i.i, label %if.end.alloc.nim.373.10.i.i, label %if.true.gc.nim.621.610.i.i

if.true.gc.nim.621.610.i.i:                       ; preds = %if.false.alloc.nim.393.8.i.i
  %call.res.gc.nim.625.1115.i.i = call fastcc i8 @contains__ClLkUQKF8KrRxQPdAJDd5w(ptr nonnull %dot.f9.load.arg.gch2.i, ptr nonnull %dot.f3.load.c7.alloc.nim.404.21.i.i)
  %not.call.res.gc.nim.625.1115.i.i = icmp eq i8 %call.res.gc.nim.625.1115.i.i, 0
  br i1 %not.call.res.gc.nim.625.1115.i.i, label %if.true.gc.nim.625.616.i.i, label %if.end.alloc.nim.373.10.i.i

if.true.gc.nim.625.616.i.i:                       ; preds = %if.true.gc.nim.621.610.i.i
  call fastcc void @freeCyclicCell__SOJE9bROCOc8iabVsKM64Sg_2(ptr %gch, ptr nonnull %dot.f3.load.c7.alloc.nim.404.21.i.i)
  br label %if.end.alloc.nim.373.10.i.i

if.end.alloc.nim.373.10.i.i:                      ; preds = %while.cmp.alloc.nim.329.2.i.i.i.i, %if.end.gc.nim.621.6.i.i, %if.true.gc.nim.625.616.i.i, %if.true.gc.nim.621.610.i.i, %if.false.alloc.nim.393.8.i.i, %if.true.alloc.nim.393.8.i.i, %if.true.alloc.nim.388.6.i.i, %contains__9b5xR7VBZVwQDvk5Nr9bDKdQ.exit.i.i, %while.true.alloc.nim.372.8.i.i
  %inc.nv.alloc.nim.375.13.i.i = add nuw nsw i64 %j.046.i.i, 1
  %binop.LShr.alloc.nim.376.16.i.i = lshr i64 %w.047.i.i, 1
  %icmp.IntEQ.alloc.nim.372.16.not.i.i = icmp ult i64 %w.047.i.i, 2
  br i1 %icmp.IntEQ.alloc.nim.372.16.not.i.i, label %while.false.alloc.nim.372.8.i.i, label %while.true.alloc.nim.372.8.i.i

while.false.alloc.nim.372.8.i.i:                  ; preds = %if.end.alloc.nim.373.10.i.i, %while.true.alloc.nim.368.6.i.i
  %inc.nv.alloc.nim.377.11.i.i = add nuw nsw i64 %i.048.i.i, 1
  %exitcond.not.i.i = icmp eq i64 %inc.nv.alloc.nim.377.11.i.i, 8
  br i1 %exitcond.not.i.i, label %while.cmp.alloc.nim.366.4.loopexit.i.i, label %while.true.alloc.nim.368.6.i.i

while.false.alloc.nim.366.4.i.i:                  ; preds = %while.cmp.alloc.nim.366.4.loopexit.i.i, %while.true.iterators_1.nim.91.4.i10.i
  %inc.nv.iterators_1.nim.93.9.i11.i = add nuw nsw i64 %res.052.i.i, 1
  %exitcond55.not.i.i = icmp eq i64 %inc.nv.iterators_1.nim.93.9.i11.i, 256
  br i1 %exitcond55.not.i.i, label %collectCycles__XHio9cMpnLoH7GyCj1Z9besg_3.exit, label %while.true.iterators_1.nim.91.4.i10.i

collectCycles__XHio9cMpnLoH7GyCj1Z9besg_3.exit:   ; preds = %while.false.alloc.nim.366.4.i.i
  store i8 0, ptr %dot.f17.dot.f7.load.arg.gch.i.i, align 1
  %dot.f1.dot.f8.load.arg.gch12.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 8, i32 1
  %load.dot.f1.dot.f8.load.arg.gch12.i = load i64, ptr %dot.f1.dot.f8.load.arg.gch12.i, align 8
  %inc.nv.gc.nim.823.11.i = add i64 %load.dot.f1.dot.f8.load.arg.gch12.i, 1
  store i64 %inc.nv.gc.nim.823.11.i, ptr %dot.f1.dot.f8.load.arg.gch12.i, align 8
  %load.i = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7, i32 10), align 16
  %binop.Mul.gc.nim.824.73.i = shl i64 %load.i, 1
  %IntSGE.gc.nim.824.32.i = call i64 @llvm.smax.i64(i64 %binop.Mul.gc.nim.824.73.i, i64 4194304)
  store i64 %IntSGE.gc.nim.824.32.i, ptr %dot.f1.load.arg.gch9.i, align 8
  %dot.f2.dot.f8.load.arg.gch14.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 8, i32 2
  %load.dot.f2.dot.f8.load.arg.gch15.i = load i64, ptr %dot.f2.dot.f8.load.arg.gch14.i, align 8
  %IntSGE.gc.nim.826.35.i = call i64 @llvm.smax.i64(i64 %load.dot.f2.dot.f8.load.arg.gch15.i, i64 %IntSGE.gc.nim.824.32.i)
  store i64 %IntSGE.gc.nim.826.35.i, ptr %dot.f2.dot.f8.load.arg.gch14.i, align 8
  br label %collectCTBody__XHio9cMpnLoH7GyCj1Z9besg_2.exit

collectCTBody__XHio9cMpnLoH7GyCj1Z9besg_2.exit:   ; preds = %markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g.exit, %collectCycles__XHio9cMpnLoH7GyCj1Z9besg_3.exit
  %dot.f2.dot.f4.load.arg.gch.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 4, i32 2
  %load.dot.f2.dot.f4.load.arg.gch.i = load ptr, ptr %dot.f2.dot.f4.load.arg.gch.i, align 8
  %load.dot.f0.dot.f4.load.arg.gch1.i = load i64, ptr %dot.f4.load.arg.gch6.i, align 8
  %binop.Sub.gc.nim.798.30.i = add i64 %load.dot.f0.dot.f4.load.arg.gch1.i, -1
  %icmp.IntSLE.iterators_1.nim.91.14.not5.i = icmp slt i64 %binop.Sub.gc.nim.798.30.i, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not5.i, label %unmarkStackAndRegisters__XHio9cMpnLoH7GyCj1Z9besg_6.exit, label %while.true.iterators_1.nim.91.4.i

while.true.iterators_1.nim.91.4.i:                ; preds = %collectCTBody__XHio9cMpnLoH7GyCj1Z9besg_2.exit, %while.true.iterators_1.nim.91.4.i
  %res.06.i = phi i64 [ %inc.nv.iterators_1.nim.93.9.i, %while.true.iterators_1.nim.91.4.i ], [ 0, %collectCTBody__XHio9cMpnLoH7GyCj1Z9besg_2.exit ]
  %bra.uarr.geparr.gc.nim.800.12.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f4.load.arg.gch.i, i64 0, i64 %res.06.i
  %load.bra.uarr.geparr.gc.nim.800.12.i = load ptr, ptr %bra.uarr.geparr.gc.nim.800.12.i, align 8
  call fastcc void @decRef__AT1eRuflKWyTTBdLjEDZbg_2(ptr %load.bra.uarr.geparr.gc.nim.800.12.i)
  %inc.nv.iterators_1.nim.93.9.i = add i64 %res.06.i, 1
  %icmp.IntSLE.iterators_1.nim.91.14.not.i = icmp sgt i64 %inc.nv.iterators_1.nim.93.9.i, %binop.Sub.gc.nim.798.30.i
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not.i, label %unmarkStackAndRegisters__XHio9cMpnLoH7GyCj1Z9besg_6.exit, label %while.true.iterators_1.nim.91.4.i

unmarkStackAndRegisters__XHio9cMpnLoH7GyCj1Z9besg_6.exit: ; preds = %while.true.iterators_1.nim.91.4.i, %collectCTBody__XHio9cMpnLoH7GyCj1Z9besg_2.exit
  store i64 0, ptr %dot.f4.load.arg.gch6.i, align 8
  %load.dot.f0.dot.f3.load.arg.gch7 = load i64, ptr %dot.f3.load.arg.gch1, align 8
  %binop.Mul.gc.nim.846.60 = shl i64 %load.dot.f0.dot.f3.load.arg.gch7, 1
  %IntSGE.gc.nim.846.26 = call i64 @llvm.smax.i64(i64 %binop.Mul.gc.nim.846.60, i64 500)
  store i64 %IntSGE.gc.nim.846.26, ptr %dot.f2.load.arg.gch, align 8
  br label %secReturn

secReturn:                                        ; preds = %andor.end.gc.nim.838.38, %unmarkStackAndRegisters__XHio9cMpnLoH7GyCj1Z9besg_6.exit, %andor.next.gc.nim.839.67
  ret void
}

; Function Attrs: mustprogress nofree noinline norecurse nounwind willreturn memory(read, inaccessiblemem: readwrite)
define internal fastcc i64 @stackSize__0yw8cp0rOgL8i0O5kzzb0g() unnamed_addr #14 {
secAlloca:
  %call.res.gc_common.nim.234.27 = tail call fastcc i64 @stackSize__VOU3z9bbtHMYBiCVB5tMX1g()
  ret i64 %call.res.gc_common.nim.234.27
}

; Function Attrs: mustprogress nofree noinline norecurse nounwind willreturn memory(read, argmem: none, inaccessiblemem: readwrite)
define internal fastcc i64 @stackSize__VOU3z9bbtHMYBiCVB5tMX1g() unnamed_addr #15 {
secAlloca:
  %pos = alloca ptr, align 8
  store ptr %pos, ptr %pos, align 8
  %load.pos.gc_common.nim.223.5 = load volatile ptr, ptr %pos, align 8
  %icmp.IntEQ.gc_common.nim.223.9.not = icmp eq ptr %load.pos.gc_common.nim.223.5, null
  br i1 %icmp.IntEQ.gc_common.nim.223.9.not, label %secReturn, label %if.true.gc_common.nim.223.2

if.true.gc_common.nim.223.2:                      ; preds = %secAlloca
  %load.dot.f0.load.arg.stack = load ptr, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, align 16
  %cast.pi.gc_common.nim.227.15 = ptrtoint ptr %load.dot.f0.load.arg.stack to i64
  %load.pos.gc_common.nim.227.68 = load volatile ptr, ptr %pos, align 8
  %cast.pi.gc_common.nim.227.50 = ptrtoint ptr %load.pos.gc_common.nim.227.68 to i64
  %binop.Sub.arithmetics.nim.418.26.i = sub i64 %cast.pi.gc_common.nim.227.15, %cast.pi.gc_common.nim.227.50
  br label %secReturn

secReturn:                                        ; preds = %secAlloca, %if.true.gc_common.nim.223.2
  %result.0 = phi i64 [ %binop.Sub.arithmetics.nim.418.26.i, %if.true.gc_common.nim.223.2 ], [ 0, %secAlloca ]
  ret i64 %result.0
}

declare i32 @setjmp(ptr) local_unnamed_addr #2

define internal fastcc void @gcMark__x5SbLN3uVBCsEa67N20nPw(ptr nocapture %gch, ptr %p) unnamed_addr #2 {
secAlloca:
  %cast.pi.gc.nim.713.10 = ptrtoint ptr %p to i64
  %icmp.IntULT.comparisons.nim.188.16.i.not = icmp ugt ptr %p, inttoptr (i64 4096 to ptr)
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not, label %if.true.gc.nim.714.2, label %secReturn

if.true.gc.nim.714.2:                             ; preds = %secAlloca
  %dot.f7.load.arg.gch = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7
  %dot.f12.load.arg.a.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 12
  %binop.AShr.alloc.nim.419.32.i.i.i = ashr i64 %cast.pi.gc.nim.713.10, 12
  %binop.AShr.alloc.nim.343.27.i.i.i = ashr i64 %cast.pi.gc.nim.713.10, 21
  %binop.And.alloc.nim.328.22.i.i.i.i = and i64 %binop.AShr.alloc.nim.343.27.i.i.i, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i.i.i = getelementptr inbounds [256 x ptr], ptr %dot.f12.load.arg.a.i.i, i64 0, i64 %binop.And.alloc.nim.328.22.i.i.i.i
  br label %while.cmp.alloc.nim.329.2.i.i.i.i

while.cmp.alloc.nim.329.2.i.i.i.i:                ; preds = %while.true.alloc.nim.329.2.i.i.i.i, %if.true.gc.nim.714.2
  %it.0.in.i.i.i.i = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i.i.i, %if.true.gc.nim.714.2 ], [ %it.0.i.i.i.i, %while.true.alloc.nim.329.2.i.i.i.i ]
  %it.0.i.i.i.i = load ptr, ptr %it.0.in.i.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i.i.i = icmp eq ptr %it.0.i.i.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i.i.i, label %if.false.alloc.nim.847.4.i, label %while.true.alloc.nim.329.2.i.i.i.i

while.true.alloc.nim.329.2.i.i.i.i:               ; preds = %while.cmp.alloc.nim.329.2.i.i.i.i
  %dot.f1.load.it.alloc.nim.330.7.i.i.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i.i, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i.i.i = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i.i.i = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i.i.i, %binop.AShr.alloc.nim.343.27.i.i.i
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i.i.i, label %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit.i, label %while.cmp.alloc.nim.329.2.i.i.i.i

isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit.i:     ; preds = %while.true.alloc.nim.329.2.i.i.i.i
  %binop.And.alloc.nim.345.16.i.i.i = lshr i64 %binop.AShr.alloc.nim.419.32.i.i.i, 6
  %binop.AShr.alloc.nim.346.23.i.i.i = and i64 %binop.And.alloc.nim.345.16.i.i.i, 7
  %bra.arr.geparr.alloc.nim.346.20.i.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i.i, i64 0, i32 2, i64 %binop.AShr.alloc.nim.346.23.i.i.i
  %load.bra.arr.geparr.alloc.nim.346.20.i.i.i = load i64, ptr %bra.arr.geparr.alloc.nim.346.20.i.i.i, align 8
  %binop.And.alloc.nim.346.57.i.i.i = and i64 %binop.AShr.alloc.nim.419.32.i.i.i, 63
  %binop.Shl.alloc.nim.346.50.i.i.i = shl nuw i64 1, %binop.And.alloc.nim.346.57.i.i.i
  %binop.And.alloc.nim.346.37.i.i.i = and i64 %load.bra.arr.geparr.alloc.nim.346.20.i.i.i, %binop.Shl.alloc.nim.346.50.i.i.i
  %icmp.IntEQ.alloc.nim.346.72.i.i.not.i = icmp eq i64 %binop.And.alloc.nim.346.37.i.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.346.72.i.i.not.i, label %if.false.alloc.nim.847.4.i, label %if.true.alloc.nim.847.4.i

if.true.alloc.nim.847.4.i:                        ; preds = %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit.i
  %binop.And.alloc.nim.422.45.i.i = and i64 %cast.pi.gc.nim.713.10, -4096
  %cast.ip.alloc.nim.422.11.i.i = inttoptr i64 %binop.And.alloc.nim.422.45.i.i to ptr
  %load.dot.f0.load.arg.c.i.i = load i64, ptr %cast.ip.alloc.nim.422.11.i.i, align 4096
  %binop.And.alloc.nim.384.23.i.i = and i64 %load.dot.f0.load.arg.c.i.i, 1
  %icmp.IntEQ.alloc.nim.384.30.i.not.i = icmp eq i64 %binop.And.alloc.nim.384.23.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.384.30.i.not.i, label %secReturn, label %if.true.alloc.nim.849.6.i

if.true.alloc.nim.849.6.i:                        ; preds = %if.true.alloc.nim.847.4.i
  %dot.f1.load.arg.c.i.i = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %cast.ip.alloc.nim.422.11.i.i, i64 0, i32 1
  %load.dot.f1.load.arg.c.i.i = load i64, ptr %dot.f1.load.arg.c.i.i, align 8
  %icmp.IntSLE.alloc.nim.381.18.i.i = icmp sgt i64 %load.dot.f1.load.arg.c.i.i, 4032
  br i1 %icmp.IntSLE.alloc.nim.381.18.i.i, label %if.false.alloc.nim.850.8.i, label %if.true.alloc.nim.850.8.i

if.true.alloc.nim.850.8.i:                        ; preds = %if.true.alloc.nim.849.6.i
  %binop.And.alloc.nim.852.45.i = and i64 %cast.pi.gc.nim.713.10, 4095
  %binop.Sub.arithmetics.nim.418.26.i.i = add nsw i64 %binop.And.alloc.nim.852.45.i, -64
  %dot.f5.load.c2.alloc.nim.854.13.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i.i, i64 0, i32 5
  %load.dot.f5.load.c2.alloc.nim.854.13.i = load i64, ptr %dot.f5.load.c2.alloc.nim.854.13.i, align 16
  %icmp.IntULT.comparisons.nim.188.16.i.not.i = icmp ult i64 %binop.Sub.arithmetics.nim.418.26.i.i, %load.dot.f5.load.c2.alloc.nim.854.13.i
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not.i, label %if.true.alloc.nim.854.10.i, label %secReturn

if.true.alloc.nim.854.10.i:                       ; preds = %if.true.alloc.nim.850.8.i
  %dot.f7.load.c2.alloc.nim.857.62.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i.i, i64 0, i32 7
  %cast.pi.alloc.nim.857.39.i = ptrtoint ptr %dot.f7.load.c2.alloc.nim.857.62.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i = add i64 %binop.Sub.arithmetics.nim.418.26.i.i, %cast.pi.alloc.nim.857.39.i
  %binop.URem.arithmetics.nim.451.26.i.i = urem i64 %binop.Sub.arithmetics.nim.418.26.i.i, %load.dot.f1.load.arg.c.i.i
  %binop.Sub.arithmetics.nim.418.26.i18.i = sub i64 %binop.Add.arithmetics.nim.407.26.i.i, %binop.URem.arithmetics.nim.451.26.i.i
  %cast.ip.alloc.nim.857.20.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i18.i to ptr
  %dot.f1.load.d.alloc.nim.859.15.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %cast.ip.alloc.nim.857.20.i, i64 0, i32 1
  br label %secReturn.sink.split.i

if.false.alloc.nim.850.8.i:                       ; preds = %if.true.alloc.nim.849.6.i
  %dot.f3.load.c4.alloc.nim.864.23.i = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %cast.ip.alloc.nim.422.11.i.i, i64 0, i32 3
  %icmp.IntULE.alloc.nim.865.15.not.i = icmp ugt ptr %dot.f3.load.c4.alloc.nim.864.23.i, %p
  br i1 %icmp.IntULE.alloc.nim.865.15.not.i, label %secReturn, label %andor.next.alloc.nim.865.20.i

andor.next.alloc.nim.865.20.i:                    ; preds = %if.false.alloc.nim.850.8.i
  %dot.f1.load.d5.alloc.nim.865.43.i = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %cast.ip.alloc.nim.422.11.i.i, i64 1, i32 0, i32 1
  br label %secReturn.sink.split.i

if.false.alloc.nim.847.4.i:                       ; preds = %while.cmp.alloc.nim.329.2.i.i.i.i, %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit.i
  %load.dot.f0.load.arg.a8.i = load i64, ptr %dot.f7.load.arg.gch, align 8
  %icmp.IntULE.comparisons.nim.179.16.i.not.i = icmp ugt i64 %load.dot.f0.load.arg.a8.i, %cast.pi.gc.nim.713.10
  br i1 %icmp.IntULE.comparisons.nim.179.16.i.not.i, label %secReturn, label %andor.next.alloc.nim.870.29.i

andor.next.alloc.nim.870.29.i:                    ; preds = %if.false.alloc.nim.847.4.i
  %dot.f1.load.arg.a9.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 1
  %load.dot.f1.load.arg.a9.i = load i64, ptr %dot.f1.load.arg.a9.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i23.not.i = icmp ult i64 %load.dot.f1.load.arg.a9.i, %cast.pi.gc.nim.713.10
  br i1 %icmp.IntULE.comparisons.nim.179.16.i23.not.i, label %secReturn, label %if.true.alloc.nim.870.6.i

if.true.alloc.nim.870.6.i:                        ; preds = %andor.next.alloc.nim.870.29.i
  %dot.f13.load.arg.a10.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7, i32 13
  %load.dot.f13.load.arg.a10.i = load ptr, ptr %dot.f13.load.arg.a10.i, align 8
  %load.bra.arr.geparr.avltree.nim.12.4510.i.i = load ptr, ptr %load.dot.f13.load.arg.a10.i, align 8
  %icmp.IntEQ.avltree.nim.35.12.not11.i.i = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.4510.i.i, %load.dot.f13.load.arg.a10.i
  br i1 %icmp.IntEQ.avltree.nim.35.12.not11.i.i, label %secReturn, label %while.true.avltree.nim.35.2.i.i

while.true.avltree.nim.35.2.i.i:                  ; preds = %if.true.alloc.nim.870.6.i, %if.end.avltree.nim.36.4.i.i
  %it.012.i.i = phi ptr [ %load.bra.arr.geparr.avltree.nim.37.16.i.i, %if.end.avltree.nim.36.4.i.i ], [ %load.dot.f13.load.arg.a10.i, %if.true.alloc.nim.870.6.i ]
  %dot.f1.load.it.avltree.nim.36.7.i.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %it.012.i.i, i64 0, i32 1
  %load.dot.f1.load.it.avltree.nim.36.7.i.i = load i64, ptr %dot.f1.load.it.avltree.nim.36.7.i.i, align 8
  %icmp.IntULE.comparisons.nim.179.16.i.not.i.i = icmp ugt i64 %load.dot.f1.load.it.avltree.nim.36.7.i.i, %cast.pi.gc.nim.713.10
  br i1 %icmp.IntULE.comparisons.nim.179.16.i.not.i.i, label %if.end.avltree.nim.36.4.i.i, label %andor.end.avltree.nim.36.22.i.i

andor.end.avltree.nim.36.22.i.i:                  ; preds = %while.true.avltree.nim.35.2.i.i
  %dot.f2.load.it.avltree.nim.36.33.i.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %it.012.i.i, i64 0, i32 2
  %load.dot.f2.load.it.avltree.nim.36.33.i.i = load i64, ptr %dot.f2.load.it.avltree.nim.36.33.i.i, align 8
  %icmp.IntULT.comparisons.nim.188.16.i.not.i.i = icmp ugt i64 %load.dot.f2.load.it.avltree.nim.36.33.i.i, %cast.pi.gc.nim.713.10
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not.i.i, label %if.true.alloc.nim.874.8.i, label %if.end.avltree.nim.36.4.i.i

if.end.avltree.nim.36.4.i.i:                      ; preds = %andor.end.avltree.nim.36.22.i.i, %while.true.avltree.nim.35.2.i.i
  %icmp.IntULT.comparisons.nim.188.16.i6.i.i = icmp ult i64 %load.dot.f1.load.it.avltree.nim.36.7.i.i, %cast.pi.gc.nim.713.10
  %toe.z.ord.bool.avltree.nim.37.20.i.i = zext i1 %icmp.IntULT.comparisons.nim.188.16.i6.i.i to i64
  %bra.arr.geparr.avltree.nim.37.16.i.i = getelementptr inbounds [2 x ptr], ptr %it.012.i.i, i64 0, i64 %toe.z.ord.bool.avltree.nim.37.20.i.i
  %load.bra.arr.geparr.avltree.nim.37.16.i.i = load ptr, ptr %bra.arr.geparr.avltree.nim.37.16.i.i, align 8
  %load.bra.arr.geparr.avltree.nim.12.45.i.i = load ptr, ptr %load.bra.arr.geparr.avltree.nim.37.16.i.i, align 8
  %icmp.IntEQ.avltree.nim.35.12.not.i.i = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.45.i.i, %load.bra.arr.geparr.avltree.nim.37.16.i.i
  br i1 %icmp.IntEQ.avltree.nim.35.12.not.i.i, label %secReturn, label %while.true.avltree.nim.35.2.i.i

if.true.alloc.nim.874.8.i:                        ; preds = %andor.end.avltree.nim.36.22.i.i
  %cast.ip.alloc.nim.875.18.i = inttoptr i64 %load.dot.f1.load.it.avltree.nim.36.7.i.i to ptr
  %dot.f1.load.k.alloc.nim.878.32.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %cast.ip.alloc.nim.875.18.i, i64 0, i32 1
  br label %secReturn.sink.split.i

secReturn.sink.split.i:                           ; preds = %if.true.alloc.nim.874.8.i, %andor.next.alloc.nim.865.20.i, %if.true.alloc.nim.854.10.i
  %dot.f1.load.d5.alloc.nim.865.43.sink.i = phi ptr [ %dot.f1.load.d5.alloc.nim.865.43.i, %andor.next.alloc.nim.865.20.i ], [ %dot.f1.load.k.alloc.nim.878.32.i, %if.true.alloc.nim.874.8.i ], [ %dot.f1.load.d.alloc.nim.859.15.i, %if.true.alloc.nim.854.10.i ]
  %dot.f3.load.c4.alloc.nim.864.23.sink.i = phi ptr [ %dot.f3.load.c4.alloc.nim.864.23.i, %andor.next.alloc.nim.865.20.i ], [ %cast.ip.alloc.nim.875.18.i, %if.true.alloc.nim.874.8.i ], [ %cast.ip.alloc.nim.857.20.i, %if.true.alloc.nim.854.10.i ]
  %load.dot.f1.load.d5.alloc.nim.865.43.i = load i64, ptr %dot.f1.load.d5.alloc.nim.865.43.sink.i, align 8
  %icmp.IntULT.comparisons.nim.188.16.i21.i = icmp ult i64 %load.dot.f1.load.d5.alloc.nim.865.43.i, 2
  %icmp.IntEQ.gc.nim.717.16.not = icmp eq ptr %dot.f3.load.c4.alloc.nim.864.23.sink.i, null
  %or.cond = select i1 %icmp.IntULT.comparisons.nim.188.16.i21.i, i1 true, i1 %icmp.IntEQ.gc.nim.717.16.not
  br i1 %or.cond, label %secReturn, label %if.true.gc.nim.717.4

if.true.gc.nim.717.4:                             ; preds = %secReturn.sink.split.i
  %load.dot.f0.load.arg.c1.i = load i64, ptr %dot.f3.load.c4.alloc.nim.864.23.sink.i, align 8
  %binop.Add.arithmetics.nim.407.26.i.i3 = add i64 %load.dot.f0.load.arg.c1.i, 8
  store i64 %binop.Add.arithmetics.nim.407.26.i.i3, ptr %dot.f3.load.c4.alloc.nim.864.23.sink.i, align 8
  %dot.f4.load.arg.gch2 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 4
  tail call fastcc void @add__W9aRfhn7HvnQTPAb8ajo1uw(ptr nonnull %dot.f4.load.arg.gch2, ptr nonnull %dot.f3.load.c4.alloc.nim.864.23.sink.i)
  br label %secReturn

secReturn:                                        ; preds = %if.end.avltree.nim.36.4.i.i, %secReturn.sink.split.i, %if.false.alloc.nim.850.8.i, %if.true.alloc.nim.870.6.i, %if.false.alloc.nim.847.4.i, %andor.next.alloc.nim.870.29.i, %if.true.alloc.nim.847.4.i, %if.true.alloc.nim.850.8.i, %if.true.gc.nim.717.4, %secAlloca
  ret void
}

define internal fastcc void @add__W9aRfhn7HvnQTPAb8ajo1uw(ptr nocapture %s, ptr %c) unnamed_addr #2 {
secAlloca:
  %dot.f1.load.arg.s = getelementptr inbounds %tyObject_CellSeq__s3VRa074yn4plb2eltQ1kw, ptr %s, i64 0, i32 1
  %load.dot.f1.load.arg.s = load i64, ptr %dot.f1.load.arg.s, align 8
  %load.dot.f0.load.arg.s1 = load i64, ptr %s, align 8
  %icmp.IntSLE.cellseqs_v1.nim.24.11.not = icmp sgt i64 %load.dot.f1.load.arg.s, %load.dot.f0.load.arg.s1
  br i1 %icmp.IntSLE.cellseqs_v1.nim.24.11.not, label %secAlloca.if.end.cellseqs_v1.nim.24.2_crit_edge, label %if.true.cellseqs_v1.nim.24.2

secAlloca.if.end.cellseqs_v1.nim.24.2_crit_edge:  ; preds = %secAlloca
  %dot.f2.load.arg.s9.phi.trans.insert = getelementptr inbounds %tyObject_CellSeq__s3VRa074yn4plb2eltQ1kw, ptr %s, i64 0, i32 2
  %load.dot.f2.load.arg.s9.pre = load ptr, ptr %dot.f2.load.arg.s9.phi.trans.insert, align 8
  br label %if.end.cellseqs_v1.nim.24.2

if.true.cellseqs_v1.nim.24.2:                     ; preds = %secAlloca
  %binop.Mul.cellseqs_v1.nim.25.18 = mul i64 %load.dot.f1.load.arg.s, 3
  %binop.SDiv.cellseqs_v1.nim.25.22 = sdiv i64 %binop.Mul.cellseqs_v1.nim.25.18, 2
  store i64 %binop.SDiv.cellseqs_v1.nim.25.22, ptr %dot.f1.load.arg.s, align 8
  %binop.Mul.cellseqs_v1.nim.26.41 = shl i64 %binop.SDiv.cellseqs_v1.nim.25.22, 3
  %binop.Add.alloc.nim.899.37.i.i = add i64 %binop.Mul.cellseqs_v1.nim.26.41, 16
  %call.res.alloc.nim.899.21.i.i = tail call ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 %binop.Add.alloc.nim.899.37.i.i)
  %dot.f1.load.result.alloc.nim.900.23.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i to ptr
  %dot.f2.load.arg.s5 = getelementptr inbounds %tyObject_CellSeq__s3VRa074yn4plb2eltQ1kw, ptr %s, i64 0, i32 2
  %load.dot.f2.load.arg.s5 = load ptr, ptr %dot.f2.load.arg.s5, align 8
  %load.dot.f0.load.arg.s6 = load i64, ptr %s, align 8
  %binop.Mul.cellseqs_v1.nim.27.26 = shl i64 %load.dot.f0.load.arg.s6, 3
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 16 %cast.ip.alloc.nim.902.13.i.i, ptr align 1 %load.dot.f2.load.arg.s5, i64 %binop.Mul.cellseqs_v1.nim.27.26, i1 false)
  %load.dot.f2.load.arg.s7 = load ptr, ptr %dot.f2.load.arg.s5, align 8
  %cast.pi.alloc.nim.914.26.i.i.i = ptrtoint ptr %load.dot.f2.load.arg.s7 to i64
  %binop.Sub.arithmetics.nim.418.26.i.i.i.i = add i64 %cast.pi.alloc.nim.914.26.i.i.i, -16
  %cast.ip.alloc.nim.914.12.i.i.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i.i.i to ptr
  tail call fastcc void @rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), ptr %cast.ip.alloc.nim.914.12.i.i.i)
  store ptr %cast.ip.alloc.nim.902.13.i.i, ptr %dot.f2.load.arg.s5, align 8
  %load.dot.f0.load.arg.s10.pre = load i64, ptr %s, align 8
  br label %if.end.cellseqs_v1.nim.24.2

if.end.cellseqs_v1.nim.24.2:                      ; preds = %secAlloca.if.end.cellseqs_v1.nim.24.2_crit_edge, %if.true.cellseqs_v1.nim.24.2
  %load.dot.f0.load.arg.s10 = phi i64 [ %load.dot.f0.load.arg.s1, %secAlloca.if.end.cellseqs_v1.nim.24.2_crit_edge ], [ %load.dot.f0.load.arg.s10.pre, %if.true.cellseqs_v1.nim.24.2 ]
  %load.dot.f2.load.arg.s9 = phi ptr [ %load.dot.f2.load.arg.s9.pre, %secAlloca.if.end.cellseqs_v1.nim.24.2_crit_edge ], [ %cast.ip.alloc.nim.902.13.i.i, %if.true.cellseqs_v1.nim.24.2 ]
  %bra.uarr.geparr.cellseqs_v1.nim.31.5 = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.load.arg.s9, i64 0, i64 %load.dot.f0.load.arg.s10
  store ptr %c, ptr %bra.uarr.geparr.cellseqs_v1.nim.31.5, align 8
  %load.dot.f0.load.arg.s11 = load i64, ptr %s, align 8
  %inc.nv.cellseqs_v1.nim.32.5 = add i64 %load.dot.f0.load.arg.s11, 1
  store i64 %inc.nv.cellseqs_v1.nim.32.5, ptr %s, align 8
  ret void
}

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite)
define internal fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nocapture writeonly %dest, ptr nocapture readonly %source, i64 %size) unnamed_addr #16 {
secAlloca:
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dest, ptr align 1 %source, i64 %size, i1 false)
  ret void
}

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #17

define internal fastcc void @rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ(ptr %a, ptr %p) unnamed_addr #2 {
secAlloca:
  %cast.pi.alloc.nim.422.24.i = ptrtoint ptr %p to i64
  %binop.And.alloc.nim.422.45.i = and i64 %cast.pi.alloc.nim.422.24.i, -4096
  %cast.ip.alloc.nim.422.11.i = inttoptr i64 %binop.And.alloc.nim.422.45.i to ptr
  %dot.f1.load.arg.c.i = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 1
  %load.dot.f1.load.arg.c.i = load i64, ptr %dot.f1.load.arg.c.i, align 8
  %icmp.IntSLE.alloc.nim.381.18.i = icmp sgt i64 %load.dot.f1.load.arg.c.i, 4032
  %dot.f10.load.arg.a7 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 10
  %load.dot.f10.load.arg.a7 = load i64, ptr %dot.f10.load.arg.a7, align 8
  %inc.nv.alloc.nim.816.8 = sub i64 %load.dot.f10.load.arg.a7, %load.dot.f1.load.arg.c.i
  store i64 %inc.nv.alloc.nim.816.8, ptr %dot.f10.load.arg.a7, align 8
  br i1 %icmp.IntSLE.alloc.nim.381.18.i, label %if.false.alloc.nim.778.2, label %if.true.alloc.nim.778.2

if.true.alloc.nim.778.2:                          ; preds = %secAlloca
  %dot.f1.load.f.alloc.nim.791.6 = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %p, i64 0, i32 1
  store i64 0, ptr %dot.f1.load.f.alloc.nim.791.6, align 8
  %dot.f3.load.c1.alloc.nim.792.13 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 3
  %load.dot.f3.load.c1.alloc.nim.792.13 = load ptr, ptr %dot.f3.load.c1.alloc.nim.792.13, align 32
  store ptr %load.dot.f3.load.c1.alloc.nim.792.13, ptr %p, align 8
  store ptr %p, ptr %dot.f3.load.c1.alloc.nim.792.13, align 32
  %dot.f4.load.c1.alloc.nim.799.7 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 4
  %load.dot.f4.load.c1.alloc.nim.799.7 = load i64, ptr %dot.f4.load.c1.alloc.nim.799.7, align 8
  %icmp.IntSLT.alloc.nim.799.14 = icmp slt i64 %load.dot.f4.load.c1.alloc.nim.799.7, %load.dot.f1.load.arg.c.i
  br i1 %icmp.IntSLT.alloc.nim.799.14, label %if.true.alloc.nim.799.4, label %if.false.alloc.nim.799.4

if.true.alloc.nim.799.4:                          ; preds = %if.true.alloc.nim.778.2
  %binop.SDiv.alloc.nim.801.34 = sdiv i64 %load.dot.f1.load.arg.c.i, 16
  %bra.arr.geparr.alloc.nim.801.31 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 2, i64 %binop.SDiv.alloc.nim.801.34
  %dot.f1.load.arg.c.i19 = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 1
  %load.load.arg.head.i = load ptr, ptr %bra.arr.geparr.alloc.nim.801.31, align 8
  store ptr %load.load.arg.head.i, ptr %dot.f1.load.arg.c.i19, align 16
  %load.load.arg.head1.i = load ptr, ptr %bra.arr.geparr.alloc.nim.801.31, align 8
  %icmp.IntEQ.alloc.nim.510.10.not.i = icmp eq ptr %load.load.arg.head1.i, null
  br i1 %icmp.IntEQ.alloc.nim.510.10.not.i, label %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit, label %if.true.alloc.nim.510.2.i

if.true.alloc.nim.510.2.i:                        ; preds = %if.true.alloc.nim.799.4
  %dot.f2.load.load.arg.head2.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.load.arg.head1.i, i64 0, i32 2
  store ptr %cast.ip.alloc.nim.422.11.i, ptr %dot.f2.load.load.arg.head2.i, align 8
  br label %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit

listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit:           ; preds = %if.true.alloc.nim.799.4, %if.true.alloc.nim.510.2.i
  store ptr %cast.ip.alloc.nim.422.11.i, ptr %bra.arr.geparr.alloc.nim.801.31, align 8
  %load.dot.f4.load.c1.alloc.nim.802.10 = load i64, ptr %dot.f4.load.c1.alloc.nim.799.7, align 8
  %inc.nv.alloc.nim.802.9 = add i64 %load.dot.f4.load.c1.alloc.nim.802.10, %load.dot.f1.load.arg.c.i
  store i64 %inc.nv.alloc.nim.802.9, ptr %dot.f4.load.c1.alloc.nim.799.7, align 8
  br label %secReturn

if.false.alloc.nim.799.4:                         ; preds = %if.true.alloc.nim.778.2
  %inc.nv.alloc.nim.804.9 = add i64 %load.dot.f4.load.c1.alloc.nim.799.7, %load.dot.f1.load.arg.c.i
  store i64 %inc.nv.alloc.nim.804.9, ptr %dot.f4.load.c1.alloc.nim.799.7, align 8
  %icmp.IntEQ.alloc.nim.805.16 = icmp eq i64 %inc.nv.alloc.nim.804.9, 4032
  br i1 %icmp.IntEQ.alloc.nim.805.16, label %if.true.alloc.nim.805.6, label %secReturn

if.true.alloc.nim.805.6:                          ; preds = %if.false.alloc.nim.799.4
  %binop.SDiv.alloc.nim.806.39 = sdiv i64 %load.dot.f1.load.arg.c.i, 16
  %bra.arr.geparr.alloc.nim.806.36 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 2, i64 %binop.SDiv.alloc.nim.806.39
  %load.load.arg.head.i20 = load ptr, ptr %bra.arr.geparr.alloc.nim.806.36, align 8
  %icmp.IntEQ.alloc.nim.517.7.i = icmp eq ptr %load.load.arg.head.i20, %cast.ip.alloc.nim.422.11.i
  br i1 %icmp.IntEQ.alloc.nim.517.7.i, label %if.true.alloc.nim.517.2.i, label %if.false.alloc.nim.517.2.i

if.true.alloc.nim.517.2.i:                        ; preds = %if.true.alloc.nim.805.6
  %dot.f1.load.arg.c2.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 1
  %load.dot.f1.load.arg.c2.i = load ptr, ptr %dot.f1.load.arg.c2.i, align 16
  store ptr %load.dot.f1.load.arg.c2.i, ptr %bra.arr.geparr.alloc.nim.806.36, align 8
  %icmp.IntEQ.alloc.nim.520.12.not.i = icmp eq ptr %load.dot.f1.load.arg.c2.i, null
  br i1 %icmp.IntEQ.alloc.nim.520.12.not.i, label %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit, label %if.true.alloc.nim.520.4.i

if.true.alloc.nim.520.4.i:                        ; preds = %if.true.alloc.nim.517.2.i
  %dot.f2.load.load.arg.head4.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.dot.f1.load.arg.c2.i, i64 0, i32 2
  store ptr null, ptr %dot.f2.load.load.arg.head4.i, align 8
  br label %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit

if.false.alloc.nim.517.2.i:                       ; preds = %if.true.alloc.nim.805.6
  %dot.f2.load.arg.c5.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 2
  %load.dot.f2.load.arg.c5.i = load ptr, ptr %dot.f2.load.arg.c5.i, align 8
  %dot.f1.load.dot.f2.load.arg.c5.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.dot.f2.load.arg.c5.i, i64 0, i32 1
  %dot.f1.load.arg.c6.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 1
  %load.dot.f1.load.arg.c6.i = load ptr, ptr %dot.f1.load.arg.c6.i, align 16
  store ptr %load.dot.f1.load.arg.c6.i, ptr %dot.f1.load.dot.f2.load.arg.c5.i, align 8
  %load.dot.f1.load.arg.c7.i = load ptr, ptr %dot.f1.load.arg.c6.i, align 16
  %icmp.IntEQ.alloc.nim.524.14.not.i = icmp eq ptr %load.dot.f1.load.arg.c7.i, null
  br i1 %icmp.IntEQ.alloc.nim.524.14.not.i, label %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit, label %if.true.alloc.nim.524.4.i

if.true.alloc.nim.524.4.i:                        ; preds = %if.false.alloc.nim.517.2.i
  %dot.f2.load.dot.f1.load.arg.c8.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %load.dot.f1.load.arg.c7.i, i64 0, i32 2
  %load.dot.f2.load.arg.c9.i = load ptr, ptr %dot.f2.load.arg.c5.i, align 8
  store ptr %load.dot.f2.load.arg.c9.i, ptr %dot.f2.load.dot.f1.load.arg.c8.i, align 8
  br label %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit

listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit:      ; preds = %if.true.alloc.nim.517.2.i, %if.true.alloc.nim.520.4.i, %if.false.alloc.nim.517.2.i, %if.true.alloc.nim.524.4.i
  %dot.f1.load.arg.c10.i = getelementptr inbounds %tyObject_SmallChunk__saoogmtoWSgg9chCoMUXnjg, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %dot.f1.load.arg.c10.i, i8 0, i64 16, i1 false)
  store i64 4096, ptr %dot.f1.load.arg.c.i, align 8
  tail call fastcc void @freeBigChunk__IPvsryqksLyNxxag3IQr2g(ptr nonnull %a, ptr nonnull %cast.ip.alloc.nim.422.11.i)
  br label %secReturn

if.false.alloc.nim.778.2:                         ; preds = %secAlloca
  %dot.f14.load.arg.a8 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 14
  %dot.f20.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 20
  %load.bra.arr.geparr.alloc.nim.273.18.i = load ptr, ptr %dot.f20.load.arg.a.i, align 8
  %icmp.IntEQ.alloc.nim.273.22.i = icmp eq ptr %load.bra.arr.geparr.alloc.nim.273.18.i, null
  br i1 %icmp.IntEQ.alloc.nim.273.22.i, label %if.true.alloc.nim.273.4.i, label %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit

if.true.alloc.nim.273.4.i:                        ; preds = %if.false.alloc.nim.778.2
  store ptr %dot.f20.load.arg.a.i, ptr %dot.f20.load.arg.a.i, align 8
  %bra.arr.geparr.alloc.nim.275.17.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 20, i32 0, i64 1
  store ptr %dot.f20.load.arg.a.i, ptr %bra.arr.geparr.alloc.nim.275.17.i, align 8
  br label %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit

getBottom__3mqnVBLDtYhZizqw9bvHELA.exit:          ; preds = %if.false.alloc.nim.778.2, %if.true.alloc.nim.273.4.i
  store ptr %dot.f20.load.arg.a.i, ptr %dot.f14.load.arg.a8, align 8
  %dot.f13.load.arg.a11 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 13
  %dot.f3.load.c6.alloc.nim.821.36 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %cast.ip.alloc.nim.422.11.i, i64 0, i32 3
  %cast.pi.alloc.nim.821.21 = ptrtoint ptr %dot.f3.load.c6.alloc.nim.821.36 to i64
  tail call fastcc void @del__Io5JDKCS5u26IEWw0J53hQ(ptr nonnull %a, ptr nonnull %dot.f13.load.arg.a11, i64 %cast.pi.alloc.nim.821.21)
  %load.dot.f1.dot.f0.load.c6.alloc.nim.822.7 = load i64, ptr %dot.f1.load.arg.c.i, align 8
  %icmp.IntSLE.alloc.nim.822.14 = icmp sgt i64 %load.dot.f1.dot.f0.load.c6.alloc.nim.822.7, 1056964608
  br i1 %icmp.IntSLE.alloc.nim.822.14, label %if.true.alloc.nim.822.4, label %if.false.alloc.nim.822.4

if.true.alloc.nim.822.4:                          ; preds = %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit
  %dot.f12.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 12
  %binop.AShr.alloc.nim.416.32.i.i = ashr i64 %cast.pi.alloc.nim.422.24.i, 12
  %binop.AShr.alloc.nim.356.27.i.i = ashr i64 %cast.pi.alloc.nim.422.24.i, 21
  %binop.And.alloc.nim.328.22.i.i.i = and i64 %binop.AShr.alloc.nim.356.27.i.i, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i.i = getelementptr inbounds [256 x ptr], ptr %dot.f12.load.arg.a.i, i64 0, i64 %binop.And.alloc.nim.328.22.i.i.i
  br label %while.cmp.alloc.nim.329.2.i.i.i

while.cmp.alloc.nim.329.2.i.i.i:                  ; preds = %while.true.alloc.nim.329.2.i.i.i, %if.true.alloc.nim.822.4
  %it.0.in.i.i.i = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i.i, %if.true.alloc.nim.822.4 ], [ %it.0.i.i.i, %while.true.alloc.nim.329.2.i.i.i ]
  %it.0.i.i.i = load ptr, ptr %it.0.in.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i.i = icmp eq ptr %it.0.i.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i.i, label %freeHugeChunk__IPvsryqksLyNxxag3IQr2g_2.exit, label %while.true.alloc.nim.329.2.i.i.i

while.true.alloc.nim.329.2.i.i.i:                 ; preds = %while.cmp.alloc.nim.329.2.i.i.i
  %dot.f1.load.it.alloc.nim.330.7.i.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i.i = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i.i = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i.i, %binop.AShr.alloc.nim.356.27.i.i
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i.i, label %if.true.alloc.nim.357.2.i.i, label %while.cmp.alloc.nim.329.2.i.i.i

if.true.alloc.nim.357.2.i.i:                      ; preds = %while.true.alloc.nim.329.2.i.i.i
  %binop.And.alloc.nim.358.16.i.i = lshr i64 %binop.AShr.alloc.nim.416.32.i.i, 6
  %binop.AShr.alloc.nim.359.13.i.i = and i64 %binop.And.alloc.nim.358.16.i.i, 7
  %bra.arr.geparr.alloc.nim.359.10.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i, i64 0, i32 2, i64 %binop.AShr.alloc.nim.359.13.i.i
  %load.bra.arr.geparr.alloc.nim.359.35.i.i = load i64, ptr %bra.arr.geparr.alloc.nim.359.10.i.i, align 8
  %binop.And.alloc.nim.360.24.i.i = and i64 %binop.AShr.alloc.nim.416.32.i.i, 63
  %binop.Shl.alloc.nim.360.17.i.i = shl nuw i64 1, %binop.And.alloc.nim.360.24.i.i
  %bitnot.binop.Shl.alloc.nim.360.17.i.i = xor i64 %binop.Shl.alloc.nim.360.17.i.i, -1
  %binop.And.alloc.nim.359.52.i.i = and i64 %load.bra.arr.geparr.alloc.nim.359.35.i.i, %bitnot.binop.Shl.alloc.nim.360.17.i.i
  store i64 %binop.And.alloc.nim.359.52.i.i, ptr %bra.arr.geparr.alloc.nim.359.10.i.i, align 8
  br label %freeHugeChunk__IPvsryqksLyNxxag3IQr2g_2.exit

freeHugeChunk__IPvsryqksLyNxxag3IQr2g_2.exit:     ; preds = %while.cmp.alloc.nim.329.2.i.i.i, %if.true.alloc.nim.357.2.i.i
  %dot.f8.load.arg.a.i.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 8
  %load.dot.f8.load.arg.a1.i.i = load i64, ptr %dot.f8.load.arg.a.i.i, align 8
  %dot.f7.load.arg.a2.i.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 7
  %load.dot.f7.load.arg.a2.i.i = load i64, ptr %dot.f7.load.arg.a2.i.i, align 8
  %IntSGE.alloc.nim.240.16.i.i = tail call i64 @llvm.smax.i64(i64 %load.dot.f8.load.arg.a1.i.i, i64 %load.dot.f7.load.arg.a2.i.i)
  store i64 %IntSGE.alloc.nim.240.16.i.i, ptr %dot.f8.load.arg.a.i.i, align 8
  %inc.nv.alloc.nim.241.5.i.i = sub i64 %load.dot.f7.load.arg.a2.i.i, %load.dot.f1.dot.f0.load.c6.alloc.nim.822.7
  store i64 %inc.nv.alloc.nim.241.5.i.i, ptr %dot.f7.load.arg.a2.i.i, align 8
  %call.res.osalloc.nim.153.40.i.i = tail call i32 @munmap(ptr %cast.ip.alloc.nim.422.11.i, i64 %load.dot.f1.dot.f0.load.c6.alloc.nim.822.7)
  br label %secReturn

if.false.alloc.nim.822.4:                         ; preds = %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit
  tail call fastcc void @freeBigChunk__IPvsryqksLyNxxag3IQr2g(ptr nonnull %a, ptr nonnull %cast.ip.alloc.nim.422.11.i)
  br label %secReturn

secReturn:                                        ; preds = %listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2.exit, %if.false.alloc.nim.799.4, %listAdd__G9cCXZ1ju0DgzqrqBg9acaKQ.exit, %if.false.alloc.nim.822.4, %freeHugeChunk__IPvsryqksLyNxxag3IQr2g_2.exit
  ret void
}

define internal fastcc void @freeBigChunk__IPvsryqksLyNxxag3IQr2g(ptr nocapture %a, ptr %c) unnamed_addr #2 {
secAlloca:
  %dot.f9.load.arg.a = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 9
  %dot.f1.dot.f0.load.c1.alloc.nim.559.17 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %c, i64 0, i32 1
  %load.dot.f1.dot.f0.load.c1.alloc.nim.559.17 = load i64, ptr %dot.f1.dot.f0.load.c1.alloc.nim.559.17, align 8
  %load.dot.f9.load.arg.a = load i64, ptr %dot.f9.load.arg.a, align 8
  %inc.nv.alloc.nim.559.5 = add i64 %load.dot.f9.load.arg.a, %load.dot.f1.dot.f0.load.c1.alloc.nim.559.17
  store i64 %inc.nv.alloc.nim.559.5, ptr %dot.f9.load.arg.a, align 8
  %load.dot.f0.dot.f0.load.c1.alloc.nim.560.15 = load i64, ptr %c, align 8
  %binop.And.alloc.nim.560.26 = and i64 %load.dot.f0.dot.f0.load.c1.alloc.nim.560.15, -2
  store i64 %binop.And.alloc.nim.560.26, ptr %c, align 8
  %icmp.IntEQ.alloc.nim.563.16.not = icmp eq i64 %binop.And.alloc.nim.560.26, 0
  br i1 %icmp.IntEQ.alloc.nim.563.16.not, label %if.end.alloc.nim.563.4, label %if.true.alloc.nim.563.4

if.true.alloc.nim.563.4:                          ; preds = %secAlloca
  %cast.pi.alloc.nim.564.28 = ptrtoint ptr %c to i64
  %binop.Sub.arithmetics.nim.418.26.i = sub i64 %cast.pi.alloc.nim.564.28, %binop.And.alloc.nim.560.26
  %cast.ip.alloc.nim.564.15 = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i to ptr
  %dot.f12.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 12
  %binop.AShr.alloc.nim.419.32.i.i = ashr i64 %binop.Sub.arithmetics.nim.418.26.i, 12
  %binop.AShr.alloc.nim.343.27.i.i = ashr i64 %binop.Sub.arithmetics.nim.418.26.i, 21
  %binop.And.alloc.nim.328.22.i.i.i = and i64 %binop.AShr.alloc.nim.343.27.i.i, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i.i = getelementptr inbounds [256 x ptr], ptr %dot.f12.load.arg.a.i, i64 0, i64 %binop.And.alloc.nim.328.22.i.i.i
  br label %while.cmp.alloc.nim.329.2.i.i.i

while.cmp.alloc.nim.329.2.i.i.i:                  ; preds = %while.true.alloc.nim.329.2.i.i.i, %if.true.alloc.nim.563.4
  %it.0.in.i.i.i = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i.i, %if.true.alloc.nim.563.4 ], [ %it.0.i.i.i, %while.true.alloc.nim.329.2.i.i.i ]
  %it.0.i.i.i = load ptr, ptr %it.0.in.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i.i = icmp eq ptr %it.0.i.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i.i, label %if.end.alloc.nim.563.4, label %while.true.alloc.nim.329.2.i.i.i

while.true.alloc.nim.329.2.i.i.i:                 ; preds = %while.cmp.alloc.nim.329.2.i.i.i
  %dot.f1.load.it.alloc.nim.330.7.i.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i.i = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i.i, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i.i = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i.i, %binop.AShr.alloc.nim.343.27.i.i
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i.i, label %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit, label %while.cmp.alloc.nim.329.2.i.i.i

isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit:       ; preds = %while.true.alloc.nim.329.2.i.i.i
  %binop.And.alloc.nim.345.16.i.i = lshr i64 %binop.AShr.alloc.nim.419.32.i.i, 6
  %binop.AShr.alloc.nim.346.23.i.i = and i64 %binop.And.alloc.nim.345.16.i.i, 7
  %bra.arr.geparr.alloc.nim.346.20.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i, i64 0, i32 2, i64 %binop.AShr.alloc.nim.346.23.i.i
  %load.bra.arr.geparr.alloc.nim.346.20.i.i = load i64, ptr %bra.arr.geparr.alloc.nim.346.20.i.i, align 8
  %binop.And.alloc.nim.346.57.i.i = and i64 %binop.AShr.alloc.nim.419.32.i.i, 63
  %binop.Shl.alloc.nim.346.50.i.i = shl nuw i64 1, %binop.And.alloc.nim.346.57.i.i
  %binop.And.alloc.nim.346.37.i.i = and i64 %load.bra.arr.geparr.alloc.nim.346.20.i.i, %binop.Shl.alloc.nim.346.50.i.i
  %icmp.IntEQ.alloc.nim.346.72.i.i.not = icmp eq i64 %binop.And.alloc.nim.346.37.i.i, 0
  br i1 %icmp.IntEQ.alloc.nim.346.72.i.i.not, label %if.end.alloc.nim.563.4, label %andor.next.alloc.nim.566.29

andor.next.alloc.nim.566.29:                      ; preds = %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit
  %load.dot.f0.load.arg.c.i = load i64, ptr %cast.ip.alloc.nim.564.15, align 8
  %binop.And.alloc.nim.384.23.i = and i64 %load.dot.f0.load.arg.c.i, 1
  %icmp.IntEQ.alloc.nim.384.30.i.not = icmp eq i64 %binop.And.alloc.nim.384.23.i, 0
  br i1 %icmp.IntEQ.alloc.nim.384.30.i.not, label %if.true.alloc.nim.566.6, label %if.end.alloc.nim.563.4

if.true.alloc.nim.566.6:                          ; preds = %andor.next.alloc.nim.566.29
  %dot.f1.load.arg.c.i = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %cast.ip.alloc.nim.564.15, i64 0, i32 1
  %load.dot.f1.load.arg.c.i = load i64, ptr %dot.f1.load.arg.c.i, align 8
  %0 = add i64 %load.dot.f1.load.arg.c.i, -4033
  %or.cond = icmp ult i64 %0, 1056960575
  br i1 %or.cond, label %if.true.alloc.nim.568.8, label %if.end.alloc.nim.563.4

if.true.alloc.nim.568.8:                          ; preds = %if.true.alloc.nim.566.6
  tail call fastcc void @removeChunkFromMatrix__YSJZJgeU5UU2aa8GNvs3WA_2(ptr %a, ptr nonnull %cast.ip.alloc.nim.564.15)
  %load.dot.f1.dot.f0.load.c1.alloc.nim.570.23 = load i64, ptr %dot.f1.dot.f0.load.c1.alloc.nim.559.17, align 8
  %load.dot.f1.load.le.alloc.nim.570.14 = load i64, ptr %dot.f1.load.arg.c.i, align 8
  %inc.nv.alloc.nim.570.13 = add i64 %load.dot.f1.load.le.alloc.nim.570.14, %load.dot.f1.dot.f0.load.c1.alloc.nim.570.23
  store i64 %inc.nv.alloc.nim.570.13, ptr %dot.f1.load.arg.c.i, align 8
  %binop.AShr.alloc.nim.416.32.i = ashr i64 %cast.pi.alloc.nim.564.28, 12
  %binop.AShr.alloc.nim.356.27.i = ashr i64 %cast.pi.alloc.nim.564.28, 21
  %binop.And.alloc.nim.328.22.i.i = and i64 %binop.AShr.alloc.nim.356.27.i, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i = getelementptr inbounds [256 x ptr], ptr %dot.f12.load.arg.a.i, i64 0, i64 %binop.And.alloc.nim.328.22.i.i
  br label %while.cmp.alloc.nim.329.2.i.i

while.cmp.alloc.nim.329.2.i.i:                    ; preds = %while.true.alloc.nim.329.2.i.i, %if.true.alloc.nim.568.8
  %it.0.in.i.i = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i, %if.true.alloc.nim.568.8 ], [ %it.0.i.i, %while.true.alloc.nim.329.2.i.i ]
  %it.0.i.i = load ptr, ptr %it.0.in.i.i, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i = icmp eq ptr %it.0.i.i, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i, label %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit, label %while.true.alloc.nim.329.2.i.i

while.true.alloc.nim.329.2.i.i:                   ; preds = %while.cmp.alloc.nim.329.2.i.i
  %dot.f1.load.it.alloc.nim.330.7.i.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i, %binop.AShr.alloc.nim.356.27.i
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i, label %if.true.alloc.nim.357.2.i, label %while.cmp.alloc.nim.329.2.i.i

if.true.alloc.nim.357.2.i:                        ; preds = %while.true.alloc.nim.329.2.i.i
  %binop.And.alloc.nim.358.16.i = lshr i64 %binop.AShr.alloc.nim.416.32.i, 6
  %binop.AShr.alloc.nim.359.13.i = and i64 %binop.And.alloc.nim.358.16.i, 7
  %bra.arr.geparr.alloc.nim.359.10.i = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i, i64 0, i32 2, i64 %binop.AShr.alloc.nim.359.13.i
  %load.bra.arr.geparr.alloc.nim.359.35.i = load i64, ptr %bra.arr.geparr.alloc.nim.359.10.i, align 8
  %binop.And.alloc.nim.360.24.i = and i64 %binop.AShr.alloc.nim.416.32.i, 63
  %binop.Shl.alloc.nim.360.17.i = shl nuw i64 1, %binop.And.alloc.nim.360.24.i
  %bitnot.binop.Shl.alloc.nim.360.17.i = xor i64 %binop.Shl.alloc.nim.360.17.i, -1
  %binop.And.alloc.nim.359.52.i = and i64 %load.bra.arr.geparr.alloc.nim.359.35.i, %bitnot.binop.Shl.alloc.nim.360.17.i
  store i64 %binop.And.alloc.nim.359.52.i, ptr %bra.arr.geparr.alloc.nim.359.10.i, align 8
  %load.dot.f1.dot.f0.load.c1.alloc.nim.573.13.pre = load i64, ptr %dot.f1.load.arg.c.i, align 8
  br label %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit

excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit:               ; preds = %while.cmp.alloc.nim.329.2.i.i, %if.true.alloc.nim.357.2.i
  %load.dot.f1.dot.f0.load.c1.alloc.nim.573.13 = phi i64 [ %load.dot.f1.dot.f0.load.c1.alloc.nim.573.13.pre, %if.true.alloc.nim.357.2.i ], [ %inc.nv.alloc.nim.570.13, %while.cmp.alloc.nim.329.2.i.i ]
  %icmp.IntSLT.alloc.nim.573.20 = icmp sgt i64 %load.dot.f1.dot.f0.load.c1.alloc.nim.573.13, 1056964608
  br i1 %icmp.IntSLT.alloc.nim.573.20, label %if.true.alloc.nim.573.10, label %if.end.alloc.nim.563.4

if.true.alloc.nim.573.10:                         ; preds = %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit
  %call.res.alloc.nim.574.34 = tail call fastcc ptr @splitChunk2__gSNzk4aToVCSTE1opfEv2A(ptr %a, ptr nonnull %cast.ip.alloc.nim.564.15, i64 1056964608)
  tail call fastcc void @addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(ptr %a, ptr nonnull %cast.ip.alloc.nim.564.15)
  br label %if.end.alloc.nim.563.4

if.end.alloc.nim.563.4:                           ; preds = %while.cmp.alloc.nim.329.2.i.i.i, %if.true.alloc.nim.566.6, %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit, %secAlloca, %if.true.alloc.nim.573.10, %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit, %andor.next.alloc.nim.566.29
  %c1.0 = phi ptr [ %call.res.alloc.nim.574.34, %if.true.alloc.nim.573.10 ], [ %cast.ip.alloc.nim.564.15, %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit ], [ %c, %andor.next.alloc.nim.566.29 ], [ %c, %secAlloca ], [ %c, %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit ], [ %c, %if.true.alloc.nim.566.6 ], [ %c, %while.cmp.alloc.nim.329.2.i.i.i ]
  %cast.pi.alloc.nim.578.26 = ptrtoint ptr %c1.0 to i64
  %dot.f1.dot.f0.load.c1.alloc.nim.578.50 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %c1.0, i64 0, i32 1
  %load.dot.f1.dot.f0.load.c1.alloc.nim.578.50 = load i64, ptr %dot.f1.dot.f0.load.c1.alloc.nim.578.50, align 8
  %binop.Add.arithmetics.nim.407.26.i = add i64 %load.dot.f1.dot.f0.load.c1.alloc.nim.578.50, %cast.pi.alloc.nim.578.26
  %cast.ip.alloc.nim.578.13 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i to ptr
  %dot.f12.load.arg.a.i15 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 12
  %binop.AShr.alloc.nim.419.32.i.i16 = ashr i64 %binop.Add.arithmetics.nim.407.26.i, 12
  %binop.AShr.alloc.nim.343.27.i.i17 = ashr i64 %binop.Add.arithmetics.nim.407.26.i, 21
  %binop.And.alloc.nim.328.22.i.i.i18 = and i64 %binop.AShr.alloc.nim.343.27.i.i17, 255
  %bra.arr.geparr.alloc.nim.328.17.i.i.i19 = getelementptr inbounds [256 x ptr], ptr %dot.f12.load.arg.a.i15, i64 0, i64 %binop.And.alloc.nim.328.22.i.i.i18
  br label %while.cmp.alloc.nim.329.2.i.i.i23

while.cmp.alloc.nim.329.2.i.i.i23:                ; preds = %while.true.alloc.nim.329.2.i.i.i27, %if.end.alloc.nim.563.4
  %it.0.in.i.i.i20 = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i.i19, %if.end.alloc.nim.563.4 ], [ %it.0.i.i.i21, %while.true.alloc.nim.329.2.i.i.i27 ]
  %it.0.i.i.i21 = load ptr, ptr %it.0.in.i.i.i20, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i.i22 = icmp eq ptr %it.0.i.i.i21, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i.i22, label %if.end.alloc.nim.580.4, label %while.true.alloc.nim.329.2.i.i.i27

while.true.alloc.nim.329.2.i.i.i27:               ; preds = %while.cmp.alloc.nim.329.2.i.i.i23
  %dot.f1.load.it.alloc.nim.330.7.i.i.i24 = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i21, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i.i25 = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i.i24, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i.i26 = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i.i25, %binop.AShr.alloc.nim.343.27.i.i17
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i.i26, label %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit39, label %while.cmp.alloc.nim.329.2.i.i.i23

isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit39:     ; preds = %while.true.alloc.nim.329.2.i.i.i27
  %binop.And.alloc.nim.345.16.i.i28 = lshr i64 %binop.AShr.alloc.nim.419.32.i.i16, 6
  %binop.AShr.alloc.nim.346.23.i.i29 = and i64 %binop.And.alloc.nim.345.16.i.i28, 7
  %bra.arr.geparr.alloc.nim.346.20.i.i30 = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i.i21, i64 0, i32 2, i64 %binop.AShr.alloc.nim.346.23.i.i29
  %load.bra.arr.geparr.alloc.nim.346.20.i.i31 = load i64, ptr %bra.arr.geparr.alloc.nim.346.20.i.i30, align 8
  %binop.And.alloc.nim.346.57.i.i32 = and i64 %binop.AShr.alloc.nim.419.32.i.i16, 63
  %binop.Shl.alloc.nim.346.50.i.i33 = shl nuw i64 1, %binop.And.alloc.nim.346.57.i.i32
  %binop.And.alloc.nim.346.37.i.i34 = and i64 %load.bra.arr.geparr.alloc.nim.346.20.i.i31, %binop.Shl.alloc.nim.346.50.i.i33
  %icmp.IntEQ.alloc.nim.346.72.i.i35.not = icmp eq i64 %binop.And.alloc.nim.346.37.i.i34, 0
  br i1 %icmp.IntEQ.alloc.nim.346.72.i.i35.not, label %if.end.alloc.nim.580.4, label %andor.next.alloc.nim.580.27

andor.next.alloc.nim.580.27:                      ; preds = %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit39
  %load.dot.f0.load.arg.c.i40 = load i64, ptr %cast.ip.alloc.nim.578.13, align 8
  %binop.And.alloc.nim.384.23.i41 = and i64 %load.dot.f0.load.arg.c.i40, 1
  %icmp.IntEQ.alloc.nim.384.30.i42.not = icmp eq i64 %binop.And.alloc.nim.384.23.i41, 0
  br i1 %icmp.IntEQ.alloc.nim.384.30.i42.not, label %if.true.alloc.nim.580.4, label %if.end.alloc.nim.580.4

if.true.alloc.nim.580.4:                          ; preds = %andor.next.alloc.nim.580.27
  %dot.f1.load.arg.c.i44 = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %cast.ip.alloc.nim.578.13, i64 0, i32 1
  %load.dot.f1.load.arg.c.i45 = load i64, ptr %dot.f1.load.arg.c.i44, align 8
  %icmp.IntSLE.alloc.nim.381.18.i46 = icmp sgt i64 %load.dot.f1.load.arg.c.i45, 4032
  %icmp.IntSLT.alloc.nim.582.41 = icmp slt i64 %load.dot.f1.dot.f0.load.c1.alloc.nim.578.50, 1056964608
  %or.cond76 = select i1 %icmp.IntSLE.alloc.nim.381.18.i46, i1 %icmp.IntSLT.alloc.nim.582.41, i1 false
  br i1 %or.cond76, label %if.true.alloc.nim.582.6, label %if.end.alloc.nim.580.4

if.true.alloc.nim.582.6:                          ; preds = %if.true.alloc.nim.580.4
  tail call fastcc void @removeChunkFromMatrix__YSJZJgeU5UU2aa8GNvs3WA_2(ptr %a, ptr nonnull %cast.ip.alloc.nim.578.13)
  %load.dot.f1.load.ri.alloc.nim.584.20 = load i64, ptr %dot.f1.load.arg.c.i44, align 8
  %load.dot.f1.dot.f0.load.c1.alloc.nim.584.12 = load i64, ptr %dot.f1.dot.f0.load.c1.alloc.nim.578.50, align 8
  %inc.nv.alloc.nim.584.11 = add i64 %load.dot.f1.dot.f0.load.c1.alloc.nim.584.12, %load.dot.f1.load.ri.alloc.nim.584.20
  store i64 %inc.nv.alloc.nim.584.11, ptr %dot.f1.dot.f0.load.c1.alloc.nim.578.50, align 8
  br label %while.cmp.alloc.nim.329.2.i.i55

while.cmp.alloc.nim.329.2.i.i55:                  ; preds = %while.true.alloc.nim.329.2.i.i59, %if.true.alloc.nim.582.6
  %it.0.in.i.i52 = phi ptr [ %bra.arr.geparr.alloc.nim.328.17.i.i.i19, %if.true.alloc.nim.582.6 ], [ %it.0.i.i53, %while.true.alloc.nim.329.2.i.i59 ]
  %it.0.i.i53 = load ptr, ptr %it.0.in.i.i52, align 8
  %icmp.IntEQ.alloc.nim.329.11.not.i.i54 = icmp eq ptr %it.0.i.i53, null
  br i1 %icmp.IntEQ.alloc.nim.329.11.not.i.i54, label %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit69, label %while.true.alloc.nim.329.2.i.i59

while.true.alloc.nim.329.2.i.i59:                 ; preds = %while.cmp.alloc.nim.329.2.i.i55
  %dot.f1.load.it.alloc.nim.330.7.i.i56 = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i53, i64 0, i32 1
  %load.dot.f1.load.it.alloc.nim.330.7.i.i57 = load i64, ptr %dot.f1.load.it.alloc.nim.330.7.i.i56, align 8
  %icmp.IntEQ.alloc.nim.330.14.i.i58 = icmp eq i64 %load.dot.f1.load.it.alloc.nim.330.7.i.i57, %binop.AShr.alloc.nim.343.27.i.i17
  br i1 %icmp.IntEQ.alloc.nim.330.14.i.i58, label %if.true.alloc.nim.357.2.i68, label %while.cmp.alloc.nim.329.2.i.i55

if.true.alloc.nim.357.2.i68:                      ; preds = %while.true.alloc.nim.329.2.i.i59
  %bra.arr.geparr.alloc.nim.359.10.i62 = getelementptr inbounds %tyObject_Trunk__36mHPFhouO8NbSeSZ5D1lQ, ptr %it.0.i.i53, i64 0, i32 2, i64 %binop.AShr.alloc.nim.346.23.i.i29
  %load.bra.arr.geparr.alloc.nim.359.35.i63 = load i64, ptr %bra.arr.geparr.alloc.nim.359.10.i62, align 8
  %bitnot.binop.Shl.alloc.nim.360.17.i66 = xor i64 %binop.Shl.alloc.nim.346.50.i.i33, -1
  %binop.And.alloc.nim.359.52.i67 = and i64 %load.bra.arr.geparr.alloc.nim.359.35.i63, %bitnot.binop.Shl.alloc.nim.360.17.i66
  store i64 %binop.And.alloc.nim.359.52.i67, ptr %bra.arr.geparr.alloc.nim.359.10.i62, align 8
  %load.dot.f1.dot.f0.load.c1.alloc.nim.586.11.pre = load i64, ptr %dot.f1.dot.f0.load.c1.alloc.nim.578.50, align 8
  br label %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit69

excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit69:             ; preds = %while.cmp.alloc.nim.329.2.i.i55, %if.true.alloc.nim.357.2.i68
  %load.dot.f1.dot.f0.load.c1.alloc.nim.586.11 = phi i64 [ %load.dot.f1.dot.f0.load.c1.alloc.nim.586.11.pre, %if.true.alloc.nim.357.2.i68 ], [ %inc.nv.alloc.nim.584.11, %while.cmp.alloc.nim.329.2.i.i55 ]
  %icmp.IntSLT.alloc.nim.586.18 = icmp sgt i64 %load.dot.f1.dot.f0.load.c1.alloc.nim.586.11, 1056964608
  br i1 %icmp.IntSLT.alloc.nim.586.18, label %if.true.alloc.nim.586.8, label %if.end.alloc.nim.580.4

if.true.alloc.nim.586.8:                          ; preds = %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit69
  %call.res.alloc.nim.587.32 = tail call fastcc ptr @splitChunk2__gSNzk4aToVCSTE1opfEv2A(ptr %a, ptr nonnull %c1.0, i64 1056964608)
  tail call fastcc void @addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(ptr %a, ptr %call.res.alloc.nim.587.32)
  br label %if.end.alloc.nim.580.4

if.end.alloc.nim.580.4:                           ; preds = %while.cmp.alloc.nim.329.2.i.i.i23, %if.true.alloc.nim.580.4, %isAccessible__EZspgz843pJ9adnD0ZpJO6w.exit39, %andor.next.alloc.nim.580.27, %excl__9cAWqpgI1NbhhZ3cVPHhI5A.exit69, %if.true.alloc.nim.586.8
  tail call fastcc void @addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(ptr %a, ptr %c1.0)
  ret void
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none)
define internal fastcc void @removeChunkFromMatrix__YSJZJgeU5UU2aa8GNvs3WA_2(ptr nocapture %a, ptr %b) unnamed_addr #8 {
secAlloca:
  %dot.f1.dot.f0.load.arg.b = getelementptr inbounds %tyObject_BaseChunk__Ge9bC4ruCbvpkLTYxJgWAoA, ptr %b, i64 0, i32 1
  %load.dot.f1.dot.f0.load.arg.b = load i64, ptr %dot.f1.dot.f0.load.arg.b, align 8
  %toe.t.load.arg.r.i = trunc i64 %load.dot.f1.dot.f0.load.arg.b to i32
  %icmp.IntULE.alloc.nim.149.15.i.i = icmp ult i32 %toe.t.load.arg.r.i, 65536
  %icmp.IntULE.alloc.nim.150.18.i.i = icmp ult i32 %toe.t.load.arg.r.i, 256
  %..i.i = select i1 %icmp.IntULE.alloc.nim.150.18.i.i, i64 0, i64 8
  %icmp.IntULE.alloc.nim.152.18.i.i = icmp ult i32 %toe.t.load.arg.r.i, 16777216
  %.8.i.i = select i1 %icmp.IntULE.alloc.nim.152.18.i.i, i64 16, i64 24
  %ifx.res.alloc.nim.149.10.0.i.i = select i1 %icmp.IntULE.alloc.nim.149.15.i.i, i64 %..i.i, i64 %.8.i.i
  %toe.t.load.a.alloc.nim.153.40.i.i = trunc i64 %ifx.res.alloc.nim.149.10.0.i.i to i32
  %binop.LShr.alloc.nim.153.36.i.i = lshr i32 %toe.t.load.arg.r.i, %toe.t.load.a.alloc.nim.153.40.i.i
  %nie.z.binop.LShr.alloc.nim.153.36.i.i = zext i32 %binop.LShr.alloc.nim.153.36.i.i to i64
  %bra.arr.geparr.alloc.nim.153.28.i.i = getelementptr inbounds [256 x i8], ptr @fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ, i64 0, i64 %nie.z.binop.LShr.alloc.nim.153.36.i.i
  %load.bra.arr.geparr.alloc.nim.153.28.i.i = load i8, ptr %bra.arr.geparr.alloc.nim.153.28.i.i, align 1
  %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i = sext i8 %load.bra.arr.geparr.alloc.nim.153.28.i.i to i64
  %binop.Add.alloc.nim.153.45.i.i = add nsw i64 %ifx.res.alloc.nim.149.10.0.i.i, %toe.s.load.bra.arr.geparr.alloc.nim.153.28.i.i
  %binop.Sub.alloc.nim.183.32.i = add nsw i64 %binop.Add.alloc.nim.153.45.i.i, -5
  %binop.AShr.alloc.nim.183.17.i = ashr i64 %load.dot.f1.dot.f0.load.arg.b, %binop.Sub.alloc.nim.183.32.i
  %binop.Sub.alloc.nim.183.47.i = add i64 %binop.AShr.alloc.nim.183.17.i, -32
  %inc.nv.alloc.nim.184.6.i = add nsw i64 %binop.Add.alloc.nim.153.45.i.i, -6
  %dot.f1.load.arg.b1 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %b, i64 0, i32 1
  %load.dot.f1.load.arg.b1 = load ptr, ptr %dot.f1.load.arg.b1, align 8
  %icmp.IntEQ.alloc.nim.208.12.not = icmp eq ptr %load.dot.f1.load.arg.b1, null
  br i1 %icmp.IntEQ.alloc.nim.208.12.not, label %if.end.alloc.nim.208.2, label %if.true.alloc.nim.208.2

if.true.alloc.nim.208.2:                          ; preds = %secAlloca
  %dot.f2.load.dot.f1.load.arg.b2 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %load.dot.f1.load.arg.b1, i64 0, i32 2
  %dot.f2.load.arg.b3 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %b, i64 0, i32 2
  %load.dot.f2.load.arg.b3 = load ptr, ptr %dot.f2.load.arg.b3, align 8
  store ptr %load.dot.f2.load.arg.b3, ptr %dot.f2.load.dot.f1.load.arg.b2, align 8
  br label %if.end.alloc.nim.208.2

if.end.alloc.nim.208.2:                           ; preds = %secAlloca, %if.true.alloc.nim.208.2
  %dot.f2.load.arg.b4 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %b, i64 0, i32 2
  %load.dot.f2.load.arg.b4 = load ptr, ptr %dot.f2.load.arg.b4, align 8
  %icmp.IntEQ.alloc.nim.209.12.not = icmp eq ptr %load.dot.f2.load.arg.b4, null
  br i1 %icmp.IntEQ.alloc.nim.209.12.not, label %if.end.alloc.nim.209.2, label %if.true.alloc.nim.209.2

if.true.alloc.nim.209.2:                          ; preds = %if.end.alloc.nim.208.2
  %dot.f1.load.dot.f2.load.arg.b5 = getelementptr inbounds %tyObject_BigChunk__rYVOLEi77IXrux32Ec5EWw, ptr %load.dot.f2.load.arg.b4, i64 0, i32 1
  %load.dot.f1.load.arg.b6 = load ptr, ptr %dot.f1.load.arg.b1, align 8
  store ptr %load.dot.f1.load.arg.b6, ptr %dot.f1.load.dot.f2.load.arg.b5, align 8
  br label %if.end.alloc.nim.209.2

if.end.alloc.nim.209.2:                           ; preds = %if.end.alloc.nim.208.2, %if.true.alloc.nim.209.2
  %bra.arr.geparr.alloc.nim.210.5 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 5, i64 %inc.nv.alloc.nim.184.6.i, i64 %binop.Sub.alloc.nim.183.47.i
  %load.bra.arr.geparr.alloc.nim.210.5 = load ptr, ptr %bra.arr.geparr.alloc.nim.210.5, align 8
  %icmp.IntEQ.alloc.nim.210.11 = icmp eq ptr %load.bra.arr.geparr.alloc.nim.210.5, %b
  br i1 %icmp.IntEQ.alloc.nim.210.11, label %if.true.alloc.nim.210.2, label %if.end.alloc.nim.210.2

if.true.alloc.nim.210.2:                          ; preds = %if.end.alloc.nim.209.2
  %load.dot.f1.load.arg.b12 = load ptr, ptr %dot.f1.load.arg.b1, align 8
  store ptr %load.dot.f1.load.arg.b12, ptr %bra.arr.geparr.alloc.nim.210.5, align 8
  %icmp.IntEQ.alloc.nim.212.13 = icmp eq ptr %load.dot.f1.load.arg.b12, null
  br i1 %icmp.IntEQ.alloc.nim.212.13, label %if.true.alloc.nim.212.4, label %if.end.alloc.nim.210.2

if.true.alloc.nim.212.4:                          ; preds = %if.true.alloc.nim.210.2
  %bra.arr.geparr.alloc.nim.201.25 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 4, i64 %inc.nv.alloc.nim.184.6.i
  %load.load.arg.dest1.i = load i32, ptr %bra.arr.geparr.alloc.nim.201.25, align 4
  %binop.And.alloc.nim.162.36.i = and i64 %binop.AShr.alloc.nim.183.17.i, 31
  %binop.Shl.alloc.nim.162.28.i = shl nuw nsw i64 1, %binop.And.alloc.nim.162.36.i
  %binop.trunc.alloc.nim.162.28.i = trunc i64 %binop.Shl.alloc.nim.162.28.i to i32
  %bitnot.binop.trunc.alloc.nim.162.28.i = xor i32 %binop.trunc.alloc.nim.162.28.i, -1
  %binop.And.alloc.nim.162.14.i = and i32 %load.load.arg.dest1.i, %bitnot.binop.trunc.alloc.nim.162.28.i
  store i32 %binop.And.alloc.nim.162.14.i, ptr %bra.arr.geparr.alloc.nim.201.25, align 4
  %icmp.IntEQ.alloc.nim.202.20 = icmp eq i32 %binop.And.alloc.nim.162.14.i, 0
  br i1 %icmp.IntEQ.alloc.nim.202.20, label %if.true.alloc.nim.213.15, label %if.end.alloc.nim.210.2

if.true.alloc.nim.213.15:                         ; preds = %if.true.alloc.nim.212.4
  %dot.f3.load.arg.a21 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 3
  %load.load.arg.dest1.i32 = load i32, ptr %dot.f3.load.arg.a21, align 4
  %binop.And.alloc.nim.162.36.i33 = and i64 %inc.nv.alloc.nim.184.6.i, 31
  %binop.Shl.alloc.nim.162.28.i34 = shl nuw nsw i64 1, %binop.And.alloc.nim.162.36.i33
  %binop.trunc.alloc.nim.162.28.i35 = trunc i64 %binop.Shl.alloc.nim.162.28.i34 to i32
  %bitnot.binop.trunc.alloc.nim.162.28.i36 = xor i32 %binop.trunc.alloc.nim.162.28.i35, -1
  %binop.And.alloc.nim.162.14.i37 = and i32 %load.load.arg.dest1.i32, %bitnot.binop.trunc.alloc.nim.162.28.i36
  store i32 %binop.And.alloc.nim.162.14.i37, ptr %dot.f3.load.arg.a21, align 4
  br label %if.end.alloc.nim.210.2

if.end.alloc.nim.210.2:                           ; preds = %if.end.alloc.nim.209.2, %if.true.alloc.nim.212.4, %if.true.alloc.nim.213.15, %if.true.alloc.nim.210.2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %dot.f1.load.arg.b1, i8 0, i64 16, i1 false)
  ret void
}

; Function Attrs: nofree nosync nounwind memory(readwrite, inaccessiblemem: none)
define internal fastcc void @del__Io5JDKCS5u26IEWw0J53hQ(ptr %a, ptr nocapture %t, i64 %x) unnamed_addr #18 {
secAlloca:
  %load.load.arg.t = load ptr, ptr %t, align 8
  %load.bra.arr.geparr.avltree.nim.12.45 = load ptr, ptr %load.load.arg.t, align 8
  %icmp.IntEQ.avltree.nim.74.5 = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.45, %load.load.arg.t
  br i1 %icmp.IntEQ.avltree.nim.74.5, label %secReturn, label %if.end.avltree.nim.74.2

if.end.avltree.nim.74.2:                          ; preds = %secAlloca
  %dot.f15.load.arg.a = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 15
  store ptr %load.load.arg.t, ptr %dot.f15.load.arg.a, align 8
  %load.load.arg.t3 = load ptr, ptr %t, align 8
  %dot.f1.load.load.arg.t3 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t3, i64 0, i32 1
  %load.dot.f1.load.load.arg.t3 = load i64, ptr %dot.f1.load.load.arg.t3, align 8
  %icmp.IntULT.comparisons.nim.188.16.i.not = icmp ugt i64 %load.dot.f1.load.load.arg.t3, %x
  br i1 %icmp.IntULT.comparisons.nim.188.16.i.not, label %if.end.avltree.nim.76.2, label %if.false.avltree.nim.76.2

if.false.avltree.nim.76.2:                        ; preds = %if.end.avltree.nim.74.2
  %dot.f14.load.arg.a7 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 14
  store ptr %load.load.arg.t3, ptr %dot.f14.load.arg.a7, align 8
  %load.load.arg.t10 = load ptr, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.80.17 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t10, i64 0, i64 1
  br label %if.end.avltree.nim.76.2

if.end.avltree.nim.76.2:                          ; preds = %if.end.avltree.nim.74.2, %if.false.avltree.nim.76.2
  %bra.arr.geparr.avltree.nim.80.17.sink = phi ptr [ %bra.arr.geparr.avltree.nim.80.17, %if.false.avltree.nim.76.2 ], [ %load.load.arg.t3, %if.end.avltree.nim.74.2 ]
  tail call fastcc void @del__Io5JDKCS5u26IEWw0J53hQ(ptr nonnull %a, ptr nonnull %bra.arr.geparr.avltree.nim.80.17.sink, i64 %x)
  %load.load.arg.t12 = load ptr, ptr %t, align 8
  %load.dot.f15.load.arg.a13 = load ptr, ptr %dot.f15.load.arg.a, align 8
  %icmp.IntEQ.avltree.nim.81.7 = icmp eq ptr %load.load.arg.t12, %load.dot.f15.load.arg.a13
  br i1 %icmp.IntEQ.avltree.nim.81.7, label %andor.end.avltree.nim.81.17, label %if.false.avltree.nim.81.2

andor.end.avltree.nim.81.17:                      ; preds = %if.end.avltree.nim.76.2
  %dot.f14.load.arg.a14 = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 14
  %load.dot.f14.load.arg.a14 = load ptr, ptr %dot.f14.load.arg.a14, align 8
  %load.bra.arr.geparr.avltree.nim.12.4515 = load ptr, ptr %load.dot.f14.load.arg.a14, align 8
  %icmp.IntEQ.avltree.nim.81.25.not = icmp eq ptr %load.bra.arr.geparr.avltree.nim.12.4515, %load.dot.f14.load.arg.a14
  br i1 %icmp.IntEQ.avltree.nim.81.25.not, label %if.false.avltree.nim.81.2, label %andor.next.avltree.nim.81.45

andor.next.avltree.nim.81.45:                     ; preds = %andor.end.avltree.nim.81.17
  %dot.f1.load.dot.f14.load.arg.a18 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.dot.f14.load.arg.a14, i64 0, i32 1
  %load.dot.f1.load.dot.f14.load.arg.a18 = load i64, ptr %dot.f1.load.dot.f14.load.arg.a18, align 8
  %icmp.IntEQ.avltree.nim.81.51.not = icmp eq i64 %load.dot.f1.load.dot.f14.load.arg.a18, %x
  br i1 %icmp.IntEQ.avltree.nim.81.51.not, label %if.true.avltree.nim.81.2, label %if.false.avltree.nim.81.2

if.true.avltree.nim.81.2:                         ; preds = %andor.next.avltree.nim.81.45
  %dot.f1.load.load.arg.t20 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t12, i64 0, i32 1
  %load.dot.f1.load.load.arg.t20 = load i64, ptr %dot.f1.load.load.arg.t20, align 8
  store i64 %load.dot.f1.load.load.arg.t20, ptr %dot.f1.load.dot.f14.load.arg.a18, align 8
  %load.dot.f14.load.arg.a21 = load ptr, ptr %dot.f14.load.arg.a14, align 8
  %dot.f2.load.dot.f14.load.arg.a21 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.dot.f14.load.arg.a21, i64 0, i32 2
  %load.load.arg.t22 = load ptr, ptr %t, align 8
  %dot.f2.load.load.arg.t22 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t22, i64 0, i32 2
  %load.dot.f2.load.load.arg.t22 = load i64, ptr %dot.f2.load.load.arg.t22, align 8
  store i64 %load.dot.f2.load.load.arg.t22, ptr %dot.f2.load.dot.f14.load.arg.a21, align 8
  %dot.f20.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 20
  %load.bra.arr.geparr.alloc.nim.273.18.i = load ptr, ptr %dot.f20.load.arg.a.i, align 8
  %icmp.IntEQ.alloc.nim.273.22.i = icmp eq ptr %load.bra.arr.geparr.alloc.nim.273.18.i, null
  br i1 %icmp.IntEQ.alloc.nim.273.22.i, label %if.true.alloc.nim.273.4.i, label %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit

if.true.alloc.nim.273.4.i:                        ; preds = %if.true.avltree.nim.81.2
  store ptr %dot.f20.load.arg.a.i, ptr %dot.f20.load.arg.a.i, align 8
  %bra.arr.geparr.alloc.nim.275.17.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 20, i32 0, i64 1
  store ptr %dot.f20.load.arg.a.i, ptr %bra.arr.geparr.alloc.nim.275.17.i, align 8
  br label %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit

getBottom__3mqnVBLDtYhZizqw9bvHELA.exit:          ; preds = %if.true.avltree.nim.81.2, %if.true.alloc.nim.273.4.i
  store ptr %dot.f20.load.arg.a.i, ptr %dot.f14.load.arg.a14, align 8
  %load.load.arg.t26 = load ptr, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.85.14 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t26, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.85.14 = load ptr, ptr %bra.arr.geparr.avltree.nim.85.14, align 8
  store ptr %load.bra.arr.geparr.avltree.nim.85.14, ptr %t, align 8
  %load.dot.f15.load.arg.a28 = load ptr, ptr %dot.f15.load.arg.a, align 8
  %dot.f16.load.arg.a.i = getelementptr inbounds %tyObject_MemRegion__q2MDxbyNib5maWFYN8vLug, ptr %a, i64 0, i32 16
  %load.dot.f16.load.arg.a.i = load ptr, ptr %dot.f16.load.arg.a.i, align 8
  store ptr %load.dot.f16.load.arg.a.i, ptr %load.dot.f15.load.arg.a28, align 8
  store ptr %load.dot.f15.load.arg.a28, ptr %dot.f16.load.arg.a.i, align 8
  br label %secReturn

if.false.avltree.nim.81.2:                        ; preds = %if.end.avltree.nim.76.2, %andor.end.avltree.nim.81.17, %andor.next.avltree.nim.81.45
  %load.bra.arr.geparr.avltree.nim.87.13 = load ptr, ptr %load.load.arg.t12, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.87.13 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.87.13, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.87.13 = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.87.13, align 8
  %dot.f3.load.load.arg.t30 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t12, i64 0, i32 3
  %load.dot.f3.load.load.arg.t30 = load i64, ptr %dot.f3.load.load.arg.t30, align 8
  %binop.Sub.avltree.nim.87.32 = add i64 %load.dot.f3.load.load.arg.t30, -1
  %icmp.IntSLT.avltree.nim.87.23 = icmp slt i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.87.13, %binop.Sub.avltree.nim.87.32
  br i1 %icmp.IntSLT.avltree.nim.87.23, label %if.true.avltree.nim.81.233, label %andor.end.avltree.nim.87.35

andor.end.avltree.nim.87.35:                      ; preds = %if.false.avltree.nim.81.2
  %bra.arr.geparr.avltree.nim.88.13 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t12, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.88.13 = load ptr, ptr %bra.arr.geparr.avltree.nim.88.13, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.88.13 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.88.13, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.88.13 = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.88.13, align 8
  %icmp.IntSLT.avltree.nim.88.23 = icmp slt i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.88.13, %binop.Sub.avltree.nim.87.32
  br i1 %icmp.IntSLT.avltree.nim.88.23, label %if.true.avltree.nim.81.233, label %secReturn

if.true.avltree.nim.81.233:                       ; preds = %if.false.avltree.nim.81.2, %andor.end.avltree.nim.87.35
  store i64 %binop.Sub.avltree.nim.87.32, ptr %dot.f3.load.load.arg.t30, align 8
  %load.load.arg.t36 = load ptr, ptr %t, align 8
  %dot.f3.load.load.arg.t36 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t36, i64 0, i32 3
  %load.dot.f3.load.load.arg.t36 = load i64, ptr %dot.f3.load.load.arg.t36, align 8
  %bra.arr.geparr.avltree.nim.90.13 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t36, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.90.13 = load ptr, ptr %bra.arr.geparr.avltree.nim.90.13, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.90.13 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.90.13, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.90.13 = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.90.13, align 8
  %icmp.IntSLT.avltree.nim.90.23 = icmp slt i64 %load.dot.f3.load.load.arg.t36, %load.dot.f3.load.bra.arr.geparr.avltree.nim.90.13
  br i1 %icmp.IntSLT.avltree.nim.90.23, label %if.true.avltree.nim.90.4, label %if.end.avltree.nim.90.4

if.true.avltree.nim.90.4:                         ; preds = %if.true.avltree.nim.81.233
  store i64 %load.dot.f3.load.load.arg.t36, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.90.13, align 8
  %load.load.arg.t.i.pre = load ptr, ptr %t, align 8
  %dot.f3.load.load.arg.t1.i.phi.trans.insert = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t.i.pre, i64 0, i32 3
  %load.dot.f3.load.load.arg.t1.i.pre = load i64, ptr %dot.f3.load.load.arg.t1.i.phi.trans.insert, align 8
  br label %if.end.avltree.nim.90.4

if.end.avltree.nim.90.4:                          ; preds = %if.true.avltree.nim.81.233, %if.true.avltree.nim.90.4
  %load.dot.f3.load.load.arg.t1.i = phi i64 [ %load.dot.f3.load.load.arg.t36, %if.true.avltree.nim.81.233 ], [ %load.dot.f3.load.load.arg.t1.i.pre, %if.true.avltree.nim.90.4 ]
  %load.load.arg.t.i = phi ptr [ %load.load.arg.t36, %if.true.avltree.nim.81.233 ], [ %load.load.arg.t.i.pre, %if.true.avltree.nim.90.4 ]
  %load.bra.arr.geparr.avltree.nim.40.11.i = load ptr, ptr %load.load.arg.t.i, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.40.11.i, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i, align 8
  %icmp.IntEQ.avltree.nim.40.21.i = icmp eq i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i, %load.dot.f3.load.load.arg.t1.i
  br i1 %icmp.IntEQ.avltree.nim.40.21.i, label %if.true.avltree.nim.40.2.i, label %skew__NJo8pxZdXEAIa7wkHls9cOw.exit

if.true.avltree.nim.40.2.i:                       ; preds = %if.end.avltree.nim.90.4
  store ptr %load.bra.arr.geparr.avltree.nim.40.11.i, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.43.25.i = getelementptr inbounds [2 x ptr], ptr %load.bra.arr.geparr.avltree.nim.40.11.i, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.43.25.i = load ptr, ptr %bra.arr.geparr.avltree.nim.43.25.i, align 8
  store ptr %load.bra.arr.geparr.avltree.nim.43.25.i, ptr %load.load.arg.t.i, align 8
  %load.load.arg.t6.i = load ptr, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.44.10.i = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t6.i, i64 0, i64 1
  store ptr %load.load.arg.t.i, ptr %bra.arr.geparr.avltree.nim.44.10.i, align 8
  %load.load.arg.t41.pre = load ptr, ptr %t, align 8
  br label %skew__NJo8pxZdXEAIa7wkHls9cOw.exit

skew__NJo8pxZdXEAIa7wkHls9cOw.exit:               ; preds = %if.end.avltree.nim.90.4, %if.true.avltree.nim.40.2.i
  %load.load.arg.t41 = phi ptr [ %load.load.arg.t.i, %if.end.avltree.nim.90.4 ], [ %load.load.arg.t41.pre, %if.true.avltree.nim.40.2.i ]
  %bra.arr.geparr.avltree.nim.93.15 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t41, i64 0, i64 1
  %load.load.arg.t.i48 = load ptr, ptr %bra.arr.geparr.avltree.nim.93.15, align 8
  %load.bra.arr.geparr.avltree.nim.40.11.i49 = load ptr, ptr %load.load.arg.t.i48, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i50 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.40.11.i49, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i51 = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i50, align 8
  %dot.f3.load.load.arg.t1.i52 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t.i48, i64 0, i32 3
  %load.dot.f3.load.load.arg.t1.i53 = load i64, ptr %dot.f3.load.load.arg.t1.i52, align 8
  %icmp.IntEQ.avltree.nim.40.21.i54 = icmp eq i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i51, %load.dot.f3.load.load.arg.t1.i53
  br i1 %icmp.IntEQ.avltree.nim.40.21.i54, label %if.true.avltree.nim.40.2.i59, label %skew__NJo8pxZdXEAIa7wkHls9cOw.exit60

if.true.avltree.nim.40.2.i59:                     ; preds = %skew__NJo8pxZdXEAIa7wkHls9cOw.exit
  store ptr %load.bra.arr.geparr.avltree.nim.40.11.i49, ptr %bra.arr.geparr.avltree.nim.93.15, align 8
  %bra.arr.geparr.avltree.nim.43.25.i55 = getelementptr inbounds [2 x ptr], ptr %load.bra.arr.geparr.avltree.nim.40.11.i49, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.43.25.i56 = load ptr, ptr %bra.arr.geparr.avltree.nim.43.25.i55, align 8
  store ptr %load.bra.arr.geparr.avltree.nim.43.25.i56, ptr %load.load.arg.t.i48, align 8
  %load.load.arg.t6.i57 = load ptr, ptr %bra.arr.geparr.avltree.nim.93.15, align 8
  %bra.arr.geparr.avltree.nim.44.10.i58 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t6.i57, i64 0, i64 1
  store ptr %load.load.arg.t.i48, ptr %bra.arr.geparr.avltree.nim.44.10.i58, align 8
  %load.load.arg.t42.pre = load ptr, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.94.15.phi.trans.insert = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t42.pre, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.94.15.pre = load ptr, ptr %bra.arr.geparr.avltree.nim.94.15.phi.trans.insert, align 8
  br label %skew__NJo8pxZdXEAIa7wkHls9cOw.exit60

skew__NJo8pxZdXEAIa7wkHls9cOw.exit60:             ; preds = %skew__NJo8pxZdXEAIa7wkHls9cOw.exit, %if.true.avltree.nim.40.2.i59
  %load.bra.arr.geparr.avltree.nim.94.15 = phi ptr [ %load.load.arg.t.i48, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit ], [ %load.bra.arr.geparr.avltree.nim.94.15.pre, %if.true.avltree.nim.40.2.i59 ]
  %load.load.arg.t42 = phi ptr [ %load.load.arg.t41, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit ], [ %load.load.arg.t42.pre, %if.true.avltree.nim.40.2.i59 ]
  %bra.arr.geparr.avltree.nim.94.23 = getelementptr inbounds [2 x ptr], ptr %load.bra.arr.geparr.avltree.nim.94.15, i64 0, i64 1
  %load.load.arg.t.i61 = load ptr, ptr %bra.arr.geparr.avltree.nim.94.23, align 8
  %load.bra.arr.geparr.avltree.nim.40.11.i62 = load ptr, ptr %load.load.arg.t.i61, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i63 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.40.11.i62, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i64 = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i63, align 8
  %dot.f3.load.load.arg.t1.i65 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t.i61, i64 0, i32 3
  %load.dot.f3.load.load.arg.t1.i66 = load i64, ptr %dot.f3.load.load.arg.t1.i65, align 8
  %icmp.IntEQ.avltree.nim.40.21.i67 = icmp eq i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.40.11.i64, %load.dot.f3.load.load.arg.t1.i66
  br i1 %icmp.IntEQ.avltree.nim.40.21.i67, label %if.true.avltree.nim.40.2.i72, label %skew__NJo8pxZdXEAIa7wkHls9cOw.exit73

if.true.avltree.nim.40.2.i72:                     ; preds = %skew__NJo8pxZdXEAIa7wkHls9cOw.exit60
  store ptr %load.bra.arr.geparr.avltree.nim.40.11.i62, ptr %bra.arr.geparr.avltree.nim.94.23, align 8
  %bra.arr.geparr.avltree.nim.43.25.i68 = getelementptr inbounds [2 x ptr], ptr %load.bra.arr.geparr.avltree.nim.40.11.i62, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.43.25.i69 = load ptr, ptr %bra.arr.geparr.avltree.nim.43.25.i68, align 8
  store ptr %load.bra.arr.geparr.avltree.nim.43.25.i69, ptr %load.load.arg.t.i61, align 8
  %load.load.arg.t6.i70 = load ptr, ptr %bra.arr.geparr.avltree.nim.94.23, align 8
  %bra.arr.geparr.avltree.nim.44.10.i71 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t6.i70, i64 0, i64 1
  store ptr %load.load.arg.t.i61, ptr %bra.arr.geparr.avltree.nim.44.10.i71, align 8
  %load.load.arg.t.i74.pre = load ptr, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.47.11.i.phi.trans.insert = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t.i74.pre, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.47.11.i.pre = load ptr, ptr %bra.arr.geparr.avltree.nim.47.11.i.phi.trans.insert, align 8
  %bra.arr.geparr.avltree.nim.47.19.i.phi.trans.insert = getelementptr inbounds [2 x ptr], ptr %load.bra.arr.geparr.avltree.nim.47.11.i.pre, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.47.19.i.pre = load ptr, ptr %bra.arr.geparr.avltree.nim.47.19.i.phi.trans.insert, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i.phi.trans.insert = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.47.19.i.pre, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i.pre = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i.phi.trans.insert, align 8
  br label %skew__NJo8pxZdXEAIa7wkHls9cOw.exit73

skew__NJo8pxZdXEAIa7wkHls9cOw.exit73:             ; preds = %skew__NJo8pxZdXEAIa7wkHls9cOw.exit60, %if.true.avltree.nim.40.2.i72
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i = phi i64 [ %load.dot.f3.load.load.arg.t1.i66, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit60 ], [ %load.dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i.pre, %if.true.avltree.nim.40.2.i72 ]
  %load.bra.arr.geparr.avltree.nim.47.19.i = phi ptr [ %load.load.arg.t.i61, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit60 ], [ %load.bra.arr.geparr.avltree.nim.47.19.i.pre, %if.true.avltree.nim.40.2.i72 ]
  %load.bra.arr.geparr.avltree.nim.47.11.i = phi ptr [ %load.bra.arr.geparr.avltree.nim.94.15, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit60 ], [ %load.bra.arr.geparr.avltree.nim.47.11.i.pre, %if.true.avltree.nim.40.2.i72 ]
  %load.load.arg.t.i74 = phi ptr [ %load.load.arg.t42, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit60 ], [ %load.load.arg.t.i74.pre, %if.true.avltree.nim.40.2.i72 ]
  %dot.f3.load.load.arg.t1.i75 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t.i74, i64 0, i32 3
  %load.dot.f3.load.load.arg.t1.i76 = load i64, ptr %dot.f3.load.load.arg.t1.i75, align 8
  %icmp.IntEQ.avltree.nim.47.29.i = icmp eq i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i, %load.dot.f3.load.load.arg.t1.i76
  br i1 %icmp.IntEQ.avltree.nim.47.29.i, label %if.true.avltree.nim.47.2.i, label %split__NJo8pxZdXEAIa7wkHls9cOw_2.exit

if.true.avltree.nim.47.2.i:                       ; preds = %skew__NJo8pxZdXEAIa7wkHls9cOw.exit73
  %bra.arr.geparr.avltree.nim.47.11.i = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t.i74, i64 0, i64 1
  store ptr %load.bra.arr.geparr.avltree.nim.47.11.i, ptr %t, align 8
  %load.bra.arr.geparr.avltree.nim.50.25.i = load ptr, ptr %load.bra.arr.geparr.avltree.nim.47.11.i, align 8
  store ptr %load.bra.arr.geparr.avltree.nim.50.25.i, ptr %bra.arr.geparr.avltree.nim.47.11.i, align 8
  %load.load.arg.t6.i77 = load ptr, ptr %t, align 8
  store ptr %load.load.arg.t.i74, ptr %load.load.arg.t6.i77, align 8
  %load.load.arg.t7.i = load ptr, ptr %t, align 8
  %dot.f3.load.load.arg.t7.i = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t7.i, i64 0, i32 3
  %load.dot.f3.load.load.arg.t7.i = load i64, ptr %dot.f3.load.load.arg.t7.i, align 8
  %inc.nv.avltree.nim.52.8.i = add i64 %load.dot.f3.load.load.arg.t7.i, 1
  store i64 %inc.nv.avltree.nim.52.8.i, ptr %dot.f3.load.load.arg.t7.i, align 8
  %load.load.arg.t44.pre = load ptr, ptr %t, align 8
  %bra.arr.geparr.avltree.nim.96.16.phi.trans.insert = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t44.pre, i64 0, i64 1
  %load.load.arg.t.i78.pre = load ptr, ptr %bra.arr.geparr.avltree.nim.96.16.phi.trans.insert, align 8
  %bra.arr.geparr.avltree.nim.47.11.i79.phi.trans.insert = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t.i78.pre, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.47.11.i80.pre = load ptr, ptr %bra.arr.geparr.avltree.nim.47.11.i79.phi.trans.insert, align 8
  br label %split__NJo8pxZdXEAIa7wkHls9cOw_2.exit

split__NJo8pxZdXEAIa7wkHls9cOw_2.exit:            ; preds = %skew__NJo8pxZdXEAIa7wkHls9cOw.exit73, %if.true.avltree.nim.47.2.i
  %load.bra.arr.geparr.avltree.nim.47.11.i80 = phi ptr [ %load.bra.arr.geparr.avltree.nim.47.19.i, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit73 ], [ %load.bra.arr.geparr.avltree.nim.47.11.i80.pre, %if.true.avltree.nim.47.2.i ]
  %load.load.arg.t.i78 = phi ptr [ %load.bra.arr.geparr.avltree.nim.47.11.i, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit73 ], [ %load.load.arg.t.i78.pre, %if.true.avltree.nim.47.2.i ]
  %load.load.arg.t44 = phi ptr [ %load.load.arg.t.i74, %skew__NJo8pxZdXEAIa7wkHls9cOw.exit73 ], [ %load.load.arg.t44.pre, %if.true.avltree.nim.47.2.i ]
  %bra.arr.geparr.avltree.nim.47.19.i81 = getelementptr inbounds [2 x ptr], ptr %load.bra.arr.geparr.avltree.nim.47.11.i80, i64 0, i64 1
  %load.bra.arr.geparr.avltree.nim.47.19.i82 = load ptr, ptr %bra.arr.geparr.avltree.nim.47.19.i81, align 8
  %dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i83 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.bra.arr.geparr.avltree.nim.47.19.i82, i64 0, i32 3
  %load.dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i84 = load i64, ptr %dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i83, align 8
  %dot.f3.load.load.arg.t1.i85 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t.i78, i64 0, i32 3
  %load.dot.f3.load.load.arg.t1.i86 = load i64, ptr %dot.f3.load.load.arg.t1.i85, align 8
  %icmp.IntEQ.avltree.nim.47.29.i87 = icmp eq i64 %load.dot.f3.load.bra.arr.geparr.avltree.nim.47.19.i84, %load.dot.f3.load.load.arg.t1.i86
  br i1 %icmp.IntEQ.avltree.nim.47.29.i87, label %if.true.avltree.nim.47.2.i94, label %secReturn

if.true.avltree.nim.47.2.i94:                     ; preds = %split__NJo8pxZdXEAIa7wkHls9cOw_2.exit
  %bra.arr.geparr.avltree.nim.47.11.i79 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t.i78, i64 0, i64 1
  %bra.arr.geparr.avltree.nim.96.16 = getelementptr inbounds [2 x ptr], ptr %load.load.arg.t44, i64 0, i64 1
  store ptr %load.bra.arr.geparr.avltree.nim.47.11.i80, ptr %bra.arr.geparr.avltree.nim.96.16, align 8
  %load.bra.arr.geparr.avltree.nim.50.25.i88 = load ptr, ptr %load.bra.arr.geparr.avltree.nim.47.11.i80, align 8
  store ptr %load.bra.arr.geparr.avltree.nim.50.25.i88, ptr %bra.arr.geparr.avltree.nim.47.11.i79, align 8
  %load.load.arg.t6.i89 = load ptr, ptr %bra.arr.geparr.avltree.nim.96.16, align 8
  store ptr %load.load.arg.t.i78, ptr %load.load.arg.t6.i89, align 8
  %load.load.arg.t7.i90 = load ptr, ptr %bra.arr.geparr.avltree.nim.96.16, align 8
  %dot.f3.load.load.arg.t7.i91 = getelementptr inbounds %tyObject_AvlNode__GwZHbWxpdvfc2UhtYRtsVQ, ptr %load.load.arg.t7.i90, i64 0, i32 3
  %load.dot.f3.load.load.arg.t7.i92 = load i64, ptr %dot.f3.load.load.arg.t7.i91, align 8
  %inc.nv.avltree.nim.52.8.i93 = add i64 %load.dot.f3.load.load.arg.t7.i92, 1
  store i64 %inc.nv.avltree.nim.52.8.i93, ptr %dot.f3.load.load.arg.t7.i91, align 8
  br label %secReturn

secReturn:                                        ; preds = %if.true.avltree.nim.47.2.i94, %split__NJo8pxZdXEAIa7wkHls9cOw_2.exit, %getBottom__3mqnVBLDtYhZizqw9bvHELA.exit, %andor.end.avltree.nim.87.35, %secAlloca
  ret void
}

declare i32 @munmap(ptr, i64) local_unnamed_addr #2

define internal fastcc void @collectZCT__EN6T32AMm3va9bsrdxtF0cg(ptr %gch) unnamed_addr #2 {
secAlloca:
  %dot.f3.load.arg.gch = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 3
  %load.load.L.gc.nim.752.85 = load i64, ptr %dot.f3.load.arg.gch, align 8
  %icmp.IntSLT.gc.nim.752.126 = icmp sgt i64 %load.load.L.gc.nim.752.85, 0
  br i1 %icmp.IntSLT.gc.nim.752.126, label %while.true.gc.nim.752.2.lr.ph, label %while.false.gc.nim.752.2

while.true.gc.nim.752.2.lr.ph:                    ; preds = %secAlloca
  %dot.f2.dot.f3.load.arg.gch1 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 3, i32 2
  %dot.f7.load.arg.gch4 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7
  br label %while.true.gc.nim.752.2

while.true.gc.nim.752.2:                          ; preds = %while.true.gc.nim.752.2.lr.ph, %if.end.gc.nim.762.4
  %load.dot.f2.dot.f3.load.arg.gch1 = load ptr, ptr %dot.f2.dot.f3.load.arg.gch1, align 8
  %load.bra.uarr.geparr.gc.nim.753.21 = load ptr, ptr %load.dot.f2.dot.f3.load.arg.gch1, align 8
  %load.dot.f0.load.c.gc.nim.758.17 = load i64, ptr %load.bra.uarr.geparr.gc.nim.753.21, align 8
  %binop.And.gc.nim.758.28 = and i64 %load.dot.f0.load.c.gc.nim.758.17, -5
  store i64 %binop.And.gc.nim.758.28, ptr %load.bra.uarr.geparr.gc.nim.753.21, align 8
  %load.dot.f2.dot.f3.load.arg.gch2 = load ptr, ptr %dot.f2.dot.f3.load.arg.gch1, align 8
  %load.load.L.gc.nim.759.29 = load i64, ptr %dot.f3.load.arg.gch, align 8
  %binop.Sub.gc.nim.759.33 = add i64 %load.load.L.gc.nim.759.29, -1
  %bra.uarr.geparr.gc.nim.759.28 = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f3.load.arg.gch2, i64 0, i64 %binop.Sub.gc.nim.759.33
  %load.bra.uarr.geparr.gc.nim.759.28 = load ptr, ptr %bra.uarr.geparr.gc.nim.759.28, align 8
  store ptr %load.bra.uarr.geparr.gc.nim.759.28, ptr %load.dot.f2.dot.f3.load.arg.gch2, align 8
  %load.load.L.gc.nim.760.8 = load i64, ptr %dot.f3.load.arg.gch, align 8
  %inc.nv.gc.nim.760.7 = add i64 %load.load.L.gc.nim.760.8, -1
  store i64 %inc.nv.gc.nim.760.7, ptr %dot.f3.load.arg.gch, align 8
  %load.dot.f0.load.c.gc.nim.762.7 = load i64, ptr %load.bra.uarr.geparr.gc.nim.753.21, align 8
  %icmp.IntULT.comparisons.nim.188.16.i = icmp ugt i64 %load.dot.f0.load.c.gc.nim.762.7, 7
  br i1 %icmp.IntULT.comparisons.nim.188.16.i, label %if.end.gc.nim.762.4, label %if.true.gc.nim.762.4

if.true.gc.nim.762.4:                             ; preds = %while.true.gc.nim.752.2
  %dot.f1.load.arg.cell.i = getelementptr inbounds %tyObject_Cell__nD1WneZb8PfM7AKNjgr63Q, ptr %load.bra.uarr.geparr.gc.nim.753.21, i64 0, i32 1
  %load.dot.f1.load.arg.cell.i = load ptr, ptr %dot.f1.load.arg.cell.i, align 8
  %dot.f6.load.t.gc_common.nim.422.5.i = getelementptr inbounds %TNimType, ptr %load.dot.f1.load.arg.cell.i, i64 0, i32 6
  %load.dot.f6.load.t.gc_common.nim.422.5.i = load ptr, ptr %dot.f6.load.t.gc_common.nim.422.5.i, align 8
  %icmp.IntEQ.gc_common.nim.422.17.not.i = icmp eq ptr %load.dot.f6.load.t.gc_common.nim.422.5.i, null
  br i1 %icmp.IntEQ.gc_common.nim.422.17.not.i, label %prepareDealloc__fvhnFro5wEfzy879alizcUQ.exit, label %if.true.gc_common.nim.422.2.i

if.true.gc_common.nim.422.2.i:                    ; preds = %if.true.gc.nim.762.4
  %load.i = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %inc.nv.gc_common.nim.428.7.i = add i64 %load.i, 1
  store i64 %inc.nv.gc_common.nim.428.7.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %load.dot.f6.load.t.gc_common.nim.429.21.i = load ptr, ptr %dot.f6.load.t.gc_common.nim.422.5.i, align 8
  %cast.pi.gc.nim.173.25.i.i = ptrtoint ptr %load.bra.uarr.geparr.gc.nim.753.21 to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i = add i64 %cast.pi.gc.nim.173.25.i.i, 16
  %cast.ip.gc.nim.173.11.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i to ptr
  tail call void %load.dot.f6.load.t.gc_common.nim.429.21.i(ptr %cast.ip.gc.nim.173.11.i.i)
  %load2.i = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %inc.nv.gc_common.nim.430.7.i = add i64 %load2.i, -1
  store i64 %inc.nv.gc_common.nim.430.7.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  br label %prepareDealloc__fvhnFro5wEfzy879alizcUQ.exit

prepareDealloc__fvhnFro5wEfzy879alizcUQ.exit:     ; preds = %if.true.gc.nim.762.4, %if.true.gc_common.nim.422.2.i
  tail call fastcc void @forAllChildren__XCvXrotwhq0gugZtuZTNPQ(ptr nonnull %load.bra.uarr.geparr.gc.nim.753.21, i8 2)
  tail call fastcc void @rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ(ptr nonnull %dot.f7.load.arg.gch4, ptr nonnull %load.bra.uarr.geparr.gc.nim.753.21)
  %load.load.L.gc.nim.752.8.pre = load i64, ptr %dot.f3.load.arg.gch, align 8
  br label %if.end.gc.nim.762.4

if.end.gc.nim.762.4:                              ; preds = %while.true.gc.nim.752.2, %prepareDealloc__fvhnFro5wEfzy879alizcUQ.exit
  %load.load.L.gc.nim.752.8 = phi i64 [ %inc.nv.gc.nim.760.7, %while.true.gc.nim.752.2 ], [ %load.load.L.gc.nim.752.8.pre, %prepareDealloc__fvhnFro5wEfzy879alizcUQ.exit ]
  %icmp.IntSLT.gc.nim.752.12 = icmp sgt i64 %load.load.L.gc.nim.752.8, 0
  br i1 %icmp.IntSLT.gc.nim.752.12, label %while.true.gc.nim.752.2, label %while.false.gc.nim.752.2

while.false.gc.nim.752.2:                         ; preds = %if.end.gc.nim.762.4, %secAlloca
  ret void
}

define internal fastcc void @forAllChildren__XCvXrotwhq0gugZtuZTNPQ(ptr %cell, i8 %op) unnamed_addr #2 {
secAlloca:
  %dot.f1.load.arg.cell = getelementptr inbounds %tyObject_Cell__nD1WneZb8PfM7AKNjgr63Q, ptr %cell, i64 0, i32 1
  %load.dot.f1.load.arg.cell = load ptr, ptr %dot.f1.load.arg.cell, align 8
  %dot.f7.load.dot.f1.load.arg.cell = getelementptr inbounds %TNimType, ptr %load.dot.f1.load.arg.cell, i64 0, i32 7
  %load.dot.f7.load.dot.f1.load.arg.cell = load ptr, ptr %dot.f7.load.dot.f1.load.arg.cell, align 8
  %eq.prc.gc.nim.378.12.not = icmp eq ptr %load.dot.f7.load.dot.f1.load.arg.cell, null
  br i1 %eq.prc.gc.nim.378.12.not, label %if.false.gc.nim.378.2, label %if.true.gc.nim.378.2

if.true.gc.nim.378.2:                             ; preds = %secAlloca
  %cast.pi.gc.nim.173.25.i = ptrtoint ptr %cell to i64
  %binop.Add.arithmetics.nim.407.26.i.i = add i64 %cast.pi.gc.nim.173.25.i, 16
  %cast.ip.gc.nim.173.11.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i to ptr
  %toe.z.load.arg.op = zext i8 %op to i64
  tail call void %load.dot.f7.load.dot.f1.load.arg.cell(ptr %cast.ip.gc.nim.173.11.i, i64 %toe.z.load.arg.op)
  br label %secReturn

if.false.gc.nim.378.2:                            ; preds = %secAlloca
  %dot.f2.load.dot.f1.load.arg.cell2 = getelementptr inbounds %TNimType, ptr %load.dot.f1.load.arg.cell, i64 0, i32 2
  %load.dot.f2.load.dot.f1.load.arg.cell2 = load i8, ptr %dot.f2.load.dot.f1.load.arg.cell2, align 1
  switch i8 %load.dot.f2.load.dot.f1.load.arg.cell2, label %secReturn [
    i8 22, label %case.of.1.do.gc.nim.381.4
    i8 24, label %case.of.2.do.gc.nim.381.4
  ]

case.of.1.do.gc.nim.381.4:                        ; preds = %if.false.gc.nim.378.2
  %cast.pi.gc.nim.173.25.i17 = ptrtoint ptr %cell to i64
  %binop.Add.arithmetics.nim.407.26.i.i18 = add i64 %cast.pi.gc.nim.173.25.i17, 16
  %cast.ip.gc.nim.173.11.i19 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i18 to ptr
  %dot.f4.load.dot.f1.load.arg.cell4 = getelementptr inbounds %TNimType, ptr %load.dot.f1.load.arg.cell, i64 0, i32 4
  %load.dot.f4.load.dot.f1.load.arg.cell4 = load ptr, ptr %dot.f4.load.dot.f1.load.arg.cell4, align 8
  tail call fastcc void @forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(ptr %cast.ip.gc.nim.173.11.i19, ptr %load.dot.f4.load.dot.f1.load.arg.cell4, i8 %op)
  br label %secReturn

case.of.2.do.gc.nim.381.4:                        ; preds = %if.false.gc.nim.378.2
  %cast.pi.gc.nim.173.25.i20 = ptrtoint ptr %cell to i64
  %binop.Add.arithmetics.nim.407.26.i.i21 = add i64 %cast.pi.gc.nim.173.25.i20, 16
  %icmp.IntEQ.gc.nim.387.11.not = icmp eq i64 %binop.Add.arithmetics.nim.407.26.i.i21, 0
  br i1 %icmp.IntEQ.gc.nim.387.11.not, label %secReturn, label %if.true.gc.nim.387.6

if.true.gc.nim.387.6:                             ; preds = %case.of.2.do.gc.nim.381.4
  %cast.ip.gc.nim.173.11.i22 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i21 to ptr
  %load.dot.f0.load.s.gc.nim.388.20 = load i64, ptr %cast.ip.gc.nim.173.11.i22, align 8
  %binop.Sub.gc.nim.388.25 = add i64 %load.dot.f0.load.s.gc.nim.388.20, -1
  %icmp.IntSLE.iterators_1.nim.91.14.not24 = icmp slt i64 %binop.Sub.gc.nim.388.25, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not24, label %secReturn, label %while.true.iterators_1.nim.91.4

while.true.iterators_1.nim.91.4:                  ; preds = %if.true.gc.nim.387.6, %while.true.iterators_1.nim.91.4
  %res.025 = phi i64 [ %inc.nv.iterators_1.nim.93.9, %while.true.iterators_1.nim.91.4 ], [ 0, %if.true.gc.nim.387.6 ]
  %load.dot.f1.load.arg.cell7 = load ptr, ptr %dot.f1.load.arg.cell, align 8
  %dot.f4.load.dot.f1.load.arg.cell7 = getelementptr inbounds %TNimType, ptr %load.dot.f1.load.arg.cell7, i64 0, i32 4
  %load.dot.f4.load.dot.f1.load.arg.cell7 = load ptr, ptr %dot.f4.load.dot.f1.load.arg.cell7, align 8
  %dot.f1.load.dot.f4.load.dot.f1.load.arg.cell7 = getelementptr inbounds %TNimType, ptr %load.dot.f4.load.dot.f1.load.arg.cell7, i64 0, i32 1
  %load.dot.f1.load.dot.f4.load.dot.f1.load.arg.cell7 = load i64, ptr %dot.f1.load.dot.f4.load.dot.f1.load.arg.cell7, align 8
  %call.res.gc.nim.389.52 = tail call fastcc i64 @align__vzThvqZajaR9ct9cQ7SOy1tQ(i64 %load.dot.f1.load.dot.f4.load.dot.f1.load.arg.cell7)
  %binop.Add.arithmetics.nim.407.26.i = add i64 %call.res.gc.nim.389.52, %binop.Add.arithmetics.nim.407.26.i.i21
  %load.dot.f1.load.arg.cell8 = load ptr, ptr %dot.f1.load.arg.cell, align 8
  %dot.f4.load.dot.f1.load.arg.cell8 = getelementptr inbounds %TNimType, ptr %load.dot.f1.load.arg.cell8, i64 0, i32 4
  %load.dot.f4.load.dot.f1.load.arg.cell8 = load ptr, ptr %dot.f4.load.dot.f1.load.arg.cell8, align 8
  %load.dot.f0.load.dot.f4.load.dot.f1.load.arg.cell8 = load i64, ptr %load.dot.f4.load.dot.f1.load.arg.cell8, align 8
  %binop.Mul.arithmetics.nim.429.26.i = mul i64 %load.dot.f0.load.dot.f4.load.dot.f1.load.arg.cell8, %res.025
  %binop.Add.arithmetics.nim.407.26.i23 = add i64 %binop.Add.arithmetics.nim.407.26.i, %binop.Mul.arithmetics.nim.429.26.i
  %cast.ip.gc.nim.388.12 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i23 to ptr
  tail call fastcc void @forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(ptr %cast.ip.gc.nim.388.12, ptr nonnull %load.dot.f4.load.dot.f1.load.arg.cell8, i8 %op)
  %inc.nv.iterators_1.nim.93.9 = add i64 %res.025, 1
  %icmp.IntSLE.iterators_1.nim.91.14.not = icmp sgt i64 %inc.nv.iterators_1.nim.93.9, %binop.Sub.gc.nim.388.25
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not, label %secReturn, label %while.true.iterators_1.nim.91.4

secReturn:                                        ; preds = %while.true.iterators_1.nim.91.4, %if.true.gc.nim.387.6, %if.false.gc.nim.378.2, %if.true.gc.nim.378.2, %case.of.2.do.gc.nim.381.4, %case.of.1.do.gc.nim.381.4
  ret void
}

define internal fastcc void @forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(ptr %dest, ptr nocapture readonly %mt, i8 %op) unnamed_addr #2 {
secAlloca:
  %cast.pi.gc.nim.359.10 = ptrtoint ptr %dest to i64
  %icmp.IntEQ.gc.nim.360.10 = icmp eq ptr %dest, null
  br i1 %icmp.IntEQ.gc.nim.360.10, label %secReturn, label %if.end.gc.nim.360.2

if.end.gc.nim.360.2:                              ; preds = %secAlloca
  %dot.f3.load.arg.mt = getelementptr inbounds %TNimType, ptr %mt, i64 0, i32 3
  %load.dot.f3.load.arg.mt = load i8, ptr %dot.f3.load.arg.mt, align 1
  %inset.masked.gc.nim.361.15 = and i8 %load.dot.f3.load.arg.mt, 1
  %not.bool.i8.inset.result.gc.nim.361.15 = icmp eq i8 %inset.masked.gc.nim.361.15, 0
  br i1 %not.bool.i8.inset.result.gc.nim.361.15, label %if.true.gc.nim.361.2, label %secReturn

if.true.gc.nim.361.2:                             ; preds = %if.end.gc.nim.360.2
  %dot.f2.load.arg.mt2 = getelementptr inbounds %TNimType, ptr %mt, i64 0, i32 2
  %load.dot.f2.load.arg.mt2 = load i8, ptr %dot.f2.load.arg.mt2, align 1
  switch i8 %load.dot.f2.load.arg.mt2, label %case.of.2.gc.nim.362.4 [
    i8 28, label %case.of.1.do.gc.nim.362.4
    i8 24, label %case.of.1.do.gc.nim.362.4
    i8 22, label %case.of.1.do.gc.nim.362.4
  ]

case.of.1.do.gc.nim.362.4:                        ; preds = %if.true.gc.nim.361.2, %if.true.gc.nim.361.2, %if.true.gc.nim.361.2
  %load.cast.ip.gc.nim.364.18 = load ptr, ptr %dest, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.cast.ip.gc.nim.364.18, i8 %op)
  br label %secReturn

case.of.2.gc.nim.362.4:                           ; preds = %if.true.gc.nim.361.2
  %0 = add i8 %load.dot.f2.load.arg.mt2, -17
  %or.cond19 = icmp ult i8 %0, 2
  br i1 %or.cond19, label %case.of.2.do.gc.nim.362.4, label %case.of.3.gc.nim.362.4

case.of.2.do.gc.nim.362.4:                        ; preds = %case.of.2.gc.nim.362.4
  %dot.f5.load.arg.mt6 = getelementptr inbounds %TNimType, ptr %mt, i64 0, i32 5
  %load.dot.f5.load.arg.mt6 = load ptr, ptr %dot.f5.load.arg.mt6, align 8
  tail call fastcc void @forAllSlotsAux__ld9axHPi9bpxevVrdgKiDF5Q(ptr nonnull %dest, ptr %load.dot.f5.load.arg.mt6, i8 %op)
  br label %secReturn

case.of.3.gc.nim.362.4:                           ; preds = %case.of.2.gc.nim.362.4
  switch i8 %load.dot.f2.load.arg.mt2, label %secReturn [
    i8 27, label %case.of.3.do.gc.nim.362.4
    i8 16, label %case.of.3.do.gc.nim.362.4
    i8 4, label %case.of.3.do.gc.nim.362.4
  ]

case.of.3.do.gc.nim.362.4:                        ; preds = %case.of.3.gc.nim.362.4, %case.of.3.gc.nim.362.4, %case.of.3.gc.nim.362.4
  %load.dot.f0.load.arg.mt10 = load i64, ptr %mt, align 8
  %dot.f4.load.arg.mt11 = getelementptr inbounds %TNimType, ptr %mt, i64 0, i32 4
  %load.dot.f4.load.arg.mt11 = load ptr, ptr %dot.f4.load.arg.mt11, align 8
  %load.dot.f0.load.dot.f4.load.arg.mt11 = load i64, ptr %load.dot.f4.load.arg.mt11, align 8
  %binop.SDiv.gc.nim.368.27 = sdiv i64 %load.dot.f0.load.arg.mt10, %load.dot.f0.load.dot.f4.load.arg.mt11
  %binop.Sub.gc.nim.368.44 = add i64 %binop.SDiv.gc.nim.368.27, -1
  %icmp.IntSLE.iterators_1.nim.91.14.not27 = icmp slt i64 %binop.Sub.gc.nim.368.44, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not27, label %secReturn, label %while.true.iterators_1.nim.91.4

while.true.iterators_1.nim.91.4:                  ; preds = %case.of.3.do.gc.nim.362.4, %while.true.iterators_1.nim.91.4
  %res.028 = phi i64 [ %inc.nv.iterators_1.nim.93.9, %while.true.iterators_1.nim.91.4 ], [ 0, %case.of.3.do.gc.nim.362.4 ]
  %load.dot.f4.load.arg.mt12 = load ptr, ptr %dot.f4.load.arg.mt11, align 8
  %load.dot.f0.load.dot.f4.load.arg.mt12 = load i64, ptr %load.dot.f4.load.arg.mt12, align 8
  %binop.Mul.arithmetics.nim.429.26.i = mul i64 %load.dot.f0.load.dot.f4.load.arg.mt12, %res.028
  %binop.Add.arithmetics.nim.407.26.i = add i64 %binop.Mul.arithmetics.nim.429.26.i, %cast.pi.gc.nim.359.10
  %cast.ip.gc.nim.368.10 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i to ptr
  tail call fastcc void @forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(ptr %cast.ip.gc.nim.368.10, ptr nonnull %load.dot.f4.load.arg.mt12, i8 %op)
  %inc.nv.iterators_1.nim.93.9 = add i64 %res.028, 1
  %icmp.IntSLE.iterators_1.nim.91.14.not = icmp sgt i64 %inc.nv.iterators_1.nim.93.9, %binop.Sub.gc.nim.368.44
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not, label %secReturn, label %while.true.iterators_1.nim.91.4

secReturn:                                        ; preds = %while.true.iterators_1.nim.91.4, %case.of.3.do.gc.nim.362.4, %case.of.3.gc.nim.362.4, %case.of.2.do.gc.nim.362.4, %case.of.1.do.gc.nim.362.4, %if.end.gc.nim.360.2, %secAlloca
  ret void
}

define internal fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %p, i8 %op) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.gc.nim.669.7 = icmp eq ptr %p, null
  br i1 %icmp.IntEQ.gc.nim.669.7, label %secReturn, label %if.end.gc.nim.669.2

if.end.gc.nim.669.2:                              ; preds = %secAlloca
  %cast.pi.gc.nim.177.23.i = ptrtoint ptr %p to i64
  %binop.Sub.arithmetics.nim.418.26.i.i = add i64 %cast.pi.gc.nim.177.23.i, -16
  %cast.ip.gc.nim.177.11.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i to ptr
  switch i8 %op, label %secReturn [
    i8 2, label %case.of.1.do.gc.nim.674.2
    i8 3, label %case.of.2.do.gc.nim.674.2
    i8 0, label %case.of.3.do.gc.nim.674.2
    i8 1, label %case.of.4.do.gc.nim.674.2
  ]

case.of.1.do.gc.nim.674.2:                        ; preds = %if.end.gc.nim.669.2
  tail call fastcc void @decRef__AT1eRuflKWyTTBdLjEDZbg_2(ptr %cast.ip.gc.nim.177.11.i)
  br label %secReturn

case.of.2.do.gc.nim.674.2:                        ; preds = %if.end.gc.nim.669.2
  tail call fastcc void @add__W9aRfhn7HvnQTPAb8ajo1uw(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 5), ptr %cast.ip.gc.nim.177.11.i)
  br label %secReturn

case.of.3.do.gc.nim.674.2:                        ; preds = %if.end.gc.nim.669.2
  tail call fastcc void @markS__SOJE9bROCOc8iabVsKM64Sg(ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q, ptr %cast.ip.gc.nim.177.11.i)
  br label %secReturn

case.of.4.do.gc.nim.674.2:                        ; preds = %if.end.gc.nim.669.2
  tail call fastcc void @add__W9aRfhn7HvnQTPAb8ajo1uw(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 5), ptr %cast.ip.gc.nim.177.11.i)
  br label %secReturn

secReturn:                                        ; preds = %if.end.gc.nim.669.2, %case.of.1.do.gc.nim.674.2, %case.of.2.do.gc.nim.674.2, %case.of.3.do.gc.nim.674.2, %case.of.4.do.gc.nim.674.2, %secAlloca
  ret void
}

define internal fastcc void @decRef__AT1eRuflKWyTTBdLjEDZbg_2(ptr %c) unnamed_addr #2 {
secAlloca:
  %load.dot.f0.load.arg.c1 = load i64, ptr %c, align 8
  %binop.Sub.arithmetics.nim.418.26.i = add i64 %load.dot.f0.load.arg.c1, -8
  store i64 %binop.Sub.arithmetics.nim.418.26.i, ptr %c, align 8
  %icmp.IntULT.comparisons.nim.188.16.i = icmp ult i64 %binop.Sub.arithmetics.nim.418.26.i, 8
  %binop.And.gc.nim.167.17.i.i = and i64 %load.dot.f0.load.arg.c1, 4
  %icmp.IntEQ.gc.nim.167.30.i.i = icmp eq i64 %binop.And.gc.nim.167.17.i.i, 0
  %or.cond = and i1 %icmp.IntULT.comparisons.nim.188.16.i, %icmp.IntEQ.gc.nim.167.30.i.i
  br i1 %or.cond, label %if.true.gc.nim.167.2.i.i, label %secReturn

if.true.gc.nim.167.2.i.i:                         ; preds = %secAlloca
  %binop.Or.gc.nim.168.28.i.i = or i64 %binop.Sub.arithmetics.nim.418.26.i, 4
  store i64 %binop.Or.gc.nim.168.28.i.i, ptr %c, align 8
  tail call fastcc void @add__W9aRfhn7HvnQTPAb8ajo1uw(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 3), ptr nonnull %c)
  br label %secReturn

secReturn:                                        ; preds = %if.true.gc.nim.167.2.i.i, %secAlloca
  ret void
}

define internal fastcc void @markS__SOJE9bROCOc8iabVsKM64Sg(ptr nocapture %gch, ptr %c) unnamed_addr #2 {
secAlloca:
  %dot.f9.load.arg.gch = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 9
  tail call fastcc void @incl__azHo9bY5qs9b2EZ9cSse4fmZA(ptr nonnull %dot.f9.load.arg.gch, ptr %c)
  tail call fastcc void @forAllChildren__XCvXrotwhq0gugZtuZTNPQ(ptr %c, i8 1)
  %dot.f5.load.arg.gch2 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 5
  %load.dot.f0.dot.f5.load.arg.gch210 = load i64, ptr %dot.f5.load.arg.gch2, align 8
  %icmp.IntSLT.gc.nim.632.2611 = icmp sgt i64 %load.dot.f0.dot.f5.load.arg.gch210, 0
  br i1 %icmp.IntSLT.gc.nim.632.2611, label %while.true.gc.nim.632.2.lr.ph, label %secReturn

while.true.gc.nim.632.2.lr.ph:                    ; preds = %secAlloca
  %dot.f2.dot.f5.load.arg.gch4 = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 5, i32 2
  %dot.f1.load.arg.t.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 9, i32 1
  %dot.f3.load.arg.t1.i.i = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 9, i32 3
  br label %while.true.gc.nim.632.2

while.true.gc.nim.632.2:                          ; preds = %while.true.gc.nim.632.2.lr.ph, %if.end.gc.nim.636.4
  %load.dot.f0.dot.f5.load.arg.gch212 = phi i64 [ %load.dot.f0.dot.f5.load.arg.gch210, %while.true.gc.nim.632.2.lr.ph ], [ %load.dot.f0.dot.f5.load.arg.gch2, %if.end.gc.nim.636.4 ]
  %inc.nv.gc.nim.633.8 = add nsw i64 %load.dot.f0.dot.f5.load.arg.gch212, -1
  store i64 %inc.nv.gc.nim.633.8, ptr %dot.f5.load.arg.gch2, align 8
  %load.dot.f2.dot.f5.load.arg.gch4 = load ptr, ptr %dot.f2.dot.f5.load.arg.gch4, align 8
  %bra.uarr.geparr.gc.nim.634.27 = getelementptr inbounds [0 x ptr], ptr %load.dot.f2.dot.f5.load.arg.gch4, i64 0, i64 %inc.nv.gc.nim.633.8
  %load.bra.uarr.geparr.gc.nim.634.27 = load ptr, ptr %bra.uarr.geparr.gc.nim.634.27, align 8
  %cast.pi.cellsets.nim.186.10.i = ptrtoint ptr %load.bra.uarr.geparr.gc.nim.634.27 to i64
  %binop.LShr.cellsets.nim.187.26.i = lshr i64 %cast.pi.cellsets.nim.186.10.i, 12
  %load.dot.f1.load.arg.t.i.i = load i64, ptr %dot.f1.load.arg.t.i.i, align 8
  %binop.And.cellsets.nim.115.25.i.i = and i64 %binop.LShr.cellsets.nim.187.26.i, %load.dot.f1.load.arg.t.i.i
  %load.dot.f3.load.arg.t1.i.i = load ptr, ptr %dot.f3.load.arg.t1.i.i, align 8
  %bra.uarr.geparr.cellsets.nim.116.1411.i.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t1.i.i, i64 0, i64 %binop.And.cellsets.nim.115.25.i.i
  %load.bra.uarr.geparr.cellsets.nim.116.1412.i.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.116.1411.i.i, align 8
  %icmp.IntEQ.cellsets.nim.116.18.not13.i.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.116.1412.i.i, null
  br i1 %icmp.IntEQ.cellsets.nim.116.18.not13.i.i, label %if.false.cellsets.nim.188.2.i, label %while.true.cellsets.nim.116.2.i.i

while.true.cellsets.nim.116.2.i.i:                ; preds = %while.true.gc.nim.632.2, %if.end.cellsets.nim.117.4.i.i
  %load.bra.uarr.geparr.cellsets.nim.116.1415.i.i = phi ptr [ %load.bra.uarr.geparr.cellsets.nim.116.14.i.i, %if.end.cellsets.nim.117.4.i.i ], [ %load.bra.uarr.geparr.cellsets.nim.116.1412.i.i, %while.true.gc.nim.632.2 ]
  %h.014.i.i = phi i64 [ %binop.And.cellsets.nim.109.23.i.i.i, %if.end.cellsets.nim.117.4.i.i ], [ %binop.And.cellsets.nim.115.25.i.i, %while.true.gc.nim.632.2 ]
  %dot.f1.load.bra.uarr.geparr.cellsets.nim.117.13.i.i = getelementptr inbounds %tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg, ptr %load.bra.uarr.geparr.cellsets.nim.116.1415.i.i, i64 0, i32 1
  %load.dot.f1.load.bra.uarr.geparr.cellsets.nim.117.13.i.i = load i64, ptr %dot.f1.load.bra.uarr.geparr.cellsets.nim.117.13.i.i, align 8
  %icmp.IntEQ.cellsets.nim.117.21.i.i = icmp eq i64 %load.dot.f1.load.bra.uarr.geparr.cellsets.nim.117.13.i.i, %binop.LShr.cellsets.nim.187.26.i
  br i1 %icmp.IntEQ.cellsets.nim.117.21.i.i, label %if.true.cellsets.nim.188.2.i, label %if.end.cellsets.nim.117.4.i.i

if.end.cellsets.nim.117.4.i.i:                    ; preds = %while.true.cellsets.nim.116.2.i.i
  %binop.Mul.cellsets.nim.109.14.i.i.i = mul i64 %h.014.i.i, 5
  %binop.Add.cellsets.nim.109.18.i.i.i = add i64 %binop.Mul.cellsets.nim.109.14.i.i.i, 1
  %binop.And.cellsets.nim.109.23.i.i.i = and i64 %binop.Add.cellsets.nim.109.18.i.i.i, %load.dot.f1.load.arg.t.i.i
  %bra.uarr.geparr.cellsets.nim.116.14.i.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t1.i.i, i64 0, i64 %binop.And.cellsets.nim.109.23.i.i.i
  %load.bra.uarr.geparr.cellsets.nim.116.14.i.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.116.14.i.i, align 8
  %icmp.IntEQ.cellsets.nim.116.18.not.i.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.116.14.i.i, null
  br i1 %icmp.IntEQ.cellsets.nim.116.18.not.i.i, label %if.false.cellsets.nim.188.2.i, label %while.true.cellsets.nim.116.2.i.i

if.true.cellsets.nim.188.2.i:                     ; preds = %while.true.cellsets.nim.116.2.i.i
  %binop.URem.cellsets.nim.189.11.i = lshr i64 %cast.pi.cellsets.nim.186.10.i, 4
  %binop.UDiv.cellsets.nim.189.2510.i = lshr i64 %cast.pi.cellsets.nim.186.10.i, 10
  %binop.LShr.cellsets.nim.190.23.i = and i64 %binop.UDiv.cellsets.nim.189.2510.i, 3
  %bra.arr.geparr.cellsets.nim.190.20.i = getelementptr inbounds %tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg, ptr %load.bra.uarr.geparr.cellsets.nim.116.1415.i.i, i64 0, i32 2, i64 %binop.LShr.cellsets.nim.190.23.i
  %load.bra.arr.geparr.cellsets.nim.190.20.i = load i64, ptr %bra.arr.geparr.cellsets.nim.190.20.i, align 8
  %binop.And.cellsets.nim.190.51.i = and i64 %binop.URem.cellsets.nim.189.11.i, 63
  %binop.Shl.cellsets.nim.190.44.i = shl nuw i64 1, %binop.And.cellsets.nim.190.51.i
  %binop.And.cellsets.nim.190.37.i = and i64 %load.bra.arr.geparr.cellsets.nim.190.20.i, %binop.Shl.cellsets.nim.190.44.i
  %icmp.IntEQ.cellsets.nim.190.66.not.i = icmp eq i64 %binop.And.cellsets.nim.190.37.i, 0
  br i1 %icmp.IntEQ.cellsets.nim.190.66.not.i, label %if.true.cellsets.nim.191.4.i, label %if.end.gc.nim.636.4

if.true.cellsets.nim.191.4.i:                     ; preds = %if.true.cellsets.nim.188.2.i
  %binop.Or.cellsets.nim.192.54.i = or i64 %load.bra.arr.geparr.cellsets.nim.190.20.i, %binop.Shl.cellsets.nim.190.44.i
  store i64 %binop.Or.cellsets.nim.192.54.i, ptr %bra.arr.geparr.cellsets.nim.190.20.i, align 8
  br label %if.true.gc.nim.636.4

if.false.cellsets.nim.188.2.i:                    ; preds = %if.end.cellsets.nim.117.4.i.i, %while.true.gc.nim.632.2
  tail call fastcc void @incl__azHo9bY5qs9b2EZ9cSse4fmZA(ptr nonnull %dot.f9.load.arg.gch, ptr %load.bra.uarr.geparr.gc.nim.634.27)
  br label %if.true.gc.nim.636.4

if.true.gc.nim.636.4:                             ; preds = %if.true.cellsets.nim.191.4.i, %if.false.cellsets.nim.188.2.i
  tail call fastcc void @forAllChildren__XCvXrotwhq0gugZtuZTNPQ(ptr %load.bra.uarr.geparr.gc.nim.634.27, i8 1)
  %load.dot.f0.dot.f5.load.arg.gch2.pre = load i64, ptr %dot.f5.load.arg.gch2, align 8
  br label %if.end.gc.nim.636.4

if.end.gc.nim.636.4:                              ; preds = %if.true.cellsets.nim.188.2.i, %if.true.gc.nim.636.4
  %load.dot.f0.dot.f5.load.arg.gch2 = phi i64 [ %inc.nv.gc.nim.633.8, %if.true.cellsets.nim.188.2.i ], [ %load.dot.f0.dot.f5.load.arg.gch2.pre, %if.true.gc.nim.636.4 ]
  %icmp.IntSLT.gc.nim.632.26 = icmp sgt i64 %load.dot.f0.dot.f5.load.arg.gch2, 0
  br i1 %icmp.IntSLT.gc.nim.632.26, label %while.true.gc.nim.632.2, label %secReturn

secReturn:                                        ; preds = %if.end.gc.nim.636.4, %secAlloca
  ret void
}

define internal fastcc void @incl__azHo9bY5qs9b2EZ9cSse4fmZA(ptr nocapture %s, ptr %cell) unnamed_addr #2 {
secAlloca:
  %cast.pi.cellsets.nim.172.10 = ptrtoint ptr %cell to i64
  %binop.LShr.cellsets.nim.173.26 = lshr i64 %cast.pi.cellsets.nim.172.10, 12
  %dot.f1.load.arg.t.i = getelementptr inbounds %tyObject_CellSet__YFwFoEuumoodPVhKCpK9b4g, ptr %s, i64 0, i32 1
  %load.dot.f1.load.arg.t.i = load i64, ptr %dot.f1.load.arg.t.i, align 8
  %binop.And.cellsets.nim.140.25.i = and i64 %load.dot.f1.load.arg.t.i, %binop.LShr.cellsets.nim.173.26
  %dot.f3.load.arg.t1.i = getelementptr inbounds %tyObject_CellSet__YFwFoEuumoodPVhKCpK9b4g, ptr %s, i64 0, i32 3
  %load.dot.f3.load.arg.t1.i = load ptr, ptr %dot.f3.load.arg.t1.i, align 8
  %bra.uarr.geparr.cellsets.nim.142.1830.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t1.i, i64 0, i64 %binop.And.cellsets.nim.140.25.i
  %load.bra.uarr.geparr.cellsets.nim.142.1831.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.142.1830.i, align 8
  %icmp.IntEQ.cellsets.nim.143.932.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.142.1831.i, null
  br i1 %icmp.IntEQ.cellsets.nim.143.932.i, label %block.exit.cellsets.nim.143.17.i, label %if.end.cellsets.nim.143.4.i

if.end.cellsets.nim.143.4.i:                      ; preds = %secAlloca, %if.end.cellsets.nim.144.4.i
  %load.bra.uarr.geparr.cellsets.nim.142.1834.i = phi ptr [ %load.bra.uarr.geparr.cellsets.nim.142.18.i, %if.end.cellsets.nim.144.4.i ], [ %load.bra.uarr.geparr.cellsets.nim.142.1831.i, %secAlloca ]
  %h.033.i = phi i64 [ %binop.And.cellsets.nim.109.23.i.i, %if.end.cellsets.nim.144.4.i ], [ %binop.And.cellsets.nim.140.25.i, %secAlloca ]
  %dot.f1.load.x.cellsets.nim.144.7.i = getelementptr inbounds %tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg, ptr %load.bra.uarr.geparr.cellsets.nim.142.1834.i, i64 0, i32 1
  %load.dot.f1.load.x.cellsets.nim.144.7.i = load i64, ptr %dot.f1.load.x.cellsets.nim.144.7.i, align 8
  %icmp.IntEQ.cellsets.nim.144.13.i = icmp eq i64 %load.dot.f1.load.x.cellsets.nim.144.7.i, %binop.LShr.cellsets.nim.173.26
  br i1 %icmp.IntEQ.cellsets.nim.144.13.i, label %cellSetPut__6bBl0A4vUXoRvva9bRmnwSQ.exit, label %if.end.cellsets.nim.144.4.i

if.end.cellsets.nim.144.4.i:                      ; preds = %if.end.cellsets.nim.143.4.i
  %binop.Mul.cellsets.nim.109.14.i.i = mul i64 %h.033.i, 5
  %binop.Add.cellsets.nim.109.18.i.i = add i64 %binop.Mul.cellsets.nim.109.14.i.i, 1
  %binop.And.cellsets.nim.109.23.i.i = and i64 %binop.Add.cellsets.nim.109.18.i.i, %load.dot.f1.load.arg.t.i
  %bra.uarr.geparr.cellsets.nim.142.18.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t1.i, i64 0, i64 %binop.And.cellsets.nim.109.23.i.i
  %load.bra.uarr.geparr.cellsets.nim.142.18.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.142.18.i, align 8
  %icmp.IntEQ.cellsets.nim.143.9.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.142.18.i, null
  br i1 %icmp.IntEQ.cellsets.nim.143.9.i, label %block.exit.cellsets.nim.143.17.i, label %if.end.cellsets.nim.143.4.i

block.exit.cellsets.nim.143.17.i:                 ; preds = %if.end.cellsets.nim.144.4.i, %secAlloca
  %binop.Add.cellsets.nim.147.12.i = add i64 %load.dot.f1.load.arg.t.i, 1
  %binop.Mul.cellsets.nim.147.15.i = shl i64 %binop.Add.cellsets.nim.147.12.i, 1
  %load.dot.f0.load.arg.t5.i = load i64, ptr %s, align 8
  %binop.Mul.cellsets.nim.147.29.i = mul i64 %load.dot.f0.load.arg.t5.i, 3
  %icmp.IntSLT.cellsets.nim.147.18.i = icmp slt i64 %binop.Mul.cellsets.nim.147.15.i, %binop.Mul.cellsets.nim.147.29.i
  %binop.Sub.cellsets.nim.147.46.i = sub i64 %binop.Add.cellsets.nim.147.12.i, %load.dot.f0.load.arg.t5.i
  %icmp.IntSLT.cellsets.nim.147.57.i = icmp slt i64 %binop.Sub.cellsets.nim.147.46.i, 4
  %and.res.cellsets.nim.147.33.in.i = or i1 %icmp.IntSLT.cellsets.nim.147.18.i, %icmp.IntSLT.cellsets.nim.147.57.i
  br i1 %and.res.cellsets.nim.147.33.in.i, label %if.true.cellsets.nim.147.2.i, label %if.end.cellsets.nim.147.2.i

if.true.cellsets.nim.147.2.i:                     ; preds = %block.exit.cellsets.nim.143.17.i
  %binop.Add.cellsets.nim.131.17.i.i = shl i64 %load.dot.f1.load.arg.t.i, 1
  %binop.Sub.cellsets.nim.131.23.i.i = or i64 %binop.Add.cellsets.nim.131.17.i.i, 1
  store i64 %binop.Sub.cellsets.nim.131.23.i.i, ptr %dot.f1.load.arg.t.i, align 8
  %binop.Mul.cellsets.nim.131.20.i.i = shl i64 %load.dot.f1.load.arg.t.i, 4
  %binop.Mul.cellsets.nim.132.50.i.i = add i64 %binop.Mul.cellsets.nim.131.20.i.i, 16
  %binop.Add.alloc.nim.899.37.i.i.i.i.i = add i64 %binop.Mul.cellsets.nim.131.20.i.i, 32
  %call.res.alloc.nim.899.21.i.i.i.i.i = tail call ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 %binop.Add.alloc.nim.899.37.i.i.i.i.i)
  %dot.f1.load.result.alloc.nim.900.23.i.i.i.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i.i.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i.i.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i.i.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i.i.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i.i.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i.i.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i.i.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i.i.i.i to ptr
  tail call void @llvm.memset.p0.i64(ptr align 16 %cast.ip.alloc.nim.902.13.i.i.i.i.i, i8 0, i64 %binop.Mul.cellsets.nim.132.50.i.i, i1 false)
  %icmp.IntSLE.iterators_1.nim.91.14.not12.i.i = icmp slt i64 %load.dot.f1.load.arg.t.i, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not12.i.i, label %cellSetEnlarge__9bhPFIGFYIneoHljx8OXvqA.exit.i, label %while.true.iterators_1.nim.91.4.i.i

while.true.iterators_1.nim.91.4.i.i:              ; preds = %if.true.cellsets.nim.147.2.i, %if.end.cellsets.nim.133.6.i.i
  %res.013.i.i = phi i64 [ %inc.nv.iterators_1.nim.93.9.i.i, %if.end.cellsets.nim.133.6.i.i ], [ 0, %if.true.cellsets.nim.147.2.i ]
  %load.dot.f3.load.arg.t4.i.i = load ptr, ptr %dot.f3.load.arg.t1.i, align 8
  %bra.uarr.geparr.cellsets.nim.134.13.i.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t4.i.i, i64 0, i64 %res.013.i.i
  %load.bra.uarr.geparr.cellsets.nim.134.13.i.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.134.13.i.i, align 8
  %icmp.IntEQ.cellsets.nim.134.17.not.i.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.134.13.i.i, null
  br i1 %icmp.IntEQ.cellsets.nim.134.17.not.i.i, label %if.end.cellsets.nim.133.6.i.i, label %if.true.cellsets.nim.133.6.i.i

if.true.cellsets.nim.133.6.i.i:                   ; preds = %while.true.iterators_1.nim.91.4.i.i
  %dot.f1.load.arg.desc.i.i.i = getelementptr inbounds %tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg, ptr %load.bra.uarr.geparr.cellsets.nim.134.13.i.i, i64 0, i32 1
  %load.dot.f1.load.arg.desc.i.i.i = load i64, ptr %dot.f1.load.arg.desc.i.i.i, align 8
  %load.dot.f1.load.arg.t.i.i.i = load i64, ptr %dot.f1.load.arg.t.i, align 8
  %h.06.i.i.i = and i64 %load.dot.f1.load.arg.t.i.i.i, %load.dot.f1.load.arg.desc.i.i.i
  %bra.uarr.geparr.cellsets.nim.123.127.i.i.i = getelementptr inbounds [0 x ptr], ptr %cast.ip.alloc.nim.902.13.i.i.i.i.i, i64 0, i64 %h.06.i.i.i
  %load.bra.uarr.geparr.cellsets.nim.123.128.i.i.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.123.127.i.i.i, align 8
  %icmp.IntEQ.cellsets.nim.123.16.not9.i.i.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.123.128.i.i.i, null
  br i1 %icmp.IntEQ.cellsets.nim.123.16.not9.i.i.i, label %cellSetRawInsert__a1sVKTgcDTTmcnBQqk9bNdA.exit.i.i, label %while.true.cellsets.nim.123.2.i.i.i

while.true.cellsets.nim.123.2.i.i.i:              ; preds = %if.true.cellsets.nim.133.6.i.i, %while.true.cellsets.nim.123.2.i.i.i
  %h.010.i.i.i = phi i64 [ %h.0.i.i.i, %while.true.cellsets.nim.123.2.i.i.i ], [ %h.06.i.i.i, %if.true.cellsets.nim.133.6.i.i ]
  %binop.Mul.cellsets.nim.109.14.i.i.i.i = mul i64 %h.010.i.i.i, 5
  %binop.Add.cellsets.nim.109.18.i.i.i.i = add i64 %binop.Mul.cellsets.nim.109.14.i.i.i.i, 1
  %h.0.i.i.i = and i64 %binop.Add.cellsets.nim.109.18.i.i.i.i, %load.dot.f1.load.arg.t.i.i.i
  %bra.uarr.geparr.cellsets.nim.123.12.i.i.i = getelementptr inbounds [0 x ptr], ptr %cast.ip.alloc.nim.902.13.i.i.i.i.i, i64 0, i64 %h.0.i.i.i
  %load.bra.uarr.geparr.cellsets.nim.123.12.i.i.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.123.12.i.i.i, align 8
  %icmp.IntEQ.cellsets.nim.123.16.not.i.i.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.123.12.i.i.i, null
  br i1 %icmp.IntEQ.cellsets.nim.123.16.not.i.i.i, label %cellSetRawInsert__a1sVKTgcDTTmcnBQqk9bNdA.exit.i.i, label %while.true.cellsets.nim.123.2.i.i.i

cellSetRawInsert__a1sVKTgcDTTmcnBQqk9bNdA.exit.i.i: ; preds = %while.true.cellsets.nim.123.2.i.i.i, %if.true.cellsets.nim.133.6.i.i
  %h.0.lcssa.i.i.i = phi i64 [ %h.06.i.i.i, %if.true.cellsets.nim.133.6.i.i ], [ %h.0.i.i.i, %while.true.cellsets.nim.123.2.i.i.i ]
  %bra.uarr.geparr.cellsets.nim.123.12.le.i.i.i = getelementptr inbounds [0 x ptr], ptr %cast.ip.alloc.nim.902.13.i.i.i.i.i, i64 0, i64 %h.0.lcssa.i.i.i
  store ptr %load.bra.uarr.geparr.cellsets.nim.134.13.i.i, ptr %bra.uarr.geparr.cellsets.nim.123.12.le.i.i.i, align 8
  br label %if.end.cellsets.nim.133.6.i.i

if.end.cellsets.nim.133.6.i.i:                    ; preds = %cellSetRawInsert__a1sVKTgcDTTmcnBQqk9bNdA.exit.i.i, %while.true.iterators_1.nim.91.4.i.i
  %inc.nv.iterators_1.nim.93.9.i.i = add i64 %res.013.i.i, 1
  %icmp.IntSLE.iterators_1.nim.91.14.not.i.i = icmp sgt i64 %inc.nv.iterators_1.nim.93.9.i.i, %load.dot.f1.load.arg.t.i
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not.i.i, label %cellSetEnlarge__9bhPFIGFYIneoHljx8OXvqA.exit.i, label %while.true.iterators_1.nim.91.4.i.i

cellSetEnlarge__9bhPFIGFYIneoHljx8OXvqA.exit.i:   ; preds = %if.end.cellsets.nim.133.6.i.i, %if.true.cellsets.nim.147.2.i
  %load.dot.f3.load.arg.t7.i.i = load ptr, ptr %dot.f3.load.arg.t1.i, align 8
  %cast.pi.alloc.nim.914.26.i.i.i.i.i = ptrtoint ptr %load.dot.f3.load.arg.t7.i.i to i64
  %binop.Sub.arithmetics.nim.418.26.i.i.i.i.i.i = add i64 %cast.pi.alloc.nim.914.26.i.i.i.i.i, -16
  %cast.ip.alloc.nim.914.12.i.i.i.i.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i.i.i.i.i to ptr
  tail call fastcc void @rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), ptr %cast.ip.alloc.nim.914.12.i.i.i.i.i)
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i.i, ptr %dot.f3.load.arg.t1.i, align 8
  %load.dot.f0.load.arg.t9.pre.i = load i64, ptr %s, align 8
  %load.dot.f1.load.arg.t11.pre.i = load i64, ptr %dot.f1.load.arg.t.i, align 8
  %.pre.i = and i64 %load.dot.f1.load.arg.t11.pre.i, %binop.LShr.cellsets.nim.173.26
  br label %if.end.cellsets.nim.147.2.i

if.end.cellsets.nim.147.2.i:                      ; preds = %cellSetEnlarge__9bhPFIGFYIneoHljx8OXvqA.exit.i, %block.exit.cellsets.nim.143.17.i
  %binop.And.cellsets.nim.150.21.pre-phi.i = phi i64 [ %binop.And.cellsets.nim.140.25.i, %block.exit.cellsets.nim.143.17.i ], [ %.pre.i, %cellSetEnlarge__9bhPFIGFYIneoHljx8OXvqA.exit.i ]
  %load.dot.f3.load.arg.t12.i = phi ptr [ %load.dot.f3.load.arg.t1.i, %block.exit.cellsets.nim.143.17.i ], [ %cast.ip.alloc.nim.902.13.i.i.i.i.i, %cellSetEnlarge__9bhPFIGFYIneoHljx8OXvqA.exit.i ]
  %load.dot.f1.load.arg.t11.i = phi i64 [ %load.dot.f1.load.arg.t.i, %block.exit.cellsets.nim.143.17.i ], [ %load.dot.f1.load.arg.t11.pre.i, %cellSetEnlarge__9bhPFIGFYIneoHljx8OXvqA.exit.i ]
  %load.dot.f0.load.arg.t9.i = phi i64 [ %load.dot.f0.load.arg.t5.i, %block.exit.cellsets.nim.143.17.i ], [ %load.dot.f0.load.arg.t9.pre.i, %cellSetEnlarge__9bhPFIGFYIneoHljx8OXvqA.exit.i ]
  %inc.nv.cellsets.nim.149.5.i = add i64 %load.dot.f0.load.arg.t9.i, 1
  store i64 %inc.nv.cellsets.nim.149.5.i, ptr %s, align 8
  %bra.uarr.geparr.cellsets.nim.151.1435.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t12.i, i64 0, i64 %binop.And.cellsets.nim.150.21.pre-phi.i
  %load.bra.uarr.geparr.cellsets.nim.151.1436.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.151.1435.i, align 8
  %icmp.IntEQ.cellsets.nim.151.18.not37.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.151.1436.i, null
  br i1 %icmp.IntEQ.cellsets.nim.151.18.not37.i, label %while.false.cellsets.nim.151.2.i, label %while.true.cellsets.nim.151.2.i

while.true.cellsets.nim.151.2.i:                  ; preds = %if.end.cellsets.nim.147.2.i, %while.true.cellsets.nim.151.2.i
  %h.138.i = phi i64 [ %binop.And.cellsets.nim.109.23.i27.i, %while.true.cellsets.nim.151.2.i ], [ %binop.And.cellsets.nim.150.21.pre-phi.i, %if.end.cellsets.nim.147.2.i ]
  %binop.Mul.cellsets.nim.109.14.i25.i = mul i64 %h.138.i, 5
  %binop.Add.cellsets.nim.109.18.i26.i = add i64 %binop.Mul.cellsets.nim.109.14.i25.i, 1
  %binop.And.cellsets.nim.109.23.i27.i = and i64 %binop.Add.cellsets.nim.109.18.i26.i, %load.dot.f1.load.arg.t11.i
  %bra.uarr.geparr.cellsets.nim.151.14.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t12.i, i64 0, i64 %binop.And.cellsets.nim.109.23.i27.i
  %load.bra.uarr.geparr.cellsets.nim.151.14.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.151.14.i, align 8
  %icmp.IntEQ.cellsets.nim.151.18.not.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.151.14.i, null
  br i1 %icmp.IntEQ.cellsets.nim.151.18.not.i, label %while.false.cellsets.nim.151.2.i, label %while.true.cellsets.nim.151.2.i

while.false.cellsets.nim.151.2.i:                 ; preds = %while.true.cellsets.nim.151.2.i, %if.end.cellsets.nim.147.2.i
  %h.1.lcssa.i = phi i64 [ %binop.And.cellsets.nim.150.21.pre-phi.i, %if.end.cellsets.nim.147.2.i ], [ %binop.And.cellsets.nim.109.23.i27.i, %while.true.cellsets.nim.151.2.i ]
  %call.res.alloc.nim.899.21.i.i.i.i = tail call dereferenceable(64) ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 64)
  %dot.f1.load.result.alloc.nim.900.23.i.i.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i.i.i to ptr
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %cast.ip.alloc.nim.902.13.i.i.i.i, i8 0, i64 48, i1 false)
  %dot.f2.load.arg.t14.i = getelementptr inbounds %tyObject_CellSet__YFwFoEuumoodPVhKCpK9b4g, ptr %s, i64 0, i32 2
  %load.dot.f2.load.arg.t14.i = load ptr, ptr %dot.f2.load.arg.t14.i, align 8
  store ptr %load.dot.f2.load.arg.t14.i, ptr %cast.ip.alloc.nim.902.13.i.i.i.i, align 16
  %dot.f1.load.result.cellsets.nim.156.2.i = getelementptr inbounds %tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg, ptr %cast.ip.alloc.nim.902.13.i.i.i.i, i64 0, i32 1
  store i64 %binop.LShr.cellsets.nim.173.26, ptr %dot.f1.load.result.cellsets.nim.156.2.i, align 8
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i, ptr %dot.f2.load.arg.t14.i, align 8
  %load.dot.f3.load.arg.t17.i = load ptr, ptr %dot.f3.load.arg.t1.i, align 8
  %bra.uarr.geparr.cellsets.nim.158.8.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t17.i, i64 0, i64 %h.1.lcssa.i
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i, ptr %bra.uarr.geparr.cellsets.nim.158.8.i, align 8
  br label %cellSetPut__6bBl0A4vUXoRvva9bRmnwSQ.exit

cellSetPut__6bBl0A4vUXoRvva9bRmnwSQ.exit:         ; preds = %if.end.cellsets.nim.143.4.i, %while.false.cellsets.nim.151.2.i
  %result.0.i = phi ptr [ %cast.ip.alloc.nim.902.13.i.i.i.i, %while.false.cellsets.nim.151.2.i ], [ %load.bra.uarr.geparr.cellsets.nim.142.1834.i, %if.end.cellsets.nim.143.4.i ]
  %binop.URem.cellsets.nim.174.9 = lshr i64 %cast.pi.cellsets.nim.172.10, 4
  %binop.UDiv.cellsets.nim.174.235 = lshr i64 %cast.pi.cellsets.nim.172.10, 10
  %binop.LShr.cellsets.nim.175.11 = and i64 %binop.UDiv.cellsets.nim.174.235, 3
  %bra.arr.geparr.cellsets.nim.175.8 = getelementptr inbounds %tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg, ptr %result.0.i, i64 0, i32 2, i64 %binop.LShr.cellsets.nim.175.11
  %load.bra.arr.geparr.cellsets.nim.175.33 = load i64, ptr %bra.arr.geparr.cellsets.nim.175.8, align 8
  %binop.And.cellsets.nim.175.63 = and i64 %binop.URem.cellsets.nim.174.9, 63
  %binop.Shl.cellsets.nim.175.56 = shl nuw i64 1, %binop.And.cellsets.nim.175.63
  %binop.Or.cellsets.nim.175.50 = or i64 %load.bra.arr.geparr.cellsets.nim.175.33, %binop.Shl.cellsets.nim.175.56
  store i64 %binop.Or.cellsets.nim.175.50, ptr %bra.arr.geparr.cellsets.nim.175.8, align 8
  ret void
}

define internal fastcc void @forAllSlotsAux__ld9axHPi9bpxevVrdgKiDF5Q(ptr %dest, ptr nocapture readonly %n, i8 %op) unnamed_addr #2 {
secAlloca:
  %cast.pi.gc.nim.339.10 = ptrtoint ptr %dest to i64
  br label %tailrecurse

tailrecurse:                                      ; preds = %tailrecurse.backedge, %secAlloca
  %n.tr = phi ptr [ %n, %secAlloca ], [ %n.tr.be, %tailrecurse.backedge ]
  %load.dot.f0.load.arg.n = load i8, ptr %n.tr, align 1
  switch i8 %load.dot.f0.load.arg.n, label %secReturn [
    i8 1, label %case.of.1.do.gc.nim.340.2
    i8 2, label %case.of.2.do.gc.nim.340.2
    i8 3, label %case.of.3.do.gc.nim.340.2
  ]

case.of.1.do.gc.nim.340.2:                        ; preds = %tailrecurse
  %dot.f1.load.arg.n1 = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 1
  %load.dot.f1.load.arg.n1 = load i64, ptr %dot.f1.load.arg.n1, align 8
  %binop.Add.arithmetics.nim.407.26.i = add i64 %load.dot.f1.load.arg.n1, %cast.pi.gc.nim.339.10
  %cast.ip.gc.nim.341.31 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i to ptr
  %dot.f2.load.arg.n2 = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 2
  %load.dot.f2.load.arg.n2 = load ptr, ptr %dot.f2.load.arg.n2, align 8
  tail call fastcc void @forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(ptr %cast.ip.gc.nim.341.31, ptr %load.dot.f2.load.arg.n2, i8 %op)
  br label %secReturn

case.of.2.do.gc.nim.340.2:                        ; preds = %tailrecurse
  %dot.f4.load.arg.n3 = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 4
  %load.dot.f4.load.arg.n3 = load i64, ptr %dot.f4.load.arg.n3, align 8
  %binop.Sub.gc.nim.343.21 = add i64 %load.dot.f4.load.arg.n3, -1
  %icmp.IntSLE.iterators_1.nim.91.14.not45 = icmp slt i64 %binop.Sub.gc.nim.343.21, 0
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not45, label %secReturn, label %while.true.iterators_1.nim.91.4.lr.ph

while.true.iterators_1.nim.91.4.lr.ph:            ; preds = %case.of.2.do.gc.nim.340.2
  %dot.f5.load.arg.n4 = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 5
  br label %while.true.iterators_1.nim.91.4

while.true.iterators_1.nim.91.4:                  ; preds = %while.true.iterators_1.nim.91.4.lr.ph, %if.end.gc.nim.343.8
  %res.046 = phi i64 [ 0, %while.true.iterators_1.nim.91.4.lr.ph ], [ %inc.nv.iterators_1.nim.93.9, %if.end.gc.nim.343.8 ]
  %load.dot.f5.load.arg.n4 = load ptr, ptr %dot.f5.load.arg.n4, align 8
  %bra.arr.geparr.gc.nim.345.15 = getelementptr inbounds [32767 x ptr], ptr %load.dot.f5.load.arg.n4, i64 0, i64 %res.046
  %load.bra.arr.geparr.gc.nim.345.15 = load ptr, ptr %bra.arr.geparr.gc.nim.345.15, align 8
  %load.dot.f0.load.bra.arr.geparr.gc.nim.345.15 = load i8, ptr %load.bra.arr.geparr.gc.nim.345.15, align 1
  %icmp.IntEQ.gc.nim.345.24 = icmp eq i8 %load.dot.f0.load.bra.arr.geparr.gc.nim.345.15, 1
  br i1 %icmp.IntEQ.gc.nim.345.24, label %if.true.gc.nim.343.8, label %if.false.gc.nim.343.8

if.true.gc.nim.343.8:                             ; preds = %while.true.iterators_1.nim.91.4
  %dot.f2.load.bra.arr.geparr.gc.nim.346.17 = getelementptr inbounds %TNimNode, ptr %load.bra.arr.geparr.gc.nim.345.15, i64 0, i32 2
  %load.dot.f2.load.bra.arr.geparr.gc.nim.346.17 = load ptr, ptr %dot.f2.load.bra.arr.geparr.gc.nim.346.17, align 8
  %dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17 = getelementptr inbounds %TNimType, ptr %load.dot.f2.load.bra.arr.geparr.gc.nim.346.17, i64 0, i32 2
  %load.dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17 = load i8, ptr %dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17, align 1
  %set.mask.load.dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17 = and i8 %load.dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17, 63
  %toe.z.set.mask.load.dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17 = zext i8 %set.mask.load.dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17 to i64
  %set.pos.load.dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17 = shl nuw i64 1, %toe.z.set.mask.load.dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17
  %inset.masked.gc.nim.346.30 = and i64 %set.pos.load.dot.f2.load.dot.f2.load.bra.arr.geparr.gc.nim.346.17, 289406976
  %inset.result.gc.nim.346.30.not = icmp eq i64 %inset.masked.gc.nim.346.30, 0
  %dot.f1.load.bra.arr.geparr.gc.nim.349.53 = getelementptr inbounds %TNimNode, ptr %load.bra.arr.geparr.gc.nim.345.15, i64 0, i32 1
  %load.dot.f1.load.bra.arr.geparr.gc.nim.349.53 = load i64, ptr %dot.f1.load.bra.arr.geparr.gc.nim.349.53, align 8
  %binop.Add.arithmetics.nim.407.26.i35 = add i64 %load.dot.f1.load.bra.arr.geparr.gc.nim.349.53, %cast.pi.gc.nim.339.10
  %cast.ip.gc.nim.349.28 = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i35 to ptr
  br i1 %inset.result.gc.nim.346.30.not, label %if.false.gc.nim.346.8, label %if.true.gc.nim.346.8

if.true.gc.nim.346.8:                             ; preds = %if.true.gc.nim.343.8
  %load.cast.ip.gc.nim.347.22 = load ptr, ptr %cast.ip.gc.nim.349.28, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.cast.ip.gc.nim.347.22, i8 %op)
  br label %if.end.gc.nim.343.8

if.false.gc.nim.346.8:                            ; preds = %if.true.gc.nim.343.8
  tail call fastcc void @forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(ptr %cast.ip.gc.nim.349.28, ptr nonnull %load.dot.f2.load.bra.arr.geparr.gc.nim.346.17, i8 %op)
  br label %if.end.gc.nim.343.8

if.false.gc.nim.343.8:                            ; preds = %while.true.iterators_1.nim.91.4
  tail call fastcc void @forAllSlotsAux__ld9axHPi9bpxevVrdgKiDF5Q(ptr %dest, ptr nonnull %load.bra.arr.geparr.gc.nim.345.15, i8 %op)
  br label %if.end.gc.nim.343.8

if.end.gc.nim.343.8:                              ; preds = %if.true.gc.nim.346.8, %if.false.gc.nim.346.8, %if.false.gc.nim.343.8
  %inc.nv.iterators_1.nim.93.9 = add i64 %res.046, 1
  %icmp.IntSLE.iterators_1.nim.91.14.not = icmp sgt i64 %inc.nv.iterators_1.nim.93.9, %binop.Sub.gc.nim.343.21
  br i1 %icmp.IntSLE.iterators_1.nim.91.14.not, label %secReturn, label %while.true.iterators_1.nim.91.4

case.of.3.do.gc.nim.340.2:                        ; preds = %tailrecurse
  %dot.f2.load.arg.n.i.i = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 2
  %load.dot.f2.load.arg.n.i.i = load ptr, ptr %dot.f2.load.arg.n.i.i, align 8
  %load.dot.f0.load.dot.f2.load.arg.n.i.i = load i64, ptr %load.dot.f2.load.arg.n.i.i, align 8
  switch i64 %load.dot.f0.load.dot.f2.load.arg.n.i.i, label %getDiscriminant__7LnhHf25BuMRNdnPtDbjcw.exit.i [
    i64 1, label %case.of.1.do.system.nim.2370.4.i.i
    i64 2, label %case.of.2.do.system.nim.2370.4.i.i
    i64 4, label %case.of.3.do.system.nim.2370.4.i.i
    i64 8, label %case.of.4.do.system.nim.2370.4.i.i
  ]

case.of.1.do.system.nim.2370.4.i.i:               ; preds = %case.of.3.do.gc.nim.340.2
  %dot.f1.load.arg.n1.i.i = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 1
  %load.dot.f1.load.arg.n1.i.i = load i64, ptr %dot.f1.load.arg.n1.i.i, align 8
  %binop.Add.system.nim.2371.37.i.i = add i64 %load.dot.f1.load.arg.n1.i.i, %cast.pi.gc.nim.339.10
  %cast.ip.system.nim.2371.19.i.i = inttoptr i64 %binop.Add.system.nim.2371.37.i.i to ptr
  %load.cast.ip.system.nim.2371.19.i.i = load i8, ptr %cast.ip.system.nim.2371.19.i.i, align 1
  %toe.z.load.cast.ip.system.nim.2371.19.i.i = zext i8 %load.cast.ip.system.nim.2371.19.i.i to i64
  br label %getDiscriminant__7LnhHf25BuMRNdnPtDbjcw.exit.i

case.of.2.do.system.nim.2370.4.i.i:               ; preds = %case.of.3.do.gc.nim.340.2
  %dot.f1.load.arg.n2.i.i = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 1
  %load.dot.f1.load.arg.n2.i.i = load i64, ptr %dot.f1.load.arg.n2.i.i, align 8
  %binop.Add.system.nim.2372.38.i.i = add i64 %load.dot.f1.load.arg.n2.i.i, %cast.pi.gc.nim.339.10
  %cast.ip.system.nim.2372.19.i.i = inttoptr i64 %binop.Add.system.nim.2372.38.i.i to ptr
  %load.cast.ip.system.nim.2372.19.i.i = load i16, ptr %cast.ip.system.nim.2372.19.i.i, align 2
  %toe.z.load.cast.ip.system.nim.2372.19.i.i = zext i16 %load.cast.ip.system.nim.2372.19.i.i to i64
  br label %getDiscriminant__7LnhHf25BuMRNdnPtDbjcw.exit.i

case.of.3.do.system.nim.2370.4.i.i:               ; preds = %case.of.3.do.gc.nim.340.2
  %dot.f1.load.arg.n4.i.i = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 1
  %load.dot.f1.load.arg.n4.i.i = load i64, ptr %dot.f1.load.arg.n4.i.i, align 8
  %binop.Add.system.nim.2373.38.i.i = add i64 %load.dot.f1.load.arg.n4.i.i, %cast.pi.gc.nim.339.10
  %cast.ip.system.nim.2373.19.i.i = inttoptr i64 %binop.Add.system.nim.2373.38.i.i to ptr
  %load.cast.ip.system.nim.2373.19.i.i = load i32, ptr %cast.ip.system.nim.2373.19.i.i, align 4
  %toe.z.load.cast.ip.system.nim.2373.19.i.i = zext i32 %load.cast.ip.system.nim.2373.19.i.i to i64
  br label %getDiscriminant__7LnhHf25BuMRNdnPtDbjcw.exit.i

case.of.4.do.system.nim.2370.4.i.i:               ; preds = %case.of.3.do.gc.nim.340.2
  %dot.f1.load.arg.n6.i.i = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 1
  %load.dot.f1.load.arg.n6.i.i = load i64, ptr %dot.f1.load.arg.n6.i.i, align 8
  %binop.Add.system.nim.2374.38.i.i = add i64 %load.dot.f1.load.arg.n6.i.i, %cast.pi.gc.nim.339.10
  %cast.ip.system.nim.2374.19.i.i = inttoptr i64 %binop.Add.system.nim.2374.38.i.i to ptr
  %load.cast.ip.system.nim.2374.19.i.i = load i64, ptr %cast.ip.system.nim.2374.19.i.i, align 8
  br label %getDiscriminant__7LnhHf25BuMRNdnPtDbjcw.exit.i

getDiscriminant__7LnhHf25BuMRNdnPtDbjcw.exit.i:   ; preds = %case.of.4.do.system.nim.2370.4.i.i, %case.of.3.do.system.nim.2370.4.i.i, %case.of.2.do.system.nim.2370.4.i.i, %case.of.1.do.system.nim.2370.4.i.i, %case.of.3.do.gc.nim.340.2
  %d.0.i.i = phi i64 [ %toe.z.load.cast.ip.system.nim.2371.19.i.i, %case.of.1.do.system.nim.2370.4.i.i ], [ %toe.z.load.cast.ip.system.nim.2372.19.i.i, %case.of.2.do.system.nim.2370.4.i.i ], [ %toe.z.load.cast.ip.system.nim.2373.19.i.i, %case.of.3.do.system.nim.2370.4.i.i ], [ %load.cast.ip.system.nim.2374.19.i.i, %case.of.4.do.system.nim.2370.4.i.i ], [ 0, %case.of.3.do.gc.nim.340.2 ]
  %dot.f4.load.arg.n1.i = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 4
  %load.dot.f4.load.arg.n1.i = load i64, ptr %dot.f4.load.arg.n1.i, align 8
  %icmp.IntULT.system.nim.2382.13.i = icmp ult i64 %d.0.i.i, %load.dot.f4.load.arg.n1.i
  %dot.f5.load.arg.n2.i = getelementptr inbounds %TNimNode, ptr %n.tr, i64 0, i32 5
  %load.dot.f5.load.arg.n2.i = load ptr, ptr %dot.f5.load.arg.n2.i, align 8
  br i1 %icmp.IntULT.system.nim.2382.13.i, label %if.true.system.nim.2382.4.i, label %selectBranch__2us2RQByTh81i9aW4EEgfmw.exit

if.true.system.nim.2382.4.i:                      ; preds = %getDiscriminant__7LnhHf25BuMRNdnPtDbjcw.exit.i
  %bra.arr.geparr.system.nim.2383.21.i = getelementptr inbounds [32767 x ptr], ptr %load.dot.f5.load.arg.n2.i, i64 0, i64 %d.0.i.i
  %load.bra.arr.geparr.system.nim.2383.21.i = load ptr, ptr %bra.arr.geparr.system.nim.2383.21.i, align 8
  %icmp.IntEQ.system.nim.2384.16.i = icmp eq ptr %load.bra.arr.geparr.system.nim.2383.21.i, null
  br i1 %icmp.IntEQ.system.nim.2384.16.i, label %selectBranch__2us2RQByTh81i9aW4EEgfmw.exit, label %tailrecurse.backedge

tailrecurse.backedge:                             ; preds = %if.true.system.nim.2382.4.i, %selectBranch__2us2RQByTh81i9aW4EEgfmw.exit
  %n.tr.be = phi ptr [ %load.bra.arr.geparr.system.nim.2387.21.i, %selectBranch__2us2RQByTh81i9aW4EEgfmw.exit ], [ %load.bra.arr.geparr.system.nim.2383.21.i, %if.true.system.nim.2382.4.i ]
  br label %tailrecurse

selectBranch__2us2RQByTh81i9aW4EEgfmw.exit:       ; preds = %getDiscriminant__7LnhHf25BuMRNdnPtDbjcw.exit.i, %if.true.system.nim.2382.4.i
  %bra.arr.geparr.system.nim.2387.21.i = getelementptr inbounds [32767 x ptr], ptr %load.dot.f5.load.arg.n2.i, i64 0, i64 %load.dot.f4.load.arg.n1.i
  %load.bra.arr.geparr.system.nim.2387.21.i = load ptr, ptr %bra.arr.geparr.system.nim.2387.21.i, align 8
  %icmp.IntEQ.gc.nim.355.9.not = icmp eq ptr %load.bra.arr.geparr.system.nim.2387.21.i, null
  br i1 %icmp.IntEQ.gc.nim.355.9.not, label %secReturn, label %tailrecurse.backedge

secReturn:                                        ; preds = %tailrecurse, %selectBranch__2us2RQByTh81i9aW4EEgfmw.exit, %if.end.gc.nim.343.8, %case.of.2.do.gc.nim.340.2, %case.of.1.do.gc.nim.340.2
  ret void
}

define internal fastcc i64 @align__vzThvqZajaR9ct9cQ7SOy1tQ(i64 %alignment) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.system.nim.1186.15 = icmp eq i64 %alignment, 0
  br i1 %icmp.IntEQ.system.nim.1186.15, label %secReturn, label %if.false.system.nim.1186.2

if.false.system.nim.1186.2:                       ; preds = %secAlloca
  %binop.over.Sub.load.arg.alignment2 = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %alignment, i64 -1)
  %binop.isover.load.arg.alignment2 = extractvalue { i64, i1 } %binop.over.Sub.load.arg.alignment2, 1
  br i1 %binop.isover.load.arg.alignment2, label %raise.call.binop.isover.load.arg.alignment2, label %raise.cont.binop.isover.load.arg.alignment2

raise.call.binop.isover.load.arg.alignment2:      ; preds = %if.false.system.nim.1186.2
  tail call fastcc void @raiseOverflow()
  unreachable

raise.cont.binop.isover.load.arg.alignment2:      ; preds = %if.false.system.nim.1186.2
  %binop.v.load.arg.alignment2 = extractvalue { i64, i1 } %binop.over.Sub.load.arg.alignment2, 0
  %binop.over.Add.load.arg.address1 = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %binop.v.load.arg.alignment2, i64 16)
  %binop.isover.load.arg.address1 = extractvalue { i64, i1 } %binop.over.Add.load.arg.address1, 1
  br i1 %binop.isover.load.arg.address1, label %raise.call.binop.isover.load.arg.address1, label %raise.cont.binop.isover.load.arg.alignment3

raise.call.binop.isover.load.arg.address1:        ; preds = %raise.cont.binop.isover.load.arg.alignment2
  tail call fastcc void @raiseOverflow()
  unreachable

raise.cont.binop.isover.load.arg.alignment3:      ; preds = %raise.cont.binop.isover.load.arg.alignment2
  %binop.v.load.arg.address1 = extractvalue { i64, i1 } %binop.over.Add.load.arg.address1, 0
  %bitnot.binop.v.load.arg.alignment3 = xor i64 %binop.v.load.arg.alignment2, -1
  %binop.And.system.nim.1190.41 = and i64 %binop.v.load.arg.address1, %bitnot.binop.v.load.arg.alignment3
  br label %secReturn

secReturn:                                        ; preds = %secAlloca, %raise.cont.binop.isover.load.arg.alignment3
  %result.0 = phi i64 [ %binop.And.system.nim.1190.41, %raise.cont.binop.isover.load.arg.alignment3 ], [ 16, %secAlloca ]
  ret i64 %result.0
}

; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none)
define internal fastcc i8 @contains__ClLkUQKF8KrRxQPdAJDd5w(ptr nocapture readonly %s, ptr %cell) unnamed_addr #19 {
secAlloca:
  %cast.pi.cellsets.nim.163.10 = ptrtoint ptr %cell to i64
  %binop.LShr.cellsets.nim.164.26 = lshr i64 %cast.pi.cellsets.nim.163.10, 12
  %dot.f1.load.arg.t.i = getelementptr inbounds %tyObject_CellSet__YFwFoEuumoodPVhKCpK9b4g, ptr %s, i64 0, i32 1
  %load.dot.f1.load.arg.t.i = load i64, ptr %dot.f1.load.arg.t.i, align 8
  %binop.And.cellsets.nim.115.25.i = and i64 %load.dot.f1.load.arg.t.i, %binop.LShr.cellsets.nim.164.26
  %dot.f3.load.arg.t1.i = getelementptr inbounds %tyObject_CellSet__YFwFoEuumoodPVhKCpK9b4g, ptr %s, i64 0, i32 3
  %load.dot.f3.load.arg.t1.i = load ptr, ptr %dot.f3.load.arg.t1.i, align 8
  %bra.uarr.geparr.cellsets.nim.116.1411.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t1.i, i64 0, i64 %binop.And.cellsets.nim.115.25.i
  %load.bra.uarr.geparr.cellsets.nim.116.1412.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.116.1411.i, align 8
  %icmp.IntEQ.cellsets.nim.116.18.not13.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.116.1412.i, null
  br i1 %icmp.IntEQ.cellsets.nim.116.18.not13.i, label %secReturn, label %while.true.cellsets.nim.116.2.i

while.true.cellsets.nim.116.2.i:                  ; preds = %secAlloca, %if.end.cellsets.nim.117.4.i
  %load.bra.uarr.geparr.cellsets.nim.116.1415.i = phi ptr [ %load.bra.uarr.geparr.cellsets.nim.116.14.i, %if.end.cellsets.nim.117.4.i ], [ %load.bra.uarr.geparr.cellsets.nim.116.1412.i, %secAlloca ]
  %h.014.i = phi i64 [ %binop.And.cellsets.nim.109.23.i.i, %if.end.cellsets.nim.117.4.i ], [ %binop.And.cellsets.nim.115.25.i, %secAlloca ]
  %dot.f1.load.bra.uarr.geparr.cellsets.nim.117.13.i = getelementptr inbounds %tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg, ptr %load.bra.uarr.geparr.cellsets.nim.116.1415.i, i64 0, i32 1
  %load.dot.f1.load.bra.uarr.geparr.cellsets.nim.117.13.i = load i64, ptr %dot.f1.load.bra.uarr.geparr.cellsets.nim.117.13.i, align 8
  %icmp.IntEQ.cellsets.nim.117.21.i = icmp eq i64 %load.dot.f1.load.bra.uarr.geparr.cellsets.nim.117.13.i, %binop.LShr.cellsets.nim.164.26
  br i1 %icmp.IntEQ.cellsets.nim.117.21.i, label %if.true.cellsets.nim.165.2, label %if.end.cellsets.nim.117.4.i

if.end.cellsets.nim.117.4.i:                      ; preds = %while.true.cellsets.nim.116.2.i
  %binop.Mul.cellsets.nim.109.14.i.i = mul i64 %h.014.i, 5
  %binop.Add.cellsets.nim.109.18.i.i = add i64 %binop.Mul.cellsets.nim.109.14.i.i, 1
  %binop.And.cellsets.nim.109.23.i.i = and i64 %binop.Add.cellsets.nim.109.18.i.i, %load.dot.f1.load.arg.t.i
  %bra.uarr.geparr.cellsets.nim.116.14.i = getelementptr inbounds [0 x ptr], ptr %load.dot.f3.load.arg.t1.i, i64 0, i64 %binop.And.cellsets.nim.109.23.i.i
  %load.bra.uarr.geparr.cellsets.nim.116.14.i = load ptr, ptr %bra.uarr.geparr.cellsets.nim.116.14.i, align 8
  %icmp.IntEQ.cellsets.nim.116.18.not.i = icmp eq ptr %load.bra.uarr.geparr.cellsets.nim.116.14.i, null
  br i1 %icmp.IntEQ.cellsets.nim.116.18.not.i, label %secReturn, label %while.true.cellsets.nim.116.2.i

if.true.cellsets.nim.165.2:                       ; preds = %while.true.cellsets.nim.116.2.i
  %binop.URem.cellsets.nim.166.11 = lshr i64 %cast.pi.cellsets.nim.163.10, 4
  %binop.UDiv.cellsets.nim.166.254 = lshr i64 %cast.pi.cellsets.nim.163.10, 10
  %binop.LShr.cellsets.nim.167.23 = and i64 %binop.UDiv.cellsets.nim.166.254, 3
  %bra.arr.geparr.cellsets.nim.167.20 = getelementptr inbounds %tyObject_PageDesc__IOg5MtGm0tzx9b9b6501Mbyg, ptr %load.bra.uarr.geparr.cellsets.nim.116.1415.i, i64 0, i32 2, i64 %binop.LShr.cellsets.nim.167.23
  %load.bra.arr.geparr.cellsets.nim.167.20 = load i64, ptr %bra.arr.geparr.cellsets.nim.167.20, align 8
  %binop.And.cellsets.nim.167.51 = and i64 %binop.URem.cellsets.nim.166.11, 63
  %binop.Shl.cellsets.nim.167.44 = shl nuw i64 1, %binop.And.cellsets.nim.167.51
  %binop.And.cellsets.nim.167.37 = and i64 %load.bra.arr.geparr.cellsets.nim.167.20, %binop.Shl.cellsets.nim.167.44
  %icmp.IntEQ.cellsets.nim.167.66 = icmp ne i64 %binop.And.cellsets.nim.167.37, 0
  %zext.not.bool.i8.icmp.IntEQ.cellsets.nim.167.66 = zext i1 %icmp.IntEQ.cellsets.nim.167.66 to i8
  br label %secReturn

secReturn:                                        ; preds = %if.end.cellsets.nim.117.4.i, %secAlloca, %if.true.cellsets.nim.165.2
  %result.0 = phi i8 [ %zext.not.bool.i8.icmp.IntEQ.cellsets.nim.167.66, %if.true.cellsets.nim.165.2 ], [ 0, %secAlloca ], [ 0, %if.end.cellsets.nim.117.4.i ]
  ret i8 %result.0
}

define internal fastcc void @freeCyclicCell__SOJE9bROCOc8iabVsKM64Sg_2(ptr %gch, ptr %c) unnamed_addr #2 {
secAlloca:
  %dot.f1.load.arg.cell.i = getelementptr inbounds %tyObject_Cell__nD1WneZb8PfM7AKNjgr63Q, ptr %c, i64 0, i32 1
  %load.dot.f1.load.arg.cell.i = load ptr, ptr %dot.f1.load.arg.cell.i, align 8
  %dot.f6.load.t.gc_common.nim.422.5.i = getelementptr inbounds %TNimType, ptr %load.dot.f1.load.arg.cell.i, i64 0, i32 6
  %load.dot.f6.load.t.gc_common.nim.422.5.i = load ptr, ptr %dot.f6.load.t.gc_common.nim.422.5.i, align 8
  %icmp.IntEQ.gc_common.nim.422.17.not.i = icmp eq ptr %load.dot.f6.load.t.gc_common.nim.422.5.i, null
  br i1 %icmp.IntEQ.gc_common.nim.422.17.not.i, label %prepareDealloc__fvhnFro5wEfzy879alizcUQ.exit, label %if.true.gc_common.nim.422.2.i

if.true.gc_common.nim.422.2.i:                    ; preds = %secAlloca
  %load.i = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %inc.nv.gc_common.nim.428.7.i = add i64 %load.i, 1
  store i64 %inc.nv.gc_common.nim.428.7.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %load.dot.f6.load.t.gc_common.nim.429.21.i = load ptr, ptr %dot.f6.load.t.gc_common.nim.422.5.i, align 8
  %cast.pi.gc.nim.173.25.i.i = ptrtoint ptr %c to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i = add i64 %cast.pi.gc.nim.173.25.i.i, 16
  %cast.ip.gc.nim.173.11.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i to ptr
  tail call void %load.dot.f6.load.t.gc_common.nim.429.21.i(ptr %cast.ip.gc.nim.173.11.i.i)
  %load2.i = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %inc.nv.gc_common.nim.430.7.i = add i64 %load2.i, -1
  store i64 %inc.nv.gc_common.nim.430.7.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  br label %prepareDealloc__fvhnFro5wEfzy879alizcUQ.exit

prepareDealloc__fvhnFro5wEfzy879alizcUQ.exit:     ; preds = %secAlloca, %if.true.gc_common.nim.422.2.i
  %dot.f7.load.arg.gch = getelementptr inbounds %tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr %gch, i64 0, i32 7
  tail call fastcc void @rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ(ptr nonnull %dot.f7.load.arg.gch, ptr nonnull %c)
  ret void
}

define internal fastcc ptr @copyStringRC1(ptr %src) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.sysstr.nim.125.9.not = icmp eq ptr %src, null
  br i1 %icmp.IntEQ.sysstr.nim.125.9.not, label %secReturn, label %if.true.sysstr.nim.125.2

if.true.sysstr.nim.125.2:                         ; preds = %secAlloca
  %dot.f1.dot.f0.load.arg.src1 = getelementptr inbounds %TGenericSeq, ptr %src, i64 0, i32 1
  %load.dot.f1.dot.f0.load.arg.src1 = load i64, ptr %dot.f1.dot.f0.load.arg.src1, align 8
  %icmp.IntEQ.sysstr.nim.126.41 = icmp slt i64 %load.dot.f1.dot.f0.load.arg.src1, 0
  br i1 %icmp.IntEQ.sysstr.nim.126.41, label %if.true.sysstr.nim.126.4, label %if.false.sysstr.nim.126.4

if.true.sysstr.nim.126.4:                         ; preds = %if.true.sysstr.nim.125.2
  %cast.pi.gc.nim.177.23.i = ptrtoint ptr %src to i64
  %binop.Sub.arithmetics.nim.418.26.i.i = add i64 %cast.pi.gc.nim.177.23.i, -16
  %cast.ip.gc.nim.177.11.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i to ptr
  %load.dot.f0.load.arg.c1.i = load i64, ptr %cast.ip.gc.nim.177.11.i, align 8
  %binop.Add.arithmetics.nim.407.26.i.i = add i64 %load.dot.f0.load.arg.c1.i, 8
  store i64 %binop.Add.arithmetics.nim.407.26.i.i, ptr %cast.ip.gc.nim.177.11.i, align 8
  br label %secReturn

if.false.sysstr.nim.126.4:                        ; preds = %if.true.sysstr.nim.125.2
  %load.dot.f0.dot.f0.load.arg.src3 = load i64, ptr %src, align 8
  %spec.store.select = tail call i64 @llvm.smax.i64(i64 %load.dot.f0.dot.f0.load.arg.src3, i64 7)
  %binop.Add.sysstr.nim.135.33 = add nuw i64 %spec.store.select, 17
  %call.res.sysstr.nim.134.42 = tail call ptr @newObjRC1(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 %binop.Add.sysstr.nim.135.33)
  %dot.f1.dot.f0.load.result.sysstr.nim.136.8 = getelementptr inbounds %TGenericSeq, ptr %call.res.sysstr.nim.134.42, i64 0, i32 1
  store i64 %spec.store.select, ptr %dot.f1.dot.f0.load.result.sysstr.nim.136.8, align 8
  %load.dot.f0.dot.f0.load.arg.src4 = load i64, ptr %src, align 8
  store i64 %load.dot.f0.dot.f0.load.arg.src4, ptr %call.res.sysstr.nim.134.42, align 16
  %dot.f1.load.result.sysstr.nim.142.19 = getelementptr inbounds %NimStringDesc, ptr %call.res.sysstr.nim.134.42, i64 0, i32 1
  %dot.f1.load.arg.src5 = getelementptr inbounds %NimStringDesc, ptr %src, i64 0, i32 1
  %binop.Add.sysstr.nim.142.57 = add i64 %load.dot.f0.dot.f0.load.arg.src4, 1
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %dot.f1.load.result.sysstr.nim.142.19, ptr nonnull align 1 %dot.f1.load.arg.src5, i64 %binop.Add.sysstr.nim.142.57, i1 false)
  br label %secReturn

secReturn:                                        ; preds = %if.false.sysstr.nim.126.4, %if.true.sysstr.nim.126.4, %secAlloca
  %result.0 = phi ptr [ %src, %if.true.sysstr.nim.126.4 ], [ %call.res.sysstr.nim.134.42, %if.false.sysstr.nim.126.4 ], [ null, %secAlloca ]
  ret ptr %result.0
}

; Function Attrs: noinline allockind("alloc,zeroed") allocsize(1)
define linkonce_odr noalias nonnull align 16 ptr @newObjRC1(ptr %typ, i64 %size) local_unnamed_addr #13 {
secAlloca:
  tail call fastcc void @collectCT__XHio9cMpnLoH7GyCj1Z9besg(ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q)
  %binop.Add.gc.nim.508.50 = add i64 %size, 16
  %call.res.gc.nim.508.32 = tail call ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 %binop.Add.gc.nim.508.50)
  %dot.f1.load.res.gc.nim.512.2 = getelementptr inbounds %tyObject_Cell__nD1WneZb8PfM7AKNjgr63Q, ptr %call.res.gc.nim.508.32, i64 0, i32 1
  store ptr %typ, ptr %dot.f1.load.res.gc.nim.512.2, align 8
  store i64 8, ptr %call.res.gc.nim.508.32, align 16
  %cast.pi.gc.nim.173.25.i = ptrtoint ptr %call.res.gc.nim.508.32 to i64
  %binop.Add.arithmetics.nim.407.26.i.i = add i64 %cast.pi.gc.nim.173.25.i, 16
  %cast.ip.gc.nim.173.11.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i to ptr
  tail call void @llvm.memset.p0.i64(ptr align 16 %cast.ip.gc.nim.173.11.i, i8 0, i64 %size, i1 false)
  ret ptr %cast.ip.gc.nim.173.11.i
}

; Function Attrs: cold noreturn
define internal fastcc void @nlvmRaise(ptr %e) unnamed_addr #11 {
secAlloca:
  %calloc = tail call dereferenceable_or_null(80) ptr @calloc(i64 1, i64 80)
  %dot.f6.load.exc.nlvm_system.nim.292.2 = getelementptr inbounds %tyObject_NlvmException__h59a1ij9cwOonlSvYG4fVp5g, ptr %calloc, i64 0, i32 6
  store i64 7956864854032739584, ptr %dot.f6.load.exc.nlvm_system.nim.292.2, align 8
  %dot.f1.dot.f6.load.exc.nlvm_system.nim.293.2 = getelementptr inbounds %tyObject_NlvmException__h59a1ij9cwOonlSvYG4fVp5g, ptr %calloc, i64 0, i32 6, i32 1
  store ptr @nlvmExceptionCleanup__9annmq9be6LzcbB7BfuPw7Xg, ptr %dot.f1.dot.f6.load.exc.nlvm_system.nim.293.2, align 8
  tail call fastcc void @unsureAsgnRef(ptr %calloc, ptr %e)
  %nilcheck.isnil.load.arg.e1 = icmp eq ptr %e, null
  br i1 %nilcheck.isnil.load.arg.e1, label %nilcheck.done.load.arg.e1, label %nilcheck.notnil.load.arg.e1

nilcheck.notnil.load.arg.e1:                      ; preds = %secAlloca
  %cast.pi.gc.nim.177.23.i.i = ptrtoint ptr %e to i64
  %binop.Sub.arithmetics.nim.418.26.i.i.i = add i64 %cast.pi.gc.nim.177.23.i.i, -16
  %cast.ip.gc.nim.177.11.i.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i.i to ptr
  tail call fastcc void @add__W9aRfhn7HvnQTPAb8ajo1uw(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 10), ptr %cast.ip.gc.nim.177.11.i.i)
  %load.dot.f0.load.arg.c1.i.i = load i64, ptr %cast.ip.gc.nim.177.11.i.i, align 8
  %binop.Add.arithmetics.nim.407.26.i.i.i = add i64 %load.dot.f0.load.arg.c1.i.i, 8
  store i64 %binop.Add.arithmetics.nim.407.26.i.i.i, ptr %cast.ip.gc.nim.177.11.i.i, align 8
  br label %nilcheck.done.load.arg.e1

nilcheck.done.load.arg.e1:                        ; preds = %nilcheck.notnil.load.arg.e1, %secAlloca
  %call.res.nlvm_system.nim.305.29 = tail call i32 @_Unwind_RaiseException(ptr nonnull %dot.f6.load.exc.nlvm_system.nim.292.2)
  %case.cmp.nlvm_system.nim.307.2 = icmp eq i32 %call.res.nlvm_system.nim.305.29, 5
  br i1 %case.cmp.nlvm_system.nim.307.2, label %case.of.1.do.nlvm_system.nim.307.2, label %case.else.do.nlvm_system.nim.307.2

case.of.1.do.nlvm_system.nim.307.2:               ; preds = %nilcheck.done.load.arg.e1
  tail call fastcc void @unhandledException__Yd0Yt4sx4Kd9aEQZgnY9bSVw(ptr %e)
  unreachable

case.else.do.nlvm_system.nim.307.2:               ; preds = %nilcheck.done.load.arg.e1
  %load.stderr.nlvm_system.nim.312.14 = load ptr, ptr @stderr, align 8
  %call.res.nlvm_system.nim.312.13 = tail call i32 (ptr, ptr, ...) @fprintf(ptr %load.stderr.nlvm_system.nim.312.14, ptr nonnull @.cstr.Error__cannot_ra.., i32 %call.res.nlvm_system.nim.305.29) #30
  tail call void @abort()
  unreachable
}

define internal void @nlvmExceptionCleanup__9annmq9be6LzcbB7BfuPw7Xg(i32 %unwindCode, ptr %exception) #2 {
secAlloca:
  %cast.pi.nlvm_system.nim.191.4.i = ptrtoint ptr %exception to i64
  %binop.Sub.nlvm_system.nim.191.49.i = add i64 %cast.pi.nlvm_system.nim.191.4.i, -48
  %cast.ip.nlvm_system.nim.190.2.i = inttoptr i64 %binop.Sub.nlvm_system.nim.191.49.i to ptr
  %load.dot.f0.load.nlvme.nlvm_system.nim.204.13 = load ptr, ptr %cast.ip.nlvm_system.nim.190.2.i, align 8
  %nilcheck.isnil.load.dot.f0.load.nlvme.nlvm_system.nim.204.13 = icmp eq ptr %load.dot.f0.load.nlvme.nlvm_system.nim.204.13, null
  br i1 %nilcheck.isnil.load.dot.f0.load.nlvme.nlvm_system.nim.204.13, label %nilcheck.done.load.dot.f0.load.nlvme.nlvm_system.nim.204.13, label %nilcheck.notnil.load.dot.f0.load.nlvme.nlvm_system.nim.204.13

nilcheck.notnil.load.dot.f0.load.nlvme.nlvm_system.nim.204.13: ; preds = %secAlloca
  %cast.pi.gc.nim.177.23.i.i = ptrtoint ptr %load.dot.f0.load.nlvme.nlvm_system.nim.204.13 to i64
  %binop.Sub.arithmetics.nim.418.26.i.i.i = add i64 %cast.pi.gc.nim.177.23.i.i, -16
  %cast.ip.gc.nim.177.11.i.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i.i to ptr
  %load.i = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 10), align 16
  %binop.Sub.gc.nim.255.33.i = add i64 %load.i, -1
  %load1.i = load ptr, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 10, i32 2), align 16
  %icmp.IntSLE.gc.nim.258.1011.i = icmp sgt i64 %binop.Sub.gc.nim.255.33.i, -1
  br i1 %icmp.IntSLE.gc.nim.258.1011.i, label %while.true.gc.nim.258.2.i, label %nimGCunref.exit

while.true.gc.nim.258.2.i:                        ; preds = %nilcheck.notnil.load.dot.f0.load.nlvme.nlvm_system.nim.204.13, %if.end.gc.nim.259.4.i
  %i.012.i = phi i64 [ %inc.nv.gc.nim.263.7.i, %if.end.gc.nim.259.4.i ], [ %binop.Sub.gc.nim.255.33.i, %nilcheck.notnil.load.dot.f0.load.nlvme.nlvm_system.nim.204.13 ]
  %bra.uarr.geparr.gc.nim.259.8.i = getelementptr inbounds [0 x ptr], ptr %load1.i, i64 0, i64 %i.012.i
  %load.bra.uarr.geparr.gc.nim.259.8.i = load ptr, ptr %bra.uarr.geparr.gc.nim.259.8.i, align 8
  %icmp.IntEQ.gc.nim.259.12.i = icmp eq ptr %load.bra.uarr.geparr.gc.nim.259.8.i, %cast.ip.gc.nim.177.11.i.i
  br i1 %icmp.IntEQ.gc.nim.259.12.i, label %if.true.gc.nim.259.4.i, label %if.end.gc.nim.259.4.i

if.true.gc.nim.259.4.i:                           ; preds = %while.true.gc.nim.258.2.i
  %bra.uarr.geparr.gc.nim.259.8.i.le = getelementptr inbounds [0 x ptr], ptr %load1.i, i64 0, i64 %i.012.i
  %bra.uarr.geparr.gc.nim.260.14.i = getelementptr inbounds [0 x ptr], ptr %load1.i, i64 0, i64 %binop.Sub.gc.nim.255.33.i
  %load.bra.uarr.geparr.gc.nim.260.14.i = load ptr, ptr %bra.uarr.geparr.gc.nim.260.14.i, align 8
  store ptr %load.bra.uarr.geparr.gc.nim.260.14.i, ptr %bra.uarr.geparr.gc.nim.259.8.i.le, align 8
  %load2.i = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 10), align 16
  %inc.nv.gc.nim.261.10.i = add i64 %load2.i, -1
  store i64 %inc.nv.gc.nim.261.10.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 10), align 16
  br label %nimGCunref.exit

if.end.gc.nim.259.4.i:                            ; preds = %while.true.gc.nim.258.2.i
  %inc.nv.gc.nim.263.7.i = add nsw i64 %i.012.i, -1
  %icmp.IntSLE.gc.nim.258.10.i = icmp sgt i64 %i.012.i, 0
  br i1 %icmp.IntSLE.gc.nim.258.10.i, label %while.true.gc.nim.258.2.i, label %nimGCunref.exit

nimGCunref.exit:                                  ; preds = %if.end.gc.nim.259.4.i, %nilcheck.notnil.load.dot.f0.load.nlvme.nlvm_system.nim.204.13, %if.true.gc.nim.259.4.i
  tail call fastcc void @decRef__AT1eRuflKWyTTBdLjEDZbg_2(ptr %cast.ip.gc.nim.177.11.i.i)
  br label %nilcheck.done.load.dot.f0.load.nlvme.nlvm_system.nim.204.13

nilcheck.done.load.dot.f0.load.nlvme.nlvm_system.nim.204.13: ; preds = %nimGCunref.exit, %secAlloca
  tail call void @free(ptr %cast.ip.nlvm_system.nim.190.2.i)
  ret void
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
define internal fastcc ptr @toNlvmException__WSru48z9adNOfNkRTxb6cKg(ptr %e) unnamed_addr #20 {
secAlloca:
  %cast.pi.nlvm_system.nim.191.4 = ptrtoint ptr %e to i64
  %binop.Sub.nlvm_system.nim.191.49 = add i64 %cast.pi.nlvm_system.nim.191.4, -48
  %cast.ip.nlvm_system.nim.190.2 = inttoptr i64 %binop.Sub.nlvm_system.nim.191.49 to ptr
  ret ptr %cast.ip.nlvm_system.nim.190.2
}

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #21

define internal fastcc void @unsureAsgnRef(ptr %dest, ptr %src) unnamed_addr #2 {
secAlloca:
  %call.res.gc.nim.297.18 = tail call fastcc i8 @isOnStack__plOlFsQAAvcYd3nF5LfWzw(ptr %dest)
  %not.call.res.gc.nim.297.18 = icmp eq i8 %call.res.gc.nim.297.18, 0
  br i1 %not.call.res.gc.nim.297.18, label %if.true.gc.nim.297.2, label %if.end.gc.nim.297.2

if.true.gc.nim.297.2:                             ; preds = %secAlloca
  %icmp.IntEQ.gc.nim.298.11.not = icmp eq ptr %src, null
  br i1 %icmp.IntEQ.gc.nim.298.11.not, label %if.end.gc.nim.298.4, label %if.true.gc.nim.298.4

if.true.gc.nim.298.4:                             ; preds = %if.true.gc.nim.297.2
  %cast.pi.gc.nim.177.23.i = ptrtoint ptr %src to i64
  %binop.Sub.arithmetics.nim.418.26.i.i = add i64 %cast.pi.gc.nim.177.23.i, -16
  %cast.ip.gc.nim.177.11.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i to ptr
  %load.dot.f0.load.arg.c1.i = load i64, ptr %cast.ip.gc.nim.177.11.i, align 8
  %binop.Add.arithmetics.nim.407.26.i.i = add i64 %load.dot.f0.load.arg.c1.i, 8
  store i64 %binop.Add.arithmetics.nim.407.26.i.i, ptr %cast.ip.gc.nim.177.11.i, align 8
  br label %if.end.gc.nim.298.4

if.end.gc.nim.298.4:                              ; preds = %if.true.gc.nim.297.2, %if.true.gc.nim.298.4
  %load.load.arg.dest2 = load ptr, ptr %dest, align 8
  %icmp.IntULE.comparisons.nim.179.16.i.not = icmp ugt ptr %load.load.arg.dest2, inttoptr (i64 4095 to ptr)
  br i1 %icmp.IntULE.comparisons.nim.179.16.i.not, label %if.true.gc.nim.302.4, label %if.end.gc.nim.297.2

if.true.gc.nim.302.4:                             ; preds = %if.end.gc.nim.298.4
  %cast.pi.gc.nim.302.7 = ptrtoint ptr %load.load.arg.dest2 to i64
  %binop.Sub.arithmetics.nim.418.26.i.i7 = add i64 %cast.pi.gc.nim.302.7, -16
  %cast.ip.gc.nim.177.11.i8 = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i7 to ptr
  tail call fastcc void @decRef__AT1eRuflKWyTTBdLjEDZbg_2(ptr %cast.ip.gc.nim.177.11.i8)
  br label %if.end.gc.nim.297.2

if.end.gc.nim.297.2:                              ; preds = %secAlloca, %if.true.gc.nim.302.4, %if.end.gc.nim.298.4
  store ptr %src, ptr %dest, align 8
  ret void
}

; Function Attrs: mustprogress nofree noinline norecurse nounwind willreturn memory(read, argmem: none, inaccessiblemem: readwrite)
define internal fastcc i8 @isOnStack__plOlFsQAAvcYd3nF5LfWzw(ptr %p) unnamed_addr #15 {
secAlloca:
  %stackTop = alloca ptr, align 8
  store ptr %stackTop, ptr %stackTop, align 8
  %load.dot.f0.call.res.gc_common.nim.315.31 = load ptr, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, align 16
  %load.stackTop.gc_common.nim.316.28 = load volatile ptr, ptr %stackTop, align 8
  %icmp.IntULE.comparisons.nim.179.16.i.not = icmp ule ptr %load.stackTop.gc_common.nim.316.28, %p
  %icmp.IntULE.comparisons.nim.179.16.i4 = icmp uge ptr %load.dot.f0.call.res.gc_common.nim.315.31, %p
  %narrow = select i1 %icmp.IntULE.comparisons.nim.179.16.i.not, i1 %icmp.IntULE.comparisons.nim.179.16.i4, i1 false
  %and.res.gc_common.nim.320.19 = zext i1 %narrow to i8
  ret i8 %and.res.gc_common.nim.320.19
}

declare i32 @_Unwind_RaiseException(ptr) local_unnamed_addr #2

; Function Attrs: noreturn nounwind
define internal fastcc void @unhandledException__Yd0Yt4sx4Kd9aEQZgnY9bSVw(ptr nocapture readonly %e) unnamed_addr #6 {
secAlloca:
  %load.stderr.nlvm_system.nim.216.4 = load ptr, ptr @stderr, align 8
  %dot.f3.load.arg.e = getelementptr inbounds %Exception, ptr %e, i64 0, i32 3
  %load.dot.f3.load.arg.e = load ptr, ptr %dot.f3.load.arg.e, align 8
  %icmp.IntEQ.sysstr.nim.93.7.i = icmp eq ptr %load.dot.f3.load.arg.e, null
  br i1 %icmp.IntEQ.sysstr.nim.93.7.i, label %andor.end.sysstr.nim.93.14.thread.i, label %andor.end.sysstr.nim.93.14.i

andor.end.sysstr.nim.93.14.i:                     ; preds = %secAlloca
  %load.dot.f0.dot.f0.load.arg.s1.i = load i64, ptr %load.dot.f3.load.arg.e, align 8
  %load.dot.f0.dot.f0.load.arg.s1.fr.i = freeze i64 %load.dot.f0.dot.f0.load.arg.s1.i
  %icmp.IntEQ.sysstr.nim.93.23.i = icmp eq i64 %load.dot.f0.dot.f0.load.arg.s1.fr.i, 0
  %dot.f1.load.arg.s2.i = getelementptr inbounds %NimStringDesc, ptr %load.dot.f3.load.arg.e, i64 0, i32 1
  br i1 %icmp.IntEQ.sysstr.nim.93.23.i, label %andor.end.sysstr.nim.93.14.thread.i, label %nimToCStringConv.exit

andor.end.sysstr.nim.93.14.thread.i:              ; preds = %andor.end.sysstr.nim.93.14.i, %secAlloca
  br label %nimToCStringConv.exit

nimToCStringConv.exit:                            ; preds = %andor.end.sysstr.nim.93.14.i, %andor.end.sysstr.nim.93.14.thread.i
  %0 = phi ptr [ @.cstr., %andor.end.sysstr.nim.93.14.thread.i ], [ %dot.f1.load.arg.s2.i, %andor.end.sysstr.nim.93.14.i ]
  %dot.f2.load.arg.e1 = getelementptr inbounds %Exception, ptr %e, i64 0, i32 2
  %load.dot.f2.load.arg.e1 = load ptr, ptr %dot.f2.load.arg.e1, align 8
  %call.res.nlvm_system.nim.215.11 = tail call i32 (ptr, ptr, ...) @fprintf(ptr %load.stderr.nlvm_system.nim.216.4, ptr nonnull @.cstr.Error__unhandled.., ptr nonnull %0, ptr %load.dot.f2.load.arg.e1) #30
  tail call void @exit(i64 1)
  unreachable
}

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #4

; Function Attrs: noreturn nounwind
declare void @abort() local_unnamed_addr #6

define void @signalHandler(i32 %sign) #2 personality ptr @nlvmEHPersonality {
secAlloca:
  %toWrite.i.i = alloca i8, align 1
  %buf = alloca ptr, align 8
  %load.i = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %inc.nv.gc.nim.891.7.i = add i64 %load.i, 1
  store i64 %inc.nv.gc.nim.891.7.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %call.res.sysstr.nim.45.26.i = tail call dereferenceable(2017) ptr @newObj(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 2017)
  %dot.f1.dot.f0.load.result.sysstr.nim.63.2.i = getelementptr inbounds %TGenericSeq, ptr %call.res.sysstr.nim.45.26.i, i64 0, i32 1
  store i64 2000, ptr %dot.f1.dot.f0.load.result.sysstr.nim.63.2.i, align 8
  store i64 0, ptr %call.res.sysstr.nim.45.26.i, align 16
  %call.cp.copyString = tail call fastcc ptr @copyString(ptr nonnull %call.res.sysstr.nim.45.26.i)
  store ptr %call.cp.copyString, ptr %buf, align 8
  %call.cp.resizeString.i = tail call fastcc ptr @resizeString(ptr %call.cp.copyString, i64 29)
  call fastcc void @unsureAsgnRef(ptr nonnull %buf, ptr %call.cp.resizeString.i)
  %load.dot.f0.dot.f0.load.arg.dest1.i.i = load i64, ptr %call.cp.resizeString.i, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i.i = getelementptr inbounds %NimStringDesc, ptr %call.cp.resizeString.i, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i.i
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(30) %bra.uarr.geparr.sysstr.nim.226.26.i.i, ptr noundef nonnull align 16 dereferenceable(30) getelementptr inbounds ({ %TGenericSeq, [30 x i8] }, ptr @.str.No_stack_traceba.., i64 0, i32 1, i64 0), i64 30, i1 false)
  %load.dot.f0.dot.f0.load.arg.dest4.i.i = load i64, ptr %call.cp.resizeString.i, align 8
  %inc.nv.sysstr.nim.227.7.i.i = add i64 %load.dot.f0.dot.f0.load.arg.dest4.i.i, 29
  store i64 %inc.nv.sysstr.nim.227.7.i.i, ptr %call.cp.resizeString.i, align 8
  switch i32 %sign, label %if.end.excpt.nim.620.12 [
    i32 2, label %if.true.excpt.nim.632.6
    i32 11, label %if.true.excpt.nim.632.62
    i32 6, label %if.true.excpt.nim.632.67
    i32 8, label %if.true.excpt.nim.632.612
    i32 4, label %if.true.excpt.nim.632.617
    i32 13, label %if.true.excpt.nim.620.12
  ]

if.true.excpt.nim.632.6:                          ; preds = %secAlloca
  %load.buf = load ptr, ptr %buf, align 8
  %call.cp.resizeString = call fastcc ptr @resizeString(ptr %load.buf, i64 31)
  store ptr %call.cp.resizeString, ptr %buf, align 8
  %load.dot.f0.dot.f0.load.arg.dest1.i = load i64, ptr %call.cp.resizeString, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i = getelementptr inbounds %NimStringDesc, ptr %call.cp.resizeString, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %bra.uarr.geparr.sysstr.nim.226.26.i, ptr noundef nonnull align 16 dereferenceable(32) getelementptr inbounds ({ %TGenericSeq, [32 x i8] }, ptr @.str.SIGINT__Interrup.., i64 0, i32 1, i64 0), i64 32, i1 false)
  br label %if.end.excpt.nim.632.6

if.true.excpt.nim.632.62:                         ; preds = %secAlloca
  %load.buf4 = load ptr, ptr %buf, align 8
  %call.cp.resizeString5 = call fastcc ptr @resizeString(ptr %load.buf4, i64 61)
  store ptr %call.cp.resizeString5, ptr %buf, align 8
  %load.dot.f0.dot.f0.load.arg.dest1.i39 = load i64, ptr %call.cp.resizeString5, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i40 = getelementptr inbounds %NimStringDesc, ptr %call.cp.resizeString5, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i39
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(62) %bra.uarr.geparr.sysstr.nim.226.26.i40, ptr noundef nonnull align 16 dereferenceable(62) getelementptr inbounds ({ %TGenericSeq, [62 x i8] }, ptr @.str.SIGSEGV__Illegal.., i64 0, i32 1, i64 0), i64 62, i1 false)
  br label %if.end.excpt.nim.632.6

if.true.excpt.nim.632.67:                         ; preds = %secAlloca
  %load.buf9 = load ptr, ptr %buf, align 8
  %call.cp.resizeString10 = call fastcc ptr @resizeString(ptr %load.buf9, i64 31)
  store ptr %call.cp.resizeString10, ptr %buf, align 8
  %load.dot.f0.dot.f0.load.arg.dest1.i43 = load i64, ptr %call.cp.resizeString10, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i44 = getelementptr inbounds %NimStringDesc, ptr %call.cp.resizeString10, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i43
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %bra.uarr.geparr.sysstr.nim.226.26.i44, ptr noundef nonnull align 16 dereferenceable(32) getelementptr inbounds ({ %TGenericSeq, [32 x i8] }, ptr @.str.SIGABRT__Abnorma.., i64 0, i32 1, i64 0), i64 32, i1 false)
  br label %if.end.excpt.nim.632.6

if.true.excpt.nim.632.612:                        ; preds = %secAlloca
  %load.buf14 = load ptr, ptr %buf, align 8
  %call.cp.resizeString15 = call fastcc ptr @resizeString(ptr %load.buf14, i64 26)
  store ptr %call.cp.resizeString15, ptr %buf, align 8
  %load.dot.f0.dot.f0.load.arg.dest1.i47 = load i64, ptr %call.cp.resizeString15, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i48 = getelementptr inbounds %NimStringDesc, ptr %call.cp.resizeString15, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i47
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(27) %bra.uarr.geparr.sysstr.nim.226.26.i48, ptr noundef nonnull align 16 dereferenceable(27) getelementptr inbounds ({ %TGenericSeq, [27 x i8] }, ptr @.str.SIGFPE__Arithmet.., i64 0, i32 1, i64 0), i64 27, i1 false)
  br label %if.end.excpt.nim.632.6

if.true.excpt.nim.632.617:                        ; preds = %secAlloca
  %load.buf19 = load ptr, ptr %buf, align 8
  %call.cp.resizeString20 = call fastcc ptr @resizeString(ptr %load.buf19, i64 27)
  store ptr %call.cp.resizeString20, ptr %buf, align 8
  %load.dot.f0.dot.f0.load.arg.dest1.i51 = load i64, ptr %call.cp.resizeString20, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i52 = getelementptr inbounds %NimStringDesc, ptr %call.cp.resizeString20, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i51
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(28) %bra.uarr.geparr.sysstr.nim.226.26.i52, ptr noundef nonnull align 16 dereferenceable(28) getelementptr inbounds ({ %TGenericSeq, [28 x i8] }, ptr @.str.SIGILL__Illegal_.., i64 0, i32 1, i64 0), i64 28, i1 false)
  br label %if.end.excpt.nim.632.6

if.true.excpt.nim.620.12:                         ; preds = %secAlloca
  %load.buf26 = load ptr, ptr %buf, align 8
  %call.cp.resizeString27 = call fastcc ptr @resizeString(ptr %load.buf26, i64 22)
  store ptr %call.cp.resizeString27, ptr %buf, align 8
  %load.dot.f0.dot.f0.load.arg.dest1.i55 = load i64, ptr %call.cp.resizeString27, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i56 = getelementptr inbounds %NimStringDesc, ptr %call.cp.resizeString27, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i55
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %bra.uarr.geparr.sysstr.nim.226.26.i56, ptr noundef nonnull align 16 dereferenceable(23) getelementptr inbounds ({ %TGenericSeq, [23 x i8] }, ptr @.str.SIGPIPE__Pipe_cl.., i64 0, i32 1, i64 0), i64 23, i1 false)
  br label %if.end.excpt.nim.632.6

if.end.excpt.nim.620.12:                          ; preds = %secAlloca
  %load.buf28 = load ptr, ptr %buf, align 8
  %call.cp.resizeString29 = call fastcc ptr @resizeString(ptr %load.buf28, i64 15)
  store ptr %call.cp.resizeString29, ptr %buf, align 8
  %load.dot.f0.dot.f0.load.arg.dest1.i59 = load i64, ptr %call.cp.resizeString29, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i60 = getelementptr inbounds %NimStringDesc, ptr %call.cp.resizeString29, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i59
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %bra.uarr.geparr.sysstr.nim.226.26.i60, ptr noundef nonnull align 16 dereferenceable(16) getelementptr inbounds ({ %TGenericSeq, [16 x i8] }, ptr @.str.unknown_signal_, i64 0, i32 1, i64 0), i64 16, i1 false)
  br label %if.end.excpt.nim.632.6

if.end.excpt.nim.632.6:                           ; preds = %if.true.excpt.nim.620.12, %if.end.excpt.nim.620.12, %if.true.excpt.nim.632.617, %if.true.excpt.nim.632.612, %if.true.excpt.nim.632.67, %if.true.excpt.nim.632.62, %if.true.excpt.nim.632.6
  %call.cp.resizeString27.sink64 = phi ptr [ %call.cp.resizeString27, %if.true.excpt.nim.620.12 ], [ %call.cp.resizeString29, %if.end.excpt.nim.620.12 ], [ %call.cp.resizeString20, %if.true.excpt.nim.632.617 ], [ %call.cp.resizeString15, %if.true.excpt.nim.632.612 ], [ %call.cp.resizeString10, %if.true.excpt.nim.632.67 ], [ %call.cp.resizeString5, %if.true.excpt.nim.632.62 ], [ %call.cp.resizeString, %if.true.excpt.nim.632.6 ]
  %.sink = phi i64 [ 22, %if.true.excpt.nim.620.12 ], [ 15, %if.end.excpt.nim.620.12 ], [ 27, %if.true.excpt.nim.632.617 ], [ 26, %if.true.excpt.nim.632.612 ], [ 31, %if.true.excpt.nim.632.67 ], [ 61, %if.true.excpt.nim.632.62 ], [ 31, %if.true.excpt.nim.632.6 ]
  %load.dot.f0.dot.f0.load.arg.dest4.i57 = load i64, ptr %call.cp.resizeString27.sink64, align 8
  %inc.nv.sysstr.nim.227.7.i58 = add i64 %load.dot.f0.dot.f0.load.arg.dest4.i57, %.sink
  store i64 %inc.nv.sysstr.nim.227.7.i58, ptr %call.cp.resizeString27.sink64, align 8
  %load.buf.excpt.nim.633.24 = load ptr, ptr %buf, align 8
  %icmp.IntEQ.sysstr.nim.93.7.i.i = icmp eq ptr %load.buf.excpt.nim.633.24, null
  br i1 %icmp.IntEQ.sysstr.nim.93.7.i.i, label %nilcheck.done.load.arg.data1.i, label %andor.end.sysstr.nim.93.14.i.i

andor.end.sysstr.nim.93.14.i.i:                   ; preds = %if.end.excpt.nim.632.6
  %load.dot.f0.dot.f0.load.arg.s1.i.i = load i64, ptr %load.buf.excpt.nim.633.24, align 8
  %load.dot.f0.dot.f0.load.arg.s1.fr.i.i = freeze i64 %load.dot.f0.dot.f0.load.arg.s1.i.i
  %icmp.IntEQ.sysstr.nim.93.23.i.i = icmp eq i64 %load.dot.f0.dot.f0.load.arg.s1.fr.i.i, 0
  %dot.f1.load.arg.s2.i.i = getelementptr inbounds %NimStringDesc, ptr %load.buf.excpt.nim.633.24, i64 0, i32 1
  %spec.select.i = select i1 %icmp.IntEQ.sysstr.nim.93.23.i.i, ptr @.cstr., ptr %dot.f1.load.arg.s2.i.i
  br label %nilcheck.done.load.arg.data1.i

nilcheck.done.load.arg.data1.i:                   ; preds = %andor.end.sysstr.nim.93.14.i.i, %if.end.excpt.nim.632.6
  %0 = phi ptr [ %spec.select.i, %andor.end.sysstr.nim.93.14.i.i ], [ @.cstr., %if.end.excpt.nim.632.6 ]
  %nilcheck.phi.load.arg.data1.i = phi i64 [ %load.dot.f0.dot.f0.load.arg.s1.fr.i.i, %andor.end.sysstr.nim.93.14.i.i ], [ 0, %if.end.excpt.nim.632.6 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %toWrite.i.i)
  store i8 1, ptr %toWrite.i.i, align 1
  %toWrite.i.i.0.toWrite.i.i.0.toWrite.i.i.0.toWrite.i.0.toWrite.i.0.toWrite.0.toWrite.0.toWrite.0.load.toWrite.excpt.nim.53.5.i.i = load volatile i8, ptr %toWrite.i.i, align 1
  %i1.load.toWrite.excpt.nim.53.5.not.i.i = icmp eq i8 %toWrite.i.i.0.toWrite.i.i.0.toWrite.i.i.0.toWrite.i.0.toWrite.i.0.toWrite.0.toWrite.0.toWrite.0.load.toWrite.excpt.nim.53.5.i.i, 0
  br i1 %i1.load.toWrite.excpt.nim.53.5.not.i.i, label %showErrorMessage2__KsuUENvQrFH7eywTGPJ9bCg.exit, label %if.true.excpt.nim.53.2.i.i

if.true.excpt.nim.53.2.i.i:                       ; preds = %nilcheck.done.load.arg.data1.i
  %load.stderr.excpt.nim.32.19.i.i.i = load ptr, ptr @stderr, align 8
  %call.res.ansi_c.nim.222.18.i.i.i.i = call i64 @fwrite(ptr %0, i64 1, i64 %nilcheck.phi.load.arg.data1.i, ptr %load.stderr.excpt.nim.32.19.i.i.i) #30
  %call.res.ansi_c.nim.223.18.i.i.i.i = call i32 @fflush(ptr %load.stderr.excpt.nim.32.19.i.i.i)
  br label %showErrorMessage2__KsuUENvQrFH7eywTGPJ9bCg.exit

showErrorMessage2__KsuUENvQrFH7eywTGPJ9bCg.exit:  ; preds = %nilcheck.done.load.arg.data1.i, %if.true.excpt.nim.53.2.i.i
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %toWrite.i.i)
  %load.i63 = load i64, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %icmp.IntSLE.gc.nim.894.23.i = icmp slt i64 %load.i63, 1
  br i1 %icmp.IntSLE.gc.nim.894.23.i, label %nilcheck.done.load.objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.gc.nim.895.263.i, label %GC_enable__RsY2eAkO9aEvlDhb7ZyRF8g_2.exit

nilcheck.done.load.objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.gc.nim.895.263.i: ; preds = %showErrorMessage2__KsuUENvQrFH7eywTGPJ9bCg.exit
  %call.cp.newObj.i = call dereferenceable(48) ptr @newObj(ptr nonnull @.typeinfo.tyRef__eaxM9cvk9cnRSzfgEze9a0FxA, i64 48)
  store ptr @.typeinfo.tyObject_AssertionDefect__ULq7r1mfkZXU2bKYZ8cNuA, ptr %call.cp.newObj.i, align 16
  %name.load.objconstr.gc.nim.895.26.i = getelementptr inbounds %Exception, ptr %call.cp.newObj.i, i64 0, i32 2
  store ptr @.cstr.AssertionDefect, ptr %name.load.objconstr.gc.nim.895.26.i, align 16
  %objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.gc.nim.895.263.i = getelementptr inbounds %Exception, ptr %call.cp.newObj.i, i64 0, i32 3
  %call.cp.copyStringRC1.i = call fastcc ptr @copyStringRC1(ptr nonnull @.str.API_usage_error_..)
  store ptr %call.cp.copyStringRC1.i, ptr %objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.gc.nim.895.263.i, align 8
  %objconstr.f1.objconstr.f0.objconstr.f0.load.objconstr.gc.nim.895.2634.i = getelementptr inbounds %Exception, ptr %call.cp.newObj.i, i64 0, i32 1
  call fastcc void @asgnRef(ptr nonnull %objconstr.f1.objconstr.f0.objconstr.f0.load.objconstr.gc.nim.895.2634.i)
  call fastcc void @nlvmRaise(ptr nonnull %call.cp.newObj.i)
  unreachable

GC_enable__RsY2eAkO9aEvlDhb7ZyRF8g_2.exit:        ; preds = %showErrorMessage2__KsuUENvQrFH7eywTGPJ9bCg.exit
  %inc.nv.gc.nim.897.7.i = add nsw i64 %load.i63, -1
  store i64 %inc.nv.gc.nim.897.7.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 6), align 16
  %call.res.excpt.nim.647.14 = call ptr @signal(i32 %sign, ptr null)
  %call.res.excpt.nim.652.21 = call i32 @raise(i32 %sign)
  ret void
}

define internal fastcc noalias nonnull ptr @rawNewString(i64 %space) unnamed_addr #2 {
secAlloca:
  %spec.store.select = tail call i64 @llvm.smax.i64(i64 %space, i64 7)
  %binop.Add.sysstr.nim.62.44 = add nuw i64 %spec.store.select, 17
  %call.res.sysstr.nim.45.26 = tail call ptr @newObj(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 %binop.Add.sysstr.nim.62.44)
  %dot.f1.dot.f0.load.result.sysstr.nim.63.2 = getelementptr inbounds %TGenericSeq, ptr %call.res.sysstr.nim.45.26, i64 0, i32 1
  store i64 %spec.store.select, ptr %dot.f1.dot.f0.load.result.sysstr.nim.63.2, align 8
  store i64 0, ptr %call.res.sysstr.nim.45.26, align 16
  ret ptr %call.res.sysstr.nim.45.26
}

define internal fastcc ptr @copyString(ptr readonly %src) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.sysstr.nim.106.9.not = icmp eq ptr %src, null
  br i1 %icmp.IntEQ.sysstr.nim.106.9.not, label %secReturn, label %if.true.sysstr.nim.106.2

if.true.sysstr.nim.106.2:                         ; preds = %secAlloca
  %dot.f1.dot.f0.load.arg.src1 = getelementptr inbounds %TGenericSeq, ptr %src, i64 0, i32 1
  %load.dot.f1.dot.f0.load.arg.src1 = load i64, ptr %dot.f1.dot.f0.load.arg.src1, align 8
  %icmp.IntEQ.sysstr.nim.107.41 = icmp slt i64 %load.dot.f1.dot.f0.load.arg.src1, 0
  br i1 %icmp.IntEQ.sysstr.nim.107.41, label %secReturn, label %if.false.sysstr.nim.107.4

if.false.sysstr.nim.107.4:                        ; preds = %if.true.sysstr.nim.106.2
  %load.dot.f0.dot.f0.load.arg.src3 = load i64, ptr %src, align 8
  %spec.store.select.i = tail call i64 @llvm.smax.i64(i64 %load.dot.f0.dot.f0.load.arg.src3, i64 7)
  %binop.Add.sysstr.nim.53.50.i = add nuw i64 %spec.store.select.i, 17
  %call.res.gc.nim.482.20.i.i = tail call ptr @rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 %binop.Add.sysstr.nim.53.50.i, ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q)
  %dot.f1.dot.f0.load.result.sysstr.nim.54.2.i = getelementptr inbounds %TGenericSeq, ptr %call.res.gc.nim.482.20.i.i, i64 0, i32 1
  store i64 %spec.store.select.i, ptr %dot.f1.dot.f0.load.result.sysstr.nim.54.2.i, align 8
  %load.dot.f0.dot.f0.load.arg.src4 = load i64, ptr %src, align 8
  store i64 %load.dot.f0.dot.f0.load.arg.src4, ptr %call.res.gc.nim.482.20.i.i, align 16
  %dot.f1.load.result.sysstr.nim.112.19 = getelementptr inbounds %NimStringDesc, ptr %call.res.gc.nim.482.20.i.i, i64 0, i32 1
  %dot.f1.load.arg.src5 = getelementptr inbounds %NimStringDesc, ptr %src, i64 0, i32 1
  %binop.Add.sysstr.nim.112.57 = add i64 %load.dot.f0.dot.f0.load.arg.src4, 1
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %dot.f1.load.result.sysstr.nim.112.19, ptr nonnull align 1 %dot.f1.load.arg.src5, i64 %binop.Add.sysstr.nim.112.57, i1 false)
  br label %secReturn

secReturn:                                        ; preds = %if.true.sysstr.nim.106.2, %if.false.sysstr.nim.107.4, %secAlloca
  %result.0 = phi ptr [ %call.res.gc.nim.482.20.i.i, %if.false.sysstr.nim.107.4 ], [ null, %secAlloca ], [ %src, %if.true.sysstr.nim.106.2 ]
  ret ptr %result.0
}

define internal fastcc ptr @resizeString(ptr readonly %dest, i64 %addlen) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.sysstr.nim.207.10 = icmp eq ptr %dest, null
  br i1 %icmp.IntEQ.sysstr.nim.207.10, label %if.true.sysstr.nim.207.2, label %if.false.sysstr.nim.207.2

if.true.sysstr.nim.207.2:                         ; preds = %secAlloca
  %spec.store.select.i = tail call i64 @llvm.smax.i64(i64 %addlen, i64 7)
  %binop.Add.sysstr.nim.53.50.i = add nuw i64 %spec.store.select.i, 17
  %call.res.gc.nim.482.20.i.i = tail call ptr @rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 %binop.Add.sysstr.nim.53.50.i, ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q)
  %dot.f1.dot.f0.load.result.sysstr.nim.54.2.i = getelementptr inbounds %TGenericSeq, ptr %call.res.gc.nim.482.20.i.i, i64 0, i32 1
  store i64 %spec.store.select.i, ptr %dot.f1.dot.f0.load.result.sysstr.nim.54.2.i, align 8
  store i64 0, ptr %call.res.gc.nim.482.20.i.i, align 16
  br label %secReturn

if.false.sysstr.nim.207.2:                        ; preds = %secAlloca
  %load.dot.f0.dot.f0.load.arg.dest1 = load i64, ptr %dest, align 8
  %binop.Add.sysstr.nim.209.16 = add i64 %load.dot.f0.dot.f0.load.arg.dest1, %addlen
  %dot.f1.dot.f0.load.arg.dest3 = getelementptr inbounds %TGenericSeq, ptr %dest, i64 0, i32 1
  %load.dot.f1.dot.f0.load.arg.dest3 = load i64, ptr %dot.f1.dot.f0.load.arg.dest3, align 8
  %binop.And.sysstr.nim.209.33 = and i64 %load.dot.f1.dot.f0.load.arg.dest3, 4611686018427387903
  %icmp.IntSLE.sysstr.nim.209.25.not = icmp sgt i64 %binop.Add.sysstr.nim.209.16, %binop.And.sysstr.nim.209.33
  br i1 %icmp.IntSLE.sysstr.nim.209.25.not, label %if.false.sysstr.nim.207.25, label %secReturn

if.false.sysstr.nim.207.25:                       ; preds = %if.false.sysstr.nim.207.2
  %icmp.IntSLE.sysstr.nim.26.9.i = icmp eq i64 %binop.And.sysstr.nim.209.33, 0
  br i1 %icmp.IntSLE.sysstr.nim.26.9.i, label %resize__cOCDWr16YD4j3dBrbbH3yQ.exit, label %if.false.sysstr.nim.26.2.i

if.false.sysstr.nim.26.2.i:                       ; preds = %if.false.sysstr.nim.207.25
  %icmp.IntSLT.sysstr.nim.27.11.i = icmp ult i64 %binop.And.sysstr.nim.209.33, 65536
  br i1 %icmp.IntSLT.sysstr.nim.27.11.i, label %if.true.sysstr.nim.26.22.i, label %if.false.sysstr.nim.26.23.i

if.true.sysstr.nim.26.22.i:                       ; preds = %if.false.sysstr.nim.26.2.i
  %binop.Mul.sysstr.nim.27.33.i = shl nuw nsw i64 %binop.And.sysstr.nim.209.33, 1
  br label %resize__cOCDWr16YD4j3dBrbbH3yQ.exit

if.false.sysstr.nim.26.23.i:                      ; preds = %if.false.sysstr.nim.26.2.i
  %binop.Mul.sysstr.nim.28.21.i = mul nuw i64 %binop.And.sysstr.nim.209.33, 3
  %binop.SDiv.sysstr.nim.28.25.i = sdiv i64 %binop.Mul.sysstr.nim.28.21.i, 2
  br label %resize__cOCDWr16YD4j3dBrbbH3yQ.exit

resize__cOCDWr16YD4j3dBrbbH3yQ.exit:              ; preds = %if.false.sysstr.nim.207.25, %if.true.sysstr.nim.26.22.i, %if.false.sysstr.nim.26.23.i
  %result.0.i = phi i64 [ %binop.Mul.sysstr.nim.27.33.i, %if.true.sysstr.nim.26.22.i ], [ %binop.SDiv.sysstr.nim.28.25.i, %if.false.sysstr.nim.26.23.i ], [ 4, %if.false.sysstr.nim.207.25 ]
  %IntSGE.sysstr.nim.212.16 = tail call i64 @llvm.smax.i64(i64 %result.0.i, i64 %binop.Add.sysstr.nim.209.16)
  %spec.store.select.i16 = tail call i64 @llvm.smax.i64(i64 %IntSGE.sysstr.nim.212.16, i64 7)
  %binop.Add.sysstr.nim.53.50.i17 = add nuw i64 %spec.store.select.i16, 17
  %call.res.gc.nim.482.20.i.i18 = tail call ptr @rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 %binop.Add.sysstr.nim.53.50.i17, ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q)
  %dot.f1.dot.f0.load.result.sysstr.nim.54.2.i19 = getelementptr inbounds %TGenericSeq, ptr %call.res.gc.nim.482.20.i.i18, i64 0, i32 1
  %load.dot.f0.dot.f0.load.arg.dest10 = load i64, ptr %dest, align 8
  store i64 %load.dot.f0.dot.f0.load.arg.dest10, ptr %call.res.gc.nim.482.20.i.i18, align 16
  %dot.f1.load.result.sysstr.nim.216.19 = getelementptr inbounds %NimStringDesc, ptr %call.res.gc.nim.482.20.i.i18, i64 0, i32 1
  %dot.f1.load.arg.dest11 = getelementptr inbounds %NimStringDesc, ptr %dest, i64 0, i32 1
  %binop.Add.sysstr.nim.216.69 = add i64 %load.dot.f0.dot.f0.load.arg.dest10, 1
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %dot.f1.load.result.sysstr.nim.216.19, ptr nonnull align 1 %dot.f1.load.arg.dest11, i64 %binop.Add.sysstr.nim.216.69, i1 false)
  store i64 %IntSGE.sysstr.nim.212.16, ptr %dot.f1.dot.f0.load.result.sysstr.nim.54.2.i19, align 8
  br label %secReturn

secReturn:                                        ; preds = %if.false.sysstr.nim.207.2, %if.true.sysstr.nim.207.2, %resize__cOCDWr16YD4j3dBrbbH3yQ.exit
  %result.0 = phi ptr [ %call.res.gc.nim.482.20.i.i, %if.true.sysstr.nim.207.2 ], [ %call.res.gc.nim.482.20.i.i18, %resize__cOCDWr16YD4j3dBrbbH3yQ.exit ], [ %dest, %if.false.sysstr.nim.207.2 ]
  ret ptr %result.0
}

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite)
define internal fastcc void @appendString(ptr nocapture %dest, ptr readonly %src) unnamed_addr #16 {
secAlloca:
  %icmp.IntEQ.sysstr.nim.225.9.not = icmp eq ptr %src, null
  br i1 %icmp.IntEQ.sysstr.nim.225.9.not, label %secReturn, label %if.true.sysstr.nim.225.2

if.true.sysstr.nim.225.2:                         ; preds = %secAlloca
  %load.dot.f0.dot.f0.load.arg.dest1 = load i64, ptr %dest, align 8
  %bra.uarr.geparr.sysstr.nim.226.26 = getelementptr inbounds %NimStringDesc, ptr %dest, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1
  %dot.f1.load.arg.src2 = getelementptr inbounds %NimStringDesc, ptr %src, i64 0, i32 1
  %load.dot.f0.dot.f0.load.arg.src3 = load i64, ptr %src, align 8
  %binop.Add.sysstr.nim.226.63 = add i64 %load.dot.f0.dot.f0.load.arg.src3, 1
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %bra.uarr.geparr.sysstr.nim.226.26, ptr nonnull align 1 %dot.f1.load.arg.src2, i64 %binop.Add.sysstr.nim.226.63, i1 false)
  %load.dot.f0.dot.f0.load.arg.src5 = load i64, ptr %src, align 8
  %load.dot.f0.dot.f0.load.arg.dest4 = load i64, ptr %dest, align 8
  %inc.nv.sysstr.nim.227.7 = add i64 %load.dot.f0.dot.f0.load.arg.dest4, %load.dot.f0.dot.f0.load.arg.src5
  store i64 %inc.nv.sysstr.nim.227.7, ptr %dest, align 8
  br label %secReturn

secReturn:                                        ; preds = %if.true.sysstr.nim.225.2, %secAlloca
  ret void
}

define internal fastcc void @addInt__2bhkDH9aqL9crGzoL6X7p9adw(ptr %result, i64 %x) unnamed_addr #2 {
secAlloca:
  %tmp.i = alloca [24 x i8], align 1
  %icmp.IntSLT.digitsutils.nim.99.9 = icmp slt i64 %x, 0
  br i1 %icmp.IntSLT.digitsutils.nim.99.9, label %if.true.digitsutils.nim.99.4, label %if.end.digitsutils.nim.99.4

if.true.digitsutils.nim.99.4:                     ; preds = %secAlloca
  %binop.v = sub i64 0, %x
  %load.load.arg.result = load ptr, ptr %result, align 8
  %nilcheck.isnil.load.load.arg.result = icmp eq ptr %load.load.arg.result, null
  br i1 %nilcheck.isnil.load.load.arg.result, label %nilcheck.done.load.load.arg.result, label %nilcheck.notnil.load.load.arg.result

nilcheck.notnil.load.load.arg.result:             ; preds = %if.true.digitsutils.nim.99.4
  %load.seq.len.load.load.arg.result = load i64, ptr %load.load.arg.result, align 8
  br label %nilcheck.done.load.load.arg.result

nilcheck.done.load.load.arg.result:               ; preds = %nilcheck.notnil.load.load.arg.result, %if.true.digitsutils.nim.99.4
  %nilcheck.phi.load.load.arg.result = phi i64 [ 0, %if.true.digitsutils.nim.99.4 ], [ %load.seq.len.load.load.arg.result, %nilcheck.notnil.load.load.arg.result ]
  %binop.over.Add.load.baseX60gensym3_.digitsutils.nim.105.21 = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %nilcheck.phi.load.load.arg.result, i64 1)
  %binop.isover.load.baseX60gensym3_.digitsutils.nim.105.21 = extractvalue { i64, i1 } %binop.over.Add.load.baseX60gensym3_.digitsutils.nim.105.21, 1
  br i1 %binop.isover.load.baseX60gensym3_.digitsutils.nim.105.21, label %raise.call.binop.isover.load.baseX60gensym3_.digitsutils.nim.105.21, label %raise.cont.binop.isover.load.baseX60gensym3_.digitsutils.nim.105.21

raise.call.binop.isover.load.baseX60gensym3_.digitsutils.nim.105.21: ; preds = %nilcheck.done.load.load.arg.result
  tail call fastcc void @raiseOverflow()
  unreachable

raise.cont.binop.isover.load.baseX60gensym3_.digitsutils.nim.105.21: ; preds = %nilcheck.done.load.load.arg.result
  %binop.v.load.baseX60gensym3_.digitsutils.nim.105.21 = extractvalue { i64, i1 } %binop.over.Add.load.baseX60gensym3_.digitsutils.nim.105.21, 0
  %rng.b = icmp slt i64 %binop.v.load.baseX60gensym3_.digitsutils.nim.105.21, 0
  br i1 %rng.b, label %raise.call.rng.or, label %raise.cont.rng.or

raise.call.rng.or:                                ; preds = %raise.cont.binop.isover.load.baseX60gensym3_.digitsutils.nim.105.21
  tail call fastcc void @raiseRangeErrorI(i64 %binop.v.load.baseX60gensym3_.digitsutils.nim.105.21)
  unreachable

raise.cont.rng.or:                                ; preds = %raise.cont.binop.isover.load.baseX60gensym3_.digitsutils.nim.105.21
  %call.cp.setLengthStr = tail call fastcc ptr @setLengthStr(ptr %load.load.arg.result, i64 %binop.v.load.baseX60gensym3_.digitsutils.nim.105.21)
  tail call fastcc void @unsureAsgnRef(ptr nonnull %result, ptr %call.cp.setLengthStr)
  %load.load.arg.result5 = load ptr, ptr %result, align 8
  %nilcheck.isnil.load.load.arg.result5 = icmp eq ptr %load.load.arg.result5, null
  br i1 %nilcheck.isnil.load.load.arg.result5, label %nilcheck.done.load.load.arg.result5, label %nilcheck.notnil.load.load.arg.result5

nilcheck.notnil.load.load.arg.result5:            ; preds = %raise.cont.rng.or
  %load.seq.len.load.load.arg.result5 = load i64, ptr %load.load.arg.result5, align 8
  br label %nilcheck.done.load.load.arg.result5

nilcheck.done.load.load.arg.result5:              ; preds = %nilcheck.notnil.load.load.arg.result5, %raise.cont.rng.or
  %nilcheck.phi.load.load.arg.result5 = phi i64 [ 0, %raise.cont.rng.or ], [ %load.seq.len.load.load.arg.result5, %nilcheck.notnil.load.load.arg.result5 ]
  %bes.bounds.not = icmp ult i64 %nilcheck.phi.load.load.arg.result, %nilcheck.phi.load.load.arg.result5
  br i1 %bes.bounds.not, label %raise.cont.bes.bounds, label %raise.call.bes.bounds

raise.call.bes.bounds:                            ; preds = %nilcheck.done.load.load.arg.result5
  %0 = add i64 %nilcheck.phi.load.load.arg.result5, -1
  tail call fastcc void @raiseIndexError2(i64 %nilcheck.phi.load.load.arg.result, i64 %0)
  unreachable

raise.cont.bes.bounds:                            ; preds = %nilcheck.done.load.load.arg.result5
  %seq.data.load.load.arg.result5 = getelementptr inbounds %NimStringDesc, ptr %load.load.arg.result5, i64 0, i32 1, i64 %nilcheck.phi.load.load.arg.result
  store i8 45, ptr %seq.data.load.load.arg.result5, align 1
  br label %if.end.digitsutils.nim.99.4

if.end.digitsutils.nim.99.4:                      ; preds = %secAlloca, %raise.cont.bes.bounds
  %numX60gensym3_.1 = phi i64 [ %binop.v, %raise.cont.bes.bounds ], [ %x, %secAlloca ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %tmp.i)
  %icmp.IntULE.digitsutils.nim.63.12.i21 = icmp ugt i64 %numX60gensym3_.1, 99
  br i1 %icmp.IntULE.digitsutils.nim.63.12.i21, label %while.true.digitsutils.nim.63.2.i, label %while.false.digitsutils.nim.63.2.i.thread

while.true.digitsutils.nim.63.2.i:                ; preds = %if.end.digitsutils.nim.99.4, %raise.cont.bes.bounds3.i
  %num.0.i23 = phi i64 [ %binop.UDiv.digitsutils.nim.65.14.i, %raise.cont.bes.bounds3.i ], [ %numX60gensym3_.1, %if.end.digitsutils.nim.99.4 ]
  %next.0.i22 = phi i64 [ %binop.v.load.next.i, %raise.cont.bes.bounds3.i ], [ 23, %if.end.digitsutils.nim.99.4 ]
  %binop.UDiv.digitsutils.nim.65.14.i = udiv i64 %num.0.i23, 100
  %binop.Mul.digitsutils.nim.66.33.neg.i = mul i64 %binop.UDiv.digitsutils.nim.65.14.i, 9223372036854775708
  %binop.Sub.digitsutils.nim.66.27.i = add i64 %binop.Mul.digitsutils.nim.66.33.neg.i, %num.0.i23
  %binop.Shl.digitsutils.nim.66.43.i = shl i64 %binop.Sub.digitsutils.nim.66.27.i, 1
  %bes.bounds.i = icmp ugt i64 %next.0.i22, 23
  br i1 %bes.bounds.i, label %raise.call.bes.bounds.i, label %raise.cont.bes.bounds.i

raise.call.bes.bounds.i:                          ; preds = %while.true.digitsutils.nim.63.2.i
  tail call fastcc void @raiseIndexError2(i64 -1, i64 24)
  unreachable

raise.cont.bes.bounds.i:                          ; preds = %while.true.digitsutils.nim.63.2.i
  %binop.Add.digitsutils.nim.67.32.i = or i64 %binop.Shl.digitsutils.nim.66.43.i, 1
  %bes.bounds1.i = icmp ugt i64 %binop.Add.digitsutils.nim.67.32.i, 199
  br i1 %bes.bounds1.i, label %raise.call.bes.bounds1.i, label %raise.cont.bes.bounds3.i

raise.call.bes.bounds1.i:                         ; preds = %raise.cont.bes.bounds.i
  tail call fastcc void @raiseIndexError2(i64 %binop.Add.digitsutils.nim.67.32.i, i64 200)
  unreachable

raise.cont.bes.bounds3.i:                         ; preds = %raise.cont.bes.bounds.i
  %bra.arr.geparr.digitsutils.nim.67.7.i = getelementptr inbounds [24 x i8], ptr %tmp.i, i64 0, i64 %next.0.i22
  %bra.arr.geparr.digitsutils.nim.67.25.i = getelementptr inbounds [200 x i8], ptr @digits100__cG5rbZgSpVFbRzcBsjlctg, i64 0, i64 %binop.Add.digitsutils.nim.67.32.i
  %load.bra.arr.geparr.digitsutils.nim.67.25.i = load i8, ptr %bra.arr.geparr.digitsutils.nim.67.25.i, align 1
  store i8 %load.bra.arr.geparr.digitsutils.nim.67.25.i, ptr %bra.arr.geparr.digitsutils.nim.67.7.i, align 1
  %binop.v.load.next.digitsutils.nim.68.8.i = add nsw i64 %next.0.i22, -1
  %bra.arr.geparr.digitsutils.nim.68.7.i = getelementptr inbounds [24 x i8], ptr %tmp.i, i64 0, i64 %binop.v.load.next.digitsutils.nim.68.8.i
  %bra.arr.geparr.digitsutils.nim.68.29.i = getelementptr inbounds [200 x i8], ptr @digits100__cG5rbZgSpVFbRzcBsjlctg, i64 0, i64 %binop.Shl.digitsutils.nim.66.43.i
  %load.bra.arr.geparr.digitsutils.nim.68.29.i = load i8, ptr %bra.arr.geparr.digitsutils.nim.68.29.i, align 2
  store i8 %load.bra.arr.geparr.digitsutils.nim.68.29.i, ptr %bra.arr.geparr.digitsutils.nim.68.7.i, align 1
  %binop.v.load.next.i = add nsw i64 %next.0.i22, -2
  %icmp.IntULE.digitsutils.nim.63.12.i = icmp ugt i64 %num.0.i23, 9999
  br i1 %icmp.IntULE.digitsutils.nim.63.12.i, label %while.true.digitsutils.nim.63.2.i, label %while.false.digitsutils.nim.63.2.i

while.false.digitsutils.nim.63.2.i:               ; preds = %raise.cont.bes.bounds3.i
  %icmp.IntULT.digitsutils.nim.72.9.i = icmp ult i64 %num.0.i23, 1000
  %bes.bounds4.i = icmp ugt i64 %binop.v.load.next.i, 23
  br i1 %icmp.IntULT.digitsutils.nim.72.9.i, label %if.true.digitsutils.nim.72.2.i, label %if.false.digitsutils.nim.72.2.i

while.false.digitsutils.nim.63.2.i.thread:        ; preds = %if.end.digitsutils.nim.99.4
  %icmp.IntULT.digitsutils.nim.72.9.i35 = icmp ult i64 %numX60gensym3_.1, 10
  br i1 %icmp.IntULT.digitsutils.nim.72.9.i35, label %raise.cont.rng.ugt.i, label %raise.cont.bes.bounds7.i.thread

raise.cont.bes.bounds7.i.thread:                  ; preds = %while.false.digitsutils.nim.63.2.i.thread
  %binop.Mul.digitsutils.nim.75.20.i47 = shl nuw nsw i64 %numX60gensym3_.1, 1
  %binop.Add.digitsutils.nim.76.32.i53 = or i64 %binop.Mul.digitsutils.nim.75.20.i47, 1
  %bra.arr.geparr.digitsutils.nim.76.7.i54 = getelementptr inbounds [24 x i8], ptr %tmp.i, i64 0, i64 23
  %bra.arr.geparr.digitsutils.nim.76.25.i55 = getelementptr inbounds [200 x i8], ptr @digits100__cG5rbZgSpVFbRzcBsjlctg, i64 0, i64 %binop.Add.digitsutils.nim.76.32.i53
  %load.bra.arr.geparr.digitsutils.nim.76.25.i56 = load i8, ptr %bra.arr.geparr.digitsutils.nim.76.25.i55, align 1
  store i8 %load.bra.arr.geparr.digitsutils.nim.76.25.i56, ptr %bra.arr.geparr.digitsutils.nim.76.7.i54, align 1
  br label %raise.cont.bes.bounds9.i

if.true.digitsutils.nim.72.2.i:                   ; preds = %while.false.digitsutils.nim.63.2.i
  br i1 %bes.bounds4.i, label %raise.call.bes.bounds4.i, label %raise.cont.rng.ugt.i

raise.call.bes.bounds4.i:                         ; preds = %if.true.digitsutils.nim.72.2.i
  tail call fastcc void @raiseIndexError2(i64 %binop.v.load.next.i, i64 24)
  unreachable

raise.cont.rng.ugt.i:                             ; preds = %while.false.digitsutils.nim.63.2.i.thread, %if.true.digitsutils.nim.72.2.i
  %next.0.i.lcssa3644 = phi i64 [ %binop.v.load.next.i, %if.true.digitsutils.nim.72.2.i ], [ 23, %while.false.digitsutils.nim.63.2.i.thread ]
  %num.0.i.lcssa3843 = phi i64 [ %binop.UDiv.digitsutils.nim.65.14.i, %if.true.digitsutils.nim.72.2.i ], [ %numX60gensym3_.1, %while.false.digitsutils.nim.63.2.i.thread ]
  %bra.arr.geparr.digitsutils.nim.73.7.i = getelementptr inbounds [24 x i8], ptr %tmp.i, i64 0, i64 %next.0.i.lcssa3644
  %1 = trunc i64 %num.0.i.lcssa3843 to i8
  %chr.t.digitsutils.nim.73.19.i = add nuw nsw i8 %1, 48
  store i8 %chr.t.digitsutils.nim.73.19.i, ptr %bra.arr.geparr.digitsutils.nim.73.7.i, align 1
  br label %raise.cont.binop.isover.i

if.false.digitsutils.nim.72.2.i:                  ; preds = %while.false.digitsutils.nim.63.2.i
  br i1 %bes.bounds4.i, label %raise.call.bes.bounds6.i, label %raise.cont.bes.bounds7.i

raise.call.bes.bounds6.i:                         ; preds = %if.false.digitsutils.nim.72.2.i
  tail call fastcc void @raiseIndexError2(i64 %binop.v.load.next.i, i64 24)
  unreachable

raise.cont.bes.bounds7.i:                         ; preds = %if.false.digitsutils.nim.72.2.i
  %binop.Mul.digitsutils.nim.75.20.i = shl nuw nsw i64 %binop.UDiv.digitsutils.nim.65.14.i, 1
  %binop.Add.digitsutils.nim.76.32.i = or i64 %binop.Mul.digitsutils.nim.75.20.i, 1
  %bra.arr.geparr.digitsutils.nim.76.7.i = getelementptr inbounds [24 x i8], ptr %tmp.i, i64 0, i64 %binop.v.load.next.i
  %bra.arr.geparr.digitsutils.nim.76.25.i = getelementptr inbounds [200 x i8], ptr @digits100__cG5rbZgSpVFbRzcBsjlctg, i64 0, i64 %binop.Add.digitsutils.nim.76.32.i
  %load.bra.arr.geparr.digitsutils.nim.76.25.i = load i8, ptr %bra.arr.geparr.digitsutils.nim.76.25.i, align 1
  store i8 %load.bra.arr.geparr.digitsutils.nim.76.25.i, ptr %bra.arr.geparr.digitsutils.nim.76.7.i, align 1
  %binop.v.load.next.digitsutils.nim.77.8.i = add nsw i64 %next.0.i22, -3
  %bes.bounds8.i = icmp ugt i64 %binop.v.load.next.digitsutils.nim.77.8.i, 23
  br i1 %bes.bounds8.i, label %raise.call.bes.bounds8.i, label %raise.cont.bes.bounds9.i

raise.call.bes.bounds8.i:                         ; preds = %raise.cont.bes.bounds7.i
  tail call fastcc void @raiseIndexError2(i64 -1, i64 24)
  unreachable

raise.cont.bes.bounds9.i:                         ; preds = %raise.cont.bes.bounds7.i.thread, %raise.cont.bes.bounds7.i
  %binop.v.load.next.digitsutils.nim.77.8.i60 = phi i64 [ 22, %raise.cont.bes.bounds7.i.thread ], [ %binop.v.load.next.digitsutils.nim.77.8.i, %raise.cont.bes.bounds7.i ]
  %binop.Mul.digitsutils.nim.75.20.i5059 = phi i64 [ %binop.Mul.digitsutils.nim.75.20.i47, %raise.cont.bes.bounds7.i.thread ], [ %binop.Mul.digitsutils.nim.75.20.i, %raise.cont.bes.bounds7.i ]
  %bra.arr.geparr.digitsutils.nim.77.7.i = getelementptr inbounds [24 x i8], ptr %tmp.i, i64 0, i64 %binop.v.load.next.digitsutils.nim.77.8.i60
  %bra.arr.geparr.digitsutils.nim.77.29.i = getelementptr inbounds [200 x i8], ptr @digits100__cG5rbZgSpVFbRzcBsjlctg, i64 0, i64 %binop.Mul.digitsutils.nim.75.20.i5059
  %load.bra.arr.geparr.digitsutils.nim.77.29.i = load i8, ptr %bra.arr.geparr.digitsutils.nim.77.29.i, align 2
  store i8 %load.bra.arr.geparr.digitsutils.nim.77.29.i, ptr %bra.arr.geparr.digitsutils.nim.77.7.i, align 1
  br label %raise.cont.binop.isover.i

raise.cont.binop.isover.i:                        ; preds = %raise.cont.rng.ugt.i, %raise.cont.bes.bounds9.i
  %next.1.i = phi i64 [ %next.0.i.lcssa3644, %raise.cont.rng.ugt.i ], [ %binop.v.load.next.digitsutils.nim.77.8.i60, %raise.cont.bes.bounds9.i ]
  %binop.over.Sub.i13 = sub nuw nsw i64 24, %next.1.i
  %load.load.arg.result.i.i = load ptr, ptr %result, align 8
  %nilcheck.isnil.load.load.arg.result.i.i = icmp eq ptr %load.load.arg.result.i.i, null
  br i1 %nilcheck.isnil.load.load.arg.result.i.i, label %nilcheck.done.load.load.arg.result.i.i, label %nilcheck.notnil.load.load.arg.result.i.i

nilcheck.notnil.load.load.arg.result.i.i:         ; preds = %raise.cont.binop.isover.i
  %load.seq.len.load.load.arg.result.i.i = load i64, ptr %load.load.arg.result.i.i, align 8
  br label %nilcheck.done.load.load.arg.result.i.i

nilcheck.done.load.load.arg.result.i.i:           ; preds = %nilcheck.notnil.load.load.arg.result.i.i, %raise.cont.binop.isover.i
  %nilcheck.phi.load.load.arg.result.i.i = phi i64 [ 0, %raise.cont.binop.isover.i ], [ %load.seq.len.load.load.arg.result.i.i, %nilcheck.notnil.load.load.arg.result.i.i ]
  %binop.over.Add.load.old.digitsutils.nim.44.16.i.i = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %nilcheck.phi.load.load.arg.result.i.i, i64 %binop.over.Sub.i13)
  %binop.isover.load.old.digitsutils.nim.44.16.i.i = extractvalue { i64, i1 } %binop.over.Add.load.old.digitsutils.nim.44.16.i.i, 1
  br i1 %binop.isover.load.old.digitsutils.nim.44.16.i.i, label %raise.call.binop.isover.load.old.digitsutils.nim.44.16.i.i, label %raise.cont.binop.isover.load.old.digitsutils.nim.44.16.i.i

raise.call.binop.isover.load.old.digitsutils.nim.44.16.i.i: ; preds = %nilcheck.done.load.load.arg.result.i.i
  tail call fastcc void @raiseOverflow()
  unreachable

raise.cont.binop.isover.load.old.digitsutils.nim.44.16.i.i: ; preds = %nilcheck.done.load.load.arg.result.i.i
  %binop.v.load.old.digitsutils.nim.44.16.i.i = extractvalue { i64, i1 } %binop.over.Add.load.old.digitsutils.nim.44.16.i.i, 0
  %rng.b.i.i = icmp slt i64 %binop.v.load.old.digitsutils.nim.44.16.i.i, 0
  br i1 %rng.b.i.i, label %raise.call.rng.or.i.i, label %raise.cont.rng.or.i.i

raise.call.rng.or.i.i:                            ; preds = %raise.cont.binop.isover.load.old.digitsutils.nim.44.16.i.i
  tail call fastcc void @raiseRangeErrorI(i64 %binop.v.load.old.digitsutils.nim.44.16.i.i)
  unreachable

raise.cont.rng.or.i.i:                            ; preds = %raise.cont.binop.isover.load.old.digitsutils.nim.44.16.i.i
  %call.cp.setLengthStr.i.i = tail call fastcc ptr @setLengthStr(ptr %load.load.arg.result.i.i, i64 %binop.v.load.old.digitsutils.nim.44.16.i.i)
  tail call fastcc void @unsureAsgnRef(ptr nonnull %result, ptr %call.cp.setLengthStr.i.i)
  %load.load.arg.result2.i.i = load ptr, ptr %result, align 8
  %nilcheck.isnil.load.load.arg.result2.i.i = icmp eq ptr %load.load.arg.result2.i.i, null
  br i1 %nilcheck.isnil.load.load.arg.result2.i.i, label %nilcheck.done.load.load.arg.result2.i.i, label %nilcheck.notnil.load.load.arg.result2.i.i

nilcheck.notnil.load.load.arg.result2.i.i:        ; preds = %raise.cont.rng.or.i.i
  %load.seq.len.load.load.arg.result2.i.i = load i64, ptr %load.load.arg.result2.i.i, align 8
  br label %nilcheck.done.load.load.arg.result2.i.i

nilcheck.done.load.load.arg.result2.i.i:          ; preds = %nilcheck.notnil.load.load.arg.result2.i.i, %raise.cont.rng.or.i.i
  %nilcheck.phi.load.load.arg.result2.i.i = phi i64 [ 0, %raise.cont.rng.or.i.i ], [ %load.seq.len.load.load.arg.result2.i.i, %nilcheck.notnil.load.load.arg.result2.i.i ]
  %bes.bounds.not.i.i = icmp ult i64 %nilcheck.phi.load.load.arg.result.i.i, %nilcheck.phi.load.load.arg.result2.i.i
  br i1 %bes.bounds.not.i.i, label %addIntImpl__8U9b9blR3UDJDQpL9cai0CI4g.exit, label %raise.call.bes.bounds.i.i

raise.call.bes.bounds.i.i:                        ; preds = %nilcheck.done.load.load.arg.result2.i.i
  %2 = add i64 %nilcheck.phi.load.load.arg.result2.i.i, -1
  tail call fastcc void @raiseIndexError2(i64 %nilcheck.phi.load.load.arg.result.i.i, i64 %2)
  unreachable

addIntImpl__8U9b9blR3UDJDQpL9cai0CI4g.exit:       ; preds = %nilcheck.done.load.load.arg.result2.i.i
  %bra.arr.geparr.digitsutils.nim.52.35.i.i = getelementptr inbounds [24 x i8], ptr %tmp.i, i64 0, i64 %next.1.i
  %seq.data.load.load.arg.result2.i.i = getelementptr inbounds %NimStringDesc, ptr %load.load.arg.result2.i.i, i64 0, i32 1, i64 %nilcheck.phi.load.load.arg.result.i.i
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %seq.data.load.load.arg.result2.i.i, ptr nonnull align 1 %bra.arr.geparr.digitsutils.nim.52.35.i.i, i64 %binop.over.Sub.i13, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %tmp.i)
  ret void
}

; Function Attrs: cold noinline noreturn
define internal fastcc void @raiseRangeErrorI(i64 %i) unnamed_addr #10 {
secAlloca:
  %result.i6 = alloca ptr, align 8
  %result.i4 = alloca ptr, align 8
  %result.i = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i)
  store ptr null, ptr %result.i, align 8
  call fastcc void @addInt__2bhkDH9aqL9crGzoL6X7p9adw(ptr nonnull %result.i, i64 %i)
  %load.result.i = load ptr, ptr %result.i, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i)
  %nilcheck.isnil.call.res.chcks.nim.48.51 = icmp eq ptr %load.result.i, null
  br i1 %nilcheck.isnil.call.res.chcks.nim.48.51, label %nilcheck.done.call.res.chcks.nim.48.51, label %nilcheck.notnil.call.res.chcks.nim.48.51

nilcheck.notnil.call.res.chcks.nim.48.51:         ; preds = %secAlloca
  %load.seq.len.call.res.chcks.nim.48.51 = load i64, ptr %load.result.i, align 8
  %0 = add i64 %load.seq.len.call.res.chcks.nim.48.51, 31
  br label %nilcheck.done.call.res.chcks.nim.48.51

nilcheck.done.call.res.chcks.nim.48.51:           ; preds = %nilcheck.notnil.call.res.chcks.nim.48.51, %secAlloca
  %nilcheck.phi.call.res.chcks.nim.48.51 = phi i64 [ 31, %secAlloca ], [ %0, %nilcheck.notnil.call.res.chcks.nim.48.51 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i4)
  store ptr null, ptr %result.i4, align 8
  call fastcc void @addInt__2bhkDH9aqL9crGzoL6X7p9adw(ptr nonnull %result.i4, i64 0)
  %load.result.i5 = load ptr, ptr %result.i4, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i4)
  %nilcheck.isnil.call.res.chcks.nim.48.68 = icmp eq ptr %load.result.i5, null
  br i1 %nilcheck.isnil.call.res.chcks.nim.48.68, label %nilcheck.done.call.res.chcks.nim.48.68, label %nilcheck.notnil.call.res.chcks.nim.48.68

nilcheck.notnil.call.res.chcks.nim.48.68:         ; preds = %nilcheck.done.call.res.chcks.nim.48.51
  %load.seq.len.call.res.chcks.nim.48.68 = load i64, ptr %load.result.i5, align 8
  br label %nilcheck.done.call.res.chcks.nim.48.68

nilcheck.done.call.res.chcks.nim.48.68:           ; preds = %nilcheck.notnil.call.res.chcks.nim.48.68, %nilcheck.done.call.res.chcks.nim.48.51
  %nilcheck.phi.call.res.chcks.nim.48.68 = phi i64 [ 0, %nilcheck.done.call.res.chcks.nim.48.51 ], [ %load.seq.len.call.res.chcks.nim.48.68, %nilcheck.notnil.call.res.chcks.nim.48.68 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i6)
  store ptr null, ptr %result.i6, align 8
  call fastcc void @addInt__2bhkDH9aqL9crGzoL6X7p9adw(ptr nonnull %result.i6, i64 9223372036854775807)
  %load.result.i7 = load ptr, ptr %result.i6, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i6)
  %nilcheck.isnil.call.res.chcks.nim.48.82 = icmp eq ptr %load.result.i7, null
  br i1 %nilcheck.isnil.call.res.chcks.nim.48.82, label %nilcheck.done.call.res.chcks.nim.48.82, label %nilcheck.notnil.call.res.chcks.nim.48.82

nilcheck.notnil.call.res.chcks.nim.48.82:         ; preds = %nilcheck.done.call.res.chcks.nim.48.68
  %load.seq.len.call.res.chcks.nim.48.82 = load i64, ptr %load.result.i7, align 8
  br label %nilcheck.done.call.res.chcks.nim.48.82

nilcheck.done.call.res.chcks.nim.48.82:           ; preds = %nilcheck.notnil.call.res.chcks.nim.48.82, %nilcheck.done.call.res.chcks.nim.48.68
  %nilcheck.phi.call.res.chcks.nim.48.82 = phi i64 [ 0, %nilcheck.done.call.res.chcks.nim.48.68 ], [ %load.seq.len.call.res.chcks.nim.48.82, %nilcheck.notnil.call.res.chcks.nim.48.82 ]
  %constrstr.tgtlen.chcks.nim.48.802 = add i64 %nilcheck.phi.call.res.chcks.nim.48.51, %nilcheck.phi.call.res.chcks.nim.48.68
  %constrstr.tgtlen.chcks.nim.48.803 = add i64 %constrstr.tgtlen.chcks.nim.48.802, %nilcheck.phi.call.res.chcks.nim.48.82
  %call.cp.rawNewString = call fastcc ptr @rawNewString(i64 %constrstr.tgtlen.chcks.nim.48.803)
  call fastcc void @appendString(ptr nonnull %call.cp.rawNewString, ptr nonnull @.str.value_out_of_ran..)
  call fastcc void @appendString(ptr nonnull %call.cp.rawNewString, ptr %load.result.i)
  call fastcc void @appendString(ptr nonnull %call.cp.rawNewString, ptr nonnull @.str._notin_)
  call fastcc void @appendString(ptr nonnull %call.cp.rawNewString, ptr %load.result.i5)
  call fastcc void @appendString(ptr nonnull %call.cp.rawNewString, ptr nonnull @.str.____)
  call fastcc void @appendString(ptr nonnull %call.cp.rawNewString, ptr %load.result.i7)
  call fastcc void @sysFatal__Kx89alMoFPpWrEL9bx2cyJVw(ptr nonnull %call.cp.rawNewString)
  unreachable
}

; Function Attrs: cold noreturn
define internal fastcc void @sysFatal__Kx89alMoFPpWrEL9bx2cyJVw(ptr %message) unnamed_addr #11 {
nilcheck.done.load.objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.43:
  %call.cp.newObj = tail call dereferenceable(48) ptr @newObj(ptr nonnull @.typeinfo.tyRef__X2BdGhiRFy4qfb2g9bsE9c2A, i64 48)
  store ptr @.typeinfo.tyObject_RangeDefect__PmGA4FtqvLVqPW54hgxtxg, ptr %call.cp.newObj, align 16
  %name.load.objconstr.fatal.nim.54.4 = getelementptr inbounds %Exception, ptr %call.cp.newObj, i64 0, i32 2
  store ptr @.cstr.RangeDefect, ptr %name.load.objconstr.fatal.nim.54.4, align 16
  %objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.43 = getelementptr inbounds %Exception, ptr %call.cp.newObj, i64 0, i32 3
  %call.cp.copyStringRC1 = tail call fastcc ptr @copyStringRC1(ptr %message)
  store ptr %call.cp.copyStringRC1, ptr %objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.43, align 8
  tail call fastcc void @nlvmRaise(ptr nonnull %call.cp.newObj)
  unreachable
}

define internal void @Marker_tyRef__X2BdGhiRFy4qfb2g9bsE9c2A(ptr nocapture readonly %v, i64 %op) {
secAlloca:
  %mk.exceptions.nim.39.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 1
  %load.mk.exceptions.nim.39.4 = load ptr, ptr %mk.exceptions.nim.39.4, align 8
  %toe.t.load.arg.op.i = trunc i64 %op to i8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.39.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.43.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 3
  %load.mk.exceptions.nim.43.4 = load ptr, ptr %mk.exceptions.nim.43.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.43.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.49.6 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 4
  %load.mk.exceptions.nim.49.6 = load ptr, ptr %mk.exceptions.nim.49.6, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.49.6, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.50.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 5
  %load.mk.exceptions.nim.50.4 = load ptr, ptr %mk.exceptions.nim.50.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.50.4, i8 %toe.t.load.arg.op.i)
  ret void
}

define internal fastcc ptr @setLengthStr(ptr %s, i64 %newLen) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.sysstr.nim.236.7 = icmp eq ptr %s, null
  br i1 %icmp.IntEQ.sysstr.nim.236.7, label %if.true.sysstr.nim.236.2, label %if.false.sysstr.nim.236.2

if.true.sysstr.nim.236.2:                         ; preds = %secAlloca
  %spec.store.select.i.i = tail call i64 @llvm.smax.i64(i64 %newLen, i64 7)
  %binop.Add.sysstr.nim.62.44.i.i = add nuw i64 %spec.store.select.i.i, 17
  %call.res.sysstr.nim.45.26.i.i = tail call ptr @newObj(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 %binop.Add.sysstr.nim.62.44.i.i)
  %dot.f1.dot.f0.load.result.sysstr.nim.63.2.i.i = getelementptr inbounds %TGenericSeq, ptr %call.res.sysstr.nim.45.26.i.i, i64 0, i32 1
  store i64 %spec.store.select.i.i, ptr %dot.f1.dot.f0.load.result.sysstr.nim.63.2.i.i, align 8
  store i64 %newLen, ptr %call.res.sysstr.nim.45.26.i.i, align 16
  br label %if.end.sysstr.nim.236.2

if.false.sysstr.nim.236.2:                        ; preds = %secAlloca
  %dot.f1.dot.f0.load.arg.s2 = getelementptr inbounds %TGenericSeq, ptr %s, i64 0, i32 1
  %load.dot.f1.dot.f0.load.arg.s2 = load i64, ptr %dot.f1.dot.f0.load.arg.s2, align 8
  %binop.And.sysstr.nim.238.14 = and i64 %load.dot.f1.dot.f0.load.arg.s2, 4611686018427387903
  %icmp.IntSLE.sysstr.nim.238.9.not = icmp slt i64 %binop.And.sysstr.nim.238.14, %newLen
  br i1 %icmp.IntSLE.sysstr.nim.238.9.not, label %if.false.sysstr.nim.236.24, label %if.end.sysstr.nim.236.2

if.false.sysstr.nim.236.24:                       ; preds = %if.false.sysstr.nim.236.2
  %icmp.IntSLE.sysstr.nim.26.9.i = icmp eq i64 %binop.And.sysstr.nim.238.14, 0
  br i1 %icmp.IntSLE.sysstr.nim.26.9.i, label %resize__cOCDWr16YD4j3dBrbbH3yQ.exit, label %if.false.sysstr.nim.26.2.i

if.false.sysstr.nim.26.2.i:                       ; preds = %if.false.sysstr.nim.236.24
  %icmp.IntSLT.sysstr.nim.27.11.i = icmp ult i64 %binop.And.sysstr.nim.238.14, 65536
  br i1 %icmp.IntSLT.sysstr.nim.27.11.i, label %if.true.sysstr.nim.26.22.i, label %if.false.sysstr.nim.26.23.i

if.true.sysstr.nim.26.22.i:                       ; preds = %if.false.sysstr.nim.26.2.i
  %binop.Mul.sysstr.nim.27.33.i = shl nuw nsw i64 %binop.And.sysstr.nim.238.14, 1
  br label %resize__cOCDWr16YD4j3dBrbbH3yQ.exit

if.false.sysstr.nim.26.23.i:                      ; preds = %if.false.sysstr.nim.26.2.i
  %binop.Mul.sysstr.nim.28.21.i = mul nuw i64 %binop.And.sysstr.nim.238.14, 3
  %binop.SDiv.sysstr.nim.28.25.i = sdiv i64 %binop.Mul.sysstr.nim.28.21.i, 2
  br label %resize__cOCDWr16YD4j3dBrbbH3yQ.exit

resize__cOCDWr16YD4j3dBrbbH3yQ.exit:              ; preds = %if.false.sysstr.nim.236.24, %if.true.sysstr.nim.26.22.i, %if.false.sysstr.nim.26.23.i
  %result.0.i = phi i64 [ %binop.Mul.sysstr.nim.27.33.i, %if.true.sysstr.nim.26.22.i ], [ %binop.SDiv.sysstr.nim.28.25.i, %if.false.sysstr.nim.26.23.i ], [ 4, %if.false.sysstr.nim.236.24 ]
  %IntSGE.sysstr.nim.241.16 = tail call i64 @llvm.smax.i64(i64 %result.0.i, i64 %newLen)
  %spec.store.select.i = tail call i64 @llvm.smax.i64(i64 %IntSGE.sysstr.nim.241.16, i64 7)
  %binop.Add.sysstr.nim.53.50.i = add nuw i64 %spec.store.select.i, 17
  %call.res.gc.nim.482.20.i.i = tail call ptr @rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 %binop.Add.sysstr.nim.53.50.i, ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q)
  %dot.f1.dot.f0.load.result.sysstr.nim.54.2.i = getelementptr inbounds %TGenericSeq, ptr %call.res.gc.nim.482.20.i.i, i64 0, i32 1
  %load.dot.f0.dot.f0.load.arg.s8 = load i64, ptr %s, align 8
  store i64 %load.dot.f0.dot.f0.load.arg.s8, ptr %call.res.gc.nim.482.20.i.i, align 16
  %dot.f1.load.result.sysstr.nim.245.19 = getelementptr inbounds %NimStringDesc, ptr %call.res.gc.nim.482.20.i.i, i64 0, i32 1
  %dot.f1.load.arg.s9 = getelementptr inbounds %NimStringDesc, ptr %s, i64 0, i32 1
  %binop.Add.sysstr.nim.245.63 = add i64 %load.dot.f0.dot.f0.load.arg.s8, 1
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %dot.f1.load.result.sysstr.nim.245.19, ptr nonnull align 1 %dot.f1.load.arg.s9, i64 %binop.Add.sysstr.nim.245.63, i1 false)
  %bra.uarr.geparr.sysstr.nim.246.30 = getelementptr inbounds %NimStringDesc, ptr %call.res.gc.nim.482.20.i.i, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.s8
  %binop.Sub.sysstr.nim.246.46 = sub i64 %newLen, %load.dot.f0.dot.f0.load.arg.s8
  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %bra.uarr.geparr.sysstr.nim.246.30, i8 0, i64 %binop.Sub.sysstr.nim.246.46, i1 false)
  store i64 %IntSGE.sysstr.nim.241.16, ptr %dot.f1.dot.f0.load.result.sysstr.nim.54.2.i, align 8
  br label %if.end.sysstr.nim.236.2

if.end.sysstr.nim.236.2:                          ; preds = %if.false.sysstr.nim.236.2, %resize__cOCDWr16YD4j3dBrbbH3yQ.exit, %if.true.sysstr.nim.236.2
  %result.0 = phi ptr [ %call.res.sysstr.nim.45.26.i.i, %if.true.sysstr.nim.236.2 ], [ %call.res.gc.nim.482.20.i.i, %resize__cOCDWr16YD4j3dBrbbH3yQ.exit ], [ %s, %if.false.sysstr.nim.236.2 ]
  store i64 %newLen, ptr %result.0, align 8
  %bra.uarr.geparr.sysstr.nim.251.13 = getelementptr inbounds %NimStringDesc, ptr %result.0, i64 0, i32 1, i64 %newLen
  store i8 0, ptr %bra.uarr.geparr.sysstr.nim.251.13, align 1
  ret ptr %result.0
}

; Function Attrs: cold noinline noreturn
define internal fastcc void @raiseIndexError2(i64 %i, i64 %n) unnamed_addr #10 {
secAlloca:
  %result.i5 = alloca ptr, align 8
  %result.i = alloca ptr, align 8
  %icmp.IntSLT.indexerrors.nim.8.9 = icmp slt i64 %n, 0
  br i1 %icmp.IntSLT.indexerrors.nim.8.9, label %ifx.true.chcks.nim.26.24, label %ifx.false.chcks.nim.26.24

ifx.true.chcks.nim.26.24:                         ; preds = %secAlloca
  %call.cp.copyString = tail call fastcc ptr @copyString(ptr nonnull @.str.index_out_of_bou..)
  br label %ifx.end.chcks.nim.26.24

ifx.false.chcks.nim.26.24:                        ; preds = %secAlloca
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i)
  store ptr null, ptr %result.i, align 8
  call fastcc void @addInt__2bhkDH9aqL9crGzoL6X7p9adw(ptr nonnull %result.i, i64 %i)
  %load.result.i = load ptr, ptr %result.i, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i)
  %nilcheck.isnil.call.res.indexerrors.nim.9.21 = icmp eq ptr %load.result.i, null
  br i1 %nilcheck.isnil.call.res.indexerrors.nim.9.21, label %nilcheck.done.call.res.indexerrors.nim.9.21, label %nilcheck.notnil.call.res.indexerrors.nim.9.21

nilcheck.notnil.call.res.indexerrors.nim.9.21:    ; preds = %ifx.false.chcks.nim.26.24
  %load.seq.len.call.res.indexerrors.nim.9.21 = load i64, ptr %load.result.i, align 8
  %0 = add i64 %load.seq.len.call.res.indexerrors.nim.9.21, 19
  br label %nilcheck.done.call.res.indexerrors.nim.9.21

nilcheck.done.call.res.indexerrors.nim.9.21:      ; preds = %nilcheck.notnil.call.res.indexerrors.nim.9.21, %ifx.false.chcks.nim.26.24
  %nilcheck.phi.call.res.indexerrors.nim.9.21 = phi i64 [ 19, %ifx.false.chcks.nim.26.24 ], [ %0, %nilcheck.notnil.call.res.indexerrors.nim.9.21 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i5)
  store ptr null, ptr %result.i5, align 8
  call fastcc void @addInt__2bhkDH9aqL9crGzoL6X7p9adw(ptr nonnull %result.i5, i64 %n)
  %load.result.i6 = load ptr, ptr %result.i5, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i5)
  %nilcheck.isnil.call.res.indexerrors.nim.9.53 = icmp eq ptr %load.result.i6, null
  br i1 %nilcheck.isnil.call.res.indexerrors.nim.9.53, label %nilcheck.done.call.res.indexerrors.nim.9.53, label %nilcheck.notnil.call.res.indexerrors.nim.9.53

nilcheck.notnil.call.res.indexerrors.nim.9.53:    ; preds = %nilcheck.done.call.res.indexerrors.nim.9.21
  %load.seq.len.call.res.indexerrors.nim.9.53 = load i64, ptr %load.result.i6, align 8
  br label %nilcheck.done.call.res.indexerrors.nim.9.53

nilcheck.done.call.res.indexerrors.nim.9.53:      ; preds = %nilcheck.notnil.call.res.indexerrors.nim.9.53, %nilcheck.done.call.res.indexerrors.nim.9.21
  %nilcheck.phi.call.res.indexerrors.nim.9.53 = phi i64 [ 0, %nilcheck.done.call.res.indexerrors.nim.9.21 ], [ %load.seq.len.call.res.indexerrors.nim.9.53, %nilcheck.notnil.call.res.indexerrors.nim.9.53 ]
  %constrstr.tgtlen.indexerrors.nim.9.513 = add i64 %nilcheck.phi.call.res.indexerrors.nim.9.21, %nilcheck.phi.call.res.indexerrors.nim.9.53
  %spec.store.select.i = call i64 @llvm.smax.i64(i64 %constrstr.tgtlen.indexerrors.nim.9.513, i64 7)
  %binop.Add.sysstr.nim.62.44.i = add nuw i64 %spec.store.select.i, 17
  %call.res.sysstr.nim.45.26.i = call ptr @newObj(ptr nonnull @strDesc__D0UzA4zsDu5tgpJQ9a9clXPg, i64 %binop.Add.sysstr.nim.62.44.i)
  %dot.f1.dot.f0.load.result.sysstr.nim.63.2.i = getelementptr inbounds %TGenericSeq, ptr %call.res.sysstr.nim.45.26.i, i64 0, i32 1
  store i64 %spec.store.select.i, ptr %dot.f1.dot.f0.load.result.sysstr.nim.63.2.i, align 8
  %bra.uarr.geparr.sysstr.nim.226.26.i = getelementptr inbounds %NimStringDesc, ptr %call.res.sysstr.nim.45.26.i, i64 0, i32 1, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(7) %bra.uarr.geparr.sysstr.nim.226.26.i, ptr noundef nonnull align 16 dereferenceable(7) getelementptr inbounds ({ %TGenericSeq, [7 x i8] }, ptr @.str.index_, i64 0, i32 1, i64 0), i64 7, i1 false)
  store i64 6, ptr %call.res.sysstr.nim.45.26.i, align 16
  br i1 %nilcheck.isnil.call.res.indexerrors.nim.9.21, label %appendString.exit, label %if.true.sysstr.nim.225.2.i

if.true.sysstr.nim.225.2.i:                       ; preds = %nilcheck.done.call.res.indexerrors.nim.9.53
  %bra.uarr.geparr.sysstr.nim.226.26.i8 = getelementptr inbounds %NimStringDesc, ptr %call.res.sysstr.nim.45.26.i, i64 0, i32 1, i64 6
  %dot.f1.load.arg.src2.i = getelementptr inbounds %NimStringDesc, ptr %load.result.i, i64 0, i32 1
  %load.dot.f0.dot.f0.load.arg.src3.i = load i64, ptr %load.result.i, align 8
  %binop.Add.sysstr.nim.226.63.i = add i64 %load.dot.f0.dot.f0.load.arg.src3.i, 1
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %bra.uarr.geparr.sysstr.nim.226.26.i8, ptr nonnull align 1 %dot.f1.load.arg.src2.i, i64 %binop.Add.sysstr.nim.226.63.i, i1 false)
  %load.dot.f0.dot.f0.load.arg.src5.i = load i64, ptr %load.result.i, align 8
  %inc.nv.sysstr.nim.227.7.i10 = add i64 %load.dot.f0.dot.f0.load.arg.src5.i, 6
  store i64 %inc.nv.sysstr.nim.227.7.i10, ptr %call.res.sysstr.nim.45.26.i, align 16
  br label %appendString.exit

appendString.exit:                                ; preds = %nilcheck.done.call.res.indexerrors.nim.9.53, %if.true.sysstr.nim.225.2.i
  %load.dot.f0.dot.f0.load.arg.dest1.i11 = phi i64 [ 6, %nilcheck.done.call.res.indexerrors.nim.9.53 ], [ %inc.nv.sysstr.nim.227.7.i10, %if.true.sysstr.nim.225.2.i ]
  %bra.uarr.geparr.sysstr.nim.226.26.i12 = getelementptr inbounds %NimStringDesc, ptr %call.res.sysstr.nim.45.26.i, i64 0, i32 1, i64 %load.dot.f0.dot.f0.load.arg.dest1.i11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(14) %bra.uarr.geparr.sysstr.nim.226.26.i12, ptr noundef nonnull align 16 dereferenceable(14) getelementptr inbounds ({ %TGenericSeq, [14 x i8] }, ptr @.str._not_in_0____, i64 0, i32 1, i64 0), i64 14, i1 false)
  %load.dot.f0.dot.f0.load.arg.dest4.i13 = load i64, ptr %call.res.sysstr.nim.45.26.i, align 16
  %inc.nv.sysstr.nim.227.7.i14 = add i64 %load.dot.f0.dot.f0.load.arg.dest4.i13, 13
  store i64 %inc.nv.sysstr.nim.227.7.i14, ptr %call.res.sysstr.nim.45.26.i, align 16
  br i1 %nilcheck.isnil.call.res.indexerrors.nim.9.53, label %ifx.end.chcks.nim.26.24, label %if.true.sysstr.nim.225.2.i25

if.true.sysstr.nim.225.2.i25:                     ; preds = %appendString.exit
  %bra.uarr.geparr.sysstr.nim.226.26.i18 = getelementptr inbounds %NimStringDesc, ptr %call.res.sysstr.nim.45.26.i, i64 0, i32 1, i64 %inc.nv.sysstr.nim.227.7.i14
  %dot.f1.load.arg.src2.i19 = getelementptr inbounds %NimStringDesc, ptr %load.result.i6, i64 0, i32 1
  %load.dot.f0.dot.f0.load.arg.src3.i20 = load i64, ptr %load.result.i6, align 8
  %binop.Add.sysstr.nim.226.63.i21 = add i64 %load.dot.f0.dot.f0.load.arg.src3.i20, 1
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %bra.uarr.geparr.sysstr.nim.226.26.i18, ptr nonnull align 1 %dot.f1.load.arg.src2.i19, i64 %binop.Add.sysstr.nim.226.63.i21, i1 false)
  %load.dot.f0.dot.f0.load.arg.src5.i22 = load i64, ptr %load.result.i6, align 8
  %load.dot.f0.dot.f0.load.arg.dest4.i23 = load i64, ptr %call.res.sysstr.nim.45.26.i, align 16
  %inc.nv.sysstr.nim.227.7.i24 = add i64 %load.dot.f0.dot.f0.load.arg.dest4.i23, %load.dot.f0.dot.f0.load.arg.src5.i22
  store i64 %inc.nv.sysstr.nim.227.7.i24, ptr %call.res.sysstr.nim.45.26.i, align 16
  br label %ifx.end.chcks.nim.26.24

ifx.end.chcks.nim.26.24:                          ; preds = %if.true.sysstr.nim.225.2.i25, %appendString.exit, %ifx.true.chcks.nim.26.24
  %ifx.res.chcks.nim.26.24.0 = phi ptr [ %call.cp.copyString, %ifx.true.chcks.nim.26.24 ], [ %call.res.sysstr.nim.45.26.i, %appendString.exit ], [ %call.res.sysstr.nim.45.26.i, %if.true.sysstr.nim.225.2.i25 ]
  call fastcc void @sysFatal__BVaWgkQV7bsZ7qgkYxa9a0A(ptr %ifx.res.chcks.nim.26.24.0)
  unreachable
}

; Function Attrs: cold noreturn
define internal fastcc void @sysFatal__BVaWgkQV7bsZ7qgkYxa9a0A(ptr %message) unnamed_addr #11 {
nilcheck.done.load.objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.43:
  %call.cp.newObj = tail call dereferenceable(48) ptr @newObj(ptr nonnull @.typeinfo.tyRef__dRsREj7CggcR9csTz9bOCNCA, i64 48)
  store ptr @.typeinfo.tyObject_IndexDefect__35Ucfd9bADPCsQJ5mN5DSSg, ptr %call.cp.newObj, align 16
  %name.load.objconstr.fatal.nim.54.4 = getelementptr inbounds %Exception, ptr %call.cp.newObj, i64 0, i32 2
  store ptr @.cstr.IndexDefect, ptr %name.load.objconstr.fatal.nim.54.4, align 16
  %objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.43 = getelementptr inbounds %Exception, ptr %call.cp.newObj, i64 0, i32 3
  %call.cp.copyStringRC1 = tail call fastcc ptr @copyStringRC1(ptr %message)
  store ptr %call.cp.copyStringRC1, ptr %objconstr.f3.objconstr.f0.objconstr.f0.load.objconstr.fatal.nim.54.43, align 8
  tail call fastcc void @nlvmRaise(ptr nonnull %call.cp.newObj)
  unreachable
}

define internal void @Marker_tyRef__dRsREj7CggcR9csTz9bOCNCA(ptr nocapture readonly %v, i64 %op) {
secAlloca:
  %mk.exceptions.nim.39.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 1
  %load.mk.exceptions.nim.39.4 = load ptr, ptr %mk.exceptions.nim.39.4, align 8
  %toe.t.load.arg.op.i = trunc i64 %op to i8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.39.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.43.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 3
  %load.mk.exceptions.nim.43.4 = load ptr, ptr %mk.exceptions.nim.43.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.43.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.49.6 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 4
  %load.mk.exceptions.nim.49.6 = load ptr, ptr %mk.exceptions.nim.49.6, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.49.6, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.50.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 5
  %load.mk.exceptions.nim.50.4 = load ptr, ptr %mk.exceptions.nim.50.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.50.4, i8 %toe.t.load.arg.op.i)
  ret void
}

define internal i32 @nlvmEHPersonality(i32 %version, i32 %actions, i64 %exceptionClass, ptr %unwindException, ptr %ctx) #2 {
secAlloca:
  %results = alloca %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, align 8
  %call.res.stack.nlvm_system.nim.678.21 = alloca %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, align 8
  %results18 = alloca %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, align 8
  %icmp.IntEQ.nlvm_system.nim.649.13.not = icmp ne i32 %version, 1
  %isnil.nlvm_system.nim.649.36 = icmp eq ptr %unwindException, null
  %narrow = select i1 %icmp.IntEQ.nlvm_system.nim.649.13.not, i1 true, i1 %isnil.nlvm_system.nim.649.36
  %isnil.nlvm_system.nim.649.51 = icmp eq ptr %ctx, null
  %narrow39 = select i1 %narrow, i1 true, i1 %isnil.nlvm_system.nim.649.51
  br i1 %narrow39, label %secReturn, label %if.end.nlvm_system.nim.649.2

if.end.nlvm_system.nim.649.2:                     ; preds = %secAlloca
  %call.res.nlvm_system.nim.652.29 = tail call fastcc i8 @isNative__btkKgmVhOcT4HW21cEwdZA(i64 %exceptionClass)
  %call.res.nlvm_system.nim.654.12 = tail call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 1)
  %i1.call.res.nlvm_system.nim.654.12.not = icmp eq i8 %call.res.nlvm_system.nim.654.12, 0
  br i1 %i1.call.res.nlvm_system.nim.654.12.not, label %ifx.false.nlvm_system.nim.654.2, label %ifx.true.nlvm_system.nim.654.2

ifx.true.nlvm_system.nim.654.2:                   ; preds = %if.end.nlvm_system.nim.649.2
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 8 dereferenceable(24) %results, i8 0, i32 24, i1 false)
  call fastcc void @scanEHTable__PWDeGUtgU9cmMVTAIPmawKQ(ptr nonnull %results, i32 %actions, i8 %call.res.nlvm_system.nim.652.29, ptr %unwindException, ptr %ctx)
  %dot.f2.results = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %results, i64 0, i32 2
  %load.dot.f2.results = load i32, ptr %dot.f2.results, align 8
  %icmp.IntEQ.nlvm_system.nim.657.22 = icmp ne i32 %load.dot.f2.results, 6
  %i1.and.res.nlvm_system.nim.657.43.not40 = icmp eq i8 %call.res.nlvm_system.nim.652.29, 0
  %i1.and.res.nlvm_system.nim.657.43.not = select i1 %icmp.IntEQ.nlvm_system.nim.657.22, i1 true, i1 %i1.and.res.nlvm_system.nim.657.43.not40
  br i1 %i1.and.res.nlvm_system.nim.657.43.not, label %if.end.nlvm_system.nim.657.4, label %if.true.nlvm_system.nim.657.4

if.true.nlvm_system.nim.657.4:                    ; preds = %ifx.true.nlvm_system.nim.654.2
  %call.res.nlvm_system.nim.659.43 = call fastcc ptr @toNlvmException__WSru48z9adNOfNkRTxb6cKg(ptr %unwindException)
  %dot.f3.load.exceptionHeader.nlvm_system.nim.660.6 = getelementptr inbounds %tyObject_NlvmException__h59a1ij9cwOonlSvYG4fVp5g, ptr %call.res.nlvm_system.nim.659.43, i64 0, i32 3
  %load.dot.f0.results = load i64, ptr %results, align 8
  store i64 %load.dot.f0.results, ptr %dot.f3.load.exceptionHeader.nlvm_system.nim.660.6, align 8
  %dot.f5.load.exceptionHeader.nlvm_system.nim.661.6 = getelementptr inbounds %tyObject_NlvmException__h59a1ij9cwOonlSvYG4fVp5g, ptr %call.res.nlvm_system.nim.659.43, i64 0, i32 5
  %dot.f1.results = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %results, i64 0, i32 1
  %load.dot.f1.results = load ptr, ptr %dot.f1.results, align 8
  store ptr %load.dot.f1.results, ptr %dot.f5.load.exceptionHeader.nlvm_system.nim.661.6, align 8
  br label %if.end.nlvm_system.nim.657.4

if.end.nlvm_system.nim.657.4:                     ; preds = %ifx.true.nlvm_system.nim.654.2, %if.true.nlvm_system.nim.657.4
  %load.dot.f2.results5 = load i32, ptr %dot.f2.results, align 8
  br label %secReturn

ifx.false.nlvm_system.nim.654.2:                  ; preds = %if.end.nlvm_system.nim.649.2
  %call.res.nlvm_system.nim.665.14 = tail call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 2)
  %i1.call.res.nlvm_system.nim.665.14.not = icmp eq i8 %call.res.nlvm_system.nim.665.14, 0
  br i1 %i1.call.res.nlvm_system.nim.665.14.not, label %secReturn, label %ifx.true.nlvm_system.nim.654.27

ifx.true.nlvm_system.nim.654.27:                  ; preds = %ifx.false.nlvm_system.nim.654.2
  %call.res.nlvm_system.nim.666.14 = tail call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 4)
  %i1.call.res.nlvm_system.nim.666.14.not = icmp eq i8 %call.res.nlvm_system.nim.666.14, 0
  br i1 %i1.call.res.nlvm_system.nim.666.14.not, label %ifx.false.nlvm_system.nim.666.4, label %ifx.true.nlvm_system.nim.666.4

ifx.true.nlvm_system.nim.666.4:                   ; preds = %ifx.true.nlvm_system.nim.654.27
  %i1.load.native.nlvm_system.nim.669.11.not = icmp eq i8 %call.res.nlvm_system.nim.652.29, 0
  br i1 %i1.load.native.nlvm_system.nim.669.11.not, label %ifx.false.nlvm_system.nim.669.8, label %ifx.true.nlvm_system.nim.669.8

ifx.true.nlvm_system.nim.669.8:                   ; preds = %ifx.true.nlvm_system.nim.666.4
  %call.res.nlvm_system.nim.671.47 = tail call fastcc ptr @toNlvmException__WSru48z9adNOfNkRTxb6cKg(ptr %unwindException)
  %dot.f3.load.exceptionHeader11.nlvm_system.nim.673.24 = getelementptr inbounds %tyObject_NlvmException__h59a1ij9cwOonlSvYG4fVp5g, ptr %call.res.nlvm_system.nim.671.47, i64 0, i32 3
  %dot.f5.load.exceptionHeader11.nlvm_system.nim.674.24 = getelementptr inbounds %tyObject_NlvmException__h59a1ij9cwOonlSvYG4fVp5g, ptr %call.res.nlvm_system.nim.671.47, i64 0, i32 5
  %load.dot.f5.load.exceptionHeader11.nlvm_system.nim.674.24 = load ptr, ptr %dot.f5.load.exceptionHeader11.nlvm_system.nim.674.24, align 8
  br label %ifx.end.nlvm_system.nim.669.8

ifx.false.nlvm_system.nim.669.8:                  ; preds = %ifx.true.nlvm_system.nim.666.4
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 8 dereferenceable(24) %call.res.stack.nlvm_system.nim.678.21, i8 0, i32 24, i1 false)
  call fastcc void @scanEHTable__PWDeGUtgU9cmMVTAIPmawKQ(ptr nonnull %call.res.stack.nlvm_system.nim.678.21, i32 %actions, i8 0, ptr %unwindException, ptr %ctx)
  %ifx.res.nlvm_system.nim.669.8.sroa.4.0.call.res.stack.nlvm_system.nim.678.21.sroa_idx = getelementptr inbounds i8, ptr %call.res.stack.nlvm_system.nim.678.21, i64 8
  %ifx.res.nlvm_system.nim.669.8.sroa.4.0.copyload = load ptr, ptr %ifx.res.nlvm_system.nim.669.8.sroa.4.0.call.res.stack.nlvm_system.nim.678.21.sroa_idx, align 8
  %ifx.res.nlvm_system.nim.669.8.sroa.5.0.call.res.stack.nlvm_system.nim.678.21.sroa_idx = getelementptr inbounds i8, ptr %call.res.stack.nlvm_system.nim.678.21, i64 16
  %ifx.res.nlvm_system.nim.669.8.sroa.5.0.copyload = load i32, ptr %ifx.res.nlvm_system.nim.669.8.sroa.5.0.call.res.stack.nlvm_system.nim.678.21.sroa_idx, align 8
  br label %ifx.end.nlvm_system.nim.669.8

ifx.end.nlvm_system.nim.669.8:                    ; preds = %ifx.false.nlvm_system.nim.669.8, %ifx.true.nlvm_system.nim.669.8
  %ifx.res.nlvm_system.nim.669.8.sroa.0.0.in = phi ptr [ %dot.f3.load.exceptionHeader11.nlvm_system.nim.673.24, %ifx.true.nlvm_system.nim.669.8 ], [ %call.res.stack.nlvm_system.nim.678.21, %ifx.false.nlvm_system.nim.669.8 ]
  %ifx.res.nlvm_system.nim.669.8.sroa.4.0 = phi ptr [ %load.dot.f5.load.exceptionHeader11.nlvm_system.nim.674.24, %ifx.true.nlvm_system.nim.669.8 ], [ %ifx.res.nlvm_system.nim.669.8.sroa.4.0.copyload, %ifx.false.nlvm_system.nim.669.8 ]
  %ifx.res.nlvm_system.nim.669.8.sroa.5.0 = phi i32 [ 6, %ifx.true.nlvm_system.nim.669.8 ], [ %ifx.res.nlvm_system.nim.669.8.sroa.5.0.copyload, %ifx.false.nlvm_system.nim.669.8 ]
  %icmp.IntEQ.nlvm_system.nim.680.24.not = icmp eq i32 %ifx.res.nlvm_system.nim.669.8.sroa.5.0, 6
  br i1 %icmp.IntEQ.nlvm_system.nim.680.24.not, label %if.end.nlvm_system.nim.680.6, label %if.true.nlvm_system.nim.680.6

if.true.nlvm_system.nim.680.6:                    ; preds = %ifx.end.nlvm_system.nim.669.8
  call void @abort()
  unreachable

if.end.nlvm_system.nim.680.6:                     ; preds = %ifx.end.nlvm_system.nim.669.8
  %ifx.res.nlvm_system.nim.669.8.sroa.0.0 = load i64, ptr %ifx.res.nlvm_system.nim.669.8.sroa.0.0.in, align 8
  %load.results10.nlvm_system.nim.684.41.fca.0.insert = insertvalue %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw poison, i64 %ifx.res.nlvm_system.nim.669.8.sroa.0.0, 0
  %load.results10.nlvm_system.nim.684.41.fca.1.insert = insertvalue %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %load.results10.nlvm_system.nim.684.41.fca.0.insert, ptr %ifx.res.nlvm_system.nim.669.8.sroa.4.0, 1
  %load.results10.nlvm_system.nim.684.41.fca.2.insert = insertvalue %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %load.results10.nlvm_system.nim.684.41.fca.1.insert, i32 %ifx.res.nlvm_system.nim.669.8.sroa.5.0, 2
  call fastcc void @setRegisters__CZG1q1AnoyxwjgdRyOVWAw(ptr %unwindException, ptr %ctx, %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %load.results10.nlvm_system.nim.684.41.fca.2.insert)
  br label %secReturn

ifx.false.nlvm_system.nim.666.4:                  ; preds = %ifx.true.nlvm_system.nim.654.27
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 8 dereferenceable(24) %results18, i8 0, i32 24, i1 false)
  call fastcc void @scanEHTable__PWDeGUtgU9cmMVTAIPmawKQ(ptr nonnull %results18, i32 %actions, i8 %call.res.nlvm_system.nim.652.29, ptr %unwindException, ptr %ctx)
  %dot.f2.results18 = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %results18, i64 0, i32 2
  %load.dot.f2.results18 = load i32, ptr %dot.f2.results18, align 8
  %icmp.IntEQ.nlvm_system.nim.689.24 = icmp eq i32 %load.dot.f2.results18, 6
  br i1 %icmp.IntEQ.nlvm_system.nim.689.24, label %ifx.true.nlvm_system.nim.689.6, label %secReturn

ifx.true.nlvm_system.nim.689.6:                   ; preds = %ifx.false.nlvm_system.nim.666.4
  %load.results18.nlvm_system.nim.691.43.fca.0.load = load i64, ptr %results18, align 8
  %load.results18.nlvm_system.nim.691.43.fca.0.insert = insertvalue %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw poison, i64 %load.results18.nlvm_system.nim.691.43.fca.0.load, 0
  %load.results18.nlvm_system.nim.691.43.fca.1.gep = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %results18, i64 0, i32 1
  %load.results18.nlvm_system.nim.691.43.fca.1.load = load ptr, ptr %load.results18.nlvm_system.nim.691.43.fca.1.gep, align 8
  %load.results18.nlvm_system.nim.691.43.fca.1.insert = insertvalue %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %load.results18.nlvm_system.nim.691.43.fca.0.insert, ptr %load.results18.nlvm_system.nim.691.43.fca.1.load, 1
  %load.results18.nlvm_system.nim.691.43.fca.2.insert = insertvalue %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %load.results18.nlvm_system.nim.691.43.fca.1.insert, i32 6, 2
  call fastcc void @setRegisters__CZG1q1AnoyxwjgdRyOVWAw(ptr %unwindException, ptr %ctx, %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %load.results18.nlvm_system.nim.691.43.fca.2.insert)
  br label %secReturn

secReturn:                                        ; preds = %if.end.nlvm_system.nim.657.4, %ifx.true.nlvm_system.nim.689.6, %ifx.false.nlvm_system.nim.666.4, %if.end.nlvm_system.nim.680.6, %ifx.false.nlvm_system.nim.654.2, %secAlloca
  %result.0 = phi i32 [ 3, %secAlloca ], [ %load.dot.f2.results5, %if.end.nlvm_system.nim.657.4 ], [ 7, %if.end.nlvm_system.nim.680.6 ], [ 7, %ifx.true.nlvm_system.nim.689.6 ], [ %load.dot.f2.results18, %ifx.false.nlvm_system.nim.666.4 ], [ 3, %ifx.false.nlvm_system.nim.654.2 ]
  ret i32 %result.0
}

define internal fastcc i8 @isNative__btkKgmVhOcT4HW21cEwdZA(i64 %c) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.nlvm_system.nim.91.4 = icmp eq i64 %c, 7956864854032739584
  %bool.i8.icmp.IntEQ.nlvm_system.nim.91.4 = zext i1 %icmp.IntEQ.nlvm_system.nim.91.4 to i8
  ret i8 %bool.i8.icmp.IntEQ.nlvm_system.nim.91.4
}

define internal fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %action, i32 %checkFor) unnamed_addr #2 {
secAlloca:
  %binop.And.nlvm_system.nim.88.10 = and i32 %action, %checkFor
  %icmp.IntSLT.nlvm_system.nim.88.24 = icmp sgt i32 %binop.And.nlvm_system.nim.88.10, 0
  %bool.i8.icmp.IntSLT.nlvm_system.nim.88.24 = zext i1 %icmp.IntSLT.nlvm_system.nim.88.24 to i8
  ret i8 %bool.i8.icmp.IntSLT.nlvm_system.nim.88.24
}

define internal fastcc void @scanEHTable__PWDeGUtgU9cmMVTAIPmawKQ(ptr %Result, i32 %actions, i8 %native, ptr %unwindException, ptr %ctx) unnamed_addr #2 {
secAlloca:
  %ipBeforeInsn = alloca i32, align 4
  %header = alloca ptr, align 8
  %csPtr = alloca ptr, align 8
  %action = alloca ptr, align 8
  %temp = alloca ptr, align 8
  %call.res.nlvm_system.nim.466.12 = tail call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 1)
  %i1.call.res.nlvm_system.nim.466.12.not = icmp eq i8 %call.res.nlvm_system.nim.466.12, 0
  br i1 %i1.call.res.nlvm_system.nim.466.12.not, label %if.false.nlvm_system.nim.466.2, label %if.true.nlvm_system.nim.466.2

if.true.nlvm_system.nim.466.2:                    ; preds = %secAlloca
  %call.res.nlvm_system.nim.467.14 = tail call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 14)
  %i1.call.res.nlvm_system.nim.467.14.not = icmp eq i8 %call.res.nlvm_system.nim.467.14, 0
  br i1 %i1.call.res.nlvm_system.nim.467.14.not, label %if.end.nlvm_system.nim.466.2, label %if.true.nlvm_system.nim.467.4

if.true.nlvm_system.nim.467.4:                    ; preds = %if.true.nlvm_system.nim.466.2
  tail call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  br label %secReturn

if.false.nlvm_system.nim.466.2:                   ; preds = %secAlloca
  %call.res.nlvm_system.nim.470.14 = tail call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 2)
  %i1.call.res.nlvm_system.nim.470.14.not = icmp eq i8 %call.res.nlvm_system.nim.470.14, 0
  br i1 %i1.call.res.nlvm_system.nim.470.14.not, label %if.false.nlvm_system.nim.466.24, label %if.true.nlvm_system.nim.466.23

if.true.nlvm_system.nim.466.23:                   ; preds = %if.false.nlvm_system.nim.466.2
  %call.res.nlvm_system.nim.471.14 = tail call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 4)
  %i1.call.res.nlvm_system.nim.471.14.not = icmp eq i8 %call.res.nlvm_system.nim.471.14, 0
  br i1 %i1.call.res.nlvm_system.nim.471.14.not, label %if.end.nlvm_system.nim.466.2, label %andor.next.nlvm_system.nim.471.39

andor.next.nlvm_system.nim.471.39:                ; preds = %if.true.nlvm_system.nim.466.23
  %call.res.nlvm_system.nim.471.50 = tail call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 8)
  %0 = icmp eq i8 %call.res.nlvm_system.nim.471.50, 0
  br i1 %0, label %if.end.nlvm_system.nim.466.2, label %if.true.nlvm_system.nim.471.4

if.true.nlvm_system.nim.471.4:                    ; preds = %andor.next.nlvm_system.nim.471.39
  tail call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  br label %secReturn

if.false.nlvm_system.nim.466.24:                  ; preds = %if.false.nlvm_system.nim.466.2
  tail call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  br label %secReturn

if.end.nlvm_system.nim.466.2:                     ; preds = %if.true.nlvm_system.nim.466.23, %andor.next.nlvm_system.nim.471.39, %if.true.nlvm_system.nim.466.2
  %call.res.nlvm_system.nim.477.16 = tail call i64 @_Unwind_GetLanguageSpecificData(ptr %ctx)
  %icmp.IntEQ.nlvm_system.nim.478.10 = icmp eq i64 %call.res.nlvm_system.nim.477.16, 0
  br i1 %icmp.IntEQ.nlvm_system.nim.478.10, label %if.true.nlvm_system.nim.478.2, label %if.end.nlvm_system.nim.478.2

if.true.nlvm_system.nim.478.2:                    ; preds = %if.end.nlvm_system.nim.466.2
  tail call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  br label %secReturn

if.end.nlvm_system.nim.478.2:                     ; preds = %if.end.nlvm_system.nim.466.2
  store i32 0, ptr %ipBeforeInsn, align 4
  %call.res.nlvm_system.nim.483.13 = call i64 @_Unwind_GetIPInfo(ptr %ctx, ptr nonnull %ipBeforeInsn)
  %load.ipBeforeInsn.nlvm_system.nim.484.19 = load i32, ptr %ipBeforeInsn, align 4
  %icmp.IntEQ.nlvm_system.nim.484.32 = icmp eq i32 %load.ipBeforeInsn.nlvm_system.nim.484.19, 0
  %. = sext i1 %icmp.IntEQ.nlvm_system.nim.484.32 to i64
  %binop.Sub.nlvm_system.nim.484.13 = add i64 %call.res.nlvm_system.nim.483.13, %.
  %call.res.nlvm_system.nim.485.19 = call i64 @_Unwind_GetRegionStart(ptr %ctx)
  %binop.Sub.nlvm_system.nim.486.18 = sub i64 %binop.Sub.nlvm_system.nim.484.13, %call.res.nlvm_system.nim.485.19
  %cast.ip.nlvm_system.nim.488.15 = inttoptr i64 %call.res.nlvm_system.nim.477.16 to ptr
  store ptr %cast.ip.nlvm_system.nim.488.15, ptr %header, align 8
  %call.res.nlvm_system.nim.490.26 = call fastcc i8 @readBytes__PWh39clIDOmkjzqIlHUg7dw(ptr nonnull %header)
  %call.res.nlvm_system.nim.491.27 = call fastcc ptr @readEncodedPointer__9auLfEfTlnw9bxGABGB5cTrA(ptr nonnull %header, ptr %ctx, i8 %call.res.nlvm_system.nim.490.26)
  %isnil.nlvm_system.nim.493.23 = icmp eq ptr %call.res.nlvm_system.nim.491.27, null
  %cast.ip.nlvm_system.nim.493.33 = inttoptr i64 %call.res.nlvm_system.nim.485.19 to ptr
  %ifx.res.nlvm_system.nim.493.6.0 = select i1 %isnil.nlvm_system.nim.493.23, ptr %cast.ip.nlvm_system.nim.493.33, ptr %call.res.nlvm_system.nim.491.27
  %call.res.nlvm_system.nim.496.26 = call fastcc i8 @readBytes__PWh39clIDOmkjzqIlHUg7dw(ptr nonnull %header)
  %icmp.IntEQ.nlvm_system.nim.498.23.not = icmp eq i8 %call.res.nlvm_system.nim.496.26, -1
  br i1 %icmp.IntEQ.nlvm_system.nim.498.23.not, label %ifx.end.nlvm_system.nim.498.6, label %ifx.true.nlvm_system.nim.498.6

ifx.true.nlvm_system.nim.498.6:                   ; preds = %if.end.nlvm_system.nim.478.2
  %call.res.nlvm_system.nim.499.29 = call fastcc i64 @readUleb128__HIfJTdqzTTZsWYVjPIEnOg(ptr nonnull %header)
  %load.header.nlvm_system.nim.500.8 = load ptr, ptr %header, align 8
  %call.res.nlvm_system.nim.500.14 = call fastcc ptr @offset__YHoNX1PdDlvFG8b3QdsbtQ(ptr %load.header.nlvm_system.nim.500.8, i64 %call.res.nlvm_system.nim.499.29)
  br label %ifx.end.nlvm_system.nim.498.6

ifx.end.nlvm_system.nim.498.6:                    ; preds = %if.end.nlvm_system.nim.478.2, %ifx.true.nlvm_system.nim.498.6
  %ifx.res.nlvm_system.nim.498.6.0 = phi ptr [ %call.res.nlvm_system.nim.500.14, %ifx.true.nlvm_system.nim.498.6 ], [ null, %if.end.nlvm_system.nim.478.2 ]
  %call.res.nlvm_system.nim.505.23 = call fastcc i8 @readBytes__PWh39clIDOmkjzqIlHUg7dw(ptr nonnull %header)
  %call.res.nlvm_system.nim.506.23 = call fastcc i64 @readUleb128__HIfJTdqzTTZsWYVjPIEnOg(ptr nonnull %header)
  %load.header.nlvm_system.nim.507.19 = load ptr, ptr %header, align 8
  %call.res.nlvm_system.nim.508.23 = call fastcc ptr @offset__YHoNX1PdDlvFG8b3QdsbtQ(ptr %load.header.nlvm_system.nim.507.19, i64 %call.res.nlvm_system.nim.506.23)
  store ptr %load.header.nlvm_system.nim.507.19, ptr %csPtr, align 8
  br label %while.cmp.nlvm_system.nim.512.2

while.cmp.nlvm_system.nim.512.2:                  ; preds = %while.true.nlvm_system.nim.512.2, %ifx.end.nlvm_system.nim.498.6
  %load.csPtr.nlvm_system.nim.512.8 = load ptr, ptr %csPtr, align 8
  %icmp.IntULT.nlvm_system.nim.512.14 = icmp ult ptr %load.csPtr.nlvm_system.nim.512.8, %call.res.nlvm_system.nim.508.23
  br i1 %icmp.IntULT.nlvm_system.nim.512.14, label %while.true.nlvm_system.nim.512.2, label %while.false.nlvm_system.nim.512.2

while.true.nlvm_system.nim.512.2:                 ; preds = %while.cmp.nlvm_system.nim.512.2
  %call.res.nlvm_system.nim.514.32 = call fastcc ptr @readEncodedPointer__9auLfEfTlnw9bxGABGB5cTrA(ptr nonnull %csPtr, ptr %ctx, i8 %call.res.nlvm_system.nim.505.23)
  %cast.pi.nlvm_system.nim.514.16 = ptrtoint ptr %call.res.nlvm_system.nim.514.32 to i64
  %call.res.nlvm_system.nim.515.30 = call fastcc ptr @readEncodedPointer__9auLfEfTlnw9bxGABGB5cTrA(ptr nonnull %csPtr, ptr %ctx, i8 %call.res.nlvm_system.nim.505.23)
  %call.res.nlvm_system.nim.516.30 = call fastcc ptr @readEncodedPointer__9auLfEfTlnw9bxGABGB5cTrA(ptr nonnull %csPtr, ptr %ctx, i8 %call.res.nlvm_system.nim.505.23)
  %call.res.nlvm_system.nim.517.35 = call fastcc i64 @readUleb128__HIfJTdqzTTZsWYVjPIEnOg(ptr nonnull %csPtr)
  %icmp.IntULE.nlvm_system.nim.519.16 = icmp uge i64 %binop.Sub.nlvm_system.nim.486.18, %cast.pi.nlvm_system.nim.514.16
  %cast.pi.nlvm_system.nim.515.14 = ptrtoint ptr %call.res.nlvm_system.nim.515.30 to i64
  %binop.Add.nlvm_system.nim.519.54 = add i64 %cast.pi.nlvm_system.nim.514.16, %cast.pi.nlvm_system.nim.515.14
  %icmp.IntULT.nlvm_system.nim.519.43 = icmp ult i64 %binop.Sub.nlvm_system.nim.486.18, %binop.Add.nlvm_system.nim.519.54
  %and.res.nlvm_system.nim.519.29.in = select i1 %icmp.IntULE.nlvm_system.nim.519.16, i1 %icmp.IntULT.nlvm_system.nim.519.43, i1 false
  br i1 %and.res.nlvm_system.nim.519.29.in, label %if.true.nlvm_system.nim.519.4, label %while.cmp.nlvm_system.nim.512.2

if.true.nlvm_system.nim.519.4:                    ; preds = %while.true.nlvm_system.nim.512.2
  %cast.pi.nlvm_system.nim.516.15.le = ptrtoint ptr %call.res.nlvm_system.nim.516.30 to i64
  %icmp.IntEQ.nlvm_system.nim.521.16 = icmp eq ptr %call.res.nlvm_system.nim.516.30, null
  br i1 %icmp.IntEQ.nlvm_system.nim.521.16, label %if.true.nlvm_system.nim.521.6, label %if.end.nlvm_system.nim.521.6

if.true.nlvm_system.nim.521.6:                    ; preds = %if.true.nlvm_system.nim.519.4
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  br label %secReturn

if.end.nlvm_system.nim.521.6:                     ; preds = %if.true.nlvm_system.nim.519.4
  %call.res.nlvm_system.nim.525.30 = call fastcc ptr @offset__YHoNX1PdDlvFG8b3QdsbtQ(ptr %ifx.res.nlvm_system.nim.493.6.0, i64 %cast.pi.nlvm_system.nim.516.15.le)
  %icmp.IntEQ.nlvm_system.nim.526.21 = icmp eq i64 %call.res.nlvm_system.nim.517.35, 0
  br i1 %icmp.IntEQ.nlvm_system.nim.526.21, label %if.true.nlvm_system.nim.526.6, label %if.end.nlvm_system.nim.526.6

if.true.nlvm_system.nim.526.6:                    ; preds = %if.end.nlvm_system.nim.521.6
  %call.res.nlvm_system.nim.528.18 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 2)
  %i1.call.res.nlvm_system.nim.528.18.not = icmp eq i8 %call.res.nlvm_system.nim.528.18, 0
  br i1 %i1.call.res.nlvm_system.nim.528.18.not, label %if.end.nlvm_system.nim.528.8, label %andor.next.nlvm_system.nim.528.43

andor.next.nlvm_system.nim.528.43:                ; preds = %if.true.nlvm_system.nim.526.6
  %call.res.nlvm_system.nim.528.58 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 4)
  %not.call.res.nlvm_system.nim.528.58.not = icmp eq i8 %call.res.nlvm_system.nim.528.58, 0
  br i1 %not.call.res.nlvm_system.nim.528.58.not, label %if.true.nlvm_system.nim.528.8, label %if.end.nlvm_system.nim.528.8

if.true.nlvm_system.nim.528.8:                    ; preds = %andor.next.nlvm_system.nim.528.43
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  store i64 0, ptr %Result, align 8
  %objconstr.f1.Result = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %Result, i64 0, i32 1
  store ptr %call.res.nlvm_system.nim.525.30, ptr %objconstr.f1.Result, align 8
  br label %secReturn

if.end.nlvm_system.nim.528.8:                     ; preds = %if.true.nlvm_system.nim.526.6, %andor.next.nlvm_system.nim.528.43
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  br label %secReturn

if.end.nlvm_system.nim.526.6:                     ; preds = %if.end.nlvm_system.nim.521.6
  %binop.Sub.nlvm_system.nim.537.46 = add i64 %call.res.nlvm_system.nim.517.35, -1
  %call.res.nlvm_system.nim.537.26 = call fastcc ptr @offset__YHoNX1PdDlvFG8b3QdsbtQ(ptr nonnull %call.res.nlvm_system.nim.508.23, i64 %binop.Sub.nlvm_system.nim.537.46)
  store ptr %call.res.nlvm_system.nim.537.26, ptr %action, align 8
  %i1.load.arg.native49.not = icmp eq i8 %native, 0
  %i1.load.arg.native.not = icmp eq i8 %native, 0
  br label %while.cmp.nlvm_system.nim.539.6

while.cmp.nlvm_system.nim.539.6:                  ; preds = %if.end.nlvm_system.nim.624.8, %if.end.nlvm_system.nim.526.6
  %call.res.nlvm_system.nim.542.41 = call fastcc i64 @readSleb128__gH5gjqmdvbF1N6m5C5EezQ(ptr nonnull %action)
  %icmp.IntSLT.nlvm_system.nim.545.22 = icmp sgt i64 %call.res.nlvm_system.nim.542.41, 0
  br i1 %icmp.IntSLT.nlvm_system.nim.545.22, label %if.true.nlvm_system.nim.545.8, label %if.false.nlvm_system.nim.545.8

if.true.nlvm_system.nim.545.8:                    ; preds = %while.cmp.nlvm_system.nim.539.6
  %call.res.nlvm_system.nim.548.22 = call fastcc ptr @getNimType__Z8bx1mGQSIl5Bo0SdP6Wrg(i64 %call.res.nlvm_system.nim.542.41, ptr %ifx.res.nlvm_system.nim.498.6.0, i8 %call.res.nlvm_system.nim.496.26, ptr %ctx)
  %isnil.nlvm_system.nim.551.22 = icmp eq ptr %call.res.nlvm_system.nim.548.22, null
  br i1 %isnil.nlvm_system.nim.551.22, label %if.true.nlvm_system.nim.551.10, label %if.false.nlvm_system.nim.551.10

if.true.nlvm_system.nim.551.10:                   ; preds = %if.true.nlvm_system.nim.545.8
  %call.res.nlvm_system.nim.553.22 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 1)
  %i1.call.res.nlvm_system.nim.553.22.not = icmp eq i8 %call.res.nlvm_system.nim.553.22, 0
  br i1 %i1.call.res.nlvm_system.nim.553.22.not, label %andor.next.nlvm_system.nim.553.46, label %andor.end.nlvm_system.nim.553.46

andor.next.nlvm_system.nim.553.46:                ; preds = %if.true.nlvm_system.nim.551.10
  %call.res.nlvm_system.nim.553.56 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 4)
  br label %andor.end.nlvm_system.nim.553.46

andor.end.nlvm_system.nim.553.46:                 ; preds = %andor.next.nlvm_system.nim.553.46, %if.true.nlvm_system.nim.551.10
  %and.res.nlvm_system.nim.553.46 = phi i8 [ 1, %if.true.nlvm_system.nim.551.10 ], [ %call.res.nlvm_system.nim.553.56, %andor.next.nlvm_system.nim.553.46 ]
  %i1.and.res.nlvm_system.nim.553.46.not = icmp eq i8 %and.res.nlvm_system.nim.553.46, 0
  br i1 %i1.and.res.nlvm_system.nim.553.46.not, label %if.false.nlvm_system.nim.553.12, label %if.true.nlvm_system.nim.553.12

if.true.nlvm_system.nim.553.12:                   ; preds = %andor.end.nlvm_system.nim.553.46
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  store i64 %call.res.nlvm_system.nim.542.41, ptr %Result, align 8
  %objconstr.f1.Result31 = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %Result, i64 0, i32 1
  store ptr %call.res.nlvm_system.nim.525.30, ptr %objconstr.f1.Result31, align 8
  br label %secReturn

if.false.nlvm_system.nim.553.12:                  ; preds = %andor.end.nlvm_system.nim.553.46
  %call.res.nlvm_system.nim.560.28 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 8)
  %not.call.res.nlvm_system.nim.560.28 = icmp eq i8 %call.res.nlvm_system.nim.560.28, 0
  br i1 %not.call.res.nlvm_system.nim.560.28, label %if.true.nlvm_system.nim.553.1235, label %if.end.nlvm_system.nim.545.8

if.true.nlvm_system.nim.553.1235:                 ; preds = %if.false.nlvm_system.nim.553.12
  call void @abort()
  unreachable

if.false.nlvm_system.nim.551.10:                  ; preds = %if.true.nlvm_system.nim.545.8
  br i1 %i1.load.arg.native.not, label %if.end.nlvm_system.nim.545.8, label %if.true.nlvm_system.nim.551.1037

if.true.nlvm_system.nim.551.1037:                 ; preds = %if.false.nlvm_system.nim.551.10
  %call.res.nlvm_system.nim.566.47 = call fastcc ptr @toNlvmException__WSru48z9adNOfNkRTxb6cKg(ptr %unwindException)
  %load.dot.f0.load.exceptionHeader.nlvm_system.nim.567.25 = load ptr, ptr %call.res.nlvm_system.nim.566.47, align 8
  %call.res.nlvm_system.nim.567.53 = call fastcc ptr @exceptionType__ZBOqc7OnYTftAfmC9caN4NA(ptr %load.dot.f0.load.exceptionHeader.nlvm_system.nim.567.25)
  %isnil.nlvm_system.nim.569.23 = icmp eq ptr %call.res.nlvm_system.nim.567.53, null
  br i1 %isnil.nlvm_system.nim.569.23, label %if.true.nlvm_system.nim.569.12, label %if.end.nlvm_system.nim.569.12

if.true.nlvm_system.nim.569.12:                   ; preds = %if.true.nlvm_system.nim.551.1037
  call void @abort()
  unreachable

if.end.nlvm_system.nim.569.12:                    ; preds = %if.true.nlvm_system.nim.551.1037
  %call.res.nlvm_system.nim.572.24 = call fastcc i8 @canCatch__tj04SGLFDjXy7nG6j4lkuw(ptr nonnull %call.res.nlvm_system.nim.548.22, ptr nonnull %call.res.nlvm_system.nim.567.53)
  %i1.call.res.nlvm_system.nim.572.24.not = icmp eq i8 %call.res.nlvm_system.nim.572.24, 0
  br i1 %i1.call.res.nlvm_system.nim.572.24.not, label %if.end.nlvm_system.nim.545.8, label %if.true.nlvm_system.nim.572.12

if.true.nlvm_system.nim.572.12:                   ; preds = %if.end.nlvm_system.nim.569.12
  %call.res.nlvm_system.nim.573.24 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 1)
  %i1.call.res.nlvm_system.nim.573.24.not = icmp eq i8 %call.res.nlvm_system.nim.573.24, 0
  br i1 %i1.call.res.nlvm_system.nim.573.24.not, label %if.false.nlvm_system.nim.573.14, label %if.true.nlvm_system.nim.573.14

if.true.nlvm_system.nim.573.14:                   ; preds = %if.true.nlvm_system.nim.572.12
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  store i64 %call.res.nlvm_system.nim.542.41, ptr %Result, align 8
  %objconstr.f1.Result41 = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %Result, i64 0, i32 1
  store ptr %call.res.nlvm_system.nim.525.30, ptr %objconstr.f1.Result41, align 8
  br label %secReturn

if.false.nlvm_system.nim.573.14:                  ; preds = %if.true.nlvm_system.nim.572.12
  %call.res.nlvm_system.nim.579.30 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 8)
  %not.call.res.nlvm_system.nim.579.30 = icmp eq i8 %call.res.nlvm_system.nim.579.30, 0
  br i1 %not.call.res.nlvm_system.nim.579.30, label %if.true.nlvm_system.nim.573.1445, label %if.end.nlvm_system.nim.545.8

if.true.nlvm_system.nim.573.1445:                 ; preds = %if.false.nlvm_system.nim.573.14
  call void @abort()
  unreachable

if.false.nlvm_system.nim.545.8:                   ; preds = %while.cmp.nlvm_system.nim.539.6
  %icmp.IntSLT.nlvm_system.nim.583.24 = icmp slt i64 %call.res.nlvm_system.nim.542.41, 0
  br i1 %icmp.IntSLT.nlvm_system.nim.583.24, label %if.true.nlvm_system.nim.545.847, label %if.false.nlvm_system.nim.545.848

if.true.nlvm_system.nim.545.847:                  ; preds = %if.false.nlvm_system.nim.545.8
  br i1 %i1.load.arg.native49.not, label %if.false.nlvm_system.nim.585.10, label %if.true.nlvm_system.nim.585.10

if.true.nlvm_system.nim.585.10:                   ; preds = %if.true.nlvm_system.nim.545.847
  %call.res.nlvm_system.nim.587.47 = call fastcc ptr @toNlvmException__WSru48z9adNOfNkRTxb6cKg(ptr %unwindException)
  %load.dot.f0.load.exceptionHeader50.nlvm_system.nim.588.25 = load ptr, ptr %call.res.nlvm_system.nim.587.47, align 8
  %call.res.nlvm_system.nim.588.53 = call fastcc ptr @exceptionType__ZBOqc7OnYTftAfmC9caN4NA(ptr %load.dot.f0.load.exceptionHeader50.nlvm_system.nim.588.25)
  %isnil.nlvm_system.nim.590.23 = icmp eq ptr %call.res.nlvm_system.nim.588.53, null
  br i1 %isnil.nlvm_system.nim.590.23, label %if.true.nlvm_system.nim.590.12, label %if.end.nlvm_system.nim.590.12

if.true.nlvm_system.nim.590.12:                   ; preds = %if.true.nlvm_system.nim.585.10
  call void @abort()
  unreachable

if.end.nlvm_system.nim.590.12:                    ; preds = %if.true.nlvm_system.nim.585.10
  %call.res.nlvm_system.nim.593.36 = call fastcc i8 @exceptionSpecCanCatch__NToOjyfxiMxHljwa53axNg(i64 %call.res.nlvm_system.nim.542.41, ptr %ifx.res.nlvm_system.nim.498.6.0, i8 %call.res.nlvm_system.nim.496.26, ptr nonnull %call.res.nlvm_system.nim.588.53, ptr %ctx)
  %i1.call.res.nlvm_system.nim.593.36.not = icmp eq i8 %call.res.nlvm_system.nim.593.36, 0
  br i1 %i1.call.res.nlvm_system.nim.593.36.not, label %if.end.nlvm_system.nim.545.8, label %if.true.nlvm_system.nim.593.12

if.true.nlvm_system.nim.593.12:                   ; preds = %if.end.nlvm_system.nim.590.12
  %call.res.nlvm_system.nim.595.24 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 1)
  %i1.call.res.nlvm_system.nim.595.24.not = icmp eq i8 %call.res.nlvm_system.nim.595.24, 0
  br i1 %i1.call.res.nlvm_system.nim.595.24.not, label %if.false.nlvm_system.nim.595.14, label %if.true.nlvm_system.nim.595.14

if.true.nlvm_system.nim.595.14:                   ; preds = %if.true.nlvm_system.nim.593.12
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  store i64 %call.res.nlvm_system.nim.542.41, ptr %Result, align 8
  %objconstr.f1.Result56 = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %Result, i64 0, i32 1
  store ptr %call.res.nlvm_system.nim.525.30, ptr %objconstr.f1.Result56, align 8
  br label %secReturn

if.false.nlvm_system.nim.595.14:                  ; preds = %if.true.nlvm_system.nim.593.12
  %call.res.nlvm_system.nim.601.30 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 8)
  %not.call.res.nlvm_system.nim.601.30 = icmp eq i8 %call.res.nlvm_system.nim.601.30, 0
  br i1 %not.call.res.nlvm_system.nim.601.30, label %if.true.nlvm_system.nim.595.1460, label %if.end.nlvm_system.nim.545.8

if.true.nlvm_system.nim.595.1460:                 ; preds = %if.false.nlvm_system.nim.595.14
  call void @abort()
  unreachable

if.false.nlvm_system.nim.585.10:                  ; preds = %if.true.nlvm_system.nim.545.847
  %call.res.nlvm_system.nim.605.22 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 1)
  %i1.call.res.nlvm_system.nim.605.22.not = icmp eq i8 %call.res.nlvm_system.nim.605.22, 0
  br i1 %i1.call.res.nlvm_system.nim.605.22.not, label %andor.next.nlvm_system.nim.605.46, label %andor.end.nlvm_system.nim.605.46

andor.next.nlvm_system.nim.605.46:                ; preds = %if.false.nlvm_system.nim.585.10
  %call.res.nlvm_system.nim.605.56 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 4)
  br label %andor.end.nlvm_system.nim.605.46

andor.end.nlvm_system.nim.605.46:                 ; preds = %andor.next.nlvm_system.nim.605.46, %if.false.nlvm_system.nim.585.10
  %and.res.nlvm_system.nim.605.46 = phi i8 [ 1, %if.false.nlvm_system.nim.585.10 ], [ %call.res.nlvm_system.nim.605.56, %andor.next.nlvm_system.nim.605.46 ]
  %i1.and.res.nlvm_system.nim.605.46.not = icmp eq i8 %and.res.nlvm_system.nim.605.46, 0
  br i1 %i1.and.res.nlvm_system.nim.605.46.not, label %if.false.nlvm_system.nim.605.12, label %if.true.nlvm_system.nim.605.12

if.true.nlvm_system.nim.605.12:                   ; preds = %andor.end.nlvm_system.nim.605.46
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  store i64 %call.res.nlvm_system.nim.542.41, ptr %Result, align 8
  %objconstr.f1.Result65 = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %Result, i64 0, i32 1
  store ptr %call.res.nlvm_system.nim.525.30, ptr %objconstr.f1.Result65, align 8
  br label %secReturn

if.false.nlvm_system.nim.605.12:                  ; preds = %andor.end.nlvm_system.nim.605.46
  %call.res.nlvm_system.nim.611.28 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 8)
  %not.call.res.nlvm_system.nim.611.28 = icmp eq i8 %call.res.nlvm_system.nim.611.28, 0
  br i1 %not.call.res.nlvm_system.nim.611.28, label %if.true.nlvm_system.nim.605.1269, label %if.end.nlvm_system.nim.545.8

if.true.nlvm_system.nim.605.1269:                 ; preds = %if.false.nlvm_system.nim.605.12
  call void @abort()
  unreachable

if.false.nlvm_system.nim.545.848:                 ; preds = %if.false.nlvm_system.nim.545.8
  %call.res.nlvm_system.nim.615.20 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 2)
  %i1.call.res.nlvm_system.nim.615.20.not = icmp eq i8 %call.res.nlvm_system.nim.615.20, 0
  br i1 %i1.call.res.nlvm_system.nim.615.20.not, label %andor.end.nlvm_system.nim.615.45, label %andor.next.nlvm_system.nim.615.45

andor.next.nlvm_system.nim.615.45:                ; preds = %if.false.nlvm_system.nim.545.848
  %call.res.nlvm_system.nim.615.60 = call fastcc i8 @isSet__RXXRC6c7mBgsMo5017vXWw(i32 %actions, i32 4)
  %not.call.res.nlvm_system.nim.615.60 = icmp eq i8 %call.res.nlvm_system.nim.615.60, 0
  %zext.not.call.res.nlvm_system.nim.615.60 = zext i1 %not.call.res.nlvm_system.nim.615.60 to i8
  br label %andor.end.nlvm_system.nim.615.45

andor.end.nlvm_system.nim.615.45:                 ; preds = %andor.next.nlvm_system.nim.615.45, %if.false.nlvm_system.nim.545.848
  %and.res.nlvm_system.nim.615.45 = phi i8 [ 0, %if.false.nlvm_system.nim.545.848 ], [ %zext.not.call.res.nlvm_system.nim.615.60, %andor.next.nlvm_system.nim.615.45 ]
  %i1.and.res.nlvm_system.nim.615.45.not = icmp eq i8 %and.res.nlvm_system.nim.615.45, 0
  br i1 %i1.and.res.nlvm_system.nim.615.45.not, label %if.end.nlvm_system.nim.545.8, label %if.true.nlvm_system.nim.615.10

if.true.nlvm_system.nim.615.10:                   ; preds = %andor.end.nlvm_system.nim.615.45
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  store i64 0, ptr %Result, align 8
  %objconstr.f1.Result74 = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %Result, i64 0, i32 1
  store ptr %call.res.nlvm_system.nim.525.30, ptr %objconstr.f1.Result74, align 8
  br label %secReturn

if.end.nlvm_system.nim.545.8:                     ; preds = %andor.end.nlvm_system.nim.615.45, %if.end.nlvm_system.nim.590.12, %if.false.nlvm_system.nim.595.14, %if.false.nlvm_system.nim.605.12, %if.false.nlvm_system.nim.553.12, %if.end.nlvm_system.nim.569.12, %if.false.nlvm_system.nim.573.14, %if.false.nlvm_system.nim.551.10
  %load.action.nlvm_system.nim.622.19 = load ptr, ptr %action, align 8
  store ptr %load.action.nlvm_system.nim.622.19, ptr %temp, align 8
  %call.res.nlvm_system.nim.623.31 = call fastcc i64 @readSleb128__gH5gjqmdvbF1N6m5C5EezQ(ptr nonnull %temp)
  %icmp.IntEQ.nlvm_system.nim.624.24 = icmp eq i64 %call.res.nlvm_system.nim.623.31, 0
  br i1 %icmp.IntEQ.nlvm_system.nim.624.24, label %if.true.nlvm_system.nim.624.8, label %if.end.nlvm_system.nim.624.8

if.true.nlvm_system.nim.624.8:                    ; preds = %if.end.nlvm_system.nim.545.8
  call void @llvm.memset.p0.i32(ptr noundef nonnull align 1 dereferenceable(24) %Result, i8 0, i32 24, i1 false)
  br label %secReturn

if.end.nlvm_system.nim.624.8:                     ; preds = %if.end.nlvm_system.nim.545.8
  call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %action, i64 %call.res.nlvm_system.nim.623.31)
  br label %while.cmp.nlvm_system.nim.539.6

while.false.nlvm_system.nim.512.2:                ; preds = %while.cmp.nlvm_system.nim.512.2
  call void @abort()
  unreachable

secReturn:                                        ; preds = %if.true.nlvm_system.nim.624.8, %if.true.nlvm_system.nim.615.10, %if.true.nlvm_system.nim.605.12, %if.true.nlvm_system.nim.595.14, %if.true.nlvm_system.nim.573.14, %if.true.nlvm_system.nim.553.12, %if.end.nlvm_system.nim.528.8, %if.true.nlvm_system.nim.528.8, %if.true.nlvm_system.nim.521.6, %if.true.nlvm_system.nim.478.2, %if.false.nlvm_system.nim.466.24, %if.true.nlvm_system.nim.471.4, %if.true.nlvm_system.nim.467.4
  %.sink = phi i32 [ 8, %if.true.nlvm_system.nim.624.8 ], [ 6, %if.true.nlvm_system.nim.615.10 ], [ 6, %if.true.nlvm_system.nim.605.12 ], [ 6, %if.true.nlvm_system.nim.595.14 ], [ 6, %if.true.nlvm_system.nim.573.14 ], [ 6, %if.true.nlvm_system.nim.553.12 ], [ 8, %if.end.nlvm_system.nim.528.8 ], [ 6, %if.true.nlvm_system.nim.528.8 ], [ 8, %if.true.nlvm_system.nim.521.6 ], [ 8, %if.true.nlvm_system.nim.478.2 ], [ 3, %if.false.nlvm_system.nim.466.24 ], [ 2, %if.true.nlvm_system.nim.471.4 ], [ 3, %if.true.nlvm_system.nim.467.4 ]
  %objconstr.f2.Result77 = getelementptr inbounds %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw, ptr %Result, i64 0, i32 2
  store i32 %.sink, ptr %objconstr.f2.Result77, align 4
  ret void
}

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1 immarg) #7

declare i64 @_Unwind_GetLanguageSpecificData(ptr) local_unnamed_addr #2

declare i64 @_Unwind_GetIPInfo(ptr, ptr) local_unnamed_addr #2

declare i64 @_Unwind_GetRegionStart(ptr) local_unnamed_addr #2

define internal fastcc i8 @readBytes__PWh39clIDOmkjzqIlHUg7dw(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca i8, align 1
  store i8 0, ptr %result, align 1
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 1)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 1)
  %load.result = load i8, ptr %result, align 1
  ret i8 %load.result
}

define internal fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr %v, i64 %n) unnamed_addr #2 {
secAlloca:
  %load.load.arg.v1 = load ptr, ptr %v, align 8
  %call.res.nlvm_system.nim.100.7 = tail call fastcc ptr @offset__YHoNX1PdDlvFG8b3QdsbtQ(ptr %load.load.arg.v1, i64 %n)
  store ptr %call.res.nlvm_system.nim.100.7, ptr %v, align 8
  ret void
}

define internal fastcc ptr @offset__YHoNX1PdDlvFG8b3QdsbtQ(ptr %v, i64 %n) unnamed_addr #2 {
secAlloca:
  %cast.pi.nlvm_system.nim.97.16 = ptrtoint ptr %v to i64
  %binop.Add.nlvm_system.nim.97.30 = add i64 %cast.pi.nlvm_system.nim.97.16, %n
  %cast.ip.nlvm_system.nim.97.2 = inttoptr i64 %binop.Add.nlvm_system.nim.97.30 to ptr
  ret ptr %cast.ip.nlvm_system.nim.97.2
}

define internal fastcc ptr @readEncodedPointer__9auLfEfTlnw9bxGABGB5cTrA(ptr %v, ptr %ctx, i8 %encoding) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.nlvm_system.nim.144.14 = icmp eq i8 %encoding, -1
  br i1 %icmp.IntEQ.nlvm_system.nim.144.14, label %secReturn, label %if.end.nlvm_system.nim.144.2

if.end.nlvm_system.nim.144.2:                     ; preds = %secAlloca
  %load.load.arg.v = load ptr, ptr %v, align 8
  %icmp.IntEQ.nlvm_system.nim.149.14 = icmp eq i8 %encoding, 80
  br i1 %icmp.IntEQ.nlvm_system.nim.149.14, label %if.true.nlvm_system.nim.149.2, label %if.end.nlvm_system.nim.149.2

if.true.nlvm_system.nim.149.2:                    ; preds = %if.end.nlvm_system.nim.144.2
  tail call fastcc void @roundUp__kHpT0ny10vv0bkL4Dlf2cA(ptr nonnull %v)
  %call.res.nlvm_system.nim.151.12 = tail call fastcc ptr @readBytes__HxyI0qArMES0lRT9cE1N9bpQ(ptr nonnull %v)
  br label %secReturn

if.end.nlvm_system.nim.149.2:                     ; preds = %if.end.nlvm_system.nim.144.2
  %binop.And.nlvm_system.nim.154.18 = and i8 %encoding, 15
  switch i8 %binop.And.nlvm_system.nim.154.18, label %case.else.do.nlvm_system.nim.154.4 [
    i8 0, label %case.of.1.do.nlvm_system.nim.154.4
    i8 1, label %case.of.2.do.nlvm_system.nim.154.4
    i8 2, label %case.of.3.do.nlvm_system.nim.154.4
    i8 3, label %case.of.4.do.nlvm_system.nim.154.4
    i8 4, label %case.of.5.do.nlvm_system.nim.154.4
    i8 9, label %case.of.6.do.nlvm_system.nim.154.4
    i8 10, label %case.of.7.do.nlvm_system.nim.154.4
    i8 11, label %case.of.8.do.nlvm_system.nim.154.4
    i8 12, label %case.of.9.do.nlvm_system.nim.154.4
  ]

case.of.1.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.155.25 = tail call fastcc i64 @readBytes__USXji6b67zGF0dm5rVUCsw(ptr nonnull %v)
  br label %case.end.nlvm_system.nim.154.4

case.of.2.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.156.37 = tail call fastcc i64 @readUleb128__HIfJTdqzTTZsWYVjPIEnOg(ptr nonnull %v)
  br label %case.end.nlvm_system.nim.154.4

case.of.3.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.157.36 = tail call fastcc i16 @readBytes__KySB1N9a2H2TgzvLFblzq0Q(ptr nonnull %v)
  %toe.z.call.res.nlvm_system.nim.157.36 = zext i16 %call.res.nlvm_system.nim.157.36 to i64
  br label %case.end.nlvm_system.nim.154.4

case.of.4.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.158.36 = tail call fastcc i32 @readBytes__ARkjzP8Ua9b0IaprEq59auKQ(ptr nonnull %v)
  %toe.z.call.res.nlvm_system.nim.158.36 = zext i32 %call.res.nlvm_system.nim.158.36 to i64
  br label %case.end.nlvm_system.nim.154.4

case.of.5.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.159.36 = tail call fastcc i64 @readBytes__mq1OiuEU7DneokNejGiW7A(ptr nonnull %v)
  br label %case.end.nlvm_system.nim.154.4

case.of.6.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.160.37 = tail call fastcc i64 @readSleb128__gH5gjqmdvbF1N6m5C5EezQ(ptr nonnull %v)
  br label %case.end.nlvm_system.nim.154.4

case.of.7.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.161.36 = tail call fastcc i16 @readBytes__rhfPVnMue9adITCZ9bKSialw(ptr nonnull %v)
  %toe.s.call.res.nlvm_system.nim.161.36 = sext i16 %call.res.nlvm_system.nim.161.36 to i64
  br label %case.end.nlvm_system.nim.154.4

case.of.8.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.162.36 = tail call fastcc i32 @readBytes__pFyJGIA61L5Wt59bZfTC3Vg(ptr nonnull %v)
  %toe.s.call.res.nlvm_system.nim.162.36 = sext i32 %call.res.nlvm_system.nim.162.36 to i64
  br label %case.end.nlvm_system.nim.154.4

case.of.9.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  %call.res.nlvm_system.nim.163.36 = tail call fastcc i64 @readBytes__ZrJFB9bQjXj0ZfS6BMrblnQ(ptr nonnull %v)
  br label %case.end.nlvm_system.nim.154.4

case.else.do.nlvm_system.nim.154.4:               ; preds = %if.end.nlvm_system.nim.149.2
  tail call void @abort()
  unreachable

case.end.nlvm_system.nim.154.4:                   ; preds = %case.of.9.do.nlvm_system.nim.154.4, %case.of.8.do.nlvm_system.nim.154.4, %case.of.7.do.nlvm_system.nim.154.4, %case.of.6.do.nlvm_system.nim.154.4, %case.of.5.do.nlvm_system.nim.154.4, %case.of.4.do.nlvm_system.nim.154.4, %case.of.3.do.nlvm_system.nim.154.4, %case.of.2.do.nlvm_system.nim.154.4, %case.of.1.do.nlvm_system.nim.154.4
  %case.res.nlvm_system.nim.154.4.0 = phi i64 [ %call.res.nlvm_system.nim.155.25, %case.of.1.do.nlvm_system.nim.154.4 ], [ %call.res.nlvm_system.nim.156.37, %case.of.2.do.nlvm_system.nim.154.4 ], [ %toe.z.call.res.nlvm_system.nim.157.36, %case.of.3.do.nlvm_system.nim.154.4 ], [ %toe.z.call.res.nlvm_system.nim.158.36, %case.of.4.do.nlvm_system.nim.154.4 ], [ %call.res.nlvm_system.nim.159.36, %case.of.5.do.nlvm_system.nim.154.4 ], [ %call.res.nlvm_system.nim.160.37, %case.of.6.do.nlvm_system.nim.154.4 ], [ %toe.s.call.res.nlvm_system.nim.161.36, %case.of.7.do.nlvm_system.nim.154.4 ], [ %toe.s.call.res.nlvm_system.nim.162.36, %case.of.8.do.nlvm_system.nim.154.4 ], [ %call.res.nlvm_system.nim.163.36, %case.of.9.do.nlvm_system.nim.154.4 ]
  %icmp.IntEQ.nlvm_system.nim.166.7 = icmp eq i64 %case.res.nlvm_system.nim.154.4.0, 0
  br i1 %icmp.IntEQ.nlvm_system.nim.166.7, label %secReturn, label %if.end.nlvm_system.nim.166.2

if.end.nlvm_system.nim.166.2:                     ; preds = %case.end.nlvm_system.nim.154.4
  %binop.And.nlvm_system.nim.169.18 = lshr i8 %encoding, 4
  %0 = and i8 %binop.And.nlvm_system.nim.169.18, 7
  switch i8 %0, label %case.else.do.nlvm_system.nim.169.4 [
    i8 0, label %case.end.nlvm_system.nim.169.4
    i8 1, label %case.of.2.do.nlvm_system.nim.169.4
    i8 4, label %case.of.3.do.nlvm_system.nim.169.4
    i8 2, label %case.of.4.do.nlvm_system.nim.169.4
    i8 3, label %case.of.5.do.nlvm_system.nim.169.4
  ]

case.of.2.do.nlvm_system.nim.169.4:               ; preds = %if.end.nlvm_system.nim.166.2
  %cast.pi.nlvm_system.nim.171.23 = ptrtoint ptr %load.load.arg.v to i64
  br label %case.end.nlvm_system.nim.169.4

case.of.3.do.nlvm_system.nim.169.4:               ; preds = %if.end.nlvm_system.nim.166.2
  %call.res.nlvm_system.nim.172.28 = tail call i64 @_Unwind_GetRegionStart(ptr %ctx)
  br label %case.end.nlvm_system.nim.169.4

case.of.4.do.nlvm_system.nim.169.4:               ; preds = %if.end.nlvm_system.nim.166.2
  %call.res.nlvm_system.nim.173.28 = tail call i64 @_Unwind_GetTextRelBase(ptr %ctx)
  br label %case.end.nlvm_system.nim.169.4

case.of.5.do.nlvm_system.nim.169.4:               ; preds = %if.end.nlvm_system.nim.166.2
  %call.res.nlvm_system.nim.174.28 = tail call i64 @_Unwind_GetDataRelBase(ptr %ctx)
  br label %case.end.nlvm_system.nim.169.4

case.else.do.nlvm_system.nim.169.4:               ; preds = %if.end.nlvm_system.nim.166.2
  tail call void @abort()
  unreachable

case.end.nlvm_system.nim.169.4:                   ; preds = %if.end.nlvm_system.nim.166.2, %case.of.5.do.nlvm_system.nim.169.4, %case.of.4.do.nlvm_system.nim.169.4, %case.of.3.do.nlvm_system.nim.169.4, %case.of.2.do.nlvm_system.nim.169.4
  %case.res.nlvm_system.nim.169.4.0 = phi i64 [ %cast.pi.nlvm_system.nim.171.23, %case.of.2.do.nlvm_system.nim.169.4 ], [ %call.res.nlvm_system.nim.172.28, %case.of.3.do.nlvm_system.nim.169.4 ], [ %call.res.nlvm_system.nim.173.28, %case.of.4.do.nlvm_system.nim.169.4 ], [ %call.res.nlvm_system.nim.174.28, %case.of.5.do.nlvm_system.nim.169.4 ], [ 0, %if.end.nlvm_system.nim.166.2 ]
  %binop.Add.nlvm_system.nim.177.14 = add i64 %case.res.nlvm_system.nim.154.4.0, %case.res.nlvm_system.nim.169.4.0
  %icmp.IntEQ.nlvm_system.nim.178.38 = icmp slt i8 %encoding, 0
  %cast.ip.nlvm_system.nim.179.4 = inttoptr i64 %binop.Add.nlvm_system.nim.177.14 to ptr
  br i1 %icmp.IntEQ.nlvm_system.nim.178.38, label %ifx.true.nlvm_system.nim.178.2, label %secReturn

ifx.true.nlvm_system.nim.178.2:                   ; preds = %case.end.nlvm_system.nim.169.4
  %load.cast.ip.nlvm_system.nim.179.4 = load ptr, ptr %cast.ip.nlvm_system.nim.179.4, align 8
  br label %secReturn

secReturn:                                        ; preds = %case.end.nlvm_system.nim.169.4, %ifx.true.nlvm_system.nim.178.2, %case.end.nlvm_system.nim.154.4, %secAlloca, %if.true.nlvm_system.nim.149.2
  %result.0 = phi ptr [ null, %secAlloca ], [ %call.res.nlvm_system.nim.151.12, %if.true.nlvm_system.nim.149.2 ], [ null, %case.end.nlvm_system.nim.154.4 ], [ %load.cast.ip.nlvm_system.nim.179.4, %ifx.true.nlvm_system.nim.178.2 ], [ %cast.ip.nlvm_system.nim.179.4, %case.end.nlvm_system.nim.169.4 ]
  ret ptr %result.0
}

define internal fastcc void @roundUp__kHpT0ny10vv0bkL4Dlf2cA(ptr %v) unnamed_addr #2 {
secAlloca:
  %load.load.arg.v1 = load ptr, ptr %v, align 8
  %cast.pi.nlvm_system.nim.103.21 = ptrtoint ptr %load.load.arg.v1 to i64
  %binop.Sub.nlvm_system.nim.103.43 = add i64 %cast.pi.nlvm_system.nim.103.21, 7
  %binop.And.nlvm_system.nim.103.48 = and i64 %binop.Sub.nlvm_system.nim.103.43, -8
  %cast.ip.nlvm_system.nim.103.6 = inttoptr i64 %binop.And.nlvm_system.nim.103.48 to ptr
  store ptr %cast.ip.nlvm_system.nim.103.6, ptr %v, align 8
  ret void
}

define internal fastcc ptr @readBytes__HxyI0qArMES0lRT9cE1N9bpQ(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca ptr, align 8
  store ptr null, ptr %result, align 8
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 8)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 8)
  %load.result = load ptr, ptr %result, align 8
  ret ptr %load.result
}

define internal fastcc i64 @readBytes__USXji6b67zGF0dm5rVUCsw(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca i64, align 8
  store i64 0, ptr %result, align 8
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 8)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 8)
  %load.result = load i64, ptr %result, align 8
  ret i64 %load.result
}

define internal fastcc i64 @readUleb128__HIfJTdqzTTZsWYVjPIEnOg(ptr %v) unnamed_addr #2 {
secAlloca:
  br label %while.cmp.nlvm_system.nim.116.2

while.cmp.nlvm_system.nim.116.2:                  ; preds = %while.cmp.nlvm_system.nim.116.2, %secAlloca
  %shift.0 = phi i64 [ 0, %secAlloca ], [ %inc.nv.nlvm_system.nim.119.10, %while.cmp.nlvm_system.nim.116.2 ]
  %result.0 = phi i64 [ 0, %secAlloca ], [ %binop.Or.nlvm_system.nim.118.20, %while.cmp.nlvm_system.nim.116.2 ]
  %call.res.nlvm_system.nim.117.13 = tail call fastcc i8 @readBytes__PWh39clIDOmkjzqIlHUg7dw(ptr %v)
  %binop.And.nlvm_system.nim.118.39 = and i8 %call.res.nlvm_system.nim.117.13, 127
  %toe.z.binop.And.nlvm_system.nim.118.39 = zext i8 %binop.And.nlvm_system.nim.118.39 to i64
  %binop.Shl.nlvm_system.nim.118.49 = shl i64 %toe.z.binop.And.nlvm_system.nim.118.39, %shift.0
  %binop.Or.nlvm_system.nim.118.20 = or i64 %result.0, %binop.Shl.nlvm_system.nim.118.49
  %inc.nv.nlvm_system.nim.119.10 = add i64 %shift.0, 7
  %icmp.IntEQ.nlvm_system.nim.120.20 = icmp sgt i8 %call.res.nlvm_system.nim.117.13, -1
  br i1 %icmp.IntEQ.nlvm_system.nim.120.20, label %secReturn, label %while.cmp.nlvm_system.nim.116.2

secReturn:                                        ; preds = %while.cmp.nlvm_system.nim.116.2
  ret i64 %binop.Or.nlvm_system.nim.118.20
}

define internal fastcc i16 @readBytes__KySB1N9a2H2TgzvLFblzq0Q(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca i16, align 2
  store i16 0, ptr %result, align 2
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 2)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 2)
  %load.result = load i16, ptr %result, align 2
  ret i16 %load.result
}

define internal fastcc i32 @readBytes__ARkjzP8Ua9b0IaprEq59auKQ(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca i32, align 4
  store i32 0, ptr %result, align 4
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 4)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 4)
  %load.result = load i32, ptr %result, align 4
  ret i32 %load.result
}

define internal fastcc i64 @readBytes__mq1OiuEU7DneokNejGiW7A(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca i64, align 8
  store i64 0, ptr %result, align 8
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 8)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 8)
  %load.result = load i64, ptr %result, align 8
  ret i64 %load.result
}

define internal fastcc i64 @readSleb128__gH5gjqmdvbF1N6m5C5EezQ(ptr %v) unnamed_addr #2 {
secAlloca:
  br label %while.cmp.nlvm_system.nim.130.2

while.cmp.nlvm_system.nim.130.2:                  ; preds = %while.cmp.nlvm_system.nim.130.2, %secAlloca
  %shift.0 = phi i64 [ 0, %secAlloca ], [ %inc.nv.nlvm_system.nim.133.12, %while.cmp.nlvm_system.nim.130.2 ]
  %res.0 = phi i64 [ 0, %secAlloca ], [ %binop.Or.nlvm_system.nim.132.16, %while.cmp.nlvm_system.nim.130.2 ]
  %call.res.nlvm_system.nim.131.11 = tail call fastcc i8 @readBytes__PWh39clIDOmkjzqIlHUg7dw(ptr %v)
  %binop.And.nlvm_system.nim.132.35 = and i8 %call.res.nlvm_system.nim.131.11, 127
  %toe.z.binop.And.nlvm_system.nim.132.35 = zext i8 %binop.And.nlvm_system.nim.132.35 to i64
  %binop.Shl.nlvm_system.nim.132.45 = shl i64 %toe.z.binop.And.nlvm_system.nim.132.35, %shift.0
  %binop.Or.nlvm_system.nim.132.16 = or i64 %res.0, %binop.Shl.nlvm_system.nim.132.45
  %inc.nv.nlvm_system.nim.133.12 = add i64 %shift.0, 7
  %icmp.IntEQ.nlvm_system.nim.134.22 = icmp sgt i8 %call.res.nlvm_system.nim.131.11, -1
  br i1 %icmp.IntEQ.nlvm_system.nim.134.22, label %block.exit.nlvm_system.nim.135.8, label %while.cmp.nlvm_system.nim.130.2

block.exit.nlvm_system.nim.135.8:                 ; preds = %while.cmp.nlvm_system.nim.130.2
  %icmp.IntULT.nlvm_system.nim.137.11 = icmp ult i64 %inc.nv.nlvm_system.nim.133.12, 64
  %0 = and i8 %call.res.nlvm_system.nim.131.11, 64
  %not.bool.i8.icmp.IntEQ.nlvm_system.nim.137.52 = icmp ne i8 %0, 0
  %and.res.nlvm_system.nim.137.34.in = select i1 %icmp.IntULT.nlvm_system.nim.137.11, i1 %not.bool.i8.icmp.IntEQ.nlvm_system.nim.137.52, i1 false
  %binop.Shl.nlvm_system.nim.138.29 = shl i64 -1, %inc.nv.nlvm_system.nim.133.12
  %binop.Or.nlvm_system.nim.138.14 = select i1 %and.res.nlvm_system.nim.137.34.in, i64 %binop.Shl.nlvm_system.nim.138.29, i64 0
  %res.1 = or i64 %binop.Or.nlvm_system.nim.132.16, %binop.Or.nlvm_system.nim.138.14
  ret i64 %res.1
}

define internal fastcc i16 @readBytes__rhfPVnMue9adITCZ9bKSialw(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca i16, align 2
  store i16 0, ptr %result, align 2
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 2)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 2)
  %load.result = load i16, ptr %result, align 2
  ret i16 %load.result
}

define internal fastcc i32 @readBytes__pFyJGIA61L5Wt59bZfTC3Vg(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca i32, align 4
  store i32 0, ptr %result, align 4
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 4)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 4)
  %load.result = load i32, ptr %result, align 4
  ret i32 %load.result
}

define internal fastcc i64 @readBytes__ZrJFB9bQjXj0ZfS6BMrblnQ(ptr %v) unnamed_addr #2 {
secAlloca:
  %result = alloca i64, align 8
  store i64 0, ptr %result, align 8
  %load.load.arg.v = load ptr, ptr %v, align 8
  call fastcc void @copyMem__i80o3k0SgEI5gTRCzYdyWA(ptr nonnull %result, ptr %load.load.arg.v, i64 8)
  tail call fastcc void @ptrAdd__QfiNAI1ikNB25ewTF1j2ow(ptr nonnull %v, i64 8)
  %load.result = load i64, ptr %result, align 8
  ret i64 %load.result
}

declare i64 @_Unwind_GetTextRelBase(ptr) local_unnamed_addr #2

declare i64 @_Unwind_GetDataRelBase(ptr) local_unnamed_addr #2

define internal fastcc ptr @getNimType__Z8bx1mGQSIl5Bo0SdP6Wrg(i64 %ttypeIndex, ptr %classInfo, i8 %ttypeEncoding, ptr %ctx) unnamed_addr #2 {
secAlloca:
  %call.res.nlvm_system.nim.282.32 = tail call fastcc ptr @getNimTypePtr__EN2lkOiiKLAFiuQfUZ56Ww(i64 %ttypeIndex, ptr %classInfo, i8 %ttypeEncoding, ptr %ctx)
  ret ptr %call.res.nlvm_system.nim.282.32
}

define internal fastcc ptr @getNimTypePtr__EN2lkOiiKLAFiuQfUZ56Ww(i64 %ttypeIndex, ptr %classInfo, i8 %ttypeEncoding, ptr %ctx) unnamed_addr #2 {
secAlloca:
  %tiPtr = alloca ptr, align 8
  %binop.And.nlvm_system.nim.225.25 = and i8 %ttypeEncoding, 15
  %case.cmp.nlvm_system.nim.225.6 = icmp eq i8 %binop.And.nlvm_system.nim.225.25, 0
  br i1 %case.cmp.nlvm_system.nim.225.6, label %case.end.nlvm_system.nim.225.6, label %case.of.2.nlvm_system.nim.225.6

case.of.2.nlvm_system.nim.225.6:                  ; preds = %secAlloca
  %0 = and i8 %ttypeEncoding, 7
  %or.cond = icmp eq i8 %0, 2
  br i1 %or.cond, label %case.end.nlvm_system.nim.225.6, label %case.of.3.nlvm_system.nim.225.6

case.of.3.nlvm_system.nim.225.6:                  ; preds = %case.of.2.nlvm_system.nim.225.6
  %1 = and i8 %ttypeEncoding, 7
  %or.cond11 = icmp eq i8 %1, 3
  br i1 %or.cond11, label %case.end.nlvm_system.nim.225.6, label %case.of.4.nlvm_system.nim.225.6

case.of.4.nlvm_system.nim.225.6:                  ; preds = %case.of.3.nlvm_system.nim.225.6
  %2 = and i8 %ttypeEncoding, 7
  %or.cond12 = icmp eq i8 %2, 4
  br i1 %or.cond12, label %case.end.nlvm_system.nim.225.6, label %case.else.do.nlvm_system.nim.225.6

case.else.do.nlvm_system.nim.225.6:               ; preds = %case.of.4.nlvm_system.nim.225.6
  tail call void @abort()
  unreachable

case.end.nlvm_system.nim.225.6:                   ; preds = %case.of.4.nlvm_system.nim.225.6, %case.of.3.nlvm_system.nim.225.6, %case.of.2.nlvm_system.nim.225.6, %secAlloca
  %.sink = phi i64 [ -8, %secAlloca ], [ -2, %case.of.2.nlvm_system.nim.225.6 ], [ -4, %case.of.3.nlvm_system.nim.225.6 ], [ -8, %case.of.4.nlvm_system.nim.225.6 ]
  %binop.Mul.nlvm_system.nim.229.54.neg = mul i64 %.sink, %ttypeIndex
  %call.res.nlvm_system.nim.232.23 = tail call fastcc ptr @offset__YHoNX1PdDlvFG8b3QdsbtQ(ptr %classInfo, i64 %binop.Mul.nlvm_system.nim.229.54.neg)
  store ptr %call.res.nlvm_system.nim.232.23, ptr %tiPtr, align 8
  %call.res.nlvm_system.nim.233.7 = call fastcc ptr @readEncodedPointer__9auLfEfTlnw9bxGABGB5cTrA(ptr nonnull %tiPtr, ptr %ctx, i8 %ttypeEncoding)
  ret ptr %call.res.nlvm_system.nim.233.7
}

define internal fastcc ptr @exceptionType__ZBOqc7OnYTftAfmC9caN4NA(ptr %e) unnamed_addr #2 {
secAlloca:
  %load.load.arg.e = load ptr, ptr %e, align 8
  ret ptr %load.load.arg.e
}

define internal fastcc i8 @canCatch__tj04SGLFDjXy7nG6j4lkuw(ptr %catchType, ptr %thrownType) unnamed_addr #2 {
secAlloca:
  %icmp.IntEQ.nlvm_system.nim.425.12.not1 = icmp eq ptr %thrownType, null
  br i1 %icmp.IntEQ.nlvm_system.nim.425.12.not1, label %secReturn, label %while.true.nlvm_system.nim.425.2

while.true.nlvm_system.nim.425.2:                 ; preds = %secAlloca, %if.end.nlvm_system.nim.426.4
  %tmp.02 = phi ptr [ %load.dot.f4.load.tmp.nlvm_system.nim.427.10, %if.end.nlvm_system.nim.426.4 ], [ %thrownType, %secAlloca ]
  %icmp.IntEQ.nlvm_system.nim.426.11 = icmp eq ptr %tmp.02, %catchType
  br i1 %icmp.IntEQ.nlvm_system.nim.426.11, label %secReturn, label %if.end.nlvm_system.nim.426.4

if.end.nlvm_system.nim.426.4:                     ; preds = %while.true.nlvm_system.nim.425.2
  %dot.f4.load.tmp.nlvm_system.nim.427.10 = getelementptr inbounds %TNimType, ptr %tmp.02, i64 0, i32 4
  %load.dot.f4.load.tmp.nlvm_system.nim.427.10 = load ptr, ptr %dot.f4.load.tmp.nlvm_system.nim.427.10, align 8
  %icmp.IntEQ.nlvm_system.nim.425.12.not = icmp eq ptr %load.dot.f4.load.tmp.nlvm_system.nim.427.10, null
  br i1 %icmp.IntEQ.nlvm_system.nim.425.12.not, label %secReturn, label %while.true.nlvm_system.nim.425.2

secReturn:                                        ; preds = %if.end.nlvm_system.nim.426.4, %while.true.nlvm_system.nim.425.2, %secAlloca
  %result.0 = phi i8 [ 0, %secAlloca ], [ 0, %if.end.nlvm_system.nim.426.4 ], [ 1, %while.true.nlvm_system.nim.425.2 ]
  ret i8 %result.0
}

define internal fastcc i8 @exceptionSpecCanCatch__NToOjyfxiMxHljwa53axNg(i64 %specIndex, ptr %classInfo, i8 %ttypeEncoding, ptr %excpType, ptr %ctx) unnamed_addr #2 {
secAlloca:
  %temp = alloca ptr, align 8
  %binop.Sub.nlvm_system.nim.51.58 = xor i64 %specIndex, -1
  %call.res.nlvm_system.nim.448.22 = tail call fastcc ptr @offset__YHoNX1PdDlvFG8b3QdsbtQ(ptr %classInfo, i64 %binop.Sub.nlvm_system.nim.51.58)
  store ptr %call.res.nlvm_system.nim.448.22, ptr %temp, align 8
  br label %while.cmp.nlvm_system.nim.451.2

while.cmp.nlvm_system.nim.451.2:                  ; preds = %if.end.nlvm_system.nim.453.4, %secAlloca
  %call.res.nlvm_system.nim.452.35 = call fastcc i64 @readUleb128__HIfJTdqzTTZsWYVjPIEnOg(ptr nonnull %temp)
  %icmp.IntEQ.nlvm_system.nim.453.18 = icmp eq i64 %call.res.nlvm_system.nim.452.35, 0
  br i1 %icmp.IntEQ.nlvm_system.nim.453.18, label %secReturn, label %if.end.nlvm_system.nim.453.4

if.end.nlvm_system.nim.453.4:                     ; preds = %while.cmp.nlvm_system.nim.451.2
  %call.res.nlvm_system.nim.456.30 = call fastcc ptr @getNimType__Z8bx1mGQSIl5Bo0SdP6Wrg(i64 %call.res.nlvm_system.nim.452.35, ptr %classInfo, i8 %ttypeEncoding, ptr %ctx)
  %call.res.nlvm_system.nim.457.16 = call fastcc i8 @canCatch__tj04SGLFDjXy7nG6j4lkuw(ptr %call.res.nlvm_system.nim.456.30, ptr %excpType)
  %i1.call.res.nlvm_system.nim.457.16.not = icmp eq i8 %call.res.nlvm_system.nim.457.16, 0
  br i1 %i1.call.res.nlvm_system.nim.457.16.not, label %while.cmp.nlvm_system.nim.451.2, label %secReturn

secReturn:                                        ; preds = %while.cmp.nlvm_system.nim.451.2, %if.end.nlvm_system.nim.453.4
  %result.0 = phi i8 [ 0, %if.end.nlvm_system.nim.453.4 ], [ 1, %while.cmp.nlvm_system.nim.451.2 ]
  ret i8 %result.0
}

define internal fastcc void @setRegisters__CZG1q1AnoyxwjgdRyOVWAw(ptr %unwindException, ptr %ctx, %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %results) unnamed_addr #2 {
secAlloca:
  %results.fca.0.extract = extractvalue %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %results, 0
  %results.fca.1.extract = extractvalue %tyObject_ScanResult__ZFY9cjoG73a6OWB0Day4MYw %results, 1
  %cast.pi.nlvm_system.nim.637.32 = ptrtoint ptr %unwindException to i64
  tail call void @_Unwind_SetGR(ptr %ctx, i32 0, i64 %cast.pi.nlvm_system.nim.637.32)
  tail call void @_Unwind_SetGR(ptr %ctx, i32 1, i64 %results.fca.0.extract)
  %cast.pi.nlvm_system.nim.639.12 = ptrtoint ptr %results.fca.1.extract to i64
  tail call void @_Unwind_SetIP(ptr %ctx, i64 %cast.pi.nlvm_system.nim.639.12)
  ret void
}

declare void @_Unwind_SetGR(ptr, i32, i64) local_unnamed_addr #2

declare void @_Unwind_SetIP(ptr, i64) local_unnamed_addr #2

define internal fastcc void @asgnRef(ptr nocapture %dest) unnamed_addr #2 {
secAlloca:
  %load.load.arg.dest = load ptr, ptr %dest, align 8
  %icmp.IntEQ.gc.nim.287.12.not = icmp eq ptr %load.load.arg.dest, null
  br i1 %icmp.IntEQ.gc.nim.287.12.not, label %if.end.gc.nim.287.2, label %if.true.gc.nim.287.2

if.true.gc.nim.287.2:                             ; preds = %secAlloca
  %cast.pi.gc.nim.177.23.i = ptrtoint ptr %load.load.arg.dest to i64
  %binop.Sub.arithmetics.nim.418.26.i.i = add i64 %cast.pi.gc.nim.177.23.i, -16
  %cast.ip.gc.nim.177.11.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i to ptr
  tail call fastcc void @decRef__AT1eRuflKWyTTBdLjEDZbg_2(ptr %cast.ip.gc.nim.177.11.i)
  br label %if.end.gc.nim.287.2

if.end.gc.nim.287.2:                              ; preds = %secAlloca, %if.true.gc.nim.287.2
  store ptr null, ptr %dest, align 8
  ret void
}

define internal void @Marker_tyRef__eaxM9cvk9cnRSzfgEze9a0FxA(ptr nocapture readonly %v, i64 %op) {
secAlloca:
  %mk.exceptions.nim.39.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 1
  %load.mk.exceptions.nim.39.4 = load ptr, ptr %mk.exceptions.nim.39.4, align 8
  %toe.t.load.arg.op.i = trunc i64 %op to i8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.39.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.43.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 3
  %load.mk.exceptions.nim.43.4 = load ptr, ptr %mk.exceptions.nim.43.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.43.4, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.49.6 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 4
  %load.mk.exceptions.nim.49.6 = load ptr, ptr %mk.exceptions.nim.49.6, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.49.6, i8 %toe.t.load.arg.op.i)
  %mk.exceptions.nim.50.4 = getelementptr inbounds %Exception, ptr %v, i64 0, i32 5
  %load.mk.exceptions.nim.50.4 = load ptr, ptr %mk.exceptions.nim.50.4, align 8
  tail call fastcc void @doOperation__sl6eqhLncFedgwzv6TlMVw(ptr %load.mk.exceptions.nim.50.4, i8 %toe.t.load.arg.op.i)
  ret void
}

declare ptr @signal(i32, ptr) local_unnamed_addr #2

declare i32 @raise(i32) local_unnamed_addr #2

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none)
define i64 @getRefcount(ptr %p) local_unnamed_addr #22 {
secAlloca:
  %cast.pi.gc.nim.177.23.i = ptrtoint ptr %p to i64
  %binop.Sub.arithmetics.nim.418.26.i.i = add i64 %cast.pi.gc.nim.177.23.i, -16
  %cast.ip.gc.nim.177.11.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i to ptr
  %load.dot.f0.call.res.gc.nim.184.20 = load i64, ptr %cast.ip.gc.nim.177.11.i, align 8
  %binop.AShr.gc.nim.184.33 = ashr i64 %load.dot.f0.call.res.gc.nim.184.20, 3
  ret i64 %binop.AShr.gc.nim.184.33
}

; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read)
define internal void @Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g(ptr readonly %v, i64 %op) #12 {
secAlloca:
  ret void
}

declare void @scanf(ptr, ...) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare void @flockfile(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare void @funlockfile(ptr nocapture noundef) local_unnamed_addr #4

define i32 @main(i32 %0, ptr nocapture readnone %1) local_unnamed_addr {
secAlloca:
  %result.i1.i = alloca ptr, align 8
  %result.i.i = alloca i64, align 8
  %locals.i.i = alloca ptr, align 8
  %bottom = alloca i64, align 8
  call fastcc void @nimGC_setStackBottom(ptr nonnull %bottom)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %locals.i.i)
  store ptr %locals.i.i, ptr %locals.i.i, align 8
  %load.locals.system.nim.2203.29.i.i = load volatile ptr, ptr %locals.i.i, align 8
  call fastcc void @nimGC_setStackBottom(ptr %load.locals.system.nim.2203.29.i.i)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %locals.i.i)
  store i64 4194304, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 1), align 8
  store i64 500, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 2), align 16
  store i64 0, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 3), align 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 8), i8 0, i64 48, i1 false)
  store i64 1024, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 3, i32 1), align 16
  %call.res.alloc.nim.899.21.i.i.i.i.i.i = call dereferenceable(8208) ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 8208)
  %dot.f1.load.result.alloc.nim.900.23.i.i.i.i.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i.i.i.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i.i.i.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i.i.i.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i.i.i.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i.i.i.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i.i.i.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i.i.i.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i.i.i.i.i to ptr
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %cast.ip.alloc.nim.902.13.i.i.i.i.i.i, i8 0, i64 8192, i1 false)
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i.i.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 3, i32 2), align 8
  store i64 0, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 5), align 8
  store i64 1024, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 5, i32 1), align 16
  %call.res.alloc.nim.899.21.i.i.i.i1.i.i = call dereferenceable(8208) ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 8208)
  %dot.f1.load.result.alloc.nim.900.23.i.i.i.i2.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i.i.i1.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i.i.i2.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i.i.i3.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i.i.i1.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i.i.i4.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i.i.i3.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i.i.i5.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i.i.i4.i.i to ptr
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %cast.ip.alloc.nim.902.13.i.i.i.i5.i.i, i8 0, i64 8192, i1 false)
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i5.i.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 5, i32 2), align 8
  store i64 0, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 4), align 16
  store i64 1024, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 4, i32 1), align 8
  %call.res.alloc.nim.899.21.i.i.i.i6.i.i = call dereferenceable(8208) ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 8208)
  %dot.f1.load.result.alloc.nim.900.23.i.i.i.i7.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i.i.i6.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i.i.i7.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i.i.i8.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i.i.i6.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i.i.i9.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i.i.i8.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i.i.i10.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i.i.i9.i.i to ptr
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %cast.ip.alloc.nim.902.13.i.i.i.i10.i.i, i8 0, i64 8192, i1 false)
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i10.i.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 4, i32 2), align 16
  %call.res.alloc.nim.899.21.i.i.i.i11.i.i = call dereferenceable(8208) ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 8208)
  %dot.f1.load.result.alloc.nim.900.23.i.i.i.i12.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i.i.i11.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i.i.i12.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i.i.i13.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i.i.i11.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i.i.i14.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i.i.i13.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i.i.i15.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i.i.i14.i.i to ptr
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %cast.ip.alloc.nim.902.13.i.i.i.i15.i.i, i8 0, i64 8192, i1 false)
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i15.i.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 9, i32 3), align 8
  store i64 1023, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 9, i32 1), align 8
  store i64 0, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 9), align 16
  store ptr null, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 9, i32 2), align 16
  store i64 0, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 10), align 16
  store i64 1024, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 10, i32 1), align 8
  %call.res.alloc.nim.899.21.i.i.i.i16.i.i = call dereferenceable(8208) ptr @rawAlloc__mE4QEVyMvGRVliDWDngZCQ(ptr nonnull getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 7), i64 8208)
  %dot.f1.load.result.alloc.nim.900.23.i.i.i.i17.i.i = getelementptr inbounds %tyObject_FreeCell__ndAp6vG5Dz9ctYa8teTqTBg, ptr %call.res.alloc.nim.899.21.i.i.i.i16.i.i, i64 0, i32 1
  store i64 1, ptr %dot.f1.load.result.alloc.nim.900.23.i.i.i.i17.i.i, align 8
  %cast.pi.alloc.nim.902.27.i.i.i.i18.i.i = ptrtoint ptr %call.res.alloc.nim.899.21.i.i.i.i16.i.i to i64
  %binop.Add.arithmetics.nim.407.26.i.i.i.i.i19.i.i = add i64 %cast.pi.alloc.nim.902.27.i.i.i.i18.i.i, 16
  %cast.ip.alloc.nim.902.13.i.i.i.i20.i.i = inttoptr i64 %binop.Add.arithmetics.nim.407.26.i.i.i.i.i19.i.i to ptr
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %cast.ip.alloc.nim.902.13.i.i.i.i20.i.i, i8 0, i64 8192, i1 false)
  store ptr %cast.ip.alloc.nim.902.13.i.i.i.i20.i.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 10, i32 2), align 16
  %load.load.arg.memLoc.i.i.i = load i64, ptr @gHeapidGenerator__hd54mEUTGcVuZLChYgtR9bg, align 8
  %binop.over.Add.load.load.arg.memLoc.i.i.i = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %load.load.arg.memLoc.i.i.i, i64 1)
  %binop.isover.load.load.arg.memLoc.i.i.i = extractvalue { i64, i1 } %binop.over.Add.load.load.arg.memLoc.i.i.i, 1
  br i1 %binop.isover.load.load.arg.memLoc.i.i.i, label %raise.call.binop.isover.load.load.arg.memLoc.i.i.i, label %.system.init.exit

raise.call.binop.isover.load.load.arg.memLoc.i.i.i: ; preds = %secAlloca
  call fastcc void @raiseOverflow()
  unreachable

.system.init.exit:                                ; preds = %secAlloca
  %binop.v.load.load.arg.memLoc.i.i.i = extractvalue { i64, i1 } %binop.over.Add.load.load.arg.memLoc.i.i.i, 0
  store i64 %binop.v.load.load.arg.memLoc.i.i.i, ptr @gHeapidGenerator__hd54mEUTGcVuZLChYgtR9bg, align 8
  %binop.Sub.gc.nim.329.49.i.i = add nsw i64 %binop.v.load.load.arg.memLoc.i.i.i, -1
  store i64 %binop.Sub.gc.nim.329.49.i.i, ptr getelementptr inbounds (%tyObject_GcHeap__9cYrg1QD59cOkUWsvS2vFl7w, ptr @gch__IcYaEuuWivYAS86vFMTS3Q, i64 0, i32 11), align 8
  %call.res.excpt.nim.661.12.i.i = call ptr @signal(i32 2, ptr nonnull @signalHandler)
  %call.res.excpt.nim.662.12.i.i = call ptr @signal(i32 11, ptr nonnull @signalHandler)
  %call.res.excpt.nim.663.12.i.i = call ptr @signal(i32 6, ptr nonnull @signalHandler)
  %call.res.excpt.nim.664.12.i.i = call ptr @signal(i32 8, ptr nonnull @signalHandler)
  %call.res.excpt.nim.665.12.i.i = call ptr @signal(i32 4, ptr nonnull @signalHandler)
  %call.res.excpt.nim.672.16.i.i = call ptr @signal(i32 13, ptr nonnull inttoptr (i64 1 to ptr))
  %call.res.gc.nim.482.20.i.i.i.i = call dereferenceable(272) ptr @rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(ptr nonnull @.typeinfo.tySequence__qwqHTkRvwhrRyENtudHQ7g, i64 272, ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q)
  %dot.f1.load.result.mmdisp.nim.108.24.i.i.i = getelementptr inbounds %TGenericSeq, ptr %call.res.gc.nim.482.20.i.i.i.i, i64 0, i32 1
  store i64 32, ptr %dot.f1.load.result.mmdisp.nim.108.24.i.i.i, align 8
  store i64 32, ptr %call.res.gc.nim.482.20.i.i.i.i, align 16
  %seq.data.call.cp.nimNewSeqOfCap.i.i = getelementptr inbounds %tySequence__qwqHTkRvwhrRyENtudHQ7g, ptr %call.res.gc.nim.482.20.i.i.i.i, i64 0, i32 1, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %seq.data.call.cp.nimNewSeqOfCap.i.i, ptr noundef nonnull align 16 dereferenceable(256) getelementptr inbounds ({ %TGenericSeq, [32 x i64] }, ptr @.seq.source.nim.6.9, i64 0, i32 1, i64 0), i64 256, i1 false)
  call fastcc void @unsureAsgnRef(ptr nonnull @a__S9c9aTs9cATanGY4iXm1EOyGw, ptr nonnull %call.res.gc.nim.482.20.i.i.i.i)
  %load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i = load ptr, ptr @a__S9c9aTs9cATanGY4iXm1EOyGw, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i.i)
  store i64 0, ptr %result.i.i, align 8
  call void (ptr, ...) @scanf(ptr nonnull @.cstr._lld, ptr nonnull %result.i.i)
  %load.result.i.i = load i64, ptr %result.i.i, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i.i)
  %binop.over.Sub.call.res.source.nim.9.11.i = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %load.result.i.i, i64 -1)
  %binop.isover.call.res.source.nim.9.11.i = extractvalue { i64, i1 } %binop.over.Sub.call.res.source.nim.9.11.i, 1
  br i1 %binop.isover.call.res.source.nim.9.11.i, label %raise.call.binop.isover.call.res.source.nim.9.11.i, label %raise.cont.binop.isover.call.res.source.nim.9.11.i

raise.call.binop.isover.call.res.source.nim.9.11.i: ; preds = %.system.init.exit
  call fastcc void @raiseOverflow()
  unreachable

raise.cont.binop.isover.call.res.source.nim.9.11.i: ; preds = %.system.init.exit
  %binop.v.call.res.source.nim.9.11.i = extractvalue { i64, i1 } %binop.over.Sub.call.res.source.nim.9.11.i, 0
  %nilcheck.isnil.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i = icmp eq ptr %load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i, null
  br i1 %nilcheck.isnil.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i, label %raise.call.bes.bounds.i, label %nilcheck.done.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i

nilcheck.done.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i: ; preds = %raise.cont.binop.isover.call.res.source.nim.9.11.i
  %load.seq.len.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i = load i64, ptr %load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i, align 8
  %bes.bounds.not.i = icmp ult i64 %binop.v.call.res.source.nim.9.11.i, %load.seq.len.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i
  br i1 %bes.bounds.not.i, label %raise.cont.bes.bounds.i, label %raise.call.bes.bounds.i

raise.call.bes.bounds.i:                          ; preds = %nilcheck.done.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i, %raise.cont.binop.isover.call.res.source.nim.9.11.i
  %nilcheck.phi.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.55.i = phi i64 [ %load.seq.len.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i, %nilcheck.done.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i ], [ 0, %raise.cont.binop.isover.call.res.source.nim.9.11.i ]
  %2 = add i64 %nilcheck.phi.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.55.i, -1
  call fastcc void @raiseIndexError2(i64 %binop.v.call.res.source.nim.9.11.i, i64 %2)
  unreachable

raise.cont.bes.bounds.i:                          ; preds = %nilcheck.done.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i
  %seq.data.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i = getelementptr inbounds %tySequence__qwqHTkRvwhrRyENtudHQ7g, ptr %load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i, i64 0, i32 1, i64 %binop.v.call.res.source.nim.9.11.i
  %load.seq.data.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i = load i64, ptr %seq.data.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i1.i)
  store ptr null, ptr %result.i1.i, align 8
  call fastcc void @addInt__2bhkDH9aqL9crGzoL6X7p9adw(ptr nonnull %result.i1.i, i64 %load.seq.data.load.a__S9c9aTs9cATanGY4iXm1EOyGw.source.nim.9.5.i)
  %load.result.i2.i = load ptr, ptr %result.i1.i, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i1.i)
  %call.cp.copyString.i = call fastcc ptr @copyString(ptr %load.result.i2.i)
  %load.stdout.io.nim.814.18.i.i = load ptr, ptr @stdout, align 8
  call void @flockfile(ptr %load.stdout.io.nim.814.18.i.i)
  %icmp.IntEQ.sysstr.nim.93.7.i.i.i = icmp eq ptr %call.cp.copyString.i, null
  br i1 %icmp.IntEQ.sysstr.nim.93.7.i.i.i, label %.source.init.exit, label %andor.end.sysstr.nim.93.14.i.i.i

andor.end.sysstr.nim.93.14.i.i.i:                 ; preds = %raise.cont.bes.bounds.i
  %load.dot.f0.dot.f0.load.arg.s1.i.i.i = load i64, ptr %call.cp.copyString.i, align 8
  %load.dot.f0.dot.f0.load.arg.s1.fr.i.i.i = freeze i64 %load.dot.f0.dot.f0.load.arg.s1.i.i.i
  %icmp.IntEQ.sysstr.nim.93.23.i.i.i = icmp eq i64 %load.dot.f0.dot.f0.load.arg.s1.fr.i.i.i, 0
  %dot.f1.load.arg.s2.i.i.i = getelementptr inbounds %NimStringDesc, ptr %call.cp.copyString.i, i64 0, i32 1
  %spec.select.i.i = select i1 %icmp.IntEQ.sysstr.nim.93.23.i.i.i, ptr @.cstr., ptr %dot.f1.load.arg.s2.i.i.i
  br label %.source.init.exit

.source.init.exit:                                ; preds = %raise.cont.bes.bounds.i, %andor.end.sysstr.nim.93.14.i.i.i
  %3 = phi ptr [ %spec.select.i.i, %andor.end.sysstr.nim.93.14.i.i.i ], [ @.cstr., %raise.cont.bes.bounds.i ]
  %nilcheck.phi.load.load.s.io.nim.821.52.i.i = phi i64 [ %load.dot.f0.dot.f0.load.arg.s1.fr.i.i.i, %andor.end.sysstr.nim.93.14.i.i.i ], [ 0, %raise.cont.bes.bounds.i ]
  %load.stdout.io.nim.821.63.i.i = load ptr, ptr @stdout, align 8
  %call.res.io.nim.817.10.i.i = call i64 @fwrite(ptr %3, i64 %nilcheck.phi.load.load.s.io.nim.821.52.i.i, i64 1, ptr %load.stdout.io.nim.821.63.i.i)
  %load.stdout.io.nim.823.58.i.i = load ptr, ptr @stdout, align 8
  %fputc.i.i = call i32 @fputc(i32 10, ptr %load.stdout.io.nim.823.58.i.i)
  %load.stdout.io.nim.824.23.i.i = load ptr, ptr @stdout, align 8
  %call.res.io.nim.824.22.i.i = call i32 @fflush(ptr %load.stdout.io.nim.824.23.i.i)
  %load.stdout.io.nim.826.20.i.i = load ptr, ptr @stdout, align 8
  call void @funlockfile(ptr %load.stdout.io.nim.826.20.i.i)
  %load.nim_program_result = load i64, ptr @nim_program_result, align 8
  %toe.t.load.nim_program_result = trunc i64 %load.nim_program_result to i32
  ret i32 %toe.t.load.nim_program_result
}

; Function Attrs: nounwind
define internal void @.nlvm.registrar() #23 {
secBody:
  tail call fastcc void @nimRegisterGlobalMarker(ptr nonnull @.marker.g.ehGlobals__9aLVoM6lBi9b45CqCPL9cneTg)
  tail call fastcc void @nimRegisterGlobalMarker(ptr nonnull @.marker.g.currException__9bVPeDJlYTi9bQApZpfH8wjg)
  tail call fastcc void @nimRegisterGlobalMarker(ptr nonnull @.marker.g.a__S9c9aTs9cATanGY4iXm1EOyGw)
  ret void
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
define internal void @.marker.g.ehGlobals__9aLVoM6lBi9b45CqCPL9cneTg() #24 {
secBody:
  ret void
}

; Function Attrs: nounwind
define internal fastcc void @nimRegisterGlobalMarker(ptr %markerProc) unnamed_addr #25 {
secAlloca:
  %load.globalMarkersLen.gc_common.nim.469.5 = load i64, ptr @globalMarkersLen, align 8
  %icmp.IntSLE.gc_common.nim.469.22 = icmp slt i64 %load.globalMarkersLen.gc_common.nim.469.5, 3500
  br i1 %icmp.IntSLE.gc_common.nim.469.22, label %if.true.gc_common.nim.469.2, label %if.false.gc_common.nim.469.2

if.true.gc_common.nim.469.2:                      ; preds = %secAlloca
  %bra.arr.geparr.gc_common.nim.470.17 = getelementptr inbounds [3500 x ptr], ptr @globalMarkers, i64 0, i64 %load.globalMarkersLen.gc_common.nim.469.5
  store ptr %markerProc, ptr %bra.arr.geparr.gc_common.nim.470.17, align 8
  %inc.nv.gc_common.nim.471.8 = add nsw i64 %load.globalMarkersLen.gc_common.nim.469.5, 1
  store i64 %inc.nv.gc_common.nim.471.8, ptr @globalMarkersLen, align 8
  ret void

if.false.gc_common.nim.469.2:                     ; preds = %secAlloca
  %load.stderr.gc_common.nim.473.4 = load ptr, ptr @stderr, align 8
  tail call fastcc void @rawWrite(ptr %load.stderr.gc_common.nim.473.4, ptr nonnull @.cstr._GC__cannot_regi..)
  tail call void @exit(i64 1)
  unreachable
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
define internal void @.marker.g.currException__9bVPeDJlYTi9bQApZpfH8wjg() #24 {
secBody:
  ret void
}

define internal void @.marker.g.a__S9c9aTs9cATanGY4iXm1EOyGw() {
secBody:
  %load.a__S9c9aTs9cATanGY4iXm1EOyGw = load ptr, ptr @a__S9c9aTs9cATanGY4iXm1EOyGw, align 8
  %icmp.IntEQ.gc.nim.669.7.i = icmp eq ptr %load.a__S9c9aTs9cATanGY4iXm1EOyGw, null
  br i1 %icmp.IntEQ.gc.nim.669.7.i, label %doOperation__sl6eqhLncFedgwzv6TlMVw.exit, label %if.end.gc.nim.669.2.i

if.end.gc.nim.669.2.i:                            ; preds = %secBody
  %cast.pi.gc.nim.177.23.i.i = ptrtoint ptr %load.a__S9c9aTs9cATanGY4iXm1EOyGw to i64
  %binop.Sub.arithmetics.nim.418.26.i.i.i = add i64 %cast.pi.gc.nim.177.23.i.i, -16
  %cast.ip.gc.nim.177.11.i.i = inttoptr i64 %binop.Sub.arithmetics.nim.418.26.i.i.i to ptr
  tail call fastcc void @markS__SOJE9bROCOc8iabVsKM64Sg(ptr nonnull @gch__IcYaEuuWivYAS86vFMTS3Q, ptr %cast.ip.gc.nim.177.11.i.i) #31
  br label %doOperation__sl6eqhLncFedgwzv6TlMVw.exit

doOperation__sl6eqhLncFedgwzv6TlMVw.exit:         ; preds = %secBody, %if.end.gc.nim.669.2.i
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #26

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smin.i64(i64, i64) #26

; Function Attrs: nofree nounwind
declare noundef i32 @fputc(i32 noundef, ptr nocapture noundef) local_unnamed_addr #27

; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #28

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #29

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #29

attributes #0 = { mustprogress nofree noinline nosync nounwind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) "no-frame-pointer-elim"="true" }
attributes #1 = { allockind("alloc,uninitialized") allocsize(1) "alloc-family"="nimgc" "no-frame-pointer-elim"="true" }
attributes #2 = { "no-frame-pointer-elim"="true" }
attributes #3 = { noinline noreturn nounwind "no-frame-pointer-elim"="true" }
attributes #4 = { nofree nounwind "no-frame-pointer-elim"="true" }
attributes #5 = { mustprogress nofree nounwind willreturn memory(argmem: read) }
attributes #6 = { noreturn nounwind "no-frame-pointer-elim"="true" }
attributes #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) "no-frame-pointer-elim"="true" }
attributes #9 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { cold noinline noreturn "no-frame-pointer-elim"="true" }
attributes #11 = { cold noreturn "no-frame-pointer-elim"="true" }
attributes #12 = { nofree norecurse nosync nounwind memory(argmem: read) }
attributes #13 = { noinline allockind("alloc,zeroed") allocsize(1) "alloc-family"="nimgc" "no-frame-pointer-elim"="true" }
attributes #14 = { mustprogress nofree noinline norecurse nounwind willreturn memory(read, inaccessiblemem: readwrite) "no-frame-pointer-elim"="true" }
attributes #15 = { mustprogress nofree noinline norecurse nounwind willreturn memory(read, argmem: none, inaccessiblemem: readwrite) "no-frame-pointer-elim"="true" }
attributes #16 = { mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) "no-frame-pointer-elim"="true" }
attributes #17 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #18 = { nofree nosync nounwind memory(readwrite, inaccessiblemem: none) "no-frame-pointer-elim"="true" }
attributes #19 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) "no-frame-pointer-elim"="true" }
attributes #20 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) "no-frame-pointer-elim"="true" }
attributes #21 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-frame-pointer-elim"="true" }
attributes #22 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) "no-frame-pointer-elim"="true" }
attributes #23 = { nounwind }
attributes #24 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) }
attributes #25 = { nounwind "no-frame-pointer-elim"="true" }
attributes #26 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #27 = { nofree nounwind }
attributes #28 = { nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #29 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #30 = { cold }
attributes #31 = { "function-inline-cost-multiplier"="2" }
