Skip to content

Instantly share code, notes, and snippets.

@dgryski
Last active September 1, 2021 16:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dgryski/0be7ddd4b13ad5ed2fc8bb201dee5ae9 to your computer and use it in GitHub Desktop.
Save dgryski/0be7ddd4b13ad5ed2fc8bb201dee5ae9 to your computer and use it in GitHub Desktop.
decompiled wasm and execution trace for https://github.com/tinygo-org/tinygo/issues/2041
export memory memory(initial: 2, max: 0);
global g_a:int = 65536;
table T_a:funcref(min: 12, max: 12);
data d_syncunlockofunlockedMutexinv(offset: 65536) =
"\08\00\01\00\1e\00\00\00sync: unlock of unlocked Mutexinvalid syntaxre"
"flect: call of reflect.Type. on invalid typeTreflect: call of reflect."
"Value. on invalid type/proc/self/exeout of memorypanic: runtime error:"
" index out of rangenil pointer dereferenceslice out of rangenilinvalid"
" channel stateunreachable\00\00\00\00\00\00\00Z\01\01\00\0b\00\00\00pa"
"nic: i)i)NaN+Inf-InfNaN+Inf-Inftruefalseunreachableclose of nil channe"
"lclose of closed channelclose channel during send schedule awake: r"
"un:deadlocked: no event source\00\00\00\00\0b\00\00\00\0b\00\00\00";
data d_b(offset: 66024) =
"<\03\01\00<\03\01\00\fc\01\01\00\01\00\00\00\01\00\00\00\92\00\01\00\0e"
"\00\00\00p\02\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
"\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\e8"
"\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00D\02\01\00\00\00\00\00\00"
"\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00<"
"\03\01\00";
import function runtime_fd_write(a:int, b:int, c:int, d:int):int;
import function runtime_args_sizes_get(a:int, b:int):int;
import function runtime_args_get(a:int, b:int):int;
import function runtime_clock_time_get(a:int, b:long, c:int):int;
import function runtime_poll_oneoff(a:int, b:int, c:int, d:int):int;
function wasm_call_ctors() {
}
function strlen(a:ubyte_ptr):int {
var c:int;
var d:int;
var b:int = a;
if (eqz(a & 3)) goto B_c;
if (a[0]) goto B_d;
return a - a;
label B_d:
b = a + 1;
loop L_e {
if (eqz(b & 3)) goto B_c;
c = b[0]:ubyte;
d = b + 1;
b = d;
if (eqz(c)) goto B_b;
continue L_e;
}
label B_c:
b = b + -4;
loop L_f {
b = b + 4;
c = b[0]:int;
if (eqz(((c ^ -1) & c + -16843009) & -2139062144)) continue L_f;
}
if (c & 255) goto B_g;
return b - a;
label B_g:
loop L_h {
c = b[1]:ubyte;
d = b + 1;
b = d;
if (c) continue L_h;
goto B_a;
}
label B_b:
d = d + -1;
label B_a:
return d - a;
}
function memcpy(a:int, b:int, c:int):int {
var d:int;
var e:int;
var f:int;
var h:int;
var i:int;
var g:int;
if (eqz(c)) goto B_b;
if (eqz(b & 3)) goto B_b;
d = a;
loop L_c {
d[0]:byte = b[0]:ubyte;
e = c + -1;
d = d + 1;
b = b + 1;
if (c == 1) goto B_a;
c = e;
if (b & 3) continue L_c;
goto B_a;
}
label B_b:
e = c;
d = a;
label B_a:
c = d & 3;
if (c) goto B_e;
if (e < 16) goto B_f;
loop L_g {
d[0]:int = b[0]:int;
(d + 4)[0]:int = (b + 4)[0]:int;
(d + 8)[0]:int = (b + 8)[0]:int;
(d + 12)[0]:int = (b + 12)[0]:int;
d = d + 16;
b = b + 16;
e = e + -16;
if (e > 15) continue L_g;
}
label B_f:
if (eqz(e & 8)) goto B_h;
d[0]:long@4 = b[0]:long@4;
b = b + 8;
d = d + 8;
label B_h:
if (eqz(e & 4)) goto B_i;
d[0]:int = b[0]:int;
b = b + 4;
d = d + 4;
label B_i:
if (eqz(e & 2)) goto B_j;
d[0]:byte = b[0]:ubyte;
d[1]:byte = b[1]:ubyte;
d = d + 2;
b = b + 2;
label B_j:
if (eqz(e & 1)) goto B_d;
d[0]:byte = b[0]:ubyte;
return a;
label B_e:
if (e < 32) goto B_k;
br_table[B_n, B_m, B_l, ..B_k](c + -1)
label B_n:
d[1]:byte = b[1]:ubyte;
d[0]:byte = (f = b[0]:int);
d[2]:byte = b[2]:ubyte;
e = e + -3;
g = d + 3;
c = 0;
loop L_o {
d = g + c;
d[0]:int = (i = ((h = b + c) + 4)[0]:int) << 8 | f >> 24;
(d + 4)[0]:int = (f = (h + 8)[0]:int) << 8 | i >> 24;
(d + 8)[0]:int = (i = (h + 12)[0]:int) << 8 | f >> 24;
(d + 12)[0]:int = (f = (h + 16)[0]:int) << 8 | i >> 24;
c = c + 16;
e = e + -16;
if (e > 16) continue L_o;
}
d = g + c;
b = b + c + 3;
goto B_k;
label B_m:
d[0]:byte = (f = b[0]:int);
d[1]:byte = b[1]:ubyte;
e = e + -2;
g = d + 2;
c = 0;
loop L_p {
d = g + c;
d[0]:int = (i = ((h = b + c) + 4)[0]:int) << 16 | f >> 16;
(d + 4)[0]:int = (f = (h + 8)[0]:int) << 16 | i >> 16;
(d + 8)[0]:int = (i = (h + 12)[0]:int) << 16 | f >> 16;
(d + 12)[0]:int = (f = (h + 16)[0]:int) << 16 | i >> 16;
c = c + 16;
e = e + -16;
if (e > 17) continue L_p;
}
d = g + c;
b = b + c + 2;
goto B_k;
label B_l:
d[0]:byte = (f = b[0]:int);
e = e + -1;
g = d + 1;
c = 0;
loop L_q {
d = g + c;
d[0]:int = (i = ((h = b + c) + 4)[0]:int) << 24 | f >> 8;
(d + 4)[0]:int = (f = (h + 8)[0]:int) << 24 | i >> 8;
(d + 8)[0]:int = (i = (h + 12)[0]:int) << 24 | f >> 8;
(d + 12)[0]:int = (f = (h + 16)[0]:int) << 24 | i >> 8;
c = c + 16;
e = e + -16;
if (e > 18) continue L_q;
}
d = g + c;
b = b + c + 1;
label B_k:
if (eqz(e & 16)) goto B_r;
d[0]:short@1 = b[0]:ushort@1;
d[2]:byte = b[2]:ubyte;
d[3]:byte = b[3]:ubyte;
d[4]:byte = b[4]:ubyte;
d[5]:byte = b[5]:ubyte;
d[6]:byte = b[6]:ubyte;
d[7]:byte = b[7]:ubyte;
d[8]:byte = b[8]:ubyte;
d[9]:byte = b[9]:ubyte;
d[10]:byte = b[10]:ubyte;
d[11]:byte = b[11]:ubyte;
d[12]:byte = b[12]:ubyte;
d[13]:byte = b[13]:ubyte;
d[14]:byte = b[14]:ubyte;
d[15]:byte = b[15]:ubyte;
d = d + 16;
b = b + 16;
label B_r:
if (eqz(e & 8)) goto B_s;
d[0]:byte = b[0]:ubyte;
d[1]:byte = b[1]:ubyte;
d[2]:byte = b[2]:ubyte;
d[3]:byte = b[3]:ubyte;
d[4]:byte = b[4]:ubyte;
d[5]:byte = b[5]:ubyte;
d[6]:byte = b[6]:ubyte;
d[7]:byte = b[7]:ubyte;
d = d + 8;
b = b + 8;
label B_s:
if (eqz(e & 4)) goto B_t;
d[0]:byte = b[0]:ubyte;
d[1]:byte = b[1]:ubyte;
d[2]:byte = b[2]:ubyte;
d[3]:byte = b[3]:ubyte;
d = d + 4;
b = b + 4;
label B_t:
if (eqz(e & 2)) goto B_u;
d[0]:byte = b[0]:ubyte;
d[1]:byte = b[1]:ubyte;
d = d + 2;
b = b + 2;
label B_u:
if (eqz(e & 1)) goto B_d;
d[0]:byte = b[0]:ubyte;
label B_d:
return a;
}
function memset(a:{ a:byte, b:byte, c:byte, d:byte }, b:long_ptr, c:int):int {
var e:int;
var f:int;
if (eqz(c)) goto B_a;
a.a = b;
var d:{ a:int, b:int, c:int, d:int, e:int, f:int, g:int } = c + a;
(d + -1)[0]:byte = b;
if (c < 3) goto B_a;
a.c = b;
a.b = b;
(d + -3)[0]:byte = b;
(d + -2)[0]:byte = b;
if (c < 7) goto B_a;
a.d = b;
(d + -4)[0]:byte = b;
if (c < 9) goto B_a;
d = a + (e = 0 - a & 3);
d.a = (b = (b & 255) * 16843009);
c = d + (e = c - e & -4);
(c + -4)[0]:int = b;
if (e < 9) goto B_a;
d.c = b;
d.b = b;
(c + -8)[0]:int = b;
(c + -12)[0]:int = b;
if (e < 25) goto B_a;
d.g = b;
d.f = b;
d.e = b;
d.d = b;
(c + -16)[0]:int = b;
(c + -20)[0]:int = b;
(c + -24)[0]:int = b;
(c + -28)[0]:int = b;
c = e - (f = (d & 4) | 24);
if (c < 32) goto B_a;
var g:long = i64_extend_i32_u(b);
g = g << 32L | g;
b = d + f;
loop L_b {
b[0] = g;
(b + 24)[0]:long = g;
(b + 16)[0]:long = g;
(b + 8)[0]:long = g;
b = b + 32;
c = c + -32;
if (c > 31) continue L_b;
}
label B_a:
return a;
}
function runtime_interrupt_Disable(a:int, b:int):int {
return 0
}
function runtime_interrupt_Restore(a:int, b:int, c:int) {
}
function Pop(a:int_ptr, b:int, c:int):int {
var e:int_ptr;
var d:int = runtime_interrupt_Disable(a, a);
if (eqz(a)) goto B_l;
if (eqz(a)) goto B_k;
e = a[0];
if (e) goto B_m;
runtime_interrupt_Restore(d, a, a);
return 0;
label B_m:
if (eqz(a)) goto B_a;
if (eqz(e)) goto B_j;
if (eqz(e)) goto B_i;
if (eqz(a)) goto B_h;
a[0] = e[0];
if (eqz(a)) goto B_g;
var f:int_ptr = a + 4;
if (eqz(f)) goto B_f;
if (f[0] != e) goto B_n;
if (eqz(a)) goto B_e;
a = a + 4;
if (eqz(a)) goto B_d;
a[0] = 0;
label B_n:
if (eqz(e)) goto B_c;
if (eqz(e)) goto B_b;
e[0] = 0;
runtime_interrupt_Restore(d, a, a);
return e;
label B_l:
runtime_nilPanic(a, 0);
unreachable;
label B_k:
runtime_nilPanic(a, 0);
unreachable;
label B_j:
runtime_nilPanic(a, 0);
unreachable;
label B_i:
runtime_nilPanic(a, 0);
unreachable;
label B_h:
runtime_nilPanic(a, 0);
unreachable;
label B_g:
runtime_nilPanic(a, 0);
unreachable;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
return unreachable;
}
function runtime_nilPanic(a:int, b:int) {
var c:int;
runtime_runtimePanic(65749, 23, c, c);
}
function Push(a:int_ptr, b:int_ptr, c:int, d:int) {
var e:int = runtime_interrupt_Disable(a, a);
if (eqz(a)) goto B_n;
var f:int_ptr = a + 4;
if (eqz(f)) goto B_m;
if (eqz(f[0])) goto B_o;
if (eqz(a)) goto B_l;
f = a + 4;
if (eqz(f)) goto B_k;
f = f[0];
if (eqz(f)) goto B_j;
if (eqz(f)) goto B_i;
f[0] = b;
label B_o:
if (eqz(a)) goto B_h;
f = a + 4;
if (eqz(f)) goto B_g;
f[0] = b;
if (eqz(b)) goto B_f;
if (eqz(b)) goto B_e;
b[0] = 0;
if (eqz(a)) goto B_d;
if (eqz(a)) goto B_c;
if (a[0]) goto B_p;
if (eqz(a)) goto B_b;
if (eqz(a)) goto B_a;
a[0] = b;
label B_p:
runtime_interrupt_Restore(e, a, a);
return ;
label B_n:
runtime_nilPanic(a, 0);
unreachable;
label B_m:
runtime_nilPanic(a, 0);
unreachable;
label B_l:
runtime_nilPanic(a, 0);
unreachable;
label B_k:
runtime_nilPanic(a, 0);
unreachable;
label B_j:
runtime_nilPanic(a, 0);
unreachable;
label B_i:
runtime_nilPanic(a, 0);
unreachable;
label B_h:
runtime_nilPanic(a, 0);
unreachable;
label B_g:
runtime_nilPanic(a, 0);
unreachable;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
unreachable;
}
function Pop_1(a:int_ptr, b:int, c:int):int {
var e:int_ptr;
var d:int = runtime_interrupt_Disable(a, a);
if (eqz(a)) goto B_h;
if (eqz(a)) goto B_g;
e = a[0];
if (eqz(e)) goto B_i;
if (eqz(a)) goto B_f;
if (eqz(e)) goto B_e;
if (eqz(e)) goto B_d;
if (eqz(a)) goto B_c;
a[0] = e[0];
if (eqz(e)) goto B_b;
if (eqz(e)) goto B_a;
e[0] = 0;
label B_i:
runtime_interrupt_Restore(d, a, a);
return e;
label B_h:
runtime_nilPanic(a, 0);
unreachable;
label B_g:
runtime_nilPanic(a, 0);
unreachable;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
return unreachable;
}
function Push_1(a:int_ptr, b:int_ptr, c:int, d:int) {
var e:int = runtime_interrupt_Disable(a, a);
if (eqz(a)) goto B_f;
if (eqz(b)) goto B_e;
if (eqz(a)) goto B_d;
if (eqz(a)) goto B_c;
if (eqz(a)) goto B_b;
var f:int = a[0];
a[0] = b;
if (eqz(b)) goto B_a;
b[0] = f;
runtime_interrupt_Restore(e, a, a);
return ;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
unreachable;
}
function Resume(a:int_ptr, b:int, c:int) {
if (eqz(a)) goto B_c;
a = a + 16;
if (eqz(a)) goto B_b;
if (eqz(a)) goto B_a;
a = a[0];
call_indirect(a, a[0]);
return ;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
unreachable;
}
function getReturnPtr(a:int_ptr, b:int, c:int):int {
if (eqz(a)) goto B_b;
a = a + 4;
if (eqz(a)) goto B_a;
return a[0];
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
return unreachable;
}
function returnCurrent(a:int, b:int, c:int) {
runtime_runqueuePushBack(a, a, a)
}
function runtime_runqueuePushBack(a:int, b:int, c:int) {
Push(66280, a, a, a)
}
function returnTo(a:int_ptr, b:int, c:int, d:int) {
if (eqz(a)) goto B_c;
var e:int = a + 16;
if (eqz(e)) goto B_b;
if (eqz(e)) goto B_a;
a[4] = b;
returnCurrent(a, a, a);
return ;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
unreachable;
}
function setReturnPtr(a:int_ptr, b:int, c:int, d:int) {
if (eqz(a)) goto B_b;
a = a + 4;
if (eqz(a)) goto B_a;
a[0] = b;
return ;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
unreachable;
}
function setState(a:int_ptr, b:int, c:int, d:int):int {
var e:int_ptr = g_a - 16;
g_a = e;
e[2] = 0;
if (eqz(a)) goto B_f;
if (a == -16) goto B_e;
e[2] = a[4];
if (eqz(a)) goto B_d;
a = a + 16;
if (eqz(a)) goto B_c;
if (eqz(a)) goto B_b;
a[0] = b;
if (eqz(e + 8)) goto B_a;
a = e[2];
g_a = e + 16;
return a;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
return unreachable;
}
function internal_task_createTask(a:int, b:int):int {
var c:int_ptr;
c = runtime_alloc(24, c, 0);
var d:int = c + 16;
if (eqz(d)) goto B_b;
if (eqz(d)) goto B_a;
c[4] = 66016;
return c;
label B_b:
runtime_nilPanic(c, 0);
unreachable;
label B_a:
runtime_nilPanic(c, 0);
return unreachable;
}
function runtime_alloc(a:int, b:int, c:int):int {
var d:int;
var e:int;
d_b[1]:int = (d = runtime_align(a, a, a)) + (e = d_b[1]:int);
loop L_b {
if (d_b[1]:int < 0[16538]:int) goto B_a;
if (runtime_growHeap(a, a) & 1) continue L_b;
runtime_runtimePanic(65696, 13, a, a);
continue L_b;
}
label B_a:
a = 0;
loop L_d {
if (a >= d) goto B_c;
(e + a)[0]:int = 0;
a = a + 4;
continue L_d;
}
label B_c:
return e;
}
function Lock(a:int, b:int, c:int) {
if (eqz(a)) goto B_e;
if (eqz(a)) goto B_d;
if (eqz(a[0]:ubyte)) goto B_f;
if (eqz(a)) goto B_c;
Push_1(a + 4, c, a, a);
return ;
label B_f:
if (eqz(a)) goto B_a;
if (eqz(a)) goto B_b;
a[0]:byte = 1;
returnCurrent(c, a, a);
return ;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
unreachable;
}
function Unlock(a:int, b:int, c:int) {
var d:int;
if (a) goto B_a;
runtime_nilPanic(a, 0);
unreachable;
label B_a:
if (eqz(a)) goto B_g;
if (eqz(a[0]:ubyte)) goto B_c;
if (eqz(a)) goto B_f;
d = Pop_1(a + 4, a, a);
if (d) goto B_b;
if (eqz(a)) goto B_e;
if (eqz(a)) goto B_d;
a[0]:byte = 0;
return ;
label B_g:
runtime_nilPanic(a, 0);
unreachable;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_panic(34, 65536, a, 0);
unreachable;
label B_b:
runtime_runqueuePushBack(d, a, a);
}
function runtime_panic(a:int, b:int, c:int, d:int) {
runtime_printstring(65840, 7, a, a);
runtime_printitf(a, b, a, a);
runtime_printnl(a, a);
runtime_abort(a, a);
}
function Do(a:int, b:int, c:int, d:int, e:int) {
var f:int;
f = runtime_alloc(48, f, f);
f[8]:int = e;
f[1]:int = 1;
f[0]:int = 2;
f[7]:int = a;
var g:int = setState(e, f, f, f);
f[5]:int = b;
f[9]:int = g;
(f + 24)[0]:int = c;
f[10]:int = 0;
Lcoro_devirt_trigger(0);
if (a) goto B_a;
runtime_nilPanic(f, 0);
unreachable;
label B_a:
Lock(a + 4, f, e);
f[44]:byte = 0;
}
function Do_destroy(a:int) {
runtime_free(a, a, a)
}
function Do_resume(a:int_ptr) {
var b:int = a[7];
if (eqz(b)) goto B_d;
a[2] = 0;
(a + 12)[0]:int = a[10];
(a + 16)[0]:int = b + 4;
a[10] = a + 8;
b = a[7];
if (eqz(b)) goto B_c;
if (eqz(b[0]:ubyte)) goto B_e;
loop L_g {
b = a[10];
if (eqz(b)) goto B_f;
a[10] = b[1]:int;
Unlock(b[2]:int, a, a);
continue L_g;
}
label B_f:
returnTo(a[8], a[9], a, a);
runtime_free(a, a, a);
return ;
label B_e:
if (eqz(b)) goto B_a;
var c:int = (a + 24)[0]:int;
var d:int = a[5];
b[0]:byte = 1;
if (eqz(c)) goto B_b;
main_main_1(d, a);
loop L_i {
b = a[10];
if (eqz(b)) goto B_h;
a[10] = b[1]:int;
Unlock(b[2]:int, a, a);
continue L_i;
}
label B_h:
returnTo(a[8], a[9], a, a);
runtime_free(a, a, a);
return ;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
unreachable;
}
function Lcoro_devirt_trigger(a:int) {
}
function Error(a:{ a:int, b:int }, b:int, c:int) {
a.b = 14;
a.a = 65574;
}
function Error_1(a:{ a:int, b:int }, b:int, c:int, d:int) {
var e:int_ptr = g_a - 16;
g_a = e;
Error(e + 8, e, e);
a.a = e[2];
a.b = e[3];
g_a = e + 16;
}
function Error_invoke(a:{ a:int, b:int }, b:int, c:int, d:int) {
var e:int_ptr = g_a - 16;
g_a = e;
Error(e + 8, c, d);
a.a = e[2];
a.b = e[3];
g_a = e + 16;
}
function String(a:{ a:int, b:int }, b:int_ptr, c:int, d:int) {
var e:int_ptr = g_a - 16;
g_a = e;
if (b) goto B_a;
runtime_nilPanic(e, 0);
unreachable;
label B_a:
String_1(e + 8, b[0], e, e);
a.a = e[2];
a.b = e[3];
g_a = e + 16;
}
function String_1(a:{ a:int, b:int }, b:int, c:int, d:int) {
a.b = 1;
a.a = 65634;
}
function Error_2(a:{ a:int, b:int }, b:{ a:int, b:int }, c:int, d:int) {
var e:{ a:int, b:int, c:int, d:int } = g_a - 16;
g_a = e;
if (eqz(b)) goto B_b;
if (eqz(b)) goto B_a;
runtime_stringConcat(e + 8, 65588, 30, b.a, b.b, e, 0);
runtime_stringConcat(e, e.c, e.d, 65618, 16, e, 0);
a.a = e.a;
a.b = e.b;
g_a = e + 16;
return ;
label B_b:
runtime_nilPanic(e, 0);
unreachable;
label B_a:
runtime_nilPanic(e, 0);
unreachable;
}
function runtime_stringConcat(a:long_ptr, b:int, c:int, d:int, e:int, f:int, g:int) {
var h:int = g_a - 32;
g_a = h;
h[2]:int = b;
h[3]:int = c;
h[4]:int = d;
h[5]:int = e;
if (eqz(h + 8 | 4)) goto B_k;
if (h[3]:int) goto B_l;
a[0] = h[2]:long;
g_a = h + 32;
return ;
label B_l:
if (h + 16 == -4) goto B_a;
if (h[5]:int) goto B_m;
a[0] = h[1]:long;
g_a = h + 32;
return ;
label B_m:
if (h + 8 == -4) goto B_b;
if (h + 16 == -4) goto B_j;
d = h[3]:int + h[5]:int;
e = runtime_alloc(d, h, h);
if (eqz(h + 8)) goto B_i;
if (h + 8 == -4) goto B_h;
e = memcpy(e, h[2]:int, h[3]:int);
if (eqz(h + 8 | 4)) goto B_g;
if (eqz(h + 16)) goto B_f;
if (h + 16 == -4) goto B_e;
memcpy(e + h[3]:int, h[4]:int, h[5]:int);
h[3]:long = 0L;
if (eqz(h + 24)) goto B_d;
h[6]:int = e;
if (eqz(h + 24 | 4)) goto B_c;
h[7]:int = d;
a[0] = h[3]:long;
g_a = h + 32;
return ;
label B_k:
runtime_nilPanic(h, 0);
unreachable;
label B_j:
runtime_nilPanic(h, 0);
unreachable;
label B_i:
runtime_nilPanic(h, 0);
unreachable;
label B_h:
runtime_nilPanic(h, 0);
unreachable;
label B_g:
runtime_nilPanic(h, 0);
unreachable;
label B_f:
runtime_nilPanic(h, 0);
unreachable;
label B_e:
runtime_nilPanic(h, 0);
unreachable;
label B_d:
runtime_nilPanic(h, 0);
unreachable;
label B_c:
runtime_nilPanic(h, 0);
unreachable;
label B_b:
runtime_nilPanic(h, 0);
unreachable;
label B_a:
runtime_nilPanic(h, 0);
unreachable;
}
function String_invoke(a:{ a:int, b:int }, b:int, c:int, d:int) {
var e:int_ptr = g_a - 16;
g_a = e;
String_1(e + 8, b, c, d);
a.a = e[2];
a.b = e[3];
g_a = e + 16;
}
function Error_3(a:{ a:int, b:int }, b:{ a:int, b:int }, c:int, d:int) {
var e:{ a:int, b:int, c:int, d:int } = g_a - 16;
g_a = e;
if (eqz(b)) goto B_b;
if (eqz(b)) goto B_a;
runtime_stringConcat(e + 8, 65635, 31, b.a, b.b, e, 0);
runtime_stringConcat(e, e.c, e.d, 65666, 16, e, 0);
a.a = e.a;
a.b = e.b;
g_a = e + 16;
return ;
label B_b:
runtime_nilPanic(e, 0);
unreachable;
label B_a:
runtime_nilPanic(e, 0);
unreachable;
}
function runtime_align(a:int, b:int, c:int):int {
return a + 3 & -4
}
function runtime_growHeap(a:int, b:int):int {
var c:int;
if (memory_grow(memory_size()) != -1) goto B_a;
return 0;
label B_a:
runtime_setHeapEnd(memory_size() << 16, c, c);
return 1;
}
function runtime_runtimePanic(a:int, b:int, c:int, d:int) {
runtime_printstring(65709, 22, a, a);
runtime_printstring(a, b, a, 0);
runtime_printnl(a, 0);
runtime_abort(a, a);
}
function runtime_setHeapEnd(a:int, b:int, c:int) {
0[16538]:int = a
}
function runtime_printstring(a:int, b:int, c:int, d:int) {
var e:int = 0;
loop L_b {
if (e >= b) goto B_a;
runtime_putchar((a + e)[0]:ubyte, e, e);
e = e + 1;
continue L_b;
}
label B_a:
}
function runtime_printnl(a:int, b:int) {
var c:int;
runtime_putchar(13, c, c);
runtime_putchar(10, c, c);
}
function runtime_abort(a:int, b:int) {
unreachable
}
function runtime_putchar(a:int, b:int, c:int) {
var d:int;
d = 0[16539]:int;
if (d <= 119) goto B_a;
runtime_lookupPanic(a, 0);
unreachable;
label B_a:
(d + 66160)[0]:byte = a;
0[16539]:int = 0[16539]:int + 1;
if ((a & 255) == 10) goto B_c;
if (0[16539]:int <= 119) goto B_b;
label B_c:
d_b[8]:int = 0[16539]:int;
runtime_fd_write(1, 66052, 1, 66288);
0[16539]:int = 0;
label B_b:
}
function runtime_lookupPanic(a:int, b:int) {
var c:int;
runtime_runtimePanic(65731, 18, c, c);
}
function runtime_init_1(a:int, b:int) {
var c:int_ptr;
var d:int;
var e:int;
var f:int;
var g:int;
var h:int;
c = runtime_alloc(4, c, 0);
runtime_args_sizes_get(c, d = runtime_alloc(4, c, 0));
if (eqz(c[0])) goto B_f;
if (0) goto B_h;
if (0) goto B_h;
e = c[0];
if (e >= 0) goto B_g;
label B_h:
runtime_slicePanic(c, 0);
unreachable;
label B_g:
f = runtime_alloc(e << 2, c, 0);
if (0) goto B_e;
if (0) goto B_e;
d = d[0]:int;
if (d <= -1) goto B_e;
g = runtime_alloc(d, c, 0);
if (eqz(e)) goto B_d;
if (eqz(d)) goto B_c;
runtime_args_get(f, g);
if (0) goto B_b;
if (0) goto B_b;
c = c[0];
if (c <= -1) goto B_b;
d = runtime_alloc(c << 3, c, 0);
d_b[4]:int = c;
d_b[3]:int = c;
d_b[2]:int = d;
g = 0;
c = 0;
h = 0;
goto B_a;
label B_f:
return ;
label B_e:
runtime_slicePanic(c, 0);
unreachable;
label B_d:
runtime_lookupPanic(c, 0);
unreachable;
label B_c:
runtime_lookupPanic(c, 0);
unreachable;
label B_b:
runtime_slicePanic(c, 0);
unreachable;
label B_a:
loop L_k {
if (c >= e) goto B_m;
if (c < e) goto B_l;
runtime_lookupPanic(c, 0);
unreachable;
label B_m:
return ;
label B_l:
var i:int = (f + g)[0]:int;
var j:int = strlen(i);
d = runtime_alloc(8, c, 0);
if (d == -4) goto B_n;
d[1]:int = j;
if (eqz(d)) goto B_j;
d[0]:int = i;
if (c >= d_b[3]:int) goto B_i;
(d_b[2]:int + h)[0]:long@4 = d[0]:long@4;
g = g + 4;
c = c + 1;
h = h + 8;
continue L_k;
label B_n:
}
runtime_nilPanic(c, 0);
unreachable;
label B_j:
runtime_nilPanic(c, 0);
unreachable;
label B_i:
runtime_lookupPanic(c, 0);
unreachable;
}
function runtime_slicePanic(a:int, b:int) {
var c:int;
runtime_runtimePanic(65772, 18, c, c);
}
function runtime_chanDebug(a:int, b:int, c:int) {
}
function runtime_printptr(a:int, b:int, c:int) {
var e:int;
if (eqz(a)) goto B_a;
runtime_putchar(48, a, a);
runtime_putchar(120, a, a);
var d:int = 0;
loop L_b {
if (d > 7) goto B_d;
e = a >> 28;
if (e > 9) goto B_e;
runtime_putchar(e | 48, a, a);
goto B_c;
label B_e:
runtime_putchar(e + 87, a, a);
goto B_c;
label B_d:
return ;
label B_c:
d = d + 1;
a = a << 4;
continue L_b;
}
label B_a:
runtime_printstring(65790, 3, a, 0);
}
function detach(a:int, b:int, c:int) {
var e:int_ptr;
var g:int;
var h:int;
var k:int;
var f:{ a:int, b:int }
var i:int;
var j:int;
var d:int = g_a - 32;
g_a = d;
if (a) goto B_a;
runtime_nilPanic(d, 0);
unreachable;
label B_a:
e = a + 12;
if (eqz(e)) goto B_e;
if (e[0]) goto B_f;
g_a = d + 32;
return ;
label B_f:
d[3]:long = 0L;
d[2]:long = 0L;
d[1]:long = 0L;
if (eqz(a)) goto B_c;
f = a + 12;
if (eqz(f)) goto B_d;
g = f.b;
h = f.a;
i = d + 8 == -4;
j = d + 8 == -8;
e = 0;
k = 0;
goto B_b;
label B_e:
runtime_nilPanic(d, 0);
unreachable;
label B_d:
runtime_nilPanic(d, 0);
unreachable;
label B_c:
runtime_nilPanic(d, 0);
unreachable;
label B_b:
loop L_g {
if (e >= g) goto B_i;
if (e < g) goto B_h;
runtime_lookupPanic(d, 0);
unreachable;
label B_i:
g_a = d + 32;
return ;
label B_h:
var l:int = h + k;
var m:long = l[0]:long@4;
var n:long = l[2]:long@4;
d[3]:long = l[4]:long@4;
d[2]:long = n;
d[1]:long = m;
if (eqz(a)) goto B_kb;
if (eqz(f)) goto B_jb;
if (e >= f.b) goto B_ib;
if (a - f.a == k) goto B_j;
if (i) goto B_k;
if (eqz(d[3]:int)) goto B_j;
if (j) goto B_hb;
l = d[4]:int;
if (eqz(l)) goto B_gb;
if (eqz(l)) goto B_fb;
var o:int_ptr = l[0]:int;
if (eqz(o)) goto B_eb;
var p:int = d + 8 != -8;
if (eqz(p)) goto B_db;
l = d[4]:int;
if (eqz(l)) goto B_cb;
if (eqz(l)) goto B_bb;
l = l[0]:int;
if (eqz(l)) goto B_ab;
l = l + 12;
if (eqz(l)) goto B_za;
if (eqz(a)) goto B_ya;
if (eqz(f)) goto B_xa;
if (e >= f.b) goto B_wa;
l = remove(l[0]:int, f.a + k, d, d);
o = o + 12;
if (eqz(o)) goto B_va;
o[0] = l;
if (eqz(p)) goto B_ua;
l = d[4]:int;
if (eqz(l)) goto B_ta;
if (eqz(l)) goto B_sa;
l = l[0]:int;
if (eqz(l)) goto B_ra;
l = l + 12;
if (eqz(l)) goto B_qa;
if (l[0]:int) goto B_lb;
if (j) goto B_pa;
l = d[4]:int;
if (eqz(l)) goto B_oa;
l = l + 4;
if (eqz(l)) goto B_na;
if (l[0]:int) goto B_mb;
if (j) goto B_ma;
l = d[4]:int;
if (eqz(l)) goto B_la;
if (eqz(l)) goto B_ka;
l = l[0]:int;
if (eqz(l)) goto B_ja;
l = l + 8;
if (eqz(l)) goto B_ia;
if (l[0]:ubyte == 4) goto B_lb;
if (j) goto B_ha;
l = d[4]:int;
if (eqz(l)) goto B_ga;
if (eqz(l)) goto B_fa;
l = l[0]:int;
if (eqz(l)) goto B_ea;
l = l + 8;
if (eqz(l)) goto B_da;
l[0]:byte = 0;
goto B_lb;
label B_mb:
if (j) goto B_l;
l = d[4]:int;
if (eqz(l)) goto B_ca;
if (eqz(l)) goto B_ba;
l = l[0]:int;
if (eqz(l)) goto B_aa;
l = l + 24;
if (eqz(l)) goto B_z;
if (l[0]:int) goto B_nb;
if (j) goto B_y;
l = d[4]:int;
if (eqz(l)) goto B_x;
if (eqz(l)) goto B_w;
l = l[0]:int;
if (eqz(l)) goto B_v;
l = l + 8;
if (eqz(l)) goto B_u;
l[0]:byte = 0;
goto B_lb;
label B_nb:
if (j) goto B_m;
l = d[4]:int;
if (eqz(l)) goto B_t;
if (eqz(l)) goto B_s;
l = l[0]:int;
if (eqz(l)) goto B_r;
l = l + 8;
if (eqz(l)) goto B_q;
l[0]:byte = 3;
label B_lb:
if (j) goto B_p;
l = d[4]:int;
if (eqz(l)) goto B_o;
if (eqz(l)) goto B_n;
runtime_chanDebug(l[0]:int, d, d);
goto B_j;
label B_kb:
runtime_nilPanic(d, 0);
unreachable;
label B_jb:
runtime_nilPanic(d, 0);
unreachable;
label B_ib:
runtime_lookupPanic(d, 0);
unreachable;
label B_hb:
runtime_nilPanic(d, 0);
unreachable;
label B_gb:
runtime_nilPanic(d, 0);
unreachable;
label B_fb:
runtime_nilPanic(d, 0);
unreachable;
label B_eb:
runtime_nilPanic(d, 0);
unreachable;
label B_db:
runtime_nilPanic(d, 0);
unreachable;
label B_cb:
runtime_nilPanic(d, 0);
unreachable;
label B_bb:
runtime_nilPanic(d, 0);
unreachable;
label B_ab:
runtime_nilPanic(d, 0);
unreachable;
label B_za:
runtime_nilPanic(d, 0);
unreachable;
label B_ya:
runtime_nilPanic(d, 0);
unreachable;
label B_xa:
runtime_nilPanic(d, 0);
unreachable;
label B_wa:
runtime_lookupPanic(d, 0);
unreachable;
label B_va:
runtime_nilPanic(d, 0);
unreachable;
label B_ua:
runtime_nilPanic(d, 0);
unreachable;
label B_ta:
runtime_nilPanic(d, 0);
unreachable;
label B_sa:
runtime_nilPanic(d, 0);
unreachable;
label B_ra:
runtime_nilPanic(d, 0);
unreachable;
label B_qa:
runtime_nilPanic(d, 0);
unreachable;
label B_pa:
runtime_nilPanic(d, 0);
unreachable;
label B_oa:
runtime_nilPanic(d, 0);
unreachable;
label B_na:
runtime_nilPanic(d, 0);
unreachable;
label B_ma:
runtime_nilPanic(d, 0);
unreachable;
label B_la:
runtime_nilPanic(d, 0);
unreachable;
label B_ka:
runtime_nilPanic(d, 0);
unreachable;
label B_ja:
runtime_nilPanic(d, 0);
unreachable;
label B_ia:
runtime_nilPanic(d, 0);
unreachable;
label B_ha:
runtime_nilPanic(d, 0);
unreachable;
label B_ga:
runtime_nilPanic(d, 0);
unreachable;
label B_fa:
runtime_nilPanic(d, 0);
unreachable;
label B_ea:
runtime_nilPanic(d, 0);
unreachable;
label B_da:
runtime_nilPanic(d, 0);
unreachable;
label B_ca:
runtime_nilPanic(d, 0);
unreachable;
label B_ba:
runtime_nilPanic(d, 0);
unreachable;
label B_aa:
runtime_nilPanic(d, 0);
unreachable;
label B_z:
runtime_nilPanic(d, 0);
unreachable;
label B_y:
runtime_nilPanic(d, 0);
unreachable;
label B_x:
runtime_nilPanic(d, 0);
unreachable;
label B_w:
runtime_nilPanic(d, 0);
unreachable;
label B_v:
runtime_nilPanic(d, 0);
unreachable;
label B_u:
runtime_nilPanic(d, 0);
unreachable;
label B_t:
runtime_nilPanic(d, 0);
unreachable;
label B_s:
runtime_nilPanic(d, 0);
unreachable;
label B_r:
runtime_nilPanic(d, 0);
unreachable;
label B_q:
runtime_nilPanic(d, 0);
unreachable;
label B_p:
runtime_nilPanic(d, 0);
unreachable;
label B_o:
runtime_nilPanic(d, 0);
unreachable;
label B_n:
runtime_nilPanic(d, 0);
unreachable;
label B_m:
runtime_nilPanic(d, 0);
unreachable;
label B_l:
runtime_nilPanic(d, 0);
unreachable;
label B_k:
runtime_nilPanic(d, 0);
unreachable;
label B_j:
e = e + 1;
k = k + 24;
continue L_g;
}
}
function remove(a:int_ptr, b:int_ptr, c:int, d:int):int {
var e:int_ptr;
if (a != b) goto B_c;
if (a) goto B_b;
runtime_nilPanic(e, 0);
unreachable;
label B_c:
e = a;
loop L_f {
if (eqz(e)) goto B_a;
if (e) goto B_g;
runtime_nilPanic(e, 0);
unreachable;
label B_g:
if (eqz(e)) goto B_h;
if (e[0] == b) goto B_a;
if (eqz(e)) goto B_e;
if (eqz(e)) goto B_d;
e = e[0];
continue L_f;
label B_h:
}
runtime_nilPanic(e, 0);
unreachable;
label B_e:
runtime_nilPanic(e, 0);
unreachable;
label B_d:
runtime_nilPanic(e, 0);
unreachable;
label B_b:
if (eqz(a)) goto B_i;
return a[0];
label B_i:
runtime_nilPanic(e, 0);
unreachable;
label B_a:
if (eqz(e)) goto B_m;
if (e) goto B_n;
runtime_nilPanic(e, 0);
unreachable;
label B_n:
if (eqz(b)) goto B_l;
if (eqz(b)) goto B_k;
if (eqz(e)) goto B_j;
e[0] = b[0];
label B_m:
return a;
label B_l:
runtime_nilPanic(e, 0);
unreachable;
label B_k:
runtime_nilPanic(e, 0);
unreachable;
label B_j:
runtime_nilPanic(e, 0);
return unreachable;
}
function pop(a:int_ptr, b:int, c:int, d:int):int {
if (eqz(a)) goto B_x;
var e:int_ptr = a + 24;
if (eqz(e)) goto B_w;
if (e[0]) goto B_y;
return 0;
label B_y:
if (eqz(a)) goto B_a;
if (a == -28) goto B_v;
if (eqz(a)) goto B_u;
if (eqz(a)) goto B_t;
if (eqz(a)) goto B_s;
if (a == -20) goto B_r;
if (eqz(a)) goto B_q;
if (eqz(a)) goto B_p;
memcpy(b, e = a[7] + a[0] * a[5], a[0]);
if (eqz(a)) goto B_o;
if (eqz(a)) goto B_n;
memset(e, 0, a[0]);
if (eqz(a)) goto B_m;
e = a + 24;
if (eqz(e)) goto B_l;
if (eqz(e)) goto B_k;
a[6] = e[0] + -1;
if (eqz(a)) goto B_j;
e = a + 20;
if (eqz(e)) goto B_i;
if (eqz(e)) goto B_h;
a[5] = e[0] + 1;
if (eqz(a)) goto B_g;
if (a == -20) goto B_f;
if (eqz(a)) goto B_e;
e = a + 4;
if (eqz(e)) goto B_d;
if (a[5] != e[0]) goto B_z;
if (eqz(a)) goto B_c;
a = a + 20;
if (eqz(a)) goto B_b;
a[0] = 0;
label B_z:
return 1;
label B_x:
runtime_nilPanic(a, 0);
unreachable;
label B_w:
runtime_nilPanic(a, 0);
unreachable;
label B_v:
runtime_nilPanic(a, 0);
unreachable;
label B_u:
runtime_nilPanic(a, 0);
unreachable;
label B_t:
runtime_nilPanic(a, 0);
unreachable;
label B_s:
runtime_nilPanic(a, 0);
unreachable;
label B_r:
runtime_nilPanic(a, 0);
unreachable;
label B_q:
runtime_nilPanic(a, 0);
unreachable;
label B_p:
runtime_nilPanic(a, 0);
unreachable;
label B_o:
runtime_nilPanic(a, 0);
unreachable;
label B_n:
runtime_nilPanic(a, 0);
unreachable;
label B_m:
runtime_nilPanic(a, 0);
unreachable;
label B_l:
runtime_nilPanic(a, 0);
unreachable;
label B_k:
runtime_nilPanic(a, 0);
unreachable;
label B_j:
runtime_nilPanic(a, 0);
unreachable;
label B_i:
runtime_nilPanic(a, 0);
unreachable;
label B_h:
runtime_nilPanic(a, 0);
unreachable;
label B_g:
runtime_nilPanic(a, 0);
unreachable;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
return unreachable;
}
function push(a:int_ptr, b:int, c:int, d:int):int {
if (eqz(a)) goto B_z;
var e:int_ptr = a + 4;
if (eqz(e)) goto B_y;
if (e[0]) goto B_aa;
return 0;
label B_aa:
if (eqz(a)) goto B_a;
if (a == -24) goto B_x;
if (eqz(a)) goto B_w;
e = a + 4;
if (eqz(e)) goto B_v;
if (a[6] != e[0]) goto B_ba;
return 0;
label B_ba:
if (eqz(a)) goto B_b;
if (a == -28) goto B_u;
if (eqz(a)) goto B_t;
if (eqz(a)) goto B_s;
if (eqz(a)) goto B_r;
if (a == -16) goto B_q;
if (eqz(a)) goto B_p;
if (eqz(a)) goto B_o;
memcpy(a[7] + a[0] * a[4], b, a[0]);
if (eqz(a)) goto B_n;
e = a + 24;
if (eqz(e)) goto B_m;
if (eqz(e)) goto B_l;
a[6] = e[0] + 1;
if (eqz(a)) goto B_k;
e = a + 16;
if (eqz(e)) goto B_j;
if (eqz(e)) goto B_i;
a[4] = e[0] + 1;
if (eqz(a)) goto B_h;
if (a == -16) goto B_g;
if (eqz(a)) goto B_f;
e = a + 4;
if (eqz(e)) goto B_e;
if (a[4] != e[0]) goto B_ca;
if (eqz(a)) goto B_d;
a = a + 16;
if (eqz(a)) goto B_c;
a[0] = 0;
label B_ca:
return 1;
label B_z:
runtime_nilPanic(a, 0);
unreachable;
label B_y:
runtime_nilPanic(a, 0);
unreachable;
label B_x:
runtime_nilPanic(a, 0);
unreachable;
label B_w:
runtime_nilPanic(a, 0);
unreachable;
label B_v:
runtime_nilPanic(a, 0);
unreachable;
label B_u:
runtime_nilPanic(a, 0);
unreachable;
label B_t:
runtime_nilPanic(a, 0);
unreachable;
label B_s:
runtime_nilPanic(a, 0);
unreachable;
label B_r:
runtime_nilPanic(a, 0);
unreachable;
label B_q:
runtime_nilPanic(a, 0);
unreachable;
label B_p:
runtime_nilPanic(a, 0);
unreachable;
label B_o:
runtime_nilPanic(a, 0);
unreachable;
label B_n:
runtime_nilPanic(a, 0);
unreachable;
label B_m:
runtime_nilPanic(a, 0);
unreachable;
label B_l:
runtime_nilPanic(a, 0);
unreachable;
label B_k:
runtime_nilPanic(a, 0);
unreachable;
label B_j:
runtime_nilPanic(a, 0);
unreachable;
label B_i:
runtime_nilPanic(a, 0);
unreachable;
label B_h:
runtime_nilPanic(a, 0);
unreachable;
label B_g:
runtime_nilPanic(a, 0);
unreachable;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
return unreachable;
}
function resumeRX(a:int, b:int_ptr, c:int, d:int):int {
var e:int_ptr;
var f:int_ptr;
if (eqz(a)) goto B_s;
if (eqz(a)) goto B_r;
if (a == -12) goto B_q;
if (eqz(a)) goto B_p;
e = a + 12;
if (eqz(e)) goto B_o;
f = e[0];
if (eqz(f)) goto B_n;
if (eqz(f)) goto B_m;
var g:int_ptr = a + 12;
if (eqz(g)) goto B_l;
e = a[3]:int;
g[0] = f[0];
if (eqz(e)) goto B_k;
f = e + 4;
if (eqz(f)) goto B_j;
f = f[0];
if (eqz(f)) goto B_i;
f = f + 4;
if (eqz(f)) goto B_h;
f = f[0];
if (b & 1) goto B_a;
if (eqz(a)) goto B_b;
if (eqz(a)) goto B_g;
memset(f, 0, a[0]:int);
if (eqz(e)) goto B_f;
a = e + 4;
if (eqz(a)) goto B_e;
a = a[0]:int;
if (eqz(a)) goto B_d;
a = a + 8;
if (eqz(a)) goto B_c;
a[0]:long = 0L;
goto B_a;
label B_s:
runtime_nilPanic(e, 0);
unreachable;
label B_r:
runtime_nilPanic(e, 0);
unreachable;
label B_q:
runtime_nilPanic(e, 0);
unreachable;
label B_p:
runtime_nilPanic(e, 0);
unreachable;
label B_o:
runtime_nilPanic(e, 0);
unreachable;
label B_n:
runtime_nilPanic(e, 0);
unreachable;
label B_m:
runtime_nilPanic(e, 0);
unreachable;
label B_l:
runtime_nilPanic(e, 0);
unreachable;
label B_k:
runtime_nilPanic(e, 0);
unreachable;
label B_j:
runtime_nilPanic(e, 0);
unreachable;
label B_i:
runtime_nilPanic(e, 0);
unreachable;
label B_h:
runtime_nilPanic(e, 0);
unreachable;
label B_g:
runtime_nilPanic(e, 0);
unreachable;
label B_f:
runtime_nilPanic(e, 0);
unreachable;
label B_e:
runtime_nilPanic(e, 0);
unreachable;
label B_d:
runtime_nilPanic(e, 0);
unreachable;
label B_c:
runtime_nilPanic(e, 0);
unreachable;
label B_b:
runtime_nilPanic(e, 0);
unreachable;
label B_a:
if (eqz(e)) goto B_ca;
a = e + 8;
if (eqz(a)) goto B_ba;
if (eqz(a[0]:int)) goto B_da;
if (eqz(e)) goto B_aa;
a = e + 4;
if (eqz(a)) goto B_z;
a = a[0]:int;
if (eqz(a)) goto B_y;
if (eqz(e)) goto B_x;
b = e + 8;
if (eqz(b)) goto B_w;
a = a + 4;
if (eqz(a)) goto B_v;
a[0]:int = b[0];
detach(e, e, e);
label B_da:
if (eqz(e)) goto B_u;
e = e + 4;
if (eqz(e)) goto B_t;
Push(66280, e[0], e, e);
return f;
label B_ca:
runtime_nilPanic(e, 0);
unreachable;
label B_ba:
runtime_nilPanic(e, 0);
unreachable;
label B_aa:
runtime_nilPanic(e, 0);
unreachable;
label B_z:
runtime_nilPanic(e, 0);
unreachable;
label B_y:
runtime_nilPanic(e, 0);
unreachable;
label B_x:
runtime_nilPanic(e, 0);
unreachable;
label B_w:
runtime_nilPanic(e, 0);
unreachable;
label B_v:
runtime_nilPanic(e, 0);
unreachable;
label B_u:
runtime_nilPanic(e, 0);
unreachable;
label B_t:
runtime_nilPanic(e, 0);
return unreachable;
}
function resumeTX(a:int_ptr, b:int, c:int):int {
if (eqz(a)) goto B_z;
if (eqz(a)) goto B_y;
if (a == -12) goto B_x;
if (eqz(a)) goto B_w;
var d:int_ptr = a + 12;
if (eqz(d)) goto B_v;
d = d[0];
if (eqz(d)) goto B_u;
if (eqz(d)) goto B_t;
var e:int_ptr = a + 12;
if (eqz(e)) goto B_s;
a = a[3];
e[0] = d[0];
if (eqz(a)) goto B_r;
d = a + 4;
if (eqz(d)) goto B_q;
d = d[0];
if (eqz(d)) goto B_p;
e = d + 4;
if (eqz(e)) goto B_o;
if (eqz(a)) goto B_n;
d = a + 8;
if (eqz(d)) goto B_m;
if (d[0]) goto B_ba;
d = e[0];
goto B_aa;
label B_ba:
if (eqz(a)) goto B_a;
d = a + 8;
if (eqz(d)) goto B_l;
d = d[0];
if (eqz(d)) goto B_k;
d = d + 4;
if (eqz(d)) goto B_j;
if (eqz(a)) goto B_i;
e = a + 4;
if (eqz(e)) goto B_h;
e = e[0];
if (eqz(e)) goto B_g;
if (eqz(a)) goto B_f;
var f:int_ptr = a + 8;
if (eqz(f)) goto B_e;
e = e + 4;
if (eqz(e)) goto B_d;
d = d[0];
e[0] = f[0];
detach(a, a, a);
label B_aa:
if (eqz(a)) goto B_c;
a = a + 4;
if (eqz(a)) goto B_b;
Push(66280, a[0], a, a);
return d;
label B_z:
runtime_nilPanic(a, 0);
unreachable;
label B_y:
runtime_nilPanic(a, 0);
unreachable;
label B_x:
runtime_nilPanic(a, 0);
unreachable;
label B_w:
runtime_nilPanic(a, 0);
unreachable;
label B_v:
runtime_nilPanic(a, 0);
unreachable;
label B_u:
runtime_nilPanic(a, 0);
unreachable;
label B_t:
runtime_nilPanic(a, 0);
unreachable;
label B_s:
runtime_nilPanic(a, 0);
unreachable;
label B_r:
runtime_nilPanic(a, 0);
unreachable;
label B_q:
runtime_nilPanic(a, 0);
unreachable;
label B_p:
runtime_nilPanic(a, 0);
unreachable;
label B_o:
runtime_nilPanic(a, 0);
unreachable;
label B_n:
runtime_nilPanic(a, 0);
unreachable;
label B_m:
runtime_nilPanic(a, 0);
unreachable;
label B_l:
runtime_nilPanic(a, 0);
unreachable;
label B_k:
runtime_nilPanic(a, 0);
unreachable;
label B_j:
runtime_nilPanic(a, 0);
unreachable;
label B_i:
runtime_nilPanic(a, 0);
unreachable;
label B_h:
runtime_nilPanic(a, 0);
unreachable;
label B_g:
runtime_nilPanic(a, 0);
unreachable;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
return unreachable;
}
function tryRecv(a:short_ptr, b:int, c:int, d:int, e:int) {
var g:int;
var f:int;
if (eqz(b)) goto B_d;
f = runtime_interrupt_Disable(b, b);
if (b) goto B_e;
runtime_nilPanic(b, 0);
unreachable;
label B_e:
g = b + 8;
if (eqz(g)) goto B_c;
g = g[0]:ubyte;
if (g != 3) goto B_b;
goto B_a;
label B_d:
a[0] = 0;
return ;
label B_c:
runtime_nilPanic(b, 0);
unreachable;
label B_b:
if (g == 2) goto B_a;
if (g == 1) goto B_h;
if (eqz(g)) goto B_h;
if (g != 4) goto B_j;
if (pop(b, c, b, b) & 1) goto B_g;
if (b) goto B_i;
runtime_nilPanic(b, 0);
unreachable;
label B_j:
runtime_runtimePanic(65793, 21, b, b);
runtime_runtimePanic(65814, 11, b, b);
a[0] = 0;
return ;
label B_i:
if (eqz(b)) goto B_f;
memset(c, 0, b[0]:int);
runtime_interrupt_Restore(f, b, b);
a[0] = 1;
return ;
label B_h:
runtime_interrupt_Restore(f, b, b);
a[0] = 0;
return ;
label B_g:
runtime_interrupt_Restore(f, b, b);
a[0] = 257;
return ;
label B_f:
runtime_nilPanic(b, 0);
unreachable;
label B_a:
if (eqz(pop(b, c, b, b) & 1)) goto B_ca;
if (b) goto B_da;
runtime_nilPanic(b, 0);
unreachable;
label B_da:
c = b + 12;
if (eqz(c)) goto B_ba;
if (eqz(c[0]:int)) goto B_ea;
push(b, resumeTX(b, b, b), b, b);
if (eqz(b)) goto B_aa;
c = b + 12;
if (eqz(c)) goto B_z;
if (c[0]:int) goto B_ea;
if (eqz(b)) goto B_y;
c = b + 8;
if (eqz(c)) goto B_x;
c[0]:byte = 3;
label B_ea:
if (eqz(b)) goto B_w;
c = b + 24;
if (eqz(c)) goto B_v;
if (c[0]:int) goto B_fa;
if (eqz(b)) goto B_u;
b = b + 8;
if (eqz(b)) goto B_t;
b[0]:byte = 0;
label B_fa:
runtime_interrupt_Restore(f, b, b);
a[0] = 257;
return ;
label B_ca:
if (eqz(b)) goto B_l;
g = b + 12;
if (eqz(g)) goto B_s;
if (eqz(g[0]:int)) goto B_k;
g = resumeTX(b, b, b);
if (eqz(b)) goto B_r;
if (eqz(b)) goto B_q;
memcpy(c, g, b[0]:int);
if (eqz(b)) goto B_p;
c = b + 12;
if (eqz(c)) goto B_o;
if (c[0]:int) goto B_ga;
if (eqz(b)) goto B_n;
b = b + 8;
if (eqz(b)) goto B_m;
b[0]:byte = 0;
label B_ga:
runtime_interrupt_Restore(f, b, b);
a[0] = 257;
return ;
label B_ba:
runtime_nilPanic(b, 0);
unreachable;
label B_aa:
runtime_nilPanic(b, 0);
unreachable;
label B_z:
runtime_nilPanic(b, 0);
unreachable;
label B_y:
runtime_nilPanic(b, 0);
unreachable;
label B_x:
runtime_nilPanic(b, 0);
unreachable;
label B_w:
runtime_nilPanic(b, 0);
unreachable;
label B_v:
runtime_nilPanic(b, 0);
unreachable;
label B_u:
runtime_nilPanic(b, 0);
unreachable;
label B_t:
runtime_nilPanic(b, 0);
unreachable;
label B_s:
runtime_nilPanic(b, 0);
unreachable;
label B_r:
runtime_nilPanic(b, 0);
unreachable;
label B_q:
runtime_nilPanic(b, 0);
unreachable;
label B_p:
runtime_nilPanic(b, 0);
unreachable;
label B_o:
runtime_nilPanic(b, 0);
unreachable;
label B_n:
runtime_nilPanic(b, 0);
unreachable;
label B_m:
runtime_nilPanic(b, 0);
unreachable;
label B_l:
runtime_nilPanic(b, 0);
unreachable;
label B_k:
runtime_interrupt_Restore(f, b, b);
a[0] = 0;
}
function runtime_deadlock(a:int, b:int) {
var c:{ a:int, b:int, c:byte }
c = runtime_alloc(12, c, c);
c.b = 3;
c.a = 4;
setState(b, c, c, c);
c.c = 0;
Lcoro_devirt_trigger(0);
}
function runtime_deadlock_destroy(a:int) {
Lcoro_devirt_trigger(0);
runtime_free(a, a, a);
}
function runtime_deadlock_resume(a:int) {
var b:int;
Lcoro_devirt_trigger(0);
runtime_panic(34, 65832, b, 0);
unreachable;
}
function runtime_printitf(a:int, b:int, c:int, d:int) {
var g:int;
var i:int;
var e:int_ptr = g_a - 32;
g_a = e;
var f:{ a:int, b:int } = 0;
g = a == 2;
if (eqz(g)) goto B_a;
f = b;
label B_a:
if (eqz(g)) goto B_c;
runtime_printbool(f, a, 0);
goto B_b;
label B_c:
if (1) goto B_d;
runtime_printint32(0, a, 0);
goto B_b;
label B_d:
if (1) goto B_e;
runtime_printint8(0, a, 0);
goto B_b;
label B_e:
if (1) goto B_f;
runtime_printint16(0, a, 0);
goto B_b;
label B_f:
if (1) goto B_g;
runtime_printint32(0, a, 0);
goto B_b;
label B_g:
if (1) goto B_h;
runtime_printint64(0L, a, 0);
goto B_b;
label B_h:
if (1) goto B_i;
runtime_printuint32(0, a, 0);
goto B_b;
label B_i:
f = 0;
if (a != 16) goto B_j;
f = b;
label B_j:
if (a != 16) goto B_k;
runtime_printuint8(f, a, 0);
goto B_b;
label B_k:
if (1) goto B_l;
runtime_printuint16(0, a, 0);
goto B_b;
label B_l:
f = 0;
if (a != 20) goto B_m;
f = b;
label B_m:
if (a != 20) goto B_n;
runtime_printuint32(f, a, 0);
goto B_b;
label B_n:
var h:long = 0L;
if (a != 22) goto B_o;
h = b[0]:long;
label B_o:
if (a != 22) goto B_p;
runtime_printuint64(h, a, 0);
goto B_b;
label B_p:
f = 0;
if (a != 24) goto B_q;
f = b;
label B_q:
if (a != 24) goto B_r;
runtime_printptr(f, a, 0);
goto B_b;
label B_r:
if (1) goto B_s;
runtime_printfloat32(0.0f, a, 0);
goto B_b;
label B_s:
if (1) goto B_t;
runtime_printfloat64(0.0, a, 0);
goto B_b;
label B_t:
if (1) goto B_u;
runtime_printcomplex64(0.0f, 0.0f, a, 0);
goto B_b;
label B_u:
if (1) goto B_v;
runtime_printcomplex128(0.0, 0.0, a, 0);
goto B_b;
label B_v:
f = 0;
g = 0;
if (a != 34) goto B_w;
g = b[1]:int;
f = b[0]:int;
label B_w:
if (a != 34) goto B_x;
runtime_printstring(f, g, a, 0);
goto B_b;
label B_x:
f = 0;
g = 0;
i = error_typeassert(a) & 1;
if (eqz(i)) goto B_y;
f = a;
g = b;
label B_y:
if (eqz(i)) goto B_z;
Error_4(e, g, a, a, f, 0);
runtime_printstring(e[0], e[1], a, 0);
goto B_b;
label B_z:
f = 0;
g = 0;
i = runtime_stringer_typeassert(a) & 1;
if (eqz(i)) goto B_aa;
f = a;
g = b;
label B_aa:
if (eqz(i)) goto B_ba;
String_2(e + 8, g, a, a, f, 0);
runtime_printstring(e[2], e[3], a, 0);
goto B_b;
label B_ba:
f = runtime_alloc(8, a, 0);
f.b = b;
f.a = a;
e[6] = a;
e[7] = b;
runtime_putchar(40, a, a);
if (eqz(e + 24)) goto B_da;
runtime_printuint32(e[6], a, a);
runtime_putchar(58, a, a);
if (e + 24 != -4) goto B_ca;
runtime_nilPanic(a, 0);
unreachable;
label B_da:
runtime_nilPanic(a, 0);
unreachable;
label B_ca:
runtime_printptr(e[7], a, 0);
runtime_putchar(41, a, a);
label B_b:
g_a = e + 32;
}
function runtime_printbool(a:int, b:int, c:int) {
if (eqz(a & 1)) goto B_a;
runtime_printstring(65873, 4, a, a);
return ;
label B_a:
runtime_printstring(65877, 5, a, a);
}
function runtime_printint32(a:int, b:int, c:int) {
if (a > -1) goto B_a;
runtime_putchar(45, a, a);
a = 0 - a;
label B_a:
runtime_printuint32(a, a, a);
}
function runtime_printint8(a:int, b:int, c:int) {
runtime_printint32((a << 24) >> 24, a, a)
}
function runtime_printint16(a:int, b:int, c:int) {
runtime_printint32((a << 16) >> 16, a, a)
}
function runtime_printint64(a:long, b:int, c:int) {
var d:int;
if (a > -1L) goto B_a;
runtime_putchar(45, d, d);
a = 0L - a;
label B_a:
runtime_printuint64(a, d, d);
}
function runtime_printuint32(a:int, b:int, c:int) {
runtime_printuint64(i64_extend_i32_u(a), a, a)
}
function runtime_printuint8(a:int, b:int, c:int) {
runtime_printuint32(a & 255, a, a)
}
function runtime_printuint16(a:int, b:int, c:int) {
runtime_printuint32(a & 65535, a, a)
}
function runtime_printuint64(a:long, b:int, c:int) {
var g:int;
var d:int = g_a - 32;
g_a = d;
d[28]:int@1 = 0;
d[20]:long@1 = 0L;
d[12]:long@1 = 0L;
var e:int = 19;
var f:int = 19;
loop L_b {
if (f < 0) goto B_a;
(d + 12 + f)[0]:byte = (g = i32_wrap_i64(a % 10L) | 48);
if (g == 48) goto B_c;
e = f;
label B_c:
f = f + -1;
a = a / 10L;
continue L_b;
}
label B_a:
loop L_e {
if (e > 19) goto B_d;
runtime_putchar((d + 12 + e)[0]:ubyte, e, e);
e = e + 1;
continue L_e;
}
label B_d:
g_a = d + 32;
}
function runtime_printfloat32(a:float, b:int, c:int) {
var f:int;
var e:int;
var g:int;
var j:int;
var i:int;
var d:int = g_a - 32;
g_a = d;
if (a != a) goto B_b;
e = a + a != a;
if (eqz(e)) goto B_d;
f = 0;
goto B_c;
label B_d:
f = a > 0.0f;
label B_c:
if (f) goto B_e;
if (eqz(e)) goto B_g;
f = 0;
goto B_f;
label B_g:
f = a < 0.0f;
label B_f:
if (f) goto B_h;
g = 0;
d[16]:short@1 = 0;
d[12]:int@1 = 0;
d[4]:long@1 = 43L;
if (a != 0.0f) goto B_i;
if (1.0f / a < 0.0f ^ 1) goto B_a;
d[4]:byte = 45;
goto B_a;
label B_i:
if (a < 0.0f ^ 1) goto B_j;
d[4]:byte = 45;
a = -(a);
label B_j:
g = 1;
loop L_k {
if (a >= 10.0f) goto B_l;
loop L_n {
if (a < 1.0f ^ 1) goto B_m;
g = g + -1;
a = a * 10.0f;
continue L_n;
}
label B_m:
e = g + -1;
f = 0;
var h:float = 5.0f;
loop L_p {
if (f > 6) goto B_o;
f = f + 1;
h = h / 10.0f;
continue L_p;
}
label B_o:
a = a + h;
if (eqz(a >= 10.0f ^ 1)) goto B_q;
g = e;
goto B_a;
label B_q:
a = a / 10.0f;
goto B_a;
label B_l:
g = g + 1;
a = a / 10.0f;
continue L_k;
}
label B_h:
runtime_printstring(65869, 4, d, d);
g_a = d + 32;
return ;
label B_e:
runtime_printstring(65865, 4, d, d);
g_a = d + 32;
return ;
label B_b:
runtime_printstring(65862, 3, d, d);
g_a = d + 32;
return ;
label B_a:
f = 0;
loop L_r {
if (f > 6) goto B_t;
if (eqz(abs(a) < 2147483648.0f)) goto B_v;
e = i32_trunc_f32_s(a);
goto B_u;
label B_v:
e = -2147483648;
label B_u:
i = f + 2;
if (i <= 13) goto B_s;
runtime_lookupPanic(d, 0);
unreachable;
label B_t:
d[13]:short@1 = 11109;
f = d[6]:ubyte;
d[6]:byte = 46;
d[5]:byte = f;
if (g > -1) goto B_w;
d[14]:byte = 45;
g = 0 - g;
label B_w:
d[17]:byte = (e = g % 10 + 48);
d[15]:byte = (i = g / 100 + 48);
d[16]:byte = (j = (g / 10 & 255) % 10 | 48);
g = d[14]:ubyte;
var k:int = d[13]:ubyte;
var l:int = d[12]:ubyte;
var m:int = d[11]:ubyte;
var n:int = d[10]:ubyte;
var o:int = d[9]:ubyte;
var p:int = d[8]:ubyte;
var q:int = d[7]:ubyte;
var r:int = d[6]:ubyte;
var s:int = d[5]:ubyte;
var t:int = d[4]:ubyte;
f = 0;
loop L_x {
if (f > 13) goto B_z;
if (f <= 13) goto B_y;
runtime_lookupPanic(d, 0);
unreachable;
label B_z:
g_a = d + 32;
return ;
label B_y:
d[18]:byte = t;
d[19]:byte = s;
d[20]:byte = r;
d[21]:byte = q;
d[22]:byte = p;
d[23]:byte = o;
d[24]:byte = n;
d[25]:byte = m;
d[26]:byte = l;
d[27]:byte = k;
d[28]:byte = g;
d[29]:byte = i;
d[30]:byte = j;
d[31]:byte = e;
runtime_putchar((d + 18 + f)[0]:ubyte, d, d);
f = f + 1;
continue L_x;
}
label B_s:
(d + 4 + f + 2)[0]:byte =
(e =
select_if(
select_if(
e,
j =
select_if(0,
select_if(2147483647, -2147483648, f = a >= -2147483648.0f),
a != a),
a <= 2147483392.0f),
j,
f)) +
48;
f = i + -1;
a = (a - f32_convert_i32_s(e)) * 10.0f;
continue L_r;
}
}
function runtime_printfloat64(a:double, b:int, c:int) {
var f:int;
var e:int;
var g:int;
var j:int;
var i:int;
var d:int = g_a - 32;
g_a = d;
if (a != a) goto B_b;
e = a + a != a;
if (eqz(e)) goto B_d;
f = 0;
goto B_c;
label B_d:
f = a > 0.0;
label B_c:
if (f) goto B_e;
if (eqz(e)) goto B_g;
f = 0;
goto B_f;
label B_g:
f = a < 0.0;
label B_f:
if (f) goto B_h;
g = 0;
d[16]:short@1 = 0;
d[12]:int@1 = 0;
d[4]:long@1 = 43L;
if (a != 0.0) goto B_i;
if (1.0 / a < 0.0 ^ 1) goto B_a;
d[4]:byte = 45;
goto B_a;
label B_i:
if (a < 0.0 ^ 1) goto B_j;
d[4]:byte = 45;
a = -(a);
label B_j:
g = 1;
loop L_k {
if (a >= 10.0) goto B_l;
loop L_n {
if (a < 1.0 ^ 1) goto B_m;
g = g + -1;
a = a * 10.0;
continue L_n;
}
label B_m:
e = g + -1;
f = 0;
var h:double = 5.0;
loop L_p {
if (f > 6) goto B_o;
f = f + 1;
h = h / 10.0;
continue L_p;
}
label B_o:
a = a + h;
if (eqz(a >= 10.0 ^ 1)) goto B_q;
g = e;
goto B_a;
label B_q:
a = a / 10.0;
goto B_a;
label B_l:
g = g + 1;
a = a / 10.0;
continue L_k;
}
label B_h:
runtime_printstring(65858, 4, d, d);
g_a = d + 32;
return ;
label B_e:
runtime_printstring(65854, 4, d, d);
g_a = d + 32;
return ;
label B_b:
runtime_printstring(65851, 3, d, d);
g_a = d + 32;
return ;
label B_a:
f = 0;
loop L_r {
if (f > 6) goto B_t;
if (eqz(abs(a) < 2147483648.0)) goto B_v;
e = i32_trunc_f64_s(a);
goto B_u;
label B_v:
e = -2147483648;
label B_u:
i = f + 2;
if (i <= 13) goto B_s;
runtime_lookupPanic(d, 0);
unreachable;
label B_t:
d[13]:short@1 = 11109;
f = d[6]:ubyte;
d[6]:byte = 46;
d[5]:byte = f;
if (g > -1) goto B_w;
d[14]:byte = 45;
g = 0 - g;
label B_w:
d[17]:byte = (e = g % 10 + 48);
d[15]:byte = (i = g / 100 + 48);
d[16]:byte = (j = (g / 10 & 255) % 10 | 48);
g = d[14]:ubyte;
var k:int = d[13]:ubyte;
var l:int = d[12]:ubyte;
var m:int = d[11]:ubyte;
var n:int = d[10]:ubyte;
var o:int = d[9]:ubyte;
var p:int = d[8]:ubyte;
var q:int = d[7]:ubyte;
var r:int = d[6]:ubyte;
var s:int = d[5]:ubyte;
var t:int = d[4]:ubyte;
f = 0;
loop L_x {
if (f > 13) goto B_z;
if (f <= 13) goto B_y;
runtime_lookupPanic(d, 0);
unreachable;
label B_z:
g_a = d + 32;
return ;
label B_y:
d[18]:byte = t;
d[19]:byte = s;
d[20]:byte = r;
d[21]:byte = q;
d[22]:byte = p;
d[23]:byte = o;
d[24]:byte = n;
d[25]:byte = m;
d[26]:byte = l;
d[27]:byte = k;
d[28]:byte = g;
d[29]:byte = i;
d[30]:byte = j;
d[31]:byte = e;
runtime_putchar((d + 18 + f)[0]:ubyte, d, d);
f = f + 1;
continue L_x;
}
label B_s:
(d + 4 + f + 2)[0]:byte =
(e =
select_if(
select_if(
e,
j =
select_if(0,
select_if(2147483647, -2147483648, f = a >= -2147483648.0),
a != a),
a <= 2147483647.0),
j,
f)) +
48;
f = i + -1;
a = (a - f64_convert_i32_s(e)) * 10.0;
continue L_r;
}
}
function runtime_printcomplex64(a:float, b:float, c:int, d:int) {
var e:int;
runtime_putchar(40, e, e);
runtime_printfloat32(a, e, e);
runtime_printfloat32(b, e, e);
runtime_printstring(65849, 2, e, e);
}
function runtime_printcomplex128(a:double, b:double, c:int, d:int) {
var e:int;
runtime_putchar(40, e, e);
runtime_printfloat64(a, e, e);
runtime_printfloat64(b, e, e);
runtime_printstring(65847, 2, e, e);
}
function error_typeassert(a:int):int {
if (a == 8165) goto B_a;
if (a == 6117) goto B_a;
if (a == 7141) goto B_a;
if (a == 255) goto B_a;
return 0;
label B_a:
return 1;
}
function Error_4(a:{ a:int, b:int }, b:int, c:int, d:int, e:int, f:int) {
var g:{ a:int, b:int, c:int, d:int, e:int, f:int, g:int, h:int } =
g_a - 32;
g_a = g;
if (e == 8165) goto B_d;
if (e == 6117) goto B_c;
if (e == 7141) goto B_b;
if (e == 255) goto B_a;
runtime_nilPanic(g, g);
unreachable;
label B_d:
Error_1(g, b, c, d);
a.a = g.a;
a.b = g.b;
g_a = g + 32;
return ;
label B_c:
Error_3(g + 8, b, c, d);
a.a = g.c;
a.b = g.d;
g_a = g + 32;
return ;
label B_b:
Error_2(g + 16, b, c, d);
a.a = g.e;
a.b = g.f;
g_a = g + 32;
return ;
label B_a:
Error_invoke(g + 24, b, c, d);
a.a = g.g;
a.b = g.h;
g_a = g + 32;
}
function runtime_stringer_typeassert(a:int):int {
if (a == 4869) goto B_a;
if (a == 152) goto B_a;
return 0;
label B_a:
return 1;
}
function String_2(a:{ a:int, b:int }, b:int, c:int, d:int, e:int, f:int) {
var g:{ a:int, b:int, c:int, d:int } = g_a - 16;
g_a = g;
if (e == 4869) goto B_b;
if (e == 152) goto B_a;
runtime_nilPanic(g, g);
unreachable;
label B_b:
String(g, b, c, d);
a.a = g.a;
a.b = g.b;
g_a = g + 16;
return ;
label B_a:
String_invoke(g + 8, b, c, d);
a.a = g.c;
a.b = g.d;
g_a = g + 16;
}
function runtime_chanRecv(a:int, b:int_ptr, c:int, d:int, e:int):int {
var g:int;
var h:int;
var i:byte_ptr;
var f:ubyte_ptr = g_a - 16;
g_a = f;
g = runtime_alloc(64, g, g);
g[11]:int = e;
g[1]:int = 5;
g[0]:int = 6;
g[10]:int = c;
g[9]:int = b;
g[8]:int = a;
g[12]:int = (h = setState(e, g, g, g));
g[13]:int = (i = getReturnPtr(e, g, g));
g[14]:int = (c = runtime_interrupt_Disable(g, g));
tryRecv(f + 8, a, b, g, g);
var j:int = f[9];
b = f[8];
Lcoro_devirt_trigger(0);
if (eqz(b)) goto B_h;
runtime_chanDebug(a, g, g);
runtime_interrupt_Restore(c, g, g);
i[0] = j & 1;
returnTo(e, h, g, g);
runtime_free(g, g, g);
goto B_g;
label B_h:
if (a) goto B_i;
runtime_interrupt_Restore(c, g, g);
runtime_deadlock(g, e);
g[60]:byte = 0;
goto B_g;
label B_i:
e = g[8]:int;
if (eqz(e)) goto B_f;
a = g[11]:int;
e[8]:byte = 1;
if (eqz(a)) goto B_e;
a[1]:int = g[9]:int;
e = g[10]:int;
a[1]:long = 1L;
(g + 24)[0]:long@4 = 0L;
(g + 16)[0]:long@4 = 0L;
g[2]:long@4 = 0L;
if (eqz(e)) goto B_d;
b = g[8]:int;
if (eqz(b)) goto B_c;
e = g[10]:int;
if (eqz(e)) goto B_b;
b = b[3];
e[5]:int = 0;
e[3]:long@4 = 0L;
e[1]:long@4 = 0L;
e[0]:int = b;
b = g[8]:int;
e[1]:int = a;
if (eqz(b)) goto B_a;
e = g[14]:int;
a = g[8]:int;
a[3]:int = g[10]:int;
runtime_chanDebug(a, g, g);
runtime_interrupt_Restore(e, g, g);
g[60]:byte = 1;
label B_g:
g_a = f + 16;
return g;
label B_f:
runtime_nilPanic(g, 0);
unreachable;
label B_e:
runtime_nilPanic(g, 0);
unreachable;
label B_d:
runtime_nilPanic(g, 0);
unreachable;
label B_c:
runtime_nilPanic(g, 0);
unreachable;
label B_b:
runtime_nilPanic(g, 0);
unreachable;
label B_a:
runtime_nilPanic(g, 0);
return unreachable;
}
function runtime_chanRecv_destroy(a:int) {
runtime_free(a, a, a)
}
function runtime_chanRecv_resume(a:int) {
var d:int_ptr;
var c:int;
var b:int = 0;
if (a[60]:ubyte) goto B_h;
b = a[8]:int;
if (eqz(b)) goto B_g;
c = a[11]:int;
b[8]:byte = 1;
if (eqz(c)) goto B_f;
c[1]:int = a[9]:int;
b = a[10]:int;
c[1]:long = 1L;
(a + 24)[0]:long@4 = 0L;
(a + 16)[0]:long@4 = 0L;
a[2]:long@4 = 0L;
if (eqz(b)) goto B_e;
d = a[8]:int;
if (eqz(d)) goto B_d;
b = a[10]:int;
if (eqz(b)) goto B_c;
d = d[3];
b[5]:int = 0;
b[3]:long@4 = 0L;
b[1]:long@4 = 0L;
b[0]:int = d;
d = a[8]:int;
b[1]:int = c;
if (eqz(d)) goto B_b;
b = a[14]:int;
c = a[8]:int;
c[3]:int = a[10]:int;
runtime_chanDebug(c, a, a);
runtime_interrupt_Restore(b, a, a);
a[60]:byte = 1;
b = 255;
label B_h:
if (b) goto B_i;
b = a[11]:int;
if (eqz(b)) goto B_a;
b[1]:int = 0;
c = a[12]:int;
d = a[11]:int;
var e:byte_ptr = a[13]:int;
var f:long = b[1]:long;
b[1]:long = 0L;
e[0] = f == 1L;
returnTo(d, c, a, a);
runtime_free(a, a, a);
label B_i:
return ;
label B_g:
runtime_nilPanic(a, 0);
unreachable;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_nilPanic(a, 0);
unreachable;
label B_c:
runtime_nilPanic(a, 0);
unreachable;
label B_b:
runtime_nilPanic(a, 0);
unreachable;
label B_a:
runtime_nilPanic(a, 0);
unreachable;
}
function runtime_free(a:int, b:int, c:int) {
}
function runtime_chanClose(a:byte_ptr, b:int, c:int) {
var e:int;
if (a) goto B_a;
runtime_runtimePanic(65893, 20, a, a);
label B_a:
var d:int = runtime_interrupt_Disable(a, a);
if (a) goto B_b;
runtime_nilPanic(a, 0);
unreachable;
label B_b:
e = a + 8;
if (eqz(e)) goto B_f;
e = e[0]:ubyte;
if (e == 4) goto B_d;
goto B_e;
label B_f:
runtime_nilPanic(a, 0);
unreachable;
label B_e:
if (e != 2) goto B_g;
runtime_interrupt_Restore(d, a, a);
runtime_runtimePanic(65936, 25, a, a);
goto B_c;
label B_g:
if (e != 1) goto B_c;
if (a) goto B_h;
runtime_nilPanic(a, 0);
unreachable;
label B_h:
e = a + 8;
if (eqz(e)) goto B_j;
e[0]:byte = 4;
if (eqz(a)) goto B_k;
e = a + 12;
loop L_l {
if (eqz(e)) goto B_i;
if (eqz(e[0]:int)) goto B_c;
resumeRX(a, 0, a, a);
if (a) continue L_l;
}
label B_k:
runtime_nilPanic(a, 0);
unreachable;
label B_j:
runtime_nilPanic(a, 0);
unreachable;
label B_i:
runtime_nilPanic(a, 0);
unreachable;
label B_d:
runtime_interrupt_Restore(d, a, a);
runtime_runtimePanic(65913, 23, a, a);
label B_c:
if (a) goto B_m;
runtime_nilPanic(a, 0);
unreachable;
label B_m:
if (a == -8) goto B_n;
a[8] = 4;
runtime_interrupt_Restore(d, a, a);
runtime_chanDebug(a, a, a);
return ;
label B_n:
runtime_nilPanic(a, 0);
unreachable;
}
function runtime_initHeap(a:int, b:int) {
}
function runtime_ticks(a:int, b:int):long {
var c:long_ptr;
runtime_clock_time_get(0, 1000L, c = runtime_alloc(8, c, 0));
return c[0];
}
function runtime_postinit(a:int, b:int) {
}
export function start() {
var a:int;
d_b[0]:int = 66364;
0[16538]:int = memory_size() << 16;
wasm_call_ctors();
runtime_run(a, a);
}
function runtime_run(a:int, b:int) {
var c:int;
runtime_initHeap(c, c);
runtime_run_1(c, internal_task_createTask(c, c));
runtime_scheduler(c, c);
}
function runtime_run_1(a:int, b:int) {
var c:{ a:int, b:int, c:int, d:int, e:byte }
c = runtime_alloc(20, c, c);
c.c = b;
c.b = 7;
c.a = 8;
c.d = setState(b, c, c, c);
runtime_initAll(c, c);
runtime_postinit(c, c);
main_main(c, b);
c.e = 0;
Lcoro_devirt_trigger(0);
}
function runtime_scheduler(a:int, b:int) {
var d:int;
var c:long = 0L;
loop L_b {
if (0[66332]:ubyte) goto B_k;
runtime_scheduleLog(0, 0, d, d);
runtime_scheduleLog(65961, 10, d, d);
if (eqz(0[16584]:int)) goto B_l;
c = runtime_ticks(d, d);
label B_l:
if (eqz(0[16584]:int)) goto B_c;
d = 0[16584]:int;
if (d) goto B_m;
runtime_nilPanic(d, 0);
unreachable;
label B_m:
d = d + 8;
if (eqz(d)) goto B_j;
if (c - 0[8293]:long < d[0]:long) goto B_c;
runtime_scheduleLogTask(65971, 8, d = 0[16584]:int, d, d);
if (eqz(d)) goto B_i;
if (d == -8) goto B_h;
0[8293]:long = 0[8293]:long + d[1]:long;
if (eqz(d)) goto B_g;
if (eqz(d)) goto B_f;
0[16584]:int = d[0]:int;
if (eqz(d)) goto B_e;
if (eqz(d)) goto B_d;
d[0]:int = 0;
Push(66280, d, d, d);
goto B_c;
label B_k:
return ;
label B_j:
runtime_nilPanic(d, 0);
unreachable;
label B_i:
runtime_nilPanic(d, 0);
unreachable;
label B_h:
runtime_nilPanic(d, 0);
unreachable;
label B_g:
runtime_nilPanic(d, 0);
unreachable;
label B_f:
runtime_nilPanic(d, 0);
unreachable;
label B_e:
runtime_nilPanic(d, 0);
unreachable;
label B_d:
runtime_nilPanic(d, 0);
unreachable;
label B_c:
d = Pop(66280, d, d);
if (d) goto B_o;
if (0[16584]:int) goto B_n;
runtime_waitForEvents(d, d);
continue L_b;
label B_o:
runtime_scheduleLogTask(65979, 6, d, d, d);
Resume(d, d, d);
continue L_b;
label B_n:
d = 0[16584]:int;
if (eqz(d)) goto B_a;
d = d + 8;
if (eqz(d)) goto B_p;
runtime_sleepTicks(d[0]:long + 0[8293]:long - c, d, d);
continue L_b;
label B_p:
}
runtime_nilPanic(d, 0);
unreachable;
label B_a:
runtime_nilPanic(d, 0);
unreachable;
}
function runtime_run_1_destroy(a:int) {
Lcoro_devirt_trigger(0);
runtime_free(a, a, a);
}
function runtime_run_1_resume(a:int_ptr) {
Lcoro_devirt_trigger(0);
0[66332]:byte = 1;
returnTo(a[2], a[3], a, a);
runtime_free(a, a, a);
}
function runtime_initAll(a:int, b:int) {
var c:int;
0[16538]:int = memory_size() << 16;
runtime_init_1(c, c);
}
function main_main(a:int, b:int) {
var c:int;
c = runtime_alloc(44, c, c);
c[8]:int = b;
c[1]:int = 9;
c[0]:int = 10;
c[9]:int = setState(b, c, c, c);
Do(66352, c, 1, c, b);
c[40]:byte = 0;
Lcoro_devirt_trigger(0);
}
function runtime_scheduleLog(a:int, b:int, c:int, d:int) {
}
function runtime_scheduleLogTask(a:int, b:int, c:int, d:int, e:int) {
}
function runtime_waitForEvents(a:int, b:int) {
var c:int;
runtime_runtimePanic(65985, 27, c, c);
}
function runtime_sleepTicks(a:long, b:int, c:int) {
d_b[8]:long = a;
runtime_poll_oneoff(66064, 66296, 1, 66328);
}
function main_main_destroy(a:ubyte_ptr) {
if (a[40]) goto B_a;
Lcoro_devirt_trigger(0);
label B_a:
runtime_free(a, a, a);
}
function main_main_resume(a:int) {
var b:int = 0;
if (a[40]:ubyte) goto B_a;
Lcoro_devirt_trigger(0);
b = d_b[22]:int;
var c:int = a[8]:int;
setReturnPtr(c, a + 41, a, a);
runtime_chanRecv(b, a + 32, a + 8, a, c);
a[40]:byte = 1;
b = 255;
label B_a:
if (b) goto B_b;
returnTo(a[8]:int, a[9]:int, a, a);
runtime_free(a, a, a);
label B_b:
}
function main_main_1(a:int, b:int) {
var c:int;
runtime_chanClose(d_b[22]:int, c, 0);
}
function LNoopCoro_ResumeDestroy(a:int) {
}
export memory memory(initial: 2, max: 0);
global g_a:int = 65536;
table T_a:funcref(min: 8, max: 8);
data d_syncunlockofunlockedMutexpro(offset: 65536) =
"sync: unlock of unlocked Mutex/proc/self/exeout of memorypanic: runtim"
"e error: index out of rangenil pointer dereferenceslice out of rangepa"
"nic: close of closed channelclose channel during senddeadlocked: no ev"
"ent source\00\00\00\00\07\00\00\00\07\00\00\00";
data d_b(offset: 65768) =
"\c8\01\01\00\00\00\00\00\fc\00\01\00\01\00\00\00\01\00\00\00\1e\00\01\00"
"\0e\00\00\004\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
"\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c8\01\01\00";
import function runtime_fd_write(a:int, b:int, c:int, d:int):int;
import function runtime_args_sizes_get(a:int, b:int):int;
import function runtime_args_get(a:int, b:int):int;
function wasm_call_ctors() {
}
function strlen(a:ubyte_ptr):int {
var c:int;
var d:int;
var b:int = a;
if (eqz(a & 3)) goto B_c;
if (a[0]) goto B_d;
return a - a;
label B_d:
b = a + 1;
loop L_e {
if (eqz(b & 3)) goto B_c;
c = b[0]:ubyte;
d = b + 1;
b = d;
if (eqz(c)) goto B_b;
continue L_e;
}
label B_c:
b = b + -4;
loop L_f {
b = b + 4;
c = b[0]:int;
if (eqz(((c ^ -1) & c + -16843009) & -2139062144)) continue L_f;
}
if (c & 255) goto B_g;
return b - a;
label B_g:
loop L_h {
c = b[1]:ubyte;
d = b + 1;
b = d;
if (c) continue L_h;
goto B_a;
}
label B_b:
d = d + -1;
label B_a:
return d - a;
}
function memset(a:{ a:byte, b:byte, c:byte, d:byte }, b:long_ptr, c:int):int {
var e:int;
var f:int;
if (eqz(c)) goto B_a;
a.a = b;
var d:{ a:int, b:int, c:int, d:int, e:int, f:int, g:int } = c + a;
(d + -1)[0]:byte = b;
if (c < 3) goto B_a;
a.c = b;
a.b = b;
(d + -3)[0]:byte = b;
(d + -2)[0]:byte = b;
if (c < 7) goto B_a;
a.d = b;
(d + -4)[0]:byte = b;
if (c < 9) goto B_a;
d = a + (e = 0 - a & 3);
d.a = (b = (b & 255) * 16843009);
c = d + (e = c - e & -4);
(c + -4)[0]:int = b;
if (e < 9) goto B_a;
d.c = b;
d.b = b;
(c + -8)[0]:int = b;
(c + -12)[0]:int = b;
if (e < 25) goto B_a;
d.g = b;
d.f = b;
d.e = b;
d.d = b;
(c + -16)[0]:int = b;
(c + -20)[0]:int = b;
(c + -24)[0]:int = b;
(c + -28)[0]:int = b;
c = e - (f = (d & 4) | 24);
if (c < 32) goto B_a;
var g:long = i64_extend_i32_u(b);
g = g << 32L | g;
b = d + f;
loop L_b {
b[0] = g;
(b + 24)[0]:long = g;
(b + 16)[0]:long = g;
(b + 8)[0]:long = g;
b = b + 32;
c = c + -32;
if (c > 31) continue L_b;
}
label B_a:
return a;
}
function Push(a:int_ptr) {
var b:int_ptr = 0[16492]:int;
if (eqz(b)) goto B_a;
b[0] = a;
label B_a:
0[16492]:int = a;
if (eqz(a)) goto B_b;
a[0] = 0;
if (0[16491]:int) goto B_c;
0[16491]:int = a;
label B_c:
return ;
label B_b:
runtime_nilPanic();
unreachable;
}
function runtime_nilPanic() {
runtime_runtimePanic(65633, 23)
}
function returnTo(a:int_ptr, b:int) {
if (a) goto B_a;
runtime_nilPanic();
unreachable;
label B_a:
a[4] = b;
Push(a);
}
function setState(a:int_ptr, b:int):int {
if (a) goto B_a;
runtime_nilPanic();
unreachable;
label B_a:
var c:int = a[4];
a[4] = b;
return c;
}
function Unlock(a:int) {
var b:int_ptr;
if (a) goto B_a;
runtime_nilPanic();
unreachable;
label B_a:
if (eqz(a[0]:ubyte)) goto B_c;
b = a[1]:int;
if (b) goto B_b;
a[0]:byte = 0;
return ;
label B_c:
runtime_panic();
unreachable;
label B_b:
a[1]:int = b[0];
b[0] = 0;
Push(b);
}
function runtime_panic() {
runtime_printstring(65674, 7);
runtime_printitf();
runtime_printnl();
unreachable;
unreachable;
}
function Do(a:int, b:int, c:int, d:int, e:int_ptr) {
var f:int = runtime_alloc(32);
f[5]:int = e;
f[1]:int = 1;
f[0]:int = 2;
f[6]:int = setState(e, f);
if (eqz(0[65984]:ubyte)) goto B_c;
if (eqz(e)) goto B_a;
var g:int = 0[16497]:int;
0[16497]:int = e;
e[0] = g;
goto B_b;
label B_c:
0[65984]:byte = 1;
Push(e);
label B_b:
f[28]:byte = 0;
return ;
label B_a:
runtime_nilPanic();
unreachable;
}
function runtime_alloc(a:int):int {
var b:int;
var c:int;
d_b[0]:int = (a = (b = d_b[0]:int) + (c = a + 3 & -4));
loop L_b {
if (a >= 0[16459]:int) goto B_c;
a = 0;
loop L_d {
if (a >= c) goto B_a;
(b + a)[0]:int = 0;
a = a + 4;
continue L_d;
}
label B_c:
if (memory_grow(memory_size()) == -1) goto B_f;
0[16459]:int = memory_size() << 16;
goto B_e;
label B_f:
runtime_runtimePanic(65580, 13);
label B_e:
a = d_b[0]:int;
continue L_b;
}
label B_a:
return b;
}
function Do_destroy(a:int) {
}
function Do_resume(a:int) {
var c:{ a:int, b:int, c:int }
a[1]:long = 0L;
(a + 16)[0]:int = 65984;
var b:int_ptr = a + 8;
if (eqz(0[65980]:ubyte)) goto B_b;
loop L_c {
if (eqz(b)) goto B_a;
c = b[1];
Unlock(b[2]);
b = c;
continue L_c;
}
label B_b:
0[65980]:byte = 1;
br_table[B_g, B_h, B_e, B_f, ..B_e](d_b[44]:ubyte + -1)
label B_h:
runtime_runtimePanic(65704, 25);
goto B_e;
label B_g:
d_b[44]:byte = 4;
loop L_i {
c = d_b[12]:int;
if (eqz(c)) goto B_e;
d_b[12]:int = c.a;
var d:int = c.b;
if (eqz(d)) goto B_d;
memset(d[1]:int, 0, d_b[9]:int);
d = c.b;
if (eqz(d)) goto B_d;
d[1]:long = 0L;
d = c.c;
if (eqz(d)) goto B_j;
var e:int_ptr = c.b;
if (eqz(e)) goto B_d;
e[1] = d;
detach(c);
label B_j:
Push(c.b);
continue L_i;
}
label B_f:
runtime_runtimePanic(65681, 23);
label B_e:
d_b[44]:byte = 4;
loop L_k {
if (eqz(b)) goto B_a;
c = b[1];
Unlock(b[2]);
b = c;
continue L_k;
}
label B_d:
runtime_nilPanic();
unreachable;
label B_a:
returnTo(a[5]:int, a[6]:int);
}
function runtime_runtimePanic(a:int, b:int) {
runtime_printstring(65593, 22);
runtime_printstring(a, b);
runtime_printnl();
unreachable;
unreachable;
}
function runtime_printstring(a:ubyte_ptr, b:int) {
b = select_if(b, 0, b > 0);
loop L_b {
if (eqz(b)) goto B_a;
runtime_putchar(a[0]);
a = a + 1;
b = b + -1;
continue L_b;
}
label B_a:
}
function runtime_printnl() {
runtime_putchar(13);
runtime_putchar(10);
}
function runtime_putchar(a:int) {
var b:int;
var c:int;
b = 0[16460]:int;
if (b <= 119) goto B_a;
runtime_lookupPanic();
unreachable;
label B_a:
0[16460]:int = (c = b + 1);
(b + 65844)[0]:byte = a;
if ((a & 255) == 10) goto B_c;
if (b != 119) goto B_b;
label B_c:
d_b[8]:int = c;
runtime_fd_write(1, 65796, 1, 65972);
0[16460]:int = 0;
label B_b:
}
function runtime_lookupPanic() {
runtime_runtimePanic(65615, 18)
}
function runtime_slicePanic() {
runtime_runtimePanic(65656, 18)
}
function detach(a:int_ptr) {
var l:int_ptr;
if (eqz(a)) goto B_a;
var b:int = a[3];
if (eqz(b)) goto B_c;
var c:int = -1;
var d:int = (a + 16)[0]:int;
var e:int = select_if(d, 0, d > 0) + -1;
var f:int = d + -1;
loop L_d {
if (c == e) goto B_c;
if (c == f) goto B_b;
c = c + 1;
if (c >= a[4]) goto B_b;
var g:int = a[3];
var h:int_ptr = g + (d = c * 24);
if (h == a) continue L_d;
d = b + d;
if (eqz(d[1]:int)) continue L_d;
var i:{ a:int, b:int } = d[2]:int;
if (eqz(i)) goto B_a;
var j:int_ptr = i.a;
if (eqz(j)) goto B_a;
var k:int = j[3];
d = k;
if (k != h) goto B_f;
if (eqz(g)) goto B_a;
k = h[0];
goto B_e;
label B_f:
loop L_g {
l = d;
if (eqz(l)) goto B_e;
d = l[0];
if (d != h) continue L_g;
}
if (eqz(g)) goto B_a;
l[0] = h[0];
label B_e:
j[3] = k;
d = i.a;
if (eqz(d)) goto B_a;
if (d[3]:int) continue L_d;
if (i.b) goto B_i;
if (d[8]:ubyte == 4) continue L_d;
goto B_h;
label B_i:
if (eqz(d[6]:int)) goto B_h;
d[8]:byte = 3;
continue L_d;
label B_h:
d[8]:byte = 0;
continue L_d;
}
label B_c:
return ;
label B_b:
runtime_lookupPanic();
unreachable;
label B_a:
runtime_nilPanic();
unreachable;
}
function runtime_printitf() {
runtime_printstring(65536, 30)
}
export function start() {
0[16459]:int = memory_size() << 16;
wasm_call_ctors();
var a:int_ptr = runtime_alloc(24);
a[4] = 65760;
runtime_run_1(a, a);
loop L_a {
if (0[65976]:ubyte) goto B_c;
a = 0[16491]:int;
if (eqz(a)) goto B_b;
0[16491]:int = a[0];
if (0[16492]:int != a) goto B_d;
0[16492]:int = 0;
label B_d:
a[0] = 0;
a = a[4];
call_indirect(a, a[0]);
continue L_a;
label B_c:
return ;
label B_b:
runtime_runtimePanic(65729, 27);
continue L_a;
}
}
function runtime_run_1(a:int, b:int) {
var i:int;
var g:int;
var c:int_ptr = g_a - 16;
g_a = c;
var d:{ a:int, b:int, c:int, d:int, e:byte } = runtime_alloc(20);
d.c = b;
d.b = 3;
d.a = 4;
d.d = setState(b, d);
0[16459]:int = memory_size() << 16;
c[3] = 0;
c[2] = 0;
runtime_args_sizes_get(c + 12, c + 8);
var e:int = c[3];
if (eqz(e)) goto B_c;
if (e < 0) goto B_b;
var f:int_ptr = runtime_alloc(e << 2);
g = c[2];
if (g <= -1) goto B_b;
var h:int_ptr = runtime_alloc(g);
if (eqz(g)) goto B_a;
runtime_args_get(f, h);
g = 0;
h = runtime_alloc(e << 3);
d_b[4]:int = e;
d_b[3]:int = e;
d_b[2]:int = h;
loop L_d {
if (e == g) goto B_c;
if (g >= e) goto B_a;
(h + 4)[0]:int = strlen(i = f[0]);
h[0] = i;
f = f + 4;
h = h + 8;
g = g + 1;
continue L_d;
}
label B_c:
main_main(g, b);
d.e = 0;
g_a = c + 16;
return ;
label B_b:
runtime_slicePanic();
unreachable;
label B_a:
runtime_lookupPanic();
unreachable;
}
function runtime_run_1_destroy(a:int) {
}
function runtime_run_1_resume(a:int_ptr) {
0[65976]:byte = 1;
returnTo(a[2], a[3]);
}
function main_main(a:int, b:int) {
var c:int = runtime_alloc(44);
c[8]:int = b;
c[1]:int = 5;
c[0]:int = 6;
c[9]:int = setState(b, c);
Do(65980, c, 1, c, b);
c[40]:byte = 0;
}
function main_main_destroy(a:int) {
}
function main_main_resume(a:int) {
var b:int_ptr = a[8]:int;
if (a[40]:ubyte) goto B_c;
if (b) goto B_b;
goto B_a;
label B_c:
if (eqz(b)) goto B_a;
b[4] = a[9]:int;
Push(b);
return ;
label B_b:
unreachable;
unreachable;
label B_a:
runtime_nilPanic();
unreachable;
}
function LNoopCoro_ResumeDestroy(a:int) {
}
_start () {
store.i32 0x1012c , 131072
__wasm_call_ctors () {
}
runtime.alloc (i32: 24) {
load.i32 0x100e8 = 65992
store.i32 0x100e8 , 66016
iter {
load.i32 0x1012c = 131072
iter {
store.i32 0x101c8 , 0
}
iter {
store.i32 0x101cc , 0
}
iter {
store.i32 0x101d0 , 0
}
iter {
store.i32 0x101d4 , 0
}
iter {
store.i32 0x101d8 , 0
}
iter {
store.i32 0x101dc , 0
}
iter {
}
}
} = 65992
store.i32 0x101d8 , 65760
runtime.run$1 (i32: 65992, i32: 65992) {
runtime.alloc (i32: 20) {
load.i32 0x100e8 = 66016
store.i32 0x100e8 , 66036
iter {
load.i32 0x1012c = 131072
iter {
store.i32 0x101e0 , 0
}
iter {
store.i32 0x101e4 , 0
}
iter {
store.i32 0x101e8 , 0
}
iter {
store.i32 0x101ec , 0
}
iter {
store.i32 0x101f0 , 0
}
iter {
}
}
} = 66016
store.i32 0x101e8 , 65992
store.i32 0x101e4 , 3
store.i32 0x101e0 , 4
(*internal/task.Task).setState (i32: 65992, i32: 66016) {
load.i32 0x101d8 = 65760
store.i32 0x101d8 , 66016
} = 65760
store.i32 0x101ec , 65760
store.i32 0x1012c , 131072
store.i32 0xfffc , 0
store.i32 0xfff8 , 0
wasi_snapshot_preview1!args_sizes_get(65532, 65528) { <native> } = 0
load.i32 0xfffc = 1
runtime.alloc (i32: 4) {
load.i32 0x100e8 = 66036
store.i32 0x100e8 , 66040
iter {
load.i32 0x1012c = 131072
iter {
store.i32 0x101f4 , 0
}
iter {
}
}
} = 66036
load.i32 0xfff8 = 13
runtime.alloc (i32: 13) {
load.i32 0x100e8 = 66040
store.i32 0x100e8 , 66056
iter {
load.i32 0x1012c = 131072
iter {
store.i32 0x101f8 , 0
}
iter {
store.i32 0x101fc , 0
}
iter {
store.i32 0x10200 , 0
}
iter {
store.i32 0x10204 , 0
}
iter {
}
}
} = 66040
wasi_snapshot_preview1!args_get(66036, 66040) { <native> } = 0
runtime.alloc (i32: 8) {
load.i32 0x100e8 = 66056
store.i32 0x100e8 , 66064
iter {
load.i32 0x1012c = 131072
iter {
store.i32 0x10208 , 0
}
iter {
store.i32 0x1020c , 0
}
iter {
}
}
} = 66056
store.i32 0x100f8 , 1
store.i32 0x100f4 , 1
store.i32 0x100f0 , 66056
iter {
load.i32 0x101f4 = 66040
strlen (i32: 66040) {
iter {
load.i32 0x101f8 = 1935766115
}
iter {
load.i32 0x101fc = 779249000
}
iter {
load.i32 0x10200 = 1836278135
}
iter {
load.i32 0x10204 = 0
}
} = 12
store.i32 0x1020c , 12
store.i32 0x10208 , 66040
}
iter {
main.main (i32: 1, i32: 65992) {
runtime.alloc (i32: 44) {
load.i32 0x100e8 = 66064
store.i32 0x100e8 , 66108
iter {
load.i32 0x1012c = 131072
iter {
store.i32 0x10210 , 0
}
iter {
store.i32 0x10214 , 0
}
iter {
store.i32 0x10218 , 0
}
iter {
store.i32 0x1021c , 0
}
iter {
store.i32 0x10220 , 0
}
iter {
store.i32 0x10224 , 0
}
iter {
store.i32 0x10228 , 0
}
iter {
store.i32 0x1022c , 0
}
iter {
store.i32 0x10230 , 0
}
iter {
store.i32 0x10234 , 0
}
iter {
store.i32 0x10238 , 0
}
iter {
}
}
} = 66064
store.i32 0x10230 , 65992
store.i32 0x10214 , 5
store.i32 0x10210 , 6
(*internal/task.Task).setState (i32: 65992, i32: 66064) {
load.i32 0x101d8 = 66016
store.i32 0x101d8 , 66064
} = 66016
store.i32 0x10234 , 66016
(*sync.Once).Do (i32: 65980, i32: 66064, i32: 1, i32: 66064, i32: 65992) {
runtime.alloc (i32: 32) {
load.i32 0x100e8 = 66108
store.i32 0x100e8 , 66140
iter {
load.i32 0x1012c = 131072
iter {
store.i32 0x1023c , 0
}
iter {
store.i32 0x10240 , 0
}
iter {
store.i32 0x10244 , 0
}
iter {
store.i32 0x10248 , 0
}
iter {
store.i32 0x1024c , 0
}
iter {
store.i32 0x10250 , 0
}
iter {
store.i32 0x10254 , 0
}
iter {
store.i32 0x10258 , 0
}
iter {
}
}
} = 66108
store.i32 0x10250 , 65992
store.i32 0x10240 , 1
store.i32 0x1023c , 2
(*internal/task.Task).setState (i32: 65992, i32: 66108) {
load.i32 0x101d8 = 66064
store.i32 0x101d8 , 66108
} = 66064
store.i32 0x10254 , 66064
load.i32 0x101c0 = 0
store.i32 0x101c0 , 1
(*internal/task.Queue).Push (i32: 65992) {
load.i32 0x101b0 = 0
store.i32 0x101b0 , 65992
store.i32 0x101c8 , 0
load.i32 0x101ac = 0
store.i32 0x101ac , 65992
}
store.i32 0x10258 , 0
}
store.i32 0x10238 , 0
}
store.i32 0x101f0 , 0
}
}
iter {
load.i32 0x101b8 = 0
load.i32 0x101ac = 65992
load.i32 0x101c8 = 0
store.i32 0x101ac , 0
load.i32 0x101b0 = 65992
store.i32 0x101b0 , 0
store.i32 0x101c8 , 0
load.i32 0x101d8 = 66108
load.i32 0x1023c = 2
(*sync.Once).Do.resume (i32: 66108) {
store.i64 0x10244 , 0
store.i32 0x1024c , 65984
load.i32 0x101bc = 0
store.i32 0x101bc , 1
load.i32 0x10114 = 0
store.i32 0x10114 , 4
iter {
load.i32 0x10248 = 0
load.i32 0x1024c = 65984
(*sync.Mutex).Unlock (i32: 65984) {
load.i32 0x101c0 = 1
load.i32 0x101c4 = 0
store.i32 0x101c0 , 0
}
}
iter {
load.i32 0x10250 = 65992
load.i32 0x10254 = 66064
(*internal/task.Task).returnTo (i32: 65992, i32: 66064) {
store.i32 0x101d8 , 66064
(*internal/task.Queue).Push (i32: 65992) {
load.i32 0x101b0 = 0
store.i32 0x101b0 , 65992
store.i32 0x101c8 , 0
load.i32 0x101ac = 0
store.i32 0x101ac , 65992
}
}
}
}
}
iter {
load.i32 0x101b8 = 0
load.i32 0x101ac = 65992
load.i32 0x101c8 = 0
store.i32 0x101ac , 0
load.i32 0x101b0 = 65992
store.i32 0x101b0 , 0
store.i32 0x101c8 , 0
load.i32 0x101d8 = 66064
load.i32 0x10210 = 6
main.main.resume (i32: 66064) {
load.i32 0x10230 = 65992
load.i32 0x10238 = 0
} !trap = [trap] unreachable executed
}
} !trap = [trap] unreachable executed
Error: [trap] unreachable executed
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64--darwin"
%runtime.interfaceMethodInfo.1 = type { i8*, i64 }
%"internal/task.Queue" = type { %"internal/task.Task"*, %"internal/task.Task"* }
%"internal/task.Task" = type { %"internal/task.Task"*, i8*, i64, %"internal/task.state" }
%"internal/task.state" = type { i8* }
%sync.Once = type { i1, %sync.Mutex }
%sync.Mutex = type { i1, %"internal/task.Stack" }
%"internal/task.Stack" = type { %"internal/task.Task"* }
%NoopCoro.Frame = type { void (%NoopCoro.Frame*)*, void (%NoopCoro.Frame*)* }
%"(*sync.Once).Do.Frame" = type { void (%"(*sync.Once).Do.Frame"*)*, void (%"(*sync.Once).Do.Frame"*)*, { i64, %runtime._defer*, %sync.Mutex* }, i8*, i8*, i1 }
%runtime._defer = type { i64, %runtime._defer* }
%runtime.chanRecv.Frame = type { void (%runtime.chanRecv.Frame*)*, void (%runtime.chanRecv.Frame*)*, i8*, i8*, i1*, i1 }
%main.main.Frame = type { void (%main.main.Frame*)*, void (%main.main.Frame*)*, %runtime.channelBlockedList, i8*, i8*, {}, i1, i8 }
%runtime.channelBlockedList = type { %runtime.channelBlockedList*, %"internal/task.Task"*, %runtime.chanSelectState*, { %runtime.channelBlockedList*, i64, i64 } }
%runtime.chanSelectState = type { %runtime.channel*, i8* }
%runtime.channel = type { i64, i64, i8, %runtime.channelBlockedList*, i64, i64, i64, i8* }
%"runtime.run$1.Frame" = type { void (%"runtime.run$1.Frame"*)*, void (%"runtime.run$1.Frame"*)*, i8*, i8*, i1 }
@"(*sync.Mutex).Unlock$string" = internal unnamed_addr constant [30 x i8] c"sync: unlock of unlocked Mutex", align 1
@runtime.args = internal unnamed_addr global { %runtime.interfaceMethodInfo.1*, i64, i64 } { %runtime.interfaceMethodInfo.1* bitcast ({ [14 x i8]*, [8 x i8] }* @"runtime$alloc" to %runtime.interfaceMethodInfo.1*), i64 1, i64 1 }, align 8, !dbg !0
@"runtime$alloc" = internal global { [14 x i8]*, [8 x i8] } { [14 x i8]* @"runtime.init$string", [8 x i8] c"\0E\00\00\00\00\00\00\00" }, align 8
@"runtime.init$string" = internal unnamed_addr constant [14 x i8] c"/proc/self/exe", align 1
@runtime.heapSize = internal unnamed_addr global i64 131072, align 8, !dbg !15
@runtime.heapStart = internal unnamed_addr global i64 0, align 8, !dbg !18
@runtime.heapptr = internal unnamed_addr global i64 0, align 8, !dbg !20
@runtime.runqueue = internal unnamed_addr global %"internal/task.Queue" zeroinitializer, align 8, !dbg !23
@runtime.heapEnd = internal unnamed_addr global i64 0, align 8, !dbg !47
@runtime.schedulerDone = internal unnamed_addr global i1 false, align 1, !dbg !49
@"runtime.alloc$string" = internal unnamed_addr constant [13 x i8] c"out of memory", align 1
@"runtime.runtimePanic$string" = internal unnamed_addr constant [22 x i8] c"panic: runtime error: ", align 1
@"runtime.nilPanic$string" = internal unnamed_addr constant [23 x i8] c"nil pointer dereference", align 1
@"runtime.lookupPanic$string" = internal unnamed_addr constant [18 x i8] c"index out of range", align 1
@"(*runtime.channel).tryRecv$string" = internal unnamed_addr constant [21 x i8] c"invalid channel state", align 1
@"runtime._panic$string" = internal unnamed_addr constant [7 x i8] c"panic: ", align 1
@"runtime.chanClose$string.9" = internal unnamed_addr constant [23 x i8] c"close of closed channel", align 1
@"runtime.chanClose$string.10" = internal unnamed_addr constant [25 x i8] c"close channel during send", align 1
@"runtime.waitForEvents$string" = internal unnamed_addr constant [27 x i8] c"deadlocked: no event source", align 1
@main.once = internal global %sync.Once zeroinitializer, align 8, !dbg !52
@"main$alloc" = internal global {} zeroinitializer, align 8
@"main$alloc.60" = internal global { [56 x i8], {}* } { [56 x i8] zeroinitializer, {}* @"main$alloc" }, align 8
@NoopCoro.Frame.Const = private constant %NoopCoro.Frame { void (%NoopCoro.Frame*)* @NoopCoro.ResumeDestroy, void (%NoopCoro.Frame*)* @NoopCoro.ResumeDestroy }
@"(*sync.Once).Do.resumers" = private constant [3 x void (%"(*sync.Once).Do.Frame"*)*] [void (%"(*sync.Once).Do.Frame"*)* @"(*sync.Once).Do.resume", void (%"(*sync.Once).Do.Frame"*)* @"(*sync.Once).Do.destroy", void (%"(*sync.Once).Do.Frame"*)* @"(*sync.Once).Do.cleanup"]
@runtime.chanRecv.resumers = private constant [3 x void (%runtime.chanRecv.Frame*)*] [void (%runtime.chanRecv.Frame*)* @runtime.chanRecv.resume, void (%runtime.chanRecv.Frame*)* @runtime.chanRecv.destroy, void (%runtime.chanRecv.Frame*)* @runtime.chanRecv.cleanup]
@main.main.resumers = private constant [3 x void (%main.main.Frame*)*] [void (%main.main.Frame*)* @main.main.resume, void (%main.main.Frame*)* @main.main.destroy, void (%main.main.Frame*)* @main.main.cleanup]
@"runtime.run$1.resumers" = private constant [3 x void (%"runtime.run$1.Frame"*)*] [void (%"runtime.run$1.Frame"*)* @"runtime.run$1.resume", void (%"runtime.run$1.Frame"*)* @"runtime.run$1.destroy", void (%"runtime.run$1.Frame"*)* @"runtime.run$1.cleanup"]
; Function Attrs: nounwind readnone speculatable willreturn
declare void @llvm.dbg.value(metadata, metadata, metadata) #0
; Function Attrs: optsize
define internal fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* dereferenceable_or_null(32) %t) unnamed_addr #1 !dbg !163 {
entry:
call void @llvm.dbg.value(metadata %"internal/task.Queue"* @runtime.runqueue, metadata !179, metadata !DIExpression()), !dbg !187
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !180, metadata !DIExpression()), !dbg !187
call void @llvm.dbg.value(metadata i64 0, metadata !181, metadata !DIExpression()), !dbg !188
%0 = load %"internal/task.Task"*, %"internal/task.Task"** getelementptr inbounds (%"internal/task.Queue", %"internal/task.Queue"* @runtime.runqueue, i64 0, i32 1), align 8, !dbg !189
%.not = icmp eq %"internal/task.Task"* %0, null, !dbg !190
br i1 %.not, label %store.next18, label %gep.next14, !dbg !191
if.done4: ; preds = %store.next30, %gep.next20
call void @llvm.dbg.value(metadata i64 0, metadata !181, metadata !DIExpression()), !dbg !192
ret void, !dbg !193
gep.next14: ; preds = %entry
call void @llvm.dbg.value(metadata %"internal/task.Queue"* @runtime.runqueue, metadata !179, metadata !DIExpression()), !dbg !194
%1 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %0, i64 0, i32 0, !dbg !195
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !180, metadata !DIExpression()), !dbg !196
store %"internal/task.Task"* %t, %"internal/task.Task"** %1, align 8, !dbg !195
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !183, metadata !DIExpression()), !dbg !195
br label %store.next18, !dbg !191
store.next18: ; preds = %entry, %gep.next14
call void @llvm.dbg.value(metadata %"internal/task.Queue"* @runtime.runqueue, metadata !179, metadata !DIExpression()), !dbg !197
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !180, metadata !DIExpression()), !dbg !198
store %"internal/task.Task"* %t, %"internal/task.Task"** getelementptr inbounds (%"internal/task.Queue", %"internal/task.Queue"* @runtime.runqueue, i64 0, i32 1), align 8, !dbg !199
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !185, metadata !DIExpression()), !dbg !199
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !180, metadata !DIExpression()), !dbg !200
%2 = icmp eq %"internal/task.Task"* %t, null, !dbg !201
br i1 %2, label %gep.throw19, label %gep.next20, !dbg !201
gep.throw19: ; preds = %store.next18
tail call fastcc void @runtime.nilPanic(), !dbg !201
unreachable, !dbg !201
gep.next20: ; preds = %store.next18
%3 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %t, i64 0, i32 0, !dbg !201
store %"internal/task.Task"* null, %"internal/task.Task"** %3, align 8, !dbg !201
call void @llvm.dbg.value(metadata %"internal/task.Task"* null, metadata !183, metadata !DIExpression()), !dbg !201
call void @llvm.dbg.value(metadata %"internal/task.Queue"* @runtime.runqueue, metadata !179, metadata !DIExpression()), !dbg !202
%4 = load %"internal/task.Task"*, %"internal/task.Task"** getelementptr inbounds (%"internal/task.Queue", %"internal/task.Queue"* @runtime.runqueue, i64 0, i32 0), align 8, !dbg !203
%5 = icmp eq %"internal/task.Task"* %4, null, !dbg !204
br i1 %5, label %store.next30, label %if.done4, !dbg !191
store.next30: ; preds = %gep.next20
call void @llvm.dbg.value(metadata %"internal/task.Queue"* @runtime.runqueue, metadata !179, metadata !DIExpression()), !dbg !205
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !180, metadata !DIExpression()), !dbg !206
store %"internal/task.Task"* %t, %"internal/task.Task"** getelementptr inbounds (%"internal/task.Queue", %"internal/task.Queue"* @runtime.runqueue, i64 0, i32 0), align 8, !dbg !207
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !186, metadata !DIExpression()), !dbg !207
br label %if.done4, !dbg !191
}
; Function Attrs: optsize
define internal fastcc void @"(*internal/task.Task).returnTo"(%"internal/task.Task"* dereferenceable_or_null(32) %t, i8* dereferenceable_or_null(1) %parent) unnamed_addr #1 !dbg !208 {
entry:
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !213, metadata !DIExpression()), !dbg !215
call void @llvm.dbg.value(metadata i8* %parent, metadata !214, metadata !DIExpression()), !dbg !215
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !213, metadata !DIExpression()), !dbg !216
%0 = icmp eq %"internal/task.Task"* %t, null, !dbg !217
br i1 %0, label %gep.throw, label %gep.next, !dbg !217
gep.throw: ; preds = %entry
tail call fastcc void @runtime.nilPanic(), !dbg !217
unreachable, !dbg !217
gep.next: ; preds = %entry
%1 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %t, i64 0, i32 3, i32 0, !dbg !217
call void @llvm.dbg.value(metadata i8* %parent, metadata !214, metadata !DIExpression()), !dbg !218
store i8* %parent, i8** %1, align 8, !dbg !218
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !213, metadata !DIExpression()), !dbg !219
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !220, metadata !DIExpression()), !dbg !225
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !220, metadata !DIExpression()), !dbg !227
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !228, metadata !DIExpression()), !dbg !233
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !228, metadata !DIExpression()), !dbg !235
tail call fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* nonnull %t), !dbg !236
ret void, !dbg !237
}
; Function Attrs: optsize
define internal fastcc i8* @"(*internal/task.Task).setState"(%"internal/task.Task"* nocapture dereferenceable_or_null(32) %t, i8* dereferenceable_or_null(1) %s) unnamed_addr #1 !dbg !238 {
entry:
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !240, metadata !DIExpression()), !dbg !243
call void @llvm.dbg.value(metadata i8* %s, metadata !241, metadata !DIExpression()), !dbg !243
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !240, metadata !DIExpression()), !dbg !244
%0 = icmp eq %"internal/task.Task"* %t, null, !dbg !245
br i1 %0, label %gep.throw, label %gep.next, !dbg !245
gep.throw: ; preds = %entry
tail call fastcc void @runtime.nilPanic(), !dbg !245
unreachable, !dbg !245
gep.next: ; preds = %entry
%1 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %t, i64 0, i32 3, i32 0, !dbg !245
%.unpack = load i8*, i8** %1, align 8, !dbg !245
call void @llvm.dbg.value(metadata %"internal/task.state" undef, metadata !242, metadata !DIExpression()), !dbg !246
call void @llvm.dbg.value(metadata %"internal/task.Task"* %t, metadata !240, metadata !DIExpression()), !dbg !247
call void @llvm.dbg.value(metadata i8* %s, metadata !241, metadata !DIExpression()), !dbg !248
store i8* %s, i8** %1, align 8, !dbg !248
ret i8* %.unpack, !dbg !249
}
; Function Attrs: optsize
define internal fastcc void @"(*sync.Mutex).Unlock"(%sync.Mutex* nocapture dereferenceable_or_null(16) %m) unnamed_addr #1 !dbg !250 {
entry:
call void @llvm.dbg.value(metadata %sync.Mutex* %m, metadata !269, metadata !DIExpression()), !dbg !272
call void @llvm.dbg.value(metadata %sync.Mutex* %m, metadata !269, metadata !DIExpression()), !dbg !273
%0 = icmp eq %sync.Mutex* %m, null, !dbg !274
br i1 %0, label %gep.throw, label %gep.next, !dbg !274
if.then: ; preds = %gep.next4
call void @llvm.dbg.value(metadata %"internal/task.Stack"* %7, metadata !275, metadata !DIExpression()), !dbg !289
call void @llvm.dbg.value(metadata %"internal/task.Task"* %9, metadata !286, metadata !DIExpression()), !dbg !291
%1 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %9, i64 0, i32 0, !dbg !292
%2 = bitcast %"internal/task.Task"* %9 to i64*, !dbg !292
%3 = load i64, i64* %2, align 8, !dbg !292
%4 = bitcast %"internal/task.Stack"* %7 to i64*, !dbg !293
store i64 %3, i64* %4, align 8, !dbg !293
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !287, metadata !DIExpression()), !dbg !293
store %"internal/task.Task"* null, %"internal/task.Task"** %1, align 8, !dbg !294
call void @llvm.dbg.value(metadata %"internal/task.Task"* null, metadata !288, metadata !DIExpression()), !dbg !294
call void @llvm.dbg.value(metadata i64 0, metadata !285, metadata !DIExpression()), !dbg !295
call void @llvm.dbg.value(metadata %"internal/task.Task"* %9, metadata !270, metadata !DIExpression()), !dbg !296
call void @llvm.dbg.value(metadata %"internal/task.Task"* %9, metadata !228, metadata !DIExpression()), !dbg !297
tail call fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* nonnull %9), !dbg !299
br label %if.done1, !dbg !300
if.done1: ; preds = %store.next, %if.then
ret void, !dbg !301
if.then2: ; preds = %gep.next
tail call fastcc void @runtime._panic(), !dbg !302
unreachable, !dbg !302
gep.throw: ; preds = %entry
tail call fastcc void @runtime.nilPanic(), !dbg !274
unreachable, !dbg !274
gep.next: ; preds = %entry
%5 = getelementptr inbounds %sync.Mutex, %sync.Mutex* %m, i64 0, i32 0, !dbg !274
%6 = load i1, i1* %5, align 1, !dbg !274
br i1 %6, label %gep.next4, label %if.then2, !dbg !300
gep.next4: ; preds = %gep.next
call void @llvm.dbg.value(metadata %sync.Mutex* %m, metadata !269, metadata !DIExpression()), !dbg !303
%7 = getelementptr inbounds %sync.Mutex, %sync.Mutex* %m, i64 0, i32 1, !dbg !304
call void @llvm.dbg.value(metadata i64 0, metadata !285, metadata !DIExpression()), !dbg !305
call void @llvm.dbg.value(metadata %"internal/task.Stack"* %7, metadata !275, metadata !DIExpression()), !dbg !306
%8 = getelementptr inbounds %"internal/task.Stack", %"internal/task.Stack"* %7, i64 0, i32 0, !dbg !307
%9 = load %"internal/task.Task"*, %"internal/task.Task"** %8, align 8, !dbg !307
call void @llvm.dbg.value(metadata %"internal/task.Task"* %9, metadata !286, metadata !DIExpression()), !dbg !308
%.not.i = icmp eq %"internal/task.Task"* %9, null, !dbg !309
br i1 %.not.i, label %store.next, label %if.then, !dbg !310
store.next: ; preds = %gep.next4
call void @llvm.dbg.value(metadata i64 0, metadata !285, metadata !DIExpression()), !dbg !295
call void @llvm.dbg.value(metadata %"internal/task.Task"* %9, metadata !286, metadata !DIExpression()), !dbg !311
call void @llvm.dbg.value(metadata %"internal/task.Task"* %9, metadata !270, metadata !DIExpression()), !dbg !312
call void @llvm.dbg.value(metadata %sync.Mutex* %m, metadata !269, metadata !DIExpression()), !dbg !313
store i1 false, i1* %5, align 1, !dbg !314
call void @llvm.dbg.value(metadata i1 false, metadata !271, metadata !DIExpression()), !dbg !314
br label %if.done1, !dbg !300
}
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2
; Function Attrs: optsize
define internal fastcc void @"(*sync.Once).Do"(%sync.Once* nocapture readnone dereferenceable_or_null(24) %o, i8* nocapture readnone %f.context, i64 %f.funcptr, i8* nocapture readnone %context, i8* %parentHandle) unnamed_addr #1 !dbg !315 {
entry:
%coro.alloc = tail call fastcc i8* @runtime.alloc(i64 64), !dbg !332
%resume.addr = bitcast i8* %coro.alloc to void (%"(*sync.Once).Do.Frame"*)**, !dbg !332
store void (%"(*sync.Once).Do.Frame"*)* @"(*sync.Once).Do.resume", void (%"(*sync.Once).Do.Frame"*)** %resume.addr, align 8, !dbg !332
%destroy.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 8, !dbg !332
%0 = bitcast i8* %destroy.addr to void (%"(*sync.Once).Do.Frame"*)**, !dbg !332
store void (%"(*sync.Once).Do.Frame"*)* @"(*sync.Once).Do.destroy", void (%"(*sync.Once).Do.Frame"*)** %0, align 8, !dbg !332
%parentHandle.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 40, !dbg !332
%1 = bitcast i8* %parentHandle.spill.addr to i8**, !dbg !332
store i8* %parentHandle, i8** %1, align 8, !dbg !332
%task.current = bitcast i8* %parentHandle to %"internal/task.Task"*, !dbg !332
%task.state.parent = tail call fastcc i8* @"(*internal/task.Task).setState"(%"internal/task.Task"* %task.current, i8* nonnull %coro.alloc), !dbg !332
%task.state.parent.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 48, !dbg !332
%2 = bitcast i8* %task.state.parent.spill.addr to i8**, !dbg !332
store i8* %task.state.parent, i8** %2, align 8, !dbg !332
call void @llvm.dbg.value(metadata i8* undef, metadata !330, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !332
call void @llvm.dbg.value(metadata i64 1, metadata !330, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !332
call void @llvm.dbg.value(metadata %sync.Once* @main.once, metadata !329, metadata !DIExpression()), !dbg !333
%3 = load i1, i1* getelementptr inbounds (%sync.Once, %sync.Once* @main.once, i64 0, i32 1, i32 0), align 8, !dbg !334
br i1 %3, label %gep.next2.i, label %store.next.i, !dbg !340
gep.next2.i: ; preds = %entry
call void @llvm.dbg.value(metadata i64 0, metadata !341, metadata !DIExpression()), !dbg !350
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !347, metadata !DIExpression()), !dbg !352
%4 = icmp eq i8* %parentHandle, null, !dbg !353
br i1 %4, label %gep.throw3.i.i, label %"(*internal/task.Stack).Push.exit.i", !dbg !353
gep.throw3.i.i: ; preds = %gep.next2.i
tail call fastcc void @runtime.nilPanic(), !dbg !353
unreachable, !dbg !353
"(*internal/task.Stack).Push.exit.i": ; preds = %gep.next2.i
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !347, metadata !DIExpression()), !dbg !354
%5 = load i64, i64* bitcast (%"internal/task.Task"** getelementptr inbounds (%sync.Once, %sync.Once* @main.once, i64 0, i32 1, i32 1, i32 0) to i64*), align 8, !dbg !355
store i8* %parentHandle, i8** bitcast (%"internal/task.Task"** getelementptr inbounds (%sync.Once, %sync.Once* @main.once, i64 0, i32 1, i32 1, i32 0) to i8**), align 8, !dbg !356
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !348, metadata !DIExpression()), !dbg !356
%6 = bitcast i8* %parentHandle to i64*, !dbg !353
store i64 %5, i64* %6, align 8, !dbg !353
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !349, metadata !DIExpression()), !dbg !353
call void @llvm.dbg.value(metadata i64 0, metadata !341, metadata !DIExpression()), !dbg !357
br label %CoroSave, !dbg !358
store.next.i: ; preds = %entry
store i1 true, i1* getelementptr inbounds (%sync.Once, %sync.Once* @main.once, i64 0, i32 1, i32 0), align 8, !dbg !359
call void @llvm.dbg.value(metadata i1 true, metadata !338, metadata !DIExpression()), !dbg !359
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !220, metadata !DIExpression()), !dbg !360
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !220, metadata !DIExpression()), !dbg !362
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !228, metadata !DIExpression()), !dbg !363
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !228, metadata !DIExpression()), !dbg !365
tail call fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* %task.current), !dbg !366
br label %CoroSave, !dbg !367
CoroSave: ; preds = %"(*internal/task.Stack).Push.exit.i", %store.next.i
%index.addr5 = getelementptr inbounds i8, i8* %coro.alloc, i64 56, !dbg !368
%7 = bitcast i8* %index.addr5 to i1*, !dbg !368
store i1 false, i1* %7, align 1, !dbg !368
ret void, !dbg !332
}
; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #2
; Function Attrs: optsize
define internal fastcc noalias nonnull i8* @runtime.alloc(i64 %size) unnamed_addr #1 !dbg !369 {
entry:
call void @llvm.dbg.value(metadata i64 %size, metadata !373, metadata !DIExpression()), !dbg !381
call void @llvm.dbg.value(metadata i64 %size, metadata !373, metadata !DIExpression()), !dbg !382
call void @llvm.dbg.value(metadata i64 %size, metadata !383, metadata !DIExpression()), !dbg !387
call void @llvm.dbg.value(metadata i64 %size, metadata !383, metadata !DIExpression()), !dbg !389
%0 = add i64 %size, 15, !dbg !390
%1 = and i64 %0, -16, !dbg !391
call void @llvm.dbg.value(metadata i64 %1, metadata !373, metadata !DIExpression()), !dbg !392
%2 = load i64, i64* @runtime.heapptr, align 8, !dbg !393
call void @llvm.dbg.value(metadata i64 %2, metadata !374, metadata !DIExpression()), !dbg !393
call void @llvm.dbg.value(metadata i64 %2, metadata !375, metadata !DIExpression()), !dbg !394
call void @llvm.dbg.value(metadata i64 %1, metadata !373, metadata !DIExpression()), !dbg !395
%3 = add i64 %2, %1, !dbg !396
store i64 %3, i64* @runtime.heapptr, align 8, !dbg !396
call void @llvm.dbg.value(metadata i64 %3, metadata !374, metadata !DIExpression()), !dbg !396
%4 = load i64, i64* @runtime.heapStart, align 8, !dbg !397
%.pre = load i64, i64* @runtime.heapEnd, align 8, !dbg !404
br label %for.loop, !dbg !405
for.loop: ; preds = %runtime.growHeap.exit, %entry
%5 = phi i64 [ %12, %runtime.growHeap.exit ], [ %.pre, %entry ], !dbg !404
call void @llvm.dbg.value(metadata i64 %3, metadata !374, metadata !DIExpression()), !dbg !406
call void @llvm.dbg.value(metadata i64 %5, metadata !376, metadata !DIExpression()), !dbg !404
%.not = icmp ult i64 %3, %5, !dbg !407
br i1 %.not, label %for.loop1, label %for.body, !dbg !405
for.body: ; preds = %for.loop
%6 = load i64, i64* @runtime.heapSize, align 8, !dbg !408
call void @llvm.dbg.value(metadata i64 %6, metadata !401, metadata !DIExpression()), !dbg !408
%7 = icmp eq i64 %6, 1073741824, !dbg !409
br i1 %7, label %if.done, label %runtime.growHeap.exit, !dbg !397
runtime.growHeap.exit: ; preds = %for.body
call void @llvm.dbg.value(metadata i64 %6, metadata !401, metadata !DIExpression()), !dbg !410
%8 = shl i64 %6, 2, !dbg !411
%9 = udiv i64 %8, 3, !dbg !412
%10 = and i64 %9, -4096, !dbg !413
call void @llvm.dbg.value(metadata i64 %10, metadata !401, metadata !DIExpression()), !dbg !414
%11 = icmp ult i64 %10, 1073741824, !dbg !397
%spec.store.select.i = select i1 %11, i64 %10, i64 1073741824, !dbg !397
store i64 %spec.store.select.i, i64* @runtime.heapSize, align 8, !dbg !397
call void @llvm.dbg.value(metadata i64 %4, metadata !402, metadata !DIExpression()), !dbg !415
call void @llvm.dbg.value(metadata i64 %spec.store.select.i, metadata !401, metadata !DIExpression()), !dbg !416
%12 = add i64 %4, %spec.store.select.i, !dbg !417
call void @llvm.dbg.value(metadata i64 %12, metadata !418, metadata !DIExpression()), !dbg !422
store i64 %12, i64* @runtime.heapEnd, align 8, !dbg !424
call void @llvm.dbg.value(metadata i64 %12, metadata !421, metadata !DIExpression()), !dbg !424
br label %for.loop, !dbg !405
if.done: ; preds = %for.body
tail call fastcc void @runtime.runtimePanic(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"runtime.alloc$string", i64 0, i64 0), i64 13), !dbg !425
unreachable
for.loop1: ; preds = %for.loop, %for.body2
%13 = phi i64 [ %17, %for.body2 ], [ 0, %for.loop ], !dbg !426
call void @llvm.dbg.value(metadata i64 %13, metadata !377, metadata !DIExpression()), !dbg !427
call void @llvm.dbg.value(metadata i64 %1, metadata !373, metadata !DIExpression()), !dbg !428
%14 = icmp ult i64 %13, %1, !dbg !429
call void @llvm.dbg.value(metadata i64 %2, metadata !375, metadata !DIExpression()), !dbg !430
br i1 %14, label %for.body2, label %for.done3, !dbg !405
for.body2: ; preds = %for.loop1
call void @llvm.dbg.value(metadata i64 %13, metadata !377, metadata !DIExpression()), !dbg !431
%15 = add i64 %13, %2, !dbg !432
%16 = inttoptr i64 %15 to i32*, !dbg !433
call void @llvm.dbg.value(metadata i32* %16, metadata !378, metadata !DIExpression()), !dbg !434
store i32 0, i32* %16, align 4, !dbg !435
%17 = add nuw i64 %13, 4, !dbg !436
call void @llvm.dbg.value(metadata i64 %17, metadata !377, metadata !DIExpression()), !dbg !436
br label %for.loop1, !dbg !405
for.done3: ; preds = %for.loop1
%18 = inttoptr i64 %2 to i8*, !dbg !437
ret i8* %18, !dbg !438
}
; Function Attrs: noreturn optsize
define internal fastcc void @runtime.runtimePanic(i8* nocapture readonly %msg.data, i64 %msg.len) unnamed_addr #3 !dbg !439 {
entry:
call void @llvm.dbg.value(metadata i8* %msg.data, metadata !444, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !445
call void @llvm.dbg.value(metadata i64 %msg.len, metadata !444, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !445
tail call fastcc void @runtime.printstring(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"runtime.runtimePanic$string", i64 0, i64 0), i64 22), !dbg !446
call void @llvm.dbg.value(metadata %runtime.interfaceMethodInfo.1 undef, metadata !444, metadata !DIExpression()), !dbg !447
tail call fastcc void @runtime.printstring(i8* %msg.data, i64 %msg.len), !dbg !448
tail call fastcc void @runtime.printnl(), !dbg !448
tail call void @abort(), !dbg !449
unreachable, !dbg !450
}
; Function Attrs: optsize
define internal fastcc void @runtime.printstring(i8* nocapture readonly %s.data, i64 %s.len) unnamed_addr #1 !dbg !451 {
entry:
call void @llvm.dbg.value(metadata i8* %s.data, metadata !454, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !457
call void @llvm.dbg.value(metadata i64 %s.len, metadata !454, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !457
call void @llvm.dbg.value(metadata i64 0, metadata !455, metadata !DIExpression()), !dbg !458
%0 = icmp sgt i64 %s.len, 0, !dbg !459
%smax = select i1 %0, i64 %s.len, i64 0, !dbg !459
br label %for.loop, !dbg !459
for.loop: ; preds = %for.body, %entry
%1 = phi i64 [ 0, %entry ], [ %6, %for.body ], !dbg !458
call void @llvm.dbg.value(metadata i64 %1, metadata !455, metadata !DIExpression()), !dbg !460
call void @llvm.dbg.value(metadata %runtime.interfaceMethodInfo.1 undef, metadata !454, metadata !DIExpression()), !dbg !461
%exitcond.not = icmp eq i64 %1, %smax, !dbg !462
br i1 %exitcond.not, label %for.done, label %for.body, !dbg !459
for.body: ; preds = %for.loop
call void @llvm.dbg.value(metadata %runtime.interfaceMethodInfo.1 undef, metadata !454, metadata !DIExpression()), !dbg !463
call void @llvm.dbg.value(metadata i64 %1, metadata !455, metadata !DIExpression()), !dbg !464
%2 = getelementptr inbounds i8, i8* %s.data, i64 %1, !dbg !465
%3 = load i8, i8* %2, align 1, !dbg !465
call void @llvm.dbg.value(metadata i8 %3, metadata !466, metadata !DIExpression()), !dbg !472
call void @llvm.dbg.value(metadata i8 %3, metadata !466, metadata !DIExpression()), !dbg !474
%4 = zext i8 %3 to i64, !dbg !475
%5 = tail call i64 @putchar(i64 %4), !dbg !476
%6 = add nuw i64 %1, 1, !dbg !477
call void @llvm.dbg.value(metadata i64 %6, metadata !455, metadata !DIExpression()), !dbg !477
br label %for.loop, !dbg !459
for.done: ; preds = %for.loop
ret void, !dbg !478
}
; Function Attrs: optsize
define internal fastcc void @runtime.printnl() unnamed_addr #1 !dbg !479 {
entry:
call void @llvm.dbg.value(metadata i8 13, metadata !466, metadata !DIExpression()), !dbg !480
call void @llvm.dbg.value(metadata i8 13, metadata !466, metadata !DIExpression()), !dbg !482
%0 = tail call i64 @putchar(i64 13), !dbg !483
call void @llvm.dbg.value(metadata i8 10, metadata !466, metadata !DIExpression()), !dbg !484
call void @llvm.dbg.value(metadata i8 10, metadata !466, metadata !DIExpression()), !dbg !486
%1 = tail call i64 @putchar(i64 10), !dbg !487
ret void, !dbg !488
}
; Function Attrs: noreturn optsize
declare void @abort() local_unnamed_addr #3
; Function Attrs: optsize
declare i64 @putchar(i64) local_unnamed_addr #1
; Function Attrs: noreturn optsize
define internal fastcc void @runtime.nilPanic() unnamed_addr #3 !dbg !489 {
entry:
tail call fastcc void @runtime.runtimePanic(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"runtime.nilPanic$string", i64 0, i64 0), i64 23), !dbg !490
unreachable
}
; Function Attrs: optsize
define internal fastcc void @"(*runtime.channelBlockedList).detach"(%runtime.channelBlockedList* readonly dereferenceable_or_null(48) %b) unnamed_addr #1 !dbg !491 {
entry:
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %b, metadata !517, metadata !DIExpression()), !dbg !522
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %b, metadata !517, metadata !DIExpression()), !dbg !523
%0 = icmp eq %runtime.channelBlockedList* %b, null, !dbg !524
br i1 %0, label %gep.throw, label %gep.next, !dbg !524
if.then: ; preds = %rangeindex.loop, %gep.next
ret void, !dbg !525
if.done: ; preds = %gep.next
%.elt1 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %b, i64 0, i32 3, i32 1, !dbg !524
%.unpack2 = load i64, i64* %.elt1, align 8, !dbg !524
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %b, metadata !517, metadata !DIExpression()), !dbg !526
%1 = icmp sgt i64 %.unpack2, 0, !dbg !527
%smax = select i1 %1, i64 %.unpack2, i64 0, !dbg !527
%2 = add nsw i64 %smax, -1, !dbg !527
%3 = add i64 %.unpack2, -1, !dbg !527
br label %rangeindex.loop, !dbg !527
rangeindex.loop: ; preds = %rangeindex.loop.backedge, %if.done
%4 = phi i64 [ -1, %if.done ], [ %5, %rangeindex.loop.backedge ], !dbg !527
%5 = add nsw i64 %4, 1, !dbg !527
%exitcond.not = icmp eq i64 %4, %2, !dbg !527
br i1 %exitcond.not, label %if.then, label %rangeindex.body, !dbg !527
rangeindex.body: ; preds = %rangeindex.loop
%exitcond28.not = icmp eq i64 %4, %3, !dbg !528
br i1 %exitcond28.not, label %lookup.throw, label %lookup.next, !dbg !528
gep.throw: ; preds = %entry
tail call fastcc void @runtime.nilPanic(), !dbg !524
unreachable, !dbg !524
gep.next: ; preds = %entry
%.elt = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %b, i64 0, i32 3, i32 0, !dbg !524
%.unpack = load %runtime.channelBlockedList*, %runtime.channelBlockedList** %.elt, align 8, !dbg !524
%6 = icmp eq %runtime.channelBlockedList* %.unpack, null, !dbg !529
br i1 %6, label %if.then, label %if.done, !dbg !527
lookup.throw: ; preds = %rangeindex.body
tail call fastcc void @runtime.lookupPanic(), !dbg !528
unreachable, !dbg !528
lookup.next: ; preds = %rangeindex.body
%.elt9 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %.unpack, i64 %5, i32 2, !dbg !527
%.unpack10 = load %runtime.chanSelectState*, %runtime.chanSelectState** %.elt9, align 8, !dbg !527
call void @llvm.dbg.value(metadata i64 %5, metadata !518, metadata !DIExpression()), !dbg !530
call void @llvm.dbg.value(metadata %runtime.channelBlockedList undef, metadata !519, metadata !DIExpression()), !dbg !531
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %b, metadata !517, metadata !DIExpression()), !dbg !532
%.unpack21 = load i64, i64* %.elt1, align 8, !dbg !533
%.not24 = icmp ult i64 %5, %.unpack21, !dbg !534
br i1 %.not24, label %lookup.next19, label %lookup.throw18, !dbg !534
lookup.throw18: ; preds = %lookup.next
tail call fastcc void @runtime.lookupPanic(), !dbg !534
unreachable, !dbg !534
lookup.next19: ; preds = %lookup.next
%.unpack19 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** %.elt, align 8, !dbg !533
%.elt7 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %.unpack, i64 %5, i32 1, !dbg !527
%.unpack8 = load %"internal/task.Task"*, %"internal/task.Task"** %.elt7, align 8, !dbg !527
%7 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %.unpack19, i64 %5, !dbg !534
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %b, metadata !517, metadata !DIExpression()), !dbg !535
%8 = icmp eq %runtime.channelBlockedList* %7, %b, !dbg !536
%9 = icmp eq %"internal/task.Task"* %.unpack8, null
%or.cond = or i1 %8, %9, !dbg !527
br i1 %or.cond, label %rangeindex.loop.backedge, label %deref.next23, !dbg !527
deref.next23: ; preds = %lookup.next19
%10 = icmp eq %runtime.chanSelectState* %.unpack10, null, !dbg !537
br i1 %10, label %gep.throw24, label %gep.next25, !dbg !537
gep.throw24: ; preds = %deref.next23
tail call fastcc void @runtime.nilPanic(), !dbg !537
unreachable, !dbg !537
gep.next25: ; preds = %deref.next23
%11 = getelementptr inbounds %runtime.chanSelectState, %runtime.chanSelectState* %.unpack10, i64 0, i32 0, !dbg !537
%12 = load %runtime.channel*, %runtime.channel** %11, align 8, !dbg !537
%13 = icmp eq %runtime.channel* %12, null, !dbg !538
br i1 %13, label %gep.throw28, label %gep.next29, !dbg !538
gep.throw28: ; preds = %gep.next25
tail call fastcc void @runtime.nilPanic(), !dbg !538
unreachable, !dbg !538
gep.next29: ; preds = %gep.next25
%14 = getelementptr inbounds %runtime.channel, %runtime.channel* %12, i64 0, i32 3, !dbg !538
%15 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** %14, align 8, !dbg !539
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %b, metadata !517, metadata !DIExpression()), !dbg !540
call void @llvm.dbg.value(metadata i64 %5, metadata !518, metadata !DIExpression()), !dbg !541
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %15, metadata !542, metadata !DIExpression()), !dbg !550
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !547, metadata !DIExpression()), !dbg !552
%16 = icmp eq %runtime.channelBlockedList* %15, %7, !dbg !553
br i1 %16, label %if.then.i, label %for.loop.i, !dbg !554
if.then.i: ; preds = %gep.next29
%17 = icmp eq %runtime.channelBlockedList* %.unpack19, null, !dbg !555
br i1 %17, label %gep.throw.i, label %gep.next.i, !dbg !555
for.loop.i: ; preds = %gep.next29, %deref.next6.i
%18 = phi %runtime.channelBlockedList* [ %22, %deref.next6.i ], [ %15, %gep.next29 ], !dbg !556
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %18, metadata !548, metadata !DIExpression()), !dbg !557
%cond.i = icmp eq %runtime.channelBlockedList* %18, null, !dbg !554
br i1 %cond.i, label %"(*runtime.channelBlockedList).remove.exit", label %deref.next6.i, !dbg !554
gep.throw.i: ; preds = %if.then.i
tail call fastcc void @runtime.nilPanic(), !dbg !555
unreachable, !dbg !555
gep.next.i: ; preds = %if.then.i
%19 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %7, i64 0, i32 0, !dbg !555
%20 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** %19, align 8, !dbg !555
br label %"(*runtime.channelBlockedList).remove.exit", !dbg !558
deref.next6.i: ; preds = %for.loop.i
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %18, metadata !548, metadata !DIExpression()), !dbg !559
%21 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %18, i64 0, i32 0, !dbg !560
%22 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** %21, align 8, !dbg !560
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !547, metadata !DIExpression()), !dbg !561
%.not.i = icmp eq %runtime.channelBlockedList* %22, %7, !dbg !562
br i1 %.not.i, label %gep.next12.i, label %for.loop.i, !dbg !554
gep.next12.i: ; preds = %deref.next6.i
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %18, metadata !548, metadata !DIExpression()), !dbg !557
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %18, metadata !548, metadata !DIExpression()), !dbg !557
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %18, metadata !548, metadata !DIExpression()), !dbg !557
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %18, metadata !548, metadata !DIExpression()), !dbg !557
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %18, metadata !548, metadata !DIExpression()), !dbg !563
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !547, metadata !DIExpression()), !dbg !564
%23 = icmp eq %runtime.channelBlockedList* %.unpack19, null, !dbg !565
br i1 %23, label %gep.throw13.i, label %gep.next14.i, !dbg !565
gep.throw13.i: ; preds = %gep.next12.i
tail call fastcc void @runtime.nilPanic(), !dbg !565
unreachable, !dbg !565
gep.next14.i: ; preds = %gep.next12.i
%24 = bitcast %runtime.channelBlockedList* %7 to i64*, !dbg !565
%25 = load i64, i64* %24, align 8, !dbg !565
%26 = bitcast %runtime.channelBlockedList* %18 to i64*, !dbg !566
store i64 %25, i64* %26, align 8, !dbg !566
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* undef, metadata !549, metadata !DIExpression()), !dbg !566
br label %"(*runtime.channelBlockedList).remove.exit", !dbg !554
"(*runtime.channelBlockedList).remove.exit": ; preds = %for.loop.i, %gep.next14.i, %gep.next.i
%27 = phi %runtime.channelBlockedList* [ %20, %gep.next.i ], [ %15, %gep.next14.i ], [ %15, %for.loop.i ]
store %runtime.channelBlockedList* %27, %runtime.channelBlockedList** %14, align 8, !dbg !538
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %27, metadata !520, metadata !DIExpression()), !dbg !538
%28 = load %runtime.channel*, %runtime.channel** %11, align 8, !dbg !567
%29 = icmp eq %runtime.channel* %28, null, !dbg !568
br i1 %29, label %gep.throw54, label %gep.next55, !dbg !568
gep.throw54: ; preds = %"(*runtime.channelBlockedList).remove.exit"
tail call fastcc void @runtime.nilPanic(), !dbg !568
unreachable, !dbg !568
gep.next55: ; preds = %"(*runtime.channelBlockedList).remove.exit"
%30 = getelementptr inbounds %runtime.channel, %runtime.channel* %28, i64 0, i32 3, !dbg !568
%31 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** %30, align 8, !dbg !568
%32 = icmp eq %runtime.channelBlockedList* %31, null, !dbg !569
br i1 %32, label %gep.next61, label %rangeindex.loop.backedge, !dbg !527
gep.next61: ; preds = %gep.next55
%33 = getelementptr inbounds %runtime.chanSelectState, %runtime.chanSelectState* %.unpack10, i64 0, i32 1, !dbg !570
%34 = load i8*, i8** %33, align 8, !dbg !570
%35 = icmp eq i8* %34, null, !dbg !571
br i1 %35, label %gep.next71, label %gep.next91, !dbg !527
gep.next71: ; preds = %gep.next61
%36 = getelementptr inbounds %runtime.channel, %runtime.channel* %28, i64 0, i32 2, !dbg !572
%37 = load i8, i8* %36, align 1, !dbg !572
%.not25 = icmp eq i8 %37, 4, !dbg !573
br i1 %.not25, label %rangeindex.loop.backedge, label %store.next83, !dbg !527
store.next83: ; preds = %gep.next71
store i8 0, i8* %36, align 1, !dbg !574
call void @llvm.dbg.value(metadata i8 0, metadata !521, metadata !DIExpression()), !dbg !574
br label %rangeindex.loop.backedge, !dbg !527
gep.next91: ; preds = %gep.next61
%38 = getelementptr inbounds %runtime.channel, %runtime.channel* %28, i64 0, i32 6, !dbg !575
%39 = load i64, i64* %38, align 8, !dbg !575
%40 = icmp eq i64 %39, 0, !dbg !576
%41 = getelementptr inbounds %runtime.channel, %runtime.channel* %28, i64 0, i32 2, !dbg !527
br i1 %40, label %gep.next101, label %gep.next111, !dbg !527
gep.next101: ; preds = %gep.next91
store i8 0, i8* %41, align 1, !dbg !577
call void @llvm.dbg.value(metadata i8 0, metadata !521, metadata !DIExpression()), !dbg !577
br label %rangeindex.loop.backedge, !dbg !527
gep.next111: ; preds = %gep.next91
store i8 3, i8* %41, align 1, !dbg !578
call void @llvm.dbg.value(metadata i8 3, metadata !521, metadata !DIExpression()), !dbg !578
br label %rangeindex.loop.backedge, !dbg !527
rangeindex.loop.backedge: ; preds = %gep.next111, %gep.next101, %store.next83, %gep.next55, %gep.next71, %lookup.next19
br label %rangeindex.loop, !dbg !527
}
; Function Attrs: noreturn optsize
define internal fastcc void @runtime.lookupPanic() unnamed_addr #3 !dbg !579 {
entry:
tail call fastcc void @runtime.runtimePanic(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"runtime.lookupPanic$string", i64 0, i64 0), i64 18), !dbg !580
unreachable
}
; Function Attrs: nounwind optsize
define internal fastcc i1 @"(*runtime.channel).pop"(i8* nocapture %value) unnamed_addr #4 !dbg !581 {
entry:
call void @llvm.dbg.value(metadata i8* %value, metadata !586, metadata !DIExpression()), !dbg !590
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !585, metadata !DIExpression()), !dbg !591
%0 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 48) to i64*), align 8, !dbg !592
%1 = icmp eq i64 %0, 0, !dbg !593
br i1 %1, label %if.then, label %deref.next6, !dbg !594
if.then: ; preds = %entry
ret i1 false, !dbg !595
deref.next6: ; preds = %entry
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !585, metadata !DIExpression()), !dbg !596
%2 = load i8*, i8** bitcast ({}** getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 1) to i8**), align 8, !dbg !597
%3 = load i64, i64* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to i64*), align 8, !dbg !598
%4 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 40) to i64*), align 8, !dbg !599
%5 = mul i64 %4, %3, !dbg !600
%6 = getelementptr inbounds i8, i8* %2, i64 %5, !dbg !601
call void @llvm.dbg.value(metadata i8* %value, metadata !586, metadata !DIExpression()), !dbg !602
call void @llvm.dbg.value(metadata i8* %6, metadata !587, metadata !DIExpression()), !dbg !603
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %value, i8* align 1 %6, i64 %3, i1 false), !dbg !604
%7 = load i64, i64* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to i64*), align 8, !dbg !605
tail call void @llvm.memset.p0i8.i64(i8* align 1 %6, i8 0, i64 %7, i1 false), !dbg !606
%8 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 48) to i64*), align 8, !dbg !607
%9 = add i64 %8, -1, !dbg !608
store i64 %9, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 48) to i64*), align 8, !dbg !607
call void @llvm.dbg.value(metadata i64 %9, metadata !588, metadata !DIExpression()), !dbg !607
%10 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 40) to i64*), align 8, !dbg !609
%11 = add i64 %10, 1, !dbg !610
call void @llvm.dbg.value(metadata i64 %11, metadata !589, metadata !DIExpression()), !dbg !609
%12 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 8) to i64*), align 8, !dbg !611
%13 = icmp eq i64 %11, %12, !dbg !612
%spec.store.select = select i1 %13, i64 0, i64 %11, !dbg !594
store i64 %spec.store.select, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 40) to i64*), align 8, !dbg !594
ret i1 true, !dbg !594
}
; Function Attrs: argmemonly nounwind willreturn writeonly
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #5
; Function Attrs: optsize
define internal fastcc i8* @"(*runtime.channel).resumeTX"() unnamed_addr #1 !dbg !613 {
entry:
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* null, metadata !618, metadata !DIExpression()), !dbg !622
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !617, metadata !DIExpression()), !dbg !623
%0 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to %runtime.channelBlockedList**), align 8, !dbg !624
%1 = icmp eq %runtime.channelBlockedList* %0, null, !dbg !625
br i1 %1, label %gep.throw7, label %gep.next8, !dbg !625
gep.throw7: ; preds = %entry
tail call fastcc void @runtime.nilPanic(), !dbg !625
unreachable, !dbg !625
gep.next8: ; preds = %entry
%2 = bitcast %runtime.channelBlockedList* %0 to i64*, !dbg !625
%3 = load i64, i64* %2, align 8, !dbg !625
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %0, metadata !618, metadata !DIExpression()), !dbg !626
store i64 %3, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to i64*), align 8, !dbg !627
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* undef, metadata !619, metadata !DIExpression()), !dbg !627
%4 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %0, i64 0, i32 1, !dbg !628
%5 = load %"internal/task.Task"*, %"internal/task.Task"** %4, align 8, !dbg !628
%6 = icmp eq %"internal/task.Task"* %5, null, !dbg !629
br i1 %6, label %gep.throw15, label %gep.next16, !dbg !629
gep.throw15: ; preds = %gep.next8
tail call fastcc void @runtime.nilPanic(), !dbg !629
unreachable, !dbg !629
gep.next16: ; preds = %gep.next8
%7 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %5, i64 0, i32 1, !dbg !629
%8 = load i8*, i8** %7, align 8, !dbg !629
call void @llvm.dbg.value(metadata i8* %8, metadata !620, metadata !DIExpression()), !dbg !630
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %0, metadata !618, metadata !DIExpression()), !dbg !631
%9 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %0, i64 0, i32 2, !dbg !632
%10 = load %runtime.chanSelectState*, %runtime.chanSelectState** %9, align 8, !dbg !632
%.not = icmp eq %runtime.chanSelectState* %10, null, !dbg !633
br i1 %.not, label %deref.next46, label %gep.next28, !dbg !634
gep.next28: ; preds = %gep.next16
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %0, metadata !618, metadata !DIExpression()), !dbg !635
%11 = getelementptr inbounds %runtime.chanSelectState, %runtime.chanSelectState* %10, i64 0, i32 1, !dbg !636
%12 = load i8*, i8** %11, align 8, !dbg !636
call void @llvm.dbg.value(metadata i8* %12, metadata !620, metadata !DIExpression()), !dbg !637
%13 = bitcast i8** %7 to %runtime.chanSelectState**, !dbg !638
store %runtime.chanSelectState* %10, %runtime.chanSelectState** %13, align 8, !dbg !638
call void @llvm.dbg.value(metadata %runtime.chanSelectState* %10, metadata !621, metadata !DIExpression()), !dbg !638
tail call fastcc void @"(*runtime.channelBlockedList).detach"(%runtime.channelBlockedList* nonnull %0), !dbg !639
%.pre = load %"internal/task.Task"*, %"internal/task.Task"** %4, align 8, !dbg !640
br label %deref.next46, !dbg !634
deref.next46: ; preds = %gep.next16, %gep.next28
%14 = phi %"internal/task.Task"* [ %5, %gep.next16 ], [ %.pre, %gep.next28 ], !dbg !640
%15 = phi i8* [ %8, %gep.next16 ], [ %12, %gep.next28 ], !dbg !630
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %0, metadata !618, metadata !DIExpression()), !dbg !641
tail call fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* %14), !dbg !642
call void @llvm.dbg.value(metadata i8* %15, metadata !620, metadata !DIExpression()), !dbg !643
ret i8* %15, !dbg !644
}
; Function Attrs: noreturn optsize
define internal fastcc void @runtime._panic() unnamed_addr #3 !dbg !645 {
entry:
call void @llvm.dbg.value(metadata i64 34, metadata !653, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !654
tail call fastcc void @runtime.printstring(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"runtime._panic$string", i64 0, i64 0), i64 7), !dbg !655
tail call fastcc void @runtime.printitf(), !dbg !656
tail call fastcc void @runtime.printnl(), !dbg !657
tail call void @abort(), !dbg !658
unreachable, !dbg !659
}
; Function Attrs: optsize
define internal fastcc void @runtime.printitf() unnamed_addr #1 !dbg !660 {
entry:
call void @llvm.dbg.value(metadata i64 34, metadata !662, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 64)), !dbg !693
tail call fastcc void @runtime.printstring(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @"(*sync.Mutex).Unlock$string", i64 0, i64 0), i64 30), !dbg !694
ret void, !dbg !695
}
; Function Attrs: optsize
define internal fastcc i1 @runtime.chanRecv(%runtime.channel* nocapture readnone dereferenceable_or_null(64) %ch, i8* %value, %runtime.channelBlockedList* dereferenceable_or_null(48) %blockedlist, i8* nocapture readnone %context, i8* %parentHandle) unnamed_addr #1 !dbg !696 {
entry:
%coro.alloc = tail call fastcc i8* @runtime.alloc(i64 48), !dbg !712
%resume.addr = bitcast i8* %coro.alloc to void (%runtime.chanRecv.Frame*)**, !dbg !712
store void (%runtime.chanRecv.Frame*)* @runtime.chanRecv.resume, void (%runtime.chanRecv.Frame*)** %resume.addr, align 8, !dbg !712
%destroy.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 8, !dbg !712
%0 = bitcast i8* %destroy.addr to void (%runtime.chanRecv.Frame*)**, !dbg !712
store void (%runtime.chanRecv.Frame*)* @runtime.chanRecv.destroy, void (%runtime.chanRecv.Frame*)** %0, align 8, !dbg !712
%parentHandle.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 16, !dbg !712
%1 = bitcast i8* %parentHandle.spill.addr to i8**, !dbg !712
store i8* %parentHandle, i8** %1, align 8, !dbg !712
%task.current = bitcast i8* %parentHandle to %"internal/task.Task"*, !dbg !712
%task.state.parent = tail call fastcc i8* @"(*internal/task.Task).setState"(%"internal/task.Task"* %task.current, i8* nonnull %coro.alloc), !dbg !712
%task.state.parent.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 24, !dbg !713
%2 = bitcast i8* %task.state.parent.spill.addr to i8**, !dbg !713
store i8* %task.state.parent, i8** %2, align 8, !dbg !713
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !716, metadata !DIExpression()), !dbg !718
%3 = icmp eq i8* %parentHandle, null, !dbg !719
br i1 %3, label %gep.throw.i, label %"(*internal/task.Task).getReturnPtr.exit", !dbg !719
gep.throw.i: ; preds = %entry
tail call fastcc void @runtime.nilPanic(), !dbg !719
unreachable, !dbg !719
"(*internal/task.Task).getReturnPtr.exit": ; preds = %entry
%4 = getelementptr inbounds i8, i8* %parentHandle, i64 8, !dbg !719
%5 = bitcast i8* %4 to i1**, !dbg !719
%6 = load i1*, i1** %5, align 8, !dbg !719
%.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 32, !dbg !712
%7 = bitcast i8* %.spill.addr to i1**, !dbg !712
store i1* %6, i1** %7, align 8, !dbg !712
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !700, metadata !DIExpression()), !dbg !712
call void @llvm.dbg.value(metadata i8* %value, metadata !701, metadata !DIExpression()), !dbg !712
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %blockedlist, metadata !702, metadata !DIExpression()), !dbg !712
call void @llvm.dbg.value(metadata i64 0, metadata !703, metadata !DIExpression()), !dbg !720
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !700, metadata !DIExpression()), !dbg !721
call void @llvm.dbg.value(metadata i8* %value, metadata !701, metadata !DIExpression()), !dbg !722
call void @llvm.dbg.value(metadata i8* %value, metadata !723, metadata !DIExpression()), !dbg !731
call void @llvm.dbg.value(metadata i64 0, metadata !727, metadata !DIExpression()), !dbg !733
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !734
%8 = load i8, i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 16), align 8, !dbg !735
switch i8 %8, label %switch.next18.i [
i8 3, label %switch.body.i
i8 2, label %switch.body.i
i8 1, label %"(*runtime.channel).tryRecv.exit"
i8 0, label %"(*runtime.channel).tryRecv.exit"
i8 4, label %switch.body15.i
], !dbg !736
switch.body.i: ; preds = %"(*internal/task.Task).getReturnPtr.exit", %"(*internal/task.Task).getReturnPtr.exit"
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !737
call void @llvm.dbg.value(metadata i8* %value, metadata !723, metadata !DIExpression()), !dbg !738
%9 = tail call fastcc i1 @"(*runtime.channel).pop"(i8* %value), !dbg !739
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !740
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !741
%10 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to %runtime.channelBlockedList**), align 8, !dbg !736
%.not.i = icmp eq %runtime.channelBlockedList* %10, null, !dbg !736
br i1 %9, label %deref.next22.i, label %deref.next40.i, !dbg !736
if.then2.i: ; preds = %deref.next22.i
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !742
%11 = tail call fastcc i8* @"(*runtime.channel).resumeTX"(), !dbg !743
call void @llvm.dbg.value(metadata i8* %11, metadata !728, metadata !DIExpression()), !dbg !744
call void @llvm.dbg.value(metadata i8* %11, metadata !745, metadata !DIExpression()) #10, !dbg !751
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !748, metadata !DIExpression()) #10, !dbg !753
%12 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 8) to i64*), align 8, !dbg !754
%13 = icmp eq i64 %12, 0, !dbg !755
%14 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 48) to i64*), align 8
%15 = icmp eq i64 %14, %12
%or.cond.i.i = or i1 %13, %15, !dbg !756
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !748, metadata !DIExpression()) #10, !dbg !757
br i1 %or.cond.i.i, label %"(*runtime.channel).push.exit.i", label %deref.next16.i.i, !dbg !756
deref.next16.i.i: ; preds = %if.then2.i
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !748, metadata !DIExpression()) #10, !dbg !758
%16 = load i8*, i8** bitcast ({}** getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 1) to i8**), align 8, !dbg !759
%17 = load i64, i64* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to i64*), align 8, !dbg !760
%18 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 32) to i64*), align 8, !dbg !761
%19 = mul i64 %18, %17, !dbg !762
%20 = getelementptr inbounds i8, i8* %16, i64 %19, !dbg !763
call void @llvm.dbg.value(metadata i8* %11, metadata !745, metadata !DIExpression()) #10, !dbg !764
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %20, i8* align 1 %11, i64 %17, i1 false) #10, !dbg !765
%21 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 48) to i64*), align 8, !dbg !766
%22 = add i64 %21, 1, !dbg !767
store i64 %22, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 48) to i64*), align 8, !dbg !766
call void @llvm.dbg.value(metadata i64 %22, metadata !749, metadata !DIExpression()) #10, !dbg !766
%23 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 32) to i64*), align 8, !dbg !768
%24 = add i64 %23, 1, !dbg !769
call void @llvm.dbg.value(metadata i64 %24, metadata !750, metadata !DIExpression()) #10, !dbg !768
%25 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 8) to i64*), align 8, !dbg !770
%26 = icmp eq i64 %24, %25, !dbg !771
%spec.store.select.i.i = select i1 %26, i64 0, i64 %24, !dbg !756
store i64 %spec.store.select.i.i, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 32) to i64*), align 8, !dbg !756
br label %"(*runtime.channel).push.exit.i", !dbg !756
"(*runtime.channel).push.exit.i": ; preds = %if.then2.i, %deref.next16.i.i
%27 = phi i64 [ %22, %deref.next16.i.i ], [ %14, %if.then2.i ]
%28 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to %runtime.channelBlockedList**), align 8, !dbg !772
%29 = icmp eq %runtime.channelBlockedList* %28, null, !dbg !773
br i1 %29, label %store.next.i, label %deref.next32.i, !dbg !736
if.then7.i: ; preds = %deref.next40.i
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !774
%30 = tail call fastcc i8* @"(*runtime.channel).resumeTX"(), !dbg !775
call void @llvm.dbg.value(metadata i8* %value, metadata !723, metadata !DIExpression()), !dbg !776
call void @llvm.dbg.value(metadata i8* %30, metadata !730, metadata !DIExpression()), !dbg !777
%31 = load i64, i64* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to i64*), align 8, !dbg !778
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %value, i8* align 1 %30, i64 %31, i1 false), !dbg !779
%32 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to %runtime.channelBlockedList**), align 8, !dbg !780
%33 = icmp eq %runtime.channelBlockedList* %32, null, !dbg !781
br i1 %33, label %store.next52.i, label %"(*runtime.channel).tryRecv.exit", !dbg !736
switch.body15.i: ; preds = %"(*internal/task.Task).getReturnPtr.exit"
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !782
call void @llvm.dbg.value(metadata i8* %value, metadata !723, metadata !DIExpression()), !dbg !783
%34 = tail call fastcc i1 @"(*runtime.channel).pop"(i8* %value), !dbg !784
br i1 %34, label %"(*runtime.channel).tryRecv.exit", label %deref.next56.i, !dbg !736
switch.next18.i: ; preds = %"(*internal/task.Task).getReturnPtr.exit"
tail call fastcc void @runtime.runtimePanic(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"(*runtime.channel).tryRecv$string", i64 0, i64 0), i64 21), !dbg !785
unreachable
deref.next22.i: ; preds = %switch.body.i
br i1 %.not.i, label %deref.next22.deref.next32_crit_edge.i, label %if.then2.i, !dbg !736
deref.next22.deref.next32_crit_edge.i: ; preds = %deref.next22.i
%.pre.i = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 48) to i64*), align 8, !dbg !786
br label %deref.next32.i, !dbg !736
store.next.i: ; preds = %"(*runtime.channel).push.exit.i"
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !787
store i8 3, i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 16), align 8, !dbg !788
call void @llvm.dbg.value(metadata i8 3, metadata !729, metadata !DIExpression()), !dbg !788
br label %deref.next32.i, !dbg !736
deref.next32.i: ; preds = %"(*runtime.channel).push.exit.i", %store.next.i, %deref.next22.deref.next32_crit_edge.i
%35 = phi i64 [ %.pre.i, %deref.next22.deref.next32_crit_edge.i ], [ %27, %store.next.i ], [ %27, %"(*runtime.channel).push.exit.i" ], !dbg !786
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !789
%36 = icmp eq i64 %35, 0, !dbg !790
br i1 %36, label %store.next36.i, label %"(*runtime.channel).tryRecv.exit", !dbg !736
store.next36.i: ; preds = %deref.next32.i
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !791
store i8 0, i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 16), align 8, !dbg !792
call void @llvm.dbg.value(metadata i8 0, metadata !729, metadata !DIExpression()), !dbg !792
br label %"(*runtime.channel).tryRecv.exit", !dbg !736
deref.next40.i: ; preds = %switch.body.i
br i1 %.not.i, label %"(*runtime.channel).tryRecv.exit", label %if.then7.i, !dbg !736
store.next52.i: ; preds = %if.then7.i
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !793
store i8 0, i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 16), align 8, !dbg !794
call void @llvm.dbg.value(metadata i8 0, metadata !729, metadata !DIExpression()), !dbg !794
br label %"(*runtime.channel).tryRecv.exit", !dbg !736
deref.next56.i: ; preds = %switch.body15.i
call void @llvm.dbg.value(metadata i8* %value, metadata !723, metadata !DIExpression()), !dbg !795
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !726, metadata !DIExpression()), !dbg !796
%37 = load i64, i64* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to i64*), align 8, !dbg !797
tail call void @llvm.memset.p0i8.i64(i8* align 1 %value, i8 0, i64 %37, i1 false), !dbg !798
call void @llvm.dbg.value(metadata i64 0, metadata !727, metadata !DIExpression()), !dbg !799
br label %"(*runtime.channel).tryRecv.exit", !dbg !800
"(*runtime.channel).tryRecv.exit": ; preds = %deref.next40.i, %deref.next32.i, %switch.body15.i, %if.then7.i, %"(*internal/task.Task).getReturnPtr.exit", %"(*internal/task.Task).getReturnPtr.exit", %store.next36.i, %store.next52.i, %deref.next56.i
%38 = phi { i1, i1 } [ { i1 true, i1 false }, %deref.next56.i ], [ { i1 true, i1 true }, %store.next52.i ], [ { i1 true, i1 true }, %store.next36.i ], [ zeroinitializer, %"(*internal/task.Task).getReturnPtr.exit" ], [ zeroinitializer, %"(*internal/task.Task).getReturnPtr.exit" ], [ { i1 true, i1 true }, %if.then7.i ], [ { i1 true, i1 true }, %switch.body15.i ], [ { i1 true, i1 true }, %deref.next32.i ], [ zeroinitializer, %deref.next40.i ]
%39 = extractvalue { i1, i1 } %38, 0, !dbg !801
call void @llvm.dbg.value(metadata i1 undef, metadata !705, metadata !DIExpression()), !dbg !802
call void @llvm.dbg.value(metadata i1 %39, metadata !704, metadata !DIExpression()), !dbg !803
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !700, metadata !DIExpression()), !dbg !804
br i1 %39, label %if.then, label %gep.next4, !dbg !805
if.then: ; preds = %"(*runtime.channel).tryRecv.exit"
%40 = extractvalue { i1, i1 } %38, 1, !dbg !801
call void @llvm.dbg.value(metadata i64 0, metadata !703, metadata !DIExpression()), !dbg !806
call void @llvm.dbg.value(metadata i1 undef, metadata !705, metadata !DIExpression()), !dbg !807
store i1 %40, i1* %6, align 1, !dbg !808
call void @llvm.dbg.value(metadata i8* %task.state.parent, metadata !214, metadata !DIExpression()), !dbg !809
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !213, metadata !DIExpression()), !dbg !811
%41 = getelementptr inbounds i8, i8* %parentHandle, i64 24, !dbg !812
%42 = bitcast i8* %41 to i8**, !dbg !812
store i8* %task.state.parent, i8** %42, align 8, !dbg !813
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !220, metadata !DIExpression()), !dbg !814
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !228, metadata !DIExpression()), !dbg !816
tail call fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* nonnull %task.current), !dbg !818
br label %AfterCoroEnd, !dbg !808
gep.next4: ; preds = %"(*runtime.channel).tryRecv.exit"
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !706, metadata !DIExpression()), !dbg !819
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !700, metadata !DIExpression()), !dbg !820
store i8 1, i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 16), align 8, !dbg !821
call void @llvm.dbg.value(metadata i8 1, metadata !707, metadata !DIExpression()), !dbg !821
%43 = bitcast i8* %4 to i8**, !dbg !822
%44 = getelementptr inbounds i8, i8* %parentHandle, i64 16, !dbg !823
%45 = bitcast i8* %44 to i64*, !dbg !823
call void @llvm.dbg.value(metadata i8* %value, metadata !701, metadata !DIExpression()), !dbg !824
store i8* %value, i8** %43, align 8, !dbg !822
call void @llvm.dbg.value(metadata i8* %value, metadata !708, metadata !DIExpression()), !dbg !822
store i64 1, i64* %45, align 8, !dbg !823
call void @llvm.dbg.value(metadata i64 1, metadata !709, metadata !DIExpression()), !dbg !823
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %blockedlist, metadata !702, metadata !DIExpression()), !dbg !825
%46 = icmp eq %runtime.channelBlockedList* %blockedlist, null, !dbg !826
br i1 %46, label %gep.throw11, label %gep.next12, !dbg !826
gep.throw11: ; preds = %gep.next4
tail call fastcc void @runtime.nilPanic(), !dbg !826
unreachable, !dbg !826
gep.next12: ; preds = %gep.next4
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !700, metadata !DIExpression()), !dbg !827
%47 = load i64, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to i64*), align 8, !dbg !828
%48 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %blockedlist, i64 0, i32 1, !dbg !826
call void @llvm.dbg.value(metadata %"internal/task.Task"* %task.current, metadata !706, metadata !DIExpression()), !dbg !829
%49 = bitcast %runtime.channelBlockedList* %blockedlist to i64*, !dbg !830
%50 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %blockedlist, i64 0, i32 2, !dbg !831
%51 = bitcast %runtime.chanSelectState** %50 to i8*, !dbg !831
tail call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(48) %51, i8 0, i64 32, i1 false), !dbg !831
store i64 %47, i64* %49, align 8, !dbg !830
%52 = bitcast %"internal/task.Task"** %48 to i8**, !dbg !832
store i8* %parentHandle, i8** %52, align 8, !dbg !832
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %blockedlist, metadata !702, metadata !DIExpression()), !dbg !833
store %runtime.channelBlockedList* %blockedlist, %runtime.channelBlockedList** bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to %runtime.channelBlockedList**), align 8, !dbg !834
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %blockedlist, metadata !710, metadata !DIExpression()), !dbg !834
call void @llvm.dbg.value(metadata i64 0, metadata !703, metadata !DIExpression()), !dbg !835
%index.addr22 = getelementptr inbounds i8, i8* %coro.alloc, i64 40, !dbg !836
%53 = bitcast i8* %index.addr22 to i1*, !dbg !836
store i1 false, i1* %53, align 1, !dbg !836
br label %AfterCoroEnd, !dbg !836
AfterCoroEnd: ; preds = %gep.next12, %if.then
ret i1 undef, !dbg !712
}
; Function Attrs: optsize
define i64 @main(i32 %argc, i8** nocapture readonly dereferenceable_or_null(8) %argv) local_unnamed_addr #1 !dbg !837 {
entry:
call void @llvm.dbg.value(metadata i32 %argc, metadata !842, metadata !DIExpression()), !dbg !867
call void @llvm.dbg.value(metadata i8** %argv, metadata !843, metadata !DIExpression()), !dbg !867
%0 = tail call i8* @mmap(i8* null, i64 1073741824, i64 3, i64 4098, i64 -1, i64 0), !dbg !868
call void @llvm.dbg.value(metadata i8* %0, metadata !871, metadata !DIExpression()), !dbg !876
call void @llvm.dbg.value(metadata i8* %0, metadata !871, metadata !DIExpression()), !dbg !877
%1 = ptrtoint i8* %0 to i64, !dbg !878
store i64 %1, i64* @runtime.heapStart, align 8, !dbg !879
call void @llvm.dbg.value(metadata i64 %1, metadata !872, metadata !DIExpression()), !dbg !879
call void @llvm.dbg.value(metadata i64 %1, metadata !872, metadata !DIExpression()), !dbg !880
%2 = load i64, i64* @runtime.heapSize, align 8, !dbg !881
call void @llvm.dbg.value(metadata i64 %2, metadata !873, metadata !DIExpression()), !dbg !881
%3 = add i64 %2, %1, !dbg !882
store i64 %3, i64* @runtime.heapEnd, align 8, !dbg !883
call void @llvm.dbg.value(metadata i64 %3, metadata !874, metadata !DIExpression()), !dbg !883
%4 = sext i32 %argc to i64, !dbg !884
%5 = mul nsw i64 %4, 24, !dbg !885
%6 = tail call i8* @malloc(i64 %5), !dbg !886
store i8* %6, i8** bitcast ({ %runtime.interfaceMethodInfo.1*, i64, i64 }* @runtime.args to i8**), align 8, !dbg !887
call void @llvm.dbg.value(metadata i8* %6, metadata !849, metadata !DIExpression()), !dbg !887
store i64 %4, i64* getelementptr inbounds ({ %runtime.interfaceMethodInfo.1*, i64, i64 }, { %runtime.interfaceMethodInfo.1*, i64, i64 }* @runtime.args, i64 0, i32 1), align 8, !dbg !888
call void @llvm.dbg.value(metadata i64 %4, metadata !850, metadata !DIExpression()), !dbg !888
store i64 %4, i64* getelementptr inbounds ({ %runtime.interfaceMethodInfo.1*, i64, i64 }, { %runtime.interfaceMethodInfo.1*, i64, i64 }* @runtime.args, i64 0, i32 2), align 8, !dbg !889
call void @llvm.dbg.value(metadata i64 %4, metadata !851, metadata !DIExpression()), !dbg !889
call void @llvm.dbg.value(metadata i64 0, metadata !852, metadata !DIExpression()), !dbg !890
%7 = icmp sgt i64 %4, 0, !dbg !891
%smax = select i1 %7, i64 %4, i64 0, !dbg !891
%.unpack7 = load i64, i64* getelementptr inbounds ({ %runtime.interfaceMethodInfo.1*, i64, i64 }, { %runtime.interfaceMethodInfo.1*, i64, i64 }* @runtime.args, i64 0, i32 1), align 8, !dbg !891
%.unpack = load %runtime.interfaceMethodInfo.1*, %runtime.interfaceMethodInfo.1** getelementptr inbounds ({ %runtime.interfaceMethodInfo.1*, i64, i64 }, { %runtime.interfaceMethodInfo.1*, i64, i64 }* @runtime.args, i64 0, i32 0), align 8, !dbg !891
%8 = icmp eq %runtime.interfaceMethodInfo.1* %.unpack, null, !dbg !891
br label %for.loop, !dbg !891
for.loop: ; preds = %store.next10, %entry
%9 = phi i8** [ %argv, %entry ], [ %20, %store.next10 ], !dbg !892
%10 = phi i64 [ 0, %entry ], [ %21, %store.next10 ], !dbg !890
call void @llvm.dbg.value(metadata i64 %10, metadata !852, metadata !DIExpression()), !dbg !893
call void @llvm.dbg.value(metadata i32 %argc, metadata !842, metadata !DIExpression()), !dbg !894
%exitcond.not = icmp eq i64 %10, %smax, !dbg !895
br i1 %exitcond.not, label %for.done, label %for.body, !dbg !891
for.body: ; preds = %for.loop
call void @llvm.dbg.value(metadata i8** %9, metadata !843, metadata !DIExpression()), !dbg !896
%11 = icmp eq i8** %9, null, !dbg !897
br i1 %11, label %deref.throw, label %deref.next, !dbg !897
for.done: ; preds = %for.loop
%12 = tail call i64 asm sideeffect "movq %rsp, $0", "=&r"() #10, !dbg !898
call void @llvm.dbg.value(metadata i64 undef, metadata !866, metadata !DIExpression()), !dbg !901
tail call fastcc void @runtime.runMain(), !dbg !902
ret i64 0, !dbg !903
deref.throw: ; preds = %for.body
tail call fastcc void @runtime.nilPanic(), !dbg !897
unreachable, !dbg !897
deref.next: ; preds = %for.body
call void @llvm.dbg.value(metadata i64 undef, metadata !853, metadata !DIExpression()), !dbg !904
call void @llvm.dbg.value(metadata { %runtime.interfaceMethodInfo.1*, i64, i64 } undef, metadata !854, metadata !DIExpression()), !dbg !905
call void @llvm.dbg.value(metadata i64 %10, metadata !852, metadata !DIExpression()), !dbg !906
%.not = icmp ult i64 %10, %.unpack7, !dbg !907
br i1 %.not, label %lookup.next, label %lookup.throw, !dbg !907
lookup.throw: ; preds = %deref.next
tail call fastcc void @runtime.lookupPanic(), !dbg !907
unreachable, !dbg !907
lookup.next: ; preds = %deref.next
%13 = load i8*, i8** %9, align 8, !dbg !897
%14 = tail call i64 @strlen(i8* nonnull dereferenceable(1) %13), !dbg !908
call void @llvm.dbg.value(metadata i64 %14, metadata !853, metadata !DIExpression()), !dbg !904
call void @llvm.dbg.value(metadata %runtime.interfaceMethodInfo.1* undef, metadata !855, metadata !DIExpression()), !dbg !909
%15 = getelementptr inbounds %runtime.interfaceMethodInfo.1, %runtime.interfaceMethodInfo.1* %.unpack, i64 %10, i32 1, !dbg !910
call void @llvm.dbg.value(metadata i64 undef, metadata !853, metadata !DIExpression()), !dbg !911
store i64 %14, i64* %15, align 8, !dbg !910
call void @llvm.dbg.value(metadata i64 undef, metadata !863, metadata !DIExpression()), !dbg !910
call void @llvm.dbg.value(metadata i8** %9, metadata !843, metadata !DIExpression()), !dbg !912
br i1 %8, label %store.throw9, label %store.next10, !dbg !913
store.throw9: ; preds = %lookup.next
tail call fastcc void @runtime.nilPanic(), !dbg !913
unreachable, !dbg !913
store.next10: ; preds = %lookup.next
%16 = getelementptr inbounds %runtime.interfaceMethodInfo.1, %runtime.interfaceMethodInfo.1* %.unpack, i64 %10, i32 0, !dbg !913
%17 = bitcast i8** %9 to i64*, !dbg !914
%18 = load i64, i64* %17, align 8, !dbg !914
%19 = bitcast i8** %16 to i64*, !dbg !913
store i64 %18, i64* %19, align 8, !dbg !913
call void @llvm.dbg.value(metadata i8* undef, metadata !865, metadata !DIExpression()), !dbg !913
call void @llvm.dbg.value(metadata i8** %9, metadata !843, metadata !DIExpression()), !dbg !915
%20 = getelementptr inbounds i8*, i8** %9, i64 1, !dbg !916
call void @llvm.dbg.value(metadata i8** %20, metadata !843, metadata !DIExpression()), !dbg !917
%21 = add nuw nsw i64 %10, 1, !dbg !918
call void @llvm.dbg.value(metadata i64 %21, metadata !852, metadata !DIExpression()), !dbg !918
br label %for.loop, !dbg !891
}
; Function Attrs: nofree nounwind optsize
declare noalias i8* @malloc(i64) local_unnamed_addr #6
; Function Attrs: noinline optsize
define internal fastcc void @runtime.runMain() unnamed_addr #7 !dbg !919 {
entry:
%complit.i.i = tail call fastcc i8* @runtime.alloc(i64 32), !dbg !920
%0 = getelementptr inbounds i8, i8* %complit.i.i, i64 24, !dbg !920
%1 = bitcast i8* %0 to i8**, !dbg !920
store i8* bitcast (%NoopCoro.Frame* @NoopCoro.Frame.Const to i8*), i8** %1, align 8, !dbg !926
tail call void @"runtime.run$1"(i8* undef, i8* nonnull %complit.i.i), !dbg !927
call void @llvm.dbg.value(metadata i64 0, metadata !928, metadata !DIExpression()), !dbg !939
br label %for.loop.i.i, !dbg !941
for.loop.i.i: ; preds = %"(*internal/task.Task).Resume.exit.i.i", %entry
%2 = load i1, i1* @runtime.schedulerDone, align 1, !dbg !942
call void @llvm.dbg.value(metadata i1 %2, metadata !931, metadata !DIExpression()), !dbg !942
br i1 %2, label %runtime.run.exit, label %if.done2.i.i, !dbg !941
if.done2.i.i: ; preds = %for.loop.i.i
call void @llvm.dbg.value(metadata %"internal/task.Task"* null, metadata !932, metadata !DIExpression()), !dbg !943
call void @llvm.dbg.value(metadata %"internal/task.Task"* null, metadata !932, metadata !DIExpression()), !dbg !944
call void @llvm.dbg.value(metadata i64 0, metadata !945, metadata !DIExpression()), !dbg !955
call void @llvm.dbg.value(metadata %"internal/task.Queue"* @runtime.runqueue, metadata !950, metadata !DIExpression()), !dbg !957
%3 = load %"internal/task.Task"*, %"internal/task.Task"** getelementptr inbounds (%"internal/task.Queue", %"internal/task.Queue"* @runtime.runqueue, i64 0, i32 0), align 8, !dbg !958
call void @llvm.dbg.value(metadata %"internal/task.Task"* %3, metadata !951, metadata !DIExpression()), !dbg !959
%4 = icmp eq %"internal/task.Task"* %3, null, !dbg !960
br i1 %4, label %if.done6.i.i, label %gep.next6.i.i.i, !dbg !961
gep.next6.i.i.i: ; preds = %if.done2.i.i
call void @llvm.dbg.value(metadata %"internal/task.Queue"* @runtime.runqueue, metadata !950, metadata !DIExpression()), !dbg !962
call void @llvm.dbg.value(metadata %"internal/task.Task"* %3, metadata !951, metadata !DIExpression()), !dbg !963
%5 = bitcast %"internal/task.Task"* %3 to i64*, !dbg !964
%6 = load i64, i64* %5, align 8, !dbg !964
store i64 %6, i64* bitcast (%"internal/task.Queue"* @runtime.runqueue to i64*), align 8, !dbg !965
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !952, metadata !DIExpression()), !dbg !965
%7 = load %"internal/task.Task"*, %"internal/task.Task"** getelementptr inbounds (%"internal/task.Queue", %"internal/task.Queue"* @runtime.runqueue, i64 0, i32 1), align 8, !dbg !966
%8 = icmp eq %"internal/task.Task"* %7, %3, !dbg !967
br i1 %8, label %store.next16.i.i.i, label %"(*internal/task.Task).Resume.exit.i.i", !dbg !961
store.next16.i.i.i: ; preds = %gep.next6.i.i.i
call void @llvm.dbg.value(metadata %"internal/task.Queue"* @runtime.runqueue, metadata !950, metadata !DIExpression()), !dbg !968
store %"internal/task.Task"* null, %"internal/task.Task"** getelementptr inbounds (%"internal/task.Queue", %"internal/task.Queue"* @runtime.runqueue, i64 0, i32 1), align 8, !dbg !969
call void @llvm.dbg.value(metadata %"internal/task.Task"* null, metadata !953, metadata !DIExpression()), !dbg !969
br label %"(*internal/task.Task).Resume.exit.i.i", !dbg !961
if.done6.i.i: ; preds = %if.done2.i.i
call void @llvm.dbg.value(metadata %"internal/task.Task"* %3, metadata !936, metadata !DIExpression()), !dbg !970
call void @llvm.dbg.value(metadata %"internal/task.Task"* null, metadata !932, metadata !DIExpression()), !dbg !971
tail call fastcc void @runtime.waitForEvents(), !dbg !972
unreachable
"(*internal/task.Task).Resume.exit.i.i": ; preds = %store.next16.i.i.i, %gep.next6.i.i.i
%9 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %3, i64 0, i32 0, !dbg !964
call void @llvm.dbg.value(metadata %"internal/task.Task"* %3, metadata !951, metadata !DIExpression()), !dbg !973
store %"internal/task.Task"* null, %"internal/task.Task"** %9, align 8, !dbg !974
call void @llvm.dbg.value(metadata %"internal/task.Task"* null, metadata !954, metadata !DIExpression()), !dbg !974
call void @llvm.dbg.value(metadata i64 0, metadata !945, metadata !DIExpression()), !dbg !975
call void @llvm.dbg.value(metadata %"internal/task.Task"* %3, metadata !936, metadata !DIExpression()), !dbg !976
call void @llvm.dbg.value(metadata %"internal/task.Task"* %3, metadata !977, metadata !DIExpression()), !dbg !980
%10 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %3, i64 0, i32 3, i32 0, !dbg !982
%11 = load i8*, i8** %10, align 8, !dbg !982
%12 = bitcast i8* %11 to { i8*, i8* }*
%13 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %12, i32 0, i32 0
%14 = load i8*, i8** %13, align 8
%15 = bitcast i8* %14 to void (i8*)*
tail call fastcc void %15(i8* %11), !dbg !983
br label %for.loop.i.i, !dbg !941
runtime.run.exit: ; preds = %for.loop.i.i
ret void, !dbg !984
}
; Function Attrs: argmemonly nofree nounwind optsize readonly
declare i64 @strlen(i8* nocapture) local_unnamed_addr #8
; Function Attrs: optsize
define internal void @"runtime.run$1"(i8* nocapture readnone %context, i8* %parentHandle) unnamed_addr #1 !dbg !985 {
entry:
%coro.alloc = tail call fastcc i8* @runtime.alloc(i64 40), !dbg !988
%resume.addr = bitcast i8* %coro.alloc to void (%"runtime.run$1.Frame"*)**, !dbg !988
store void (%"runtime.run$1.Frame"*)* @"runtime.run$1.resume", void (%"runtime.run$1.Frame"*)** %resume.addr, align 8, !dbg !988
%destroy.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 8, !dbg !988
%0 = bitcast i8* %destroy.addr to void (%"runtime.run$1.Frame"*)**, !dbg !988
store void (%"runtime.run$1.Frame"*)* @"runtime.run$1.destroy", void (%"runtime.run$1.Frame"*)** %0, align 8, !dbg !988
%parentHandle.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 16, !dbg !988
%1 = bitcast i8* %parentHandle.spill.addr to i8**, !dbg !988
store i8* %parentHandle, i8** %1, align 8, !dbg !988
%task.current = bitcast i8* %parentHandle to %"internal/task.Task"*, !dbg !988
%task.state.parent = tail call fastcc i8* @"(*internal/task.Task).setState"(%"internal/task.Task"* %task.current, i8* nonnull %coro.alloc), !dbg !988
%task.state.parent.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 24, !dbg !988
%2 = bitcast i8* %task.state.parent.spill.addr to i8**, !dbg !988
store i8* %task.state.parent, i8** %2, align 8, !dbg !988
tail call fastcc void @main.main(i8* undef, i8* %parentHandle), !dbg !988
%index.addr2 = getelementptr inbounds i8, i8* %coro.alloc, i64 32, !dbg !989
%3 = bitcast i8* %index.addr2 to i1*, !dbg !989
store i1 false, i1* %3, align 1, !dbg !989
ret void, !dbg !988
}
; Function Attrs: noreturn optsize
define internal fastcc void @runtime.waitForEvents() unnamed_addr #3 !dbg !990 {
entry:
tail call fastcc void @runtime.runtimePanic(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @"runtime.waitForEvents$string", i64 0, i64 0), i64 27), !dbg !992
unreachable
}
; Function Attrs: optsize
declare i8* @mmap(i8* nocapture, i64, i64, i64, i64, i64) local_unnamed_addr #1
; Function Attrs: optsize
define internal fastcc void @main.main(i8* nocapture readnone %context, i8* %parentHandle) unnamed_addr #1 !dbg !993 {
entry:
%coro.alloc = tail call fastcc i8* @runtime.alloc(i64 88), !dbg !996
%resume.addr = bitcast i8* %coro.alloc to void (%main.main.Frame*)**, !dbg !996
store void (%main.main.Frame*)* @main.main.resume, void (%main.main.Frame*)** %resume.addr, align 8, !dbg !996
%destroy.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 8, !dbg !996
%0 = bitcast i8* %destroy.addr to void (%main.main.Frame*)**, !dbg !996
store void (%main.main.Frame*)* @main.main.destroy, void (%main.main.Frame*)** %0, align 8, !dbg !996
%parentHandle.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 64, !dbg !996
%1 = bitcast i8* %parentHandle.spill.addr to i8**, !dbg !996
store i8* %parentHandle, i8** %1, align 8, !dbg !996
%task.current3 = bitcast i8* %parentHandle to %"internal/task.Task"*, !dbg !996
%task.state.parent = tail call fastcc i8* @"(*internal/task.Task).setState"(%"internal/task.Task"* %task.current3, i8* nonnull %coro.alloc), !dbg !996
%task.state.parent.spill.addr = getelementptr inbounds i8, i8* %coro.alloc, i64 72, !dbg !996
%2 = bitcast i8* %task.state.parent.spill.addr to i8**, !dbg !996
store i8* %task.state.parent, i8** %2, align 8, !dbg !996
tail call fastcc void @"(*sync.Once).Do"(%sync.Once* nonnull @main.once, i8* undef, i64 1, i8* undef, i8* %parentHandle), !dbg !996
%index.addr21 = getelementptr inbounds i8, i8* %coro.alloc, i64 80, !dbg !996
%3 = bitcast i8* %index.addr21 to i1*, !dbg !996
store i1 false, i1* %3, align 1, !dbg !996
ret void, !dbg !996
}
; Function Attrs: argmemonly nounwind readonly
declare token @llvm.coro.id(i32, i8* readnone, i8* nocapture readonly, i8*) #9
; Function Attrs: nounwind
declare i8* @llvm.coro.begin(token, i8* writeonly) #10
; Function Attrs: argmemonly nounwind readonly
declare i8* @llvm.coro.subfn.addr(i8* nocapture readonly, i8) #9
; Function Attrs: norecurse nounwind readnone
define private fastcc void @NoopCoro.ResumeDestroy(%NoopCoro.Frame* nocapture %0) #11 {
entry:
ret void
}
; Function Attrs: optsize
define internal fastcc void @"(*sync.Once).Do.resume"(%"(*sync.Once).Do.Frame"* noalias nonnull align 8 dereferenceable(64) %FramePtr) #1 !dbg !997 {
entry.resume:
%defer.alloca.reload.addr = getelementptr inbounds %"(*sync.Once).Do.Frame", %"(*sync.Once).Do.Frame"* %FramePtr, i64 0, i32 2, !dbg !1002
call void @llvm.dbg.value(metadata %sync.Once* @main.once, metadata !999, metadata !DIExpression()), !dbg !1002
%0 = getelementptr inbounds %"(*sync.Once).Do.Frame", %"(*sync.Once).Do.Frame"* %FramePtr, i64 0, i32 2, i32 2, !dbg !1002
%1 = bitcast { i64, %runtime._defer*, %sync.Mutex* }* %defer.alloca.reload.addr to i8*, !dbg !1002
tail call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %1, i8 0, i64 16, i1 false), !dbg !1002
store %sync.Mutex* getelementptr inbounds (%sync.Once, %sync.Once* @main.once, i64 0, i32 1), %sync.Mutex** %0, align 8, !dbg !1002
%2 = bitcast { i64, %runtime._defer*, %sync.Mutex* }* %defer.alloca.reload.addr to %runtime._defer*, !dbg !1002
%3 = load i1, i1* getelementptr inbounds (%sync.Once, %sync.Once* @main.once, i64 0, i32 0), align 8, !dbg !1003
br i1 %3, label %rundefers.loophead, label %store.next, !dbg !1004
rundefers.loophead: ; preds = %entry.resume, %rundefers.loop
%deferPtr.0 = phi %runtime._defer* [ %stack.next, %rundefers.loop ], [ %2, %entry.resume ], !dbg !1004
%stackIsNil = icmp eq %runtime._defer* %deferPtr.0, null, !dbg !1004
br i1 %stackIsNil, label %rundefers.end, label %rundefers.loop, !dbg !1004
rundefers.loop: ; preds = %rundefers.loophead
%stack.next.gep = getelementptr inbounds %runtime._defer, %runtime._defer* %deferPtr.0, i64 0, i32 1, !dbg !1004
%stack.next = load %runtime._defer*, %runtime._defer** %stack.next.gep, align 8, !dbg !1004
%gep = getelementptr inbounds %runtime._defer, %runtime._defer* %deferPtr.0, i64 1, !dbg !1004
%4 = bitcast %runtime._defer* %gep to %sync.Mutex**, !dbg !1004
%param = load %sync.Mutex*, %sync.Mutex** %4, align 8, !dbg !1004
tail call fastcc void @"(*sync.Mutex).Unlock"(%sync.Mutex* %param), !dbg !1004
br label %rundefers.loophead, !dbg !1004
rundefers.end: ; preds = %rundefers.loophead7, %rundefers.loophead
%task.state.parent.reload.addr = getelementptr inbounds %"(*sync.Once).Do.Frame", %"(*sync.Once).Do.Frame"* %FramePtr, i64 0, i32 4, !dbg !1005
%task.state.parent.reload = load i8*, i8** %task.state.parent.reload.addr, align 8, !dbg !1005
%parentHandle.reload.addr = getelementptr inbounds %"(*sync.Once).Do.Frame", %"(*sync.Once).Do.Frame"* %FramePtr, i64 0, i32 3, !dbg !1005
%5 = bitcast i8** %parentHandle.reload.addr to %"internal/task.Task"**, !dbg !1005
%parentHandle.reload1 = load %"internal/task.Task"*, %"internal/task.Task"** %5, align 8, !dbg !1005
tail call fastcc void @"(*internal/task.Task).returnTo"(%"internal/task.Task"* %parentHandle.reload1, i8* %task.state.parent.reload), !dbg !1002
ret void, !dbg !1005
store.next: ; preds = %entry.resume
call void @llvm.dbg.value(metadata %sync.Once* @main.once, metadata !999, metadata !DIExpression()), !dbg !1006
store i1 true, i1* getelementptr inbounds (%sync.Once, %sync.Once* @main.once, i64 0, i32 0), align 8, !dbg !1007
call void @llvm.dbg.value(metadata i1 true, metadata !1001, metadata !DIExpression()), !dbg !1007
call void @llvm.dbg.value(metadata %runtime.interfaceMethodInfo.1 { i8* undef, i64 1 }, metadata !1000, metadata !DIExpression()), !dbg !1008
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1009, metadata !DIExpression()), !dbg !1012
call void @llvm.dbg.value(metadata i64 0, metadata !1014, metadata !DIExpression()), !dbg !1019
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1017, metadata !DIExpression()), !dbg !1021
%6 = load i8, i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 16), align 8, !dbg !1022
switch i8 %6, label %"main.main$1.exit" [
i8 4, label %switch.body.i.i
i8 2, label %switch.body1.i.i
i8 1, label %store.next11.i.i
], !dbg !1023
switch.body.i.i: ; preds = %store.next
call void @llvm.dbg.value(metadata i64 0, metadata !1014, metadata !DIExpression()), !dbg !1024
tail call fastcc void @runtime.runtimePanic(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"runtime.chanClose$string.9", i64 0, i64 0), i64 23), !dbg !1025
unreachable
switch.body1.i.i: ; preds = %store.next
call void @llvm.dbg.value(metadata i64 0, metadata !1014, metadata !DIExpression()), !dbg !1026
tail call fastcc void @runtime.runtimePanic(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"runtime.chanClose$string.10", i64 0, i64 0), i64 25), !dbg !1027
unreachable
for.loop.i.i: ; preds = %store.next11.i.i, %"(*runtime.channel).resumeRX.exit.i.i"
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1017, metadata !DIExpression()), !dbg !1028
%7 = load %runtime.channelBlockedList*, %runtime.channelBlockedList** bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to %runtime.channelBlockedList**), align 8, !dbg !1029
%.not.i.i = icmp eq %runtime.channelBlockedList* %7, null, !dbg !1030
br i1 %.not.i.i, label %"main.main$1.exit", label %gep.next10.i.i.i, !dbg !1023
gep.next10.i.i.i: ; preds = %for.loop.i.i
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1017, metadata !DIExpression()), !dbg !1031
call void @llvm.dbg.value(metadata i1 false, metadata !1032, metadata !DIExpression()), !dbg !1043
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* null, metadata !1038, metadata !DIExpression()), !dbg !1045
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1037, metadata !DIExpression()), !dbg !1046
%8 = bitcast %runtime.channelBlockedList* %7 to i64*, !dbg !1047
%9 = load i64, i64* %8, align 8, !dbg !1047
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !1038, metadata !DIExpression()), !dbg !1048
store i64 %9, i64* bitcast (i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 24) to i64*), align 8, !dbg !1049
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* undef, metadata !1039, metadata !DIExpression()), !dbg !1049
%10 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %7, i64 0, i32 1, !dbg !1050
%11 = load %"internal/task.Task"*, %"internal/task.Task"** %10, align 8, !dbg !1050
%12 = icmp eq %"internal/task.Task"* %11, null, !dbg !1051
br i1 %12, label %gep.throw17.i.i.i, label %gep.next18.i.i.i, !dbg !1051
gep.throw17.i.i.i: ; preds = %gep.next10.i.i.i
tail call fastcc void @runtime.nilPanic(), !dbg !1051
unreachable, !dbg !1051
gep.next18.i.i.i: ; preds = %gep.next10.i.i.i
%13 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %11, i64 0, i32 1, !dbg !1051
%14 = load i8*, i8** %13, align 8, !dbg !1051
call void @llvm.dbg.value(metadata i1 false, metadata !1032, metadata !DIExpression()), !dbg !1052
call void @llvm.dbg.value(metadata i8* %14, metadata !1040, metadata !DIExpression()), !dbg !1053
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1037, metadata !DIExpression()), !dbg !1054
%15 = load i64, i64* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to i64*), align 8, !dbg !1055
tail call void @llvm.memset.p0i8.i64(i8* align 1 %14, i8 0, i64 %15, i1 false), !dbg !1056
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !1038, metadata !DIExpression()), !dbg !1057
%16 = load %"internal/task.Task"*, %"internal/task.Task"** %10, align 8, !dbg !1058
%17 = icmp eq %"internal/task.Task"* %16, null, !dbg !1059
br i1 %17, label %gep.throw49.i.i.i, label %gep.next50.i.i.i, !dbg !1059
deref.next28.i.i.i: ; preds = %gep.next50.i.i.i
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !1038, metadata !DIExpression()), !dbg !1060
%18 = load %"internal/task.Task"*, %"internal/task.Task"** %10, align 8, !dbg !1061
%19 = icmp eq %"internal/task.Task"* %18, null, !dbg !1062
br i1 %19, label %gep.throw29.i.i.i, label %gep.next30.i.i.i, !dbg !1062
gep.throw29.i.i.i: ; preds = %deref.next28.i.i.i
tail call fastcc void @runtime.nilPanic(), !dbg !1062
unreachable, !dbg !1062
gep.next30.i.i.i: ; preds = %deref.next28.i.i.i
%20 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %18, i64 0, i32 1, !dbg !1062
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !1038, metadata !DIExpression()), !dbg !1063
%21 = bitcast i8** %20 to %runtime.chanSelectState**, !dbg !1062
store %runtime.chanSelectState* %24, %runtime.chanSelectState** %21, align 8, !dbg !1062
call void @llvm.dbg.value(metadata %runtime.chanSelectState* %24, metadata !1041, metadata !DIExpression()), !dbg !1062
tail call fastcc void @"(*runtime.channelBlockedList).detach"(%runtime.channelBlockedList* nonnull %7), !dbg !1064
br label %"(*runtime.channel).resumeRX.exit.i.i", !dbg !1065
gep.throw49.i.i.i: ; preds = %gep.next18.i.i.i
tail call fastcc void @runtime.nilPanic(), !dbg !1059
unreachable, !dbg !1059
gep.next50.i.i.i: ; preds = %gep.next18.i.i.i
%22 = getelementptr inbounds %"internal/task.Task", %"internal/task.Task"* %16, i64 0, i32 2, !dbg !1059
store i64 0, i64* %22, align 8, !dbg !1059
call void @llvm.dbg.value(metadata i64 0, metadata !1042, metadata !DIExpression()), !dbg !1059
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !1038, metadata !DIExpression()), !dbg !1066
%23 = getelementptr inbounds %runtime.channelBlockedList, %runtime.channelBlockedList* %7, i64 0, i32 2, !dbg !1067
%24 = load %runtime.chanSelectState*, %runtime.chanSelectState** %23, align 8, !dbg !1067
%.not.i.i.i = icmp eq %runtime.chanSelectState* %24, null, !dbg !1068
br i1 %.not.i.i.i, label %"(*runtime.channel).resumeRX.exit.i.i", label %deref.next28.i.i.i, !dbg !1065
"(*runtime.channel).resumeRX.exit.i.i": ; preds = %gep.next50.i.i.i, %gep.next30.i.i.i
call void @llvm.dbg.value(metadata %runtime.channelBlockedList* %7, metadata !1038, metadata !DIExpression()), !dbg !1069
%25 = load %"internal/task.Task"*, %"internal/task.Task"** %10, align 8, !dbg !1070
tail call fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* %25), !dbg !1071
call void @llvm.dbg.value(metadata i8* %14, metadata !1040, metadata !DIExpression()), !dbg !1072
br label %for.loop.i.i, !dbg !1023
store.next11.i.i: ; preds = %store.next
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1017, metadata !DIExpression()), !dbg !1073
store i8 4, i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 16), align 8, !dbg !1074
call void @llvm.dbg.value(metadata i8 4, metadata !1018, metadata !DIExpression()), !dbg !1074
br label %for.loop.i.i, !dbg !1023
"main.main$1.exit": ; preds = %for.loop.i.i, %store.next
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1017, metadata !DIExpression()), !dbg !1075
store i8 4, i8* getelementptr inbounds ({ [56 x i8], {}* }, { [56 x i8], {}* }* @"main$alloc.60", i64 0, i32 0, i64 16), align 8, !dbg !1076
call void @llvm.dbg.value(metadata i8 4, metadata !1018, metadata !DIExpression()), !dbg !1076
call void @llvm.dbg.value(metadata i64 0, metadata !1014, metadata !DIExpression()), !dbg !1077
br label %rundefers.loophead7, !dbg !1004
rundefers.loophead7: ; preds = %rundefers.loop8, %"main.main$1.exit"
%deferPtr.1 = phi %runtime._defer* [ %2, %"main.main$1.exit" ], [ %stack.next13, %rundefers.loop8 ], !dbg !1004
%stackIsNil11 = icmp eq %runtime._defer* %deferPtr.1, null, !dbg !1004
br i1 %stackIsNil11, label %rundefers.end, label %rundefers.loop8, !dbg !1004
rundefers.loop8: ; preds = %rundefers.loophead7
%stack.next.gep12 = getelementptr inbounds %runtime._defer, %runtime._defer* %deferPtr.1, i64 0, i32 1, !dbg !1004
%stack.next13 = load %runtime._defer*, %runtime._defer** %stack.next.gep12, align 8, !dbg !1004
%gep18 = getelementptr inbounds %runtime._defer, %runtime._defer* %deferPtr.1, i64 1, !dbg !1004
%26 = bitcast %runtime._defer* %gep18 to %sync.Mutex**, !dbg !1004
%param19 = load %sync.Mutex*, %sync.Mutex** %26, align 8, !dbg !1004
tail call fastcc void @"(*sync.Mutex).Unlock"(%sync.Mutex* %param19), !dbg !1004
br label %rundefers.loophead7, !dbg !1004
}
; Function Attrs: optsize
define internal fastcc void @"(*sync.Once).Do.destroy"(%"(*sync.Once).Do.Frame"* noalias nonnull align 8 dereferenceable(64) %FramePtr) #1 !dbg !1078 {
entry.destroy:
ret void, !dbg !1083
}
; Function Attrs: optsize
define internal fastcc void @"(*sync.Once).Do.cleanup"(%"(*sync.Once).Do.Frame"* noalias nonnull align 8 dereferenceable(64) %FramePtr) #1 !dbg !1084 {
entry.cleanup:
ret void, !dbg !1089
}
; Function Attrs: optsize
define internal fastcc void @runtime.chanRecv.resume(%runtime.chanRecv.Frame* noalias nonnull align 8 dereferenceable(48) %FramePtr) #1 !dbg !1090 {
entry.resume:
%.reload.addr = getelementptr inbounds %runtime.chanRecv.Frame, %runtime.chanRecv.Frame* %FramePtr, i64 0, i32 4, !dbg !1104
%.reload = load i1*, i1** %.reload.addr, align 8, !dbg !1104
%task.state.parent.reload.addr = getelementptr inbounds %runtime.chanRecv.Frame, %runtime.chanRecv.Frame* %FramePtr, i64 0, i32 3, !dbg !1104
%0 = bitcast i8** %task.state.parent.reload.addr to i64*, !dbg !1104
%task.state.parent.reload1 = load i64, i64* %0, align 8, !dbg !1104
%parentHandle.reload.addr = getelementptr inbounds %runtime.chanRecv.Frame, %runtime.chanRecv.Frame* %FramePtr, i64 0, i32 2, !dbg !1104
%parentHandle.reload = load i8*, i8** %parentHandle.reload.addr, align 8, !dbg !1104
%1 = getelementptr inbounds i8, i8* %parentHandle.reload, i64 16, !dbg !1104
%2 = bitcast i8* %1 to i64*, !dbg !1104
%3 = getelementptr inbounds i8, i8* %parentHandle.reload, i64 8, !dbg !1105
%task.current21 = bitcast i8* %parentHandle.reload to %"internal/task.Task"*, !dbg !1107
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !1098, metadata !DIExpression()), !dbg !1108
%4 = load i64, i64* %2, align 8, !dbg !1109
%5 = icmp eq i64 %4, 1, !dbg !1110
call void @llvm.dbg.value(metadata i1 %5, metadata !1103, metadata !DIExpression()), !dbg !1111
call void @llvm.dbg.value(metadata i8* null, metadata !1100, metadata !DIExpression()), !dbg !1112
call void @llvm.dbg.value(metadata i64 0, metadata !1101, metadata !DIExpression()), !dbg !1113
tail call void @llvm.memset.p0i8.i64(i8* nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false), !dbg !1113
store i1 %5, i1* %.reload, align 1, !dbg !1108
call void @llvm.dbg.value(metadata i8* undef, metadata !214, metadata !DIExpression()), !dbg !1114
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !213, metadata !DIExpression()), !dbg !1116
%6 = getelementptr inbounds i8, i8* %parentHandle.reload, i64 24, !dbg !1117
%7 = bitcast i8* %6 to i64*, !dbg !1118
store i64 %task.state.parent.reload1, i64* %7, align 8, !dbg !1118
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !220, metadata !DIExpression()), !dbg !1119
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !228, metadata !DIExpression()), !dbg !1121
musttail call fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* nonnull %task.current21), !dbg !1123
ret void, !dbg !1107
}
; Function Attrs: optsize
define internal fastcc void @runtime.chanRecv.destroy(%runtime.chanRecv.Frame* noalias nonnull align 8 dereferenceable(48) %FramePtr) #1 !dbg !1124 {
entry.destroy:
ret void, !dbg !1138
}
; Function Attrs: optsize
define internal fastcc void @runtime.chanRecv.cleanup(%runtime.chanRecv.Frame* noalias nonnull align 8 dereferenceable(48) %FramePtr) #1 !dbg !1139 {
entry.cleanup:
ret void, !dbg !1153
}
; Function Attrs: optsize
define internal fastcc void @main.main.resume(%main.main.Frame* noalias nonnull align 8 dereferenceable(88) %FramePtr) #1 !dbg !1154 {
entry.resume:
%chan.value = getelementptr inbounds %main.main.Frame, %main.main.Frame* %FramePtr, i64 0, i32 5, !dbg !1157
%chan.blockedList = getelementptr inbounds %main.main.Frame, %main.main.Frame* %FramePtr, i64 0, i32 2, !dbg !1157
%index.addr = getelementptr inbounds %main.main.Frame, %main.main.Frame* %FramePtr, i64 0, i32 6
%index = load i1, i1* %index.addr, align 8
%call.return.reload.addr19 = getelementptr inbounds %main.main.Frame, %main.main.Frame* %FramePtr, i64 0, i32 7, !dbg !1157
%parentHandle.reload.addr15 = getelementptr inbounds %main.main.Frame, %main.main.Frame* %FramePtr, i64 0, i32 3, !dbg !1157
%parentHandle.reload16 = load i8*, i8** %parentHandle.reload.addr15, align 8, !dbg !1157
br i1 %index, label %wakeup, label %wakeup2
wakeup2: ; preds = %entry.resume
call void @llvm.dbg.value(metadata %runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), metadata !1156, metadata !DIExpression()), !dbg !1157
%0 = bitcast {}* %chan.value to i8*, !dbg !1157
tail call void @llvm.lifetime.start.p0i8(i64 0, i8* nonnull %0), !dbg !1157
%1 = bitcast %runtime.channelBlockedList* %chan.blockedList to i8*, !dbg !1157
tail call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %1), !dbg !1157
tail call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %call.return.reload.addr19), !dbg !1157
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !1158, metadata !DIExpression()), !dbg !1165
call void @llvm.dbg.value(metadata i8* undef, metadata !1163, metadata !DIExpression()), !dbg !1165
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !1158, metadata !DIExpression()), !dbg !1167
%2 = icmp eq i8* %parentHandle.reload16, null, !dbg !1168
br i1 %2, label %gep.throw.i, label %CoroEnd, !dbg !1168
gep.throw.i: ; preds = %wakeup2
tail call fastcc void @runtime.nilPanic(), !dbg !1168
unreachable, !dbg !1168
wakeup: ; preds = %entry.resume
%3 = bitcast %runtime.channelBlockedList* %chan.blockedList to i8*, !dbg !1157
%4 = bitcast {}* %chan.value to i8*, !dbg !1157
tail call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %call.return.reload.addr19), !dbg !1157
tail call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %3), !dbg !1157
tail call void @llvm.lifetime.end.p0i8(i64 0, i8* nonnull %4), !dbg !1157
call void @llvm.dbg.value(metadata i8* undef, metadata !214, metadata !DIExpression()), !dbg !1169
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !213, metadata !DIExpression()), !dbg !1171
%5 = icmp eq i8* %parentHandle.reload16, null, !dbg !1172
br i1 %5, label %gep.throw.i5, label %"(*internal/task.Task).returnTo.exit", !dbg !1172
gep.throw.i5: ; preds = %wakeup
tail call fastcc void @runtime.nilPanic(), !dbg !1172
unreachable, !dbg !1172
"(*internal/task.Task).returnTo.exit": ; preds = %wakeup
%task.current310 = bitcast i8* %parentHandle.reload16 to %"internal/task.Task"*, !dbg !1157
%task.state.parent.reload.addr = getelementptr inbounds %main.main.Frame, %main.main.Frame* %FramePtr, i64 0, i32 4, !dbg !1157
%6 = bitcast i8** %task.state.parent.reload.addr to i64*, !dbg !1157
%task.state.parent.reload3 = load i64, i64* %6, align 8, !dbg !1157
%7 = getelementptr inbounds i8, i8* %parentHandle.reload16, i64 24, !dbg !1172
call void @llvm.dbg.value(metadata i8* undef, metadata !214, metadata !DIExpression()), !dbg !1173
%8 = bitcast i8* %7 to i64*, !dbg !1173
store i64 %task.state.parent.reload3, i64* %8, align 8, !dbg !1173
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !213, metadata !DIExpression()), !dbg !1174
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !220, metadata !DIExpression()), !dbg !1175
call void @llvm.dbg.value(metadata %"internal/task.Task"* undef, metadata !228, metadata !DIExpression()), !dbg !1177
musttail call fastcc void @"(*internal/task.Queue).Push"(%"internal/task.Task"* nonnull %task.current310), !dbg !1179
ret void, !dbg !1157
CoroEnd: ; preds = %wakeup2
%9 = getelementptr inbounds i8, i8* %parentHandle.reload16, i64 8, !dbg !1168
%10 = bitcast i8* %9 to i8**, !dbg !1168
call void @llvm.dbg.value(metadata i8* undef, metadata !1163, metadata !DIExpression()), !dbg !1180
store i8* %call.return.reload.addr19, i8** %10, align 8, !dbg !1168
call void @llvm.dbg.value(metadata i8* undef, metadata !1164, metadata !DIExpression()), !dbg !1168
%11 = tail call fastcc i1 @runtime.chanRecv(%runtime.channel* bitcast ({ [56 x i8], {}* }* @"main$alloc.60" to %runtime.channel*), i8* nonnull %0, %runtime.channelBlockedList* nonnull %chan.blockedList, i8* undef, i8* nonnull %parentHandle.reload16), !dbg !1157
store i1 true, i1* %index.addr, align 8, !dbg !1157
ret void, !dbg !1157
}
; Function Attrs: optsize
define internal fastcc void @main.main.destroy(%main.main.Frame* noalias nonnull align 8 dereferenceable(88) %FramePtr) #1 !dbg !1181 {
entry.destroy:
ret void, !dbg !1184
}
; Function Attrs: optsize
define internal fastcc void @main.main.cleanup(%main.main.Frame* noalias nonnull align 8 dereferenceable(88) %FramePtr) #1 !dbg !1185 {
entry.cleanup:
ret void, !dbg !1188
}
; Function Attrs: optsize
define internal fastcc void @"runtime.run$1.resume"(%"runtime.run$1.Frame"* noalias nonnull align 8 dereferenceable(40) %FramePtr) #1 !dbg !1189 {
entry.resume:
%task.state.parent.reload.addr = getelementptr inbounds %"runtime.run$1.Frame", %"runtime.run$1.Frame"* %FramePtr, i64 0, i32 3, !dbg !1192
%task.state.parent.reload = load i8*, i8** %task.state.parent.reload.addr, align 8, !dbg !1192
%parentHandle.reload.addr = getelementptr inbounds %"runtime.run$1.Frame", %"runtime.run$1.Frame"* %FramePtr, i64 0, i32 2, !dbg !1192
%0 = bitcast i8** %parentHandle.reload.addr to %"internal/task.Task"**, !dbg !1192
%parentHandle.reload1 = load %"internal/task.Task"*, %"internal/task.Task"** %0, align 8, !dbg !1192
store i1 true, i1* @runtime.schedulerDone, align 1, !dbg !1193
call void @llvm.dbg.value(metadata i1 true, metadata !1191, metadata !DIExpression()), !dbg !1193
tail call fastcc void @"(*internal/task.Task).returnTo"(%"internal/task.Task"* %parentHandle.reload1, i8* %task.state.parent.reload), !dbg !1193
ret void, !dbg !1192
}
; Function Attrs: optsize
define internal fastcc void @"runtime.run$1.destroy"(%"runtime.run$1.Frame"* noalias nonnull align 8 dereferenceable(40) %FramePtr) #1 !dbg !1194 {
entry.destroy:
ret void, !dbg !1197
}
; Function Attrs: optsize
define internal fastcc void @"runtime.run$1.cleanup"(%"runtime.run$1.Frame"* noalias nonnull align 8 dereferenceable(40) %FramePtr) #1 !dbg !1198 {
entry.cleanup:
ret void, !dbg !1201
}
attributes #0 = { nounwind readnone speculatable willreturn }
attributes #1 = { optsize }
attributes #2 = { argmemonly nounwind willreturn }
attributes #3 = { noreturn optsize }
attributes #4 = { nounwind optsize }
attributes #5 = { argmemonly nounwind willreturn writeonly }
attributes #6 = { nofree nounwind optsize }
attributes #7 = { noinline optsize }
attributes #8 = { argmemonly nofree nounwind optsize readonly }
attributes #9 = { argmemonly nounwind readonly }
attributes #10 = { nounwind }
attributes #11 = { norecurse nounwind readnone }
!llvm.dbg.cu = !{!74, !77, !78, !79, !80, !81, !99, !106, !107, !127}
!llvm.module.flags = !{!161, !162}
!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
!1 = distinct !DIGlobalVariable(name: "runtime.args", linkageName: "runtime.args", scope: !2, file: !2, line: 29, type: !3, isLocal: false, isDefinition: true, align: 15)
!2 = !DIFile(filename: "runtime.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "[]string", size: 192, align: 64, elements: !4)
!4 = !{!5, !12, !14}
!5 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", baseType: !6, size: 64, align: 64)
!6 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64, dwarfAddressSpace: 0)
!7 = !DICompositeType(tag: DW_TAG_structure_type, name: "string", size: 128, align: 64, elements: !8)
!8 = !{!9, !12}
!9 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", baseType: !10, size: 64, align: 64)
!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64, align: 64, dwarfAddressSpace: 0)
!11 = !DIBasicType(name: "uint8", size: 8, encoding: DW_ATE_unsigned)
!12 = !DIDerivedType(tag: DW_TAG_member, name: "len", baseType: !13, size: 64, align: 64, offset: 64)
!13 = !DIBasicType(name: "uintptr", size: 64, encoding: DW_ATE_unsigned)
!14 = !DIDerivedType(tag: DW_TAG_member, name: "cap", baseType: !13, size: 64, align: 64, offset: 128)
!15 = !DIGlobalVariableExpression(var: !16, expr: !DIExpression())
!16 = distinct !DIGlobalVariable(name: "runtime.heapSize", linkageName: "runtime.heapSize", scope: !17, file: !17, line: 8, type: !13, isLocal: false, isDefinition: true, align: 15)
!17 = !DIFile(filename: "runtime_unix_heap.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!18 = !DIGlobalVariableExpression(var: !19, expr: !DIExpression())
!19 = distinct !DIGlobalVariable(name: "runtime.heapStart", linkageName: "runtime.heapStart", scope: !17, file: !17, line: 11, type: !13, isLocal: false, isDefinition: true, align: 15)
!20 = !DIGlobalVariableExpression(var: !21, expr: !DIExpression())
!21 = distinct !DIGlobalVariable(name: "runtime.heapptr", linkageName: "runtime.heapptr", scope: !22, file: !22, line: 14, type: !13, isLocal: false, isDefinition: true, align: 15)
!22 = !DIFile(filename: "gc_leaking.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!23 = !DIGlobalVariableExpression(var: !24, expr: !DIExpression())
!24 = distinct !DIGlobalVariable(name: "runtime.runqueue", linkageName: "runtime.runqueue", scope: !25, file: !25, line: 31, type: !26, isLocal: false, isDefinition: true, align: 15)
!25 = !DIFile(filename: "scheduler.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Queue", baseType: !27)
!27 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !28)
!28 = !{!29, !46}
!29 = !DIDerivedType(tag: DW_TAG_member, name: "head", baseType: !30, size: 64, align: 64)
!30 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !31, size: 64, align: 64, dwarfAddressSpace: 0)
!31 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Task", baseType: !32)
!32 = !DICompositeType(tag: DW_TAG_structure_type, size: 256, align: 64, elements: !33)
!33 = !{!34, !35, !37, !39}
!34 = !DIDerivedType(tag: DW_TAG_member, name: "Next", baseType: !30, size: 64, align: 64)
!35 = !DIDerivedType(tag: DW_TAG_member, name: "Ptr", baseType: !36, size: 64, align: 64, offset: 64)
!36 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "unsafe.Pointer", baseType: null, size: 64, align: 64, dwarfAddressSpace: 0)
!37 = !DIDerivedType(tag: DW_TAG_member, name: "Data", baseType: !38, size: 64, align: 64, offset: 128)
!38 = !DIBasicType(name: "uint64", size: 64, encoding: DW_ATE_unsigned)
!39 = !DIDerivedType(tag: DW_TAG_member, name: "state", baseType: !40, size: 64, align: 64, offset: 192)
!40 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.state", baseType: !41)
!41 = !DICompositeType(tag: DW_TAG_structure_type, size: 64, align: 64, elements: !42)
!42 = !{!43}
!43 = !DIDerivedType(tag: DW_TAG_member, name: "rawState", baseType: !44, size: 64, align: 64)
!44 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !45, size: 64, align: 64, dwarfAddressSpace: 0)
!45 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.rawState", baseType: !11)
!46 = !DIDerivedType(tag: DW_TAG_member, name: "tail", baseType: !30, size: 64, align: 64, offset: 64)
!47 = !DIGlobalVariableExpression(var: !48, expr: !DIExpression())
!48 = distinct !DIGlobalVariable(name: "runtime.heapEnd", linkageName: "runtime.heapEnd", scope: !17, file: !17, line: 11, type: !13, isLocal: false, isDefinition: true, align: 15)
!49 = !DIGlobalVariableExpression(var: !50, expr: !DIExpression())
!50 = distinct !DIGlobalVariable(name: "runtime.schedulerDone", linkageName: "runtime.schedulerDone", scope: !25, file: !25, line: 27, type: !51, isLocal: false, isDefinition: true, align: 1)
!51 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean)
!52 = !DIGlobalVariableExpression(var: !53, expr: !DIExpression())
!53 = distinct !DIGlobalVariable(name: "main.once", linkageName: "main.once", scope: !54, file: !54, line: 8, type: !55, isLocal: false, isDefinition: true, align: 15)
!54 = !DIFile(filename: "main.go", directory: "/Users/dgryski/go/src/github.com/fastly/dgryski/wasmplay/cmd/crasher")
!55 = !DIDerivedType(tag: DW_TAG_typedef, name: "sync.Once", baseType: !56)
!56 = !DICompositeType(tag: DW_TAG_structure_type, size: 192, align: 64, elements: !57)
!57 = !{!58, !59}
!58 = !DIDerivedType(tag: DW_TAG_member, name: "done", baseType: !51, size: 8, align: 8)
!59 = !DIDerivedType(tag: DW_TAG_member, name: "m", baseType: !60, size: 128, align: 64, offset: 64)
!60 = !DIDerivedType(tag: DW_TAG_typedef, name: "sync.Mutex", baseType: !61)
!61 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !62)
!62 = !{!63, !64}
!63 = !DIDerivedType(tag: DW_TAG_member, name: "locked", baseType: !51, size: 8, align: 8)
!64 = !DIDerivedType(tag: DW_TAG_member, name: "blocked", baseType: !65, size: 64, align: 64, offset: 64)
!65 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Stack", baseType: !66)
!66 = !DICompositeType(tag: DW_TAG_structure_type, size: 64, align: 64, elements: !67)
!67 = !{!68}
!68 = !DIDerivedType(tag: DW_TAG_member, name: "top", baseType: !69, size: 64, align: 64)
!69 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !70, size: 64, align: 64, dwarfAddressSpace: 0)
!70 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Task", baseType: !71)
!71 = !DICompositeType(tag: DW_TAG_structure_type, size: 256, align: 64, elements: !72)
!72 = !{!73, !35, !37, !39}
!73 = !DIDerivedType(tag: DW_TAG_member, name: "Next", baseType: !69, size: 64, align: 64)
!74 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76)
!75 = !DIFile(filename: "<unknown>", directory: "")
!76 = !{}
!77 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76)
!78 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76)
!79 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76)
!80 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76)
!81 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76, globals: !82)
!82 = !{!83, !89}
!83 = !DIGlobalVariableExpression(var: !84, expr: !DIExpression())
!84 = distinct !DIGlobalVariable(name: "unicode/utf8.first", linkageName: "unicode/utf8.first", scope: !85, file: !85, line: 65, type: !86, isLocal: false, isDefinition: true, align: 1)
!85 = !DIFile(filename: "utf8.go", directory: "/Users/dgryski/go/src/go.googlesource.com/go1.16/src/unicode/utf8")
!86 = !DICompositeType(tag: DW_TAG_array_type, baseType: !11, size: 2048, align: 8, elements: !87)
!87 = !{!88}
!88 = !DISubrange(count: 256, lowerBound: 0)
!89 = !DIGlobalVariableExpression(var: !90, expr: !DIExpression())
!90 = distinct !DIGlobalVariable(name: "unicode/utf8.acceptRanges", linkageName: "unicode/utf8.acceptRanges", scope: !85, file: !85, line: 94, type: !91, isLocal: false, isDefinition: true, align: 1)
!91 = !DICompositeType(tag: DW_TAG_array_type, baseType: !92, size: 256, align: 8, elements: !97)
!92 = !DIDerivedType(tag: DW_TAG_typedef, name: "unicode/utf8.acceptRange", baseType: !93)
!93 = !DICompositeType(tag: DW_TAG_structure_type, size: 16, align: 8, elements: !94)
!94 = !{!95, !96}
!95 = !DIDerivedType(tag: DW_TAG_member, name: "lo", baseType: !11, size: 8, align: 8)
!96 = !DIDerivedType(tag: DW_TAG_member, name: "hi", baseType: !11, size: 8, align: 8, offset: 8)
!97 = !{!98}
!98 = !DISubrange(count: 16, lowerBound: 0)
!99 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76, globals: !100)
!100 = !{!101}
!101 = !DIGlobalVariableExpression(var: !102, expr: !DIExpression())
!102 = distinct !DIGlobalVariable(name: "reflect.errSyntax", linkageName: "reflect.errSyntax", scope: !103, file: !103, line: 12, type: !104, isLocal: false, isDefinition: true, align: 1)
!103 = !DIFile(filename: "strconv.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/reflect")
!104 = !DIDerivedType(tag: DW_TAG_typedef, name: "reflect.badSyntax", baseType: !105)
!105 = !DICompositeType(tag: DW_TAG_structure_type, align: 8, elements: !76)
!106 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76)
!107 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76, globals: !108)
!108 = !{!109, !0, !15, !18, !20, !23, !113, !47, !116, !119, !49, !122, !124}
!109 = !DIGlobalVariableExpression(var: !110, expr: !DIExpression())
!110 = distinct !DIGlobalVariable(name: "runtime.inf", linkageName: "runtime.inf", scope: !111, file: !111, line: 9, type: !112, isLocal: false, isDefinition: true, align: 15)
!111 = !DIFile(filename: "float.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!112 = !DIBasicType(name: "float64", size: 64, encoding: DW_ATE_float)
!113 = !DIGlobalVariableExpression(var: !114, expr: !DIExpression())
!114 = distinct !DIGlobalVariable(name: "runtime.notifiedPlaceholder", linkageName: "runtime.notifiedPlaceholder", scope: !115, file: !115, line: 12, type: !31, isLocal: false, isDefinition: true, align: 15)
!115 = !DIFile(filename: "cond.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!116 = !DIGlobalVariableExpression(var: !117, expr: !DIExpression())
!117 = distinct !DIGlobalVariable(name: "runtime.timeOffset", linkageName: "runtime.timeOffset", scope: !2, file: !2, line: 74, type: !118, isLocal: false, isDefinition: true, align: 15)
!118 = !DIBasicType(name: "int64", size: 64, encoding: DW_ATE_signed)
!119 = !DIGlobalVariableExpression(var: !120, expr: !DIExpression())
!120 = distinct !DIGlobalVariable(name: "runtime.stackTop", linkageName: "runtime.stackTop", scope: !121, file: !121, line: 43, type: !13, isLocal: false, isDefinition: true, align: 15)
!121 = !DIFile(filename: "runtime_unix.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!122 = !DIGlobalVariableExpression(var: !123, expr: !DIExpression())
!123 = distinct !DIGlobalVariable(name: "runtime.sleepQueue", linkageName: "runtime.sleepQueue", scope: !25, file: !25, line: 32, type: !30, isLocal: false, isDefinition: true, align: 15)
!124 = !DIGlobalVariableExpression(var: !125, expr: !DIExpression())
!125 = distinct !DIGlobalVariable(name: "runtime.sleepQueueBaseTime", linkageName: "runtime.sleepQueueBaseTime", scope: !25, file: !25, line: 33, type: !126, isLocal: false, isDefinition: true, align: 15)
!126 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.timeUnit", baseType: !118)
!127 = distinct !DICompileUnit(language: DW_LANG_C99, file: !75, producer: "TinyGo", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !76, globals: !128)
!128 = !{!129, !52}
!129 = !DIGlobalVariableExpression(var: !130, expr: !DIExpression())
!130 = distinct !DIGlobalVariable(name: "main.ready", linkageName: "main.ready", scope: !54, file: !54, line: 9, type: !131, isLocal: false, isDefinition: true, align: 15)
!131 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !132, size: 64, align: 64, dwarfAddressSpace: 0)
!132 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.channel", baseType: !133)
!133 = !DICompositeType(tag: DW_TAG_structure_type, size: 512, align: 64, elements: !134)
!134 = !{!135, !136, !137, !139, !157, !158, !159, !160}
!135 = !DIDerivedType(tag: DW_TAG_member, name: "elementSize", baseType: !13, size: 64, align: 64)
!136 = !DIDerivedType(tag: DW_TAG_member, name: "bufSize", baseType: !13, size: 64, align: 64, offset: 64)
!137 = !DIDerivedType(tag: DW_TAG_member, name: "state", baseType: !138, size: 8, align: 8, offset: 128)
!138 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.chanState", baseType: !11)
!139 = !DIDerivedType(tag: DW_TAG_member, name: "blocked", baseType: !140, size: 64, align: 64, offset: 192)
!140 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !141, size: 64, align: 64, dwarfAddressSpace: 0)
!141 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.channelBlockedList", baseType: !142)
!142 = !DICompositeType(tag: DW_TAG_structure_type, size: 384, align: 64, elements: !143)
!143 = !{!144, !145, !146, !153}
!144 = !DIDerivedType(tag: DW_TAG_member, name: "next", baseType: !140, size: 64, align: 64)
!145 = !DIDerivedType(tag: DW_TAG_member, name: "t", baseType: !69, size: 64, align: 64, offset: 64)
!146 = !DIDerivedType(tag: DW_TAG_member, name: "s", baseType: !147, size: 64, align: 64, offset: 128)
!147 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !148, size: 64, align: 64, dwarfAddressSpace: 0)
!148 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.chanSelectState", baseType: !149)
!149 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !150)
!150 = !{!151, !152}
!151 = !DIDerivedType(tag: DW_TAG_member, name: "ch", baseType: !131, size: 64, align: 64)
!152 = !DIDerivedType(tag: DW_TAG_member, name: "value", baseType: !36, size: 64, align: 64, offset: 64)
!153 = !DIDerivedType(tag: DW_TAG_member, name: "allSelectOps", baseType: !154, size: 192, align: 64, offset: 192)
!154 = !DICompositeType(tag: DW_TAG_structure_type, name: "[]runtime.channelBlockedList", size: 192, align: 64, elements: !155)
!155 = !{!156, !12, !14}
!156 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", baseType: !140, size: 64, align: 64)
!157 = !DIDerivedType(tag: DW_TAG_member, name: "bufHead", baseType: !13, size: 64, align: 64, offset: 256)
!158 = !DIDerivedType(tag: DW_TAG_member, name: "bufTail", baseType: !13, size: 64, align: 64, offset: 320)
!159 = !DIDerivedType(tag: DW_TAG_member, name: "bufUsed", baseType: !13, size: 64, align: 64, offset: 384)
!160 = !DIDerivedType(tag: DW_TAG_member, name: "buf", baseType: !36, size: 64, align: 64, offset: 448)
!161 = !{i32 1, !"Debug Info Version", i32 3}
!162 = !{i32 1, !"Dwarf Version", i32 4}
!163 = distinct !DISubprogram(name: "(*internal/task.Queue).Push", linkageName: "(*internal/task.Queue).Push", scope: !164, file: !164, line: 14, type: !165, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !178)
!164 = !DIFile(filename: "queue.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/internal/task")
!165 = !DISubroutineType(types: !166)
!166 = !{!167, !172}
!167 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !168, size: 64, align: 64, dwarfAddressSpace: 0)
!168 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Queue", baseType: !169)
!169 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !170)
!170 = !{!171, !177}
!171 = !DIDerivedType(tag: DW_TAG_member, name: "head", baseType: !172, size: 64, align: 64)
!172 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !173, size: 64, align: 64, dwarfAddressSpace: 0)
!173 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Task", baseType: !174)
!174 = !DICompositeType(tag: DW_TAG_structure_type, size: 256, align: 64, elements: !175)
!175 = !{!176, !35, !37, !39}
!176 = !DIDerivedType(tag: DW_TAG_member, name: "Next", baseType: !172, size: 64, align: 64)
!177 = !DIDerivedType(tag: DW_TAG_member, name: "tail", baseType: !172, size: 64, align: 64, offset: 64)
!178 = !{!179, !180, !181, !183, !185, !186}
!179 = !DILocalVariable(name: "q", arg: 1, scope: !163, file: !164, line: 14, type: !167)
!180 = !DILocalVariable(name: "t", arg: 2, scope: !163, file: !164, line: 14, type: !172)
!181 = !DILocalVariable(name: "i", scope: !163, file: !164, line: 15, type: !182)
!182 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime/interrupt.State", baseType: !13)
!183 = !DILocalVariable(name: "Next", scope: !163, file: !184, line: 10, type: !172)
!184 = !DIFile(filename: "task.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/internal/task")
!185 = !DILocalVariable(name: "tail", scope: !163, file: !164, line: 10, type: !172)
!186 = !DILocalVariable(name: "head", scope: !163, file: !164, line: 10, type: !172)
!187 = !DILocation(line: 14, column: 17, scope: !163)
!188 = !DILocation(line: 15, column: 2, scope: !163)
!189 = !DILocation(line: 20, column: 7, scope: !163)
!190 = !DILocation(line: 20, column: 12, scope: !163)
!191 = !DILocation(line: 0, scope: !163)
!192 = !DILocation(line: 28, column: 20, scope: !163)
!193 = !DILocation(line: 29, column: 2, scope: !163)
!194 = !DILocation(line: 21, column: 3, scope: !163)
!195 = !DILocation(line: 21, column: 10, scope: !163)
!196 = !DILocation(line: 21, column: 17, scope: !163)
!197 = !DILocation(line: 23, column: 2, scope: !163)
!198 = !DILocation(line: 23, column: 11, scope: !163)
!199 = !DILocation(line: 23, column: 4, scope: !163)
!200 = !DILocation(line: 24, column: 2, scope: !163)
!201 = !DILocation(line: 24, column: 4, scope: !163)
!202 = !DILocation(line: 25, column: 5, scope: !163)
!203 = !DILocation(line: 25, column: 7, scope: !163)
!204 = !DILocation(line: 25, column: 12, scope: !163)
!205 = !DILocation(line: 26, column: 3, scope: !163)
!206 = !DILocation(line: 26, column: 12, scope: !163)
!207 = !DILocation(line: 26, column: 5, scope: !163)
!208 = distinct !DISubprogram(name: "(*internal/task.Task).returnTo", linkageName: "(*internal/task.Task).returnTo", scope: !209, file: !209, line: 35, type: !210, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !212)
!209 = !DIFile(filename: "task_coroutine.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/internal/task")
!210 = !DISubroutineType(types: !211)
!211 = !{!172, !44}
!212 = !{!213, !214}
!213 = !DILocalVariable(name: "t", arg: 1, scope: !208, file: !209, line: 35, type: !172)
!214 = !DILocalVariable(name: "parent", arg: 2, scope: !208, file: !209, line: 35, type: !44)
!215 = !DILocation(line: 35, column: 16, scope: !208)
!216 = !DILocation(line: 36, column: 2, scope: !208)
!217 = !DILocation(line: 36, column: 4, scope: !208)
!218 = !DILocation(line: 36, column: 18, scope: !208)
!219 = !DILocation(line: 37, column: 2, scope: !208)
!220 = !DILocalVariable(name: "t", arg: 1, scope: !221, file: !209, line: 41, type: !172)
!221 = distinct !DISubprogram(name: "(*internal/task.Task).returnCurrent", linkageName: "(*internal/task.Task).returnCurrent", scope: !209, file: !209, line: 41, type: !222, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !224)
!222 = !DISubroutineType(types: !223)
!223 = !{!172}
!224 = !{!220}
!225 = !DILocation(line: 41, column: 16, scope: !221, inlinedAt: !226)
!226 = distinct !DILocation(line: 37, column: 17, scope: !208)
!227 = !DILocation(line: 42, column: 15, scope: !221, inlinedAt: !226)
!228 = !DILocalVariable(name: "t", arg: 1, scope: !229, file: !25, line: 79, type: !30)
!229 = distinct !DISubprogram(name: "runtime.runqueuePushBack", linkageName: "runtime.runqueuePushBack", scope: !25, file: !25, line: 79, type: !230, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !232)
!230 = !DISubroutineType(types: !231)
!231 = !{!30}
!232 = !{!228}
!233 = !DILocation(line: 79, column: 6, scope: !229, inlinedAt: !234)
!234 = distinct !DILocation(line: 42, column: 14, scope: !221, inlinedAt: !226)
!235 = !DILocation(line: 80, column: 16, scope: !229, inlinedAt: !234)
!236 = !DILocation(line: 80, column: 15, scope: !229, inlinedAt: !234)
!237 = !DILocation(line: 38, column: 2, scope: !208)
!238 = distinct !DISubprogram(name: "(*internal/task.Task).setState", linkageName: "(*internal/task.Task).setState", scope: !209, file: !209, line: 28, type: !210, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !239)
!239 = !{!240, !241, !242}
!240 = !DILocalVariable(name: "t", arg: 1, scope: !238, file: !209, line: 28, type: !172)
!241 = !DILocalVariable(name: "s", arg: 2, scope: !238, file: !209, line: 28, type: !44)
!242 = !DILocalVariable(name: "caller", scope: !238, file: !209, line: 29, type: !40)
!243 = !DILocation(line: 28, column: 16, scope: !238)
!244 = !DILocation(line: 29, column: 12, scope: !238)
!245 = !DILocation(line: 29, column: 14, scope: !238)
!246 = !DILocation(line: 29, column: 2, scope: !238)
!247 = !DILocation(line: 30, column: 2, scope: !238)
!248 = !DILocation(line: 30, column: 18, scope: !238)
!249 = !DILocation(line: 31, column: 2, scope: !238)
!250 = distinct !DISubprogram(name: "(*sync.Mutex).Unlock", linkageName: "(*sync.Mutex).Unlock", scope: !251, file: !251, line: 30, type: !252, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !79, retainedNodes: !268)
!251 = !DIFile(filename: "mutex.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/sync")
!252 = !DISubroutineType(types: !253)
!253 = !{!254}
!254 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !255, size: 64, align: 64, dwarfAddressSpace: 0)
!255 = !DIDerivedType(tag: DW_TAG_typedef, name: "sync.Mutex", baseType: !256)
!256 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !257)
!257 = !{!63, !258}
!258 = !DIDerivedType(tag: DW_TAG_member, name: "blocked", baseType: !259, size: 64, align: 64, offset: 64)
!259 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Stack", baseType: !260)
!260 = !DICompositeType(tag: DW_TAG_structure_type, size: 64, align: 64, elements: !261)
!261 = !{!262}
!262 = !DIDerivedType(tag: DW_TAG_member, name: "top", baseType: !263, size: 64, align: 64)
!263 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !264, size: 64, align: 64, dwarfAddressSpace: 0)
!264 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Task", baseType: !265)
!265 = !DICompositeType(tag: DW_TAG_structure_type, size: 256, align: 64, elements: !266)
!266 = !{!267, !35, !37, !39}
!267 = !DIDerivedType(tag: DW_TAG_member, name: "Next", baseType: !263, size: 64, align: 64)
!268 = !{!269, !270, !271}
!269 = !DILocalVariable(name: "m", arg: 1, scope: !250, file: !251, line: 30, type: !254)
!270 = !DILocalVariable(name: "t", scope: !250, file: !251, line: 36, type: !263)
!271 = !DILocalVariable(name: "locked", scope: !250, file: !251, line: 12, type: !51)
!272 = !DILocation(line: 30, column: 17, scope: !250)
!273 = !DILocation(line: 31, column: 6, scope: !250)
!274 = !DILocation(line: 31, column: 8, scope: !250)
!275 = !DILocalVariable(name: "s", arg: 1, scope: !276, file: !164, line: 88, type: !279)
!276 = distinct !DISubprogram(name: "(*internal/task.Stack).Pop", linkageName: "(*internal/task.Stack).Pop", scope: !164, file: !164, line: 88, type: !277, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !284)
!277 = !DISubroutineType(types: !278)
!278 = !{!279}
!279 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !280, size: 64, align: 64, dwarfAddressSpace: 0)
!280 = !DIDerivedType(tag: DW_TAG_typedef, name: "internal/task.Stack", baseType: !281)
!281 = !DICompositeType(tag: DW_TAG_structure_type, size: 64, align: 64, elements: !282)
!282 = !{!283}
!283 = !DIDerivedType(tag: DW_TAG_member, name: "top", baseType: !172, size: 64, align: 64)
!284 = !{!275, !285, !286, !287, !288}
!285 = !DILocalVariable(name: "i", scope: !276, file: !164, line: 89, type: !182)
!286 = !DILocalVariable(name: "t", scope: !276, file: !164, line: 90, type: !172)
!287 = !DILocalVariable(name: "top", scope: !276, file: !164, line: 73, type: !172)
!288 = !DILocalVariable(name: "Next", scope: !276, file: !184, line: 10, type: !172)
!289 = !DILocation(line: 92, column: 3, scope: !276, inlinedAt: !290)
!290 = distinct !DILocation(line: 36, column: 23, scope: !250)
!291 = !DILocation(line: 92, column: 11, scope: !276, inlinedAt: !290)
!292 = !DILocation(line: 92, column: 13, scope: !276, inlinedAt: !290)
!293 = !DILocation(line: 92, column: 5, scope: !276, inlinedAt: !290)
!294 = !DILocation(line: 93, column: 5, scope: !276, inlinedAt: !290)
!295 = !DILocation(line: 95, column: 20, scope: !276, inlinedAt: !290)
!296 = !DILocation(line: 37, column: 16, scope: !250)
!297 = !DILocation(line: 80, column: 16, scope: !229, inlinedAt: !298)
!298 = distinct !DILocation(line: 37, column: 15, scope: !250)
!299 = !DILocation(line: 80, column: 15, scope: !229, inlinedAt: !298)
!300 = !DILocation(line: 0, scope: !250)
!301 = !DILocation(line: 41, column: 2, scope: !250)
!302 = !DILocation(line: 32, column: 8, scope: !250)
!303 = !DILocation(line: 36, column: 10, scope: !250)
!304 = !DILocation(line: 36, column: 12, scope: !250)
!305 = !DILocation(line: 89, column: 2, scope: !276, inlinedAt: !290)
!306 = !DILocation(line: 90, column: 7, scope: !276, inlinedAt: !290)
!307 = !DILocation(line: 90, column: 9, scope: !276, inlinedAt: !290)
!308 = !DILocation(line: 91, column: 5, scope: !276, inlinedAt: !290)
!309 = !DILocation(line: 91, column: 7, scope: !276, inlinedAt: !290)
!310 = !DILocation(line: 0, scope: !276, inlinedAt: !290)
!311 = !DILocation(line: 96, column: 9, scope: !276, inlinedAt: !290)
!312 = !DILocation(line: 36, column: 27, scope: !250)
!313 = !DILocation(line: 39, column: 3, scope: !250)
!314 = !DILocation(line: 39, column: 5, scope: !250)
!315 = distinct !DISubprogram(name: "(*sync.Once).Do", linkageName: "(*sync.Once).Do", scope: !316, file: !316, line: 8, type: !317, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !79, retainedNodes: !328)
!316 = !DIFile(filename: "once.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/sync")
!317 = !DISubroutineType(types: !318)
!318 = !{!319, !324}
!319 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !320, size: 64, align: 64, dwarfAddressSpace: 0)
!320 = !DIDerivedType(tag: DW_TAG_typedef, name: "sync.Once", baseType: !321)
!321 = !DICompositeType(tag: DW_TAG_structure_type, size: 192, align: 64, elements: !322)
!322 = !{!58, !323}
!323 = !DIDerivedType(tag: DW_TAG_member, name: "m", baseType: !255, size: 128, align: 64, offset: 64)
!324 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !325)
!325 = !{!326, !327}
!326 = !DIDerivedType(tag: DW_TAG_member, name: "context", baseType: !36, size: 64, align: 64)
!327 = !DIDerivedType(tag: DW_TAG_member, name: "fn", baseType: !36, size: 64, align: 64, offset: 64)
!328 = !{!329, !330, !331}
!329 = !DILocalVariable(name: "o", arg: 1, scope: !315, file: !316, line: 8, type: !319)
!330 = !DILocalVariable(name: "f", arg: 2, scope: !315, file: !316, line: 8, type: !324)
!331 = !DILocalVariable(name: "done", scope: !315, file: !316, line: 4, type: !51)
!332 = !DILocation(line: 8, column: 16, scope: !315)
!333 = !DILocation(line: 9, column: 2, scope: !315)
!334 = !DILocation(line: 20, column: 7, scope: !335, inlinedAt: !339)
!335 = distinct !DISubprogram(name: "(*sync.Mutex).Lock", linkageName: "(*sync.Mutex).Lock", scope: !251, file: !251, line: 19, type: !252, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !79, retainedNodes: !336)
!336 = !{!337, !338}
!337 = !DILocalVariable(name: "m", arg: 1, scope: !335, file: !251, line: 19, type: !254)
!338 = !DILocalVariable(name: "locked", scope: !335, file: !251, line: 12, type: !51)
!339 = distinct !DILocation(line: 9, column: 10, scope: !315)
!340 = !DILocation(line: 0, scope: !335, inlinedAt: !339)
!341 = !DILocalVariable(name: "i", scope: !342, file: !164, line: 78, type: !182)
!342 = distinct !DISubprogram(name: "(*internal/task.Stack).Push", linkageName: "(*internal/task.Stack).Push", scope: !164, file: !164, line: 77, type: !343, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !345)
!343 = !DISubroutineType(types: !344)
!344 = !{!279, !172}
!345 = !{!346, !347, !341, !348, !349}
!346 = !DILocalVariable(name: "s", arg: 1, scope: !342, file: !164, line: 77, type: !279)
!347 = !DILocalVariable(name: "t", arg: 2, scope: !342, file: !164, line: 77, type: !172)
!348 = !DILocalVariable(name: "top", scope: !342, file: !164, line: 73, type: !172)
!349 = !DILocalVariable(name: "Next", scope: !342, file: !184, line: 10, type: !172)
!350 = !DILocation(line: 78, column: 2, scope: !342, inlinedAt: !351)
!351 = distinct !DILocation(line: 22, column: 17, scope: !335, inlinedAt: !339)
!352 = !DILocation(line: 83, column: 9, scope: !342, inlinedAt: !351)
!353 = !DILocation(line: 83, column: 11, scope: !342, inlinedAt: !351)
!354 = !DILocation(line: 83, column: 18, scope: !342, inlinedAt: !351)
!355 = !DILocation(line: 83, column: 23, scope: !342, inlinedAt: !351)
!356 = !DILocation(line: 83, column: 4, scope: !342, inlinedAt: !351)
!357 = !DILocation(line: 84, column: 20, scope: !342, inlinedAt: !351)
!358 = !DILocation(line: 24, column: 3, scope: !335, inlinedAt: !339)
!359 = !DILocation(line: 27, column: 4, scope: !335, inlinedAt: !339)
!360 = !DILocation(line: 41, column: 16, scope: !221, inlinedAt: !361)
!361 = distinct !DILocation(line: 28, column: 2, scope: !335, inlinedAt: !339)
!362 = !DILocation(line: 42, column: 15, scope: !221, inlinedAt: !361)
!363 = !DILocation(line: 79, column: 6, scope: !229, inlinedAt: !364)
!364 = distinct !DILocation(line: 42, column: 14, scope: !221, inlinedAt: !361)
!365 = !DILocation(line: 80, column: 16, scope: !229, inlinedAt: !364)
!366 = !DILocation(line: 80, column: 15, scope: !229, inlinedAt: !364)
!367 = !DILocation(line: 28, column: 2, scope: !335, inlinedAt: !339)
!368 = !DILocation(line: 12, column: 3, scope: !315)
!369 = distinct !DISubprogram(name: "runtime.alloc", linkageName: "runtime.alloc", scope: !22, file: !22, line: 16, type: !370, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !372)
!370 = !DISubroutineType(types: !371)
!371 = !{!13}
!372 = !{!373, !374, !375, !376, !377, !378}
!373 = !DILocalVariable(name: "size", arg: 1, scope: !369, file: !22, line: 16, type: !13)
!374 = !DILocalVariable(name: "heapptr", scope: !369, file: !22, line: 14, type: !13)
!375 = !DILocalVariable(name: "addr", scope: !369, file: !22, line: 21, type: !13)
!376 = !DILocalVariable(name: "heapEnd", scope: !369, file: !17, line: 11, type: !13)
!377 = !DILocalVariable(name: "i", scope: !369, file: !22, line: 31, type: !13)
!378 = !DILocalVariable(name: "ptr", scope: !369, file: !22, line: 32, type: !379)
!379 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !380, size: 64, align: 64, dwarfAddressSpace: 0)
!380 = !DIBasicType(name: "uint32", size: 32, encoding: DW_ATE_unsigned)
!381 = !DILocation(line: 16, column: 6, scope: !369)
!382 = !DILocation(line: 20, column: 15, scope: !369)
!383 = !DILocalVariable(name: "ptr", arg: 1, scope: !384, file: !385, line: 13, type: !13)
!384 = distinct !DISubprogram(name: "runtime.align", linkageName: "runtime.align", scope: !385, file: !385, line: 13, type: !370, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !386)
!385 = !DIFile(filename: "arch_amd64.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!386 = !{!383}
!387 = !DILocation(line: 13, column: 6, scope: !384, inlinedAt: !388)
!388 = distinct !DILocation(line: 20, column: 14, scope: !369)
!389 = !DILocation(line: 14, column: 10, scope: !384, inlinedAt: !388)
!390 = !DILocation(line: 14, column: 14, scope: !384, inlinedAt: !388)
!391 = !DILocation(line: 14, column: 20, scope: !384, inlinedAt: !388)
!392 = !DILocation(line: 20, column: 2, scope: !369)
!393 = !DILocation(line: 21, column: 10, scope: !369)
!394 = !DILocation(line: 21, column: 2, scope: !369)
!395 = !DILocation(line: 22, column: 13, scope: !369)
!396 = !DILocation(line: 22, column: 2, scope: !369)
!397 = !DILocation(line: 0, scope: !398, inlinedAt: !403)
!398 = distinct !DISubprogram(name: "runtime.growHeap", linkageName: "runtime.growHeap", scope: !17, file: !17, line: 24, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !400)
!399 = !DISubroutineType(types: !76)
!400 = !{!401, !402}
!401 = !DILocalVariable(name: "heapSize", scope: !398, file: !17, line: 8, type: !13)
!402 = !DILocalVariable(name: "heapStart", scope: !398, file: !17, line: 11, type: !13)
!403 = distinct !DILocation(line: 25, column: 14, scope: !369)
!404 = !DILocation(line: 23, column: 17, scope: !369)
!405 = !DILocation(line: 0, scope: !369)
!406 = !DILocation(line: 23, column: 6, scope: !369)
!407 = !DILocation(line: 23, column: 14, scope: !369)
!408 = !DILocation(line: 25, column: 5, scope: !398, inlinedAt: !403)
!409 = !DILocation(line: 25, column: 14, scope: !398, inlinedAt: !403)
!410 = !DILocation(line: 31, column: 14, scope: !398, inlinedAt: !403)
!411 = !DILocation(line: 31, column: 23, scope: !398, inlinedAt: !403)
!412 = !DILocation(line: 31, column: 27, scope: !398, inlinedAt: !403)
!413 = !DILocation(line: 31, column: 32, scope: !398, inlinedAt: !403)
!414 = !DILocation(line: 32, column: 5, scope: !398, inlinedAt: !403)
!415 = !DILocation(line: 35, column: 13, scope: !398, inlinedAt: !403)
!416 = !DILocation(line: 35, column: 25, scope: !398, inlinedAt: !403)
!417 = !DILocation(line: 35, column: 23, scope: !398, inlinedAt: !403)
!418 = !DILocalVariable(name: "newHeapEnd", arg: 1, scope: !419, file: !22, line: 59, type: !13)
!419 = distinct !DISubprogram(name: "runtime.setHeapEnd", linkageName: "runtime.setHeapEnd", scope: !22, file: !22, line: 59, type: !370, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !420)
!420 = !{!418, !421}
!421 = !DILocalVariable(name: "heapEnd", scope: !419, file: !17, line: 11, type: !13)
!422 = !DILocation(line: 62, column: 12, scope: !419, inlinedAt: !423)
!423 = distinct !DILocation(line: 35, column: 12, scope: !398, inlinedAt: !403)
!424 = !DILocation(line: 62, column: 2, scope: !419, inlinedAt: !423)
!425 = !DILocation(line: 29, column: 15, scope: !369)
!426 = !DILocation(line: 31, column: 6, scope: !369)
!427 = !DILocation(line: 31, column: 23, scope: !369)
!428 = !DILocation(line: 31, column: 35, scope: !369)
!429 = !DILocation(line: 31, column: 25, scope: !369)
!430 = !DILocation(line: 35, column: 24, scope: !369)
!431 = !DILocation(line: 32, column: 42, scope: !369)
!432 = !DILocation(line: 32, column: 40, scope: !369)
!433 = !DILocation(line: 32, column: 19, scope: !369)
!434 = !DILocation(line: 33, column: 4, scope: !369)
!435 = !DILocation(line: 33, column: 3, scope: !369)
!436 = !DILocation(line: 31, column: 42, scope: !369)
!437 = !DILocation(line: 35, column: 23, scope: !369)
!438 = !DILocation(line: 35, column: 2, scope: !369)
!439 = distinct !DISubprogram(name: "runtime.runtimePanic", linkageName: "runtime.runtimePanic", scope: !440, file: !440, line: 17, type: !441, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !443)
!440 = !DIFile(filename: "panic.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!441 = !DISubroutineType(types: !442)
!442 = !{!7}
!443 = !{!444}
!444 = !DILocalVariable(name: "msg", arg: 1, scope: !439, file: !440, line: 17, type: !7)
!445 = !DILocation(line: 17, column: 6, scope: !439)
!446 = !DILocation(line: 18, column: 13, scope: !439)
!447 = !DILocation(line: 19, column: 10, scope: !439)
!448 = !DILocation(line: 19, column: 9, scope: !439)
!449 = !DILocation(line: 20, column: 7, scope: !439)
!450 = !DILocation(line: 21, column: 2, scope: !439)
!451 = distinct !DISubprogram(name: "runtime.printstring", linkageName: "runtime.printstring", scope: !452, file: !452, line: 12, type: !441, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !453)
!452 = !DIFile(filename: "print.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!453 = !{!454, !455}
!454 = !DILocalVariable(name: "s", arg: 1, scope: !451, file: !452, line: 12, type: !7)
!455 = !DILocalVariable(name: "i", scope: !451, file: !452, line: 13, type: !456)
!456 = !DIBasicType(name: "int", size: 64, encoding: DW_ATE_signed)
!457 = !DILocation(line: 12, column: 6, scope: !451)
!458 = !DILocation(line: 13, column: 6, scope: !451)
!459 = !DILocation(line: 0, scope: !451)
!460 = !DILocation(line: 13, column: 14, scope: !451)
!461 = !DILocation(line: 13, column: 22, scope: !451)
!462 = !DILocation(line: 13, column: 16, scope: !451)
!463 = !DILocation(line: 14, column: 11, scope: !451)
!464 = !DILocation(line: 14, column: 13, scope: !451)
!465 = !DILocation(line: 14, column: 12, scope: !451)
!466 = !DILocalVariable(name: "c", arg: 1, scope: !467, file: !121, line: 122, type: !470)
!467 = distinct !DISubprogram(name: "runtime.putchar", linkageName: "runtime.putchar", scope: !121, file: !121, line: 122, type: !468, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !471)
!468 = !DISubroutineType(types: !469)
!469 = !{!470}
!470 = !DIBasicType(name: "byte", size: 8, encoding: DW_ATE_unsigned)
!471 = !{!466}
!472 = !DILocation(line: 122, column: 6, scope: !467, inlinedAt: !473)
!473 = distinct !DILocation(line: 14, column: 10, scope: !451)
!474 = !DILocation(line: 123, column: 15, scope: !467, inlinedAt: !473)
!475 = !DILocation(line: 123, column: 14, scope: !467, inlinedAt: !473)
!476 = !DILocation(line: 123, column: 10, scope: !467, inlinedAt: !473)
!477 = !DILocation(line: 13, column: 26, scope: !451)
!478 = !DILocation(line: 16, column: 2, scope: !451)
!479 = distinct !DISubprogram(name: "runtime.printnl", linkageName: "runtime.printnl", scope: !452, file: !452, line: 285, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !76)
!480 = !DILocation(line: 122, column: 6, scope: !467, inlinedAt: !481)
!481 = distinct !DILocation(line: 286, column: 9, scope: !479)
!482 = !DILocation(line: 123, column: 15, scope: !467, inlinedAt: !481)
!483 = !DILocation(line: 123, column: 10, scope: !467, inlinedAt: !481)
!484 = !DILocation(line: 122, column: 6, scope: !467, inlinedAt: !485)
!485 = distinct !DILocation(line: 287, column: 9, scope: !479)
!486 = !DILocation(line: 123, column: 15, scope: !467, inlinedAt: !485)
!487 = !DILocation(line: 123, column: 10, scope: !467, inlinedAt: !485)
!488 = !DILocation(line: 288, column: 2, scope: !479)
!489 = distinct !DISubprogram(name: "runtime.nilPanic", linkageName: "runtime.nilPanic", scope: !440, file: !440, line: 31, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !76)
!490 = !DILocation(line: 32, column: 14, scope: !489)
!491 = distinct !DISubprogram(name: "(*runtime.channelBlockedList).detach", linkageName: "(*runtime.channelBlockedList).detach", scope: !492, file: !492, line: 82, type: !493, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !516)
!492 = !DIFile(filename: "chan.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!493 = !DISubroutineType(types: !494)
!494 = !{!495}
!495 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !496, size: 64, align: 64, dwarfAddressSpace: 0)
!496 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.channelBlockedList", baseType: !497)
!497 = !DICompositeType(tag: DW_TAG_structure_type, size: 384, align: 64, elements: !498)
!498 = !{!499, !500, !501, !512}
!499 = !DIDerivedType(tag: DW_TAG_member, name: "next", baseType: !495, size: 64, align: 64)
!500 = !DIDerivedType(tag: DW_TAG_member, name: "t", baseType: !30, size: 64, align: 64, offset: 64)
!501 = !DIDerivedType(tag: DW_TAG_member, name: "s", baseType: !502, size: 64, align: 64, offset: 128)
!502 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !503, size: 64, align: 64, dwarfAddressSpace: 0)
!503 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.chanSelectState", baseType: !504)
!504 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !505)
!505 = !{!506, !152}
!506 = !DIDerivedType(tag: DW_TAG_member, name: "ch", baseType: !507, size: 64, align: 64)
!507 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !508, size: 64, align: 64, dwarfAddressSpace: 0)
!508 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.channel", baseType: !509)
!509 = !DICompositeType(tag: DW_TAG_structure_type, size: 512, align: 64, elements: !510)
!510 = !{!135, !136, !137, !511, !157, !158, !159, !160}
!511 = !DIDerivedType(tag: DW_TAG_member, name: "blocked", baseType: !495, size: 64, align: 64, offset: 192)
!512 = !DIDerivedType(tag: DW_TAG_member, name: "allSelectOps", baseType: !513, size: 192, align: 64, offset: 192)
!513 = !DICompositeType(tag: DW_TAG_structure_type, name: "[]runtime.channelBlockedList", size: 192, align: 64, elements: !514)
!514 = !{!515, !12, !14}
!515 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", baseType: !495, size: 64, align: 64)
!516 = !{!517, !518, !519, !520, !521}
!517 = !DILocalVariable(name: "b", arg: 1, scope: !491, file: !492, line: 82, type: !495)
!518 = !DILocalVariable(name: "i", scope: !491, file: !492, line: 87, type: !456)
!519 = !DILocalVariable(name: "v", scope: !491, file: !492, line: 87, type: !496)
!520 = !DILocalVariable(name: "blocked", scope: !491, file: !492, line: 123, type: !495)
!521 = !DILocalVariable(name: "state", scope: !491, file: !492, line: 122, type: !138)
!522 = !DILocation(line: 82, column: 30, scope: !491)
!523 = !DILocation(line: 83, column: 5, scope: !491)
!524 = !DILocation(line: 83, column: 7, scope: !491)
!525 = !DILocation(line: 85, column: 3, scope: !491)
!526 = !DILocation(line: 87, column: 20, scope: !491)
!527 = !DILocation(line: 0, scope: !491)
!528 = !DILocation(line: 87, column: 22, scope: !491)
!529 = !DILocation(line: 83, column: 20, scope: !491)
!530 = !DILocation(line: 87, column: 6, scope: !491)
!531 = !DILocation(line: 87, column: 9, scope: !491)
!532 = !DILocation(line: 90, column: 9, scope: !491)
!533 = !DILocation(line: 90, column: 11, scope: !491)
!534 = !DILocation(line: 90, column: 23, scope: !491)
!535 = !DILocation(line: 90, column: 30, scope: !491)
!536 = !DILocation(line: 90, column: 27, scope: !491)
!537 = !DILocation(line: 97, column: 7, scope: !491)
!538 = !DILocation(line: 97, column: 10, scope: !491)
!539 = !DILocation(line: 97, column: 27, scope: !491)
!540 = !DILocation(line: 97, column: 43, scope: !491)
!541 = !DILocation(line: 97, column: 58, scope: !491)
!542 = !DILocalVariable(name: "b", arg: 1, scope: !543, file: !492, line: 66, type: !495)
!543 = distinct !DISubprogram(name: "(*runtime.channelBlockedList).remove", linkageName: "(*runtime.channelBlockedList).remove", scope: !492, file: !492, line: 66, type: !544, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !546)
!544 = !DISubroutineType(types: !545)
!545 = !{!495, !495}
!546 = !{!542, !547, !548, !549}
!547 = !DILocalVariable(name: "old", arg: 2, scope: !543, file: !492, line: 66, type: !495)
!548 = !DILocalVariable(name: "c", scope: !543, file: !492, line: 70, type: !495)
!549 = !DILocalVariable(name: "next", scope: !543, file: !492, line: 45, type: !495)
!550 = !DILocation(line: 67, column: 5, scope: !543, inlinedAt: !551)
!551 = distinct !DILocation(line: 97, column: 41, scope: !491)
!552 = !DILocation(line: 67, column: 10, scope: !543, inlinedAt: !551)
!553 = !DILocation(line: 67, column: 7, scope: !543, inlinedAt: !551)
!554 = !DILocation(line: 0, scope: !543, inlinedAt: !551)
!555 = !DILocation(line: 68, column: 12, scope: !543, inlinedAt: !551)
!556 = !DILocation(line: 70, column: 2, scope: !543, inlinedAt: !551)
!557 = !DILocation(line: 71, column: 8, scope: !543, inlinedAt: !551)
!558 = !DILocation(line: 68, column: 3, scope: !543, inlinedAt: !551)
!559 = !DILocation(line: 71, column: 20, scope: !543, inlinedAt: !551)
!560 = !DILocation(line: 71, column: 22, scope: !543, inlinedAt: !551)
!561 = !DILocation(line: 71, column: 30, scope: !543, inlinedAt: !551)
!562 = !DILocation(line: 71, column: 27, scope: !543, inlinedAt: !551)
!563 = !DILocation(line: 74, column: 3, scope: !543, inlinedAt: !551)
!564 = !DILocation(line: 74, column: 12, scope: !543, inlinedAt: !551)
!565 = !DILocation(line: 74, column: 16, scope: !543, inlinedAt: !551)
!566 = !DILocation(line: 74, column: 5, scope: !543, inlinedAt: !551)
!567 = !DILocation(line: 98, column: 10, scope: !491)
!568 = !DILocation(line: 98, column: 13, scope: !491)
!569 = !DILocation(line: 98, column: 21, scope: !491)
!570 = !DILocation(line: 99, column: 11, scope: !491)
!571 = !DILocation(line: 99, column: 17, scope: !491)
!572 = !DILocation(line: 101, column: 15, scope: !491)
!573 = !DILocation(line: 101, column: 21, scope: !491)
!574 = !DILocation(line: 102, column: 13, scope: !491)
!575 = !DILocation(line: 106, column: 15, scope: !491)
!576 = !DILocation(line: 106, column: 23, scope: !491)
!577 = !DILocation(line: 108, column: 13, scope: !491)
!578 = !DILocation(line: 111, column: 13, scope: !491)
!579 = distinct !DISubprogram(name: "runtime.lookupPanic", linkageName: "runtime.lookupPanic", scope: !440, file: !440, line: 36, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !76)
!580 = !DILocation(line: 37, column: 14, scope: !579)
!581 = distinct !DISubprogram(name: "(*runtime.channel).pop", linkageName: "(*runtime.channel).pop", scope: !492, file: !492, line: 268, type: !582, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !584)
!582 = !DISubroutineType(types: !583)
!583 = !{!507, !36}
!584 = !{!585, !586, !587, !588, !589}
!585 = !DILocalVariable(name: "ch", arg: 1, scope: !581, file: !492, line: 268, type: !507)
!586 = !DILocalVariable(name: "value", arg: 2, scope: !581, file: !492, line: 268, type: !36)
!587 = !DILocalVariable(name: "addr", scope: !581, file: !492, line: 275, type: !36)
!588 = !DILocalVariable(name: "bufUsed", scope: !581, file: !492, line: 126, type: !13)
!589 = !DILocalVariable(name: "bufTail", scope: !581, file: !492, line: 125, type: !13)
!590 = !DILocation(line: 268, column: 20, scope: !581)
!591 = !DILocation(line: 270, column: 5, scope: !581)
!592 = !DILocation(line: 270, column: 8, scope: !581)
!593 = !DILocation(line: 270, column: 16, scope: !581)
!594 = !DILocation(line: 0, scope: !581)
!595 = !DILocation(line: 271, column: 3, scope: !581)
!596 = !DILocation(line: 275, column: 33, scope: !581)
!597 = !DILocation(line: 275, column: 36, scope: !581)
!598 = !DILocation(line: 275, column: 47, scope: !581)
!599 = !DILocation(line: 275, column: 64, scope: !581)
!600 = !DILocation(line: 275, column: 59, scope: !581)
!601 = !DILocation(line: 275, column: 24, scope: !581)
!602 = !DILocation(line: 279, column: 3, scope: !581)
!603 = !DILocation(line: 280, column: 3, scope: !581)
!604 = !DILocation(line: 278, column: 8, scope: !581)
!605 = !DILocation(line: 287, column: 6, scope: !581)
!606 = !DILocation(line: 285, column: 9, scope: !581)
!607 = !DILocation(line: 291, column: 5, scope: !581)
!608 = !DILocation(line: 291, column: 2, scope: !581)
!609 = !DILocation(line: 294, column: 5, scope: !581)
!610 = !DILocation(line: 294, column: 2, scope: !581)
!611 = !DILocation(line: 295, column: 22, scope: !581)
!612 = !DILocation(line: 295, column: 16, scope: !581)
!613 = distinct !DISubprogram(name: "(*runtime.channel).resumeTX", linkageName: "(*runtime.channel).resumeTX", scope: !492, file: !492, line: 204, type: !614, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !616)
!614 = !DISubroutineType(types: !615)
!615 = !{!507}
!616 = !{!617, !618, !619, !620, !621}
!617 = !DILocalVariable(name: "ch", arg: 1, scope: !613, file: !492, line: 204, type: !507)
!618 = !DILocalVariable(name: "b", scope: !613, file: !492, line: 206, type: !495)
!619 = !DILocalVariable(name: "blocked", scope: !613, file: !492, line: 123, type: !495)
!620 = !DILocalVariable(name: "src", scope: !613, file: !492, line: 210, type: !36)
!621 = !DILocalVariable(name: "Ptr", scope: !613, file: !184, line: 13, type: !36)
!622 = !DILocation(line: 206, column: 6, scope: !613)
!623 = !DILocation(line: 207, column: 18, scope: !613)
!624 = !DILocation(line: 207, column: 21, scope: !613)
!625 = !DILocation(line: 207, column: 41, scope: !613)
!626 = !DILocation(line: 207, column: 2, scope: !613)
!627 = !DILocation(line: 207, column: 8, scope: !613)
!628 = !DILocation(line: 210, column: 11, scope: !613)
!629 = !DILocation(line: 210, column: 13, scope: !613)
!630 = !DILocation(line: 210, column: 2, scope: !613)
!631 = !DILocation(line: 212, column: 5, scope: !613)
!632 = !DILocation(line: 212, column: 7, scope: !613)
!633 = !DILocation(line: 212, column: 9, scope: !613)
!634 = !DILocation(line: 0, scope: !613)
!635 = !DILocation(line: 214, column: 9, scope: !613)
!636 = !DILocation(line: 214, column: 13, scope: !613)
!637 = !DILocation(line: 214, column: 3, scope: !613)
!638 = !DILocation(line: 217, column: 7, scope: !613)
!639 = !DILocation(line: 220, column: 11, scope: !613)
!640 = !DILocation(line: 224, column: 18, scope: !613)
!641 = !DILocation(line: 224, column: 16, scope: !613)
!642 = !DILocation(line: 224, column: 15, scope: !613)
!643 = !DILocation(line: 226, column: 9, scope: !613)
!644 = !DILocation(line: 226, column: 2, scope: !613)
!645 = distinct !DISubprogram(name: "runtime._panic", linkageName: "runtime._panic", scope: !440, file: !440, line: 9, type: !646, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !652)
!646 = !DISubroutineType(types: !647)
!647 = !{!648}
!648 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime._interface", baseType: !649)
!649 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !650)
!650 = !{!651, !152}
!651 = !DIDerivedType(tag: DW_TAG_member, name: "typecode", baseType: !13, size: 64, align: 64)
!652 = !{!653}
!653 = !DILocalVariable(name: "message", arg: 1, scope: !645, file: !440, line: 9, type: !648)
!654 = !DILocation(line: 9, column: 6, scope: !645)
!655 = !DILocation(line: 10, column: 13, scope: !645)
!656 = !DILocation(line: 11, column: 10, scope: !645)
!657 = !DILocation(line: 12, column: 9, scope: !645)
!658 = !DILocation(line: 13, column: 7, scope: !645)
!659 = !DILocation(line: 14, column: 2, scope: !645)
!660 = distinct !DISubprogram(name: "runtime.printitf", linkageName: "runtime.printitf", scope: !452, file: !452, line: 290, type: !646, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !661)
!661 = !{!662, !663, !664, !665, !667, !669, !671, !672, !674, !675, !677, !678, !679, !680, !682, !683, !685, !687, !688, !690, !692}
!662 = !DILocalVariable(name: "msg", arg: 1, scope: !660, file: !452, line: 290, type: !648)
!663 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !51)
!664 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !456)
!665 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !666)
!666 = !DIBasicType(name: "int8", size: 8, encoding: DW_ATE_signed)
!667 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !668)
!668 = !DIBasicType(name: "int16", size: 16, encoding: DW_ATE_signed)
!669 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !670)
!670 = !DIBasicType(name: "int32", size: 32, encoding: DW_ATE_signed)
!671 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !118)
!672 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !673)
!673 = !DIBasicType(name: "uint", size: 64, encoding: DW_ATE_unsigned)
!674 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !11)
!675 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !676)
!676 = !DIBasicType(name: "uint16", size: 16, encoding: DW_ATE_unsigned)
!677 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !380)
!678 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !38)
!679 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !13)
!680 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !681)
!681 = !DIBasicType(name: "float32", size: 32, encoding: DW_ATE_float)
!682 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !112)
!683 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !684)
!684 = !DIBasicType(name: "complex64", size: 64, encoding: DW_ATE_complex_float)
!685 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !686)
!686 = !DIBasicType(name: "complex128", size: 128, encoding: DW_ATE_complex_float)
!687 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !7)
!688 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !689)
!689 = !DIDerivedType(tag: DW_TAG_typedef, name: "error", baseType: !648)
!690 = !DILocalVariable(name: "msg", scope: !660, file: !452, line: 291, type: !691)
!691 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime.stringer", baseType: !648)
!692 = !DILocalVariable(name: "itf", scope: !660, file: !452, line: 332, type: !648)
!693 = !DILocation(line: 290, column: 6, scope: !660)
!694 = !DILocation(line: 325, column: 8, scope: !660)
!695 = !DILocation(line: 346, column: 2, scope: !660)
!696 = distinct !DISubprogram(name: "runtime.chanRecv", linkageName: "runtime.chanRecv", scope: !492, file: !492, line: 502, type: !697, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !699)
!697 = !DISubroutineType(types: !698)
!698 = !{!507, !36, !495}
!699 = !{!700, !701, !702, !703, !704, !705, !706, !707, !708, !709, !710, !711}
!700 = !DILocalVariable(name: "ch", arg: 1, scope: !696, file: !492, line: 502, type: !507)
!701 = !DILocalVariable(name: "value", arg: 2, scope: !696, file: !492, line: 502, type: !36)
!702 = !DILocalVariable(name: "blockedlist", arg: 3, scope: !696, file: !492, line: 502, type: !495)
!703 = !DILocalVariable(name: "i", scope: !696, file: !492, line: 503, type: !182)
!704 = !DILocalVariable(name: "rx", scope: !696, file: !492, line: 505, type: !51)
!705 = !DILocalVariable(name: "ok", scope: !696, file: !492, line: 505, type: !51)
!706 = !DILocalVariable(name: "receiver", scope: !696, file: !492, line: 519, type: !30)
!707 = !DILocalVariable(name: "state", scope: !696, file: !492, line: 122, type: !138)
!708 = !DILocalVariable(name: "Ptr", scope: !696, file: !184, line: 13, type: !36)
!709 = !DILocalVariable(name: "Data", scope: !696, file: !184, line: 16, type: !38)
!710 = !DILocalVariable(name: "blocked", scope: !696, file: !492, line: 123, type: !495)
!711 = !DILocalVariable(name: "ok", scope: !696, file: !492, line: 530, type: !51)
!712 = !DILocation(line: 502, column: 6, scope: !696)
!713 = !DILocation(line: 57, column: 16, scope: !714, inlinedAt: !717)
!714 = distinct !DISubprogram(name: "(*internal/task.Task).getReturnPtr", linkageName: "(*internal/task.Task).getReturnPtr", scope: !209, file: !209, line: 57, type: !222, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !715)
!715 = !{!716}
!716 = !DILocalVariable(name: "t", arg: 1, scope: !714, file: !209, line: 57, type: !172)
!717 = distinct !DILocation(line: 502, column: 6, scope: !696)
!718 = !DILocation(line: 58, column: 9, scope: !714, inlinedAt: !717)
!719 = !DILocation(line: 58, column: 11, scope: !714, inlinedAt: !717)
!720 = !DILocation(line: 503, column: 2, scope: !696)
!721 = !DILocation(line: 505, column: 15, scope: !696)
!722 = !DILocation(line: 505, column: 26, scope: !696)
!723 = !DILocalVariable(name: "value", arg: 2, scope: !724, file: !492, line: 357, type: !36)
!724 = distinct !DISubprogram(name: "(*runtime.channel).tryRecv", linkageName: "(*runtime.channel).tryRecv", scope: !492, file: !492, line: 357, type: !582, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !725)
!725 = !{!726, !723, !727, !728, !729, !730}
!726 = !DILocalVariable(name: "ch", arg: 1, scope: !724, file: !492, line: 357, type: !507)
!727 = !DILocalVariable(name: "i", scope: !724, file: !492, line: 364, type: !182)
!728 = !DILocalVariable(name: "src", scope: !724, file: !492, line: 372, type: !36)
!729 = !DILocalVariable(name: "state", scope: !724, file: !492, line: 122, type: !138)
!730 = !DILocalVariable(name: "src", scope: !724, file: !492, line: 392, type: !36)
!731 = !DILocation(line: 357, column: 20, scope: !724, inlinedAt: !732)
!732 = distinct !DILocation(line: 505, column: 25, scope: !696)
!733 = !DILocation(line: 364, column: 2, scope: !724, inlinedAt: !732)
!734 = !DILocation(line: 366, column: 9, scope: !724, inlinedAt: !732)
!735 = !DILocation(line: 366, column: 12, scope: !724, inlinedAt: !732)
!736 = !DILocation(line: 0, scope: !724, inlinedAt: !732)
!737 = !DILocation(line: 369, column: 6, scope: !724, inlinedAt: !732)
!738 = !DILocation(line: 369, column: 13, scope: !724, inlinedAt: !732)
!739 = !DILocation(line: 369, column: 12, scope: !724, inlinedAt: !732)
!740 = !DILocation(line: 371, column: 7, scope: !724, inlinedAt: !732)
!741 = !DILocation(line: 390, column: 13, scope: !724, inlinedAt: !732)
!742 = !DILocation(line: 372, column: 12, scope: !724, inlinedAt: !732)
!743 = !DILocation(line: 372, column: 23, scope: !724, inlinedAt: !732)
!744 = !DILocation(line: 375, column: 13, scope: !724, inlinedAt: !732)
!745 = !DILocalVariable(name: "value", arg: 2, scope: !746, file: !492, line: 231, type: !36)
!746 = distinct !DISubprogram(name: "(*runtime.channel).push", linkageName: "(*runtime.channel).push", scope: !492, file: !492, line: 231, type: !582, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !747)
!747 = !{!748, !745, !749, !750}
!748 = !DILocalVariable(name: "ch", arg: 1, scope: !746, file: !492, line: 231, type: !507)
!749 = !DILocalVariable(name: "bufUsed", scope: !746, file: !492, line: 126, type: !13)
!750 = !DILocalVariable(name: "bufHead", scope: !746, file: !492, line: 124, type: !13)
!751 = !DILocation(line: 231, column: 20, scope: !746, inlinedAt: !752)
!752 = distinct !DILocation(line: 375, column: 12, scope: !724, inlinedAt: !732)
!753 = !DILocation(line: 233, column: 5, scope: !746, inlinedAt: !752)
!754 = !DILocation(line: 233, column: 8, scope: !746, inlinedAt: !752)
!755 = !DILocation(line: 233, column: 16, scope: !746, inlinedAt: !752)
!756 = !DILocation(line: 0, scope: !746, inlinedAt: !752)
!757 = !DILocation(line: 238, column: 5, scope: !746, inlinedAt: !752)
!758 = !DILocation(line: 245, column: 12, scope: !746, inlinedAt: !752)
!759 = !DILocation(line: 245, column: 15, scope: !746, inlinedAt: !752)
!760 = !DILocation(line: 247, column: 9, scope: !746, inlinedAt: !752)
!761 = !DILocation(line: 248, column: 10, scope: !746, inlinedAt: !752)
!762 = !DILocation(line: 247, column: 20, scope: !746, inlinedAt: !752)
!763 = !DILocation(line: 244, column: 17, scope: !746, inlinedAt: !752)
!764 = !DILocation(line: 251, column: 3, scope: !746, inlinedAt: !752)
!765 = !DILocation(line: 243, column: 8, scope: !746, inlinedAt: !752)
!766 = !DILocation(line: 256, column: 5, scope: !746, inlinedAt: !752)
!767 = !DILocation(line: 256, column: 2, scope: !746, inlinedAt: !752)
!768 = !DILocation(line: 257, column: 5, scope: !746, inlinedAt: !752)
!769 = !DILocation(line: 257, column: 2, scope: !746, inlinedAt: !752)
!770 = !DILocation(line: 258, column: 22, scope: !746, inlinedAt: !752)
!771 = !DILocation(line: 258, column: 16, scope: !746, inlinedAt: !752)
!772 = !DILocation(line: 377, column: 11, scope: !724, inlinedAt: !732)
!773 = !DILocation(line: 377, column: 19, scope: !724, inlinedAt: !732)
!774 = !DILocation(line: 392, column: 11, scope: !724, inlinedAt: !732)
!775 = !DILocation(line: 392, column: 22, scope: !724, inlinedAt: !732)
!776 = !DILocation(line: 395, column: 11, scope: !724, inlinedAt: !732)
!777 = !DILocation(line: 395, column: 18, scope: !724, inlinedAt: !732)
!778 = !DILocation(line: 395, column: 26, scope: !724, inlinedAt: !732)
!779 = !DILocation(line: 395, column: 10, scope: !724, inlinedAt: !732)
!780 = !DILocation(line: 397, column: 10, scope: !724, inlinedAt: !732)
!781 = !DILocation(line: 397, column: 18, scope: !724, inlinedAt: !732)
!782 = !DILocation(line: 412, column: 6, scope: !724, inlinedAt: !732)
!783 = !DILocation(line: 412, column: 13, scope: !724, inlinedAt: !732)
!784 = !DILocation(line: 412, column: 12, scope: !724, inlinedAt: !732)
!785 = !DILocation(line: 422, column: 15, scope: !724, inlinedAt: !732)
!786 = !DILocation(line: 383, column: 10, scope: !724, inlinedAt: !732)
!787 = !DILocation(line: 379, column: 6, scope: !724, inlinedAt: !732)
!788 = !DILocation(line: 379, column: 9, scope: !724, inlinedAt: !732)
!789 = !DILocation(line: 383, column: 7, scope: !724, inlinedAt: !732)
!790 = !DILocation(line: 383, column: 18, scope: !724, inlinedAt: !732)
!791 = !DILocation(line: 385, column: 5, scope: !724, inlinedAt: !732)
!792 = !DILocation(line: 385, column: 8, scope: !724, inlinedAt: !732)
!793 = !DILocation(line: 399, column: 5, scope: !724, inlinedAt: !732)
!794 = !DILocation(line: 399, column: 8, scope: !724, inlinedAt: !732)
!795 = !DILocation(line: 418, column: 11, scope: !724, inlinedAt: !732)
!796 = !DILocation(line: 418, column: 18, scope: !724, inlinedAt: !732)
!797 = !DILocation(line: 418, column: 21, scope: !724, inlinedAt: !732)
!798 = !DILocation(line: 418, column: 10, scope: !724, inlinedAt: !732)
!799 = !DILocation(line: 419, column: 21, scope: !724, inlinedAt: !732)
!800 = !DILocation(line: 420, column: 3, scope: !724, inlinedAt: !732)
!801 = !DILocation(line: 505, column: 25, scope: !696)
!802 = !DILocation(line: 505, column: 9, scope: !696)
!803 = !DILocation(line: 505, column: 34, scope: !696)
!804 = !DILocation(line: 512, column: 5, scope: !696)
!805 = !DILocation(line: 0, scope: !696)
!806 = !DILocation(line: 508, column: 21, scope: !696)
!807 = !DILocation(line: 509, column: 10, scope: !696)
!808 = !DILocation(line: 509, column: 3, scope: !696)
!809 = !DILocation(line: 35, column: 16, scope: !208, inlinedAt: !810)
!810 = distinct !DILocation(line: 509, column: 3, scope: !696)
!811 = !DILocation(line: 36, column: 2, scope: !208, inlinedAt: !810)
!812 = !DILocation(line: 36, column: 4, scope: !208, inlinedAt: !810)
!813 = !DILocation(line: 36, column: 18, scope: !208, inlinedAt: !810)
!814 = !DILocation(line: 42, column: 15, scope: !221, inlinedAt: !815)
!815 = distinct !DILocation(line: 37, column: 17, scope: !208, inlinedAt: !810)
!816 = !DILocation(line: 80, column: 16, scope: !229, inlinedAt: !817)
!817 = distinct !DILocation(line: 42, column: 14, scope: !221, inlinedAt: !815)
!818 = !DILocation(line: 80, column: 15, scope: !229, inlinedAt: !817)
!819 = !DILocation(line: 519, column: 2, scope: !696)
!820 = !DILocation(line: 520, column: 2, scope: !696)
!821 = !DILocation(line: 520, column: 5, scope: !696)
!822 = !DILocation(line: 521, column: 11, scope: !696)
!823 = !DILocation(line: 521, column: 25, scope: !696)
!824 = !DILocation(line: 521, column: 32, scope: !696)
!825 = !DILocation(line: 522, column: 3, scope: !696)
!826 = !DILocation(line: 502, column: 50, scope: !696)
!827 = !DILocation(line: 523, column: 9, scope: !696)
!828 = !DILocation(line: 523, column: 12, scope: !696)
!829 = !DILocation(line: 524, column: 9, scope: !696)
!830 = !DILocation(line: 523, column: 7, scope: !696)
!831 = !DILocation(line: 522, column: 35, scope: !696)
!832 = !DILocation(line: 524, column: 4, scope: !696)
!833 = !DILocation(line: 526, column: 15, scope: !696)
!834 = !DILocation(line: 526, column: 5, scope: !696)
!835 = !DILocation(line: 528, column: 20, scope: !696)
!836 = !DILocation(line: 532, column: 2, scope: !696)
!837 = distinct !DISubprogram(name: "runtime.main", linkageName: "main", scope: !121, file: !121, line: 49, type: !838, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !841)
!838 = !DISubroutineType(types: !839)
!839 = !{!670, !840}
!840 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !36, size: 64, align: 64, dwarfAddressSpace: 0)
!841 = !{!842, !843, !844, !849, !850, !851, !852, !853, !854, !855, !863, !865, !866}
!842 = !DILocalVariable(name: "argc", arg: 1, scope: !837, file: !121, line: 49, type: !670)
!843 = !DILocalVariable(name: "argv", arg: 2, scope: !837, file: !121, line: 49, type: !840)
!844 = !DILocalVariable(name: "argsSlice", scope: !837, file: !121, line: 55, type: !845)
!845 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !846, size: 64, align: 64, dwarfAddressSpace: 0)
!846 = !DICompositeType(tag: DW_TAG_structure_type, size: 192, align: 64, elements: !847)
!847 = !{!848, !12, !14}
!848 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", baseType: !36, size: 64, align: 64)
!849 = !DILocalVariable(name: "ptr", scope: !837, file: !121, line: 56, type: !36)
!850 = !DILocalVariable(name: "len", scope: !837, file: !121, line: 57, type: !13)
!851 = !DILocalVariable(name: "cap", scope: !837, file: !121, line: 58, type: !13)
!852 = !DILocalVariable(name: "i", scope: !837, file: !121, line: 65, type: !456)
!853 = !DILocalVariable(name: "length", scope: !837, file: !121, line: 67, type: !13)
!854 = !DILocalVariable(name: "args", scope: !837, file: !2, line: 29, type: !3)
!855 = !DILocalVariable(name: "arg", scope: !837, file: !121, line: 68, type: !856)
!856 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !857, size: 64, align: 64, dwarfAddressSpace: 0)
!857 = !DIDerivedType(tag: DW_TAG_typedef, name: "runtime._string", baseType: !858)
!858 = !DICompositeType(tag: DW_TAG_structure_type, size: 128, align: 64, elements: !859)
!859 = !{!860, !862}
!860 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", baseType: !861, size: 64, align: 64)
!861 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !470, size: 64, align: 64, dwarfAddressSpace: 0)
!862 = !DIDerivedType(tag: DW_TAG_member, name: "length", baseType: !13, size: 64, align: 64, offset: 64)
!863 = !DILocalVariable(name: "length", scope: !837, file: !864, line: 12, type: !13)
!864 = !DIFile(filename: "string.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!865 = !DILocalVariable(name: "ptr", scope: !837, file: !864, line: 11, type: !861)
!866 = !DILocalVariable(name: "stackTop", scope: !837, file: !121, line: 43, type: !13)
!867 = !DILocation(line: 49, column: 6, scope: !837)
!868 = !DILocation(line: 17, column: 14, scope: !869, inlinedAt: !875)
!869 = distinct !DISubprogram(name: "runtime.preinit", linkageName: "runtime.preinit", scope: !17, file: !17, line: 13, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !870)
!870 = !{!871, !872, !873, !874}
!871 = !DILocalVariable(name: "addr", scope: !869, file: !17, line: 17, type: !36)
!872 = !DILocalVariable(name: "heapStart", scope: !869, file: !17, line: 11, type: !13)
!873 = !DILocalVariable(name: "heapSize", scope: !869, file: !17, line: 8, type: !13)
!874 = !DILocalVariable(name: "heapEnd", scope: !869, file: !17, line: 11, type: !13)
!875 = distinct !DILocation(line: 50, column: 9, scope: !837)
!876 = !DILocation(line: 17, column: 2, scope: !869, inlinedAt: !875)
!877 = !DILocation(line: 18, column: 22, scope: !869, inlinedAt: !875)
!878 = !DILocation(line: 18, column: 21, scope: !869, inlinedAt: !875)
!879 = !DILocation(line: 18, column: 2, scope: !869, inlinedAt: !875)
!880 = !DILocation(line: 19, column: 12, scope: !869, inlinedAt: !875)
!881 = !DILocation(line: 19, column: 24, scope: !869, inlinedAt: !875)
!882 = !DILocation(line: 19, column: 22, scope: !869, inlinedAt: !875)
!883 = !DILocation(line: 19, column: 2, scope: !869, inlinedAt: !875)
!884 = !DILocation(line: 60, column: 32, scope: !837)
!885 = !DILocation(line: 60, column: 69, scope: !837)
!886 = !DILocation(line: 60, column: 24, scope: !837)
!887 = !DILocation(line: 60, column: 12, scope: !837)
!888 = !DILocation(line: 61, column: 12, scope: !837)
!889 = !DILocation(line: 62, column: 12, scope: !837)
!890 = !DILocation(line: 65, column: 6, scope: !837)
!891 = !DILocation(line: 0, scope: !837)
!892 = !DILocation(line: 49, column: 23, scope: !837)
!893 = !DILocation(line: 65, column: 14, scope: !837)
!894 = !DILocation(line: 65, column: 22, scope: !837)
!895 = !DILocation(line: 65, column: 16, scope: !837)
!896 = !DILocation(line: 67, column: 21, scope: !837)
!897 = !DILocation(line: 67, column: 20, scope: !837)
!898 = !DILocation(line: 18, column: 23, scope: !899, inlinedAt: !900)
!899 = distinct !DISubprogram(name: "runtime.getCurrentStackPointer", linkageName: "runtime.getCurrentStackPointer", scope: !385, file: !385, line: 17, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !76)
!900 = distinct !DILocation(line: 78, column: 35, scope: !837)
!901 = !DILocation(line: 78, column: 2, scope: !837)
!902 = !DILocation(line: 79, column: 9, scope: !837)
!903 = !DILocation(line: 82, column: 2, scope: !837)
!904 = !DILocation(line: 67, column: 3, scope: !837)
!905 = !DILocation(line: 68, column: 37, scope: !837)
!906 = !DILocation(line: 68, column: 42, scope: !837)
!907 = !DILocation(line: 68, column: 41, scope: !837)
!908 = !DILocation(line: 67, column: 19, scope: !837)
!909 = !DILocation(line: 69, column: 3, scope: !837)
!910 = !DILocation(line: 69, column: 7, scope: !837)
!911 = !DILocation(line: 69, column: 16, scope: !837)
!912 = !DILocation(line: 70, column: 22, scope: !837)
!913 = !DILocation(line: 70, column: 7, scope: !837)
!914 = !DILocation(line: 70, column: 21, scope: !837)
!915 = !DILocation(line: 72, column: 66, scope: !837)
!916 = !DILocation(line: 72, column: 42, scope: !837)
!917 = !DILocation(line: 72, column: 3, scope: !837)
!918 = !DILocation(line: 65, column: 29, scope: !837)
!919 = distinct !DISubprogram(name: "runtime.runMain", linkageName: "runtime.runMain", scope: !121, file: !121, line: 87, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !76)
!920 = !DILocation(line: 63, column: 14, scope: !921, inlinedAt: !922)
!921 = distinct !DISubprogram(name: "internal/task.createTask", linkageName: "internal/task.createTask", scope: !209, file: !209, line: 62, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !76)
!922 = distinct !DILocation(line: 18, column: 2, scope: !923, inlinedAt: !925)
!923 = distinct !DISubprogram(name: "runtime.run", linkageName: "runtime.run", scope: !924, file: !924, line: 16, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !76)
!924 = !DIFile(filename: "scheduler_any.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!925 = distinct !DILocation(line: 88, column: 5, scope: !919)
!926 = !DILocation(line: 64, column: 16, scope: !921, inlinedAt: !922)
!927 = !DILocation(line: 18, column: 2, scope: !923, inlinedAt: !925)
!928 = !DILocalVariable(name: "now", scope: !929, file: !25, line: 122, type: !126)
!929 = distinct !DISubprogram(name: "runtime.scheduler", linkageName: "runtime.scheduler", scope: !25, file: !25, line: 120, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !930)
!930 = !{!928, !931, !932, !933, !934, !935, !936, !937, !938}
!931 = !DILocalVariable(name: "schedulerDone", scope: !929, file: !25, line: 27, type: !51)
!932 = !DILocalVariable(name: "sleepQueue", scope: !929, file: !25, line: 32, type: !30)
!933 = !DILocalVariable(name: "sleepQueueBaseTime", scope: !929, file: !25, line: 33, type: !126)
!934 = !DILocalVariable(name: "t", scope: !929, file: !25, line: 133, type: !30)
!935 = !DILocalVariable(name: "Next", scope: !929, file: !184, line: 10, type: !30)
!936 = !DILocalVariable(name: "t", scope: !929, file: !25, line: 141, type: !30)
!937 = !DILocalVariable(name: "timeLeft", scope: !929, file: !25, line: 151, type: !126)
!938 = !DILocalVariable(name: "t", scope: !929, file: !25, line: 154, type: !30)
!939 = !DILocation(line: 122, column: 6, scope: !929, inlinedAt: !940)
!940 = distinct !DILocation(line: 24, column: 11, scope: !923, inlinedAt: !925)
!941 = !DILocation(line: 0, scope: !929, inlinedAt: !940)
!942 = !DILocation(line: 123, column: 7, scope: !929, inlinedAt: !940)
!943 = !DILocation(line: 126, column: 6, scope: !929, inlinedAt: !940)
!944 = !DILocation(line: 132, column: 6, scope: !929, inlinedAt: !940)
!945 = !DILocalVariable(name: "i", scope: !946, file: !164, line: 33, type: !182)
!946 = distinct !DISubprogram(name: "(*internal/task.Queue).Pop", linkageName: "(*internal/task.Queue).Pop", scope: !164, file: !164, line: 32, type: !947, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !949)
!947 = !DISubroutineType(types: !948)
!948 = !{!167}
!949 = !{!950, !945, !951, !952, !953, !954}
!950 = !DILocalVariable(name: "q", arg: 1, scope: !946, file: !164, line: 32, type: !167)
!951 = !DILocalVariable(name: "t", scope: !946, file: !164, line: 34, type: !172)
!952 = !DILocalVariable(name: "head", scope: !946, file: !164, line: 10, type: !172)
!953 = !DILocalVariable(name: "tail", scope: !946, file: !164, line: 10, type: !172)
!954 = !DILocalVariable(name: "Next", scope: !946, file: !184, line: 10, type: !172)
!955 = !DILocation(line: 33, column: 2, scope: !946, inlinedAt: !956)
!956 = distinct !DILocation(line: 141, column: 20, scope: !929, inlinedAt: !940)
!957 = !DILocation(line: 34, column: 7, scope: !946, inlinedAt: !956)
!958 = !DILocation(line: 34, column: 9, scope: !946, inlinedAt: !956)
!959 = !DILocation(line: 35, column: 5, scope: !946, inlinedAt: !956)
!960 = !DILocation(line: 35, column: 7, scope: !946, inlinedAt: !956)
!961 = !DILocation(line: 0, scope: !946, inlinedAt: !956)
!962 = !DILocation(line: 39, column: 2, scope: !946, inlinedAt: !956)
!963 = !DILocation(line: 39, column: 11, scope: !946, inlinedAt: !956)
!964 = !DILocation(line: 39, column: 13, scope: !946, inlinedAt: !956)
!965 = !DILocation(line: 39, column: 4, scope: !946, inlinedAt: !956)
!966 = !DILocation(line: 40, column: 7, scope: !946, inlinedAt: !956)
!967 = !DILocation(line: 40, column: 12, scope: !946, inlinedAt: !956)
!968 = !DILocation(line: 41, column: 3, scope: !946, inlinedAt: !956)
!969 = !DILocation(line: 41, column: 5, scope: !946, inlinedAt: !956)
!970 = !DILocation(line: 142, column: 6, scope: !929, inlinedAt: !940)
!971 = !DILocation(line: 143, column: 7, scope: !929, inlinedAt: !940)
!972 = !DILocation(line: 148, column: 18, scope: !929, inlinedAt: !940)
!973 = !DILocation(line: 43, column: 2, scope: !946, inlinedAt: !956)
!974 = !DILocation(line: 43, column: 4, scope: !946, inlinedAt: !956)
!975 = !DILocation(line: 44, column: 20, scope: !946, inlinedAt: !956)
!976 = !DILocation(line: 171, column: 3, scope: !929, inlinedAt: !940)
!977 = !DILocalVariable(name: "t", arg: 1, scope: !978, file: !209, line: 22, type: !172)
!978 = distinct !DISubprogram(name: "(*internal/task.Task).Resume", linkageName: "(*internal/task.Task).Resume", scope: !209, file: !209, line: 22, type: !222, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !979)
!979 = !{!977}
!980 = !DILocation(line: 23, column: 13, scope: !978, inlinedAt: !981)
!981 = distinct !DILocation(line: 171, column: 11, scope: !929, inlinedAt: !940)
!982 = !DILocation(line: 23, column: 21, scope: !978, inlinedAt: !981)
!983 = !DILocation(line: 23, column: 12, scope: !978, inlinedAt: !981)
!984 = !DILocation(line: 89, column: 2, scope: !919)
!985 = distinct !DISubprogram(name: "runtime.run$1", linkageName: "runtime.run$1", scope: !924, file: !924, line: 18, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !986)
!986 = !{!987}
!987 = !DILocalVariable(name: "schedulerDone", scope: !985, file: !25, line: 27, type: !51)
!988 = !DILocation(line: 21, column: 11, scope: !985)
!989 = !DILocation(line: 23, column: 3, scope: !985)
!990 = distinct !DISubprogram(name: "runtime.waitForEvents", linkageName: "runtime.waitForEvents", scope: !991, file: !991, line: 6, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !76)
!991 = !DIFile(filename: "wait_other.go", directory: "/usr/local/Cellar/tinygo/0.19.0/src/runtime")
!992 = !DILocation(line: 7, column: 14, scope: !990)
!993 = distinct !DISubprogram(name: "main.main", linkageName: "main.main", scope: !54, file: !54, line: 12, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !127, retainedNodes: !994)
!994 = !{!995}
!995 = !DILocalVariable(name: "ready", scope: !993, file: !54, line: 9, type: !131)
!996 = !DILocation(line: 14, column: 9, scope: !993)
!997 = distinct !DISubprogram(name: "(*sync.Once).Do", linkageName: "(*sync.Once).Do", scope: !316, file: !316, line: 8, type: !317, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !79, retainedNodes: !998)
!998 = !{!999, !1000, !1001}
!999 = !DILocalVariable(name: "o", arg: 1, scope: !997, file: !316, line: 8, type: !319)
!1000 = !DILocalVariable(name: "f", arg: 2, scope: !997, file: !316, line: 8, type: !324)
!1001 = !DILocalVariable(name: "done", scope: !997, file: !316, line: 4, type: !51)
!1002 = !DILocation(line: 12, column: 3, scope: !997)
!1003 = !DILocation(line: 11, column: 7, scope: !997)
!1004 = !DILocation(line: 0, scope: !997)
!1005 = !DILocation(line: 8, column: 16, scope: !997)
!1006 = !DILocation(line: 14, column: 2, scope: !997)
!1007 = !DILocation(line: 14, column: 4, scope: !997)
!1008 = !DILocation(line: 15, column: 2, scope: !997)
!1009 = !DILocalVariable(name: "ready", scope: !1010, file: !54, line: 9, type: !131)
!1010 = distinct !DISubprogram(name: "main.main$1", linkageName: "main.main$1", scope: !54, file: !54, line: 14, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !127, retainedNodes: !1011)
!1011 = !{!1009}
!1012 = !DILocation(line: 15, column: 9, scope: !1010, inlinedAt: !1013)
!1013 = distinct !DILocation(line: 15, column: 3, scope: !997)
!1014 = !DILocalVariable(name: "i", scope: !1015, file: !492, line: 542, type: !182)
!1015 = distinct !DISubprogram(name: "runtime.chanClose", linkageName: "runtime.chanClose", scope: !492, file: !492, line: 537, type: !614, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !1016)
!1016 = !{!1017, !1014, !1018}
!1017 = !DILocalVariable(name: "ch", arg: 1, scope: !1015, file: !492, line: 537, type: !507)
!1018 = !DILocalVariable(name: "state", scope: !1015, file: !492, line: 122, type: !138)
!1019 = !DILocation(line: 542, column: 2, scope: !1015, inlinedAt: !1020)
!1020 = distinct !DILocation(line: 15, column: 8, scope: !1010, inlinedAt: !1013)
!1021 = !DILocation(line: 543, column: 9, scope: !1015, inlinedAt: !1020)
!1022 = !DILocation(line: 543, column: 12, scope: !1015, inlinedAt: !1020)
!1023 = !DILocation(line: 0, scope: !1015, inlinedAt: !1020)
!1024 = !DILocation(line: 546, column: 21, scope: !1015, inlinedAt: !1020)
!1025 = !DILocation(line: 547, column: 15, scope: !1015, inlinedAt: !1020)
!1026 = !DILocation(line: 553, column: 21, scope: !1015, inlinedAt: !1020)
!1027 = !DILocation(line: 554, column: 15, scope: !1015, inlinedAt: !1020)
!1028 = !DILocation(line: 558, column: 7, scope: !1015, inlinedAt: !1020)
!1029 = !DILocation(line: 558, column: 10, scope: !1015, inlinedAt: !1020)
!1030 = !DILocation(line: 558, column: 18, scope: !1015, inlinedAt: !1020)
!1031 = !DILocation(line: 559, column: 4, scope: !1015, inlinedAt: !1020)
!1032 = !DILocalVariable(name: "ok", arg: 2, scope: !1033, file: !492, line: 174, type: !51)
!1033 = distinct !DISubprogram(name: "(*runtime.channel).resumeRX", linkageName: "(*runtime.channel).resumeRX", scope: !492, file: !492, line: 174, type: !1034, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !1036)
!1034 = !DISubroutineType(types: !1035)
!1035 = !{!507, !51}
!1036 = !{!1037, !1032, !1038, !1039, !1040, !1041, !1042}
!1037 = !DILocalVariable(name: "ch", arg: 1, scope: !1033, file: !492, line: 174, type: !507)
!1038 = !DILocalVariable(name: "b", scope: !1033, file: !492, line: 176, type: !495)
!1039 = !DILocalVariable(name: "blocked", scope: !1033, file: !492, line: 123, type: !495)
!1040 = !DILocalVariable(name: "dst", scope: !1033, file: !492, line: 180, type: !36)
!1041 = !DILocalVariable(name: "Ptr", scope: !1033, file: !184, line: 13, type: !36)
!1042 = !DILocalVariable(name: "Data", scope: !1033, file: !184, line: 16, type: !38)
!1043 = !DILocation(line: 174, column: 20, scope: !1033, inlinedAt: !1044)
!1044 = distinct !DILocation(line: 559, column: 15, scope: !1015, inlinedAt: !1020)
!1045 = !DILocation(line: 176, column: 6, scope: !1033, inlinedAt: !1044)
!1046 = !DILocation(line: 177, column: 18, scope: !1033, inlinedAt: !1044)
!1047 = !DILocation(line: 177, column: 41, scope: !1033, inlinedAt: !1044)
!1048 = !DILocation(line: 177, column: 2, scope: !1033, inlinedAt: !1044)
!1049 = !DILocation(line: 177, column: 8, scope: !1033, inlinedAt: !1044)
!1050 = !DILocation(line: 180, column: 11, scope: !1033, inlinedAt: !1044)
!1051 = !DILocation(line: 180, column: 13, scope: !1033, inlinedAt: !1044)
!1052 = !DILocation(line: 182, column: 6, scope: !1033, inlinedAt: !1044)
!1053 = !DILocation(line: 184, column: 11, scope: !1033, inlinedAt: !1044)
!1054 = !DILocation(line: 184, column: 16, scope: !1033, inlinedAt: !1044)
!1055 = !DILocation(line: 184, column: 19, scope: !1033, inlinedAt: !1044)
!1056 = !DILocation(line: 184, column: 10, scope: !1033, inlinedAt: !1044)
!1057 = !DILocation(line: 185, column: 3, scope: !1033, inlinedAt: !1044)
!1058 = !DILocation(line: 185, column: 5, scope: !1033, inlinedAt: !1044)
!1059 = !DILocation(line: 185, column: 7, scope: !1033, inlinedAt: !1044)
!1060 = !DILocation(line: 190, column: 3, scope: !1033, inlinedAt: !1044)
!1061 = !DILocation(line: 190, column: 5, scope: !1033, inlinedAt: !1044)
!1062 = !DILocation(line: 190, column: 7, scope: !1033, inlinedAt: !1044)
!1063 = !DILocation(line: 190, column: 28, scope: !1033, inlinedAt: !1044)
!1064 = !DILocation(line: 193, column: 11, scope: !1033, inlinedAt: !1044)
!1065 = !DILocation(line: 0, scope: !1033, inlinedAt: !1044)
!1066 = !DILocation(line: 188, column: 5, scope: !1033, inlinedAt: !1044)
!1067 = !DILocation(line: 188, column: 7, scope: !1033, inlinedAt: !1044)
!1068 = !DILocation(line: 188, column: 9, scope: !1033, inlinedAt: !1044)
!1069 = !DILocation(line: 197, column: 16, scope: !1033, inlinedAt: !1044)
!1070 = !DILocation(line: 197, column: 18, scope: !1033, inlinedAt: !1044)
!1071 = !DILocation(line: 197, column: 15, scope: !1033, inlinedAt: !1044)
!1072 = !DILocation(line: 199, column: 9, scope: !1033, inlinedAt: !1044)
!1073 = !DILocation(line: 557, column: 3, scope: !1015, inlinedAt: !1020)
!1074 = !DILocation(line: 557, column: 6, scope: !1015, inlinedAt: !1020)
!1075 = !DILocation(line: 564, column: 2, scope: !1015, inlinedAt: !1020)
!1076 = !DILocation(line: 564, column: 5, scope: !1015, inlinedAt: !1020)
!1077 = !DILocation(line: 565, column: 20, scope: !1015, inlinedAt: !1020)
!1078 = distinct !DISubprogram(name: "(*sync.Once).Do", linkageName: "(*sync.Once).Do", scope: !316, file: !316, line: 8, type: !317, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !79, retainedNodes: !1079)
!1079 = !{!1080, !1081, !1082}
!1080 = !DILocalVariable(name: "o", arg: 1, scope: !1078, file: !316, line: 8, type: !319)
!1081 = !DILocalVariable(name: "f", arg: 2, scope: !1078, file: !316, line: 8, type: !324)
!1082 = !DILocalVariable(name: "done", scope: !1078, file: !316, line: 4, type: !51)
!1083 = !DILocation(line: 8, column: 16, scope: !1078)
!1084 = distinct !DISubprogram(name: "(*sync.Once).Do", linkageName: "(*sync.Once).Do", scope: !316, file: !316, line: 8, type: !317, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !79, retainedNodes: !1085)
!1085 = !{!1086, !1087, !1088}
!1086 = !DILocalVariable(name: "o", arg: 1, scope: !1084, file: !316, line: 8, type: !319)
!1087 = !DILocalVariable(name: "f", arg: 2, scope: !1084, file: !316, line: 8, type: !324)
!1088 = !DILocalVariable(name: "done", scope: !1084, file: !316, line: 4, type: !51)
!1089 = !DILocation(line: 8, column: 16, scope: !1084)
!1090 = distinct !DISubprogram(name: "runtime.chanRecv", linkageName: "runtime.chanRecv", scope: !492, file: !492, line: 502, type: !697, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !1091)
!1091 = !{!1092, !1093, !1094, !1095, !1096, !1097, !1098, !1099, !1100, !1101, !1102, !1103}
!1092 = !DILocalVariable(name: "ch", arg: 1, scope: !1090, file: !492, line: 502, type: !507)
!1093 = !DILocalVariable(name: "value", arg: 2, scope: !1090, file: !492, line: 502, type: !36)
!1094 = !DILocalVariable(name: "blockedlist", arg: 3, scope: !1090, file: !492, line: 502, type: !495)
!1095 = !DILocalVariable(name: "i", scope: !1090, file: !492, line: 503, type: !182)
!1096 = !DILocalVariable(name: "rx", scope: !1090, file: !492, line: 505, type: !51)
!1097 = !DILocalVariable(name: "ok", scope: !1090, file: !492, line: 505, type: !51)
!1098 = !DILocalVariable(name: "receiver", scope: !1090, file: !492, line: 519, type: !30)
!1099 = !DILocalVariable(name: "state", scope: !1090, file: !492, line: 122, type: !138)
!1100 = !DILocalVariable(name: "Ptr", scope: !1090, file: !184, line: 13, type: !36)
!1101 = !DILocalVariable(name: "Data", scope: !1090, file: !184, line: 16, type: !38)
!1102 = !DILocalVariable(name: "blocked", scope: !1090, file: !492, line: 123, type: !495)
!1103 = !DILocalVariable(name: "ok", scope: !1090, file: !492, line: 530, type: !51)
!1104 = !DILocation(line: 521, column: 25, scope: !1090)
!1105 = !DILocation(line: 58, column: 11, scope: !714, inlinedAt: !1106)
!1106 = distinct !DILocation(line: 502, column: 6, scope: !1090)
!1107 = !DILocation(line: 502, column: 6, scope: !1090)
!1108 = !DILocation(line: 532, column: 2, scope: !1090)
!1109 = !DILocation(line: 530, column: 17, scope: !1090)
!1110 = !DILocation(line: 530, column: 22, scope: !1090)
!1111 = !DILocation(line: 530, column: 2, scope: !1090)
!1112 = !DILocation(line: 531, column: 11, scope: !1090)
!1113 = !DILocation(line: 531, column: 25, scope: !1090)
!1114 = !DILocation(line: 35, column: 16, scope: !208, inlinedAt: !1115)
!1115 = distinct !DILocation(line: 532, column: 2, scope: !1090)
!1116 = !DILocation(line: 36, column: 2, scope: !208, inlinedAt: !1115)
!1117 = !DILocation(line: 36, column: 4, scope: !208, inlinedAt: !1115)
!1118 = !DILocation(line: 36, column: 18, scope: !208, inlinedAt: !1115)
!1119 = !DILocation(line: 42, column: 15, scope: !221, inlinedAt: !1120)
!1120 = distinct !DILocation(line: 37, column: 17, scope: !208, inlinedAt: !1115)
!1121 = !DILocation(line: 80, column: 16, scope: !229, inlinedAt: !1122)
!1122 = distinct !DILocation(line: 42, column: 14, scope: !221, inlinedAt: !1120)
!1123 = !DILocation(line: 80, column: 15, scope: !229, inlinedAt: !1122)
!1124 = distinct !DISubprogram(name: "runtime.chanRecv", linkageName: "runtime.chanRecv", scope: !492, file: !492, line: 502, type: !697, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !1125)
!1125 = !{!1126, !1127, !1128, !1129, !1130, !1131, !1132, !1133, !1134, !1135, !1136, !1137}
!1126 = !DILocalVariable(name: "ch", arg: 1, scope: !1124, file: !492, line: 502, type: !507)
!1127 = !DILocalVariable(name: "value", arg: 2, scope: !1124, file: !492, line: 502, type: !36)
!1128 = !DILocalVariable(name: "blockedlist", arg: 3, scope: !1124, file: !492, line: 502, type: !495)
!1129 = !DILocalVariable(name: "i", scope: !1124, file: !492, line: 503, type: !182)
!1130 = !DILocalVariable(name: "rx", scope: !1124, file: !492, line: 505, type: !51)
!1131 = !DILocalVariable(name: "ok", scope: !1124, file: !492, line: 505, type: !51)
!1132 = !DILocalVariable(name: "receiver", scope: !1124, file: !492, line: 519, type: !30)
!1133 = !DILocalVariable(name: "state", scope: !1124, file: !492, line: 122, type: !138)
!1134 = !DILocalVariable(name: "Ptr", scope: !1124, file: !184, line: 13, type: !36)
!1135 = !DILocalVariable(name: "Data", scope: !1124, file: !184, line: 16, type: !38)
!1136 = !DILocalVariable(name: "blocked", scope: !1124, file: !492, line: 123, type: !495)
!1137 = !DILocalVariable(name: "ok", scope: !1124, file: !492, line: 530, type: !51)
!1138 = !DILocation(line: 502, column: 6, scope: !1124)
!1139 = distinct !DISubprogram(name: "runtime.chanRecv", linkageName: "runtime.chanRecv", scope: !492, file: !492, line: 502, type: !697, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !1140)
!1140 = !{!1141, !1142, !1143, !1144, !1145, !1146, !1147, !1148, !1149, !1150, !1151, !1152}
!1141 = !DILocalVariable(name: "ch", arg: 1, scope: !1139, file: !492, line: 502, type: !507)
!1142 = !DILocalVariable(name: "value", arg: 2, scope: !1139, file: !492, line: 502, type: !36)
!1143 = !DILocalVariable(name: "blockedlist", arg: 3, scope: !1139, file: !492, line: 502, type: !495)
!1144 = !DILocalVariable(name: "i", scope: !1139, file: !492, line: 503, type: !182)
!1145 = !DILocalVariable(name: "rx", scope: !1139, file: !492, line: 505, type: !51)
!1146 = !DILocalVariable(name: "ok", scope: !1139, file: !492, line: 505, type: !51)
!1147 = !DILocalVariable(name: "receiver", scope: !1139, file: !492, line: 519, type: !30)
!1148 = !DILocalVariable(name: "state", scope: !1139, file: !492, line: 122, type: !138)
!1149 = !DILocalVariable(name: "Ptr", scope: !1139, file: !184, line: 13, type: !36)
!1150 = !DILocalVariable(name: "Data", scope: !1139, file: !184, line: 16, type: !38)
!1151 = !DILocalVariable(name: "blocked", scope: !1139, file: !492, line: 123, type: !495)
!1152 = !DILocalVariable(name: "ok", scope: !1139, file: !492, line: 530, type: !51)
!1153 = !DILocation(line: 502, column: 6, scope: !1139)
!1154 = distinct !DISubprogram(name: "main.main", linkageName: "main.main", scope: !54, file: !54, line: 12, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !127, retainedNodes: !1155)
!1155 = !{!1156}
!1156 = !DILocalVariable(name: "ready", scope: !1154, file: !54, line: 9, type: !131)
!1157 = !DILocation(line: 14, column: 9, scope: !1154)
!1158 = !DILocalVariable(name: "t", arg: 1, scope: !1159, file: !209, line: 50, type: !172)
!1159 = distinct !DISubprogram(name: "(*internal/task.Task).setReturnPtr", linkageName: "(*internal/task.Task).setReturnPtr", scope: !209, file: !209, line: 50, type: !1160, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !78, retainedNodes: !1162)
!1160 = !DISubroutineType(types: !1161)
!1161 = !{!172, !36}
!1162 = !{!1158, !1163, !1164}
!1163 = !DILocalVariable(name: "buf", arg: 2, scope: !1159, file: !209, line: 50, type: !36)
!1164 = !DILocalVariable(name: "Ptr", scope: !1159, file: !184, line: 13, type: !36)
!1165 = !DILocation(line: 50, column: 16, scope: !1159, inlinedAt: !1166)
!1166 = distinct !DILocation(line: 14, column: 9, scope: !1154)
!1167 = !DILocation(line: 52, column: 2, scope: !1159, inlinedAt: !1166)
!1168 = !DILocation(line: 52, column: 4, scope: !1159, inlinedAt: !1166)
!1169 = !DILocation(line: 35, column: 16, scope: !208, inlinedAt: !1170)
!1170 = distinct !DILocation(line: 14, column: 9, scope: !1154)
!1171 = !DILocation(line: 36, column: 2, scope: !208, inlinedAt: !1170)
!1172 = !DILocation(line: 36, column: 4, scope: !208, inlinedAt: !1170)
!1173 = !DILocation(line: 36, column: 18, scope: !208, inlinedAt: !1170)
!1174 = !DILocation(line: 37, column: 2, scope: !208, inlinedAt: !1170)
!1175 = !DILocation(line: 42, column: 15, scope: !221, inlinedAt: !1176)
!1176 = distinct !DILocation(line: 37, column: 17, scope: !208, inlinedAt: !1170)
!1177 = !DILocation(line: 80, column: 16, scope: !229, inlinedAt: !1178)
!1178 = distinct !DILocation(line: 42, column: 14, scope: !221, inlinedAt: !1176)
!1179 = !DILocation(line: 80, column: 15, scope: !229, inlinedAt: !1178)
!1180 = !DILocation(line: 52, column: 10, scope: !1159, inlinedAt: !1166)
!1181 = distinct !DISubprogram(name: "main.main", linkageName: "main.main", scope: !54, file: !54, line: 12, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !127, retainedNodes: !1182)
!1182 = !{!1183}
!1183 = !DILocalVariable(name: "ready", scope: !1181, file: !54, line: 9, type: !131)
!1184 = !DILocation(line: 14, column: 9, scope: !1181)
!1185 = distinct !DISubprogram(name: "main.main", linkageName: "main.main", scope: !54, file: !54, line: 12, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !127, retainedNodes: !1186)
!1186 = !{!1187}
!1187 = !DILocalVariable(name: "ready", scope: !1185, file: !54, line: 9, type: !131)
!1188 = !DILocation(line: 14, column: 9, scope: !1185)
!1189 = distinct !DISubprogram(name: "runtime.run$1", linkageName: "runtime.run$1", scope: !924, file: !924, line: 18, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !1190)
!1190 = !{!1191}
!1191 = !DILocalVariable(name: "schedulerDone", scope: !1189, file: !25, line: 27, type: !51)
!1192 = !DILocation(line: 21, column: 11, scope: !1189)
!1193 = !DILocation(line: 23, column: 3, scope: !1189)
!1194 = distinct !DISubprogram(name: "runtime.run$1", linkageName: "runtime.run$1", scope: !924, file: !924, line: 18, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !1195)
!1195 = !{!1196}
!1196 = !DILocalVariable(name: "schedulerDone", scope: !1194, file: !25, line: 27, type: !51)
!1197 = !DILocation(line: 21, column: 11, scope: !1194)
!1198 = distinct !DISubprogram(name: "runtime.run$1", linkageName: "runtime.run$1", scope: !924, file: !924, line: 18, type: !399, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !107, retainedNodes: !1199)
!1199 = !{!1200}
!1200 = !DILocalVariable(name: "schedulerDone", scope: !1198, file: !25, line: 27, type: !51)
!1201 = !DILocation(line: 21, column: 11, scope: !1198)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment