Skip to content

Instantly share code, notes, and snippets.

@alexcrichton
Created February 21, 2019 16:37
Show Gist options
  • Save alexcrichton/f0098f0505ce1476a2bef944b03ff06e to your computer and use it in GitHub Desktop.
Save alexcrichton/f0098f0505ce1476a2bef944b03ff06e to your computer and use it in GitHub Desktop.
set -ex
rm -f foo.wasm
# export PATH=$HOME/code/rust3/build/x86_64-unknown-linux-gnu/stage2/bin:$PATH
# export LD_LIBRARY_PATH=$HOME/code/rust3/build/x86_64-unknown-linux-gnu/stage2/lib
# rustc src/lib.rs -O --target wasm32-unknown-unknown --crate-type cdylib \
# -o foo.ll \
# -C codegen-units=1 \
# -C lto \
# --emit llvm-ir
export PATH=$HOME/code/rust3/build/x86_64-unknown-linux-gnu/llvm/bin:$PATH
export PATH=$HOME/code/rust3/build/x86_64-unknown-linux-gnu/lld/bin:$PATH
llc foo.ll -o foo.o -O2 -thread-model=single -filetype=obj \
-opt-bisect-limit=243
wasm-ld foo.o -o foo.wasm --no-entry --allow-undefined --export-dynamic
node foo.js
const fs = require('fs');
const bytes = fs.readFileSync('foo.wasm');
const m = new WebAssembly.Module(bytes);
let memory = null;
const i = new WebAssembly.Instance(m, {
env: {
dlog: console.log,
memcpy: (a, b, c) => {
const view = new Uint8Array(memory.buffer);
const dest = view.subarray(a, a + c);
const src = view.subarray(b, b + c);
dest.set(src);
return a;
},
}
});
memory = i.exports.memory;
i.exports.run_test();
; ModuleID = 'lib.3a1fbbbh-cgu.0'
source_filename = "lib.3a1fbbbh-cgu.0"
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32-unknown-unknown"
%"alloc::string::String" = type { [0 x i32], %"alloc::vec::Vec<u8>", [0 x i32] }
%"alloc::vec::Vec<u8>" = type { [0 x i32], { i8*, i32 }, [0 x i32], i32, [0 x i32] }
%"core::fmt::Arguments" = type { [0 x i32], { [0 x { [0 x i8]*, i32 }]*, i32 }, [0 x i32], { i32*, i32 }, [0 x i32], { [0 x { i8*, i8* }]*, i32 }, [0 x i32] }
%"core::fmt::Formatter" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], { i32, i32 }, [0 x i32], { i32, i32 }, [0 x i32], { {}*, [3 x i32]* }, [0 x i32], { i32*, i32* }, [0 x i32], { [0 x { i8*, i8* }]*, i32 }, [0 x i8], i8, [3 x i8] }
%"core::panic::PanicInfo" = type { [0 x i32], { {}*, [3 x i32]* }, [0 x i32], i32*, [0 x i32], %"core::panic::Location", [0 x i32] }
%"core::panic::Location" = type { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }
%"dlmalloc::dlmalloc::Chunk" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], %"dlmalloc::dlmalloc::Chunk"*, [0 x i32], %"dlmalloc::dlmalloc::Chunk"*, [0 x i32] }
%"dlmalloc::dlmalloc::TreeChunk" = type { [0 x i32], %"dlmalloc::dlmalloc::Chunk", [0 x i32], [2 x %"dlmalloc::dlmalloc::TreeChunk"*], [0 x i32], %"dlmalloc::dlmalloc::TreeChunk"*, [0 x i32], i32, [0 x i32] }
%"dlmalloc::dlmalloc::Dlmalloc" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], [66 x %"dlmalloc::dlmalloc::Chunk"*], [0 x i32], [32 x %"dlmalloc::dlmalloc::TreeChunk"*], [0 x i32], i32, [0 x i32], i32, [0 x i32], %"dlmalloc::dlmalloc::Chunk"*, [0 x i32], %"dlmalloc::dlmalloc::Chunk"*, [0 x i32], i32, [0 x i32], i32, [0 x i32], %"dlmalloc::dlmalloc::Segment", [0 x i32], i32, [0 x i32], i8*, [0 x i32], i32, [0 x i32] }
%"dlmalloc::dlmalloc::Segment" = type { [0 x i32], i8*, [0 x i32], i32, [0 x i32], %"dlmalloc::dlmalloc::Segment"*, [0 x i32], i32, [0 x i32] }
%"fmt::rt::v1::Argument" = type { [0 x i32], { i32, i32 }, [0 x i32], %"fmt::rt::v1::FormatSpec", [0 x i32] }
%"fmt::rt::v1::FormatSpec" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], { i32, i32 }, [0 x i32], { i32, i32 }, [0 x i8], i8, [3 x i8] }
%"core::fmt::Void.187" = type { [0 x i8], {}, [0 x i8], {}, [0 x i8] }
@0 = private unnamed_addr constant <{ [2 x i8] }> <{ [2 x i8] c"()" }>, align 1
@1 = private unnamed_addr constant <{ [10 x i8] }> <{ [10 x i8] c"x_offset: " }>, align 1
@2 = private unnamed_addr constant <{ [6 x i8] }> <{ [6 x i8] c", yi: " }>, align 1
@3 = private unnamed_addr constant <{ [8 x i8] }> <{ [8 x i8] c", cols: " }>, align 1
@4 = private unnamed_addr constant <{ i8*, [4 x i8], i8*, [4 x i8], i8*, [4 x i8] }> <{ i8* getelementptr inbounds (<{ [10 x i8] }>, <{ [10 x i8] }>* @1, i32 0, i32 0, i32 0), [4 x i8] c"\0A\00\00\00", i8* getelementptr inbounds (<{ [6 x i8] }>, <{ [6 x i8] }>* @2, i32 0, i32 0, i32 0), [4 x i8] c"\06\00\00\00", i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @3, i32 0, i32 0, i32 0), [4 x i8] c"\08\00\00\00" }>, align 4
@5 = private unnamed_addr constant <{ [4 x i8] }> <{ [4 x i8] c"*\00\00\00" }>, align 4
@6 = private unnamed_addr constant <{ i8*, [4 x i8] }> <{ i8* getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0, i32 0), [4 x i8] zeroinitializer }>, align 4
@_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E = internal unnamed_addr global <{ [8 x i8] }> zeroinitializer, align 8
@_ZN3std9panicking9HOOK_LOCK17hd2940cb5218d3756E = internal unnamed_addr global <{ [4 x i8] }> zeroinitializer, align 4
@_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E = internal global <{ [452 x i8] }> zeroinitializer, align 4
@_ZN3std5alloc4HOOK17h764bafd5839a31b5E = internal unnamed_addr constant <{ [4 x i8] }> zeroinitializer, align 4
@anon.744bfa4edaa14c29caacdd024c6ee3e0.0.llvm.12840304214050579564 = internal unnamed_addr constant { void (%"alloc::string::String"**)*, i32, i32, i1 (%"alloc::string::String"**, [0 x i8]*, i32)*, i1 (%"alloc::string::String"**, i32)*, i1 (%"alloc::string::String"**, %"core::fmt::Arguments"*)* } { void (%"alloc::string::String"**)* bitcast (void (%"alloc::vec::Vec<u8>"**)* @_ZN4core3ptr18real_drop_in_place17h11f9a8883a7a2a93E to void (%"alloc::string::String"**)*), i32 4, i32 4, i1 (%"alloc::string::String"**, [0 x i8]*, i32)* @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$9write_str17hd2f7186c6afb8473E", i1 (%"alloc::string::String"**, i32)* @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$10write_char17h3421ff6923860a71E", i1 (%"alloc::string::String"**, %"core::fmt::Arguments"*)* @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$9write_fmt17h6116dc4b2b375d0dE" }, align 4
@anon.3159f7bfd756b91e03039f83b95d896b.1 = private unnamed_addr constant <{ [23 x i8] }> <{ [23 x i8] c"src/liballoc/raw_vec.rs" }>, align 1
@anon.3159f7bfd756b91e03039f83b95d896b.6.llvm.13677019499217490248 = internal unnamed_addr constant <{ i8*, [4 x i8], i8*, [12 x i8] }> <{ i8* getelementptr inbounds (<{ [17 x i8] }>, <{ [17 x i8] }>* @anon.3159f7bfd756b91e03039f83b95d896b.5, i32 0, i32 0, i32 0), [4 x i8] c"\11\00\00\00", i8* getelementptr inbounds (<{ [23 x i8] }>, <{ [23 x i8] }>* @anon.3159f7bfd756b91e03039f83b95d896b.1, i32 0, i32 0, i32 0), [12 x i8] c"\17\00\00\00\EA\02\00\00\05\00\00\00" }>, align 4
@anon.3159f7bfd756b91e03039f83b95d896b.5 = private unnamed_addr constant <{ [17 x i8] }> <{ [17 x i8] c"capacity overflow" }>, align 1
@anon.4607067c643420ef3dad7445f19d8a9e.2 = private unnamed_addr constant <{ i8*, [4 x i8], i8*, [4 x i8] }> <{ i8* getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0, i32 0), [4 x i8] zeroinitializer, i8* getelementptr inbounds (<{ [2 x i8] }>, <{ [2 x i8] }>* @anon.4607067c643420ef3dad7445f19d8a9e.1, i32 0, i32 0, i32 0), [4 x i8] c"\02\00\00\00" }>, align 4
@anon.4607067c643420ef3dad7445f19d8a9e.4 = private unnamed_addr constant <{ i8*, [12 x i8] }> <{ i8* getelementptr inbounds (<{ [21 x i8] }>, <{ [21 x i8] }>* @anon.4607067c643420ef3dad7445f19d8a9e.3, i32 0, i32 0, i32 0), [12 x i8] c"\15\00\00\00\E5\03\00\00\05\00\00\00" }>, align 4
@anon.4607067c643420ef3dad7445f19d8a9e.3 = private unnamed_addr constant <{ [21 x i8] }> <{ [21 x i8] c"src/libcore/result.rs" }>, align 1
@anon.4607067c643420ef3dad7445f19d8a9e.1 = private unnamed_addr constant <{ [2 x i8] }> <{ [2 x i8] c": " }>, align 1
@anon.df567034a751418bb1907aa1d09cab77.0 = private unnamed_addr constant { { [0 x i8]*, i32 }, i32, i32 } { { [0 x i8]*, i32 } { [0 x i8]* bitcast ([44 x i8]* @str.0.314 to [0 x i8]*), i32 44 }, i32 355, i32 19 }, align 4
@anon.df567034a751418bb1907aa1d09cab77.2 = private unnamed_addr constant <{ [51 x i8] }> <{ [51 x i8] c"a formatting trait implementation returned an error" }>, align 1
@str.0.314 = internal constant [44 x i8] c"/home/alex/code/rust3/src/libcore/fmt/mod.rs"
@anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376 = internal unnamed_addr constant <{ [200 x i8] }> <{ [200 x i8] c"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899" }>, align 1
@anon.136c3a089fa491cfa7e187c04edf4986.16 = private unnamed_addr constant <{ i8*, [4 x i8], i8*, [4 x i8] }> <{ i8* getelementptr inbounds (<{ [32 x i8] }>, <{ [32 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.14, i32 0, i32 0, i32 0), [4 x i8] c" \00\00\00", i8* getelementptr inbounds (<{ [18 x i8] }>, <{ [18 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.15, i32 0, i32 0, i32 0), [4 x i8] c"\12\00\00\00" }>, align 4
@anon.136c3a089fa491cfa7e187c04edf4986.6 = private unnamed_addr constant <{ [0 x i8] }> zeroinitializer, align 4
@anon.136c3a089fa491cfa7e187c04edf4986.7 = private unnamed_addr constant { void ({}*)*, i32, i32, i64 ({}*)* } { void ({}*)* @_ZN4core3ptr18real_drop_in_place17h026a842523523ee8E, i32 0, i32 1, i64 ({}*)* @"_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h6d1bf52e02a96543E" }, align 4
@anon.136c3a089fa491cfa7e187c04edf4986.14 = private unnamed_addr constant <{ [32 x i8] }> <{ [32 x i8] c"index out of bounds: the len is " }>, align 1
@anon.136c3a089fa491cfa7e187c04edf4986.15 = private unnamed_addr constant <{ [18 x i8] }> <{ [18 x i8] c" but the index is " }>, align 1
@anon.9b00575310d81673ea82acb70d8d8f85.11 = private unnamed_addr constant { { [0 x i8]*, i32 }, i32, i32 } { { [0 x i8]*, i32 } { [0 x i8]* bitcast ([22 x i8]* @str.0.501 to [0 x i8]*), i32 22 }, i32 1087, i32 17 }, align 4
@anon.9b00575310d81673ea82acb70d8d8f85.8 = private unnamed_addr constant <{ i8*, [4 x i8], i8*, [12 x i8] }> <{ i8* getelementptr inbounds (<{ [43 x i8] }>, <{ [43 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.6, i32 0, i32 0, i32 0), [4 x i8] c"+\00\00\00", i8* getelementptr inbounds (<{ [21 x i8] }>, <{ [21 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.7, i32 0, i32 0, i32 0), [12 x i8] c"\15\00\00\00Y\01\00\00\15\00\00\00" }>, align 4
@anon.9b00575310d81673ea82acb70d8d8f85.10 = private unnamed_addr constant { { [0 x i8]*, i32 }, i32, i32 } { { [0 x i8]*, i32 } { [0 x i8]* bitcast ([22 x i8]* @str.0.501 to [0 x i8]*), i32 22 }, i32 1075, i32 40 }, align 4
@str.0.501 = internal constant [22 x i8] c"src/libcore/fmt/mod.rs"
@anon.9b00575310d81673ea82acb70d8d8f85.6 = private unnamed_addr constant <{ [43 x i8] }> <{ [43 x i8] c"called `Option::unwrap()` on a `None` value" }>, align 1
@anon.9b00575310d81673ea82acb70d8d8f85.7 = private unnamed_addr constant <{ [21 x i8] }> <{ [21 x i8] c"src/libcore/option.rs" }>, align 1
@anon.9b00575310d81673ea82acb70d8d8f85.22 = private unnamed_addr constant <{ [5 x i8] }> <{ [5 x i8] c"Error" }>, align 1
; <() as core::fmt::Debug>::fmt
; Function Attrs: inlinehint nounwind
define internal zeroext i1 @"_ZN45_$LT$$LP$$RP$$u20$as$u20$core..fmt..Debug$GT$3fmt17h48da19805960fda2E"({}* noalias nocapture nonnull readonly align 1 %self, %"core::fmt::Formatter"* nocapture readonly align 4 dereferenceable(52) %f) unnamed_addr #0 {
start:
; call core::fmt::Formatter::pad
%0 = tail call fastcc zeroext i1 @_ZN4core3fmt9Formatter3pad17hbc71133907d50792E(%"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %f, [0 x i8]* noalias nonnull readonly align 1 bitcast (<{ [2 x i8] }>* @0 to [0 x i8]*), i32 2)
ret i1 %0
}
; Function Attrs: nounwind
define void @run_test() unnamed_addr #1 {
start:
%_33 = alloca [3 x { i8*, i8* }], align 4
%_26 = alloca %"core::fmt::Arguments", align 4
%_25 = alloca %"alloc::string::String", align 4
%x_offset = alloca i32, align 4
%cols = alloca i32, align 4
%0 = bitcast i32* %cols to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0)
store i32 7, i32* %cols, align 4
%1 = bitcast i32* %x_offset to i8*
%2 = bitcast %"core::fmt::Arguments"* %_26 to i8*
%3 = bitcast [3 x { i8*, i8* }]* %_33 to i8*
%4 = bitcast [3 x { i8*, i8* }]* %_33 to i32**
%5 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 0, i32 1
%6 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 1, i32 0
%7 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 1, i32 1
%8 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 2, i32 0
%9 = bitcast i8** %8 to i32**
%10 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 2, i32 1
%11 = bitcast %"core::fmt::Arguments"* %_26 to [0 x { [0 x i8]*, i32 }]**
%12 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_26, i32 0, i32 1, i32 1
%13 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_26, i32 0, i32 3, i32 0
%14 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_26, i32 0, i32 5, i32 0
%15 = bitcast [0 x { i8*, i8* }]** %14 to [3 x { i8*, i8* }]**
%16 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_26, i32 0, i32 5, i32 1
%17 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %_25, i32 0, i32 1, i32 1, i32 1
%18 = bitcast %"alloc::string::String"* %_25 to i8**
br label %bb4.i
bb4.i: ; preds = %bb37, %start
%prev_x_offset.042 = phi i32 [ -1, %start ], [ %25, %bb37 ]
%iter.sroa.0.041 = phi i32 [ 0, %start ], [ %spec.select, %bb37 ]
%19 = icmp ult i32 %iter.sroa.0.041, 3
%20 = zext i1 %19 to i32
%spec.select = add i32 %iter.sroa.0.041, %20
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %1)
%.urem = and i32 %iter.sroa.0.041, 1
%21 = icmp ne i32 %.urem, 0
%storemerge = select i1 %21, i32 23, i32 0
store i32 %storemerge, i32* %x_offset, align 4
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %2)
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %3)
store i32* %x_offset, i32** %4, align 4
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h5c1f9ab69dc6586bE" to i8*), i8** %5, align 4
store i8* getelementptr inbounds (<{ [4 x i8] }>, <{ [4 x i8] }>* @5, i32 0, i32 0, i32 0), i8** %6, align 4
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h5c1f9ab69dc6586bE" to i8*), i8** %7, align 4
store i32* %cols, i32** %9, align 4
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h5c1f9ab69dc6586bE" to i8*), i8** %10, align 4
store [0 x { [0 x i8]*, i32 }]* bitcast (<{ i8*, [4 x i8], i8*, [4 x i8], i8*, [4 x i8] }>* @4 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %11, align 4, !alias.scope !0, !noalias !3
store i32 3, i32* %12, align 4, !alias.scope !0, !noalias !3
store i32* null, i32** %13, align 4, !alias.scope !0, !noalias !3
store [3 x { i8*, i8* }]* %_33, [3 x { i8*, i8* }]** %15, align 4, !alias.scope !0, !noalias !3
store i32 3, i32* %16, align 4, !alias.scope !0, !noalias !3
; call alloc::fmt::format
call fastcc void @_ZN5alloc3fmt6format17h80561ab88cfa3a4eE(%"alloc::string::String"* noalias nocapture nonnull dereferenceable(12) %_25, %"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %_26)
%22 = load i32, i32* %17, align 4, !alias.scope !6
%23 = icmp eq i32 %22, 0
br i1 %23, label %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit, label %bb4.i.i.i.i.i
bb5: ; preds = %bb37
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0)
ret void
bb4.i.i.i.i.i: ; preds = %bb4.i
%24 = load i8*, i8** %18, align 4, !nonnull !9
call fastcc void @__rust_dealloc(i8* nonnull %24) #4
br label %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit
_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit: ; preds = %bb4.i, %bb4.i.i.i.i.i
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %2)
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %3)
%25 = load i32, i32* %x_offset, align 4
%26 = icmp eq i32 %.urem, 0
br i1 %26, label %bb24, label %bb30
bb24: ; preds = %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit
; call lib::effects
call fastcc void @_ZN3lib7effects17hb67e83165c3118ccE()
br label %bb30
bb30: ; preds = %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit, %bb24
%27 = load i32, i32* %cols, align 4
%28 = icmp eq i32 %27, 1
%_62.0.off0 = and i1 %21, %28
br i1 %_62.0.off0, label %bb31, label %bb32
bb31: ; preds = %bb30
; call lib::effects
call fastcc void @_ZN3lib7effects17hb67e83165c3118ccE()
br label %bb32
bb32: ; preds = %bb31, %bb30
call void @dlog(i32 1000000)
call void @dlog(i32 %prev_x_offset.042)
call void @dlog(i32 %25)
%29 = icmp eq i32 %prev_x_offset.042, %25
br i1 %29, label %bb36, label %bb37
bb36: ; preds = %bb32
call void @llvm.trap() #4
unreachable
bb37: ; preds = %bb32
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %1)
br i1 %19, label %bb4.i, label %bb5
}
; lib::effects
; Function Attrs: noinline nounwind
define internal fastcc void @_ZN3lib7effects17hb67e83165c3118ccE() unnamed_addr #2 {
start:
%_9 = alloca [1 x { i8*, i8* }], align 4
%_2 = alloca %"core::fmt::Arguments", align 4
%_1 = alloca %"alloc::string::String", align 4
%0 = bitcast %"core::fmt::Arguments"* %_2 to i8*
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %0)
%1 = bitcast [1 x { i8*, i8* }]* %_9 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %1)
%2 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %_9, i32 0, i32 0, i32 0
store i8* getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0, i32 0), i8** %2, align 4
%3 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %_9, i32 0, i32 0, i32 1
store i8* bitcast (i1 ({}*, %"core::fmt::Formatter"*)* @"_ZN45_$LT$$LP$$RP$$u20$as$u20$core..fmt..Debug$GT$3fmt17h48da19805960fda2E" to i8*), i8** %3, align 4
%4 = bitcast %"core::fmt::Arguments"* %_2 to [0 x { [0 x i8]*, i32 }]**
store [0 x { [0 x i8]*, i32 }]* bitcast (<{ i8*, [4 x i8] }>* @6 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %4, align 4, !alias.scope !10, !noalias !13
%5 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_2, i32 0, i32 1, i32 1
store i32 1, i32* %5, align 4, !alias.scope !10, !noalias !13
%6 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_2, i32 0, i32 3, i32 0
store i32* null, i32** %6, align 4, !alias.scope !10, !noalias !13
%7 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_2, i32 0, i32 5, i32 0
%8 = bitcast [0 x { i8*, i8* }]** %7 to [1 x { i8*, i8* }]**
store [1 x { i8*, i8* }]* %_9, [1 x { i8*, i8* }]** %8, align 4, !alias.scope !10, !noalias !13
%9 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_2, i32 0, i32 5, i32 1
store i32 1, i32* %9, align 4, !alias.scope !10, !noalias !13
; call alloc::fmt::format
call fastcc void @_ZN5alloc3fmt6format17h80561ab88cfa3a4eE(%"alloc::string::String"* noalias nocapture nonnull dereferenceable(12) %_1, %"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %_2)
%10 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %_1, i32 0, i32 1, i32 1, i32 1
%11 = load i32, i32* %10, align 4, !alias.scope !16
%12 = icmp eq i32 %11, 0
br i1 %12, label %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit, label %bb4.i.i.i.i.i
bb4.i.i.i.i.i: ; preds = %start
%13 = bitcast %"alloc::string::String"* %_1 to i8**
%14 = load i8*, i8** %13, align 4, !nonnull !9
call fastcc void @__rust_dealloc(i8* nonnull %14) #4
br label %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit
_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit: ; preds = %start, %bb4.i.i.i.i.i
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %0)
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %1)
ret void
}
; Function Attrs: nounwind
declare void @dlog(i32) unnamed_addr #1
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #3
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #3
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) #3
; Function Attrs: nounwind
declare void @llvm.assume(i1) #4
; std::panicking::rust_panic_with_hook
; Function Attrs: noreturn nounwind
define internal fastcc void @_ZN3std9panicking20rust_panic_with_hook17hc07e9a843d13ed77E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nocapture readonly align 4 dereferenceable(16)) unnamed_addr #5 {
%2 = load i32, i32* bitcast (<{ [8 x i8] }>* @_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E to i32*), align 8, !range !19, !noalias !20
%3 = icmp eq i32 %2, 1
br i1 %3, label %5, label %4
; <label>:4: ; preds = %1
store i64 4294967297, i64* bitcast (<{ [8 x i8] }>* @_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E to i64*), align 8, !noalias !27
br label %10
; <label>:5: ; preds = %1
%6 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E, i32 0, i32 0, i32 4) to i32*), align 4, !noalias !30
%7 = add i32 %6, 1
store i32 %7, i32* bitcast (i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E, i32 0, i32 0, i32 4) to i32*), align 4, !noalias !33
%8 = icmp ugt i32 %7, 2
br i1 %8, label %9, label %10
; <label>:9: ; preds = %5
tail call void @llvm.trap()
unreachable
; <label>:10: ; preds = %5, %4
%11 = phi i32 [ 1, %4 ], [ %7, %5 ]
%12 = load i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std9panicking9HOOK_LOCK17hd2940cb5218d3756E to i32*), align 4
%13 = icmp sgt i32 %12, -1
br i1 %13, label %15, label %14
; <label>:14: ; preds = %10
tail call void @llvm.trap() #4
unreachable
; <label>:15: ; preds = %10
store i32 %12, i32* bitcast (<{ [4 x i8] }>* @_ZN3std9panicking9HOOK_LOCK17hd2940cb5218d3756E to i32*), align 4
%16 = icmp ugt i32 %11, 1
br i1 %16, label %17, label %18
; <label>:17: ; preds = %15
call void @llvm.trap()
unreachable
; <label>:18: ; preds = %15
call fastcc void @rust_panic()
unreachable
}
; Function Attrs: cold noreturn nounwind
declare void @llvm.trap() #6
; Function Attrs: noinline noreturn nounwind
define internal fastcc void @rust_panic() unnamed_addr #7 {
call void @llvm.trap() #4
unreachable
}
; std::panicking::continue_panic_fmt
; Function Attrs: noreturn nounwind
define internal fastcc void @_ZN3std9panicking18continue_panic_fmt17h90572875f905dcb1E(%"core::panic::PanicInfo"* noalias nocapture readonly align 4 dereferenceable(28)) unnamed_addr #5 {
%2 = alloca { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, align 4
%3 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 5, i32 0, i32 0
%4 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 3
%5 = load i32*, i32** %4, align 4, !alias.scope !34
; call <core::option::Option<T>>::unwrap
%6 = tail call fastcc align 4 dereferenceable(24) %"core::fmt::Arguments"* @"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17he251937fb4799819E"(i32* noalias readonly align 4 dereferenceable_or_null(24) %5)
%7 = bitcast { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2 to i8*
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %7)
%8 = load i32, i32* %3, align 4, !range !37, !alias.scope !38
%9 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 5, i32 0, i32 1
%10 = load i32, i32* %9, align 4, !alias.scope !38
%11 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 5, i32 0, i32 2
%12 = load i32, i32* %11, align 4, !alias.scope !41
%13 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 5, i32 0, i32 3
%14 = load i32, i32* %13, align 4, !alias.scope !44
%15 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 0, i32 0
store i32 %8, i32* %15, align 4
%16 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 1, i32 1
store i32 %10, i32* %16, align 4
%17 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 3
store i32 %12, i32* %17, align 4
%18 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 5
store i32 %14, i32* %18, align 4
; call std::panicking::rust_panic_with_hook
call fastcc void @_ZN3std9panicking20rust_panic_with_hook17hc07e9a843d13ed77E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nonnull readonly align 4 dereferenceable(16) %2)
unreachable
}
; <core::option::Option<T>>::unwrap
; Function Attrs: inlinehint nounwind
define internal fastcc align 4 dereferenceable(24) %"core::fmt::Arguments"* @"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17he251937fb4799819E"(i32* noalias readonly align 4 dereferenceable_or_null(24)) unnamed_addr #0 {
%2 = icmp eq i32* %0, null
br i1 %2, label %3, label %4
; <label>:3: ; preds = %1
; call core::panicking::panic
tail call fastcc void @_ZN4core9panicking5panic17hf05582941268164eE({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(24) bitcast (<{ i8*, [4 x i8], i8*, [12 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.8 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
unreachable
; <label>:4: ; preds = %1
%5 = bitcast i32* %0 to %"core::fmt::Arguments"*
ret %"core::fmt::Arguments"* %5
}
; Function Attrs: noreturn nounwind
define internal fastcc void @rust_begin_unwind(%"core::panic::PanicInfo"* noalias nocapture readonly align 4 dereferenceable(28)) unnamed_addr #5 {
; call std::panicking::continue_panic_fmt
tail call fastcc void @_ZN3std9panicking18continue_panic_fmt17h90572875f905dcb1E(%"core::panic::PanicInfo"* noalias nonnull readonly align 4 dereferenceable(28) %0)
unreachable
}
; Function Attrs: nounwind readnone speculatable
declare { i32, i1 } @llvm.umul.with.overflow.i32(i32, i32) #8
; Function Attrs: nounwind readnone speculatable
declare { i32, i1 } @llvm.uadd.with.overflow.i32(i32, i32) #8
; Function Attrs: nounwind readnone speculatable
declare i32 @llvm.ctlz.i32(i32, i1) #8
; Function Attrs: argmemonly nounwind
declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #3
; Function Attrs: nounwind
define internal fastcc i8* @__rdl_alloc(i32, i32) unnamed_addr #1 {
%3 = icmp ugt i32 %1, 8
br i1 %3, label %6, label %4
; <label>:4: ; preds = %2
; call dlmalloc::dlmalloc::Dlmalloc::malloc
%5 = tail call fastcc i8* @_ZN8dlmalloc8dlmalloc8Dlmalloc6malloc17h13d93c13f84e2f04E(i32 %0) #4
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit
; <label>:6: ; preds = %2
%7 = icmp ugt i32 %1, 16
%8 = select i1 %7, i32 %1, i32 16
%9 = sub i32 -64, %8
%10 = icmp ugt i32 %9, %0
br i1 %10, label %11, label %_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit
; <label>:11: ; preds = %6
%12 = icmp ult i32 %0, 11
%13 = add i32 %0, 11
%14 = and i32 %13, -8
%15 = select i1 %12, i32 16, i32 %14
%16 = add i32 %8, 12
%17 = add i32 %16, %15
; call dlmalloc::dlmalloc::Dlmalloc::malloc
%18 = tail call fastcc i8* @_ZN8dlmalloc8dlmalloc8Dlmalloc6malloc17h13d93c13f84e2f04E(i32 %17) #4
%19 = icmp eq i8* %18, null
br i1 %19, label %_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit, label %20
; <label>:20: ; preds = %11
%21 = getelementptr inbounds i8, i8* %18, i32 -8
%22 = bitcast i8* %21 to %"dlmalloc::dlmalloc::Chunk"*
%23 = ptrtoint i8* %18 to i32
%24 = add i32 %8, -1
%25 = and i32 %24, %23
%26 = icmp eq i32 %25, 0
br i1 %26, label %74, label %27
; <label>:27: ; preds = %20
%28 = add i32 %24, %23
%29 = sub i32 0, %8
%30 = and i32 %28, %29
%31 = inttoptr i32 %30 to i8*
%32 = getelementptr inbounds i8, i8* %31, i32 -8
%33 = ptrtoint i8* %32 to i32
%34 = ptrtoint i8* %21 to i32
%35 = sub i32 %33, %34
%36 = icmp ugt i32 %35, 16
%37 = getelementptr inbounds i8, i8* %32, i32 %8
%38 = select i1 %36, i8* %32, i8* %37
%39 = bitcast i8* %38 to %"dlmalloc::dlmalloc::Chunk"*
%40 = ptrtoint i8* %38 to i32
%41 = sub i32 %40, %34
%42 = getelementptr inbounds i8, i8* %18, i32 -4
%43 = bitcast i8* %42 to i32*
%44 = load i32, i32* %43, align 4
%45 = and i32 %44, -8
%46 = sub i32 %45, %41
%47 = and i32 %44, 3
%48 = icmp eq i32 %47, 0
br i1 %48, label %49, label %56
; <label>:49: ; preds = %27
%50 = bitcast i8* %21 to i32*
%51 = load i32, i32* %50, align 4
%52 = bitcast i8* %38 to i32*
%53 = add i32 %51, %41
store i32 %53, i32* %52, align 4
%54 = getelementptr inbounds i8, i8* %38, i32 4
%55 = bitcast i8* %54 to i32*
store i32 %46, i32* %55, align 4
br label %74
; <label>:56: ; preds = %27
%57 = getelementptr inbounds i8, i8* %38, i32 4
%58 = bitcast i8* %57 to i32*
%59 = load i32, i32* %58, align 4
%60 = and i32 %59, 1
%61 = or i32 %46, %60
%62 = or i32 %61, 2
store i32 %62, i32* %58, align 4
%63 = getelementptr inbounds i8, i8* %38, i32 %46
%64 = getelementptr inbounds i8, i8* %63, i32 4
%65 = bitcast i8* %64 to i32*
%66 = load i32, i32* %65, align 4
%67 = or i32 %66, 1
store i32 %67, i32* %65, align 4
%68 = load i32, i32* %43, align 4
%69 = and i32 %68, 1
%70 = or i32 %41, %69
%71 = or i32 %70, 2
store i32 %71, i32* %43, align 4
%72 = load i32, i32* %58, align 4
%73 = or i32 %72, 1
store i32 %73, i32* %58, align 4
; call dlmalloc::dlmalloc::Dlmalloc::dispose_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"* nonnull %22, i32 %41) #4
br label %74
; <label>:74: ; preds = %56, %49, %20
%75 = phi i8* [ %21, %20 ], [ %38, %56 ], [ %38, %49 ]
%76 = phi %"dlmalloc::dlmalloc::Chunk"* [ %22, %20 ], [ %39, %56 ], [ %39, %49 ]
%77 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %76, i32 0, i32 3
%78 = load i32, i32* %77, align 4
%79 = and i32 %78, 3
%80 = icmp eq i32 %79, 0
br i1 %80, label %100, label %81
; <label>:81: ; preds = %74
%82 = and i32 %78, -8
%83 = add i32 %15, 16
%84 = icmp ugt i32 %82, %83
br i1 %84, label %85, label %100
; <label>:85: ; preds = %81
%86 = sub i32 %82, %15
%87 = getelementptr inbounds i8, i8* %75, i32 %15
%88 = bitcast i8* %87 to %"dlmalloc::dlmalloc::Chunk"*
%89 = and i32 %78, 1
%90 = or i32 %15, %89
%91 = or i32 %90, 2
store i32 %91, i32* %77, align 4
%92 = getelementptr inbounds i8, i8* %87, i32 4
%93 = bitcast i8* %92 to i32*
%94 = or i32 %86, 3
store i32 %94, i32* %93, align 4
%95 = getelementptr inbounds i8, i8* %75, i32 %82
%96 = getelementptr inbounds i8, i8* %95, i32 4
%97 = bitcast i8* %96 to i32*
%98 = load i32, i32* %97, align 4
%99 = or i32 %98, 1
store i32 %99, i32* %97, align 4
; call dlmalloc::dlmalloc::Dlmalloc::dispose_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"* %88, i32 %86) #4
br label %100
; <label>:100: ; preds = %85, %81, %74
%101 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %76, i32 0, i32 5
%102 = bitcast %"dlmalloc::dlmalloc::Chunk"** %101 to i8*
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit
_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit: ; preds = %100, %11, %6, %4
%103 = phi i8* [ %5, %4 ], [ %102, %100 ], [ null, %11 ], [ null, %6 ]
ret i8* %103
}
; Function Attrs: nounwind
define internal fastcc void @__rdl_dealloc(i8*) unnamed_addr #1 {
; call dlmalloc::dlmalloc::Dlmalloc::free
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc4free17he8b0435c3a66c50fE(i8* %0) #4
ret void
}
; Function Attrs: nounwind
define internal fastcc i8* @__rdl_realloc(i8*, i32) unnamed_addr #1 {
%3 = icmp ult i32 %1, -64
br i1 %3, label %4, label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit
; <label>:4: ; preds = %2
%5 = icmp ult i32 %1, 11
%6 = add i32 %1, 11
%7 = and i32 %6, -8
%8 = select i1 %5, i32 16, i32 %7
%9 = getelementptr inbounds i8, i8* %0, i32 -8
%10 = getelementptr inbounds i8, i8* %0, i32 -4
%11 = bitcast i8* %10 to i32*
%12 = load i32, i32* %11, align 4
%13 = and i32 %12, -8
%14 = getelementptr inbounds i8, i8* %9, i32 %13
%15 = bitcast i8* %14 to %"dlmalloc::dlmalloc::Chunk"*
%16 = and i32 %12, 3
%17 = icmp eq i32 %16, 0
br i1 %17, label %18, label %26
; <label>:18: ; preds = %4
%19 = icmp ult i32 %8, 256
br i1 %19, label %157, label %20
; <label>:20: ; preds = %18
%21 = or i32 %8, 4
%22 = icmp uge i32 %13, %21
%23 = sub i32 %13, %8
%24 = icmp ult i32 %23, 131073
%25 = and i1 %22, %24
br i1 %25, label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit, label %157
; <label>:26: ; preds = %4
%27 = icmp ult i32 %13, %8
br i1 %27, label %31, label %28
; <label>:28: ; preds = %26
%29 = sub i32 %13, %8
%30 = icmp ult i32 %29, 16
br i1 %30, label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit, label %34
; <label>:31: ; preds = %26
%32 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%33 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %32, %15
br i1 %33, label %47, label %51
; <label>:34: ; preds = %28
%35 = getelementptr inbounds i8, i8* %9, i32 %8
%36 = bitcast i8* %35 to %"dlmalloc::dlmalloc::Chunk"*
%37 = and i32 %12, 1
%38 = or i32 %8, %37
%39 = or i32 %38, 2
store i32 %39, i32* %11, align 4
%40 = getelementptr inbounds i8, i8* %35, i32 4
%41 = bitcast i8* %40 to i32*
%42 = or i32 %29, 3
store i32 %42, i32* %41, align 4
%43 = getelementptr inbounds i8, i8* %14, i32 4
%44 = bitcast i8* %43 to i32*
%45 = load i32, i32* %44, align 4
%46 = or i32 %45, 1
store i32 %46, i32* %44, align 4
; call dlmalloc::dlmalloc::Dlmalloc::dispose_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"* nonnull %36, i32 %29) #4
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit
; <label>:47: ; preds = %31
%48 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%49 = add i32 %48, %13
%50 = icmp ugt i32 %49, %8
br i1 %50, label %54, label %157
; <label>:51: ; preds = %31
%52 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%53 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %52, %15
br i1 %53, label %63, label %67
; <label>:54: ; preds = %47
%55 = sub i32 %49, %8
%56 = getelementptr inbounds i8, i8* %9, i32 %8
%57 = and i32 %12, 1
%58 = or i32 %8, %57
%59 = or i32 %58, 2
store i32 %59, i32* %11, align 4
%60 = getelementptr inbounds i8, i8* %56, i32 4
%61 = bitcast i8* %60 to i32*
%62 = or i32 %55, 1
store i32 %62, i32* %61, align 4
store i8* %56, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4
store i32 %55, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit
; <label>:63: ; preds = %51
%64 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%65 = add i32 %64, %13
%66 = icmp ult i32 %65, %8
br i1 %66, label %157, label %73
; <label>:67: ; preds = %51
%68 = getelementptr inbounds i8, i8* %14, i32 4
%69 = bitcast i8* %68 to i32*
%70 = load i32, i32* %69, align 4
%71 = and i32 %70, 2
%72 = icmp eq i32 %71, 0
br i1 %72, label %103, label %157
; <label>:73: ; preds = %63
%74 = sub i32 %65, %8
%75 = icmp ult i32 %74, 16
br i1 %75, label %91, label %76
; <label>:76: ; preds = %73
%77 = getelementptr inbounds i8, i8* %9, i32 %8
%78 = bitcast i8* %77 to %"dlmalloc::dlmalloc::Chunk"*
%79 = getelementptr inbounds i8, i8* %9, i32 %65
%80 = and i32 %12, 1
%81 = or i32 %8, %80
%82 = or i32 %81, 2
store i32 %82, i32* %11, align 4
%83 = getelementptr inbounds i8, i8* %77, i32 4
%84 = bitcast i8* %83 to i32*
%85 = or i32 %74, 1
store i32 %85, i32* %84, align 4
%86 = bitcast i8* %79 to i32*
store i32 %74, i32* %86, align 4
%87 = getelementptr inbounds i8, i8* %79, i32 4
%88 = bitcast i8* %87 to i32*
%89 = load i32, i32* %88, align 4
%90 = and i32 %89, -2
store i32 %90, i32* %88, align 4
br label %100
; <label>:91: ; preds = %73
%92 = and i32 %12, 1
%93 = or i32 %92, %65
%94 = or i32 %93, 2
store i32 %94, i32* %11, align 4
%95 = getelementptr inbounds i8, i8* %9, i32 %65
%96 = getelementptr inbounds i8, i8* %95, i32 4
%97 = bitcast i8* %96 to i32*
%98 = load i32, i32* %97, align 4
%99 = or i32 %98, 1
store i32 %99, i32* %97, align 4
br label %100
; <label>:100: ; preds = %91, %76
%101 = phi i32 [ %74, %76 ], [ 0, %91 ]
%102 = phi %"dlmalloc::dlmalloc::Chunk"* [ %78, %76 ], [ null, %91 ]
store i32 %101, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
store %"dlmalloc::dlmalloc::Chunk"* %102, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit
; <label>:103: ; preds = %67
%104 = and i32 %70, -8
%105 = add i32 %104, %13
%106 = icmp ult i32 %105, %8
br i1 %106, label %157, label %107
; <label>:107: ; preds = %103
%108 = sub i32 %105, %8
%109 = icmp ult i32 %104, 256
br i1 %109, label %110, label %128
; <label>:110: ; preds = %107
%111 = getelementptr inbounds i8, i8* %14, i32 8
%112 = bitcast i8* %111 to %"dlmalloc::dlmalloc::Chunk"**
%113 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %112, align 4
%114 = getelementptr inbounds i8, i8* %14, i32 12
%115 = bitcast i8* %114 to %"dlmalloc::dlmalloc::Chunk"**
%116 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %115, align 4
%117 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %116, %113
br i1 %117, label %118, label %125
; <label>:118: ; preds = %110
%119 = lshr i32 %70, 3
%120 = and i32 %119, 31
%121 = shl i32 1, %120
%122 = xor i32 %121, -1
%123 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
%124 = and i32 %123, %122
store i32 %124, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %130
; <label>:125: ; preds = %110
%126 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %113, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %116, %"dlmalloc::dlmalloc::Chunk"** %126, align 4
%127 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %116, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %113, %"dlmalloc::dlmalloc::Chunk"** %127, align 4
br label %130
; <label>:128: ; preds = %107
%129 = bitcast i8* %14 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* nonnull %129) #4
br label %130
; <label>:130: ; preds = %128, %125, %118
%131 = icmp ult i32 %108, 16
br i1 %131, label %132, label %142
; <label>:132: ; preds = %130
%133 = load i32, i32* %11, align 4
%134 = and i32 %133, 1
%135 = or i32 %105, %134
%136 = or i32 %135, 2
store i32 %136, i32* %11, align 4
%137 = getelementptr inbounds i8, i8* %9, i32 %105
%138 = getelementptr inbounds i8, i8* %137, i32 4
%139 = bitcast i8* %138 to i32*
%140 = load i32, i32* %139, align 4
%141 = or i32 %140, 1
store i32 %141, i32* %139, align 4
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit
; <label>:142: ; preds = %130
%143 = getelementptr inbounds i8, i8* %9, i32 %8
%144 = bitcast i8* %143 to %"dlmalloc::dlmalloc::Chunk"*
%145 = load i32, i32* %11, align 4
%146 = and i32 %145, 1
%147 = or i32 %8, %146
%148 = or i32 %147, 2
store i32 %148, i32* %11, align 4
%149 = getelementptr inbounds i8, i8* %143, i32 4
%150 = bitcast i8* %149 to i32*
%151 = or i32 %108, 3
store i32 %151, i32* %150, align 4
%152 = getelementptr inbounds i8, i8* %9, i32 %105
%153 = getelementptr inbounds i8, i8* %152, i32 4
%154 = bitcast i8* %153 to i32*
%155 = load i32, i32* %154, align 4
%156 = or i32 %155, 1
store i32 %156, i32* %154, align 4
; call dlmalloc::dlmalloc::Dlmalloc::dispose_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"* nonnull %144, i32 %108) #4
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit
; <label>:157: ; preds = %103, %67, %63, %47, %20, %18
; call dlmalloc::dlmalloc::Dlmalloc::malloc
%158 = tail call fastcc i8* @_ZN8dlmalloc8dlmalloc8Dlmalloc6malloc17h13d93c13f84e2f04E(i32 %1) #4
%159 = icmp eq i8* %158, null
br i1 %159, label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit, label %160
; <label>:160: ; preds = %157
%161 = load i32, i32* %11, align 4
%162 = and i32 %161, -8
%163 = and i32 %161, 3
%164 = icmp eq i32 %163, 0
%165 = select i1 %164, i32 8, i32 4
%166 = sub i32 %162, %165
%167 = icmp ugt i32 %166, %1
%168 = select i1 %167, i32 %1, i32 %166
tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 %158, i8* nonnull align 1 %0, i32 %168, i1 false) #4
; call dlmalloc::dlmalloc::Dlmalloc::free
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc4free17he8b0435c3a66c50fE(i8* nonnull %0) #4
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit
_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit: ; preds = %160, %157, %142, %132, %100, %54, %34, %28, %20, %2
%169 = phi i8* [ null, %157 ], [ %158, %160 ], [ null, %2 ], [ %0, %142 ], [ %0, %132 ], [ %0, %100 ], [ %0, %54 ], [ %0, %34 ], [ %0, %28 ], [ %0, %20 ]
ret i8* %169
}
; dlmalloc::dlmalloc::Dlmalloc::malloc
; Function Attrs: nounwind
define internal fastcc i8* @_ZN8dlmalloc8dlmalloc8Dlmalloc6malloc17h13d93c13f84e2f04E(i32) unnamed_addr #1 {
%2 = icmp ult i32 %0, 245
br i1 %2, label %3, label %14
; <label>:3: ; preds = %1
%4 = icmp ult i32 %0, 11
%5 = add i32 %0, 11
%6 = and i32 %5, -8
%7 = select i1 %4, i32 16, i32 %6
%8 = lshr exact i32 %7, 3
%9 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
%10 = and i32 %8, 31
%11 = lshr i32 %9, %10
%12 = and i32 %11, 3
%13 = icmp eq i32 %12, 0
br i1 %13, label %47, label %16
; <label>:14: ; preds = %1
%15 = icmp ult i32 %0, -64
br i1 %15, label %201, label %50
; <label>:16: ; preds = %3
%17 = and i32 %11, 1
%18 = xor i32 %17, 1
%19 = add nuw nsw i32 %18, %8
%20 = shl nuw nsw i32 %19, 1
%21 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %20
%22 = bitcast %"dlmalloc::dlmalloc::Chunk"** %21 to %"dlmalloc::dlmalloc::Chunk"*
%23 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %21, i32 2
%24 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %23, align 4
%25 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %24, i32 0, i32 5
%26 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %25, align 4
%27 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %26, %22
br i1 %27, label %28, label %33
; <label>:28: ; preds = %16
%29 = and i32 %19, 31
%30 = shl i32 1, %29
%31 = xor i32 %30, -1
%32 = and i32 %9, %31
store i32 %32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %36
; <label>:33: ; preds = %16
%34 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %26, i32 0, i32 7
%35 = bitcast %"dlmalloc::dlmalloc::Chunk"** %34 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %21, %"dlmalloc::dlmalloc::Chunk"*** %35, align 4
store %"dlmalloc::dlmalloc::Chunk"* %26, %"dlmalloc::dlmalloc::Chunk"** %23, align 4
br label %36
; <label>:36: ; preds = %33, %28
%37 = shl i32 %19, 3
%38 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %24, i32 0, i32 3
%39 = or i32 %37, 3
store i32 %39, i32* %38, align 4
%40 = bitcast %"dlmalloc::dlmalloc::Chunk"* %24 to i8*
%41 = getelementptr inbounds i8, i8* %40, i32 %37
%42 = getelementptr inbounds i8, i8* %41, i32 4
%43 = bitcast i8* %42 to i32*
%44 = load i32, i32* %43, align 4
%45 = or i32 %44, 1
store i32 %45, i32* %43, align 4
%46 = bitcast %"dlmalloc::dlmalloc::Chunk"** %25 to i8*
br label %50
; <label>:47: ; preds = %3
%48 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%49 = icmp ugt i32 %7, %48
br i1 %49, label %52, label %368
; <label>:50: ; preds = %705, %702, %618, %421, %415, %403, %398, %365, %198, %116, %36, %14
%51 = phi i8* [ %402, %398 ], [ %414, %403 ], [ %367, %365 ], [ %46, %36 ], [ %117, %116 ], [ %200, %198 ], [ null, %14 ], [ %716, %705 ], [ %619, %618 ], [ null, %421 ], [ null, %702 ], [ null, %415 ]
ret i8* %51
; <label>:52: ; preds = %47
%53 = icmp eq i32 %11, 0
br i1 %53, label %118, label %54
; <label>:54: ; preds = %52
%55 = shl i32 %11, %10
%56 = shl i32 2, %10
%57 = sub i32 0, %56
%58 = or i32 %56, %57
%59 = and i32 %55, %58
%60 = sub i32 0, %59
%61 = and i32 %59, %60
%62 = tail call i32 @llvm.cttz.i32(i32 %61, i1 false) #4, !range !47
%63 = shl nuw nsw i32 %62, 1
%64 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %63
%65 = bitcast %"dlmalloc::dlmalloc::Chunk"** %64 to %"dlmalloc::dlmalloc::Chunk"*
%66 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %64, i32 2
%67 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %66, align 4
%68 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %67, i32 0, i32 5
%69 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %68, align 4
%70 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %69, %65
br i1 %70, label %71, label %76
; <label>:71: ; preds = %54
%72 = and i32 %62, 31
%73 = shl i32 1, %72
%74 = xor i32 %73, -1
%75 = and i32 %9, %74
store i32 %75, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %79
; <label>:76: ; preds = %54
%77 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %69, i32 0, i32 7
%78 = bitcast %"dlmalloc::dlmalloc::Chunk"** %77 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %64, %"dlmalloc::dlmalloc::Chunk"*** %78, align 4
store %"dlmalloc::dlmalloc::Chunk"* %69, %"dlmalloc::dlmalloc::Chunk"** %66, align 4
br label %79
; <label>:79: ; preds = %76, %71
%80 = shl nuw nsw i32 %62, 3
%81 = sub i32 %80, %7
%82 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %67, i32 0, i32 3
%83 = or i32 %7, 3
store i32 %83, i32* %82, align 4
%84 = bitcast %"dlmalloc::dlmalloc::Chunk"* %67 to i8*
%85 = getelementptr inbounds i8, i8* %84, i32 %7
%86 = getelementptr inbounds i8, i8* %85, i32 4
%87 = bitcast i8* %86 to i32*
%88 = or i32 %81, 1
store i32 %88, i32* %87, align 4
%89 = getelementptr inbounds i8, i8* %84, i32 %80
%90 = bitcast i8* %89 to i32*
store i32 %81, i32* %90, align 4
%91 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%92 = icmp eq i32 %91, 0
br i1 %92, label %116, label %93
; <label>:93: ; preds = %79
%94 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%95 = lshr i32 %91, 3
%96 = shl nuw nsw i32 %95, 1
%97 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %96
%98 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !48
%99 = and i32 %95, 31
%100 = shl i32 1, %99
%101 = and i32 %98, %100
%102 = icmp eq i32 %101, 0
br i1 %102, label %103, label %106
; <label>:103: ; preds = %93
%104 = bitcast %"dlmalloc::dlmalloc::Chunk"** %97 to %"dlmalloc::dlmalloc::Chunk"*
%105 = or i32 %98, %100
store i32 %105, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %109
; <label>:106: ; preds = %93
%107 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %97, i32 2
%108 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %107, align 4
br label %109
; <label>:109: ; preds = %106, %103
%110 = phi %"dlmalloc::dlmalloc::Chunk"* [ %104, %103 ], [ %108, %106 ]
%111 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %97, i32 2
store %"dlmalloc::dlmalloc::Chunk"* %94, %"dlmalloc::dlmalloc::Chunk"** %111, align 4
%112 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %110, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %94, %"dlmalloc::dlmalloc::Chunk"** %112, align 4
%113 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %94, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %110, %"dlmalloc::dlmalloc::Chunk"** %113, align 4
%114 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %94, i32 0, i32 7
%115 = bitcast %"dlmalloc::dlmalloc::Chunk"** %114 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %97, %"dlmalloc::dlmalloc::Chunk"*** %115, align 4
br label %116
; <label>:116: ; preds = %109, %79
store i32 %81, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
store i8* %85, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4
%117 = bitcast %"dlmalloc::dlmalloc::Chunk"** %68 to i8*
br label %50
; <label>:118: ; preds = %52
%119 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4
%120 = icmp eq i32 %119, 0
br i1 %120, label %368, label %121
; <label>:121: ; preds = %118
%122 = sub i32 0, %119
%123 = and i32 %119, %122
%124 = tail call i32 @llvm.cttz.i32(i32 %123, i1 false) #4, !range !47
%125 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %124
%126 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %125, align 4
%127 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %126, i32 0, i32 1, i32 3
%128 = load i32, i32* %127, align 4
%129 = and i32 %128, -8
%130 = sub i32 %129, %7
br label %131
; <label>:131: ; preds = %146, %121
%132 = phi i32 [ %130, %121 ], [ %153, %146 ]
%133 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %126, %121 ], [ %147, %146 ]
%134 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %126, %121 ], [ %154, %146 ]
%135 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %133, i32 0, i32 3, i32 0
%136 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %135, align 4
%137 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %136, null
br i1 %137, label %138, label %146
; <label>:138: ; preds = %131
%139 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %133, i32 0, i32 3, i32 1
%140 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %139, align 4
%141 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %140, null
br i1 %141, label %142, label %146
; <label>:142: ; preds = %138
%143 = bitcast %"dlmalloc::dlmalloc::TreeChunk"* %134 to i8*
%144 = getelementptr inbounds i8, i8* %143, i32 %7
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* %134) #4
%145 = icmp ult i32 %132, 16
br i1 %145, label %155, label %164
; <label>:146: ; preds = %138, %131
%147 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %140, %138 ], [ %136, %131 ]
%148 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %147, i32 0, i32 1, i32 3
%149 = load i32, i32* %148, align 4
%150 = and i32 %149, -8
%151 = sub i32 %150, %7
%152 = icmp ult i32 %151, %132
%153 = select i1 %152, i32 %151, i32 %132
%154 = select i1 %152, %"dlmalloc::dlmalloc::TreeChunk"* %147, %"dlmalloc::dlmalloc::TreeChunk"* %134
br label %131
; <label>:155: ; preds = %142
%156 = add i32 %132, %7
%157 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %134, i32 0, i32 1, i32 3
%158 = or i32 %156, 3
store i32 %158, i32* %157, align 4
%159 = getelementptr inbounds i8, i8* %143, i32 %156
%160 = getelementptr inbounds i8, i8* %159, i32 4
%161 = bitcast i8* %160 to i32*
%162 = load i32, i32* %161, align 4
%163 = or i32 %162, 1
store i32 %163, i32* %161, align 4
br label %198
; <label>:164: ; preds = %142
%165 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %134, i32 0, i32 1, i32 3
%166 = or i32 %7, 3
store i32 %166, i32* %165, align 4
%167 = getelementptr inbounds i8, i8* %144, i32 4
%168 = bitcast i8* %167 to i32*
%169 = or i32 %132, 1
store i32 %169, i32* %168, align 4
%170 = getelementptr inbounds i8, i8* %144, i32 %132
%171 = bitcast i8* %170 to i32*
store i32 %132, i32* %171, align 4
%172 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%173 = icmp eq i32 %172, 0
br i1 %173, label %197, label %174
; <label>:174: ; preds = %164
%175 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%176 = lshr i32 %172, 3
%177 = shl nuw nsw i32 %176, 1
%178 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %177
%179 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !51
%180 = and i32 %176, 31
%181 = shl i32 1, %180
%182 = and i32 %179, %181
%183 = icmp eq i32 %182, 0
br i1 %183, label %184, label %187
; <label>:184: ; preds = %174
%185 = bitcast %"dlmalloc::dlmalloc::Chunk"** %178 to %"dlmalloc::dlmalloc::Chunk"*
%186 = or i32 %179, %181
store i32 %186, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %190
; <label>:187: ; preds = %174
%188 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %178, i32 2
%189 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %188, align 4
br label %190
; <label>:190: ; preds = %187, %184
%191 = phi %"dlmalloc::dlmalloc::Chunk"* [ %185, %184 ], [ %189, %187 ]
%192 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %178, i32 2
store %"dlmalloc::dlmalloc::Chunk"* %175, %"dlmalloc::dlmalloc::Chunk"** %192, align 4
%193 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %191, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %175, %"dlmalloc::dlmalloc::Chunk"** %193, align 4
%194 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %175, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %191, %"dlmalloc::dlmalloc::Chunk"** %194, align 4
%195 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %175, i32 0, i32 7
%196 = bitcast %"dlmalloc::dlmalloc::Chunk"** %195 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %178, %"dlmalloc::dlmalloc::Chunk"*** %196, align 4
br label %197
; <label>:197: ; preds = %190, %164
store i32 %132, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
store i8* %144, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4
br label %198
; <label>:198: ; preds = %197, %155
%199 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %134, i32 0, i32 1, i32 5
%200 = bitcast %"dlmalloc::dlmalloc::Chunk"** %199 to i8*
br label %50
; <label>:201: ; preds = %14
%202 = add i32 %0, 11
%203 = and i32 %202, -8
%204 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4
%205 = icmp eq i32 %204, 0
br i1 %205, label %368, label %206
; <label>:206: ; preds = %201
%207 = sub i32 0, %203
%208 = lshr i32 %202, 8
%209 = icmp eq i32 %208, 0
br i1 %209, label %221, label %210
; <label>:210: ; preds = %206
%211 = icmp ugt i32 %203, 16777215
br i1 %211, label %221, label %212
; <label>:212: ; preds = %210
%213 = tail call i32 @llvm.ctlz.i32(i32 %208, i1 false) #4, !range !47
%214 = sub nsw i32 31, %213
%215 = shl nsw i32 %214, 1
%216 = add nsw i32 %214, 7
%217 = and i32 %216, 31
%218 = lshr i32 %203, %217
%219 = and i32 %218, 1
%220 = or i32 %219, %215
br label %221
; <label>:221: ; preds = %212, %210, %206
%222 = phi i32 [ %220, %212 ], [ 0, %206 ], [ 31, %210 ]
%223 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %222
%224 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %223, align 4
%225 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %224, null
br i1 %225, label %269, label %226
; <label>:226: ; preds = %221
%227 = icmp eq i32 %222, 31
%228 = lshr i32 %222, 1
%229 = sub nsw i32 25, %228
%230 = and i32 %229, 31
%231 = select i1 %227, i32 0, i32 %230
%232 = shl i32 %203, %231
br label %233
; <label>:233: ; preds = %248, %226
%234 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ null, %226 ], [ %259, %248 ]
%235 = phi i32 [ %232, %226 ], [ %261, %248 ]
%236 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %224, %226 ], [ %255, %248 ]
%237 = phi i32 [ %207, %226 ], [ %249, %248 ]
%238 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ null, %226 ], [ %250, %248 ]
%239 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %236, i32 0, i32 1, i32 3
%240 = load i32, i32* %239, align 4
%241 = and i32 %240, -8
%242 = icmp uge i32 %241, %203
%243 = sub i32 %241, %203
%244 = icmp ult i32 %243, %237
%245 = and i1 %242, %244
br i1 %245, label %246, label %248
; <label>:246: ; preds = %233
%247 = icmp eq i32 %243, 0
br i1 %247, label %.loopexit2, label %248
; <label>:248: ; preds = %246, %233
%249 = phi i32 [ %243, %246 ], [ %237, %233 ]
%250 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %236, %246 ], [ %238, %233 ]
%251 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %236, i32 0, i32 3, i32 1
%252 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %251, align 4
%253 = lshr i32 %235, 31
%254 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %236, i32 0, i32 3, i32 %253
%255 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %254, align 4
%256 = icmp ne %"dlmalloc::dlmalloc::TreeChunk"* %252, null
%257 = icmp ne %"dlmalloc::dlmalloc::TreeChunk"* %252, %255
%258 = and i1 %256, %257
%259 = select i1 %258, %"dlmalloc::dlmalloc::TreeChunk"* %252, %"dlmalloc::dlmalloc::TreeChunk"* %234
%260 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %255, null
%261 = shl i32 %235, 1
br i1 %260, label %262, label %233
; <label>:262: ; preds = %248
%263 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %259, null
br i1 %263, label %267, label %.loopexit2
.loopexit2: ; preds = %246, %277, %262
%264 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %250, %262 ], [ null, %277 ], [ %236, %246 ]
%265 = phi i32 [ %249, %262 ], [ %270, %277 ], [ 0, %246 ]
%266 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %259, %262 ], [ %282, %277 ], [ %236, %246 ]
br label %286
; <label>:267: ; preds = %262
%268 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %250, null
br i1 %268, label %269, label %308
; <label>:269: ; preds = %267, %221
%270 = phi i32 [ %249, %267 ], [ %207, %221 ]
%271 = and i32 %222, 31
%272 = shl i32 2, %271
%273 = sub i32 0, %272
%274 = or i32 %272, %273
%275 = and i32 %274, %204
%276 = icmp eq i32 %275, 0
br i1 %276, label %368, label %277
; <label>:277: ; preds = %269
%278 = sub i32 0, %275
%279 = and i32 %275, %278
%280 = tail call i32 @llvm.cttz.i32(i32 %279, i1 false) #4, !range !47
%281 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %280
%282 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %281, align 4
%283 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %282, null
br i1 %283, label %368, label %.loopexit2
; <label>:284: ; preds = %305
%285 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %298, null
br i1 %285, label %368, label %308
; <label>:286: ; preds = %305, %.loopexit2
%287 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %298, %305 ], [ %264, %.loopexit2 ]
%288 = phi i32 [ %297, %305 ], [ %265, %.loopexit2 ]
%289 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %306, %305 ], [ %266, %.loopexit2 ]
%290 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %289, i32 0, i32 1, i32 3
%291 = load i32, i32* %290, align 4
%292 = and i32 %291, -8
%293 = icmp uge i32 %292, %203
%294 = sub i32 %292, %203
%295 = icmp ult i32 %294, %288
%296 = and i1 %293, %295
%297 = select i1 %296, i32 %294, i32 %288
%298 = select i1 %296, %"dlmalloc::dlmalloc::TreeChunk"* %289, %"dlmalloc::dlmalloc::TreeChunk"* %287
%299 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %289, i32 0, i32 3, i32 0
%300 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %299, align 4
%301 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %300, null
br i1 %301, label %302, label %305
; <label>:302: ; preds = %286
%303 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %289, i32 0, i32 3, i32 1
%304 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %303, align 4
br label %305
; <label>:305: ; preds = %302, %286
%306 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %304, %302 ], [ %300, %286 ]
%307 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %306, null
br i1 %307, label %284, label %286
; <label>:308: ; preds = %284, %267
%309 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %298, %284 ], [ %250, %267 ]
%310 = phi i32 [ %297, %284 ], [ %249, %267 ]
%311 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%312 = icmp uge i32 %311, %203
%313 = sub i32 %311, %203
%314 = icmp uge i32 %310, %313
%315 = and i1 %312, %314
br i1 %315, label %368, label %316
; <label>:316: ; preds = %308
%317 = bitcast %"dlmalloc::dlmalloc::TreeChunk"* %309 to i8*
%318 = getelementptr inbounds i8, i8* %317, i32 %203
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* nonnull %309) #4
%319 = icmp ult i32 %310, 16
br i1 %319, label %320, label %329
; <label>:320: ; preds = %316
%321 = add i32 %310, %203
%322 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %309, i32 0, i32 1, i32 3
%323 = or i32 %321, 3
store i32 %323, i32* %322, align 4
%324 = getelementptr inbounds i8, i8* %317, i32 %321
%325 = getelementptr inbounds i8, i8* %324, i32 4
%326 = bitcast i8* %325 to i32*
%327 = load i32, i32* %326, align 4
%328 = or i32 %327, 1
store i32 %328, i32* %326, align 4
br label %365
; <label>:329: ; preds = %316
%330 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %309, i32 0, i32 1, i32 3
%331 = or i32 %203, 3
store i32 %331, i32* %330, align 4
%332 = getelementptr inbounds i8, i8* %318, i32 4
%333 = bitcast i8* %332 to i32*
%334 = or i32 %310, 1
store i32 %334, i32* %333, align 4
%335 = getelementptr inbounds i8, i8* %318, i32 %310
%336 = bitcast i8* %335 to i32*
store i32 %310, i32* %336, align 4
%337 = icmp ult i32 %310, 256
br i1 %337, label %338, label %363
; <label>:338: ; preds = %329
%339 = lshr i32 %310, 3
%340 = shl nuw nsw i32 %339, 1
%341 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %340
%342 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !54
%343 = and i32 %339, 31
%344 = shl i32 1, %343
%345 = and i32 %342, %344
%346 = icmp eq i32 %345, 0
br i1 %346, label %347, label %350
; <label>:347: ; preds = %338
%348 = bitcast %"dlmalloc::dlmalloc::Chunk"** %341 to %"dlmalloc::dlmalloc::Chunk"*
%349 = or i32 %342, %344
store i32 %349, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %353
; <label>:350: ; preds = %338
%351 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %341, i32 2
%352 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %351, align 4
br label %353
; <label>:353: ; preds = %350, %347
%354 = phi %"dlmalloc::dlmalloc::Chunk"* [ %348, %347 ], [ %352, %350 ]
%355 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %341, i32 2
%356 = bitcast %"dlmalloc::dlmalloc::Chunk"** %355 to i8**
store i8* %318, i8** %356, align 4
%357 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %354, i32 0, i32 7
%358 = bitcast %"dlmalloc::dlmalloc::Chunk"** %357 to i8**
store i8* %318, i8** %358, align 4
%359 = getelementptr inbounds i8, i8* %318, i32 8
%360 = bitcast i8* %359 to %"dlmalloc::dlmalloc::Chunk"**
store %"dlmalloc::dlmalloc::Chunk"* %354, %"dlmalloc::dlmalloc::Chunk"** %360, align 4
%361 = getelementptr inbounds i8, i8* %318, i32 12
%362 = bitcast i8* %361 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %341, %"dlmalloc::dlmalloc::Chunk"*** %362, align 4
br label %365
; <label>:363: ; preds = %329
%364 = bitcast i8* %318 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %364, i32 %310) #4
br label %365
; <label>:365: ; preds = %363, %353, %320
%366 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %309, i32 0, i32 1, i32 5
%367 = bitcast %"dlmalloc::dlmalloc::Chunk"** %366 to i8*
br label %50
; <label>:368: ; preds = %308, %284, %277, %269, %201, %118, %47
%369 = phi i32 [ %203, %201 ], [ %7, %118 ], [ %7, %47 ], [ %203, %284 ], [ %203, %308 ], [ %203, %277 ], [ %203, %269 ]
%370 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%371 = icmp ult i32 %370, %369
br i1 %371, label %376, label %372
; <label>:372: ; preds = %368
%373 = sub i32 %370, %369
%374 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%375 = icmp ult i32 %373, 16
br i1 %375, label %389, label %379
; <label>:376: ; preds = %368
%377 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%378 = icmp ugt i32 %377, %369
br i1 %378, label %403, label %415
; <label>:379: ; preds = %372
%380 = bitcast %"dlmalloc::dlmalloc::Chunk"* %374 to i8*
%381 = getelementptr inbounds i8, i8* %380, i32 %369
store i8* %381, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4
store i32 %373, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%382 = getelementptr inbounds i8, i8* %381, i32 4
%383 = bitcast i8* %382 to i32*
%384 = or i32 %373, 1
store i32 %384, i32* %383, align 4
%385 = getelementptr inbounds i8, i8* %380, i32 %370
%386 = bitcast i8* %385 to i32*
store i32 %373, i32* %386, align 4
%387 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %374, i32 0, i32 3
%388 = or i32 %369, 3
br label %398
; <label>:389: ; preds = %372
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
store %"dlmalloc::dlmalloc::Chunk"* null, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%390 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %374, i32 0, i32 3
%391 = or i32 %370, 3
store i32 %391, i32* %390, align 4
%392 = bitcast %"dlmalloc::dlmalloc::Chunk"* %374 to i8*
%393 = getelementptr inbounds i8, i8* %392, i32 %370
%394 = getelementptr inbounds i8, i8* %393, i32 4
%395 = bitcast i8* %394 to i32*
%396 = load i32, i32* %395, align 4
%397 = or i32 %396, 1
br label %398
; <label>:398: ; preds = %389, %379
%399 = phi i32* [ %395, %389 ], [ %387, %379 ]
%400 = phi i32 [ %397, %389 ], [ %388, %379 ]
store i32 %400, i32* %399, align 4
%401 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %374, i32 0, i32 5
%402 = bitcast %"dlmalloc::dlmalloc::Chunk"** %401 to i8*
br label %50
; <label>:403: ; preds = %376
%404 = sub i32 %377, %369
store i32 %404, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%405 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%406 = bitcast %"dlmalloc::dlmalloc::Chunk"* %405 to i8*
%407 = getelementptr inbounds i8, i8* %406, i32 %369
store i8* %407, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4
%408 = getelementptr inbounds i8, i8* %407, i32 4
%409 = bitcast i8* %408 to i32*
%410 = or i32 %404, 1
store i32 %410, i32* %409, align 4
%411 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %405, i32 0, i32 3
%412 = or i32 %369, 3
store i32 %412, i32* %411, align 4
%413 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %405, i32 0, i32 5
%414 = bitcast %"dlmalloc::dlmalloc::Chunk"** %413 to i8*
br label %50
; <label>:415: ; preds = %376
%416 = add i32 %369, 65583
%417 = and i32 %416, -65536
%418 = lshr i32 %416, 16
%419 = tail call i32 @llvm.wasm.memory.grow.i32(i32 0, i32 %418) #4, !noalias !57
%420 = icmp eq i32 %419, -1
br i1 %420, label %50, label %421
; <label>:421: ; preds = %415
%422 = shl i32 %419, 16
%423 = inttoptr i32 %422 to i8*
%424 = icmp eq i32 %422, 0
br i1 %424, label %50, label %425
; <label>:425: ; preds = %421
%426 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 416) to i32*), align 4
%427 = add i32 %426, %417
store i32 %427, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 416) to i32*), align 4
%428 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 420) to i32*), align 4
%429 = icmp ult i32 %427, %428
%430 = select i1 %429, i32 %428, i32 %427
store i32 %430, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 420) to i32*), align 4
%431 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%432 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %431, null
%433 = bitcast %"dlmalloc::dlmalloc::Chunk"* %431 to i8*
br i1 %432, label %434, label %459
; <label>:434: ; preds = %425
%435 = load i8*, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 444) to i8**), align 4
%436 = icmp eq i8* %435, null
%437 = icmp ugt i8* %435, %423
%438 = or i1 %436, %437
br i1 %438, label %439, label %440
; <label>:439: ; preds = %434
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 444) to i8**), align 4
br label %440
; <label>:440: ; preds = %439, %434
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to i8**), align 4
store i32 %417, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 428) to i32*), align 4
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 436) to i32*), align 4
store i32 4095, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4
br label %441
; <label>:441: ; preds = %441, %440
%442 = phi i32 [ %443, %441 ], [ 0, %440 ]
%443 = add nuw nsw i32 %442, 1
%444 = shl nuw i32 %442, 1
%445 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %444
%446 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %445, i32 3
%447 = bitcast %"dlmalloc::dlmalloc::Chunk"** %446 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %445, %"dlmalloc::dlmalloc::Chunk"*** %447, align 4
%448 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %445, i32 2
%449 = bitcast %"dlmalloc::dlmalloc::Chunk"** %448 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %445, %"dlmalloc::dlmalloc::Chunk"*** %449, align 4
%450 = icmp eq i32 %443, 32
br i1 %450, label %451, label %441
; <label>:451: ; preds = %441
%452 = add i32 %417, -40
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4
store i32 %452, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%453 = getelementptr inbounds i8, i8* %423, i32 4
%454 = bitcast i8* %453 to i32*
%455 = or i32 %452, 1
store i32 %455, i32* %454, align 4
%456 = getelementptr inbounds i8, i8* %423, i32 %452
%457 = getelementptr inbounds i8, i8* %456, i32 4
%458 = bitcast i8* %457 to i32*
store i32 40, i32* %458, align 4
store i32 2097152, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4
br label %702
; <label>:459: ; preds = %425, %467
%460 = phi %"dlmalloc::dlmalloc::Segment"* [ %469, %467 ], [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to %"dlmalloc::dlmalloc::Segment"*), %425 ]
%461 = bitcast %"dlmalloc::dlmalloc::Segment"* %460 to i8**
%462 = load i8*, i8** %461, align 4
%463 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %460, i32 0, i32 3
%464 = load i32, i32* %463, align 4
%465 = getelementptr inbounds i8, i8* %462, i32 %464
%466 = icmp eq i8* %465, %423
br i1 %466, label %475, label %467
; <label>:467: ; preds = %459
%468 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %460, i32 0, i32 5
%469 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %468, align 4
%470 = icmp eq %"dlmalloc::dlmalloc::Segment"* %469, null
br i1 %470, label %.loopexit1, label %459
; <label>:471: ; preds = %475
%472 = icmp ule i8* %462, %433
%473 = icmp ugt i8* %423, %433
%474 = and i1 %473, %472
br i1 %474, label %479, label %.loopexit1
; <label>:475: ; preds = %459
%476 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %460, i32 0, i32 7
%477 = load i32, i32* %476, align 4
%478 = icmp eq i32 %477, 0
br i1 %478, label %471, label %.loopexit1
; <label>:479: ; preds = %471
%480 = add i32 %464, %417
store i32 %480, i32* %463, align 4
%481 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%482 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%483 = add i32 %482, %417
%484 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %481, i32 0, i32 5
%485 = ptrtoint %"dlmalloc::dlmalloc::Chunk"** %484 to i32
%486 = add i32 %485, 7
%487 = and i32 %486, -8
%488 = sub i32 %487, %485
%489 = bitcast %"dlmalloc::dlmalloc::Chunk"* %481 to i8*
%490 = getelementptr inbounds i8, i8* %489, i32 %488
%491 = sub i32 %483, %488
store i8* %490, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4
store i32 %491, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%492 = getelementptr inbounds i8, i8* %490, i32 4
%493 = bitcast i8* %492 to i32*
%494 = or i32 %491, 1
store i32 %494, i32* %493, align 4
%495 = getelementptr inbounds i8, i8* %489, i32 %483
%496 = getelementptr inbounds i8, i8* %495, i32 4
%497 = bitcast i8* %496 to i32*
store i32 40, i32* %497, align 4
store i32 2097152, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4
br label %702
.loopexit1: ; preds = %467, %475, %471
%498 = load i8*, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 444) to i8**), align 4
%499 = icmp ult i8* %498, %423
%500 = select i1 %499, i8* %498, i8* %423
store i8* %500, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 444) to i8**), align 4
%501 = getelementptr inbounds i8, i8* %423, i32 %417
br label %502
; <label>:502: ; preds = %507, %.loopexit1
%503 = phi %"dlmalloc::dlmalloc::Segment"* [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to %"dlmalloc::dlmalloc::Segment"*), %.loopexit1 ], [ %509, %507 ]
%504 = bitcast %"dlmalloc::dlmalloc::Segment"* %503 to i8**
%505 = load i8*, i8** %504, align 4
%506 = icmp eq i8* %505, %501
br i1 %506, label %511, label %507
; <label>:507: ; preds = %502
%508 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %503, i32 0, i32 5
%509 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %508, align 4
%510 = icmp eq %"dlmalloc::dlmalloc::Segment"* %509, null
br i1 %510, label %.loopexit, label %502
; <label>:511: ; preds = %502
%512 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %503, i32 0, i32 7
%513 = load i32, i32* %512, align 4
%514 = icmp eq i32 %513, 0
br i1 %514, label %515, label %.loopexit
.loopexit: ; preds = %507, %511
br label %620
; <label>:515: ; preds = %511
store i8* %423, i8** %504, align 4
%516 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %503, i32 0, i32 3
%517 = load i32, i32* %516, align 4
%518 = add i32 %517, %417
store i32 %518, i32* %516, align 4
%519 = bitcast i8* %501 to %"dlmalloc::dlmalloc::Chunk"*
%520 = ptrtoint i8* %501 to i32
%521 = sub i32 %520, %422
%522 = getelementptr inbounds i8, i8* %423, i32 %369
%523 = sub i32 %521, %369
%524 = getelementptr inbounds i8, i8* %423, i32 4
%525 = bitcast i8* %524 to i32*
%526 = or i32 %369, 3
store i32 %526, i32* %525, align 4
%527 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%528 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %527, %519
br i1 %528, label %529, label %535
; <label>:529: ; preds = %515
%530 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%531 = add i32 %530, %523
store i32 %531, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
store i8* %522, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4
%532 = getelementptr inbounds i8, i8* %522, i32 4
%533 = bitcast i8* %532 to i32*
%534 = or i32 %531, 1
store i32 %534, i32* %533, align 4
br label %618
; <label>:535: ; preds = %515
%536 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%537 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %536, %519
br i1 %537, label %538, label %546
; <label>:538: ; preds = %535
%539 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%540 = add i32 %539, %523
store i32 %540, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
store i8* %522, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4
%541 = getelementptr inbounds i8, i8* %522, i32 4
%542 = bitcast i8* %541 to i32*
%543 = or i32 %540, 1
store i32 %543, i32* %542, align 4
%544 = getelementptr inbounds i8, i8* %522, i32 %540
%545 = bitcast i8* %544 to i32*
store i32 %540, i32* %545, align 4
br label %618
; <label>:546: ; preds = %535
%547 = getelementptr inbounds i8, i8* %501, i32 4
%548 = bitcast i8* %547 to i32*
%549 = load i32, i32* %548, align 4
%550 = and i32 %549, 3
%551 = icmp eq i32 %550, 1
br i1 %551, label %552, label %579
; <label>:552: ; preds = %546
%553 = and i32 %549, -8
%554 = icmp ult i32 %553, 256
br i1 %554, label %555, label %573
; <label>:555: ; preds = %552
%556 = getelementptr inbounds i8, i8* %501, i32 8
%557 = bitcast i8* %556 to %"dlmalloc::dlmalloc::Chunk"**
%558 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %557, align 8
%559 = getelementptr inbounds i8, i8* %501, i32 12
%560 = bitcast i8* %559 to %"dlmalloc::dlmalloc::Chunk"**
%561 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %560, align 4
%562 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %561, %558
br i1 %562, label %563, label %570
; <label>:563: ; preds = %555
%564 = lshr i32 %549, 3
%565 = and i32 %564, 31
%566 = shl i32 1, %565
%567 = xor i32 %566, -1
%568 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
%569 = and i32 %568, %567
store i32 %569, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %575
; <label>:570: ; preds = %555
%571 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %558, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %561, %"dlmalloc::dlmalloc::Chunk"** %571, align 4
%572 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %561, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %558, %"dlmalloc::dlmalloc::Chunk"** %572, align 4
br label %575
; <label>:573: ; preds = %552
%574 = bitcast i8* %501 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* %574) #4
br label %575
; <label>:575: ; preds = %573, %570, %563
%576 = getelementptr inbounds i8, i8* %501, i32 %553
%577 = bitcast i8* %576 to %"dlmalloc::dlmalloc::Chunk"*
%578 = add i32 %553, %523
br label %579
; <label>:579: ; preds = %575, %546
%580 = phi i32 [ %578, %575 ], [ %523, %546 ]
%581 = phi %"dlmalloc::dlmalloc::Chunk"* [ %577, %575 ], [ %519, %546 ]
%582 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %581, i32 0, i32 3
%583 = load i32, i32* %582, align 4
%584 = and i32 %583, -2
store i32 %584, i32* %582, align 4
%585 = getelementptr inbounds i8, i8* %522, i32 4
%586 = bitcast i8* %585 to i32*
%587 = or i32 %580, 1
store i32 %587, i32* %586, align 4
%588 = getelementptr inbounds i8, i8* %522, i32 %580
%589 = bitcast i8* %588 to i32*
store i32 %580, i32* %589, align 4
%590 = icmp ult i32 %580, 256
br i1 %590, label %591, label %616
; <label>:591: ; preds = %579
%592 = lshr i32 %580, 3
%593 = shl nuw nsw i32 %592, 1
%594 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %593
%595 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !60
%596 = and i32 %592, 31
%597 = shl i32 1, %596
%598 = and i32 %595, %597
%599 = icmp eq i32 %598, 0
br i1 %599, label %600, label %603
; <label>:600: ; preds = %591
%601 = bitcast %"dlmalloc::dlmalloc::Chunk"** %594 to %"dlmalloc::dlmalloc::Chunk"*
%602 = or i32 %595, %597
store i32 %602, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %606
; <label>:603: ; preds = %591
%604 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %594, i32 2
%605 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %604, align 4
br label %606
; <label>:606: ; preds = %603, %600
%607 = phi %"dlmalloc::dlmalloc::Chunk"* [ %601, %600 ], [ %605, %603 ]
%608 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %594, i32 2
%609 = bitcast %"dlmalloc::dlmalloc::Chunk"** %608 to i8**
store i8* %522, i8** %609, align 4
%610 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %607, i32 0, i32 7
%611 = bitcast %"dlmalloc::dlmalloc::Chunk"** %610 to i8**
store i8* %522, i8** %611, align 4
%612 = getelementptr inbounds i8, i8* %522, i32 8
%613 = bitcast i8* %612 to %"dlmalloc::dlmalloc::Chunk"**
store %"dlmalloc::dlmalloc::Chunk"* %607, %"dlmalloc::dlmalloc::Chunk"** %613, align 4
%614 = getelementptr inbounds i8, i8* %522, i32 12
%615 = bitcast i8* %614 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %594, %"dlmalloc::dlmalloc::Chunk"*** %615, align 4
br label %618
; <label>:616: ; preds = %579
%617 = bitcast i8* %522 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %617, i32 %580) #4
br label %618
; <label>:618: ; preds = %616, %606, %538, %529
%619 = getelementptr inbounds i8, i8* %423, i32 8
br label %50
; <label>:620: ; preds = %630, %.loopexit
%621 = phi i8** [ %633, %630 ], [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to i8**), %.loopexit ]
%622 = phi %"dlmalloc::dlmalloc::Segment"* [ %632, %630 ], [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to %"dlmalloc::dlmalloc::Segment"*), %.loopexit ]
%623 = load i8*, i8** %621, align 4
%624 = icmp ugt i8* %623, %433
br i1 %624, label %630, label %625
; <label>:625: ; preds = %620
%626 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %622, i32 0, i32 3
%627 = load i32, i32* %626, align 4
%628 = getelementptr inbounds i8, i8* %623, i32 %627
%629 = icmp ugt i8* %628, %433
br i1 %629, label %634, label %630
; <label>:630: ; preds = %625, %620
%631 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %622, i32 0, i32 5
%632 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %631, align 4
%633 = bitcast %"dlmalloc::dlmalloc::Segment"* %632 to i8**
br label %620
; <label>:634: ; preds = %625
%635 = getelementptr inbounds i8, i8* %628, i32 -47
%636 = getelementptr inbounds i8, i8* %635, i32 8
%637 = ptrtoint i8* %636 to i32
%638 = add i32 %637, 7
%639 = and i32 %638, -8
%640 = sub i32 %639, %637
%641 = getelementptr inbounds i8, i8* %635, i32 %640
%642 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %431, i32 1
%643 = bitcast %"dlmalloc::dlmalloc::Chunk"* %642 to i8*
%644 = icmp ult i8* %641, %643
%645 = select i1 %644, i8* %433, i8* %641
%646 = getelementptr inbounds i8, i8* %645, i32 8
%647 = getelementptr inbounds i8, i8* %645, i32 24
%648 = add i32 %417, -40
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4
store i32 %648, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%649 = getelementptr inbounds i8, i8* %423, i32 4
%650 = bitcast i8* %649 to i32*
%651 = or i32 %648, 1
store i32 %651, i32* %650, align 4
%652 = getelementptr inbounds i8, i8* %423, i32 %648
%653 = getelementptr inbounds i8, i8* %652, i32 4
%654 = bitcast i8* %653 to i32*
store i32 40, i32* %654, align 4
store i32 2097152, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4
%655 = getelementptr inbounds i8, i8* %645, i32 4
%656 = bitcast i8* %655 to i32*
store i32 27, i32* %656, align 4
tail call void @llvm.memmove.p0i8.p0i8.i32(i8* nonnull align 4 %646, i8* nonnull align 4 getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424), i32 16, i1 false) #4
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to i8**), align 4
store i32 %417, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 428) to i32*), align 4
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 436) to i32*), align 4
store i8* %646, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 432) to i8**), align 4
br label %657
; <label>:657: ; preds = %657, %634
%658 = phi i8* [ %647, %634 ], [ %659, %657 ]
%659 = getelementptr inbounds i8, i8* %658, i32 4
%660 = bitcast i8* %659 to i32*
store i32 7, i32* %660, align 4
%661 = getelementptr inbounds i8, i8* %658, i32 8
%662 = icmp ugt i8* %628, %661
br i1 %662, label %657, label %663
; <label>:663: ; preds = %657
%664 = icmp eq i8* %645, %433
br i1 %664, label %702, label %665
; <label>:665: ; preds = %663
%666 = ptrtoint i8* %645 to i32
%667 = ptrtoint %"dlmalloc::dlmalloc::Chunk"* %431 to i32
%668 = sub i32 %666, %667
%669 = getelementptr inbounds i8, i8* %433, i32 %668
%670 = getelementptr inbounds i8, i8* %669, i32 4
%671 = bitcast i8* %670 to i32*
%672 = load i32, i32* %671, align 4
%673 = and i32 %672, -2
store i32 %673, i32* %671, align 4
%674 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %431, i32 0, i32 3
%675 = or i32 %668, 1
store i32 %675, i32* %674, align 4
%676 = bitcast i8* %669 to i32*
store i32 %668, i32* %676, align 4
%677 = icmp ult i32 %668, 256
br i1 %677, label %678, label %700
; <label>:678: ; preds = %665
%679 = lshr i32 %668, 3
%680 = shl nuw nsw i32 %679, 1
%681 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %680
%682 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !63
%683 = and i32 %679, 31
%684 = shl i32 1, %683
%685 = and i32 %682, %684
%686 = icmp eq i32 %685, 0
br i1 %686, label %687, label %690
; <label>:687: ; preds = %678
%688 = bitcast %"dlmalloc::dlmalloc::Chunk"** %681 to %"dlmalloc::dlmalloc::Chunk"*
%689 = or i32 %682, %684
store i32 %689, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %693
; <label>:690: ; preds = %678
%691 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %681, i32 2
%692 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %691, align 4
br label %693
; <label>:693: ; preds = %690, %687
%694 = phi %"dlmalloc::dlmalloc::Chunk"* [ %688, %687 ], [ %692, %690 ]
%695 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %681, i32 2
store %"dlmalloc::dlmalloc::Chunk"* %431, %"dlmalloc::dlmalloc::Chunk"** %695, align 4
%696 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %694, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %431, %"dlmalloc::dlmalloc::Chunk"** %696, align 4
%697 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %431, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %694, %"dlmalloc::dlmalloc::Chunk"** %697, align 4
%698 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %431, i32 0, i32 7
%699 = bitcast %"dlmalloc::dlmalloc::Chunk"** %698 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %681, %"dlmalloc::dlmalloc::Chunk"*** %699, align 4
br label %702
; <label>:700: ; preds = %665
%701 = bitcast %"dlmalloc::dlmalloc::Chunk"* %431 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %701, i32 %668) #4
br label %702
; <label>:702: ; preds = %700, %693, %663, %479, %451
%703 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%704 = icmp ugt i32 %703, %369
br i1 %704, label %705, label %50
; <label>:705: ; preds = %702
%706 = sub i32 %703, %369
store i32 %706, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%707 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%708 = bitcast %"dlmalloc::dlmalloc::Chunk"* %707 to i8*
%709 = getelementptr inbounds i8, i8* %708, i32 %369
store i8* %709, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4
%710 = getelementptr inbounds i8, i8* %709, i32 4
%711 = bitcast i8* %710 to i32*
%712 = or i32 %706, 1
store i32 %712, i32* %711, align 4
%713 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %707, i32 0, i32 3
%714 = or i32 %369, 3
store i32 %714, i32* %713, align 4
%715 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %707, i32 0, i32 5
%716 = bitcast %"dlmalloc::dlmalloc::Chunk"** %715 to i8*
br label %50
}
; Function Attrs: nounwind readnone speculatable
declare i32 @llvm.cttz.i32(i32, i1) #8
; dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
; Function Attrs: norecurse nounwind
define internal fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"*) unnamed_addr #9 {
%2 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 5
%3 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %2, align 4
%4 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 7
%5 = bitcast %"dlmalloc::dlmalloc::Chunk"** %4 to %"dlmalloc::dlmalloc::TreeChunk"**
%6 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %5, align 4
%7 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %6, %0
br i1 %7, label %16, label %8
; <label>:8: ; preds = %1
%9 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 5
%10 = bitcast %"dlmalloc::dlmalloc::Chunk"** %9 to %"dlmalloc::dlmalloc::TreeChunk"**
%11 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %10, align 4
%12 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %11, i32 0, i32 1, i32 7
%13 = bitcast %"dlmalloc::dlmalloc::Chunk"** %12 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %6, %"dlmalloc::dlmalloc::TreeChunk"** %13, align 4
%14 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %6, i32 0, i32 1, i32 5
%15 = bitcast %"dlmalloc::dlmalloc::Chunk"** %14 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %11, %"dlmalloc::dlmalloc::TreeChunk"** %15, align 4
br label %37
; <label>:16: ; preds = %1
%17 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 1
%18 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %17, align 4
%19 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %18, null
%20 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 0
%21 = select i1 %19, %"dlmalloc::dlmalloc::TreeChunk"** %20, %"dlmalloc::dlmalloc::TreeChunk"** %17
%22 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %21, align 4
%23 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %22, null
br i1 %23, label %37, label %.preheader
.preheader: ; preds = %16, %32
%24 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %33, %32 ], [ %22, %16 ]
%25 = phi %"dlmalloc::dlmalloc::TreeChunk"** [ %34, %32 ], [ %21, %16 ]
%26 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %24, i32 0, i32 3, i32 1
%27 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %26, align 4
%28 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %27, null
br i1 %28, label %29, label %32
; <label>:29: ; preds = %.preheader
%30 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %24, i32 0, i32 3, i32 0
%31 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %30, align 4
br label %32
; <label>:32: ; preds = %29, %.preheader
%33 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %31, %29 ], [ %27, %.preheader ]
%34 = phi %"dlmalloc::dlmalloc::TreeChunk"** [ %30, %29 ], [ %26, %.preheader ]
%35 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %33, null
br i1 %35, label %36, label %.preheader
; <label>:36: ; preds = %32
store %"dlmalloc::dlmalloc::TreeChunk"* null, %"dlmalloc::dlmalloc::TreeChunk"** %25, align 4
br label %37
; <label>:37: ; preds = %36, %16, %8
%38 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %6, %8 ], [ %24, %36 ], [ null, %16 ]
%39 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %3, null
br i1 %39, label %46, label %40
; <label>:40: ; preds = %37
%41 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 7
%42 = load i32, i32* %41, align 4
%43 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %42
%44 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %43, align 4
%45 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %44, %0
br i1 %45, label %47, label %56
; <label>:46: ; preds = %75, %71, %56, %49, %37
ret void
; <label>:47: ; preds = %40
store %"dlmalloc::dlmalloc::TreeChunk"* %38, %"dlmalloc::dlmalloc::TreeChunk"** %43, align 4
%48 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %38, null
br i1 %48, label %49, label %63
; <label>:49: ; preds = %47
%50 = load i32, i32* %41, align 4
%51 = and i32 %50, 31
%52 = shl i32 1, %51
%53 = xor i32 %52, -1
%54 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4
%55 = and i32 %54, %53
store i32 %55, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4
br label %46
; <label>:56: ; preds = %40
%57 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %3, i32 0, i32 3, i32 0
%58 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %57, align 4
%59 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %58, %0
%60 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %3, i32 0, i32 3, i32 1
%61 = select i1 %59, %"dlmalloc::dlmalloc::TreeChunk"** %57, %"dlmalloc::dlmalloc::TreeChunk"** %60
store %"dlmalloc::dlmalloc::TreeChunk"* %38, %"dlmalloc::dlmalloc::TreeChunk"** %61, align 4
%62 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %38, null
br i1 %62, label %46, label %63
; <label>:63: ; preds = %56, %47
%64 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %38, i32 0, i32 5
store %"dlmalloc::dlmalloc::TreeChunk"* %3, %"dlmalloc::dlmalloc::TreeChunk"** %64, align 4
%65 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 0
%66 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %65, align 4
%67 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %66, null
br i1 %67, label %71, label %68
; <label>:68: ; preds = %63
%69 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %38, i32 0, i32 3, i32 0
store %"dlmalloc::dlmalloc::TreeChunk"* %66, %"dlmalloc::dlmalloc::TreeChunk"** %69, align 4
%70 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %66, i32 0, i32 5
store %"dlmalloc::dlmalloc::TreeChunk"* %38, %"dlmalloc::dlmalloc::TreeChunk"** %70, align 4
br label %71
; <label>:71: ; preds = %68, %63
%72 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 1
%73 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %72, align 4
%74 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %73, null
br i1 %74, label %46, label %75
; <label>:75: ; preds = %71
%76 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %38, i32 0, i32 3, i32 1
store %"dlmalloc::dlmalloc::TreeChunk"* %73, %"dlmalloc::dlmalloc::TreeChunk"** %76, align 4
%77 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %73, i32 0, i32 5
store %"dlmalloc::dlmalloc::TreeChunk"* %38, %"dlmalloc::dlmalloc::TreeChunk"** %77, align 4
br label %46
}
; dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk
; Function Attrs: nounwind
define internal fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"*, i32) unnamed_addr #1 {
%3 = lshr i32 %1, 8
%4 = icmp eq i32 %3, 0
br i1 %4, label %16, label %5
; <label>:5: ; preds = %2
%6 = icmp ugt i32 %1, 16777215
br i1 %6, label %16, label %7
; <label>:7: ; preds = %5
%8 = tail call i32 @llvm.ctlz.i32(i32 %3, i1 false) #4, !range !47
%9 = sub nsw i32 31, %8
%10 = shl nsw i32 %9, 1
%11 = add nsw i32 %9, 7
%12 = and i32 %11, 31
%13 = lshr i32 %1, %12
%14 = and i32 %13, 1
%15 = or i32 %14, %10
br label %16
; <label>:16: ; preds = %7, %5, %2
%17 = phi i32 [ %15, %7 ], [ 0, %2 ], [ 31, %5 ]
%18 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %17
%19 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 7
store i32 %17, i32* %19, align 4
%20 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 0
store %"dlmalloc::dlmalloc::TreeChunk"* null, %"dlmalloc::dlmalloc::TreeChunk"** %20, align 4
%21 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 1
store %"dlmalloc::dlmalloc::TreeChunk"* null, %"dlmalloc::dlmalloc::TreeChunk"** %21, align 4
%22 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4, !alias.scope !66
%23 = and i32 %17, 31
%24 = shl i32 1, %23
%25 = and i32 %22, %24
%26 = icmp eq i32 %25, 0
br i1 %26, label %27, label %35
; <label>:27: ; preds = %16
%28 = or i32 %22, %24
store i32 %28, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %18, align 4
%29 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 5
%30 = bitcast %"dlmalloc::dlmalloc::TreeChunk"** %29 to %"dlmalloc::dlmalloc::TreeChunk"***
store %"dlmalloc::dlmalloc::TreeChunk"** %18, %"dlmalloc::dlmalloc::TreeChunk"*** %30, align 4
%31 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 7
%32 = bitcast %"dlmalloc::dlmalloc::Chunk"** %31 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %32, align 4
%33 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 5
%34 = bitcast %"dlmalloc::dlmalloc::Chunk"** %33 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %34, align 4
br label %77
; <label>:35: ; preds = %16
%36 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %18, align 4
%37 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %36, i32 0, i32 1, i32 3
%38 = load i32, i32* %37, align 4
%39 = and i32 %38, -8
%40 = icmp eq i32 %39, %1
br i1 %40, label %.loopexit, label %41
; <label>:41: ; preds = %35
%42 = icmp eq i32 %17, 31
%43 = lshr i32 %17, 1
%44 = sub nsw i32 25, %43
%45 = and i32 %44, 31
%46 = select i1 %42, i32 0, i32 %45
%47 = shl i32 %1, %46
br label %54
; <label>:48: ; preds = %54
%49 = shl i32 %56, 1
%50 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %59, i32 0, i32 1, i32 3
%51 = load i32, i32* %50, align 4
%52 = and i32 %51, -8
%53 = icmp eq i32 %52, %1
br i1 %53, label %.loopexit, label %54
; <label>:54: ; preds = %48, %41
%55 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %59, %48 ], [ %36, %41 ]
%56 = phi i32 [ %49, %48 ], [ %47, %41 ]
%57 = lshr i32 %56, 31
%58 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %55, i32 0, i32 3, i32 %57
%59 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %58, align 4
%60 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %59, null
br i1 %60, label %71, label %48
.loopexit: ; preds = %48, %35
%61 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %36, %35 ], [ %59, %48 ]
%62 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %61, i32 0, i32 1, i32 5
%63 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %62, align 4
%64 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %63, i32 0, i32 7
%65 = bitcast %"dlmalloc::dlmalloc::Chunk"** %64 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %65, align 4
%66 = bitcast %"dlmalloc::dlmalloc::Chunk"** %62 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %66, align 4
%67 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %63, %"dlmalloc::dlmalloc::Chunk"** %67, align 4
%68 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 7
%69 = bitcast %"dlmalloc::dlmalloc::Chunk"** %68 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %61, %"dlmalloc::dlmalloc::TreeChunk"** %69, align 4
%70 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 5
store %"dlmalloc::dlmalloc::TreeChunk"* null, %"dlmalloc::dlmalloc::TreeChunk"** %70, align 4
br label %77
; <label>:71: ; preds = %54
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %58, align 4
%72 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 5
store %"dlmalloc::dlmalloc::TreeChunk"* %55, %"dlmalloc::dlmalloc::TreeChunk"** %72, align 4
%73 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 7
%74 = bitcast %"dlmalloc::dlmalloc::Chunk"** %73 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %74, align 4
%75 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 5
%76 = bitcast %"dlmalloc::dlmalloc::Chunk"** %75 to %"dlmalloc::dlmalloc::TreeChunk"**
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %76, align 4
br label %77
; <label>:77: ; preds = %71, %.loopexit, %27
ret void
}
; Function Attrs: nounwind
declare i32 @llvm.wasm.memory.grow.i32(i32, i32) unnamed_addr #4
; dlmalloc::dlmalloc::Dlmalloc::dispose_chunk
; Function Attrs: nounwind
define internal fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"*, i32) unnamed_addr #1 {
%3 = bitcast %"dlmalloc::dlmalloc::Chunk"* %0 to i8*
%4 = getelementptr inbounds i8, i8* %3, i32 %1
%5 = bitcast i8* %4 to %"dlmalloc::dlmalloc::Chunk"*
%6 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %0, i32 0, i32 3
%7 = load i32, i32* %6, align 4
%8 = and i32 %7, 1
%9 = icmp eq i32 %8, 0
br i1 %9, label %10, label %58
; <label>:10: ; preds = %2
%11 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %0, i32 0, i32 0, i32 0
%12 = load i32, i32* %11, align 4
%13 = and i32 %7, 3
%14 = icmp eq i32 %13, 0
br i1 %14, label %22, label %15
; <label>:15: ; preds = %10
%16 = sub i32 0, %12
%17 = getelementptr inbounds i8, i8* %3, i32 %16
%18 = bitcast i8* %17 to %"dlmalloc::dlmalloc::Chunk"*
%19 = add i32 %12, %1
%20 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%21 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %20, %18
br i1 %21, label %45, label %23
; <label>:22: ; preds = %153, %146, %127, %87, %86, %76, %51, %10
ret void
; <label>:23: ; preds = %15
%24 = icmp ult i32 %12, 256
br i1 %24, label %25, label %43
; <label>:25: ; preds = %23
%26 = getelementptr inbounds i8, i8* %17, i32 8
%27 = bitcast i8* %26 to %"dlmalloc::dlmalloc::Chunk"**
%28 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %27, align 4
%29 = getelementptr inbounds i8, i8* %17, i32 12
%30 = bitcast i8* %29 to %"dlmalloc::dlmalloc::Chunk"**
%31 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %30, align 4
%32 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %31, %28
br i1 %32, label %33, label %40
; <label>:33: ; preds = %25
%34 = lshr i32 %12, 3
%35 = and i32 %34, 31
%36 = shl i32 1, %35
%37 = xor i32 %36, -1
%38 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
%39 = and i32 %38, %37
store i32 %39, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %58
; <label>:40: ; preds = %25
%41 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %28, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %31, %"dlmalloc::dlmalloc::Chunk"** %41, align 4
%42 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %31, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %28, %"dlmalloc::dlmalloc::Chunk"** %42, align 4
br label %58
; <label>:43: ; preds = %23
%44 = bitcast i8* %17 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* %44) #4
br label %58
; <label>:45: ; preds = %15
%46 = getelementptr inbounds i8, i8* %4, i32 4
%47 = bitcast i8* %46 to i32*
%48 = load i32, i32* %47, align 4
%49 = and i32 %48, 3
%50 = icmp eq i32 %49, 3
br i1 %50, label %51, label %58
; <label>:51: ; preds = %45
store i32 %19, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%52 = load i32, i32* %47, align 4
%53 = and i32 %52, -2
store i32 %53, i32* %47, align 4
%54 = getelementptr inbounds i8, i8* %17, i32 4
%55 = bitcast i8* %54 to i32*
%56 = or i32 %19, 1
store i32 %56, i32* %55, align 4
%57 = bitcast i8* %4 to i32*
store i32 %19, i32* %57, align 4
br label %22
; <label>:58: ; preds = %45, %43, %40, %33, %2
%59 = phi i32 [ %19, %45 ], [ %1, %2 ], [ %19, %33 ], [ %19, %40 ], [ %19, %43 ]
%60 = phi %"dlmalloc::dlmalloc::Chunk"* [ %18, %45 ], [ %0, %2 ], [ %18, %33 ], [ %18, %40 ], [ %18, %43 ]
%61 = getelementptr inbounds i8, i8* %4, i32 4
%62 = bitcast i8* %61 to i32*
%63 = load i32, i32* %62, align 4
%64 = and i32 %63, 2
%65 = icmp eq i32 %64, 0
br i1 %65, label %66, label %69
; <label>:66: ; preds = %58
%67 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%68 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %67, %5
br i1 %68, label %76, label %83
; <label>:69: ; preds = %58
%70 = and i32 %63, -2
store i32 %70, i32* %62, align 4
%71 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 3
%72 = or i32 %59, 1
store i32 %72, i32* %71, align 4
%73 = bitcast %"dlmalloc::dlmalloc::Chunk"* %60 to i8*
%74 = getelementptr inbounds i8, i8* %73, i32 %59
%75 = bitcast i8* %74 to i32*
store i32 %59, i32* %75, align 4
br label %128
; <label>:76: ; preds = %66
%77 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%78 = add i32 %77, %59
store i32 %78, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
store %"dlmalloc::dlmalloc::Chunk"* %60, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%79 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 3
%80 = or i32 %78, 1
store i32 %80, i32* %79, align 4
%81 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%82 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %60, %81
br i1 %82, label %86, label %22
; <label>:83: ; preds = %66
%84 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%85 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %84, %5
br i1 %85, label %87, label %95
; <label>:86: ; preds = %76
store %"dlmalloc::dlmalloc::Chunk"* null, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
br label %22
; <label>:87: ; preds = %83
%88 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%89 = add i32 %88, %59
store i32 %89, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
store %"dlmalloc::dlmalloc::Chunk"* %60, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%90 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 3
%91 = or i32 %89, 1
store i32 %91, i32* %90, align 4
%92 = bitcast %"dlmalloc::dlmalloc::Chunk"* %60 to i8*
%93 = getelementptr inbounds i8, i8* %92, i32 %89
%94 = bitcast i8* %93 to i32*
store i32 %89, i32* %94, align 4
br label %22
; <label>:95: ; preds = %83
%96 = and i32 %63, -8
%97 = add i32 %96, %59
%98 = icmp ult i32 %96, 256
br i1 %98, label %99, label %117
; <label>:99: ; preds = %95
%100 = getelementptr inbounds i8, i8* %4, i32 8
%101 = bitcast i8* %100 to %"dlmalloc::dlmalloc::Chunk"**
%102 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %101, align 4
%103 = getelementptr inbounds i8, i8* %4, i32 12
%104 = bitcast i8* %103 to %"dlmalloc::dlmalloc::Chunk"**
%105 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %104, align 4
%106 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %105, %102
br i1 %106, label %107, label %114
; <label>:107: ; preds = %99
%108 = lshr i32 %63, 3
%109 = and i32 %108, 31
%110 = shl i32 1, %109
%111 = xor i32 %110, -1
%112 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
%113 = and i32 %112, %111
store i32 %113, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %119
; <label>:114: ; preds = %99
%115 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %102, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %105, %"dlmalloc::dlmalloc::Chunk"** %115, align 4
%116 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %105, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %102, %"dlmalloc::dlmalloc::Chunk"** %116, align 4
br label %119
; <label>:117: ; preds = %95
%118 = bitcast i8* %4 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* %118) #4
br label %119
; <label>:119: ; preds = %117, %114, %107
%120 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 3
%121 = or i32 %97, 1
store i32 %121, i32* %120, align 4
%122 = bitcast %"dlmalloc::dlmalloc::Chunk"* %60 to i8*
%123 = getelementptr inbounds i8, i8* %122, i32 %97
%124 = bitcast i8* %123 to i32*
store i32 %97, i32* %124, align 4
%125 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%126 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %60, %125
br i1 %126, label %127, label %128
; <label>:127: ; preds = %119
store i32 %97, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
br label %22
; <label>:128: ; preds = %119, %69
%129 = phi i32 [ %97, %119 ], [ %59, %69 ]
%130 = icmp ult i32 %129, 256
br i1 %130, label %131, label %153
; <label>:131: ; preds = %128
%132 = lshr i32 %129, 3
%133 = shl nuw nsw i32 %132, 1
%134 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %133
%135 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !69
%136 = and i32 %132, 31
%137 = shl i32 1, %136
%138 = and i32 %135, %137
%139 = icmp eq i32 %138, 0
br i1 %139, label %140, label %143
; <label>:140: ; preds = %131
%141 = bitcast %"dlmalloc::dlmalloc::Chunk"** %134 to %"dlmalloc::dlmalloc::Chunk"*
%142 = or i32 %135, %137
store i32 %142, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %146
; <label>:143: ; preds = %131
%144 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %134, i32 2
%145 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %144, align 4
br label %146
; <label>:146: ; preds = %143, %140
%147 = phi %"dlmalloc::dlmalloc::Chunk"* [ %141, %140 ], [ %145, %143 ]
%148 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %134, i32 2
store %"dlmalloc::dlmalloc::Chunk"* %60, %"dlmalloc::dlmalloc::Chunk"** %148, align 4
%149 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %147, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %60, %"dlmalloc::dlmalloc::Chunk"** %149, align 4
%150 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %147, %"dlmalloc::dlmalloc::Chunk"** %150, align 4
%151 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 7
%152 = bitcast %"dlmalloc::dlmalloc::Chunk"** %151 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %134, %"dlmalloc::dlmalloc::Chunk"*** %152, align 4
br label %22
; <label>:153: ; preds = %128
%154 = bitcast %"dlmalloc::dlmalloc::Chunk"* %60 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %154, i32 %129) #4
br label %22
}
; dlmalloc::dlmalloc::Dlmalloc::free
; Function Attrs: nounwind
define internal fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc4free17he8b0435c3a66c50fE(i8*) unnamed_addr #1 {
%2 = getelementptr inbounds i8, i8* %0, i32 -8
%3 = bitcast i8* %2 to %"dlmalloc::dlmalloc::Chunk"*
%4 = getelementptr inbounds i8, i8* %0, i32 -4
%5 = bitcast i8* %4 to i32*
%6 = load i32, i32* %5, align 4
%7 = and i32 %6, -8
%8 = getelementptr inbounds i8, i8* %2, i32 %7
%9 = bitcast i8* %8 to %"dlmalloc::dlmalloc::Chunk"*
%10 = and i32 %6, 1
%11 = icmp eq i32 %10, 0
br i1 %11, label %12, label %61
; <label>:12: ; preds = %1
%13 = bitcast i8* %2 to i32*
%14 = load i32, i32* %13, align 4
%15 = and i32 %6, 3
%16 = icmp eq i32 %15, 0
br i1 %16, label %24, label %17
; <label>:17: ; preds = %12
%18 = sub i32 0, %14
%19 = getelementptr inbounds i8, i8* %2, i32 %18
%20 = bitcast i8* %19 to %"dlmalloc::dlmalloc::Chunk"*
%21 = add i32 %14, %7
%22 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%23 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %22, %20
br i1 %23, label %47, label %25
; <label>:24: ; preds = %212, %195, %186, %167, %129, %128, %125, %93, %90, %53, %12
ret void
; <label>:25: ; preds = %17
%26 = icmp ult i32 %14, 256
br i1 %26, label %27, label %45
; <label>:27: ; preds = %25
%28 = getelementptr inbounds i8, i8* %19, i32 8
%29 = bitcast i8* %28 to %"dlmalloc::dlmalloc::Chunk"**
%30 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %29, align 4
%31 = getelementptr inbounds i8, i8* %19, i32 12
%32 = bitcast i8* %31 to %"dlmalloc::dlmalloc::Chunk"**
%33 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %32, align 4
%34 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %33, %30
br i1 %34, label %35, label %42
; <label>:35: ; preds = %27
%36 = lshr i32 %14, 3
%37 = and i32 %36, 31
%38 = shl i32 1, %37
%39 = xor i32 %38, -1
%40 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
%41 = and i32 %40, %39
store i32 %41, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %61
; <label>:42: ; preds = %27
%43 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %30, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %33, %"dlmalloc::dlmalloc::Chunk"** %43, align 4
%44 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %33, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %30, %"dlmalloc::dlmalloc::Chunk"** %44, align 4
br label %61
; <label>:45: ; preds = %25
%46 = bitcast i8* %19 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* nonnull %46) #4
br label %61
; <label>:47: ; preds = %17
%48 = getelementptr inbounds i8, i8* %8, i32 4
%49 = bitcast i8* %48 to i32*
%50 = load i32, i32* %49, align 4
%51 = and i32 %50, 3
%52 = icmp eq i32 %51, 3
br i1 %52, label %53, label %61
; <label>:53: ; preds = %47
store i32 %21, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%54 = load i32, i32* %49, align 4
%55 = and i32 %54, -2
store i32 %55, i32* %49, align 4
%56 = getelementptr inbounds i8, i8* %19, i32 4
%57 = bitcast i8* %56 to i32*
%58 = or i32 %21, 1
store i32 %58, i32* %57, align 4
%59 = getelementptr inbounds i8, i8* %19, i32 %21
%60 = bitcast i8* %59 to i32*
store i32 %21, i32* %60, align 4
br label %24
; <label>:61: ; preds = %47, %45, %42, %35, %1
%62 = phi i32 [ %21, %47 ], [ %7, %1 ], [ %21, %35 ], [ %21, %42 ], [ %21, %45 ]
%63 = phi i8* [ %19, %47 ], [ %2, %1 ], [ %19, %35 ], [ %19, %42 ], [ %19, %45 ]
%64 = phi %"dlmalloc::dlmalloc::Chunk"* [ %20, %47 ], [ %3, %1 ], [ %20, %35 ], [ %20, %42 ], [ %20, %45 ]
%65 = getelementptr inbounds i8, i8* %8, i32 4
%66 = bitcast i8* %65 to i32*
%67 = load i32, i32* %66, align 4
%68 = and i32 %67, 2
%69 = icmp eq i32 %68, 0
br i1 %69, label %70, label %73
; <label>:70: ; preds = %61
%71 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%72 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %71, %9
br i1 %72, label %79, label %86
; <label>:73: ; preds = %61
%74 = and i32 %67, -2
store i32 %74, i32* %66, align 4
%75 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 3
%76 = or i32 %62, 1
store i32 %76, i32* %75, align 4
%77 = getelementptr inbounds i8, i8* %63, i32 %62
%78 = bitcast i8* %77 to i32*
store i32 %62, i32* %78, align 4
br label %168
; <label>:79: ; preds = %70
%80 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%81 = add i32 %80, %62
store i32 %81, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
store %"dlmalloc::dlmalloc::Chunk"* %64, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%82 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 3
%83 = or i32 %81, 1
store i32 %83, i32* %82, align 4
%84 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%85 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %64, %84
br i1 %85, label %89, label %90
; <label>:86: ; preds = %70
%87 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%88 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %87, %9
br i1 %88, label %129, label %136
; <label>:89: ; preds = %79
store %"dlmalloc::dlmalloc::Chunk"* null, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
br label %90
; <label>:90: ; preds = %89, %79
%91 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4, !alias.scope !72
%92 = icmp ult i32 %91, %81
br i1 %92, label %93, label %24
; <label>:93: ; preds = %90
%94 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%95 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %94, null
%96 = bitcast %"dlmalloc::dlmalloc::Chunk"* %94 to i8*
br i1 %95, label %24, label %97
; <label>:97: ; preds = %93
%98 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4
%99 = icmp ugt i32 %98, 40
br i1 %99, label %100, label %.loopexit
; <label>:100: ; preds = %97, %110
%101 = phi %"dlmalloc::dlmalloc::Segment"* [ %112, %110 ], [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to %"dlmalloc::dlmalloc::Segment"*), %97 ]
%102 = bitcast %"dlmalloc::dlmalloc::Segment"* %101 to i8**
%103 = load i8*, i8** %102, align 4
%104 = icmp ugt i8* %103, %96
br i1 %104, label %110, label %105
; <label>:105: ; preds = %100
%106 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %101, i32 0, i32 3
%107 = load i32, i32* %106, align 4
%108 = getelementptr inbounds i8, i8* %103, i32 %107
%109 = icmp ugt i8* %108, %96
br i1 %109, label %.loopexit, label %110
; <label>:110: ; preds = %105, %100
%111 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %101, i32 0, i32 5
%112 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %111, align 4
%113 = icmp eq %"dlmalloc::dlmalloc::Segment"* %112, null
br i1 %113, label %.loopexit, label %100
.loopexit: ; preds = %110, %105, %97
%114 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 432) to %"dlmalloc::dlmalloc::Segment"**), align 4
%115 = icmp eq %"dlmalloc::dlmalloc::Segment"* %114, null
br i1 %115, label %125, label %.preheader
; <label>:116: ; preds = %.preheader
%117 = icmp ugt i32 %123, 4095
%118 = select i1 %117, i32 %123, i32 4095
br label %125
.preheader: ; preds = %.loopexit, %.preheader
%119 = phi i32 [ %123, %.preheader ], [ 0, %.loopexit ]
%120 = phi %"dlmalloc::dlmalloc::Segment"* [ %122, %.preheader ], [ %114, %.loopexit ]
%121 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %120, i32 0, i32 5
%122 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %121, align 4
%123 = add i32 %119, 1
%124 = icmp eq %"dlmalloc::dlmalloc::Segment"* %122, null
br i1 %124, label %116, label %.preheader
; <label>:125: ; preds = %116, %.loopexit
%126 = phi i32 [ 4095, %.loopexit ], [ %118, %116 ]
store i32 %126, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4
%127 = icmp ugt i32 %98, %91
br i1 %127, label %128, label %24
; <label>:128: ; preds = %125
store i32 -1, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4
br label %24
; <label>:129: ; preds = %86
%130 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
%131 = add i32 %130, %62
store i32 %131, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
store i8* %63, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4
%132 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 3
%133 = or i32 %131, 1
store i32 %133, i32* %132, align 4
%134 = getelementptr inbounds i8, i8* %63, i32 %131
%135 = bitcast i8* %134 to i32*
store i32 %131, i32* %135, align 4
br label %24
; <label>:136: ; preds = %86
%137 = and i32 %67, -8
%138 = add i32 %137, %62
%139 = icmp ult i32 %137, 256
br i1 %139, label %140, label %158
; <label>:140: ; preds = %136
%141 = getelementptr inbounds i8, i8* %8, i32 8
%142 = bitcast i8* %141 to %"dlmalloc::dlmalloc::Chunk"**
%143 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %142, align 4
%144 = getelementptr inbounds i8, i8* %8, i32 12
%145 = bitcast i8* %144 to %"dlmalloc::dlmalloc::Chunk"**
%146 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %145, align 4
%147 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %146, %143
br i1 %147, label %148, label %155
; <label>:148: ; preds = %140
%149 = lshr i32 %67, 3
%150 = and i32 %149, 31
%151 = shl i32 1, %150
%152 = xor i32 %151, -1
%153 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
%154 = and i32 %153, %152
store i32 %154, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %160
; <label>:155: ; preds = %140
%156 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %143, i32 0, i32 7
store %"dlmalloc::dlmalloc::Chunk"* %146, %"dlmalloc::dlmalloc::Chunk"** %156, align 4
%157 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %146, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %143, %"dlmalloc::dlmalloc::Chunk"** %157, align 4
br label %160
; <label>:158: ; preds = %136
%159 = bitcast i8* %8 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* nonnull %159) #4
br label %160
; <label>:160: ; preds = %158, %155, %148
%161 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 3
%162 = or i32 %138, 1
store i32 %162, i32* %161, align 4
%163 = getelementptr inbounds i8, i8* %63, i32 %138
%164 = bitcast i8* %163 to i32*
store i32 %138, i32* %164, align 4
%165 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4
%166 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %64, %165
br i1 %166, label %167, label %168
; <label>:167: ; preds = %160
store i32 %138, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4
br label %24
; <label>:168: ; preds = %160, %73
%169 = phi i32 [ %138, %160 ], [ %62, %73 ]
%170 = icmp ult i32 %169, 256
br i1 %170, label %171, label %195
; <label>:171: ; preds = %168
%172 = lshr i32 %169, 3
%173 = shl nuw nsw i32 %172, 1
%174 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %173
%175 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !75
%176 = and i32 %172, 31
%177 = shl i32 1, %176
%178 = and i32 %175, %177
%179 = icmp eq i32 %178, 0
br i1 %179, label %180, label %183
; <label>:180: ; preds = %171
%181 = bitcast %"dlmalloc::dlmalloc::Chunk"** %174 to %"dlmalloc::dlmalloc::Chunk"*
%182 = or i32 %175, %177
store i32 %182, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4
br label %186
; <label>:183: ; preds = %171
%184 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %174, i32 2
%185 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %184, align 4
br label %186
; <label>:186: ; preds = %183, %180
%187 = phi %"dlmalloc::dlmalloc::Chunk"* [ %181, %180 ], [ %185, %183 ]
%188 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %174, i32 2
%189 = bitcast %"dlmalloc::dlmalloc::Chunk"** %188 to i8**
store i8* %63, i8** %189, align 4
%190 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %187, i32 0, i32 7
%191 = bitcast %"dlmalloc::dlmalloc::Chunk"** %190 to i8**
store i8* %63, i8** %191, align 4
%192 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 5
store %"dlmalloc::dlmalloc::Chunk"* %187, %"dlmalloc::dlmalloc::Chunk"** %192, align 4
%193 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 7
%194 = bitcast %"dlmalloc::dlmalloc::Chunk"** %193 to %"dlmalloc::dlmalloc::Chunk"***
store %"dlmalloc::dlmalloc::Chunk"** %174, %"dlmalloc::dlmalloc::Chunk"*** %194, align 4
br label %24
; <label>:195: ; preds = %168
%196 = bitcast %"dlmalloc::dlmalloc::Chunk"* %64 to %"dlmalloc::dlmalloc::TreeChunk"*
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %196, i32 %169)
%197 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4
%198 = add i32 %197, -1
store i32 %198, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4
%199 = icmp eq i32 %198, 0
br i1 %199, label %200, label %24
; <label>:200: ; preds = %195
%201 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 432) to %"dlmalloc::dlmalloc::Segment"**), align 4
%202 = icmp eq %"dlmalloc::dlmalloc::Segment"* %201, null
br i1 %202, label %212, label %.preheader1
; <label>:203: ; preds = %.preheader1
%204 = icmp ugt i32 %210, 4095
%205 = select i1 %204, i32 %210, i32 4095
br label %212
.preheader1: ; preds = %200, %.preheader1
%206 = phi i32 [ %210, %.preheader1 ], [ 0, %200 ]
%207 = phi %"dlmalloc::dlmalloc::Segment"* [ %209, %.preheader1 ], [ %201, %200 ]
%208 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %207, i32 0, i32 5
%209 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %208, align 4
%210 = add i32 %206, 1
%211 = icmp eq %"dlmalloc::dlmalloc::Segment"* %209, null
br i1 %211, label %203, label %.preheader1
; <label>:212: ; preds = %203, %200
%213 = phi i32 [ 4095, %200 ], [ %205, %203 ]
store i32 %213, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4
br label %24
}
; core::ptr::real_drop_in_place
; Function Attrs: norecurse nounwind readnone
define internal void @_ZN4core3ptr18real_drop_in_place17h11f9a8883a7a2a93E(%"alloc::vec::Vec<u8>"** nocapture align 4 dereferenceable(4)) unnamed_addr #10 {
ret void
}
; <&mut W as core::fmt::Write>::write_str
; Function Attrs: nounwind
define internal zeroext i1 @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$9write_str17hd2f7186c6afb8473E"(%"alloc::string::String"** nocapture readonly align 4 dereferenceable(4), [0 x i8]* noalias nocapture nonnull readonly align 1, i32) unnamed_addr #1 {
%4 = bitcast %"alloc::string::String"** %0 to %"alloc::vec::Vec<u8>"**
%5 = load %"alloc::vec::Vec<u8>"*, %"alloc::vec::Vec<u8>"** %4, align 4, !nonnull !9
%6 = getelementptr inbounds %"alloc::vec::Vec<u8>", %"alloc::vec::Vec<u8>"* %5, i32 0, i32 3
%7 = load i32, i32* %6, align 4
%8 = getelementptr inbounds %"alloc::vec::Vec<u8>", %"alloc::vec::Vec<u8>"* %5, i32 0, i32 1, i32 1
%9 = load i32, i32* %8, align 4, !alias.scope !78
%10 = sub i32 %9, %7
%11 = icmp ult i32 %10, %2
br i1 %11, label %12, label %._crit_edge
._crit_edge: ; preds = %3
%.phi.trans.insert = bitcast %"alloc::vec::Vec<u8>"* %5 to i8**
%.pre1 = load i8*, i8** %.phi.trans.insert, align 4, !alias.scope !81, !noalias !84
br label %37
; <label>:12: ; preds = %3
%13 = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %7, i32 %2) #4
%14 = extractvalue { i32, i1 } %13, 0
%15 = extractvalue { i32, i1 } %13, 1
br i1 %15, label %36, label %16
; <label>:16: ; preds = %12
%17 = shl i32 %9, 1
%18 = icmp ult i32 %14, %17
%19 = select i1 %18, i32 %17, i32 %14
%20 = icmp sgt i32 %19, -1
br i1 %20, label %21, label %36
; <label>:21: ; preds = %16
%22 = icmp eq i32 %9, 0
br i1 %22, label %23, label %25
; <label>:23: ; preds = %21
%24 = tail call fastcc i8* @__rust_alloc(i32 %19, i32 1) #4
br label %29
; <label>:25: ; preds = %21
%26 = bitcast %"alloc::vec::Vec<u8>"* %5 to i8**
%27 = load i8*, i8** %26, align 4, !nonnull !9
%28 = tail call fastcc i8* @__rust_realloc(i8* nonnull %27, i32 %19) #4
br label %29
; <label>:29: ; preds = %25, %23
%30 = phi i8* [ %24, %23 ], [ %28, %25 ]
%31 = icmp eq i8* %30, null
br i1 %31, label %32, label %34
; <label>:32: ; preds = %29
%33 = load atomic i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std5alloc4HOOK17h764bafd5839a31b5E to i32*) seq_cst, align 4
tail call void @llvm.trap() #4
unreachable
; <label>:34: ; preds = %29
%35 = bitcast %"alloc::vec::Vec<u8>"* %5 to i8**
store i8* %30, i8** %35, align 4
store i32 %19, i32* %8, align 4
%.pre = load i32, i32* %6, align 4, !alias.scope !87, !noalias !84
br label %37
; <label>:36: ; preds = %12, %16
; call alloc::raw_vec::capacity_overflow
tail call fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() #4
unreachable
; <label>:37: ; preds = %._crit_edge, %34
%38 = phi i8* [ %30, %34 ], [ %.pre1, %._crit_edge ]
%39 = phi i32 [ %.pre, %34 ], [ %7, %._crit_edge ]
%40 = add i32 %39, %2
store i32 %40, i32* %6, align 4, !noalias !84
%41 = getelementptr inbounds i8, i8* %38, i32 %39
%42 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 0
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 %41, i8* nonnull align 1 %42, i32 %2, i1 false) #4
ret i1 false
}
; <&mut W as core::fmt::Write>::write_char
; Function Attrs: nounwind
define internal zeroext i1 @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$10write_char17h3421ff6923860a71E"(%"alloc::string::String"** nocapture readonly align 4 dereferenceable(4), i32) unnamed_addr #1 {
%3 = alloca i32, align 4
%4 = load %"alloc::string::String"*, %"alloc::string::String"** %0, align 4, !nonnull !9
%5 = icmp ult i32 %1, 1114112
tail call void @llvm.assume(i1 %5) #4
%6 = icmp ult i32 %1, 128
br i1 %6, label %9, label %7
; <label>:7: ; preds = %2
%8 = icmp ult i32 %1, 2048
%.0.sroa_cast4 = bitcast i32* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* %.0.sroa_cast4)
store i32 0, i32* %3, align 4
br i1 %8, label %48, label %56
; <label>:9: ; preds = %2
%10 = trunc i32 %1 to i8
%11 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %4, i32 0, i32 1, i32 3
%12 = load i32, i32* %11, align 4
%13 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %4, i32 0, i32 1, i32 1, i32 1
%14 = load i32, i32* %13, align 4, !alias.scope !90
%15 = icmp eq i32 %12, %14
br i1 %15, label %16, label %41
; <label>:16: ; preds = %9
%17 = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %12, i32 1) #4
%18 = extractvalue { i32, i1 } %17, 0
%19 = extractvalue { i32, i1 } %17, 1
br i1 %19, label %40, label %20
; <label>:20: ; preds = %16
%21 = shl i32 %12, 1
%22 = icmp ult i32 %18, %21
%23 = select i1 %22, i32 %21, i32 %18
%24 = icmp sgt i32 %23, -1
br i1 %24, label %25, label %40
; <label>:25: ; preds = %20
%26 = icmp eq i32 %12, 0
br i1 %26, label %27, label %29
; <label>:27: ; preds = %25
%28 = tail call fastcc i8* @__rust_alloc(i32 %23, i32 1) #4
br label %33
; <label>:29: ; preds = %25
%30 = bitcast %"alloc::string::String"* %4 to i8**
%31 = load i8*, i8** %30, align 4, !nonnull !9
%32 = tail call fastcc i8* @__rust_realloc(i8* nonnull %31, i32 %23) #4
br label %33
; <label>:33: ; preds = %29, %27
%34 = phi i8* [ %28, %27 ], [ %32, %29 ]
%35 = icmp eq i8* %34, null
br i1 %35, label %36, label %38
; <label>:36: ; preds = %33
%37 = load atomic i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std5alloc4HOOK17h764bafd5839a31b5E to i32*) seq_cst, align 4
tail call void @llvm.trap() #4
unreachable
; <label>:38: ; preds = %33
%39 = bitcast %"alloc::string::String"* %4 to i8**
store i8* %34, i8** %39, align 4
store i32 %23, i32* %13, align 4
%.pre14 = load i32, i32* %11, align 4
br label %41
; <label>:40: ; preds = %20, %16
; call alloc::raw_vec::capacity_overflow
tail call fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() #4
unreachable
; <label>:41: ; preds = %38, %9
%42 = phi i32 [ %.pre14, %38 ], [ %12, %9 ]
%43 = bitcast %"alloc::string::String"* %4 to [0 x i8]**
%44 = load [0 x i8]*, [0 x i8]** %43, align 4, !alias.scope !93, !nonnull !9
%45 = getelementptr inbounds [0 x i8], [0 x i8]* %44, i32 0, i32 %42
store i8 %10, i8* %45, align 1
%46 = load i32, i32* %11, align 4
%47 = add i32 %46, 1
store i32 %47, i32* %11, align 4
br label %_ZN5alloc6string6String4push17h2ebd56547e69a48dE.llvm.12840304214050579564.exit
; <label>:48: ; preds = %7
%49 = lshr i32 %1, 6
%50 = trunc i32 %49 to i8
%51 = and i8 %50, 31
%52 = or i8 %51, -64
store i8 %52, i8* %.0.sroa_cast4, align 4
%53 = trunc i32 %1 to i8
%54 = and i8 %53, 63
%55 = or i8 %54, -128
%.1.sroa_raw_idx9 = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 1
store i8 %55, i8* %.1.sroa_raw_idx9, align 1
br label %85
; <label>:56: ; preds = %7
%57 = icmp ult i32 %1, 65536
br i1 %57, label %58, label %70
; <label>:58: ; preds = %56
%59 = lshr i32 %1, 12
%60 = trunc i32 %59 to i8
%61 = and i8 %60, 15
%62 = or i8 %61, -32
store i8 %62, i8* %.0.sroa_cast4, align 4
%63 = lshr i32 %1, 6
%64 = trunc i32 %63 to i8
%65 = and i8 %64, 63
%66 = or i8 %65, -128
%.1.sroa_raw_idx7 = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 1
store i8 %66, i8* %.1.sroa_raw_idx7, align 1
%67 = trunc i32 %1 to i8
%68 = and i8 %67, 63
%69 = or i8 %68, -128
%.2.sroa_raw_idx11 = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 2
store i8 %69, i8* %.2.sroa_raw_idx11, align 2
br label %85
; <label>:70: ; preds = %56
%71 = lshr i32 %1, 18
%72 = trunc i32 %71 to i8
%73 = or i8 %72, -16
store i8 %73, i8* %.0.sroa_cast4, align 4
%74 = lshr i32 %1, 12
%75 = trunc i32 %74 to i8
%76 = and i8 %75, 63
%77 = or i8 %76, -128
%.1.sroa_raw_idx = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 1
store i8 %77, i8* %.1.sroa_raw_idx, align 1
%78 = lshr i32 %1, 6
%79 = trunc i32 %78 to i8
%80 = and i8 %79, 63
%81 = or i8 %80, -128
%.2.sroa_raw_idx = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 2
store i8 %81, i8* %.2.sroa_raw_idx, align 2
%82 = trunc i32 %1 to i8
%83 = and i8 %82, 63
%84 = or i8 %83, -128
%.3.sroa_raw_idx = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 3
store i8 %84, i8* %.3.sroa_raw_idx, align 1
br label %85
; <label>:85: ; preds = %70, %58, %48
%86 = phi i32 [ 2, %48 ], [ 3, %58 ], [ 4, %70 ]
%87 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %4, i32 0, i32 1, i32 3
%88 = load i32, i32* %87, align 4
%89 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %4, i32 0, i32 1, i32 1, i32 1
%90 = load i32, i32* %89, align 4, !alias.scope !96
%91 = sub i32 %90, %88
%92 = icmp ult i32 %91, %86
br i1 %92, label %93, label %._crit_edge
._crit_edge: ; preds = %85
%.phi.trans.insert = bitcast %"alloc::string::String"* %4 to i8**
%.pre12 = load i8*, i8** %.phi.trans.insert, align 4, !alias.scope !99, !noalias !102
br label %118
; <label>:93: ; preds = %85
%94 = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %88, i32 %86) #4
%95 = extractvalue { i32, i1 } %94, 0
%96 = extractvalue { i32, i1 } %94, 1
br i1 %96, label %117, label %97
; <label>:97: ; preds = %93
%98 = shl i32 %90, 1
%99 = icmp ult i32 %95, %98
%100 = select i1 %99, i32 %98, i32 %95
%101 = icmp sgt i32 %100, -1
br i1 %101, label %102, label %117
; <label>:102: ; preds = %97
%103 = icmp eq i32 %90, 0
br i1 %103, label %104, label %106
; <label>:104: ; preds = %102
%105 = tail call fastcc i8* @__rust_alloc(i32 %100, i32 1) #4
br label %110
; <label>:106: ; preds = %102
%107 = bitcast %"alloc::string::String"* %4 to i8**
%108 = load i8*, i8** %107, align 4, !nonnull !9
%109 = tail call fastcc i8* @__rust_realloc(i8* nonnull %108, i32 %100) #4
br label %110
; <label>:110: ; preds = %106, %104
%111 = phi i8* [ %105, %104 ], [ %109, %106 ]
%112 = icmp eq i8* %111, null
br i1 %112, label %113, label %115
; <label>:113: ; preds = %110
%114 = load atomic i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std5alloc4HOOK17h764bafd5839a31b5E to i32*) seq_cst, align 4
tail call void @llvm.trap() #4
unreachable
; <label>:115: ; preds = %110
%116 = bitcast %"alloc::string::String"* %4 to i8**
store i8* %111, i8** %116, align 4
store i32 %100, i32* %89, align 4
%.pre = load i32, i32* %87, align 4, !alias.scope !105, !noalias !102
br label %118
; <label>:117: ; preds = %97, %93
; call alloc::raw_vec::capacity_overflow
tail call fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() #4
unreachable
; <label>:118: ; preds = %._crit_edge, %115
%119 = phi i8* [ %111, %115 ], [ %.pre12, %._crit_edge ]
%120 = phi i32 [ %.pre, %115 ], [ %88, %._crit_edge ]
%121 = add i32 %120, %86
store i32 %121, i32* %87, align 4, !noalias !102
%122 = getelementptr inbounds i8, i8* %119, i32 %120
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 %122, i8* nonnull align 4 %.0.sroa_cast4, i32 %86, i1 false) #4
call void @llvm.lifetime.end.p0i8(i64 4, i8* %.0.sroa_cast4)
br label %_ZN5alloc6string6String4push17h2ebd56547e69a48dE.llvm.12840304214050579564.exit
_ZN5alloc6string6String4push17h2ebd56547e69a48dE.llvm.12840304214050579564.exit: ; preds = %41, %118
ret i1 false
}
; <&mut W as core::fmt::Write>::write_fmt
; Function Attrs: nounwind
define internal zeroext i1 @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$9write_fmt17h6116dc4b2b375d0dE"(%"alloc::string::String"** nocapture readonly align 4 dereferenceable(4), %"core::fmt::Arguments"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #1 {
%3 = alloca %"core::fmt::Arguments", align 4
%4 = alloca %"alloc::string::String"*, align 4
%5 = bitcast %"alloc::string::String"** %0 to i32*
%6 = load i32, i32* %5, align 4, !range !37
%7 = bitcast %"core::fmt::Arguments"* %1 to i8*
%8 = bitcast %"alloc::string::String"** %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %8)
%9 = bitcast %"alloc::string::String"** %4 to i32*
store i32 %6, i32* %9, align 4, !noalias !108
%10 = bitcast %"alloc::string::String"** %4 to {}*
%11 = bitcast %"core::fmt::Arguments"* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %11) #4, !noalias !108
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 %11, i8* nonnull align 4 %7, i32 24, i1 false)
; call core::fmt::write
%12 = call fastcc zeroext i1 @_ZN4core3fmt5write17h18d01890e24e0492E({}* nonnull align 1 %10, [3 x i32]* noalias readonly align 4 dereferenceable(12) bitcast ({ void (%"alloc::string::String"**)*, i32, i32, i1 (%"alloc::string::String"**, [0 x i8]*, i32)*, i1 (%"alloc::string::String"**, i32)*, i1 (%"alloc::string::String"**, %"core::fmt::Arguments"*)* }* @anon.744bfa4edaa14c29caacdd024c6ee3e0.0.llvm.12840304214050579564 to [3 x i32]*), %"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %3) #4, !noalias !108
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %11) #4, !noalias !108
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %8)
ret i1 %12
}
; <alloc::raw_vec::RawVec<T, A>>::allocate_in::{{closure}}
; Function Attrs: noreturn nounwind
define internal fastcc void @"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$11allocate_in28_$u7b$$u7b$closure$u7d$$u7d$17h4914b36e41593c37E.llvm.13677019499217490248"() unnamed_addr #5 {
; call alloc::raw_vec::capacity_overflow
tail call fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE()
unreachable
}
; alloc::raw_vec::capacity_overflow
; Function Attrs: noreturn nounwind
define internal fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() unnamed_addr #5 {
; call core::panicking::panic
tail call fastcc void @_ZN4core9panicking5panic17hf05582941268164eE({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(24) bitcast (<{ i8*, [4 x i8], i8*, [12 x i8] }>* @anon.3159f7bfd756b91e03039f83b95d896b.6.llvm.13677019499217490248 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
unreachable
}
; core::result::unwrap_failed
; Function Attrs: cold noinline noreturn nounwind
define internal fastcc void @_ZN4core6result13unwrap_failed17hdaafde7dc2e93beeE() unnamed_addr #11 {
%1 = alloca {}, align 1
%2 = alloca [2 x { i8*, i8* }], align 4
%3 = alloca %"core::fmt::Arguments", align 4
%4 = alloca { [0 x i8]*, i32 }, align 4
%5 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %4, i32 0, i32 0
store [0 x i8]* bitcast (<{ [51 x i8] }>* @anon.df567034a751418bb1907aa1d09cab77.2 to [0 x i8]*), [0 x i8]** %5, align 4
%6 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %4, i32 0, i32 1
store i32 51, i32* %6, align 4
%7 = bitcast %"core::fmt::Arguments"* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %7)
%8 = bitcast [2 x { i8*, i8* }]* %2 to i8*
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %8)
%9 = bitcast [2 x { i8*, i8* }]* %2 to { [0 x i8]*, i32 }**
store { [0 x i8]*, i32 }* %4, { [0 x i8]*, i32 }** %9, align 4
%10 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %2, i32 0, i32 0, i32 1
store i8* bitcast (i1 ({ [0 x i8]*, i32 }*, %"core::fmt::Formatter"*)* @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h55db9f6e3c3fdf96E" to i8*), i8** %10, align 4
%11 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %2, i32 0, i32 1, i32 0
%12 = bitcast i8** %11 to {}**
store {}* %1, {}** %12, align 4
%13 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %2, i32 0, i32 1, i32 1
store i8* bitcast (i1 ({}*, %"core::fmt::Formatter"*)* @"_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h5c867cfdf324d2bdE" to i8*), i8** %13, align 4
%14 = bitcast %"core::fmt::Arguments"* %3 to [0 x { [0 x i8]*, i32 }]**
store [0 x { [0 x i8]*, i32 }]* bitcast (<{ i8*, [4 x i8], i8*, [4 x i8] }>* @anon.4607067c643420ef3dad7445f19d8a9e.2 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %14, align 4, !alias.scope !111, !noalias !114
%15 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %3, i32 0, i32 1, i32 1
store i32 2, i32* %15, align 4, !alias.scope !111, !noalias !114
%16 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %3, i32 0, i32 3, i32 0
store i32* null, i32** %16, align 4, !alias.scope !111, !noalias !114
%17 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %3, i32 0, i32 5, i32 0
%18 = bitcast [0 x { i8*, i8* }]** %17 to [2 x { i8*, i8* }]**
store [2 x { i8*, i8* }]* %2, [2 x { i8*, i8* }]** %18, align 4, !alias.scope !111, !noalias !114
%19 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %3, i32 0, i32 5, i32 1
store i32 2, i32* %19, align 4, !alias.scope !111, !noalias !114
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17hfb43ac5c635991beE(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %3, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast (<{ i8*, [12 x i8] }>* @anon.4607067c643420ef3dad7445f19d8a9e.4 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
unreachable
}
; <&T as core::fmt::Display>::fmt
; Function Attrs: nounwind
define internal zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h55db9f6e3c3fdf96E"({ [0 x i8]*, i32 }* noalias nocapture readonly align 4 dereferenceable(8), %"core::fmt::Formatter"* nocapture readonly align 4 dereferenceable(52)) unnamed_addr #1 {
%3 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %0, i32 0, i32 0
%4 = load [0 x i8]*, [0 x i8]** %3, align 4, !nonnull !9
%5 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %0, i32 0, i32 1
%6 = load i32, i32* %5, align 4
; call core::fmt::Formatter::pad
%7 = tail call fastcc zeroext i1 @_ZN4core3fmt9Formatter3pad17hbc71133907d50792E(%"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %1, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %6) #4
ret i1 %7
}
; alloc::fmt::format
; Function Attrs: nounwind
define internal fastcc void @_ZN5alloc3fmt6format17h80561ab88cfa3a4eE(%"alloc::string::String"* noalias nocapture dereferenceable(12), %"core::fmt::Arguments"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #1 {
%3 = alloca %"core::fmt::Arguments", align 4
%4 = alloca %"alloc::string::String"*, align 4
%5 = alloca %"alloc::string::String", align 4
%6 = bitcast %"core::fmt::Arguments"* %1 to [0 x { [0 x i8]*, i32 }]**
%7 = load [0 x { [0 x i8]*, i32 }]*, [0 x { [0 x i8]*, i32 }]** %6, align 4, !alias.scope !116, !nonnull !9
%8 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %1, i32 0, i32 1, i32 1
%9 = load i32, i32* %8, align 4, !alias.scope !116
%10 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %7, i32 0, i32 %9
%11 = bitcast { [0 x i8]*, i32 }* %10 to i32*
%12 = bitcast { [0 x i8]*, i32 }* %10 to [0 x { [0 x i8]*, i32 }]*
%13 = icmp eq [0 x { [0 x i8]*, i32 }]* %7, %12
br i1 %13, label %.loopexit, label %14
; <label>:14: ; preds = %2
%15 = bitcast [0 x { [0 x i8]*, i32 }]* %7 to i32*
br label %16
; <label>:16: ; preds = %16, %14
%17 = phi i32 [ %22, %16 ], [ 0, %14 ]
%18 = phi i32* [ %19, %16 ], [ %15, %14 ]
%19 = getelementptr inbounds i32, i32* %18, i32 2
%20 = getelementptr inbounds i32, i32* %18, i32 1
%21 = load i32, i32* %20, align 4, !alias.scope !119, !noalias !116
%22 = add i32 %21, %17
%23 = icmp eq i32* %19, %11
br i1 %23, label %.loopexit, label %16
.loopexit: ; preds = %16, %2
%24 = phi i32 [ 0, %2 ], [ %22, %16 ]
%25 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %1, i32 0, i32 5, i32 1
%26 = load i32, i32* %25, align 4, !alias.scope !116
%27 = icmp eq i32 %26, 0
br i1 %27, label %43, label %28
; <label>:28: ; preds = %.loopexit
%29 = icmp eq i32 %9, 0
br i1 %29, label %40, label %30, !prof !124
; <label>:30: ; preds = %28
%31 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %7, i32 0, i32 0, i32 1
%32 = load i32, i32* %31, align 4, !alias.scope !125, !noalias !116
%33 = icmp eq i32 %32, 0
%34 = icmp ult i32 %24, 16
%35 = and i1 %33, %34
br i1 %35, label %41, label %36
; <label>:36: ; preds = %30
%37 = tail call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %24, i32 2) #4
%38 = extractvalue { i32, i1 } %37, 0
%39 = extractvalue { i32, i1 } %37, 1
br i1 %39, label %41, label %43
; <label>:40: ; preds = %28
; call core::panicking::panic_bounds_check
tail call fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast ({ { [0 x i8]*, i32 }, i32, i32 }* @anon.df567034a751418bb1907aa1d09cab77.0 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i32 0, i32 0) #4, !noalias !116
unreachable
; <label>:41: ; preds = %36, %30
%42 = bitcast %"alloc::string::String"* %5 to i8*
call void @llvm.lifetime.start.p0i8(i64 12, i8* nonnull %42)
br label %55
; <label>:43: ; preds = %36, %.loopexit
%44 = phi i32 [ %24, %.loopexit ], [ %38, %36 ]
%45 = bitcast %"alloc::string::String"* %5 to i8*
call void @llvm.lifetime.start.p0i8(i64 12, i8* nonnull %45)
%46 = icmp sgt i32 %44, -1
br i1 %46, label %48, label %47
; <label>:47: ; preds = %43
; call <alloc::raw_vec::RawVec<T, A>>::allocate_in::{{closure}}
tail call fastcc void @"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$11allocate_in28_$u7b$$u7b$closure$u7d$$u7d$17h4914b36e41593c37E.llvm.13677019499217490248"() #4
unreachable
; <label>:48: ; preds = %43
%49 = icmp eq i32 %44, 0
br i1 %49, label %55, label %50
; <label>:50: ; preds = %48
%51 = tail call fastcc i8* @__rust_alloc(i32 %44, i32 1) #4
%52 = icmp eq i8* %51, null
br i1 %52, label %53, label %55
; <label>:53: ; preds = %50
%54 = load atomic i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std5alloc4HOOK17h764bafd5839a31b5E to i32*) seq_cst, align 4
tail call void @llvm.trap() #4
unreachable
; <label>:55: ; preds = %50, %48, %41
%56 = phi i8* [ %45, %48 ], [ %45, %50 ], [ %42, %41 ]
%57 = phi i32 [ 0, %48 ], [ %44, %50 ], [ 0, %41 ]
%58 = phi i8* [ inttoptr (i32 1 to i8*), %48 ], [ %51, %50 ], [ inttoptr (i32 1 to i8*), %41 ]
%59 = bitcast %"alloc::string::String"* %5 to i8**
store i8* %58, i8** %59, align 4, !alias.scope !128
%60 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %5, i32 0, i32 1, i32 1, i32 1
store i32 %57, i32* %60, align 4, !alias.scope !128
%61 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %5, i32 0, i32 1, i32 3
store i32 0, i32* %61, align 4, !alias.scope !128
%62 = bitcast %"core::fmt::Arguments"* %1 to i8*
%63 = bitcast %"alloc::string::String"** %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %63)
store %"alloc::string::String"* %5, %"alloc::string::String"** %4, align 4, !noalias !131
%64 = bitcast %"alloc::string::String"** %4 to {}*
%65 = bitcast %"core::fmt::Arguments"* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %65) #4, !noalias !131
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 %65, i8* nonnull align 4 %62, i32 24, i1 false)
; call core::fmt::write
%66 = call fastcc zeroext i1 @_ZN4core3fmt5write17h18d01890e24e0492E({}* nonnull align 1 %64, [3 x i32]* noalias readonly align 4 dereferenceable(12) bitcast ({ void (%"alloc::string::String"**)*, i32, i32, i1 (%"alloc::string::String"**, [0 x i8]*, i32)*, i1 (%"alloc::string::String"**, i32)*, i1 (%"alloc::string::String"**, %"core::fmt::Arguments"*)* }* @anon.744bfa4edaa14c29caacdd024c6ee3e0.0.llvm.12840304214050579564 to [3 x i32]*), %"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %3) #4, !noalias !131
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %65) #4, !noalias !131
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %63)
br i1 %66, label %67, label %68
; <label>:67: ; preds = %55
; call core::result::unwrap_failed
call fastcc void @_ZN4core6result13unwrap_failed17hdaafde7dc2e93beeE() #4
unreachable
; <label>:68: ; preds = %55
%69 = bitcast %"alloc::string::String"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 %69, i8* nonnull align 4 %56, i32 12, i1 false)
call void @llvm.lifetime.end.p0i8(i64 12, i8* nonnull %56)
ret void
}
; core::fmt::num::<impl core::fmt::Display for i32>::fmt
; Function Attrs: nounwind
define internal zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h5c1f9ab69dc6586bE"(i32* noalias nocapture readonly align 4 dereferenceable(4), %"core::fmt::Formatter"* align 4 dereferenceable(52)) unnamed_addr #1 {
%3 = alloca [39 x i8], align 1
%4 = load i32, i32* %0, align 4
%5 = icmp sgt i32 %4, -1
%6 = sub i32 0, %4
%7 = select i1 %5, i32 %4, i32 %6
%8 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 39, i8* nonnull %8)
%9 = icmp ugt i32 %7, 9999
br i1 %9, label %.preheader, label %.loopexit
.preheader: ; preds = %2, %.preheader
%10 = phi i32 [ %12, %.preheader ], [ %7, %2 ]
%11 = phi i32 [ %20, %.preheader ], [ 39, %2 ]
%12 = udiv i32 %10, 10000
%13 = mul i32 %12, -10000
%14 = add i32 %10, %13
%15 = udiv i32 %14, 100
%16 = shl nuw nsw i32 %15, 1
%17 = mul i32 %15, -100
%18 = add i32 %14, %17
%19 = shl nuw nsw i32 %18, 1
%20 = add i32 %11, -4
%21 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %16
%22 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %20
%23 = bitcast i8* %21 to i16*
%24 = bitcast i8* %22 to i16*
%25 = load i16, i16* %23, align 1
store i16 %25, i16* %24, align 1
%26 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %19
%27 = add nsw i32 %11, -2
%28 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %27
%29 = bitcast i8* %26 to i16*
%30 = bitcast i8* %28 to i16*
%31 = load i16, i16* %29, align 1
store i16 %31, i16* %30, align 1
%32 = icmp ugt i32 %10, 99999999
br i1 %32, label %.preheader, label %.loopexit
.loopexit: ; preds = %.preheader, %2
%33 = phi i32 [ 39, %2 ], [ %20, %.preheader ]
%34 = phi i32 [ %7, %2 ], [ %12, %.preheader ]
%35 = icmp sgt i32 %34, 99
br i1 %35, label %36, label %50
; <label>:36: ; preds = %.loopexit
%37 = trunc i32 %34 to i16
%38 = udiv i16 %37, 100
%39 = mul i16 %38, -100
%40 = add i16 %39, %37
%41 = shl nuw nsw i16 %40, 1
%42 = zext i16 %41 to i32
%43 = zext i16 %38 to i32
%44 = add i32 %33, -2
%45 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %42
%46 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %44
%47 = bitcast i8* %45 to i16*
%48 = bitcast i8* %46 to i16*
%49 = load i16, i16* %47, align 1
store i16 %49, i16* %48, align 1
br label %50
; <label>:50: ; preds = %36, %.loopexit
%51 = phi i32 [ %43, %36 ], [ %34, %.loopexit ]
%52 = phi i32 [ %44, %36 ], [ %33, %.loopexit ]
%53 = icmp slt i32 %51, 10
br i1 %53, label %54, label %59
; <label>:54: ; preds = %50
%55 = add i32 %52, -1
%56 = trunc i32 %51 to i8
%57 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %55
%58 = add i8 %56, 48
store i8 %58, i8* %57, align 1
br label %67
; <label>:59: ; preds = %50
%60 = shl i32 %51, 1
%61 = add i32 %52, -2
%62 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %60
%63 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %61
%64 = bitcast i8* %62 to i16*
%65 = bitcast i8* %63 to i16*
%66 = load i16, i16* %64, align 1
store i16 %66, i16* %65, align 1
br label %67
; <label>:67: ; preds = %59, %54
%68 = phi i32 [ %55, %54 ], [ %61, %59 ]
%69 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %68
%70 = sub i32 39, %68
%71 = bitcast i8* %69 to [0 x i8]*
; call core::fmt::Formatter::pad_integral
%72 = call fastcc zeroext i1 @_ZN4core3fmt9Formatter12pad_integral17h34cff05b06e579e3E(%"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %1, i1 zeroext %5, [0 x i8]* noalias nonnull readonly align 1 getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0), i32 0, [0 x i8]* noalias nonnull readonly align 1 %71, i32 %70)
call void @llvm.lifetime.end.p0i8(i64 39, i8* nonnull %8)
ret i1 %72
}
; core::fmt::num::<impl core::fmt::Display for u32>::fmt
; Function Attrs: nounwind
define internal zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h9b86ba6311b485c2E"(i32* noalias nocapture readonly align 4 dereferenceable(4), %"core::fmt::Formatter"* align 4 dereferenceable(52)) unnamed_addr #1 {
%3 = alloca [39 x i8], align 1
%4 = load i32, i32* %0, align 4, !alias.scope !134
%5 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 0
call void @llvm.lifetime.start.p0i8(i64 39, i8* nonnull %5)
%6 = icmp ugt i32 %4, 9999
br i1 %6, label %.preheader, label %.loopexit
.preheader: ; preds = %2, %.preheader
%7 = phi i32 [ %9, %.preheader ], [ %4, %2 ]
%8 = phi i32 [ %17, %.preheader ], [ 39, %2 ]
%9 = udiv i32 %7, 10000
%10 = mul i32 %9, -10000
%11 = add i32 %7, %10
%12 = udiv i32 %11, 100
%13 = shl nuw nsw i32 %12, 1
%14 = mul i32 %12, -100
%15 = add i32 %11, %14
%16 = shl nuw nsw i32 %15, 1
%17 = add i32 %8, -4
%18 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %13
%19 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %17
%20 = bitcast i8* %18 to i16*
%21 = bitcast i8* %19 to i16*
%22 = load i16, i16* %20, align 1
store i16 %22, i16* %21, align 1
%23 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %16
%24 = add nsw i32 %8, -2
%25 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %24
%26 = bitcast i8* %23 to i16*
%27 = bitcast i8* %25 to i16*
%28 = load i16, i16* %26, align 1
store i16 %28, i16* %27, align 1
%29 = icmp ugt i32 %7, 99999999
br i1 %29, label %.preheader, label %.loopexit
.loopexit: ; preds = %.preheader, %2
%30 = phi i32 [ 39, %2 ], [ %17, %.preheader ]
%31 = phi i32 [ %4, %2 ], [ %9, %.preheader ]
%32 = icmp sgt i32 %31, 99
br i1 %32, label %33, label %47
; <label>:33: ; preds = %.loopexit
%34 = trunc i32 %31 to i16
%35 = udiv i16 %34, 100
%36 = mul i16 %35, -100
%37 = add i16 %36, %34
%38 = shl nuw nsw i16 %37, 1
%39 = zext i16 %38 to i32
%40 = zext i16 %35 to i32
%41 = add i32 %30, -2
%42 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %39
%43 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %41
%44 = bitcast i8* %42 to i16*
%45 = bitcast i8* %43 to i16*
%46 = load i16, i16* %44, align 1
store i16 %46, i16* %45, align 1
br label %47
; <label>:47: ; preds = %33, %.loopexit
%48 = phi i32 [ %40, %33 ], [ %31, %.loopexit ]
%49 = phi i32 [ %41, %33 ], [ %30, %.loopexit ]
%50 = icmp slt i32 %48, 10
br i1 %50, label %51, label %56
; <label>:51: ; preds = %47
%52 = add i32 %49, -1
%53 = trunc i32 %48 to i8
%54 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %52
%55 = add i8 %53, 48
store i8 %55, i8* %54, align 1
br label %64
; <label>:56: ; preds = %47
%57 = shl i32 %48, 1
%58 = add i32 %49, -2
%59 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %57
%60 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %58
%61 = bitcast i8* %59 to i16*
%62 = bitcast i8* %60 to i16*
%63 = load i16, i16* %61, align 1
store i16 %63, i16* %62, align 1
br label %64
; <label>:64: ; preds = %56, %51
%65 = phi i32 [ %52, %51 ], [ %58, %56 ]
%66 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %65
%67 = sub i32 39, %65
%68 = bitcast i8* %66 to [0 x i8]*
; call core::fmt::Formatter::pad_integral
%69 = call fastcc zeroext i1 @_ZN4core3fmt9Formatter12pad_integral17h34cff05b06e579e3E(%"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %1, i1 zeroext true, [0 x i8]* noalias nonnull readonly align 1 getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0), i32 0, [0 x i8]* noalias nonnull readonly align 1 %68, i32 %67)
call void @llvm.lifetime.end.p0i8(i64 39, i8* nonnull %5)
ret i1 %69
}
; core::panicking::panic_bounds_check
; Function Attrs: cold noinline noreturn nounwind
define internal fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nocapture readonly align 4 dereferenceable(16), i32, i32) unnamed_addr #11 {
%4 = alloca [2 x { i8*, i8* }], align 4
%5 = alloca %"core::fmt::Arguments", align 4
%6 = alloca i32, align 4
%7 = alloca i32, align 4
store i32 %1, i32* %7, align 4
store i32 %2, i32* %6, align 4
%8 = bitcast %"core::fmt::Arguments"* %5 to i8*
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %8)
%9 = bitcast [2 x { i8*, i8* }]* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %9)
%10 = bitcast [2 x { i8*, i8* }]* %4 to i32**
store i32* %6, i32** %10, align 4
%11 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %4, i32 0, i32 0, i32 1
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h9b86ba6311b485c2E" to i8*), i8** %11, align 4
%12 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %4, i32 0, i32 1, i32 0
%13 = bitcast i8** %12 to i32**
store i32* %7, i32** %13, align 4
%14 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %4, i32 0, i32 1, i32 1
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h9b86ba6311b485c2E" to i8*), i8** %14, align 4
%15 = bitcast %"core::fmt::Arguments"* %5 to [0 x { [0 x i8]*, i32 }]**
store [0 x { [0 x i8]*, i32 }]* bitcast (<{ i8*, [4 x i8], i8*, [4 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.16 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %15, align 4, !alias.scope !137, !noalias !140
%16 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %5, i32 0, i32 1, i32 1
store i32 2, i32* %16, align 4, !alias.scope !137, !noalias !140
%17 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %5, i32 0, i32 3, i32 0
store i32* null, i32** %17, align 4, !alias.scope !137, !noalias !140
%18 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %5, i32 0, i32 5, i32 0
%19 = bitcast [0 x { i8*, i8* }]** %18 to [2 x { i8*, i8* }]**
store [2 x { i8*, i8* }]* %4, [2 x { i8*, i8* }]** %19, align 4, !alias.scope !137, !noalias !140
%20 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %5, i32 0, i32 5, i32 1
store i32 2, i32* %20, align 4, !alias.scope !137, !noalias !140
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17hfb43ac5c635991beE(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %5, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nonnull readonly align 4 dereferenceable(16) %0)
unreachable
}
; core::panicking::panic_fmt
; Function Attrs: cold noinline noreturn nounwind
define internal fastcc void @_ZN4core9panicking9panic_fmt17hfb43ac5c635991beE(%"core::fmt::Arguments"* noalias nocapture dereferenceable(24), { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nocapture readonly align 4 dereferenceable(16)) unnamed_addr #11 {
%3 = alloca %"core::panic::PanicInfo", align 4
%4 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %1, i32 0, i32 0, i32 0
%5 = load i32, i32* %4, align 4, !range !37
%6 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %1, i32 0, i32 1, i32 1
%7 = load i32, i32* %6, align 4
%8 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %1, i32 0, i32 3
%9 = load i32, i32* %8, align 4
%10 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %1, i32 0, i32 5
%11 = load i32, i32* %10, align 4
%12 = bitcast %"core::panic::PanicInfo"* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 28, i8* nonnull %12)
%13 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %0, i32 0, i32 0, i32 0
%14 = bitcast %"core::panic::PanicInfo"* %3 to {}**
store {}* bitcast (<{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6 to {}*), {}** %14, align 4, !alias.scope !143, !noalias !146
%15 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 1, i32 1
store [3 x i32]* bitcast ({ void ({}*)*, i32, i32, i64 ({}*)* }* @anon.136c3a089fa491cfa7e187c04edf4986.7 to [3 x i32]*), [3 x i32]** %15, align 4, !alias.scope !143, !noalias !146
%16 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 3
store i32* %13, i32** %16, align 4, !alias.scope !143, !noalias !146
%17 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 5, i32 0, i32 0
store i32 %5, i32* %17, align 4, !alias.scope !149, !noalias !150
%18 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 5, i32 1, i32 1
store i32 %7, i32* %18, align 4, !alias.scope !149, !noalias !150
%19 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 5, i32 3
store i32 %9, i32* %19, align 4, !alias.scope !149, !noalias !150
%20 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 5, i32 5
store i32 %11, i32* %20, align 4, !alias.scope !149, !noalias !150
call fastcc void @rust_begin_unwind(%"core::panic::PanicInfo"* noalias nonnull readonly align 4 dereferenceable(28) %3)
unreachable
}
; core::ptr::real_drop_in_place
; Function Attrs: norecurse nounwind readnone
define internal void @_ZN4core3ptr18real_drop_in_place17h026a842523523ee8E({}* nocapture nonnull align 1) unnamed_addr #10 {
ret void
}
; <T as core::any::Any>::type_id
; Function Attrs: norecurse nounwind readnone
define internal i64 @"_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h6d1bf52e02a96543E"({}* noalias nocapture nonnull readonly align 1) unnamed_addr #10 {
ret i64 -5817800046755366305
}
; core::panicking::panic
; Function Attrs: cold noinline noreturn nounwind
define internal fastcc void @_ZN4core9panicking5panic17hf05582941268164eE({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nocapture readonly align 4 dereferenceable(24)) unnamed_addr #11 {
%2 = alloca { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, align 4
%3 = alloca [1 x { [0 x i8]*, i32 }], align 4
%4 = alloca %"core::fmt::Arguments", align 4
%5 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 0, i32 0
%6 = load i32, i32* %5, align 4, !range !37
%7 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 1, i32 1
%8 = load i32, i32* %7, align 4
%9 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 3
%10 = bitcast { [0 x i8]*, i32 }* %9 to i32*
%11 = load i32, i32* %10, align 4, !range !37
%12 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 3, i32 1
%13 = load i32, i32* %12, align 4
%14 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 5
%15 = load i32, i32* %14, align 4
%16 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 7
%17 = load i32, i32* %16, align 4
%18 = bitcast %"core::fmt::Arguments"* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %18)
%19 = bitcast [1 x { [0 x i8]*, i32 }]* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %19)
%20 = bitcast [1 x { [0 x i8]*, i32 }]* %3 to i32*
store i32 %6, i32* %20, align 4
%21 = getelementptr inbounds [1 x { [0 x i8]*, i32 }], [1 x { [0 x i8]*, i32 }]* %3, i32 0, i32 0, i32 1
store i32 %8, i32* %21, align 4
%22 = bitcast %"core::fmt::Arguments"* %4 to [1 x { [0 x i8]*, i32 }]**
store [1 x { [0 x i8]*, i32 }]* %3, [1 x { [0 x i8]*, i32 }]** %22, align 4, !alias.scope !151, !noalias !154
%23 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %4, i32 0, i32 1, i32 1
store i32 1, i32* %23, align 4, !alias.scope !151, !noalias !154
%24 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %4, i32 0, i32 3, i32 0
store i32* null, i32** %24, align 4, !alias.scope !151, !noalias !154
%25 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %4, i32 0, i32 5, i32 0
store [0 x { i8*, i8* }]* bitcast (<{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6 to [0 x { i8*, i8* }]*), [0 x { i8*, i8* }]** %25, align 4, !alias.scope !151, !noalias !154
%26 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %4, i32 0, i32 5, i32 1
store i32 0, i32* %26, align 4, !alias.scope !151, !noalias !154
%27 = bitcast { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2 to i8*
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %27)
%28 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 0, i32 0
store i32 %11, i32* %28, align 4
%29 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 1, i32 1
store i32 %13, i32* %29, align 4
%30 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 3
store i32 %15, i32* %30, align 4
%31 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 5
store i32 %17, i32* %31, align 4
; call core::panicking::panic_fmt
call fastcc void @_ZN4core9panicking9panic_fmt17hfb43ac5c635991beE(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %4, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nonnull readonly align 4 dereferenceable(16) %2)
unreachable
}
; core::fmt::ArgumentV1::show_usize
; Function Attrs: noinline nounwind
define internal zeroext i1 @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446(i32* noalias nocapture readonly align 4 dereferenceable(4), %"core::fmt::Formatter"* align 4 dereferenceable(52)) unnamed_addr #2 {
; call core::fmt::num::<impl core::fmt::Display for u32>::fmt
%3 = tail call zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h9b86ba6311b485c2E"(i32* noalias nonnull readonly align 4 dereferenceable(4) %0, %"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %1)
ret i1 %3
}
; core::fmt::write
; Function Attrs: nounwind
define internal fastcc zeroext i1 @_ZN4core3fmt5write17h18d01890e24e0492E({}* nonnull align 1, [3 x i32]* noalias readonly align 4 dereferenceable(12), %"core::fmt::Arguments"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #1 {
%4 = alloca %"core::fmt::Formatter", align 4
%5 = bitcast %"core::fmt::Formatter"* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 52, i8* nonnull %5)
%6 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 5, i32 0
%7 = load [0 x { i8*, i8* }]*, [0 x { i8*, i8* }]** %6, align 4, !nonnull !9
%8 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 5, i32 1
%9 = load i32, i32* %8, align 4
%10 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %7, i32 0, i32 %9
%11 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 0, i32 0
store i32 0, i32* %11, align 4
%12 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 3
store i32 32, i32* %12, align 4
%13 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 15
store i8 3, i8* %13, align 4
%14 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 5, i32 0
store i32 0, i32* %14, align 4
%15 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 7, i32 0
store i32 0, i32* %15, align 4
%16 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 9, i32 0
store {}* %0, {}** %16, align 4
%17 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 9, i32 1
store [3 x i32]* %1, [3 x i32]** %17, align 4
%18 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 11, i32 0
%19 = bitcast i32** %18 to [0 x { i8*, i8* }]**
store [0 x { i8*, i8* }]* %7, [0 x { i8*, i8* }]** %19, align 4
%20 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 11, i32 1
%21 = bitcast i32** %20 to { i8*, i8* }**
store { i8*, i8* }* %10, { i8*, i8* }** %21, align 4
%22 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 13, i32 0
store [0 x { i8*, i8* }]* %7, [0 x { i8*, i8* }]** %22, align 4
%23 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 13, i32 1
store i32 %9, i32* %23, align 4
%24 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 3
%25 = bitcast { i32*, i32 }* %24 to {}**
%26 = load {}*, {}** %25, align 4
%27 = icmp eq {}* %26, null
br i1 %27, label %28, label %46
; <label>:28: ; preds = %3
%29 = bitcast %"core::fmt::Arguments"* %2 to [0 x { [0 x i8]*, i32 }]**
%30 = load [0 x { [0 x i8]*, i32 }]*, [0 x { [0 x i8]*, i32 }]** %29, align 4, !nonnull !9
%31 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 1, i32 1
%32 = load i32, i32* %31, align 4
%33 = icmp ugt i32 %9, %32
%34 = select i1 %33, i32 %32, i32 %9
%35 = icmp eq i32 %34, 0
br i1 %35, label %.loopexit19, label %36
; <label>:36: ; preds = %28
%37 = bitcast [3 x i32]** %17 to i1 ({}*, [0 x i8]*, i32)***
%38 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %30, i32 0, i32 0, i32 0
%39 = load [0 x i8]*, [0 x i8]** %38, align 4, !nonnull !9
%40 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %30, i32 0, i32 0, i32 1
%41 = load i32, i32* %40, align 4
%42 = getelementptr inbounds [3 x i32], [3 x i32]* %1, i32 0, i32 3
%43 = bitcast i32* %42 to i1 ({}*, [0 x i8]*, i32)**
%44 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %43, align 4, !invariant.load !9, !nonnull !9
%45 = call zeroext i1 %44({}* nonnull align 1 %0, [0 x i8]* noalias nonnull readonly align 1 %39, i32 %41) #4
br i1 %45, label %.loopexit, label %.preheader
; <label>:46: ; preds = %3
%47 = bitcast {}* %26 to [0 x %"fmt::rt::v1::Argument"]*
%48 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 3, i32 1
%49 = load i32, i32* %48, align 4
%50 = getelementptr inbounds [0 x %"fmt::rt::v1::Argument"], [0 x %"fmt::rt::v1::Argument"]* %47, i32 0, i32 %49, i32 0, i32 0
%51 = bitcast %"core::fmt::Arguments"* %2 to [0 x { [0 x i8]*, i32 }]**
%52 = load [0 x { [0 x i8]*, i32 }]*, [0 x { [0 x i8]*, i32 }]** %51, align 4, !nonnull !9
%53 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 1, i32 1
%54 = load i32, i32* %53, align 4
%55 = ptrtoint {}* %26 to i32
%56 = ptrtoint i32* %50 to i32
%57 = sub i32 %56, %55
%58 = udiv i32 %57, 36
%59 = icmp ugt i32 %58, %54
%60 = select i1 %59, i32 %54, i32 %58
%61 = icmp eq i32 %60, 0
br i1 %61, label %.loopexit19, label %62
; <label>:62: ; preds = %46
%63 = bitcast [3 x i32]** %17 to i1 ({}*, [0 x i8]*, i32)***
%64 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 11
%65 = bitcast { i32*, i32* }* %64 to { i8*, i8* }**
%66 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 5, i32 1
%67 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 7, i32 1
%68 = bitcast {}* %26 to %"fmt::rt::v1::Argument"*
%69 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %52, i32 0, i32 0, i32 0
%70 = load [0 x i8]*, [0 x i8]** %69, align 4, !nonnull !9
%71 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %52, i32 0, i32 0, i32 1
%72 = load i32, i32* %71, align 4
%73 = getelementptr inbounds [3 x i32], [3 x i32]* %1, i32 0, i32 3
%74 = bitcast i32* %73 to i1 ({}*, [0 x i8]*, i32)**
%75 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %74, align 4, !invariant.load !9, !nonnull !9
%76 = call zeroext i1 %75({}* nonnull align 1 %0, [0 x i8]* noalias nonnull readonly align 1 %70, i32 %72) #4
br i1 %76, label %.loopexit, label %.preheader20
.loopexit19: ; preds = %223, %92, %46, %28
%77 = phi i32 [ %32, %28 ], [ %54, %46 ], [ %32, %92 ], [ %54, %223 ]
%78 = phi [0 x { [0 x i8]*, i32 }]* [ %30, %28 ], [ %52, %46 ], [ %30, %92 ], [ %52, %223 ]
%79 = phi i32 [ 0, %28 ], [ 0, %46 ], [ %81, %92 ], [ %105, %223 ]
%80 = icmp ugt i32 %77, %79
br i1 %80, label %236, label %247
.preheader: ; preds = %36, %94
%81 = phi i32 [ %97, %94 ], [ 1, %36 ]
%82 = phi i32 [ %81, %94 ], [ 0, %36 ]
%83 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %7, i32 0, i32 %82
%84 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %7, i32 0, i32 %82, i32 1
%85 = bitcast i8** %84 to i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)**
%86 = load i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)*, i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)** %85, align 4, !nonnull !9
%87 = bitcast { i8*, i8* }* %83 to %"core::fmt::Void.187"**
%88 = load %"core::fmt::Void.187"*, %"core::fmt::Void.187"** %87, align 4, !nonnull !9
%89 = call zeroext i1 %86(%"core::fmt::Void.187"* noalias nonnull readonly align 1 %88, %"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %4) #4
br i1 %89, label %.loopexit, label %92
; <label>:90: ; preds = %247, %.loopexit
%91 = phi i1 [ false, %247 ], [ true, %.loopexit ]
ret i1 %91
.loopexit: ; preds = %225, %215, %94, %.preheader, %236, %62, %36
call void @llvm.lifetime.end.p0i8(i64 52, i8* nonnull %5)
br label %90
; <label>:92: ; preds = %.preheader
%93 = icmp ult i32 %81, %34
br i1 %93, label %94, label %.loopexit19
; <label>:94: ; preds = %92
%95 = load {}*, {}** %16, align 4
%96 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %37, align 4
%97 = add nuw i32 %81, 1
%98 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %30, i32 0, i32 %81, i32 0
%99 = load [0 x i8]*, [0 x i8]** %98, align 4, !nonnull !9
%100 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %30, i32 0, i32 %81, i32 1
%101 = load i32, i32* %100, align 4
%102 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %96, i32 3
%103 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %102, align 4, !invariant.load !9, !nonnull !9
%104 = call zeroext i1 %103({}* nonnull align 1 %95, [0 x i8]* noalias nonnull readonly align 1 %99, i32 %101) #4
br i1 %104, label %.loopexit, label %.preheader
.preheader20: ; preds = %62, %225
%105 = phi i32 [ %228, %225 ], [ 1, %62 ]
%106 = phi i32 [ %105, %225 ], [ 0, %62 ]
%107 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 0, i32 0
%108 = load i32, i32* %107, align 4, !range !157, !alias.scope !158
store i32 %108, i32* %12, align 4, !noalias !158
%109 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 9
%110 = load i8, i8* %109, align 4, !range !161, !alias.scope !158
store i8 %110, i8* %13, align 4, !noalias !158
%111 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 3
%112 = load i32, i32* %111, align 4, !alias.scope !158
store i32 %112, i32* %11, align 4, !noalias !158
%113 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 7, i32 0
%114 = load i32, i32* %113, align 4, !range !162, !alias.scope !163
switch i32 %114, label %119 [
i32 0, label %120
i32 1, label %123
i32 2, label %115
i32 3, label %150
]
; <label>:115: ; preds = %.preheader20
%116 = load { i8*, i8* }*, { i8*, i8* }** %65, align 4, !noalias !163, !nonnull !9
%117 = load { i8*, i8* }*, { i8*, i8* }** %21, align 4, !noalias !163, !nonnull !9
%118 = icmp eq { i8*, i8* }* %116, %117
br i1 %118, label %150, label %139
; <label>:119: ; preds = %.preheader20
unreachable
; <label>:120: ; preds = %.preheader20
%121 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 7, i32 1
%122 = load i32, i32* %121, align 4, !alias.scope !163
br label %150
; <label>:123: ; preds = %.preheader20
%124 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 7, i32 1
%125 = load i32, i32* %124, align 4, !alias.scope !163
%126 = load i32, i32* %23, align 4, !noalias !163
%127 = icmp ult i32 %125, %126
br i1 %127, label %128, label %149, !prof !166
; <label>:128: ; preds = %123
%129 = load [0 x { i8*, i8* }]*, [0 x { i8*, i8* }]** %22, align 4, !noalias !163, !nonnull !9
%130 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %129, i32 0, i32 %125, i32 1
%131 = bitcast i8** %130 to i32*
%132 = load i32, i32* %131, align 4, !range !37, !alias.scope !167, !noalias !163
%133 = icmp eq i32 %132, ptrtoint (i1 (i32*, %"core::fmt::Formatter"*)* @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446 to i32)
br i1 %133, label %134, label %150
; <label>:134: ; preds = %128
%135 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %129, i32 0, i32 %125
%136 = bitcast { i8*, i8* }* %135 to i32**
%137 = load i32*, i32** %136, align 4, !alias.scope !167, !noalias !163, !nonnull !9
%138 = load i32, i32* %137, align 4, !noalias !170
br label %150
; <label>:139: ; preds = %115
%140 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %116, i32 1
store { i8*, i8* }* %140, { i8*, i8* }** %65, align 4, !noalias !163
%141 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %116, i32 0, i32 1
%142 = bitcast i8** %141 to i32*
%143 = load i32, i32* %142, align 4, !range !37, !alias.scope !171, !noalias !163
%144 = icmp eq i32 %143, ptrtoint (i1 (i32*, %"core::fmt::Formatter"*)* @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446 to i32)
br i1 %144, label %145, label %150
; <label>:145: ; preds = %139
%146 = bitcast { i8*, i8* }* %116 to i32**
%147 = load i32*, i32** %146, align 4, !alias.scope !171, !noalias !163, !nonnull !9
%148 = load i32, i32* %147, align 4, !noalias !174
br label %150
; <label>:149: ; preds = %123
; call core::panicking::panic_bounds_check
call fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast ({ { [0 x i8]*, i32 }, i32, i32 }* @anon.9b00575310d81673ea82acb70d8d8f85.11 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i32 %125, i32 %126) #4, !noalias !163
unreachable
; <label>:150: ; preds = %145, %139, %134, %128, %120, %115, %.preheader20
%151 = phi i32 [ %122, %120 ], [ undef, %.preheader20 ], [ %138, %134 ], [ undef, %128 ], [ %148, %145 ], [ undef, %139 ], [ undef, %115 ]
%152 = phi i32 [ 1, %120 ], [ 0, %.preheader20 ], [ 1, %134 ], [ 0, %128 ], [ 1, %145 ], [ 0, %139 ], [ 0, %115 ]
store i32 %152, i32* %14, align 4, !noalias !158
store i32 %151, i32* %66, align 4, !noalias !158
%153 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 5, i32 0
%154 = load i32, i32* %153, align 4, !range !162, !alias.scope !175
switch i32 %154, label %159 [
i32 0, label %160
i32 1, label %163
i32 2, label %155
i32 3, label %190
]
; <label>:155: ; preds = %150
%156 = load { i8*, i8* }*, { i8*, i8* }** %65, align 4, !noalias !175, !nonnull !9
%157 = load { i8*, i8* }*, { i8*, i8* }** %21, align 4, !noalias !175, !nonnull !9
%158 = icmp eq { i8*, i8* }* %156, %157
br i1 %158, label %190, label %179
; <label>:159: ; preds = %150
unreachable
; <label>:160: ; preds = %150
%161 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 5, i32 1
%162 = load i32, i32* %161, align 4, !alias.scope !175
br label %190
; <label>:163: ; preds = %150
%164 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 5, i32 1
%165 = load i32, i32* %164, align 4, !alias.scope !175
%166 = load i32, i32* %23, align 4, !noalias !175
%167 = icmp ult i32 %165, %166
br i1 %167, label %168, label %189, !prof !166
; <label>:168: ; preds = %163
%169 = load [0 x { i8*, i8* }]*, [0 x { i8*, i8* }]** %22, align 4, !noalias !175, !nonnull !9
%170 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %169, i32 0, i32 %165, i32 1
%171 = bitcast i8** %170 to i32*
%172 = load i32, i32* %171, align 4, !range !37, !alias.scope !178, !noalias !175
%173 = icmp eq i32 %172, ptrtoint (i1 (i32*, %"core::fmt::Formatter"*)* @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446 to i32)
br i1 %173, label %174, label %190
; <label>:174: ; preds = %168
%175 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %169, i32 0, i32 %165
%176 = bitcast { i8*, i8* }* %175 to i32**
%177 = load i32*, i32** %176, align 4, !alias.scope !178, !noalias !175, !nonnull !9
%178 = load i32, i32* %177, align 4, !noalias !181
br label %190
; <label>:179: ; preds = %155
%180 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %156, i32 1
store { i8*, i8* }* %180, { i8*, i8* }** %65, align 4, !noalias !175
%181 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %156, i32 0, i32 1
%182 = bitcast i8** %181 to i32*
%183 = load i32, i32* %182, align 4, !range !37, !alias.scope !182, !noalias !175
%184 = icmp eq i32 %183, ptrtoint (i1 (i32*, %"core::fmt::Formatter"*)* @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446 to i32)
br i1 %184, label %185, label %190
; <label>:185: ; preds = %179
%186 = bitcast { i8*, i8* }* %156 to i32**
%187 = load i32*, i32** %186, align 4, !alias.scope !182, !noalias !175, !nonnull !9
%188 = load i32, i32* %187, align 4, !noalias !185
br label %190
; <label>:189: ; preds = %163
; call core::panicking::panic_bounds_check
call fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast ({ { [0 x i8]*, i32 }, i32, i32 }* @anon.9b00575310d81673ea82acb70d8d8f85.11 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i32 %165, i32 %166) #4, !noalias !175
unreachable
; <label>:190: ; preds = %185, %179, %174, %168, %160, %155, %150
%191 = phi i32 [ %162, %160 ], [ undef, %150 ], [ %178, %174 ], [ undef, %168 ], [ %188, %185 ], [ undef, %179 ], [ undef, %155 ]
%192 = phi i32 [ 1, %160 ], [ 0, %150 ], [ 1, %174 ], [ 0, %168 ], [ 1, %185 ], [ 0, %179 ], [ 0, %155 ]
store i32 %192, i32* %15, align 4, !noalias !158
store i32 %191, i32* %67, align 4, !noalias !158
%193 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 0, i32 0
%194 = load i32, i32* %193, align 4, !range !19, !alias.scope !158
%195 = icmp eq i32 %194, 1
br i1 %195, label %205, label %196
; <label>:196: ; preds = %190
%197 = load { i8*, i8* }*, { i8*, i8* }** %65, align 4, !noalias !158, !nonnull !9
%198 = load { i8*, i8* }*, { i8*, i8* }** %21, align 4, !noalias !158, !nonnull !9
%199 = icmp eq { i8*, i8* }* %197, %198
br i1 %199, label %200, label %201
; <label>:200: ; preds = %196
; call core::panicking::panic
call fastcc void @_ZN4core9panicking5panic17hf05582941268164eE({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(24) bitcast (<{ i8*, [4 x i8], i8*, [12 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.8 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) #4, !noalias !158
unreachable
; <label>:201: ; preds = %196
%202 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %197, i32 1
store { i8*, i8* }* %202, { i8*, i8* }** %65, align 4, !noalias !158
%203 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %197, i32 0, i32 0
%204 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %197, i32 0, i32 1
br label %215
; <label>:205: ; preds = %190
%206 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 1, i32 1
%207 = load i32, i32* %206, align 4, !alias.scope !158
%208 = load i32, i32* %23, align 4, !noalias !158
%209 = icmp ult i32 %207, %208
br i1 %209, label %210, label %214, !prof !166
; <label>:210: ; preds = %205
%211 = load [0 x { i8*, i8* }]*, [0 x { i8*, i8* }]** %22, align 4, !noalias !158, !nonnull !9
%212 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %211, i32 0, i32 %207, i32 0
%213 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %211, i32 0, i32 %207, i32 1
br label %215
; <label>:214: ; preds = %205
; call core::panicking::panic_bounds_check
call fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast ({ { [0 x i8]*, i32 }, i32, i32 }* @anon.9b00575310d81673ea82acb70d8d8f85.10 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i32 %207, i32 %208) #4, !noalias !158
unreachable
; <label>:215: ; preds = %210, %201
%216 = phi i8** [ %204, %201 ], [ %213, %210 ]
%217 = phi i8** [ %203, %201 ], [ %212, %210 ]
%218 = bitcast i8** %217 to %"core::fmt::Void.187"**
%219 = load %"core::fmt::Void.187"*, %"core::fmt::Void.187"** %218, align 4, !noalias !158, !nonnull !9
%220 = bitcast i8** %216 to i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)**
%221 = load i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)*, i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)** %220, align 4, !noalias !158, !nonnull !9
%222 = call zeroext i1 %221(%"core::fmt::Void.187"* noalias nonnull readonly align 1 %219, %"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %4) #4, !noalias !158
br i1 %222, label %.loopexit, label %223
; <label>:223: ; preds = %215
%224 = icmp ult i32 %105, %60
br i1 %224, label %225, label %.loopexit19
; <label>:225: ; preds = %223
%226 = load {}*, {}** %16, align 4
%227 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %63, align 4
%228 = add nuw nsw i32 %105, 1
%229 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %52, i32 0, i32 %105, i32 0
%230 = load [0 x i8]*, [0 x i8]** %229, align 4, !nonnull !9
%231 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %52, i32 0, i32 %105, i32 1
%232 = load i32, i32* %231, align 4
%233 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %227, i32 3
%234 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %233, align 4, !invariant.load !9, !nonnull !9
%235 = call zeroext i1 %234({}* nonnull align 1 %226, [0 x i8]* noalias nonnull readonly align 1 %230, i32 %232) #4
br i1 %235, label %.loopexit, label %.preheader20
; <label>:236: ; preds = %.loopexit19
%237 = load {}*, {}** %16, align 4, !nonnull !9
%238 = bitcast [3 x i32]** %17 to i1 ({}*, [0 x i8]*, i32)***
%239 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %238, align 4, !nonnull !9
%240 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %78, i32 0, i32 %79, i32 0
%241 = load [0 x i8]*, [0 x i8]** %240, align 4, !nonnull !9
%242 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %78, i32 0, i32 %79, i32 1
%243 = load i32, i32* %242, align 4
%244 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %239, i32 3
%245 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %244, align 4, !invariant.load !9, !nonnull !9
%246 = call zeroext i1 %245({}* nonnull align 1 %237, [0 x i8]* noalias nonnull readonly align 1 %241, i32 %243) #4
br i1 %246, label %.loopexit, label %247
; <label>:247: ; preds = %236, %.loopexit19
call void @llvm.lifetime.end.p0i8(i64 52, i8* nonnull %5)
br label %90
}
; core::fmt::Formatter::pad_integral
; Function Attrs: nounwind
define internal fastcc zeroext i1 @_ZN4core3fmt9Formatter12pad_integral17h34cff05b06e579e3E(%"core::fmt::Formatter"* align 4 dereferenceable(52), i1 zeroext, [0 x i8]* noalias nonnull readonly align 1, i32, [0 x i8]* noalias nonnull readonly align 1, i32) unnamed_addr #1 {
%7 = alloca i32, align 4
%8 = alloca i32, align 4
br i1 %1, label %13, label %9
; <label>:9: ; preds = %6
%10 = add i32 %5, 1
%11 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 0, i32 0
%12 = load i32, i32* %11, align 4, !alias.scope !186
br label %20
; <label>:13: ; preds = %6
%14 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 0, i32 0
%15 = load i32, i32* %14, align 4, !alias.scope !189
%16 = and i32 %15, 1
%17 = icmp eq i32 %16, 0
%18 = select i1 %17, i32 1114112, i32 43
%19 = add i32 %16, %5
br label %20
; <label>:20: ; preds = %13, %9
%21 = phi i32 [ %12, %9 ], [ %15, %13 ]
%22 = phi i32 [ 45, %9 ], [ %18, %13 ]
%23 = phi i32 [ %10, %9 ], [ %19, %13 ]
%24 = and i32 %21, 4
%25 = icmp eq i32 %24, 0
%26 = lshr exact i32 %24, 2
%27 = trunc i32 %26 to i8
br i1 %25, label %46, label %28
; <label>:28: ; preds = %20
%29 = getelementptr inbounds [0 x i8], [0 x i8]* %2, i32 0, i32 %3
%30 = icmp eq i32 %3, 0
br i1 %30, label %.loopexit, label %31
; <label>:31: ; preds = %28
%32 = getelementptr inbounds [0 x i8], [0 x i8]* %2, i32 0, i32 0
br label %33
; <label>:33: ; preds = %33, %31
%34 = phi i32 [ %41, %33 ], [ 0, %31 ]
%35 = phi i8* [ %36, %33 ], [ %32, %31 ]
%36 = getelementptr inbounds i8, i8* %35, i32 1
%37 = load i8, i8* %35, align 1
%38 = and i8 %37, -64
%39 = icmp eq i8 %38, -128
%40 = zext i1 %39 to i32
%41 = add i32 %34, %40
%42 = icmp eq i8* %36, %29
br i1 %42, label %.loopexit, label %33
.loopexit: ; preds = %33, %28
%43 = phi i32 [ 0, %28 ], [ %41, %33 ]
%44 = add i32 %23, %3
%45 = sub i32 %44, %43
br label %46
; <label>:46: ; preds = %.loopexit, %20
%47 = phi i32 [ %45, %.loopexit ], [ %23, %20 ]
%48 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 5, i32 0
%49 = load i32, i32* %48, align 4, !range !19
%50 = icmp eq i32 %49, 1
br i1 %50, label %195, label %51
; <label>:51: ; preds = %46
%52 = icmp eq i32 %22, 1114112
br i1 %52, label %62, label %53
; <label>:53: ; preds = %51
%54 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%55 = load {}*, {}** %54, align 4, !noalias !192, !nonnull !9
%56 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%57 = bitcast [3 x i32]** %56 to i1 ({}*, i32)***
%58 = load i1 ({}*, i32)**, i1 ({}*, i32)*** %57, align 4, !noalias !192, !nonnull !9
%59 = getelementptr inbounds i1 ({}*, i32)*, i1 ({}*, i32)** %58, i32 4
%60 = load i1 ({}*, i32)*, i1 ({}*, i32)** %59, align 4, !invariant.load !9, !noalias !192, !nonnull !9
%61 = tail call zeroext i1 %60({}* nonnull align 1 %55, i32 %22) #4, !noalias !192
br i1 %61, label %253, label %62
; <label>:62: ; preds = %53, %51
%63 = icmp eq i8 %27, 0
br i1 %63, label %._crit_edge, label %64
; <label>:64: ; preds = %62
%65 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%66 = load {}*, {}** %65, align 4, !noalias !192, !nonnull !9
%67 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%68 = bitcast [3 x i32]** %67 to i1 ({}*, [0 x i8]*, i32)***
%69 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %68, align 4, !noalias !192, !nonnull !9
%70 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %69, i32 3
%71 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %70, align 4, !invariant.load !9, !noalias !192, !nonnull !9
%72 = tail call zeroext i1 %71({}* nonnull align 1 %66, [0 x i8]* noalias nonnull readonly align 1 %2, i32 %3) #4, !noalias !192
br i1 %72, label %253, label %._crit_edge
; <label>:73: ; preds = %195
%74 = and i32 %21, 8
%75 = icmp eq i32 %74, 0
br i1 %75, label %76, label %221
; <label>:76: ; preds = %73
%77 = sub i32 %197, %47
%78 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 15
%79 = load i8, i8* %78, align 4, !range !161, !noalias !195
%80 = icmp eq i8 %79, 3
%81 = trunc i8 %79 to i2
%82 = select i1 %80, i2 1, i2 %81
switch i2 %82, label %84 [
i2 0, label %85
i2 1, label %83
i2 -2, label %145
i2 -1, label %83
]
; <label>:83: ; preds = %76, %76
br label %85
; <label>:84: ; preds = %76
unreachable
; <label>:85: ; preds = %145, %83, %76
%86 = phi i32 [ %148, %145 ], [ 0, %83 ], [ %77, %76 ]
%87 = phi i32 [ %146, %145 ], [ %77, %83 ], [ 0, %76 ]
%88 = bitcast i32* %7 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195
store i32 0, i32* %7, align 4, !noalias !195
%89 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 3
%90 = load i32, i32* %89, align 4, !range !157, !noalias !195
%91 = bitcast i32* %7 to [0 x i8]*
%92 = icmp ult i32 %90, 128
br i1 %92, label %93, label %95
; <label>:93: ; preds = %85
%94 = trunc i32 %90 to i8
store i8 %94, i8* %88, align 4, !noalias !195
br label %140
; <label>:95: ; preds = %85
%96 = icmp ult i32 %90, 2048
br i1 %96, label %97, label %106
; <label>:97: ; preds = %95
%98 = lshr i32 %90, 6
%99 = trunc i32 %98 to i8
%100 = and i8 %99, 31
%101 = or i8 %100, -64
store i8 %101, i8* %88, align 4, !noalias !195
%102 = trunc i32 %90 to i8
%103 = and i8 %102, 63
%104 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 1
%105 = or i8 %103, -128
store i8 %105, i8* %104, align 1, !noalias !195
br label %140
; <label>:106: ; preds = %95
%107 = icmp ult i32 %90, 65536
br i1 %107, label %108, label %122
; <label>:108: ; preds = %106
%109 = lshr i32 %90, 12
%110 = trunc i32 %109 to i8
%111 = and i8 %110, 15
%112 = or i8 %111, -32
store i8 %112, i8* %88, align 4, !noalias !195
%113 = lshr i32 %90, 6
%114 = trunc i32 %113 to i8
%115 = and i8 %114, 63
%116 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 1
%117 = or i8 %115, -128
store i8 %117, i8* %116, align 1, !noalias !195
%118 = trunc i32 %90 to i8
%119 = and i8 %118, 63
%120 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 2
%121 = or i8 %119, -128
store i8 %121, i8* %120, align 2, !noalias !195
br label %140
; <label>:122: ; preds = %106
%123 = lshr i32 %90, 18
%124 = trunc i32 %123 to i8
%125 = or i8 %124, -16
store i8 %125, i8* %88, align 4, !noalias !195
%126 = lshr i32 %90, 12
%127 = trunc i32 %126 to i8
%128 = and i8 %127, 63
%129 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 1
%130 = or i8 %128, -128
store i8 %130, i8* %129, align 1, !noalias !195
%131 = lshr i32 %90, 6
%132 = trunc i32 %131 to i8
%133 = and i8 %132, 63
%134 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 2
%135 = or i8 %133, -128
store i8 %135, i8* %134, align 2, !noalias !195
%136 = trunc i32 %90 to i8
%137 = and i8 %136, 63
%138 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 3
%139 = or i8 %137, -128
store i8 %139, i8* %138, align 1, !noalias !195
br label %140
; <label>:140: ; preds = %122, %108, %97, %93
%141 = phi i32 [ 1, %93 ], [ 2, %97 ], [ 3, %108 ], [ 4, %122 ]
%142 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%143 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%144 = bitcast [3 x i32]** %143 to i1 ({}*, [0 x i8]*, i32)***
br label %149
; <label>:145: ; preds = %76
%146 = lshr i32 %77, 1
%147 = add i32 %77, 1
%148 = lshr i32 %147, 1
br label %85
; <label>:149: ; preds = %175, %140
%150 = phi i32 [ 0, %140 ], [ %176, %175 ]
%151 = icmp ult i32 %150, %87
br i1 %151, label %175, label %152
; <label>:152: ; preds = %149
%153 = icmp eq i32 %22, 1114112
br i1 %153, label %161, label %154
; <label>:154: ; preds = %152
%155 = load {}*, {}** %142, align 4, !noalias !199, !nonnull !9
%156 = bitcast [3 x i32]** %143 to i1 ({}*, i32)***
%157 = load i1 ({}*, i32)**, i1 ({}*, i32)*** %156, align 4, !noalias !199, !nonnull !9
%158 = getelementptr inbounds i1 ({}*, i32)*, i1 ({}*, i32)** %157, i32 4
%159 = load i1 ({}*, i32)*, i1 ({}*, i32)** %158, align 4, !invariant.load !9, !noalias !199, !nonnull !9
%160 = call zeroext i1 %159({}* nonnull align 1 %155, i32 %22) #4, !noalias !199
br i1 %160, label %183, label %161
; <label>:161: ; preds = %154, %152
%162 = icmp eq i8 %27, 0
br i1 %162, label %169, label %163
; <label>:163: ; preds = %161
%164 = load {}*, {}** %142, align 4, !noalias !199, !nonnull !9
%165 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %144, align 4, !noalias !199, !nonnull !9
%166 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %165, i32 3
%167 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %166, align 4, !invariant.load !9, !noalias !199, !nonnull !9
%168 = call zeroext i1 %167({}* nonnull align 1 %164, [0 x i8]* noalias nonnull readonly align 1 %2, i32 %3) #4, !noalias !199
br i1 %168, label %183, label %169
; <label>:169: ; preds = %163, %161
%170 = load {}*, {}** %142, align 4, !noalias !205, !nonnull !9
%171 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %144, align 4, !noalias !205, !nonnull !9
%172 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %171, i32 3
%173 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %172, align 4, !invariant.load !9, !noalias !205, !nonnull !9
%174 = call zeroext i1 %173({}* nonnull align 1 %170, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %5) #4, !noalias !205
br i1 %174, label %183, label %.preheader
; <label>:175: ; preds = %149
%176 = add i32 %150, 1
%177 = load {}*, {}** %142, align 4, !noalias !195, !nonnull !9
%178 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %144, align 4, !noalias !195, !nonnull !9
%179 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %178, i32 3
%180 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %179, align 4, !invariant.load !9, !noalias !195, !nonnull !9
%181 = call zeroext i1 %180({}* nonnull align 1 %177, [0 x i8]* noalias nonnull readonly align 1 %91, i32 %141) #4, !noalias !195
br i1 %181, label %182, label %149
; <label>:182: ; preds = %175
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195
br label %253
; <label>:183: ; preds = %169, %163, %154
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195
br label %253
.preheader: ; preds = %169, %187
%184 = phi i32 [ %188, %187 ], [ 0, %169 ]
%185 = icmp ult i32 %184, %86
br i1 %185, label %187, label %186
; <label>:186: ; preds = %.preheader
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195
br label %253
; <label>:187: ; preds = %.preheader
%188 = add i32 %184, 1
%189 = load {}*, {}** %142, align 4, !noalias !195, !nonnull !9
%190 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %144, align 4, !noalias !195, !nonnull !9
%191 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %190, i32 3
%192 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %191, align 4, !invariant.load !9, !noalias !195, !nonnull !9
%193 = call zeroext i1 %192({}* nonnull align 1 %189, [0 x i8]* noalias nonnull readonly align 1 %91, i32 %141) #4, !noalias !195
br i1 %193, label %194, label %.preheader
; <label>:194: ; preds = %187
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195
br label %253
; <label>:195: ; preds = %46
%196 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 5, i32 1
%197 = load i32, i32* %196, align 4
%198 = icmp ugt i32 %197, %47
br i1 %198, label %73, label %199
; <label>:199: ; preds = %195
%200 = icmp eq i32 %22, 1114112
br i1 %200, label %210, label %201
; <label>:201: ; preds = %199
%202 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%203 = load {}*, {}** %202, align 4, !noalias !206, !nonnull !9
%204 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%205 = bitcast [3 x i32]** %204 to i1 ({}*, i32)***
%206 = load i1 ({}*, i32)**, i1 ({}*, i32)*** %205, align 4, !noalias !206, !nonnull !9
%207 = getelementptr inbounds i1 ({}*, i32)*, i1 ({}*, i32)** %206, i32 4
%208 = load i1 ({}*, i32)*, i1 ({}*, i32)** %207, align 4, !invariant.load !9, !noalias !206, !nonnull !9
%209 = tail call zeroext i1 %208({}* nonnull align 1 %203, i32 %22) #4, !noalias !206
br i1 %209, label %253, label %210
; <label>:210: ; preds = %201, %199
%211 = icmp eq i8 %27, 0
br i1 %211, label %._crit_edge12, label %212
; <label>:212: ; preds = %210
%213 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%214 = load {}*, {}** %213, align 4, !noalias !206, !nonnull !9
%215 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%216 = bitcast [3 x i32]** %215 to i1 ({}*, [0 x i8]*, i32)***
%217 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %216, align 4, !noalias !206, !nonnull !9
%218 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %217, i32 3
%219 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %218, align 4, !invariant.load !9, !noalias !206, !nonnull !9
%220 = tail call zeroext i1 %219({}* nonnull align 1 %214, [0 x i8]* noalias nonnull readonly align 1 %2, i32 %3) #4, !noalias !206
br i1 %220, label %253, label %._crit_edge12
; <label>:221: ; preds = %73
%222 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 3
store i32 48, i32* %222, align 4
%223 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 15
store i8 1, i8* %223, align 4
%224 = icmp eq i32 %22, 1114112
br i1 %224, label %234, label %225
; <label>:225: ; preds = %221
%226 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%227 = load {}*, {}** %226, align 4, !noalias !209, !nonnull !9
%228 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%229 = bitcast [3 x i32]** %228 to i1 ({}*, i32)***
%230 = load i1 ({}*, i32)**, i1 ({}*, i32)*** %229, align 4, !noalias !209, !nonnull !9
%231 = getelementptr inbounds i1 ({}*, i32)*, i1 ({}*, i32)** %230, i32 4
%232 = load i1 ({}*, i32)*, i1 ({}*, i32)** %231, align 4, !invariant.load !9, !noalias !209, !nonnull !9
%233 = tail call zeroext i1 %232({}* nonnull align 1 %227, i32 %22) #4, !noalias !209
br i1 %233, label %253, label %234
; <label>:234: ; preds = %225, %221
%235 = icmp eq i8 %27, 0
br i1 %235, label %263, label %236
; <label>:236: ; preds = %234
%237 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%238 = load {}*, {}** %237, align 4, !noalias !209, !nonnull !9
%239 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%240 = bitcast [3 x i32]** %239 to i1 ({}*, [0 x i8]*, i32)***
%241 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %240, align 4, !noalias !209, !nonnull !9
%242 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %241, i32 3
%243 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %242, align 4, !invariant.load !9, !noalias !209, !nonnull !9
%244 = tail call zeroext i1 %243({}* nonnull align 1 %238, [0 x i8]* noalias nonnull readonly align 1 %2, i32 %3) #4, !noalias !209
br i1 %244, label %253, label %263
._crit_edge: ; preds = %62, %64
%245 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%246 = load {}*, {}** %245, align 4, !nonnull !9
%247 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%248 = bitcast [3 x i32]** %247 to i1 ({}*, [0 x i8]*, i32)***
%249 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %248, align 4, !nonnull !9
%250 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %249, i32 3
%251 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %250, align 4, !invariant.load !9, !nonnull !9
%252 = tail call zeroext i1 %251({}* nonnull align 1 %246, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %5) #4
br label %253
; <label>:253: ; preds = %362, %354, %351, %350, %._crit_edge12, %._crit_edge, %236, %225, %212, %201, %194, %186, %183, %182, %64, %53
%254 = phi i1 [ %252, %._crit_edge ], [ %262, %._crit_edge12 ], [ false, %186 ], [ true, %182 ], [ true, %194 ], [ true, %183 ], [ true, %64 ], [ true, %212 ], [ false, %354 ], [ true, %350 ], [ true, %362 ], [ true, %351 ], [ true, %236 ], [ true, %53 ], [ true, %201 ], [ true, %225 ]
ret i1 %254
._crit_edge12: ; preds = %210, %212
%255 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%256 = load {}*, {}** %255, align 4, !nonnull !9
%257 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%258 = bitcast [3 x i32]** %257 to i1 ({}*, [0 x i8]*, i32)***
%259 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %258, align 4, !nonnull !9
%260 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %259, i32 3
%261 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %260, align 4, !invariant.load !9, !nonnull !9
%262 = tail call zeroext i1 %261({}* nonnull align 1 %256, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %5) #4
br label %253
; <label>:263: ; preds = %236, %234
%264 = sub i32 %197, %47
%265 = load i8, i8* %223, align 4, !range !161, !noalias !212
%266 = icmp eq i8 %265, 3
%267 = trunc i8 %265 to i2
%268 = select i1 %266, i2 1, i2 %267
switch i2 %268, label %270 [
i2 0, label %271
i2 1, label %269
i2 -2, label %330
i2 -1, label %269
]
; <label>:269: ; preds = %263, %263
br label %271
; <label>:270: ; preds = %263
unreachable
; <label>:271: ; preds = %330, %269, %263
%272 = phi i32 [ %333, %330 ], [ 0, %269 ], [ %264, %263 ]
%273 = phi i32 [ %331, %330 ], [ %264, %269 ], [ 0, %263 ]
%274 = bitcast i32* %8 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212
store i32 0, i32* %8, align 4, !noalias !212
%275 = load i32, i32* %222, align 4, !range !157, !noalias !212
%276 = bitcast i32* %8 to [0 x i8]*
%277 = icmp ult i32 %275, 128
br i1 %277, label %278, label %280
; <label>:278: ; preds = %271
%279 = trunc i32 %275 to i8
store i8 %279, i8* %274, align 4, !noalias !212
br label %325
; <label>:280: ; preds = %271
%281 = icmp ult i32 %275, 2048
br i1 %281, label %282, label %291
; <label>:282: ; preds = %280
%283 = lshr i32 %275, 6
%284 = trunc i32 %283 to i8
%285 = and i8 %284, 31
%286 = or i8 %285, -64
store i8 %286, i8* %274, align 4, !noalias !212
%287 = trunc i32 %275 to i8
%288 = and i8 %287, 63
%289 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 1
%290 = or i8 %288, -128
store i8 %290, i8* %289, align 1, !noalias !212
br label %325
; <label>:291: ; preds = %280
%292 = icmp ult i32 %275, 65536
br i1 %292, label %293, label %307
; <label>:293: ; preds = %291
%294 = lshr i32 %275, 12
%295 = trunc i32 %294 to i8
%296 = and i8 %295, 15
%297 = or i8 %296, -32
store i8 %297, i8* %274, align 4, !noalias !212
%298 = lshr i32 %275, 6
%299 = trunc i32 %298 to i8
%300 = and i8 %299, 63
%301 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 1
%302 = or i8 %300, -128
store i8 %302, i8* %301, align 1, !noalias !212
%303 = trunc i32 %275 to i8
%304 = and i8 %303, 63
%305 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 2
%306 = or i8 %304, -128
store i8 %306, i8* %305, align 2, !noalias !212
br label %325
; <label>:307: ; preds = %291
%308 = lshr i32 %275, 18
%309 = trunc i32 %308 to i8
%310 = or i8 %309, -16
store i8 %310, i8* %274, align 4, !noalias !212
%311 = lshr i32 %275, 12
%312 = trunc i32 %311 to i8
%313 = and i8 %312, 63
%314 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 1
%315 = or i8 %313, -128
store i8 %315, i8* %314, align 1, !noalias !212
%316 = lshr i32 %275, 6
%317 = trunc i32 %316 to i8
%318 = and i8 %317, 63
%319 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 2
%320 = or i8 %318, -128
store i8 %320, i8* %319, align 2, !noalias !212
%321 = trunc i32 %275 to i8
%322 = and i8 %321, 63
%323 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 3
%324 = or i8 %322, -128
store i8 %324, i8* %323, align 1, !noalias !212
br label %325
; <label>:325: ; preds = %307, %293, %282, %278
%326 = phi i32 [ 1, %278 ], [ 2, %282 ], [ 3, %293 ], [ 4, %307 ]
%327 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%328 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%329 = bitcast [3 x i32]** %328 to i1 ({}*, [0 x i8]*, i32)***
br label %334
; <label>:330: ; preds = %263
%331 = lshr i32 %264, 1
%332 = add i32 %264, 1
%333 = lshr i32 %332, 1
br label %271
; <label>:334: ; preds = %343, %325
%335 = phi i32 [ 0, %325 ], [ %344, %343 ]
%336 = icmp ult i32 %335, %273
br i1 %336, label %343, label %337
; <label>:337: ; preds = %334
%338 = load {}*, {}** %327, align 4, !noalias !215, !nonnull !9
%339 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %329, align 4, !noalias !215, !nonnull !9
%340 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %339, i32 3
%341 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %340, align 4, !invariant.load !9, !noalias !215, !nonnull !9
%342 = call zeroext i1 %341({}* nonnull align 1 %338, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %5) #4, !noalias !215
br i1 %342, label %351, label %.preheader11
; <label>:343: ; preds = %334
%344 = add i32 %335, 1
%345 = load {}*, {}** %327, align 4, !noalias !212, !nonnull !9
%346 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %329, align 4, !noalias !212, !nonnull !9
%347 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %346, i32 3
%348 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %347, align 4, !invariant.load !9, !noalias !212, !nonnull !9
%349 = call zeroext i1 %348({}* nonnull align 1 %345, [0 x i8]* noalias nonnull readonly align 1 %276, i32 %326) #4, !noalias !212
br i1 %349, label %350, label %334
; <label>:350: ; preds = %343
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212
br label %253
; <label>:351: ; preds = %337
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212
br label %253
.preheader11: ; preds = %337, %355
%352 = phi i32 [ %356, %355 ], [ 0, %337 ]
%353 = icmp ult i32 %352, %272
br i1 %353, label %355, label %354
; <label>:354: ; preds = %.preheader11
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212
br label %253
; <label>:355: ; preds = %.preheader11
%356 = add i32 %352, 1
%357 = load {}*, {}** %327, align 4, !noalias !212, !nonnull !9
%358 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %329, align 4, !noalias !212, !nonnull !9
%359 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %358, i32 3
%360 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %359, align 4, !invariant.load !9, !noalias !212, !nonnull !9
%361 = call zeroext i1 %360({}* nonnull align 1 %357, [0 x i8]* noalias nonnull readonly align 1 %276, i32 %326) #4, !noalias !212
br i1 %361, label %362, label %.preheader11
; <label>:362: ; preds = %355
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212
br label %253
}
; core::fmt::Formatter::pad
; Function Attrs: nounwind
define internal fastcc zeroext i1 @_ZN4core3fmt9Formatter3pad17hbc71133907d50792E(%"core::fmt::Formatter"* nocapture readonly align 4 dereferenceable(52), [0 x i8]* noalias nonnull readonly align 1, i32) unnamed_addr #1 {
%4 = alloca i32, align 4
%5 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 5, i32 0
%6 = load i32, i32* %5, align 4, !range !19, !alias.scope !218
%7 = icmp eq i32 %6, 1
%8 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 7, i32 0
%9 = load i32, i32* %8, align 4, !range !19
%10 = icmp eq i32 %9, 1
br i1 %7, label %21, label %11
; <label>:11: ; preds = %3
br i1 %10, label %24, label %12
; <label>:12: ; preds = %11
%13 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%14 = load {}*, {}** %13, align 4, !nonnull !9
%15 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%16 = bitcast [3 x i32]** %15 to i1 ({}*, [0 x i8]*, i32)***
%17 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %16, align 4, !nonnull !9
%18 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %17, i32 3
%19 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %18, align 4, !invariant.load !9, !nonnull !9
%20 = tail call zeroext i1 %19({}* nonnull align 1 %14, [0 x i8]* noalias nonnull readonly align 1 %1, i32 %2) #4
br label %22
; <label>:21: ; preds = %3
br i1 %10, label %24, label %315
; <label>:22: ; preds = %337, %314, %306, %303, %302, %192, %12
%23 = phi i1 [ %20, %12 ], [ %201, %192 ], [ %345, %337 ], [ false, %306 ], [ true, %302 ], [ true, %314 ], [ true, %303 ]
ret i1 %23
; <label>:24: ; preds = %21, %11
%25 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 7, i32 1
%26 = load i32, i32* %25, align 4
%27 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 0
%28 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 %2
%29 = ptrtoint [0 x i8]* %1 to i32
%30 = icmp eq i32 %2, 0
br i1 %30, label %.loopexit24, label %31
; <label>:31: ; preds = %24
%32 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 1
%33 = ptrtoint i8* %32 to i32
%34 = load i8, i8* %27, align 1
%35 = icmp sgt i8 %34, -1
br i1 %35, label %36, label %38
; <label>:36: ; preds = %31
%37 = zext i8 %34 to i32
br label %89
; <label>:38: ; preds = %31
%39 = and i8 %34, 31
%40 = zext i8 %39 to i32
%41 = icmp eq i32 %2, 1
br i1 %41, label %48, label %42
; <label>:42: ; preds = %38
%43 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 2
%44 = ptrtoint i8* %43 to i32
%45 = load i8, i8* %32, align 1, !alias.scope !223
%46 = and i8 %45, 63
%47 = zext i8 %46 to i32
br label %48
; <label>:48: ; preds = %42, %38
%49 = phi i32 [ %33, %38 ], [ %44, %42 ]
%50 = phi i8* [ %28, %38 ], [ %43, %42 ]
%51 = phi i32 [ 0, %38 ], [ %47, %42 ]
%52 = shl nuw nsw i32 %40, 6
%53 = or i32 %51, %52
%54 = icmp ugt i8 %34, -33
br i1 %54, label %55, label %89
; <label>:55: ; preds = %48
%56 = icmp eq i8* %50, %28
br i1 %56, label %63, label %57
; <label>:57: ; preds = %55
%58 = getelementptr inbounds i8, i8* %50, i32 1
%59 = ptrtoint i8* %58 to i32
%60 = load i8, i8* %50, align 1, !alias.scope !226
%61 = and i8 %60, 63
%62 = zext i8 %61 to i32
br label %63
; <label>:63: ; preds = %57, %55
%64 = phi i32 [ %49, %55 ], [ %59, %57 ]
%65 = phi i8* [ %28, %55 ], [ %58, %57 ]
%66 = phi i32 [ 0, %55 ], [ %62, %57 ]
%67 = shl nuw nsw i32 %51, 6
%68 = or i32 %66, %67
%69 = shl nuw nsw i32 %40, 12
%70 = or i32 %68, %69
%71 = icmp ugt i8 %34, -17
br i1 %71, label %72, label %89
; <label>:72: ; preds = %63
%73 = icmp eq i8* %65, %28
br i1 %73, label %80, label %74
; <label>:74: ; preds = %72
%75 = getelementptr inbounds i8, i8* %65, i32 1
%76 = ptrtoint i8* %75 to i32
%77 = load i8, i8* %65, align 1, !alias.scope !229
%78 = and i8 %77, 63
%79 = zext i8 %78 to i32
br label %80
; <label>:80: ; preds = %74, %72
%81 = phi i32 [ %64, %72 ], [ %76, %74 ]
%82 = phi i32 [ 0, %72 ], [ %79, %74 ]
%83 = shl nuw nsw i32 %40, 18
%84 = and i32 %83, 1835008
%85 = shl nuw nsw i32 %68, 6
%86 = or i32 %85, %84
%87 = or i32 %86, %82
%88 = icmp eq i32 %87, 1114112
br i1 %88, label %.loopexit24, label %89
; <label>:89: ; preds = %80, %63, %48, %36
%90 = phi i32 [ %33, %36 ], [ %81, %80 ], [ %64, %63 ], [ %49, %48 ]
%91 = phi i32 [ %37, %36 ], [ %87, %80 ], [ %70, %63 ], [ %53, %48 ]
%92 = insertvalue { i32, i32 } { i32 0, i32 undef }, i32 %91, 1
%93 = icmp eq i32 %26, 0
br i1 %93, label %172, label %94
; <label>:94: ; preds = %89
%95 = sub i32 %90, %29
br label %96
; <label>:96: ; preds = %161, %94
%97 = phi i32 [ %162, %161 ], [ %90, %94 ]
%98 = phi i32 [ %165, %161 ], [ %95, %94 ]
%99 = phi i32 [ %100, %161 ], [ %26, %94 ]
%100 = add i32 %99, -1
%101 = inttoptr i32 %97 to i8*
%102 = icmp eq i8* %28, %101
br i1 %102, label %.loopexit24, label %103
; <label>:103: ; preds = %96
%104 = getelementptr inbounds i8, i8* %101, i32 1
%105 = ptrtoint i8* %104 to i32
%106 = load i8, i8* %101, align 1
%107 = icmp sgt i8 %106, -1
br i1 %107, label %108, label %110
; <label>:108: ; preds = %103
%109 = zext i8 %106 to i32
br label %161
; <label>:110: ; preds = %103
%111 = and i8 %106, 31
%112 = zext i8 %111 to i32
%113 = icmp eq i8* %104, %28
br i1 %113, label %120, label %114
; <label>:114: ; preds = %110
%115 = getelementptr inbounds i8, i8* %101, i32 2
%116 = ptrtoint i8* %115 to i32
%117 = load i8, i8* %104, align 1, !alias.scope !232
%118 = and i8 %117, 63
%119 = zext i8 %118 to i32
br label %120
; <label>:120: ; preds = %114, %110
%121 = phi i32 [ %105, %110 ], [ %116, %114 ]
%122 = phi i8* [ %28, %110 ], [ %115, %114 ]
%123 = phi i32 [ 0, %110 ], [ %119, %114 ]
%124 = shl nuw nsw i32 %112, 6
%125 = or i32 %123, %124
%126 = icmp ugt i8 %106, -33
br i1 %126, label %127, label %161
; <label>:127: ; preds = %120
%128 = icmp eq i8* %122, %28
br i1 %128, label %135, label %129
; <label>:129: ; preds = %127
%130 = getelementptr inbounds i8, i8* %122, i32 1
%131 = ptrtoint i8* %130 to i32
%132 = load i8, i8* %122, align 1, !alias.scope !235
%133 = and i8 %132, 63
%134 = zext i8 %133 to i32
br label %135
; <label>:135: ; preds = %129, %127
%136 = phi i32 [ %121, %127 ], [ %131, %129 ]
%137 = phi i8* [ %28, %127 ], [ %130, %129 ]
%138 = phi i32 [ 0, %127 ], [ %134, %129 ]
%139 = shl nuw nsw i32 %123, 6
%140 = or i32 %138, %139
%141 = shl nuw nsw i32 %112, 12
%142 = or i32 %140, %141
%143 = icmp ugt i8 %106, -17
br i1 %143, label %144, label %161
; <label>:144: ; preds = %135
%145 = icmp eq i8* %137, %28
br i1 %145, label %152, label %146
; <label>:146: ; preds = %144
%147 = getelementptr inbounds i8, i8* %137, i32 1
%148 = ptrtoint i8* %147 to i32
%149 = load i8, i8* %137, align 1, !alias.scope !238
%150 = and i8 %149, 63
%151 = zext i8 %150 to i32
br label %152
; <label>:152: ; preds = %146, %144
%153 = phi i32 [ %136, %144 ], [ %148, %146 ]
%154 = phi i32 [ 0, %144 ], [ %151, %146 ]
%155 = shl nuw nsw i32 %112, 18
%156 = and i32 %155, 1835008
%157 = shl nuw nsw i32 %140, 6
%158 = or i32 %157, %156
%159 = or i32 %158, %154
%160 = icmp eq i32 %159, 1114112
br i1 %160, label %.loopexit24, label %161
; <label>:161: ; preds = %152, %135, %120, %108
%162 = phi i32 [ %105, %108 ], [ %153, %152 ], [ %136, %135 ], [ %121, %120 ]
%163 = phi i32 [ %109, %108 ], [ %159, %152 ], [ %142, %135 ], [ %125, %120 ]
%164 = sub i32 %98, %97
%165 = add i32 %164, %162
%166 = icmp eq i32 %100, 0
br i1 %166, label %169, label %96
.loopexit24: ; preds = %152, %96, %185, %80, %24
%167 = phi i32 [ %189, %185 ], [ %2, %80 ], [ 0, %24 ], [ %2, %96 ], [ %2, %152 ]
%168 = phi [0 x i8]* [ %190, %185 ], [ %1, %80 ], [ %1, %24 ], [ %1, %96 ], [ %1, %152 ]
br i1 %7, label %315, label %192
; <label>:169: ; preds = %161
%170 = insertvalue { i32, i32 } undef, i32 %98, 0
%171 = insertvalue { i32, i32 } %170, i32 %163, 1
br label %172
; <label>:172: ; preds = %169, %89
%173 = phi { i32, i32 } [ %92, %89 ], [ %171, %169 ]
%174 = extractvalue { i32, i32 } %173, 0
%175 = icmp eq i32 %174, 0
%176 = icmp eq i32 %174, %2
%177 = or i1 %175, %176
br i1 %177, label %184, label %178
; <label>:178: ; preds = %172
%179 = icmp ult i32 %174, %2
br i1 %179, label %180, label %185
; <label>:180: ; preds = %178
%181 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 %174
%182 = load i8, i8* %181, align 1, !alias.scope !241
%183 = icmp sgt i8 %182, -65
br i1 %183, label %184, label %185
; <label>:184: ; preds = %180, %172
br label %185
; <label>:185: ; preds = %184, %180, %178
%186 = phi i8* [ %27, %184 ], [ null, %180 ], [ null, %178 ]
%187 = icmp eq i8* %186, null
%188 = bitcast i8* %186 to [0 x i8]*
%189 = select i1 %187, i32 %2, i32 %174
%190 = select i1 %187, [0 x i8]* %1, [0 x i8]* %188
%191 = icmp ne [0 x i8]* %190, null
tail call void @llvm.assume(i1 %191) #4
br label %.loopexit24
; <label>:192: ; preds = %.loopexit24
%193 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%194 = load {}*, {}** %193, align 4, !nonnull !9
%195 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%196 = bitcast [3 x i32]** %195 to i1 ({}*, [0 x i8]*, i32)***
%197 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %196, align 4, !nonnull !9
%198 = icmp ne [0 x i8]* %168, null
tail call void @llvm.assume(i1 %198)
%199 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %197, i32 3
%200 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %199, align 4, !invariant.load !9, !nonnull !9
%201 = tail call zeroext i1 %200({}* nonnull align 1 %194, [0 x i8]* noalias nonnull readonly align 1 %168, i32 %167) #4
br label %22
; <label>:202: ; preds = %.loopexit23
br i1 %323, label %.loopexit, label %.preheader21
.preheader21: ; preds = %202, %.preheader21
%203 = phi i32 [ %210, %.preheader21 ], [ 0, %202 ]
%204 = phi i8* [ %205, %.preheader21 ], [ %320, %202 ]
%205 = getelementptr inbounds i8, i8* %204, i32 1
%206 = load i8, i8* %204, align 1
%207 = and i8 %206, -64
%208 = icmp eq i8 %207, -128
%209 = zext i1 %208 to i32
%210 = add i32 %203, %209
%211 = icmp eq i8* %205, %321
br i1 %211, label %.loopexit, label %.preheader21
.loopexit: ; preds = %.preheader21, %202
%212 = phi i32 [ 0, %202 ], [ %210, %.preheader21 ]
%213 = sub i32 %212, %317
%214 = add i32 %213, %335
%215 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 15
%216 = load i8, i8* %215, align 4, !range !161, !noalias !248
%217 = icmp eq i8 %216, 3
%218 = trunc i8 %216 to i2
%219 = select i1 %217, i2 0, i2 %218
switch i2 %219, label %221 [
i2 0, label %222
i2 1, label %220
i2 -2, label %282
i2 -1, label %220
]
; <label>:220: ; preds = %.loopexit, %.loopexit
br label %222
; <label>:221: ; preds = %.loopexit
unreachable
; <label>:222: ; preds = %282, %220, %.loopexit
%223 = phi i32 [ %285, %282 ], [ 0, %220 ], [ %214, %.loopexit ]
%224 = phi i32 [ %283, %282 ], [ %214, %220 ], [ 0, %.loopexit ]
%225 = bitcast i32* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248
store i32 0, i32* %4, align 4, !noalias !248
%226 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 3
%227 = load i32, i32* %226, align 4, !range !157, !noalias !248
%228 = bitcast i32* %4 to [0 x i8]*
%229 = icmp ult i32 %227, 128
br i1 %229, label %230, label %232
; <label>:230: ; preds = %222
%231 = trunc i32 %227 to i8
store i8 %231, i8* %225, align 4, !noalias !248
br label %277
; <label>:232: ; preds = %222
%233 = icmp ult i32 %227, 2048
br i1 %233, label %234, label %243
; <label>:234: ; preds = %232
%235 = lshr i32 %227, 6
%236 = trunc i32 %235 to i8
%237 = and i8 %236, 31
%238 = or i8 %237, -64
store i8 %238, i8* %225, align 4, !noalias !248
%239 = trunc i32 %227 to i8
%240 = and i8 %239, 63
%241 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 1
%242 = or i8 %240, -128
store i8 %242, i8* %241, align 1, !noalias !248
br label %277
; <label>:243: ; preds = %232
%244 = icmp ult i32 %227, 65536
br i1 %244, label %245, label %259
; <label>:245: ; preds = %243
%246 = lshr i32 %227, 12
%247 = trunc i32 %246 to i8
%248 = and i8 %247, 15
%249 = or i8 %248, -32
store i8 %249, i8* %225, align 4, !noalias !248
%250 = lshr i32 %227, 6
%251 = trunc i32 %250 to i8
%252 = and i8 %251, 63
%253 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 1
%254 = or i8 %252, -128
store i8 %254, i8* %253, align 1, !noalias !248
%255 = trunc i32 %227 to i8
%256 = and i8 %255, 63
%257 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 2
%258 = or i8 %256, -128
store i8 %258, i8* %257, align 2, !noalias !248
br label %277
; <label>:259: ; preds = %243
%260 = lshr i32 %227, 18
%261 = trunc i32 %260 to i8
%262 = or i8 %261, -16
store i8 %262, i8* %225, align 4, !noalias !248
%263 = lshr i32 %227, 12
%264 = trunc i32 %263 to i8
%265 = and i8 %264, 63
%266 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 1
%267 = or i8 %265, -128
store i8 %267, i8* %266, align 1, !noalias !248
%268 = lshr i32 %227, 6
%269 = trunc i32 %268 to i8
%270 = and i8 %269, 63
%271 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 2
%272 = or i8 %270, -128
store i8 %272, i8* %271, align 2, !noalias !248
%273 = trunc i32 %227 to i8
%274 = and i8 %273, 63
%275 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 3
%276 = or i8 %274, -128
store i8 %276, i8* %275, align 1, !noalias !248
br label %277
; <label>:277: ; preds = %259, %245, %234, %230
%278 = phi i32 [ 1, %230 ], [ 2, %234 ], [ 3, %245 ], [ 4, %259 ]
%279 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%280 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%281 = bitcast [3 x i32]** %280 to i1 ({}*, [0 x i8]*, i32)***
br label %286
; <label>:282: ; preds = %.loopexit
%283 = lshr i32 %214, 1
%284 = add i32 %214, 1
%285 = lshr i32 %284, 1
br label %222
; <label>:286: ; preds = %295, %277
%287 = phi i32 [ 0, %277 ], [ %296, %295 ]
%288 = icmp ult i32 %287, %224
br i1 %288, label %295, label %289
; <label>:289: ; preds = %286
%290 = load {}*, {}** %279, align 4, !noalias !251, !nonnull !9
%291 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %281, align 4, !noalias !251, !nonnull !9
%292 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %291, i32 3
%293 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %292, align 4, !invariant.load !9, !noalias !251, !nonnull !9
%294 = call zeroext i1 %293({}* nonnull align 1 %290, [0 x i8]* noalias nonnull readonly align 1 %316, i32 %317) #4, !noalias !251
br i1 %294, label %303, label %.preheader
; <label>:295: ; preds = %286
%296 = add i32 %287, 1
%297 = load {}*, {}** %279, align 4, !noalias !248, !nonnull !9
%298 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %281, align 4, !noalias !248, !nonnull !9
%299 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %298, i32 3
%300 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %299, align 4, !invariant.load !9, !noalias !248, !nonnull !9
%301 = call zeroext i1 %300({}* nonnull align 1 %297, [0 x i8]* noalias nonnull readonly align 1 %228, i32 %278) #4, !noalias !248
br i1 %301, label %302, label %286
; <label>:302: ; preds = %295
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248
br label %22
; <label>:303: ; preds = %289
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248
br label %22
.preheader: ; preds = %289, %307
%304 = phi i32 [ %308, %307 ], [ 0, %289 ]
%305 = icmp ult i32 %304, %223
br i1 %305, label %307, label %306
; <label>:306: ; preds = %.preheader
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248
br label %22
; <label>:307: ; preds = %.preheader
%308 = add i32 %304, 1
%309 = load {}*, {}** %279, align 4, !noalias !248, !nonnull !9
%310 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %281, align 4, !noalias !248, !nonnull !9
%311 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %310, i32 3
%312 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %311, align 4, !invariant.load !9, !noalias !248, !nonnull !9
%313 = call zeroext i1 %312({}* nonnull align 1 %309, [0 x i8]* noalias nonnull readonly align 1 %228, i32 %278) #4, !noalias !248
br i1 %313, label %314, label %.preheader
; <label>:314: ; preds = %307
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248
br label %22
; <label>:315: ; preds = %.loopexit24, %21
%316 = phi [0 x i8]* [ %168, %.loopexit24 ], [ %1, %21 ]
%317 = phi i32 [ %167, %.loopexit24 ], [ %2, %21 ]
%318 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 5, i32 1
%319 = icmp ne [0 x i8]* %316, null
tail call void @llvm.assume(i1 %319)
%320 = getelementptr inbounds [0 x i8], [0 x i8]* %316, i32 0, i32 0
%321 = getelementptr inbounds [0 x i8], [0 x i8]* %316, i32 0, i32 %317
%322 = icmp ne i8* %321, null
tail call void @llvm.assume(i1 %322) #4
%323 = icmp eq i32 %317, 0
br i1 %323, label %.loopexit23, label %.preheader22
.preheader22: ; preds = %315, %.preheader22
%324 = phi i32 [ %331, %.preheader22 ], [ 0, %315 ]
%325 = phi i8* [ %326, %.preheader22 ], [ %320, %315 ]
%326 = getelementptr inbounds i8, i8* %325, i32 1
%327 = load i8, i8* %325, align 1
%328 = and i8 %327, -64
%329 = icmp eq i8 %328, -128
%330 = zext i1 %329 to i32
%331 = add i32 %324, %330
%332 = icmp eq i8* %326, %321
br i1 %332, label %.loopexit23, label %.preheader22
.loopexit23: ; preds = %.preheader22, %315
%333 = phi i32 [ 0, %315 ], [ %331, %.preheader22 ]
%334 = sub i32 %317, %333
%335 = load i32, i32* %318, align 4
%336 = icmp ult i32 %334, %335
br i1 %336, label %202, label %337
; <label>:337: ; preds = %.loopexit23
%338 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0
%339 = load {}*, {}** %338, align 4, !nonnull !9
%340 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1
%341 = bitcast [3 x i32]** %340 to i1 ({}*, [0 x i8]*, i32)***
%342 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %341, align 4, !nonnull !9
%343 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %342, i32 3
%344 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %343, align 4, !invariant.load !9, !nonnull !9
%345 = tail call zeroext i1 %344({}* nonnull align 1 %339, [0 x i8]* noalias nonnull readonly align 1 %316, i32 %317) #4
br label %22
}
; <core::fmt::Error as core::fmt::Debug>::fmt
; Function Attrs: nounwind
define internal zeroext i1 @"_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h5c867cfdf324d2bdE"({}* noalias nocapture nonnull readonly align 1, %"core::fmt::Formatter"* nocapture readonly align 4 dereferenceable(52)) unnamed_addr #1 {
%3 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %1, i32 0, i32 9, i32 0
%4 = load {}*, {}** %3, align 4, !noalias !254, !nonnull !9
%5 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %1, i32 0, i32 9, i32 1
%6 = bitcast [3 x i32]** %5 to i1 ({}*, [0 x i8]*, i32)***
%7 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %6, align 4, !noalias !254, !nonnull !9
%8 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %7, i32 3
%9 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %8, align 4, !invariant.load !9, !noalias !254, !nonnull !9
%10 = tail call zeroext i1 %9({}* nonnull align 1 %4, [0 x i8]* noalias nonnull readonly align 1 bitcast (<{ [5 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.22 to [0 x i8]*), i32 5) #4, !noalias !260
ret i1 %10
}
; Function Attrs: nounwind
define internal fastcc i8* @__rust_alloc(i32, i32) unnamed_addr #4 {
entry:
%2 = tail call fastcc i8* @__rdl_alloc(i32 %0, i32 %1)
ret i8* %2
}
; Function Attrs: nounwind
define internal fastcc void @__rust_dealloc(i8*) unnamed_addr #4 {
entry:
tail call fastcc void @__rdl_dealloc(i8* %0)
ret void
}
; Function Attrs: nounwind
define internal fastcc i8* @__rust_realloc(i8*, i32) unnamed_addr #4 {
entry:
%2 = tail call fastcc i8* @__rdl_realloc(i8* %0, i32 %1)
ret i8* %2
}
attributes #0 = { inlinehint nounwind "target-cpu"="generic" }
attributes #1 = { nounwind "target-cpu"="generic" }
attributes #2 = { noinline nounwind "target-cpu"="generic" }
attributes #3 = { argmemonly nounwind }
attributes #4 = { nounwind }
attributes #5 = { noreturn nounwind "target-cpu"="generic" }
attributes #6 = { cold noreturn nounwind }
attributes #7 = { noinline noreturn nounwind "target-cpu"="generic" }
attributes #8 = { nounwind readnone speculatable }
attributes #9 = { norecurse nounwind "target-cpu"="generic" }
attributes #10 = { norecurse nounwind readnone "target-cpu"="generic" }
attributes #11 = { cold noinline noreturn nounwind "target-cpu"="generic" }
!0 = !{!1}
!1 = distinct !{!1, !2, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"}
!2 = distinct !{!2, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"}
!3 = !{!4, !5}
!4 = distinct !{!4, !2, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: %pieces.0"}
!5 = distinct !{!5, !2, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: %args.0"}
!6 = !{!7}
!7 = distinct !{!7, !8, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17hf7580f58c8f93926E: %self"}
!8 = distinct !{!8, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17hf7580f58c8f93926E"}
!9 = !{}
!10 = !{!11}
!11 = distinct !{!11, !12, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"}
!12 = distinct !{!12, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"}
!13 = !{!14, !15}
!14 = distinct !{!14, !12, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: %pieces.0"}
!15 = distinct !{!15, !12, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: %args.0"}
!16 = !{!17}
!17 = distinct !{!17, !18, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17hf7580f58c8f93926E: %self"}
!18 = distinct !{!18, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17hf7580f58c8f93926E"}
!19 = !{i32 0, i32 2}
!20 = !{!21, !23, !24, !26}
!21 = distinct !{!21, !22, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$8try_with17h82bfa0b121ac4c4aE: argument 0"}
!22 = distinct !{!22, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$8try_with17h82bfa0b121ac4c4aE"}
!23 = distinct !{!23, !22, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$8try_with17h82bfa0b121ac4c4aE: argument 1"}
!24 = distinct !{!24, !25, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4with17hf83daf2cffb08deeE: argument 0"}
!25 = distinct !{!25, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4with17hf83daf2cffb08deeE"}
!26 = distinct !{!26, !25, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4with17hf83daf2cffb08deeE: argument 1"}
!27 = !{!28, !21, !23, !24, !26}
!28 = distinct !{!28, !29, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4init17h0fe460223fe04d28E: argument 0"}
!29 = distinct !{!29, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4init17h0fe460223fe04d28E"}
!30 = !{!31, !21, !23, !24, !26}
!31 = distinct !{!31, !32, !"_ZN3std9panicking18update_panic_count28_$u7b$$u7b$closure$u7d$$u7d$17hc1656fc1536464cfE: argument 0"}
!32 = distinct !{!32, !"_ZN3std9panicking18update_panic_count28_$u7b$$u7b$closure$u7d$$u7d$17hc1656fc1536464cfE"}
!33 = !{!24, !26}
!34 = !{!35}
!35 = distinct !{!35, !36, !"_ZN4core5panic9PanicInfo7message17hce969df3937206a2E: argument 0"}
!36 = distinct !{!36, !"_ZN4core5panic9PanicInfo7message17hce969df3937206a2E"}
!37 = !{i32 1, i32 0}
!38 = !{!39}
!39 = distinct !{!39, !40, !"_ZN4core5panic8Location4file17h24340291a6e967f8E: argument 0"}
!40 = distinct !{!40, !"_ZN4core5panic8Location4file17h24340291a6e967f8E"}
!41 = !{!42}
!42 = distinct !{!42, !43, !"_ZN4core5panic8Location4line17h38dfa2bd51f0c4c8E: argument 0"}
!43 = distinct !{!43, !"_ZN4core5panic8Location4line17h38dfa2bd51f0c4c8E"}
!44 = !{!45}
!45 = distinct !{!45, !46, !"_ZN4core5panic8Location6column17h763d234016bdcc0aE: argument 0"}
!46 = distinct !{!46, !"_ZN4core5panic8Location6column17h763d234016bdcc0aE"}
!47 = !{i32 0, i32 33}
!48 = !{!49}
!49 = distinct !{!49, !50, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"}
!50 = distinct !{!50, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"}
!51 = !{!52}
!52 = distinct !{!52, !53, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"}
!53 = distinct !{!53, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"}
!54 = !{!55}
!55 = distinct !{!55, !56, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"}
!56 = distinct !{!56, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"}
!57 = !{!58}
!58 = distinct !{!58, !59, !"_ZN8dlmalloc3sys5alloc17h958bd67403221364E: argument 0"}
!59 = distinct !{!59, !"_ZN8dlmalloc3sys5alloc17h958bd67403221364E"}
!60 = !{!61}
!61 = distinct !{!61, !62, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"}
!62 = distinct !{!62, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"}
!63 = !{!64}
!64 = distinct !{!64, !65, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"}
!65 = distinct !{!65, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"}
!66 = !{!67}
!67 = distinct !{!67, !68, !"_ZN8dlmalloc8dlmalloc8Dlmalloc17treemap_is_marked17h20f4a9d2665ca407E: argument 0"}
!68 = distinct !{!68, !"_ZN8dlmalloc8dlmalloc8Dlmalloc17treemap_is_marked17h20f4a9d2665ca407E"}
!69 = !{!70}
!70 = distinct !{!70, !71, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"}
!71 = distinct !{!71, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"}
!72 = !{!73}
!73 = distinct !{!73, !74, !"_ZN8dlmalloc8dlmalloc8Dlmalloc11should_trim17h8d376d2ce92977f1E: argument 0"}
!74 = distinct !{!74, !"_ZN8dlmalloc8dlmalloc8Dlmalloc11should_trim17h8d376d2ce92977f1E"}
!75 = !{!76}
!76 = distinct !{!76, !77, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"}
!77 = distinct !{!77, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"}
!78 = !{!79}
!79 = distinct !{!79, !80, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E: argument 0"}
!80 = distinct !{!80, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E"}
!81 = !{!82}
!82 = distinct !{!82, !83, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E: argument 0"}
!83 = distinct !{!83, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E"}
!84 = !{!85}
!85 = distinct !{!85, !86, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$17extend_from_slice17hcbbb30cc01bf9108E: argument 0"}
!86 = distinct !{!86, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$17extend_from_slice17hcbbb30cc01bf9108E"}
!87 = !{!88}
!88 = distinct !{!88, !89, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$3len17h502e64cf72557acdE: argument 0"}
!89 = distinct !{!89, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$3len17h502e64cf72557acdE"}
!90 = !{!91}
!91 = distinct !{!91, !92, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E: argument 0"}
!92 = distinct !{!92, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E"}
!93 = !{!94}
!94 = distinct !{!94, !95, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E: argument 0"}
!95 = distinct !{!95, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E"}
!96 = !{!97}
!97 = distinct !{!97, !98, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E: argument 0"}
!98 = distinct !{!98, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E"}
!99 = !{!100}
!100 = distinct !{!100, !101, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E: argument 0"}
!101 = distinct !{!101, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E"}
!102 = !{!103}
!103 = distinct !{!103, !104, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$17extend_from_slice17hcbbb30cc01bf9108E: argument 0"}
!104 = distinct !{!104, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$17extend_from_slice17hcbbb30cc01bf9108E"}
!105 = !{!106}
!106 = distinct !{!106, !107, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$3len17h502e64cf72557acdE: argument 0"}
!107 = distinct !{!107, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$3len17h502e64cf72557acdE"}
!108 = !{!109}
!109 = distinct !{!109, !110, !"_ZN4core3fmt5Write9write_fmt17h09805a80d476d7a1E: argument 0"}
!110 = distinct !{!110, !"_ZN4core3fmt5Write9write_fmt17h09805a80d476d7a1E"}
!111 = !{!112}
!112 = distinct !{!112, !113, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"}
!113 = distinct !{!113, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"}
!114 = !{!115}
!115 = distinct !{!115, !113, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 1"}
!116 = !{!117}
!117 = distinct !{!117, !118, !"_ZN4core3fmt9Arguments18estimated_capacity17h468767b57b71e79bE: argument 0"}
!118 = distinct !{!118, !"_ZN4core3fmt9Arguments18estimated_capacity17h468767b57b71e79bE"}
!119 = !{!120, !122}
!120 = distinct !{!120, !121, !"_ZN4core3fmt9Arguments18estimated_capacity28_$u7b$$u7b$closure$u7d$$u7d$17h231f2b63cc4c3715E: argument 0"}
!121 = distinct !{!121, !"_ZN4core3fmt9Arguments18estimated_capacity28_$u7b$$u7b$closure$u7d$$u7d$17h231f2b63cc4c3715E"}
!122 = distinct !{!122, !123, !"_ZN102_$LT$core..iter..adapters..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17h0f74f50d687bd3f4E: argument 0"}
!123 = distinct !{!123, !"_ZN102_$LT$core..iter..adapters..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17h0f74f50d687bd3f4E"}
!124 = !{!"branch_weights", i32 1, i32 2000}
!125 = !{!126}
!126 = distinct !{!126, !127, !"_ZN4core3cmp5impls91_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$$u27$b$u20$B$GT$$u20$for$u20$$RF$$u27$a$u20$A$GT$2eq17h441244a45f0b265bE: argument 0"}
!127 = distinct !{!127, !"_ZN4core3cmp5impls91_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$$u27$b$u20$B$GT$$u20$for$u20$$RF$$u27$a$u20$A$GT$2eq17h441244a45f0b265bE"}
!128 = !{!129}
!129 = distinct !{!129, !130, !"_ZN5alloc6string6String13with_capacity17h92ca86ba564c8f72E: argument 0"}
!130 = distinct !{!130, !"_ZN5alloc6string6String13with_capacity17h92ca86ba564c8f72E"}
!131 = !{!132}
!132 = distinct !{!132, !133, !"_ZN4core3fmt5Write9write_fmt17h09805a80d476d7a1E: argument 0"}
!133 = distinct !{!133, !"_ZN4core3fmt5Write9write_fmt17h09805a80d476d7a1E"}
!134 = !{!135}
!135 = distinct !{!135, !136, !"_ZN43_$LT$u32$u20$as$u20$core..fmt..num..Int$GT$6to_u3217hd39e0a53218d2980E: argument 0"}
!136 = distinct !{!136, !"_ZN43_$LT$u32$u20$as$u20$core..fmt..num..Int$GT$6to_u3217hd39e0a53218d2980E"}
!137 = !{!138}
!138 = distinct !{!138, !139, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"}
!139 = distinct !{!139, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"}
!140 = !{!141, !142}
!141 = distinct !{!141, !139, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 1"}
!142 = distinct !{!142, !139, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 2"}
!143 = !{!144}
!144 = distinct !{!144, !145, !"_ZN4core5panic9PanicInfo20internal_constructor17h931ba11e1e21d5e4E: argument 0"}
!145 = distinct !{!145, !"_ZN4core5panic9PanicInfo20internal_constructor17h931ba11e1e21d5e4E"}
!146 = !{!147, !148}
!147 = distinct !{!147, !145, !"_ZN4core5panic9PanicInfo20internal_constructor17h931ba11e1e21d5e4E: argument 1"}
!148 = distinct !{!148, !145, !"_ZN4core5panic9PanicInfo20internal_constructor17h931ba11e1e21d5e4E: argument 2"}
!149 = !{!144, !148}
!150 = !{!147}
!151 = !{!152}
!152 = distinct !{!152, !153, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"}
!153 = distinct !{!153, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"}
!154 = !{!155, !156}
!155 = distinct !{!155, !153, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 1"}
!156 = distinct !{!156, !153, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 2"}
!157 = !{i32 0, i32 1114112}
!158 = !{!159}
!159 = distinct !{!159, !160, !"_ZN4core3fmt9Formatter3run17h335739a4c2b4acaeE: argument 0"}
!160 = distinct !{!160, !"_ZN4core3fmt9Formatter3run17h335739a4c2b4acaeE"}
!161 = !{i8 0, i8 4}
!162 = !{i32 0, i32 4}
!163 = !{!164, !159}
!164 = distinct !{!164, !165, !"_ZN4core3fmt9Formatter8getcount17hca2de6d73d41b408E: argument 0"}
!165 = distinct !{!165, !"_ZN4core3fmt9Formatter8getcount17hca2de6d73d41b408E"}
!166 = !{!"branch_weights", i32 2000, i32 1}
!167 = !{!168}
!168 = distinct !{!168, !169, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E: argument 0"}
!169 = distinct !{!169, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E"}
!170 = !{!168, !164, !159}
!171 = !{!172}
!172 = distinct !{!172, !173, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E: argument 0"}
!173 = distinct !{!173, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E"}
!174 = !{!172, !164, !159}
!175 = !{!176, !159}
!176 = distinct !{!176, !177, !"_ZN4core3fmt9Formatter8getcount17hca2de6d73d41b408E: argument 0"}
!177 = distinct !{!177, !"_ZN4core3fmt9Formatter8getcount17hca2de6d73d41b408E"}
!178 = !{!179}
!179 = distinct !{!179, !180, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E: argument 0"}
!180 = distinct !{!180, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E"}
!181 = !{!179, !176, !159}
!182 = !{!183}
!183 = distinct !{!183, !184, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E: argument 0"}
!184 = distinct !{!184, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E"}
!185 = !{!183, !176, !159}
!186 = !{!187}
!187 = distinct !{!187, !188, !"_ZN4core3fmt9Formatter9alternate17h331bb5f796e3e427E: argument 0"}
!188 = distinct !{!188, !"_ZN4core3fmt9Formatter9alternate17h331bb5f796e3e427E"}
!189 = !{!190}
!190 = distinct !{!190, !191, !"_ZN4core3fmt9Formatter9sign_plus17hfa16ab2e9f1a7dedE: argument 0"}
!191 = distinct !{!191, !"_ZN4core3fmt9Formatter9sign_plus17hfa16ab2e9f1a7dedE"}
!192 = !{!193}
!193 = distinct !{!193, !194, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E: argument 0"}
!194 = distinct !{!194, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E"}
!195 = !{!196, !198}
!196 = distinct !{!196, !197, !"_ZN4core3fmt9Formatter12with_padding17h26c4c5b1ab7df27bE: argument 0"}
!197 = distinct !{!197, !"_ZN4core3fmt9Formatter12with_padding17h26c4c5b1ab7df27bE"}
!198 = distinct !{!198, !197, !"_ZN4core3fmt9Formatter12with_padding17h26c4c5b1ab7df27bE: argument 1"}
!199 = !{!200, !202, !204, !196, !198}
!200 = distinct !{!200, !201, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E: argument 0"}
!201 = distinct !{!201, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E"}
!202 = distinct !{!202, !203, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hbaddf488de1728dcE: argument 0"}
!203 = distinct !{!203, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hbaddf488de1728dcE"}
!204 = distinct !{!204, !203, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hbaddf488de1728dcE: argument 1"}
!205 = !{!202, !204, !196, !198}
!206 = !{!207}
!207 = distinct !{!207, !208, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E: argument 0"}
!208 = distinct !{!208, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E"}
!209 = !{!210}
!210 = distinct !{!210, !211, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E: argument 0"}
!211 = distinct !{!211, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E"}
!212 = !{!213}
!213 = distinct !{!213, !214, !"_ZN4core3fmt9Formatter12with_padding17h0087fc77e09428ceE: argument 0"}
!214 = distinct !{!214, !"_ZN4core3fmt9Formatter12with_padding17h0087fc77e09428ceE"}
!215 = !{!216, !213}
!216 = distinct !{!216, !217, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hf584b9f9c0b29b8fE: argument 0"}
!217 = distinct !{!217, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hf584b9f9c0b29b8fE"}
!218 = !{!219, !221}
!219 = distinct !{!219, !220, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$7is_some17h75952901945cb39bE: argument 0"}
!220 = distinct !{!220, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$7is_some17h75952901945cb39bE"}
!221 = distinct !{!221, !222, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$7is_none17h5f0d590a557d2c17E: argument 0"}
!222 = distinct !{!222, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$7is_none17h5f0d590a557d2c17E"}
!223 = !{!224}
!224 = distinct !{!224, !225, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"}
!225 = distinct !{!225, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"}
!226 = !{!227}
!227 = distinct !{!227, !228, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"}
!228 = distinct !{!228, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"}
!229 = !{!230}
!230 = distinct !{!230, !231, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"}
!231 = distinct !{!231, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"}
!232 = !{!233}
!233 = distinct !{!233, !234, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"}
!234 = distinct !{!234, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"}
!235 = !{!236}
!236 = distinct !{!236, !237, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"}
!237 = distinct !{!237, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"}
!238 = !{!239}
!239 = distinct !{!239, !240, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"}
!240 = distinct !{!240, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"}
!241 = !{!242, !244, !246}
!242 = distinct !{!242, !243, !"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hd18c1b2e068fd6bbE: argument 0"}
!243 = distinct !{!243, !"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hd18c1b2e068fd6bbE"}
!244 = distinct !{!244, !245, !"_ZN4core3str6traits103_$LT$impl$u20$core..slice..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17heda1f0357ea02631E: argument 0"}
!245 = distinct !{!245, !"_ZN4core3str6traits103_$LT$impl$u20$core..slice..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17heda1f0357ea02631E"}
!246 = distinct !{!246, !247, !"_ZN4core3str21_$LT$impl$u20$str$GT$3get17h28857d13a07e48f3E: argument 0"}
!247 = distinct !{!247, !"_ZN4core3str21_$LT$impl$u20$str$GT$3get17h28857d13a07e48f3E"}
!248 = !{!249}
!249 = distinct !{!249, !250, !"_ZN4core3fmt9Formatter12with_padding17h2aec15766f17c6a0E: argument 0"}
!250 = distinct !{!250, !"_ZN4core3fmt9Formatter12with_padding17h2aec15766f17c6a0E"}
!251 = !{!252, !249}
!252 = distinct !{!252, !253, !"_ZN4core3fmt9Formatter3pad28_$u7b$$u7b$closure$u7d$$u7d$17h75adbff73efb2ddcE: argument 0"}
!253 = distinct !{!253, !"_ZN4core3fmt9Formatter3pad28_$u7b$$u7b$closure$u7d$$u7d$17h75adbff73efb2ddcE"}
!254 = !{!255, !257, !259}
!255 = distinct !{!255, !256, !"_ZN4core3fmt9Formatter9write_str17h201d0b49adfd1599E: argument 0"}
!256 = distinct !{!256, !"_ZN4core3fmt9Formatter9write_str17h201d0b49adfd1599E"}
!257 = distinct !{!257, !258, !"_ZN4core3fmt8builders15debug_tuple_new17hcb6a0355b146c562E: argument 0"}
!258 = distinct !{!258, !"_ZN4core3fmt8builders15debug_tuple_new17hcb6a0355b146c562E"}
!259 = distinct !{!259, !258, !"_ZN4core3fmt8builders15debug_tuple_new17hcb6a0355b146c562E: argument 1"}
!260 = !{!257}
extern {
fn dlog(a: i32);
}
#[no_mangle]
pub extern fn run_test() {
let cols = 7;
let mut current_x_offset;
let mut prev_x_offset = -1i32;
for yi in 0..=3 {
let xi = 0;
let x_offset = if yi % 2 == 1 { 23i32 } else { 0i32 };
format!("x_offset: {}, yi: {}, cols: {}", x_offset, 42, cols); // FIXME: change 42 to `yi` and it no longer panics
current_x_offset = x_offset;
if yi % 2 == 0 && xi == 0 {
effects();
}
if yi % 2 == 1 && xi == cols-1 {
effects();
}
unsafe { dlog(1000000); }
unsafe { dlog(prev_x_offset); }
unsafe { dlog(current_x_offset); }
if prev_x_offset == current_x_offset {
std::process::abort();
}
prev_x_offset = current_x_offset;
}
}
#[inline(never)]
fn effects() {
format!("{:?}", ());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment