#{{{ header
{.hints:off checks:off.}
import algorithm, sequtils, tables, macros, math, sets, strutils
when defined(MYDEBUG):
  import header

proc scanf(formatstr: cstring){.header: "<stdio.h>", varargs.}
proc getchar(): char {.header: "<stdio.h>", varargs.}
proc nextInt(): int = scanf("%lld",addr result)
proc nextFloat(): float = scanf("%lf",addr result)
proc nextString(): string =
  var get = false
  result = ""
  while true:
    var c = getchar()
    if int(c) > int(' '):
      get = true
      result.add(c)
    else:
      if get: break
      get = false
type SomeSignedInt = int|int8|int16|int32|int64|BiggestInt
type SomeUnsignedInt = uint|uint8|uint16|uint32|uint64
type SomeInteger = SomeSignedInt|SomeUnsignedInt
type SomeFloat = float|float32|float64|BiggestFloat
template `max=`*(x,y:typed):void = x = max(x,y)
template `min=`*(x,y:typed):void = x = min(x,y)
template inf(T): untyped = 
  when T is SomeFloat: T(Inf)
  elif T is SomeInteger: ((T(1) shl T(sizeof(T)*8-2)) - (T(1) shl T(sizeof(T)*4-1)))
  else: assert(false)

proc sort[T](v: var seq[T]) = v.sort(cmp[T])

proc discardableId[T](x: T): T {.discardable.} =
  return x
macro `:=`(x, y: untyped): untyped =
  if (x.kind == nnkIdent):
    return quote do:
      when declaredInScope(`x`):
        `x` = `y`
      else:
        var `x` = `y`
      discardableId(`x`)
  else:
    return quote do:
      `x` = `y`
      discardableId(`x`)
#}}}

let YES = "Yes"
let NO = "No"

proc solve(A:int, B:int) =
  let t = A * B
  if A * B mod 2 == 0:
    echo NO
  else:
    echo YES
  return

#{{{ main function
proc main() =
  var A = 0
  A = nextInt()
  var B = 0
  B = nextInt()
  solve(A, B);
  return

main()
#}}}

; 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 }

@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" }
@.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" }
@.str.Yes = private constant { %TGenericSeq, [4 x i8] } { %TGenericSeq { i64 3, i64 4611686018427387907 }, [4 x i8] c"Yes\00" }
@.str.No = private constant { %TGenericSeq, [3 x i8] } { %TGenericSeq { i64 2, i64 4611686018427387906 }, [3 x i8] c"No\00" }
@.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, %align__vzThvqZajaR9ct9cQ7SOy1tQ.exit
  %res.025 = phi i64 [ %inc.nv.iterators_1.nim.93.9, %align__vzThvqZajaR9ct9cQ7SOy1tQ.exit ], [ 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
  %icmp.IntEQ.system.nim.1186.15.i = icmp eq i64 %load.dot.f1.load.dot.f4.load.dot.f1.load.arg.cell7, 0
  br i1 %icmp.IntEQ.system.nim.1186.15.i, label %align__vzThvqZajaR9ct9cQ7SOy1tQ.exit, label %if.false.system.nim.1186.2.i

if.false.system.nim.1186.2.i:                     ; preds = %while.true.iterators_1.nim.91.4
  %binop.over.Sub.load.arg.alignment2.i = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %load.dot.f1.load.dot.f4.load.dot.f1.load.arg.cell7, i64 -1)
  %binop.isover.load.arg.alignment2.i = extractvalue { i64, i1 } %binop.over.Sub.load.arg.alignment2.i, 1
  br i1 %binop.isover.load.arg.alignment2.i, label %raise.call.binop.isover.load.arg.alignment2.i, label %raise.cont.binop.isover.load.arg.alignment2.i

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

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

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

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

align__vzThvqZajaR9ct9cQ7SOy1tQ.exit:             ; preds = %while.true.iterators_1.nim.91.4, %raise.cont.binop.isover.load.arg.alignment3.i
  %result.0.i = phi i64 [ %binop.And.system.nim.1190.41.i, %raise.cont.binop.isover.load.arg.alignment3.i ], [ 16, %while.true.iterators_1.nim.91.4 ]
  %binop.Add.arithmetics.nim.407.26.i = add i64 %result.0.i, %binop.Add.arithmetics.nim.407.26.i.i21
  %load.dot.f0.load.dot.f4.load.dot.f1.load.arg.cell8 = load i64, ptr %load.dot.f4.load.dot.f1.load.arg.cell7, 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.cell7, 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 = %align__vzThvqZajaR9ct9cQ7SOy1tQ.exit, %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
}

; 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 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
}

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
}

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:
  %bracket.arr.source.nim.57.9.i.sroa.0.i.i = alloca ptr, align 8
  %bracket.arr.source.nim.59.9.i.sroa.0.i.i = alloca ptr, align 8
  %result.i1.i.i = alloca i64, align 8
  %result.i.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 void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i.i.i)
  store i64 0, ptr %result.i.i.i, align 8
  call void (ptr, ...) @scanf(ptr nonnull @.cstr._lld, ptr nonnull %result.i.i.i)
  %load.result.i.i.i = load i64, ptr %result.i.i.i, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i.i.i)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %result.i1.i.i)
  store i64 0, ptr %result.i1.i.i, align 8
  call void (ptr, ...) @scanf(ptr nonnull @.cstr._lld, ptr nonnull %result.i1.i.i)
  %load.result.i2.i.i = load i64, ptr %result.i1.i.i, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %result.i1.i.i)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %bracket.arr.source.nim.57.9.i.sroa.0.i.i)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %bracket.arr.source.nim.59.9.i.sroa.0.i.i)
  %binop.Mul.source.nim.56.7.i.i.i = mul i64 %load.result.i2.i.i, %load.result.i.i.i
  %2 = and i64 %binop.Mul.source.nim.56.7.i.i.i, 1
  %icmp.IntEQ.source.nim.56.17.i.i.i = icmp eq i64 %2, 0
  br i1 %icmp.IntEQ.source.nim.56.17.i.i.i, label %if.true.source.nim.56.2.i.i.i, label %if.false.source.nim.56.2.i.i.i

if.true.source.nim.56.2.i.i.i:                    ; preds = %.system.init.exit
  %call.cp.copyString.i.i.i = call fastcc ptr @copyString(ptr nonnull @.str.No)
  store ptr %call.cp.copyString.i.i.i, ptr %bracket.arr.source.nim.57.9.i.sroa.0.i.i, align 8
  br label %solve__BGsvPP3PFjwOA3lmBKceGw.exit.i.i

if.false.source.nim.56.2.i.i.i:                   ; preds = %.system.init.exit
  %call.cp.copyString3.i.i.i = call fastcc ptr @copyString(ptr nonnull @.str.Yes)
  store ptr %call.cp.copyString3.i.i.i, ptr %bracket.arr.source.nim.59.9.i.sroa.0.i.i, align 8
  br label %solve__BGsvPP3PFjwOA3lmBKceGw.exit.i.i

solve__BGsvPP3PFjwOA3lmBKceGw.exit.i.i:           ; preds = %if.false.source.nim.56.2.i.i.i, %if.true.source.nim.56.2.i.i.i
  %bracket.arr.source.nim.57.9.sink.i.i.i = phi ptr [ %bracket.arr.source.nim.57.9.i.sroa.0.i.i, %if.true.source.nim.56.2.i.i.i ], [ %bracket.arr.source.nim.59.9.i.sroa.0.i.i, %if.false.source.nim.56.2.i.i.i ]
  %load.stdout.io.nim.814.18.i.i.i = load ptr, ptr @stdout, align 8
  call void @flockfile(ptr %load.stdout.io.nim.814.18.i.i.i)
  %load.load.s.io.nim.821.27.i.i.i = load ptr, ptr %bracket.arr.source.nim.57.9.sink.i.i.i, align 8
  %icmp.IntEQ.sysstr.nim.93.7.i.i.i.i = icmp eq ptr %load.load.s.io.nim.821.27.i.i.i, null
  br i1 %icmp.IntEQ.sysstr.nim.93.7.i.i.i.i, label %.source.init.exit, label %andor.end.sysstr.nim.93.14.i.i.i.i

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

.source.init.exit:                                ; preds = %solve__BGsvPP3PFjwOA3lmBKceGw.exit.i.i, %andor.end.sysstr.nim.93.14.i.i.i.i
  %3 = phi ptr [ %spec.select.i.i.i, %andor.end.sysstr.nim.93.14.i.i.i.i ], [ @.cstr., %solve__BGsvPP3PFjwOA3lmBKceGw.exit.i.i ]
  %nilcheck.phi.load.load.s.io.nim.821.52.i.i.i = phi i64 [ %load.dot.f0.dot.f0.load.arg.s1.fr.i.i.i.i, %andor.end.sysstr.nim.93.14.i.i.i.i ], [ 0, %solve__BGsvPP3PFjwOA3lmBKceGw.exit.i.i ]
  %load.stdout.io.nim.821.63.i.i.i = load ptr, ptr @stdout, align 8
  %call.res.io.nim.817.10.i.i.i = call i64 @fwrite(ptr %3, i64 %nilcheck.phi.load.load.s.io.nim.821.52.i.i.i, i64 1, ptr %load.stdout.io.nim.821.63.i.i.i)
  %load.stdout.io.nim.823.58.i.i.i = load ptr, ptr @stdout, align 8
  %fputc.i.i.i = call i32 @fputc(i32 10, ptr %load.stdout.io.nim.823.58.i.i.i)
  %load.stdout.io.nim.824.23.i.i.i = load ptr, ptr @stdout, align 8
  %call.res.io.nim.824.22.i.i.i = call i32 @fflush(ptr %load.stdout.io.nim.824.23.i.i.i)
  %load.stdout.io.nim.826.20.i.i.i = load ptr, ptr @stdout, align 8
  call void @funlockfile(ptr %load.stdout.io.nim.826.20.i.i.i)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %bracket.arr.source.nim.57.9.i.sroa.0.i.i)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %bracket.arr.source.nim.59.9.i.sroa.0.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)
  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
}

; 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 }
