1715 lines
55 KiB
Plaintext
1715 lines
55 KiB
Plaintext
|
|
@__SxFoo_state_ivar = internal global ptr null
|
|
@__SxFoo_class = internal global ptr null
|
|
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
|
|
@__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00"
|
|
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
|
|
@str.164 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
|
|
@str.165 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
|
@str.166 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.167 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
|
@str.168 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
|
|
@str.169 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
|
|
@str.170 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
|
@str.171 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.172 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
|
@str.173 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
|
@str.174 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.175 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
|
@str.176 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
|
|
@str.177 = private unnamed_addr constant [3 x i8] c", \00", align 1
|
|
@str.178 = private unnamed_addr constant [5 x i8] c")); \00", align 1
|
|
@str.179 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
|
|
@str.180 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
@str.181 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
|
|
@OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00"
|
|
@OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00"
|
|
@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00"
|
|
@OBJC_CLASS_NAME_.182 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
|
|
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00"
|
|
@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00"
|
|
@OBJC_METH_VAR_NAME_.183 = private unnamed_addr constant [8 x i8] c"dealloc\00"
|
|
@OBJC_METH_VAR_TYPE_.184 = private unnamed_addr constant [4 x i8] c"v@:\00"
|
|
@OBJC_METH_VAR_NAME_.185 = private unnamed_addr constant [6 x i8] c"alloc\00"
|
|
@OBJC_METH_VAR_TYPE_.186 = private unnamed_addr constant [4 x i8] c"@@:\00"
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @out(ptr) #0
|
|
|
|
declare ptr @malloc(i64)
|
|
|
|
declare void @free(ptr)
|
|
|
|
declare ptr @memcpy(ptr, ptr, i64)
|
|
|
|
declare ptr @memset(ptr, i32, i64)
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @mem_realloc(ptr, ptr, ptr, i64, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define internal ptr @CAllocator.alloc_bytes(ptr %0, ptr %1, i64 %2) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %2, ptr %allocaN, align 8
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%call = call ptr @malloc(i64 %load)
|
|
ret ptr %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @CAllocator.dealloc_bytes(ptr %0, ptr %1, ptr %2) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%allocaN = alloca ptr, align 8
|
|
store ptr %2, ptr %allocaN, align 8
|
|
%load = load ptr, ptr %allocaN, align 8
|
|
call void @free(ptr %load)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @GPA.init(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @GPA.alloc_bytes(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @GPA.dealloc_bytes(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.add_chunk(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.init(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.reset(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.deinit(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @Arena.alloc_bytes(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.dealloc_bytes(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.init(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.reset(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BufAlloc.alloc_bytes(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.dealloc_bytes(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.init(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @TrackingAllocator.leak_count(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.report(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @TrackingAllocator.alloc_bytes(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.dealloc_bytes(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @cstring(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%add = add i64 %load, 1
|
|
%loadN = load { { ptr, ptr, ptr }, ptr }, ptr %0, align 8
|
|
%sg = extractvalue { { ptr, ptr, ptr }, ptr } %loadN, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 1
|
|
%icall = call ptr %sgN(ptr %0, ptr %sgN, i64 %add)
|
|
%allocaN = alloca ptr, align 8
|
|
store ptr %icall, ptr %allocaN, align 8
|
|
%loadN = load ptr, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%2 = call ptr @memset(ptr %loadN, i32 0, i64 %addN)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } undef, ptr %allocaN, align 8
|
|
%loadN = load ptr, ptr %allocaN, align 8
|
|
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
|
%pti = ptrtoint ptr %loadN to i64
|
|
store i64 %pti, ptr %gep, align 8
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
|
store i64 %loadN, ptr %gepN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @int_to_string(ptr %0, i64 %1) #0 {
|
|
entry:
|
|
%alloca = alloca i64, align 8
|
|
%allocaN = alloca i1, align 1
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %1, ptr %alloca, align 8
|
|
%load = load i64, ptr %alloca, align 8
|
|
%icmp = icmp eq i64 %load, 0
|
|
br i1 %icmp, label %if.then.14, label %if.merge.15
|
|
|
|
if.then.14: ; preds = %entry
|
|
ret { ptr, i64 } { ptr @str, i64 1 }
|
|
|
|
if.merge.15: ; preds = %entry
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
%icmpN = icmp slt i64 %loadN, 0
|
|
store i1 %icmpN, ptr %allocaN, align 1
|
|
%call = call { ptr, i64 } @cstring(ptr %0, i64 20)
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
store i64 19, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %alloca, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %while.hdr.16
|
|
|
|
while.hdr.16: ; preds = %if.merge.20, %if.merge.15
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp ne i64 %loadN, 0
|
|
br i1 %icmpN, label %while.body.17, label %while.exit.18
|
|
|
|
while.body.17: ; preds = %while.hdr.16
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%srem = srem i64 %loadN, 10
|
|
store i64 %srem, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp slt i64 %loadN, 0
|
|
br i1 %icmpN, label %if.then.19, label %if.merge.20
|
|
|
|
while.exit.18: ; preds = %while.hdr.16
|
|
%loadN = load i1, ptr %allocaN, align 1
|
|
br i1 %loadN, label %if.then.21, label %if.merge.22
|
|
|
|
if.then.19: ; preds = %while.body.17
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 0, %loadN
|
|
store i64 %sub, ptr %allocaN, align 8
|
|
br label %if.merge.20
|
|
|
|
if.merge.20: ; preds = %if.then.19, %while.body.17
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 48
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr = getelementptr i8, ptr %igp.data, i64 %loadN
|
|
%trunc = trunc i64 %add to i8
|
|
store i8 %trunc, ptr %igp.ptr, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sdiv = sdiv i64 %loadN, 10
|
|
store i64 %sdiv, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, 1
|
|
store i64 %subN, ptr %allocaN, align 8
|
|
br label %while.hdr.16
|
|
|
|
if.then.21: ; preds = %while.exit.18
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data24 = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr25 = getelementptr i8, ptr %igp.data24, i64 %loadN
|
|
store i8 45, ptr %igp.ptr25, align 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, 1
|
|
store i64 %subN, ptr %allocaN, align 8
|
|
br label %if.merge.22
|
|
|
|
if.merge.22: ; preds = %if.then.21, %while.exit.18
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 19, %loadN
|
|
%callN = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 %addN, i64 %subN)
|
|
ret { ptr, i64 } %callN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @uint_to_string(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @bool_to_string(ptr, i1) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @float_to_string(ptr, double) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @hex_group(ptr, ptr, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare [4 x i64] @decompose_u16x4(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @int_to_hex_string(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @concat(ptr %0, { ptr, i64 } %1, { ptr, i64 } %2) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %2, ptr %allocaN, align 8
|
|
%load = load { ptr, i64 }, ptr %alloca, align 8
|
|
%len = extractvalue { ptr, i64 } %load, 1
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %len, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %lenN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, %loadN
|
|
%call = call { ptr, i64 } @cstring(ptr %0, i64 %add)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%dptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%dptrN = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call ptr @memcpy(ptr %dptr, ptr %dptrN, i64 %loadN)
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr = getelementptr i8, ptr %igp.data, i64 %loadN
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%dptrN = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call ptr @memcpy(ptr %igp.ptr, ptr %dptrN, i64 %loadN)
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @substr(ptr %0, { ptr, i64 } %1, i64 %2, i64 %3) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %2, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 %3, ptr %allocaN, align 8
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @cstring(ptr %0, i64 %load)
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%dptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%igp.ptr = getelementptr i8, ptr %igp.data, i64 %loadN
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call ptr @memcpy(ptr %dptr, ptr %igp.ptr, i64 %loadN)
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @path_join(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @any_to_string(ptr, [2 x i64]) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @build_format(ptr %0, { ptr, i64 } %1) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } %1, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.164, i64 14 }, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
%allocaN = alloca i64, align 8
|
|
store i64 0, ptr %allocaN, align 8
|
|
br label %while.hdr.0
|
|
|
|
while.hdr.0: ; preds = %if.merge.5, %entry
|
|
%load = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%len = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmp = icmp slt i64 %load, %len
|
|
br i1 %icmp, label %while.body.1, label %while.exit.2
|
|
|
|
while.body.1: ; preds = %while.hdr.0
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
|
%ig.val = load i8, ptr %ig.ptr, align 1
|
|
%cmp.ext = zext i8 %ig.val to i64
|
|
%icmpN = icmp eq i64 %cmp.ext, 123
|
|
br i1 %icmpN, label %if.then.3, label %if.else.4
|
|
|
|
while.exit.2: ; preds = %while.hdr.0
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmpN = icmp slt i64 %loadN, %lenN
|
|
br i1 %icmpN, label %if.then.35, label %if.merge.36
|
|
|
|
if.then.3: ; preds = %while.body.1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%add = add i64 %loadN, 1
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmpN = icmp slt i64 %add, %lenN
|
|
br i1 %icmpN, label %if.then.6, label %if.else.7
|
|
|
|
if.else.4: ; preds = %while.body.1
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%ig.data19 = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr20 = getelementptr i8, ptr %ig.data19, i64 %loadN
|
|
%ig.val21 = load i8, ptr %ig.ptr20, align 1
|
|
%cmp.ext22 = zext i8 %ig.val21 to i64
|
|
%icmpN = icmp eq i64 %cmp.ext22, 125
|
|
br i1 %icmpN, label %if.then.26, label %if.else.27
|
|
|
|
if.merge.5: ; preds = %if.merge.28, %if.merge.8
|
|
br label %while.hdr.0
|
|
|
|
if.then.6: ; preds = %if.then.3
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%ig.data27 = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr28 = getelementptr i8, ptr %ig.data27, i64 %addN
|
|
%ig.val29 = load i8, ptr %ig.ptr28, align 1
|
|
%cmp.ext30 = zext i8 %ig.val29 to i64
|
|
%icmpN = icmp eq i64 %cmp.ext30, 125
|
|
br i1 %icmpN, label %if.then.9, label %if.else.10
|
|
|
|
if.else.7: ; preds = %if.then.3
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.8
|
|
|
|
if.merge.8: ; preds = %if.merge.11, %if.else.7
|
|
br label %if.merge.5
|
|
|
|
if.then.9: ; preds = %if.then.6
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%icmpN = icmp sgt i64 %loadN, %loadN
|
|
br i1 %icmpN, label %if.then.12, label %if.merge.13
|
|
|
|
if.else.10: ; preds = %if.then.6
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%ig.data40 = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr41 = getelementptr i8, ptr %ig.data40, i64 %addN
|
|
%ig.val42 = load i8, ptr %ig.ptr41, align 1
|
|
%cmp.ext43 = zext i8 %ig.val42 to i64
|
|
%icmpN = icmp eq i64 %cmp.ext43, 123
|
|
br i1 %icmpN, label %if.then.23, label %if.else.24
|
|
|
|
if.merge.11: ; preds = %if.merge.25, %if.merge.13
|
|
br label %if.merge.8
|
|
|
|
if.then.12: ; preds = %if.then.9
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, i64 36 })
|
|
store { ptr, i64 } %call, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%sub = sub i64 %loadN, %loadN
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %sub)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.167, i64 4 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.13
|
|
|
|
if.merge.13: ; preds = %if.then.12, %if.then.9
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, i64 43 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, i64 5 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 2
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %if.merge.11
|
|
|
|
if.then.23: ; preds = %if.else.10
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, i64 36 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.171, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, %loadN
|
|
%addN = add i64 %subN, 1
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %addN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, i64 4 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 2
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %if.merge.25
|
|
|
|
if.else.24: ; preds = %if.else.10
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.25
|
|
|
|
if.merge.25: ; preds = %if.else.24, %if.then.23
|
|
br label %if.merge.11
|
|
|
|
if.then.26: ; preds = %if.else.4
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%icmpN = icmp slt i64 %addN, %lenN
|
|
br i1 %icmpN, label %if.then.29, label %if.else.30
|
|
|
|
if.else.27: ; preds = %if.else.4
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.28
|
|
|
|
if.merge.28: ; preds = %if.merge.31, %if.else.27
|
|
br label %if.merge.5
|
|
|
|
if.then.29: ; preds = %if.then.26
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
%ig.data104 = extractvalue { ptr, i64 } %loadN, 0
|
|
%ig.ptr105 = getelementptr i8, ptr %ig.data104, i64 %addN
|
|
%ig.val106 = load i8, ptr %ig.ptr105, align 1
|
|
%cmp.ext107 = zext i8 %ig.val106 to i64
|
|
%icmpN = icmp eq i64 %cmp.ext107, 125
|
|
br i1 %icmpN, label %if.then.32, label %if.else.33
|
|
|
|
if.else.30: ; preds = %if.then.26
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.31
|
|
|
|
if.merge.31: ; preds = %if.merge.34, %if.else.30
|
|
br label %if.merge.28
|
|
|
|
if.then.32: ; preds = %if.then.29
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, i64 36 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %loadN, %loadN
|
|
%addN = add i64 %subN, 1
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %addN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, i64 4 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 2
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
store i64 %loadN, ptr %allocaN, align 8
|
|
br label %if.merge.34
|
|
|
|
if.else.33: ; preds = %if.then.29
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%addN = add i64 %loadN, 1
|
|
store i64 %addN, ptr %allocaN, align 8
|
|
br label %if.merge.34
|
|
|
|
if.merge.34: ; preds = %if.else.33, %if.then.32
|
|
br label %if.merge.31
|
|
|
|
if.then.35: ; preds = %while.exit.2
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, i64 36 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %loadN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.177, i64 2 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%lenN = extractvalue { ptr, i64 } %loadN, 1
|
|
%loadN = load i64, ptr %allocaN, align 8
|
|
%subN = sub i64 %lenN, %loadN
|
|
%callN = call { ptr, i64 } @int_to_string(ptr %0, i64 %subN)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.178, i64 4 })
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
br label %if.merge.36
|
|
|
|
if.merge.36: ; preds = %if.then.35, %while.exit.2
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
ret { ptr, i64 } %loadN
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @mem_realloc.1(ptr, ptr, ptr, i64, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @CAllocator.alloc_bytes.2(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @CAllocator.dealloc_bytes.3(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @GPA.init.4(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @GPA.alloc_bytes.5(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @GPA.dealloc_bytes.6(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.add_chunk.7(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.init.8(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.reset.9(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.deinit.10(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @Arena.alloc_bytes.11(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.dealloc_bytes.12(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.init.13(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.reset.14(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BufAlloc.alloc_bytes.15(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.dealloc_bytes.16(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.init.17(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @TrackingAllocator.leak_count.18(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.report.19(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @TrackingAllocator.alloc_bytes.20(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.dealloc_bytes.21(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @escape(ptr, ptr) #0
|
|
|
|
declare i64 @write(i32, ptr, i64)
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @log_emit(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @open(ptr, i32, ...) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @close(i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @read(i32, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @lseek(i32, i64, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @unlink(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @rmdir(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @mkdir(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @access(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @chmod(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @rename(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @File.is_valid(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @File.close(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.read(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.write(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.seek(ptr, ptr, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @mode_to_flags(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @open_file(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @write_file(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @append_file(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @exists(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @delete_file(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @delete_dir(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @create_dir(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @set_mode(ptr, ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @move(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @create_dir_all(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @copy_file(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @basename(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @dirname(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @spaces(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @sx_trace_len() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @sx_trace_truncated() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @sx_trace_frame_at(i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @to_string(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @print_current(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @print_interpreter_frames(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @popen(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @pclose(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @fread(ptr, i64, i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @feof(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @getenv(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @strlen(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @system(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @_exit(i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @exit(ptr, i8, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @assert(ptr, i1, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @socket(i32, i32, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @bind(i32, ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @listen(i32, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @accept(i32, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @read.22(i32, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @close.23(i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i16 @htons(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @mem_realloc.24(ptr, ptr, ptr, i64, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @CAllocator.alloc_bytes.25(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @CAllocator.dealloc_bytes.26(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @GPA.init.27(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @GPA.alloc_bytes.28(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @GPA.dealloc_bytes.29(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.add_chunk.30(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.init.31(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.reset.32(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.deinit.33(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @Arena.alloc_bytes.34(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Arena.dealloc_bytes.35(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.init.36(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.reset.37(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BufAlloc.alloc_bytes.38(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BufAlloc.dealloc_bytes.39(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.init.40(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @TrackingAllocator.leak_count.41(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.report.42(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @TrackingAllocator.alloc_bytes.43(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @TrackingAllocator.dealloc_bytes.44(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @open.45(ptr, i32, ...) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @close.46(i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @read.47(i32, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @lseek.48(i32, i64, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @unlink.49(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @rmdir.50(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @mkdir.51(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @access.52(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @chmod.53(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @rename.54(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @File.is_valid.55(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @File.close.56(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.read.57(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.write.58(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.seek.59(ptr, ptr, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @mode_to_flags.60(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @open_file.61(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @read_file.62(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @write_file.63(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @append_file.64(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @exists.65(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @delete_file.66(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @delete_dir.67(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @create_dir.68(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @set_mode.69(ptr, ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @move.70(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @create_dir_all.71(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @copy_file.72(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @basename.73(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @dirname.74(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Array.add(ptr, ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Array.deinit(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Object.deinit(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @Sink.put(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @Sink.flush(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i8 @hex_digit(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @write_u_escape(ptr, i8, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @write_string(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @write_int(ptr, i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @write_value(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @write_array(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @write_object(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare [2 x i64] @hex_value(ptr, i8) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @encode_utf8(ptr, i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Parser.skip_ws(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_link_flag(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_framework(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_output_path(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.asset_dir_count(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.binary_path(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.bundle_path(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.bundle_id(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.codesign_identity(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.provisioning_profile(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.target_triple(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_macos(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios_device(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios_simulator(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_android(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.framework_count(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.framework_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.framework_path_count(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.manifest_path(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.keystore_path(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.jni_main_count(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @build_options() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @spaces.75(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @sx_trace_len.76() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @sx_trace_truncated.77() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @sx_trace_frame_at.78(i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @to_string.79(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @print_current.80(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @print_interpreter_frames.81(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @popen.82(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @pclose.83(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @fread.84(ptr, i64, i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @feof.85(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @getenv.86(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @strlen.87(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @system.88(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @run.89(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @env.90(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @find_executable.91(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @_exit.92(i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @exit.93(ptr, i8, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @assert.94(ptr, i1, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @_NSGetArgv() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @_NSGetArgc() #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @exit_ok(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @exit_usage(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @os_argc(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @os_args(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @is_long_flag(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @parse.95(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @open.96(ptr, i32, ...) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @close.97(i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @read.98(i32, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @lseek.99(i32, i64, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @unlink.100(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @rmdir.101(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @mkdir.102(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @access.103(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @chmod.104(ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @rename.105(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @File.is_valid.106(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @File.close.107(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.read.108(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.write.109(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @File.seek.110(ptr, ptr, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i32 @mode_to_flags.111(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @open_file.112(ptr, ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @read_file.113(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @write_file.114(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @append_file.115(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @exists.116(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @delete_file.117(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @delete_dir.118(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @create_dir.119(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @set_mode.120(ptr, ptr, i32) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @move.121(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @create_dir_all.122(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @copy_file.123(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @basename.124(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @dirname.125(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @rotr(ptr, i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @big_sigma0(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @big_sigma1(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @small_sigma0(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @small_sigma1(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Sha256.process_block(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @Sha256.update(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare [64 x i8] @Sha256.final(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i8 @nibble_hex(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare [64 x i8] @sha256_hex(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @assert.126(ptr, i1) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_link_flag.127(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_framework.128(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_output_path.129(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_wasm_shell.130(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.add_asset_dir.131(i64, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.asset_dir_count.132(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.asset_dir_src_at.133(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.asset_dir_dest_at.134(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_post_link_callback.135(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_post_link_module.136(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.binary_path.137(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_bundle_path.138(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_bundle_id.139(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_codesign_identity.140(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_provisioning_profile.141(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.bundle_path.142(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.bundle_id.143(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.codesign_identity.144(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.provisioning_profile.145(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.target_triple.146(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_macos.147(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios.148(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios_device.149(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_ios_simulator.150(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i1 @BuildOptions.is_android.151(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.framework_count.152(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.framework_at.153(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.framework_path_count.154(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.framework_path_at.155(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_manifest_path.156(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @BuildOptions.set_keystore_path.157(i64, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.manifest_path.158(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.keystore_path.159(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @BuildOptions.jni_main_count.160(i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.jni_main_foreign_path_at.161(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @BuildOptions.jni_main_java_source_at.162(i64, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare i64 @build_options.163() #0
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @SxFoo.bump(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%alloca = alloca ptr, align 8
|
|
store ptr %1, ptr %alloca, align 8
|
|
%load = load ptr, ptr %alloca, align 8
|
|
%loadN = load ptr, ptr @__SxFoo_state_ivar, align 8
|
|
%call = call ptr @object_getIvar(ptr %load, ptr %loadN)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32 }, ptr %call, i32 0, i32 1
|
|
%loadN = load i32, ptr %gep, align 4
|
|
%add = add i32 %loadN, 1
|
|
store i32 %add, ptr %gep, align 4
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define i32 @main() #0 {
|
|
entry:
|
|
call void @print__ct_sfeff9eeccd48b824__pack(ptr @__sx_default_context)
|
|
call void @__sx_objc_defined_class_init()
|
|
ret i32 0
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal ptr @__thunk_CAllocator_Allocator_alloc_bytes(ptr %0, ptr %1, i64 %2) #0 {
|
|
entry:
|
|
%call = call ptr @CAllocator.alloc_bytes(ptr %0, ptr %1, i64 %2)
|
|
ret ptr %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @__thunk_CAllocator_Allocator_dealloc_bytes(ptr %0, ptr %1, ptr %2) #0 {
|
|
entry:
|
|
call void @CAllocator.dealloc_bytes(ptr %0, ptr %1, ptr %2)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal void @print__ct_sfeff9eeccd48b824__pack(ptr %0) #0 {
|
|
entry:
|
|
%alloca = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.179, i64 9 }, ptr %alloca, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
|
|
store ptr null, ptr %gep, align 8
|
|
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
|
|
store i64 0, ptr %gepN, align 8
|
|
%allocaN = alloca { ptr, i64 }, align 8
|
|
store { ptr, i64 } { ptr @str.180, i64 0 }, ptr %allocaN, align 8
|
|
%load = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %alloca, align 8
|
|
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 9)
|
|
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %load, { ptr, i64 } %call)
|
|
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
|
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
|
%str.ptr = extractvalue { ptr, i64 } %loadN, 0
|
|
%str.len = extractvalue { ptr, i64 } %loadN, 1
|
|
%1 = call i64 @write(i32 1, ptr %str.ptr, i64 %str.len)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
|
|
entry:
|
|
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.181, i64 9 })
|
|
ret { ptr, i64 } %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @object_getIvar(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define ptr @__SxFoo_alloc_imp(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%call = call ptr @class_createInstance(ptr %0, i64 0)
|
|
%load = load { { ptr, ptr, ptr }, ptr }, ptr @__sx_default_context, align 8
|
|
%sg = extractvalue { { ptr, ptr, ptr }, ptr } %load, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %sg, 1
|
|
%icall = call ptr %sgN(ptr @__sx_default_context, ptr %sgN, i64 32)
|
|
%callN = call ptr @memset(ptr %icall, i32 0, i64 32)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32 }, ptr %icall, i32 0, i32 0
|
|
store { ptr, ptr, ptr } %sg, ptr %gep, align 8
|
|
%loadN = load ptr, ptr @__SxFoo_state_ivar, align 8
|
|
call void @object_setIvar(ptr %call, ptr %loadN, ptr %icall)
|
|
ret ptr %call
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @class_createInstance(ptr, i64) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @object_setIvar(ptr, ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define void @__SxFoo_dealloc_imp(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
%load = load ptr, ptr @__SxFoo_state_ivar, align 8
|
|
%call = call ptr @object_getIvar(ptr %0, ptr %load)
|
|
%gep = getelementptr inbounds { { ptr, ptr, ptr }, i32 }, ptr %call, i32 0, i32 0
|
|
%loadN = load { ptr, ptr, ptr }, ptr %gep, align 8
|
|
%sg = extractvalue { ptr, ptr, ptr } %loadN, 0
|
|
%sgN = extractvalue { ptr, ptr, ptr } %loadN, 2
|
|
call void %sgN(ptr @__sx_default_context, ptr %sg, ptr %call)
|
|
call void @object_setIvar(ptr %0, ptr %load, ptr null)
|
|
%alloca = alloca { ptr, ptr }, align 8
|
|
%gepN = getelementptr inbounds { ptr, ptr }, ptr %alloca, i32 0, i32 0
|
|
store ptr %0, ptr %gepN, align 8
|
|
%loadN = load ptr, ptr @__SxFoo_class, align 8
|
|
%gepN = getelementptr inbounds { ptr, ptr }, ptr %alloca, i32 0, i32 1
|
|
store ptr %loadN, ptr %gepN, align 8
|
|
%callN = call ptr @sel_registerName(ptr @__sx_objc_cstr_dealloc)
|
|
call void @objc_msgSendSuper2(ptr %alloca, ptr %callN)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare ptr @sel_registerName(ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @objc_msgSendSuper2(ptr, ptr) #0
|
|
|
|
; Function Attrs: nounwind
|
|
define void @__SxFoo_bump_imp(ptr %0, ptr %1) #0 {
|
|
entry:
|
|
call void @SxFoo.bump(ptr @__sx_default_context, ptr %0)
|
|
ret void
|
|
}
|
|
|
|
declare ptr @objc_getClass(ptr)
|
|
|
|
declare ptr @objc_allocateClassPair(ptr, ptr, i64)
|
|
|
|
declare i8 @class_addIvar(ptr, ptr, i64, i8, ptr)
|
|
|
|
declare i8 @class_addMethod(ptr, ptr, ptr, ptr)
|
|
|
|
declare void @objc_registerClassPair(ptr)
|
|
|
|
declare ptr @class_getInstanceVariable(ptr, ptr)
|
|
|
|
define internal void @__sx_objc_defined_class_init() {
|
|
entry:
|
|
%super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_)
|
|
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.182, i64 0)
|
|
%0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_)
|
|
%metacls = call ptr @object_getClass(ptr %cls)
|
|
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
|
|
%1 = call i8 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_)
|
|
call void @objc_registerClassPair(ptr %cls)
|
|
store ptr %cls, ptr @__SxFoo_class, align 8
|
|
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.183)
|
|
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.184)
|
|
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.185)
|
|
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.186)
|
|
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
|
|
store ptr %iv, ptr @__SxFoo_state_ivar, align 8
|
|
ret void
|
|
}
|
|
|
|
declare ptr @object_getClass(ptr)
|
|
|
|
declare ptr @objc_getProtocol(ptr)
|
|
|
|
declare i8 @class_addProtocol(ptr, ptr)
|