commit da32f7462dd58617f04a6001ee47ff303b201576
parent 1b17645cb98134ebfb3125c41f2d8ca7a8401cb8
Author: erai <erai@omiltem.net>
Date: Mon, 12 May 2025 18:44:50 -0400
add aarch64 target
Diffstat:
A | aarch64.om | | | 867 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
M | alloc.om | | | 1 | + |
M | as.om | | | 166 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------ |
M | bootstrap.sh | | | 7 | ++++--- |
M | build.sh | | | 34 | +++++++++++++++++----------------- |
M | cc0.c | | | 63159 | ++++++++++++++++++++++++++++++++++++++++++------------------------------------- |
M | cc1.om | | | 53 | +++++++++++++++++++++++++++++++++++++++++++++++++---- |
M | ir.om | | | 1 | + |
M | ircout.om | | | 8 | ++++++-- |
R | kernel.x86.om -> kernel.x86_64.om | | | 0 | |
A | syscall.aarch64.om | | | 155 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
M | syscall.om | | | 8 | ++++++++ |
D | syscall.x86.om | | | 158 | ------------------------------------------------------------------------------- |
A | syscall.x86_64.om | | | 155 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
M | test.sh | | | 19 | ++++++++++--------- |
D | x86.om | | | 1873 | ------------------------------------------------------------------------------- |
A | x86_64.om | | | 1853 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
17 files changed, 37093 insertions(+), 31424 deletions(-)
diff --git a/aarch64.om b/aarch64.om
@@ -0,0 +1,867 @@
+enum {
+ R_FP = 29,
+ R_LR = 30,
+ R_SP = 31,
+}
+
+enum {
+ COND_EQ = 0x0,
+ COND_NE = 0x1,
+ COND_GE = 0xa,
+ COND_LT = 0xb,
+ COND_GT = 0xc,
+ COND_LE = 0xd,
+}
+
+func aarch64_nop(c: *compiler) {
+ as_emit(c.s, 0x1f);
+ as_emit(c.s, 0x20);
+ as_emit(c.s, 0x03);
+ as_emit(c.s, 0xd5);
+}
+
+func aarch64_udf(c: *compiler) {
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+}
+
+func aarch64_svc(c: *compiler) {
+ as_emit(c.s, 0x01);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0xd4);
+}
+
+func aarch64_ldr(c: *compiler, rd: int, rs: int, off: int) {
+ var x: int;
+ x = (0x1f2 << 23) + (1 << 22) + ((off & 0xfff) << 10) + (rs << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_str(c: *compiler, rd: int, rs: int, off: int) {
+ var x: int;
+ x = (0x1f2 << 23) + ((off & 0xfff) << 10) + (rs << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_mov(c: *compiler, rd: int, rs: int) {
+ var x: int;
+ if rd == R_SP || rs == R_SP {
+ x = (0x122 << 23) + (rs << 5) + rd;
+ } else {
+ x = (0x154 << 23) + (rs << 16) + (0x1f << 5) + rd;
+ }
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_movz(c: *compiler, rd: int, hw: int, x: int) {
+ x = (0x1a5 << 23) + ((hw & 3) << 21) + ((x & 0xffff) << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_movk(c: *compiler, rd: int, hw: int, x: int) {
+ x = (0x1e5 << 23) + ((hw & 3) << 21) + ((x & 0xffff) << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_addi(c: *compiler, rd: int, rs: int, imm: int) {
+ var x: int;
+ if imm >= 0 {
+ if imm < 0x1000 {
+ x = 0x91000000 + ((imm & 0xfff) << 10) + (rs << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+ } else if imm < 0x1000000 {
+ x = 0x91000000 + ((imm & 0xfff) << 10) + (rs << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+ x = 0x91400000 + (((imm >> 12) & 0xfff) << 10) + (rd << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+ } else {
+ die("addi overflow");
+ }
+ } else {
+ if imm > -0x1000 {
+ imm = -imm;
+ x = 0xd1000000 + ((imm & 0xfff) << 10) + (rs << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+ } else if imm > -0x1000000 {
+ imm = -imm;
+ x = 0xd1000000 + ((imm & 0xfff) << 10) + (rs << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+ x = 0xd1400000 + (((imm >> 12) & 0xfff) << 10) + (rd << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+ } else {
+ die("subi overflow");
+ }
+ }
+}
+
+func aarch64_addr(c: *compiler, rd: int, rn: int, rm: int, imm6: int) {
+ var x: int;
+ x = (0x116 << 23) + (rm << 16) + (imm6 << 10) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_ldrb(c: *compiler, rt: int, rn: int) {
+ var x: int;
+ x = 0x39400000 + (rn << 5) + rt;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_strb(c: *compiler, rt: int, rn: int) {
+ var x: int;
+ x = 0x39000000 + (rn << 5) + rt;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_not(c: *compiler, rd: int, rm: int) {
+ var x: int;
+ x = 0xaa2003e0 + (rm << 16) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_neg(c: *compiler, rd: int, rm: int) {
+ var x: int;
+ x = 0xcb0003e0 + (rm << 16) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_sub(c: *compiler, rd: int, rn: int, rm: int) {
+ var x: int;
+ x = 0xcb000000 + (rm << 16) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_or(c: *compiler, rd: int, rn: int, rm: int) {
+ var x: int;
+ x = 0xaa000000 + (rm << 16) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_and(c: *compiler, rd: int, rn: int, rm: int) {
+ var x: int;
+ x = 0x8a000000 + (rm << 16) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_xor(c: *compiler, rd: int, rn: int, rm: int) {
+ var x: int;
+ x = 0xca000000 + (rm << 16) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_lsh(c: *compiler, rd: int, rn: int, rm: int) {
+ var x: int;
+ x = 0x9ac02000 + (rm << 16) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_rsh(c: *compiler, rd: int, rn: int, rm: int) {
+ var x: int;
+ x = 0x9ac02400 + (rm << 16) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_mul(c: *compiler, rd: int, rn: int, rm: int) {
+ var x: int;
+ x = 0x9b007c00 + (rm << 16) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_sdiv(c: *compiler, rd: int, rn: int, rm: int) {
+ var x: int;
+ x = 0x9ac00c00 + (rm << 16) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_msub(c: *compiler, rd: int, rn: int, rm: int, ra: int) {
+ var x: int;
+ x = 0x9b008000 + (rm << 16) + (ra << 10) + (rn << 5) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_cmpi(c: *compiler, rn: int, imm12: int) {
+ var x: int;
+ x = 0xf100001f + ((imm12 & 0xfff) << 10) + (rn << 5);
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_cmp(c: *compiler, rn: int, rm: int) {
+ var x: int;
+ x = 0xeb00001f + (rm << 16) + (rn << 5);
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_cset(c: *compiler, rd: int, icond: int) {
+ var x: int;
+ x = 0x9a9f07e0 + (icond << 12) + rd;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_bicond(c: *compiler, icond: int, target: *label) {
+ var x: int;
+ x = (0x54 << 24) + (2 << 5) + icond;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+ aarch64_udf(c);
+ addfixup(c.s, target, FIXUP_ARM_B);
+}
+
+func aarch64_push(c: *compiler, rs: int) {
+ aarch64_addi(c, R_SP, R_SP, -16);
+ aarch64_str(c, rs, R_SP, 0);
+}
+
+func aarch64_pop(c: *compiler, rd: int) {
+ aarch64_ldr(c, rd, R_SP, 0);
+ aarch64_addi(c, R_SP, R_SP, 16);
+}
+
+func aarch64_ret(c: *compiler) {
+ var x: int;
+ x = 0xd65f03c0;
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_jmp(c: *compiler, target: *label) {
+ reserve(c.s, 16);
+ aarch64_udf(c);
+ addfixup(c.s, target, FIXUP_ARM_B);
+}
+
+func aarch64_blr(c: *compiler, rs: int) {
+ var x: int;
+ x = 0xd63f0000 + (rs << 5);
+ as_emit(c.s, x);
+ as_emit(c.s, x >> 8);
+ as_emit(c.s, x >> 16);
+ as_emit(c.s, x >> 24);
+}
+
+func aarch64_adr(c: *compiler, target: *label) {
+ reserve(c.s, 16);
+ aarch64_udf(c);
+ aarch64_nop(c);
+ addfixup(c.s, target, FIXUP_ARM_ADR);
+}
+
+func aarch64_builtin(c: *compiler) {
+ var d: *decl;
+
+ d = find(c, "syscall", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ aarch64_mov(c, 8, 0);
+ aarch64_mov(c, 0, 1);
+ aarch64_mov(c, 1, 2);
+ aarch64_mov(c, 2, 3);
+ aarch64_mov(c, 3, 4);
+ aarch64_mov(c, 4, 5);
+ aarch64_mov(c, 5, 6);
+ aarch64_svc(c);
+ aarch64_ret(c);
+ }
+
+ d = find(c, "_restorer", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ aarch64_movz(c, 8, 0, 139);
+ aarch64_svc(c);
+ }
+}
+
+func aarch64_output_ir(c: *compiler, d: *decl) {
+ var ic: *irfunc;
+
+ ic = d.func_ir;
+
+ ic.c.filename = ic.filename;
+ ic.c.lineno = ic.lineno;
+ ic.c.colno = ic.colno;
+ ic.s.filename = ic.filename;
+ ic.s.lineno = ic.lineno;
+
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+
+ if strcmp(d.name, "_start") == 0 {
+ aarch64_ldr(c, 0, 31, 0);
+ aarch64_addi(c, 1, 31, 8);
+ aarch64_addr(c, 2, 1, 0, 3);
+ aarch64_addi(c, 2, 2, 8);
+ } else if strcmp(d.name, "_kstart") == 0 {
+ die("unimplemented kstart on arm");
+ }
+
+ // Allocate local variables
+ aarch64_output_irvars(c, ic);
+
+ // Output all blocks
+ aarch64_output_irblock(c, ic, ic.blocks[0]);
+
+ // Clear the marks
+ irreset(ic.blocks[0]);
+}
+
+func aarch64_output_irvars(c: *compiler, ic: *irfunc) {
+ var offset: int;
+ var total: int;
+ var size: int;
+ var i: int;
+ var j: int;
+ var v: *irvar;
+
+ // Allocate local variables
+ offset = 16;
+ i = 0;
+ loop {
+ if i == ic.vars_len {
+ break;
+ }
+
+ v = ic.vars[i];
+
+ if v.dead {
+ i = i + 1;
+ continue;
+ }
+
+ if v.t && v.t.kind != TY_VOID {
+ size = type_sizeof(ic.c, v.t);
+ } else {
+ size = sizeof(i);
+ }
+
+ size = (size + 7) & -8;
+
+ v.offset = offset;
+
+ offset = offset + size;
+ i = i + 1;
+ }
+
+ offset = (offset + 15) & -16;
+ total = offset;
+ ic.frame_size = total;
+
+ // Setup the frame
+ aarch64_addi(c, R_SP, R_SP, -total);
+ aarch64_str(c, R_FP, R_SP, 0);
+ aarch64_str(c, R_LR, R_SP, 1);
+ aarch64_mov(c, R_FP, R_SP);
+
+ // Zero initialize local variables
+ aarch64_movz(c, 16, 0, 0);
+ offset = 16;
+ i = 0;
+ loop {
+ if i == ic.vars_len {
+ break;
+ }
+
+ v = ic.vars[i];
+
+ if v.dead {
+ i = i + 1;
+ continue;
+ }
+
+ if v.t && v.t.kind != TY_VOID {
+ size = type_sizeof(ic.c, v.t);
+ } else {
+ size = sizeof(i);
+ }
+
+ size = (size + 7) & -8;
+
+ if i < ic.arg_count && i < 8 {
+ aarch64_str(c, i, R_FP, offset >> 3);
+ } else if i < ic.arg_count {
+ aarch64_ldr(c, 17, 29, (total >> 3) + (i - 8));
+ aarch64_str(c, 17, 31, offset >> 3);
+ } else {
+ j = 0;
+ loop {
+ if j >= size {
+ break;
+ }
+ aarch64_str(c, 16, R_FP, (offset + j) >> 3);
+ j = j + 8;
+ }
+ }
+
+ offset = offset + size;
+ i = i + 1;
+ }
+
+}
+
+func aarch64_output_irblock(c: *compiler, ic: *irfunc, b: *irblock) {
+ var op: *irop;
+ var i: int;
+
+ b.mark = 1;
+
+ if !b.done {
+ cdie(ic.c, "no return in function");
+ }
+
+ fixup_label(ic.s, b.label);
+
+ i = 0;
+ loop {
+ if i == b.ops_len {
+ break;
+ }
+
+ op = b.ops[i];
+
+ aarch64_output_irstmt(c, ic, b, op);
+
+ i = i + 1;
+ }
+}
+
+func aarch64_output_irstmt(c: *compiler, ic: *irfunc, b: *irblock, o: *irop) {
+ var kind: int;
+
+ ic.c.filename = o.filename;
+ ic.c.lineno = o.lineno;
+ ic.c.colno = o.colno;
+ ic.s.filename = o.filename;
+ ic.s.lineno = o.lineno;
+
+ kind = o.kind;
+ if kind == IOP_STORE {
+ // Evaluate the address
+ if o.a.kind == IOP_LOAD {
+ aarch64_output_irexpr(c, ic, b, o.a.a);
+ } else if o.a.kind == IOP_VAR {
+ aarch64_addi(c, 16, R_FP, ic.vars[o.a.n].offset);
+ } else {
+ die("invalid store");
+ }
+
+ aarch64_push(c, 16);
+
+ // Evaluate the value
+ aarch64_output_irexpr(c, ic, b, o.b);
+
+ aarch64_pop(c, 17);
+
+ // Execute the store
+ if o.t.kind == TY_BYTE {
+ aarch64_strb(c, 16, 17);
+ } else if type_isprim(o.t) {
+ aarch64_str(c, 16, 17, 0);
+ } else {
+ cdie(ic.c, "invalid store");
+ }
+ } else if kind == IOP_RETVAL {
+ // Do nothing
+ } else if kind == IOP_ARG {
+ // Do nothing
+ } else if kind == IOP_CALL {
+ // Allocate some space for the arguments
+ if o.n > 8 {
+ aarch64_addi(c, R_SP, R_SP, -((o.n + 1) & -2) * sizeof(kind));
+ }
+
+ // Setup arguments
+ aarch64_output_irargs(c, ic, b, o);
+
+ // Call the function
+ aarch64_output_ircall(c, ic, b, o.a);
+
+ // Release space reserved for the arguments
+ if o.n > 8 {
+ aarch64_addi(c, R_SP, R_SP, ((o.n + 1) & -2) * sizeof(kind));
+ }
+
+ // Save the return value
+ aarch64_output_irretval(c, ic, b, o);
+
+ if b.out.mark {
+ aarch64_jmp(c, b.out.label);
+ } else {
+ aarch64_output_irblock(c, ic, b.out);
+ }
+ return;
+ } else if kind == IOP_JUMP {
+ if b.out.mark {
+ // Jump to an already output block
+ aarch64_jmp(c, b.out.label);
+ } else {
+ // Output a new block
+ aarch64_output_irblock(c, ic, b.out);
+ }
+ return;
+ } else if kind == IOP_BRANCH {
+ // Evaluate the condition and branch if zero
+ aarch64_output_irexpr(c, ic, b, o.a);
+
+ aarch64_cmpi(c, 16, 0);
+ aarch64_bicond(c, COND_NE, b.alt.label);
+
+ // Then jump to the output
+ if b.out.mark {
+ aarch64_jmp(c, b.out.label);
+ } else {
+ aarch64_output_irblock(c, ic, b.out);
+ }
+
+ // And if we haven't already, output the alt branch
+ if !b.alt.mark {
+ aarch64_output_irblock(c, ic, b.alt);
+ }
+
+ return;
+ } else if kind == IOP_RETURN {
+ // Evaluate the return expression and return
+ if o.a {
+ aarch64_output_irexpr(c, ic, b, o.a);
+ }
+
+ aarch64_mov(c, 0, 16);
+ aarch64_ldr(c, R_LR, R_FP, 1);
+ aarch64_ldr(c, R_FP, R_FP, 0);
+ aarch64_addi(c, R_SP, R_SP, ic.frame_size);
+ aarch64_ret(c);
+ } else {
+ // Evaluate and discard the result
+ aarch64_output_irexpr(c, ic, b, o);
+ }
+}
+
+func aarch64_output_irargs(c: *compiler, ic: *irfunc, b: *irblock, o: *irop) {
+ var i: int;
+ var op: *irop;
+
+ i = 0;
+ loop {
+ if i == b.ops_len {
+ return;
+ }
+
+ op = b.ops[i];
+ if op.kind == IOP_ARG {
+ // Compute the value
+ aarch64_output_irexpr(c, ic, b, op.a);
+
+ if op.n < 8 {
+ aarch64_mov(c, op.n, 16);
+ } else {
+ // Stack argument
+ aarch64_str(c, 16, R_SP, op.n - 8);
+ }
+ }
+
+ i = i + 1;
+ }
+}
+
+func aarch64_output_irretval(c: *compiler, ic: *irfunc, b: *irblock, o: *irop) {
+ var i: int;
+ var op: *irop;
+
+ // Find the retval place
+ op = nil;
+ i = 0;
+ loop {
+ if i == b.ops_len {
+ return;
+ }
+
+ op = b.ops[i];
+ if op.kind == IOP_RETVAL {
+ break;
+ }
+
+ i = i + 1;
+ }
+
+ // Do nothing if there was no return value
+ if op.t.kind == TY_VOID {
+ return;
+ }
+
+ // Compute the address
+ if op.a.kind == IOP_LOAD {
+ aarch64_output_irexpr(c, ic, b, op.a.a);
+ } else if op.a.kind == IOP_VAR {
+ aarch64_addi(c, 16, R_FP, ic.vars[op.a.n].offset);
+ } else {
+ die("invalid store");
+ }
+
+ // Execute the store
+ if op.t.kind == TY_BYTE {
+ aarch64_strb(c, 0, 16);
+ } else if type_isprim(op.t) {
+ aarch64_str(c, 0, 16, 0);
+ } else {
+ cdie(ic.c, "invalid store");
+ }
+}
+
+func aarch64_output_irstr(c: *compiler, ic: *irfunc, b: *irblock, o: *irop) {
+ var s: *label;
+ s = as_blob(ic.s, o.s, o.slen + 1);
+ aarch64_adr(c, s);
+}
+
+func aarch64_output_irfuncptr(c: *compiler, ic: *irfunc, b: *irblock, o: *irop) {
+ var d: *decl;
+ d = find(ic.c, o.s, nil, 0);
+ if !d || !d.func_defined {
+ cdie(ic.c, "no such function");
+ }
+ aarch64_adr(c, d.func_label);
+}
+
+func aarch64_output_ircall(c: *compiler, ic: *irfunc, b: *irblock, o: *irop) {
+ aarch64_output_irexpr(c, ic, b, o);
+ aarch64_blr(c, 16);
+}
+
+func aarch64_output_irexpr(c: *compiler, ic: *irfunc, b: *irblock, o: *irop) {
+ var kind: int;
+
+ if !o {
+ cdie(ic.c, "no expr");
+ }
+
+ kind = o.kind;
+ if kind == IOP_VAR {
+ aarch64_ldr(c, 16, R_FP, ic.vars[o.n].offset >> 3);
+ } else if kind == IOP_VARREF {
+ aarch64_addi(c, 16, R_FP, ic.vars[o.n].offset);
+ } else if kind == IOP_FUNC {
+ aarch64_output_irfuncptr(c, ic, b, o);
+ } else if kind == IOP_CONST {
+ aarch64_movz(c, 16, 0, o.n);
+ if o.n < 0 || o.n >= (1 << 16) {
+ aarch64_movk(c, 16, 1, o.n >> 16);
+ }
+ if o.n < 0 || o.n >= (1 << 32) {
+ aarch64_movk(c, 16, 2, o.n >> 32);
+ }
+ if o.n < 0 || o.n >= (1 << 48) {
+ aarch64_movk(c, 16, 3, o.n >> 48);
+ }
+ } else if kind == IOP_STR {
+ aarch64_output_irstr(c, ic, b, o);
+ } else if kind == IOP_LOAD {
+ aarch64_output_irexpr(c, ic, b, o.a);
+ if o.t.kind == TY_BYTE {
+ aarch64_ldrb(c, 16, 16);
+ } else if type_isprim(o.t) {
+ aarch64_ldr(c, 16, 16, 0);
+ } else {
+ cdie(ic.c, "invalid load");
+ }
+ } else if kind == IOP_NEG {
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_neg(c, 16, 16);
+ } else if kind == IOP_NOT {
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_not(c, 16, 16);
+ } else if kind == IOP_ADD {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_addr(c, 16, 17, 16, 0);
+ } else if kind == IOP_AND {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_and(c, 16, 17, 16);
+ } else if kind == IOP_OR {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_or(c, 16, 17, 16);
+ } else if kind == IOP_XOR {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_xor(c, 16, 17, 16);
+ } else if kind == IOP_DIV {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_sdiv(c, 16, 16, 17);
+ } else if kind == IOP_MOD {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_sdiv(c, 9, 16, 17);
+ aarch64_msub(c, 16, 9, 17, 16);
+ } else if kind == IOP_LSH {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_lsh(c, 16, 16, 17);
+ } else if kind == IOP_RSH {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_rsh(c, 16, 16, 17);
+ } else if kind == IOP_MUL {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_mul(c, 16, 17, 16);
+ } else if kind == IOP_SUB {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_sub(c, 16, 16, 17);
+ } else if kind == IOP_EQ {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_cmp(c, 16, 17);
+ aarch64_cset(c, 16, COND_NE);
+ } else if kind == IOP_NE {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_cmp(c, 16, 17);
+ aarch64_cset(c, 16, COND_EQ);
+ } else if kind == IOP_GT {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_cmp(c, 16, 17);
+ aarch64_cset(c, 16, COND_LE);
+ } else if kind == IOP_GE {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_cmp(c, 16, 17);
+ aarch64_cset(c, 16, COND_LT);
+ } else if kind == IOP_LT {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_cmp(c, 16, 17);
+ aarch64_cset(c, 16, COND_GE);
+ } else if kind == IOP_LE {
+ aarch64_output_irexpr(c, ic, b, o.b);
+ aarch64_push(c, 16);
+ aarch64_output_irexpr(c, ic, b, o.a);
+ aarch64_pop(c, 17);
+ aarch64_cmp(c, 16, 17);
+ aarch64_cset(c, 16, COND_GT);
+ } else {
+ cdie(ic.c, "invalid op");
+ }
+}
diff --git a/alloc.om b/alloc.om
@@ -20,6 +20,7 @@ func assert_zero(b: *byte, size: int) {
break;
}
if b[i] {
+ fxxd(nil, b, size);
die("HEAP CORRUPTION");
}
i = i + 1;
diff --git a/as.om b/as.om
@@ -1,8 +1,11 @@
func setup_machdep_x86(c: *compiler);
struct fixup {
+ kind: int;
next: *fixup;
+ label: *label;
ptr: *byte;
+ fill: int;
at: int;
}
@@ -65,6 +68,12 @@ struct symbol {
name_offset: int;
}
+enum {
+ FIXUP_DISP32 = 0,
+ FIXUP_ARM_B = 1,
+ FIXUP_ARM_ADR = 2,
+}
+
func setup_assembler(a: *alloc): *assembler {
var c: *assembler;
c = alloc(a, sizeof(*c)) as *assembler;
@@ -88,7 +97,7 @@ func add_section(c: *assembler, name: *byte, type: int) {
end = c.at;
- emit_align(c, 16, OP_NOP);
+ emit_align(c, 16, 0);
s = alloc(c.a, sizeof(*s)) as *section;
@@ -238,35 +247,97 @@ func emit(c: *assembler, x: int) {
c.at = c.at + 1;
}
-// Fix a single reference
-func fixup(c: *assembler, here: *byte, delta: int) {
- here[0] = delta as byte;
- here[1] = (delta >> 8) as byte;
- here[2] = (delta >> 16) as byte;
- here[3] = (delta >> 24) as byte;
-}
-
-// Add an new fixup for the current position
-func addfixup(c: *assembler, l: *label) {
- var f: *fixup;
+func fixup(c: *assembler, f: *fixup) {
+ var disp: int;
+ var x: int;
var here: *byte;
+ var rd: int;
- if (c.text_end.fill < 4) {
- die("invalid fixup");
- }
+ rd = 16;
+ if f.kind == FIXUP_DISP32 {
+ if f.fill < 4 {
+ die("truncated fixup");
+ }
- here = &c.text_end.buf[c.text_end.fill - 4];
+ here = &f.ptr[-4];
- if (l.fixed) {
- fixup(c, here, l.at - c.at);
- } else {
- f = alloc(c.a, sizeof(*f)) as *fixup;
+ disp = f.label.at - f.at;
+
+ here[0] = disp as byte;
+ here[1] = (disp >> 8) as byte;
+ here[2] = (disp >> 16) as byte;
+ here[3] = (disp >> 24) as byte;
+ } else if f.kind == FIXUP_ARM_B {
+ if f.fill < 4 {
+ die("truncated fixup");
+ }
- f.next = l.fix;
- f.ptr = here;
- f.at = c.at;
+ disp = f.label.at - (f.at - 4);
+ if disp < -(1 << 25) || disp >= (1 << 25) {
+ die("fixup overflow");
+ }
+
+ x = (5 << 26) + ((disp >> 2) & ((1 << 26) - 1));
+
+ here = &f.ptr[-4];
+ here[0] = x as byte;
+ here[1] = (x >> 8) as byte;
+ here[2] = (x >> 16) as byte;
+ here[3] = (x >> 24) as byte;
+ } else if f.kind == FIXUP_ARM_ADR {
+ if f.fill < 8 {
+ die("truncated fixup");
+ }
+ here = &f.ptr[-8];
+
+ disp = f.label.at - (f.at - 8);
+ if disp >= -(1 << 21) && disp < (1 << 21) && 0 {
+ x = ((disp & 3) << 29) + (1 << 28) + (((disp >> 2) & ((1 << 19) - 1)) << 5) + rd;
+ here[0] = x as byte;
+ here[1] = (x >> 8) as byte;
+ here[2] = (x >> 16) as byte;
+ here[3] = (x >> 24) as byte;
+
+ x = 0xd503201f;
+ here[4] = x as byte;
+ here[5] = (x >> 8) as byte;
+ here[6] = (x >> 16) as byte;
+ here[7] = (x >> 24) as byte;
+ } else if disp >= -(1 << 33) && disp < (1 << 33) {
+ disp = (f.label.at & -4096) - ((f.at - 8) & -4096);
+ x = (1 << 31) + (((disp >> 12) & 3) << 29) + (1 << 28) + (((disp >> 14) & ((1 << 19) - 1)) << 5) + rd;
+ here[0] = x as byte;
+ here[1] = (x >> 8) as byte;
+ here[2] = (x >> 16) as byte;
+ here[3] = (x >> 24) as byte;
+
+ disp = f.label.at;
+ x = (0x122 << 23) + ((disp & 0xfff) << 10) + (rd << 5) + rd;
+ here[4] = x as byte;
+ here[5] = (x >> 8) as byte;
+ here[6] = (x >> 16) as byte;
+ here[7] = (x >> 24) as byte;
+ } else {
+ die("fixup overflow");
+ }
+ } else {
+ die("invalid fixup");
+ }
+}
- l.fix = f;
+// Add an new fixup for the current position
+func addfixup(c: *assembler, l: *label, kind: int) {
+ var f: *fixup;
+ f = alloc(c.a, sizeof(*f)) as *fixup;
+ f.label = l;
+ f.kind = kind;
+ f.next = l.fix;
+ f.ptr = &c.text_end.buf[c.text_end.fill];
+ f.fill = c.text_end.fill;
+ f.at = c.at;
+ l.fix = f;
+ if (l.fixed) {
+ fixup(c, f);
}
}
@@ -286,7 +357,7 @@ func fixup_label(c: *assembler, l: *label) {
if (!f) {
break;
}
- fixup(c, f.ptr, l.at - f.at);
+ fixup(c, f);
f = f.next;
}
}
@@ -415,7 +486,7 @@ func emit_sections(c: *assembler): int {
here = c.at;
- emit_align(c, 4096, OP_NOP);
+ emit_align(c, 4096, 0);
add_section(c, ".rodata", SHT_PROGBITS);
@@ -528,7 +599,7 @@ func emit_sections(c: *assembler): int {
s = find_section(c, ".shstrtab");
s.end = c.at;
- emit_align(c, 16, OP_NOP);
+ emit_align(c, 16, 0);
at = c.at;
@@ -651,7 +722,7 @@ func emit_sections(c: *assembler): int {
return at;
}
-func writeout(c: *assembler, start: *label, kstart: *label) {
+func writeout(c: *assembler, machine: int, start: *label, kstart: *label) {
var b: *chunk;
var i: int;
var text_size: int;
@@ -732,7 +803,7 @@ func writeout(c: *assembler, start: *label, kstart: *label) {
putchar(c, 0);
// machine
- putchar(c, 62);
+ putchar(c, machine);
putchar(c, 0);
// version
@@ -924,14 +995,14 @@ func writeout(c: *assembler, start: *label, kstart: *label) {
putchar(c, kentry >> 24);
// nop sled
- putchar(c, OP_NOP);
- putchar(c, OP_NOP);
- putchar(c, OP_NOP);
- putchar(c, OP_NOP);
- putchar(c, OP_NOP);
- putchar(c, OP_NOP);
- putchar(c, OP_NOP);
- putchar(c, OP_NOP);
+ putchar(c, 0);
+ putchar(c, 0);
+ putchar(c, 0);
+ putchar(c, 0);
+ putchar(c, 0);
+ putchar(c, 0);
+ putchar(c, 0);
+ putchar(c, 0);
b = c.text;
loop {
@@ -959,3 +1030,24 @@ func writeout(c: *assembler, start: *label, kstart: *label) {
func as_emit(a: *assembler, b: int) {
emit(a, b);
}
+
+func emit_align(c: *assembler, n: int, b: int) {
+ var pad: int;
+
+ pad = c.at & (n - 1);
+
+ if pad == 0 {
+ return;
+ }
+
+ loop {
+ if pad == n {
+ break;
+ }
+
+ as_emit(c, b);
+
+ pad = pad + 1;
+ }
+}
+
diff --git a/bootstrap.sh b/bootstrap.sh
@@ -1,12 +1,13 @@
#!/bin/sh
+MACHINE="$(uname -m)"
BOOTSTRAP="cc0.c"
-LIBS="bufio.om lib.om alloc.om syscall.om"
-SOURCES="cc1.om cc4.om type.om as.om decl.om node.om ir.om ircout.om rb.om table.om lexer.om lalr.om x86.om syscall.x86.om"
+LIBS="bufio.om lib.om alloc.om syscall.om syscall.${MACHINE}.om"
+SOURCES="cc1.om cc4.om type.om as.om decl.om node.om ir.om ircout.om rb.om table.om lexer.om lalr.om aarch64.om x86_64.om"
# Build the bootstrap compiler from c
[ cc0 -nt cc0.c ] || ${CC:-gcc} -std=c89 -O1 -g ${BOOTSTRAP} -o cc0
-./cc0 ${LIBS} ${SOURCES} -o cc1 -n cc1.lines -G cc1.call
+./cc0 -m ${MACHINE} ${LIBS} ${SOURCES} -o cc1 -n cc1.lines -G cc1.call
# Double check the bootstrap and self hosting compiler have the same output
./cc1 ${LIBS} ${SOURCES} -C cc2.c -o cc2 -n cc2.lines -G cc2.call
diff --git a/build.sh b/build.sh
@@ -1,26 +1,26 @@
#!/bin/sh
-LIBS="bufio.om lib.om alloc.om syscall.om syscall.x86.om"
+MACHINE="$(uname -m)"
+LIBS="bufio.om lib.om alloc.om syscall.om syscall.${MACHINE}.om"
CRYPTO="ed25519.om sha512.om sha256.om chacha20.om poly1305.om aes.om rsa.om"
CC="cc1.om type.om as.om decl.om node.om"
SSHD="chacha20.om poly1305.om sha256.om sha512.om ed25519.om sshd.om"
-KERNEL="kernel.x86.om"
SHELL="echo.om cmp.om rm.om ls.om cat.om xxd.om mv.om mkdir.om cpio.om sh.om"
BIN="echo cmp rm ls cat xxd mv mkdir cpio sh sshd init cc1 build.sh cc4.om"
-ALL="${LIBS} ${CC} ${SSHD} ${KERNEL} ${SHELL} ${BIN}"
-./cc1 ${LIBS} echo.om -o echo -n echo.lines -G echo.call
-./cc1 ${LIBS} cmp.om -o cmp -n cmp.lines -G cmp.call
-./cc1 ${LIBS} rm.om -o rm -n rm.lines -G rm.call
-./cc1 ${LIBS} mv.om -o mv -n mv.lines -G mv.call
-./cc1 ${LIBS} mkdir.om -o mkdir -n mkdir.lines -G mkdir.call
-./cc1 ${LIBS} ls.om -o ls -n ls.lines -G ls.call
-./cc1 ${LIBS} cat.om -o cat -n cat.lines -G cat.call
-./cc1 ${LIBS} xxd.om -o xxd -n xxd.lines -G xxd.call
-./cc1 ${LIBS} cpio.om -o cpio -n cpio.lines -G cpio.call
-./cc1 ${LIBS} sh.om -o sh -n sh.lines -G sh.call
-./cc1 ${LIBS} ${CRYPTO} sshd.om -o sshd -n sshd.lines -G sshd.call
+./cc1 -m ${MACHINE} ${LIBS} echo.om -o echo -n echo.lines -G echo.call
+./cc1 -m ${MACHINE} ${LIBS} cmp.om -o cmp -n cmp.lines -G cmp.call
+./cc1 -m ${MACHINE} ${LIBS} rm.om -o rm -n rm.lines -G rm.call
+./cc1 -m ${MACHINE} ${LIBS} mv.om -o mv -n mv.lines -G mv.call
+./cc1 -m ${MACHINE} ${LIBS} mkdir.om -o mkdir -n mkdir.lines -G mkdir.call
+./cc1 -m ${MACHINE} ${LIBS} ls.om -o ls -n ls.lines -G ls.call
+./cc1 -m ${MACHINE} ${LIBS} cat.om -o cat -n cat.lines -G cat.call
+./cc1 -m ${MACHINE} ${LIBS} xxd.om -o xxd -n xxd.lines -G xxd.call
+./cc1 -m ${MACHINE} ${LIBS} cpio.om -o cpio -n cpio.lines -G cpio.call
+./cc1 -m ${MACHINE} ${LIBS} sh.om -o sh -n sh.lines -G sh.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} sshd.om -o sshd -n sshd.lines -G sshd.call
-for name in ${ALL}; do echo ${name}; done | ./cpio -o > initramfs
-
-./cc1 kernel.x86.om -o kernel -n kernel.lines -G kernel.call
+if [ "${MACHINE}" = "x86_64" ]; then
+ for name in ${BIN}; do echo ${name}; done | ./cpio -o > initramfs
+ ./cc1 -m ${MACHINE} kernel.x86_64.om -o kernel.x86_64 -n kernel.x86_64.lines -G kernel.x86_64.call
+fi
diff --git a/cc0.c b/cc0.c
@@ -2,6 +2,50 @@ typedef unsigned char b;
typedef unsigned long u;
typedef long s;
u z_start();
+u zaarch64_addi();
+u zaarch64_addr();
+u zaarch64_adr();
+u zaarch64_and();
+u zaarch64_bicond();
+u zaarch64_blr();
+u zaarch64_builtin();
+u zaarch64_cmp();
+u zaarch64_cmpi();
+u zaarch64_cset();
+u zaarch64_jmp();
+u zaarch64_ldr();
+u zaarch64_ldrb();
+u zaarch64_lsh();
+u zaarch64_mov();
+u zaarch64_movk();
+u zaarch64_movz();
+u zaarch64_msub();
+u zaarch64_mul();
+u zaarch64_neg();
+u zaarch64_nop();
+u zaarch64_not();
+u zaarch64_or();
+u zaarch64_output_ir();
+u zaarch64_output_irargs();
+u zaarch64_output_irblock();
+u zaarch64_output_ircall();
+u zaarch64_output_irexpr();
+u zaarch64_output_irfuncptr();
+u zaarch64_output_irretval();
+u zaarch64_output_irstmt();
+u zaarch64_output_irstr();
+u zaarch64_output_irvars();
+u zaarch64_pop();
+u zaarch64_push();
+u zaarch64_ret();
+u zaarch64_rsh();
+u zaarch64_sdiv();
+u zaarch64_str();
+u zaarch64_strb();
+u zaarch64_sub();
+u zaarch64_svc();
+u zaarch64_udf();
+u zaarch64_xor();
u zadd_section();
u zadd_symbol();
u zaddfixup();
@@ -9,17 +53,6 @@ u zalloc();
u zargs_to_ir();
u zas_blob();
u zas_emit();
-u zas_jmp();
-u zas_modm();
-u zas_modr();
-u zas_modra();
-u zas_modri();
-u zas_modrm();
-u zas_modrr();
-u zas_op();
-u zas_opr();
-u zas_opri64();
-u zas_rex();
u zassert();
u zassert_zero();
u zcall_check();
@@ -53,12 +86,8 @@ u zdolalr();
u zemit();
u zemit_align();
u zemit_blobs();
-u zemit_builtin();
u zemit_hook();
-u zemit_isr();
-u zemit_kstart();
u zemit_sections();
-u zemit_ssr();
u zemit_strtab_str();
u zensure_arr();
u zexit();
@@ -76,11 +105,13 @@ u zfputh();
u zfputs();
u zfree();
u zfunc_to_ir();
+u zfxxd();
u zgather_include();
u zget_act_table();
u zget_call_table();
u zget_goto_table();
u zget_link_table();
+u zget_machine();
u zget_num_states();
u zget_pos_table();
u zget_prod_len();
@@ -427,16 +458,6 @@ u zopen_coutput();
u zopen_lex();
u zopen_lines_out();
u zopen_output();
-u zoutput_ir();
-u zoutput_irargs();
-u zoutput_irblock();
-u zoutput_ircall();
-u zoutput_irexpr();
-u zoutput_irfuncptr();
-u zoutput_irretval();
-u zoutput_irstmt();
-u zoutput_irstr();
-u zoutput_irvars();
u zparse_charset();
u zprototype();
u zputchar();
@@ -466,6 +487,32 @@ u zunify();
u zunlink();
u zwrite();
u zwriteout();
+u zx86_64_builtin();
+u zx86_64_isr();
+u zx86_64_jmp();
+u zx86_64_kstart();
+u zx86_64_modm();
+u zx86_64_modr();
+u zx86_64_modra();
+u zx86_64_modri();
+u zx86_64_modrm();
+u zx86_64_modrr();
+u zx86_64_op();
+u zx86_64_opr();
+u zx86_64_opri64();
+u zx86_64_output_ir();
+u zx86_64_output_irargs();
+u zx86_64_output_irblock();
+u zx86_64_output_ircall();
+u zx86_64_output_irexpr();
+u zx86_64_output_irfuncptr();
+u zx86_64_output_irretval();
+u zx86_64_output_irstmt();
+u zx86_64_output_irstr();
+u zx86_64_output_irvars();
+u zx86_64_rex();
+u zx86_64_ssr();
+u zxxd_line();
extern u syscall();
extern void exit();
extern s read();
@@ -479,77 +526,8 @@ int main(int argc, char**argv) {
return zmain((u)argc, (u)argv, (u)environ);
}
/* no glue for _start using stdlib */
-u zadd_section(u vc, u vname, u vtype) {
- u vs = 0;
- u vn = 0;
- u vend = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- vend = *(u*)(vc + 24UL);
- v6 = (u)zemit_align;
- v7 = vc;
- v8 = 16UL;
- v9 = 144UL;
- v10 = ((u(*)())v6)(v7, v8, v9);
- v10;
- v11 = (u)zalloc;
- v12 = *(u*)(vc + 0UL);
- v13 = 72UL;
- v14 = ((u(*)())v11)(v12, v13);
- vs = v14;
- *(u*)(vs + 0UL) = 0UL;
- *(u*)(vs + 8UL) = vname;
- *(u*)(vs + 16UL) = *(u*)(vc + 24UL);
- *(u*)(vs + 24UL) = *(u*)(vc + 24UL);
- *(u*)(vs + 32UL) = *(u*)(vc + 72UL);
- *(u*)(vs + 48UL) = vtype;
- *(u*)(vs + 56UL) = 0UL;
- *(u*)(vs + 64UL) = 0UL;
- vn = *(u*)(vc + 64UL);
- if (!vn) goto b5;
-b6: if (!*(u*)(vn + 0UL)) goto b12;
- v15 = 0UL;
-b13: if (!v15) goto b10;
- *(u*)(vn + 24UL) = vend;
- *(u*)(vn + 0UL) = vs;
-b3: *(u*)(vc + 72UL) = *(u*)(vc + 72UL) + 1UL;
- return 0UL;
-b10: vn = *(u*)(vn + 0UL);
- goto b6;
-b12: v15 = 1UL;
- goto b13;
-b5: *(u*)(vc + 64UL) = vs;
- goto b3;
-}
-u zadd_symbol(u vc, u vname, u vl) {
- u vs = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- v4 = (u)zalloc;
- v5 = *(u*)(vc + 0UL);
- v6 = 32UL;
- v7 = ((u(*)())v4)(v5, v6);
- vs = v7;
- *(u*)(vs + 0UL) = *(u*)(vc + 56UL);
- *(u*)(vs + 8UL) = vname;
- *(u*)(vs + 16UL) = vl;
- *(u*)(vc + 56UL) = vs;
- return 0UL;
-}
-u zaddfixup(u vc, u vl) {
- u vf = 0;
- u vhere = 0;
- u v4 = 0;
+u zaarch64_addi(u vc, u vrd, u vrs, u vimm) {
+ u vx = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -561,47 +539,6 @@ u zaddfixup(u vc, u vl) {
u v13 = 0;
u v14 = 0;
u v15 = 0;
- if ((s)*(u*)(*(u*)(vc + 40UL) + 16UL) >= (s)4UL) goto b3;
- v4 = (u)zdie;
- v5 = (u)"invalid fixup";
- v6 = ((u(*)())v4)(v5);
- v6;
-b1: vhere = *(u*)(*(u*)(vc + 40UL) + 8UL) + (*(u*)(*(u*)(vc + 40UL) + 16UL) - 4UL) * 1UL;
- if (!*(u*)(vl + 16UL)) goto b7;
- v7 = (u)zfixup;
- v8 = vc;
- v9 = vhere;
- v10 = *(u*)(vl + 8UL) - *(u*)(vc + 24UL);
- v11 = ((u(*)())v7)(v8, v9, v10);
- v11;
-b5: return 0UL;
-b7: v12 = (u)zalloc;
- v13 = *(u*)(vc + 0UL);
- v14 = 24UL;
- v15 = ((u(*)())v12)(v13, v14);
- vf = v15;
- *(u*)(vf + 0UL) = *(u*)(vl + 0UL);
- *(u*)(vf + 8UL) = vhere;
- *(u*)(vf + 16UL) = *(u*)(vc + 24UL);
- *(u*)(vl + 0UL) = vf;
- goto b5;
-b3: goto b1;
-}
-u zalloc(u vc, u vsize) {
- u vpage = 0;
- u vmret = 0;
- u vret = 0;
- u vpsize = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
u v16 = 0;
u v17 = 0;
u v18 = 0;
@@ -629,84 +566,262 @@ u zalloc(u vc, u vsize) {
u v40 = 0;
u v41 = 0;
u v42 = 0;
- if ((s)vsize >= (s)0UL) goto b3;
- v6 = (u)zdie;
- v7 = (u)"invalid alloc";
- v8 = ((u(*)())v6)(v7);
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ if ((s)(vimm) < (s)0UL) goto b3;
+ if ((s)(vimm) >= (s)4096UL) goto b6;
+ vx = ((2432696320UL + ((vimm & 4095UL) << 10UL)) + (vrs << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
v8;
-b1: if (vsize != 0UL) goto b7;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+b4:b1: return 0UL;
+b6: if ((s)(vimm) >= (s)16777216UL) goto b12;
+ vx = ((2432696320UL + ((vimm & 4095UL) << 10UL)) + (vrs << 5UL)) + vrd;
+ v21 = (u)zas_emit;
+ v22 = *(u*)(vc + 48UL);
+ v23 = vx;
+ v24 = ((u(*)())(v21))(v22, v23);
+ v24;
+ v25 = (u)zas_emit;
+ v26 = *(u*)(vc + 48UL);
+ v27 = vx >> 8UL;
+ v28 = ((u(*)())(v25))(v26, v27);
+ v28;
+ v29 = (u)zas_emit;
+ v30 = *(u*)(vc + 48UL);
+ v31 = vx >> 16UL;
+ v32 = ((u(*)())(v29))(v30, v31);
+ v32;
+ v33 = (u)zas_emit;
+ v34 = *(u*)(vc + 48UL);
+ v35 = vx >> 24UL;
+ v36 = ((u(*)())(v33))(v34, v35);
+ v36;
+ vx = ((2436890624UL + ((vimm >> 12UL & 4095UL) << 10UL)) + (vrd << 5UL)) + vrd;
+ v37 = (u)zas_emit;
+ v38 = *(u*)(vc + 48UL);
+ v39 = vx;
+ v40 = ((u(*)())(v37))(v38, v39);
+ v40;
+ v41 = (u)zas_emit;
+ v42 = *(u*)(vc + 48UL);
+ v43 = vx >> 8UL;
+ v44 = ((u(*)())(v41))(v42, v43);
+ v44;
+ v45 = (u)zas_emit;
+ v46 = *(u*)(vc + 48UL);
+ v47 = vx >> 16UL;
+ v48 = ((u(*)())(v45))(v46, v47);
+ v48;
+ v49 = (u)zas_emit;
+ v50 = *(u*)(vc + 48UL);
+ v51 = vx >> 24UL;
+ v52 = ((u(*)())(v49))(v50, v51);
+ v52;
+ goto b4;
+b12: v53 = (u)zdie;
+ v54 = (u)"addi overflow";
+ v55 = ((u(*)())(v53))(v54);
+ v55;
+ goto b4;
+b3: if ((s)(vimm) <= (s)(-4096UL)) goto b24;
+ vimm = -(vimm);
+ vx = ((3506438144UL + ((vimm & 4095UL) << 10UL)) + (vrs << 5UL)) + vrd;
+ v56 = (u)zas_emit;
+ v57 = *(u*)(vc + 48UL);
+ v58 = vx;
+ v59 = ((u(*)())(v56))(v57, v58);
+ v59;
+ v60 = (u)zas_emit;
+ v61 = *(u*)(vc + 48UL);
+ v62 = vx >> 8UL;
+ v63 = ((u(*)())(v60))(v61, v62);
+ v63;
+ v64 = (u)zas_emit;
+ v65 = *(u*)(vc + 48UL);
+ v66 = vx >> 16UL;
+ v67 = ((u(*)())(v64))(v65, v66);
+ v67;
+ v68 = (u)zas_emit;
+ v69 = *(u*)(vc + 48UL);
+ v70 = vx >> 24UL;
+ v71 = ((u(*)())(v68))(v69, v70);
+ v71;
+b22: goto b1;
+b24: if ((s)(vimm) <= (s)(-16777216UL)) goto b30;
+ vimm = -(vimm);
+ vx = ((3506438144UL + ((vimm & 4095UL) << 10UL)) + (vrs << 5UL)) + vrd;
+ v72 = (u)zas_emit;
+ v73 = *(u*)(vc + 48UL);
+ v74 = vx;
+ v75 = ((u(*)())(v72))(v73, v74);
+ v75;
+ v76 = (u)zas_emit;
+ v77 = *(u*)(vc + 48UL);
+ v78 = vx >> 8UL;
+ v79 = ((u(*)())(v76))(v77, v78);
+ v79;
+ v80 = (u)zas_emit;
+ v81 = *(u*)(vc + 48UL);
+ v82 = vx >> 16UL;
+ v83 = ((u(*)())(v80))(v81, v82);
+ v83;
+ v84 = (u)zas_emit;
+ v85 = *(u*)(vc + 48UL);
+ v86 = vx >> 24UL;
+ v87 = ((u(*)())(v84))(v85, v86);
+ v87;
+ vx = ((3510632448UL + ((vimm >> 12UL & 4095UL) << 10UL)) + (vrd << 5UL)) + vrd;
+ v88 = (u)zas_emit;
+ v89 = *(u*)(vc + 48UL);
+ v90 = vx;
+ v91 = ((u(*)())(v88))(v89, v90);
+ v91;
+ v92 = (u)zas_emit;
+ v93 = *(u*)(vc + 48UL);
+ v94 = vx >> 8UL;
+ v95 = ((u(*)())(v92))(v93, v94);
+ v95;
+ v96 = (u)zas_emit;
+ v97 = *(u*)(vc + 48UL);
+ v98 = vx >> 16UL;
+ v99 = ((u(*)())(v96))(v97, v98);
+ v99;
+ v100 = (u)zas_emit;
+ v101 = *(u*)(vc + 48UL);
+ v102 = vx >> 24UL;
+ v103 = ((u(*)())(v100))(v101, v102);
+ v103;
+ goto b22;
+b30: v104 = (u)zdie;
+ v105 = (u)"subi overflow";
+ v106 = ((u(*)())(v104))(v105);
+ v106;
+ goto b22;
+}
+u zaarch64_addr(u vc, u vrd, u vrn, u vrm, u vimm6) {
+ u vx = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ vx = ((((278UL << 23UL) + (vrm << 16UL)) + (vimm6 << 10UL)) + (vrn << 5UL)) + vrd;
+ v6 = (u)zas_emit;
+ v7 = *(u*)(vc + 48UL);
+ v8 = vx;
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+ v10 = (u)zas_emit;
+ v11 = *(u*)(vc + 48UL);
+ v12 = vx >> 8UL;
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+ v14 = (u)zas_emit;
+ v15 = *(u*)(vc + 48UL);
+ v16 = vx >> 16UL;
+ v17 = ((u(*)())(v14))(v15, v16);
+ v17;
+ v18 = (u)zas_emit;
+ v19 = *(u*)(vc + 48UL);
+ v20 = vx >> 24UL;
+ v21 = ((u(*)())(v18))(v19, v20);
+ v21;
return 0UL;
-b7: if ((s)vsize < (s)2048UL) goto b10;
- vsize = vsize + 4095UL;
- vsize = vsize & ~4095UL;
- v9 = (u)zmmap;
- v10 = 0UL;
- v11 = vsize;
- v12 = 1UL | 2UL;
- v13 = 2UL | 32UL;
- v14 = -1UL;
- v15 = 0UL;
- v16 = ((u(*)())v9)(v10, v11, v12, v13, v14, v15);
- vmret = v16;
- if (vmret != -1UL) goto b14;
- v17 = (u)zdie;
- v18 = (u)"out of memory";
- v19 = ((u(*)())v17)(v18);
- v19;
-b12: vret = vmret;
- v20 = (u)zassert_zero;
- v21 = vret;
- v22 = vsize;
- v23 = ((u(*)())v20)(v21, v22);
- v23;
- return vret;
-b14: goto b12;
-b10: vpage = *(u*)(vc + 0UL);
- if (!vpage) goto b19;
- if ((s)vsize > (s)(*(u*)(vpage + 16UL) - *(u*)(vpage + 8UL))) goto b22;
- vmret = *(u*)(vpage + 0UL) + *(u*)(vpage + 8UL);
- *(u*)(vpage + 8UL) = *(u*)(vpage + 8UL) + vsize;
- vret = vmret;
- v24 = (u)zassert_zero;
- v25 = vret;
- v26 = vsize;
- v27 = ((u(*)())v24)(v25, v26);
- v27;
- return vret;
-b22:b17: vpsize = 64UL * 1024UL;
- v28 = (u)zmmap;
- v29 = 0UL;
- v30 = vpsize;
- v31 = 1UL | 2UL;
- v32 = 2UL | 32UL;
- v33 = -1UL;
- v34 = 0UL;
- v35 = ((u(*)())v28)(v29, v30, v31, v32, v33, v34);
- vmret = v35;
- if (vmret != -1UL) goto b27;
- v36 = (u)zdie;
- v37 = (u)"out of memory";
- v38 = ((u(*)())v36)(v37);
- v38;
-b25: vpage = vmret;
- *(u*)(vpage + 0UL) = vpage + 1UL * 24UL;
- vret = *(u*)(vpage + 0UL);
- *(u*)(vpage + 16UL) = vpsize - 24UL;
- *(u*)(vpage + 8UL) = vsize;
- *(u*)(vc + 0UL) = vpage;
- v39 = (u)zassert_zero;
- v40 = vret;
- v41 = vsize;
- v42 = ((u(*)())v39)(v40, v41);
- v42;
- return vret;
-b27: goto b25;
-b19: goto b17;
-b3: goto b1;
}
-u zargs_to_ir(u vic, u vn) {
- u vname = 0;
- u vt = 0;
+u zaarch64_adr(u vc, u vtarget) {
+ u v2 = 0;
+ u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -717,31 +832,33 @@ u zargs_to_ir(u vic, u vn) {
u v11 = 0;
u v12 = 0;
u v13 = 0;
-b1: if (!vn) goto b7;
- v4 = 0UL;
-b8: if (!v4) goto b5;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ v2 = (u)zreserve;
+ v3 = *(u*)(vc + 48UL);
+ v4 = 16UL;
+ v5 = ((u(*)())(v2))(v3, v4);
+ v5;
+ v6 = (u)zaarch64_udf;
+ v7 = vc;
+ v8 = ((u(*)())(v6))(v7);
+ v8;
+ v9 = (u)zaarch64_nop;
+ v10 = vc;
+ v11 = ((u(*)())(v9))(v10);
+ v11;
+ v12 = (u)zaddfixup;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vtarget;
+ v15 = 2UL;
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ v16;
return 0UL;
-b5: vname = *(u*)(*(u*)(*(u*)(vn + 8UL) + 8UL) + 56UL);
- v5 = (u)zprototype;
- v6 = *(u*)(vic + 0UL);
- v7 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v8 = ((u(*)())v5)(v6, v7);
- vt = v8;
- v9 = (u)ziraddarg;
- v10 = vic;
- v11 = vname;
- v12 = vt;
- v13 = ((u(*)())v9)(v10, v11, v12);
- v13;
- vn = *(u*)(vn + 16UL);
- goto b1;
-b7: v4 = 1UL;
- goto b8;
}
-u zas_blob(u vc, u vs, u vslen) {
- u vb = 0;
- u vlink = 0;
- u vdir = 0;
+u zaarch64_and(u vc, u vrd, u vrn, u vrm) {
+ u vx = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -757,103 +874,31 @@ u zas_blob(u vc, u vs, u vslen) {
u v18 = 0;
u v19 = 0;
u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- vlink = vc + 120UL;
-b1: vb = *(u*)vlink;
- if (!vb) goto b7;
- v6 = 0UL;
-b8: if (!v6) goto b5;
- v22 = (u)zalloc;
- v23 = *(u*)(vc + 0UL);
- v24 = 40UL;
- v25 = ((u(*)())v22)(v23, v24);
- vb = v25;
- v26 = (u)zmklabel;
- v27 = vc;
- v28 = ((u(*)())v26)(v27);
- *(u*)(vb + 16UL) = v28;
- v29 = (u)zalloc;
- v30 = *(u*)(vc + 0UL);
- v31 = vslen;
- v32 = ((u(*)())v29)(v30, v31);
- *(u*)(vb + 24UL) = v32;
- *(u*)(vb + 32UL) = vslen;
- v33 = (u)zmemcpy;
- v34 = *(u*)(vb + 24UL);
- v35 = vs;
- v36 = vslen;
- v37 = ((u(*)())v33)(v34, v35, v36);
- v37;
- *(u*)vlink = vb;
- return *(u*)(vb + 16UL);
-b5: if ((s)*(u*)(vb + 32UL) >= (s)vslen) goto b11;
- v7 = (u)zmemcmp;
- v8 = *(u*)(vb + 24UL);
- v9 = vs;
- v10 = *(u*)(vb + 32UL);
- v11 = ((u(*)())v7)(v8, v9, v10);
- vdir = v11;
- if (vdir != 0UL) goto b15;
- vdir = -1UL;
-b13:b9: if (vdir != 0UL) goto b25;
- return *(u*)(vb + 16UL);
-b25: if ((s)vdir <= (s)0UL) goto b27;
- vlink = vb + 0UL;
-b23: goto b1;
-b27: vlink = vb + 8UL;
- goto b23;
-b15: goto b13;
-b11: if ((s)*(u*)(vb + 32UL) <= (s)vslen) goto b17;
- v12 = (u)zmemcmp;
- v13 = *(u*)(vb + 24UL);
- v14 = vs;
- v15 = vslen;
- v16 = ((u(*)())v12)(v13, v14, v15);
- vdir = v16;
- if (vdir != 0UL) goto b21;
- vdir = 1UL;
-b19: goto b9;
-b21: goto b19;
-b17: v17 = (u)zmemcmp;
- v18 = *(u*)(vb + 24UL);
- v19 = vs;
- v20 = vslen;
- v21 = ((u(*)())v17)(v18, v19, v20);
- vdir = v21;
- goto b9;
-b7: v6 = 1UL;
- goto b8;
-}
-u zas_emit(u va, u vb) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- v2 = (u)zemit;
- v3 = va;
- v4 = vb;
- v5 = ((u(*)())v2)(v3, v4);
- v5;
+ vx = ((2315255808UL + (vrm << 16UL)) + (vrn << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
return 0UL;
}
-u zas_jmp(u va, u vop, u vl) {
- u v3 = 0;
+u zaarch64_bicond(u vc, u vicond, u vtarget) {
+ u vx = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -878,47 +923,44 @@ u zas_jmp(u va, u vop, u vl) {
u v25 = 0;
u v26 = 0;
u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- v3 = (u)zreserve;
- v4 = va;
- v5 = 16UL;
- v6 = ((u(*)())v3)(v4, v5);
- v6;
- v7 = (u)zas_op;
- v8 = va;
- v9 = vop;
- v10 = ((u(*)())v7)(v8, v9);
- v10;
- v11 = (u)zas_emit;
- v12 = va;
- v13 = 0UL;
- v14 = ((u(*)())v11)(v12, v13);
- v14;
- v15 = (u)zas_emit;
- v16 = va;
- v17 = 0UL;
- v18 = ((u(*)())v15)(v16, v17);
- v18;
- v19 = (u)zas_emit;
- v20 = va;
- v21 = 0UL;
- v22 = ((u(*)())v19)(v20, v21);
+ vx = ((84UL << 24UL) + (2UL << 5UL)) + vicond;
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ v20 = (u)zaarch64_udf;
+ v21 = vc;
+ v22 = ((u(*)())(v20))(v21);
v22;
- v23 = (u)zas_emit;
- v24 = va;
- v25 = 0UL;
- v26 = ((u(*)())v23)(v24, v25);
- v26;
- v27 = (u)zaddfixup;
- v28 = va;
- v29 = vl;
- v30 = ((u(*)())v27)(v28, v29);
- v30;
+ v23 = (u)zaddfixup;
+ v24 = *(u*)(vc + 48UL);
+ v25 = vtarget;
+ v26 = 1UL;
+ v27 = ((u(*)())(v23))(v24, v25, v26);
+ v27;
return 0UL;
}
-u zas_modm(u va, u vop, u vb, u vi, u vs, u vd) {
+u zaarch64_blr(u vc, u vrs) {
+ u vx = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -928,40 +970,42 @@ u zas_modm(u va, u vop, u vb, u vi, u vs, u vd) {
u v12 = 0;
u v13 = 0;
u v14 = 0;
- v6 = (u)zas_modrm;
- v7 = va;
- v8 = vop & 65535UL;
- v9 = vop >> 16UL;
- v10 = vb;
- v11 = vi;
- v12 = vs;
- v13 = vd;
- v14 = ((u(*)())v6)(v7, v8, v9, v10, v11, v12, v13);
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ vx = 3594452992UL + (vrs << 5UL);
+ v3 = (u)zas_emit;
+ v4 = *(u*)(vc + 48UL);
+ v5 = vx;
+ v6 = ((u(*)())(v3))(v4, v5);
+ v6;
+ v7 = (u)zas_emit;
+ v8 = *(u*)(vc + 48UL);
+ v9 = vx >> 8UL;
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+ v11 = (u)zas_emit;
+ v12 = *(u*)(vc + 48UL);
+ v13 = vx >> 16UL;
+ v14 = ((u(*)())(v11))(v12, v13);
v14;
+ v15 = (u)zas_emit;
+ v16 = *(u*)(vc + 48UL);
+ v17 = vx >> 24UL;
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
return 0UL;
}
-u zas_modr(u va, u vop, u vb) {
+u zaarch64_builtin(u vc) {
+ u vd = 0;
+ u v2 = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
- v3 = (u)zas_modrr;
- v4 = va;
- v5 = vop & 65535UL;
- v6 = vop >> 16UL;
- v7 = vb;
- v8 = ((u(*)())v3)(v4, v5, v6, v7);
- v8;
- return 0UL;
-}
-u zas_modra(u va, u vop, u vr, u vd) {
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -992,153 +1036,6 @@ u zas_modra(u va, u vop, u vr, u vd) {
u v36 = 0;
u v37 = 0;
u v38 = 0;
- v4 = (u)zas_rex;
- v5 = va;
- v6 = vop;
- v7 = vr;
- v8 = 0UL;
- v9 = 0UL;
- v10 = ((u(*)())v4)(v5, v6, v7, v8, v9);
- v10;
- v11 = (u)zas_op;
- v12 = va;
- v13 = vop;
- v14 = ((u(*)())v11)(v12, v13);
- v14;
- v15 = (u)zas_emit;
- v16 = va;
- v17 = (vr << 3UL & 56UL) + 4UL;
- v18 = ((u(*)())v15)(v16, v17);
- v18;
- v19 = (u)zas_emit;
- v20 = va;
- v21 = (4UL << 3UL) + 5UL;
- v22 = ((u(*)())v19)(v20, v21);
- v22;
- v23 = (u)zas_emit;
- v24 = va;
- v25 = vd;
- v26 = ((u(*)())v23)(v24, v25);
- v26;
- v27 = (u)zas_emit;
- v28 = va;
- v29 = vd >> 8UL;
- v30 = ((u(*)())v27)(v28, v29);
- v30;
- v31 = (u)zas_emit;
- v32 = va;
- v33 = vd >> 16UL;
- v34 = ((u(*)())v31)(v32, v33);
- v34;
- v35 = (u)zas_emit;
- v36 = va;
- v37 = vd >> 24UL;
- v38 = ((u(*)())v35)(v36, v37);
- v38;
- return 0UL;
-}
-u zas_modri(u va, u vop, u vr, u vx) {
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- if ((s)vx >= (s)-(1UL << 31UL)) goto b5;
- v4 = 1UL;
-b7: if (!v4) goto b3;
- v5 = (u)zdie;
- v6 = (u)"immediate too large";
- v7 = ((u(*)())v5)(v6);
- v7;
-b1: v8 = (u)zas_modrr;
- v9 = va;
- v10 = vop & 65535UL;
- v11 = vop >> 16UL;
- v12 = vr;
- v13 = ((u(*)())v8)(v9, v10, v11, v12);
- v13;
- v14 = (u)zas_emit;
- v15 = va;
- v16 = vx;
- v17 = ((u(*)())v14)(v15, v16);
- v17;
- v18 = (u)zas_emit;
- v19 = va;
- v20 = vx >> 8UL;
- v21 = ((u(*)())v18)(v19, v20);
- v21;
- v22 = (u)zas_emit;
- v23 = va;
- v24 = vx >> 16UL;
- v25 = ((u(*)())v22)(v23, v24);
- v25;
- v26 = (u)zas_emit;
- v27 = va;
- v28 = vx >> 24UL;
- v29 = ((u(*)())v26)(v27, v28);
- v29;
- return 0UL;
-b3: goto b1;
-b5: if ((s)vx < (s)(1UL << 31UL)) goto b8;
- v4 = 1UL;
- goto b7;
-b8: v4 = 0UL;
- goto b7;
-}
-u zas_modrm(u va, u vop, u vr, u vb, u vi, u vs, u vd) {
- u vsib = 0;
- u vmod = 0;
- u vrm = 0;
- u vdw = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
u v39 = 0;
u v40 = 0;
u v41 = 0;
@@ -1186,243 +1083,129 @@ u zas_modrm(u va, u vop, u vr, u vb, u vi, u vs, u vd) {
u v83 = 0;
u v84 = 0;
u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- if ((s)vr >= (s)0UL) goto b5;
- v11 = 1UL;
-b7: if (!v11) goto b3;
- v12 = (u)zdie;
- v13 = (u)"invalid reg";
- v14 = ((u(*)())v12)(v13);
- v14;
-b1: vrm = vr << 3UL & 56UL;
- if (vd == 0UL) goto b12;
- if ((s)vd < (s)-128UL) goto b17;
- if ((s)vd > (s)127UL) goto b17;
- v15 = 1UL;
-b19: if (!v15) goto b15;
- vmod = 1UL;
- vdw = 1UL;
-b13:b10: if (vmod != 0UL) goto b22;
- if ((s)vb >= (s)0UL) goto b27;
- v16 = 1UL;
-b29: if (!v16) goto b25;
- v17 = (u)zdie;
- v18 = (u)"invalid reg";
- v19 = ((u(*)())v17)(v18);
- v19;
-b23: if (!vs) goto b34;
- if (vb != 16UL) goto b37;
- v20 = (u)zdie;
- v21 = (u)"invalid base";
- v22 = ((u(*)())v20)(v21);
- v22;
-b35: if (vi != 4UL) goto b41;
- v23 = (u)zdie;
- v24 = (u)"invalid index";
- v25 = ((u(*)())v23)(v24);
- v25;
-b39: vrm = vrm + 4UL;
-b32:b20: v47 = (u)zas_rex;
- v48 = va;
- v49 = vop;
- v50 = vr;
- v51 = vi;
- v52 = vb;
- v53 = ((u(*)())v47)(v48, v49, v50, v51, v52);
- v53;
- v54 = (u)zas_op;
- v55 = va;
- v56 = vop;
- v57 = ((u(*)())v54)(v55, v56);
- v57;
- v58 = (u)zas_emit;
- v59 = va;
- v60 = (vmod << 6UL) + vrm;
- v61 = ((u(*)())v58)(v59, v60);
- v61;
- if (!vs) goto b113;
- vsib = (vi << 3UL & 56UL) + (vb & 7UL);
- if (vs != 2UL) goto b116;
- vsib = vsib + 64UL;
-b114: v65 = (u)zas_emit;
- v66 = va;
- v67 = vsib;
- v68 = ((u(*)())v65)(v66, v67);
- v68;
-b111: if (vdw != 1UL) goto b127;
- v69 = (u)zas_emit;
- v70 = va;
- v71 = vd;
- v72 = ((u(*)())v69)(v70, v71);
- v72;
-b125: return 0UL;
-b127: if (vdw != 4UL) goto b130;
- v73 = (u)zas_emit;
- v74 = va;
- v75 = vd;
- v76 = ((u(*)())v73)(v74, v75);
- v76;
- v77 = (u)zas_emit;
- v78 = va;
- v79 = vd >> 8UL;
- v80 = ((u(*)())v77)(v78, v79);
- v80;
- v81 = (u)zas_emit;
- v82 = va;
- v83 = vd >> 16UL;
- v84 = ((u(*)())v81)(v82, v83);
- v84;
- v85 = (u)zas_emit;
- v86 = va;
- v87 = vd >> 24UL;
- v88 = ((u(*)())v85)(v86, v87);
- v88;
- goto b125;
-b130: goto b125;
-b116: if (vs != 4UL) goto b118;
- vsib = vsib + 128UL;
- goto b114;
-b118: if (vs != 8UL) goto b120;
- vsib = vsib + 192UL;
- goto b114;
-b120: if (vs == 1UL) goto b122;
- v62 = (u)zdie;
- v63 = (u)"invalid scale";
- v64 = ((u(*)())v62)(v63);
- v64;
- goto b114;
-b122: goto b114;
-b113: goto b111;
-b41: goto b39;
-b37: goto b35;
-b34: if (vi == 0UL) goto b45;
- v26 = (u)zdie;
- v27 = (u)"invalid index";
- v28 = ((u(*)())v26)(v27);
+ v2 = (u)zfind;
+ v3 = vc;
+ v4 = (u)"syscall";
+ v5 = 0UL;
+ v6 = 1UL;
+ v7 = ((u(*)())(v2))(v3, v4, v5, v6);
+ vd = v7;
+ if (!(*(u*)(vd + 72UL))) goto b6;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b10;
+ v9 = 0UL;
+b11: if (!(v9)) goto b6;
+ v8 = 1UL;
+b8: if (!(v8)) goto b4;
+ v10 = (u)zfixup_label;
+ v11 = *(u*)(vc + 48UL);
+ v12 = *(u*)(vd + 88UL);
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+ v14 = (u)zadd_symbol;
+ v15 = *(u*)(vc + 48UL);
+ v16 = *(u*)(vd + 32UL);
+ v17 = *(u*)(vd + 88UL);
+ v18 = ((u(*)())(v14))(v15, v16, v17);
+ v18;
+ v19 = (u)zaarch64_mov;
+ v20 = vc;
+ v21 = 8UL;
+ v22 = 0UL;
+ v23 = ((u(*)())(v19))(v20, v21, v22);
+ v23;
+ v24 = (u)zaarch64_mov;
+ v25 = vc;
+ v26 = 0UL;
+ v27 = 1UL;
+ v28 = ((u(*)())(v24))(v25, v26, v27);
v28;
-b43: if (vb != 16UL) goto b49;
- vmod = 0UL;
- vdw = 4UL;
- vrm = vrm + 5UL;
-b47: goto b32;
-b49: if (vb != 4UL) goto b53;
- v29 = 1UL;
-b55: if (!v29) goto b51;
- vs = 1UL;
- vi = 4UL;
- vrm = vrm + 4UL;
- goto b47;
-b51: if (vb != 5UL) goto b60;
- v30 = 1UL;
-b62: if (!v30) goto b58;
- vmod = 1UL;
- vdw = 1UL;
- vrm = vrm + 5UL;
- goto b47;
-b58: vrm = vrm + (vb & 7UL);
- goto b47;
-b60: if (vb != 13UL) goto b63;
- v30 = 1UL;
- goto b62;
-b63: v30 = 0UL;
- goto b62;
-b53: if (vb != 12UL) goto b56;
- v29 = 1UL;
- goto b55;
-b56: v29 = 0UL;
- goto b55;
-b45: goto b43;
-b25: goto b23;
-b27: if ((s)vb <= (s)16UL) goto b30;
- v16 = 1UL;
- goto b29;
-b30: v16 = 0UL;
- goto b29;
-b22: if ((s)vb >= (s)0UL) goto b76;
- v33 = 1UL;
-b78: if (!v33) goto b72;
- v32 = 1UL;
-b74: if (!v32) goto b68;
- v31 = 1UL;
-b70: if (!v31) goto b66;
- v34 = (u)zdie;
- v35 = (u)"invalid reg";
- v36 = ((u(*)())v34)(v35);
- v36;
-b64: if (!vs) goto b85;
- if (vb != 16UL) goto b88;
- v37 = (u)zdie;
- v38 = (u)"invalid base";
- v39 = ((u(*)())v37)(v38);
- v39;
-b86: if (vi != 4UL) goto b92;
- v40 = (u)zdie;
- v41 = (u)"invalid index";
- v42 = ((u(*)())v40)(v41);
- v42;
-b90: vrm = vrm + 4UL;
-b83: goto b20;
-b92: goto b90;
-b88: goto b86;
-b85: if (vi == 0UL) goto b96;
- v43 = (u)zdie;
- v44 = (u)"invalid index";
- v45 = ((u(*)())v43)(v44);
- v45;
-b94: if (vb != 16UL) goto b100;
- vmod = 0UL;
- vdw = 4UL;
- vrm = vrm + 5UL;
-b98: goto b83;
-b100: if (vb != 4UL) goto b104;
- v46 = 1UL;
-b106: if (!v46) goto b102;
- vs = 1UL;
- vi = 4UL;
- vrm = vrm + 4UL;
- goto b98;
-b102: vrm = vrm + (vb & 7UL);
- goto b98;
-b104: if (vb != 12UL) goto b107;
- v46 = 1UL;
- goto b106;
-b107: v46 = 0UL;
- goto b106;
-b96: goto b94;
-b66: goto b64;
-b68: if ((s)vi <= (s)15UL) goto b81;
+ v29 = (u)zaarch64_mov;
+ v30 = vc;
v31 = 1UL;
- goto b70;
-b81: v31 = 0UL;
- goto b70;
-b72: if ((s)vi >= (s)0UL) goto b80;
- v32 = 1UL;
- goto b74;
-b80: v32 = 0UL;
- goto b74;
-b76: if ((s)vb <= (s)16UL) goto b79;
- v33 = 1UL;
- goto b78;
-b79: v33 = 0UL;
- goto b78;
-b15: vmod = 2UL;
- vdw = 4UL;
- goto b13;
-b17: v15 = 0UL;
- goto b19;
-b12: vmod = 0UL;
- vdw = 0UL;
- goto b10;
-b3: goto b1;
-b5: if ((s)vr <= (s)15UL) goto b8;
- v11 = 1UL;
- goto b7;
-b8: v11 = 0UL;
- goto b7;
+ v32 = 2UL;
+ v33 = ((u(*)())(v29))(v30, v31, v32);
+ v33;
+ v34 = (u)zaarch64_mov;
+ v35 = vc;
+ v36 = 2UL;
+ v37 = 3UL;
+ v38 = ((u(*)())(v34))(v35, v36, v37);
+ v38;
+ v39 = (u)zaarch64_mov;
+ v40 = vc;
+ v41 = 3UL;
+ v42 = 4UL;
+ v43 = ((u(*)())(v39))(v40, v41, v42);
+ v43;
+ v44 = (u)zaarch64_mov;
+ v45 = vc;
+ v46 = 4UL;
+ v47 = 5UL;
+ v48 = ((u(*)())(v44))(v45, v46, v47);
+ v48;
+ v49 = (u)zaarch64_mov;
+ v50 = vc;
+ v51 = 5UL;
+ v52 = 6UL;
+ v53 = ((u(*)())(v49))(v50, v51, v52);
+ v53;
+ v54 = (u)zaarch64_svc;
+ v55 = vc;
+ v56 = ((u(*)())(v54))(v55);
+ v56;
+ v57 = (u)zaarch64_ret;
+ v58 = vc;
+ v59 = ((u(*)())(v57))(v58);
+ v59;
+b2: v60 = (u)zfind;
+ v61 = vc;
+ v62 = (u)"_restorer";
+ v63 = 0UL;
+ v64 = 1UL;
+ v65 = ((u(*)())(v60))(v61, v62, v63, v64);
+ vd = v65;
+ if (!(*(u*)(vd + 72UL))) goto b28;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b32;
+ v67 = 0UL;
+b33: if (!(v67)) goto b28;
+ v66 = 1UL;
+b30: if (!(v66)) goto b26;
+ v68 = (u)zfixup_label;
+ v69 = *(u*)(vc + 48UL);
+ v70 = *(u*)(vd + 88UL);
+ v71 = ((u(*)())(v68))(v69, v70);
+ v71;
+ v72 = (u)zadd_symbol;
+ v73 = *(u*)(vc + 48UL);
+ v74 = *(u*)(vd + 32UL);
+ v75 = *(u*)(vd + 88UL);
+ v76 = ((u(*)())(v72))(v73, v74, v75);
+ v76;
+ v77 = (u)zaarch64_movz;
+ v78 = vc;
+ v79 = 8UL;
+ v80 = 0UL;
+ v81 = 139UL;
+ v82 = ((u(*)())(v77))(v78, v79, v80, v81);
+ v82;
+ v83 = (u)zaarch64_svc;
+ v84 = vc;
+ v85 = ((u(*)())(v83))(v84);
+ v85;
+b24: return 0UL;
+b26: goto b24;
+b28: v66 = 0UL;
+ goto b30;
+b32: v67 = 1UL;
+ goto b33;
+b4: goto b2;
+b6: v8 = 0UL;
+ goto b8;
+b10: v9 = 1UL;
+ goto b11;
}
-u zas_modrr(u va, u vop, u vr, u vb) {
+u zaarch64_cmp(u vc, u vrn, u vrm) {
+ u vx = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -1439,77 +1222,31 @@ u zas_modrr(u va, u vop, u vr, u vb) {
u v17 = 0;
u v18 = 0;
u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- if ((s)vr >= (s)0UL) goto b13;
- v6 = 1UL;
-b15: if (!v6) goto b9;
- v5 = 1UL;
-b11: if (!v5) goto b5;
- v4 = 1UL;
-b7: if (!v4) goto b3;
- v7 = (u)zdie;
- v8 = (u)"invalid reg";
- v9 = ((u(*)())v7)(v8);
- v9;
-b1: if (vop == (131327UL & 65535UL)) goto b28;
- if ((vop & -16UL) == 3984UL) goto b28;
- v11 = 1UL;
-b30: if (!v11) goto b24;
- v10 = 1UL;
-b26: if (!v10) goto b22;
- v12 = (u)zas_rex;
- v13 = va;
- v14 = vop;
- v15 = vr;
- v16 = 0UL;
- v17 = vb;
- v18 = ((u(*)())v12)(v13, v14, v15, v16, v17);
- v18;
-b20: v19 = (u)zas_op;
- v20 = va;
- v21 = vop;
- v22 = ((u(*)())v19)(v20, v21);
- v22;
- v23 = (u)zas_emit;
- v24 = va;
- v25 = 192UL + (vr << 3UL & 56UL) + (vb & 7UL);
- v26 = ((u(*)())v23)(v24, v25);
- v26;
+ vx = (3942645791UL + (vrm << 16UL)) + (vrn << 5UL);
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
return 0UL;
-b22: goto b20;
-b24: if ((s)vb < (s)8UL) goto b31;
- v10 = 1UL;
- goto b26;
-b31: v10 = 0UL;
- goto b26;
-b28: v11 = 0UL;
- goto b30;
-b3: goto b1;
-b5: if ((s)vb <= (s)15UL) goto b18;
- v4 = 1UL;
- goto b7;
-b18: v4 = 0UL;
- goto b7;
-b9: if ((s)vb >= (s)0UL) goto b17;
- v5 = 1UL;
- goto b11;
-b17: v5 = 0UL;
- goto b11;
-b13: if ((s)vr <= (s)15UL) goto b16;
- v6 = 1UL;
- goto b15;
-b16: v6 = 0UL;
- goto b15;
}
-u zas_op(u va, u vop) {
- u v2 = 0;
- u v3 = 0;
+u zaarch64_cmpi(u vc, u vrn, u vimm12) {
+ u vx = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -1520,27 +1257,37 @@ u zas_op(u va, u vop) {
u v11 = 0;
u v12 = 0;
u v13 = 0;
- if ((s)vop <= (s)255UL) goto b3;
- v2 = (u)zas_emit;
- v3 = va;
- v4 = vop >> 8UL;
- v5 = ((u(*)())v2)(v3, v4);
- v5;
- v6 = (u)zas_emit;
- v7 = va;
- v8 = vop;
- v9 = ((u(*)())v6)(v7, v8);
- v9;
-b1: return 0UL;
-b3: v10 = (u)zas_emit;
- v11 = va;
- v12 = vop;
- v13 = ((u(*)())v10)(v11, v12);
- v13;
- goto b1;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ vx = (4043309087UL + ((vimm12 & 4095UL) << 10UL)) + (vrn << 5UL);
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ return 0UL;
}
-u zas_opr(u va, u vop, u vr) {
- u v3 = 0;
+u zaarch64_cset(u vc, u vrd, u vicond) {
+ u vx = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -1557,49 +1304,32 @@ u zas_opr(u va, u vop, u vr) {
u v17 = 0;
u v18 = 0;
u v19 = 0;
- if ((s)vr >= (s)0UL) goto b5;
- v3 = 1UL;
-b7: if (!v3) goto b3;
- v4 = (u)zdie;
- v5 = (u)"invalid reg";
- v6 = ((u(*)())v4)(v5);
- v6;
-b1: if (vop == 80UL) goto b18;
- if (vop == 88UL) goto b18;
- v8 = 1UL;
-b20: if (!v8) goto b14;
- v7 = 1UL;
-b16: if (!v7) goto b12;
- v9 = (u)zas_rex;
- v10 = va;
- v11 = vop;
- v12 = vr;
- v13 = 0UL;
- v14 = 0UL;
- v15 = ((u(*)())v9)(v10, v11, v12, v13, v14);
+ vx = (2594113504UL + (vicond << 12UL)) + vrd;
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
v15;
-b10: v16 = (u)zas_op;
- v17 = va;
- v18 = vop + (vr & 7UL);
- v19 = ((u(*)())v16)(v17, v18);
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
v19;
return 0UL;
-b12: goto b10;
-b14: if ((s)vr <= (s)7UL) goto b21;
- v7 = 1UL;
- goto b16;
-b21: v7 = 0UL;
- goto b16;
-b18: v8 = 0UL;
- goto b20;
-b3: goto b1;
-b5: if ((s)vr <= (s)15UL) goto b8;
- v3 = 1UL;
- goto b7;
-b8: v3 = 0UL;
- goto b7;
}
-u zas_opri64(u va, u vop, u vr, u vx) {
+u zaarch64_jmp(u vc, u vtarget) {
+ u v2 = 0;
+ u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -1610,6 +1340,34 @@ u zas_opri64(u va, u vop, u vr, u vx) {
u v11 = 0;
u v12 = 0;
u v13 = 0;
+ v2 = (u)zreserve;
+ v3 = *(u*)(vc + 48UL);
+ v4 = 16UL;
+ v5 = ((u(*)())(v2))(v3, v4);
+ v5;
+ v6 = (u)zaarch64_udf;
+ v7 = vc;
+ v8 = ((u(*)())(v6))(v7);
+ v8;
+ v9 = (u)zaddfixup;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vtarget;
+ v12 = 1UL;
+ v13 = ((u(*)())(v9))(v10, v11, v12);
+ v13;
+ return 0UL;
+}
+u zaarch64_ldr(u vc, u vrd, u vrs, u voff) {
+ u vx = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
u v14 = 0;
u v15 = 0;
u v16 = 0;
@@ -1617,85 +1375,73 @@ u zas_opri64(u va, u vop, u vr, u vx) {
u v18 = 0;
u v19 = 0;
u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- if (vop == 184UL) goto b3;
- v4 = (u)zdie;
- v5 = (u)"only movabs";
- v6 = ((u(*)())v4)(v5);
- v6;
-b1: v7 = (u)zas_opr;
- v8 = va;
- v9 = vop;
- v10 = vr;
- v11 = ((u(*)())v7)(v8, v9, v10);
+ vx = ((((498UL << 23UL) + (1UL << 22UL)) + ((voff & 4095UL) << 10UL)) + (vrs << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ return 0UL;
+}
+u zaarch64_ldrb(u vc, u vrt, u vrn) {
+ u vx = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ vx = (960495616UL + (vrn << 5UL)) + vrt;
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
v11;
v12 = (u)zas_emit;
- v13 = va;
- v14 = vx;
- v15 = ((u(*)())v12)(v13, v14);
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
v15;
v16 = (u)zas_emit;
- v17 = va;
- v18 = vx >> 8UL;
- v19 = ((u(*)())v16)(v17, v18);
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
v19;
- v20 = (u)zas_emit;
- v21 = va;
- v22 = vx >> 16UL;
- v23 = ((u(*)())v20)(v21, v22);
- v23;
- v24 = (u)zas_emit;
- v25 = va;
- v26 = vx >> 24UL;
- v27 = ((u(*)())v24)(v25, v26);
- v27;
- v28 = (u)zas_emit;
- v29 = va;
- v30 = vx >> 32UL;
- v31 = ((u(*)())v28)(v29, v30);
- v31;
- v32 = (u)zas_emit;
- v33 = va;
- v34 = vx >> 40UL;
- v35 = ((u(*)())v32)(v33, v34);
- v35;
- v36 = (u)zas_emit;
- v37 = va;
- v38 = vx >> 48UL;
- v39 = ((u(*)())v36)(v37, v38);
- v39;
- v40 = (u)zas_emit;
- v41 = va;
- v42 = vx >> 56UL;
- v43 = ((u(*)())v40)(v41, v42);
- v43;
return 0UL;
-b3: goto b1;
}
-u zas_rex(u va, u vop, u vr, u vi, u vb) {
- u vw = 0;
+u zaarch64_lsh(u vc, u vrd, u vrn, u vrm) {
+ u vx = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -1703,75 +1449,416 @@ u zas_rex(u va, u vop, u vr, u vi, u vb) {
u v10 = 0;
u v11 = 0;
u v12 = 0;
- if (!*(u*)(va + 48UL)) goto b3;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vx = ((2596282368UL + (vrm << 16UL)) + (vrn << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
return 0UL;
-b3: vw = 8UL;
- if (vop != 138UL) goto b8;
- v6 = 1UL;
-b10: if (!v6) goto b6;
- vw = 0UL;
- if ((s)vr >= (s)8UL) goto b20;
- if ((s)vi >= (s)8UL) goto b20;
- v8 = 1UL;
-b22: if (!v8) goto b16;
- if ((s)vb >= (s)8UL) goto b16;
- v7 = 1UL;
-b18: if (!v7) goto b14;
+}
+u zaarch64_mov(u vc, u vrd, u vrs) {
+ u vx = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ if (vrd != 31UL) goto b5;
+ v4 = 1UL;
+b7: if (!(v4)) goto b3;
+ vx = ((290UL << 23UL) + (vrs << 5UL)) + vrd;
+b1: v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
return 0UL;
-b14:b4: v9 = (u)zas_emit;
- v10 = va;
- v11 = 64UL + vw + (vr >> 1UL & 4UL) + (vi >> 2UL & 2UL) + (vb >> 3UL & 1UL);
- v12 = ((u(*)())v9)(v10, v11);
+b3: vx = (((340UL << 23UL) + (vrs << 16UL)) + (31UL << 5UL)) + vrd;
+ goto b1;
+b5: if (vrs != 31UL) goto b8;
+ v4 = 1UL;
+ goto b7;
+b8: v4 = 0UL;
+ goto b7;
+}
+u zaarch64_movk(u vc, u vrd, u vhw, u vx) {
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ vx = (((485UL << 23UL) + ((vhw & 3UL) << 21UL)) + ((vx & 65535UL) << 5UL)) + vrd;
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ return 0UL;
+}
+u zaarch64_movz(u vc, u vrd, u vhw, u vx) {
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ vx = (((421UL << 23UL) + ((vhw & 3UL) << 21UL)) + ((vx & 65535UL) << 5UL)) + vrd;
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ return 0UL;
+}
+u zaarch64_msub(u vc, u vrd, u vrn, u vrm, u vra) {
+ u vx = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ vx = (((2600501248UL + (vrm << 16UL)) + (vra << 10UL)) + (vrn << 5UL)) + vrd;
+ v6 = (u)zas_emit;
+ v7 = *(u*)(vc + 48UL);
+ v8 = vx;
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+ v10 = (u)zas_emit;
+ v11 = *(u*)(vc + 48UL);
+ v12 = vx >> 8UL;
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+ v14 = (u)zas_emit;
+ v15 = *(u*)(vc + 48UL);
+ v16 = vx >> 16UL;
+ v17 = ((u(*)())(v14))(v15, v16);
+ v17;
+ v18 = (u)zas_emit;
+ v19 = *(u*)(vc + 48UL);
+ v20 = vx >> 24UL;
+ v21 = ((u(*)())(v18))(v19, v20);
+ v21;
+ return 0UL;
+}
+u zaarch64_mul(u vc, u vrd, u vrn, u vrm) {
+ u vx = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vx = ((2600500224UL + (vrm << 16UL)) + (vrn << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
return 0UL;
-b16: v7 = 0UL;
- goto b18;
-b20: v8 = 0UL;
- goto b22;
-b6: goto b4;
-b8: if (vop != 136UL) goto b11;
- v6 = 1UL;
- goto b10;
-b11: v6 = 0UL;
- goto b10;
}
-u zassert(u vx, u vmsg) {
+u zaarch64_neg(u vc, u vrd, u vrm) {
+ u vx = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ vx = (3405775840UL + (vrm << 16UL)) + vrd;
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ return 0UL;
+}
+u zaarch64_nop(u vc) {
+ u v1 = 0;
u v2 = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
- if (!vx) goto b5;
- v2 = 0UL;
-b6: if (!v2) goto b3;
- v3 = (u)zdie;
- v4 = vmsg;
- v5 = ((u(*)())v3)(v4);
- v5;
-b1: return 0UL;
-b3: goto b1;
-b5: v2 = 1UL;
- goto b6;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ v1 = (u)zas_emit;
+ v2 = *(u*)(vc + 48UL);
+ v3 = 31UL;
+ v4 = ((u(*)())(v1))(v2, v3);
+ v4;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = 32UL;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = 3UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = 213UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ return 0UL;
}
-u zassert_zero(u vb, u vsize) {
- u vi = 0;
- u v3 = 0;
+u zaarch64_not(u vc, u vrd, u vrm) {
+ u vx = 0;
u v4 = 0;
u v5 = 0;
- vi = 0UL;
-b1: if (vi != vsize) goto b5;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ vx = (2854224864UL + (vrm << 16UL)) + vrd;
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
return 0UL;
-b5: if (!(u)*(b*)(vb + vi * 1UL)) goto b8;
- v3 = (u)zdie;
- v4 = (u)"HEAP CORRUPTION";
- v5 = ((u(*)())v3)(v4);
- v5;
-b6: vi = vi + 1UL;
- goto b1;
-b8: goto b6;
}
-u zcall_check(u vc, u vn) {
- u vresult = 0;
- u vret = 0;
+u zaarch64_or(u vc, u vrd, u vrn, u vrm) {
+ u vx = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vx = ((2852126720UL + (vrm << 16UL)) + (vrn << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ return 0UL;
+}
+u zaarch64_output_ir(u vc, u vd) {
+ u vic = 0;
+ u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -1828,763 +1915,222 @@ u zcall_check(u vc, u vn) {
u v57 = 0;
u v58 = 0;
u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- vresult = 0UL;
- if (!vn) goto b5;
- v4 = 0UL;
-b6: if (!v4) goto b3;
- return vresult;
-b3: if (*(u*)(vn + 0UL) != 7UL) goto b9;
- v5 = (u)zcall_check;
- v6 = vc;
- v7 = *(u*)(vn + 8UL);
- v8 = ((u(*)())v5)(v6, v7);
- vresult = v8;
- vn = *(u*)(vn + 16UL);
-b11: if (!vn) goto b17;
- v9 = 0UL;
-b18: if (!v9) goto b15;
- vresult = 1UL;
-b7: return vresult;
-b15: v10 = (u)zcall_check;
- v11 = vc;
- v12 = *(u*)(vn + 8UL);
- v13 = ((u(*)())v10)(v11, v12);
- vret = v13;
- if (!vresult) goto b24;
- if (!vret) goto b24;
- v14 = 1UL;
-b26: if (!v14) goto b22;
- v15 = (u)zcdie;
- v16 = vc;
- v17 = (u)"multiple calls in call";
- v18 = ((u(*)())v15)(v16, v17);
- v18;
-b20: vresult = vresult | vret;
- vn = *(u*)(vn + 16UL);
- goto b11;
-b22: goto b20;
-b24: v14 = 0UL;
- goto b26;
-b17: v9 = 1UL;
- goto b18;
-b9: if (*(u*)(vn + 0UL) != 51UL) goto b31;
- v19 = 1UL;
-b33: if (!v19) goto b29;
- v20 = (u)zcall_check;
- v21 = vc;
- v22 = *(u*)(vn + 8UL);
- v23 = ((u(*)())v20)(v21, v22);
- vresult = v23;
- v24 = (u)zcall_check;
- v25 = vc;
- v26 = *(u*)(vn + 16UL);
- v27 = ((u(*)())v24)(v25, v26);
- vresult = vresult | v27;
- goto b7;
-b29: if (*(u*)(vn + 0UL) != 33UL) goto b108;
- v45 = 1UL;
-b110: if (!v45) goto b104;
- v44 = 1UL;
-b106: if (!v44) goto b100;
- v43 = 1UL;
-b102: if (!v43) goto b96;
- v42 = 1UL;
-b98: if (!v42) goto b92;
- v41 = 1UL;
-b94: if (!v41) goto b88;
- v40 = 1UL;
-b90: if (!v40) goto b84;
- v39 = 1UL;
-b86: if (!v39) goto b80;
- v38 = 1UL;
-b82: if (!v38) goto b76;
- v37 = 1UL;
-b78: if (!v37) goto b72;
- v36 = 1UL;
-b74: if (!v36) goto b68;
- v35 = 1UL;
-b70: if (!v35) goto b64;
- v34 = 1UL;
-b66: if (!v34) goto b60;
- v33 = 1UL;
-b62: if (!v33) goto b56;
- v32 = 1UL;
-b58: if (!v32) goto b52;
+ vic = *(u*)(vd + 112UL);
+ *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vic + 32UL);
+ *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vic + 40UL);
+ *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vic + 48UL);
+ *(u*)(*(u*)(vic + 8UL) + 88UL) = *(u*)(vic + 32UL);
+ *(u*)(*(u*)(vic + 8UL) + 96UL) = *(u*)(vic + 40UL);
+ v3 = (u)zfixup_label;
+ v4 = *(u*)(vc + 48UL);
+ v5 = *(u*)(vd + 88UL);
+ v6 = ((u(*)())(v3))(v4, v5);
+ v6;
+ v7 = (u)zadd_symbol;
+ v8 = *(u*)(vc + 48UL);
+ v9 = *(u*)(vd + 32UL);
+ v10 = *(u*)(vd + 88UL);
+ v11 = ((u(*)())(v7))(v8, v9, v10);
+ v11;
+ v12 = (u)zstrcmp;
+ v13 = *(u*)(vd + 32UL);
+ v14 = (u)"_start";
+ v15 = ((u(*)())(v12))(v13, v14);
+ if (v15 != 0UL) goto b5;
+ v16 = (u)zaarch64_ldr;
+ v17 = vc;
+ v18 = 0UL;
+ v19 = 31UL;
+ v20 = 0UL;
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ v21;
+ v22 = (u)zaarch64_addi;
+ v23 = vc;
+ v24 = 1UL;
+ v25 = 31UL;
+ v26 = 8UL;
+ v27 = ((u(*)())(v22))(v23, v24, v25, v26);
+ v27;
+ v28 = (u)zaarch64_addr;
+ v29 = vc;
+ v30 = 2UL;
v31 = 1UL;
-b54: if (!v31) goto b48;
- v30 = 1UL;
-b50: if (!v30) goto b44;
- v29 = 1UL;
-b46: if (!v29) goto b40;
- v28 = 1UL;
-b42: if (!v28) goto b38;
- v46 = (u)zcall_check;
- v47 = vc;
- v48 = *(u*)(vn + 8UL);
- v49 = ((u(*)())v46)(v47, v48);
- vresult = v49;
- v50 = (u)zcall_check;
- v51 = vc;
- v52 = *(u*)(vn + 16UL);
- v53 = ((u(*)())v50)(v51, v52);
- vret = v53;
- if (!vresult) goto b135;
- if (!vret) goto b135;
- v54 = 1UL;
-b137: if (!v54) goto b133;
- v55 = (u)zcdie;
- v56 = vc;
- v57 = (u)"multiple calls in expression";
- v58 = ((u(*)())v55)(v56, v57);
- v58;
-b131: vresult = vresult | vret;
- goto b7;
-b133: goto b131;
-b135: v54 = 0UL;
- goto b137;
-b38: if (*(u*)(vn + 0UL) != 35UL) goto b162;
- v64 = 1UL;
-b164: if (!v64) goto b158;
- v63 = 1UL;
-b160: if (!v63) goto b154;
- v62 = 1UL;
-b156: if (!v62) goto b150;
- v61 = 1UL;
-b152: if (!v61) goto b146;
- v60 = 1UL;
-b148: if (!v60) goto b142;
- v59 = 1UL;
-b144: if (!v59) goto b140;
- v65 = (u)zcall_check;
- v66 = vc;
- v67 = *(u*)(vn + 8UL);
- v68 = ((u(*)())v65)(v66, v67);
- vresult = v68;
- goto b7;
-b140: if (*(u*)(vn + 0UL) != 3UL) goto b191;
- v73 = 1UL;
-b193: if (!v73) goto b187;
- v72 = 1UL;
-b189: if (!v72) goto b183;
- v71 = 1UL;
-b185: if (!v71) goto b179;
- v70 = 1UL;
-b181: if (!v70) goto b175;
- v69 = 1UL;
-b177: if (!v69) goto b173;
- goto b7;
-b173: v74 = (u)zshow_node;
- v75 = 0UL;
- v76 = vn;
- v77 = ((u(*)())v74)(v75, v76);
- v77;
- v78 = (u)zfputd;
- v79 = 0UL;
- v80 = *(u*)(vn + 0UL);
- v81 = ((u(*)())v78)(v79, v80);
- v81;
- v82 = (u)zdie;
- v83 = (u)"invalid expr";
- v84 = ((u(*)())v82)(v83);
- v84;
- goto b7;
-b175: if (*(u*)(vn + 0UL) != 4UL) goto b198;
- v69 = 1UL;
- goto b177;
-b198: v69 = 0UL;
- goto b177;
-b179: if (*(u*)(vn + 0UL) != 34UL) goto b197;
- v70 = 1UL;
- goto b181;
-b197: v70 = 0UL;
- goto b181;
-b183: if (*(u*)(vn + 0UL) != 0UL) goto b196;
- v71 = 1UL;
- goto b185;
-b196: v71 = 0UL;
- goto b185;
-b187: if (*(u*)(vn + 0UL) != 2UL) goto b195;
- v72 = 1UL;
- goto b189;
-b195: v72 = 0UL;
- goto b189;
-b191: if (*(u*)(vn + 0UL) != 1UL) goto b194;
- v73 = 1UL;
- goto b193;
-b194: v73 = 0UL;
- goto b193;
-b142: if (*(u*)(vn + 0UL) != 9UL) goto b170;
- v59 = 1UL;
- goto b144;
-b170: v59 = 0UL;
- goto b144;
-b146: if (*(u*)(vn + 0UL) != 37UL) goto b169;
- v60 = 1UL;
- goto b148;
-b169: v60 = 0UL;
- goto b148;
-b150: if (*(u*)(vn + 0UL) != 56UL) goto b168;
- v61 = 1UL;
- goto b152;
-b168: v61 = 0UL;
- goto b152;
-b154: if (*(u*)(vn + 0UL) != 58UL) goto b167;
- v62 = 1UL;
- goto b156;
-b167: v62 = 0UL;
- goto b156;
-b158: if (*(u*)(vn + 0UL) != 57UL) goto b166;
- v63 = 1UL;
- goto b160;
-b166: v63 = 0UL;
- goto b160;
-b162: if (*(u*)(vn + 0UL) != 36UL) goto b165;
- v64 = 1UL;
- goto b164;
-b165: v64 = 0UL;
- goto b164;
-b40: if (*(u*)(vn + 0UL) != 55UL) goto b128;
- v28 = 1UL;
- goto b42;
-b128: v28 = 0UL;
- goto b42;
-b44: if (*(u*)(vn + 0UL) != 54UL) goto b127;
- v29 = 1UL;
- goto b46;
-b127: v29 = 0UL;
- goto b46;
-b48: if (*(u*)(vn + 0UL) != 53UL) goto b126;
- v30 = 1UL;
- goto b50;
-b126: v30 = 0UL;
- goto b50;
-b52: if (*(u*)(vn + 0UL) != 49UL) goto b125;
- v31 = 1UL;
- goto b54;
-b125: v31 = 0UL;
- goto b54;
-b56: if (*(u*)(vn + 0UL) != 48UL) goto b124;
- v32 = 1UL;
- goto b58;
-b124: v32 = 0UL;
- goto b58;
-b60: if (*(u*)(vn + 0UL) != 60UL) goto b123;
- v33 = 1UL;
- goto b62;
-b123: v33 = 0UL;
- goto b62;
-b64: if (*(u*)(vn + 0UL) != 59UL) goto b122;
- v34 = 1UL;
- goto b66;
-b122: v34 = 0UL;
- goto b66;
-b68: if (*(u*)(vn + 0UL) != 47UL) goto b121;
- v35 = 1UL;
- goto b70;
-b121: v35 = 0UL;
- goto b70;
-b72: if (*(u*)(vn + 0UL) != 46UL) goto b120;
- v36 = 1UL;
- goto b74;
-b120: v36 = 0UL;
- goto b74;
-b76: if (*(u*)(vn + 0UL) != 45UL) goto b119;
- v37 = 1UL;
- goto b78;
-b119: v37 = 0UL;
- goto b78;
-b80: if (*(u*)(vn + 0UL) != 50UL) goto b118;
- v38 = 1UL;
- goto b82;
-b118: v38 = 0UL;
- goto b82;
-b84: if (*(u*)(vn + 0UL) != 44UL) goto b117;
- v39 = 1UL;
- goto b86;
-b117: v39 = 0UL;
- goto b86;
-b88: if (*(u*)(vn + 0UL) != 43UL) goto b116;
- v40 = 1UL;
- goto b90;
-b116: v40 = 0UL;
- goto b90;
-b92: if (*(u*)(vn + 0UL) != 42UL) goto b115;
- v41 = 1UL;
- goto b94;
-b115: v41 = 0UL;
- goto b94;
-b96: if (*(u*)(vn + 0UL) != 40UL) goto b114;
- v42 = 1UL;
- goto b98;
-b114: v42 = 0UL;
- goto b98;
-b100: if (*(u*)(vn + 0UL) != 41UL) goto b113;
- v43 = 1UL;
- goto b102;
-b113: v43 = 0UL;
- goto b102;
-b104: if (*(u*)(vn + 0UL) != 39UL) goto b112;
- v44 = 1UL;
- goto b106;
-b112: v44 = 0UL;
- goto b106;
-b108: if (*(u*)(vn + 0UL) != 38UL) goto b111;
- v45 = 1UL;
- goto b110;
-b111: v45 = 0UL;
- goto b110;
-b31: if (*(u*)(vn + 0UL) != 52UL) goto b34;
- v19 = 1UL;
- goto b33;
-b34: v19 = 0UL;
- goto b33;
-b5: v4 = 1UL;
- goto b6;
+ v32 = 0UL;
+ v33 = 3UL;
+ v34 = ((u(*)())(v28))(v29, v30, v31, v32, v33);
+ v34;
+ v35 = (u)zaarch64_addi;
+ v36 = vc;
+ v37 = 2UL;
+ v38 = 2UL;
+ v39 = 8UL;
+ v40 = ((u(*)())(v35))(v36, v37, v38, v39);
+ v40;
+b3: v48 = (u)zaarch64_output_irvars;
+ v49 = vc;
+ v50 = vic;
+ v51 = ((u(*)())(v48))(v49, v50);
+ v51;
+ v52 = (u)zaarch64_output_irblock;
+ v53 = vc;
+ v54 = vic;
+ v55 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v56 = ((u(*)())(v52))(v53, v54, v55);
+ v56;
+ v57 = (u)zirreset;
+ v58 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v59 = ((u(*)())(v57))(v58);
+ v59;
+ return 0UL;
+b5: v41 = (u)zstrcmp;
+ v42 = *(u*)(vd + 32UL);
+ v43 = (u)"_kstart";
+ v44 = ((u(*)())(v41))(v42, v43);
+ if (v44 != 0UL) goto b12;
+ v45 = (u)zdie;
+ v46 = (u)"unimplemented kstart on arm";
+ v47 = ((u(*)())(v45))(v46);
+ v47;
+ goto b3;
+b12: goto b3;
}
-u zcall_to_ir(u vic, u vn) {
- u vo = 0;
- u va = 0;
- u vb = 0;
- u vret = 0;
- u vnext = 0;
- u vcur = 0;
- u varg = 0;
- u vtmp = 0;
- u vfp = 0;
+u zaarch64_output_irargs(u vc, u vic, u vb, u vo) {
u vi = 0;
- u vcount = 0;
- u vslen = 0;
- u vblob = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- if (*(u*)(*(u*)(vn + 8UL) + 0UL) != 0UL) goto b5;
- v16 = (u)zstrcmp;
- v17 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v18 = (u)"_include";
- v19 = ((u(*)())v16)(v17, v18);
- if (v19 != 0UL) goto b5;
- v15 = 1UL;
-b7: if (!v15) goto b3;
- if (*(u*)(*(u*)(*(u*)(vn + 16UL) + 8UL) + 0UL) == 3UL) goto b11;
- v20 = (u)zcdie;
- v21 = *(u*)(vic + 0UL);
- v22 = (u)"non literal include";
- v23 = ((u(*)())v20)(v21, v22);
- v23;
-b9: v24 = (u)zgather_include;
- v25 = *(u*)(vic + 0UL);
- v26 = *(u*)(*(u*)(*(u*)(vn + 16UL) + 8UL) + 56UL);
- v27 = (u)&vslen;
- v28 = ((u(*)())v24)(v25, v26, v27);
- vblob = v28;
- v29 = (u)zexpr_to_ir;
- v30 = vic;
- v31 = *(u*)(*(u*)(*(u*)(vn + 16UL) + 16UL) + 8UL);
- v32 = ((u(*)())v29)(v30, v31);
- va = v32;
- v33 = (u)zmkirconst;
- v34 = vic;
- v35 = vslen;
- v36 = ((u(*)())v33)(v34, v35);
- vb = v36;
- v37 = (u)zmkirop;
- v38 = vic;
- v39 = 6UL;
- v40 = va;
- v41 = vb;
- v42 = ((u(*)())v37)(v38, v39, v40, v41);
- vo = v42;
- *(u*)(vo + 48UL) = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vn + 16UL) + 16UL) + 8UL) + 64UL) + 16UL);
- v43 = (u)ziraddop;
- v44 = vic;
- v45 = vo;
- v46 = ((u(*)())v43)(v44, v45);
- v46;
- v47 = (u)zmkirstr;
- v48 = vic;
- v49 = vblob;
- v50 = vslen;
- v51 = ((u(*)())v47)(v48, v49, v50);
- vo = v51;
- return vo;
-b11: goto b9;
-b3: v52 = (u)zmkirtmp;
- v53 = vic;
- v54 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v55 = ((u(*)())v52)(v53, v54);
- vfp = v55;
- v56 = (u)zexpr_to_ir;
- v57 = vic;
- v58 = *(u*)(vn + 8UL);
- v59 = ((u(*)())v56)(v57, v58);
- vb = v59;
- v60 = (u)zmkirop;
- v61 = vic;
- v62 = 6UL;
- v63 = vfp;
- v64 = vb;
- v65 = ((u(*)())v60)(v61, v62, v63, v64);
- vo = v65;
- *(u*)(vo + 48UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v66 = (u)ziraddop;
- v67 = vic;
- v68 = vo;
- v69 = ((u(*)())v66)(v67, v68);
- v69;
- varg = *(u*)(vn + 16UL);
- vcount = 0UL;
-b23: if (!varg) goto b29;
- v70 = 0UL;
-b30: if (!v70) goto b27;
- v71 = (u)zalloc;
- v72 = *(u*)(vic + 16UL);
- v73 = 8UL * vcount;
- v74 = ((u(*)())v71)(v72, v73);
- vtmp = v74;
- varg = *(u*)(vn + 16UL);
- vi = 0UL;
-b32: if (!varg) goto b38;
- v75 = 0UL;
-b39: if (!v75) goto b36;
- varg = *(u*)(vn + 16UL);
- vi = 0UL;
-b44: if (vi != vcount) goto b48;
- v103 = (u)zfree;
- v104 = *(u*)(vic + 16UL);
- v105 = vtmp;
- v106 = ((u(*)())v103)(v104, v105);
- v106;
- v107 = (u)zmkirtmp;
- v108 = vic;
- v109 = *(u*)(vn + 64UL);
- v110 = ((u(*)())v107)(v108, v109);
- vret = v110;
- v111 = (u)zmkirretval;
- v112 = vic;
- v113 = vret;
- v114 = *(u*)(vn + 64UL);
- v115 = ((u(*)())v111)(v112, v113, v114);
- vo = v115;
- v116 = (u)ziraddop;
- v117 = vic;
- v118 = vo;
- v119 = ((u(*)())v116)(v117, v118);
- v119;
- v120 = (u)zircall;
- v121 = vic;
- v122 = vfp;
- v123 = vcount;
- v124 = ((u(*)())v120)(v121, v122, v123);
- v124;
- return vret;
-b48: v94 = (u)zmkirarg;
- v95 = vic;
- v96 = vi;
- v97 = *(u*)(vtmp + vi * 8UL);
- v98 = ((u(*)())v94)(v95, v96, v97);
- vo = v98;
- v99 = (u)ziraddop;
- v100 = vic;
- v101 = vo;
- v102 = ((u(*)())v99)(v100, v101);
- v102;
- varg = *(u*)(varg + 16UL);
- vi = vi + 1UL;
- goto b44;
-b36: v76 = (u)zmkirtmp;
- v77 = vic;
- v78 = *(u*)(*(u*)(varg + 8UL) + 64UL);
- v79 = ((u(*)())v76)(v77, v78);
- *(u*)(vtmp + vi * 8UL) = v79;
- v80 = (u)zexpr_to_ir;
- v81 = vic;
- v82 = *(u*)(varg + 8UL);
- v83 = ((u(*)())v80)(v81, v82);
- vb = v83;
- v84 = (u)zmkirop;
- v85 = vic;
- v86 = 6UL;
- v87 = *(u*)(vtmp + vi * 8UL);
- v88 = vb;
- v89 = ((u(*)())v84)(v85, v86, v87, v88);
- vo = v89;
- *(u*)(vo + 48UL) = *(u*)(*(u*)(varg + 8UL) + 64UL);
- v90 = (u)ziraddop;
- v91 = vic;
- v92 = vo;
- v93 = ((u(*)())v90)(v91, v92);
- v93;
- varg = *(u*)(varg + 16UL);
- vi = vi + 1UL;
- goto b32;
-b38: v75 = 1UL;
- goto b39;
-b27: vcount = vcount + 1UL;
- varg = *(u*)(varg + 16UL);
- goto b23;
-b29: v70 = 1UL;
- goto b30;
-b5: v15 = 0UL;
- goto b7;
-}
-u zcdie(u vc, u vmsg) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- v2 = (u)zcshow_context;
- v3 = vc;
- v4 = ((u(*)())v2)(v3);
- v4;
- v5 = (u)zfputs;
- v6 = *(u*)(vc + 8UL);
- v7 = (u)"cdie: ";
- v8 = ((u(*)())v5)(v6, v7);
- v8;
- v9 = (u)zfputs;
- v10 = *(u*)(vc + 8UL);
- v11 = vmsg;
- v12 = ((u(*)())v9)(v10, v11);
- v12;
- v13 = (u)zfputs;
- v14 = *(u*)(vc + 8UL);
- v15 = (u)"\012";
- v16 = ((u(*)())v13)(v14, v15);
- v16;
- v17 = (u)zexit;
- v18 = 1UL;
- v19 = ((u(*)())v17)(v18);
- v19;
- return 0UL;
-}
-u zcheck_usage(u vc) {
- u vd = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
-b1: vd = *(u*)(vc + 104UL);
- if (!vd) goto b7;
- v2 = 0UL;
-b8: if (!v2) goto b5;
- return 0UL;
-b5: *(u*)(vc + 104UL) = *(u*)(vd + 48UL);
- if (!*(u*)(vd + 112UL)) goto b11;
- v3 = (u)zmark_ir_used;
- v4 = vc;
- v5 = vd;
- v6 = ((u(*)())v3)(v4, v5);
- v6;
-b9: goto b1;
-b11: goto b9;
-b7: v2 = 1UL;
- goto b8;
-}
-u zclose(u vfd) {
- return (u)close((int)vfd);
-}
-u zcomp_setup(u va, u verr) {
- u vc = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- v3 = (u)zalloc;
- v4 = va;
- v5 = 160UL;
- v6 = ((u(*)())v3)(v4, v5);
- vc = v6;
- *(u*)(vc + 0UL) = va;
- *(u*)(vc + 8UL) = verr;
- v7 = (u)zsetup_parser;
- v8 = vc;
- v9 = verr;
- v10 = ((u(*)())v7)(v8, v9);
- *(u*)(vc + 16UL) = v10;
- *(u*)(vc + 24UL) = 0UL;
- *(u*)(vc + 32UL) = 0UL;
- *(u*)(vc + 40UL) = 0UL;
- v11 = (u)zsetup_assembler;
- v12 = va;
- v13 = ((u(*)())v11)(v12);
- *(u*)(vc + 48UL) = v13;
- *(u*)(vc + 56UL) = 0UL;
- *(u*)(vc + 64UL) = 0UL;
- *(u*)(vc + 72UL) = 0UL;
- *(u*)(vc + 88UL) = 0UL;
- *(u*)(vc + 96UL) = 0UL;
- *(u*)(vc + 104UL) = 0UL;
- return vc;
-}
-u zcompile(u vc, u vp) {
- u vn = 0;
- u vd = 0;
- u vv = 0;
- u vkind = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
+ u vop = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ vi = 0UL;
+b1: if (vi != *(u*)(vb + 16UL)) goto b5;
+ return 0UL;
+b5: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
+ if (*(u*)(vop + 0UL) != 8UL) goto b8;
+ v6 = (u)zaarch64_output_irexpr;
+ v7 = vc;
+ v8 = vic;
+ v9 = vb;
+ v10 = *(u*)(vop + 8UL);
+ v11 = ((u(*)())(v6))(v7, v8, v9, v10);
+ v11;
+ if ((s)(*(u*)(vop + 24UL)) >= (s)8UL) goto b12;
+ v12 = (u)zaarch64_mov;
+ v13 = vc;
+ v14 = *(u*)(vop + 24UL);
+ v15 = 16UL;
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ v16;
+b10:b6: vi = vi + 1UL;
+ goto b1;
+b12: v17 = (u)zaarch64_str;
+ v18 = vc;
+ v19 = 16UL;
+ v20 = 31UL;
+ v21 = *(u*)(vop + 24UL) - 8UL;
+ v22 = ((u(*)())(v17))(v18, v19, v20, v21);
+ v22;
+ goto b10;
+b8: goto b6;
+}
+u zaarch64_output_irblock(u vc, u vic, u vb) {
+ u vop = 0;
+ u vi = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ *(u*)(vb + 80UL) = 1UL;
+ if (!(*(u*)(vb + 32UL))) goto b5;
+ v5 = 0UL;
+b6: if (!(v5)) goto b3;
+ v6 = (u)zcdie;
+ v7 = *(u*)(vic + 0UL);
+ v8 = (u)"no return in function";
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+b1: v10 = (u)zfixup_label;
+ v11 = *(u*)(vic + 8UL);
+ v12 = *(u*)(vb + 72UL);
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+ vi = 0UL;
+b9: if (vi != *(u*)(vb + 16UL)) goto b13;
+ return 0UL;
+b13: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
+ v14 = (u)zaarch64_output_irstmt;
+ v15 = vc;
+ v16 = vic;
+ v17 = vb;
+ v18 = vop;
+ v19 = ((u(*)())(v14))(v15, v16, v17, v18);
+ v19;
+ vi = vi + 1UL;
+ goto b9;
+b3: goto b1;
+b5: v5 = 1UL;
+ goto b6;
+}
+u zaarch64_output_ircall(u vc, u vic, u vb, u vo) {
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ v4 = (u)zaarch64_output_irexpr;
+ v5 = vc;
+ v6 = vic;
+ v7 = vb;
+ v8 = vo;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ v9;
+ v10 = (u)zaarch64_blr;
+ v11 = vc;
+ v12 = 16UL;
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+ return 0UL;
+}
+u zaarch64_output_irexpr(u vc, u vic, u vb, u vo) {
+ u vkind = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
u v15 = 0;
u v16 = 0;
u v17 = 0;
@@ -2743,641 +2289,1137 @@ u zcompile(u vc, u vp) {
u v170 = 0;
u v171 = 0;
u v172 = 0;
- vn = vp;
-b1: if (!vn) goto b7;
- v6 = 0UL;
-b8: if (!v6) goto b5;
- vn = vp;
-b34: if (!vn) goto b40;
- v26 = 0UL;
-b41: if (!v26) goto b38;
- v45 = (u)zfirst_decl;
- v46 = vc;
- v47 = ((u(*)())v45)(v46);
- vd = v47;
-b56: if (!vd) goto b62;
- v48 = 0UL;
-b63: if (!v48) goto b60;
- v57 = (u)zfirst_decl;
- v58 = vc;
- v59 = ((u(*)())v57)(v58);
- vd = v59;
-b70: if (!vd) goto b76;
- v60 = 0UL;
-b77: if (!v60) goto b74;
- v75 = (u)zfind;
- v76 = vc;
- v77 = (u)"_start";
- v78 = 0UL;
- v79 = 0UL;
- v80 = ((u(*)())v75)(v76, v77, v78, v79);
- vd = v80;
- if (!vd) goto b93;
- if (!*(u*)(vd + 72UL)) goto b93;
- v81 = 1UL;
-b95: if (!v81) goto b91;
- *(u*)(vc + 88UL) = *(u*)(vd + 88UL);
- v82 = (u)zmark_func_used;
- v83 = vc;
- v84 = 0UL;
- v85 = vd;
- v86 = ((u(*)())v82)(v83, v84, v85);
- v86;
-b89: v87 = (u)zfind;
- v88 = vc;
- v89 = (u)"_kstart";
- v90 = 0UL;
- v91 = 0UL;
- v92 = ((u(*)())v87)(v88, v89, v90, v91);
- vd = v92;
- if (!vd) goto b102;
- if (!*(u*)(vd + 72UL)) goto b102;
- v93 = 1UL;
-b104: if (!v93) goto b100;
- *(u*)(vc + 96UL) = *(u*)(vd + 88UL);
- v94 = (u)zmark_func_used;
- v95 = vc;
- v96 = 0UL;
- v97 = vd;
- v98 = ((u(*)())v94)(v95, v96, v97);
- v98;
-b98: v99 = (u)zcheck_usage;
- v100 = vc;
- v101 = ((u(*)())v99)(v100);
- v101;
- v102 = (u)zfind;
- v103 = vc;
- v104 = (u)"_isr0";
- v105 = 0UL;
- v106 = 0UL;
- v107 = ((u(*)())v102)(v103, v104, v105, v106);
- vd = v107;
- if (!vd) goto b112;
- if (!*(u*)(vd + 96UL)) goto b112;
- v108 = 1UL;
-b114: if (!v108) goto b110;
- v109 = (u)zfind;
- v110 = vc;
- v111 = (u)"_isr";
- v112 = 0UL;
- v113 = 0UL;
- v114 = ((u(*)())v109)(v110, v111, v112, v113);
- vv = v114;
- if (!vv) goto b120;
- if (!*(u*)(vv + 72UL)) goto b120;
- v115 = 1UL;
-b122: if (!v115) goto b118;
- v116 = (u)zmark_func_used;
- v117 = vc;
- v118 = vd;
- v119 = vv;
- v120 = ((u(*)())v116)(v117, v118, v119);
- v120;
-b116:b108: v121 = (u)zfind;
- v122 = vc;
- v123 = (u)"_ssr0";
- v124 = 0UL;
- v125 = 0UL;
- v126 = ((u(*)())v121)(v122, v123, v124, v125);
- vd = v126;
- if (!vd) goto b129;
- if (!*(u*)(vd + 96UL)) goto b129;
- v127 = 1UL;
-b131: if (!v127) goto b127;
- v128 = (u)zfind;
- v129 = vc;
- v130 = (u)"_ssr";
- v131 = 0UL;
- v132 = 0UL;
- v133 = ((u(*)())v128)(v129, v130, v131, v132);
- vv = v133;
- if (!vv) goto b137;
- if (!*(u*)(vv + 72UL)) goto b137;
- v134 = 1UL;
-b139: if (!v134) goto b135;
- v135 = (u)zmark_func_used;
- v136 = vc;
- v137 = vd;
- v138 = vv;
- v139 = ((u(*)())v135)(v136, v137, v138);
- v139;
-b133:b125: v140 = (u)zcheck_usage;
- v141 = vc;
- v142 = ((u(*)())v140)(v141);
- v142;
- if (!*(u*)(vc + 80UL)) goto b144;
- v143 = (u)zfflush;
- v144 = *(u*)(vc + 80UL);
- v145 = ((u(*)())v143)(v144);
- v145;
-b142: v146 = (u)zfirst_decl;
- v147 = vc;
- v148 = ((u(*)())v146)(v147);
- vd = v148;
-b147: if (!vd) goto b153;
- v149 = 0UL;
-b154: if (!v149) goto b151;
- v159 = (u)zfirst_decl;
- v160 = vc;
- v161 = ((u(*)())v159)(v160);
- vd = v161;
-b169: if (!vd) goto b175;
- v162 = 0UL;
-b176: if (!v162) goto b173;
- return 0UL;
-b173: if (!*(u*)(vd + 96UL)) goto b185;
- if (!*(u*)(vd + 72UL)) goto b185;
- v164 = 1UL;
-b187: if (!v164) goto b181;
- if (!*(u*)(vd + 112UL)) goto b181;
- v163 = 1UL;
-b183: if (!v163) goto b179;
- v165 = (u)zoutput_ir;
- v166 = vc;
- v167 = vd;
- v168 = ((u(*)())v165)(v166, v167);
- v168;
-b177: v169 = (u)znext_decl;
- v170 = vc;
- v171 = vd;
- v172 = ((u(*)())v169)(v170, v171);
- vd = v172;
- goto b169;
-b179: goto b177;
-b181: v163 = 0UL;
- goto b183;
-b185: v164 = 0UL;
- goto b187;
-b175: v162 = 1UL;
- goto b176;
-b151: if (!*(u*)(vd + 96UL)) goto b163;
- if (!*(u*)(vd + 72UL)) goto b163;
- v151 = 1UL;
-b165: if (!v151) goto b159;
- if (!*(u*)(vd + 112UL)) goto b159;
- v150 = 1UL;
-b161: if (!v150) goto b157;
- v152 = (u)zir_optimize;
- v153 = *(u*)(vd + 112UL);
- v154 = ((u(*)())v152)(v153);
- v154;
-b155: v155 = (u)znext_decl;
- v156 = vc;
- v157 = vd;
- v158 = ((u(*)())v155)(v156, v157);
- vd = v158;
- goto b147;
-b157: goto b155;
-b159: v150 = 0UL;
- goto b161;
-b163: v151 = 0UL;
- goto b165;
-b153: v149 = 1UL;
- goto b154;
-b144: goto b142;
-b135: goto b133;
-b137: v134 = 0UL;
- goto b139;
-b127: goto b125;
-b129: v127 = 0UL;
- goto b131;
-b118: goto b116;
-b120: v115 = 0UL;
- goto b122;
-b110: goto b108;
-b112: v108 = 0UL;
- goto b114;
-b100: goto b98;
-b102: v93 = 0UL;
- goto b104;
-b91: goto b89;
-b93: v81 = 0UL;
- goto b95;
-b74: if (!*(u*)(vd + 72UL)) goto b82;
- if (!*(u*)(vd + 104UL)) goto b82;
- v61 = 1UL;
-b84: if (!v61) goto b80;
- v62 = (u)ztypecheck_stmt;
- v63 = vc;
- v64 = vd;
- v65 = *(u*)(*(u*)(vd + 104UL) + 16UL);
- v66 = ((u(*)())v62)(v63, v64, v65);
- v66;
- v67 = (u)zfunc_to_ir;
- v68 = vc;
- v69 = *(u*)(vd + 104UL);
- v70 = ((u(*)())v67)(v68, v69);
- *(u*)(vd + 112UL) = v70;
-b78: v71 = (u)znext_decl;
- v72 = vc;
- v73 = vd;
- v74 = ((u(*)())v71)(v72, v73);
- vd = v74;
- goto b70;
-b80: goto b78;
-b82: v61 = 0UL;
- goto b84;
-b76: v60 = 1UL;
- goto b77;
-b60: if (!*(u*)(vd + 128UL)) goto b66;
- v49 = (u)zlayout_struct;
- v50 = vc;
- v51 = vd;
- v52 = ((u(*)())v49)(v50, v51);
- v52;
-b64: v53 = (u)znext_decl;
- v54 = vc;
- v55 = vd;
- v56 = ((u(*)())v53)(v54, v55);
- vd = v56;
- goto b56;
-b66: goto b64;
-b62: v48 = 1UL;
- goto b63;
-b38: vkind = *(u*)(*(u*)(vn + 8UL) + 0UL);
- if (vkind != 13UL) goto b44;
- v27 = (u)zdefextern;
- v28 = vc;
- v29 = *(u*)(vn + 8UL);
- v30 = ((u(*)())v27)(v28, v29);
- v30;
-b42: vn = *(u*)(vn + 16UL);
- goto b34;
-b44: if (vkind != 11UL) goto b47;
- v31 = (u)zdefun;
- v32 = vc;
- v33 = *(u*)(vn + 8UL);
- v34 = ((u(*)())v31)(v32, v33);
- v34;
- goto b42;
-b47: if (vkind != 70UL) goto b50;
- v35 = (u)zlexer_compile;
- v36 = vc;
- v37 = *(u*)(vn + 8UL);
- v38 = 0UL;
- v39 = ((u(*)())v35)(v36, v37, v38);
- v39;
- goto b42;
-b50: if (vkind != 75UL) goto b53;
- v40 = (u)zlalr_compiler;
- v41 = vc;
- v42 = *(u*)(vn + 8UL);
- v43 = 0UL;
- v44 = ((u(*)())v40)(v41, v42, v43);
- v44;
- goto b42;
-b53: goto b42;
-b40: v26 = 1UL;
- goto b41;
-b5: vkind = *(u*)(*(u*)(vn + 8UL) + 0UL);
- if (vkind != 17UL) goto b11;
- v7 = (u)zdefstruct;
- v8 = vc;
- v9 = *(u*)(vn + 8UL);
- v10 = ((u(*)())v7)(v8, v9);
- v10;
-b9: vn = *(u*)(vn + 16UL);
- goto b1;
-b11: if (vkind != 18UL) goto b14;
- v11 = (u)zdefunion;
- v12 = vc;
- v13 = *(u*)(vn + 8UL);
- v14 = ((u(*)())v11)(v12, v13);
- v14;
- goto b9;
-b14: if (vkind != 23UL) goto b17;
- v15 = (u)zdefenum;
- v16 = vc;
- v17 = *(u*)(vn + 8UL);
- v18 = ((u(*)())v15)(v16, v17);
- v18;
- goto b9;
-b17: if (vkind == 11UL) goto b30;
- if (vkind == 13UL) goto b30;
- v21 = 1UL;
-b32: if (!v21) goto b26;
- if (vkind == 70UL) goto b26;
- v20 = 1UL;
-b28: if (!v20) goto b22;
- if (vkind == 75UL) goto b22;
- v19 = 1UL;
-b24: if (!v19) goto b20;
- v22 = (u)zcdie;
- v23 = vc;
- v24 = (u)"invalid decl";
- v25 = ((u(*)())v22)(v23, v24);
- v25;
- goto b9;
-b20: goto b9;
-b22: v19 = 0UL;
- goto b24;
-b26: v20 = 0UL;
- goto b28;
-b30: v21 = 0UL;
- goto b32;
-b7: v6 = 1UL;
- goto b8;
-}
-u zconcat_program(u va, u vb) {
- u vret = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- if (!va) goto b5;
- v3 = 0UL;
-b6: if (!v3) goto b3;
- return vb;
-b3: if (!vb) goto b11;
- v4 = 0UL;
-b12: if (!v4) goto b9;
- return va;
-b9: vret = va;
-b13: if (!*(u*)(va + 16UL)) goto b19;
- v5 = 0UL;
-b20: if (!v5) goto b17;
- *(u*)(va + 16UL) = vb;
- return vret;
-b17: va = *(u*)(va + 16UL);
- goto b13;
-b19: v5 = 1UL;
- goto b20;
-b11: v4 = 1UL;
- goto b12;
-b5: v3 = 1UL;
- goto b6;
-}
-u zcshow_context(u vc) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- v1 = (u)zfputs;
- v2 = *(u*)(vc + 8UL);
- v3 = (u)"on ";
- v4 = ((u(*)())v1)(v2, v3);
- v4;
- if (!*(u*)(vc + 24UL)) goto b4;
- v5 = (u)zfputs;
- v6 = *(u*)(vc + 8UL);
- v7 = *(u*)(vc + 24UL);
- v8 = ((u(*)())v5)(v6, v7);
- v8;
-b2: v9 = (u)zfputs;
- v10 = *(u*)(vc + 8UL);
- v11 = (u)":";
- v12 = ((u(*)())v9)(v10, v11);
- v12;
- v13 = (u)zfputd;
- v14 = *(u*)(vc + 8UL);
- v15 = *(u*)(vc + 32UL);
- v16 = ((u(*)())v13)(v14, v15);
- v16;
- v17 = (u)zfputs;
- v18 = *(u*)(vc + 8UL);
- v19 = (u)":";
- v20 = ((u(*)())v17)(v18, v19);
- v20;
- v21 = (u)zfputd;
- v22 = *(u*)(vc + 8UL);
- v23 = *(u*)(vc + 40UL);
- v24 = ((u(*)())v21)(v22, v23);
- v24;
- v25 = (u)zfputs;
- v26 = *(u*)(vc + 8UL);
- v27 = (u)"\012";
- v28 = ((u(*)())v25)(v26, v27);
- v28;
- return 0UL;
-b4: goto b2;
-}
-u zdec2int(u vs, u vlen, u vok) {
- u vx = 0;
- u vd = 0;
- u vi = 0;
- u v6 = 0;
- vx = 0UL;
- vi = 0UL;
-b1: if (vi != vlen) goto b5;
- *(u*)vok = 1UL;
- return vx;
-b5: vd = (u)*(b*)(vs + vi * 1UL);
- if (vd != 95UL) goto b8;
- vi = vi + 1UL;
- goto b1;
-b8: if ((s)vd < (s)48UL) goto b12;
- if ((s)vd > (s)57UL) goto b12;
- v6 = 1UL;
-b14: if (!v6) goto b10;
- vd = vd - 48UL;
- if ((s)vx <= (s)461168601842738790UL) goto b17;
- *(u*)vok = 0UL;
- return 0UL;
-b17: vx = vx * 10UL;
- if ((s)vx <= (s)((1UL << 63UL) - 1UL - vd)) goto b20;
- *(u*)vok = 0UL;
- return 0UL;
-b20: vx = vx + vd;
- vi = vi + 1UL;
- goto b1;
-b10: *(u*)vok = 0UL;
- return 0UL;
-b12: v6 = 0UL;
- goto b14;
-}
-u zdefenum(u vc, u vn) {
- u vi = 0;
- u vname = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- vn = *(u*)(vn + 8UL);
- vi = 0UL;
-b1: if (!vn) goto b7;
- v4 = 0UL;
-b8: if (!v4) goto b5;
- return 0UL;
-b5: *(u*)(vc + 24UL) = *(u*)(*(u*)(vn + 8UL) + 24UL);
- *(u*)(vc + 32UL) = *(u*)(*(u*)(vn + 8UL) + 32UL);
- *(u*)(vc + 40UL) = *(u*)(*(u*)(vn + 8UL) + 40UL);
- vname = *(u*)(*(u*)(*(u*)(vn + 8UL) + 8UL) + 56UL);
- if (!*(u*)(*(u*)(vn + 8UL) + 16UL)) goto b11;
- vi = *(u*)(*(u*)(*(u*)(vn + 8UL) + 16UL) + 48UL);
-b9: v5 = (u)zdefine_enum_tag;
- v6 = vc;
- v7 = vname;
- v8 = vi;
- v9 = ((u(*)())v5)(v6, v7, v8);
- v9;
- vi = vi + 1UL;
- vn = *(u*)(vn + 16UL);
- goto b1;
-b11: goto b9;
-b7: v4 = 1UL;
- goto b8;
-}
-u zdefextern(u vc, u vn) {
- u vd = 0;
- u vname = 0;
- u vt = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
- *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
- *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
- vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v5 = (u)zprototype;
- v6 = vc;
- v7 = *(u*)(vn + 16UL);
- v8 = ((u(*)())v5)(v6, v7);
- vt = v8;
- v9 = (u)zfind;
- v10 = vc;
- v11 = vname;
- v12 = 0UL;
- v13 = 1UL;
- v14 = ((u(*)())v9)(v10, v11, v12, v13);
- vd = v14;
- v15 = (u)zstrcmp;
- v16 = *(u*)(vn + 24UL);
- v17 = (u)"syscall.om";
- v18 = ((u(*)())v15)(v16, v17);
- if (v18 != 0UL) goto b5;
- *(u*)(vd + 120UL) = 1UL;
-b3: if (!*(u*)(vd + 72UL)) goto b9;
- v19 = (u)zunify;
- v20 = vc;
- v21 = *(u*)(vd + 80UL);
- v22 = vt;
- v23 = ((u(*)())v19)(v20, v21, v22);
- v23;
- return vd;
-b9: *(u*)(vd + 72UL) = 1UL;
- *(u*)(vd + 80UL) = vt;
- return vd;
-b5: goto b3;
-}
-u zdefine_enum_tag(u vc, u vname, u vvalue) {
- u vd = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- v4 = (u)zfind;
- v5 = vc;
- v6 = vname;
- v7 = 0UL;
- v8 = 1UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vd = v9;
- if (!*(u*)(vd + 192UL)) goto b4;
- v10 = (u)zcdie;
- v11 = vc;
- v12 = (u)"duplicate enum";
- v13 = ((u(*)())v10)(v11, v12);
- v13;
-b2: *(u*)(vd + 192UL) = 1UL;
- *(u*)(vd + 200UL) = vvalue;
- return 0UL;
-b4: goto b2;
-}
-u zdefine_ir_func(u vc, u vic, u vt) {
- u vd = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- v4 = (u)zfind;
- v5 = vc;
- v6 = *(u*)(vic + 24UL);
- v7 = 0UL;
- v8 = 1UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vd = v9;
- if (*(u*)(vd + 72UL) != 2UL) goto b4;
- v10 = (u)zcdie;
+ u v173 = 0;
+ u v174 = 0;
+ u v175 = 0;
+ u v176 = 0;
+ u v177 = 0;
+ u v178 = 0;
+ u v179 = 0;
+ u v180 = 0;
+ u v181 = 0;
+ u v182 = 0;
+ u v183 = 0;
+ u v184 = 0;
+ u v185 = 0;
+ u v186 = 0;
+ u v187 = 0;
+ u v188 = 0;
+ u v189 = 0;
+ u v190 = 0;
+ u v191 = 0;
+ u v192 = 0;
+ u v193 = 0;
+ u v194 = 0;
+ u v195 = 0;
+ u v196 = 0;
+ u v197 = 0;
+ u v198 = 0;
+ u v199 = 0;
+ u v200 = 0;
+ u v201 = 0;
+ u v202 = 0;
+ u v203 = 0;
+ u v204 = 0;
+ u v205 = 0;
+ u v206 = 0;
+ u v207 = 0;
+ u v208 = 0;
+ u v209 = 0;
+ u v210 = 0;
+ u v211 = 0;
+ u v212 = 0;
+ u v213 = 0;
+ u v214 = 0;
+ u v215 = 0;
+ u v216 = 0;
+ u v217 = 0;
+ u v218 = 0;
+ u v219 = 0;
+ u v220 = 0;
+ u v221 = 0;
+ u v222 = 0;
+ u v223 = 0;
+ u v224 = 0;
+ u v225 = 0;
+ u v226 = 0;
+ u v227 = 0;
+ u v228 = 0;
+ u v229 = 0;
+ u v230 = 0;
+ u v231 = 0;
+ u v232 = 0;
+ u v233 = 0;
+ u v234 = 0;
+ u v235 = 0;
+ u v236 = 0;
+ u v237 = 0;
+ u v238 = 0;
+ u v239 = 0;
+ u v240 = 0;
+ u v241 = 0;
+ u v242 = 0;
+ u v243 = 0;
+ u v244 = 0;
+ u v245 = 0;
+ u v246 = 0;
+ u v247 = 0;
+ u v248 = 0;
+ u v249 = 0;
+ u v250 = 0;
+ u v251 = 0;
+ u v252 = 0;
+ u v253 = 0;
+ u v254 = 0;
+ u v255 = 0;
+ u v256 = 0;
+ u v257 = 0;
+ u v258 = 0;
+ u v259 = 0;
+ u v260 = 0;
+ u v261 = 0;
+ u v262 = 0;
+ u v263 = 0;
+ u v264 = 0;
+ u v265 = 0;
+ u v266 = 0;
+ u v267 = 0;
+ u v268 = 0;
+ u v269 = 0;
+ u v270 = 0;
+ u v271 = 0;
+ u v272 = 0;
+ u v273 = 0;
+ u v274 = 0;
+ u v275 = 0;
+ u v276 = 0;
+ u v277 = 0;
+ u v278 = 0;
+ u v279 = 0;
+ u v280 = 0;
+ u v281 = 0;
+ u v282 = 0;
+ u v283 = 0;
+ u v284 = 0;
+ u v285 = 0;
+ u v286 = 0;
+ u v287 = 0;
+ u v288 = 0;
+ u v289 = 0;
+ u v290 = 0;
+ u v291 = 0;
+ u v292 = 0;
+ u v293 = 0;
+ u v294 = 0;
+ u v295 = 0;
+ u v296 = 0;
+ u v297 = 0;
+ u v298 = 0;
+ u v299 = 0;
+ u v300 = 0;
+ u v301 = 0;
+ u v302 = 0;
+ u v303 = 0;
+ u v304 = 0;
+ u v305 = 0;
+ u v306 = 0;
+ u v307 = 0;
+ u v308 = 0;
+ u v309 = 0;
+ u v310 = 0;
+ u v311 = 0;
+ u v312 = 0;
+ u v313 = 0;
+ u v314 = 0;
+ u v315 = 0;
+ u v316 = 0;
+ u v317 = 0;
+ u v318 = 0;
+ u v319 = 0;
+ u v320 = 0;
+ u v321 = 0;
+ u v322 = 0;
+ u v323 = 0;
+ u v324 = 0;
+ u v325 = 0;
+ u v326 = 0;
+ u v327 = 0;
+ u v328 = 0;
+ u v329 = 0;
+ u v330 = 0;
+ u v331 = 0;
+ u v332 = 0;
+ u v333 = 0;
+ u v334 = 0;
+ u v335 = 0;
+ u v336 = 0;
+ u v337 = 0;
+ u v338 = 0;
+ u v339 = 0;
+ u v340 = 0;
+ u v341 = 0;
+ u v342 = 0;
+ u v343 = 0;
+ u v344 = 0;
+ u v345 = 0;
+ u v346 = 0;
+ u v347 = 0;
+ u v348 = 0;
+ u v349 = 0;
+ u v350 = 0;
+ u v351 = 0;
+ u v352 = 0;
+ u v353 = 0;
+ u v354 = 0;
+ u v355 = 0;
+ u v356 = 0;
+ u v357 = 0;
+ u v358 = 0;
+ u v359 = 0;
+ u v360 = 0;
+ u v361 = 0;
+ u v362 = 0;
+ u v363 = 0;
+ u v364 = 0;
+ u v365 = 0;
+ u v366 = 0;
+ u v367 = 0;
+ u v368 = 0;
+ u v369 = 0;
+ u v370 = 0;
+ u v371 = 0;
+ u v372 = 0;
+ u v373 = 0;
+ u v374 = 0;
+ u v375 = 0;
+ u v376 = 0;
+ u v377 = 0;
+ u v378 = 0;
+ u v379 = 0;
+ u v380 = 0;
+ u v381 = 0;
+ u v382 = 0;
+ u v383 = 0;
+ u v384 = 0;
+ u v385 = 0;
+ u v386 = 0;
+ u v387 = 0;
+ u v388 = 0;
+ u v389 = 0;
+ u v390 = 0;
+ u v391 = 0;
+ u v392 = 0;
+ u v393 = 0;
+ u v394 = 0;
+ u v395 = 0;
+ u v396 = 0;
+ u v397 = 0;
+ u v398 = 0;
+ u v399 = 0;
+ u v400 = 0;
+ u v401 = 0;
+ u v402 = 0;
+ u v403 = 0;
+ u v404 = 0;
+ u v405 = 0;
+ u v406 = 0;
+ u v407 = 0;
+ u v408 = 0;
+ u v409 = 0;
+ u v410 = 0;
+ u v411 = 0;
+ u v412 = 0;
+ u v413 = 0;
+ u v414 = 0;
+ u v415 = 0;
+ u v416 = 0;
+ u v417 = 0;
+ u v418 = 0;
+ u v419 = 0;
+ u v420 = 0;
+ u v421 = 0;
+ u v422 = 0;
+ u v423 = 0;
+ u v424 = 0;
+ u v425 = 0;
+ u v426 = 0;
+ u v427 = 0;
+ u v428 = 0;
+ u v429 = 0;
+ u v430 = 0;
+ u v431 = 0;
+ u v432 = 0;
+ u v433 = 0;
+ u v434 = 0;
+ u v435 = 0;
+ u v436 = 0;
+ u v437 = 0;
+ u v438 = 0;
+ u v439 = 0;
+ u v440 = 0;
+ u v441 = 0;
+ u v442 = 0;
+ u v443 = 0;
+ u v444 = 0;
+ u v445 = 0;
+ u v446 = 0;
+ u v447 = 0;
+ u v448 = 0;
+ u v449 = 0;
+ u v450 = 0;
+ u v451 = 0;
+ u v452 = 0;
+ u v453 = 0;
+ u v454 = 0;
+ u v455 = 0;
+ u v456 = 0;
+ u v457 = 0;
+ u v458 = 0;
+ u v459 = 0;
+ u v460 = 0;
+ u v461 = 0;
+ u v462 = 0;
+ u v463 = 0;
+ u v464 = 0;
+ u v465 = 0;
+ u v466 = 0;
+ u v467 = 0;
+ u v468 = 0;
+ u v469 = 0;
+ u v470 = 0;
+ u v471 = 0;
+ u v472 = 0;
+ u v473 = 0;
+ u v474 = 0;
+ u v475 = 0;
+ u v476 = 0;
+ u v477 = 0;
+ u v478 = 0;
+ u v479 = 0;
+ u v480 = 0;
+ u v481 = 0;
+ u v482 = 0;
+ u v483 = 0;
+ u v484 = 0;
+ u v485 = 0;
+ u v486 = 0;
+ u v487 = 0;
+ u v488 = 0;
+ u v489 = 0;
+ u v490 = 0;
+ u v491 = 0;
+ u v492 = 0;
+ u v493 = 0;
+ u v494 = 0;
+ u v495 = 0;
+ u v496 = 0;
+ u v497 = 0;
+ u v498 = 0;
+ u v499 = 0;
+ u v500 = 0;
+ u v501 = 0;
+ u v502 = 0;
+ u v503 = 0;
+ u v504 = 0;
+ u v505 = 0;
+ u v506 = 0;
+ u v507 = 0;
+ u v508 = 0;
+ u v509 = 0;
+ u v510 = 0;
+ u v511 = 0;
+ u v512 = 0;
+ u v513 = 0;
+ u v514 = 0;
+ u v515 = 0;
+ u v516 = 0;
+ u v517 = 0;
+ u v518 = 0;
+ u v519 = 0;
+ u v520 = 0;
+ u v521 = 0;
+ u v522 = 0;
+ u v523 = 0;
+ u v524 = 0;
+ u v525 = 0;
+ u v526 = 0;
+ u v527 = 0;
+ u v528 = 0;
+ u v529 = 0;
+ u v530 = 0;
+ u v531 = 0;
+ u v532 = 0;
+ u v533 = 0;
+ u v534 = 0;
+ u v535 = 0;
+ u v536 = 0;
+ u v537 = 0;
+ u v538 = 0;
+ u v539 = 0;
+ u v540 = 0;
+ u v541 = 0;
+ u v542 = 0;
+ u v543 = 0;
+ u v544 = 0;
+ u v545 = 0;
+ u v546 = 0;
+ u v547 = 0;
+ u v548 = 0;
+ u v549 = 0;
+ u v550 = 0;
+ u v551 = 0;
+ u v552 = 0;
+ u v553 = 0;
+ u v554 = 0;
+ u v555 = 0;
+ u v556 = 0;
+ u v557 = 0;
+ u v558 = 0;
+ if (!(vo)) goto b5;
+ v5 = 0UL;
+b6: if (!(v5)) goto b3;
+ v6 = (u)zcdie;
+ v7 = *(u*)(vic + 0UL);
+ v8 = (u)"no expr";
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+b1: vkind = *(u*)(vo + 0UL);
+ if (vkind != 0UL) goto b10;
+ v10 = (u)zaarch64_ldr;
v11 = vc;
- v12 = (u)"duplicate func";
- v13 = ((u(*)())v10)(v11, v12);
- v13;
-b2: if (!*(u*)(vd + 72UL)) goto b8;
- v14 = (u)zunify;
- v15 = vc;
- v16 = *(u*)(vd + 80UL);
- v17 = vt;
- v18 = ((u(*)())v14)(v15, v16, v17);
- v18;
-b6: *(u*)(vd + 72UL) = 2UL;
- *(u*)(vd + 80UL) = vt;
- *(u*)(vd + 112UL) = vic;
- return 0UL;
-b8: goto b6;
-b4: goto b2;
+ v12 = 16UL;
+ v13 = 29UL;
+ v14 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(vo + 24UL) * 8UL) + 40UL) >> 3UL;
+ v15 = ((u(*)())(v10))(v11, v12, v13, v14);
+ v15;
+b8: return 0UL;
+b10: if (vkind != 1UL) goto b13;
+ v16 = (u)zaarch64_addi;
+ v17 = vc;
+ v18 = 16UL;
+ v19 = 29UL;
+ v20 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(vo + 24UL) * 8UL) + 40UL);
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ v21;
+ goto b8;
+b13: if (vkind != 2UL) goto b16;
+ v22 = (u)zaarch64_output_irfuncptr;
+ v23 = vc;
+ v24 = vic;
+ v25 = vb;
+ v26 = vo;
+ v27 = ((u(*)())(v22))(v23, v24, v25, v26);
+ v27;
+ goto b8;
+b16: if (vkind != 3UL) goto b19;
+ v28 = (u)zaarch64_movz;
+ v29 = vc;
+ v30 = 16UL;
+ v31 = 0UL;
+ v32 = *(u*)(vo + 24UL);
+ v33 = ((u(*)())(v28))(v29, v30, v31, v32);
+ v33;
+ if ((s)(*(u*)(vo + 24UL)) >= (s)0UL) goto b25;
+ v34 = 1UL;
+b27: if (!(v34)) goto b23;
+ v35 = (u)zaarch64_movk;
+ v36 = vc;
+ v37 = 16UL;
+ v38 = 1UL;
+ v39 = *(u*)(vo + 24UL) >> 16UL;
+ v40 = ((u(*)())(v35))(v36, v37, v38, v39);
+ v40;
+b21: if ((s)(*(u*)(vo + 24UL)) >= (s)0UL) goto b34;
+ v41 = 1UL;
+b36: if (!(v41)) goto b32;
+ v42 = (u)zaarch64_movk;
+ v43 = vc;
+ v44 = 16UL;
+ v45 = 2UL;
+ v46 = *(u*)(vo + 24UL) >> 32UL;
+ v47 = ((u(*)())(v42))(v43, v44, v45, v46);
+ v47;
+b30: if ((s)(*(u*)(vo + 24UL)) >= (s)0UL) goto b43;
+ v48 = 1UL;
+b45: if (!(v48)) goto b41;
+ v49 = (u)zaarch64_movk;
+ v50 = vc;
+ v51 = 16UL;
+ v52 = 3UL;
+ v53 = *(u*)(vo + 24UL) >> 48UL;
+ v54 = ((u(*)())(v49))(v50, v51, v52, v53);
+ v54;
+b39: goto b8;
+b41: goto b39;
+b43: if ((s)(*(u*)(vo + 24UL)) < (s)(1UL << 48UL)) goto b46;
+ v48 = 1UL;
+ goto b45;
+b46: v48 = 0UL;
+ goto b45;
+b32: goto b30;
+b34: if ((s)(*(u*)(vo + 24UL)) < (s)(1UL << 32UL)) goto b37;
+ v41 = 1UL;
+ goto b36;
+b37: v41 = 0UL;
+ goto b36;
+b23: goto b21;
+b25: if ((s)(*(u*)(vo + 24UL)) < (s)(1UL << 16UL)) goto b28;
+ v34 = 1UL;
+ goto b27;
+b28: v34 = 0UL;
+ goto b27;
+b19: if (vkind != 4UL) goto b49;
+ v55 = (u)zaarch64_output_irstr;
+ v56 = vc;
+ v57 = vic;
+ v58 = vb;
+ v59 = vo;
+ v60 = ((u(*)())(v55))(v56, v57, v58, v59);
+ v60;
+ goto b8;
+b49: if (vkind != 5UL) goto b52;
+ v61 = (u)zaarch64_output_irexpr;
+ v62 = vc;
+ v63 = vic;
+ v64 = vb;
+ v65 = *(u*)(vo + 8UL);
+ v66 = ((u(*)())(v61))(v62, v63, v64, v65);
+ v66;
+ if (*(u*)(*(u*)(vo + 48UL) + 0UL) != 3UL) goto b56;
+ v67 = (u)zaarch64_ldrb;
+ v68 = vc;
+ v69 = 16UL;
+ v70 = 16UL;
+ v71 = ((u(*)())(v67))(v68, v69, v70);
+ v71;
+b54: goto b8;
+b56: v72 = (u)ztype_isprim;
+ v73 = *(u*)(vo + 48UL);
+ v74 = ((u(*)())(v72))(v73);
+ if (!(v74)) goto b59;
+ v75 = (u)zaarch64_ldr;
+ v76 = vc;
+ v77 = 16UL;
+ v78 = 16UL;
+ v79 = 0UL;
+ v80 = ((u(*)())(v75))(v76, v77, v78, v79);
+ v80;
+ goto b54;
+b59: v81 = (u)zcdie;
+ v82 = *(u*)(vic + 0UL);
+ v83 = (u)"invalid load";
+ v84 = ((u(*)())(v81))(v82, v83);
+ v84;
+ goto b54;
+b52: if (vkind != 9UL) goto b64;
+ v85 = (u)zaarch64_output_irexpr;
+ v86 = vc;
+ v87 = vic;
+ v88 = vb;
+ v89 = *(u*)(vo + 8UL);
+ v90 = ((u(*)())(v85))(v86, v87, v88, v89);
+ v90;
+ v91 = (u)zaarch64_neg;
+ v92 = vc;
+ v93 = 16UL;
+ v94 = 16UL;
+ v95 = ((u(*)())(v91))(v92, v93, v94);
+ v95;
+ goto b8;
+b64: if (vkind != 10UL) goto b68;
+ v96 = (u)zaarch64_output_irexpr;
+ v97 = vc;
+ v98 = vic;
+ v99 = vb;
+ v100 = *(u*)(vo + 8UL);
+ v101 = ((u(*)())(v96))(v97, v98, v99, v100);
+ v101;
+ v102 = (u)zaarch64_not;
+ v103 = vc;
+ v104 = 16UL;
+ v105 = 16UL;
+ v106 = ((u(*)())(v102))(v103, v104, v105);
+ v106;
+ goto b8;
+b68: if (vkind != 11UL) goto b72;
+ v107 = (u)zaarch64_output_irexpr;
+ v108 = vc;
+ v109 = vic;
+ v110 = vb;
+ v111 = *(u*)(vo + 16UL);
+ v112 = ((u(*)())(v107))(v108, v109, v110, v111);
+ v112;
+ v113 = (u)zaarch64_push;
+ v114 = vc;
+ v115 = 16UL;
+ v116 = ((u(*)())(v113))(v114, v115);
+ v116;
+ v117 = (u)zaarch64_output_irexpr;
+ v118 = vc;
+ v119 = vic;
+ v120 = vb;
+ v121 = *(u*)(vo + 8UL);
+ v122 = ((u(*)())(v117))(v118, v119, v120, v121);
+ v122;
+ v123 = (u)zaarch64_pop;
+ v124 = vc;
+ v125 = 17UL;
+ v126 = ((u(*)())(v123))(v124, v125);
+ v126;
+ v127 = (u)zaarch64_addr;
+ v128 = vc;
+ v129 = 16UL;
+ v130 = 17UL;
+ v131 = 16UL;
+ v132 = 0UL;
+ v133 = ((u(*)())(v127))(v128, v129, v130, v131, v132);
+ v133;
+ goto b8;
+b72: if (vkind != 12UL) goto b79;
+ v134 = (u)zaarch64_output_irexpr;
+ v135 = vc;
+ v136 = vic;
+ v137 = vb;
+ v138 = *(u*)(vo + 16UL);
+ v139 = ((u(*)())(v134))(v135, v136, v137, v138);
+ v139;
+ v140 = (u)zaarch64_push;
+ v141 = vc;
+ v142 = 16UL;
+ v143 = ((u(*)())(v140))(v141, v142);
+ v143;
+ v144 = (u)zaarch64_output_irexpr;
+ v145 = vc;
+ v146 = vic;
+ v147 = vb;
+ v148 = *(u*)(vo + 8UL);
+ v149 = ((u(*)())(v144))(v145, v146, v147, v148);
+ v149;
+ v150 = (u)zaarch64_pop;
+ v151 = vc;
+ v152 = 17UL;
+ v153 = ((u(*)())(v150))(v151, v152);
+ v153;
+ v154 = (u)zaarch64_and;
+ v155 = vc;
+ v156 = 16UL;
+ v157 = 17UL;
+ v158 = 16UL;
+ v159 = ((u(*)())(v154))(v155, v156, v157, v158);
+ v159;
+ goto b8;
+b79: if (vkind != 13UL) goto b86;
+ v160 = (u)zaarch64_output_irexpr;
+ v161 = vc;
+ v162 = vic;
+ v163 = vb;
+ v164 = *(u*)(vo + 16UL);
+ v165 = ((u(*)())(v160))(v161, v162, v163, v164);
+ v165;
+ v166 = (u)zaarch64_push;
+ v167 = vc;
+ v168 = 16UL;
+ v169 = ((u(*)())(v166))(v167, v168);
+ v169;
+ v170 = (u)zaarch64_output_irexpr;
+ v171 = vc;
+ v172 = vic;
+ v173 = vb;
+ v174 = *(u*)(vo + 8UL);
+ v175 = ((u(*)())(v170))(v171, v172, v173, v174);
+ v175;
+ v176 = (u)zaarch64_pop;
+ v177 = vc;
+ v178 = 17UL;
+ v179 = ((u(*)())(v176))(v177, v178);
+ v179;
+ v180 = (u)zaarch64_or;
+ v181 = vc;
+ v182 = 16UL;
+ v183 = 17UL;
+ v184 = 16UL;
+ v185 = ((u(*)())(v180))(v181, v182, v183, v184);
+ v185;
+ goto b8;
+b86: if (vkind != 14UL) goto b93;
+ v186 = (u)zaarch64_output_irexpr;
+ v187 = vc;
+ v188 = vic;
+ v189 = vb;
+ v190 = *(u*)(vo + 16UL);
+ v191 = ((u(*)())(v186))(v187, v188, v189, v190);
+ v191;
+ v192 = (u)zaarch64_push;
+ v193 = vc;
+ v194 = 16UL;
+ v195 = ((u(*)())(v192))(v193, v194);
+ v195;
+ v196 = (u)zaarch64_output_irexpr;
+ v197 = vc;
+ v198 = vic;
+ v199 = vb;
+ v200 = *(u*)(vo + 8UL);
+ v201 = ((u(*)())(v196))(v197, v198, v199, v200);
+ v201;
+ v202 = (u)zaarch64_pop;
+ v203 = vc;
+ v204 = 17UL;
+ v205 = ((u(*)())(v202))(v203, v204);
+ v205;
+ v206 = (u)zaarch64_xor;
+ v207 = vc;
+ v208 = 16UL;
+ v209 = 17UL;
+ v210 = 16UL;
+ v211 = ((u(*)())(v206))(v207, v208, v209, v210);
+ v211;
+ goto b8;
+b93: if (vkind != 15UL) goto b100;
+ v212 = (u)zaarch64_output_irexpr;
+ v213 = vc;
+ v214 = vic;
+ v215 = vb;
+ v216 = *(u*)(vo + 16UL);
+ v217 = ((u(*)())(v212))(v213, v214, v215, v216);
+ v217;
+ v218 = (u)zaarch64_push;
+ v219 = vc;
+ v220 = 16UL;
+ v221 = ((u(*)())(v218))(v219, v220);
+ v221;
+ v222 = (u)zaarch64_output_irexpr;
+ v223 = vc;
+ v224 = vic;
+ v225 = vb;
+ v226 = *(u*)(vo + 8UL);
+ v227 = ((u(*)())(v222))(v223, v224, v225, v226);
+ v227;
+ v228 = (u)zaarch64_pop;
+ v229 = vc;
+ v230 = 17UL;
+ v231 = ((u(*)())(v228))(v229, v230);
+ v231;
+ v232 = (u)zaarch64_sdiv;
+ v233 = vc;
+ v234 = 16UL;
+ v235 = 16UL;
+ v236 = 17UL;
+ v237 = ((u(*)())(v232))(v233, v234, v235, v236);
+ v237;
+ goto b8;
+b100: if (vkind != 16UL) goto b107;
+ v238 = (u)zaarch64_output_irexpr;
+ v239 = vc;
+ v240 = vic;
+ v241 = vb;
+ v242 = *(u*)(vo + 16UL);
+ v243 = ((u(*)())(v238))(v239, v240, v241, v242);
+ v243;
+ v244 = (u)zaarch64_push;
+ v245 = vc;
+ v246 = 16UL;
+ v247 = ((u(*)())(v244))(v245, v246);
+ v247;
+ v248 = (u)zaarch64_output_irexpr;
+ v249 = vc;
+ v250 = vic;
+ v251 = vb;
+ v252 = *(u*)(vo + 8UL);
+ v253 = ((u(*)())(v248))(v249, v250, v251, v252);
+ v253;
+ v254 = (u)zaarch64_pop;
+ v255 = vc;
+ v256 = 17UL;
+ v257 = ((u(*)())(v254))(v255, v256);
+ v257;
+ v258 = (u)zaarch64_sdiv;
+ v259 = vc;
+ v260 = 9UL;
+ v261 = 16UL;
+ v262 = 17UL;
+ v263 = ((u(*)())(v258))(v259, v260, v261, v262);
+ v263;
+ v264 = (u)zaarch64_msub;
+ v265 = vc;
+ v266 = 16UL;
+ v267 = 9UL;
+ v268 = 17UL;
+ v269 = 16UL;
+ v270 = ((u(*)())(v264))(v265, v266, v267, v268, v269);
+ v270;
+ goto b8;
+b107: if (vkind != 17UL) goto b115;
+ v271 = (u)zaarch64_output_irexpr;
+ v272 = vc;
+ v273 = vic;
+ v274 = vb;
+ v275 = *(u*)(vo + 16UL);
+ v276 = ((u(*)())(v271))(v272, v273, v274, v275);
+ v276;
+ v277 = (u)zaarch64_push;
+ v278 = vc;
+ v279 = 16UL;
+ v280 = ((u(*)())(v277))(v278, v279);
+ v280;
+ v281 = (u)zaarch64_output_irexpr;
+ v282 = vc;
+ v283 = vic;
+ v284 = vb;
+ v285 = *(u*)(vo + 8UL);
+ v286 = ((u(*)())(v281))(v282, v283, v284, v285);
+ v286;
+ v287 = (u)zaarch64_pop;
+ v288 = vc;
+ v289 = 17UL;
+ v290 = ((u(*)())(v287))(v288, v289);
+ v290;
+ v291 = (u)zaarch64_lsh;
+ v292 = vc;
+ v293 = 16UL;
+ v294 = 16UL;
+ v295 = 17UL;
+ v296 = ((u(*)())(v291))(v292, v293, v294, v295);
+ v296;
+ goto b8;
+b115: if (vkind != 18UL) goto b122;
+ v297 = (u)zaarch64_output_irexpr;
+ v298 = vc;
+ v299 = vic;
+ v300 = vb;
+ v301 = *(u*)(vo + 16UL);
+ v302 = ((u(*)())(v297))(v298, v299, v300, v301);
+ v302;
+ v303 = (u)zaarch64_push;
+ v304 = vc;
+ v305 = 16UL;
+ v306 = ((u(*)())(v303))(v304, v305);
+ v306;
+ v307 = (u)zaarch64_output_irexpr;
+ v308 = vc;
+ v309 = vic;
+ v310 = vb;
+ v311 = *(u*)(vo + 8UL);
+ v312 = ((u(*)())(v307))(v308, v309, v310, v311);
+ v312;
+ v313 = (u)zaarch64_pop;
+ v314 = vc;
+ v315 = 17UL;
+ v316 = ((u(*)())(v313))(v314, v315);
+ v316;
+ v317 = (u)zaarch64_rsh;
+ v318 = vc;
+ v319 = 16UL;
+ v320 = 16UL;
+ v321 = 17UL;
+ v322 = ((u(*)())(v317))(v318, v319, v320, v321);
+ v322;
+ goto b8;
+b122: if (vkind != 19UL) goto b129;
+ v323 = (u)zaarch64_output_irexpr;
+ v324 = vc;
+ v325 = vic;
+ v326 = vb;
+ v327 = *(u*)(vo + 16UL);
+ v328 = ((u(*)())(v323))(v324, v325, v326, v327);
+ v328;
+ v329 = (u)zaarch64_push;
+ v330 = vc;
+ v331 = 16UL;
+ v332 = ((u(*)())(v329))(v330, v331);
+ v332;
+ v333 = (u)zaarch64_output_irexpr;
+ v334 = vc;
+ v335 = vic;
+ v336 = vb;
+ v337 = *(u*)(vo + 8UL);
+ v338 = ((u(*)())(v333))(v334, v335, v336, v337);
+ v338;
+ v339 = (u)zaarch64_pop;
+ v340 = vc;
+ v341 = 17UL;
+ v342 = ((u(*)())(v339))(v340, v341);
+ v342;
+ v343 = (u)zaarch64_mul;
+ v344 = vc;
+ v345 = 16UL;
+ v346 = 17UL;
+ v347 = 16UL;
+ v348 = ((u(*)())(v343))(v344, v345, v346, v347);
+ v348;
+ goto b8;
+b129: if (vkind != 20UL) goto b136;
+ v349 = (u)zaarch64_output_irexpr;
+ v350 = vc;
+ v351 = vic;
+ v352 = vb;
+ v353 = *(u*)(vo + 16UL);
+ v354 = ((u(*)())(v349))(v350, v351, v352, v353);
+ v354;
+ v355 = (u)zaarch64_push;
+ v356 = vc;
+ v357 = 16UL;
+ v358 = ((u(*)())(v355))(v356, v357);
+ v358;
+ v359 = (u)zaarch64_output_irexpr;
+ v360 = vc;
+ v361 = vic;
+ v362 = vb;
+ v363 = *(u*)(vo + 8UL);
+ v364 = ((u(*)())(v359))(v360, v361, v362, v363);
+ v364;
+ v365 = (u)zaarch64_pop;
+ v366 = vc;
+ v367 = 17UL;
+ v368 = ((u(*)())(v365))(v366, v367);
+ v368;
+ v369 = (u)zaarch64_sub;
+ v370 = vc;
+ v371 = 16UL;
+ v372 = 16UL;
+ v373 = 17UL;
+ v374 = ((u(*)())(v369))(v370, v371, v372, v373);
+ v374;
+ goto b8;
+b136: if (vkind != 21UL) goto b143;
+ v375 = (u)zaarch64_output_irexpr;
+ v376 = vc;
+ v377 = vic;
+ v378 = vb;
+ v379 = *(u*)(vo + 16UL);
+ v380 = ((u(*)())(v375))(v376, v377, v378, v379);
+ v380;
+ v381 = (u)zaarch64_push;
+ v382 = vc;
+ v383 = 16UL;
+ v384 = ((u(*)())(v381))(v382, v383);
+ v384;
+ v385 = (u)zaarch64_output_irexpr;
+ v386 = vc;
+ v387 = vic;
+ v388 = vb;
+ v389 = *(u*)(vo + 8UL);
+ v390 = ((u(*)())(v385))(v386, v387, v388, v389);
+ v390;
+ v391 = (u)zaarch64_pop;
+ v392 = vc;
+ v393 = 17UL;
+ v394 = ((u(*)())(v391))(v392, v393);
+ v394;
+ v395 = (u)zaarch64_cmp;
+ v396 = vc;
+ v397 = 16UL;
+ v398 = 17UL;
+ v399 = ((u(*)())(v395))(v396, v397, v398);
+ v399;
+ v400 = (u)zaarch64_cset;
+ v401 = vc;
+ v402 = 16UL;
+ v403 = 1UL;
+ v404 = ((u(*)())(v400))(v401, v402, v403);
+ v404;
+ goto b8;
+b143: if (vkind != 22UL) goto b151;
+ v405 = (u)zaarch64_output_irexpr;
+ v406 = vc;
+ v407 = vic;
+ v408 = vb;
+ v409 = *(u*)(vo + 16UL);
+ v410 = ((u(*)())(v405))(v406, v407, v408, v409);
+ v410;
+ v411 = (u)zaarch64_push;
+ v412 = vc;
+ v413 = 16UL;
+ v414 = ((u(*)())(v411))(v412, v413);
+ v414;
+ v415 = (u)zaarch64_output_irexpr;
+ v416 = vc;
+ v417 = vic;
+ v418 = vb;
+ v419 = *(u*)(vo + 8UL);
+ v420 = ((u(*)())(v415))(v416, v417, v418, v419);
+ v420;
+ v421 = (u)zaarch64_pop;
+ v422 = vc;
+ v423 = 17UL;
+ v424 = ((u(*)())(v421))(v422, v423);
+ v424;
+ v425 = (u)zaarch64_cmp;
+ v426 = vc;
+ v427 = 16UL;
+ v428 = 17UL;
+ v429 = ((u(*)())(v425))(v426, v427, v428);
+ v429;
+ v430 = (u)zaarch64_cset;
+ v431 = vc;
+ v432 = 16UL;
+ v433 = 0UL;
+ v434 = ((u(*)())(v430))(v431, v432, v433);
+ v434;
+ goto b8;
+b151: if (vkind != 23UL) goto b159;
+ v435 = (u)zaarch64_output_irexpr;
+ v436 = vc;
+ v437 = vic;
+ v438 = vb;
+ v439 = *(u*)(vo + 16UL);
+ v440 = ((u(*)())(v435))(v436, v437, v438, v439);
+ v440;
+ v441 = (u)zaarch64_push;
+ v442 = vc;
+ v443 = 16UL;
+ v444 = ((u(*)())(v441))(v442, v443);
+ v444;
+ v445 = (u)zaarch64_output_irexpr;
+ v446 = vc;
+ v447 = vic;
+ v448 = vb;
+ v449 = *(u*)(vo + 8UL);
+ v450 = ((u(*)())(v445))(v446, v447, v448, v449);
+ v450;
+ v451 = (u)zaarch64_pop;
+ v452 = vc;
+ v453 = 17UL;
+ v454 = ((u(*)())(v451))(v452, v453);
+ v454;
+ v455 = (u)zaarch64_cmp;
+ v456 = vc;
+ v457 = 16UL;
+ v458 = 17UL;
+ v459 = ((u(*)())(v455))(v456, v457, v458);
+ v459;
+ v460 = (u)zaarch64_cset;
+ v461 = vc;
+ v462 = 16UL;
+ v463 = 13UL;
+ v464 = ((u(*)())(v460))(v461, v462, v463);
+ v464;
+ goto b8;
+b159: if (vkind != 24UL) goto b167;
+ v465 = (u)zaarch64_output_irexpr;
+ v466 = vc;
+ v467 = vic;
+ v468 = vb;
+ v469 = *(u*)(vo + 16UL);
+ v470 = ((u(*)())(v465))(v466, v467, v468, v469);
+ v470;
+ v471 = (u)zaarch64_push;
+ v472 = vc;
+ v473 = 16UL;
+ v474 = ((u(*)())(v471))(v472, v473);
+ v474;
+ v475 = (u)zaarch64_output_irexpr;
+ v476 = vc;
+ v477 = vic;
+ v478 = vb;
+ v479 = *(u*)(vo + 8UL);
+ v480 = ((u(*)())(v475))(v476, v477, v478, v479);
+ v480;
+ v481 = (u)zaarch64_pop;
+ v482 = vc;
+ v483 = 17UL;
+ v484 = ((u(*)())(v481))(v482, v483);
+ v484;
+ v485 = (u)zaarch64_cmp;
+ v486 = vc;
+ v487 = 16UL;
+ v488 = 17UL;
+ v489 = ((u(*)())(v485))(v486, v487, v488);
+ v489;
+ v490 = (u)zaarch64_cset;
+ v491 = vc;
+ v492 = 16UL;
+ v493 = 11UL;
+ v494 = ((u(*)())(v490))(v491, v492, v493);
+ v494;
+ goto b8;
+b167: if (vkind != 25UL) goto b175;
+ v495 = (u)zaarch64_output_irexpr;
+ v496 = vc;
+ v497 = vic;
+ v498 = vb;
+ v499 = *(u*)(vo + 16UL);
+ v500 = ((u(*)())(v495))(v496, v497, v498, v499);
+ v500;
+ v501 = (u)zaarch64_push;
+ v502 = vc;
+ v503 = 16UL;
+ v504 = ((u(*)())(v501))(v502, v503);
+ v504;
+ v505 = (u)zaarch64_output_irexpr;
+ v506 = vc;
+ v507 = vic;
+ v508 = vb;
+ v509 = *(u*)(vo + 8UL);
+ v510 = ((u(*)())(v505))(v506, v507, v508, v509);
+ v510;
+ v511 = (u)zaarch64_pop;
+ v512 = vc;
+ v513 = 17UL;
+ v514 = ((u(*)())(v511))(v512, v513);
+ v514;
+ v515 = (u)zaarch64_cmp;
+ v516 = vc;
+ v517 = 16UL;
+ v518 = 17UL;
+ v519 = ((u(*)())(v515))(v516, v517, v518);
+ v519;
+ v520 = (u)zaarch64_cset;
+ v521 = vc;
+ v522 = 16UL;
+ v523 = 10UL;
+ v524 = ((u(*)())(v520))(v521, v522, v523);
+ v524;
+ goto b8;
+b175: if (vkind != 26UL) goto b183;
+ v525 = (u)zaarch64_output_irexpr;
+ v526 = vc;
+ v527 = vic;
+ v528 = vb;
+ v529 = *(u*)(vo + 16UL);
+ v530 = ((u(*)())(v525))(v526, v527, v528, v529);
+ v530;
+ v531 = (u)zaarch64_push;
+ v532 = vc;
+ v533 = 16UL;
+ v534 = ((u(*)())(v531))(v532, v533);
+ v534;
+ v535 = (u)zaarch64_output_irexpr;
+ v536 = vc;
+ v537 = vic;
+ v538 = vb;
+ v539 = *(u*)(vo + 8UL);
+ v540 = ((u(*)())(v535))(v536, v537, v538, v539);
+ v540;
+ v541 = (u)zaarch64_pop;
+ v542 = vc;
+ v543 = 17UL;
+ v544 = ((u(*)())(v541))(v542, v543);
+ v544;
+ v545 = (u)zaarch64_cmp;
+ v546 = vc;
+ v547 = 16UL;
+ v548 = 17UL;
+ v549 = ((u(*)())(v545))(v546, v547, v548);
+ v549;
+ v550 = (u)zaarch64_cset;
+ v551 = vc;
+ v552 = 16UL;
+ v553 = 12UL;
+ v554 = ((u(*)())(v550))(v551, v552, v553);
+ v554;
+ goto b8;
+b183: v555 = (u)zcdie;
+ v556 = *(u*)(vic + 0UL);
+ v557 = (u)"invalid op";
+ v558 = ((u(*)())(v555))(v556, v557);
+ v558;
+ goto b8;
+b3: goto b1;
+b5: v5 = 1UL;
+ goto b6;
}
-u zdefstruct(u vc, u vn) {
- u vname = 0;
+u zaarch64_output_irfuncptr(u vc, u vic, u vb, u vo) {
u vd = 0;
- u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -3395,101 +3437,46 @@ u zdefstruct(u vc, u vn) {
u v19 = 0;
u v20 = 0;
u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
- *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
- *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
- *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
- v7 = (u)zstrcmp;
- v8 = vname;
- v9 = (u)"int";
- v10 = ((u(*)())v7)(v8, v9);
- if (!v10) goto b13;
- v6 = 0UL;
-b14: if (!v6) goto b9;
- v5 = 1UL;
-b11: if (!v5) goto b5;
- v4 = 1UL;
-b7: if (!v4) goto b3;
- v21 = (u)zcdie;
- v22 = vc;
- v23 = (u)"reserved word";
- v24 = ((u(*)())v21)(v22, v23);
- v24;
-b1: v25 = (u)zfind;
- v26 = vc;
- v27 = vname;
- v28 = 0UL;
- v29 = 1UL;
- v30 = ((u(*)())v25)(v26, v27, v28, v29);
- vd = v30;
- if (!*(u*)(vd + 128UL)) goto b30;
- v31 = (u)zcdie;
- v32 = vc;
- v33 = (u)"duplicate struct";
- v34 = ((u(*)())v31)(v32, v33);
- v34;
-b28: *(u*)(vd + 128UL) = 1UL;
- *(u*)(vd + 152UL) = vn;
- v35 = (u)zprototype;
- v36 = vc;
- v37 = *(u*)(vn + 8UL);
- v38 = ((u(*)())v35)(v36, v37);
- *(u*)(vd + 160UL) = v38;
+ v5 = (u)zfind;
+ v6 = *(u*)(vic + 0UL);
+ v7 = *(u*)(vo + 32UL);
+ v8 = 0UL;
+ v9 = 0UL;
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ vd = v10;
+ if (!(vd)) goto b10;
+ v12 = 0UL;
+b11: if (!(v12)) goto b6;
+ v11 = 1UL;
+b8: if (!(v11)) goto b4;
+ v14 = (u)zcdie;
+ v15 = *(u*)(vic + 0UL);
+ v16 = (u)"no such function";
+ v17 = ((u(*)())(v14))(v15, v16);
+ v17;
+b2: v18 = (u)zaarch64_adr;
+ v19 = vc;
+ v20 = *(u*)(vd + 88UL);
+ v21 = ((u(*)())(v18))(v19, v20);
+ v21;
return 0UL;
-b30: goto b28;
-b3: goto b1;
-b5: v17 = (u)zstrcmp;
- v18 = vname;
- v19 = (u)"func";
- v20 = ((u(*)())v17)(v18, v19);
- if (!v20) goto b23;
- v16 = 0UL;
-b24: if (!v16) goto b21;
- v4 = 1UL;
- goto b7;
-b21: v4 = 0UL;
- goto b7;
-b23: v16 = 1UL;
- goto b24;
-b9: v12 = (u)zstrcmp;
- v13 = vname;
- v14 = (u)"byte";
- v15 = ((u(*)())v12)(v13, v14);
- if (!v15) goto b18;
- v11 = 0UL;
-b19: if (!v11) goto b16;
- v5 = 1UL;
- goto b11;
-b16: v5 = 0UL;
+b4: goto b2;
+b6: if (!(*(u*)(vd + 72UL))) goto b14;
+ v13 = 0UL;
+b15: if (!(v13)) goto b12;
+ v11 = 1UL;
+ goto b8;
+b12: v11 = 0UL;
+ goto b8;
+b14: v13 = 1UL;
+ goto b15;
+b10: v12 = 1UL;
goto b11;
-b18: v11 = 1UL;
- goto b19;
-b13: v6 = 1UL;
- goto b14;
}
-u zdefun(u vc, u vfuncdef) {
- u vd = 0;
- u vname = 0;
- u vv = 0;
- u vt = 0;
- u vn = 0;
+u zaarch64_output_irretval(u vc, u vic, u vb, u vo) {
+ u vi = 0;
+ u vop = 0;
+ u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -3517,66 +3504,72 @@ u zdefun(u vc, u vfuncdef) {
u v31 = 0;
u v32 = 0;
u v33 = 0;
- v7 = (u)zdefextern;
- v8 = vc;
- v9 = *(u*)(vfuncdef + 8UL);
- v10 = ((u(*)())v7)(v8, v9);
- vd = v10;
- if (*(u*)(vd + 72UL) != 2UL) goto b4;
- v11 = (u)zdie;
- v12 = (u)"duplicate function";
- v13 = ((u(*)())v11)(v12);
- v13;
-b2: *(u*)(vd + 72UL) = 2UL;
- *(u*)(vd + 104UL) = vfuncdef;
- vn = *(u*)(*(u*)(*(u*)(vfuncdef + 8UL) + 16UL) + 8UL);
-b6: if (!vn) goto b12;
- v14 = 0UL;
-b13: if (!v14) goto b10;
- v29 = (u)zhoist_locals;
- v30 = vc;
- v31 = vd;
- v32 = *(u*)(vfuncdef + 16UL);
- v33 = ((u(*)())v29)(v30, v31, v32);
- v33;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ vop = 0UL;
+ vi = 0UL;
+b1: if (vi != *(u*)(vb + 16UL)) goto b5;
return 0UL;
-b10: *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
- *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
- *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
- *(u*)(*(u*)(vc + 48UL) + 88UL) = *(u*)(vn + 24UL);
- *(u*)(*(u*)(vc + 48UL) + 96UL) = *(u*)(vn + 32UL);
- vname = *(u*)(*(u*)(*(u*)(vn + 8UL) + 8UL) + 56UL);
- v15 = (u)zprototype;
- v16 = vc;
- v17 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v18 = ((u(*)())v15)(v16, v17);
- vt = v18;
- v19 = (u)zfind;
- v20 = vc;
- v21 = *(u*)(vd + 32UL);
- v22 = vname;
- v23 = 1UL;
- v24 = ((u(*)())v19)(v20, v21, v22, v23);
- vv = v24;
- if (!*(u*)(vv + 208UL)) goto b18;
- v25 = (u)zcdie;
- v26 = vc;
- v27 = (u)"duplicate argument";
- v28 = ((u(*)())v25)(v26, v27);
- v28;
-b16: *(u*)(vv + 208UL) = 1UL;
- *(u*)(vv + 216UL) = vt;
- vn = *(u*)(vn + 16UL);
- goto b6;
-b18: goto b16;
-b12: v14 = 1UL;
- goto b13;
-b4: goto b2;
+b5: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
+ if (*(u*)(vop + 0UL) != 7UL) goto b8;
+ if (*(u*)(*(u*)(vop + 48UL) + 0UL) != 1UL) goto b11;
+ return 0UL;
+b11: if (*(u*)(*(u*)(vop + 8UL) + 0UL) != 5UL) goto b14;
+ v6 = (u)zaarch64_output_irexpr;
+ v7 = vc;
+ v8 = vic;
+ v9 = vb;
+ v10 = *(u*)(*(u*)(vop + 8UL) + 8UL);
+ v11 = ((u(*)())(v6))(v7, v8, v9, v10);
+ v11;
+b12: if (*(u*)(*(u*)(vop + 48UL) + 0UL) != 3UL) goto b22;
+ v21 = (u)zaarch64_strb;
+ v22 = vc;
+ v23 = 0UL;
+ v24 = 16UL;
+ v25 = ((u(*)())(v21))(v22, v23, v24);
+ v25;
+b20: return 0UL;
+b22: v26 = (u)ztype_isprim;
+ v27 = *(u*)(vop + 48UL);
+ v28 = ((u(*)())(v26))(v27);
+ if (!(v28)) goto b25;
+ v29 = (u)zaarch64_str;
+ v30 = vc;
+ v31 = 0UL;
+ v32 = 16UL;
+ v33 = 0UL;
+ v34 = ((u(*)())(v29))(v30, v31, v32, v33);
+ v34;
+ goto b20;
+b25: v35 = (u)zcdie;
+ v36 = *(u*)(vic + 0UL);
+ v37 = (u)"invalid store";
+ v38 = ((u(*)())(v35))(v36, v37);
+ v38;
+ goto b20;
+b14: if (*(u*)(*(u*)(vop + 8UL) + 0UL) != 0UL) goto b17;
+ v12 = (u)zaarch64_addi;
+ v13 = vc;
+ v14 = 16UL;
+ v15 = 29UL;
+ v16 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(*(u*)(vop + 8UL) + 24UL) * 8UL) + 40UL);
+ v17 = ((u(*)())(v12))(v13, v14, v15, v16);
+ v17;
+ goto b12;
+b17: v18 = (u)zdie;
+ v19 = (u)"invalid store";
+ v20 = ((u(*)())(v18))(v19);
+ v20;
+ goto b12;
+b8: vi = vi + 1UL;
+ goto b1;
}
-u zdefunion(u vc, u vn) {
- u vname = 0;
- u vd = 0;
- u v4 = 0;
+u zaarch64_output_irstmt(u vc, u vic, u vb, u vo) {
+ u vkind = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -3611,648 +3604,6 @@ u zdefunion(u vc, u vn) {
u v36 = 0;
u v37 = 0;
u v38 = 0;
- vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
- *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
- *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
- *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
- v7 = (u)zstrcmp;
- v8 = vname;
- v9 = (u)"int";
- v10 = ((u(*)())v7)(v8, v9);
- if (!v10) goto b13;
- v6 = 0UL;
-b14: if (!v6) goto b9;
- v5 = 1UL;
-b11: if (!v5) goto b5;
- v4 = 1UL;
-b7: if (!v4) goto b3;
- v21 = (u)zcdie;
- v22 = vc;
- v23 = (u)"reserved word";
- v24 = ((u(*)())v21)(v22, v23);
- v24;
-b1: v25 = (u)zfind;
- v26 = vc;
- v27 = vname;
- v28 = 0UL;
- v29 = 1UL;
- v30 = ((u(*)())v25)(v26, v27, v28, v29);
- vd = v30;
- if (!*(u*)(vd + 128UL)) goto b30;
- v31 = (u)zcdie;
- v32 = vc;
- v33 = (u)"duplicate struct";
- v34 = ((u(*)())v31)(v32, v33);
- v34;
-b28: *(u*)(vd + 128UL) = 1UL;
- *(u*)(vd + 152UL) = vn;
- v35 = (u)zprototype;
- v36 = vc;
- v37 = *(u*)(vn + 8UL);
- v38 = ((u(*)())v35)(v36, v37);
- *(u*)(vd + 160UL) = v38;
- return 0UL;
-b30: goto b28;
-b3: goto b1;
-b5: v17 = (u)zstrcmp;
- v18 = vname;
- v19 = (u)"func";
- v20 = ((u(*)())v17)(v18, v19);
- if (!v20) goto b23;
- v16 = 0UL;
-b24: if (!v16) goto b21;
- v4 = 1UL;
- goto b7;
-b21: v4 = 0UL;
- goto b7;
-b23: v16 = 1UL;
- goto b24;
-b9: v12 = (u)zstrcmp;
- v13 = vname;
- v14 = (u)"byte";
- v15 = ((u(*)())v12)(v13, v14);
- if (!v15) goto b18;
- v11 = 0UL;
-b19: if (!v11) goto b16;
- v5 = 1UL;
- goto b11;
-b16: v5 = 0UL;
- goto b11;
-b18: v11 = 1UL;
- goto b19;
-b13: v6 = 1UL;
- goto b14;
-}
-u zdfa_cmp(u vk, u vd) {
- u vi = 0;
- u v3 = 0;
- vi = 0UL;
-b1: if (vi != *(u*)(vk + 16UL)) goto b7;
- if (vi != *(u*)(vd + 56UL)) goto b7;
- v3 = 1UL;
-b9: if (!v3) goto b5;
- return 0UL;
-b5: if (vi != *(u*)(vk + 16UL)) goto b12;
- return -1UL;
-b12: if (vi != *(u*)(vd + 56UL)) goto b15;
- return 1UL;
-b15: if ((s)*(u*)(*(u*)(*(u*)(vk + 8UL) + vi * 8UL) + 0UL) <= (s)*(u*)(*(u*)(*(u*)(vd + 48UL) + vi * 8UL) + 0UL)) goto b18;
- return 1UL;
-b18: if ((s)*(u*)(*(u*)(*(u*)(vk + 8UL) + vi * 8UL) + 0UL) >= (s)*(u*)(*(u*)(*(u*)(vd + 48UL) + vi * 8UL) + 0UL)) goto b21;
- return -1UL;
-b21: vi = vi + 1UL;
- goto b1;
-b7: v3 = 0UL;
- goto b9;
-}
-u zdfa_minimize(u vc, u vd) {
- u v_ctx[6] = {0};
- u vctx = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- vctx = (u)v_ctx;
- *(u*)(vctx + 0UL) = *(u*)(vc + 0UL);
- v4 = (u)zdfamin_setup;
- v5 = vctx;
- v6 = vd;
- v7 = ((u(*)())v4)(v5, v6);
- v7;
- v8 = (u)zdfamin_refine;
- v9 = vctx;
- v10 = ((u(*)())v8)(v9);
- v10;
- v11 = (u)zdfamin_extract;
- v12 = vctx;
- v13 = vd;
- v14 = ((u(*)())v11)(v12, v13);
- return v14;
-}
-u zdfakey_add(u vk, u vn) {
- u vtmp = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- if (!vn) goto b9;
- v4 = 0UL;
-b10: if (!v4) goto b5;
- v3 = 1UL;
-b7: if (!v3) goto b3;
- return 0UL;
-b3: *(u*)(vn + 64UL) = 1UL;
- if (!*(u*)(vk + 32UL)) goto b20;
- v6 = 0UL;
-b21: if (!v6) goto b16;
- v5 = 1UL;
-b18: if (!v5) goto b14;
- *(u*)(vk + 32UL) = *(u*)(vn + 8UL);
-b12: if (*(u*)(vk + 16UL) != *(u*)(vk + 24UL)) goto b29;
- if (*(u*)(vk + 24UL) != 0UL) goto b32;
- *(u*)(vk + 24UL) = 16UL;
-b30: v8 = (u)zalloc;
- v9 = *(u*)(vk + 0UL);
- v10 = 8UL * *(u*)(vk + 24UL);
- v11 = ((u(*)())v8)(v9, v10);
- vtmp = v11;
- v12 = (u)zmemcpy;
- v13 = vtmp;
- v14 = *(u*)(vk + 8UL);
- v15 = 8UL * *(u*)(vk + 16UL);
- v16 = ((u(*)())v12)(v13, v14, v15);
- v16;
- v17 = (u)zfree;
- v18 = *(u*)(vk + 0UL);
- v19 = *(u*)(vk + 8UL);
- v20 = ((u(*)())v17)(v18, v19);
- v20;
- *(u*)(vk + 8UL) = vtmp;
-b27: *(u*)(*(u*)(vk + 8UL) + *(u*)(vk + 16UL) * 8UL) = vn;
- *(u*)(vk + 16UL) = *(u*)(vk + 16UL) + 1UL;
- if (!*(u*)(vn + 32UL)) goto b40;
- if (*(u*)(*(u*)(vn + 32UL) + 16UL) != -1UL) goto b40;
- v21 = 1UL;
-b42: if (!v21) goto b38;
- v22 = (u)zdfakey_add;
- v23 = vk;
- v24 = *(u*)(vn + 32UL);
- v25 = ((u(*)())v22)(v23, v24);
- v25;
-b36: if (!*(u*)(vn + 40UL)) goto b48;
- if (*(u*)(*(u*)(vn + 40UL) + 16UL) != -1UL) goto b48;
- v26 = 1UL;
-b50: if (!v26) goto b46;
- v27 = (u)zdfakey_add;
- v28 = vk;
- v29 = *(u*)(vn + 40UL);
- v30 = ((u(*)())v27)(v28, v29);
- v30;
-b44: return 0UL;
-b46: goto b44;
-b48: v26 = 0UL;
- goto b50;
-b38: goto b36;
-b40: v21 = 0UL;
- goto b42;
-b32: *(u*)(vk + 24UL) = *(u*)(vk + 24UL) * 2UL;
- goto b30;
-b29: goto b27;
-b14: goto b12;
-b16: if (!*(u*)(vn + 8UL)) goto b24;
- if ((s)*(u*)(vn + 8UL) >= (s)*(u*)(vk + 32UL)) goto b24;
- v7 = 1UL;
-b26: if (!v7) goto b22;
- v5 = 1UL;
- goto b18;
-b22: v5 = 0UL;
- goto b18;
-b24: v7 = 0UL;
- goto b26;
-b20: v6 = 1UL;
- goto b21;
-b5: if (!*(u*)(vn + 64UL)) goto b11;
- v3 = 1UL;
- goto b7;
-b11: v3 = 0UL;
- goto b7;
-b9: v4 = 1UL;
- goto b10;
-}
-u zdfakey_clear(u vk) {
- u vi = 0;
- vi = 0UL;
-b1: if (vi != *(u*)(vk + 16UL)) goto b5;
- *(u*)(vk + 32UL) = 0UL;
- *(u*)(vk + 16UL) = 0UL;
- return 0UL;
-b5: *(u*)(*(u*)(*(u*)(vk + 8UL) + vi * 8UL) + 64UL) = 0UL;
- vi = vi + 1UL;
- goto b1;
-}
-u zdfakey_sort(u vk) {
- u vi = 0;
- u vj = 0;
- u vtmp = 0;
- u v4 = 0;
- vi = 1UL;
-b1: if ((s)vi < (s)*(u*)(vk + 16UL)) goto b5;
- return 0UL;
-b5: vj = vi;
- vtmp = *(u*)(*(u*)(vk + 8UL) + vj * 8UL);
-b6: if (vj != 0UL) goto b12;
- v4 = 1UL;
-b14: if (!v4) goto b10;
- *(u*)(*(u*)(vk + 8UL) + vj * 8UL) = vtmp;
- vi = vi + 1UL;
- goto b1;
-b10: *(u*)(*(u*)(vk + 8UL) + vj * 8UL) = *(u*)(*(u*)(vk + 8UL) + (vj - 1UL) * 8UL);
- vj = vj - 1UL;
- goto b6;
-b12: if ((s)*(u*)(*(u*)(*(u*)(vk + 8UL) + (vj - 1UL) * 8UL) + 0UL) > (s)*(u*)(vtmp + 0UL)) goto b15;
- v4 = 1UL;
- goto b14;
-b15: v4 = 0UL;
- goto b14;
-}
-u zdfamin_extract(u vctx, u vd) {
- u vs = 0;
- u vg = 0;
- u vch = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- if (!vd) goto b5;
- v5 = 0UL;
-b6: if (!v5) goto b3;
- return 0UL;
-b3: vs = *(u*)(*(u*)(vctx + 8UL) + (*(u*)(vd + 64UL) - 1UL) * 8UL);
- if (!*(u*)(vs + 40UL)) goto b9;
- return *(u*)(vs + 40UL);
-b9: v6 = (u)zalloc;
- v7 = *(u*)(vctx + 0UL);
- v8 = 80UL;
- v9 = ((u(*)())v6)(v7, v8);
- vg = v9;
- *(u*)(vg + 32UL) = *(u*)(vd + 64UL) - 1UL;
- *(u*)(vg + 72UL) = *(u*)(vd + 72UL);
- v10 = (u)zalloc;
- v11 = *(u*)(vctx + 0UL);
- v12 = 8UL * 256UL;
- v13 = ((u(*)())v10)(v11, v12);
- *(u*)(vg + 40UL) = v13;
- *(u*)(vs + 40UL) = vg;
- vch = 0UL;
-b12: if (vch != 256UL) goto b16;
- return vg;
-b16: if (*(u*)(*(u*)(vd + 40UL) + vch * 8UL) == 0UL) goto b19;
- v14 = (u)zdfamin_extract;
- v15 = vctx;
- v16 = *(u*)(*(u*)(vd + 40UL) + vch * 8UL);
- v17 = ((u(*)())v14)(v15, v16);
- *(u*)(*(u*)(vg + 40UL) + vch * 8UL) = v17;
-b17: vch = vch + 1UL;
- goto b12;
-b19: goto b17;
-b5: v5 = 1UL;
- goto b6;
-}
-u zdfamin_refine(u vctx) {
- u vs = 0;
- u vi = 0;
- u vp = 0;
- u vch = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
-b1: vs = *(u*)(vctx + 32UL);
- if (!vs) goto b7;
- v5 = 0UL;
-b8: if (!v5) goto b5;
- return 0UL;
-b5: *(u*)(vctx + 32UL) = *(u*)(vs + 0UL);
- *(u*)(vs + 8UL) = 0UL;
- vi = 0UL;
-b9: if (vi != *(u*)(vctx + 16UL)) goto b13;
- goto b1;
-b13: vp = *(u*)(*(u*)(vctx + 8UL) + vi * 8UL);
- vch = 0UL;
-b14: if (vch != 256UL) goto b18;
- vi = vi + 1UL;
- goto b9;
-b18: v6 = (u)zdfamin_split;
- v7 = vctx;
- v8 = vp;
- v9 = vs;
- v10 = vch;
- v11 = ((u(*)())v6)(v7, v8, v9, v10);
- v11;
- vch = vch + 1UL;
- goto b14;
-b7: v5 = 1UL;
- goto b8;
-}
-u zdfamin_setup(u vctx, u vd) {
- u vi = 0;
- u vs = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- if (!vd) goto b9;
- v5 = 0UL;
-b10: if (!v5) goto b5;
- v4 = 1UL;
-b7: if (!v4) goto b3;
- return 0UL;
-b3: *(u*)(vd + 64UL) = *(u*)(vd + 72UL) + 1UL;
- v6 = (u)zensure_arr;
- v7 = *(u*)(vctx + 0UL);
- v8 = vctx + 8UL;
- v9 = vctx + 24UL;
- v10 = *(u*)(vd + 72UL) + 1UL;
- v11 = 8UL;
- v12 = ((u(*)())v6)(v7, v8, v9, v10, v11);
- v12;
- vs = *(u*)(*(u*)(vctx + 8UL) + *(u*)(vd + 72UL) * 8UL);
- if (!vs) goto b17;
- v13 = 0UL;
-b18: if (!v13) goto b15;
- v14 = (u)zalloc;
- v15 = *(u*)(vctx + 0UL);
- v16 = 48UL;
- v17 = ((u(*)())v14)(v15, v16);
- vs = v17;
- *(u*)(vs + 0UL) = *(u*)(vctx + 32UL);
- *(u*)(vctx + 32UL) = vs;
- *(u*)(vs + 8UL) = 1UL;
- *(u*)(*(u*)(vctx + 8UL) + *(u*)(vd + 72UL) * 8UL) = vs;
- if ((s)*(u*)(vd + 72UL) < (s)*(u*)(vctx + 16UL)) goto b22;
- *(u*)(vctx + 16UL) = *(u*)(vd + 72UL) + 1UL;
-b20:b13: v18 = (u)zensure_arr;
- v19 = *(u*)(vctx + 0UL);
- v20 = vs + 16UL;
- v21 = vs + 32UL;
- v22 = *(u*)(vs + 24UL) + 1UL;
- v23 = 8UL;
- v24 = ((u(*)())v18)(v19, v20, v21, v22, v23);
- v24;
- *(u*)(*(u*)(vs + 16UL) + *(u*)(vs + 24UL) * 8UL) = vd;
- *(u*)(vs + 24UL) = *(u*)(vs + 24UL) + 1UL;
- vi = 0UL;
-b24: if (vi != 256UL) goto b28;
- return 0UL;
-b28: v25 = (u)zdfamin_setup;
- v26 = vctx;
- v27 = *(u*)(*(u*)(vd + 40UL) + vi * 8UL);
- v28 = ((u(*)())v25)(v26, v27);
- v28;
- vi = vi + 1UL;
- goto b24;
-b22: goto b20;
-b15: goto b13;
-b17: v13 = 1UL;
- goto b18;
-b5: if (!*(u*)(vd + 64UL)) goto b11;
- v4 = 1UL;
- goto b7;
-b11: v4 = 0UL;
- goto b7;
-b9: v5 = 1UL;
- goto b10;
-}
-u zdfamin_split(u vctx, u vp, u vs, u vch) {
- u vi = 0;
- u vk = 0;
- u vm = 0;
- u vd = 0;
- u ve = 0;
- u vnew_ind = 0;
- u vt = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- vi = 0UL;
- vk = 0UL;
-b1: if (vi != *(u*)(vp + 24UL)) goto b5;
- if (vk != 0UL) goto b17;
- v12 = 1UL;
-b19: if (!v12) goto b15;
- return 0UL;
-b15: v13 = (u)zalloc;
- v14 = *(u*)(vctx + 0UL);
- v15 = 8UL * (*(u*)(vp + 24UL) - vk);
- v16 = ((u(*)())v13)(v14, v15);
- vnew_ind = v16;
- vi = 0UL;
- vk = 0UL;
- vm = 0UL;
-b22: if (vi != *(u*)(vp + 24UL)) goto b26;
- *(u*)(vp + 24UL) = vk;
- v18 = (u)zensure_arr;
- v19 = *(u*)(vctx + 0UL);
- v20 = vctx + 8UL;
- v21 = vctx + 24UL;
- v22 = *(u*)(vctx + 16UL) + 1UL;
- v23 = 8UL;
- v24 = ((u(*)())v18)(v19, v20, v21, v22, v23);
- v24;
- v25 = (u)zalloc;
- v26 = *(u*)(vctx + 0UL);
- v27 = 48UL;
- v28 = ((u(*)())v25)(v26, v27);
- vt = v28;
- *(u*)(vt + 0UL) = *(u*)(vctx + 32UL);
- *(u*)(vt + 16UL) = vnew_ind;
- *(u*)(vt + 24UL) = vm;
- *(u*)(vt + 32UL) = vm;
- *(u*)(vctx + 32UL) = vt;
- *(u*)(vt + 8UL) = 1UL;
- *(u*)(*(u*)(vctx + 8UL) + *(u*)(vctx + 16UL) * 8UL) = vt;
- *(u*)(vctx + 16UL) = *(u*)(vctx + 16UL) + 1UL;
- if (!*(u*)(vp + 8UL)) goto b40;
- v29 = 0UL;
-b41: if (!v29) goto b38;
- *(u*)(vp + 0UL) = *(u*)(vctx + 32UL);
- *(u*)(vctx + 32UL) = vp;
- *(u*)(vp + 8UL) = 1UL;
-b36: return 0UL;
-b38: goto b36;
-b40: v29 = 1UL;
- goto b41;
-b26: vd = *(u*)(*(u*)(vp + 16UL) + vi * 8UL);
- ve = *(u*)(*(u*)(vd + 40UL) + vch * 8UL);
- if (!ve) goto b31;
- if (*(u*)(*(u*)(vctx + 8UL) + (*(u*)(ve + 64UL) - 1UL) * 8UL) != vs) goto b31;
- v17 = 1UL;
-b33: if (!v17) goto b29;
- *(u*)(*(u*)(vp + 16UL) + vk * 8UL) = vd;
- vk = vk + 1UL;
-b27: vi = vi + 1UL;
- goto b22;
-b29: *(u*)(vnew_ind + vm * 8UL) = vd;
- *(u*)(vd + 64UL) = *(u*)(vctx + 16UL) + 1UL;
- vm = vm + 1UL;
- goto b27;
-b31: v17 = 0UL;
- goto b33;
-b17: if (vk != *(u*)(vp + 24UL)) goto b20;
- v12 = 1UL;
- goto b19;
-b20: v12 = 0UL;
- goto b19;
-b5: vd = *(u*)(*(u*)(vp + 16UL) + vi * 8UL);
- ve = *(u*)(*(u*)(vd + 40UL) + vch * 8UL);
- if (!ve) goto b10;
- if (*(u*)(*(u*)(vctx + 8UL) + (*(u*)(ve + 64UL) - 1UL) * 8UL) != vs) goto b10;
- v11 = 1UL;
-b12: if (!v11) goto b8;
- vk = vk + 1UL;
-b6: vi = vi + 1UL;
- goto b1;
-b8: goto b6;
-b10: v11 = 0UL;
- goto b12;
-}
-u zdie(u vmsg) {
- u vlen = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- v2 = (u)zstrlen;
- v3 = vmsg;
- v4 = ((u(*)())v2)(v3);
- vlen = v4;
- v5 = (u)zwrite;
- v6 = 2UL;
- v7 = vmsg;
- v8 = vlen;
- v9 = ((u(*)())v5)(v6, v7, v8);
- v9;
- v10 = (u)zwrite;
- v11 = 2UL;
- v12 = (u)"\012";
- v13 = 1UL;
- v14 = ((u(*)())v10)(v11, v12, v13);
- v14;
- v15 = (u)zexit;
- v16 = 2UL;
- v17 = ((u(*)())v15)(v16);
- v17;
- return 0UL;
-}
-u zdolalr(u vc, u vname, u vout) {
- u vact_table = 0;
- u vgoto_table = 0;
- u vtok = 0;
- u vstate = 0;
- u vterm_len = 0;
- u vprod_len = 0;
- u vl = 0;
- u vfd = 0;
- u vact = 0;
- u vact_out = 0;
- u vact_len = 0;
- u vstack = 0;
- u vstack_len = 0;
- u vstack_cap = 0;
- u vpos_table = 0;
- u vcall_table = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
u v39 = 0;
u v40 = 0;
u v41 = 0;
@@ -4363,278 +3714,270 @@ u zdolalr(u vc, u vname, u vout) {
u v146 = 0;
u v147 = 0;
u v148 = 0;
- v19 = (u)zsetup_lex;
- v20 = vc;
- v21 = ((u(*)())v19)(v20);
- vl = v21;
- v22 = (u)zopen;
- v23 = vname;
- v24 = 0UL;
- v25 = 0UL;
- v26 = ((u(*)())v22)(v23, v24, v25);
- vfd = v26;
- if ((s)vfd >= (s)0UL) goto b5;
- v27 = (u)zdie;
- v28 = (u)"open failed";
- v29 = ((u(*)())v27)(v28);
- v29;
-b3: v30 = (u)zopen_lex;
- v31 = vl;
- v32 = vfd;
- v33 = ((u(*)())v30)(v31, v32);
- v33;
- v34 = (u)zalloc;
- v35 = *(u*)(vl + 0UL);
- v37 = (u)zget_prod_len;
- v38 = ((u(*)())v37)();
- v36 = 8UL * v38;
- v39 = ((u(*)())v34)(v35, v36);
- vcall_table = v39;
- v40 = (u)zget_act_table;
- v41 = ((u(*)())v40)();
- vact_table = v41;
- v42 = (u)zget_goto_table;
- v43 = ((u(*)())v42)();
- vgoto_table = v43;
- v44 = (u)zget_call_table;
- v45 = vcall_table;
- v46 = ((u(*)())v44)(v45);
- v46;
- v47 = (u)zget_pos_table;
- v48 = ((u(*)())v47)();
- vpos_table = v48;
- v49 = (u)zget_term_len;
- v50 = ((u(*)())v49)();
- vterm_len = v50;
- v51 = (u)zget_prod_len;
- v52 = ((u(*)())v51)();
- vprod_len = v52;
- *(u*)(vc + 24UL) = vname;
- *(u*)(vc + 32UL) = 1UL;
- *(u*)(vc + 40UL) = 1UL;
- vstate = 0UL;
- *(u*)(vl + 144UL) = vl + 136UL;
- v53 = (u)zgettok;
- v54 = vl;
- v55 = ((u(*)())v53)(v54);
- vtok = v55;
-b17: if ((s)vtok >= (s)0UL) goto b23;
- if (!*(u*)(vl + 40UL)) goto b23;
- v56 = 1UL;
-b25: if (!v56) goto b21;
- vtok = vterm_len - 1UL;
-b19: vact = *(u*)(vact_table + (vstate * vterm_len + vtok) * 8UL) & 255UL;
- vact_out = *(u*)(vact_table + (vstate * vterm_len + vtok) * 8UL) >> 8UL & 16777215UL;
- vact_len = *(u*)(vact_table + (vstate * vterm_len + vtok) * 8UL) >> 32UL;
- if (vact != 115UL) goto b36;
- v61 = (u)zensure_arr;
- v62 = *(u*)(vl + 0UL);
- v63 = vl + 168UL;
- v64 = vl + 184UL;
- v65 = *(u*)(vl + 176UL) + 1UL;
- v66 = 8UL;
- v67 = ((u(*)())v61)(v62, v63, v64, v65, v66);
- v67;
- v68 = (u)zmemcpy;
- v69 = *(u*)(vl + 168UL) + *(u*)(vl + 176UL) * 8UL;
- v70 = *(u*)(vl + 144UL);
- v71 = 8UL;
- v72 = ((u(*)())v68)(v69, v70, v71);
- v72;
- *(u*)(vl + 176UL) = *(u*)(vl + 176UL) + 1UL;
- v73 = (u)zensure_arr;
- v74 = *(u*)(vl + 0UL);
- v75 = (u)&vstack;
- v76 = (u)&vstack_cap;
- v77 = vstack_len + 1UL;
- v78 = 8UL;
- v79 = ((u(*)())v73)(v74, v75, v76, v77, v78);
- v79;
- *(u*)(vstack + vstack_len * 8UL) = vstate;
- vstack_len = vstack_len + 1UL;
- vstate = vact_out;
- v80 = (u)zmemset;
- v81 = *(u*)(vl + 144UL);
- v82 = 0UL;
- v83 = 8UL;
- v84 = ((u(*)())v80)(v81, v82, v83);
- v84;
- v85 = (u)zgettok;
- v86 = vl;
- v87 = ((u(*)())v85)(v86);
- vtok = v87;
-b34: goto b17;
-b36: if (vact != 114UL) goto b43;
- v88 = (u)zensure_arr;
- v89 = *(u*)(vl + 0UL);
- v90 = vl + 168UL;
- v91 = vl + 184UL;
- v92 = *(u*)(vl + 176UL) + 1UL;
- v93 = 8UL;
- v94 = ((u(*)())v88)(v89, v90, v91, v92, v93);
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ u v156 = 0;
+ u v157 = 0;
+ u v158 = 0;
+ u v159 = 0;
+ u v160 = 0;
+ u v161 = 0;
+ u v162 = 0;
+ u v163 = 0;
+ u v164 = 0;
+ u v165 = 0;
+ u v166 = 0;
+ u v167 = 0;
+ u v168 = 0;
+ *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vo + 64UL);
+ *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vo + 72UL);
+ *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vo + 80UL);
+ *(u*)(*(u*)(vic + 8UL) + 88UL) = *(u*)(vo + 64UL);
+ *(u*)(*(u*)(vic + 8UL) + 96UL) = *(u*)(vo + 72UL);
+ vkind = *(u*)(vo + 0UL);
+ if (vkind != 6UL) goto b3;
+ if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 5UL) goto b6;
+ v5 = (u)zaarch64_output_irexpr;
+ v6 = vc;
+ v7 = vic;
+ v8 = vb;
+ v9 = *(u*)(*(u*)(vo + 8UL) + 8UL);
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ v10;
+b4: v20 = (u)zaarch64_push;
+ v21 = vc;
+ v22 = 16UL;
+ v23 = ((u(*)())(v20))(v21, v22);
+ v23;
+ v24 = (u)zaarch64_output_irexpr;
+ v25 = vc;
+ v26 = vic;
+ v27 = vb;
+ v28 = *(u*)(vo + 16UL);
+ v29 = ((u(*)())(v24))(v25, v26, v27, v28);
+ v29;
+ v30 = (u)zaarch64_pop;
+ v31 = vc;
+ v32 = 17UL;
+ v33 = ((u(*)())(v30))(v31, v32);
+ v33;
+ if (*(u*)(*(u*)(vo + 48UL) + 0UL) != 3UL) goto b17;
+ v34 = (u)zaarch64_strb;
+ v35 = vc;
+ v36 = 16UL;
+ v37 = 17UL;
+ v38 = ((u(*)())(v34))(v35, v36, v37);
+ v38;
+b15:b1: return 0UL;
+b17: v39 = (u)ztype_isprim;
+ v40 = *(u*)(vo + 48UL);
+ v41 = ((u(*)())(v39))(v40);
+ if (!(v41)) goto b20;
+ v42 = (u)zaarch64_str;
+ v43 = vc;
+ v44 = 16UL;
+ v45 = 17UL;
+ v46 = 0UL;
+ v47 = ((u(*)())(v42))(v43, v44, v45, v46);
+ v47;
+ goto b15;
+b20: v48 = (u)zcdie;
+ v49 = *(u*)(vic + 0UL);
+ v50 = (u)"invalid store";
+ v51 = ((u(*)())(v48))(v49, v50);
+ v51;
+ goto b15;
+b6: if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 0UL) goto b9;
+ v11 = (u)zaarch64_addi;
+ v12 = vc;
+ v13 = 16UL;
+ v14 = 29UL;
+ v15 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(*(u*)(vo + 8UL) + 24UL) * 8UL) + 40UL);
+ v16 = ((u(*)())(v11))(v12, v13, v14, v15);
+ v16;
+ goto b4;
+b9: v17 = (u)zdie;
+ v18 = (u)"invalid store";
+ v19 = ((u(*)())(v17))(v18);
+ v19;
+ goto b4;
+b3: if (vkind != 7UL) goto b25;
+ goto b1;
+b25: if (vkind != 8UL) goto b27;
+ goto b1;
+b27: if (vkind != 27UL) goto b29;
+ if ((s)(*(u*)(vo + 24UL)) <= (s)8UL) goto b32;
+ v52 = (u)zaarch64_addi;
+ v53 = vc;
+ v54 = 31UL;
+ v55 = 31UL;
+ v56 = -(*(u*)(vo + 24UL) + 1UL & -2UL) * 8UL;
+ v57 = ((u(*)())(v52))(v53, v54, v55, v56);
+ v57;
+b30: v58 = (u)zaarch64_output_irargs;
+ v59 = vc;
+ v60 = vic;
+ v61 = vb;
+ v62 = vo;
+ v63 = ((u(*)())(v58))(v59, v60, v61, v62);
+ v63;
+ v64 = (u)zaarch64_output_ircall;
+ v65 = vc;
+ v66 = vic;
+ v67 = vb;
+ v68 = *(u*)(vo + 8UL);
+ v69 = ((u(*)())(v64))(v65, v66, v67, v68);
+ v69;
+ if ((s)(*(u*)(vo + 24UL)) <= (s)8UL) goto b38;
+ v70 = (u)zaarch64_addi;
+ v71 = vc;
+ v72 = 31UL;
+ v73 = 31UL;
+ v74 = (*(u*)(vo + 24UL) + 1UL & -2UL) * 8UL;
+ v75 = ((u(*)())(v70))(v71, v72, v73, v74);
+ v75;
+b36: v76 = (u)zaarch64_output_irretval;
+ v77 = vc;
+ v78 = vic;
+ v79 = vb;
+ v80 = vo;
+ v81 = ((u(*)())(v76))(v77, v78, v79, v80);
+ v81;
+ if (!(*(u*)(*(u*)(vb + 56UL) + 80UL))) goto b43;
+ v82 = (u)zaarch64_jmp;
+ v83 = vc;
+ v84 = *(u*)(*(u*)(vb + 56UL) + 72UL);
+ v85 = ((u(*)())(v82))(v83, v84);
+ v85;
+b41: return 0UL;
+b43: v86 = (u)zaarch64_output_irblock;
+ v87 = vc;
+ v88 = vic;
+ v89 = *(u*)(vb + 56UL);
+ v90 = ((u(*)())(v86))(v87, v88, v89);
+ v90;
+ goto b41;
+b38: goto b36;
+b32: goto b30;
+b29: if (vkind != 28UL) goto b47;
+ if (!(*(u*)(*(u*)(vb + 56UL) + 80UL))) goto b50;
+ v91 = (u)zaarch64_jmp;
+ v92 = vc;
+ v93 = *(u*)(*(u*)(vb + 56UL) + 72UL);
+ v94 = ((u(*)())(v91))(v92, v93);
v94;
- if (vact_len == 0UL) goto b47;
- if ((s)vact_len <= (s)vstack_len) goto b50;
- v95 = (u)zdie;
- v96 = (u)"stack underflow";
- v97 = ((u(*)())v95)(v96);
- v97;
-b48: vstack_len = vstack_len - vact_len;
- vstate = *(u*)(vstack + vstack_len * 8UL);
- v98 = (u)zmemcpy;
- v99 = *(u*)(vl + 168UL) + (*(u*)(vl + 176UL) - vact_len) * 8UL;
- v100 = *(u*)(vl + 168UL) + (*(u*)(vl + 176UL) - 1UL) * 8UL;
- v101 = 8UL;
- v102 = ((u(*)())v98)(v99, v100, v101);
- v102;
-b45: *(u*)(vl + 176UL) = *(u*)(vl + 176UL) - vact_len + 1UL;
- v112 = (u)zensure_arr;
- v113 = *(u*)(vl + 0UL);
- v114 = (u)&vstack;
- v115 = (u)&vstack_cap;
- v116 = vstack_len + 1UL;
- v117 = 8UL;
- v118 = ((u(*)())v112)(v113, v114, v115, v116, v117);
- v118;
- *(u*)(vstack + vstack_len * 8UL) = vstate;
- vstack_len = vstack_len + 1UL;
- vstate = *(u*)(vgoto_table + (vstate * vprod_len + vact_out) * 8UL);
- goto b34;
-b50: goto b48;
-b47: *(u*)(vl + 160UL) = *(u*)(vpos_table + vact_out * 8UL);
- *(u*)(vl + 152UL) = *(u*)(vl + 168UL) + (*(u*)(vl + 176UL) - *(u*)(vl + 160UL)) * 8UL;
- if (!*(u*)(vcall_table + vact_out * 8UL)) goto b55;
- *(u*)(vl + 144UL) = *(u*)(vl + 168UL) + *(u*)(vl + 176UL) * 8UL;
- if (*(u*)(vl + 160UL) == 0UL) goto b60;
- if (!*(u*)(*(u*)(vl + 152UL) + 0UL * 8UL + 0UL)) goto b60;
- v103 = 1UL;
-b62: if (!v103) goto b58;
- *(u*)(*(u*)(vl + 8UL) + 32UL) = *(u*)(*(u*)(*(u*)(vl + 152UL) + 0UL * 8UL + 0UL) + 32UL);
- *(u*)(*(u*)(vl + 8UL) + 40UL) = *(u*)(*(u*)(*(u*)(vl + 152UL) + 0UL * 8UL + 0UL) + 40UL);
-b56: v104 = *(u*)(vcall_table + vact_out * 8UL);
- v105 = vl;
- v106 = ((u(*)())v104)(v105);
- v106;
- *(u*)(vl + 144UL) = vl + 136UL;
-b53: goto b45;
-b58: *(u*)(*(u*)(vl + 8UL) + 32UL) = *(u*)(vl + 104UL);
- *(u*)(*(u*)(vl + 8UL) + 40UL) = *(u*)(vl + 112UL);
- goto b56;
-b60: v103 = 0UL;
- goto b62;
-b55: v107 = (u)zmemset;
- v108 = *(u*)(vl + 168UL) + *(u*)(vl + 176UL) * 8UL;
+b48: return 0UL;
+b50: v95 = (u)zaarch64_output_irblock;
+ v96 = vc;
+ v97 = vic;
+ v98 = *(u*)(vb + 56UL);
+ v99 = ((u(*)())(v95))(v96, v97, v98);
+ v99;
+ goto b48;
+b47: if (vkind != 29UL) goto b54;
+ v100 = (u)zaarch64_output_irexpr;
+ v101 = vc;
+ v102 = vic;
+ v103 = vb;
+ v104 = *(u*)(vo + 8UL);
+ v105 = ((u(*)())(v100))(v101, v102, v103, v104);
+ v105;
+ v106 = (u)zaarch64_cmpi;
+ v107 = vc;
+ v108 = 16UL;
v109 = 0UL;
- v110 = 8UL;
- v111 = ((u(*)())v107)(v108, v109, v110);
- v111;
- goto b53;
-b43: if (vact != 97UL) goto b67;
- if (vtok == vterm_len - 1UL) goto b70;
- v119 = (u)zdie;
- v120 = (u)"accept not at eof";
- v121 = ((u(*)())v119)(v120);
- v121;
-b68: return *(u*)(vl + 168UL) + 0UL * 8UL;
-b70: goto b68;
-b67: v122 = (u)zfputs;
- v123 = 0UL;
- v124 = (u)"on ";
- v125 = ((u(*)())v122)(v123, v124);
- v125;
- v126 = (u)zfputs;
- v127 = 0UL;
- v128 = vname;
- v129 = ((u(*)())v126)(v127, v128);
- v129;
- v130 = (u)zfputs;
- v131 = 0UL;
- v132 = (u)":";
- v133 = ((u(*)())v130)(v131, v132);
- v133;
- v134 = (u)zfputd;
- v135 = 0UL;
- v136 = *(u*)(vl + 104UL);
- v137 = ((u(*)())v134)(v135, v136);
- v137;
- v138 = (u)zfputs;
+ v110 = ((u(*)())(v106))(v107, v108, v109);
+ v110;
+ v111 = (u)zaarch64_bicond;
+ v112 = vc;
+ v113 = 1UL;
+ v114 = *(u*)(*(u*)(vb + 64UL) + 72UL);
+ v115 = ((u(*)())(v111))(v112, v113, v114);
+ v115;
+ if (!(*(u*)(*(u*)(vb + 56UL) + 80UL))) goto b60;
+ v116 = (u)zaarch64_jmp;
+ v117 = vc;
+ v118 = *(u*)(*(u*)(vb + 56UL) + 72UL);
+ v119 = ((u(*)())(v116))(v117, v118);
+ v119;
+b58: if (!(*(u*)(*(u*)(vb + 64UL) + 80UL))) goto b67;
+ v125 = 0UL;
+b68: if (!(v125)) goto b65;
+ v126 = (u)zaarch64_output_irblock;
+ v127 = vc;
+ v128 = vic;
+ v129 = *(u*)(vb + 64UL);
+ v130 = ((u(*)())(v126))(v127, v128, v129);
+ v130;
+b63: return 0UL;
+b65: goto b63;
+b67: v125 = 1UL;
+ goto b68;
+b60: v120 = (u)zaarch64_output_irblock;
+ v121 = vc;
+ v122 = vic;
+ v123 = *(u*)(vb + 56UL);
+ v124 = ((u(*)())(v120))(v121, v122, v123);
+ v124;
+ goto b58;
+b54: if (vkind != 30UL) goto b71;
+ if (!(*(u*)(vo + 8UL))) goto b74;
+ v131 = (u)zaarch64_output_irexpr;
+ v132 = vc;
+ v133 = vic;
+ v134 = vb;
+ v135 = *(u*)(vo + 8UL);
+ v136 = ((u(*)())(v131))(v132, v133, v134, v135);
+ v136;
+b72: v137 = (u)zaarch64_mov;
+ v138 = vc;
v139 = 0UL;
- v140 = (u)":";
- v141 = ((u(*)())v138)(v139, v140);
+ v140 = 16UL;
+ v141 = ((u(*)())(v137))(v138, v139, v140);
v141;
- v142 = (u)zfputd;
- v143 = 0UL;
- v144 = *(u*)(vl + 112UL);
- v145 = ((u(*)())v142)(v143, v144);
- v145;
- v146 = (u)zdie;
- v147 = (u)" syntax error";
- v148 = ((u(*)())v146)(v147);
- v148;
- goto b34;
-b21: if ((s)vtok >= (s)0UL) goto b29;
- v57 = 1UL;
-b31: if (!v57) goto b27;
- v58 = (u)zdie;
- v59 = (u)"invalid token";
- v60 = ((u(*)())v58)(v59);
- v60;
- goto b19;
-b27: goto b19;
-b29: if ((s)vtok < (s)vterm_len) goto b32;
- v57 = 1UL;
- goto b31;
-b32: v57 = 0UL;
- goto b31;
-b23: v56 = 0UL;
- goto b25;
-b5: goto b3;
-}
-u zemit(u vc, u vx) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- v2 = (u)zemit_hook;
- v3 = vc;
- v4 = ((u(*)())v2)(v3);
- v4;
- v5 = (u)zreserve;
- v6 = vc;
- v7 = 1UL;
- v8 = ((u(*)())v5)(v6, v7);
- v8;
- *(b*)(*(u*)(*(u*)(vc + 40UL) + 8UL) + *(u*)(*(u*)(vc + 40UL) + 16UL) * 1UL) = vx;
- *(u*)(*(u*)(vc + 40UL) + 16UL) = *(u*)(*(u*)(vc + 40UL) + 16UL) + 1UL;
- *(u*)(vc + 24UL) = *(u*)(vc + 24UL) + 1UL;
- return 0UL;
-}
-u zemit_align(u vc, u vn, u vb) {
- u vpad = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- vpad = *(u*)(vc + 24UL) & vn - 1UL;
- if (vpad != 0UL) goto b3;
- return 0UL;
-b3:b4: if (vpad != vn) goto b8;
- return 0UL;
-b8: v4 = (u)zas_emit;
- v5 = vc;
- v6 = vb;
- v7 = ((u(*)())v4)(v5, v6);
- v7;
- vpad = vpad + 1UL;
- goto b4;
+ v142 = (u)zaarch64_ldr;
+ v143 = vc;
+ v144 = 30UL;
+ v145 = 29UL;
+ v146 = 1UL;
+ v147 = ((u(*)())(v142))(v143, v144, v145, v146);
+ v147;
+ v148 = (u)zaarch64_ldr;
+ v149 = vc;
+ v150 = 29UL;
+ v151 = 29UL;
+ v152 = 0UL;
+ v153 = ((u(*)())(v148))(v149, v150, v151, v152);
+ v153;
+ v154 = (u)zaarch64_addi;
+ v155 = vc;
+ v156 = 31UL;
+ v157 = 31UL;
+ v158 = *(u*)(vic + 160UL);
+ v159 = ((u(*)())(v154))(v155, v156, v157, v158);
+ v159;
+ v160 = (u)zaarch64_ret;
+ v161 = vc;
+ v162 = ((u(*)())(v160))(v161);
+ v162;
+ goto b1;
+b74: goto b72;
+b71: v163 = (u)zaarch64_output_irexpr;
+ v164 = vc;
+ v165 = vic;
+ v166 = vb;
+ v167 = vo;
+ v168 = ((u(*)())(v163))(v164, v165, v166, v167);
+ v168;
+ goto b1;
}
-u zemit_blobs(u vc, u vb) {
- u vi = 0;
- u v3 = 0;
- u v4 = 0;
+u zaarch64_output_irstr(u vc, u vic, u vb, u vo) {
+ u vs = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -4644,52 +3987,26 @@ u zemit_blobs(u vc, u vb) {
u v11 = 0;
u v12 = 0;
u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- if (!vb) goto b5;
- v3 = 0UL;
-b6: if (!v3) goto b3;
- return 0UL;
-b3: v4 = (u)zemit_blobs;
- v5 = vc;
- v6 = *(u*)(vb + 0UL);
- v7 = ((u(*)())v4)(v5, v6);
- v7;
- v8 = (u)zfixup_label;
- v9 = vc;
- v10 = *(u*)(vb + 16UL);
- v11 = ((u(*)())v8)(v9, v10);
- v11;
- vi = 0UL;
-b9: if (vi != *(u*)(vb + 32UL)) goto b13;
- v16 = (u)zemit_blobs;
- v17 = vc;
- v18 = *(u*)(vb + 8UL);
- v19 = ((u(*)())v16)(v17, v18);
- v19;
+ v5 = (u)zas_blob;
+ v6 = *(u*)(vic + 8UL);
+ v7 = *(u*)(vo + 32UL);
+ v8 = *(u*)(vo + 40UL) + 1UL;
+ v9 = ((u(*)())(v5))(v6, v7, v8);
+ vs = v9;
+ v10 = (u)zaarch64_adr;
+ v11 = vc;
+ v12 = vs;
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
return 0UL;
-b13: v12 = (u)zas_emit;
- v13 = vc;
- v14 = (u)*(b*)(*(u*)(vb + 24UL) + vi * 1UL);
- v15 = ((u(*)())v12)(v13, v14);
- v15;
- vi = vi + 1UL;
- goto b9;
-b5: v3 = 1UL;
- goto b6;
}
-u zemit_builtin(u vc) {
- u vd = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
+u zaarch64_output_irvars(u vc, u vic) {
+ u voffset = 0;
+ u vtotal = 0;
+ u vsize = 0;
+ u vi = 0;
+ u vj = 0;
+ u vv = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
@@ -4754,7483 +4071,2775 @@ u zemit_builtin(u vc) {
u v69 = 0;
u v70 = 0;
u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- u v134 = 0;
- u v135 = 0;
- u v136 = 0;
- u v137 = 0;
- u v138 = 0;
- u v139 = 0;
- u v140 = 0;
- u v141 = 0;
- u v142 = 0;
- u v143 = 0;
- u v144 = 0;
- u v145 = 0;
- u v146 = 0;
- u v147 = 0;
- u v148 = 0;
- u v149 = 0;
- u v150 = 0;
- u v151 = 0;
- u v152 = 0;
- u v153 = 0;
- u v154 = 0;
- u v155 = 0;
- u v156 = 0;
- u v157 = 0;
- u v158 = 0;
- u v159 = 0;
- u v160 = 0;
- u v161 = 0;
- u v162 = 0;
- u v163 = 0;
- u v164 = 0;
- u v165 = 0;
- u v166 = 0;
- u v167 = 0;
- u v168 = 0;
- u v169 = 0;
- u v170 = 0;
- u v171 = 0;
- u v172 = 0;
- u v173 = 0;
- u v174 = 0;
- u v175 = 0;
- u v176 = 0;
- u v177 = 0;
- u v178 = 0;
- u v179 = 0;
- u v180 = 0;
- u v181 = 0;
- u v182 = 0;
- u v183 = 0;
- u v184 = 0;
- u v185 = 0;
- u v186 = 0;
- u v187 = 0;
- u v188 = 0;
- u v189 = 0;
- u v190 = 0;
- u v191 = 0;
- u v192 = 0;
- u v193 = 0;
- u v194 = 0;
- u v195 = 0;
- u v196 = 0;
- u v197 = 0;
- u v198 = 0;
- u v199 = 0;
- u v200 = 0;
- u v201 = 0;
- u v202 = 0;
- u v203 = 0;
- u v204 = 0;
- u v205 = 0;
- u v206 = 0;
- u v207 = 0;
- u v208 = 0;
- u v209 = 0;
- u v210 = 0;
- u v211 = 0;
- u v212 = 0;
- u v213 = 0;
- u v214 = 0;
- u v215 = 0;
- u v216 = 0;
- u v217 = 0;
- u v218 = 0;
- u v219 = 0;
- u v220 = 0;
- u v221 = 0;
- u v222 = 0;
- u v223 = 0;
- u v224 = 0;
- u v225 = 0;
- u v226 = 0;
- u v227 = 0;
- u v228 = 0;
- u v229 = 0;
- u v230 = 0;
- u v231 = 0;
- u v232 = 0;
- u v233 = 0;
- u v234 = 0;
- u v235 = 0;
- u v236 = 0;
- u v237 = 0;
- u v238 = 0;
- u v239 = 0;
- u v240 = 0;
- u v241 = 0;
- u v242 = 0;
- u v243 = 0;
- u v244 = 0;
- u v245 = 0;
- u v246 = 0;
- u v247 = 0;
- u v248 = 0;
- u v249 = 0;
- u v250 = 0;
- u v251 = 0;
- u v252 = 0;
- u v253 = 0;
- u v254 = 0;
- u v255 = 0;
- u v256 = 0;
- u v257 = 0;
- u v258 = 0;
- u v259 = 0;
- u v260 = 0;
- u v261 = 0;
- u v262 = 0;
- u v263 = 0;
- u v264 = 0;
- u v265 = 0;
- u v266 = 0;
- u v267 = 0;
- u v268 = 0;
- u v269 = 0;
- u v270 = 0;
- u v271 = 0;
- u v272 = 0;
- u v273 = 0;
- u v274 = 0;
- u v275 = 0;
- u v276 = 0;
- u v277 = 0;
- u v278 = 0;
- u v279 = 0;
- u v280 = 0;
- u v281 = 0;
- u v282 = 0;
- u v283 = 0;
- u v284 = 0;
- u v285 = 0;
- u v286 = 0;
- u v287 = 0;
- u v288 = 0;
- u v289 = 0;
- u v290 = 0;
- u v291 = 0;
- u v292 = 0;
- u v293 = 0;
- u v294 = 0;
- u v295 = 0;
- u v296 = 0;
- u v297 = 0;
- u v298 = 0;
- u v299 = 0;
- u v300 = 0;
- u v301 = 0;
- u v302 = 0;
- u v303 = 0;
- u v304 = 0;
- u v305 = 0;
- u v306 = 0;
- u v307 = 0;
- u v308 = 0;
- u v309 = 0;
- u v310 = 0;
- u v311 = 0;
- u v312 = 0;
- u v313 = 0;
- u v314 = 0;
- u v315 = 0;
- u v316 = 0;
- u v317 = 0;
- u v318 = 0;
- u v319 = 0;
- u v320 = 0;
- u v321 = 0;
- u v322 = 0;
- u v323 = 0;
- u v324 = 0;
- u v325 = 0;
- u v326 = 0;
- u v327 = 0;
- u v328 = 0;
- u v329 = 0;
- u v330 = 0;
- u v331 = 0;
- u v332 = 0;
- u v333 = 0;
- u v334 = 0;
- u v335 = 0;
- u v336 = 0;
- u v337 = 0;
- u v338 = 0;
- u v339 = 0;
- u v340 = 0;
- u v341 = 0;
- u v342 = 0;
- u v343 = 0;
- u v344 = 0;
- u v345 = 0;
- u v346 = 0;
- u v347 = 0;
- u v348 = 0;
- u v349 = 0;
- u v350 = 0;
- u v351 = 0;
- u v352 = 0;
- u v353 = 0;
- u v354 = 0;
- u v355 = 0;
- u v356 = 0;
- u v357 = 0;
- u v358 = 0;
- u v359 = 0;
- u v360 = 0;
- u v361 = 0;
- u v362 = 0;
- u v363 = 0;
- u v364 = 0;
- u v365 = 0;
- u v366 = 0;
- u v367 = 0;
- u v368 = 0;
- u v369 = 0;
- u v370 = 0;
- u v371 = 0;
- u v372 = 0;
- u v373 = 0;
- u v374 = 0;
- u v375 = 0;
- u v376 = 0;
- u v377 = 0;
- u v378 = 0;
- u v379 = 0;
- u v380 = 0;
- u v381 = 0;
- u v382 = 0;
- u v383 = 0;
- u v384 = 0;
- u v385 = 0;
- u v386 = 0;
- u v387 = 0;
- u v388 = 0;
- u v389 = 0;
- u v390 = 0;
- u v391 = 0;
- u v392 = 0;
- u v393 = 0;
- u v394 = 0;
- u v395 = 0;
- u v396 = 0;
- u v397 = 0;
- u v398 = 0;
- u v399 = 0;
- u v400 = 0;
- u v401 = 0;
- u v402 = 0;
- u v403 = 0;
- u v404 = 0;
- u v405 = 0;
- u v406 = 0;
- u v407 = 0;
- u v408 = 0;
- u v409 = 0;
- u v410 = 0;
- u v411 = 0;
- u v412 = 0;
- u v413 = 0;
- u v414 = 0;
- u v415 = 0;
- u v416 = 0;
- u v417 = 0;
- u v418 = 0;
- u v419 = 0;
- u v420 = 0;
- u v421 = 0;
- u v422 = 0;
- u v423 = 0;
- u v424 = 0;
- u v425 = 0;
- u v426 = 0;
- u v427 = 0;
- u v428 = 0;
- u v429 = 0;
- u v430 = 0;
- u v431 = 0;
- u v432 = 0;
- u v433 = 0;
- u v434 = 0;
- u v435 = 0;
- u v436 = 0;
- u v437 = 0;
- u v438 = 0;
- u v439 = 0;
- u v440 = 0;
- u v441 = 0;
- u v442 = 0;
- u v443 = 0;
- u v444 = 0;
- u v445 = 0;
- u v446 = 0;
- u v447 = 0;
- u v448 = 0;
- u v449 = 0;
- u v450 = 0;
- u v451 = 0;
- u v452 = 0;
- u v453 = 0;
- u v454 = 0;
- u v455 = 0;
- u v456 = 0;
- u v457 = 0;
- u v458 = 0;
- u v459 = 0;
- u v460 = 0;
- u v461 = 0;
- u v462 = 0;
- u v463 = 0;
- u v464 = 0;
- u v465 = 0;
- u v466 = 0;
- u v467 = 0;
- u v468 = 0;
- u v469 = 0;
- u v470 = 0;
- u v471 = 0;
- u v472 = 0;
- u v473 = 0;
- u v474 = 0;
- u v475 = 0;
- u v476 = 0;
- u v477 = 0;
- u v478 = 0;
- u v479 = 0;
- u v480 = 0;
- u v481 = 0;
- u v482 = 0;
- u v483 = 0;
- u v484 = 0;
- u v485 = 0;
- u v486 = 0;
- u v487 = 0;
- u v488 = 0;
- u v489 = 0;
- u v490 = 0;
- u v491 = 0;
- u v492 = 0;
- u v493 = 0;
- u v494 = 0;
- u v495 = 0;
- u v496 = 0;
- u v497 = 0;
- u v498 = 0;
- u v499 = 0;
- u v500 = 0;
- u v501 = 0;
- u v502 = 0;
- u v503 = 0;
- u v504 = 0;
- u v505 = 0;
- u v506 = 0;
- u v507 = 0;
- u v508 = 0;
- u v509 = 0;
- u v510 = 0;
- u v511 = 0;
- u v512 = 0;
- u v513 = 0;
- u v514 = 0;
- u v515 = 0;
- u v516 = 0;
- u v517 = 0;
- u v518 = 0;
- u v519 = 0;
- u v520 = 0;
- u v521 = 0;
- u v522 = 0;
- u v523 = 0;
- u v524 = 0;
- u v525 = 0;
- u v526 = 0;
- u v527 = 0;
- u v528 = 0;
- u v529 = 0;
- u v530 = 0;
- u v531 = 0;
- u v532 = 0;
- u v533 = 0;
- u v534 = 0;
- u v535 = 0;
- u v536 = 0;
- u v537 = 0;
- u v538 = 0;
- u v539 = 0;
- u v540 = 0;
- u v541 = 0;
- u v542 = 0;
- u v543 = 0;
- u v544 = 0;
- u v545 = 0;
- u v546 = 0;
- u v547 = 0;
- u v548 = 0;
- u v549 = 0;
- u v550 = 0;
- u v551 = 0;
- u v552 = 0;
- u v553 = 0;
- u v554 = 0;
- u v555 = 0;
- u v556 = 0;
- u v557 = 0;
- u v558 = 0;
- u v559 = 0;
- u v560 = 0;
- u v561 = 0;
- u v562 = 0;
- u v563 = 0;
- u v564 = 0;
- u v565 = 0;
- u v566 = 0;
- u v567 = 0;
- u v568 = 0;
- u v569 = 0;
- u v570 = 0;
- u v571 = 0;
- u v572 = 0;
- u v573 = 0;
- u v574 = 0;
- u v575 = 0;
- u v576 = 0;
- u v577 = 0;
- u v578 = 0;
- u v579 = 0;
- u v580 = 0;
- u v581 = 0;
- u v582 = 0;
- u v583 = 0;
- u v584 = 0;
- u v585 = 0;
- u v586 = 0;
- u v587 = 0;
- u v588 = 0;
- u v589 = 0;
- u v590 = 0;
- u v591 = 0;
- u v592 = 0;
- u v593 = 0;
- u v594 = 0;
- u v595 = 0;
- u v596 = 0;
- u v597 = 0;
- u v598 = 0;
- u v599 = 0;
- u v600 = 0;
- u v601 = 0;
- u v602 = 0;
- u v603 = 0;
- u v604 = 0;
- u v605 = 0;
- u v606 = 0;
- u v607 = 0;
- u v608 = 0;
- u v609 = 0;
- u v610 = 0;
- u v611 = 0;
- u v612 = 0;
- u v613 = 0;
- u v614 = 0;
- u v615 = 0;
- u v616 = 0;
- u v617 = 0;
- u v618 = 0;
- u v619 = 0;
- u v620 = 0;
- u v621 = 0;
- u v622 = 0;
- u v623 = 0;
- u v624 = 0;
- u v625 = 0;
- u v626 = 0;
- u v627 = 0;
- u v628 = 0;
- u v629 = 0;
- u v630 = 0;
- u v631 = 0;
- u v632 = 0;
- u v633 = 0;
- u v634 = 0;
- u v635 = 0;
- u v636 = 0;
- u v637 = 0;
- u v638 = 0;
- u v639 = 0;
- u v640 = 0;
- u v641 = 0;
- u v642 = 0;
- u v643 = 0;
- u v644 = 0;
- u v645 = 0;
- u v646 = 0;
- u v647 = 0;
- u v648 = 0;
- u v649 = 0;
- u v650 = 0;
- u v651 = 0;
- u v652 = 0;
- u v653 = 0;
- u v654 = 0;
- u v655 = 0;
- u v656 = 0;
- u v657 = 0;
- u v658 = 0;
- u v659 = 0;
- u v660 = 0;
- u v661 = 0;
- u v662 = 0;
- u v663 = 0;
- u v664 = 0;
- u v665 = 0;
- u v666 = 0;
- u v667 = 0;
- u v668 = 0;
- u v669 = 0;
- u v670 = 0;
- u v671 = 0;
- u v672 = 0;
- u v673 = 0;
- u v674 = 0;
- u v675 = 0;
- u v676 = 0;
- u v677 = 0;
- u v678 = 0;
- u v679 = 0;
- u v680 = 0;
- u v681 = 0;
- u v682 = 0;
- u v683 = 0;
- u v684 = 0;
- u v685 = 0;
- u v686 = 0;
- u v687 = 0;
- u v688 = 0;
- u v689 = 0;
- u v690 = 0;
- u v691 = 0;
- u v692 = 0;
- u v693 = 0;
- u v694 = 0;
- u v695 = 0;
- u v696 = 0;
- u v697 = 0;
- u v698 = 0;
- u v699 = 0;
- u v700 = 0;
- u v701 = 0;
- u v702 = 0;
- u v703 = 0;
- u v704 = 0;
- u v705 = 0;
- u v706 = 0;
- u v707 = 0;
- u v708 = 0;
- u v709 = 0;
- u v710 = 0;
- u v711 = 0;
- u v712 = 0;
- u v713 = 0;
- u v714 = 0;
- u v715 = 0;
- u v716 = 0;
- u v717 = 0;
- u v718 = 0;
- u v719 = 0;
- u v720 = 0;
- u v721 = 0;
- u v722 = 0;
- u v723 = 0;
- u v724 = 0;
- u v725 = 0;
- u v726 = 0;
- u v727 = 0;
- u v728 = 0;
- u v729 = 0;
- u v730 = 0;
- u v731 = 0;
- u v732 = 0;
- u v733 = 0;
- u v734 = 0;
- u v735 = 0;
- u v736 = 0;
- u v737 = 0;
- u v738 = 0;
- u v739 = 0;
- u v740 = 0;
- u v741 = 0;
- u v742 = 0;
- u v743 = 0;
- u v744 = 0;
- u v745 = 0;
- u v746 = 0;
- u v747 = 0;
- u v748 = 0;
- u v749 = 0;
- u v750 = 0;
- u v751 = 0;
- u v752 = 0;
- u v753 = 0;
- u v754 = 0;
- u v755 = 0;
- u v756 = 0;
- u v757 = 0;
- u v758 = 0;
- u v759 = 0;
- u v760 = 0;
- u v761 = 0;
- u v762 = 0;
- u v763 = 0;
- u v764 = 0;
- u v765 = 0;
- u v766 = 0;
- u v767 = 0;
- u v768 = 0;
- u v769 = 0;
- u v770 = 0;
- u v771 = 0;
- u v772 = 0;
- u v773 = 0;
- u v774 = 0;
- u v775 = 0;
- u v776 = 0;
- u v777 = 0;
- u v778 = 0;
- u v779 = 0;
- u v780 = 0;
- u v781 = 0;
- u v782 = 0;
- u v783 = 0;
- u v784 = 0;
- u v785 = 0;
- u v786 = 0;
- u v787 = 0;
- u v788 = 0;
- u v789 = 0;
- u v790 = 0;
- u v791 = 0;
- u v792 = 0;
- u v793 = 0;
- u v794 = 0;
- u v795 = 0;
- u v796 = 0;
- u v797 = 0;
- u v798 = 0;
- u v799 = 0;
- u v800 = 0;
- u v801 = 0;
- u v802 = 0;
- u v803 = 0;
- u v804 = 0;
- u v805 = 0;
- u v806 = 0;
- u v807 = 0;
- u v808 = 0;
- u v809 = 0;
- u v810 = 0;
- u v811 = 0;
- u v812 = 0;
- u v813 = 0;
- u v814 = 0;
- u v815 = 0;
- u v816 = 0;
- u v817 = 0;
- u v818 = 0;
- u v819 = 0;
- u v820 = 0;
- u v821 = 0;
- u v822 = 0;
- u v823 = 0;
- u v824 = 0;
- u v825 = 0;
- u v826 = 0;
- u v827 = 0;
- u v828 = 0;
- u v829 = 0;
- u v830 = 0;
- u v831 = 0;
- u v832 = 0;
- u v833 = 0;
- u v834 = 0;
- u v835 = 0;
- u v836 = 0;
- u v837 = 0;
- u v838 = 0;
- u v839 = 0;
- u v840 = 0;
- u v841 = 0;
- u v842 = 0;
- u v843 = 0;
- u v844 = 0;
- u v845 = 0;
- u v846 = 0;
- u v847 = 0;
- u v848 = 0;
- u v849 = 0;
- u v850 = 0;
- u v851 = 0;
- u v852 = 0;
- u v853 = 0;
- u v854 = 0;
- u v855 = 0;
- u v856 = 0;
- u v857 = 0;
- u v858 = 0;
- u v859 = 0;
- u v860 = 0;
- u v861 = 0;
- u v862 = 0;
- u v863 = 0;
- u v864 = 0;
- u v865 = 0;
- u v866 = 0;
- u v867 = 0;
- u v868 = 0;
- u v869 = 0;
- u v870 = 0;
- u v871 = 0;
- u v872 = 0;
- u v873 = 0;
- u v874 = 0;
- u v875 = 0;
- u v876 = 0;
- u v877 = 0;
- u v878 = 0;
- u v879 = 0;
- u v880 = 0;
- u v881 = 0;
- u v882 = 0;
- u v883 = 0;
- u v884 = 0;
- u v885 = 0;
- u v886 = 0;
- u v887 = 0;
- u v888 = 0;
- u v889 = 0;
- u v890 = 0;
- u v891 = 0;
- u v892 = 0;
- u v893 = 0;
- u v894 = 0;
- u v895 = 0;
- u v896 = 0;
- u v897 = 0;
- u v898 = 0;
- u v899 = 0;
- u v900 = 0;
- u v901 = 0;
- u v902 = 0;
- u v903 = 0;
- u v904 = 0;
- u v905 = 0;
- u v906 = 0;
- u v907 = 0;
- u v908 = 0;
- u v909 = 0;
- u v910 = 0;
- u v911 = 0;
- u v912 = 0;
- u v913 = 0;
- u v914 = 0;
- u v915 = 0;
- u v916 = 0;
- u v917 = 0;
- u v918 = 0;
- u v919 = 0;
- u v920 = 0;
- u v921 = 0;
- u v922 = 0;
- u v923 = 0;
- u v924 = 0;
- u v925 = 0;
- u v926 = 0;
- u v927 = 0;
- u v928 = 0;
- u v929 = 0;
- u v930 = 0;
- u v931 = 0;
- u v932 = 0;
- u v933 = 0;
- u v934 = 0;
- u v935 = 0;
- u v936 = 0;
- u v937 = 0;
- u v938 = 0;
- u v939 = 0;
- u v940 = 0;
- u v941 = 0;
- u v942 = 0;
- u v943 = 0;
- u v944 = 0;
- u v945 = 0;
- u v946 = 0;
- u v947 = 0;
- u v948 = 0;
- u v949 = 0;
- u v950 = 0;
- u v951 = 0;
- u v952 = 0;
- u v953 = 0;
- u v954 = 0;
- u v955 = 0;
- u v956 = 0;
- u v957 = 0;
- u v958 = 0;
- u v959 = 0;
- u v960 = 0;
- u v961 = 0;
- u v962 = 0;
- u v963 = 0;
- u v964 = 0;
- u v965 = 0;
- u v966 = 0;
- u v967 = 0;
- u v968 = 0;
- u v969 = 0;
- u v970 = 0;
- u v971 = 0;
- u v972 = 0;
- u v973 = 0;
- u v974 = 0;
- u v975 = 0;
- u v976 = 0;
- u v977 = 0;
- u v978 = 0;
- u v979 = 0;
- u v980 = 0;
- u v981 = 0;
- u v982 = 0;
- u v983 = 0;
- u v984 = 0;
- u v985 = 0;
- u v986 = 0;
- u v987 = 0;
- u v988 = 0;
- u v989 = 0;
- u v990 = 0;
- u v991 = 0;
- u v992 = 0;
- u v993 = 0;
- u v994 = 0;
- u v995 = 0;
- u v996 = 0;
- u v997 = 0;
- u v998 = 0;
- u v999 = 0;
- u v1000 = 0;
- u v1001 = 0;
- u v1002 = 0;
- u v1003 = 0;
- u v1004 = 0;
- u v1005 = 0;
- u v1006 = 0;
- u v1007 = 0;
- u v1008 = 0;
- u v1009 = 0;
- u v1010 = 0;
- u v1011 = 0;
- u v1012 = 0;
- u v1013 = 0;
- u v1014 = 0;
- u v1015 = 0;
- u v1016 = 0;
- u v1017 = 0;
- u v1018 = 0;
- u v1019 = 0;
- u v1020 = 0;
- u v1021 = 0;
- u v1022 = 0;
- u v1023 = 0;
- u v1024 = 0;
- u v1025 = 0;
- u v1026 = 0;
- u v1027 = 0;
- u v1028 = 0;
- u v1029 = 0;
- u v1030 = 0;
- u v1031 = 0;
- u v1032 = 0;
- u v1033 = 0;
- u v1034 = 0;
- u v1035 = 0;
- u v1036 = 0;
- u v1037 = 0;
- u v1038 = 0;
- u v1039 = 0;
- u v1040 = 0;
- u v1041 = 0;
- u v1042 = 0;
- u v1043 = 0;
- u v1044 = 0;
- u v1045 = 0;
- u v1046 = 0;
- u v1047 = 0;
- u v1048 = 0;
- u v1049 = 0;
- u v1050 = 0;
- u v1051 = 0;
- u v1052 = 0;
- u v1053 = 0;
- u v1054 = 0;
- u v1055 = 0;
- u v1056 = 0;
- u v1057 = 0;
- u v1058 = 0;
- u v1059 = 0;
- u v1060 = 0;
- u v1061 = 0;
- u v1062 = 0;
- u v1063 = 0;
- u v1064 = 0;
- u v1065 = 0;
- u v1066 = 0;
- u v1067 = 0;
- u v1068 = 0;
- u v1069 = 0;
- u v1070 = 0;
- u v1071 = 0;
- u v1072 = 0;
- u v1073 = 0;
- u v1074 = 0;
- u v1075 = 0;
- u v1076 = 0;
- u v1077 = 0;
- u v1078 = 0;
- u v1079 = 0;
- u v1080 = 0;
- u v1081 = 0;
- u v1082 = 0;
- u v1083 = 0;
- u v1084 = 0;
- u v1085 = 0;
- u v1086 = 0;
- u v1087 = 0;
- u v1088 = 0;
- u v1089 = 0;
- u v1090 = 0;
- u v1091 = 0;
- u v1092 = 0;
- u v1093 = 0;
- u v1094 = 0;
- u v1095 = 0;
- u v1096 = 0;
- u v1097 = 0;
- u v1098 = 0;
- u v1099 = 0;
- u v1100 = 0;
- u v1101 = 0;
- u v1102 = 0;
- u v1103 = 0;
- u v1104 = 0;
- u v1105 = 0;
- u v1106 = 0;
- u v1107 = 0;
- u v1108 = 0;
- u v1109 = 0;
- u v1110 = 0;
- u v1111 = 0;
- u v1112 = 0;
- u v1113 = 0;
- u v1114 = 0;
- u v1115 = 0;
- u v1116 = 0;
- u v1117 = 0;
- u v1118 = 0;
- u v1119 = 0;
- u v1120 = 0;
- u v1121 = 0;
- u v1122 = 0;
- u v1123 = 0;
- u v1124 = 0;
- u v1125 = 0;
- u v1126 = 0;
- u v1127 = 0;
- u v1128 = 0;
- u v1129 = 0;
- u v1130 = 0;
- u v1131 = 0;
- u v1132 = 0;
- u v1133 = 0;
- u v1134 = 0;
- u v1135 = 0;
- u v1136 = 0;
- u v1137 = 0;
- u v1138 = 0;
- u v1139 = 0;
- u v1140 = 0;
- u v1141 = 0;
- u v1142 = 0;
- u v1143 = 0;
- u v1144 = 0;
- u v1145 = 0;
- u v1146 = 0;
- u v1147 = 0;
- u v1148 = 0;
- u v1149 = 0;
- u v1150 = 0;
- u v1151 = 0;
- u v1152 = 0;
- u v1153 = 0;
- u v1154 = 0;
- u v1155 = 0;
- u v1156 = 0;
- u v1157 = 0;
- u v1158 = 0;
- u v1159 = 0;
- u v1160 = 0;
- u v1161 = 0;
- u v1162 = 0;
- u v1163 = 0;
- u v1164 = 0;
- u v1165 = 0;
- u v1166 = 0;
- u v1167 = 0;
- u v1168 = 0;
- u v1169 = 0;
- u v1170 = 0;
- u v1171 = 0;
- u v1172 = 0;
- u v1173 = 0;
- u v1174 = 0;
- u v1175 = 0;
- u v1176 = 0;
- u v1177 = 0;
- u v1178 = 0;
- u v1179 = 0;
- u v1180 = 0;
- u v1181 = 0;
- u v1182 = 0;
- u v1183 = 0;
- u v1184 = 0;
- u v1185 = 0;
- u v1186 = 0;
- u v1187 = 0;
- u v1188 = 0;
- u v1189 = 0;
- u v1190 = 0;
- u v1191 = 0;
- u v1192 = 0;
- u v1193 = 0;
- u v1194 = 0;
- u v1195 = 0;
- u v1196 = 0;
- u v1197 = 0;
- u v1198 = 0;
- u v1199 = 0;
- u v1200 = 0;
- u v1201 = 0;
- u v1202 = 0;
- u v1203 = 0;
- u v1204 = 0;
- u v1205 = 0;
- u v1206 = 0;
- u v1207 = 0;
- u v1208 = 0;
- u v1209 = 0;
- u v1210 = 0;
- u v1211 = 0;
- u v1212 = 0;
- u v1213 = 0;
- u v1214 = 0;
- u v1215 = 0;
- u v1216 = 0;
- u v1217 = 0;
- u v1218 = 0;
- u v1219 = 0;
- u v1220 = 0;
- u v1221 = 0;
- u v1222 = 0;
- u v1223 = 0;
- u v1224 = 0;
- u v1225 = 0;
- u v1226 = 0;
- u v1227 = 0;
- u v1228 = 0;
- u v1229 = 0;
- u v1230 = 0;
- u v1231 = 0;
- u v1232 = 0;
- u v1233 = 0;
- u v1234 = 0;
- u v1235 = 0;
- u v1236 = 0;
- u v1237 = 0;
- u v1238 = 0;
- u v1239 = 0;
- u v1240 = 0;
- u v1241 = 0;
- u v1242 = 0;
- u v1243 = 0;
- u v1244 = 0;
- u v1245 = 0;
- u v1246 = 0;
- u v1247 = 0;
- u v1248 = 0;
- u v1249 = 0;
- u v1250 = 0;
- u v1251 = 0;
- u v1252 = 0;
- u v1253 = 0;
- u v1254 = 0;
- u v1255 = 0;
- u v1256 = 0;
- u v1257 = 0;
- u v1258 = 0;
- u v1259 = 0;
- u v1260 = 0;
- u v1261 = 0;
- u v1262 = 0;
- u v1263 = 0;
- u v1264 = 0;
- u v1265 = 0;
- u v1266 = 0;
- u v1267 = 0;
- u v1268 = 0;
- u v1269 = 0;
- u v1270 = 0;
- u v1271 = 0;
- u v1272 = 0;
- u v1273 = 0;
- u v1274 = 0;
- u v1275 = 0;
- u v1276 = 0;
- u v1277 = 0;
- u v1278 = 0;
- u v1279 = 0;
- u v1280 = 0;
- u v1281 = 0;
- u v1282 = 0;
- u v1283 = 0;
- u v1284 = 0;
- u v1285 = 0;
- u v1286 = 0;
- u v1287 = 0;
- u v1288 = 0;
- u v1289 = 0;
- u v1290 = 0;
- u v1291 = 0;
- u v1292 = 0;
- u v1293 = 0;
- u v1294 = 0;
- u v1295 = 0;
- u v1296 = 0;
- u v1297 = 0;
- u v1298 = 0;
- u v1299 = 0;
- u v1300 = 0;
- u v1301 = 0;
- u v1302 = 0;
- u v1303 = 0;
- u v1304 = 0;
- u v1305 = 0;
- u v1306 = 0;
- u v1307 = 0;
- u v1308 = 0;
- u v1309 = 0;
- u v1310 = 0;
- u v1311 = 0;
- u v1312 = 0;
- u v1313 = 0;
- u v1314 = 0;
- u v1315 = 0;
- u v1316 = 0;
- u v1317 = 0;
- u v1318 = 0;
- u v1319 = 0;
- u v1320 = 0;
- u v1321 = 0;
- u v1322 = 0;
- u v1323 = 0;
- u v1324 = 0;
- u v1325 = 0;
- u v1326 = 0;
- u v1327 = 0;
- u v1328 = 0;
- u v1329 = 0;
- u v1330 = 0;
- u v1331 = 0;
- u v1332 = 0;
- u v1333 = 0;
- u v1334 = 0;
- u v1335 = 0;
- u v1336 = 0;
- u v1337 = 0;
- u v1338 = 0;
- u v1339 = 0;
- u v1340 = 0;
- u v1341 = 0;
- u v1342 = 0;
- u v1343 = 0;
- u v1344 = 0;
- u v1345 = 0;
- u v1346 = 0;
- u v1347 = 0;
- u v1348 = 0;
- u v1349 = 0;
- u v1350 = 0;
- u v1351 = 0;
- u v1352 = 0;
- u v1353 = 0;
- u v1354 = 0;
- u v1355 = 0;
- u v1356 = 0;
- u v1357 = 0;
- u v1358 = 0;
- u v1359 = 0;
- u v1360 = 0;
- u v1361 = 0;
- u v1362 = 0;
- u v1363 = 0;
- u v1364 = 0;
- u v1365 = 0;
- u v1366 = 0;
- u v1367 = 0;
- u v1368 = 0;
- u v1369 = 0;
- u v1370 = 0;
- u v1371 = 0;
- u v1372 = 0;
- u v1373 = 0;
- u v1374 = 0;
- u v1375 = 0;
- u v1376 = 0;
- u v1377 = 0;
- u v1378 = 0;
- u v1379 = 0;
- u v1380 = 0;
- u v1381 = 0;
- u v1382 = 0;
- u v1383 = 0;
- u v1384 = 0;
- u v1385 = 0;
- u v1386 = 0;
- u v1387 = 0;
- u v1388 = 0;
- u v1389 = 0;
- u v1390 = 0;
- u v1391 = 0;
- u v1392 = 0;
- u v1393 = 0;
- u v1394 = 0;
- u v1395 = 0;
- u v1396 = 0;
- u v1397 = 0;
- u v1398 = 0;
- u v1399 = 0;
- u v1400 = 0;
- u v1401 = 0;
- u v1402 = 0;
- u v1403 = 0;
- u v1404 = 0;
- u v1405 = 0;
- u v1406 = 0;
- u v1407 = 0;
- u v1408 = 0;
- u v1409 = 0;
- u v1410 = 0;
- u v1411 = 0;
- u v1412 = 0;
- u v1413 = 0;
- u v1414 = 0;
- u v1415 = 0;
- u v1416 = 0;
- u v1417 = 0;
- u v1418 = 0;
- u v1419 = 0;
- u v1420 = 0;
- u v1421 = 0;
- u v1422 = 0;
- u v1423 = 0;
- u v1424 = 0;
- u v1425 = 0;
- u v1426 = 0;
- u v1427 = 0;
- u v1428 = 0;
- u v1429 = 0;
- u v1430 = 0;
- u v1431 = 0;
- u v1432 = 0;
- u v1433 = 0;
- u v1434 = 0;
- u v1435 = 0;
- u v1436 = 0;
- u v1437 = 0;
- u v1438 = 0;
- u v1439 = 0;
- u v1440 = 0;
- u v1441 = 0;
- u v1442 = 0;
- u v1443 = 0;
- u v1444 = 0;
- u v1445 = 0;
- u v1446 = 0;
- u v1447 = 0;
- u v1448 = 0;
- u v1449 = 0;
- u v1450 = 0;
- u v1451 = 0;
- u v1452 = 0;
- u v1453 = 0;
- u v1454 = 0;
- u v1455 = 0;
- u v1456 = 0;
- u v1457 = 0;
- u v1458 = 0;
- u v1459 = 0;
- u v1460 = 0;
- u v1461 = 0;
- u v1462 = 0;
- u v1463 = 0;
- u v1464 = 0;
- u v1465 = 0;
- u v1466 = 0;
- u v1467 = 0;
- u v1468 = 0;
- u v1469 = 0;
- u v1470 = 0;
- u v1471 = 0;
- u v1472 = 0;
- u v1473 = 0;
- u v1474 = 0;
- u v1475 = 0;
- u v1476 = 0;
- u v1477 = 0;
- u v1478 = 0;
- u v1479 = 0;
- u v1480 = 0;
- u v1481 = 0;
- u v1482 = 0;
- u v1483 = 0;
- u v1484 = 0;
- u v1485 = 0;
- u v1486 = 0;
- u v1487 = 0;
- u v1488 = 0;
- u v1489 = 0;
- u v1490 = 0;
- u v1491 = 0;
- u v1492 = 0;
- u v1493 = 0;
- u v1494 = 0;
- u v1495 = 0;
- u v1496 = 0;
- u v1497 = 0;
- u v1498 = 0;
- u v1499 = 0;
- u v1500 = 0;
- u v1501 = 0;
- u v1502 = 0;
- u v1503 = 0;
- u v1504 = 0;
- u v1505 = 0;
- u v1506 = 0;
- u v1507 = 0;
- u v1508 = 0;
- u v1509 = 0;
- u v1510 = 0;
- u v1511 = 0;
- u v1512 = 0;
- u v1513 = 0;
- u v1514 = 0;
- u v1515 = 0;
- u v1516 = 0;
- u v1517 = 0;
- u v1518 = 0;
- u v1519 = 0;
- u v1520 = 0;
- u v1521 = 0;
- u v1522 = 0;
- u v1523 = 0;
- u v1524 = 0;
- u v1525 = 0;
- u v1526 = 0;
- u v1527 = 0;
- u v1528 = 0;
- u v1529 = 0;
- u v1530 = 0;
- u v1531 = 0;
- u v1532 = 0;
- u v1533 = 0;
- u v1534 = 0;
- u v1535 = 0;
- u v1536 = 0;
- u v1537 = 0;
- u v1538 = 0;
- u v1539 = 0;
- u v1540 = 0;
- u v1541 = 0;
- u v1542 = 0;
- u v1543 = 0;
- u v1544 = 0;
- u v1545 = 0;
- u v1546 = 0;
- u v1547 = 0;
- u v1548 = 0;
- u v1549 = 0;
- u v1550 = 0;
- u v1551 = 0;
- u v1552 = 0;
- u v1553 = 0;
- u v1554 = 0;
- u v1555 = 0;
- u v1556 = 0;
- u v1557 = 0;
- u v1558 = 0;
- u v1559 = 0;
- u v1560 = 0;
- u v1561 = 0;
- u v1562 = 0;
- u v1563 = 0;
- u v1564 = 0;
- u v1565 = 0;
- u v1566 = 0;
- u v1567 = 0;
- u v1568 = 0;
- u v1569 = 0;
- u v1570 = 0;
- u v1571 = 0;
- u v1572 = 0;
- u v1573 = 0;
- u v1574 = 0;
- u v1575 = 0;
- u v1576 = 0;
- u v1577 = 0;
- u v1578 = 0;
- u v1579 = 0;
- u v1580 = 0;
- u v1581 = 0;
- u v1582 = 0;
- u v1583 = 0;
- u v1584 = 0;
- u v1585 = 0;
- u v1586 = 0;
- u v1587 = 0;
- u v1588 = 0;
- u v1589 = 0;
- u v1590 = 0;
- u v1591 = 0;
- u v1592 = 0;
- u v1593 = 0;
- u v1594 = 0;
- u v1595 = 0;
- u v1596 = 0;
- u v1597 = 0;
- u v1598 = 0;
- u v1599 = 0;
- u v1600 = 0;
- u v1601 = 0;
- u v1602 = 0;
- u v1603 = 0;
- u v1604 = 0;
- u v1605 = 0;
- u v1606 = 0;
- u v1607 = 0;
- u v1608 = 0;
- u v1609 = 0;
- u v1610 = 0;
- u v1611 = 0;
- u v1612 = 0;
- u v1613 = 0;
- u v1614 = 0;
- u v1615 = 0;
- u v1616 = 0;
- u v1617 = 0;
- u v1618 = 0;
- u v1619 = 0;
- u v1620 = 0;
- u v1621 = 0;
- u v1622 = 0;
- u v1623 = 0;
- u v1624 = 0;
- u v1625 = 0;
- u v1626 = 0;
- u v1627 = 0;
- u v1628 = 0;
- u v1629 = 0;
- u v1630 = 0;
- u v1631 = 0;
- u v1632 = 0;
- u v1633 = 0;
- u v1634 = 0;
- u v1635 = 0;
- u v1636 = 0;
- u v1637 = 0;
- u v1638 = 0;
- u v1639 = 0;
- u v1640 = 0;
- u v1641 = 0;
- u v1642 = 0;
- u v1643 = 0;
- u v1644 = 0;
- u v1645 = 0;
- u v1646 = 0;
- u v1647 = 0;
- u v1648 = 0;
- u v1649 = 0;
- u v1650 = 0;
- u v1651 = 0;
- u v1652 = 0;
- u v1653 = 0;
- u v1654 = 0;
- u v1655 = 0;
- u v1656 = 0;
- u v1657 = 0;
- u v1658 = 0;
- u v1659 = 0;
- u v1660 = 0;
- u v1661 = 0;
- u v1662 = 0;
- u v1663 = 0;
- u v1664 = 0;
- u v1665 = 0;
- u v1666 = 0;
- u v1667 = 0;
- u v1668 = 0;
- u v1669 = 0;
- u v1670 = 0;
- u v1671 = 0;
- u v1672 = 0;
- u v1673 = 0;
- u v1674 = 0;
- u v1675 = 0;
- u v1676 = 0;
- u v1677 = 0;
- u v1678 = 0;
- u v1679 = 0;
- u v1680 = 0;
- u v1681 = 0;
- u v1682 = 0;
- u v1683 = 0;
- u v1684 = 0;
- u v1685 = 0;
- u v1686 = 0;
- u v1687 = 0;
- u v1688 = 0;
- u v1689 = 0;
- u v1690 = 0;
- u v1691 = 0;
- u v1692 = 0;
- u v1693 = 0;
- u v1694 = 0;
- u v1695 = 0;
- u v1696 = 0;
- u v1697 = 0;
- u v1698 = 0;
- u v1699 = 0;
- u v1700 = 0;
- u v1701 = 0;
- u v1702 = 0;
- u v1703 = 0;
- u v1704 = 0;
- u v1705 = 0;
- u v1706 = 0;
- u v1707 = 0;
- u v1708 = 0;
- u v1709 = 0;
- u v1710 = 0;
- u v1711 = 0;
- u v1712 = 0;
- u v1713 = 0;
- u v1714 = 0;
- u v1715 = 0;
- u v1716 = 0;
- u v1717 = 0;
- u v1718 = 0;
- u v1719 = 0;
- u v1720 = 0;
- u v1721 = 0;
- u v1722 = 0;
- u v1723 = 0;
- u v1724 = 0;
- u v1725 = 0;
- u v1726 = 0;
- u v1727 = 0;
- u v1728 = 0;
- u v1729 = 0;
- u v1730 = 0;
- u v1731 = 0;
- u v1732 = 0;
- u v1733 = 0;
- u v1734 = 0;
- u v1735 = 0;
- u v1736 = 0;
- u v1737 = 0;
- u v1738 = 0;
- u v1739 = 0;
- u v1740 = 0;
- u v1741 = 0;
- u v1742 = 0;
- u v1743 = 0;
- u v1744 = 0;
- u v1745 = 0;
- u v1746 = 0;
- u v1747 = 0;
- u v1748 = 0;
- u v1749 = 0;
- u v1750 = 0;
- u v1751 = 0;
- u v1752 = 0;
- u v1753 = 0;
- u v1754 = 0;
- u v1755 = 0;
- u v1756 = 0;
- u v1757 = 0;
- u v1758 = 0;
- u v1759 = 0;
- u v1760 = 0;
- u v1761 = 0;
- u v1762 = 0;
- u v1763 = 0;
- u v1764 = 0;
- u v1765 = 0;
- u v1766 = 0;
- u v1767 = 0;
- u v1768 = 0;
- u v1769 = 0;
- u v1770 = 0;
- u v1771 = 0;
- u v1772 = 0;
- u v1773 = 0;
- u v1774 = 0;
- u v1775 = 0;
- u v1776 = 0;
- u v1777 = 0;
- u v1778 = 0;
- u v1779 = 0;
- u v1780 = 0;
- u v1781 = 0;
- u v1782 = 0;
- u v1783 = 0;
- u v1784 = 0;
- u v1785 = 0;
- u v1786 = 0;
- u v1787 = 0;
- u v1788 = 0;
- u v1789 = 0;
- u v1790 = 0;
- u v1791 = 0;
- u v1792 = 0;
- u v1793 = 0;
- u v1794 = 0;
- u v1795 = 0;
- u v1796 = 0;
- u v1797 = 0;
- u v1798 = 0;
- u v1799 = 0;
- u v1800 = 0;
- u v1801 = 0;
- u v1802 = 0;
- u v1803 = 0;
- u v1804 = 0;
- u v1805 = 0;
- u v1806 = 0;
- u v1807 = 0;
- u v1808 = 0;
- u v1809 = 0;
- u v1810 = 0;
- u v1811 = 0;
- u v1812 = 0;
- u v1813 = 0;
- u v1814 = 0;
- u v1815 = 0;
- u v1816 = 0;
- u v1817 = 0;
- u v1818 = 0;
- u v1819 = 0;
- u v1820 = 0;
- u v1821 = 0;
- u v1822 = 0;
- u v1823 = 0;
- u v1824 = 0;
- u v1825 = 0;
- u v1826 = 0;
- u v1827 = 0;
- u v1828 = 0;
- u v1829 = 0;
- u v1830 = 0;
- u v1831 = 0;
- u v1832 = 0;
- u v1833 = 0;
- u v1834 = 0;
- u v1835 = 0;
- u v1836 = 0;
- u v1837 = 0;
- u v1838 = 0;
- u v1839 = 0;
- u v1840 = 0;
- u v1841 = 0;
- u v1842 = 0;
- u v1843 = 0;
- u v1844 = 0;
- u v1845 = 0;
- u v1846 = 0;
- u v1847 = 0;
- u v1848 = 0;
- u v1849 = 0;
- u v1850 = 0;
- u v1851 = 0;
- u v1852 = 0;
- u v1853 = 0;
- u v1854 = 0;
- u v1855 = 0;
- u v1856 = 0;
- u v1857 = 0;
- u v1858 = 0;
- u v1859 = 0;
- u v1860 = 0;
- u v1861 = 0;
- u v1862 = 0;
- u v1863 = 0;
- u v1864 = 0;
- u v1865 = 0;
- u v1866 = 0;
- u v1867 = 0;
- u v1868 = 0;
- u v1869 = 0;
- u v1870 = 0;
- u v1871 = 0;
- u v1872 = 0;
- u v1873 = 0;
- u v1874 = 0;
- u v1875 = 0;
- u v1876 = 0;
- u v1877 = 0;
- u v1878 = 0;
- u v1879 = 0;
- u v1880 = 0;
- u v1881 = 0;
- u v1882 = 0;
- u v1883 = 0;
- u v1884 = 0;
- u v1885 = 0;
- u v1886 = 0;
- u v1887 = 0;
- u v1888 = 0;
- u v1889 = 0;
- u v1890 = 0;
- u v1891 = 0;
- u v1892 = 0;
- u v1893 = 0;
- u v1894 = 0;
- u v1895 = 0;
- u v1896 = 0;
- u v1897 = 0;
- u v1898 = 0;
- u v1899 = 0;
- u v1900 = 0;
- u v1901 = 0;
- u v1902 = 0;
- u v1903 = 0;
- u v1904 = 0;
- u v1905 = 0;
- u v1906 = 0;
- u v1907 = 0;
- u v1908 = 0;
- u v1909 = 0;
- u v1910 = 0;
- u v1911 = 0;
- u v1912 = 0;
- u v1913 = 0;
- u v1914 = 0;
- u v1915 = 0;
- u v1916 = 0;
- u v1917 = 0;
- u v1918 = 0;
- u v1919 = 0;
- u v1920 = 0;
- u v1921 = 0;
- u v1922 = 0;
- u v1923 = 0;
- u v1924 = 0;
- u v1925 = 0;
- u v1926 = 0;
- u v1927 = 0;
- u v1928 = 0;
- u v1929 = 0;
- u v1930 = 0;
- u v1931 = 0;
- u v1932 = 0;
- u v1933 = 0;
- u v1934 = 0;
- u v1935 = 0;
- u v1936 = 0;
- u v1937 = 0;
- u v1938 = 0;
- u v1939 = 0;
- u v1940 = 0;
- u v1941 = 0;
- u v1942 = 0;
- u v1943 = 0;
- u v1944 = 0;
- u v1945 = 0;
- u v1946 = 0;
- u v1947 = 0;
- u v1948 = 0;
- u v1949 = 0;
- u v1950 = 0;
- u v1951 = 0;
- u v1952 = 0;
- u v1953 = 0;
- u v1954 = 0;
- u v1955 = 0;
- u v1956 = 0;
- u v1957 = 0;
- u v1958 = 0;
- u v1959 = 0;
- u v1960 = 0;
- u v1961 = 0;
- u v1962 = 0;
- u v1963 = 0;
- u v1964 = 0;
- u v1965 = 0;
- u v1966 = 0;
- u v1967 = 0;
- u v1968 = 0;
- u v1969 = 0;
- u v1970 = 0;
- u v1971 = 0;
- u v1972 = 0;
- u v1973 = 0;
- u v1974 = 0;
- u v1975 = 0;
- u v1976 = 0;
- u v1977 = 0;
- u v1978 = 0;
- u v1979 = 0;
- u v1980 = 0;
- u v1981 = 0;
- v2 = (u)zfind;
- v3 = vc;
- v4 = (u)"syscall";
- v5 = 0UL;
- v6 = 1UL;
- v7 = ((u(*)())v2)(v3, v4, v5, v6);
- vd = v7;
- if (!*(u*)(vd + 72UL)) goto b6;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b10;
- v9 = 0UL;
-b11: if (!v9) goto b6;
- v8 = 1UL;
-b8: if (!v8) goto b4;
- v10 = (u)zfixup_label;
- v11 = *(u*)(vc + 48UL);
- v12 = *(u*)(vd + 88UL);
- v13 = ((u(*)())v10)(v11, v12);
- v13;
- v14 = (u)zadd_symbol;
- v15 = *(u*)(vc + 48UL);
- v16 = *(u*)(vd + 32UL);
- v17 = *(u*)(vd + 88UL);
- v18 = ((u(*)())v14)(v15, v16, v17);
- v18;
- v19 = (u)zas_modrr;
- v20 = *(u*)(vc + 48UL);
- v21 = 139UL;
- v22 = 0UL;
- v23 = 7UL;
- v24 = ((u(*)())v19)(v20, v21, v22, v23);
- v24;
- v25 = (u)zas_modrr;
- v26 = *(u*)(vc + 48UL);
- v27 = 139UL;
- v28 = 7UL;
- v29 = 6UL;
- v30 = ((u(*)())v25)(v26, v27, v28, v29);
- v30;
- v31 = (u)zas_modrr;
- v32 = *(u*)(vc + 48UL);
- v33 = 139UL;
- v34 = 6UL;
- v35 = 2UL;
- v36 = ((u(*)())v31)(v32, v33, v34, v35);
- v36;
- v37 = (u)zas_modrr;
- v38 = *(u*)(vc + 48UL);
- v39 = 139UL;
- v40 = 2UL;
- v41 = 1UL;
- v42 = ((u(*)())v37)(v38, v39, v40, v41);
- v42;
- v43 = (u)zas_modrr;
- v44 = *(u*)(vc + 48UL);
- v45 = 139UL;
- v46 = 10UL;
- v47 = 8UL;
- v48 = ((u(*)())v43)(v44, v45, v46, v47);
- v48;
- v49 = (u)zas_modrr;
- v50 = *(u*)(vc + 48UL);
- v51 = 139UL;
- v52 = 8UL;
- v53 = 9UL;
- v54 = ((u(*)())v49)(v50, v51, v52, v53);
- v54;
- v55 = (u)zas_modrm;
- v56 = *(u*)(vc + 48UL);
- v57 = 139UL;
- v58 = 9UL;
- v59 = 4UL;
- v60 = 0UL;
- v61 = 0UL;
- v62 = 8UL;
- v63 = ((u(*)())v55)(v56, v57, v58, v59, v60, v61, v62);
- v63;
- v64 = (u)zas_op;
- v65 = *(u*)(vc + 48UL);
- v66 = 3845UL;
- v67 = ((u(*)())v64)(v65, v66);
- v67;
- v68 = (u)zas_op;
- v69 = *(u*)(vc + 48UL);
- v70 = 195UL;
- v71 = ((u(*)())v68)(v69, v70);
- v71;
-b2: v72 = (u)zfind;
- v73 = vc;
- v74 = (u)"_restorer";
- v75 = 0UL;
- v76 = 1UL;
- v77 = ((u(*)())v72)(v73, v74, v75, v76);
- vd = v77;
- if (!*(u*)(vd + 72UL)) goto b28;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b32;
- v79 = 0UL;
-b33: if (!v79) goto b28;
- v78 = 1UL;
-b30: if (!v78) goto b26;
- v80 = (u)zfixup_label;
- v81 = *(u*)(vc + 48UL);
- v82 = *(u*)(vd + 88UL);
- v83 = ((u(*)())v80)(v81, v82);
- v83;
- v84 = (u)zadd_symbol;
- v85 = *(u*)(vc + 48UL);
- v86 = *(u*)(vd + 32UL);
- v87 = *(u*)(vd + 88UL);
- v88 = ((u(*)())v84)(v85, v86, v87);
- v88;
- v89 = (u)zas_modri;
- v90 = *(u*)(vc + 48UL);
- v91 = 199UL;
- v92 = 0UL;
- v93 = 15UL;
- v94 = ((u(*)())v89)(v90, v91, v92, v93);
- v94;
- v95 = (u)zas_op;
- v96 = *(u*)(vc + 48UL);
- v97 = 3845UL;
- v98 = ((u(*)())v95)(v96, v97);
- v98;
-b24: v99 = (u)zfind;
- v100 = vc;
- v101 = (u)"_include";
- v102 = 0UL;
- v103 = 1UL;
- v104 = ((u(*)())v99)(v100, v101, v102, v103);
- vd = v104;
- if (!*(u*)(vd + 72UL)) goto b43;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b47;
- v106 = 0UL;
-b48: if (!v106) goto b43;
- v105 = 1UL;
-b45: if (!v105) goto b41;
- v107 = (u)zfixup_label;
- v108 = *(u*)(vc + 48UL);
- v109 = *(u*)(vd + 88UL);
- v110 = ((u(*)())v107)(v108, v109);
- v110;
- v111 = (u)zadd_symbol;
- v112 = *(u*)(vc + 48UL);
- v113 = *(u*)(vd + 32UL);
- v114 = *(u*)(vd + 88UL);
- v115 = ((u(*)())v111)(v112, v113, v114);
- v115;
- v116 = (u)zas_op;
- v117 = *(u*)(vc + 48UL);
- v118 = 3851UL;
- v119 = ((u(*)())v116)(v117, v118);
- v119;
-b39: v120 = (u)zfind;
- v121 = vc;
- v122 = (u)"ud2";
- v123 = 0UL;
- v124 = 1UL;
- v125 = ((u(*)())v120)(v121, v122, v123, v124);
- vd = v125;
- if (!*(u*)(vd + 72UL)) goto b57;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b61;
- v127 = 0UL;
-b62: if (!v127) goto b57;
- v126 = 1UL;
-b59: if (!v126) goto b55;
- v128 = (u)zfixup_label;
- v129 = *(u*)(vc + 48UL);
- v130 = *(u*)(vd + 88UL);
- v131 = ((u(*)())v128)(v129, v130);
- v131;
- v132 = (u)zadd_symbol;
- v133 = *(u*)(vc + 48UL);
- v134 = *(u*)(vd + 32UL);
- v135 = *(u*)(vd + 88UL);
- v136 = ((u(*)())v132)(v133, v134, v135);
- v136;
- v137 = (u)zas_op;
- v138 = *(u*)(vc + 48UL);
- v139 = 3851UL;
- v140 = ((u(*)())v137)(v138, v139);
- v140;
-b53: v141 = (u)zfind;
- v142 = vc;
- v143 = (u)"cpuid";
- v144 = 0UL;
- v145 = 1UL;
- v146 = ((u(*)())v141)(v142, v143, v144, v145);
- vd = v146;
- if (!*(u*)(vd + 72UL)) goto b71;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b75;
- v148 = 0UL;
-b76: if (!v148) goto b71;
- v147 = 1UL;
-b73: if (!v147) goto b69;
- v149 = (u)zfixup_label;
- v150 = *(u*)(vc + 48UL);
- v151 = *(u*)(vd + 88UL);
- v152 = ((u(*)())v149)(v150, v151);
- v152;
- v153 = (u)zadd_symbol;
- v154 = *(u*)(vc + 48UL);
- v155 = *(u*)(vd + 32UL);
- v156 = *(u*)(vd + 88UL);
- v157 = ((u(*)())v153)(v154, v155, v156);
- v157;
- v158 = (u)zas_opr;
- v159 = *(u*)(vc + 48UL);
- v160 = 80UL;
- v161 = 1UL;
- v162 = ((u(*)())v158)(v159, v160, v161);
- v162;
- v163 = (u)zas_opr;
- v164 = *(u*)(vc + 48UL);
- v165 = 80UL;
- v166 = 2UL;
- v167 = ((u(*)())v163)(v164, v165, v166);
- v167;
- v168 = (u)zas_opr;
- v169 = *(u*)(vc + 48UL);
- v170 = 80UL;
- v171 = 6UL;
- v172 = ((u(*)())v168)(v169, v170, v171);
- v172;
- v173 = (u)zas_opr;
- v174 = *(u*)(vc + 48UL);
- v175 = 80UL;
- v176 = 7UL;
- v177 = ((u(*)())v173)(v174, v175, v176);
- v177;
- v178 = (u)zas_modrm;
- v179 = *(u*)(vc + 48UL);
- v180 = 139UL;
- v181 = 0UL;
- v182 = 7UL;
- v183 = 0UL;
- v184 = 0UL;
- v185 = 0UL;
- v186 = ((u(*)())v178)(v179, v180, v181, v182, v183, v184, v185);
- v186;
- v187 = (u)zas_modrm;
- v188 = *(u*)(vc + 48UL);
- v189 = 139UL;
- v190 = 1UL;
- v191 = 6UL;
- v192 = 0UL;
- v193 = 0UL;
- v194 = 0UL;
- v195 = ((u(*)())v187)(v188, v189, v190, v191, v192, v193, v194);
- v195;
- v196 = (u)zas_modrm;
- v197 = *(u*)(vc + 48UL);
- v198 = 139UL;
- v199 = 2UL;
- v200 = 2UL;
- v201 = 0UL;
- v202 = 0UL;
- v203 = 0UL;
- v204 = ((u(*)())v196)(v197, v198, v199, v200, v201, v202, v203);
- v204;
- v205 = (u)zas_modrm;
- v206 = *(u*)(vc + 48UL);
- v207 = 139UL;
- v208 = 3UL;
- v209 = 1UL;
- v210 = 0UL;
- v211 = 0UL;
- v212 = 0UL;
- v213 = ((u(*)())v205)(v206, v207, v208, v209, v210, v211, v212);
- v213;
- v214 = (u)zas_op;
- v215 = *(u*)(vc + 48UL);
- v216 = 4002UL;
- v217 = ((u(*)())v214)(v215, v216);
- v217;
- v218 = (u)zas_opr;
- v219 = *(u*)(vc + 48UL);
- v220 = 88UL;
- v221 = 7UL;
- v222 = ((u(*)())v218)(v219, v220, v221);
- v222;
- v223 = (u)zas_opr;
- v224 = *(u*)(vc + 48UL);
- v225 = 88UL;
- v226 = 6UL;
- v227 = ((u(*)())v223)(v224, v225, v226);
- v227;
- v228 = (u)zas_opr;
- v229 = *(u*)(vc + 48UL);
- v230 = 88UL;
- v231 = 2UL;
- v232 = ((u(*)())v228)(v229, v230, v231);
- v232;
- v233 = (u)zas_opr;
- v234 = *(u*)(vc + 48UL);
- v235 = 88UL;
- v236 = 1UL;
- v237 = ((u(*)())v233)(v234, v235, v236);
- v237;
- v238 = (u)zas_modrm;
- v239 = *(u*)(vc + 48UL);
- v240 = 137UL;
- v241 = 0UL;
- v242 = 7UL;
- v243 = 0UL;
- v244 = 0UL;
- v245 = 0UL;
- v246 = ((u(*)())v238)(v239, v240, v241, v242, v243, v244, v245);
- v246;
- v247 = (u)zas_modrm;
- v248 = *(u*)(vc + 48UL);
- v249 = 137UL;
- v250 = 1UL;
- v251 = 6UL;
- v252 = 0UL;
- v253 = 0UL;
- v254 = 0UL;
- v255 = ((u(*)())v247)(v248, v249, v250, v251, v252, v253, v254);
- v255;
- v256 = (u)zas_modrm;
- v257 = *(u*)(vc + 48UL);
- v258 = 137UL;
- v259 = 2UL;
- v260 = 2UL;
- v261 = 0UL;
- v262 = 0UL;
- v263 = 0UL;
- v264 = ((u(*)())v256)(v257, v258, v259, v260, v261, v262, v263);
- v264;
- v265 = (u)zas_modrm;
- v266 = *(u*)(vc + 48UL);
- v267 = 137UL;
- v268 = 3UL;
- v269 = 1UL;
- v270 = 0UL;
- v271 = 0UL;
- v272 = 0UL;
- v273 = ((u(*)())v265)(v266, v267, v268, v269, v270, v271, v272);
- v273;
- v274 = (u)zas_op;
- v275 = *(u*)(vc + 48UL);
- v276 = 195UL;
- v277 = ((u(*)())v274)(v275, v276);
- v277;
-b67: v278 = (u)zfind;
- v279 = vc;
- v280 = (u)"inb";
- v281 = 0UL;
- v282 = 1UL;
- v283 = ((u(*)())v278)(v279, v280, v281, v282);
- vd = v283;
- if (!*(u*)(vd + 72UL)) goto b102;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b106;
- v285 = 0UL;
-b107: if (!v285) goto b102;
- v284 = 1UL;
-b104: if (!v284) goto b100;
- v286 = (u)zfixup_label;
- v287 = *(u*)(vc + 48UL);
- v288 = *(u*)(vd + 88UL);
- v289 = ((u(*)())v286)(v287, v288);
- v289;
- v290 = (u)zadd_symbol;
- v291 = *(u*)(vc + 48UL);
- v292 = *(u*)(vd + 32UL);
- v293 = *(u*)(vd + 88UL);
- v294 = ((u(*)())v290)(v291, v292, v293);
- v294;
- v295 = (u)zas_modrr;
- v296 = *(u*)(vc + 48UL);
- v297 = 139UL;
- v298 = 2UL;
- v299 = 7UL;
- v300 = ((u(*)())v295)(v296, v297, v298, v299);
- v300;
- v301 = (u)zas_op;
- v302 = *(u*)(vc + 48UL);
- v303 = 236UL;
- v304 = ((u(*)())v301)(v302, v303);
- v304;
- v305 = (u)zas_op;
- v306 = *(u*)(vc + 48UL);
- v307 = 195UL;
- v308 = ((u(*)())v305)(v306, v307);
- v308;
-b98: v309 = (u)zfind;
- v310 = vc;
- v311 = (u)"outb";
- v312 = 0UL;
- v313 = 1UL;
- v314 = ((u(*)())v309)(v310, v311, v312, v313);
- vd = v314;
- if (!*(u*)(vd + 72UL)) goto b118;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b122;
- v316 = 0UL;
-b123: if (!v316) goto b118;
- v315 = 1UL;
-b120: if (!v315) goto b116;
- v317 = (u)zfixup_label;
- v318 = *(u*)(vc + 48UL);
- v319 = *(u*)(vd + 88UL);
- v320 = ((u(*)())v317)(v318, v319);
- v320;
- v321 = (u)zadd_symbol;
- v322 = *(u*)(vc + 48UL);
- v323 = *(u*)(vd + 32UL);
- v324 = *(u*)(vd + 88UL);
- v325 = ((u(*)())v321)(v322, v323, v324);
- v325;
- v326 = (u)zas_modrr;
- v327 = *(u*)(vc + 48UL);
- v328 = 139UL;
- v329 = 2UL;
- v330 = 7UL;
- v331 = ((u(*)())v326)(v327, v328, v329, v330);
- v331;
- v332 = (u)zas_modrr;
- v333 = *(u*)(vc + 48UL);
- v334 = 139UL;
- v335 = 0UL;
- v336 = 6UL;
- v337 = ((u(*)())v332)(v333, v334, v335, v336);
- v337;
- v338 = (u)zas_op;
- v339 = *(u*)(vc + 48UL);
- v340 = 238UL;
- v341 = ((u(*)())v338)(v339, v340);
- v341;
- v342 = (u)zas_op;
- v343 = *(u*)(vc + 48UL);
- v344 = 195UL;
- v345 = ((u(*)())v342)(v343, v344);
- v345;
-b114: v346 = (u)zfind;
- v347 = vc;
- v348 = (u)"inw";
- v349 = 0UL;
- v350 = 1UL;
- v351 = ((u(*)())v346)(v347, v348, v349, v350);
- vd = v351;
- if (!*(u*)(vd + 72UL)) goto b135;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b139;
- v353 = 0UL;
-b140: if (!v353) goto b135;
- v352 = 1UL;
-b137: if (!v352) goto b133;
- v354 = (u)zfixup_label;
- v355 = *(u*)(vc + 48UL);
- v356 = *(u*)(vd + 88UL);
- v357 = ((u(*)())v354)(v355, v356);
- v357;
- v358 = (u)zadd_symbol;
- v359 = *(u*)(vc + 48UL);
- v360 = *(u*)(vd + 32UL);
- v361 = *(u*)(vd + 88UL);
- v362 = ((u(*)())v358)(v359, v360, v361);
- v362;
- v363 = (u)zas_modrr;
- v364 = *(u*)(vc + 48UL);
- v365 = 139UL;
- v366 = 2UL;
- v367 = 7UL;
- v368 = ((u(*)())v363)(v364, v365, v366, v367);
- v368;
- v369 = (u)zas_emit;
- v370 = *(u*)(vc + 48UL);
- v371 = 102UL;
- v372 = ((u(*)())v369)(v370, v371);
- v372;
- v373 = (u)zas_op;
- v374 = *(u*)(vc + 48UL);
- v375 = 237UL;
- v376 = ((u(*)())v373)(v374, v375);
- v376;
- v377 = (u)zas_op;
- v378 = *(u*)(vc + 48UL);
- v379 = 195UL;
- v380 = ((u(*)())v377)(v378, v379);
- v380;
-b131: v381 = (u)zfind;
- v382 = vc;
- v383 = (u)"outw";
- v384 = 0UL;
- v385 = 1UL;
- v386 = ((u(*)())v381)(v382, v383, v384, v385);
- vd = v386;
- if (!*(u*)(vd + 72UL)) goto b152;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b156;
- v388 = 0UL;
-b157: if (!v388) goto b152;
- v387 = 1UL;
-b154: if (!v387) goto b150;
- v389 = (u)zfixup_label;
- v390 = *(u*)(vc + 48UL);
- v391 = *(u*)(vd + 88UL);
- v392 = ((u(*)())v389)(v390, v391);
- v392;
- v393 = (u)zadd_symbol;
- v394 = *(u*)(vc + 48UL);
- v395 = *(u*)(vd + 32UL);
- v396 = *(u*)(vd + 88UL);
- v397 = ((u(*)())v393)(v394, v395, v396);
- v397;
- v398 = (u)zas_modrr;
- v399 = *(u*)(vc + 48UL);
- v400 = 139UL;
- v401 = 2UL;
- v402 = 7UL;
- v403 = ((u(*)())v398)(v399, v400, v401, v402);
- v403;
- v404 = (u)zas_modrr;
- v405 = *(u*)(vc + 48UL);
- v406 = 139UL;
- v407 = 0UL;
- v408 = 6UL;
- v409 = ((u(*)())v404)(v405, v406, v407, v408);
- v409;
- v410 = (u)zas_emit;
- v411 = *(u*)(vc + 48UL);
- v412 = 102UL;
- v413 = ((u(*)())v410)(v411, v412);
- v413;
- v414 = (u)zas_op;
- v415 = *(u*)(vc + 48UL);
- v416 = 239UL;
- v417 = ((u(*)())v414)(v415, v416);
- v417;
- v418 = (u)zas_op;
- v419 = *(u*)(vc + 48UL);
- v420 = 195UL;
- v421 = ((u(*)())v418)(v419, v420);
- v421;
-b148: v422 = (u)zfind;
- v423 = vc;
- v424 = (u)"ind";
- v425 = 0UL;
- v426 = 1UL;
- v427 = ((u(*)())v422)(v423, v424, v425, v426);
- vd = v427;
- if (!*(u*)(vd + 72UL)) goto b170;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b174;
- v429 = 0UL;
-b175: if (!v429) goto b170;
- v428 = 1UL;
-b172: if (!v428) goto b168;
- v430 = (u)zfixup_label;
- v431 = *(u*)(vc + 48UL);
- v432 = *(u*)(vd + 88UL);
- v433 = ((u(*)())v430)(v431, v432);
- v433;
- v434 = (u)zadd_symbol;
- v435 = *(u*)(vc + 48UL);
- v436 = *(u*)(vd + 32UL);
- v437 = *(u*)(vd + 88UL);
- v438 = ((u(*)())v434)(v435, v436, v437);
- v438;
- v439 = (u)zas_modrr;
- v440 = *(u*)(vc + 48UL);
- v441 = 139UL;
- v442 = 2UL;
- v443 = 7UL;
- v444 = ((u(*)())v439)(v440, v441, v442, v443);
- v444;
- v445 = (u)zas_op;
- v446 = *(u*)(vc + 48UL);
- v447 = 237UL;
- v448 = ((u(*)())v445)(v446, v447);
- v448;
- v449 = (u)zas_op;
- v450 = *(u*)(vc + 48UL);
- v451 = 195UL;
- v452 = ((u(*)())v449)(v450, v451);
- v452;
-b166: v453 = (u)zfind;
- v454 = vc;
- v455 = (u)"outd";
- v456 = 0UL;
- v457 = 1UL;
- v458 = ((u(*)())v453)(v454, v455, v456, v457);
- vd = v458;
- if (!*(u*)(vd + 72UL)) goto b186;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b190;
- v460 = 0UL;
-b191: if (!v460) goto b186;
- v459 = 1UL;
-b188: if (!v459) goto b184;
- v461 = (u)zfixup_label;
- v462 = *(u*)(vc + 48UL);
- v463 = *(u*)(vd + 88UL);
- v464 = ((u(*)())v461)(v462, v463);
- v464;
- v465 = (u)zadd_symbol;
- v466 = *(u*)(vc + 48UL);
- v467 = *(u*)(vd + 32UL);
- v468 = *(u*)(vd + 88UL);
- v469 = ((u(*)())v465)(v466, v467, v468);
- v469;
- v470 = (u)zas_modrr;
- v471 = *(u*)(vc + 48UL);
- v472 = 139UL;
- v473 = 2UL;
- v474 = 7UL;
- v475 = ((u(*)())v470)(v471, v472, v473, v474);
- v475;
- v476 = (u)zas_modrr;
- v477 = *(u*)(vc + 48UL);
- v478 = 139UL;
- v479 = 0UL;
- v480 = 6UL;
- v481 = ((u(*)())v476)(v477, v478, v479, v480);
- v481;
- v482 = (u)zas_op;
- v483 = *(u*)(vc + 48UL);
- v484 = 239UL;
- v485 = ((u(*)())v482)(v483, v484);
- v485;
- v486 = (u)zas_op;
- v487 = *(u*)(vc + 48UL);
- v488 = 195UL;
- v489 = ((u(*)())v486)(v487, v488);
- v489;
-b182: v490 = (u)zfind;
- v491 = vc;
- v492 = (u)"rdmsr";
- v493 = 0UL;
- v494 = 1UL;
- v495 = ((u(*)())v490)(v491, v492, v493, v494);
- vd = v495;
- if (!*(u*)(vd + 72UL)) goto b203;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b207;
- v497 = 0UL;
-b208: if (!v497) goto b203;
- v496 = 1UL;
-b205: if (!v496) goto b201;
- v498 = (u)zfixup_label;
- v499 = *(u*)(vc + 48UL);
- v500 = *(u*)(vd + 88UL);
- v501 = ((u(*)())v498)(v499, v500);
- v501;
- v502 = (u)zadd_symbol;
- v503 = *(u*)(vc + 48UL);
- v504 = *(u*)(vd + 32UL);
- v505 = *(u*)(vd + 88UL);
- v506 = ((u(*)())v502)(v503, v504, v505);
- v506;
- v507 = (u)zas_modrr;
- v508 = *(u*)(vc + 48UL);
- v509 = 139UL;
- v510 = 1UL;
- v511 = 7UL;
- v512 = ((u(*)())v507)(v508, v509, v510, v511);
- v512;
- v513 = (u)zas_op;
- v514 = *(u*)(vc + 48UL);
- v515 = 3890UL;
- v516 = ((u(*)())v513)(v514, v515);
- v516;
- v517 = (u)zas_modri;
- v518 = *(u*)(vc + 48UL);
- v519 = 199UL;
- v520 = 1UL;
- v521 = 32UL;
- v522 = ((u(*)())v517)(v518, v519, v520, v521);
- v522;
- v523 = (u)zas_modr;
- v524 = *(u*)(vc + 48UL);
- v525 = 262355UL;
- v526 = 2UL;
- v527 = ((u(*)())v523)(v524, v525, v526);
- v527;
- v528 = (u)zas_modrr;
- v529 = *(u*)(vc + 48UL);
- v530 = 11UL;
- v531 = 0UL;
- v532 = 2UL;
- v533 = ((u(*)())v528)(v529, v530, v531, v532);
- v533;
- v534 = (u)zas_op;
- v535 = *(u*)(vc + 48UL);
- v536 = 195UL;
- v537 = ((u(*)())v534)(v535, v536);
- v537;
-b199: v538 = (u)zfind;
- v539 = vc;
- v540 = (u)"wrmsr";
- v541 = 0UL;
- v542 = 1UL;
- v543 = ((u(*)())v538)(v539, v540, v541, v542);
- vd = v543;
- if (!*(u*)(vd + 72UL)) goto b222;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b226;
- v545 = 0UL;
-b227: if (!v545) goto b222;
- v544 = 1UL;
-b224: if (!v544) goto b220;
- v546 = (u)zfixup_label;
- v547 = *(u*)(vc + 48UL);
- v548 = *(u*)(vd + 88UL);
- v549 = ((u(*)())v546)(v547, v548);
- v549;
- v550 = (u)zadd_symbol;
- v551 = *(u*)(vc + 48UL);
- v552 = *(u*)(vd + 32UL);
- v553 = *(u*)(vd + 88UL);
- v554 = ((u(*)())v550)(v551, v552, v553);
- v554;
- v555 = (u)zas_modrr;
- v556 = *(u*)(vc + 48UL);
- v557 = 139UL;
- v558 = 0UL;
- v559 = 6UL;
- v560 = ((u(*)())v555)(v556, v557, v558, v559);
- v560;
- v561 = (u)zas_modrr;
- v562 = *(u*)(vc + 48UL);
- v563 = 139UL;
- v564 = 2UL;
- v565 = 6UL;
- v566 = ((u(*)())v561)(v562, v563, v564, v565);
- v566;
- v567 = (u)zas_modri;
- v568 = *(u*)(vc + 48UL);
- v569 = 199UL;
- v570 = 1UL;
- v571 = 32UL;
- v572 = ((u(*)())v567)(v568, v569, v570, v571);
- v572;
- v573 = (u)zas_modr;
- v574 = *(u*)(vc + 48UL);
- v575 = 327891UL;
- v576 = 2UL;
- v577 = ((u(*)())v573)(v574, v575, v576);
- v577;
- v578 = (u)zas_modrr;
- v579 = *(u*)(vc + 48UL);
- v580 = 139UL;
- v581 = 1UL;
- v582 = 7UL;
- v583 = ((u(*)())v578)(v579, v580, v581, v582);
- v583;
- v584 = (u)zas_op;
- v585 = *(u*)(vc + 48UL);
- v586 = 3888UL;
- v587 = ((u(*)())v584)(v585, v586);
- v587;
- v588 = (u)zas_op;
- v589 = *(u*)(vc + 48UL);
- v590 = 195UL;
- v591 = ((u(*)())v588)(v589, v590);
- v591;
-b218: v592 = (u)zfind;
- v593 = vc;
- v594 = (u)"rdcr0";
- v595 = 0UL;
- v596 = 1UL;
- v597 = ((u(*)())v592)(v593, v594, v595, v596);
- vd = v597;
- if (!*(u*)(vd + 72UL)) goto b242;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b246;
- v599 = 0UL;
-b247: if (!v599) goto b242;
- v598 = 1UL;
-b244: if (!v598) goto b240;
- v600 = (u)zfixup_label;
- v601 = *(u*)(vc + 48UL);
- v602 = *(u*)(vd + 88UL);
- v603 = ((u(*)())v600)(v601, v602);
- v603;
- v604 = (u)zadd_symbol;
- v605 = *(u*)(vc + 48UL);
- v606 = *(u*)(vd + 32UL);
- v607 = *(u*)(vd + 88UL);
- v608 = ((u(*)())v604)(v605, v606, v607);
- v608;
- v609 = (u)zas_modrr;
- v610 = *(u*)(vc + 48UL);
- v611 = 3872UL;
- v612 = 0UL;
- v613 = 0UL;
- v614 = ((u(*)())v609)(v610, v611, v612, v613);
- v614;
- v615 = (u)zas_op;
- v616 = *(u*)(vc + 48UL);
- v617 = 195UL;
- v618 = ((u(*)())v615)(v616, v617);
- v618;
-b238: v619 = (u)zfind;
- v620 = vc;
- v621 = (u)"wrcr0";
- v622 = 0UL;
- v623 = 1UL;
- v624 = ((u(*)())v619)(v620, v621, v622, v623);
- vd = v624;
- if (!*(u*)(vd + 72UL)) goto b257;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b261;
- v626 = 0UL;
-b262: if (!v626) goto b257;
- v625 = 1UL;
-b259: if (!v625) goto b255;
- v627 = (u)zfixup_label;
- v628 = *(u*)(vc + 48UL);
- v629 = *(u*)(vd + 88UL);
- v630 = ((u(*)())v627)(v628, v629);
- v630;
- v631 = (u)zadd_symbol;
- v632 = *(u*)(vc + 48UL);
- v633 = *(u*)(vd + 32UL);
- v634 = *(u*)(vd + 88UL);
- v635 = ((u(*)())v631)(v632, v633, v634);
- v635;
- v636 = (u)zas_modrr;
- v637 = *(u*)(vc + 48UL);
- v638 = 3874UL;
- v639 = 0UL;
- v640 = 7UL;
- v641 = ((u(*)())v636)(v637, v638, v639, v640);
- v641;
- v642 = (u)zas_op;
- v643 = *(u*)(vc + 48UL);
- v644 = 195UL;
- v645 = ((u(*)())v642)(v643, v644);
- v645;
-b253: v646 = (u)zfind;
- v647 = vc;
- v648 = (u)"rdcr2";
- v649 = 0UL;
- v650 = 1UL;
- v651 = ((u(*)())v646)(v647, v648, v649, v650);
- vd = v651;
- if (!*(u*)(vd + 72UL)) goto b272;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b276;
- v653 = 0UL;
-b277: if (!v653) goto b272;
- v652 = 1UL;
-b274: if (!v652) goto b270;
- v654 = (u)zfixup_label;
- v655 = *(u*)(vc + 48UL);
- v656 = *(u*)(vd + 88UL);
- v657 = ((u(*)())v654)(v655, v656);
- v657;
- v658 = (u)zadd_symbol;
- v659 = *(u*)(vc + 48UL);
- v660 = *(u*)(vd + 32UL);
- v661 = *(u*)(vd + 88UL);
- v662 = ((u(*)())v658)(v659, v660, v661);
- v662;
- v663 = (u)zas_modrr;
- v664 = *(u*)(vc + 48UL);
- v665 = 3872UL;
- v666 = 2UL;
- v667 = 0UL;
- v668 = ((u(*)())v663)(v664, v665, v666, v667);
- v668;
- v669 = (u)zas_op;
- v670 = *(u*)(vc + 48UL);
- v671 = 195UL;
- v672 = ((u(*)())v669)(v670, v671);
- v672;
-b268: v673 = (u)zfind;
- v674 = vc;
- v675 = (u)"wrcr2";
- v676 = 0UL;
- v677 = 1UL;
- v678 = ((u(*)())v673)(v674, v675, v676, v677);
- vd = v678;
- if (!*(u*)(vd + 72UL)) goto b287;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b291;
- v680 = 0UL;
-b292: if (!v680) goto b287;
- v679 = 1UL;
-b289: if (!v679) goto b285;
- v681 = (u)zfixup_label;
- v682 = *(u*)(vc + 48UL);
- v683 = *(u*)(vd + 88UL);
- v684 = ((u(*)())v681)(v682, v683);
- v684;
- v685 = (u)zadd_symbol;
- v686 = *(u*)(vc + 48UL);
- v687 = *(u*)(vd + 32UL);
- v688 = *(u*)(vd + 88UL);
- v689 = ((u(*)())v685)(v686, v687, v688);
- v689;
- v690 = (u)zas_modrr;
- v691 = *(u*)(vc + 48UL);
- v692 = 3874UL;
- v693 = 2UL;
- v694 = 7UL;
- v695 = ((u(*)())v690)(v691, v692, v693, v694);
- v695;
- v696 = (u)zas_op;
- v697 = *(u*)(vc + 48UL);
- v698 = 195UL;
- v699 = ((u(*)())v696)(v697, v698);
- v699;
-b283: v700 = (u)zfind;
- v701 = vc;
- v702 = (u)"rdcr3";
- v703 = 0UL;
- v704 = 1UL;
- v705 = ((u(*)())v700)(v701, v702, v703, v704);
- vd = v705;
- if (!*(u*)(vd + 72UL)) goto b302;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b306;
- v707 = 0UL;
-b307: if (!v707) goto b302;
- v706 = 1UL;
-b304: if (!v706) goto b300;
- v708 = (u)zfixup_label;
- v709 = *(u*)(vc + 48UL);
- v710 = *(u*)(vd + 88UL);
- v711 = ((u(*)())v708)(v709, v710);
- v711;
- v712 = (u)zadd_symbol;
- v713 = *(u*)(vc + 48UL);
- v714 = *(u*)(vd + 32UL);
- v715 = *(u*)(vd + 88UL);
- v716 = ((u(*)())v712)(v713, v714, v715);
- v716;
- v717 = (u)zas_modrr;
- v718 = *(u*)(vc + 48UL);
- v719 = 3872UL;
- v720 = 3UL;
- v721 = 0UL;
- v722 = ((u(*)())v717)(v718, v719, v720, v721);
- v722;
- v723 = (u)zas_op;
- v724 = *(u*)(vc + 48UL);
- v725 = 195UL;
- v726 = ((u(*)())v723)(v724, v725);
- v726;
-b298: v727 = (u)zfind;
- v728 = vc;
- v729 = (u)"wrcr3";
- v730 = 0UL;
- v731 = 1UL;
- v732 = ((u(*)())v727)(v728, v729, v730, v731);
- vd = v732;
- if (!*(u*)(vd + 72UL)) goto b317;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b321;
- v734 = 0UL;
-b322: if (!v734) goto b317;
- v733 = 1UL;
-b319: if (!v733) goto b315;
- v735 = (u)zfixup_label;
- v736 = *(u*)(vc + 48UL);
- v737 = *(u*)(vd + 88UL);
- v738 = ((u(*)())v735)(v736, v737);
- v738;
- v739 = (u)zadd_symbol;
- v740 = *(u*)(vc + 48UL);
- v741 = *(u*)(vd + 32UL);
- v742 = *(u*)(vd + 88UL);
- v743 = ((u(*)())v739)(v740, v741, v742);
- v743;
- v744 = (u)zas_modrr;
- v745 = *(u*)(vc + 48UL);
- v746 = 3874UL;
- v747 = 3UL;
- v748 = 7UL;
- v749 = ((u(*)())v744)(v745, v746, v747, v748);
- v749;
- v750 = (u)zas_op;
- v751 = *(u*)(vc + 48UL);
- v752 = 195UL;
- v753 = ((u(*)())v750)(v751, v752);
- v753;
-b313: v754 = (u)zfind;
- v755 = vc;
- v756 = (u)"rdcr4";
- v757 = 0UL;
- v758 = 1UL;
- v759 = ((u(*)())v754)(v755, v756, v757, v758);
- vd = v759;
- if (!*(u*)(vd + 72UL)) goto b332;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b336;
- v761 = 0UL;
-b337: if (!v761) goto b332;
- v760 = 1UL;
-b334: if (!v760) goto b330;
- v762 = (u)zfixup_label;
- v763 = *(u*)(vc + 48UL);
- v764 = *(u*)(vd + 88UL);
- v765 = ((u(*)())v762)(v763, v764);
- v765;
- v766 = (u)zadd_symbol;
- v767 = *(u*)(vc + 48UL);
- v768 = *(u*)(vd + 32UL);
- v769 = *(u*)(vd + 88UL);
- v770 = ((u(*)())v766)(v767, v768, v769);
- v770;
- v771 = (u)zas_modrr;
- v772 = *(u*)(vc + 48UL);
- v773 = 3872UL;
- v774 = 4UL;
- v775 = 0UL;
- v776 = ((u(*)())v771)(v772, v773, v774, v775);
- v776;
- v777 = (u)zas_op;
- v778 = *(u*)(vc + 48UL);
- v779 = 195UL;
- v780 = ((u(*)())v777)(v778, v779);
- v780;
-b328: v781 = (u)zfind;
- v782 = vc;
- v783 = (u)"wrcr4";
- v784 = 0UL;
- v785 = 1UL;
- v786 = ((u(*)())v781)(v782, v783, v784, v785);
- vd = v786;
- if (!*(u*)(vd + 72UL)) goto b347;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b351;
- v788 = 0UL;
-b352: if (!v788) goto b347;
- v787 = 1UL;
-b349: if (!v787) goto b345;
- v789 = (u)zfixup_label;
- v790 = *(u*)(vc + 48UL);
- v791 = *(u*)(vd + 88UL);
- v792 = ((u(*)())v789)(v790, v791);
- v792;
- v793 = (u)zadd_symbol;
- v794 = *(u*)(vc + 48UL);
- v795 = *(u*)(vd + 32UL);
- v796 = *(u*)(vd + 88UL);
- v797 = ((u(*)())v793)(v794, v795, v796);
- v797;
- v798 = (u)zas_modrr;
- v799 = *(u*)(vc + 48UL);
- v800 = 3874UL;
- v801 = 4UL;
- v802 = 7UL;
- v803 = ((u(*)())v798)(v799, v800, v801, v802);
- v803;
- v804 = (u)zas_op;
- v805 = *(u*)(vc + 48UL);
- v806 = 195UL;
- v807 = ((u(*)())v804)(v805, v806);
- v807;
-b343: v808 = (u)zfind;
- v809 = vc;
- v810 = (u)"lgdt";
- v811 = 0UL;
- v812 = 1UL;
- v813 = ((u(*)())v808)(v809, v810, v811, v812);
- vd = v813;
- if (!*(u*)(vd + 72UL)) goto b362;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b366;
- v815 = 0UL;
-b367: if (!v815) goto b362;
- v814 = 1UL;
-b364: if (!v814) goto b360;
- v816 = (u)zfixup_label;
- v817 = *(u*)(vc + 48UL);
- v818 = *(u*)(vd + 88UL);
- v819 = ((u(*)())v816)(v817, v818);
- v819;
- v820 = (u)zadd_symbol;
- v821 = *(u*)(vc + 48UL);
- v822 = *(u*)(vd + 32UL);
- v823 = *(u*)(vd + 88UL);
- v824 = ((u(*)())v820)(v821, v822, v823);
- v824;
- v825 = (u)zas_modri;
- v826 = *(u*)(vc + 48UL);
- v827 = 327809UL;
- v828 = 4UL;
- v829 = 16UL;
- v830 = ((u(*)())v825)(v826, v827, v828, v829);
- v830;
- v831 = (u)zas_modri;
- v832 = *(u*)(vc + 48UL);
- v833 = 327809UL;
- v834 = 6UL;
- v835 = 1UL;
- v836 = ((u(*)())v831)(v832, v833, v834, v835);
- v836;
- v837 = (u)zas_modrm;
- v838 = *(u*)(vc + 48UL);
- v839 = 137UL;
- v840 = 6UL;
- v841 = 4UL;
- v842 = 0UL;
- v843 = 0UL;
- v844 = 0UL;
- v845 = ((u(*)())v837)(v838, v839, v840, v841, v842, v843, v844);
- v845;
- v846 = (u)zas_modrm;
- v847 = *(u*)(vc + 48UL);
- v848 = 137UL;
- v849 = 7UL;
- v850 = 4UL;
- v851 = 0UL;
- v852 = 0UL;
- v853 = 2UL;
- v854 = ((u(*)())v846)(v847, v848, v849, v850, v851, v852, v853);
- v854;
- v855 = (u)zas_modm;
- v856 = *(u*)(vc + 48UL);
- v857 = 134913UL;
- v858 = 4UL;
- v859 = 0UL;
- v860 = 0UL;
- v861 = 0UL;
- v862 = ((u(*)())v855)(v856, v857, v858, v859, v860, v861);
- v862;
- v863 = (u)zas_modri;
- v864 = *(u*)(vc + 48UL);
- v865 = 129UL;
- v866 = 4UL;
- v867 = 16UL;
- v868 = ((u(*)())v863)(v864, v865, v866, v867);
- v868;
- v869 = (u)zas_op;
- v870 = *(u*)(vc + 48UL);
- v871 = 195UL;
- v872 = ((u(*)())v869)(v870, v871);
- v872;
-b358: v873 = (u)zfind;
- v874 = vc;
- v875 = (u)"lidt";
- v876 = 0UL;
- v877 = 1UL;
- v878 = ((u(*)())v873)(v874, v875, v876, v877);
- vd = v878;
- if (!*(u*)(vd + 72UL)) goto b382;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b386;
- v880 = 0UL;
-b387: if (!v880) goto b382;
- v879 = 1UL;
-b384: if (!v879) goto b380;
- v881 = (u)zfixup_label;
- v882 = *(u*)(vc + 48UL);
- v883 = *(u*)(vd + 88UL);
- v884 = ((u(*)())v881)(v882, v883);
- v884;
- v885 = (u)zadd_symbol;
- v886 = *(u*)(vc + 48UL);
- v887 = *(u*)(vd + 32UL);
- v888 = *(u*)(vd + 88UL);
- v889 = ((u(*)())v885)(v886, v887, v888);
- v889;
- v890 = (u)zas_modri;
- v891 = *(u*)(vc + 48UL);
- v892 = 327809UL;
- v893 = 4UL;
- v894 = 16UL;
- v895 = ((u(*)())v890)(v891, v892, v893, v894);
- v895;
- v896 = (u)zas_modri;
- v897 = *(u*)(vc + 48UL);
- v898 = 327809UL;
- v899 = 6UL;
- v900 = 1UL;
- v901 = ((u(*)())v896)(v897, v898, v899, v900);
- v901;
- v902 = (u)zas_modrm;
- v903 = *(u*)(vc + 48UL);
- v904 = 137UL;
- v905 = 6UL;
- v906 = 4UL;
- v907 = 0UL;
- v908 = 0UL;
- v909 = 0UL;
- v910 = ((u(*)())v902)(v903, v904, v905, v906, v907, v908, v909);
- v910;
- v911 = (u)zas_modrm;
- v912 = *(u*)(vc + 48UL);
- v913 = 137UL;
- v914 = 7UL;
- v915 = 4UL;
- v916 = 0UL;
- v917 = 0UL;
- v918 = 2UL;
- v919 = ((u(*)())v911)(v912, v913, v914, v915, v916, v917, v918);
- v919;
- v920 = (u)zas_modm;
- v921 = *(u*)(vc + 48UL);
- v922 = 200449UL;
- v923 = 4UL;
- v924 = 0UL;
- v925 = 0UL;
- v926 = 0UL;
- v927 = ((u(*)())v920)(v921, v922, v923, v924, v925, v926);
- v927;
- v928 = (u)zas_modri;
- v929 = *(u*)(vc + 48UL);
- v930 = 129UL;
- v931 = 4UL;
- v932 = 16UL;
- v933 = ((u(*)())v928)(v929, v930, v931, v932);
- v933;
- v934 = (u)zas_op;
- v935 = *(u*)(vc + 48UL);
- v936 = 195UL;
- v937 = ((u(*)())v934)(v935, v936);
- v937;
-b378: v938 = (u)zfind;
- v939 = vc;
- v940 = (u)"lldt";
- v941 = 0UL;
- v942 = 1UL;
- v943 = ((u(*)())v938)(v939, v940, v941, v942);
- vd = v943;
- if (!*(u*)(vd + 72UL)) goto b402;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b406;
- v945 = 0UL;
-b407: if (!v945) goto b402;
- v944 = 1UL;
-b404: if (!v944) goto b400;
- v946 = (u)zfixup_label;
- v947 = *(u*)(vc + 48UL);
- v948 = *(u*)(vd + 88UL);
- v949 = ((u(*)())v946)(v947, v948);
- v949;
- v950 = (u)zadd_symbol;
- v951 = *(u*)(vc + 48UL);
- v952 = *(u*)(vd + 32UL);
- v953 = *(u*)(vd + 88UL);
- v954 = ((u(*)())v950)(v951, v952, v953);
- v954;
- v955 = (u)zas_modr;
- v956 = *(u*)(vc + 48UL);
- v957 = 134912UL;
- v958 = 7UL;
- v959 = ((u(*)())v955)(v956, v957, v958);
- v959;
- v960 = (u)zas_op;
- v961 = *(u*)(vc + 48UL);
- v962 = 195UL;
- v963 = ((u(*)())v960)(v961, v962);
- v963;
-b398: v964 = (u)zfind;
- v965 = vc;
- v966 = (u)"ltr";
- v967 = 0UL;
- v968 = 1UL;
- v969 = ((u(*)())v964)(v965, v966, v967, v968);
- vd = v969;
- if (!*(u*)(vd + 72UL)) goto b417;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b421;
- v971 = 0UL;
-b422: if (!v971) goto b417;
- v970 = 1UL;
-b419: if (!v970) goto b415;
- v972 = (u)zfixup_label;
- v973 = *(u*)(vc + 48UL);
- v974 = *(u*)(vd + 88UL);
- v975 = ((u(*)())v972)(v973, v974);
- v975;
- v976 = (u)zadd_symbol;
- v977 = *(u*)(vc + 48UL);
- v978 = *(u*)(vd + 32UL);
- v979 = *(u*)(vd + 88UL);
- v980 = ((u(*)())v976)(v977, v978, v979);
- v980;
- v981 = (u)zas_modr;
- v982 = *(u*)(vc + 48UL);
- v983 = 200448UL;
- v984 = 7UL;
- v985 = ((u(*)())v981)(v982, v983, v984);
- v985;
- v986 = (u)zas_op;
- v987 = *(u*)(vc + 48UL);
- v988 = 195UL;
- v989 = ((u(*)())v986)(v987, v988);
- v989;
-b413: v990 = (u)zfind;
- v991 = vc;
- v992 = (u)"lseg";
- v993 = 0UL;
- v994 = 1UL;
- v995 = ((u(*)())v990)(v991, v992, v993, v994);
- vd = v995;
- if (!*(u*)(vd + 72UL)) goto b432;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b436;
- v997 = 0UL;
-b437: if (!v997) goto b432;
- v996 = 1UL;
-b434: if (!v996) goto b430;
- v998 = (u)zfixup_label;
- v999 = *(u*)(vc + 48UL);
- v1000 = *(u*)(vd + 88UL);
- v1001 = ((u(*)())v998)(v999, v1000);
- v1001;
- v1002 = (u)zadd_symbol;
- v1003 = *(u*)(vc + 48UL);
- v1004 = *(u*)(vd + 32UL);
- v1005 = *(u*)(vd + 88UL);
- v1006 = ((u(*)())v1002)(v1003, v1004, v1005);
- v1006;
- v1007 = (u)zas_opr;
- v1008 = *(u*)(vc + 48UL);
- v1009 = 80UL;
- v1010 = 5UL;
- v1011 = ((u(*)())v1007)(v1008, v1009, v1010);
- v1011;
- v1012 = (u)zas_modrr;
- v1013 = *(u*)(vc + 48UL);
- v1014 = 139UL;
- v1015 = 5UL;
- v1016 = 4UL;
- v1017 = ((u(*)())v1012)(v1013, v1014, v1015, v1016);
- v1017;
- v1018 = (u)zas_modrr;
- v1019 = *(u*)(vc + 48UL);
- v1020 = 142UL;
- v1021 = 0UL;
- v1022 = 6UL;
- v1023 = ((u(*)())v1018)(v1019, v1020, v1021, v1022);
- v1023;
- v1024 = (u)zas_modrr;
- v1025 = *(u*)(vc + 48UL);
- v1026 = 142UL;
- v1027 = 3UL;
- v1028 = 6UL;
- v1029 = ((u(*)())v1024)(v1025, v1026, v1027, v1028);
- v1029;
- v1030 = (u)zas_modrr;
- v1031 = *(u*)(vc + 48UL);
- v1032 = 142UL;
- v1033 = 4UL;
- v1034 = 6UL;
- v1035 = ((u(*)())v1030)(v1031, v1032, v1033, v1034);
- v1035;
- v1036 = (u)zas_modrr;
- v1037 = *(u*)(vc + 48UL);
- v1038 = 142UL;
- v1039 = 5UL;
- v1040 = 6UL;
- v1041 = ((u(*)())v1036)(v1037, v1038, v1039, v1040);
- v1041;
- v1042 = (u)zas_opr;
- v1043 = *(u*)(vc + 48UL);
- v1044 = 80UL;
- v1045 = 6UL;
- v1046 = ((u(*)())v1042)(v1043, v1044, v1045);
- v1046;
- v1047 = (u)zas_opr;
- v1048 = *(u*)(vc + 48UL);
- v1049 = 80UL;
- v1050 = 5UL;
- v1051 = ((u(*)())v1047)(v1048, v1049, v1050);
- v1051;
- v1052 = (u)zas_op;
- v1053 = *(u*)(vc + 48UL);
- v1054 = 156UL;
- v1055 = ((u(*)())v1052)(v1053, v1054);
- v1055;
- v1056 = (u)zas_opr;
- v1057 = *(u*)(vc + 48UL);
- v1058 = 80UL;
- v1059 = 7UL;
- v1060 = ((u(*)())v1056)(v1057, v1058, v1059);
- v1060;
- v1061 = (u)zas_op;
- v1062 = *(u*)(vc + 48UL);
- v1063 = 232UL;
- v1064 = ((u(*)())v1061)(v1062, v1063);
- v1064;
- v1065 = (u)zas_emit;
- v1066 = *(u*)(vc + 48UL);
- v1067 = 5UL;
- v1068 = ((u(*)())v1065)(v1066, v1067);
- v1068;
- v1069 = (u)zas_emit;
- v1070 = *(u*)(vc + 48UL);
- v1071 = 0UL;
- v1072 = ((u(*)())v1069)(v1070, v1071);
- v1072;
- v1073 = (u)zas_emit;
- v1074 = *(u*)(vc + 48UL);
- v1075 = 0UL;
- v1076 = ((u(*)())v1073)(v1074, v1075);
- v1076;
- v1077 = (u)zas_emit;
- v1078 = *(u*)(vc + 48UL);
- v1079 = 0UL;
- v1080 = ((u(*)())v1077)(v1078, v1079);
- v1080;
- v1081 = (u)zas_op;
- v1082 = *(u*)(vc + 48UL);
- v1083 = 233UL;
- v1084 = ((u(*)())v1081)(v1082, v1083);
- v1084;
- v1085 = (u)zas_emit;
- v1086 = *(u*)(vc + 48UL);
- v1087 = 2UL;
- v1088 = ((u(*)())v1085)(v1086, v1087);
- v1088;
- v1089 = (u)zas_emit;
- v1090 = *(u*)(vc + 48UL);
- v1091 = 0UL;
- v1092 = ((u(*)())v1089)(v1090, v1091);
- v1092;
- v1093 = (u)zas_emit;
- v1094 = *(u*)(vc + 48UL);
- v1095 = 0UL;
- v1096 = ((u(*)())v1093)(v1094, v1095);
- v1096;
- v1097 = (u)zas_emit;
- v1098 = *(u*)(vc + 48UL);
- v1099 = 0UL;
- v1100 = ((u(*)())v1097)(v1098, v1099);
- v1100;
- v1101 = (u)zas_op;
- v1102 = *(u*)(vc + 48UL);
- v1103 = 18639UL;
- v1104 = ((u(*)())v1101)(v1102, v1103);
- v1104;
- v1105 = (u)zas_opr;
- v1106 = *(u*)(vc + 48UL);
- v1107 = 88UL;
- v1108 = 5UL;
- v1109 = ((u(*)())v1105)(v1106, v1107, v1108);
- v1109;
- v1110 = (u)zas_op;
- v1111 = *(u*)(vc + 48UL);
- v1112 = 195UL;
- v1113 = ((u(*)())v1110)(v1111, v1112);
- v1113;
-b428: v1114 = (u)zfind;
- v1115 = vc;
- v1116 = (u)"hlt";
- v1117 = 0UL;
- v1118 = 1UL;
- v1119 = ((u(*)())v1114)(v1115, v1116, v1117, v1118);
- vd = v1119;
- if (!*(u*)(vd + 72UL)) goto b468;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b472;
- v1121 = 0UL;
-b473: if (!v1121) goto b468;
- v1120 = 1UL;
-b470: if (!v1120) goto b466;
- v1122 = (u)zfixup_label;
- v1123 = *(u*)(vc + 48UL);
- v1124 = *(u*)(vd + 88UL);
- v1125 = ((u(*)())v1122)(v1123, v1124);
- v1125;
- v1126 = (u)zadd_symbol;
- v1127 = *(u*)(vc + 48UL);
- v1128 = *(u*)(vd + 32UL);
- v1129 = *(u*)(vd + 88UL);
- v1130 = ((u(*)())v1126)(v1127, v1128, v1129);
- v1130;
- v1131 = (u)zas_op;
- v1132 = *(u*)(vc + 48UL);
- v1133 = 244UL;
- v1134 = ((u(*)())v1131)(v1132, v1133);
- v1134;
- v1135 = (u)zas_op;
- v1136 = *(u*)(vc + 48UL);
- v1137 = 195UL;
- v1138 = ((u(*)())v1135)(v1136, v1137);
- v1138;
-b464: v1139 = (u)zfind;
- v1140 = vc;
- v1141 = (u)"cli";
- v1142 = 0UL;
- v1143 = 1UL;
- v1144 = ((u(*)())v1139)(v1140, v1141, v1142, v1143);
- vd = v1144;
- if (!*(u*)(vd + 72UL)) goto b483;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b487;
- v1146 = 0UL;
-b488: if (!v1146) goto b483;
- v1145 = 1UL;
-b485: if (!v1145) goto b481;
- v1147 = (u)zfixup_label;
- v1148 = *(u*)(vc + 48UL);
- v1149 = *(u*)(vd + 88UL);
- v1150 = ((u(*)())v1147)(v1148, v1149);
- v1150;
- v1151 = (u)zadd_symbol;
- v1152 = *(u*)(vc + 48UL);
- v1153 = *(u*)(vd + 32UL);
- v1154 = *(u*)(vd + 88UL);
- v1155 = ((u(*)())v1151)(v1152, v1153, v1154);
- v1155;
- v1156 = (u)zas_op;
- v1157 = *(u*)(vc + 48UL);
- v1158 = 250UL;
- v1159 = ((u(*)())v1156)(v1157, v1158);
- v1159;
- v1160 = (u)zas_op;
- v1161 = *(u*)(vc + 48UL);
- v1162 = 195UL;
- v1163 = ((u(*)())v1160)(v1161, v1162);
- v1163;
-b479: v1164 = (u)zfind;
- v1165 = vc;
- v1166 = (u)"sti";
- v1167 = 0UL;
- v1168 = 1UL;
- v1169 = ((u(*)())v1164)(v1165, v1166, v1167, v1168);
- vd = v1169;
- if (!*(u*)(vd + 72UL)) goto b498;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b502;
- v1171 = 0UL;
-b503: if (!v1171) goto b498;
- v1170 = 1UL;
-b500: if (!v1170) goto b496;
- v1172 = (u)zfixup_label;
- v1173 = *(u*)(vc + 48UL);
- v1174 = *(u*)(vd + 88UL);
- v1175 = ((u(*)())v1172)(v1173, v1174);
- v1175;
- v1176 = (u)zadd_symbol;
- v1177 = *(u*)(vc + 48UL);
- v1178 = *(u*)(vd + 32UL);
- v1179 = *(u*)(vd + 88UL);
- v1180 = ((u(*)())v1176)(v1177, v1178, v1179);
- v1180;
- v1181 = (u)zas_op;
- v1182 = *(u*)(vc + 48UL);
- v1183 = 251UL;
- v1184 = ((u(*)())v1181)(v1182, v1183);
- v1184;
- v1185 = (u)zas_op;
- v1186 = *(u*)(vc + 48UL);
- v1187 = 195UL;
- v1188 = ((u(*)())v1185)(v1186, v1187);
- v1188;
-b494: v1189 = (u)zfind;
- v1190 = vc;
- v1191 = (u)"rdflags";
- v1192 = 0UL;
- v1193 = 1UL;
- v1194 = ((u(*)())v1189)(v1190, v1191, v1192, v1193);
- vd = v1194;
- if (!*(u*)(vd + 72UL)) goto b513;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b517;
- v1196 = 0UL;
-b518: if (!v1196) goto b513;
- v1195 = 1UL;
-b515: if (!v1195) goto b511;
- v1197 = (u)zfixup_label;
- v1198 = *(u*)(vc + 48UL);
- v1199 = *(u*)(vd + 88UL);
- v1200 = ((u(*)())v1197)(v1198, v1199);
- v1200;
- v1201 = (u)zadd_symbol;
- v1202 = *(u*)(vc + 48UL);
- v1203 = *(u*)(vd + 32UL);
- v1204 = *(u*)(vd + 88UL);
- v1205 = ((u(*)())v1201)(v1202, v1203, v1204);
- v1205;
- v1206 = (u)zas_op;
- v1207 = *(u*)(vc + 48UL);
- v1208 = 156UL;
- v1209 = ((u(*)())v1206)(v1207, v1208);
- v1209;
- v1210 = (u)zas_opr;
- v1211 = *(u*)(vc + 48UL);
- v1212 = 88UL;
- v1213 = 0UL;
- v1214 = ((u(*)())v1210)(v1211, v1212, v1213);
- v1214;
- v1215 = (u)zas_op;
- v1216 = *(u*)(vc + 48UL);
- v1217 = 195UL;
- v1218 = ((u(*)())v1215)(v1216, v1217);
- v1218;
-b509: v1219 = (u)zfind;
- v1220 = vc;
- v1221 = (u)"wrflags";
- v1222 = 0UL;
- v1223 = 1UL;
- v1224 = ((u(*)())v1219)(v1220, v1221, v1222, v1223);
- vd = v1224;
- if (!*(u*)(vd + 72UL)) goto b529;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b533;
- v1226 = 0UL;
-b534: if (!v1226) goto b529;
- v1225 = 1UL;
-b531: if (!v1225) goto b527;
- v1227 = (u)zfixup_label;
- v1228 = *(u*)(vc + 48UL);
- v1229 = *(u*)(vd + 88UL);
- v1230 = ((u(*)())v1227)(v1228, v1229);
- v1230;
- v1231 = (u)zadd_symbol;
- v1232 = *(u*)(vc + 48UL);
- v1233 = *(u*)(vd + 32UL);
- v1234 = *(u*)(vd + 88UL);
- v1235 = ((u(*)())v1231)(v1232, v1233, v1234);
- v1235;
- v1236 = (u)zas_opr;
- v1237 = *(u*)(vc + 48UL);
- v1238 = 80UL;
- v1239 = 7UL;
- v1240 = ((u(*)())v1236)(v1237, v1238, v1239);
- v1240;
- v1241 = (u)zas_op;
- v1242 = *(u*)(vc + 48UL);
- v1243 = 157UL;
- v1244 = ((u(*)())v1241)(v1242, v1243);
- v1244;
- v1245 = (u)zas_op;
- v1246 = *(u*)(vc + 48UL);
- v1247 = 195UL;
- v1248 = ((u(*)())v1245)(v1246, v1247);
- v1248;
-b525: v1249 = (u)zfind;
- v1250 = vc;
- v1251 = (u)"wbinvld";
- v1252 = 0UL;
- v1253 = 1UL;
- v1254 = ((u(*)())v1249)(v1250, v1251, v1252, v1253);
- vd = v1254;
- if (!*(u*)(vd + 72UL)) goto b545;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b549;
- v1256 = 0UL;
-b550: if (!v1256) goto b545;
- v1255 = 1UL;
-b547: if (!v1255) goto b543;
- v1257 = (u)zfixup_label;
- v1258 = *(u*)(vc + 48UL);
- v1259 = *(u*)(vd + 88UL);
- v1260 = ((u(*)())v1257)(v1258, v1259);
- v1260;
- v1261 = (u)zadd_symbol;
- v1262 = *(u*)(vc + 48UL);
- v1263 = *(u*)(vd + 32UL);
- v1264 = *(u*)(vd + 88UL);
- v1265 = ((u(*)())v1261)(v1262, v1263, v1264);
- v1265;
- v1266 = (u)zas_modm;
- v1267 = *(u*)(vc + 48UL);
- v1268 = 3849UL;
- v1269 = 7UL;
- v1270 = 0UL;
- v1271 = 0UL;
- v1272 = 0UL;
- v1273 = ((u(*)())v1266)(v1267, v1268, v1269, v1270, v1271, v1272);
- v1273;
- v1274 = (u)zas_op;
- v1275 = *(u*)(vc + 48UL);
- v1276 = 195UL;
- v1277 = ((u(*)())v1274)(v1275, v1276);
- v1277;
-b541: v1278 = (u)zfind;
- v1279 = vc;
- v1280 = (u)"invlpg";
- v1281 = 0UL;
- v1282 = 1UL;
- v1283 = ((u(*)())v1278)(v1279, v1280, v1281, v1282);
- vd = v1283;
- if (!*(u*)(vd + 72UL)) goto b560;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b564;
- v1285 = 0UL;
-b565: if (!v1285) goto b560;
- v1284 = 1UL;
-b562: if (!v1284) goto b558;
- v1286 = (u)zfixup_label;
- v1287 = *(u*)(vc + 48UL);
- v1288 = *(u*)(vd + 88UL);
- v1289 = ((u(*)())v1286)(v1287, v1288);
- v1289;
- v1290 = (u)zadd_symbol;
- v1291 = *(u*)(vc + 48UL);
- v1292 = *(u*)(vd + 32UL);
- v1293 = *(u*)(vd + 88UL);
- v1294 = ((u(*)())v1290)(v1291, v1292, v1293);
- v1294;
- v1295 = (u)zas_modm;
- v1296 = *(u*)(vc + 48UL);
- v1297 = 462593UL;
- v1298 = 7UL;
- v1299 = 0UL;
- v1300 = 0UL;
- v1301 = 0UL;
- v1302 = ((u(*)())v1295)(v1296, v1297, v1298, v1299, v1300, v1301);
- v1302;
- v1303 = (u)zas_op;
- v1304 = *(u*)(vc + 48UL);
- v1305 = 195UL;
- v1306 = ((u(*)())v1303)(v1304, v1305);
- v1306;
-b556: v1307 = (u)zfind;
- v1308 = vc;
- v1309 = (u)"_ssr0";
- v1310 = 0UL;
- v1311 = 1UL;
- v1312 = ((u(*)())v1307)(v1308, v1309, v1310, v1311);
- vd = v1312;
- if (!*(u*)(vd + 72UL)) goto b575;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b579;
- v1314 = 0UL;
-b580: if (!v1314) goto b575;
- v1313 = 1UL;
-b577: if (!v1313) goto b573;
- v1315 = (u)zfixup_label;
- v1316 = *(u*)(vc + 48UL);
- v1317 = *(u*)(vd + 88UL);
- v1318 = ((u(*)())v1315)(v1316, v1317);
- v1318;
- v1319 = (u)zadd_symbol;
- v1320 = *(u*)(vc + 48UL);
- v1321 = *(u*)(vd + 32UL);
- v1322 = *(u*)(vd + 88UL);
- v1323 = ((u(*)())v1319)(v1320, v1321, v1322);
- v1323;
- v1324 = (u)zemit_ssr;
- v1325 = vc;
- v1326 = ((u(*)())v1324)(v1325);
- v1326;
- v1327 = (u)zas_op;
- v1328 = *(u*)(vc + 48UL);
- v1329 = 195UL;
- v1330 = ((u(*)())v1327)(v1328, v1329);
- v1330;
-b571: v1331 = (u)zfind;
- v1332 = vc;
- v1333 = (u)"_isr0";
- v1334 = 0UL;
- v1335 = 1UL;
- v1336 = ((u(*)())v1331)(v1332, v1333, v1334, v1335);
- vd = v1336;
- if (!*(u*)(vd + 72UL)) goto b590;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b594;
- v1338 = 0UL;
-b595: if (!v1338) goto b590;
- v1337 = 1UL;
-b592: if (!v1337) goto b588;
- v1339 = (u)zfixup_label;
- v1340 = *(u*)(vc + 48UL);
- v1341 = *(u*)(vd + 88UL);
- v1342 = ((u(*)())v1339)(v1340, v1341);
- v1342;
- v1343 = (u)zadd_symbol;
- v1344 = *(u*)(vc + 48UL);
- v1345 = *(u*)(vd + 32UL);
- v1346 = *(u*)(vd + 88UL);
- v1347 = ((u(*)())v1343)(v1344, v1345, v1346);
- v1347;
- v1348 = (u)zemit_isr;
- v1349 = vc;
- v1350 = ((u(*)())v1348)(v1349);
- v1350;
- v1351 = (u)zas_op;
- v1352 = *(u*)(vc + 48UL);
- v1353 = 195UL;
- v1354 = ((u(*)())v1351)(v1352, v1353);
- v1354;
-b586: v1355 = (u)zfind;
- v1356 = vc;
- v1357 = (u)"_rgs";
- v1358 = 0UL;
- v1359 = 1UL;
- v1360 = ((u(*)())v1355)(v1356, v1357, v1358, v1359);
- vd = v1360;
- if (!*(u*)(vd + 72UL)) goto b605;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b609;
- v1362 = 0UL;
-b610: if (!v1362) goto b605;
- v1361 = 1UL;
-b607: if (!v1361) goto b603;
- v1363 = (u)zfixup_label;
- v1364 = *(u*)(vc + 48UL);
- v1365 = *(u*)(vd + 88UL);
- v1366 = ((u(*)())v1363)(v1364, v1365);
- v1366;
- v1367 = (u)zadd_symbol;
- v1368 = *(u*)(vc + 48UL);
- v1369 = *(u*)(vd + 32UL);
- v1370 = *(u*)(vd + 88UL);
- v1371 = ((u(*)())v1367)(v1368, v1369, v1370);
- v1371;
- v1372 = (u)zas_modrm;
- v1373 = *(u*)(vc + 48UL);
- v1374 = 139UL;
- v1375 = 6UL;
- v1376 = 5UL;
- v1377 = 0UL;
- v1378 = 0UL;
- v1379 = 16UL;
- v1380 = ((u(*)())v1372)(v1373, v1374, v1375, v1376, v1377, v1378, v1379);
- v1380;
- v1381 = (u)zas_emit;
- v1382 = *(u*)(vc + 48UL);
- v1383 = 101UL;
- v1384 = ((u(*)())v1381)(v1382, v1383);
- v1384;
- v1385 = (u)zas_modrm;
- v1386 = *(u*)(vc + 48UL);
- v1387 = 139UL;
- v1388 = 0UL;
- v1389 = 6UL;
- v1390 = 0UL;
- v1391 = 0UL;
- v1392 = 0UL;
- v1393 = ((u(*)())v1385)(v1386, v1387, v1388, v1389, v1390, v1391, v1392);
- v1393;
- v1394 = (u)zas_op;
- v1395 = *(u*)(vc + 48UL);
- v1396 = 195UL;
- v1397 = ((u(*)())v1394)(v1395, v1396);
- v1397;
-b601: v1398 = (u)zfind;
- v1399 = vc;
- v1400 = (u)"_r32";
- v1401 = 0UL;
- v1402 = 1UL;
- v1403 = ((u(*)())v1398)(v1399, v1400, v1401, v1402);
- vd = v1403;
- if (!*(u*)(vd + 72UL)) goto b622;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b626;
- v1405 = 0UL;
-b627: if (!v1405) goto b622;
- v1404 = 1UL;
-b624: if (!v1404) goto b620;
- v1406 = (u)zfixup_label;
- v1407 = *(u*)(vc + 48UL);
- v1408 = *(u*)(vd + 88UL);
- v1409 = ((u(*)())v1406)(v1407, v1408);
- v1409;
- v1410 = (u)zadd_symbol;
- v1411 = *(u*)(vc + 48UL);
- v1412 = *(u*)(vd + 32UL);
- v1413 = *(u*)(vd + 88UL);
- v1414 = ((u(*)())v1410)(v1411, v1412, v1413);
- v1414;
- *(u*)(*(u*)(vc + 48UL) + 48UL) = 1UL;
- v1415 = (u)zas_modrm;
- v1416 = *(u*)(vc + 48UL);
- v1417 = 139UL;
- v1418 = 0UL;
- v1419 = 7UL;
- v1420 = 0UL;
- v1421 = 0UL;
- v1422 = 0UL;
- v1423 = ((u(*)())v1415)(v1416, v1417, v1418, v1419, v1420, v1421, v1422);
- v1423;
- *(u*)(*(u*)(vc + 48UL) + 48UL) = 0UL;
- v1424 = (u)zas_op;
- v1425 = *(u*)(vc + 48UL);
- v1426 = 195UL;
- v1427 = ((u(*)())v1424)(v1425, v1426);
- v1427;
-b618: v1428 = (u)zfind;
- v1429 = vc;
- v1430 = (u)"_w32";
- v1431 = 0UL;
- v1432 = 1UL;
- v1433 = ((u(*)())v1428)(v1429, v1430, v1431, v1432);
- vd = v1433;
- if (!*(u*)(vd + 72UL)) goto b637;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b641;
- v1435 = 0UL;
-b642: if (!v1435) goto b637;
- v1434 = 1UL;
-b639: if (!v1434) goto b635;
- v1436 = (u)zfixup_label;
- v1437 = *(u*)(vc + 48UL);
- v1438 = *(u*)(vd + 88UL);
- v1439 = ((u(*)())v1436)(v1437, v1438);
- v1439;
- v1440 = (u)zadd_symbol;
- v1441 = *(u*)(vc + 48UL);
- v1442 = *(u*)(vd + 32UL);
- v1443 = *(u*)(vd + 88UL);
- v1444 = ((u(*)())v1440)(v1441, v1442, v1443);
- v1444;
- *(u*)(*(u*)(vc + 48UL) + 48UL) = 1UL;
- v1445 = (u)zas_modrm;
- v1446 = *(u*)(vc + 48UL);
- v1447 = 137UL;
- v1448 = 6UL;
- v1449 = 7UL;
- v1450 = 0UL;
- v1451 = 0UL;
- v1452 = 0UL;
- v1453 = ((u(*)())v1445)(v1446, v1447, v1448, v1449, v1450, v1451, v1452);
- v1453;
- *(u*)(*(u*)(vc + 48UL) + 48UL) = 0UL;
- v1454 = (u)zas_op;
- v1455 = *(u*)(vc + 48UL);
- v1456 = 195UL;
- v1457 = ((u(*)())v1454)(v1455, v1456);
- v1457;
-b633: v1458 = (u)zfind;
- v1459 = vc;
- v1460 = (u)"_r16";
- v1461 = 0UL;
- v1462 = 1UL;
- v1463 = ((u(*)())v1458)(v1459, v1460, v1461, v1462);
- vd = v1463;
- if (!*(u*)(vd + 72UL)) goto b652;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b656;
- v1465 = 0UL;
-b657: if (!v1465) goto b652;
- v1464 = 1UL;
-b654: if (!v1464) goto b650;
- v1466 = (u)zfixup_label;
- v1467 = *(u*)(vc + 48UL);
- v1468 = *(u*)(vd + 88UL);
- v1469 = ((u(*)())v1466)(v1467, v1468);
- v1469;
- v1470 = (u)zadd_symbol;
- v1471 = *(u*)(vc + 48UL);
- v1472 = *(u*)(vd + 32UL);
- v1473 = *(u*)(vd + 88UL);
- v1474 = ((u(*)())v1470)(v1471, v1472, v1473);
- v1474;
- v1475 = (u)zas_modrr;
- v1476 = *(u*)(vc + 48UL);
- v1477 = 51UL;
- v1478 = 0UL;
- v1479 = 0UL;
- v1480 = ((u(*)())v1475)(v1476, v1477, v1478, v1479);
- v1480;
- *(u*)(*(u*)(vc + 48UL) + 48UL) = 1UL;
- v1481 = (u)zas_modrm;
- v1482 = *(u*)(vc + 48UL);
- v1483 = 26250UL;
- v1484 = 0UL;
- v1485 = 7UL;
- v1486 = 0UL;
- v1487 = 0UL;
- v1488 = 0UL;
- v1489 = ((u(*)())v1481)(v1482, v1483, v1484, v1485, v1486, v1487, v1488);
- v1489;
- *(u*)(*(u*)(vc + 48UL) + 48UL) = 0UL;
- v1490 = (u)zas_op;
- v1491 = *(u*)(vc + 48UL);
- v1492 = 195UL;
- v1493 = ((u(*)())v1490)(v1491, v1492);
- v1493;
-b648: v1494 = (u)zfind;
- v1495 = vc;
- v1496 = (u)"_w16";
- v1497 = 0UL;
- v1498 = 1UL;
- v1499 = ((u(*)())v1494)(v1495, v1496, v1497, v1498);
- vd = v1499;
- if (!*(u*)(vd + 72UL)) goto b668;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b672;
- v1501 = 0UL;
-b673: if (!v1501) goto b668;
- v1500 = 1UL;
-b670: if (!v1500) goto b666;
- v1502 = (u)zfixup_label;
- v1503 = *(u*)(vc + 48UL);
- v1504 = *(u*)(vd + 88UL);
- v1505 = ((u(*)())v1502)(v1503, v1504);
- v1505;
- v1506 = (u)zadd_symbol;
- v1507 = *(u*)(vc + 48UL);
- v1508 = *(u*)(vd + 32UL);
- v1509 = *(u*)(vd + 88UL);
- v1510 = ((u(*)())v1506)(v1507, v1508, v1509);
- v1510;
- *(u*)(*(u*)(vc + 48UL) + 48UL) = 1UL;
- v1511 = (u)zas_modrm;
- v1512 = *(u*)(vc + 48UL);
- v1513 = 26249UL;
- v1514 = 6UL;
- v1515 = 7UL;
- v1516 = 0UL;
- v1517 = 0UL;
- v1518 = 0UL;
- v1519 = ((u(*)())v1511)(v1512, v1513, v1514, v1515, v1516, v1517, v1518);
- v1519;
- *(u*)(*(u*)(vc + 48UL) + 48UL) = 0UL;
- v1520 = (u)zas_op;
- v1521 = *(u*)(vc + 48UL);
- v1522 = 195UL;
- v1523 = ((u(*)())v1520)(v1521, v1522);
- v1523;
-b664: v1524 = (u)zfind;
- v1525 = vc;
- v1526 = (u)"_rdrand";
- v1527 = 0UL;
- v1528 = 1UL;
- v1529 = ((u(*)())v1524)(v1525, v1526, v1527, v1528);
- vd = v1529;
- if (!*(u*)(vd + 72UL)) goto b683;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b687;
- v1531 = 0UL;
-b688: if (!v1531) goto b683;
- v1530 = 1UL;
-b685: if (!v1530) goto b681;
- v1532 = (u)zfixup_label;
- v1533 = *(u*)(vc + 48UL);
- v1534 = *(u*)(vd + 88UL);
- v1535 = ((u(*)())v1532)(v1533, v1534);
- v1535;
- v1536 = (u)zadd_symbol;
- v1537 = *(u*)(vc + 48UL);
- v1538 = *(u*)(vd + 32UL);
- v1539 = *(u*)(vd + 88UL);
- v1540 = ((u(*)())v1536)(v1537, v1538, v1539);
- v1540;
- v1541 = (u)zas_modr;
- v1542 = *(u*)(vc + 48UL);
- v1543 = 397255UL;
- v1544 = 0UL;
- v1545 = ((u(*)())v1541)(v1542, v1543, v1544);
- v1545;
- v1546 = (u)zas_op;
- v1547 = *(u*)(vc + 48UL);
- v1548 = 195UL;
- v1549 = ((u(*)())v1546)(v1547, v1548);
- v1549;
-b679: v1550 = (u)zfind;
- v1551 = vc;
- v1552 = (u)"taskswitch";
- v1553 = 0UL;
- v1554 = 1UL;
- v1555 = ((u(*)())v1550)(v1551, v1552, v1553, v1554);
- vd = v1555;
- if (!*(u*)(vd + 72UL)) goto b698;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b702;
- v1557 = 0UL;
-b703: if (!v1557) goto b698;
- v1556 = 1UL;
-b700: if (!v1556) goto b696;
- v1558 = (u)zfixup_label;
- v1559 = *(u*)(vc + 48UL);
- v1560 = *(u*)(vd + 88UL);
- v1561 = ((u(*)())v1558)(v1559, v1560);
- v1561;
- v1562 = (u)zadd_symbol;
- v1563 = *(u*)(vc + 48UL);
- v1564 = *(u*)(vd + 32UL);
- v1565 = *(u*)(vd + 88UL);
- v1566 = ((u(*)())v1562)(v1563, v1564, v1565);
- v1566;
- v1567 = (u)zas_modrm;
- v1568 = *(u*)(vc + 48UL);
- v1569 = 137UL;
- v1570 = 0UL;
- v1571 = 7UL;
- v1572 = 0UL;
- v1573 = 0UL;
- v1574 = 0UL;
- v1575 = ((u(*)())v1567)(v1568, v1569, v1570, v1571, v1572, v1573, v1574);
- v1575;
- v1576 = (u)zas_modrm;
- v1577 = *(u*)(vc + 48UL);
- v1578 = 137UL;
- v1579 = 1UL;
- v1580 = 7UL;
- v1581 = 0UL;
- v1582 = 0UL;
- v1583 = 8UL;
- v1584 = ((u(*)())v1576)(v1577, v1578, v1579, v1580, v1581, v1582, v1583);
- v1584;
- v1585 = (u)zas_modrm;
- v1586 = *(u*)(vc + 48UL);
- v1587 = 137UL;
- v1588 = 2UL;
- v1589 = 7UL;
- v1590 = 0UL;
- v1591 = 0UL;
- v1592 = 16UL;
- v1593 = ((u(*)())v1585)(v1586, v1587, v1588, v1589, v1590, v1591, v1592);
- v1593;
- v1594 = (u)zas_modrm;
- v1595 = *(u*)(vc + 48UL);
- v1596 = 137UL;
- v1597 = 3UL;
- v1598 = 7UL;
- v1599 = 0UL;
- v1600 = 0UL;
- v1601 = 24UL;
- v1602 = ((u(*)())v1594)(v1595, v1596, v1597, v1598, v1599, v1600, v1601);
- v1602;
- v1603 = (u)zas_modrm;
- v1604 = *(u*)(vc + 48UL);
- v1605 = 137UL;
- v1606 = 5UL;
- v1607 = 7UL;
- v1608 = 0UL;
- v1609 = 0UL;
- v1610 = 40UL;
- v1611 = ((u(*)())v1603)(v1604, v1605, v1606, v1607, v1608, v1609, v1610);
- v1611;
- v1612 = (u)zas_modrm;
- v1613 = *(u*)(vc + 48UL);
- v1614 = 137UL;
- v1615 = 6UL;
- v1616 = 7UL;
- v1617 = 0UL;
- v1618 = 0UL;
- v1619 = 48UL;
- v1620 = ((u(*)())v1612)(v1613, v1614, v1615, v1616, v1617, v1618, v1619);
- v1620;
- v1621 = (u)zas_modrm;
- v1622 = *(u*)(vc + 48UL);
- v1623 = 137UL;
- v1624 = 7UL;
- v1625 = 7UL;
- v1626 = 0UL;
- v1627 = 0UL;
- v1628 = 56UL;
- v1629 = ((u(*)())v1621)(v1622, v1623, v1624, v1625, v1626, v1627, v1628);
- v1629;
- v1630 = (u)zas_modrm;
- v1631 = *(u*)(vc + 48UL);
- v1632 = 137UL;
- v1633 = 8UL;
- v1634 = 7UL;
- v1635 = 0UL;
- v1636 = 0UL;
- v1637 = 64UL;
- v1638 = ((u(*)())v1630)(v1631, v1632, v1633, v1634, v1635, v1636, v1637);
- v1638;
- v1639 = (u)zas_modrm;
- v1640 = *(u*)(vc + 48UL);
- v1641 = 137UL;
- v1642 = 9UL;
- v1643 = 7UL;
- v1644 = 0UL;
- v1645 = 0UL;
- v1646 = 72UL;
- v1647 = ((u(*)())v1639)(v1640, v1641, v1642, v1643, v1644, v1645, v1646);
- v1647;
- v1648 = (u)zas_modrm;
- v1649 = *(u*)(vc + 48UL);
- v1650 = 137UL;
- v1651 = 10UL;
- v1652 = 7UL;
- v1653 = 0UL;
- v1654 = 0UL;
- v1655 = 80UL;
- v1656 = ((u(*)())v1648)(v1649, v1650, v1651, v1652, v1653, v1654, v1655);
- v1656;
- v1657 = (u)zas_modrm;
- v1658 = *(u*)(vc + 48UL);
- v1659 = 137UL;
- v1660 = 11UL;
- v1661 = 7UL;
- v1662 = 0UL;
- v1663 = 0UL;
- v1664 = 88UL;
- v1665 = ((u(*)())v1657)(v1658, v1659, v1660, v1661, v1662, v1663, v1664);
- v1665;
- v1666 = (u)zas_modrm;
- v1667 = *(u*)(vc + 48UL);
- v1668 = 137UL;
- v1669 = 12UL;
- v1670 = 7UL;
- v1671 = 0UL;
- v1672 = 0UL;
- v1673 = 96UL;
- v1674 = ((u(*)())v1666)(v1667, v1668, v1669, v1670, v1671, v1672, v1673);
- v1674;
- v1675 = (u)zas_modrm;
- v1676 = *(u*)(vc + 48UL);
- v1677 = 137UL;
- v1678 = 13UL;
- v1679 = 7UL;
- v1680 = 0UL;
- v1681 = 0UL;
- v1682 = 104UL;
- v1683 = ((u(*)())v1675)(v1676, v1677, v1678, v1679, v1680, v1681, v1682);
- v1683;
- v1684 = (u)zas_modrm;
- v1685 = *(u*)(vc + 48UL);
- v1686 = 137UL;
- v1687 = 14UL;
- v1688 = 7UL;
- v1689 = 0UL;
- v1690 = 0UL;
- v1691 = 112UL;
- v1692 = ((u(*)())v1684)(v1685, v1686, v1687, v1688, v1689, v1690, v1691);
- v1692;
- v1693 = (u)zas_modrm;
- v1694 = *(u*)(vc + 48UL);
- v1695 = 137UL;
- v1696 = 15UL;
- v1697 = 7UL;
- v1698 = 0UL;
- v1699 = 0UL;
- v1700 = 120UL;
- v1701 = ((u(*)())v1693)(v1694, v1695, v1696, v1697, v1698, v1699, v1700);
- v1701;
- v1702 = (u)zas_opr;
- v1703 = *(u*)(vc + 48UL);
- v1704 = 88UL;
- v1705 = 0UL;
- v1706 = ((u(*)())v1702)(v1703, v1704, v1705);
- v1706;
- v1707 = (u)zas_modrm;
- v1708 = *(u*)(vc + 48UL);
- v1709 = 137UL;
- v1710 = 0UL;
- v1711 = 7UL;
- v1712 = 0UL;
- v1713 = 0UL;
- v1714 = 128UL;
- v1715 = ((u(*)())v1707)(v1708, v1709, v1710, v1711, v1712, v1713, v1714);
- v1715;
- v1716 = (u)zas_modrr;
- v1717 = *(u*)(vc + 48UL);
- v1718 = 140UL;
- v1719 = 1UL;
- v1720 = 0UL;
- v1721 = ((u(*)())v1716)(v1717, v1718, v1719, v1720);
- v1721;
- v1722 = (u)zas_modrm;
- v1723 = *(u*)(vc + 48UL);
- v1724 = 137UL;
- v1725 = 0UL;
- v1726 = 7UL;
- v1727 = 0UL;
- v1728 = 0UL;
- v1729 = 144UL;
- v1730 = ((u(*)())v1722)(v1723, v1724, v1725, v1726, v1727, v1728, v1729);
- v1730;
- v1731 = (u)zas_op;
- v1732 = *(u*)(vc + 48UL);
- v1733 = 156UL;
- v1734 = ((u(*)())v1731)(v1732, v1733);
- v1734;
- v1735 = (u)zas_opr;
- v1736 = *(u*)(vc + 48UL);
- v1737 = 88UL;
- v1738 = 0UL;
- v1739 = ((u(*)())v1735)(v1736, v1737, v1738);
- v1739;
- v1740 = (u)zas_modrm;
- v1741 = *(u*)(vc + 48UL);
- v1742 = 137UL;
- v1743 = 0UL;
- v1744 = 7UL;
- v1745 = 0UL;
- v1746 = 0UL;
- v1747 = 136UL;
- v1748 = ((u(*)())v1740)(v1741, v1742, v1743, v1744, v1745, v1746, v1747);
- v1748;
- v1749 = (u)zas_modrm;
- v1750 = *(u*)(vc + 48UL);
- v1751 = 137UL;
- v1752 = 4UL;
- v1753 = 7UL;
- v1754 = 0UL;
- v1755 = 0UL;
- v1756 = 32UL;
- v1757 = ((u(*)())v1749)(v1750, v1751, v1752, v1753, v1754, v1755, v1756);
- v1757;
- v1758 = (u)zas_modrr;
- v1759 = *(u*)(vc + 48UL);
- v1760 = 140UL;
- v1761 = 2UL;
- v1762 = 0UL;
- v1763 = ((u(*)())v1758)(v1759, v1760, v1761, v1762);
- v1763;
- v1764 = (u)zas_modrm;
- v1765 = *(u*)(vc + 48UL);
- v1766 = 137UL;
- v1767 = 0UL;
- v1768 = 7UL;
- v1769 = 0UL;
- v1770 = 0UL;
- v1771 = 152UL;
- v1772 = ((u(*)())v1764)(v1765, v1766, v1767, v1768, v1769, v1770, v1771);
- v1772;
- v1773 = (u)zas_modrm;
- v1774 = *(u*)(vc + 48UL);
- v1775 = 137UL;
- v1776 = 1UL;
- v1777 = 7UL;
- v1778 = 0UL;
- v1779 = 0UL;
- v1780 = 8UL;
- v1781 = ((u(*)())v1773)(v1774, v1775, v1776, v1777, v1778, v1779, v1780);
- v1781;
- v1782 = (u)zas_modrm;
- v1783 = *(u*)(vc + 48UL);
- v1784 = 137UL;
- v1785 = 2UL;
- v1786 = 7UL;
- v1787 = 0UL;
- v1788 = 0UL;
- v1789 = 16UL;
- v1790 = ((u(*)())v1782)(v1783, v1784, v1785, v1786, v1787, v1788, v1789);
- v1790;
- v1791 = (u)zas_modrm;
- v1792 = *(u*)(vc + 48UL);
- v1793 = 137UL;
- v1794 = 3UL;
- v1795 = 7UL;
- v1796 = 0UL;
- v1797 = 0UL;
- v1798 = 24UL;
- v1799 = ((u(*)())v1791)(v1792, v1793, v1794, v1795, v1796, v1797, v1798);
- v1799;
- v1800 = (u)zas_modrm;
- v1801 = *(u*)(vc + 48UL);
- v1802 = 137UL;
- v1803 = 5UL;
- v1804 = 7UL;
- v1805 = 0UL;
- v1806 = 0UL;
- v1807 = 40UL;
- v1808 = ((u(*)())v1800)(v1801, v1802, v1803, v1804, v1805, v1806, v1807);
- v1808;
- v1809 = (u)zas_modrm;
- v1810 = *(u*)(vc + 48UL);
- v1811 = 137UL;
- v1812 = 7UL;
- v1813 = 7UL;
- v1814 = 0UL;
- v1815 = 0UL;
- v1816 = 56UL;
- v1817 = ((u(*)())v1809)(v1810, v1811, v1812, v1813, v1814, v1815, v1816);
- v1817;
- v1818 = (u)zas_modrm;
- v1819 = *(u*)(vc + 48UL);
- v1820 = 137UL;
- v1821 = 8UL;
- v1822 = 7UL;
- v1823 = 0UL;
- v1824 = 0UL;
- v1825 = 64UL;
- v1826 = ((u(*)())v1818)(v1819, v1820, v1821, v1822, v1823, v1824, v1825);
- v1826;
- v1827 = (u)zas_modrm;
- v1828 = *(u*)(vc + 48UL);
- v1829 = 137UL;
- v1830 = 9UL;
- v1831 = 7UL;
- v1832 = 0UL;
- v1833 = 0UL;
- v1834 = 72UL;
- v1835 = ((u(*)())v1827)(v1828, v1829, v1830, v1831, v1832, v1833, v1834);
- v1835;
- v1836 = (u)zas_modrm;
- v1837 = *(u*)(vc + 48UL);
- v1838 = 137UL;
- v1839 = 10UL;
- v1840 = 7UL;
- v1841 = 0UL;
- v1842 = 0UL;
- v1843 = 80UL;
- v1844 = ((u(*)())v1836)(v1837, v1838, v1839, v1840, v1841, v1842, v1843);
- v1844;
- v1845 = (u)zas_modrm;
- v1846 = *(u*)(vc + 48UL);
- v1847 = 137UL;
- v1848 = 11UL;
- v1849 = 7UL;
- v1850 = 0UL;
- v1851 = 0UL;
- v1852 = 88UL;
- v1853 = ((u(*)())v1845)(v1846, v1847, v1848, v1849, v1850, v1851, v1852);
- v1853;
- v1854 = (u)zas_modrm;
- v1855 = *(u*)(vc + 48UL);
- v1856 = 137UL;
- v1857 = 12UL;
- v1858 = 7UL;
- v1859 = 0UL;
- v1860 = 0UL;
- v1861 = 96UL;
- v1862 = ((u(*)())v1854)(v1855, v1856, v1857, v1858, v1859, v1860, v1861);
- v1862;
- v1863 = (u)zas_modrm;
- v1864 = *(u*)(vc + 48UL);
- v1865 = 137UL;
- v1866 = 13UL;
- v1867 = 7UL;
- v1868 = 0UL;
- v1869 = 0UL;
- v1870 = 104UL;
- v1871 = ((u(*)())v1863)(v1864, v1865, v1866, v1867, v1868, v1869, v1870);
- v1871;
- v1872 = (u)zas_modrm;
- v1873 = *(u*)(vc + 48UL);
- v1874 = 137UL;
- v1875 = 14UL;
- v1876 = 7UL;
- v1877 = 0UL;
- v1878 = 0UL;
- v1879 = 112UL;
- v1880 = ((u(*)())v1872)(v1873, v1874, v1875, v1876, v1877, v1878, v1879);
- v1880;
- v1881 = (u)zas_modrm;
- v1882 = *(u*)(vc + 48UL);
- v1883 = 137UL;
- v1884 = 15UL;
- v1885 = 7UL;
- v1886 = 0UL;
- v1887 = 0UL;
- v1888 = 120UL;
- v1889 = ((u(*)())v1881)(v1882, v1883, v1884, v1885, v1886, v1887, v1888);
- v1889;
- v1890 = (u)zas_modrm;
- v1891 = *(u*)(vc + 48UL);
- v1892 = 139UL;
- v1893 = 0UL;
- v1894 = 6UL;
- v1895 = 0UL;
- v1896 = 0UL;
- v1897 = 152UL;
- v1898 = ((u(*)())v1890)(v1891, v1892, v1893, v1894, v1895, v1896, v1897);
- v1898;
- v1899 = (u)zas_opr;
- v1900 = *(u*)(vc + 48UL);
- v1901 = 80UL;
- v1902 = 0UL;
- v1903 = ((u(*)())v1899)(v1900, v1901, v1902);
- v1903;
- v1904 = (u)zas_modrm;
- v1905 = *(u*)(vc + 48UL);
- v1906 = 139UL;
- v1907 = 0UL;
- v1908 = 6UL;
- v1909 = 0UL;
- v1910 = 0UL;
- v1911 = 32UL;
- v1912 = ((u(*)())v1904)(v1905, v1906, v1907, v1908, v1909, v1910, v1911);
- v1912;
- v1913 = (u)zas_opr;
- v1914 = *(u*)(vc + 48UL);
- v1915 = 80UL;
- v1916 = 0UL;
- v1917 = ((u(*)())v1913)(v1914, v1915, v1916);
- v1917;
- v1918 = (u)zas_modrm;
- v1919 = *(u*)(vc + 48UL);
- v1920 = 139UL;
- v1921 = 0UL;
- v1922 = 6UL;
- v1923 = 0UL;
- v1924 = 0UL;
- v1925 = 136UL;
- v1926 = ((u(*)())v1918)(v1919, v1920, v1921, v1922, v1923, v1924, v1925);
- v1926;
- v1927 = (u)zas_opr;
- v1928 = *(u*)(vc + 48UL);
- v1929 = 80UL;
- v1930 = 0UL;
- v1931 = ((u(*)())v1927)(v1928, v1929, v1930);
- v1931;
- v1932 = (u)zas_modrm;
- v1933 = *(u*)(vc + 48UL);
- v1934 = 139UL;
- v1935 = 0UL;
- v1936 = 6UL;
- v1937 = 0UL;
- v1938 = 0UL;
- v1939 = 144UL;
- v1940 = ((u(*)())v1932)(v1933, v1934, v1935, v1936, v1937, v1938, v1939);
- v1940;
- v1941 = (u)zas_opr;
- v1942 = *(u*)(vc + 48UL);
- v1943 = 80UL;
- v1944 = 0UL;
- v1945 = ((u(*)())v1941)(v1942, v1943, v1944);
- v1945;
- v1946 = (u)zas_modrm;
- v1947 = *(u*)(vc + 48UL);
- v1948 = 139UL;
- v1949 = 0UL;
- v1950 = 6UL;
- v1951 = 0UL;
- v1952 = 0UL;
- v1953 = 128UL;
- v1954 = ((u(*)())v1946)(v1947, v1948, v1949, v1950, v1951, v1952, v1953);
- v1954;
- v1955 = (u)zas_opr;
- v1956 = *(u*)(vc + 48UL);
- v1957 = 80UL;
- v1958 = 0UL;
- v1959 = ((u(*)())v1955)(v1956, v1957, v1958);
- v1959;
- v1960 = (u)zas_modrm;
- v1961 = *(u*)(vc + 48UL);
- v1962 = 139UL;
- v1963 = 0UL;
- v1964 = 6UL;
- v1965 = 0UL;
- v1966 = 0UL;
- v1967 = 0UL;
- v1968 = ((u(*)())v1960)(v1961, v1962, v1963, v1964, v1965, v1966, v1967);
- v1968;
- v1969 = (u)zas_modrm;
- v1970 = *(u*)(vc + 48UL);
- v1971 = 139UL;
- v1972 = 6UL;
- v1973 = 6UL;
- v1974 = 0UL;
- v1975 = 0UL;
- v1976 = 40UL;
- v1977 = ((u(*)())v1969)(v1970, v1971, v1972, v1973, v1974, v1975, v1976);
- v1977;
- v1978 = (u)zas_op;
- v1979 = *(u*)(vc + 48UL);
- v1980 = 18639UL;
- v1981 = ((u(*)())v1978)(v1979, v1980);
- v1981;
-b694: return 0UL;
-b696: goto b694;
-b698: v1556 = 0UL;
- goto b700;
-b702: v1557 = 1UL;
- goto b703;
-b681: goto b679;
-b683: v1530 = 0UL;
- goto b685;
-b687: v1531 = 1UL;
- goto b688;
-b666: goto b664;
-b668: v1500 = 0UL;
- goto b670;
-b672: v1501 = 1UL;
- goto b673;
-b650: goto b648;
-b652: v1464 = 0UL;
- goto b654;
-b656: v1465 = 1UL;
- goto b657;
-b635: goto b633;
-b637: v1434 = 0UL;
- goto b639;
-b641: v1435 = 1UL;
- goto b642;
-b620: goto b618;
-b622: v1404 = 0UL;
- goto b624;
-b626: v1405 = 1UL;
- goto b627;
-b603: goto b601;
-b605: v1361 = 0UL;
- goto b607;
-b609: v1362 = 1UL;
- goto b610;
-b588: goto b586;
-b590: v1337 = 0UL;
- goto b592;
-b594: v1338 = 1UL;
- goto b595;
-b573: goto b571;
-b575: v1313 = 0UL;
- goto b577;
-b579: v1314 = 1UL;
- goto b580;
-b558: goto b556;
-b560: v1284 = 0UL;
- goto b562;
-b564: v1285 = 1UL;
- goto b565;
-b543: goto b541;
-b545: v1255 = 0UL;
- goto b547;
-b549: v1256 = 1UL;
- goto b550;
-b527: goto b525;
-b529: v1225 = 0UL;
- goto b531;
-b533: v1226 = 1UL;
- goto b534;
-b511: goto b509;
-b513: v1195 = 0UL;
- goto b515;
-b517: v1196 = 1UL;
- goto b518;
-b496: goto b494;
-b498: v1170 = 0UL;
- goto b500;
-b502: v1171 = 1UL;
- goto b503;
-b481: goto b479;
-b483: v1145 = 0UL;
- goto b485;
-b487: v1146 = 1UL;
- goto b488;
-b466: goto b464;
-b468: v1120 = 0UL;
- goto b470;
-b472: v1121 = 1UL;
- goto b473;
-b430: goto b428;
-b432: v996 = 0UL;
- goto b434;
-b436: v997 = 1UL;
- goto b437;
-b415: goto b413;
-b417: v970 = 0UL;
- goto b419;
-b421: v971 = 1UL;
- goto b422;
-b400: goto b398;
-b402: v944 = 0UL;
- goto b404;
-b406: v945 = 1UL;
- goto b407;
-b380: goto b378;
-b382: v879 = 0UL;
- goto b384;
-b386: v880 = 1UL;
- goto b387;
-b360: goto b358;
-b362: v814 = 0UL;
- goto b364;
-b366: v815 = 1UL;
- goto b367;
-b345: goto b343;
-b347: v787 = 0UL;
- goto b349;
-b351: v788 = 1UL;
- goto b352;
-b330: goto b328;
-b332: v760 = 0UL;
- goto b334;
-b336: v761 = 1UL;
- goto b337;
-b315: goto b313;
-b317: v733 = 0UL;
- goto b319;
-b321: v734 = 1UL;
- goto b322;
-b300: goto b298;
-b302: v706 = 0UL;
- goto b304;
-b306: v707 = 1UL;
- goto b307;
-b285: goto b283;
-b287: v679 = 0UL;
- goto b289;
-b291: v680 = 1UL;
- goto b292;
-b270: goto b268;
-b272: v652 = 0UL;
- goto b274;
-b276: v653 = 1UL;
- goto b277;
-b255: goto b253;
-b257: v625 = 0UL;
- goto b259;
-b261: v626 = 1UL;
- goto b262;
-b240: goto b238;
-b242: v598 = 0UL;
- goto b244;
-b246: v599 = 1UL;
- goto b247;
-b220: goto b218;
-b222: v544 = 0UL;
- goto b224;
-b226: v545 = 1UL;
- goto b227;
-b201: goto b199;
-b203: v496 = 0UL;
- goto b205;
-b207: v497 = 1UL;
- goto b208;
-b184: goto b182;
-b186: v459 = 0UL;
- goto b188;
-b190: v460 = 1UL;
- goto b191;
-b168: goto b166;
-b170: v428 = 0UL;
- goto b172;
-b174: v429 = 1UL;
- goto b175;
-b150: goto b148;
-b152: v387 = 0UL;
- goto b154;
-b156: v388 = 1UL;
- goto b157;
-b133: goto b131;
-b135: v352 = 0UL;
- goto b137;
-b139: v353 = 1UL;
- goto b140;
-b116: goto b114;
-b118: v315 = 0UL;
- goto b120;
-b122: v316 = 1UL;
- goto b123;
-b100: goto b98;
-b102: v284 = 0UL;
- goto b104;
-b106: v285 = 1UL;
- goto b107;
-b69: goto b67;
-b71: v147 = 0UL;
- goto b73;
-b75: v148 = 1UL;
- goto b76;
-b55: goto b53;
-b57: v126 = 0UL;
- goto b59;
-b61: v127 = 1UL;
- goto b62;
-b41: goto b39;
-b43: v105 = 0UL;
- goto b45;
-b47: v106 = 1UL;
- goto b48;
-b26: goto b24;
-b28: v78 = 0UL;
- goto b30;
-b32: v79 = 1UL;
- goto b33;
-b4: goto b2;
-b6: v8 = 0UL;
- goto b8;
-b10: v9 = 1UL;
- goto b11;
-}
-u zemit_hook(u vc) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- if (!*(u*)(vc + 80UL)) goto b5;
- v1 = 0UL;
-b6: if (!v1) goto b3;
- *(u*)(vc + 112UL) = *(u*)(vc + 96UL);
- *(u*)(vc + 104UL) = *(u*)(vc + 88UL);
-b1: if (*(u*)(vc + 96UL) != *(u*)(vc + 112UL)) goto b11;
- if (*(u*)(vc + 88UL) != *(u*)(vc + 104UL)) goto b15;
- v3 = 1UL;
-b17: if (!v3) goto b11;
- v2 = 1UL;
-b13: if (!v2) goto b9;
- return 0UL;
-b9: v11 = (u)zfputh;
- v12 = *(u*)(vc + 80UL);
- v13 = *(u*)(vc + 24UL) + 1048576UL;
- v14 = ((u(*)())v11)(v12, v13);
- v14;
- v15 = (u)zfputs;
- v16 = *(u*)(vc + 80UL);
- v17 = (u)"\011";
- v18 = ((u(*)())v15)(v16, v17);
- v18;
- if (!*(u*)(vc + 88UL)) goto b35;
- v19 = (u)zfputs;
- v20 = *(u*)(vc + 80UL);
- v21 = *(u*)(vc + 88UL);
- v22 = ((u(*)())v19)(v20, v21);
- v22;
-b33: v23 = (u)zfputs;
- v24 = *(u*)(vc + 80UL);
- v25 = (u)":";
- v26 = ((u(*)())v23)(v24, v25);
- v26;
- v27 = (u)zfputd;
- v28 = *(u*)(vc + 80UL);
- v29 = *(u*)(vc + 96UL);
- v30 = ((u(*)())v27)(v28, v29);
- v30;
- v31 = (u)zfputs;
- v32 = *(u*)(vc + 80UL);
- v33 = (u)"\012";
- v34 = ((u(*)())v31)(v32, v33);
- v34;
- *(u*)(vc + 112UL) = *(u*)(vc + 96UL);
- *(u*)(vc + 104UL) = *(u*)(vc + 88UL);
- return 0UL;
-b35: goto b33;
-b11: v2 = 0UL;
- goto b13;
-b15: if (!*(u*)(vc + 88UL)) goto b24;
- if (!*(u*)(vc + 104UL)) goto b24;
- v5 = 1UL;
-b26: if (!v5) goto b20;
- v7 = (u)zstrcmp;
- v8 = *(u*)(vc + 88UL);
- v9 = *(u*)(vc + 104UL);
- v10 = ((u(*)())v7)(v8, v9);
- if (!v10) goto b28;
- v6 = 0UL;
-b29: if (!v6) goto b20;
- v4 = 1UL;
-b22: if (!v4) goto b18;
- v3 = 1UL;
- goto b17;
-b18: v3 = 0UL;
- goto b17;
-b20: v4 = 0UL;
- goto b22;
-b28: v6 = 1UL;
- goto b29;
-b24: v5 = 0UL;
- goto b26;
-b3: goto b1;
-b5: v1 = 1UL;
- goto b6;
-}
-u zemit_isr(u vc) {
- u vd = 0;
- u vout = 0;
- u vi = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- u v134 = 0;
- u v135 = 0;
- u v136 = 0;
- u v137 = 0;
- u v138 = 0;
- u v139 = 0;
- u v140 = 0;
- u v141 = 0;
- u v142 = 0;
- u v143 = 0;
- u v144 = 0;
- u v145 = 0;
- u v146 = 0;
- u v147 = 0;
- u v148 = 0;
- u v149 = 0;
- u v150 = 0;
- u v151 = 0;
- u v152 = 0;
- u v153 = 0;
- u v154 = 0;
- u v155 = 0;
- u v156 = 0;
- u v157 = 0;
- u v158 = 0;
- u v159 = 0;
- u v160 = 0;
- u v161 = 0;
- u v162 = 0;
- u v163 = 0;
- u v164 = 0;
- u v165 = 0;
- u v166 = 0;
- u v167 = 0;
- u v168 = 0;
- u v169 = 0;
- u v170 = 0;
- u v171 = 0;
- u v172 = 0;
- u v173 = 0;
- u v174 = 0;
- u v175 = 0;
- u v176 = 0;
- u v177 = 0;
- u v178 = 0;
- u v179 = 0;
- u v180 = 0;
- u v181 = 0;
- u v182 = 0;
- u v183 = 0;
- u v184 = 0;
- u v185 = 0;
- u v186 = 0;
- u v187 = 0;
- u v188 = 0;
- u v189 = 0;
- u v190 = 0;
- u v191 = 0;
- u v192 = 0;
- u v193 = 0;
- u v194 = 0;
- u v195 = 0;
- u v196 = 0;
- u v197 = 0;
- u v198 = 0;
- u v199 = 0;
- u v200 = 0;
- u v201 = 0;
- u v202 = 0;
- u v203 = 0;
- u v204 = 0;
- u v205 = 0;
- u v206 = 0;
- u v207 = 0;
- u v208 = 0;
- u v209 = 0;
- u v210 = 0;
- u v211 = 0;
- u v212 = 0;
- u v213 = 0;
- u v214 = 0;
- u v215 = 0;
- u v216 = 0;
- u v217 = 0;
- u v218 = 0;
- u v219 = 0;
- u v220 = 0;
- u v221 = 0;
- u v222 = 0;
- u v223 = 0;
- u v224 = 0;
- u v225 = 0;
- u v226 = 0;
- u v227 = 0;
- u v228 = 0;
- u v229 = 0;
- u v230 = 0;
- u v231 = 0;
- u v232 = 0;
- u v233 = 0;
- u v234 = 0;
- u v235 = 0;
- u v236 = 0;
- u v237 = 0;
- u v238 = 0;
- u v239 = 0;
- u v240 = 0;
- u v241 = 0;
- u v242 = 0;
- u v243 = 0;
- u v244 = 0;
- u v245 = 0;
- u v246 = 0;
- u v247 = 0;
- u v248 = 0;
- u v249 = 0;
- u v250 = 0;
- u v251 = 0;
- u v252 = 0;
- u v253 = 0;
- u v254 = 0;
- u v255 = 0;
- u v256 = 0;
- u v257 = 0;
- u v258 = 0;
- u v259 = 0;
- u v260 = 0;
- u v261 = 0;
- u v262 = 0;
- u v263 = 0;
- u v264 = 0;
- u v265 = 0;
- u v266 = 0;
- u v267 = 0;
- u v268 = 0;
- u v269 = 0;
- u v270 = 0;
- u v271 = 0;
- u v272 = 0;
- u v273 = 0;
- u v274 = 0;
- u v275 = 0;
- u v276 = 0;
- u v277 = 0;
- u v278 = 0;
- u v279 = 0;
- u v280 = 0;
- u v281 = 0;
- u v282 = 0;
- u v283 = 0;
- u v284 = 0;
- u v285 = 0;
- u v286 = 0;
- u v287 = 0;
- u v288 = 0;
- u v289 = 0;
- u v290 = 0;
- u v291 = 0;
- u v292 = 0;
- u v293 = 0;
- u v294 = 0;
- u v295 = 0;
- u v296 = 0;
- u v297 = 0;
- u v298 = 0;
- u v299 = 0;
- u v300 = 0;
- u v301 = 0;
- u v302 = 0;
- u v303 = 0;
- u v304 = 0;
- u v305 = 0;
- u v306 = 0;
- u v307 = 0;
- u v308 = 0;
- u v309 = 0;
- u v310 = 0;
- u v311 = 0;
- u v312 = 0;
- u v313 = 0;
- u v314 = 0;
- u v315 = 0;
- u v316 = 0;
- u v317 = 0;
- u v318 = 0;
- u v319 = 0;
- u v320 = 0;
- u v321 = 0;
- u v322 = 0;
- u v323 = 0;
- u v324 = 0;
- u v325 = 0;
- u v326 = 0;
- u v327 = 0;
- u v328 = 0;
- u v329 = 0;
- u v330 = 0;
- u v331 = 0;
- u v332 = 0;
- u v333 = 0;
- u v334 = 0;
- u v335 = 0;
- u v336 = 0;
- u v337 = 0;
- u v338 = 0;
- u v339 = 0;
- u v340 = 0;
- u v341 = 0;
- u v342 = 0;
- u v343 = 0;
- u v344 = 0;
- u v345 = 0;
- u v346 = 0;
- u v347 = 0;
- u v348 = 0;
- u v349 = 0;
- u v350 = 0;
- u v351 = 0;
- u v352 = 0;
- u v353 = 0;
- u v354 = 0;
- u v355 = 0;
- u v356 = 0;
- u v357 = 0;
- u v358 = 0;
- u v359 = 0;
- u v360 = 0;
- u v361 = 0;
- u v362 = 0;
- u v363 = 0;
- u v364 = 0;
- u v365 = 0;
- u v366 = 0;
- u v367 = 0;
- u v368 = 0;
- u v369 = 0;
- u v370 = 0;
- u v371 = 0;
- u v372 = 0;
- u v373 = 0;
- u v374 = 0;
- u v375 = 0;
- u v376 = 0;
- u v377 = 0;
- u v378 = 0;
- u v379 = 0;
- u v380 = 0;
- u v381 = 0;
- u v382 = 0;
- u v383 = 0;
- u v384 = 0;
- u v385 = 0;
- u v386 = 0;
- u v387 = 0;
- u v388 = 0;
- u v389 = 0;
- u v390 = 0;
- u v391 = 0;
- u v392 = 0;
- u v393 = 0;
- u v394 = 0;
- u v395 = 0;
- u v396 = 0;
- u v397 = 0;
- u v398 = 0;
- u v399 = 0;
- u v400 = 0;
- u v401 = 0;
- u v402 = 0;
- u v403 = 0;
- u v404 = 0;
- u v405 = 0;
- u v406 = 0;
- u v407 = 0;
- u v408 = 0;
- u v409 = 0;
- u v410 = 0;
- u v411 = 0;
- u v412 = 0;
- u v413 = 0;
- u v414 = 0;
- u v415 = 0;
- u v416 = 0;
- u v417 = 0;
- u v418 = 0;
- u v419 = 0;
- u v420 = 0;
- u v421 = 0;
- u v422 = 0;
- u v423 = 0;
- u v424 = 0;
- u v425 = 0;
- u v426 = 0;
- u v427 = 0;
- u v428 = 0;
- u v429 = 0;
- u v430 = 0;
- u v431 = 0;
- u v432 = 0;
- u v433 = 0;
- u v434 = 0;
- u v435 = 0;
- u v436 = 0;
- u v437 = 0;
- u v438 = 0;
- u v439 = 0;
- u v440 = 0;
- u v441 = 0;
- u v442 = 0;
- u v443 = 0;
- u v444 = 0;
- u v445 = 0;
- u v446 = 0;
- u v447 = 0;
- u v448 = 0;
- u v449 = 0;
- u v450 = 0;
- u v451 = 0;
- u v452 = 0;
- u v453 = 0;
- u v454 = 0;
- u v455 = 0;
- u v456 = 0;
- u v457 = 0;
- u v458 = 0;
- u v459 = 0;
- u v460 = 0;
- u v461 = 0;
- u v462 = 0;
- u v463 = 0;
- u v464 = 0;
- u v465 = 0;
- u v466 = 0;
- u v467 = 0;
- u v468 = 0;
- u v469 = 0;
- u v470 = 0;
- u v471 = 0;
- u v472 = 0;
- u v473 = 0;
- u v474 = 0;
- u v475 = 0;
- u v476 = 0;
- u v477 = 0;
- u v478 = 0;
- u v479 = 0;
- u v480 = 0;
- u v481 = 0;
- u v482 = 0;
- u v483 = 0;
- u v484 = 0;
- u v485 = 0;
- u v486 = 0;
- u v487 = 0;
- u v488 = 0;
- u v489 = 0;
- u v490 = 0;
- u v491 = 0;
- u v492 = 0;
- u v493 = 0;
- u v494 = 0;
- u v495 = 0;
- u v496 = 0;
- u v497 = 0;
- u v498 = 0;
- u v499 = 0;
- u v500 = 0;
- u v501 = 0;
- u v502 = 0;
- u v503 = 0;
- u v504 = 0;
- u v505 = 0;
- u v506 = 0;
- u v507 = 0;
- u v508 = 0;
- u v509 = 0;
- u v510 = 0;
- u v511 = 0;
- u v512 = 0;
- u v513 = 0;
- u v514 = 0;
- u v515 = 0;
- u v516 = 0;
- u v517 = 0;
- u v518 = 0;
- u v519 = 0;
- u v520 = 0;
- u v521 = 0;
- u v522 = 0;
- u v523 = 0;
- u v524 = 0;
- u v525 = 0;
- u v526 = 0;
- u v527 = 0;
- u v528 = 0;
- u v529 = 0;
- u v530 = 0;
- u v531 = 0;
- u v532 = 0;
- u v533 = 0;
- u v534 = 0;
- u v535 = 0;
- u v536 = 0;
- u v537 = 0;
- u v538 = 0;
- u v539 = 0;
- u v540 = 0;
- u v541 = 0;
- u v542 = 0;
- u v543 = 0;
- u v544 = 0;
- u v545 = 0;
- u v546 = 0;
- u v547 = 0;
- u v548 = 0;
- u v549 = 0;
- u v550 = 0;
- u v551 = 0;
- u v552 = 0;
- u v553 = 0;
- u v554 = 0;
- u v555 = 0;
- u v556 = 0;
- u v557 = 0;
- u v558 = 0;
- u v559 = 0;
- u v560 = 0;
- u v561 = 0;
- u v562 = 0;
- u v563 = 0;
- u v564 = 0;
- u v565 = 0;
- u v566 = 0;
- u v567 = 0;
- u v568 = 0;
- u v569 = 0;
- u v570 = 0;
- u v571 = 0;
- u v572 = 0;
- u v573 = 0;
- u v574 = 0;
- u v575 = 0;
- u v576 = 0;
- u v577 = 0;
- u v578 = 0;
- u v579 = 0;
- u v580 = 0;
- u v581 = 0;
- u v582 = 0;
- u v583 = 0;
- u v584 = 0;
- u v585 = 0;
- u v586 = 0;
- u v587 = 0;
- u v588 = 0;
- u v589 = 0;
- u v590 = 0;
- u v591 = 0;
- u v592 = 0;
- u v593 = 0;
- u v594 = 0;
- u v595 = 0;
- u v596 = 0;
- u v597 = 0;
- u v598 = 0;
- u v599 = 0;
- u v600 = 0;
- u v601 = 0;
- u v602 = 0;
- u v603 = 0;
- u v604 = 0;
- u v605 = 0;
- u v606 = 0;
- u v607 = 0;
- u v608 = 0;
- u v609 = 0;
- u v610 = 0;
- u v611 = 0;
- u v612 = 0;
- u v613 = 0;
- u v614 = 0;
- u v615 = 0;
- u v616 = 0;
- u v617 = 0;
- u v618 = 0;
- u v619 = 0;
- u v620 = 0;
- u v621 = 0;
- u v622 = 0;
- u v623 = 0;
- u v624 = 0;
- u v625 = 0;
- v4 = (u)zmklabel;
- v5 = *(u*)(vc + 48UL);
- v6 = ((u(*)())v4)(v5);
- vout = v6;
- vi = 0UL;
-b2: if (vi != 256UL) goto b6;
- v96 = (u)zfixup_label;
- v97 = *(u*)(vc + 48UL);
- v98 = vout;
- v99 = ((u(*)())v96)(v97, v98);
- v99;
- v100 = (u)zas_modri;
- v101 = *(u*)(vc + 48UL);
- v102 = 327809UL;
- v103 = 4UL;
- v104 = 176UL;
- v105 = ((u(*)())v100)(v101, v102, v103, v104);
- v105;
- v106 = (u)zas_modrm;
- v107 = *(u*)(vc + 48UL);
- v108 = 137UL;
- v109 = 5UL;
- v110 = 4UL;
- v111 = 0UL;
- v112 = 0UL;
- v113 = 40UL;
- v114 = ((u(*)())v106)(v107, v108, v109, v110, v111, v112, v113);
- v114;
- v115 = (u)zas_modrr;
- v116 = *(u*)(vc + 48UL);
- v117 = 139UL;
- v118 = 5UL;
- v119 = 4UL;
- v120 = ((u(*)())v115)(v116, v117, v118, v119);
- v120;
- v121 = (u)zas_modrm;
- v122 = *(u*)(vc + 48UL);
- v123 = 137UL;
- v124 = 0UL;
- v125 = 5UL;
- v126 = 0UL;
- v127 = 0UL;
- v128 = 0UL;
- v129 = ((u(*)())v121)(v122, v123, v124, v125, v126, v127, v128);
- v129;
- v130 = (u)zas_modrm;
- v131 = *(u*)(vc + 48UL);
- v132 = 137UL;
- v133 = 1UL;
- v134 = 5UL;
- v135 = 0UL;
- v136 = 0UL;
- v137 = 8UL;
- v138 = ((u(*)())v130)(v131, v132, v133, v134, v135, v136, v137);
- v138;
- v139 = (u)zas_modrm;
- v140 = *(u*)(vc + 48UL);
- v141 = 137UL;
- v142 = 2UL;
- v143 = 5UL;
- v144 = 0UL;
- v145 = 0UL;
- v146 = 16UL;
- v147 = ((u(*)())v139)(v140, v141, v142, v143, v144, v145, v146);
- v147;
- v148 = (u)zas_modrm;
- v149 = *(u*)(vc + 48UL);
- v150 = 137UL;
- v151 = 3UL;
- v152 = 5UL;
- v153 = 0UL;
- v154 = 0UL;
- v155 = 24UL;
- v156 = ((u(*)())v148)(v149, v150, v151, v152, v153, v154, v155);
- v156;
- v157 = (u)zas_modrm;
- v158 = *(u*)(vc + 48UL);
- v159 = 137UL;
- v160 = 6UL;
- v161 = 5UL;
- v162 = 0UL;
- v163 = 0UL;
- v164 = 48UL;
- v165 = ((u(*)())v157)(v158, v159, v160, v161, v162, v163, v164);
- v165;
- v166 = (u)zas_modrm;
- v167 = *(u*)(vc + 48UL);
- v168 = 137UL;
- v169 = 7UL;
- v170 = 5UL;
- v171 = 0UL;
- v172 = 0UL;
- v173 = 56UL;
- v174 = ((u(*)())v166)(v167, v168, v169, v170, v171, v172, v173);
- v174;
- v175 = (u)zas_modrm;
- v176 = *(u*)(vc + 48UL);
- v177 = 137UL;
- v178 = 8UL;
- v179 = 5UL;
- v180 = 0UL;
- v181 = 0UL;
- v182 = 64UL;
- v183 = ((u(*)())v175)(v176, v177, v178, v179, v180, v181, v182);
- v183;
- v184 = (u)zas_modrm;
- v185 = *(u*)(vc + 48UL);
- v186 = 137UL;
- v187 = 9UL;
- v188 = 5UL;
- v189 = 0UL;
- v190 = 0UL;
- v191 = 72UL;
- v192 = ((u(*)())v184)(v185, v186, v187, v188, v189, v190, v191);
- v192;
- v193 = (u)zas_modrm;
- v194 = *(u*)(vc + 48UL);
- v195 = 137UL;
- v196 = 10UL;
- v197 = 5UL;
- v198 = 0UL;
- v199 = 0UL;
- v200 = 80UL;
- v201 = ((u(*)())v193)(v194, v195, v196, v197, v198, v199, v200);
- v201;
- v202 = (u)zas_modrm;
- v203 = *(u*)(vc + 48UL);
- v204 = 137UL;
- v205 = 11UL;
- v206 = 5UL;
- v207 = 0UL;
- v208 = 0UL;
- v209 = 88UL;
- v210 = ((u(*)())v202)(v203, v204, v205, v206, v207, v208, v209);
- v210;
- v211 = (u)zas_modrm;
- v212 = *(u*)(vc + 48UL);
- v213 = 137UL;
- v214 = 12UL;
- v215 = 5UL;
- v216 = 0UL;
- v217 = 0UL;
- v218 = 96UL;
- v219 = ((u(*)())v211)(v212, v213, v214, v215, v216, v217, v218);
- v219;
- v220 = (u)zas_modrm;
- v221 = *(u*)(vc + 48UL);
- v222 = 137UL;
- v223 = 13UL;
- v224 = 5UL;
- v225 = 0UL;
- v226 = 0UL;
- v227 = 104UL;
- v228 = ((u(*)())v220)(v221, v222, v223, v224, v225, v226, v227);
- v228;
- v229 = (u)zas_modrm;
- v230 = *(u*)(vc + 48UL);
- v231 = 137UL;
- v232 = 14UL;
- v233 = 5UL;
- v234 = 0UL;
- v235 = 0UL;
- v236 = 112UL;
- v237 = ((u(*)())v229)(v230, v231, v232, v233, v234, v235, v236);
- v237;
- v238 = (u)zas_modrm;
- v239 = *(u*)(vc + 48UL);
- v240 = 137UL;
- v241 = 15UL;
- v242 = 5UL;
- v243 = 0UL;
- v244 = 0UL;
- v245 = 120UL;
- v246 = ((u(*)())v238)(v239, v240, v241, v242, v243, v244, v245);
- v246;
- v247 = (u)zas_modrm;
- v248 = *(u*)(vc + 48UL);
- v249 = 139UL;
- v250 = 0UL;
- v251 = 5UL;
- v252 = 0UL;
- v253 = 0UL;
- v254 = 176UL + 0UL;
- v255 = ((u(*)())v247)(v248, v249, v250, v251, v252, v253, v254);
- v255;
- v256 = (u)zas_modrm;
- v257 = *(u*)(vc + 48UL);
- v258 = 137UL;
- v259 = 0UL;
- v260 = 5UL;
- v261 = 0UL;
- v262 = 0UL;
- v263 = 160UL;
- v264 = ((u(*)())v256)(v257, v258, v259, v260, v261, v262, v263);
- v264;
- v265 = (u)zas_modrm;
- v266 = *(u*)(vc + 48UL);
- v267 = 139UL;
- v268 = 0UL;
- v269 = 5UL;
- v270 = 0UL;
- v271 = 0UL;
- v272 = 176UL + 8UL;
- v273 = ((u(*)())v265)(v266, v267, v268, v269, v270, v271, v272);
- v273;
- v274 = (u)zas_modrm;
- v275 = *(u*)(vc + 48UL);
- v276 = 137UL;
- v277 = 0UL;
- v278 = 5UL;
- v279 = 0UL;
- v280 = 0UL;
- v281 = 168UL;
- v282 = ((u(*)())v274)(v275, v276, v277, v278, v279, v280, v281);
- v282;
- v283 = (u)zas_modrm;
- v284 = *(u*)(vc + 48UL);
- v285 = 139UL;
- v286 = 0UL;
- v287 = 5UL;
- v288 = 0UL;
- v289 = 0UL;
- v290 = 176UL + 16UL;
- v291 = ((u(*)())v283)(v284, v285, v286, v287, v288, v289, v290);
- v291;
- v292 = (u)zas_modrm;
- v293 = *(u*)(vc + 48UL);
- v294 = 137UL;
- v295 = 0UL;
- v296 = 5UL;
- v297 = 0UL;
- v298 = 0UL;
- v299 = 128UL;
- v300 = ((u(*)())v292)(v293, v294, v295, v296, v297, v298, v299);
- v300;
- v301 = (u)zas_modrm;
- v302 = *(u*)(vc + 48UL);
- v303 = 139UL;
- v304 = 0UL;
- v305 = 5UL;
- v306 = 0UL;
- v307 = 0UL;
- v308 = 176UL + 24UL;
- v309 = ((u(*)())v301)(v302, v303, v304, v305, v306, v307, v308);
- v309;
- v310 = (u)zas_modrm;
- v311 = *(u*)(vc + 48UL);
- v312 = 137UL;
- v313 = 0UL;
- v314 = 5UL;
- v315 = 0UL;
- v316 = 0UL;
- v317 = 144UL;
- v318 = ((u(*)())v310)(v311, v312, v313, v314, v315, v316, v317);
- v318;
- v319 = (u)zas_modrm;
- v320 = *(u*)(vc + 48UL);
- v321 = 139UL;
- v322 = 0UL;
- v323 = 5UL;
- v324 = 0UL;
- v325 = 0UL;
- v326 = 176UL + 32UL;
- v327 = ((u(*)())v319)(v320, v321, v322, v323, v324, v325, v326);
- v327;
- v328 = (u)zas_modrm;
- v329 = *(u*)(vc + 48UL);
- v330 = 137UL;
- v331 = 0UL;
- v332 = 5UL;
- v333 = 0UL;
- v334 = 0UL;
- v335 = 136UL;
- v336 = ((u(*)())v328)(v329, v330, v331, v332, v333, v334, v335);
- v336;
- v337 = (u)zas_modrm;
- v338 = *(u*)(vc + 48UL);
- v339 = 139UL;
- v340 = 0UL;
- v341 = 5UL;
- v342 = 0UL;
- v343 = 0UL;
- v344 = 176UL + 40UL;
- v345 = ((u(*)())v337)(v338, v339, v340, v341, v342, v343, v344);
- v345;
- v346 = (u)zas_modrm;
- v347 = *(u*)(vc + 48UL);
- v348 = 137UL;
- v349 = 0UL;
- v350 = 5UL;
- v351 = 0UL;
- v352 = 0UL;
- v353 = 32UL;
- v354 = ((u(*)())v346)(v347, v348, v349, v350, v351, v352, v353);
- v354;
- v355 = (u)zas_modrm;
- v356 = *(u*)(vc + 48UL);
- v357 = 139UL;
- v358 = 0UL;
- v359 = 5UL;
- v360 = 0UL;
- v361 = 0UL;
- v362 = 176UL + 48UL;
- v363 = ((u(*)())v355)(v356, v357, v358, v359, v360, v361, v362);
- v363;
- v364 = (u)zas_modrm;
- v365 = *(u*)(vc + 48UL);
- v366 = 137UL;
- v367 = 0UL;
- v368 = 5UL;
- v369 = 0UL;
- v370 = 0UL;
- v371 = 152UL;
- v372 = ((u(*)())v364)(v365, v366, v367, v368, v369, v370, v371);
- v372;
- v373 = (u)zas_modrr;
- v374 = *(u*)(vc + 48UL);
- v375 = 139UL;
- v376 = 7UL;
- v377 = 5UL;
- v378 = ((u(*)())v373)(v374, v375, v376, v377);
- v378;
- v379 = (u)zfind;
- v380 = vc;
- v381 = (u)"_isr";
- v382 = 0UL;
- v383 = 1UL;
- v384 = ((u(*)())v379)(v380, v381, v382, v383);
- vd = v384;
- if (!*(u*)(vd + 72UL)) goto b113;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b113;
- v385 = 1UL;
-b115: if (!v385) goto b111;
- v386 = (u)zas_jmp;
- v387 = *(u*)(vc + 48UL);
- v388 = 232UL;
- v389 = *(u*)(vd + 88UL);
- v390 = ((u(*)())v386)(v387, v388, v389);
- v390;
-b109: v391 = (u)zas_modrm;
- v392 = *(u*)(vc + 48UL);
- v393 = 139UL;
- v394 = 0UL;
- v395 = 5UL;
- v396 = 0UL;
- v397 = 0UL;
- v398 = 128UL;
- v399 = ((u(*)())v391)(v392, v393, v394, v395, v396, v397, v398);
- v399;
- v400 = (u)zas_modrm;
- v401 = *(u*)(vc + 48UL);
- v402 = 137UL;
- v403 = 0UL;
- v404 = 5UL;
- v405 = 0UL;
- v406 = 0UL;
- v407 = 176UL + 16UL;
- v408 = ((u(*)())v400)(v401, v402, v403, v404, v405, v406, v407);
- v408;
- v409 = (u)zas_modrm;
- v410 = *(u*)(vc + 48UL);
- v411 = 139UL;
- v412 = 0UL;
- v413 = 5UL;
- v414 = 0UL;
- v415 = 0UL;
- v416 = 144UL;
- v417 = ((u(*)())v409)(v410, v411, v412, v413, v414, v415, v416);
- v417;
- v418 = (u)zas_modrm;
- v419 = *(u*)(vc + 48UL);
- v420 = 137UL;
- v421 = 0UL;
- v422 = 5UL;
- v423 = 0UL;
- v424 = 0UL;
- v425 = 176UL + 24UL;
- v426 = ((u(*)())v418)(v419, v420, v421, v422, v423, v424, v425);
- v426;
- v427 = (u)zas_modrm;
- v428 = *(u*)(vc + 48UL);
- v429 = 139UL;
- v430 = 0UL;
- v431 = 5UL;
- v432 = 0UL;
- v433 = 0UL;
- v434 = 136UL;
- v435 = ((u(*)())v427)(v428, v429, v430, v431, v432, v433, v434);
- v435;
- v436 = (u)zas_modrm;
- v437 = *(u*)(vc + 48UL);
- v438 = 137UL;
- v439 = 0UL;
- v440 = 5UL;
- v441 = 0UL;
- v442 = 0UL;
- v443 = 176UL + 32UL;
- v444 = ((u(*)())v436)(v437, v438, v439, v440, v441, v442, v443);
- v444;
- v445 = (u)zas_modrm;
- v446 = *(u*)(vc + 48UL);
- v447 = 139UL;
- v448 = 0UL;
- v449 = 5UL;
- v450 = 0UL;
- v451 = 0UL;
- v452 = 32UL;
- v453 = ((u(*)())v445)(v446, v447, v448, v449, v450, v451, v452);
- v453;
- v454 = (u)zas_modrm;
- v455 = *(u*)(vc + 48UL);
- v456 = 137UL;
- v457 = 0UL;
- v458 = 5UL;
- v459 = 0UL;
- v460 = 0UL;
- v461 = 176UL + 40UL;
- v462 = ((u(*)())v454)(v455, v456, v457, v458, v459, v460, v461);
- v462;
- v463 = (u)zas_modrm;
- v464 = *(u*)(vc + 48UL);
- v465 = 139UL;
- v466 = 0UL;
- v467 = 5UL;
- v468 = 0UL;
- v469 = 0UL;
- v470 = 152UL;
- v471 = ((u(*)())v463)(v464, v465, v466, v467, v468, v469, v470);
- v471;
- v472 = (u)zas_modrm;
- v473 = *(u*)(vc + 48UL);
- v474 = 137UL;
- v475 = 0UL;
- v476 = 5UL;
- v477 = 0UL;
- v478 = 0UL;
- v479 = 176UL + 48UL;
- v480 = ((u(*)())v472)(v473, v474, v475, v476, v477, v478, v479);
- v480;
- v481 = (u)zas_modrm;
- v482 = *(u*)(vc + 48UL);
- v483 = 139UL;
- v484 = 0UL;
- v485 = 5UL;
- v486 = 0UL;
- v487 = 0UL;
- v488 = 0UL;
- v489 = ((u(*)())v481)(v482, v483, v484, v485, v486, v487, v488);
- v489;
- v490 = (u)zas_modrm;
- v491 = *(u*)(vc + 48UL);
- v492 = 139UL;
- v493 = 1UL;
- v494 = 5UL;
- v495 = 0UL;
- v496 = 0UL;
- v497 = 8UL;
- v498 = ((u(*)())v490)(v491, v492, v493, v494, v495, v496, v497);
- v498;
- v499 = (u)zas_modrm;
- v500 = *(u*)(vc + 48UL);
- v501 = 139UL;
- v502 = 2UL;
- v503 = 5UL;
- v504 = 0UL;
- v505 = 0UL;
- v506 = 16UL;
- v507 = ((u(*)())v499)(v500, v501, v502, v503, v504, v505, v506);
- v507;
- v508 = (u)zas_modrm;
- v509 = *(u*)(vc + 48UL);
- v510 = 139UL;
- v511 = 3UL;
- v512 = 5UL;
- v513 = 0UL;
- v514 = 0UL;
- v515 = 24UL;
- v516 = ((u(*)())v508)(v509, v510, v511, v512, v513, v514, v515);
- v516;
- v517 = (u)zas_modrm;
- v518 = *(u*)(vc + 48UL);
- v519 = 139UL;
- v520 = 6UL;
- v521 = 5UL;
- v522 = 0UL;
- v523 = 0UL;
- v524 = 48UL;
- v525 = ((u(*)())v517)(v518, v519, v520, v521, v522, v523, v524);
- v525;
- v526 = (u)zas_modrm;
- v527 = *(u*)(vc + 48UL);
- v528 = 139UL;
- v529 = 7UL;
- v530 = 5UL;
- v531 = 0UL;
- v532 = 0UL;
- v533 = 56UL;
- v534 = ((u(*)())v526)(v527, v528, v529, v530, v531, v532, v533);
- v534;
- v535 = (u)zas_modrm;
- v536 = *(u*)(vc + 48UL);
- v537 = 139UL;
- v538 = 8UL;
- v539 = 5UL;
- v540 = 0UL;
- v541 = 0UL;
- v542 = 64UL;
- v543 = ((u(*)())v535)(v536, v537, v538, v539, v540, v541, v542);
- v543;
- v544 = (u)zas_modrm;
- v545 = *(u*)(vc + 48UL);
- v546 = 139UL;
- v547 = 9UL;
- v548 = 5UL;
- v549 = 0UL;
- v550 = 0UL;
- v551 = 72UL;
- v552 = ((u(*)())v544)(v545, v546, v547, v548, v549, v550, v551);
- v552;
- v553 = (u)zas_modrm;
- v554 = *(u*)(vc + 48UL);
- v555 = 139UL;
- v556 = 10UL;
- v557 = 5UL;
- v558 = 0UL;
- v559 = 0UL;
- v560 = 80UL;
- v561 = ((u(*)())v553)(v554, v555, v556, v557, v558, v559, v560);
- v561;
- v562 = (u)zas_modrm;
- v563 = *(u*)(vc + 48UL);
- v564 = 139UL;
- v565 = 11UL;
- v566 = 5UL;
- v567 = 0UL;
- v568 = 0UL;
- v569 = 88UL;
- v570 = ((u(*)())v562)(v563, v564, v565, v566, v567, v568, v569);
- v570;
- v571 = (u)zas_modrm;
- v572 = *(u*)(vc + 48UL);
- v573 = 139UL;
- v574 = 12UL;
- v575 = 5UL;
- v576 = 0UL;
- v577 = 0UL;
- v578 = 96UL;
- v579 = ((u(*)())v571)(v572, v573, v574, v575, v576, v577, v578);
- v579;
- v580 = (u)zas_modrm;
- v581 = *(u*)(vc + 48UL);
- v582 = 139UL;
- v583 = 13UL;
- v584 = 5UL;
- v585 = 0UL;
- v586 = 0UL;
- v587 = 104UL;
- v588 = ((u(*)())v580)(v581, v582, v583, v584, v585, v586, v587);
- v588;
- v589 = (u)zas_modrm;
- v590 = *(u*)(vc + 48UL);
- v591 = 139UL;
- v592 = 14UL;
- v593 = 5UL;
- v594 = 0UL;
- v595 = 0UL;
- v596 = 112UL;
- v597 = ((u(*)())v589)(v590, v591, v592, v593, v594, v595, v596);
- v597;
- v598 = (u)zas_modrm;
- v599 = *(u*)(vc + 48UL);
- v600 = 139UL;
- v601 = 15UL;
- v602 = 5UL;
- v603 = 0UL;
- v604 = 0UL;
- v605 = 120UL;
- v606 = ((u(*)())v598)(v599, v600, v601, v602, v603, v604, v605);
- v606;
- v607 = (u)zas_modrm;
- v608 = *(u*)(vc + 48UL);
- v609 = 139UL;
- v610 = 5UL;
- v611 = 5UL;
- v612 = 0UL;
- v613 = 0UL;
- v614 = 40UL;
- v615 = ((u(*)())v607)(v608, v609, v610, v611, v612, v613, v614);
- v615;
- v616 = (u)zas_modri;
- v617 = *(u*)(vc + 48UL);
- v618 = 129UL;
- v619 = 4UL;
- v620 = 176UL + 2UL * 8UL;
- v621 = ((u(*)())v616)(v617, v618, v619, v620);
- v621;
- v622 = (u)zas_op;
- v623 = *(u*)(vc + 48UL);
- v624 = 18639UL;
- v625 = ((u(*)())v622)(v623, v624);
- v625;
- return 0UL;
-b111: goto b109;
-b113: v385 = 0UL;
- goto b115;
-b6: v7 = (u)zreserve;
- v8 = *(u*)(vc + 48UL);
- v9 = 16UL;
- v10 = ((u(*)())v7)(v8, v9);
- v10;
- if (vi != 8UL) goto b44;
- v19 = 1UL;
-b46: if (!v19) goto b40;
- v18 = 1UL;
-b42: if (!v18) goto b36;
- v17 = 1UL;
-b38: if (!v17) goto b32;
- v16 = 1UL;
-b34: if (!v16) goto b28;
- v15 = 1UL;
-b30: if (!v15) goto b24;
- v14 = 1UL;
-b26: if (!v14) goto b20;
- v13 = 1UL;
-b22: if (!v13) goto b16;
- v12 = 1UL;
-b18: if (!v12) goto b12;
- v11 = 1UL;
-b14: if (!v11) goto b10;
- v20 = (u)zas_emit;
- v21 = *(u*)(vc + 48UL);
- v22 = 144UL;
- v23 = ((u(*)())v20)(v21, v22);
- v23;
- v24 = (u)zas_emit;
- v25 = *(u*)(vc + 48UL);
- v26 = 144UL;
- v27 = ((u(*)())v24)(v25, v26);
- v27;
-b8: v36 = (u)zas_emit;
- v37 = *(u*)(vc + 48UL);
- v38 = 104UL;
- v39 = ((u(*)())v36)(v37, v38);
- v39;
- v40 = (u)zas_emit;
- v41 = *(u*)(vc + 48UL);
- v42 = vi;
- v43 = ((u(*)())v40)(v41, v42);
- v43;
- v44 = (u)zas_emit;
- v45 = *(u*)(vc + 48UL);
- v46 = 0UL;
- v47 = ((u(*)())v44)(v45, v46);
- v47;
- v48 = (u)zas_emit;
- v49 = *(u*)(vc + 48UL);
- v50 = 0UL;
- v51 = ((u(*)())v48)(v49, v50);
- v51;
- v52 = (u)zas_emit;
- v53 = *(u*)(vc + 48UL);
- v54 = 0UL;
- v55 = ((u(*)())v52)(v53, v54);
- v55;
- v56 = (u)zas_emit;
- v57 = *(u*)(vc + 48UL);
- v58 = 233UL;
- v59 = ((u(*)())v56)(v57, v58);
- v59;
- v60 = (u)zas_emit;
- v61 = *(u*)(vc + 48UL);
- v62 = 0UL;
- v63 = ((u(*)())v60)(v61, v62);
- v63;
- v64 = (u)zas_emit;
- v65 = *(u*)(vc + 48UL);
- v66 = 0UL;
- v67 = ((u(*)())v64)(v65, v66);
- v67;
- v68 = (u)zas_emit;
- v69 = *(u*)(vc + 48UL);
- v70 = 0UL;
- v71 = ((u(*)())v68)(v69, v70);
- v71;
- v72 = (u)zas_emit;
- v73 = *(u*)(vc + 48UL);
- v74 = 0UL;
- v75 = ((u(*)())v72)(v73, v74);
- v75;
- v76 = (u)zaddfixup;
- v77 = *(u*)(vc + 48UL);
- v78 = vout;
- v79 = ((u(*)())v76)(v77, v78);
- v79;
- v80 = (u)zas_emit;
- v81 = *(u*)(vc + 48UL);
- v82 = 144UL;
- v83 = ((u(*)())v80)(v81, v82);
- v83;
- v84 = (u)zas_emit;
- v85 = *(u*)(vc + 48UL);
- v86 = 144UL;
- v87 = ((u(*)())v84)(v85, v86);
- v87;
- v88 = (u)zas_emit;
- v89 = *(u*)(vc + 48UL);
- v90 = 144UL;
- v91 = ((u(*)())v88)(v89, v90);
- v91;
- v92 = (u)zas_emit;
- v93 = *(u*)(vc + 48UL);
- v94 = 144UL;
- v95 = ((u(*)())v92)(v93, v94);
- v95;
- vi = vi + 1UL;
- goto b2;
-b10: v28 = (u)zas_emit;
- v29 = *(u*)(vc + 48UL);
- v30 = 106UL;
- v31 = ((u(*)())v28)(v29, v30);
- v31;
- v32 = (u)zas_emit;
- v33 = *(u*)(vc + 48UL);
- v34 = 0UL;
- v35 = ((u(*)())v32)(v33, v34);
- v35;
- goto b8;
-b12: if (vi != 30UL) goto b55;
- v11 = 1UL;
- goto b14;
-b55: v11 = 0UL;
- goto b14;
-b16: if (vi != 29UL) goto b54;
- v12 = 1UL;
- goto b18;
-b54: v12 = 0UL;
- goto b18;
-b20: if (vi != 21UL) goto b53;
- v13 = 1UL;
- goto b22;
-b53: v13 = 0UL;
- goto b22;
-b24: if (vi != 17UL) goto b52;
- v14 = 1UL;
- goto b26;
-b52: v14 = 0UL;
- goto b26;
-b28: if (vi != 14UL) goto b51;
- v15 = 1UL;
- goto b30;
-b51: v15 = 0UL;
- goto b30;
-b32: if (vi != 13UL) goto b50;
- v16 = 1UL;
- goto b34;
-b50: v16 = 0UL;
- goto b34;
-b36: if (vi != 12UL) goto b49;
- v17 = 1UL;
- goto b38;
-b49: v17 = 0UL;
- goto b38;
-b40: if (vi != 11UL) goto b48;
- v18 = 1UL;
- goto b42;
-b48: v18 = 0UL;
- goto b42;
-b44: if (vi != 10UL) goto b47;
- v19 = 1UL;
- goto b46;
-b47: v19 = 0UL;
- goto b46;
-}
-u zemit_kstart(u vc) {
- u vhang = 0;
- u vdo_iret = 0;
- u vdo_ret = 0;
- u vdone = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- u v134 = 0;
- u v135 = 0;
- u v136 = 0;
- u v137 = 0;
- u v138 = 0;
- u v139 = 0;
- u v140 = 0;
- u v141 = 0;
- u v142 = 0;
- u v143 = 0;
- u v144 = 0;
- u v145 = 0;
- u v146 = 0;
- u v147 = 0;
- u v148 = 0;
- u v149 = 0;
- u v150 = 0;
- u v151 = 0;
- u v152 = 0;
- u v153 = 0;
- u v154 = 0;
- u v155 = 0;
- u v156 = 0;
- u v157 = 0;
- u v158 = 0;
- u v159 = 0;
- u v160 = 0;
- u v161 = 0;
- u v162 = 0;
- u v163 = 0;
- u v164 = 0;
- u v165 = 0;
- u v166 = 0;
- u v167 = 0;
- u v168 = 0;
- u v169 = 0;
- u v170 = 0;
- u v171 = 0;
- u v172 = 0;
- u v173 = 0;
- u v174 = 0;
- u v175 = 0;
- u v176 = 0;
- u v177 = 0;
- u v178 = 0;
- u v179 = 0;
- u v180 = 0;
- u v181 = 0;
- u v182 = 0;
- u v183 = 0;
- u v184 = 0;
- u v185 = 0;
- u v186 = 0;
- u v187 = 0;
- u v188 = 0;
- u v189 = 0;
- u v190 = 0;
- u v191 = 0;
- u v192 = 0;
- u v193 = 0;
- u v194 = 0;
- u v195 = 0;
- u v196 = 0;
- u v197 = 0;
- u v198 = 0;
- u v199 = 0;
- u v200 = 0;
- u v201 = 0;
- u v202 = 0;
- u v203 = 0;
- u v204 = 0;
- u v205 = 0;
- u v206 = 0;
- u v207 = 0;
- u v208 = 0;
- u v209 = 0;
- u v210 = 0;
- u v211 = 0;
- u v212 = 0;
- u v213 = 0;
- u v214 = 0;
- u v215 = 0;
- u v216 = 0;
- u v217 = 0;
- u v218 = 0;
- u v219 = 0;
- u v220 = 0;
- u v221 = 0;
- u v222 = 0;
- u v223 = 0;
- u v224 = 0;
- u v225 = 0;
- u v226 = 0;
- u v227 = 0;
- u v228 = 0;
- u v229 = 0;
- u v230 = 0;
- u v231 = 0;
- u v232 = 0;
- u v233 = 0;
- u v234 = 0;
- u v235 = 0;
- u v236 = 0;
- u v237 = 0;
- u v238 = 0;
- u v239 = 0;
- u v240 = 0;
- u v241 = 0;
- u v242 = 0;
- u v243 = 0;
- u v244 = 0;
- u v245 = 0;
- u v246 = 0;
- u v247 = 0;
- u v248 = 0;
- u v249 = 0;
- u v250 = 0;
- u v251 = 0;
- u v252 = 0;
- u v253 = 0;
- u v254 = 0;
- u v255 = 0;
- u v256 = 0;
- u v257 = 0;
- u v258 = 0;
- u v259 = 0;
- u v260 = 0;
- u v261 = 0;
- u v262 = 0;
- u v263 = 0;
- u v264 = 0;
- u v265 = 0;
- u v266 = 0;
- u v267 = 0;
- u v268 = 0;
- u v269 = 0;
- u v270 = 0;
- u v271 = 0;
- u v272 = 0;
- u v273 = 0;
- u v274 = 0;
- u v275 = 0;
- u v276 = 0;
- u v277 = 0;
- u v278 = 0;
- u v279 = 0;
- u v280 = 0;
- u v281 = 0;
- u v282 = 0;
- u v283 = 0;
- u v284 = 0;
- u v285 = 0;
- u v286 = 0;
- u v287 = 0;
- u v288 = 0;
- u v289 = 0;
- u v290 = 0;
- u v291 = 0;
- u v292 = 0;
- u v293 = 0;
- u v294 = 0;
- u v295 = 0;
- u v296 = 0;
- u v297 = 0;
- u v298 = 0;
- u v299 = 0;
- u v300 = 0;
- u v301 = 0;
- u v302 = 0;
- u v303 = 0;
- u v304 = 0;
- u v305 = 0;
- u v306 = 0;
- u v307 = 0;
- u v308 = 0;
- u v309 = 0;
- u v310 = 0;
- u v311 = 0;
- u v312 = 0;
- u v313 = 0;
- u v314 = 0;
- u v315 = 0;
- u v316 = 0;
- u v317 = 0;
- u v318 = 0;
- u v319 = 0;
- u v320 = 0;
- u v321 = 0;
- u v322 = 0;
- u v323 = 0;
- u v324 = 0;
- u v325 = 0;
- u v326 = 0;
- u v327 = 0;
- u v328 = 0;
- u v329 = 0;
- u v330 = 0;
- u v331 = 0;
- u v332 = 0;
- u v333 = 0;
- u v334 = 0;
- u v335 = 0;
- u v336 = 0;
- u v337 = 0;
- u v338 = 0;
- u v339 = 0;
- u v340 = 0;
- u v341 = 0;
- u v342 = 0;
- u v343 = 0;
- u v344 = 0;
- u v345 = 0;
- u v346 = 0;
- u v347 = 0;
- u v348 = 0;
- u v349 = 0;
- u v350 = 0;
- u v351 = 0;
- u v352 = 0;
- u v353 = 0;
- u v354 = 0;
- u v355 = 0;
- u v356 = 0;
- u v357 = 0;
- u v358 = 0;
- u v359 = 0;
- u v360 = 0;
- u v361 = 0;
- u v362 = 0;
- u v363 = 0;
- u v364 = 0;
- u v365 = 0;
- u v366 = 0;
- u v367 = 0;
- u v368 = 0;
- u v369 = 0;
- u v370 = 0;
- u v371 = 0;
- u v372 = 0;
- u v373 = 0;
- u v374 = 0;
- u v375 = 0;
- u v376 = 0;
- u v377 = 0;
- u v378 = 0;
- u v379 = 0;
- u v380 = 0;
- u v381 = 0;
- u v382 = 0;
- u v383 = 0;
- u v384 = 0;
- u v385 = 0;
- u v386 = 0;
- u v387 = 0;
- u v388 = 0;
- u v389 = 0;
- u v390 = 0;
- u v391 = 0;
- u v392 = 0;
- u v393 = 0;
- u v394 = 0;
- u v395 = 0;
- u v396 = 0;
- u v397 = 0;
- u v398 = 0;
- u v399 = 0;
- u v400 = 0;
- u v401 = 0;
- u v402 = 0;
- u v403 = 0;
- u v404 = 0;
- u v405 = 0;
- u v406 = 0;
- u v407 = 0;
- u v408 = 0;
- u v409 = 0;
- u v410 = 0;
- u v411 = 0;
- u v412 = 0;
- u v413 = 0;
- u v414 = 0;
- u v415 = 0;
- u v416 = 0;
- u v417 = 0;
- u v418 = 0;
- u v419 = 0;
- u v420 = 0;
- u v421 = 0;
- u v422 = 0;
- u v423 = 0;
- u v424 = 0;
- u v425 = 0;
- u v426 = 0;
- u v427 = 0;
- u v428 = 0;
- u v429 = 0;
- u v430 = 0;
- u v431 = 0;
- u v432 = 0;
- u v433 = 0;
- u v434 = 0;
- u v435 = 0;
- u v436 = 0;
- u v437 = 0;
- u v438 = 0;
- u v439 = 0;
- u v440 = 0;
- u v441 = 0;
- u v442 = 0;
- u v443 = 0;
- u v444 = 0;
- u v445 = 0;
- u v446 = 0;
- u v447 = 0;
- u v448 = 0;
- u v449 = 0;
- u v450 = 0;
- u v451 = 0;
- u v452 = 0;
- u v453 = 0;
- u v454 = 0;
- u v455 = 0;
- u v456 = 0;
- u v457 = 0;
- u v458 = 0;
- u v459 = 0;
- u v460 = 0;
- u v461 = 0;
- u v462 = 0;
- u v463 = 0;
- u v464 = 0;
- u v465 = 0;
- u v466 = 0;
- u v467 = 0;
- u v468 = 0;
- u v469 = 0;
- u v470 = 0;
- u v471 = 0;
- u v472 = 0;
- u v473 = 0;
- u v474 = 0;
- u v475 = 0;
- u v476 = 0;
- u v477 = 0;
- u v478 = 0;
- u v479 = 0;
- u v480 = 0;
- u v481 = 0;
- u v482 = 0;
- u v483 = 0;
- u v484 = 0;
- u v485 = 0;
- u v486 = 0;
- u v487 = 0;
- u v488 = 0;
- u v489 = 0;
- u v490 = 0;
- u v491 = 0;
- u v492 = 0;
- u v493 = 0;
- u v494 = 0;
- u v495 = 0;
- u v496 = 0;
- u v497 = 0;
- u v498 = 0;
- u v499 = 0;
- u v500 = 0;
- u v501 = 0;
- u v502 = 0;
- u v503 = 0;
- u v504 = 0;
- u v505 = 0;
- u v506 = 0;
- u v507 = 0;
- u v508 = 0;
- u v509 = 0;
- u v510 = 0;
- u v511 = 0;
- u v512 = 0;
- u v513 = 0;
- u v514 = 0;
- u v515 = 0;
- u v516 = 0;
- u v517 = 0;
- u v518 = 0;
- u v519 = 0;
- u v520 = 0;
- u v521 = 0;
- u v522 = 0;
- u v523 = 0;
- u v524 = 0;
- u v525 = 0;
- u v526 = 0;
- u v527 = 0;
- u v528 = 0;
- u v529 = 0;
- u v530 = 0;
- u v531 = 0;
- u v532 = 0;
- u v533 = 0;
- u v534 = 0;
- u v535 = 0;
- u v536 = 0;
- u v537 = 0;
- u v538 = 0;
- u v539 = 0;
- u v540 = 0;
- u v541 = 0;
- u v542 = 0;
- u v543 = 0;
- u v544 = 0;
- u v545 = 0;
- u v546 = 0;
- u v547 = 0;
- u v548 = 0;
- u v549 = 0;
- u v550 = 0;
- u v551 = 0;
- u v552 = 0;
- u v553 = 0;
- u v554 = 0;
- u v555 = 0;
- u v556 = 0;
- u v557 = 0;
- u v558 = 0;
- u v559 = 0;
- u v560 = 0;
- u v561 = 0;
- u v562 = 0;
- u v563 = 0;
- u v564 = 0;
- u v565 = 0;
- u v566 = 0;
- u v567 = 0;
- u v568 = 0;
- u v569 = 0;
- u v570 = 0;
- u v571 = 0;
- u v572 = 0;
- u v573 = 0;
- u v574 = 0;
- u v575 = 0;
- u v576 = 0;
- u v577 = 0;
- u v578 = 0;
- u v579 = 0;
- u v580 = 0;
- u v581 = 0;
- u v582 = 0;
- u v583 = 0;
- u v584 = 0;
- u v585 = 0;
- u v586 = 0;
- u v587 = 0;
- u v588 = 0;
- u v589 = 0;
- u v590 = 0;
- u v591 = 0;
- u v592 = 0;
- u v593 = 0;
- u v594 = 0;
- u v595 = 0;
- u v596 = 0;
- u v597 = 0;
- u v598 = 0;
- u v599 = 0;
- u v600 = 0;
- u v601 = 0;
- u v602 = 0;
- u v603 = 0;
- u v604 = 0;
- u v605 = 0;
- u v606 = 0;
- u v607 = 0;
- u v608 = 0;
- u v609 = 0;
- u v610 = 0;
- u v611 = 0;
- u v612 = 0;
- u v613 = 0;
- u v614 = 0;
- u v615 = 0;
- u v616 = 0;
- u v617 = 0;
- u v618 = 0;
- u v619 = 0;
- u v620 = 0;
- u v621 = 0;
- u v622 = 0;
- u v623 = 0;
- u v624 = 0;
- *(u*)(vc + 48UL) = 1UL;
- v5 = (u)zmklabel;
+ voffset = 16UL;
+ vi = 0UL;
+b1: if (vi != *(u*)(vic + 136UL)) goto b5;
+ voffset = voffset + 15UL & -16UL;
+ vtotal = voffset;
+ *(u*)(vic + 160UL) = vtotal;
+ v13 = (u)zaarch64_addi;
+ v14 = vc;
+ v15 = 31UL;
+ v16 = 31UL;
+ v17 = -(vtotal);
+ v18 = ((u(*)())(v13))(v14, v15, v16, v17);
+ v18;
+ v19 = (u)zaarch64_str;
+ v20 = vc;
+ v21 = 29UL;
+ v22 = 31UL;
+ v23 = 0UL;
+ v24 = ((u(*)())(v19))(v20, v21, v22, v23);
+ v24;
+ v25 = (u)zaarch64_str;
+ v26 = vc;
+ v27 = 30UL;
+ v28 = 31UL;
+ v29 = 1UL;
+ v30 = ((u(*)())(v25))(v26, v27, v28, v29);
+ v30;
+ v31 = (u)zaarch64_mov;
+ v32 = vc;
+ v33 = 29UL;
+ v34 = 31UL;
+ v35 = ((u(*)())(v31))(v32, v33, v34);
+ v35;
+ v36 = (u)zaarch64_movz;
+ v37 = vc;
+ v38 = 16UL;
+ v39 = 0UL;
+ v40 = 0UL;
+ v41 = ((u(*)())(v36))(v37, v38, v39, v40);
+ v41;
+ voffset = 16UL;
+ vi = 0UL;
+b22: if (vi != *(u*)(vic + 136UL)) goto b26;
+ return 0UL;
+b26: vv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
+ if (!(*(u*)(vv + 48UL))) goto b29;
+ vi = vi + 1UL;
+ goto b22;
+b29: if (!(*(u*)(vv + 24UL))) goto b34;
+ if (*(u*)(*(u*)(vv + 24UL) + 0UL) == 1UL) goto b34;
+ v42 = 1UL;
+b36: if (!(v42)) goto b32;
+ v43 = (u)ztype_sizeof;
+ v44 = *(u*)(vic + 0UL);
+ v45 = *(u*)(vv + 24UL);
+ v46 = ((u(*)())(v43))(v44, v45);
+ vsize = v46;
+b30: vsize = vsize + 7UL & -8UL;
+ if ((s)(vi) >= (s)(*(u*)(vic + 152UL))) goto b42;
+ if ((s)(vi) >= (s)8UL) goto b42;
+ v47 = 1UL;
+b44: if (!(v47)) goto b40;
+ v48 = (u)zaarch64_str;
+ v49 = vc;
+ v50 = vi;
+ v51 = 29UL;
+ v52 = voffset >> 3UL;
+ v53 = ((u(*)())(v48))(v49, v50, v51, v52);
+ v53;
+b38: voffset = voffset + vsize;
+ vi = vi + 1UL;
+ goto b22;
+b40: if ((s)(vi) >= (s)(*(u*)(vic + 152UL))) goto b47;
+ v54 = (u)zaarch64_ldr;
+ v55 = vc;
+ v56 = 17UL;
+ v57 = 29UL;
+ v58 = (vtotal >> 3UL) + (vi - 8UL);
+ v59 = ((u(*)())(v54))(v55, v56, v57, v58);
+ v59;
+ v60 = (u)zaarch64_str;
+ v61 = vc;
+ v62 = 17UL;
+ v63 = 31UL;
+ v64 = voffset >> 3UL;
+ v65 = ((u(*)())(v60))(v61, v62, v63, v64);
+ v65;
+ goto b38;
+b47: vj = 0UL;
+b50: if ((s)(vj) < (s)(vsize)) goto b54;
+ goto b38;
+b54: v66 = (u)zaarch64_str;
+ v67 = vc;
+ v68 = 16UL;
+ v69 = 29UL;
+ v70 = voffset + vj >> 3UL;
+ v71 = ((u(*)())(v66))(v67, v68, v69, v70);
+ v71;
+ vj = vj + 8UL;
+ goto b50;
+b42: v47 = 0UL;
+ goto b44;
+b32: vsize = 8UL;
+ goto b30;
+b34: v42 = 0UL;
+ goto b36;
+b5: vv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
+ if (!(*(u*)(vv + 48UL))) goto b8;
+ vi = vi + 1UL;
+ goto b1;
+b8: if (!(*(u*)(vv + 24UL))) goto b13;
+ if (*(u*)(*(u*)(vv + 24UL) + 0UL) == 1UL) goto b13;
+ v8 = 1UL;
+b15: if (!(v8)) goto b11;
+ v9 = (u)ztype_sizeof;
+ v10 = *(u*)(vic + 0UL);
+ v11 = *(u*)(vv + 24UL);
+ v12 = ((u(*)())(v9))(v10, v11);
+ vsize = v12;
+b9: vsize = vsize + 7UL & -8UL;
+ *(u*)(vv + 40UL) = voffset;
+ voffset = voffset + vsize;
+ vi = vi + 1UL;
+ goto b1;
+b11: vsize = 8UL;
+ goto b9;
+b13: v8 = 0UL;
+ goto b15;
+}
+u zaarch64_pop(u vc, u vrd) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ v2 = (u)zaarch64_ldr;
+ v3 = vc;
+ v4 = vrd;
+ v5 = 31UL;
+ v6 = 0UL;
+ v7 = ((u(*)())(v2))(v3, v4, v5, v6);
+ v7;
+ v8 = (u)zaarch64_addi;
+ v9 = vc;
+ v10 = 31UL;
+ v11 = 31UL;
+ v12 = 16UL;
+ v13 = ((u(*)())(v8))(v9, v10, v11, v12);
+ v13;
+ return 0UL;
+}
+u zaarch64_push(u vc, u vrs) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ v2 = (u)zaarch64_addi;
+ v3 = vc;
+ v4 = 31UL;
+ v5 = 31UL;
+ v6 = -16UL;
+ v7 = ((u(*)())(v2))(v3, v4, v5, v6);
+ v7;
+ v8 = (u)zaarch64_str;
+ v9 = vc;
+ v10 = vrs;
+ v11 = 31UL;
+ v12 = 0UL;
+ v13 = ((u(*)())(v8))(v9, v10, v11, v12);
+ v13;
+ return 0UL;
+}
+u zaarch64_ret(u vc) {
+ u vx = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ vx = 3596551104UL;
+ v2 = (u)zas_emit;
+ v3 = *(u*)(vc + 48UL);
+ v4 = vx;
+ v5 = ((u(*)())(v2))(v3, v4);
+ v5;
+ v6 = (u)zas_emit;
+ v7 = *(u*)(vc + 48UL);
+ v8 = vx >> 8UL;
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+ v10 = (u)zas_emit;
+ v11 = *(u*)(vc + 48UL);
+ v12 = vx >> 16UL;
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+ v14 = (u)zas_emit;
+ v15 = *(u*)(vc + 48UL);
+ v16 = vx >> 24UL;
+ v17 = ((u(*)())(v14))(v15, v16);
+ v17;
+ return 0UL;
+}
+u zaarch64_rsh(u vc, u vrd, u vrn, u vrm) {
+ u vx = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vx = ((2596283392UL + (vrm << 16UL)) + (vrn << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ return 0UL;
+}
+u zaarch64_sdiv(u vc, u vrd, u vrn, u vrm) {
+ u vx = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vx = ((2596277248UL + (vrm << 16UL)) + (vrn << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ return 0UL;
+}
+u zaarch64_str(u vc, u vrd, u vrs, u voff) {
+ u vx = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vx = (((498UL << 23UL) + ((voff & 4095UL) << 10UL)) + (vrs << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ return 0UL;
+}
+u zaarch64_strb(u vc, u vrt, u vrn) {
+ u vx = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ vx = (956301312UL + (vrn << 5UL)) + vrt;
+ v4 = (u)zas_emit;
+ v5 = *(u*)(vc + 48UL);
+ v6 = vx;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zas_emit;
+ v9 = *(u*)(vc + 48UL);
+ v10 = vx >> 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = *(u*)(vc + 48UL);
+ v14 = vx >> 16UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = vx >> 24UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ return 0UL;
+}
+u zaarch64_sub(u vc, u vrd, u vrn, u vrm) {
+ u vx = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vx = ((3405774848UL + (vrm << 16UL)) + (vrn << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ return 0UL;
+}
+u zaarch64_svc(u vc) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ v1 = (u)zas_emit;
+ v2 = *(u*)(vc + 48UL);
+ v3 = 1UL;
+ v4 = ((u(*)())(v1))(v2, v3);
+ v4;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = 0UL;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = 0UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = 212UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ return 0UL;
+}
+u zaarch64_udf(u vc) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ v1 = (u)zas_emit;
+ v2 = *(u*)(vc + 48UL);
+ v3 = 0UL;
+ v4 = ((u(*)())(v1))(v2, v3);
+ v4;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = 0UL;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = 0UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = 0UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ return 0UL;
+}
+u zaarch64_xor(u vc, u vrd, u vrn, u vrm) {
+ u vx = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vx = ((3388997632UL + (vrm << 16UL)) + (vrn << 5UL)) + vrd;
+ v5 = (u)zas_emit;
+ v6 = *(u*)(vc + 48UL);
+ v7 = vx;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zas_emit;
+ v10 = *(u*)(vc + 48UL);
+ v11 = vx >> 8UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zas_emit;
+ v14 = *(u*)(vc + 48UL);
+ v15 = vx >> 16UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zas_emit;
+ v18 = *(u*)(vc + 48UL);
+ v19 = vx >> 24UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ return 0UL;
+}
+u zadd_section(u vc, u vname, u vtype) {
+ u vs = 0;
+ u vn = 0;
+ u vend = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ vend = *(u*)(vc + 24UL);
+ v6 = (u)zemit_align;
+ v7 = vc;
+ v8 = 16UL;
+ v9 = 0UL;
+ v10 = ((u(*)())(v6))(v7, v8, v9);
+ v10;
+ v11 = (u)zalloc;
+ v12 = *(u*)(vc + 0UL);
+ v13 = 72UL;
+ v14 = ((u(*)())(v11))(v12, v13);
+ vs = v14;
+ *(u*)(vs + 0UL) = 0UL;
+ *(u*)(vs + 8UL) = vname;
+ *(u*)(vs + 16UL) = *(u*)(vc + 24UL);
+ *(u*)(vs + 24UL) = *(u*)(vc + 24UL);
+ *(u*)(vs + 32UL) = *(u*)(vc + 72UL);
+ *(u*)(vs + 48UL) = vtype;
+ *(u*)(vs + 56UL) = 0UL;
+ *(u*)(vs + 64UL) = 0UL;
+ vn = *(u*)(vc + 64UL);
+ if (!(vn)) goto b5;
+b6: if (!(*(u*)(vn + 0UL))) goto b12;
+ v15 = 0UL;
+b13: if (!(v15)) goto b10;
+ *(u*)(vn + 24UL) = vend;
+ *(u*)(vn + 0UL) = vs;
+b3: *(u*)(vc + 72UL) = *(u*)(vc + 72UL) + 1UL;
+ return 0UL;
+b10: vn = *(u*)(vn + 0UL);
+ goto b6;
+b12: v15 = 1UL;
+ goto b13;
+b5: *(u*)(vc + 64UL) = vs;
+ goto b3;
+}
+u zadd_symbol(u vc, u vname, u vl) {
+ u vs = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ v4 = (u)zalloc;
+ v5 = *(u*)(vc + 0UL);
+ v6 = 32UL;
+ v7 = ((u(*)())(v4))(v5, v6);
+ vs = v7;
+ *(u*)(vs + 0UL) = *(u*)(vc + 56UL);
+ *(u*)(vs + 8UL) = vname;
+ *(u*)(vs + 16UL) = vl;
+ *(u*)(vc + 56UL) = vs;
+ return 0UL;
+}
+u zaddfixup(u vc, u vl, u vkind) {
+ u vf = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ v4 = (u)zalloc;
+ v5 = *(u*)(vc + 0UL);
+ v6 = 48UL;
+ v7 = ((u(*)())(v4))(v5, v6);
+ vf = v7;
+ *(u*)(vf + 16UL) = vl;
+ *(u*)(vf + 0UL) = vkind;
+ *(u*)(vf + 8UL) = *(u*)(vl + 0UL);
+ *(u*)(vf + 24UL) = *(u*)(*(u*)(vc + 40UL) + 8UL) + *(u*)(*(u*)(vc + 40UL) + 16UL) * 1UL;
+ *(u*)(vf + 32UL) = *(u*)(*(u*)(vc + 40UL) + 16UL);
+ *(u*)(vf + 40UL) = *(u*)(vc + 24UL);
+ *(u*)(vl + 0UL) = vf;
+ if (!(*(u*)(vl + 16UL))) goto b4;
+ v8 = (u)zfixup;
+ v9 = vc;
+ v10 = vf;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+b2: return 0UL;
+b4: goto b2;
+}
+u zalloc(u vc, u vsize) {
+ u vpage = 0;
+ u vmret = 0;
+ u vret = 0;
+ u vpsize = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ if ((s)(vsize) >= (s)0UL) goto b3;
+ v6 = (u)zdie;
+ v7 = (u)"invalid alloc";
+ v8 = ((u(*)())(v6))(v7);
+ v8;
+b1: if (vsize != 0UL) goto b7;
+ return 0UL;
+b7: if ((s)(vsize) < (s)2048UL) goto b10;
+ vsize = vsize + 4095UL;
+ vsize = vsize & ~4095UL;
+ v9 = (u)zmmap;
+ v10 = 0UL;
+ v11 = vsize;
+ v12 = 1UL | 2UL;
+ v13 = 2UL | 32UL;
+ v14 = -1UL;
+ v15 = 0UL;
+ v16 = ((u(*)())(v9))(v10, v11, v12, v13, v14, v15);
+ vmret = v16;
+ if (vmret != -1UL) goto b14;
+ v17 = (u)zdie;
+ v18 = (u)"out of memory";
+ v19 = ((u(*)())(v17))(v18);
+ v19;
+b12: vret = vmret;
+ v20 = (u)zassert_zero;
+ v21 = vret;
+ v22 = vsize;
+ v23 = ((u(*)())(v20))(v21, v22);
+ v23;
+ return vret;
+b14: goto b12;
+b10: vpage = *(u*)(vc + 0UL);
+ if (!(vpage)) goto b19;
+ if ((s)(vsize) > (s)(*(u*)(vpage + 16UL) - *(u*)(vpage + 8UL))) goto b22;
+ vmret = *(u*)(vpage + 0UL) + *(u*)(vpage + 8UL);
+ *(u*)(vpage + 8UL) = *(u*)(vpage + 8UL) + vsize;
+ vret = vmret;
+ v24 = (u)zassert_zero;
+ v25 = vret;
+ v26 = vsize;
+ v27 = ((u(*)())(v24))(v25, v26);
+ v27;
+ return vret;
+b22:b17: vpsize = 64UL * 1024UL;
+ v28 = (u)zmmap;
+ v29 = 0UL;
+ v30 = vpsize;
+ v31 = 1UL | 2UL;
+ v32 = 2UL | 32UL;
+ v33 = -1UL;
+ v34 = 0UL;
+ v35 = ((u(*)())(v28))(v29, v30, v31, v32, v33, v34);
+ vmret = v35;
+ if (vmret != -1UL) goto b27;
+ v36 = (u)zdie;
+ v37 = (u)"out of memory";
+ v38 = ((u(*)())(v36))(v37);
+ v38;
+b25: vpage = vmret;
+ *(u*)(vpage + 0UL) = vpage + 1UL * 24UL;
+ vret = *(u*)(vpage + 0UL);
+ *(u*)(vpage + 16UL) = vpsize - 24UL;
+ *(u*)(vpage + 8UL) = vsize;
+ *(u*)(vc + 0UL) = vpage;
+ v39 = (u)zassert_zero;
+ v40 = vret;
+ v41 = vsize;
+ v42 = ((u(*)())(v39))(v40, v41);
+ v42;
+ return vret;
+b27: goto b25;
+b19: goto b17;
+b3: goto b1;
+}
+u zargs_to_ir(u vic, u vn) {
+ u vname = 0;
+ u vt = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+b1: if (!(vn)) goto b7;
+ v4 = 0UL;
+b8: if (!(v4)) goto b5;
+ return 0UL;
+b5: vname = *(u*)(*(u*)(*(u*)(vn + 8UL) + 8UL) + 56UL);
+ v5 = (u)zprototype;
+ v6 = *(u*)(vic + 0UL);
+ v7 = *(u*)(*(u*)(vn + 8UL) + 16UL);
+ v8 = ((u(*)())(v5))(v6, v7);
+ vt = v8;
+ v9 = (u)ziraddarg;
+ v10 = vic;
+ v11 = vname;
+ v12 = vt;
+ v13 = ((u(*)())(v9))(v10, v11, v12);
+ v13;
+ vn = *(u*)(vn + 16UL);
+ goto b1;
+b7: v4 = 1UL;
+ goto b8;
+}
+u zas_blob(u vc, u vs, u vslen) {
+ u vb = 0;
+ u vlink = 0;
+ u vdir = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ vlink = vc + 120UL;
+b1: vb = *(u*)(vlink);
+ if (!(vb)) goto b7;
+ v6 = 0UL;
+b8: if (!(v6)) goto b5;
+ v22 = (u)zalloc;
+ v23 = *(u*)(vc + 0UL);
+ v24 = 40UL;
+ v25 = ((u(*)())(v22))(v23, v24);
+ vb = v25;
+ v26 = (u)zmklabel;
+ v27 = vc;
+ v28 = ((u(*)())(v26))(v27);
+ *(u*)(vb + 16UL) = v28;
+ v29 = (u)zalloc;
+ v30 = *(u*)(vc + 0UL);
+ v31 = vslen;
+ v32 = ((u(*)())(v29))(v30, v31);
+ *(u*)(vb + 24UL) = v32;
+ *(u*)(vb + 32UL) = vslen;
+ v33 = (u)zmemcpy;
+ v34 = *(u*)(vb + 24UL);
+ v35 = vs;
+ v36 = vslen;
+ v37 = ((u(*)())(v33))(v34, v35, v36);
+ v37;
+ *(u*)(vlink) = vb;
+ return *(u*)(vb + 16UL);
+b5: if ((s)(*(u*)(vb + 32UL)) >= (s)(vslen)) goto b11;
+ v7 = (u)zmemcmp;
+ v8 = *(u*)(vb + 24UL);
+ v9 = vs;
+ v10 = *(u*)(vb + 32UL);
+ v11 = ((u(*)())(v7))(v8, v9, v10);
+ vdir = v11;
+ if (vdir != 0UL) goto b15;
+ vdir = -1UL;
+b13:b9: if (vdir != 0UL) goto b25;
+ return *(u*)(vb + 16UL);
+b25: if ((s)(vdir) <= (s)0UL) goto b27;
+ vlink = vb + 0UL;
+b23: goto b1;
+b27: vlink = vb + 8UL;
+ goto b23;
+b15: goto b13;
+b11: if ((s)(*(u*)(vb + 32UL)) <= (s)(vslen)) goto b17;
+ v12 = (u)zmemcmp;
+ v13 = *(u*)(vb + 24UL);
+ v14 = vs;
+ v15 = vslen;
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ vdir = v16;
+ if (vdir != 0UL) goto b21;
+ vdir = 1UL;
+b19: goto b9;
+b21: goto b19;
+b17: v17 = (u)zmemcmp;
+ v18 = *(u*)(vb + 24UL);
+ v19 = vs;
+ v20 = vslen;
+ v21 = ((u(*)())(v17))(v18, v19, v20);
+ vdir = v21;
+ goto b9;
+b7: v6 = 1UL;
+ goto b8;
+}
+u zas_emit(u va, u vb) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ v2 = (u)zemit;
+ v3 = va;
+ v4 = vb;
+ v5 = ((u(*)())(v2))(v3, v4);
+ v5;
+ return 0UL;
+}
+u zassert(u vx, u vmsg) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ if (!(vx)) goto b5;
+ v2 = 0UL;
+b6: if (!(v2)) goto b3;
+ v3 = (u)zdie;
+ v4 = vmsg;
+ v5 = ((u(*)())(v3))(v4);
+ v5;
+b1: return 0UL;
+b3: goto b1;
+b5: v2 = 1UL;
+ goto b6;
+}
+u zassert_zero(u vb, u vsize) {
+ u vi = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ vi = 0UL;
+b1: if (vi != vsize) goto b5;
+ return 0UL;
+b5: if (!((u)*(b*)(vb + vi * 1UL))) goto b8;
+ v3 = (u)zfxxd;
+ v4 = 0UL;
+ v5 = vb;
+ v6 = vsize;
+ v7 = ((u(*)())(v3))(v4, v5, v6);
+ v7;
+ v8 = (u)zdie;
+ v9 = (u)"HEAP CORRUPTION";
+ v10 = ((u(*)())(v8))(v9);
+ v10;
+b6: vi = vi + 1UL;
+ goto b1;
+b8: goto b6;
+}
+u zcall_check(u vc, u vn) {
+ u vresult = 0;
+ u vret = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ vresult = 0UL;
+ if (!(vn)) goto b5;
+ v4 = 0UL;
+b6: if (!(v4)) goto b3;
+ return vresult;
+b3: if (*(u*)(vn + 0UL) != 7UL) goto b9;
+ v5 = (u)zcall_check;
v6 = vc;
- v7 = ((u(*)())v5)(v6);
- vhang = v7;
- v8 = (u)zmklabel;
- v9 = vc;
- v10 = ((u(*)())v8)(v9);
- vdo_iret = v10;
- v11 = (u)zmklabel;
- v12 = vc;
- v13 = ((u(*)())v11)(v12);
- vdo_ret = v13;
- v14 = (u)zmklabel;
- v15 = vc;
- v16 = ((u(*)())v14)(v15);
- vdone = v16;
- v17 = (u)zas_modri;
- v18 = vc;
- v19 = 199UL;
- v20 = 2UL;
- v21 = 732803074UL;
- v22 = ((u(*)())v17)(v18, v19, v20, v21);
- v22;
- v23 = (u)zas_modrr;
- v24 = vc;
- v25 = 59UL;
- v26 = 0UL;
- v27 = 2UL;
- v28 = ((u(*)())v23)(v24, v25, v26, v27);
- v28;
- v29 = (u)zas_jmp;
- v30 = vc;
- v31 = 3968UL + 5UL;
- v32 = vhang;
- v33 = ((u(*)())v29)(v30, v31, v32);
- v33;
- v34 = (u)zas_modri;
- v35 = vc;
- v36 = 199UL;
- v37 = 4UL;
- v38 = 3145728UL;
- v39 = ((u(*)())v34)(v35, v36, v37, v38);
- v39;
- v40 = (u)zas_modri;
- v41 = vc;
- v42 = 262273UL;
- v43 = 4UL;
- v44 = -4096UL;
- v45 = ((u(*)())v40)(v41, v42, v43, v44);
- v45;
- v46 = (u)zas_modri;
+ v7 = *(u*)(vn + 8UL);
+ v8 = ((u(*)())(v5))(v6, v7);
+ vresult = v8;
+ vn = *(u*)(vn + 16UL);
+b11: if (!(vn)) goto b17;
+ v9 = 0UL;
+b18: if (!(v9)) goto b15;
+ vresult = 1UL;
+b7: return vresult;
+b15: v10 = (u)zcall_check;
+ v11 = vc;
+ v12 = *(u*)(vn + 8UL);
+ v13 = ((u(*)())(v10))(v11, v12);
+ vret = v13;
+ if (!(vresult)) goto b24;
+ if (!(vret)) goto b24;
+ v14 = 1UL;
+b26: if (!(v14)) goto b22;
+ v15 = (u)zcdie;
+ v16 = vc;
+ v17 = (u)"multiple calls in call";
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
+b20: vresult = vresult | vret;
+ vn = *(u*)(vn + 16UL);
+ goto b11;
+b22: goto b20;
+b24: v14 = 0UL;
+ goto b26;
+b17: v9 = 1UL;
+ goto b18;
+b9: if (*(u*)(vn + 0UL) != 51UL) goto b31;
+ v19 = 1UL;
+b33: if (!(v19)) goto b29;
+ v20 = (u)zcall_check;
+ v21 = vc;
+ v22 = *(u*)(vn + 8UL);
+ v23 = ((u(*)())(v20))(v21, v22);
+ vresult = v23;
+ v24 = (u)zcall_check;
+ v25 = vc;
+ v26 = *(u*)(vn + 16UL);
+ v27 = ((u(*)())(v24))(v25, v26);
+ vresult = vresult | v27;
+ goto b7;
+b29: if (*(u*)(vn + 0UL) != 33UL) goto b108;
+ v45 = 1UL;
+b110: if (!(v45)) goto b104;
+ v44 = 1UL;
+b106: if (!(v44)) goto b100;
+ v43 = 1UL;
+b102: if (!(v43)) goto b96;
+ v42 = 1UL;
+b98: if (!(v42)) goto b92;
+ v41 = 1UL;
+b94: if (!(v41)) goto b88;
+ v40 = 1UL;
+b90: if (!(v40)) goto b84;
+ v39 = 1UL;
+b86: if (!(v39)) goto b80;
+ v38 = 1UL;
+b82: if (!(v38)) goto b76;
+ v37 = 1UL;
+b78: if (!(v37)) goto b72;
+ v36 = 1UL;
+b74: if (!(v36)) goto b68;
+ v35 = 1UL;
+b70: if (!(v35)) goto b64;
+ v34 = 1UL;
+b66: if (!(v34)) goto b60;
+ v33 = 1UL;
+b62: if (!(v33)) goto b56;
+ v32 = 1UL;
+b58: if (!(v32)) goto b52;
+ v31 = 1UL;
+b54: if (!(v31)) goto b48;
+ v30 = 1UL;
+b50: if (!(v30)) goto b44;
+ v29 = 1UL;
+b46: if (!(v29)) goto b40;
+ v28 = 1UL;
+b42: if (!(v28)) goto b38;
+ v46 = (u)zcall_check;
v47 = vc;
- v48 = 327809UL;
- v49 = 4UL;
- v50 = 4096UL;
- v51 = ((u(*)())v46)(v47, v48, v49, v50);
- v51;
- v52 = (u)zas_modri;
- v53 = vc;
- v54 = 199UL;
- v55 = 0UL;
- v56 = 131UL;
- v57 = ((u(*)())v52)(v53, v54, v55, v56);
- v57;
- v58 = (u)zas_modri;
- v59 = vc;
- v60 = 199UL;
- v61 = 2UL;
- v62 = 0UL;
- v63 = ((u(*)())v58)(v59, v60, v61, v62);
- v63;
- v64 = (u)zas_modrm;
- v65 = vc;
- v66 = 137UL;
- v67 = 0UL;
- v68 = 4UL;
- v69 = 0UL;
+ v48 = *(u*)(vn + 8UL);
+ v49 = ((u(*)())(v46))(v47, v48);
+ vresult = v49;
+ v50 = (u)zcall_check;
+ v51 = vc;
+ v52 = *(u*)(vn + 16UL);
+ v53 = ((u(*)())(v50))(v51, v52);
+ vret = v53;
+ if (!(vresult)) goto b135;
+ if (!(vret)) goto b135;
+ v54 = 1UL;
+b137: if (!(v54)) goto b133;
+ v55 = (u)zcdie;
+ v56 = vc;
+ v57 = (u)"multiple calls in expression";
+ v58 = ((u(*)())(v55))(v56, v57);
+ v58;
+b131: vresult = vresult | vret;
+ goto b7;
+b133: goto b131;
+b135: v54 = 0UL;
+ goto b137;
+b38: if (*(u*)(vn + 0UL) != 35UL) goto b162;
+ v64 = 1UL;
+b164: if (!(v64)) goto b158;
+ v63 = 1UL;
+b160: if (!(v63)) goto b154;
+ v62 = 1UL;
+b156: if (!(v62)) goto b150;
+ v61 = 1UL;
+b152: if (!(v61)) goto b146;
+ v60 = 1UL;
+b148: if (!(v60)) goto b142;
+ v59 = 1UL;
+b144: if (!(v59)) goto b140;
+ v65 = (u)zcall_check;
+ v66 = vc;
+ v67 = *(u*)(vn + 8UL);
+ v68 = ((u(*)())(v65))(v66, v67);
+ vresult = v68;
+ goto b7;
+b140: if (*(u*)(vn + 0UL) != 3UL) goto b191;
+ v73 = 1UL;
+b193: if (!(v73)) goto b187;
+ v72 = 1UL;
+b189: if (!(v72)) goto b183;
+ v71 = 1UL;
+b185: if (!(v71)) goto b179;
+ v70 = 1UL;
+b181: if (!(v70)) goto b175;
+ v69 = 1UL;
+b177: if (!(v69)) goto b173;
+ goto b7;
+b173: v74 = (u)zshow_node;
+ v75 = 0UL;
+ v76 = vn;
+ v77 = ((u(*)())(v74))(v75, v76);
+ v77;
+ v78 = (u)zfputd;
+ v79 = 0UL;
+ v80 = *(u*)(vn + 0UL);
+ v81 = ((u(*)())(v78))(v79, v80);
+ v81;
+ v82 = (u)zdie;
+ v83 = (u)"invalid expr";
+ v84 = ((u(*)())(v82))(v83);
+ v84;
+ goto b7;
+b175: if (*(u*)(vn + 0UL) != 4UL) goto b198;
+ v69 = 1UL;
+ goto b177;
+b198: v69 = 0UL;
+ goto b177;
+b179: if (*(u*)(vn + 0UL) != 34UL) goto b197;
+ v70 = 1UL;
+ goto b181;
+b197: v70 = 0UL;
+ goto b181;
+b183: if (*(u*)(vn + 0UL) != 0UL) goto b196;
+ v71 = 1UL;
+ goto b185;
+b196: v71 = 0UL;
+ goto b185;
+b187: if (*(u*)(vn + 0UL) != 2UL) goto b195;
+ v72 = 1UL;
+ goto b189;
+b195: v72 = 0UL;
+ goto b189;
+b191: if (*(u*)(vn + 0UL) != 1UL) goto b194;
+ v73 = 1UL;
+ goto b193;
+b194: v73 = 0UL;
+ goto b193;
+b142: if (*(u*)(vn + 0UL) != 9UL) goto b170;
+ v59 = 1UL;
+ goto b144;
+b170: v59 = 0UL;
+ goto b144;
+b146: if (*(u*)(vn + 0UL) != 37UL) goto b169;
+ v60 = 1UL;
+ goto b148;
+b169: v60 = 0UL;
+ goto b148;
+b150: if (*(u*)(vn + 0UL) != 56UL) goto b168;
+ v61 = 1UL;
+ goto b152;
+b168: v61 = 0UL;
+ goto b152;
+b154: if (*(u*)(vn + 0UL) != 58UL) goto b167;
+ v62 = 1UL;
+ goto b156;
+b167: v62 = 0UL;
+ goto b156;
+b158: if (*(u*)(vn + 0UL) != 57UL) goto b166;
+ v63 = 1UL;
+ goto b160;
+b166: v63 = 0UL;
+ goto b160;
+b162: if (*(u*)(vn + 0UL) != 36UL) goto b165;
+ v64 = 1UL;
+ goto b164;
+b165: v64 = 0UL;
+ goto b164;
+b40: if (*(u*)(vn + 0UL) != 55UL) goto b128;
+ v28 = 1UL;
+ goto b42;
+b128: v28 = 0UL;
+ goto b42;
+b44: if (*(u*)(vn + 0UL) != 54UL) goto b127;
+ v29 = 1UL;
+ goto b46;
+b127: v29 = 0UL;
+ goto b46;
+b48: if (*(u*)(vn + 0UL) != 53UL) goto b126;
+ v30 = 1UL;
+ goto b50;
+b126: v30 = 0UL;
+ goto b50;
+b52: if (*(u*)(vn + 0UL) != 49UL) goto b125;
+ v31 = 1UL;
+ goto b54;
+b125: v31 = 0UL;
+ goto b54;
+b56: if (*(u*)(vn + 0UL) != 48UL) goto b124;
+ v32 = 1UL;
+ goto b58;
+b124: v32 = 0UL;
+ goto b58;
+b60: if (*(u*)(vn + 0UL) != 60UL) goto b123;
+ v33 = 1UL;
+ goto b62;
+b123: v33 = 0UL;
+ goto b62;
+b64: if (*(u*)(vn + 0UL) != 59UL) goto b122;
+ v34 = 1UL;
+ goto b66;
+b122: v34 = 0UL;
+ goto b66;
+b68: if (*(u*)(vn + 0UL) != 47UL) goto b121;
+ v35 = 1UL;
+ goto b70;
+b121: v35 = 0UL;
+ goto b70;
+b72: if (*(u*)(vn + 0UL) != 46UL) goto b120;
+ v36 = 1UL;
+ goto b74;
+b120: v36 = 0UL;
+ goto b74;
+b76: if (*(u*)(vn + 0UL) != 45UL) goto b119;
+ v37 = 1UL;
+ goto b78;
+b119: v37 = 0UL;
+ goto b78;
+b80: if (*(u*)(vn + 0UL) != 50UL) goto b118;
+ v38 = 1UL;
+ goto b82;
+b118: v38 = 0UL;
+ goto b82;
+b84: if (*(u*)(vn + 0UL) != 44UL) goto b117;
+ v39 = 1UL;
+ goto b86;
+b117: v39 = 0UL;
+ goto b86;
+b88: if (*(u*)(vn + 0UL) != 43UL) goto b116;
+ v40 = 1UL;
+ goto b90;
+b116: v40 = 0UL;
+ goto b90;
+b92: if (*(u*)(vn + 0UL) != 42UL) goto b115;
+ v41 = 1UL;
+ goto b94;
+b115: v41 = 0UL;
+ goto b94;
+b96: if (*(u*)(vn + 0UL) != 40UL) goto b114;
+ v42 = 1UL;
+ goto b98;
+b114: v42 = 0UL;
+ goto b98;
+b100: if (*(u*)(vn + 0UL) != 41UL) goto b113;
+ v43 = 1UL;
+ goto b102;
+b113: v43 = 0UL;
+ goto b102;
+b104: if (*(u*)(vn + 0UL) != 39UL) goto b112;
+ v44 = 1UL;
+ goto b106;
+b112: v44 = 0UL;
+ goto b106;
+b108: if (*(u*)(vn + 0UL) != 38UL) goto b111;
+ v45 = 1UL;
+ goto b110;
+b111: v45 = 0UL;
+ goto b110;
+b31: if (*(u*)(vn + 0UL) != 52UL) goto b34;
+ v19 = 1UL;
+ goto b33;
+b34: v19 = 0UL;
+ goto b33;
+b5: v4 = 1UL;
+ goto b6;
+}
+u zcall_to_ir(u vic, u vn) {
+ u vo = 0;
+ u va = 0;
+ u vb = 0;
+ u vret = 0;
+ u vnext = 0;
+ u vcur = 0;
+ u varg = 0;
+ u vtmp = 0;
+ u vfp = 0;
+ u vi = 0;
+ u vcount = 0;
+ u vslen = 0;
+ u vblob = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ if (*(u*)(*(u*)(vn + 8UL) + 0UL) != 0UL) goto b5;
+ v16 = (u)zstrcmp;
+ v17 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v18 = (u)"_include";
+ v19 = ((u(*)())(v16))(v17, v18);
+ if (v19 != 0UL) goto b5;
+ v15 = 1UL;
+b7: if (!(v15)) goto b3;
+ if (*(u*)(*(u*)(*(u*)(vn + 16UL) + 8UL) + 0UL) == 3UL) goto b11;
+ v20 = (u)zcdie;
+ v21 = *(u*)(vic + 0UL);
+ v22 = (u)"non literal include";
+ v23 = ((u(*)())(v20))(v21, v22);
+ v23;
+b9: v24 = (u)zgather_include;
+ v25 = *(u*)(vic + 0UL);
+ v26 = *(u*)(*(u*)(*(u*)(vn + 16UL) + 8UL) + 56UL);
+ v27 = (u)&vslen;
+ v28 = ((u(*)())(v24))(v25, v26, v27);
+ vblob = v28;
+ v29 = (u)zexpr_to_ir;
+ v30 = vic;
+ v31 = *(u*)(*(u*)(*(u*)(vn + 16UL) + 16UL) + 8UL);
+ v32 = ((u(*)())(v29))(v30, v31);
+ va = v32;
+ v33 = (u)zmkirconst;
+ v34 = vic;
+ v35 = vslen;
+ v36 = ((u(*)())(v33))(v34, v35);
+ vb = v36;
+ v37 = (u)zmkirop;
+ v38 = vic;
+ v39 = 6UL;
+ v40 = va;
+ v41 = vb;
+ v42 = ((u(*)())(v37))(v38, v39, v40, v41);
+ vo = v42;
+ *(u*)(vo + 48UL) = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vn + 16UL) + 16UL) + 8UL) + 64UL) + 16UL);
+ v43 = (u)ziraddop;
+ v44 = vic;
+ v45 = vo;
+ v46 = ((u(*)())(v43))(v44, v45);
+ v46;
+ v47 = (u)zmkirstr;
+ v48 = vic;
+ v49 = vblob;
+ v50 = vslen;
+ v51 = ((u(*)())(v47))(v48, v49, v50);
+ vo = v51;
+ return vo;
+b11: goto b9;
+b3: v52 = (u)zmkirtmp;
+ v53 = vic;
+ v54 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v55 = ((u(*)())(v52))(v53, v54);
+ vfp = v55;
+ v56 = (u)zexpr_to_ir;
+ v57 = vic;
+ v58 = *(u*)(vn + 8UL);
+ v59 = ((u(*)())(v56))(v57, v58);
+ vb = v59;
+ v60 = (u)zmkirop;
+ v61 = vic;
+ v62 = 6UL;
+ v63 = vfp;
+ v64 = vb;
+ v65 = ((u(*)())(v60))(v61, v62, v63, v64);
+ vo = v65;
+ *(u*)(vo + 48UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v66 = (u)ziraddop;
+ v67 = vic;
+ v68 = vo;
+ v69 = ((u(*)())(v66))(v67, v68);
+ v69;
+ varg = *(u*)(vn + 16UL);
+ vcount = 0UL;
+b23: if (!(varg)) goto b29;
v70 = 0UL;
- v71 = 0UL;
- v72 = ((u(*)())v64)(v65, v66, v67, v68, v69, v70, v71);
- v72;
- v73 = (u)zas_modrm;
- v74 = vc;
- v75 = 137UL;
- v76 = 2UL;
- v77 = 4UL;
+b30: if (!(v70)) goto b27;
+ v71 = (u)zalloc;
+ v72 = *(u*)(vic + 16UL);
+ v73 = 8UL * vcount;
+ v74 = ((u(*)())(v71))(v72, v73);
+ vtmp = v74;
+ varg = *(u*)(vn + 16UL);
+ vi = 0UL;
+b32: if (!(varg)) goto b38;
+ v75 = 0UL;
+b39: if (!(v75)) goto b36;
+ varg = *(u*)(vn + 16UL);
+ vi = 0UL;
+b44: if (vi != vcount) goto b48;
+ v103 = (u)zfree;
+ v104 = *(u*)(vic + 16UL);
+ v105 = vtmp;
+ v106 = ((u(*)())(v103))(v104, v105);
+ v106;
+ v107 = (u)zmkirtmp;
+ v108 = vic;
+ v109 = *(u*)(vn + 64UL);
+ v110 = ((u(*)())(v107))(v108, v109);
+ vret = v110;
+ v111 = (u)zmkirretval;
+ v112 = vic;
+ v113 = vret;
+ v114 = *(u*)(vn + 64UL);
+ v115 = ((u(*)())(v111))(v112, v113, v114);
+ vo = v115;
+ v116 = (u)ziraddop;
+ v117 = vic;
+ v118 = vo;
+ v119 = ((u(*)())(v116))(v117, v118);
+ v119;
+ v120 = (u)zircall;
+ v121 = vic;
+ v122 = vfp;
+ v123 = vcount;
+ v124 = ((u(*)())(v120))(v121, v122, v123);
+ v124;
+ return vret;
+b48: v94 = (u)zmkirarg;
+ v95 = vic;
+ v96 = vi;
+ v97 = *(u*)(vtmp + vi * 8UL);
+ v98 = ((u(*)())(v94))(v95, v96, v97);
+ vo = v98;
+ v99 = (u)ziraddop;
+ v100 = vic;
+ v101 = vo;
+ v102 = ((u(*)())(v99))(v100, v101);
+ v102;
+ varg = *(u*)(varg + 16UL);
+ vi = vi + 1UL;
+ goto b44;
+b36: v76 = (u)zmkirtmp;
+ v77 = vic;
+ v78 = *(u*)(*(u*)(varg + 8UL) + 64UL);
+ v79 = ((u(*)())(v76))(v77, v78);
+ *(u*)(vtmp + vi * 8UL) = v79;
+ v80 = (u)zexpr_to_ir;
+ v81 = vic;
+ v82 = *(u*)(varg + 8UL);
+ v83 = ((u(*)())(v80))(v81, v82);
+ vb = v83;
+ v84 = (u)zmkirop;
+ v85 = vic;
+ v86 = 6UL;
+ v87 = *(u*)(vtmp + vi * 8UL);
+ v88 = vb;
+ v89 = ((u(*)())(v84))(v85, v86, v87, v88);
+ vo = v89;
+ *(u*)(vo + 48UL) = *(u*)(*(u*)(varg + 8UL) + 64UL);
+ v90 = (u)ziraddop;
+ v91 = vic;
+ v92 = vo;
+ v93 = ((u(*)())(v90))(v91, v92);
+ v93;
+ varg = *(u*)(varg + 16UL);
+ vi = vi + 1UL;
+ goto b32;
+b38: v75 = 1UL;
+ goto b39;
+b27: vcount = vcount + 1UL;
+ varg = *(u*)(varg + 16UL);
+ goto b23;
+b29: v70 = 1UL;
+ goto b30;
+b5: v15 = 0UL;
+ goto b7;
+}
+u zcdie(u vc, u vmsg) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ v2 = (u)zcshow_context;
+ v3 = vc;
+ v4 = ((u(*)())(v2))(v3);
+ v4;
+ v5 = (u)zfputs;
+ v6 = *(u*)(vc + 8UL);
+ v7 = (u)"cdie: ";
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zfputs;
+ v10 = *(u*)(vc + 8UL);
+ v11 = vmsg;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zfputs;
+ v14 = *(u*)(vc + 8UL);
+ v15 = (u)"\012";
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zexit;
+ v18 = 1UL;
+ v19 = ((u(*)())(v17))(v18);
+ v19;
+ return 0UL;
+}
+u zcheck_usage(u vc) {
+ u vd = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+b1: vd = *(u*)(vc + 104UL);
+ if (!(vd)) goto b7;
+ v2 = 0UL;
+b8: if (!(v2)) goto b5;
+ return 0UL;
+b5: *(u*)(vc + 104UL) = *(u*)(vd + 48UL);
+ if (!(*(u*)(vd + 112UL))) goto b11;
+ v3 = (u)zmark_ir_used;
+ v4 = vc;
+ v5 = vd;
+ v6 = ((u(*)())(v3))(v4, v5);
+ v6;
+b9: goto b1;
+b11: goto b9;
+b7: v2 = 1UL;
+ goto b8;
+}
+u zclose(u vfd) {
+ return (u)close((int)vfd);
+}
+u zcomp_setup(u va, u verr) {
+ u vc = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ v3 = (u)zalloc;
+ v4 = va;
+ v5 = 168UL;
+ v6 = ((u(*)())(v3))(v4, v5);
+ vc = v6;
+ *(u*)(vc + 0UL) = va;
+ *(u*)(vc + 8UL) = verr;
+ v7 = (u)zsetup_parser;
+ v8 = vc;
+ v9 = verr;
+ v10 = ((u(*)())(v7))(v8, v9);
+ *(u*)(vc + 16UL) = v10;
+ *(u*)(vc + 24UL) = 0UL;
+ *(u*)(vc + 32UL) = 0UL;
+ *(u*)(vc + 40UL) = 0UL;
+ v11 = (u)zsetup_assembler;
+ v12 = va;
+ v13 = ((u(*)())(v11))(v12);
+ *(u*)(vc + 48UL) = v13;
+ *(u*)(vc + 56UL) = 0UL;
+ *(u*)(vc + 64UL) = 0UL;
+ *(u*)(vc + 72UL) = 0UL;
+ *(u*)(vc + 88UL) = 0UL;
+ *(u*)(vc + 96UL) = 0UL;
+ *(u*)(vc + 104UL) = 0UL;
+ return vc;
+}
+u zcompile(u vc, u vp) {
+ u vn = 0;
+ u vd = 0;
+ u vv = 0;
+ u vkind = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ u v156 = 0;
+ u v157 = 0;
+ u v158 = 0;
+ u v159 = 0;
+ u v160 = 0;
+ u v161 = 0;
+ u v162 = 0;
+ u v163 = 0;
+ u v164 = 0;
+ u v165 = 0;
+ u v166 = 0;
+ u v167 = 0;
+ u v168 = 0;
+ u v169 = 0;
+ u v170 = 0;
+ u v171 = 0;
+ u v172 = 0;
+ vn = vp;
+b1: if (!(vn)) goto b7;
+ v6 = 0UL;
+b8: if (!(v6)) goto b5;
+ vn = vp;
+b34: if (!(vn)) goto b40;
+ v26 = 0UL;
+b41: if (!(v26)) goto b38;
+ v45 = (u)zfirst_decl;
+ v46 = vc;
+ v47 = ((u(*)())(v45))(v46);
+ vd = v47;
+b56: if (!(vd)) goto b62;
+ v48 = 0UL;
+b63: if (!(v48)) goto b60;
+ v57 = (u)zfirst_decl;
+ v58 = vc;
+ v59 = ((u(*)())(v57))(v58);
+ vd = v59;
+b70: if (!(vd)) goto b76;
+ v60 = 0UL;
+b77: if (!(v60)) goto b74;
+ v75 = (u)zfind;
+ v76 = vc;
+ v77 = (u)"_start";
v78 = 0UL;
v79 = 0UL;
- v80 = 4UL;
- v81 = ((u(*)())v73)(v74, v75, v76, v77, v78, v79, v80);
- v81;
- v82 = (u)zas_modrm;
+ v80 = ((u(*)())(v75))(v76, v77, v78, v79);
+ vd = v80;
+ if (!(vd)) goto b93;
+ if (!(*(u*)(vd + 72UL))) goto b93;
+ v81 = 1UL;
+b95: if (!(v81)) goto b91;
+ *(u*)(vc + 88UL) = *(u*)(vd + 88UL);
+ v82 = (u)zmark_func_used;
v83 = vc;
- v84 = 137UL;
- v85 = 0UL;
- v86 = 4UL;
- v87 = 0UL;
- v88 = 0UL;
- v89 = 510UL * 8UL + 0UL;
- v90 = ((u(*)())v82)(v83, v84, v85, v86, v87, v88, v89);
- v90;
- v91 = (u)zas_modrm;
- v92 = vc;
- v93 = 137UL;
- v94 = 2UL;
- v95 = 4UL;
+ v84 = 0UL;
+ v85 = vd;
+ v86 = ((u(*)())(v82))(v83, v84, v85);
+ v86;
+b89: v87 = (u)zfind;
+ v88 = vc;
+ v89 = (u)"_kstart";
+ v90 = 0UL;
+ v91 = 0UL;
+ v92 = ((u(*)())(v87))(v88, v89, v90, v91);
+ vd = v92;
+ if (!(vd)) goto b102;
+ if (!(*(u*)(vd + 72UL))) goto b102;
+ v93 = 1UL;
+b104: if (!(v93)) goto b100;
+ *(u*)(vc + 96UL) = *(u*)(vd + 88UL);
+ v94 = (u)zmark_func_used;
+ v95 = vc;
v96 = 0UL;
- v97 = 0UL;
- v98 = 510UL * 8UL + 4UL;
- v99 = ((u(*)())v91)(v92, v93, v94, v95, v96, v97, v98);
- v99;
- v100 = (u)zas_modrr;
- v101 = vc;
- v102 = 139UL;
- v103 = 0UL;
- v104 = 4UL;
- v105 = ((u(*)())v100)(v101, v102, v103, v104);
- v105;
- v106 = (u)zas_modri;
- v107 = vc;
- v108 = 327809UL;
- v109 = 4UL;
- v110 = 4096UL;
- v111 = ((u(*)())v106)(v107, v108, v109, v110);
- v111;
- v112 = (u)zas_modri;
- v113 = vc;
- v114 = 65665UL;
- v115 = 0UL;
- v116 = 3UL;
- v117 = ((u(*)())v112)(v113, v114, v115, v116);
- v117;
- v118 = (u)zas_modri;
- v119 = vc;
- v120 = 199UL;
- v121 = 2UL;
- v122 = 0UL;
- v123 = ((u(*)())v118)(v119, v120, v121, v122);
- v123;
- v124 = (u)zas_modrm;
- v125 = vc;
- v126 = 137UL;
- v127 = 0UL;
- v128 = 4UL;
- v129 = 0UL;
- v130 = 0UL;
+ v97 = vd;
+ v98 = ((u(*)())(v94))(v95, v96, v97);
+ v98;
+b98: v99 = (u)zcheck_usage;
+ v100 = vc;
+ v101 = ((u(*)())(v99))(v100);
+ v101;
+ v102 = (u)zfind;
+ v103 = vc;
+ v104 = (u)"_isr0";
+ v105 = 0UL;
+ v106 = 0UL;
+ v107 = ((u(*)())(v102))(v103, v104, v105, v106);
+ vd = v107;
+ if (!(vd)) goto b112;
+ if (!(*(u*)(vd + 96UL))) goto b112;
+ v108 = 1UL;
+b114: if (!(v108)) goto b110;
+ v109 = (u)zfind;
+ v110 = vc;
+ v111 = (u)"_isr";
+ v112 = 0UL;
+ v113 = 0UL;
+ v114 = ((u(*)())(v109))(v110, v111, v112, v113);
+ vv = v114;
+ if (!(vv)) goto b120;
+ if (!(*(u*)(vv + 72UL))) goto b120;
+ v115 = 1UL;
+b122: if (!(v115)) goto b118;
+ v116 = (u)zmark_func_used;
+ v117 = vc;
+ v118 = vd;
+ v119 = vv;
+ v120 = ((u(*)())(v116))(v117, v118, v119);
+ v120;
+b116:b108: v121 = (u)zfind;
+ v122 = vc;
+ v123 = (u)"_ssr0";
+ v124 = 0UL;
+ v125 = 0UL;
+ v126 = ((u(*)())(v121))(v122, v123, v124, v125);
+ vd = v126;
+ if (!(vd)) goto b129;
+ if (!(*(u*)(vd + 96UL))) goto b129;
+ v127 = 1UL;
+b131: if (!(v127)) goto b127;
+ v128 = (u)zfind;
+ v129 = vc;
+ v130 = (u)"_ssr";
v131 = 0UL;
- v132 = ((u(*)())v124)(v125, v126, v127, v128, v129, v130, v131);
- v132;
- v133 = (u)zas_modrm;
- v134 = vc;
- v135 = 137UL;
- v136 = 2UL;
- v137 = 4UL;
- v138 = 0UL;
- v139 = 0UL;
- v140 = 4UL;
- v141 = ((u(*)())v133)(v134, v135, v136, v137, v138, v139, v140);
- v141;
- v142 = (u)zas_modrm;
- v143 = vc;
- v144 = 137UL;
- v145 = 0UL;
- v146 = 4UL;
- v147 = 0UL;
- v148 = 0UL;
- v149 = 511UL * 8UL + 0UL;
- v150 = ((u(*)())v142)(v143, v144, v145, v146, v147, v148, v149);
- v150;
- v151 = (u)zas_modrm;
- v152 = vc;
- v153 = 137UL;
- v154 = 2UL;
- v155 = 4UL;
- v156 = 0UL;
- v157 = 0UL;
- v158 = 511UL * 8UL + 4UL;
- v159 = ((u(*)())v151)(v152, v153, v154, v155, v156, v157, v158);
- v159;
- v160 = (u)zas_modrr;
- v161 = vc;
- v162 = 3874UL;
- v163 = 3UL;
- v164 = 4UL;
- v165 = ((u(*)())v160)(v161, v162, v163, v164);
- v165;
- v166 = (u)zas_modri;
- v167 = vc;
- v168 = 327809UL;
- v169 = 4UL;
- v170 = 64UL;
- v171 = ((u(*)())v166)(v167, v168, v169, v170);
- v171;
- v172 = (u)zas_modrr;
- v173 = vc;
- v174 = 139UL;
- v175 = 5UL;
- v176 = 4UL;
- v177 = ((u(*)())v172)(v173, v174, v175, v176);
- v177;
- v178 = (u)zas_modri;
- v179 = vc;
- v180 = 199UL;
- v181 = 0UL;
- v182 = 0UL;
- v183 = ((u(*)())v178)(v179, v180, v181, v182);
- v183;
- v184 = (u)zas_modrm;
- v185 = vc;
- v186 = 137UL;
- v187 = 0UL;
- v188 = 5UL;
- v189 = 0UL;
- v190 = 0UL;
- v191 = 8UL;
- v192 = ((u(*)())v184)(v185, v186, v187, v188, v189, v190, v191);
- v192;
- v193 = (u)zas_modri;
- v194 = vc;
- v195 = 199UL;
- v196 = 0UL;
- v197 = 0UL;
- v198 = ((u(*)())v193)(v194, v195, v196, v197);
- v198;
- v199 = (u)zas_modrm;
- v200 = vc;
- v201 = 137UL;
- v202 = 0UL;
- v203 = 5UL;
- v204 = 0UL;
- v205 = 0UL;
- v206 = 12UL;
- v207 = ((u(*)())v199)(v200, v201, v202, v203, v204, v205, v206);
- v207;
- v208 = (u)zas_modri;
- v209 = vc;
- v210 = 199UL;
- v211 = 0UL;
- v212 = 0UL;
- v213 = ((u(*)())v208)(v209, v210, v211, v212);
- v213;
- v214 = (u)zas_modrm;
- v215 = vc;
- v216 = 137UL;
- v217 = 0UL;
- v218 = 5UL;
- v219 = 0UL;
- v220 = 0UL;
- v221 = 16UL;
- v222 = ((u(*)())v214)(v215, v216, v217, v218, v219, v220, v221);
- v222;
- v223 = (u)zas_modri;
- v224 = vc;
- v225 = 199UL;
- v226 = 0UL;
- v227 = 2136064UL;
- v228 = ((u(*)())v223)(v224, v225, v226, v227);
- v228;
- v229 = (u)zas_modrm;
- v230 = vc;
- v231 = 137UL;
- v232 = 0UL;
- v233 = 5UL;
- v234 = 0UL;
- v235 = 0UL;
- v236 = 20UL;
- v237 = ((u(*)())v229)(v230, v231, v232, v233, v234, v235, v236);
- v237;
- v238 = (u)zas_modri;
- v239 = vc;
- v240 = 199UL;
- v241 = 0UL;
- v242 = 0UL;
- v243 = ((u(*)())v238)(v239, v240, v241, v242);
- v243;
- v244 = (u)zas_modrm;
- v245 = vc;
- v246 = 137UL;
- v247 = 0UL;
- v248 = 5UL;
- v249 = 0UL;
- v250 = 0UL;
- v251 = 24UL;
- v252 = ((u(*)())v244)(v245, v246, v247, v248, v249, v250, v251);
- v252;
- v253 = (u)zas_modri;
- v254 = vc;
- v255 = 199UL;
- v256 = 0UL;
- v257 = 37376UL;
- v258 = ((u(*)())v253)(v254, v255, v256, v257);
- v258;
- v259 = (u)zas_modrm;
- v260 = vc;
- v261 = 137UL;
- v262 = 0UL;
- v263 = 5UL;
- v264 = 0UL;
- v265 = 0UL;
- v266 = 28UL;
- v267 = ((u(*)())v259)(v260, v261, v262, v263, v264, v265, v266);
- v267;
- v268 = (u)zas_modri;
- v269 = vc;
- v270 = 199UL;
- v271 = 0UL;
- v272 = 23UL;
- v273 = ((u(*)())v268)(v269, v270, v271, v272);
- v273;
- v274 = (u)zas_modrm;
- v275 = vc;
- v276 = 137UL;
- v277 = 0UL;
- v278 = 5UL;
- v279 = 0UL;
- v280 = 0UL;
- v281 = 0UL;
- v282 = ((u(*)())v274)(v275, v276, v277, v278, v279, v280, v281);
- v282;
- v283 = (u)zas_modrm;
- v284 = vc;
- v285 = 141UL;
- v286 = 0UL;
- v287 = 5UL;
- v288 = 0UL;
- v289 = 0UL;
- v290 = 8UL;
- v291 = ((u(*)())v283)(v284, v285, v286, v287, v288, v289, v290);
- v291;
- v292 = (u)zas_modrm;
- v293 = vc;
- v294 = 137UL;
- v295 = 0UL;
- v296 = 5UL;
- v297 = 0UL;
- v298 = 0UL;
- v299 = 2UL;
- v300 = ((u(*)())v292)(v293, v294, v295, v296, v297, v298, v299);
- v300;
- v301 = (u)zas_modm;
- v302 = vc;
- v303 = 134913UL;
- v304 = 5UL;
- v305 = 0UL;
- v306 = 0UL;
- v307 = 0UL;
- v308 = ((u(*)())v301)(v302, v303, v304, v305, v306, v307);
- v308;
- v309 = (u)zas_modri;
- v310 = vc;
- v311 = 199UL;
- v312 = 0UL;
- v313 = 0UL;
- v314 = ((u(*)())v309)(v310, v311, v312, v313);
- v314;
- v315 = (u)zas_modr;
- v316 = vc;
- v317 = 134912UL;
- v318 = 0UL;
- v319 = ((u(*)())v315)(v316, v317, v318);
- v319;
- v320 = (u)zas_modm;
- v321 = vc;
- v322 = 200449UL;
- v323 = 5UL;
- v324 = 0UL;
- v325 = 0UL;
- v326 = 8UL;
- v327 = ((u(*)())v320)(v321, v322, v323, v324, v325, v326);
- v327;
- v328 = (u)zas_modri;
- v329 = vc;
- v330 = 199UL;
- v331 = 0UL;
- v332 = 160UL;
- v333 = ((u(*)())v328)(v329, v330, v331, v332);
- v333;
- v334 = (u)zas_modrr;
- v335 = vc;
- v336 = 3874UL;
- v337 = 4UL;
- v338 = 0UL;
- v339 = ((u(*)())v334)(v335, v336, v337, v338);
- v339;
- v340 = (u)zas_modri;
- v341 = vc;
- v342 = 199UL;
- v343 = 1UL;
- v344 = (-1UL << 32UL) + (192UL << 24UL) + 128UL;
- v345 = ((u(*)())v340)(v341, v342, v343, v344);
- v345;
- v346 = (u)zas_op;
- v347 = vc;
- v348 = 3890UL;
- v349 = ((u(*)())v346)(v347, v348);
- v349;
- v350 = (u)zas_modri;
- v351 = vc;
- v352 = 65665UL;
- v353 = 0UL;
- v354 = 256UL;
- v355 = ((u(*)())v350)(v351, v352, v353, v354);
- v355;
- v356 = (u)zas_op;
- v357 = vc;
- v358 = 3888UL;
- v359 = ((u(*)())v356)(v357, v358);
- v359;
- v360 = (u)zas_modrr;
- v361 = vc;
- v362 = 3872UL;
- v363 = 0UL;
- v364 = 0UL;
- v365 = ((u(*)())v360)(v361, v362, v363, v364);
- v365;
- v366 = (u)zas_modri;
- v367 = vc;
- v368 = 65665UL;
- v369 = 0UL;
- v370 = -2147483648UL | 1UL;
- v371 = ((u(*)())v366)(v367, v368, v369, v370);
- v371;
- v372 = (u)zas_modrr;
- v373 = vc;
- v374 = 3874UL;
- v375 = 0UL;
- v376 = 0UL;
- v377 = ((u(*)())v372)(v373, v374, v375, v376);
- v377;
- v378 = (u)zas_modri;
- v379 = vc;
- v380 = 199UL;
- v381 = 0UL;
- v382 = 0UL;
- v383 = ((u(*)())v378)(v379, v380, v381, v382);
- v383;
- v384 = (u)zas_opr;
- v385 = vc;
- v386 = 80UL;
- v387 = 0UL;
- v388 = ((u(*)())v384)(v385, v386, v387);
- v388;
- v389 = (u)zas_modri;
- v390 = vc;
- v391 = 199UL;
- v392 = 0UL;
- v393 = 8UL;
- v394 = ((u(*)())v389)(v390, v391, v392, v393);
- v394;
- v395 = (u)zas_opr;
- v396 = vc;
- v397 = 80UL;
- v398 = 0UL;
- v399 = ((u(*)())v395)(v396, v397, v398);
- v399;
- v400 = (u)zas_jmp;
- v401 = vc;
- v402 = 232UL;
- v403 = vdo_iret;
- v404 = ((u(*)())v400)(v401, v402, v403);
- v404;
- *(u*)(vc + 48UL) = 0UL;
- v405 = (u)zas_jmp;
- v406 = vc;
- v407 = 232UL;
- v408 = vdo_ret;
- v409 = ((u(*)())v405)(v406, v407, v408);
- v409;
- v410 = (u)zas_modri;
- v411 = vc;
- v412 = 65665UL;
- v413 = 5UL;
- v414 = -2147483648UL;
- v415 = ((u(*)())v410)(v411, v412, v413, v414);
- v415;
- v416 = (u)zas_modri;
- v417 = vc;
- v418 = 199UL;
- v419 = 0UL;
- v420 = 23UL;
- v421 = ((u(*)())v416)(v417, v418, v419, v420);
- v421;
- v422 = (u)zas_modrm;
- v423 = vc;
- v424 = 137UL;
- v425 = 0UL;
- v426 = 5UL;
- v427 = 0UL;
- v428 = 0UL;
- v429 = 0UL;
- v430 = ((u(*)())v422)(v423, v424, v425, v426, v427, v428, v429);
- v430;
- v431 = (u)zas_modrm;
- v432 = vc;
- v433 = 141UL;
- v434 = 0UL;
- v435 = 5UL;
- v436 = 0UL;
- v437 = 0UL;
- v438 = 8UL;
- v439 = ((u(*)())v431)(v432, v433, v434, v435, v436, v437, v438);
- v439;
- v440 = (u)zas_modrm;
- v441 = vc;
- v442 = 137UL;
- v443 = 0UL;
- v444 = 5UL;
- v445 = 0UL;
- v446 = 0UL;
- v447 = 2UL;
- v448 = ((u(*)())v440)(v441, v442, v443, v444, v445, v446, v447);
- v448;
- v449 = (u)zas_modm;
- v450 = vc;
- v451 = 134913UL;
- v452 = 5UL;
- v453 = 0UL;
- v454 = 0UL;
- v455 = 0UL;
- v456 = ((u(*)())v449)(v450, v451, v452, v453, v454, v455);
- v456;
- v457 = (u)zas_modri;
- v458 = vc;
- v459 = 199UL;
- v460 = 0UL;
- v461 = 16UL;
- v462 = ((u(*)())v457)(v458, v459, v460, v461);
- v462;
- v463 = (u)zas_modrr;
- v464 = vc;
- v465 = 142UL;
- v466 = 0UL;
- v467 = 0UL;
- v468 = ((u(*)())v463)(v464, v465, v466, v467);
- v468;
- v469 = (u)zas_modrr;
- v470 = vc;
- v471 = 142UL;
- v472 = 3UL;
- v473 = 0UL;
- v474 = ((u(*)())v469)(v470, v471, v472, v473);
- v474;
- v475 = (u)zas_modrr;
- v476 = vc;
- v477 = 142UL;
- v478 = 4UL;
- v479 = 0UL;
- v480 = ((u(*)())v475)(v476, v477, v478, v479);
- v480;
- v481 = (u)zas_modrr;
- v482 = vc;
- v483 = 142UL;
- v484 = 5UL;
- v485 = 0UL;
- v486 = ((u(*)())v481)(v482, v483, v484, v485);
- v486;
- v487 = (u)zas_modrr;
- v488 = vc;
- v489 = 142UL;
- v490 = 2UL;
- v491 = 0UL;
- v492 = ((u(*)())v487)(v488, v489, v490, v491);
- v492;
- v493 = (u)zas_modrr;
- v494 = vc;
- v495 = 139UL;
- v496 = 4UL;
- v497 = 4UL;
- v498 = ((u(*)())v493)(v494, v495, v496, v497);
- v498;
- v499 = (u)zas_modri;
- v500 = vc;
- v501 = 65665UL;
- v502 = 4UL;
- v503 = -2147483648UL;
- v504 = ((u(*)())v499)(v500, v501, v502, v503);
- v504;
- v505 = (u)zas_modri;
- v506 = vc;
- v507 = 199UL;
- v508 = 0UL;
- v509 = 0UL;
- v510 = ((u(*)())v505)(v506, v507, v508, v509);
- v510;
- v511 = (u)zas_modrm;
- v512 = vc;
- v513 = 141UL;
- v514 = 7UL;
- v515 = 5UL;
- v516 = 0UL;
- v517 = 0UL;
- v518 = 64UL;
- v519 = ((u(*)())v511)(v512, v513, v514, v515, v516, v517, v518);
- v519;
- v520 = (u)zas_modrm;
- v521 = vc;
- v522 = 137UL;
- v523 = 0UL;
- v524 = 7UL;
- v525 = 0UL;
- v526 = 0UL;
- v527 = 4096UL;
- v528 = ((u(*)())v520)(v521, v522, v523, v524, v525, v526, v527);
- v528;
- v529 = (u)zas_modrm;
- v530 = vc;
- v531 = 137UL;
- v532 = 0UL;
- v533 = 7UL;
- v534 = 0UL;
- v535 = 0UL;
- v536 = 0UL;
- v537 = ((u(*)())v529)(v530, v531, v532, v533, v534, v535, v536);
- v537;
- v538 = (u)zas_modri;
- v539 = vc;
- v540 = 262273UL;
- v541 = 7UL;
- v542 = 2147483647UL;
- v543 = ((u(*)())v538)(v539, v540, v541, v542);
- v543;
- v544 = (u)zas_modrr;
- v545 = vc;
- v546 = 3874UL;
- v547 = 3UL;
- v548 = 7UL;
- v549 = ((u(*)())v544)(v545, v546, v547, v548);
- v549;
- v550 = (u)zas_jmp;
- v551 = vc;
- v552 = 233UL;
- v553 = vdone;
- v554 = ((u(*)())v550)(v551, v552, v553);
- v554;
- v555 = (u)zfixup_label;
- v556 = vc;
- v557 = vhang;
- v558 = ((u(*)())v555)(v556, v557);
- v558;
- v559 = (u)zas_op;
- v560 = vc;
- v561 = 250UL;
- v562 = ((u(*)())v559)(v560, v561);
- v562;
- v563 = (u)zas_op;
- v564 = vc;
- v565 = 244UL;
- v566 = ((u(*)())v563)(v564, v565);
- v566;
- v567 = (u)zas_jmp;
- v568 = vc;
- v569 = 233UL;
- v570 = vhang;
- v571 = ((u(*)())v567)(v568, v569, v570);
- v571;
- v572 = (u)zfixup_label;
- v573 = vc;
- v574 = vdo_iret;
- v575 = ((u(*)())v572)(v573, v574);
- v575;
- v576 = (u)zas_op;
- v577 = vc;
- v578 = 207UL;
- v579 = ((u(*)())v576)(v577, v578);
- v579;
- v580 = (u)zfixup_label;
- v581 = vc;
- v582 = vdo_ret;
- v583 = ((u(*)())v580)(v581, v582);
- v583;
- v584 = (u)zas_opr;
- v585 = vc;
- v586 = 88UL;
- v587 = 0UL;
- v588 = ((u(*)())v584)(v585, v586, v587);
- v588;
- v589 = (u)zas_modri;
- v590 = vc;
- v591 = 65665UL;
- v592 = 0UL;
- v593 = -2147483648UL;
- v594 = ((u(*)())v589)(v590, v591, v592, v593);
- v594;
- v595 = (u)zas_opr;
- v596 = vc;
- v597 = 80UL;
- v598 = 0UL;
- v599 = ((u(*)())v595)(v596, v597, v598);
- v599;
- v600 = (u)zas_op;
- v601 = vc;
- v602 = 195UL;
- v603 = ((u(*)())v600)(v601, v602);
- v603;
- v604 = (u)zfixup_label;
- v605 = vc;
- v606 = vdone;
- v607 = ((u(*)())v604)(v605, v606);
- v607;
- v608 = (u)zas_modrr;
- v609 = vc;
- v610 = 51UL;
- v611 = 5UL;
- v612 = 5UL;
- v613 = ((u(*)())v608)(v609, v610, v611, v612);
- v613;
- v614 = (u)zas_modrr;
- v615 = vc;
- v616 = 139UL;
- v617 = 7UL;
- v618 = 3UL;
- v619 = ((u(*)())v614)(v615, v616, v617, v618);
- v619;
- v620 = (u)zas_opr;
- v621 = vc;
- v622 = 80UL;
- v623 = 5UL;
- v624 = ((u(*)())v620)(v621, v622, v623);
- v624;
+ v132 = 0UL;
+ v133 = ((u(*)())(v128))(v129, v130, v131, v132);
+ vv = v133;
+ if (!(vv)) goto b137;
+ if (!(*(u*)(vv + 72UL))) goto b137;
+ v134 = 1UL;
+b139: if (!(v134)) goto b135;
+ v135 = (u)zmark_func_used;
+ v136 = vc;
+ v137 = vd;
+ v138 = vv;
+ v139 = ((u(*)())(v135))(v136, v137, v138);
+ v139;
+b133:b125: v140 = (u)zcheck_usage;
+ v141 = vc;
+ v142 = ((u(*)())(v140))(v141);
+ v142;
+ if (!(*(u*)(vc + 80UL))) goto b144;
+ v143 = (u)zfflush;
+ v144 = *(u*)(vc + 80UL);
+ v145 = ((u(*)())(v143))(v144);
+ v145;
+b142: v146 = (u)zfirst_decl;
+ v147 = vc;
+ v148 = ((u(*)())(v146))(v147);
+ vd = v148;
+b147: if (!(vd)) goto b153;
+ v149 = 0UL;
+b154: if (!(v149)) goto b151;
+ v159 = (u)zfirst_decl;
+ v160 = vc;
+ v161 = ((u(*)())(v159))(v160);
+ vd = v161;
+b169: if (!(vd)) goto b175;
+ v162 = 0UL;
+b176: if (!(v162)) goto b173;
+ return 0UL;
+b173: if (!(*(u*)(vd + 96UL))) goto b185;
+ if (!(*(u*)(vd + 72UL))) goto b185;
+ v164 = 1UL;
+b187: if (!(v164)) goto b181;
+ if (!(*(u*)(vd + 112UL))) goto b181;
+ v163 = 1UL;
+b183: if (!(v163)) goto b179;
+ v165 = *(u*)(*(u*)(vc + 160UL) + 16UL);
+ v166 = vc;
+ v167 = vd;
+ v168 = ((u(*)())(v165))(v166, v167);
+ v168;
+b177: v169 = (u)znext_decl;
+ v170 = vc;
+ v171 = vd;
+ v172 = ((u(*)())(v169))(v170, v171);
+ vd = v172;
+ goto b169;
+b179: goto b177;
+b181: v163 = 0UL;
+ goto b183;
+b185: v164 = 0UL;
+ goto b187;
+b175: v162 = 1UL;
+ goto b176;
+b151: if (!(*(u*)(vd + 96UL))) goto b163;
+ if (!(*(u*)(vd + 72UL))) goto b163;
+ v151 = 1UL;
+b165: if (!(v151)) goto b159;
+ if (!(*(u*)(vd + 112UL))) goto b159;
+ v150 = 1UL;
+b161: if (!(v150)) goto b157;
+ v152 = (u)zir_optimize;
+ v153 = *(u*)(vd + 112UL);
+ v154 = ((u(*)())(v152))(v153);
+ v154;
+b155: v155 = (u)znext_decl;
+ v156 = vc;
+ v157 = vd;
+ v158 = ((u(*)())(v155))(v156, v157);
+ vd = v158;
+ goto b147;
+b157: goto b155;
+b159: v150 = 0UL;
+ goto b161;
+b163: v151 = 0UL;
+ goto b165;
+b153: v149 = 1UL;
+ goto b154;
+b144: goto b142;
+b135: goto b133;
+b137: v134 = 0UL;
+ goto b139;
+b127: goto b125;
+b129: v127 = 0UL;
+ goto b131;
+b118: goto b116;
+b120: v115 = 0UL;
+ goto b122;
+b110: goto b108;
+b112: v108 = 0UL;
+ goto b114;
+b100: goto b98;
+b102: v93 = 0UL;
+ goto b104;
+b91: goto b89;
+b93: v81 = 0UL;
+ goto b95;
+b74: if (!(*(u*)(vd + 72UL))) goto b82;
+ if (!(*(u*)(vd + 104UL))) goto b82;
+ v61 = 1UL;
+b84: if (!(v61)) goto b80;
+ v62 = (u)ztypecheck_stmt;
+ v63 = vc;
+ v64 = vd;
+ v65 = *(u*)(*(u*)(vd + 104UL) + 16UL);
+ v66 = ((u(*)())(v62))(v63, v64, v65);
+ v66;
+ v67 = (u)zfunc_to_ir;
+ v68 = vc;
+ v69 = *(u*)(vd + 104UL);
+ v70 = ((u(*)())(v67))(v68, v69);
+ *(u*)(vd + 112UL) = v70;
+b78: v71 = (u)znext_decl;
+ v72 = vc;
+ v73 = vd;
+ v74 = ((u(*)())(v71))(v72, v73);
+ vd = v74;
+ goto b70;
+b80: goto b78;
+b82: v61 = 0UL;
+ goto b84;
+b76: v60 = 1UL;
+ goto b77;
+b60: if (!(*(u*)(vd + 128UL))) goto b66;
+ v49 = (u)zlayout_struct;
+ v50 = vc;
+ v51 = vd;
+ v52 = ((u(*)())(v49))(v50, v51);
+ v52;
+b64: v53 = (u)znext_decl;
+ v54 = vc;
+ v55 = vd;
+ v56 = ((u(*)())(v53))(v54, v55);
+ vd = v56;
+ goto b56;
+b66: goto b64;
+b62: v48 = 1UL;
+ goto b63;
+b38: vkind = *(u*)(*(u*)(vn + 8UL) + 0UL);
+ if (vkind != 13UL) goto b44;
+ v27 = (u)zdefextern;
+ v28 = vc;
+ v29 = *(u*)(vn + 8UL);
+ v30 = ((u(*)())(v27))(v28, v29);
+ v30;
+b42: vn = *(u*)(vn + 16UL);
+ goto b34;
+b44: if (vkind != 11UL) goto b47;
+ v31 = (u)zdefun;
+ v32 = vc;
+ v33 = *(u*)(vn + 8UL);
+ v34 = ((u(*)())(v31))(v32, v33);
+ v34;
+ goto b42;
+b47: if (vkind != 70UL) goto b50;
+ v35 = (u)zlexer_compile;
+ v36 = vc;
+ v37 = *(u*)(vn + 8UL);
+ v38 = 0UL;
+ v39 = ((u(*)())(v35))(v36, v37, v38);
+ v39;
+ goto b42;
+b50: if (vkind != 75UL) goto b53;
+ v40 = (u)zlalr_compiler;
+ v41 = vc;
+ v42 = *(u*)(vn + 8UL);
+ v43 = 0UL;
+ v44 = ((u(*)())(v40))(v41, v42, v43);
+ v44;
+ goto b42;
+b53: goto b42;
+b40: v26 = 1UL;
+ goto b41;
+b5: vkind = *(u*)(*(u*)(vn + 8UL) + 0UL);
+ if (vkind != 17UL) goto b11;
+ v7 = (u)zdefstruct;
+ v8 = vc;
+ v9 = *(u*)(vn + 8UL);
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+b9: vn = *(u*)(vn + 16UL);
+ goto b1;
+b11: if (vkind != 18UL) goto b14;
+ v11 = (u)zdefunion;
+ v12 = vc;
+ v13 = *(u*)(vn + 8UL);
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+ goto b9;
+b14: if (vkind != 23UL) goto b17;
+ v15 = (u)zdefenum;
+ v16 = vc;
+ v17 = *(u*)(vn + 8UL);
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
+ goto b9;
+b17: if (vkind == 11UL) goto b30;
+ if (vkind == 13UL) goto b30;
+ v21 = 1UL;
+b32: if (!(v21)) goto b26;
+ if (vkind == 70UL) goto b26;
+ v20 = 1UL;
+b28: if (!(v20)) goto b22;
+ if (vkind == 75UL) goto b22;
+ v19 = 1UL;
+b24: if (!(v19)) goto b20;
+ v22 = (u)zcdie;
+ v23 = vc;
+ v24 = (u)"invalid decl";
+ v25 = ((u(*)())(v22))(v23, v24);
+ v25;
+ goto b9;
+b20: goto b9;
+b22: v19 = 0UL;
+ goto b24;
+b26: v20 = 0UL;
+ goto b28;
+b30: v21 = 0UL;
+ goto b32;
+b7: v6 = 1UL;
+ goto b8;
+}
+u zconcat_program(u va, u vb) {
+ u vret = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ if (!(va)) goto b5;
+ v3 = 0UL;
+b6: if (!(v3)) goto b3;
+ return vb;
+b3: if (!(vb)) goto b11;
+ v4 = 0UL;
+b12: if (!(v4)) goto b9;
+ return va;
+b9: vret = va;
+b13: if (!(*(u*)(va + 16UL))) goto b19;
+ v5 = 0UL;
+b20: if (!(v5)) goto b17;
+ *(u*)(va + 16UL) = vb;
+ return vret;
+b17: va = *(u*)(va + 16UL);
+ goto b13;
+b19: v5 = 1UL;
+ goto b20;
+b11: v4 = 1UL;
+ goto b12;
+b5: v3 = 1UL;
+ goto b6;
+}
+u zcshow_context(u vc) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ v1 = (u)zfputs;
+ v2 = *(u*)(vc + 8UL);
+ v3 = (u)"on ";
+ v4 = ((u(*)())(v1))(v2, v3);
+ v4;
+ if (!(*(u*)(vc + 24UL))) goto b4;
+ v5 = (u)zfputs;
+ v6 = *(u*)(vc + 8UL);
+ v7 = *(u*)(vc + 24UL);
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+b2: v9 = (u)zfputs;
+ v10 = *(u*)(vc + 8UL);
+ v11 = (u)":";
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zfputd;
+ v14 = *(u*)(vc + 8UL);
+ v15 = *(u*)(vc + 32UL);
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ v17 = (u)zfputs;
+ v18 = *(u*)(vc + 8UL);
+ v19 = (u)":";
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ v21 = (u)zfputd;
+ v22 = *(u*)(vc + 8UL);
+ v23 = *(u*)(vc + 40UL);
+ v24 = ((u(*)())(v21))(v22, v23);
+ v24;
+ v25 = (u)zfputs;
+ v26 = *(u*)(vc + 8UL);
+ v27 = (u)"\012";
+ v28 = ((u(*)())(v25))(v26, v27);
+ v28;
+ return 0UL;
+b4: goto b2;
+}
+u zdec2int(u vs, u vlen, u vok) {
+ u vx = 0;
+ u vd = 0;
+ u vi = 0;
+ u v6 = 0;
+ vx = 0UL;
+ vi = 0UL;
+b1: if (vi != vlen) goto b5;
+ *(u*)(vok) = 1UL;
+ return vx;
+b5: vd = (u)*(b*)(vs + vi * 1UL);
+ if (vd != 95UL) goto b8;
+ vi = vi + 1UL;
+ goto b1;
+b8: if ((s)(vd) < (s)48UL) goto b12;
+ if ((s)(vd) > (s)57UL) goto b12;
+ v6 = 1UL;
+b14: if (!(v6)) goto b10;
+ vd = vd - 48UL;
+ if ((s)(vx) <= (s)461168601842738790UL) goto b17;
+ *(u*)(vok) = 0UL;
+ return 0UL;
+b17: vx = vx * 10UL;
+ if ((s)(vx) <= (s)(((1UL << 63UL) - 1UL) - vd)) goto b20;
+ *(u*)(vok) = 0UL;
+ return 0UL;
+b20: vx = vx + vd;
+ vi = vi + 1UL;
+ goto b1;
+b10: *(u*)(vok) = 0UL;
+ return 0UL;
+b12: v6 = 0UL;
+ goto b14;
+}
+u zdefenum(u vc, u vn) {
+ u vi = 0;
+ u vname = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ vn = *(u*)(vn + 8UL);
+ vi = 0UL;
+b1: if (!(vn)) goto b7;
+ v4 = 0UL;
+b8: if (!(v4)) goto b5;
+ return 0UL;
+b5: *(u*)(vc + 24UL) = *(u*)(*(u*)(vn + 8UL) + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(*(u*)(vn + 8UL) + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(*(u*)(vn + 8UL) + 40UL);
+ vname = *(u*)(*(u*)(*(u*)(vn + 8UL) + 8UL) + 56UL);
+ if (!(*(u*)(*(u*)(vn + 8UL) + 16UL))) goto b11;
+ vi = *(u*)(*(u*)(*(u*)(vn + 8UL) + 16UL) + 48UL);
+b9: v5 = (u)zdefine_enum_tag;
+ v6 = vc;
+ v7 = vname;
+ v8 = vi;
+ v9 = ((u(*)())(v5))(v6, v7, v8);
+ v9;
+ vi = vi + 1UL;
+ vn = *(u*)(vn + 16UL);
+ goto b1;
+b11: goto b9;
+b7: v4 = 1UL;
+ goto b8;
+}
+u zdefextern(u vc, u vn) {
+ u vd = 0;
+ u vname = 0;
+ u vt = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
+ vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v5 = (u)zprototype;
+ v6 = vc;
+ v7 = *(u*)(vn + 16UL);
+ v8 = ((u(*)())(v5))(v6, v7);
+ vt = v8;
+ v9 = (u)zfind;
+ v10 = vc;
+ v11 = vname;
+ v12 = 0UL;
+ v13 = 1UL;
+ v14 = ((u(*)())(v9))(v10, v11, v12, v13);
+ vd = v14;
+ v15 = (u)zstrcmp;
+ v16 = *(u*)(vn + 24UL);
+ v17 = (u)"syscall.om";
+ v18 = ((u(*)())(v15))(v16, v17);
+ if (v18 != 0UL) goto b5;
+ *(u*)(vd + 120UL) = 1UL;
+b3: if (!(*(u*)(vd + 72UL))) goto b9;
+ v19 = (u)zunify;
+ v20 = vc;
+ v21 = *(u*)(vd + 80UL);
+ v22 = vt;
+ v23 = ((u(*)())(v19))(v20, v21, v22);
+ v23;
+ return vd;
+b9: *(u*)(vd + 72UL) = 1UL;
+ *(u*)(vd + 80UL) = vt;
+ return vd;
+b5: goto b3;
+}
+u zdefine_enum_tag(u vc, u vname, u vvalue) {
+ u vd = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ v4 = (u)zfind;
+ v5 = vc;
+ v6 = vname;
+ v7 = 0UL;
+ v8 = 1UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vd = v9;
+ if (!(*(u*)(vd + 192UL))) goto b4;
+ v10 = (u)zcdie;
+ v11 = vc;
+ v12 = (u)"duplicate enum";
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+b2: *(u*)(vd + 192UL) = 1UL;
+ *(u*)(vd + 200UL) = vvalue;
+ return 0UL;
+b4: goto b2;
+}
+u zdefine_ir_func(u vc, u vic, u vt) {
+ u vd = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ v4 = (u)zfind;
+ v5 = vc;
+ v6 = *(u*)(vic + 24UL);
+ v7 = 0UL;
+ v8 = 1UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vd = v9;
+ if (*(u*)(vd + 72UL) != 2UL) goto b4;
+ v10 = (u)zcdie;
+ v11 = vc;
+ v12 = (u)"duplicate func";
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+b2: if (!(*(u*)(vd + 72UL))) goto b8;
+ v14 = (u)zunify;
+ v15 = vc;
+ v16 = *(u*)(vd + 80UL);
+ v17 = vt;
+ v18 = ((u(*)())(v14))(v15, v16, v17);
+ v18;
+b6: *(u*)(vd + 72UL) = 2UL;
+ *(u*)(vd + 80UL) = vt;
+ *(u*)(vd + 112UL) = vic;
+ return 0UL;
+b8: goto b6;
+b4: goto b2;
+}
+u zdefstruct(u vc, u vn) {
+ u vname = 0;
+ u vd = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
+ v7 = (u)zstrcmp;
+ v8 = vname;
+ v9 = (u)"int";
+ v10 = ((u(*)())(v7))(v8, v9);
+ if (!(v10)) goto b13;
+ v6 = 0UL;
+b14: if (!(v6)) goto b9;
+ v5 = 1UL;
+b11: if (!(v5)) goto b5;
+ v4 = 1UL;
+b7: if (!(v4)) goto b3;
+ v21 = (u)zcdie;
+ v22 = vc;
+ v23 = (u)"reserved word";
+ v24 = ((u(*)())(v21))(v22, v23);
+ v24;
+b1: v25 = (u)zfind;
+ v26 = vc;
+ v27 = vname;
+ v28 = 0UL;
+ v29 = 1UL;
+ v30 = ((u(*)())(v25))(v26, v27, v28, v29);
+ vd = v30;
+ if (!(*(u*)(vd + 128UL))) goto b30;
+ v31 = (u)zcdie;
+ v32 = vc;
+ v33 = (u)"duplicate struct";
+ v34 = ((u(*)())(v31))(v32, v33);
+ v34;
+b28: *(u*)(vd + 128UL) = 1UL;
+ *(u*)(vd + 152UL) = vn;
+ v35 = (u)zprototype;
+ v36 = vc;
+ v37 = *(u*)(vn + 8UL);
+ v38 = ((u(*)())(v35))(v36, v37);
+ *(u*)(vd + 160UL) = v38;
+ return 0UL;
+b30: goto b28;
+b3: goto b1;
+b5: v17 = (u)zstrcmp;
+ v18 = vname;
+ v19 = (u)"func";
+ v20 = ((u(*)())(v17))(v18, v19);
+ if (!(v20)) goto b23;
+ v16 = 0UL;
+b24: if (!(v16)) goto b21;
+ v4 = 1UL;
+ goto b7;
+b21: v4 = 0UL;
+ goto b7;
+b23: v16 = 1UL;
+ goto b24;
+b9: v12 = (u)zstrcmp;
+ v13 = vname;
+ v14 = (u)"byte";
+ v15 = ((u(*)())(v12))(v13, v14);
+ if (!(v15)) goto b18;
+ v11 = 0UL;
+b19: if (!(v11)) goto b16;
+ v5 = 1UL;
+ goto b11;
+b16: v5 = 0UL;
+ goto b11;
+b18: v11 = 1UL;
+ goto b19;
+b13: v6 = 1UL;
+ goto b14;
+}
+u zdefun(u vc, u vfuncdef) {
+ u vd = 0;
+ u vname = 0;
+ u vv = 0;
+ u vt = 0;
+ u vn = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ v7 = (u)zdefextern;
+ v8 = vc;
+ v9 = *(u*)(vfuncdef + 8UL);
+ v10 = ((u(*)())(v7))(v8, v9);
+ vd = v10;
+ if (*(u*)(vd + 72UL) != 2UL) goto b4;
+ v11 = (u)zdie;
+ v12 = (u)"duplicate function";
+ v13 = ((u(*)())(v11))(v12);
+ v13;
+b2: *(u*)(vd + 72UL) = 2UL;
+ *(u*)(vd + 104UL) = vfuncdef;
+ vn = *(u*)(*(u*)(*(u*)(vfuncdef + 8UL) + 16UL) + 8UL);
+b6: if (!(vn)) goto b12;
+ v14 = 0UL;
+b13: if (!(v14)) goto b10;
+ v29 = (u)zhoist_locals;
+ v30 = vc;
+ v31 = vd;
+ v32 = *(u*)(vfuncdef + 16UL);
+ v33 = ((u(*)())(v29))(v30, v31, v32);
+ v33;
return 0UL;
+b10: *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
+ *(u*)(*(u*)(vc + 48UL) + 88UL) = *(u*)(vn + 24UL);
+ *(u*)(*(u*)(vc + 48UL) + 96UL) = *(u*)(vn + 32UL);
+ vname = *(u*)(*(u*)(*(u*)(vn + 8UL) + 8UL) + 56UL);
+ v15 = (u)zprototype;
+ v16 = vc;
+ v17 = *(u*)(*(u*)(vn + 8UL) + 16UL);
+ v18 = ((u(*)())(v15))(v16, v17);
+ vt = v18;
+ v19 = (u)zfind;
+ v20 = vc;
+ v21 = *(u*)(vd + 32UL);
+ v22 = vname;
+ v23 = 1UL;
+ v24 = ((u(*)())(v19))(v20, v21, v22, v23);
+ vv = v24;
+ if (!(*(u*)(vv + 208UL))) goto b18;
+ v25 = (u)zcdie;
+ v26 = vc;
+ v27 = (u)"duplicate argument";
+ v28 = ((u(*)())(v25))(v26, v27);
+ v28;
+b16: *(u*)(vv + 208UL) = 1UL;
+ *(u*)(vv + 216UL) = vt;
+ vn = *(u*)(vn + 16UL);
+ goto b6;
+b18: goto b16;
+b12: v14 = 1UL;
+ goto b13;
+b4: goto b2;
}
-u zemit_sections(u vc) {
- u vat = 0;
- u vs = 0;
- u vy = 0;
- u vn = 0;
- u vhere = 0;
+u zdefunion(u vc, u vn) {
+ u vname = 0;
+ u vd = 0;
+ u v4 = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -12264,1028 +6873,1080 @@ u zemit_sections(u vc) {
u v36 = 0;
u v37 = 0;
u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- u v134 = 0;
- u v135 = 0;
- u v136 = 0;
- u v137 = 0;
- u v138 = 0;
- u v139 = 0;
- u v140 = 0;
- u v141 = 0;
- u v142 = 0;
- u v143 = 0;
- u v144 = 0;
- u v145 = 0;
- u v146 = 0;
- u v147 = 0;
- u v148 = 0;
- u v149 = 0;
- u v150 = 0;
- u v151 = 0;
- u v152 = 0;
- u v153 = 0;
- u v154 = 0;
- u v155 = 0;
- u v156 = 0;
- u v157 = 0;
- u v158 = 0;
- u v159 = 0;
- u v160 = 0;
- u v161 = 0;
- u v162 = 0;
- u v163 = 0;
- u v164 = 0;
- u v165 = 0;
- u v166 = 0;
- u v167 = 0;
- u v168 = 0;
- u v169 = 0;
- u v170 = 0;
- u v171 = 0;
- u v172 = 0;
- u v173 = 0;
- u v174 = 0;
- u v175 = 0;
- u v176 = 0;
- u v177 = 0;
- u v178 = 0;
- u v179 = 0;
- u v180 = 0;
- u v181 = 0;
- u v182 = 0;
- u v183 = 0;
- u v184 = 0;
- u v185 = 0;
- u v186 = 0;
- u v187 = 0;
- u v188 = 0;
- u v189 = 0;
- u v190 = 0;
- u v191 = 0;
- u v192 = 0;
- u v193 = 0;
- u v194 = 0;
- u v195 = 0;
- u v196 = 0;
- u v197 = 0;
- u v198 = 0;
- u v199 = 0;
- u v200 = 0;
- u v201 = 0;
- u v202 = 0;
- u v203 = 0;
- u v204 = 0;
- u v205 = 0;
- u v206 = 0;
- u v207 = 0;
- u v208 = 0;
- u v209 = 0;
- u v210 = 0;
- u v211 = 0;
- u v212 = 0;
- u v213 = 0;
- u v214 = 0;
- u v215 = 0;
- u v216 = 0;
- u v217 = 0;
- u v218 = 0;
- u v219 = 0;
- u v220 = 0;
- u v221 = 0;
- u v222 = 0;
- u v223 = 0;
- u v224 = 0;
- u v225 = 0;
- u v226 = 0;
- u v227 = 0;
- u v228 = 0;
- u v229 = 0;
- u v230 = 0;
- u v231 = 0;
- u v232 = 0;
- u v233 = 0;
- u v234 = 0;
- u v235 = 0;
- u v236 = 0;
- u v237 = 0;
- u v238 = 0;
- u v239 = 0;
- u v240 = 0;
- u v241 = 0;
- u v242 = 0;
- u v243 = 0;
- u v244 = 0;
- u v245 = 0;
- u v246 = 0;
- u v247 = 0;
- u v248 = 0;
- u v249 = 0;
- u v250 = 0;
- u v251 = 0;
- u v252 = 0;
- u v253 = 0;
- u v254 = 0;
- u v255 = 0;
- u v256 = 0;
- u v257 = 0;
- u v258 = 0;
- u v259 = 0;
- u v260 = 0;
- u v261 = 0;
- u v262 = 0;
- u v263 = 0;
- u v264 = 0;
- u v265 = 0;
- u v266 = 0;
- u v267 = 0;
- u v268 = 0;
- u v269 = 0;
- u v270 = 0;
- u v271 = 0;
- u v272 = 0;
- u v273 = 0;
- u v274 = 0;
- u v275 = 0;
- u v276 = 0;
- u v277 = 0;
- u v278 = 0;
- u v279 = 0;
- u v280 = 0;
- u v281 = 0;
- u v282 = 0;
- u v283 = 0;
- u v284 = 0;
- u v285 = 0;
- u v286 = 0;
- u v287 = 0;
- u v288 = 0;
- u v289 = 0;
- u v290 = 0;
- u v291 = 0;
- u v292 = 0;
- u v293 = 0;
- u v294 = 0;
- u v295 = 0;
- u v296 = 0;
- u v297 = 0;
- u v298 = 0;
- u v299 = 0;
- u v300 = 0;
- u v301 = 0;
- u v302 = 0;
- u v303 = 0;
- u v304 = 0;
- u v305 = 0;
- u v306 = 0;
- u v307 = 0;
- u v308 = 0;
- u v309 = 0;
- u v310 = 0;
- u v311 = 0;
- u v312 = 0;
- u v313 = 0;
- u v314 = 0;
- u v315 = 0;
- u v316 = 0;
- u v317 = 0;
- u v318 = 0;
- u v319 = 0;
- u v320 = 0;
- u v321 = 0;
- u v322 = 0;
- u v323 = 0;
- u v324 = 0;
- u v325 = 0;
- u v326 = 0;
- u v327 = 0;
- u v328 = 0;
- u v329 = 0;
- u v330 = 0;
- u v331 = 0;
- u v332 = 0;
- u v333 = 0;
- u v334 = 0;
- u v335 = 0;
- u v336 = 0;
- u v337 = 0;
- u v338 = 0;
- u v339 = 0;
- u v340 = 0;
- u v341 = 0;
- u v342 = 0;
- u v343 = 0;
- u v344 = 0;
- u v345 = 0;
- u v346 = 0;
- u v347 = 0;
- u v348 = 0;
- u v349 = 0;
- u v350 = 0;
- u v351 = 0;
- u v352 = 0;
- u v353 = 0;
- u v354 = 0;
- u v355 = 0;
- u v356 = 0;
- u v357 = 0;
- u v358 = 0;
- u v359 = 0;
- u v360 = 0;
- u v361 = 0;
- u v362 = 0;
- u v363 = 0;
- u v364 = 0;
- u v365 = 0;
- u v366 = 0;
- u v367 = 0;
- u v368 = 0;
- u v369 = 0;
- u v370 = 0;
- u v371 = 0;
- u v372 = 0;
- u v373 = 0;
- u v374 = 0;
- u v375 = 0;
- u v376 = 0;
- u v377 = 0;
- u v378 = 0;
- u v379 = 0;
- u v380 = 0;
- u v381 = 0;
- u v382 = 0;
- u v383 = 0;
- u v384 = 0;
- u v385 = 0;
- u v386 = 0;
- u v387 = 0;
- u v388 = 0;
- u v389 = 0;
- u v390 = 0;
- u v391 = 0;
- u v392 = 0;
- u v393 = 0;
- u v394 = 0;
- u v395 = 0;
- u v396 = 0;
- u v397 = 0;
- u v398 = 0;
- u v399 = 0;
- u v400 = 0;
- u v401 = 0;
- u v402 = 0;
- u v403 = 0;
- u v404 = 0;
- u v405 = 0;
- u v406 = 0;
- u v407 = 0;
- u v408 = 0;
- u v409 = 0;
- u v410 = 0;
- u v411 = 0;
- u v412 = 0;
- u v413 = 0;
- u v414 = 0;
- u v415 = 0;
- u v416 = 0;
- u v417 = 0;
- u v418 = 0;
- u v419 = 0;
- u v420 = 0;
- u v421 = 0;
- u v422 = 0;
- u v423 = 0;
- u v424 = 0;
- u v425 = 0;
- u v426 = 0;
- u v427 = 0;
- u v428 = 0;
- u v429 = 0;
- u v430 = 0;
- u v431 = 0;
- u v432 = 0;
- u v433 = 0;
- u v434 = 0;
- u v435 = 0;
- u v436 = 0;
- u v437 = 0;
- u v438 = 0;
- u v439 = 0;
- u v440 = 0;
- u v441 = 0;
- v6 = (u)zadd_symbol;
- v7 = vc;
- v8 = (u)"";
- v9 = 0UL;
- v10 = ((u(*)())v6)(v7, v8, v9);
+ vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
+ v7 = (u)zstrcmp;
+ v8 = vname;
+ v9 = (u)"int";
+ v10 = ((u(*)())(v7))(v8, v9);
+ if (!(v10)) goto b13;
+ v6 = 0UL;
+b14: if (!(v6)) goto b9;
+ v5 = 1UL;
+b11: if (!(v5)) goto b5;
+ v4 = 1UL;
+b7: if (!(v4)) goto b3;
+ v21 = (u)zcdie;
+ v22 = vc;
+ v23 = (u)"reserved word";
+ v24 = ((u(*)())(v21))(v22, v23);
+ v24;
+b1: v25 = (u)zfind;
+ v26 = vc;
+ v27 = vname;
+ v28 = 0UL;
+ v29 = 1UL;
+ v30 = ((u(*)())(v25))(v26, v27, v28, v29);
+ vd = v30;
+ if (!(*(u*)(vd + 128UL))) goto b30;
+ v31 = (u)zcdie;
+ v32 = vc;
+ v33 = (u)"duplicate struct";
+ v34 = ((u(*)())(v31))(v32, v33);
+ v34;
+b28: *(u*)(vd + 128UL) = 1UL;
+ *(u*)(vd + 152UL) = vn;
+ v35 = (u)zprototype;
+ v36 = vc;
+ v37 = *(u*)(vn + 8UL);
+ v38 = ((u(*)())(v35))(v36, v37);
+ *(u*)(vd + 160UL) = v38;
+ return 0UL;
+b30: goto b28;
+b3: goto b1;
+b5: v17 = (u)zstrcmp;
+ v18 = vname;
+ v19 = (u)"func";
+ v20 = ((u(*)())(v17))(v18, v19);
+ if (!(v20)) goto b23;
+ v16 = 0UL;
+b24: if (!(v16)) goto b21;
+ v4 = 1UL;
+ goto b7;
+b21: v4 = 0UL;
+ goto b7;
+b23: v16 = 1UL;
+ goto b24;
+b9: v12 = (u)zstrcmp;
+ v13 = vname;
+ v14 = (u)"byte";
+ v15 = ((u(*)())(v12))(v13, v14);
+ if (!(v15)) goto b18;
+ v11 = 0UL;
+b19: if (!(v11)) goto b16;
+ v5 = 1UL;
+ goto b11;
+b16: v5 = 0UL;
+ goto b11;
+b18: v11 = 1UL;
+ goto b19;
+b13: v6 = 1UL;
+ goto b14;
+}
+u zdfa_cmp(u vk, u vd) {
+ u vi = 0;
+ u v3 = 0;
+ vi = 0UL;
+b1: if (vi != *(u*)(vk + 16UL)) goto b7;
+ if (vi != *(u*)(vd + 56UL)) goto b7;
+ v3 = 1UL;
+b9: if (!(v3)) goto b5;
+ return 0UL;
+b5: if (vi != *(u*)(vk + 16UL)) goto b12;
+ return -1UL;
+b12: if (vi != *(u*)(vd + 56UL)) goto b15;
+ return 1UL;
+b15: if ((s)(*(u*)(*(u*)(*(u*)(vk + 8UL) + vi * 8UL) + 0UL)) <= (s)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vi * 8UL) + 0UL))) goto b18;
+ return 1UL;
+b18: if ((s)(*(u*)(*(u*)(*(u*)(vk + 8UL) + vi * 8UL) + 0UL)) >= (s)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vi * 8UL) + 0UL))) goto b21;
+ return -1UL;
+b21: vi = vi + 1UL;
+ goto b1;
+b7: v3 = 0UL;
+ goto b9;
+}
+u zdfa_minimize(u vc, u vd) {
+ u v_ctx[6] = {0};
+ u vctx = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ vctx = (u)v_ctx;
+ *(u*)(vctx + 0UL) = *(u*)(vc + 0UL);
+ v4 = (u)zdfamin_setup;
+ v5 = vctx;
+ v6 = vd;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zdfamin_refine;
+ v9 = vctx;
+ v10 = ((u(*)())(v8))(v9);
v10;
- v11 = (u)zfind_section;
- v12 = vc;
- v13 = (u)"";
- v14 = ((u(*)())v11)(v12, v13);
- vs = v14;
- *(u*)(vs + 16UL) = 0UL;
- *(u*)(vs + 24UL) = 0UL;
- vhere = *(u*)(vc + 24UL);
- v15 = (u)zemit_align;
- v16 = vc;
- v17 = 4096UL;
- v18 = 144UL;
- v19 = ((u(*)())v15)(v16, v17, v18);
- v19;
- v20 = (u)zadd_section;
- v21 = vc;
- v22 = (u)".rodata";
- v23 = 1UL;
- v24 = ((u(*)())v20)(v21, v22, v23);
- v24;
- v25 = (u)zfind_section;
- v26 = vc;
- v27 = (u)".text";
- v28 = ((u(*)())v25)(v26, v27);
- vs = v28;
- *(u*)(vs + 24UL) = vhere;
- v29 = (u)zemit_blobs;
- v30 = vc;
- v31 = *(u*)(vc + 120UL);
- v32 = ((u(*)())v29)(v30, v31);
- v32;
- v33 = (u)zemit_align;
- v34 = vc;
- v35 = 4096UL;
- v36 = 0UL;
- v37 = ((u(*)())v33)(v34, v35, v36);
- v37;
- v38 = (u)zadd_section;
- v39 = vc;
- v40 = (u)".strtab";
- v41 = 3UL;
- v42 = ((u(*)())v38)(v39, v40, v41);
- v42;
- vy = *(u*)(vc + 56UL);
-b9: if (!vy) goto b15;
- v43 = 0UL;
-b16: if (!v43) goto b13;
- v48 = (u)zadd_section;
- v49 = vc;
- v50 = (u)".symtab";
- v51 = 2UL;
- v52 = ((u(*)())v48)(v49, v50, v51);
- v52;
- vy = *(u*)(vc + 56UL);
-b19: if (!vy) goto b25;
- v53 = 0UL;
-b26: if (!v53) goto b23;
- v150 = (u)zfind_section;
- v151 = vc;
- v152 = (u)".strtab";
- v153 = ((u(*)())v150)(v151, v152);
- vs = v153;
- vn = *(u*)(vs + 32UL);
- v154 = (u)zfind_section;
- v155 = vc;
- v156 = (u)".symtab";
- v157 = ((u(*)())v154)(v155, v156);
- vs = v157;
- *(u*)(vs + 56UL) = vn;
- *(u*)(vs + 64UL) = 24UL;
- v158 = (u)zadd_section;
- v159 = vc;
- v160 = (u)".shstrtab";
- v161 = 3UL;
- v162 = ((u(*)())v158)(v159, v160, v161);
- v162;
- vs = *(u*)(vc + 64UL);
- vn = 0UL;
-b63: if (!vs) goto b69;
- v163 = 0UL;
-b70: if (!v163) goto b67;
- v168 = (u)zfind_section;
- v169 = vc;
- v170 = (u)".shstrtab";
- v171 = ((u(*)())v168)(v169, v170);
- vs = v171;
- *(u*)(vs + 24UL) = *(u*)(vc + 24UL);
- v172 = (u)zemit_align;
- v173 = vc;
- v174 = 16UL;
- v175 = 144UL;
- v176 = ((u(*)())v172)(v173, v174, v175);
- v176;
- vat = *(u*)(vc + 24UL);
- vs = *(u*)(vc + 64UL);
-b74: if (!vs) goto b80;
- v177 = 0UL;
-b81: if (!v177) goto b78;
- return vat;
-b78: vn = *(u*)(vs + 40UL);
- v178 = (u)zas_emit;
- v179 = vc;
- v180 = vn;
- v181 = ((u(*)())v178)(v179, v180);
- v181;
- v182 = (u)zas_emit;
- v183 = vc;
- v184 = vn >> 8UL;
- v185 = ((u(*)())v182)(v183, v184);
- v185;
- v186 = (u)zas_emit;
- v187 = vc;
- v188 = vn >> 16UL;
- v189 = ((u(*)())v186)(v187, v188);
- v189;
- v190 = (u)zas_emit;
- v191 = vc;
- v192 = vn >> 24UL;
- v193 = ((u(*)())v190)(v191, v192);
- v193;
- vn = *(u*)(vs + 48UL);
- v194 = (u)zas_emit;
- v195 = vc;
- v196 = vn;
- v197 = ((u(*)())v194)(v195, v196);
- v197;
- v198 = (u)zas_emit;
- v199 = vc;
- v200 = vn >> 8UL;
- v201 = ((u(*)())v198)(v199, v200);
- v201;
- v202 = (u)zas_emit;
- v203 = vc;
- v204 = vn >> 16UL;
- v205 = ((u(*)())v202)(v203, v204);
- v205;
- v206 = (u)zas_emit;
- v207 = vc;
- v208 = vn >> 24UL;
- v209 = ((u(*)())v206)(v207, v208);
- v209;
- v210 = (u)zstrcmp;
- v211 = *(u*)(vs + 8UL);
- v212 = (u)".text";
- v213 = ((u(*)())v210)(v211, v212);
- if (v213 != 0UL) goto b92;
- vn = 6UL;
-b90: v218 = (u)zas_emit;
- v219 = vc;
- v220 = vn;
- v221 = ((u(*)())v218)(v219, v220);
- v221;
- v222 = (u)zas_emit;
- v223 = vc;
- v224 = vn >> 8UL;
- v225 = ((u(*)())v222)(v223, v224);
- v225;
- v226 = (u)zas_emit;
- v227 = vc;
- v228 = vn >> 16UL;
- v229 = ((u(*)())v226)(v227, v228);
- v229;
- v230 = (u)zas_emit;
- v231 = vc;
- v232 = vn >> 24UL;
- v233 = ((u(*)())v230)(v231, v232);
- v233;
- v234 = (u)zas_emit;
- v235 = vc;
- v236 = vn >> 32UL;
- v237 = ((u(*)())v234)(v235, v236);
- v237;
- v238 = (u)zas_emit;
- v239 = vc;
- v240 = vn >> 40UL;
- v241 = ((u(*)())v238)(v239, v240);
- v241;
- v242 = (u)zas_emit;
- v243 = vc;
- v244 = vn >> 48UL;
- v245 = ((u(*)())v242)(v243, v244);
- v245;
- v246 = (u)zas_emit;
- v247 = vc;
- v248 = vn >> 56UL;
- v249 = ((u(*)())v246)(v247, v248);
- v249;
- if (*(u*)(vs + 16UL) != *(u*)(vs + 24UL)) goto b107;
- vn = 0UL;
-b105: v250 = (u)zas_emit;
- v251 = vc;
- v252 = vn;
- v253 = ((u(*)())v250)(v251, v252);
- v253;
- v254 = (u)zas_emit;
- v255 = vc;
- v256 = vn >> 8UL;
- v257 = ((u(*)())v254)(v255, v256);
- v257;
- v258 = (u)zas_emit;
- v259 = vc;
- v260 = vn >> 16UL;
- v261 = ((u(*)())v258)(v259, v260);
- v261;
- v262 = (u)zas_emit;
- v263 = vc;
- v264 = vn >> 24UL;
- v265 = ((u(*)())v262)(v263, v264);
- v265;
- v266 = (u)zas_emit;
- v267 = vc;
- v268 = vn >> 32UL;
- v269 = ((u(*)())v266)(v267, v268);
- v269;
- v270 = (u)zas_emit;
- v271 = vc;
- v272 = vn >> 40UL;
- v273 = ((u(*)())v270)(v271, v272);
- v273;
- v274 = (u)zas_emit;
- v275 = vc;
- v276 = vn >> 48UL;
- v277 = ((u(*)())v274)(v275, v276);
- v277;
- v278 = (u)zas_emit;
- v279 = vc;
- v280 = vn >> 56UL;
- v281 = ((u(*)())v278)(v279, v280);
- v281;
- vn = *(u*)(vs + 16UL);
- v282 = (u)zas_emit;
- v283 = vc;
- v284 = vn;
- v285 = ((u(*)())v282)(v283, v284);
- v285;
- v286 = (u)zas_emit;
- v287 = vc;
- v288 = vn >> 8UL;
- v289 = ((u(*)())v286)(v287, v288);
- v289;
- v290 = (u)zas_emit;
- v291 = vc;
- v292 = vn >> 16UL;
- v293 = ((u(*)())v290)(v291, v292);
- v293;
- v294 = (u)zas_emit;
- v295 = vc;
- v296 = vn >> 24UL;
- v297 = ((u(*)())v294)(v295, v296);
- v297;
- v298 = (u)zas_emit;
- v299 = vc;
- v300 = vn >> 32UL;
- v301 = ((u(*)())v298)(v299, v300);
- v301;
- v302 = (u)zas_emit;
- v303 = vc;
- v304 = vn >> 40UL;
- v305 = ((u(*)())v302)(v303, v304);
- v305;
- v306 = (u)zas_emit;
- v307 = vc;
- v308 = vn >> 48UL;
- v309 = ((u(*)())v306)(v307, v308);
- v309;
- v310 = (u)zas_emit;
- v311 = vc;
- v312 = vn >> 56UL;
- v313 = ((u(*)())v310)(v311, v312);
- v313;
- vn = *(u*)(vs + 24UL) - *(u*)(vs + 16UL);
- v314 = (u)zas_emit;
- v315 = vc;
- v316 = vn;
- v317 = ((u(*)())v314)(v315, v316);
- v317;
- v318 = (u)zas_emit;
- v319 = vc;
- v320 = vn >> 8UL;
- v321 = ((u(*)())v318)(v319, v320);
- v321;
- v322 = (u)zas_emit;
- v323 = vc;
- v324 = vn >> 16UL;
- v325 = ((u(*)())v322)(v323, v324);
- v325;
- v326 = (u)zas_emit;
- v327 = vc;
- v328 = vn >> 24UL;
- v329 = ((u(*)())v326)(v327, v328);
- v329;
- v330 = (u)zas_emit;
- v331 = vc;
- v332 = vn >> 32UL;
- v333 = ((u(*)())v330)(v331, v332);
- v333;
- v334 = (u)zas_emit;
- v335 = vc;
- v336 = vn >> 40UL;
- v337 = ((u(*)())v334)(v335, v336);
- v337;
- v338 = (u)zas_emit;
- v339 = vc;
- v340 = vn >> 48UL;
- v341 = ((u(*)())v338)(v339, v340);
- v341;
- v342 = (u)zas_emit;
- v343 = vc;
- v344 = vn >> 56UL;
- v345 = ((u(*)())v342)(v343, v344);
- v345;
- vn = *(u*)(vs + 56UL);
- v346 = (u)zas_emit;
- v347 = vc;
- v348 = vn;
- v349 = ((u(*)())v346)(v347, v348);
- v349;
- v350 = (u)zas_emit;
- v351 = vc;
- v352 = vn >> 8UL;
- v353 = ((u(*)())v350)(v351, v352);
- v353;
- v354 = (u)zas_emit;
- v355 = vc;
- v356 = vn >> 16UL;
- v357 = ((u(*)())v354)(v355, v356);
- v357;
- v358 = (u)zas_emit;
- v359 = vc;
- v360 = vn >> 24UL;
- v361 = ((u(*)())v358)(v359, v360);
- v361;
- if (*(u*)(vs + 48UL) != 2UL) goto b138;
- vn = 1UL;
-b136: v362 = (u)zas_emit;
- v363 = vc;
- v364 = vn;
- v365 = ((u(*)())v362)(v363, v364);
- v365;
- v366 = (u)zas_emit;
- v367 = vc;
- v368 = vn >> 8UL;
- v369 = ((u(*)())v366)(v367, v368);
- v369;
- v370 = (u)zas_emit;
- v371 = vc;
- v372 = vn >> 16UL;
- v373 = ((u(*)())v370)(v371, v372);
- v373;
- v374 = (u)zas_emit;
- v375 = vc;
- v376 = vn >> 24UL;
- v377 = ((u(*)())v374)(v375, v376);
- v377;
- v378 = (u)zas_emit;
- v379 = vc;
- v380 = 1UL;
- v381 = ((u(*)())v378)(v379, v380);
- v381;
- v382 = (u)zas_emit;
- v383 = vc;
- v384 = 0UL;
- v385 = ((u(*)())v382)(v383, v384);
- v385;
- v386 = (u)zas_emit;
- v387 = vc;
- v388 = 0UL;
- v389 = ((u(*)())v386)(v387, v388);
- v389;
- v390 = (u)zas_emit;
- v391 = vc;
- v392 = 0UL;
- v393 = ((u(*)())v390)(v391, v392);
- v393;
- v394 = (u)zas_emit;
- v395 = vc;
- v396 = 0UL;
- v397 = ((u(*)())v394)(v395, v396);
- v397;
- v398 = (u)zas_emit;
- v399 = vc;
- v400 = 0UL;
- v401 = ((u(*)())v398)(v399, v400);
- v401;
- v402 = (u)zas_emit;
- v403 = vc;
- v404 = 0UL;
- v405 = ((u(*)())v402)(v403, v404);
- v405;
- v406 = (u)zas_emit;
- v407 = vc;
- v408 = 0UL;
- v409 = ((u(*)())v406)(v407, v408);
- v409;
- vn = *(u*)(vs + 64UL);
- v410 = (u)zas_emit;
- v411 = vc;
- v412 = vn;
- v413 = ((u(*)())v410)(v411, v412);
- v413;
- v414 = (u)zas_emit;
- v415 = vc;
- v416 = vn >> 8UL;
- v417 = ((u(*)())v414)(v415, v416);
- v417;
- v418 = (u)zas_emit;
- v419 = vc;
- v420 = vn >> 16UL;
- v421 = ((u(*)())v418)(v419, v420);
- v421;
- v422 = (u)zas_emit;
- v423 = vc;
- v424 = vn >> 24UL;
- v425 = ((u(*)())v422)(v423, v424);
- v425;
- v426 = (u)zas_emit;
- v427 = vc;
- v428 = vn >> 32UL;
- v429 = ((u(*)())v426)(v427, v428);
- v429;
- v430 = (u)zas_emit;
- v431 = vc;
- v432 = vn >> 40UL;
- v433 = ((u(*)())v430)(v431, v432);
- v433;
- v434 = (u)zas_emit;
- v435 = vc;
- v436 = vn >> 48UL;
- v437 = ((u(*)())v434)(v435, v436);
- v437;
- v438 = (u)zas_emit;
- v439 = vc;
- v440 = vn >> 56UL;
- v441 = ((u(*)())v438)(v439, v440);
- v441;
- vs = *(u*)(vs + 0UL);
- goto b74;
-b138: vn = 0UL;
- goto b136;
-b107: vn = *(u*)(vs + 16UL) + 1048576UL;
- goto b105;
-b92: v214 = (u)zstrcmp;
- v215 = *(u*)(vs + 8UL);
- v216 = (u)".rodata";
- v217 = ((u(*)())v214)(v215, v216);
- if (v217 != 0UL) goto b95;
- vn = 2UL;
- goto b90;
-b95: vn = 0UL;
- goto b90;
-b80: v177 = 1UL;
- goto b81;
-b67: *(u*)(vs + 40UL) = vn;
- v164 = (u)zemit_strtab_str;
- v165 = vc;
- v166 = *(u*)(vs + 8UL);
- v167 = ((u(*)())v164)(v165, v166);
- vn = vn + v167;
- vs = *(u*)(vs + 0UL);
- goto b63;
-b69: v163 = 1UL;
- goto b70;
-b23: vn = *(u*)(vy + 24UL);
- v54 = (u)zas_emit;
- v55 = vc;
- v56 = vn;
- v57 = ((u(*)())v54)(v55, v56);
- v57;
- v58 = (u)zas_emit;
- v59 = vc;
- v60 = vn >> 8UL;
- v61 = ((u(*)())v58)(v59, v60);
- v61;
- v62 = (u)zas_emit;
- v63 = vc;
- v64 = vn >> 16UL;
- v65 = ((u(*)())v62)(v63, v64);
- v65;
- v66 = (u)zas_emit;
- v67 = vc;
- v68 = vn >> 24UL;
- v69 = ((u(*)())v66)(v67, v68);
- v69;
- if (!*(u*)(vy + 16UL)) goto b33;
- vn = 18UL;
-b31: v70 = (u)zas_emit;
- v71 = vc;
- v72 = vn;
- v73 = ((u(*)())v70)(v71, v72);
- v73;
- v74 = (u)zas_emit;
- v75 = vc;
- v76 = 0UL;
- v77 = ((u(*)())v74)(v75, v76);
- v77;
- if (!*(u*)(vy + 16UL)) goto b38;
- vn = 1UL;
-b36: v78 = (u)zas_emit;
- v79 = vc;
- v80 = vn;
- v81 = ((u(*)())v78)(v79, v80);
- v81;
- v82 = (u)zas_emit;
- v83 = vc;
- v84 = vn >> 8UL;
- v85 = ((u(*)())v82)(v83, v84);
- v85;
- if (!*(u*)(vy + 16UL)) goto b43;
- vn = *(u*)(*(u*)(vy + 16UL) + 8UL) + 1048576UL;
-b41: v86 = (u)zas_emit;
- v87 = vc;
- v88 = vn;
- v89 = ((u(*)())v86)(v87, v88);
- v89;
- v90 = (u)zas_emit;
- v91 = vc;
- v92 = vn >> 8UL;
- v93 = ((u(*)())v90)(v91, v92);
- v93;
- v94 = (u)zas_emit;
- v95 = vc;
- v96 = vn >> 16UL;
- v97 = ((u(*)())v94)(v95, v96);
+ v11 = (u)zdfamin_extract;
+ v12 = vctx;
+ v13 = vd;
+ v14 = ((u(*)())(v11))(v12, v13);
+ return v14;
+}
+u zdfakey_add(u vk, u vn) {
+ u vtmp = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ if (!(vn)) goto b9;
+ v4 = 0UL;
+b10: if (!(v4)) goto b5;
+ v3 = 1UL;
+b7: if (!(v3)) goto b3;
+ return 0UL;
+b3: *(u*)(vn + 64UL) = 1UL;
+ if (!(*(u*)(vk + 32UL))) goto b20;
+ v6 = 0UL;
+b21: if (!(v6)) goto b16;
+ v5 = 1UL;
+b18: if (!(v5)) goto b14;
+ *(u*)(vk + 32UL) = *(u*)(vn + 8UL);
+b12: if (*(u*)(vk + 16UL) != *(u*)(vk + 24UL)) goto b29;
+ if (*(u*)(vk + 24UL) != 0UL) goto b32;
+ *(u*)(vk + 24UL) = 16UL;
+b30: v8 = (u)zalloc;
+ v9 = *(u*)(vk + 0UL);
+ v10 = 8UL * *(u*)(vk + 24UL);
+ v11 = ((u(*)())(v8))(v9, v10);
+ vtmp = v11;
+ v12 = (u)zmemcpy;
+ v13 = vtmp;
+ v14 = *(u*)(vk + 8UL);
+ v15 = 8UL * *(u*)(vk + 16UL);
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ v16;
+ v17 = (u)zfree;
+ v18 = *(u*)(vk + 0UL);
+ v19 = *(u*)(vk + 8UL);
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ *(u*)(vk + 8UL) = vtmp;
+b27: *(u*)(*(u*)(vk + 8UL) + *(u*)(vk + 16UL) * 8UL) = vn;
+ *(u*)(vk + 16UL) = *(u*)(vk + 16UL) + 1UL;
+ if (!(*(u*)(vn + 32UL))) goto b40;
+ if (*(u*)(*(u*)(vn + 32UL) + 16UL) != -1UL) goto b40;
+ v21 = 1UL;
+b42: if (!(v21)) goto b38;
+ v22 = (u)zdfakey_add;
+ v23 = vk;
+ v24 = *(u*)(vn + 32UL);
+ v25 = ((u(*)())(v22))(v23, v24);
+ v25;
+b36: if (!(*(u*)(vn + 40UL))) goto b48;
+ if (*(u*)(*(u*)(vn + 40UL) + 16UL) != -1UL) goto b48;
+ v26 = 1UL;
+b50: if (!(v26)) goto b46;
+ v27 = (u)zdfakey_add;
+ v28 = vk;
+ v29 = *(u*)(vn + 40UL);
+ v30 = ((u(*)())(v27))(v28, v29);
+ v30;
+b44: return 0UL;
+b46: goto b44;
+b48: v26 = 0UL;
+ goto b50;
+b38: goto b36;
+b40: v21 = 0UL;
+ goto b42;
+b32: *(u*)(vk + 24UL) = *(u*)(vk + 24UL) * 2UL;
+ goto b30;
+b29: goto b27;
+b14: goto b12;
+b16: if (!(*(u*)(vn + 8UL))) goto b24;
+ if ((s)(*(u*)(vn + 8UL)) >= (s)(*(u*)(vk + 32UL))) goto b24;
+ v7 = 1UL;
+b26: if (!(v7)) goto b22;
+ v5 = 1UL;
+ goto b18;
+b22: v5 = 0UL;
+ goto b18;
+b24: v7 = 0UL;
+ goto b26;
+b20: v6 = 1UL;
+ goto b21;
+b5: if (!(*(u*)(vn + 64UL))) goto b11;
+ v3 = 1UL;
+ goto b7;
+b11: v3 = 0UL;
+ goto b7;
+b9: v4 = 1UL;
+ goto b10;
+}
+u zdfakey_clear(u vk) {
+ u vi = 0;
+ vi = 0UL;
+b1: if (vi != *(u*)(vk + 16UL)) goto b5;
+ *(u*)(vk + 32UL) = 0UL;
+ *(u*)(vk + 16UL) = 0UL;
+ return 0UL;
+b5: *(u*)(*(u*)(*(u*)(vk + 8UL) + vi * 8UL) + 64UL) = 0UL;
+ vi = vi + 1UL;
+ goto b1;
+}
+u zdfakey_sort(u vk) {
+ u vi = 0;
+ u vj = 0;
+ u vtmp = 0;
+ u v4 = 0;
+ vi = 1UL;
+b1: if ((s)(vi) < (s)(*(u*)(vk + 16UL))) goto b5;
+ return 0UL;
+b5: vj = vi;
+ vtmp = *(u*)(*(u*)(vk + 8UL) + vj * 8UL);
+b6: if (vj != 0UL) goto b12;
+ v4 = 1UL;
+b14: if (!(v4)) goto b10;
+ *(u*)(*(u*)(vk + 8UL) + vj * 8UL) = vtmp;
+ vi = vi + 1UL;
+ goto b1;
+b10: *(u*)(*(u*)(vk + 8UL) + vj * 8UL) = *(u*)(*(u*)(vk + 8UL) + (vj - 1UL) * 8UL);
+ vj = vj - 1UL;
+ goto b6;
+b12: if ((s)(*(u*)(*(u*)(*(u*)(vk + 8UL) + (vj - 1UL) * 8UL) + 0UL)) > (s)(*(u*)(vtmp + 0UL))) goto b15;
+ v4 = 1UL;
+ goto b14;
+b15: v4 = 0UL;
+ goto b14;
+}
+u zdfamin_extract(u vctx, u vd) {
+ u vs = 0;
+ u vg = 0;
+ u vch = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ if (!(vd)) goto b5;
+ v5 = 0UL;
+b6: if (!(v5)) goto b3;
+ return 0UL;
+b3: vs = *(u*)(*(u*)(vctx + 8UL) + (*(u*)(vd + 64UL) - 1UL) * 8UL);
+ if (!(*(u*)(vs + 40UL))) goto b9;
+ return *(u*)(vs + 40UL);
+b9: v6 = (u)zalloc;
+ v7 = *(u*)(vctx + 0UL);
+ v8 = 80UL;
+ v9 = ((u(*)())(v6))(v7, v8);
+ vg = v9;
+ *(u*)(vg + 32UL) = *(u*)(vd + 64UL) - 1UL;
+ *(u*)(vg + 72UL) = *(u*)(vd + 72UL);
+ v10 = (u)zalloc;
+ v11 = *(u*)(vctx + 0UL);
+ v12 = 8UL * 256UL;
+ v13 = ((u(*)())(v10))(v11, v12);
+ *(u*)(vg + 40UL) = v13;
+ *(u*)(vs + 40UL) = vg;
+ vch = 0UL;
+b12: if (vch != 256UL) goto b16;
+ return vg;
+b16: if (*(u*)(*(u*)(vd + 40UL) + vch * 8UL) == 0UL) goto b19;
+ v14 = (u)zdfamin_extract;
+ v15 = vctx;
+ v16 = *(u*)(*(u*)(vd + 40UL) + vch * 8UL);
+ v17 = ((u(*)())(v14))(v15, v16);
+ *(u*)(*(u*)(vg + 40UL) + vch * 8UL) = v17;
+b17: vch = vch + 1UL;
+ goto b12;
+b19: goto b17;
+b5: v5 = 1UL;
+ goto b6;
+}
+u zdfamin_refine(u vctx) {
+ u vs = 0;
+ u vi = 0;
+ u vp = 0;
+ u vch = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+b1: vs = *(u*)(vctx + 32UL);
+ if (!(vs)) goto b7;
+ v5 = 0UL;
+b8: if (!(v5)) goto b5;
+ return 0UL;
+b5: *(u*)(vctx + 32UL) = *(u*)(vs + 0UL);
+ *(u*)(vs + 8UL) = 0UL;
+ vi = 0UL;
+b9: if (vi != *(u*)(vctx + 16UL)) goto b13;
+ goto b1;
+b13: vp = *(u*)(*(u*)(vctx + 8UL) + vi * 8UL);
+ vch = 0UL;
+b14: if (vch != 256UL) goto b18;
+ vi = vi + 1UL;
+ goto b9;
+b18: v6 = (u)zdfamin_split;
+ v7 = vctx;
+ v8 = vp;
+ v9 = vs;
+ v10 = vch;
+ v11 = ((u(*)())(v6))(v7, v8, v9, v10);
+ v11;
+ vch = vch + 1UL;
+ goto b14;
+b7: v5 = 1UL;
+ goto b8;
+}
+u zdfamin_setup(u vctx, u vd) {
+ u vi = 0;
+ u vs = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ if (!(vd)) goto b9;
+ v5 = 0UL;
+b10: if (!(v5)) goto b5;
+ v4 = 1UL;
+b7: if (!(v4)) goto b3;
+ return 0UL;
+b3: *(u*)(vd + 64UL) = *(u*)(vd + 72UL) + 1UL;
+ v6 = (u)zensure_arr;
+ v7 = *(u*)(vctx + 0UL);
+ v8 = vctx + 8UL;
+ v9 = vctx + 24UL;
+ v10 = *(u*)(vd + 72UL) + 1UL;
+ v11 = 8UL;
+ v12 = ((u(*)())(v6))(v7, v8, v9, v10, v11);
+ v12;
+ vs = *(u*)(*(u*)(vctx + 8UL) + *(u*)(vd + 72UL) * 8UL);
+ if (!(vs)) goto b17;
+ v13 = 0UL;
+b18: if (!(v13)) goto b15;
+ v14 = (u)zalloc;
+ v15 = *(u*)(vctx + 0UL);
+ v16 = 48UL;
+ v17 = ((u(*)())(v14))(v15, v16);
+ vs = v17;
+ *(u*)(vs + 0UL) = *(u*)(vctx + 32UL);
+ *(u*)(vctx + 32UL) = vs;
+ *(u*)(vs + 8UL) = 1UL;
+ *(u*)(*(u*)(vctx + 8UL) + *(u*)(vd + 72UL) * 8UL) = vs;
+ if ((s)(*(u*)(vd + 72UL)) < (s)(*(u*)(vctx + 16UL))) goto b22;
+ *(u*)(vctx + 16UL) = *(u*)(vd + 72UL) + 1UL;
+b20:b13: v18 = (u)zensure_arr;
+ v19 = *(u*)(vctx + 0UL);
+ v20 = vs + 16UL;
+ v21 = vs + 32UL;
+ v22 = *(u*)(vs + 24UL) + 1UL;
+ v23 = 8UL;
+ v24 = ((u(*)())(v18))(v19, v20, v21, v22, v23);
+ v24;
+ *(u*)(*(u*)(vs + 16UL) + *(u*)(vs + 24UL) * 8UL) = vd;
+ *(u*)(vs + 24UL) = *(u*)(vs + 24UL) + 1UL;
+ vi = 0UL;
+b24: if (vi != 256UL) goto b28;
+ return 0UL;
+b28: v25 = (u)zdfamin_setup;
+ v26 = vctx;
+ v27 = *(u*)(*(u*)(vd + 40UL) + vi * 8UL);
+ v28 = ((u(*)())(v25))(v26, v27);
+ v28;
+ vi = vi + 1UL;
+ goto b24;
+b22: goto b20;
+b15: goto b13;
+b17: v13 = 1UL;
+ goto b18;
+b5: if (!(*(u*)(vd + 64UL))) goto b11;
+ v4 = 1UL;
+ goto b7;
+b11: v4 = 0UL;
+ goto b7;
+b9: v5 = 1UL;
+ goto b10;
+}
+u zdfamin_split(u vctx, u vp, u vs, u vch) {
+ u vi = 0;
+ u vk = 0;
+ u vm = 0;
+ u vd = 0;
+ u ve = 0;
+ u vnew_ind = 0;
+ u vt = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ vi = 0UL;
+ vk = 0UL;
+b1: if (vi != *(u*)(vp + 24UL)) goto b5;
+ if (vk != 0UL) goto b17;
+ v12 = 1UL;
+b19: if (!(v12)) goto b15;
+ return 0UL;
+b15: v13 = (u)zalloc;
+ v14 = *(u*)(vctx + 0UL);
+ v15 = 8UL * (*(u*)(vp + 24UL) - vk);
+ v16 = ((u(*)())(v13))(v14, v15);
+ vnew_ind = v16;
+ vi = 0UL;
+ vk = 0UL;
+ vm = 0UL;
+b22: if (vi != *(u*)(vp + 24UL)) goto b26;
+ *(u*)(vp + 24UL) = vk;
+ v18 = (u)zensure_arr;
+ v19 = *(u*)(vctx + 0UL);
+ v20 = vctx + 8UL;
+ v21 = vctx + 24UL;
+ v22 = *(u*)(vctx + 16UL) + 1UL;
+ v23 = 8UL;
+ v24 = ((u(*)())(v18))(v19, v20, v21, v22, v23);
+ v24;
+ v25 = (u)zalloc;
+ v26 = *(u*)(vctx + 0UL);
+ v27 = 48UL;
+ v28 = ((u(*)())(v25))(v26, v27);
+ vt = v28;
+ *(u*)(vt + 0UL) = *(u*)(vctx + 32UL);
+ *(u*)(vt + 16UL) = vnew_ind;
+ *(u*)(vt + 24UL) = vm;
+ *(u*)(vt + 32UL) = vm;
+ *(u*)(vctx + 32UL) = vt;
+ *(u*)(vt + 8UL) = 1UL;
+ *(u*)(*(u*)(vctx + 8UL) + *(u*)(vctx + 16UL) * 8UL) = vt;
+ *(u*)(vctx + 16UL) = *(u*)(vctx + 16UL) + 1UL;
+ if (!(*(u*)(vp + 8UL))) goto b40;
+ v29 = 0UL;
+b41: if (!(v29)) goto b38;
+ *(u*)(vp + 0UL) = *(u*)(vctx + 32UL);
+ *(u*)(vctx + 32UL) = vp;
+ *(u*)(vp + 8UL) = 1UL;
+b36: return 0UL;
+b38: goto b36;
+b40: v29 = 1UL;
+ goto b41;
+b26: vd = *(u*)(*(u*)(vp + 16UL) + vi * 8UL);
+ ve = *(u*)(*(u*)(vd + 40UL) + vch * 8UL);
+ if (!(ve)) goto b31;
+ if (*(u*)(*(u*)(vctx + 8UL) + (*(u*)(ve + 64UL) - 1UL) * 8UL) != vs) goto b31;
+ v17 = 1UL;
+b33: if (!(v17)) goto b29;
+ *(u*)(*(u*)(vp + 16UL) + vk * 8UL) = vd;
+ vk = vk + 1UL;
+b27: vi = vi + 1UL;
+ goto b22;
+b29: *(u*)(vnew_ind + vm * 8UL) = vd;
+ *(u*)(vd + 64UL) = *(u*)(vctx + 16UL) + 1UL;
+ vm = vm + 1UL;
+ goto b27;
+b31: v17 = 0UL;
+ goto b33;
+b17: if (vk != *(u*)(vp + 24UL)) goto b20;
+ v12 = 1UL;
+ goto b19;
+b20: v12 = 0UL;
+ goto b19;
+b5: vd = *(u*)(*(u*)(vp + 16UL) + vi * 8UL);
+ ve = *(u*)(*(u*)(vd + 40UL) + vch * 8UL);
+ if (!(ve)) goto b10;
+ if (*(u*)(*(u*)(vctx + 8UL) + (*(u*)(ve + 64UL) - 1UL) * 8UL) != vs) goto b10;
+ v11 = 1UL;
+b12: if (!(v11)) goto b8;
+ vk = vk + 1UL;
+b6: vi = vi + 1UL;
+ goto b1;
+b8: goto b6;
+b10: v11 = 0UL;
+ goto b12;
+}
+u zdie(u vmsg) {
+ u vlen = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ v2 = (u)zstrlen;
+ v3 = vmsg;
+ v4 = ((u(*)())(v2))(v3);
+ vlen = v4;
+ v5 = (u)zwrite;
+ v6 = 2UL;
+ v7 = vmsg;
+ v8 = vlen;
+ v9 = ((u(*)())(v5))(v6, v7, v8);
+ v9;
+ v10 = (u)zwrite;
+ v11 = 2UL;
+ v12 = (u)"\012";
+ v13 = 1UL;
+ v14 = ((u(*)())(v10))(v11, v12, v13);
+ v14;
+ v15 = (u)zexit;
+ v16 = 2UL;
+ v17 = ((u(*)())(v15))(v16);
+ v17;
+ return 0UL;
+}
+u zdolalr(u vc, u vname, u vout) {
+ u vact_table = 0;
+ u vgoto_table = 0;
+ u vtok = 0;
+ u vstate = 0;
+ u vterm_len = 0;
+ u vprod_len = 0;
+ u vl = 0;
+ u vfd = 0;
+ u vact = 0;
+ u vact_out = 0;
+ u vact_len = 0;
+ u vstack = 0;
+ u vstack_len = 0;
+ u vstack_cap = 0;
+ u vpos_table = 0;
+ u vcall_table = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ v19 = (u)zsetup_lex;
+ v20 = vc;
+ v21 = ((u(*)())(v19))(v20);
+ vl = v21;
+ v22 = (u)zopen;
+ v23 = vname;
+ v24 = 0UL;
+ v25 = 0UL;
+ v26 = ((u(*)())(v22))(v23, v24, v25);
+ vfd = v26;
+ if ((s)(vfd) >= (s)0UL) goto b5;
+ v27 = (u)zdie;
+ v28 = (u)"open failed";
+ v29 = ((u(*)())(v27))(v28);
+ v29;
+b3: v30 = (u)zopen_lex;
+ v31 = vl;
+ v32 = vfd;
+ v33 = ((u(*)())(v30))(v31, v32);
+ v33;
+ v34 = (u)zalloc;
+ v35 = *(u*)(vl + 0UL);
+ v37 = (u)zget_prod_len;
+ v38 = ((u(*)())(v37))();
+ v36 = 8UL * v38;
+ v39 = ((u(*)())(v34))(v35, v36);
+ vcall_table = v39;
+ v40 = (u)zget_act_table;
+ v41 = ((u(*)())(v40))();
+ vact_table = v41;
+ v42 = (u)zget_goto_table;
+ v43 = ((u(*)())(v42))();
+ vgoto_table = v43;
+ v44 = (u)zget_call_table;
+ v45 = vcall_table;
+ v46 = ((u(*)())(v44))(v45);
+ v46;
+ v47 = (u)zget_pos_table;
+ v48 = ((u(*)())(v47))();
+ vpos_table = v48;
+ v49 = (u)zget_term_len;
+ v50 = ((u(*)())(v49))();
+ vterm_len = v50;
+ v51 = (u)zget_prod_len;
+ v52 = ((u(*)())(v51))();
+ vprod_len = v52;
+ *(u*)(vc + 24UL) = vname;
+ *(u*)(vc + 32UL) = 1UL;
+ *(u*)(vc + 40UL) = 1UL;
+ vstate = 0UL;
+ *(u*)(vl + 144UL) = vl + 136UL;
+ v53 = (u)zgettok;
+ v54 = vl;
+ v55 = ((u(*)())(v53))(v54);
+ vtok = v55;
+b17: if ((s)(vtok) >= (s)0UL) goto b23;
+ if (!(*(u*)(vl + 40UL))) goto b23;
+ v56 = 1UL;
+b25: if (!(v56)) goto b21;
+ vtok = vterm_len - 1UL;
+b19: vact = *(u*)(vact_table + (vstate * vterm_len + vtok) * 8UL) & 255UL;
+ vact_out = *(u*)(vact_table + (vstate * vterm_len + vtok) * 8UL) >> 8UL & 16777215UL;
+ vact_len = *(u*)(vact_table + (vstate * vterm_len + vtok) * 8UL) >> 32UL;
+ if (vact != 115UL) goto b36;
+ v61 = (u)zensure_arr;
+ v62 = *(u*)(vl + 0UL);
+ v63 = vl + 168UL;
+ v64 = vl + 184UL;
+ v65 = *(u*)(vl + 176UL) + 1UL;
+ v66 = 8UL;
+ v67 = ((u(*)())(v61))(v62, v63, v64, v65, v66);
+ v67;
+ v68 = (u)zmemcpy;
+ v69 = *(u*)(vl + 168UL) + *(u*)(vl + 176UL) * 8UL;
+ v70 = *(u*)(vl + 144UL);
+ v71 = 8UL;
+ v72 = ((u(*)())(v68))(v69, v70, v71);
+ v72;
+ *(u*)(vl + 176UL) = *(u*)(vl + 176UL) + 1UL;
+ v73 = (u)zensure_arr;
+ v74 = *(u*)(vl + 0UL);
+ v75 = (u)&vstack;
+ v76 = (u)&vstack_cap;
+ v77 = vstack_len + 1UL;
+ v78 = 8UL;
+ v79 = ((u(*)())(v73))(v74, v75, v76, v77, v78);
+ v79;
+ *(u*)(vstack + vstack_len * 8UL) = vstate;
+ vstack_len = vstack_len + 1UL;
+ vstate = vact_out;
+ v80 = (u)zmemset;
+ v81 = *(u*)(vl + 144UL);
+ v82 = 0UL;
+ v83 = 8UL;
+ v84 = ((u(*)())(v80))(v81, v82, v83);
+ v84;
+ v85 = (u)zgettok;
+ v86 = vl;
+ v87 = ((u(*)())(v85))(v86);
+ vtok = v87;
+b34: goto b17;
+b36: if (vact != 114UL) goto b43;
+ v88 = (u)zensure_arr;
+ v89 = *(u*)(vl + 0UL);
+ v90 = vl + 168UL;
+ v91 = vl + 184UL;
+ v92 = *(u*)(vl + 176UL) + 1UL;
+ v93 = 8UL;
+ v94 = ((u(*)())(v88))(v89, v90, v91, v92, v93);
+ v94;
+ if (vact_len == 0UL) goto b47;
+ if ((s)(vact_len) <= (s)(vstack_len)) goto b50;
+ v95 = (u)zdie;
+ v96 = (u)"stack underflow";
+ v97 = ((u(*)())(v95))(v96);
v97;
- v98 = (u)zas_emit;
- v99 = vc;
- v100 = vn >> 24UL;
- v101 = ((u(*)())v98)(v99, v100);
- v101;
- v102 = (u)zas_emit;
- v103 = vc;
- v104 = vn >> 32UL;
- v105 = ((u(*)())v102)(v103, v104);
- v105;
- v106 = (u)zas_emit;
- v107 = vc;
- v108 = vn >> 40UL;
- v109 = ((u(*)())v106)(v107, v108);
- v109;
- v110 = (u)zas_emit;
- v111 = vc;
- v112 = vn >> 48UL;
- v113 = ((u(*)())v110)(v111, v112);
- v113;
- v114 = (u)zas_emit;
- v115 = vc;
- v116 = vn >> 56UL;
- v117 = ((u(*)())v114)(v115, v116);
- v117;
- v118 = (u)zas_emit;
- v119 = vc;
- v120 = 0UL;
- v121 = ((u(*)())v118)(v119, v120);
+b48: vstack_len = vstack_len - vact_len;
+ vstate = *(u*)(vstack + vstack_len * 8UL);
+ v98 = (u)zmemcpy;
+ v99 = *(u*)(vl + 168UL) + (*(u*)(vl + 176UL) - vact_len) * 8UL;
+ v100 = *(u*)(vl + 168UL) + (*(u*)(vl + 176UL) - 1UL) * 8UL;
+ v101 = 8UL;
+ v102 = ((u(*)())(v98))(v99, v100, v101);
+ v102;
+b45: *(u*)(vl + 176UL) = (*(u*)(vl + 176UL) - vact_len) + 1UL;
+ v112 = (u)zensure_arr;
+ v113 = *(u*)(vl + 0UL);
+ v114 = (u)&vstack;
+ v115 = (u)&vstack_cap;
+ v116 = vstack_len + 1UL;
+ v117 = 8UL;
+ v118 = ((u(*)())(v112))(v113, v114, v115, v116, v117);
+ v118;
+ *(u*)(vstack + vstack_len * 8UL) = vstate;
+ vstack_len = vstack_len + 1UL;
+ vstate = *(u*)(vgoto_table + (vstate * vprod_len + vact_out) * 8UL);
+ goto b34;
+b50: goto b48;
+b47: *(u*)(vl + 160UL) = *(u*)(vpos_table + vact_out * 8UL);
+ *(u*)(vl + 152UL) = *(u*)(vl + 168UL) + (*(u*)(vl + 176UL) - *(u*)(vl + 160UL)) * 8UL;
+ if (!(*(u*)(vcall_table + vact_out * 8UL))) goto b55;
+ *(u*)(vl + 144UL) = *(u*)(vl + 168UL) + *(u*)(vl + 176UL) * 8UL;
+ if (*(u*)(vl + 160UL) == 0UL) goto b60;
+ if (!(*(u*)((*(u*)(vl + 152UL) + 0UL * 8UL) + 0UL))) goto b60;
+ v103 = 1UL;
+b62: if (!(v103)) goto b58;
+ *(u*)(*(u*)(vl + 8UL) + 32UL) = *(u*)(*(u*)((*(u*)(vl + 152UL) + 0UL * 8UL) + 0UL) + 32UL);
+ *(u*)(*(u*)(vl + 8UL) + 40UL) = *(u*)(*(u*)((*(u*)(vl + 152UL) + 0UL * 8UL) + 0UL) + 40UL);
+b56: v104 = *(u*)(vcall_table + vact_out * 8UL);
+ v105 = vl;
+ v106 = ((u(*)())(v104))(v105);
+ v106;
+ *(u*)(vl + 144UL) = vl + 136UL;
+b53: goto b45;
+b58: *(u*)(*(u*)(vl + 8UL) + 32UL) = *(u*)(vl + 104UL);
+ *(u*)(*(u*)(vl + 8UL) + 40UL) = *(u*)(vl + 112UL);
+ goto b56;
+b60: v103 = 0UL;
+ goto b62;
+b55: v107 = (u)zmemset;
+ v108 = *(u*)(vl + 168UL) + *(u*)(vl + 176UL) * 8UL;
+ v109 = 0UL;
+ v110 = 8UL;
+ v111 = ((u(*)())(v107))(v108, v109, v110);
+ v111;
+ goto b53;
+b43: if (vact != 97UL) goto b67;
+ if (vtok == vterm_len - 1UL) goto b70;
+ v119 = (u)zdie;
+ v120 = (u)"accept not at eof";
+ v121 = ((u(*)())(v119))(v120);
v121;
- v122 = (u)zas_emit;
- v123 = vc;
- v124 = 0UL;
- v125 = ((u(*)())v122)(v123, v124);
+b68: return *(u*)(vl + 168UL) + 0UL * 8UL;
+b70: goto b68;
+b67: v122 = (u)zfputs;
+ v123 = 0UL;
+ v124 = (u)"on ";
+ v125 = ((u(*)())(v122))(v123, v124);
v125;
- v126 = (u)zas_emit;
- v127 = vc;
- v128 = 0UL;
- v129 = ((u(*)())v126)(v127, v128);
+ v126 = (u)zfputs;
+ v127 = 0UL;
+ v128 = vname;
+ v129 = ((u(*)())(v126))(v127, v128);
v129;
- v130 = (u)zas_emit;
- v131 = vc;
- v132 = 0UL;
- v133 = ((u(*)())v130)(v131, v132);
+ v130 = (u)zfputs;
+ v131 = 0UL;
+ v132 = (u)":";
+ v133 = ((u(*)())(v130))(v131, v132);
v133;
- v134 = (u)zas_emit;
- v135 = vc;
- v136 = 0UL;
- v137 = ((u(*)())v134)(v135, v136);
+ v134 = (u)zfputd;
+ v135 = 0UL;
+ v136 = *(u*)(vl + 104UL);
+ v137 = ((u(*)())(v134))(v135, v136);
v137;
- v138 = (u)zas_emit;
- v139 = vc;
- v140 = 0UL;
- v141 = ((u(*)())v138)(v139, v140);
+ v138 = (u)zfputs;
+ v139 = 0UL;
+ v140 = (u)":";
+ v141 = ((u(*)())(v138))(v139, v140);
v141;
- v142 = (u)zas_emit;
- v143 = vc;
- v144 = 0UL;
- v145 = ((u(*)())v142)(v143, v144);
+ v142 = (u)zfputd;
+ v143 = 0UL;
+ v144 = *(u*)(vl + 112UL);
+ v145 = ((u(*)())(v142))(v143, v144);
v145;
- v146 = (u)zas_emit;
- v147 = vc;
- v148 = 0UL;
- v149 = ((u(*)())v146)(v147, v148);
- v149;
- vy = *(u*)(vy + 0UL);
+ v146 = (u)zdie;
+ v147 = (u)" syntax error";
+ v148 = ((u(*)())(v146))(v147);
+ v148;
+ goto b34;
+b21: if ((s)(vtok) >= (s)0UL) goto b29;
+ v57 = 1UL;
+b31: if (!(v57)) goto b27;
+ v58 = (u)zdie;
+ v59 = (u)"invalid token";
+ v60 = ((u(*)())(v58))(v59);
+ v60;
goto b19;
-b43: vn = 0UL;
- goto b41;
-b38: vn = 0UL;
- goto b36;
-b33: vn = 0UL;
+b27: goto b19;
+b29: if ((s)(vtok) < (s)(vterm_len)) goto b32;
+ v57 = 1UL;
goto b31;
-b25: v53 = 1UL;
- goto b26;
-b13: *(u*)(vy + 24UL) = vn;
- v44 = (u)zemit_strtab_str;
- v45 = vc;
- v46 = *(u*)(vy + 8UL);
- v47 = ((u(*)())v44)(v45, v46);
- vn = vn + v47;
- vy = *(u*)(vy + 0UL);
+b32: v57 = 0UL;
+ goto b31;
+b23: v56 = 0UL;
+ goto b25;
+b5: goto b3;
+}
+u zemit(u vc, u vx) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ v2 = (u)zemit_hook;
+ v3 = vc;
+ v4 = ((u(*)())(v2))(v3);
+ v4;
+ v5 = (u)zreserve;
+ v6 = vc;
+ v7 = 1UL;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ *(b*)(*(u*)(*(u*)(vc + 40UL) + 8UL) + *(u*)(*(u*)(vc + 40UL) + 16UL) * 1UL) = vx;
+ *(u*)(*(u*)(vc + 40UL) + 16UL) = *(u*)(*(u*)(vc + 40UL) + 16UL) + 1UL;
+ *(u*)(vc + 24UL) = *(u*)(vc + 24UL) + 1UL;
+ return 0UL;
+}
+u zemit_align(u vc, u vn, u vb) {
+ u vpad = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ vpad = *(u*)(vc + 24UL) & vn - 1UL;
+ if (vpad != 0UL) goto b3;
+ return 0UL;
+b3:b4: if (vpad != vn) goto b8;
+ return 0UL;
+b8: v4 = (u)zas_emit;
+ v5 = vc;
+ v6 = vb;
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ vpad = vpad + 1UL;
+ goto b4;
+}
+u zemit_blobs(u vc, u vb) {
+ u vi = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ if (!(vb)) goto b5;
+ v3 = 0UL;
+b6: if (!(v3)) goto b3;
+ return 0UL;
+b3: v4 = (u)zemit_blobs;
+ v5 = vc;
+ v6 = *(u*)(vb + 0UL);
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+ v8 = (u)zfixup_label;
+ v9 = vc;
+ v10 = *(u*)(vb + 16UL);
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ vi = 0UL;
+b9: if (vi != *(u*)(vb + 32UL)) goto b13;
+ v16 = (u)zemit_blobs;
+ v17 = vc;
+ v18 = *(u*)(vb + 8UL);
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ return 0UL;
+b13: v12 = (u)zas_emit;
+ v13 = vc;
+ v14 = (u)*(b*)(*(u*)(vb + 24UL) + vi * 1UL);
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ vi = vi + 1UL;
goto b9;
-b15: v43 = 1UL;
- goto b16;
+b5: v3 = 1UL;
+ goto b6;
}
-u zemit_ssr(u vc) {
- u vd = 0;
- u vv = 0;
+u zemit_hook(u vc) {
+ u v1 = 0;
+ u v2 = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
@@ -13318,6 +7979,117 @@ u zemit_ssr(u vc) {
u v32 = 0;
u v33 = 0;
u v34 = 0;
+ if (!(*(u*)(vc + 80UL))) goto b5;
+ v1 = 0UL;
+b6: if (!(v1)) goto b3;
+ *(u*)(vc + 112UL) = *(u*)(vc + 96UL);
+ *(u*)(vc + 104UL) = *(u*)(vc + 88UL);
+b1: if (*(u*)(vc + 96UL) != *(u*)(vc + 112UL)) goto b11;
+ if (*(u*)(vc + 88UL) != *(u*)(vc + 104UL)) goto b15;
+ v3 = 1UL;
+b17: if (!(v3)) goto b11;
+ v2 = 1UL;
+b13: if (!(v2)) goto b9;
+ return 0UL;
+b9: v11 = (u)zfputh;
+ v12 = *(u*)(vc + 80UL);
+ v13 = *(u*)(vc + 24UL) + 1048576UL;
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+ v15 = (u)zfputs;
+ v16 = *(u*)(vc + 80UL);
+ v17 = (u)"\011";
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
+ if (!(*(u*)(vc + 88UL))) goto b35;
+ v19 = (u)zfputs;
+ v20 = *(u*)(vc + 80UL);
+ v21 = *(u*)(vc + 88UL);
+ v22 = ((u(*)())(v19))(v20, v21);
+ v22;
+b33: v23 = (u)zfputs;
+ v24 = *(u*)(vc + 80UL);
+ v25 = (u)":";
+ v26 = ((u(*)())(v23))(v24, v25);
+ v26;
+ v27 = (u)zfputd;
+ v28 = *(u*)(vc + 80UL);
+ v29 = *(u*)(vc + 96UL);
+ v30 = ((u(*)())(v27))(v28, v29);
+ v30;
+ v31 = (u)zfputs;
+ v32 = *(u*)(vc + 80UL);
+ v33 = (u)"\012";
+ v34 = ((u(*)())(v31))(v32, v33);
+ v34;
+ *(u*)(vc + 112UL) = *(u*)(vc + 96UL);
+ *(u*)(vc + 104UL) = *(u*)(vc + 88UL);
+ return 0UL;
+b35: goto b33;
+b11: v2 = 0UL;
+ goto b13;
+b15: if (!(*(u*)(vc + 88UL))) goto b24;
+ if (!(*(u*)(vc + 104UL))) goto b24;
+ v5 = 1UL;
+b26: if (!(v5)) goto b20;
+ v7 = (u)zstrcmp;
+ v8 = *(u*)(vc + 88UL);
+ v9 = *(u*)(vc + 104UL);
+ v10 = ((u(*)())(v7))(v8, v9);
+ if (!(v10)) goto b28;
+ v6 = 0UL;
+b29: if (!(v6)) goto b20;
+ v4 = 1UL;
+b22: if (!(v4)) goto b18;
+ v3 = 1UL;
+ goto b17;
+b18: v3 = 0UL;
+ goto b17;
+b20: v4 = 0UL;
+ goto b22;
+b28: v6 = 1UL;
+ goto b29;
+b24: v5 = 0UL;
+ goto b26;
+b3: goto b1;
+b5: v1 = 1UL;
+ goto b6;
+}
+u zemit_sections(u vc) {
+ u vat = 0;
+ u vs = 0;
+ u vy = 0;
+ u vn = 0;
+ u vhere = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
u v35 = 0;
u v36 = 0;
u v37 = 0;
@@ -13725,747 +8497,621 @@ u zemit_ssr(u vc) {
u v439 = 0;
u v440 = 0;
u v441 = 0;
- u v442 = 0;
- u v443 = 0;
- u v444 = 0;
- u v445 = 0;
- u v446 = 0;
- u v447 = 0;
- u v448 = 0;
- u v449 = 0;
- u v450 = 0;
- u v451 = 0;
- u v452 = 0;
- u v453 = 0;
- u v454 = 0;
- u v455 = 0;
- u v456 = 0;
- u v457 = 0;
- u v458 = 0;
- u v459 = 0;
- u v460 = 0;
- u v461 = 0;
- u v462 = 0;
- u v463 = 0;
- u v464 = 0;
- u v465 = 0;
- u v466 = 0;
- u v467 = 0;
- u v468 = 0;
- u v469 = 0;
- u v470 = 0;
- u v471 = 0;
- u v472 = 0;
- u v473 = 0;
- u v474 = 0;
- u v475 = 0;
- u v476 = 0;
- u v477 = 0;
- u v478 = 0;
- u v479 = 0;
- u v480 = 0;
- u v481 = 0;
- u v482 = 0;
- u v483 = 0;
- u v484 = 0;
- u v485 = 0;
- u v486 = 0;
- u v487 = 0;
- u v488 = 0;
- u v489 = 0;
- u v490 = 0;
- u v491 = 0;
- u v492 = 0;
- u v493 = 0;
- u v494 = 0;
- u v495 = 0;
- u v496 = 0;
- u v497 = 0;
- u v498 = 0;
- u v499 = 0;
- u v500 = 0;
- u v501 = 0;
- u v502 = 0;
- u v503 = 0;
- u v504 = 0;
- u v505 = 0;
- u v506 = 0;
- u v507 = 0;
- u v508 = 0;
- u v509 = 0;
- u v510 = 0;
- u v511 = 0;
- u v512 = 0;
- u v513 = 0;
- u v514 = 0;
- u v515 = 0;
- u v516 = 0;
- u v517 = 0;
- u v518 = 0;
- u v519 = 0;
- u v520 = 0;
- u v521 = 0;
- u v522 = 0;
- u v523 = 0;
- u v524 = 0;
- u v525 = 0;
- u v526 = 0;
- v3 = (u)zfind;
- v4 = vc;
- v5 = (u)"global";
- v6 = (u)"_save";
- v7 = 0UL;
- v8 = ((u(*)())v3)(v4, v5, v6, v7);
- vv = v8;
- if (!vv) goto b10;
- v10 = 0UL;
-b11: if (!v10) goto b6;
- v9 = 1UL;
-b8: if (!v9) goto b4;
- v12 = (u)zcdie;
- v13 = vc;
- v14 = (u)"no _save";
- v15 = ((u(*)())v12)(v13, v14);
- v15;
-b2: v16 = (u)zas_emit;
- v17 = *(u*)(vc + 48UL);
- v18 = 101UL;
- v19 = ((u(*)())v16)(v17, v18);
+ v6 = (u)zadd_symbol;
+ v7 = vc;
+ v8 = (u)"";
+ v9 = 0UL;
+ v10 = ((u(*)())(v6))(v7, v8, v9);
+ v10;
+ v11 = (u)zfind_section;
+ v12 = vc;
+ v13 = (u)"";
+ v14 = ((u(*)())(v11))(v12, v13);
+ vs = v14;
+ *(u*)(vs + 16UL) = 0UL;
+ *(u*)(vs + 24UL) = 0UL;
+ vhere = *(u*)(vc + 24UL);
+ v15 = (u)zemit_align;
+ v16 = vc;
+ v17 = 4096UL;
+ v18 = 0UL;
+ v19 = ((u(*)())(v15))(v16, v17, v18);
v19;
- v20 = (u)zas_modra;
- v21 = *(u*)(vc + 48UL);
- v22 = 137UL;
- v23 = 4UL;
- v24 = *(u*)(vv + 184UL);
- v25 = ((u(*)())v20)(v21, v22, v23, v24);
- v25;
- v26 = (u)zfind;
- v27 = vc;
- v28 = (u)"global";
- v29 = (u)"curtask";
- v30 = 0UL;
- v31 = ((u(*)())v26)(v27, v28, v29, v30);
- vv = v31;
- if (!vv) goto b28;
- v33 = 0UL;
-b29: if (!v33) goto b24;
- v32 = 1UL;
-b26: if (!v32) goto b22;
- v35 = (u)zcdie;
- v36 = vc;
- v37 = (u)"no global.curtask";
- v38 = ((u(*)())v35)(v36, v37);
- v38;
-b20: v39 = (u)zas_emit;
- v40 = *(u*)(vc + 48UL);
- v41 = 101UL;
- v42 = ((u(*)())v39)(v40, v41);
+ v20 = (u)zadd_section;
+ v21 = vc;
+ v22 = (u)".rodata";
+ v23 = 1UL;
+ v24 = ((u(*)())(v20))(v21, v22, v23);
+ v24;
+ v25 = (u)zfind_section;
+ v26 = vc;
+ v27 = (u)".text";
+ v28 = ((u(*)())(v25))(v26, v27);
+ vs = v28;
+ *(u*)(vs + 24UL) = vhere;
+ v29 = (u)zemit_blobs;
+ v30 = vc;
+ v31 = *(u*)(vc + 120UL);
+ v32 = ((u(*)())(v29))(v30, v31);
+ v32;
+ v33 = (u)zemit_align;
+ v34 = vc;
+ v35 = 4096UL;
+ v36 = 0UL;
+ v37 = ((u(*)())(v33))(v34, v35, v36);
+ v37;
+ v38 = (u)zadd_section;
+ v39 = vc;
+ v40 = (u)".strtab";
+ v41 = 3UL;
+ v42 = ((u(*)())(v38))(v39, v40, v41);
v42;
- v43 = (u)zas_modra;
- v44 = *(u*)(vc + 48UL);
- v45 = 139UL;
- v46 = 4UL;
- v47 = *(u*)(vv + 184UL);
- v48 = ((u(*)())v43)(v44, v45, v46, v47);
- v48;
- v49 = (u)zfind;
- v50 = vc;
- v51 = (u)"task";
- v52 = (u)"stack";
+ vy = *(u*)(vc + 56UL);
+b9: if (!(vy)) goto b15;
+ v43 = 0UL;
+b16: if (!(v43)) goto b13;
+ v48 = (u)zadd_section;
+ v49 = vc;
+ v50 = (u)".symtab";
+ v51 = 2UL;
+ v52 = ((u(*)())(v48))(v49, v50, v51);
+ v52;
+ vy = *(u*)(vc + 56UL);
+b19: if (!(vy)) goto b25;
v53 = 0UL;
- v54 = ((u(*)())v49)(v50, v51, v52, v53);
- vv = v54;
- if (!vv) goto b46;
- v56 = 0UL;
-b47: if (!v56) goto b42;
- v55 = 1UL;
-b44: if (!v55) goto b40;
- v58 = (u)zcdie;
- v59 = vc;
- v60 = (u)"no task.stack";
- v61 = ((u(*)())v58)(v59, v60);
- v61;
-b38: v62 = (u)zas_modrm;
- v63 = *(u*)(vc + 48UL);
- v64 = 139UL;
- v65 = 4UL;
- v66 = 4UL;
- v67 = 0UL;
- v68 = 0UL;
- v69 = *(u*)(vv + 184UL);
- v70 = ((u(*)())v62)(v63, v64, v65, v66, v67, v68, v69);
- v70;
- v71 = (u)zas_modri;
- v72 = *(u*)(vc + 48UL);
- v73 = 129UL;
- v74 = 4UL;
- v75 = 4096UL - 176UL;
- v76 = ((u(*)())v71)(v72, v73, v74, v75);
- v76;
- v77 = (u)zas_modrm;
- v78 = *(u*)(vc + 48UL);
- v79 = 137UL;
- v80 = 0UL;
- v81 = 4UL;
- v82 = 0UL;
- v83 = 0UL;
- v84 = 0UL;
- v85 = ((u(*)())v77)(v78, v79, v80, v81, v82, v83, v84);
- v85;
- v86 = (u)zas_modrm;
- v87 = *(u*)(vc + 48UL);
- v88 = 137UL;
- v89 = 2UL;
- v90 = 4UL;
- v91 = 0UL;
- v92 = 0UL;
- v93 = 16UL;
- v94 = ((u(*)())v86)(v87, v88, v89, v90, v91, v92, v93);
- v94;
- v95 = (u)zas_modrm;
- v96 = *(u*)(vc + 48UL);
- v97 = 137UL;
- v98 = 3UL;
- v99 = 4UL;
- v100 = 0UL;
- v101 = 0UL;
- v102 = 24UL;
- v103 = ((u(*)())v95)(v96, v97, v98, v99, v100, v101, v102);
- v103;
- v104 = (u)zas_modrm;
- v105 = *(u*)(vc + 48UL);
- v106 = 137UL;
- v107 = 5UL;
- v108 = 4UL;
- v109 = 0UL;
- v110 = 0UL;
- v111 = 40UL;
- v112 = ((u(*)())v104)(v105, v106, v107, v108, v109, v110, v111);
- v112;
- v113 = (u)zas_modrm;
- v114 = *(u*)(vc + 48UL);
- v115 = 137UL;
- v116 = 6UL;
- v117 = 4UL;
- v118 = 0UL;
- v119 = 0UL;
- v120 = 48UL;
- v121 = ((u(*)())v113)(v114, v115, v116, v117, v118, v119, v120);
- v121;
- v122 = (u)zas_modrm;
- v123 = *(u*)(vc + 48UL);
- v124 = 137UL;
- v125 = 7UL;
- v126 = 4UL;
- v127 = 0UL;
- v128 = 0UL;
- v129 = 56UL;
- v130 = ((u(*)())v122)(v123, v124, v125, v126, v127, v128, v129);
- v130;
- v131 = (u)zas_modrm;
- v132 = *(u*)(vc + 48UL);
- v133 = 137UL;
- v134 = 8UL;
- v135 = 4UL;
- v136 = 0UL;
- v137 = 0UL;
- v138 = 64UL;
- v139 = ((u(*)())v131)(v132, v133, v134, v135, v136, v137, v138);
- v139;
- v140 = (u)zas_modrm;
- v141 = *(u*)(vc + 48UL);
- v142 = 137UL;
- v143 = 9UL;
- v144 = 4UL;
- v145 = 0UL;
- v146 = 0UL;
- v147 = 72UL;
- v148 = ((u(*)())v140)(v141, v142, v143, v144, v145, v146, v147);
- v148;
- v149 = (u)zas_modrm;
- v150 = *(u*)(vc + 48UL);
- v151 = 137UL;
- v152 = 10UL;
- v153 = 4UL;
- v154 = 0UL;
- v155 = 0UL;
- v156 = 80UL;
- v157 = ((u(*)())v149)(v150, v151, v152, v153, v154, v155, v156);
- v157;
- v158 = (u)zas_modrm;
- v159 = *(u*)(vc + 48UL);
- v160 = 137UL;
- v161 = 12UL;
- v162 = 4UL;
+b26: if (!(v53)) goto b23;
+ v150 = (u)zfind_section;
+ v151 = vc;
+ v152 = (u)".strtab";
+ v153 = ((u(*)())(v150))(v151, v152);
+ vs = v153;
+ vn = *(u*)(vs + 32UL);
+ v154 = (u)zfind_section;
+ v155 = vc;
+ v156 = (u)".symtab";
+ v157 = ((u(*)())(v154))(v155, v156);
+ vs = v157;
+ *(u*)(vs + 56UL) = vn;
+ *(u*)(vs + 64UL) = 24UL;
+ v158 = (u)zadd_section;
+ v159 = vc;
+ v160 = (u)".shstrtab";
+ v161 = 3UL;
+ v162 = ((u(*)())(v158))(v159, v160, v161);
+ v162;
+ vs = *(u*)(vc + 64UL);
+ vn = 0UL;
+b63: if (!(vs)) goto b69;
v163 = 0UL;
- v164 = 0UL;
- v165 = 96UL;
- v166 = ((u(*)())v158)(v159, v160, v161, v162, v163, v164, v165);
- v166;
- v167 = (u)zas_modrm;
- v168 = *(u*)(vc + 48UL);
- v169 = 137UL;
- v170 = 13UL;
- v171 = 4UL;
- v172 = 0UL;
- v173 = 0UL;
- v174 = 104UL;
- v175 = ((u(*)())v167)(v168, v169, v170, v171, v172, v173, v174);
- v175;
- v176 = (u)zas_modrm;
- v177 = *(u*)(vc + 48UL);
- v178 = 137UL;
- v179 = 14UL;
- v180 = 4UL;
- v181 = 0UL;
- v182 = 0UL;
- v183 = 112UL;
- v184 = ((u(*)())v176)(v177, v178, v179, v180, v181, v182, v183);
- v184;
- v185 = (u)zas_modrm;
- v186 = *(u*)(vc + 48UL);
- v187 = 137UL;
- v188 = 15UL;
- v189 = 4UL;
- v190 = 0UL;
- v191 = 0UL;
- v192 = 120UL;
- v193 = ((u(*)())v185)(v186, v187, v188, v189, v190, v191, v192);
+b70: if (!(v163)) goto b67;
+ v168 = (u)zfind_section;
+ v169 = vc;
+ v170 = (u)".shstrtab";
+ v171 = ((u(*)())(v168))(v169, v170);
+ vs = v171;
+ *(u*)(vs + 24UL) = *(u*)(vc + 24UL);
+ v172 = (u)zemit_align;
+ v173 = vc;
+ v174 = 16UL;
+ v175 = 0UL;
+ v176 = ((u(*)())(v172))(v173, v174, v175);
+ v176;
+ vat = *(u*)(vc + 24UL);
+ vs = *(u*)(vc + 64UL);
+b74: if (!(vs)) goto b80;
+ v177 = 0UL;
+b81: if (!(v177)) goto b78;
+ return vat;
+b78: vn = *(u*)(vs + 40UL);
+ v178 = (u)zas_emit;
+ v179 = vc;
+ v180 = vn;
+ v181 = ((u(*)())(v178))(v179, v180);
+ v181;
+ v182 = (u)zas_emit;
+ v183 = vc;
+ v184 = vn >> 8UL;
+ v185 = ((u(*)())(v182))(v183, v184);
+ v185;
+ v186 = (u)zas_emit;
+ v187 = vc;
+ v188 = vn >> 16UL;
+ v189 = ((u(*)())(v186))(v187, v188);
+ v189;
+ v190 = (u)zas_emit;
+ v191 = vc;
+ v192 = vn >> 24UL;
+ v193 = ((u(*)())(v190))(v191, v192);
v193;
- v194 = (u)zas_modrm;
- v195 = *(u*)(vc + 48UL);
- v196 = 137UL;
- v197 = 1UL;
- v198 = 4UL;
- v199 = 0UL;
- v200 = 0UL;
- v201 = 128UL;
- v202 = ((u(*)())v194)(v195, v196, v197, v198, v199, v200, v201);
- v202;
- v203 = (u)zas_modrm;
- v204 = *(u*)(vc + 48UL);
- v205 = 137UL;
- v206 = 11UL;
- v207 = 4UL;
- v208 = 0UL;
- v209 = 0UL;
- v210 = 136UL;
- v211 = ((u(*)())v203)(v204, v205, v206, v207, v208, v209, v210);
- v211;
- v212 = (u)zas_modrr;
- v213 = *(u*)(vc + 48UL);
- v214 = 51UL;
- v215 = 0UL;
- v216 = 0UL;
- v217 = ((u(*)())v212)(v213, v214, v215, v216);
- v217;
- v218 = (u)zas_modrm;
- v219 = *(u*)(vc + 48UL);
- v220 = 137UL;
- v221 = 0UL;
- v222 = 4UL;
- v223 = 0UL;
- v224 = 0UL;
- v225 = 8UL;
- v226 = ((u(*)())v218)(v219, v220, v221, v222, v223, v224, v225);
- v226;
- v227 = (u)zas_modrm;
- v228 = *(u*)(vc + 48UL);
- v229 = 137UL;
- v230 = 0UL;
- v231 = 4UL;
- v232 = 0UL;
- v233 = 0UL;
- v234 = 88UL;
- v235 = ((u(*)())v227)(v228, v229, v230, v231, v232, v233, v234);
- v235;
- v236 = (u)zas_modrm;
- v237 = *(u*)(vc + 48UL);
- v238 = 137UL;
- v239 = 0UL;
- v240 = 4UL;
- v241 = 0UL;
- v242 = 0UL;
- v243 = 160UL;
- v244 = ((u(*)())v236)(v237, v238, v239, v240, v241, v242, v243);
- v244;
- v245 = (u)zas_modrm;
- v246 = *(u*)(vc + 48UL);
- v247 = 137UL;
- v248 = 0UL;
- v249 = 4UL;
- v250 = 0UL;
- v251 = 0UL;
- v252 = 168UL;
- v253 = ((u(*)())v245)(v246, v247, v248, v249, v250, v251, v252);
+ vn = *(u*)(vs + 48UL);
+ v194 = (u)zas_emit;
+ v195 = vc;
+ v196 = vn;
+ v197 = ((u(*)())(v194))(v195, v196);
+ v197;
+ v198 = (u)zas_emit;
+ v199 = vc;
+ v200 = vn >> 8UL;
+ v201 = ((u(*)())(v198))(v199, v200);
+ v201;
+ v202 = (u)zas_emit;
+ v203 = vc;
+ v204 = vn >> 16UL;
+ v205 = ((u(*)())(v202))(v203, v204);
+ v205;
+ v206 = (u)zas_emit;
+ v207 = vc;
+ v208 = vn >> 24UL;
+ v209 = ((u(*)())(v206))(v207, v208);
+ v209;
+ v210 = (u)zstrcmp;
+ v211 = *(u*)(vs + 8UL);
+ v212 = (u)".text";
+ v213 = ((u(*)())(v210))(v211, v212);
+ if (v213 != 0UL) goto b92;
+ vn = 6UL;
+b90: v218 = (u)zas_emit;
+ v219 = vc;
+ v220 = vn;
+ v221 = ((u(*)())(v218))(v219, v220);
+ v221;
+ v222 = (u)zas_emit;
+ v223 = vc;
+ v224 = vn >> 8UL;
+ v225 = ((u(*)())(v222))(v223, v224);
+ v225;
+ v226 = (u)zas_emit;
+ v227 = vc;
+ v228 = vn >> 16UL;
+ v229 = ((u(*)())(v226))(v227, v228);
+ v229;
+ v230 = (u)zas_emit;
+ v231 = vc;
+ v232 = vn >> 24UL;
+ v233 = ((u(*)())(v230))(v231, v232);
+ v233;
+ v234 = (u)zas_emit;
+ v235 = vc;
+ v236 = vn >> 32UL;
+ v237 = ((u(*)())(v234))(v235, v236);
+ v237;
+ v238 = (u)zas_emit;
+ v239 = vc;
+ v240 = vn >> 40UL;
+ v241 = ((u(*)())(v238))(v239, v240);
+ v241;
+ v242 = (u)zas_emit;
+ v243 = vc;
+ v244 = vn >> 48UL;
+ v245 = ((u(*)())(v242))(v243, v244);
+ v245;
+ v246 = (u)zas_emit;
+ v247 = vc;
+ v248 = vn >> 56UL;
+ v249 = ((u(*)())(v246))(v247, v248);
+ v249;
+ if (*(u*)(vs + 16UL) != *(u*)(vs + 24UL)) goto b107;
+ vn = 0UL;
+b105: v250 = (u)zas_emit;
+ v251 = vc;
+ v252 = vn;
+ v253 = ((u(*)())(v250))(v251, v252);
v253;
- v254 = (u)zas_modri;
- v255 = *(u*)(vc + 48UL);
- v256 = 199UL;
- v257 = 0UL;
- v258 = 43UL;
- v259 = ((u(*)())v254)(v255, v256, v257, v258);
- v259;
- v260 = (u)zas_modrm;
- v261 = *(u*)(vc + 48UL);
- v262 = 137UL;
- v263 = 0UL;
- v264 = 4UL;
- v265 = 0UL;
- v266 = 0UL;
- v267 = 144UL;
- v268 = ((u(*)())v260)(v261, v262, v263, v264, v265, v266, v267);
- v268;
- v269 = (u)zas_modri;
- v270 = *(u*)(vc + 48UL);
- v271 = 199UL;
- v272 = 0UL;
- v273 = 35UL;
- v274 = ((u(*)())v269)(v270, v271, v272, v273);
- v274;
- v275 = (u)zas_modrm;
- v276 = *(u*)(vc + 48UL);
- v277 = 137UL;
- v278 = 0UL;
- v279 = 4UL;
- v280 = 0UL;
- v281 = 0UL;
- v282 = 152UL;
- v283 = ((u(*)())v275)(v276, v277, v278, v279, v280, v281, v282);
- v283;
- v284 = (u)zfind;
- v285 = vc;
- v286 = (u)"global";
- v287 = (u)"_save";
- v288 = 0UL;
- v289 = ((u(*)())v284)(v285, v286, v287, v288);
- vv = v289;
- if (!vv) goto b88;
- v291 = 0UL;
-b89: if (!v291) goto b84;
- v290 = 1UL;
-b86: if (!v290) goto b82;
- v293 = (u)zcdie;
- v294 = vc;
- v295 = (u)"no _save";
- v296 = ((u(*)())v293)(v294, v295);
- v296;
-b80: v297 = (u)zas_emit;
- v298 = *(u*)(vc + 48UL);
- v299 = 101UL;
- v300 = ((u(*)())v297)(v298, v299);
- v300;
- v301 = (u)zas_modra;
- v302 = *(u*)(vc + 48UL);
- v303 = 139UL;
- v304 = 0UL;
- v305 = *(u*)(vv + 184UL);
- v306 = ((u(*)())v301)(v302, v303, v304, v305);
- v306;
- v307 = (u)zas_modrm;
- v308 = *(u*)(vc + 48UL);
- v309 = 137UL;
- v310 = 0UL;
- v311 = 4UL;
- v312 = 0UL;
- v313 = 0UL;
- v314 = 32UL;
- v315 = ((u(*)())v307)(v308, v309, v310, v311, v312, v313, v314);
- v315;
- v316 = (u)zas_modrr;
- v317 = *(u*)(vc + 48UL);
- v318 = 139UL;
- v319 = 0UL;
- v320 = 4UL;
- v321 = ((u(*)())v316)(v317, v318, v319, v320);
+ v254 = (u)zas_emit;
+ v255 = vc;
+ v256 = vn >> 8UL;
+ v257 = ((u(*)())(v254))(v255, v256);
+ v257;
+ v258 = (u)zas_emit;
+ v259 = vc;
+ v260 = vn >> 16UL;
+ v261 = ((u(*)())(v258))(v259, v260);
+ v261;
+ v262 = (u)zas_emit;
+ v263 = vc;
+ v264 = vn >> 24UL;
+ v265 = ((u(*)())(v262))(v263, v264);
+ v265;
+ v266 = (u)zas_emit;
+ v267 = vc;
+ v268 = vn >> 32UL;
+ v269 = ((u(*)())(v266))(v267, v268);
+ v269;
+ v270 = (u)zas_emit;
+ v271 = vc;
+ v272 = vn >> 40UL;
+ v273 = ((u(*)())(v270))(v271, v272);
+ v273;
+ v274 = (u)zas_emit;
+ v275 = vc;
+ v276 = vn >> 48UL;
+ v277 = ((u(*)())(v274))(v275, v276);
+ v277;
+ v278 = (u)zas_emit;
+ v279 = vc;
+ v280 = vn >> 56UL;
+ v281 = ((u(*)())(v278))(v279, v280);
+ v281;
+ vn = *(u*)(vs + 16UL);
+ v282 = (u)zas_emit;
+ v283 = vc;
+ v284 = vn;
+ v285 = ((u(*)())(v282))(v283, v284);
+ v285;
+ v286 = (u)zas_emit;
+ v287 = vc;
+ v288 = vn >> 8UL;
+ v289 = ((u(*)())(v286))(v287, v288);
+ v289;
+ v290 = (u)zas_emit;
+ v291 = vc;
+ v292 = vn >> 16UL;
+ v293 = ((u(*)())(v290))(v291, v292);
+ v293;
+ v294 = (u)zas_emit;
+ v295 = vc;
+ v296 = vn >> 24UL;
+ v297 = ((u(*)())(v294))(v295, v296);
+ v297;
+ v298 = (u)zas_emit;
+ v299 = vc;
+ v300 = vn >> 32UL;
+ v301 = ((u(*)())(v298))(v299, v300);
+ v301;
+ v302 = (u)zas_emit;
+ v303 = vc;
+ v304 = vn >> 40UL;
+ v305 = ((u(*)())(v302))(v303, v304);
+ v305;
+ v306 = (u)zas_emit;
+ v307 = vc;
+ v308 = vn >> 48UL;
+ v309 = ((u(*)())(v306))(v307, v308);
+ v309;
+ v310 = (u)zas_emit;
+ v311 = vc;
+ v312 = vn >> 56UL;
+ v313 = ((u(*)())(v310))(v311, v312);
+ v313;
+ vn = *(u*)(vs + 24UL) - *(u*)(vs + 16UL);
+ v314 = (u)zas_emit;
+ v315 = vc;
+ v316 = vn;
+ v317 = ((u(*)())(v314))(v315, v316);
+ v317;
+ v318 = (u)zas_emit;
+ v319 = vc;
+ v320 = vn >> 8UL;
+ v321 = ((u(*)())(v318))(v319, v320);
v321;
- v322 = (u)zas_modrr;
- v323 = *(u*)(vc + 48UL);
- v324 = 51UL;
- v325 = 5UL;
- v326 = 5UL;
- v327 = ((u(*)())v322)(v323, v324, v325, v326);
- v327;
- v328 = (u)zas_opr;
- v329 = *(u*)(vc + 48UL);
- v330 = 80UL;
- v331 = 5UL;
- v332 = ((u(*)())v328)(v329, v330, v331);
- v332;
- v333 = (u)zas_opr;
- v334 = *(u*)(vc + 48UL);
- v335 = 80UL;
- v336 = 5UL;
- v337 = ((u(*)())v333)(v334, v335, v336);
- v337;
- v338 = (u)zas_modrr;
- v339 = *(u*)(vc + 48UL);
- v340 = 139UL;
- v341 = 5UL;
- v342 = 4UL;
- v343 = ((u(*)())v338)(v339, v340, v341, v342);
- v343;
- v344 = (u)zas_modrr;
- v345 = *(u*)(vc + 48UL);
- v346 = 139UL;
- v347 = 7UL;
- v348 = 0UL;
- v349 = ((u(*)())v344)(v345, v346, v347, v348);
+ v322 = (u)zas_emit;
+ v323 = vc;
+ v324 = vn >> 16UL;
+ v325 = ((u(*)())(v322))(v323, v324);
+ v325;
+ v326 = (u)zas_emit;
+ v327 = vc;
+ v328 = vn >> 24UL;
+ v329 = ((u(*)())(v326))(v327, v328);
+ v329;
+ v330 = (u)zas_emit;
+ v331 = vc;
+ v332 = vn >> 32UL;
+ v333 = ((u(*)())(v330))(v331, v332);
+ v333;
+ v334 = (u)zas_emit;
+ v335 = vc;
+ v336 = vn >> 40UL;
+ v337 = ((u(*)())(v334))(v335, v336);
+ v337;
+ v338 = (u)zas_emit;
+ v339 = vc;
+ v340 = vn >> 48UL;
+ v341 = ((u(*)())(v338))(v339, v340);
+ v341;
+ v342 = (u)zas_emit;
+ v343 = vc;
+ v344 = vn >> 56UL;
+ v345 = ((u(*)())(v342))(v343, v344);
+ v345;
+ vn = *(u*)(vs + 56UL);
+ v346 = (u)zas_emit;
+ v347 = vc;
+ v348 = vn;
+ v349 = ((u(*)())(v346))(v347, v348);
v349;
- v350 = (u)zfind;
+ v350 = (u)zas_emit;
v351 = vc;
- v352 = (u)"_ssr";
- v353 = 0UL;
- v354 = 1UL;
- v355 = ((u(*)())v350)(v351, v352, v353, v354);
- vd = v355;
- if (!*(u*)(vd + 72UL)) goto b109;
- if (!*(u*)(*(u*)(vd + 88UL) + 16UL)) goto b109;
- v356 = 1UL;
-b111: if (!v356) goto b107;
- v357 = (u)zas_jmp;
- v358 = *(u*)(vc + 48UL);
- v359 = 232UL;
- v360 = *(u*)(vd + 88UL);
- v361 = ((u(*)())v357)(v358, v359, v360);
+ v352 = vn >> 8UL;
+ v353 = ((u(*)())(v350))(v351, v352);
+ v353;
+ v354 = (u)zas_emit;
+ v355 = vc;
+ v356 = vn >> 16UL;
+ v357 = ((u(*)())(v354))(v355, v356);
+ v357;
+ v358 = (u)zas_emit;
+ v359 = vc;
+ v360 = vn >> 24UL;
+ v361 = ((u(*)())(v358))(v359, v360);
v361;
-b105: v362 = (u)zas_op;
- v363 = *(u*)(vc + 48UL);
- v364 = 250UL;
- v365 = ((u(*)())v362)(v363, v364);
+ if (*(u*)(vs + 48UL) != 2UL) goto b138;
+ vn = 1UL;
+b136: v362 = (u)zas_emit;
+ v363 = vc;
+ v364 = vn;
+ v365 = ((u(*)())(v362))(v363, v364);
v365;
- v366 = (u)zas_modri;
- v367 = *(u*)(vc + 48UL);
- v368 = 129UL;
- v369 = 4UL;
- v370 = 2UL * 8UL;
- v371 = ((u(*)())v366)(v367, v368, v369, v370);
- v371;
- v372 = (u)zas_modrm;
- v373 = *(u*)(vc + 48UL);
- v374 = 139UL;
- v375 = 0UL;
- v376 = 4UL;
- v377 = 0UL;
- v378 = 0UL;
- v379 = 0UL;
- v380 = ((u(*)())v372)(v373, v374, v375, v376, v377, v378, v379);
- v380;
- v381 = (u)zas_modrm;
- v382 = *(u*)(vc + 48UL);
- v383 = 139UL;
- v384 = 2UL;
- v385 = 4UL;
- v386 = 0UL;
- v387 = 0UL;
- v388 = 16UL;
- v389 = ((u(*)())v381)(v382, v383, v384, v385, v386, v387, v388);
+ v366 = (u)zas_emit;
+ v367 = vc;
+ v368 = vn >> 8UL;
+ v369 = ((u(*)())(v366))(v367, v368);
+ v369;
+ v370 = (u)zas_emit;
+ v371 = vc;
+ v372 = vn >> 16UL;
+ v373 = ((u(*)())(v370))(v371, v372);
+ v373;
+ v374 = (u)zas_emit;
+ v375 = vc;
+ v376 = vn >> 24UL;
+ v377 = ((u(*)())(v374))(v375, v376);
+ v377;
+ v378 = (u)zas_emit;
+ v379 = vc;
+ v380 = 1UL;
+ v381 = ((u(*)())(v378))(v379, v380);
+ v381;
+ v382 = (u)zas_emit;
+ v383 = vc;
+ v384 = 0UL;
+ v385 = ((u(*)())(v382))(v383, v384);
+ v385;
+ v386 = (u)zas_emit;
+ v387 = vc;
+ v388 = 0UL;
+ v389 = ((u(*)())(v386))(v387, v388);
v389;
- v390 = (u)zas_modrm;
- v391 = *(u*)(vc + 48UL);
- v392 = 139UL;
- v393 = 3UL;
- v394 = 4UL;
- v395 = 0UL;
+ v390 = (u)zas_emit;
+ v391 = vc;
+ v392 = 0UL;
+ v393 = ((u(*)())(v390))(v391, v392);
+ v393;
+ v394 = (u)zas_emit;
+ v395 = vc;
v396 = 0UL;
- v397 = 24UL;
- v398 = ((u(*)())v390)(v391, v392, v393, v394, v395, v396, v397);
- v398;
- v399 = (u)zas_modrm;
- v400 = *(u*)(vc + 48UL);
- v401 = 139UL;
- v402 = 5UL;
- v403 = 4UL;
+ v397 = ((u(*)())(v394))(v395, v396);
+ v397;
+ v398 = (u)zas_emit;
+ v399 = vc;
+ v400 = 0UL;
+ v401 = ((u(*)())(v398))(v399, v400);
+ v401;
+ v402 = (u)zas_emit;
+ v403 = vc;
v404 = 0UL;
- v405 = 0UL;
- v406 = 40UL;
- v407 = ((u(*)())v399)(v400, v401, v402, v403, v404, v405, v406);
- v407;
- v408 = (u)zas_modrm;
- v409 = *(u*)(vc + 48UL);
- v410 = 139UL;
- v411 = 6UL;
- v412 = 4UL;
- v413 = 0UL;
- v414 = 0UL;
- v415 = 48UL;
- v416 = ((u(*)())v408)(v409, v410, v411, v412, v413, v414, v415);
- v416;
- v417 = (u)zas_modrm;
- v418 = *(u*)(vc + 48UL);
- v419 = 139UL;
- v420 = 7UL;
- v421 = 4UL;
- v422 = 0UL;
- v423 = 0UL;
- v424 = 56UL;
- v425 = ((u(*)())v417)(v418, v419, v420, v421, v422, v423, v424);
+ v405 = ((u(*)())(v402))(v403, v404);
+ v405;
+ v406 = (u)zas_emit;
+ v407 = vc;
+ v408 = 0UL;
+ v409 = ((u(*)())(v406))(v407, v408);
+ v409;
+ vn = *(u*)(vs + 64UL);
+ v410 = (u)zas_emit;
+ v411 = vc;
+ v412 = vn;
+ v413 = ((u(*)())(v410))(v411, v412);
+ v413;
+ v414 = (u)zas_emit;
+ v415 = vc;
+ v416 = vn >> 8UL;
+ v417 = ((u(*)())(v414))(v415, v416);
+ v417;
+ v418 = (u)zas_emit;
+ v419 = vc;
+ v420 = vn >> 16UL;
+ v421 = ((u(*)())(v418))(v419, v420);
+ v421;
+ v422 = (u)zas_emit;
+ v423 = vc;
+ v424 = vn >> 24UL;
+ v425 = ((u(*)())(v422))(v423, v424);
v425;
- v426 = (u)zas_modrm;
- v427 = *(u*)(vc + 48UL);
- v428 = 139UL;
- v429 = 8UL;
- v430 = 4UL;
- v431 = 0UL;
- v432 = 0UL;
- v433 = 64UL;
- v434 = ((u(*)())v426)(v427, v428, v429, v430, v431, v432, v433);
- v434;
- v435 = (u)zas_modrm;
- v436 = *(u*)(vc + 48UL);
- v437 = 139UL;
- v438 = 9UL;
- v439 = 4UL;
- v440 = 0UL;
- v441 = 0UL;
- v442 = 72UL;
- v443 = ((u(*)())v435)(v436, v437, v438, v439, v440, v441, v442);
- v443;
- v444 = (u)zas_modrm;
- v445 = *(u*)(vc + 48UL);
- v446 = 139UL;
- v447 = 10UL;
- v448 = 4UL;
- v449 = 0UL;
- v450 = 0UL;
- v451 = 80UL;
- v452 = ((u(*)())v444)(v445, v446, v447, v448, v449, v450, v451);
- v452;
- v453 = (u)zas_modrm;
- v454 = *(u*)(vc + 48UL);
- v455 = 139UL;
- v456 = 12UL;
- v457 = 4UL;
- v458 = 0UL;
- v459 = 0UL;
- v460 = 96UL;
- v461 = ((u(*)())v453)(v454, v455, v456, v457, v458, v459, v460);
- v461;
- v462 = (u)zas_modrm;
- v463 = *(u*)(vc + 48UL);
- v464 = 139UL;
- v465 = 13UL;
- v466 = 4UL;
- v467 = 0UL;
- v468 = 0UL;
- v469 = 104UL;
- v470 = ((u(*)())v462)(v463, v464, v465, v466, v467, v468, v469);
- v470;
- v471 = (u)zas_modrm;
- v472 = *(u*)(vc + 48UL);
- v473 = 139UL;
- v474 = 14UL;
- v475 = 4UL;
- v476 = 0UL;
- v477 = 0UL;
- v478 = 112UL;
- v479 = ((u(*)())v471)(v472, v473, v474, v475, v476, v477, v478);
- v479;
- v480 = (u)zas_modrm;
- v481 = *(u*)(vc + 48UL);
- v482 = 139UL;
- v483 = 15UL;
- v484 = 4UL;
- v485 = 0UL;
- v486 = 0UL;
- v487 = 120UL;
- v488 = ((u(*)())v480)(v481, v482, v483, v484, v485, v486, v487);
- v488;
- v489 = (u)zas_modrm;
- v490 = *(u*)(vc + 48UL);
- v491 = 139UL;
- v492 = 1UL;
- v493 = 4UL;
- v494 = 0UL;
- v495 = 0UL;
- v496 = 128UL;
- v497 = ((u(*)())v489)(v490, v491, v492, v493, v494, v495, v496);
- v497;
- v498 = (u)zas_modrm;
- v499 = *(u*)(vc + 48UL);
- v500 = 139UL;
- v501 = 11UL;
- v502 = 4UL;
- v503 = 0UL;
- v504 = 0UL;
- v505 = 136UL;
- v506 = ((u(*)())v498)(v499, v500, v501, v502, v503, v504, v505);
- v506;
- v507 = (u)zas_modrm;
- v508 = *(u*)(vc + 48UL);
- v509 = 139UL;
- v510 = 4UL;
- v511 = 4UL;
- v512 = 0UL;
- v513 = 0UL;
- v514 = 32UL;
- v515 = ((u(*)())v507)(v508, v509, v510, v511, v512, v513, v514);
- v515;
- v516 = (u)zas_rex;
- v517 = *(u*)(vc + 48UL);
- v518 = 3847UL;
- v519 = 0UL;
- v520 = 0UL;
- v521 = 0UL;
- v522 = ((u(*)())v516)(v517, v518, v519, v520, v521);
- v522;
- v523 = (u)zas_op;
- v524 = *(u*)(vc + 48UL);
- v525 = 3847UL;
- v526 = ((u(*)())v523)(v524, v525);
- v526;
- return 0UL;
-b107: goto b105;
-b109: v356 = 0UL;
- goto b111;
-b82: goto b80;
-b84: if (!*(u*)(vv + 168UL)) goto b92;
- v292 = 0UL;
-b93: if (!v292) goto b90;
- v290 = 1UL;
- goto b86;
-b90: v290 = 0UL;
- goto b86;
-b92: v292 = 1UL;
- goto b93;
-b88: v291 = 1UL;
- goto b89;
-b40: goto b38;
-b42: if (!*(u*)(vv + 168UL)) goto b50;
- v57 = 0UL;
-b51: if (!v57) goto b48;
- v55 = 1UL;
- goto b44;
-b48: v55 = 0UL;
- goto b44;
-b50: v57 = 1UL;
- goto b51;
-b46: v56 = 1UL;
- goto b47;
-b22: goto b20;
-b24: if (!*(u*)(vv + 168UL)) goto b32;
- v34 = 0UL;
-b33: if (!v34) goto b30;
- v32 = 1UL;
- goto b26;
-b30: v32 = 0UL;
+ v426 = (u)zas_emit;
+ v427 = vc;
+ v428 = vn >> 32UL;
+ v429 = ((u(*)())(v426))(v427, v428);
+ v429;
+ v430 = (u)zas_emit;
+ v431 = vc;
+ v432 = vn >> 40UL;
+ v433 = ((u(*)())(v430))(v431, v432);
+ v433;
+ v434 = (u)zas_emit;
+ v435 = vc;
+ v436 = vn >> 48UL;
+ v437 = ((u(*)())(v434))(v435, v436);
+ v437;
+ v438 = (u)zas_emit;
+ v439 = vc;
+ v440 = vn >> 56UL;
+ v441 = ((u(*)())(v438))(v439, v440);
+ v441;
+ vs = *(u*)(vs + 0UL);
+ goto b74;
+b138: vn = 0UL;
+ goto b136;
+b107: vn = *(u*)(vs + 16UL) + 1048576UL;
+ goto b105;
+b92: v214 = (u)zstrcmp;
+ v215 = *(u*)(vs + 8UL);
+ v216 = (u)".rodata";
+ v217 = ((u(*)())(v214))(v215, v216);
+ if (v217 != 0UL) goto b95;
+ vn = 2UL;
+ goto b90;
+b95: vn = 0UL;
+ goto b90;
+b80: v177 = 1UL;
+ goto b81;
+b67: *(u*)(vs + 40UL) = vn;
+ v164 = (u)zemit_strtab_str;
+ v165 = vc;
+ v166 = *(u*)(vs + 8UL);
+ v167 = ((u(*)())(v164))(v165, v166);
+ vn = vn + v167;
+ vs = *(u*)(vs + 0UL);
+ goto b63;
+b69: v163 = 1UL;
+ goto b70;
+b23: vn = *(u*)(vy + 24UL);
+ v54 = (u)zas_emit;
+ v55 = vc;
+ v56 = vn;
+ v57 = ((u(*)())(v54))(v55, v56);
+ v57;
+ v58 = (u)zas_emit;
+ v59 = vc;
+ v60 = vn >> 8UL;
+ v61 = ((u(*)())(v58))(v59, v60);
+ v61;
+ v62 = (u)zas_emit;
+ v63 = vc;
+ v64 = vn >> 16UL;
+ v65 = ((u(*)())(v62))(v63, v64);
+ v65;
+ v66 = (u)zas_emit;
+ v67 = vc;
+ v68 = vn >> 24UL;
+ v69 = ((u(*)())(v66))(v67, v68);
+ v69;
+ if (!(*(u*)(vy + 16UL))) goto b33;
+ vn = 18UL;
+b31: v70 = (u)zas_emit;
+ v71 = vc;
+ v72 = vn;
+ v73 = ((u(*)())(v70))(v71, v72);
+ v73;
+ v74 = (u)zas_emit;
+ v75 = vc;
+ v76 = 0UL;
+ v77 = ((u(*)())(v74))(v75, v76);
+ v77;
+ if (!(*(u*)(vy + 16UL))) goto b38;
+ vn = 1UL;
+b36: v78 = (u)zas_emit;
+ v79 = vc;
+ v80 = vn;
+ v81 = ((u(*)())(v78))(v79, v80);
+ v81;
+ v82 = (u)zas_emit;
+ v83 = vc;
+ v84 = vn >> 8UL;
+ v85 = ((u(*)())(v82))(v83, v84);
+ v85;
+ if (!(*(u*)(vy + 16UL))) goto b43;
+ vn = *(u*)(*(u*)(vy + 16UL) + 8UL) + 1048576UL;
+b41: v86 = (u)zas_emit;
+ v87 = vc;
+ v88 = vn;
+ v89 = ((u(*)())(v86))(v87, v88);
+ v89;
+ v90 = (u)zas_emit;
+ v91 = vc;
+ v92 = vn >> 8UL;
+ v93 = ((u(*)())(v90))(v91, v92);
+ v93;
+ v94 = (u)zas_emit;
+ v95 = vc;
+ v96 = vn >> 16UL;
+ v97 = ((u(*)())(v94))(v95, v96);
+ v97;
+ v98 = (u)zas_emit;
+ v99 = vc;
+ v100 = vn >> 24UL;
+ v101 = ((u(*)())(v98))(v99, v100);
+ v101;
+ v102 = (u)zas_emit;
+ v103 = vc;
+ v104 = vn >> 32UL;
+ v105 = ((u(*)())(v102))(v103, v104);
+ v105;
+ v106 = (u)zas_emit;
+ v107 = vc;
+ v108 = vn >> 40UL;
+ v109 = ((u(*)())(v106))(v107, v108);
+ v109;
+ v110 = (u)zas_emit;
+ v111 = vc;
+ v112 = vn >> 48UL;
+ v113 = ((u(*)())(v110))(v111, v112);
+ v113;
+ v114 = (u)zas_emit;
+ v115 = vc;
+ v116 = vn >> 56UL;
+ v117 = ((u(*)())(v114))(v115, v116);
+ v117;
+ v118 = (u)zas_emit;
+ v119 = vc;
+ v120 = 0UL;
+ v121 = ((u(*)())(v118))(v119, v120);
+ v121;
+ v122 = (u)zas_emit;
+ v123 = vc;
+ v124 = 0UL;
+ v125 = ((u(*)())(v122))(v123, v124);
+ v125;
+ v126 = (u)zas_emit;
+ v127 = vc;
+ v128 = 0UL;
+ v129 = ((u(*)())(v126))(v127, v128);
+ v129;
+ v130 = (u)zas_emit;
+ v131 = vc;
+ v132 = 0UL;
+ v133 = ((u(*)())(v130))(v131, v132);
+ v133;
+ v134 = (u)zas_emit;
+ v135 = vc;
+ v136 = 0UL;
+ v137 = ((u(*)())(v134))(v135, v136);
+ v137;
+ v138 = (u)zas_emit;
+ v139 = vc;
+ v140 = 0UL;
+ v141 = ((u(*)())(v138))(v139, v140);
+ v141;
+ v142 = (u)zas_emit;
+ v143 = vc;
+ v144 = 0UL;
+ v145 = ((u(*)())(v142))(v143, v144);
+ v145;
+ v146 = (u)zas_emit;
+ v147 = vc;
+ v148 = 0UL;
+ v149 = ((u(*)())(v146))(v147, v148);
+ v149;
+ vy = *(u*)(vy + 0UL);
+ goto b19;
+b43: vn = 0UL;
+ goto b41;
+b38: vn = 0UL;
+ goto b36;
+b33: vn = 0UL;
+ goto b31;
+b25: v53 = 1UL;
goto b26;
-b32: v34 = 1UL;
- goto b33;
-b28: v33 = 1UL;
- goto b29;
-b4: goto b2;
-b6: if (!*(u*)(vv + 168UL)) goto b14;
- v11 = 0UL;
-b15: if (!v11) goto b12;
- v9 = 1UL;
- goto b8;
-b12: v9 = 0UL;
- goto b8;
-b14: v11 = 1UL;
- goto b15;
-b10: v10 = 1UL;
- goto b11;
+b13: *(u*)(vy + 24UL) = vn;
+ v44 = (u)zemit_strtab_str;
+ v45 = vc;
+ v46 = *(u*)(vy + 8UL);
+ v47 = ((u(*)())(v44))(v45, v46);
+ vn = vn + v47;
+ vy = *(u*)(vy + 0UL);
+ goto b9;
+b15: v43 = 1UL;
+ goto b16;
}
u zemit_strtab_str(u vc, u vs) {
u vi = 0;
@@ -14478,11 +9124,11 @@ u zemit_strtab_str(u vc, u vs) {
b1: v3 = (u)zas_emit;
v4 = vc;
v5 = (u)*(b*)(vs + vi * 1UL);
- v6 = ((u(*)())v3)(v4, v5);
+ v6 = ((u(*)())(v3))(v4, v5);
v6;
- if (!(u)*(b*)(vs + vi * 1UL)) goto b8;
+ if (!((u)*(b*)(vs + vi * 1UL))) goto b8;
v7 = 0UL;
-b9: if (!v7) goto b6;
+b9: if (!(v7)) goto b6;
return vi + 1UL;
b6: vi = vi + 1UL;
goto b1;
@@ -14506,29 +9152,29 @@ u zensure_arr(u va, u varr, u vcap, u vneed, u velen) {
u v18 = 0;
u v19 = 0;
vneed = vneed * velen;
- vnew_cap = *(u*)vcap;
- if ((s)vneed >= (s)vnew_cap) goto b3;
+ vnew_cap = *(u*)(vcap);
+ if ((s)(vneed) >= (s)(vnew_cap)) goto b3;
return 0UL;
-b3:b4: if ((s)vneed > (s)vnew_cap) goto b8;
+b3:b4: if ((s)(vneed) > (s)(vnew_cap)) goto b8;
v7 = (u)zalloc;
v8 = va;
v9 = vnew_cap;
- v10 = ((u(*)())v7)(v8, v9);
+ v10 = ((u(*)())(v7))(v8, v9);
vnew_arr = v10;
- if (!*(u*)vcap) goto b12;
+ if (!(*(u*)(vcap))) goto b12;
v11 = (u)zmemcpy;
v12 = vnew_arr;
- v13 = *(u*)varr;
- v14 = *(u*)vcap;
- v15 = ((u(*)())v11)(v12, v13, v14);
+ v13 = *(u*)(varr);
+ v14 = *(u*)(vcap);
+ v15 = ((u(*)())(v11))(v12, v13, v14);
v15;
v16 = (u)zfree;
v17 = va;
- v18 = *(u*)varr;
- v19 = ((u(*)())v16)(v17, v18);
+ v18 = *(u*)(varr);
+ v19 = ((u(*)())(v16))(v17, v18);
v19;
-b10: *(u*)varr = vnew_arr;
- *(u*)vcap = vnew_cap;
+b10: *(u*)(varr) = vnew_arr;
+ *(u*)(vcap) = vnew_cap;
return 0UL;
b12: goto b10;
b8: vnew_cap = vnew_cap * 2UL + 16UL;
@@ -15224,13 +9870,13 @@ u zexpr_to_ir(u vic, u vn) {
u v685 = 0;
u v686 = 0;
v16 = (u)zassert;
- if (!vn) goto b5;
+ if (!(vn)) goto b5;
v19 = 0UL;
-b6: if (!v19) goto b2;
+b6: if (!(v19)) goto b2;
v18 = 0UL;
b3: v17 = v18;
v20 = (u)"expected node";
- v21 = ((u(*)())v16)(v17, v20);
+ v21 = ((u(*)())(v16))(v17, v20);
v21;
*(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vn + 24UL);
*(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vn + 32UL);
@@ -15240,21 +9886,21 @@ b3: v17 = v18;
v22 = (u)zmkirconst;
v23 = vic;
v24 = 0UL;
- v25 = ((u(*)())v22)(v23, v24);
+ v25 = ((u(*)())(v22))(v23, v24);
vo = v25;
return vo;
b10: if (vkind != 1UL) goto b13;
v26 = (u)zmkirconst;
v27 = vic;
v28 = *(u*)(vn + 48UL);
- v29 = ((u(*)())v26)(v27, v28);
+ v29 = ((u(*)())(v26))(v27, v28);
vo = v29;
return vo;
b13: if (vkind != 2UL) goto b16;
v30 = (u)zmkirconst;
v31 = vic;
v32 = *(u*)(vn + 48UL);
- v33 = ((u(*)())v30)(v31, v32);
+ v33 = ((u(*)())(v30))(v31, v32);
vo = v33;
return vo;
b16: if (vkind != 34UL) goto b19;
@@ -15263,13 +9909,13 @@ b16: if (vkind != 34UL) goto b19;
b20: v38 = (u)zmkirconst;
v39 = vic;
v40 = vsize;
- v41 = ((u(*)())v38)(v39, v40);
+ v41 = ((u(*)())(v38))(v39, v40);
vo = v41;
return vo;
b22: v34 = (u)ztype_sizeof;
v35 = *(u*)(vic + 0UL);
v36 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v37 = ((u(*)())v34)(v35, v36);
+ v37 = ((u(*)())(v34))(v35, v36);
vsize = v37;
goto b20;
b19: if (vkind != 3UL) goto b26;
@@ -15278,16 +9924,16 @@ b19: if (vkind != 3UL) goto b26;
v44 = *(u*)(vn + 56UL);
v46 = (u)zstrlen;
v47 = *(u*)(vn + 56UL);
- v48 = ((u(*)())v46)(v47);
+ v48 = ((u(*)())(v46))(v47);
v45 = v48;
- v49 = ((u(*)())v42)(v43, v44, v45);
+ v49 = ((u(*)())(v42))(v43, v44, v45);
vo = v49;
return vo;
b26: if (vkind != 7UL) goto b30;
v50 = (u)zcall_to_ir;
v51 = vic;
v52 = vn;
- v53 = ((u(*)())v50)(v51, v52);
+ v53 = ((u(*)())(v50))(v51, v52);
vo = v53;
return vo;
b30: if (vkind != 0UL) goto b33;
@@ -15296,47 +9942,47 @@ b30: if (vkind != 0UL) goto b33;
v56 = *(u*)(vn + 56UL);
v57 = 0UL;
v58 = 0UL;
- v59 = ((u(*)())v54)(v55, v56, v57, v58);
+ v59 = ((u(*)())(v54))(v55, v56, v57, v58);
vv = v59;
- if (!vv) goto b39;
- if (!*(u*)(vv + 192UL)) goto b39;
+ if (!(vv)) goto b39;
+ if (!(*(u*)(vv + 192UL))) goto b39;
v60 = 1UL;
-b41: if (!v60) goto b37;
+b41: if (!(v60)) goto b37;
v61 = (u)zmkirconst;
v62 = vic;
v63 = *(u*)(vv + 200UL);
- v64 = ((u(*)())v61)(v62, v63);
+ v64 = ((u(*)())(v61))(v62, v63);
vo = v64;
return vo;
b37: v65 = (u)zirfind_var;
v66 = vic;
v67 = *(u*)(vn + 56UL);
- v68 = ((u(*)())v65)(v66, v67);
- viv = *(u*)v68;
- if (!viv) goto b46;
+ v68 = ((u(*)())(v65))(v66, v67);
+ viv = *(u*)(v68);
+ if (!(viv)) goto b46;
v69 = (u)zmkirop;
v70 = vic;
v71 = 0UL;
v72 = 0UL;
v73 = 0UL;
- v74 = ((u(*)())v69)(v70, v71, v72, v73);
+ v74 = ((u(*)())(v69))(v70, v71, v72, v73);
vo = v74;
*(u*)(vo + 24UL) = *(u*)(viv + 32UL);
return vo;
-b46: if (!vv) goto b52;
- if (!*(u*)(vv + 72UL)) goto b52;
+b46: if (!(vv)) goto b52;
+ if (!(*(u*)(vv + 72UL))) goto b52;
v75 = 1UL;
-b54: if (!v75) goto b50;
+b54: if (!(v75)) goto b50;
v76 = (u)zmkirfuncref;
v77 = vic;
v78 = *(u*)(vn + 56UL);
- v79 = ((u(*)())v76)(v77, v78);
+ v79 = ((u(*)())(v76))(v77, v78);
vo = v79;
return vo;
b50: v80 = (u)zcdie;
v81 = *(u*)(vic + 0UL);
v82 = (u)"no such symbol";
- v83 = ((u(*)())v80)(v81, v82);
+ v83 = ((u(*)())(v80))(v81, v82);
v83;
return 0UL;
b52: v75 = 0UL;
@@ -15348,40 +9994,40 @@ b33: if (vkind != 9UL) goto b58;
v84 = (u)zexpr_to_ir;
v85 = vic;
v86 = *(u*)(vn + 8UL);
- v87 = ((u(*)())v84)(v85, v86);
+ v87 = ((u(*)())(v84))(v85, v86);
vb = v87;
v88 = (u)zfind;
v89 = *(u*)(vic + 0UL);
v90 = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL) + 8UL) + 32UL);
v91 = *(u*)(*(u*)(vn + 16UL) + 56UL);
v92 = 0UL;
- v93 = ((u(*)())v88)(v89, v90, v91, v92);
+ v93 = ((u(*)())(v88))(v89, v90, v91, v92);
vv = v93;
b59: v113 = (u)zmkirconst;
v114 = vic;
v115 = *(u*)(vv + 184UL);
- v116 = ((u(*)())v113)(v114, v115);
+ v116 = ((u(*)())(v113))(v114, v115);
vc = v116;
v117 = (u)zmkirop;
v118 = vic;
v119 = 11UL;
v120 = vb;
v121 = vc;
- v122 = ((u(*)())v117)(v118, v119, v120, v121);
+ v122 = ((u(*)())(v117))(v118, v119, v120, v121);
vd = v122;
v123 = (u)zmkirop;
v124 = vic;
v125 = 5UL;
v126 = vd;
v127 = 0UL;
- v128 = ((u(*)())v123)(v124, v125, v126, v127);
+ v128 = ((u(*)())(v123))(v124, v125, v126, v127);
vo = v128;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
return vo;
b61: v94 = (u)zexpr_to_ir;
v95 = vic;
v96 = *(u*)(vn + 8UL);
- v97 = ((u(*)())v94)(v95, v96);
+ v97 = ((u(*)())(v94))(v95, v96);
va = v97;
if (*(u*)(va + 0UL) != 0UL) goto b67;
v98 = (u)zmkirop;
@@ -15389,7 +10035,7 @@ b61: v94 = (u)zexpr_to_ir;
v100 = 1UL;
v101 = 0UL;
v102 = 0UL;
- v103 = ((u(*)())v98)(v99, v100, v101, v102);
+ v103 = ((u(*)())(v98))(v99, v100, v101, v102);
vb = v103;
*(u*)(vb + 24UL) = *(u*)(va + 24UL);
*(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(va + 24UL) * 8UL) + 56UL) = 1UL;
@@ -15398,7 +10044,7 @@ b65: v107 = (u)zfind;
v109 = *(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 8UL) + 32UL);
v110 = *(u*)(*(u*)(vn + 16UL) + 56UL);
v111 = 0UL;
- v112 = ((u(*)())v107)(v108, v109, v110, v111);
+ v112 = ((u(*)())(v107))(v108, v109, v110, v111);
vv = v112;
goto b59;
b67: if (*(u*)(va + 0UL) != 5UL) goto b70;
@@ -15406,14 +10052,14 @@ b67: if (*(u*)(va + 0UL) != 5UL) goto b70;
goto b65;
b70: v104 = (u)zdie;
v105 = (u)"invalid ref";
- v106 = ((u(*)())v104)(v105);
+ v106 = ((u(*)())(v104))(v105);
v106;
goto b65;
b58: if (vkind != 35UL) goto b77;
v129 = (u)zexpr_to_ir;
v130 = vic;
v131 = *(u*)(vn + 8UL);
- v132 = ((u(*)())v129)(v130, v131);
+ v132 = ((u(*)())(v129))(v130, v131);
va = v132;
if (*(u*)(va + 0UL) != 0UL) goto b81;
v133 = (u)zmkirop;
@@ -15421,7 +10067,7 @@ b58: if (vkind != 35UL) goto b77;
v135 = 1UL;
v136 = 0UL;
v137 = 0UL;
- v138 = ((u(*)())v133)(v134, v135, v136, v137);
+ v138 = ((u(*)())(v133))(v134, v135, v136, v137);
vo = v138;
*(u*)(vo + 24UL) = *(u*)(va + 24UL);
*(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(va + 24UL) * 8UL) + 56UL) = 1UL;
@@ -15430,21 +10076,21 @@ b81: if (*(u*)(va + 0UL) != 5UL) goto b84;
return *(u*)(va + 8UL);
b84: v139 = (u)zdie;
v140 = (u)"invalid ref";
- v141 = ((u(*)())v139)(v140);
+ v141 = ((u(*)())(v139))(v140);
v141;
return 0UL;
b77: if (vkind != 36UL) goto b87;
v142 = (u)zexpr_to_ir;
v143 = vic;
v144 = *(u*)(vn + 8UL);
- v145 = ((u(*)())v142)(v143, v144);
+ v145 = ((u(*)())(v142))(v143, v144);
va = v145;
v146 = (u)zmkirop;
v147 = vic;
v148 = 5UL;
v149 = va;
v150 = 0UL;
- v151 = ((u(*)())v146)(v147, v148, v149, v150);
+ v151 = ((u(*)())(v146))(v147, v148, v149, v150);
vo = v151;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
return vo;
@@ -15452,66 +10098,66 @@ b87: if (vkind != 38UL) goto b91;
v152 = (u)zexpr_to_ir;
v153 = vic;
v154 = *(u*)(vn + 8UL);
- v155 = ((u(*)())v152)(v153, v154);
+ v155 = ((u(*)())(v152))(v153, v154);
va = v155;
v156 = (u)zexpr_to_ir;
v157 = vic;
v158 = *(u*)(vn + 16UL);
- v159 = ((u(*)())v156)(v157, v158);
+ v159 = ((u(*)())(v156))(v157, v158);
vb = v159;
if (*(u*)(*(u*)(vn + 64UL) + 0UL) != 3UL) goto b96;
vsize = 1UL;
b94: v164 = (u)zmkirconst;
v165 = vic;
v166 = vsize;
- v167 = ((u(*)())v164)(v165, v166);
+ v167 = ((u(*)())(v164))(v165, v166);
vc = v167;
v168 = (u)zmkirop;
v169 = vic;
v170 = 19UL;
v171 = vb;
v172 = vc;
- v173 = ((u(*)())v168)(v169, v170, v171, v172);
+ v173 = ((u(*)())(v168))(v169, v170, v171, v172);
vd = v173;
v174 = (u)zmkirop;
v175 = vic;
v176 = 11UL;
v177 = va;
v178 = vd;
- v179 = ((u(*)())v174)(v175, v176, v177, v178);
+ v179 = ((u(*)())(v174))(v175, v176, v177, v178);
ve = v179;
v180 = (u)zmkirop;
v181 = vic;
v182 = 5UL;
v183 = ve;
v184 = 0UL;
- v185 = ((u(*)())v180)(v181, v182, v183, v184);
+ v185 = ((u(*)())(v180))(v181, v182, v183, v184);
vo = v185;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
return vo;
b96: v160 = (u)ztype_sizeof;
v161 = *(u*)(vic + 0UL);
v162 = *(u*)(vn + 64UL);
- v163 = ((u(*)())v160)(v161, v162);
+ v163 = ((u(*)())(v160))(v161, v162);
vsize = v163;
goto b94;
b91: if (vkind != 33UL) goto b103;
v186 = (u)zexpr_to_ir;
v187 = vic;
v188 = *(u*)(vn + 8UL);
- v189 = ((u(*)())v186)(v187, v188);
+ v189 = ((u(*)())(v186))(v187, v188);
va = v189;
v190 = (u)zexpr_to_ir;
v191 = vic;
v192 = *(u*)(vn + 16UL);
- v193 = ((u(*)())v190)(v191, v192);
+ v193 = ((u(*)())(v190))(v191, v192);
vb = v193;
v194 = (u)zmkirop;
v195 = vic;
v196 = 6UL;
v197 = va;
v198 = vb;
- v199 = ((u(*)())v194)(v195, v196, v197, v198);
+ v199 = ((u(*)())(v194))(v195, v196, v197, v198);
vo = v199;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
return vo;
@@ -15519,649 +10165,649 @@ b103: if (vkind != 57UL) goto b108;
v200 = (u)zexpr_to_ir;
v201 = vic;
v202 = *(u*)(vn + 8UL);
- v203 = ((u(*)())v200)(v201, v202);
+ v203 = ((u(*)())(v200))(v201, v202);
vo = v203;
return vo;
b108: if (vkind != 37UL) goto b111;
v204 = (u)zexpr_to_ir;
v205 = vic;
v206 = *(u*)(vn + 8UL);
- v207 = ((u(*)())v204)(v205, v206);
+ v207 = ((u(*)())(v204))(v205, v206);
vo = v207;
return vo;
b111: if (vkind != 58UL) goto b114;
v208 = (u)zexpr_to_ir;
v209 = vic;
v210 = *(u*)(vn + 8UL);
- v211 = ((u(*)())v208)(v209, v210);
+ v211 = ((u(*)())(v208))(v209, v210);
va = v211;
v212 = (u)zmkirop;
v213 = vic;
v214 = 9UL;
v215 = va;
v216 = 0UL;
- v217 = ((u(*)())v212)(v213, v214, v215, v216);
+ v217 = ((u(*)())(v212))(v213, v214, v215, v216);
vo = v217;
return vo;
b114: if (vkind != 56UL) goto b118;
v218 = (u)zexpr_to_ir;
v219 = vic;
v220 = *(u*)(vn + 8UL);
- v221 = ((u(*)())v218)(v219, v220);
+ v221 = ((u(*)())(v218))(v219, v220);
va = v221;
v222 = (u)zmkirop;
v223 = vic;
v224 = 10UL;
v225 = va;
v226 = 0UL;
- v227 = ((u(*)())v222)(v223, v224, v225, v226);
+ v227 = ((u(*)())(v222))(v223, v224, v225, v226);
vo = v227;
return vo;
b118: if (vkind != 50UL) goto b122;
v228 = (u)zmkirblock;
v229 = vic;
- v230 = ((u(*)())v228)(v229);
+ v230 = ((u(*)())(v228))(v229);
vbool_body = v230;
v231 = (u)zmkirblock;
v232 = vic;
- v233 = ((u(*)())v231)(v232);
+ v233 = ((u(*)())(v231))(v232);
vbool_next = v233;
v234 = (u)zmkirblock;
v235 = vic;
- v236 = ((u(*)())v234)(v235);
+ v236 = ((u(*)())(v234))(v235);
vbool_out = v236;
v237 = (u)zmkirtmp;
v238 = vic;
v239 = *(u*)(vn + 64UL);
- v240 = ((u(*)())v237)(v238, v239);
+ v240 = ((u(*)())(v237))(v238, v239);
ve = v240;
v241 = (u)zexpr_to_ir;
v242 = vic;
v243 = *(u*)(vn + 8UL);
- v244 = ((u(*)())v241)(v242, v243);
+ v244 = ((u(*)())(v241))(v242, v243);
va = v244;
v245 = (u)zirbranch;
v246 = vic;
v247 = va;
v248 = vbool_next;
v249 = vbool_body;
- v250 = ((u(*)())v245)(v246, v247, v248, v249);
+ v250 = ((u(*)())(v245))(v246, v247, v248, v249);
v250;
v251 = (u)zmkirconst;
v252 = vic;
v253 = 0UL;
- v254 = ((u(*)())v251)(v252, v253);
+ v254 = ((u(*)())(v251))(v252, v253);
vb = v254;
v255 = (u)zmkirop;
v256 = vic;
v257 = 6UL;
v258 = ve;
v259 = vb;
- v260 = ((u(*)())v255)(v256, v257, v258, v259);
+ v260 = ((u(*)())(v255))(v256, v257, v258, v259);
vo = v260;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
v261 = (u)ziraddop;
v262 = vic;
v263 = vo;
- v264 = ((u(*)())v261)(v262, v263);
+ v264 = ((u(*)())(v261))(v262, v263);
v264;
v265 = (u)zirjump;
v266 = vic;
v267 = vbool_out;
v268 = vbool_next;
- v269 = ((u(*)())v265)(v266, v267, v268);
+ v269 = ((u(*)())(v265))(v266, v267, v268);
v269;
v270 = (u)zmkirconst;
v271 = vic;
v272 = 1UL;
- v273 = ((u(*)())v270)(v271, v272);
+ v273 = ((u(*)())(v270))(v271, v272);
vb = v273;
v274 = (u)zmkirop;
v275 = vic;
v276 = 6UL;
v277 = ve;
v278 = vb;
- v279 = ((u(*)())v274)(v275, v276, v277, v278);
+ v279 = ((u(*)())(v274))(v275, v276, v277, v278);
vo = v279;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
v280 = (u)ziraddop;
v281 = vic;
v282 = vo;
- v283 = ((u(*)())v280)(v281, v282);
+ v283 = ((u(*)())(v280))(v281, v282);
v283;
v284 = (u)zirjump;
v285 = vic;
v286 = vbool_out;
v287 = vbool_out;
- v288 = ((u(*)())v284)(v285, v286, v287);
+ v288 = ((u(*)())(v284))(v285, v286, v287);
v288;
return ve;
b122: if (vkind != 51UL) goto b138;
v289 = (u)zmkirblock;
v290 = vic;
- v291 = ((u(*)())v289)(v290);
+ v291 = ((u(*)())(v289))(v290);
vbool_body = v291;
v292 = (u)zmkirblock;
v293 = vic;
- v294 = ((u(*)())v292)(v293);
+ v294 = ((u(*)())(v292))(v293);
vbool_next = v294;
v295 = (u)zmkirblock;
v296 = vic;
- v297 = ((u(*)())v295)(v296);
+ v297 = ((u(*)())(v295))(v296);
vbool_final = v297;
v298 = (u)zmkirblock;
v299 = vic;
- v300 = ((u(*)())v298)(v299);
+ v300 = ((u(*)())(v298))(v299);
vbool_out = v300;
v301 = (u)zmkirtmp;
v302 = vic;
v303 = *(u*)(vn + 64UL);
- v304 = ((u(*)())v301)(v302, v303);
+ v304 = ((u(*)())(v301))(v302, v303);
ve = v304;
v305 = (u)zexpr_to_ir;
v306 = vic;
v307 = *(u*)(vn + 8UL);
- v308 = ((u(*)())v305)(v306, v307);
+ v308 = ((u(*)())(v305))(v306, v307);
va = v308;
v309 = (u)zirbranch;
v310 = vic;
v311 = va;
v312 = vbool_next;
v313 = vbool_body;
- v314 = ((u(*)())v309)(v310, v311, v312, v313);
+ v314 = ((u(*)())(v309))(v310, v311, v312, v313);
v314;
v315 = (u)zmkirconst;
v316 = vic;
v317 = 1UL;
- v318 = ((u(*)())v315)(v316, v317);
+ v318 = ((u(*)())(v315))(v316, v317);
vb = v318;
v319 = (u)zmkirop;
v320 = vic;
v321 = 6UL;
v322 = ve;
v323 = vb;
- v324 = ((u(*)())v319)(v320, v321, v322, v323);
+ v324 = ((u(*)())(v319))(v320, v321, v322, v323);
vo = v324;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
v325 = (u)ziraddop;
v326 = vic;
v327 = vo;
- v328 = ((u(*)())v325)(v326, v327);
+ v328 = ((u(*)())(v325))(v326, v327);
v328;
v329 = (u)zirjump;
v330 = vic;
v331 = vbool_out;
v332 = vbool_next;
- v333 = ((u(*)())v329)(v330, v331, v332);
+ v333 = ((u(*)())(v329))(v330, v331, v332);
v333;
v334 = (u)zmkirblock;
v335 = vic;
- v336 = ((u(*)())v334)(v335);
+ v336 = ((u(*)())(v334))(v335);
vbool_next = v336;
v337 = (u)zexpr_to_ir;
v338 = vic;
v339 = *(u*)(vn + 16UL);
- v340 = ((u(*)())v337)(v338, v339);
+ v340 = ((u(*)())(v337))(v338, v339);
va = v340;
v341 = (u)zirbranch;
v342 = vic;
v343 = va;
v344 = vbool_next;
v345 = vbool_final;
- v346 = ((u(*)())v341)(v342, v343, v344, v345);
+ v346 = ((u(*)())(v341))(v342, v343, v344, v345);
v346;
v347 = (u)zmkirconst;
v348 = vic;
v349 = 1UL;
- v350 = ((u(*)())v347)(v348, v349);
+ v350 = ((u(*)())(v347))(v348, v349);
vb = v350;
v351 = (u)zmkirop;
v352 = vic;
v353 = 6UL;
v354 = ve;
v355 = vb;
- v356 = ((u(*)())v351)(v352, v353, v354, v355);
+ v356 = ((u(*)())(v351))(v352, v353, v354, v355);
vo = v356;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
v357 = (u)ziraddop;
v358 = vic;
v359 = vo;
- v360 = ((u(*)())v357)(v358, v359);
+ v360 = ((u(*)())(v357))(v358, v359);
v360;
v361 = (u)zirjump;
v362 = vic;
v363 = vbool_out;
v364 = vbool_next;
- v365 = ((u(*)())v361)(v362, v363, v364);
+ v365 = ((u(*)())(v361))(v362, v363, v364);
v365;
v366 = (u)zmkirconst;
v367 = vic;
v368 = 0UL;
- v369 = ((u(*)())v366)(v367, v368);
+ v369 = ((u(*)())(v366))(v367, v368);
vb = v369;
v370 = (u)zmkirop;
v371 = vic;
v372 = 6UL;
v373 = ve;
v374 = vb;
- v375 = ((u(*)())v370)(v371, v372, v373, v374);
+ v375 = ((u(*)())(v370))(v371, v372, v373, v374);
vo = v375;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
v376 = (u)ziraddop;
v377 = vic;
v378 = vo;
- v379 = ((u(*)())v376)(v377, v378);
+ v379 = ((u(*)())(v376))(v377, v378);
v379;
v380 = (u)zirjump;
v381 = vic;
v382 = vbool_out;
v383 = vbool_out;
- v384 = ((u(*)())v380)(v381, v382, v383);
+ v384 = ((u(*)())(v380))(v381, v382, v383);
v384;
return ve;
b138: if (vkind != 52UL) goto b162;
v385 = (u)zmkirblock;
v386 = vic;
- v387 = ((u(*)())v385)(v386);
+ v387 = ((u(*)())(v385))(v386);
vbool_body = v387;
v388 = (u)zmkirblock;
v389 = vic;
- v390 = ((u(*)())v388)(v389);
+ v390 = ((u(*)())(v388))(v389);
vbool_next = v390;
v391 = (u)zmkirblock;
v392 = vic;
- v393 = ((u(*)())v391)(v392);
+ v393 = ((u(*)())(v391))(v392);
vbool_final = v393;
v394 = (u)zmkirblock;
v395 = vic;
- v396 = ((u(*)())v394)(v395);
+ v396 = ((u(*)())(v394))(v395);
vbool_out = v396;
v397 = (u)zmkirtmp;
v398 = vic;
v399 = *(u*)(vn + 64UL);
- v400 = ((u(*)())v397)(v398, v399);
+ v400 = ((u(*)())(v397))(v398, v399);
ve = v400;
v401 = (u)zexpr_to_ir;
v402 = vic;
v403 = *(u*)(vn + 8UL);
- v404 = ((u(*)())v401)(v402, v403);
+ v404 = ((u(*)())(v401))(v402, v403);
va = v404;
v405 = (u)zirbranch;
v406 = vic;
v407 = va;
v408 = vbool_next;
v409 = vbool_body;
- v410 = ((u(*)())v405)(v406, v407, v408, v409);
+ v410 = ((u(*)())(v405))(v406, v407, v408, v409);
v410;
v411 = (u)zexpr_to_ir;
v412 = vic;
v413 = *(u*)(vn + 16UL);
- v414 = ((u(*)())v411)(v412, v413);
+ v414 = ((u(*)())(v411))(v412, v413);
va = v414;
v415 = (u)zirbranch;
v416 = vic;
v417 = va;
v418 = vbool_next;
v419 = vbool_final;
- v420 = ((u(*)())v415)(v416, v417, v418, v419);
+ v420 = ((u(*)())(v415))(v416, v417, v418, v419);
v420;
v421 = (u)zmkirconst;
v422 = vic;
v423 = 1UL;
- v424 = ((u(*)())v421)(v422, v423);
+ v424 = ((u(*)())(v421))(v422, v423);
vb = v424;
v425 = (u)zmkirop;
v426 = vic;
v427 = 6UL;
v428 = ve;
v429 = vb;
- v430 = ((u(*)())v425)(v426, v427, v428, v429);
+ v430 = ((u(*)())(v425))(v426, v427, v428, v429);
vo = v430;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
v431 = (u)ziraddop;
v432 = vic;
v433 = vo;
- v434 = ((u(*)())v431)(v432, v433);
+ v434 = ((u(*)())(v431))(v432, v433);
v434;
v435 = (u)zirjump;
v436 = vic;
v437 = vbool_out;
v438 = vbool_next;
- v439 = ((u(*)())v435)(v436, v437, v438);
+ v439 = ((u(*)())(v435))(v436, v437, v438);
v439;
v440 = (u)zmkirconst;
v441 = vic;
v442 = 0UL;
- v443 = ((u(*)())v440)(v441, v442);
+ v443 = ((u(*)())(v440))(v441, v442);
vb = v443;
v444 = (u)zmkirop;
v445 = vic;
v446 = 6UL;
v447 = ve;
v448 = vb;
- v449 = ((u(*)())v444)(v445, v446, v447, v448);
+ v449 = ((u(*)())(v444))(v445, v446, v447, v448);
vo = v449;
*(u*)(vo + 48UL) = *(u*)(vn + 64UL);
v450 = (u)ziraddop;
v451 = vic;
v452 = vo;
- v453 = ((u(*)())v450)(v451, v452);
+ v453 = ((u(*)())(v450))(v451, v452);
v453;
v454 = (u)zirjump;
v455 = vic;
v456 = vbool_out;
v457 = vbool_out;
- v458 = ((u(*)())v454)(v455, v456, v457);
+ v458 = ((u(*)())(v454))(v455, v456, v457);
v458;
return ve;
b162: if (vkind != 39UL) goto b181;
v459 = (u)zexpr_to_ir;
v460 = vic;
v461 = *(u*)(vn + 8UL);
- v462 = ((u(*)())v459)(v460, v461);
+ v462 = ((u(*)())(v459))(v460, v461);
va = v462;
v463 = (u)zexpr_to_ir;
v464 = vic;
v465 = *(u*)(vn + 16UL);
- v466 = ((u(*)())v463)(v464, v465);
+ v466 = ((u(*)())(v463))(v464, v465);
vb = v466;
v467 = (u)zmkirop;
v468 = vic;
v469 = 25UL;
v470 = va;
v471 = vb;
- v472 = ((u(*)())v467)(v468, v469, v470, v471);
+ v472 = ((u(*)())(v467))(v468, v469, v470, v471);
vo = v472;
return vo;
b181: if (vkind != 40UL) goto b186;
v473 = (u)zexpr_to_ir;
v474 = vic;
v475 = *(u*)(vn + 8UL);
- v476 = ((u(*)())v473)(v474, v475);
+ v476 = ((u(*)())(v473))(v474, v475);
va = v476;
v477 = (u)zexpr_to_ir;
v478 = vic;
v479 = *(u*)(vn + 16UL);
- v480 = ((u(*)())v477)(v478, v479);
+ v480 = ((u(*)())(v477))(v478, v479);
vb = v480;
v481 = (u)zmkirop;
v482 = vic;
v483 = 23UL;
v484 = va;
v485 = vb;
- v486 = ((u(*)())v481)(v482, v483, v484, v485);
+ v486 = ((u(*)())(v481))(v482, v483, v484, v485);
vo = v486;
return vo;
b186: if (vkind != 41UL) goto b191;
v487 = (u)zexpr_to_ir;
v488 = vic;
v489 = *(u*)(vn + 8UL);
- v490 = ((u(*)())v487)(v488, v489);
+ v490 = ((u(*)())(v487))(v488, v489);
va = v490;
v491 = (u)zexpr_to_ir;
v492 = vic;
v493 = *(u*)(vn + 16UL);
- v494 = ((u(*)())v491)(v492, v493);
+ v494 = ((u(*)())(v491))(v492, v493);
vb = v494;
v495 = (u)zmkirop;
v496 = vic;
v497 = 26UL;
v498 = va;
v499 = vb;
- v500 = ((u(*)())v495)(v496, v497, v498, v499);
+ v500 = ((u(*)())(v495))(v496, v497, v498, v499);
vo = v500;
return vo;
b191: if (vkind != 42UL) goto b196;
v501 = (u)zexpr_to_ir;
v502 = vic;
v503 = *(u*)(vn + 8UL);
- v504 = ((u(*)())v501)(v502, v503);
+ v504 = ((u(*)())(v501))(v502, v503);
va = v504;
v505 = (u)zexpr_to_ir;
v506 = vic;
v507 = *(u*)(vn + 16UL);
- v508 = ((u(*)())v505)(v506, v507);
+ v508 = ((u(*)())(v505))(v506, v507);
vb = v508;
v509 = (u)zmkirop;
v510 = vic;
v511 = 24UL;
v512 = va;
v513 = vb;
- v514 = ((u(*)())v509)(v510, v511, v512, v513);
+ v514 = ((u(*)())(v509))(v510, v511, v512, v513);
vo = v514;
return vo;
b196: if (vkind != 43UL) goto b201;
v515 = (u)zexpr_to_ir;
v516 = vic;
v517 = *(u*)(vn + 8UL);
- v518 = ((u(*)())v515)(v516, v517);
+ v518 = ((u(*)())(v515))(v516, v517);
va = v518;
v519 = (u)zexpr_to_ir;
v520 = vic;
v521 = *(u*)(vn + 16UL);
- v522 = ((u(*)())v519)(v520, v521);
+ v522 = ((u(*)())(v519))(v520, v521);
vb = v522;
v523 = (u)zmkirop;
v524 = vic;
v525 = 21UL;
v526 = va;
v527 = vb;
- v528 = ((u(*)())v523)(v524, v525, v526, v527);
+ v528 = ((u(*)())(v523))(v524, v525, v526, v527);
vo = v528;
return vo;
b201: if (vkind != 44UL) goto b206;
v529 = (u)zexpr_to_ir;
v530 = vic;
v531 = *(u*)(vn + 8UL);
- v532 = ((u(*)())v529)(v530, v531);
+ v532 = ((u(*)())(v529))(v530, v531);
va = v532;
v533 = (u)zexpr_to_ir;
v534 = vic;
v535 = *(u*)(vn + 16UL);
- v536 = ((u(*)())v533)(v534, v535);
+ v536 = ((u(*)())(v533))(v534, v535);
vb = v536;
v537 = (u)zmkirop;
v538 = vic;
v539 = 22UL;
v540 = va;
v541 = vb;
- v542 = ((u(*)())v537)(v538, v539, v540, v541);
+ v542 = ((u(*)())(v537))(v538, v539, v540, v541);
vo = v542;
return vo;
b206: if (vkind != 45UL) goto b211;
v543 = (u)zexpr_to_ir;
v544 = vic;
v545 = *(u*)(vn + 8UL);
- v546 = ((u(*)())v543)(v544, v545);
+ v546 = ((u(*)())(v543))(v544, v545);
va = v546;
v547 = (u)zexpr_to_ir;
v548 = vic;
v549 = *(u*)(vn + 16UL);
- v550 = ((u(*)())v547)(v548, v549);
+ v550 = ((u(*)())(v547))(v548, v549);
vb = v550;
v551 = (u)zmkirop;
v552 = vic;
v553 = 11UL;
v554 = va;
v555 = vb;
- v556 = ((u(*)())v551)(v552, v553, v554, v555);
+ v556 = ((u(*)())(v551))(v552, v553, v554, v555);
vo = v556;
return vo;
b211: if (vkind != 46UL) goto b216;
v557 = (u)zexpr_to_ir;
v558 = vic;
v559 = *(u*)(vn + 8UL);
- v560 = ((u(*)())v557)(v558, v559);
+ v560 = ((u(*)())(v557))(v558, v559);
va = v560;
v561 = (u)zexpr_to_ir;
v562 = vic;
v563 = *(u*)(vn + 16UL);
- v564 = ((u(*)())v561)(v562, v563);
+ v564 = ((u(*)())(v561))(v562, v563);
vb = v564;
v565 = (u)zmkirop;
v566 = vic;
v567 = 20UL;
v568 = va;
v569 = vb;
- v570 = ((u(*)())v565)(v566, v567, v568, v569);
+ v570 = ((u(*)())(v565))(v566, v567, v568, v569);
vo = v570;
return vo;
b216: if (vkind != 47UL) goto b221;
v571 = (u)zexpr_to_ir;
v572 = vic;
v573 = *(u*)(vn + 8UL);
- v574 = ((u(*)())v571)(v572, v573);
+ v574 = ((u(*)())(v571))(v572, v573);
va = v574;
v575 = (u)zexpr_to_ir;
v576 = vic;
v577 = *(u*)(vn + 16UL);
- v578 = ((u(*)())v575)(v576, v577);
+ v578 = ((u(*)())(v575))(v576, v577);
vb = v578;
v579 = (u)zmkirop;
v580 = vic;
v581 = 19UL;
v582 = va;
v583 = vb;
- v584 = ((u(*)())v579)(v580, v581, v582, v583);
+ v584 = ((u(*)())(v579))(v580, v581, v582, v583);
vo = v584;
return vo;
b221: if (vkind != 59UL) goto b226;
v585 = (u)zexpr_to_ir;
v586 = vic;
v587 = *(u*)(vn + 8UL);
- v588 = ((u(*)())v585)(v586, v587);
+ v588 = ((u(*)())(v585))(v586, v587);
va = v588;
v589 = (u)zexpr_to_ir;
v590 = vic;
v591 = *(u*)(vn + 16UL);
- v592 = ((u(*)())v589)(v590, v591);
+ v592 = ((u(*)())(v589))(v590, v591);
vb = v592;
v593 = (u)zmkirop;
v594 = vic;
v595 = 15UL;
v596 = va;
v597 = vb;
- v598 = ((u(*)())v593)(v594, v595, v596, v597);
+ v598 = ((u(*)())(v593))(v594, v595, v596, v597);
vo = v598;
return vo;
b226: if (vkind != 60UL) goto b231;
v599 = (u)zexpr_to_ir;
v600 = vic;
v601 = *(u*)(vn + 8UL);
- v602 = ((u(*)())v599)(v600, v601);
+ v602 = ((u(*)())(v599))(v600, v601);
va = v602;
v603 = (u)zexpr_to_ir;
v604 = vic;
v605 = *(u*)(vn + 16UL);
- v606 = ((u(*)())v603)(v604, v605);
+ v606 = ((u(*)())(v603))(v604, v605);
vb = v606;
v607 = (u)zmkirop;
v608 = vic;
v609 = 16UL;
v610 = va;
v611 = vb;
- v612 = ((u(*)())v607)(v608, v609, v610, v611);
+ v612 = ((u(*)())(v607))(v608, v609, v610, v611);
vo = v612;
return vo;
b231: if (vkind != 48UL) goto b236;
v613 = (u)zexpr_to_ir;
v614 = vic;
v615 = *(u*)(vn + 8UL);
- v616 = ((u(*)())v613)(v614, v615);
+ v616 = ((u(*)())(v613))(v614, v615);
va = v616;
v617 = (u)zexpr_to_ir;
v618 = vic;
v619 = *(u*)(vn + 16UL);
- v620 = ((u(*)())v617)(v618, v619);
+ v620 = ((u(*)())(v617))(v618, v619);
vb = v620;
v621 = (u)zmkirop;
v622 = vic;
v623 = 17UL;
v624 = va;
v625 = vb;
- v626 = ((u(*)())v621)(v622, v623, v624, v625);
+ v626 = ((u(*)())(v621))(v622, v623, v624, v625);
vo = v626;
return vo;
b236: if (vkind != 49UL) goto b241;
v627 = (u)zexpr_to_ir;
v628 = vic;
v629 = *(u*)(vn + 8UL);
- v630 = ((u(*)())v627)(v628, v629);
+ v630 = ((u(*)())(v627))(v628, v629);
va = v630;
v631 = (u)zexpr_to_ir;
v632 = vic;
v633 = *(u*)(vn + 16UL);
- v634 = ((u(*)())v631)(v632, v633);
+ v634 = ((u(*)())(v631))(v632, v633);
vb = v634;
v635 = (u)zmkirop;
v636 = vic;
v637 = 18UL;
v638 = va;
v639 = vb;
- v640 = ((u(*)())v635)(v636, v637, v638, v639);
+ v640 = ((u(*)())(v635))(v636, v637, v638, v639);
vo = v640;
return vo;
b241: if (vkind != 53UL) goto b246;
v641 = (u)zexpr_to_ir;
v642 = vic;
v643 = *(u*)(vn + 8UL);
- v644 = ((u(*)())v641)(v642, v643);
+ v644 = ((u(*)())(v641))(v642, v643);
va = v644;
v645 = (u)zexpr_to_ir;
v646 = vic;
v647 = *(u*)(vn + 16UL);
- v648 = ((u(*)())v645)(v646, v647);
+ v648 = ((u(*)())(v645))(v646, v647);
vb = v648;
v649 = (u)zmkirop;
v650 = vic;
v651 = 12UL;
v652 = va;
v653 = vb;
- v654 = ((u(*)())v649)(v650, v651, v652, v653);
+ v654 = ((u(*)())(v649))(v650, v651, v652, v653);
vo = v654;
return vo;
b246: if (vkind != 54UL) goto b251;
v655 = (u)zexpr_to_ir;
v656 = vic;
v657 = *(u*)(vn + 8UL);
- v658 = ((u(*)())v655)(v656, v657);
+ v658 = ((u(*)())(v655))(v656, v657);
va = v658;
v659 = (u)zexpr_to_ir;
v660 = vic;
v661 = *(u*)(vn + 16UL);
- v662 = ((u(*)())v659)(v660, v661);
+ v662 = ((u(*)())(v659))(v660, v661);
vb = v662;
v663 = (u)zmkirop;
v664 = vic;
v665 = 13UL;
v666 = va;
v667 = vb;
- v668 = ((u(*)())v663)(v664, v665, v666, v667);
+ v668 = ((u(*)())(v663))(v664, v665, v666, v667);
vo = v668;
return vo;
b251: if (vkind != 55UL) goto b256;
v669 = (u)zexpr_to_ir;
v670 = vic;
v671 = *(u*)(vn + 8UL);
- v672 = ((u(*)())v669)(v670, v671);
+ v672 = ((u(*)())(v669))(v670, v671);
va = v672;
v673 = (u)zexpr_to_ir;
v674 = vic;
v675 = *(u*)(vn + 16UL);
- v676 = ((u(*)())v673)(v674, v675);
+ v676 = ((u(*)())(v673))(v674, v675);
vb = v676;
v677 = (u)zmkirop;
v678 = vic;
v679 = 14UL;
v680 = va;
v681 = vb;
- v682 = ((u(*)())v677)(v678, v679, v680, v681);
+ v682 = ((u(*)())(v677))(v678, v679, v680, v681);
vo = v682;
return vo;
b256: v683 = (u)zcdie;
v684 = *(u*)(vic + 0UL);
v685 = (u)"unknown expression";
- v686 = ((u(*)())v683)(v684, v685);
+ v686 = ((u(*)())(v683))(v684, v685);
v686;
return 0UL;
b2: v18 = 1UL;
@@ -16187,12 +10833,12 @@ b5: v2 = (u)zwrite;
v3 = *(u*)(vf + 8UL);
v4 = *(u*)(vf + 16UL) + *(u*)(vf + 24UL) * 1UL;
v5 = *(u*)(vf + 32UL) - *(u*)(vf + 24UL);
- v6 = ((u(*)())v2)(v3, v4, v5);
+ v6 = ((u(*)())(v2))(v3, v4, v5);
vret = v6;
- if ((s)vret >= (s)0UL) goto b9;
+ if ((s)(vret) >= (s)0UL) goto b9;
v7 = (u)zdie;
v8 = (u)"write failed";
- v9 = ((u(*)())v7)(v8);
+ v9 = ((u(*)())(v7))(v8);
v9;
b7: *(u*)(vf + 24UL) = *(u*)(vf + 24UL) + vret;
goto b1;
@@ -16236,18 +10882,18 @@ u zfind(u vc, u vname, u vmember_name, u vmake) {
u v38 = 0;
vp = 0UL;
vlink = vc + 56UL;
-b1: vd = *(u*)vlink;
- if (!vd) goto b7;
+b1: vd = *(u*)(vlink);
+ if (!(vd)) goto b7;
v8 = 0UL;
-b8: if (!v8) goto b5;
- if (!vmake) goto b46;
+b8: if (!(v8)) goto b5;
+ if (!(vmake)) goto b46;
v22 = 0UL;
-b47: if (!v22) goto b44;
+b47: if (!(v22)) goto b44;
return 0UL;
b44: v23 = (u)zalloc;
v24 = *(u*)(vc + 0UL);
v25 = 240UL;
- v26 = ((u(*)())v23)(v24, v25);
+ v26 = ((u(*)())(v23))(v24, v25);
vd = v26;
*(u*)(vd + 32UL) = vname;
*(u*)(vd + 40UL) = vmember_name;
@@ -16256,14 +10902,14 @@ b44: v23 = (u)zalloc;
v29 = vlink;
v30 = vp;
v31 = vd + 0UL;
- v32 = ((u(*)())v27)(v28, v29, v30, v31);
+ v32 = ((u(*)())(v27))(v28, v29, v30, v31);
v32;
*(u*)(vd + 48UL) = 0UL;
*(u*)(vd + 72UL) = 0UL;
*(u*)(vd + 80UL) = 0UL;
v33 = (u)zmklabel;
v34 = *(u*)(vc + 48UL);
- v35 = ((u(*)())v33)(v34);
+ v35 = ((u(*)())(v33))(v34);
*(u*)(vd + 88UL) = v35;
*(u*)(vd + 96UL) = 0UL;
*(u*)(vd + 128UL) = 0UL;
@@ -16279,7 +10925,7 @@ b44: v23 = (u)zalloc;
*(u*)(vd + 224UL) = 0UL;
v36 = (u)zmklabel;
v37 = *(u*)(vc + 48UL);
- v38 = ((u(*)())v36)(v37);
+ v38 = ((u(*)())(v36))(v37);
*(u*)(vd + 232UL) = v38;
return vd;
b46: v22 = 1UL;
@@ -16287,41 +10933,41 @@ b46: v22 = 1UL;
b5: v9 = (u)zstrcmp;
v10 = vname;
v11 = *(u*)(vd + 32UL);
- v12 = ((u(*)())v9)(v10, v11);
+ v12 = ((u(*)())(v9))(v10, v11);
vdir = v12;
if (vdir != 0UL) goto b12;
- if (!vmember_name) goto b21;
+ if (!(vmember_name)) goto b21;
v14 = 0UL;
-b22: if (!v14) goto b17;
- if (!*(u*)(vd + 40UL)) goto b24;
+b22: if (!(v14)) goto b17;
+ if (!(*(u*)(vd + 40UL))) goto b24;
v15 = 0UL;
-b25: if (!v15) goto b17;
+b25: if (!(v15)) goto b17;
v13 = 1UL;
-b19: if (!v13) goto b15;
+b19: if (!(v13)) goto b15;
vdir = 0UL;
-b13:b10: if ((s)vdir >= (s)0UL) goto b39;
- vlink = vd + 0UL + 16UL;
+b13:b10: if ((s)(vdir) >= (s)0UL) goto b39;
+ vlink = (vd + 0UL) + 16UL;
vp = vd + 0UL;
b37: goto b1;
-b39: if ((s)vdir <= (s)0UL) goto b41;
- vlink = vd + 0UL + 24UL;
+b39: if ((s)(vdir) <= (s)0UL) goto b41;
+ vlink = (vd + 0UL) + 24UL;
vp = vd + 0UL;
goto b37;
b41: return vd;
-b15: if (!vmember_name) goto b29;
+b15: if (!(vmember_name)) goto b29;
v16 = 0UL;
-b30: if (!v16) goto b27;
+b30: if (!(v16)) goto b27;
vdir = -1UL;
goto b13;
-b27: if (!*(u*)(vd + 40UL)) goto b34;
+b27: if (!(*(u*)(vd + 40UL))) goto b34;
v17 = 0UL;
-b35: if (!v17) goto b32;
+b35: if (!(v17)) goto b32;
vdir = 1UL;
goto b13;
b32: v18 = (u)zstrcmp;
v19 = vmember_name;
v20 = *(u*)(vd + 40UL);
- v21 = ((u(*)())v18)(v19, v20);
+ v21 = ((u(*)())(v18))(v19, v20);
vdir = v21;
goto b13;
b34: v17 = 1UL;
@@ -16346,14 +10992,14 @@ u zfind_section(u vc, u vname) {
u v6 = 0;
u v7 = 0;
vn = *(u*)(vc + 64UL);
-b1: if (!vn) goto b7;
+b1: if (!(vn)) goto b7;
v3 = 0UL;
-b8: if (!v3) goto b5;
+b8: if (!(v3)) goto b5;
b2: return vn;
b5: v4 = (u)zstrcmp;
v5 = *(u*)(vn + 8UL);
v6 = vname;
- v7 = ((u(*)())v4)(v5, v6);
+ v7 = ((u(*)())(v4))(v5, v6);
if (v7 != 0UL) goto b11;
goto b2;
b11: vn = *(u*)(vn + 0UL);
@@ -16366,23 +11012,147 @@ u zfirst_decl(u vc) {
u v2 = 0;
u v3 = 0;
u v4 = 0;
- if (!*(u*)(vc + 56UL)) goto b5;
+ if (!(*(u*)(vc + 56UL))) goto b5;
v1 = 0UL;
-b6: if (!v1) goto b3;
+b6: if (!(v1)) goto b3;
return 0UL;
b3: v2 = (u)zrb_first;
v3 = *(u*)(vc + 56UL) + 0UL;
- v4 = ((u(*)())v2)(v3);
+ v4 = ((u(*)())(v2))(v3);
return v4;
b5: v1 = 1UL;
goto b6;
}
-u zfixup(u vc, u vhere, u vdelta) {
- *(b*)(vhere + 0UL * 1UL) = vdelta;
- *(b*)(vhere + 1UL * 1UL) = vdelta >> 8UL;
- *(b*)(vhere + 2UL * 1UL) = vdelta >> 16UL;
- *(b*)(vhere + 3UL * 1UL) = vdelta >> 24UL;
- return 0UL;
+u zfixup(u vc, u vf) {
+ u vdisp = 0;
+ u vx = 0;
+ u vhere = 0;
+ u vrd = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ vrd = 16UL;
+ if (*(u*)(vf + 0UL) != 0UL) goto b3;
+ if ((s)(*(u*)(vf + 32UL)) >= (s)4UL) goto b6;
+ v6 = (u)zdie;
+ v7 = (u)"truncated fixup";
+ v8 = ((u(*)())(v6))(v7);
+ v8;
+b4: vhere = *(u*)(vf + 24UL) + -4UL * 1UL;
+ vdisp = *(u*)(*(u*)(vf + 16UL) + 8UL) - *(u*)(vf + 40UL);
+ *(b*)(vhere + 0UL * 1UL) = vdisp;
+ *(b*)(vhere + 1UL * 1UL) = vdisp >> 8UL;
+ *(b*)(vhere + 2UL * 1UL) = vdisp >> 16UL;
+ *(b*)(vhere + 3UL * 1UL) = vdisp >> 24UL;
+b1: return 0UL;
+b6: goto b4;
+b3: if (*(u*)(vf + 0UL) != 1UL) goto b9;
+ if ((s)(*(u*)(vf + 32UL)) >= (s)4UL) goto b12;
+ v9 = (u)zdie;
+ v10 = (u)"truncated fixup";
+ v11 = ((u(*)())(v9))(v10);
+ v11;
+b10: vdisp = *(u*)(*(u*)(vf + 16UL) + 8UL) - (*(u*)(vf + 40UL) - 4UL);
+ if ((s)(vdisp) >= (s)(-(1UL << 25UL))) goto b18;
+ v12 = 1UL;
+b20: if (!(v12)) goto b16;
+ v13 = (u)zdie;
+ v14 = (u)"fixup overflow";
+ v15 = ((u(*)())(v13))(v14);
+ v15;
+b14: vx = (5UL << 26UL) + (vdisp >> 2UL & (1UL << 26UL) - 1UL);
+ vhere = *(u*)(vf + 24UL) + -4UL * 1UL;
+ *(b*)(vhere + 0UL * 1UL) = vx;
+ *(b*)(vhere + 1UL * 1UL) = vx >> 8UL;
+ *(b*)(vhere + 2UL * 1UL) = vx >> 16UL;
+ *(b*)(vhere + 3UL * 1UL) = vx >> 24UL;
+ goto b1;
+b16: goto b14;
+b18: if ((s)(vdisp) < (s)(1UL << 25UL)) goto b21;
+ v12 = 1UL;
+ goto b20;
+b21: v12 = 0UL;
+ goto b20;
+b12: goto b10;
+b9: if (*(u*)(vf + 0UL) != 2UL) goto b24;
+ if ((s)(*(u*)(vf + 32UL)) >= (s)8UL) goto b27;
+ v16 = (u)zdie;
+ v17 = (u)"truncated fixup";
+ v18 = ((u(*)())(v16))(v17);
+ v18;
+b25: vhere = *(u*)(vf + 24UL) + -8UL * 1UL;
+ vdisp = *(u*)(*(u*)(vf + 16UL) + 8UL) - (*(u*)(vf + 40UL) - 8UL);
+ if ((s)(vdisp) < (s)(-(1UL << 21UL))) goto b37;
+ if ((s)(vdisp) >= (s)(1UL << 21UL)) goto b37;
+ v20 = 1UL;
+b39: if (!(v20)) goto b33;
+ if (!0UL) goto b33;
+ v19 = 1UL;
+b35: if (!(v19)) goto b31;
+ vx = ((((vdisp & 3UL) << 29UL) + (1UL << 28UL)) + ((vdisp >> 2UL & (1UL << 19UL) - 1UL) << 5UL)) + vrd;
+ *(b*)(vhere + 0UL * 1UL) = vx;
+ *(b*)(vhere + 1UL * 1UL) = vx >> 8UL;
+ *(b*)(vhere + 2UL * 1UL) = vx >> 16UL;
+ *(b*)(vhere + 3UL * 1UL) = vx >> 24UL;
+ vx = 3573751839UL;
+ *(b*)(vhere + 4UL * 1UL) = vx;
+ *(b*)(vhere + 5UL * 1UL) = vx >> 8UL;
+ *(b*)(vhere + 6UL * 1UL) = vx >> 16UL;
+ *(b*)(vhere + 7UL * 1UL) = vx >> 24UL;
+b29: goto b1;
+b31: if ((s)(vdisp) < (s)(-(1UL << 33UL))) goto b43;
+ if ((s)(vdisp) >= (s)(1UL << 33UL)) goto b43;
+ v21 = 1UL;
+b45: if (!(v21)) goto b41;
+ vdisp = (*(u*)(*(u*)(vf + 16UL) + 8UL) & -4096UL) - (*(u*)(vf + 40UL) - 8UL & -4096UL);
+ vx = ((((1UL << 31UL) + ((vdisp >> 12UL & 3UL) << 29UL)) + (1UL << 28UL)) + ((vdisp >> 14UL & (1UL << 19UL) - 1UL) << 5UL)) + vrd;
+ *(b*)(vhere + 0UL * 1UL) = vx;
+ *(b*)(vhere + 1UL * 1UL) = vx >> 8UL;
+ *(b*)(vhere + 2UL * 1UL) = vx >> 16UL;
+ *(b*)(vhere + 3UL * 1UL) = vx >> 24UL;
+ vdisp = *(u*)(*(u*)(vf + 16UL) + 8UL);
+ vx = (((290UL << 23UL) + ((vdisp & 4095UL) << 10UL)) + (vrd << 5UL)) + vrd;
+ *(b*)(vhere + 4UL * 1UL) = vx;
+ *(b*)(vhere + 5UL * 1UL) = vx >> 8UL;
+ *(b*)(vhere + 6UL * 1UL) = vx >> 16UL;
+ *(b*)(vhere + 7UL * 1UL) = vx >> 24UL;
+ goto b29;
+b41: v22 = (u)zdie;
+ v23 = (u)"fixup overflow";
+ v24 = ((u(*)())(v22))(v23);
+ v24;
+ goto b29;
+b43: v21 = 0UL;
+ goto b45;
+b33: v19 = 0UL;
+ goto b35;
+b37: v20 = 0UL;
+ goto b39;
+b27: goto b25;
+b24: v25 = (u)zdie;
+ v26 = (u)"invalid fixup";
+ v27 = ((u(*)())(v25))(v26);
+ v27;
+ goto b1;
}
u zfixup_label(u vc, u vl) {
u vf = 0;
@@ -16394,26 +11164,24 @@ u zfixup_label(u vc, u vl) {
u v8 = 0;
u v9 = 0;
u v10 = 0;
- u v11 = 0;
- if (!*(u*)(vl + 16UL)) goto b3;
+ if (!(*(u*)(vl + 16UL))) goto b3;
v3 = (u)zdie;
v4 = (u)"already fixed";
- v5 = ((u(*)())v3)(v4);
+ v5 = ((u(*)())(v3))(v4);
v5;
b1: *(u*)(vl + 8UL) = *(u*)(vc + 24UL);
*(u*)(vl + 16UL) = 1UL;
vf = *(u*)(vl + 0UL);
-b5: if (!vf) goto b11;
+b5: if (!(vf)) goto b11;
v6 = 0UL;
-b12: if (!v6) goto b9;
+b12: if (!(v6)) goto b9;
return 0UL;
b9: v7 = (u)zfixup;
v8 = vc;
- v9 = *(u*)(vf + 8UL);
- v10 = *(u*)(vl + 8UL) - *(u*)(vf + 16UL);
- v11 = ((u(*)())v7)(v8, v9, v10);
- v11;
- vf = *(u*)(vf + 0UL);
+ v9 = vf;
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+ vf = *(u*)(vf + 8UL);
goto b5;
b11: v6 = 1UL;
goto b12;
@@ -16432,7 +11200,7 @@ u zfopen(u vfd, u va) {
v3 = (u)zalloc;
v4 = va;
v5 = 64UL;
- v6 = ((u(*)())v3)(v4, v5);
+ v6 = ((u(*)())(v3))(v4, v5);
vf = v6;
*(u*)(vf + 8UL) = vfd;
*(u*)(vf + 0UL) = va;
@@ -16443,7 +11211,7 @@ u zfopen(u vfd, u va) {
v7 = (u)zalloc;
v8 = va;
v9 = *(u*)(vf + 40UL);
- v10 = ((u(*)())v7)(v8, v9);
+ v10 = ((u(*)())(v7))(v8, v9);
*(u*)(vf + 16UL) = v10;
return vf;
}
@@ -16466,38 +11234,38 @@ u zfputc(u vf, u vch) {
u v17 = 0;
u v18 = 0;
u v19 = 0;
- if (!vf) goto b5;
+ if (!(vf)) goto b5;
v3 = 0UL;
-b6: if (!v3) goto b3;
+b6: if (!(v3)) goto b3;
vb = vch;
v4 = (u)zwrite;
v5 = 1UL;
v6 = (u)&vb;
v7 = 1UL;
- v8 = ((u(*)())v4)(v5, v6, v7);
+ v8 = ((u(*)())(v4))(v5, v6, v7);
if (v8 == 1UL) goto b9;
v9 = (u)zexit;
v10 = 3UL;
- v11 = ((u(*)())v9)(v10);
+ v11 = ((u(*)())(v9))(v10);
v11;
b7: return 0UL;
b9: goto b7;
b3: if (*(u*)(vf + 32UL) != *(u*)(vf + 40UL)) goto b14;
v12 = (u)zfflush;
v13 = vf;
- v14 = ((u(*)())v12)(v13);
+ v14 = ((u(*)())(v12))(v13);
v14;
b12: *(b*)(*(u*)(vf + 16UL) + *(u*)(vf + 32UL) * 1UL) = vch;
*(u*)(vf + 32UL) = *(u*)(vf + 32UL) + 1UL;
if (vch != 10UL) goto b20;
- if (!*(u*)(vf + 56UL)) goto b24;
+ if (!(*(u*)(vf + 56UL))) goto b24;
v16 = 0UL;
-b25: if (!v16) goto b20;
+b25: if (!(v16)) goto b20;
v15 = 1UL;
-b22: if (!v15) goto b18;
+b22: if (!(v15)) goto b18;
v17 = (u)zfflush;
v18 = vf;
- v19 = ((u(*)())v17)(v18);
+ v19 = ((u(*)())(v17))(v18);
v19;
b16: return 0UL;
b18: goto b16;
@@ -16523,29 +11291,29 @@ u zfputd(u vout, u vn) {
u v12 = 0;
u v13 = 0;
u v14 = 0;
- if ((s)vn >= (s)0UL) goto b3;
+ if ((s)(vn) >= (s)0UL) goto b3;
v3 = (u)zfputc;
v4 = vout;
v5 = 45UL;
- v6 = ((u(*)())v3)(v4, v5);
+ v6 = ((u(*)())(v3))(v4, v5);
v6;
- va = -(u)((s)vn % (s)10UL);
- vn = (u)((s)vn / (s)-10UL);
+ va = -((u)((s)(vn) % (s)10UL));
+ vn = (u)((s)(vn) / (s)(-10UL));
b1: if (vn == 0UL) goto b7;
v7 = (u)zfputd;
v8 = vout;
v9 = vn;
- v10 = ((u(*)())v7)(v8, v9);
+ v10 = ((u(*)())(v7))(v8, v9);
v10;
b5: v11 = (u)zfputc;
v12 = vout;
v13 = 48UL + va;
- v14 = ((u(*)())v11)(v12, v13);
+ v14 = ((u(*)())(v11))(v12, v13);
v14;
return 0UL;
b7: goto b5;
-b3: va = (u)((s)vn % (s)10UL);
- vn = (u)((s)vn / (s)10UL);
+b3: va = (u)((s)(vn) % (s)10UL);
+ vn = (u)((s)(vn) / (s)10UL);
goto b1;
}
u zfputh(u vout, u vn) {
@@ -16560,16 +11328,16 @@ u zfputh(u vout, u vn) {
u v10 = 0;
vd = vn & 15UL;
vn = vn >> 4UL;
- if (!vn) goto b3;
+ if (!(vn)) goto b3;
v3 = (u)zfputh;
v4 = vout;
v5 = vn;
- v6 = ((u(*)())v3)(v4, v5);
+ v6 = ((u(*)())(v3))(v4, v5);
v6;
b1: v7 = (u)zfputc;
v8 = vout;
v9 = (u)*(b*)((u)"0123456789abcdef" + vd * 1UL);
- v10 = ((u(*)())v7)(v8, v9);
+ v10 = ((u(*)())(v7))(v8, v9);
v10;
return 0UL;
b3: goto b1;
@@ -16582,14 +11350,14 @@ u zfputs(u vf, u vs) {
u v6 = 0;
u v7 = 0;
vi = 0UL;
-b1: if (!(u)*(b*)(vs + vi * 1UL)) goto b7;
+b1: if (!((u)*(b*)(vs + vi * 1UL))) goto b7;
v3 = 0UL;
-b8: if (!v3) goto b5;
+b8: if (!(v3)) goto b5;
return 0UL;
b5: v4 = (u)zfputc;
v5 = vf;
v6 = (u)*(b*)(vs + vi * 1UL);
- v7 = ((u(*)())v4)(v5, v6);
+ v7 = ((u(*)())(v4))(v5, v6);
v7;
vi = vi + 1UL;
goto b1;
@@ -16636,14 +11404,14 @@ u zfunc_to_ir(u vc, u vn) {
u v35 = 0;
u v36 = 0;
u v37 = 0;
- if (!vn) goto b5;
+ if (!(vn)) goto b5;
v5 = 0UL;
-b6: if (!v5) goto b3;
+b6: if (!(v5)) goto b3;
return 0UL;
b3: v6 = (u)zmkirfunc;
v7 = vc;
v8 = *(u*)(*(u*)(*(u*)(vn + 8UL) + 8UL) + 56UL);
- v9 = ((u(*)())v6)(v7, v8);
+ v9 = ((u(*)())(v6))(v7, v8);
vic = v9;
*(u*)(vic + 32UL) = *(u*)(vn + 24UL);
*(u*)(vic + 40UL) = *(u*)(vn + 32UL);
@@ -16651,44 +11419,77 @@ b3: v6 = (u)zmkirfunc;
v10 = (u)zargs_to_ir;
v11 = vic;
v12 = *(u*)(*(u*)(*(u*)(vn + 8UL) + 16UL) + 8UL);
- v13 = ((u(*)())v10)(v11, v12);
+ v13 = ((u(*)())(v10))(v11, v12);
v13;
v14 = (u)zlocals_to_ir;
v15 = vic;
v16 = *(u*)(vn + 16UL);
- v17 = ((u(*)())v14)(v15, v16);
+ v17 = ((u(*)())(v14))(v15, v16);
v17;
v18 = (u)zlabels_to_ir;
v19 = vic;
v20 = *(u*)(vn + 16UL);
- v21 = ((u(*)())v18)(v19, v20);
+ v21 = ((u(*)())(v18))(v19, v20);
v21;
v22 = (u)zstmt_to_ir;
v23 = vic;
v24 = *(u*)(vn + 16UL);
- v25 = ((u(*)())v22)(v23, v24);
+ v25 = ((u(*)())(v22))(v23, v24);
v25;
v26 = (u)zprototype;
v27 = vc;
v28 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v29 = ((u(*)())v26)(v27, v28);
+ v29 = ((u(*)())(v26))(v27, v28);
vt = v29;
if (*(u*)(*(u*)(vt + 16UL) + 0UL) != 1UL) goto b15;
v30 = (u)zmkirconst;
v31 = vic;
v32 = 0UL;
- v33 = ((u(*)())v30)(v31, v32);
+ v33 = ((u(*)())(v30))(v31, v32);
vvalue = v33;
v34 = (u)zirreturn;
v35 = vic;
v36 = vvalue;
- v37 = ((u(*)())v34)(v35, v36);
+ v37 = ((u(*)())(v34))(v35, v36);
v37;
b13: return vic;
b15: goto b13;
b5: v5 = 1UL;
goto b6;
}
+u zfxxd(u vout, u vbuf, u vn) {
+ u v_line[11] = {0};
+ u vline = 0;
+ u vi = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ vline = (u)v_line;
+ vi = 0UL;
+b1: if ((s)(vi) <= (s)(vn)) goto b5;
+ return 0UL;
+b5: v6 = (u)zxxd_line;
+ v7 = vline;
+ v8 = vi;
+ v9 = vbuf + vi * 1UL;
+ v10 = vn - vi;
+ v11 = ((u(*)())(v6))(v7, v8, v9, v10);
+ v11;
+ v12 = (u)zfputs;
+ v13 = vout;
+ v14 = vline;
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ vi = vi + 16UL;
+ goto b1;
+}
u zgather_include(u vc, u vfilename, u vslen) {
u vfd = 0;
u vblob = 0;
@@ -16713,23 +11514,23 @@ u zgather_include(u vc, u vfilename, u vslen) {
v6 = vfilename;
v7 = 0UL;
v8 = 0UL;
- v9 = ((u(*)())v5)(v6, v7, v8);
+ v9 = ((u(*)())(v5))(v6, v7, v8);
vfd = v9;
- if ((s)vfd >= (s)0UL) goto b4;
+ if ((s)(vfd) >= (s)0UL) goto b4;
v10 = (u)zcdie;
v11 = vc;
v12 = (u)"gather_include: failed to open include";
- v13 = ((u(*)())v10)(v11, v12);
+ v13 = ((u(*)())(v10))(v11, v12);
v13;
b2: v14 = (u)zreadall;
v15 = vfd;
v16 = vslen;
v17 = *(u*)(vc + 0UL);
- v18 = ((u(*)())v14)(v15, v16, v17);
+ v18 = ((u(*)())(v14))(v15, v16, v17);
vblob = v18;
v19 = (u)zclose;
v20 = vfd;
- v21 = ((u(*)())v19)(v20);
+ v21 = ((u(*)())(v19))(v20);
v21;
return vblob;
b4: goto b2;
@@ -26896,6 +21697,9 @@ u zget_link_table() {
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377";
}
+u zget_machine() {
+ return 0;
+}
u zget_num_states() {
return 132UL;
}
@@ -27102,26 +21906,26 @@ b3: vptr = *(u*)(vl + 72UL);
vstate = 0UL;
vtag = 0UL;
b5: if (vptr != *(u*)(vl + 80UL)) goto b9;
- if (!*(u*)(vl + 48UL)) goto b12;
+ if (!(*(u*)(vl + 48UL))) goto b12;
if (*(u*)(vl + 64UL) != *(u*)(vl + 80UL)) goto b15;
*(u*)(vl + 40UL) = 1UL;
return -1UL;
-b15:b6: if (!vtag) goto b49;
+b15:b6: if (!(vtag)) goto b49;
v35 = 0UL;
-b50: if (!v35) goto b47;
+b50: if (!(v35)) goto b47;
v36 = (u)zdie;
v37 = (u)"huh";
- v38 = ((u(*)())v36)(v37);
+ v38 = ((u(*)())(v36))(v37);
v38;
return -1UL;
b47: *(u*)(vl + 96UL) = 0UL;
v39 = vtag;
v40 = vl;
- v41 = ((u(*)())v39)(v40);
+ v41 = ((u(*)())(v39))(v40);
vret = v41;
- if (!*(u*)(vl + 96UL)) goto b57;
+ if (!(*(u*)(vl + 96UL))) goto b57;
v42 = 0UL;
-b58: if (!v42) goto b55;
+b58: if (!(v42)) goto b55;
return vret;
b55: goto b3;
b57: v42 = 1UL;
@@ -27133,18 +21937,18 @@ b12: if ((s)(*(u*)(vl + 80UL) - *(u*)(vl + 64UL)) < (s)(*(u*)(vl + 88UL) >> 1UL)
v9 = (u)zalloc;
v10 = *(u*)(vl + 0UL);
v11 = *(u*)(vl + 88UL);
- v12 = ((u(*)())v9)(v10, v11);
+ v12 = ((u(*)())(v9))(v10, v11);
vtmp = v12;
v13 = (u)zmemcpy;
v14 = vtmp;
v15 = *(u*)(vl + 56UL) + *(u*)(vl + 64UL) * 1UL;
v16 = *(u*)(vl + 80UL) - *(u*)(vl + 64UL);
- v17 = ((u(*)())v13)(v14, v15, v16);
+ v17 = ((u(*)())(v13))(v14, v15, v16);
v17;
v18 = (u)zfree;
v19 = *(u*)(vl + 0UL);
v20 = *(u*)(vl + 56UL);
- v21 = ((u(*)())v18)(v19, v20);
+ v21 = ((u(*)())(v18))(v19, v20);
v21;
*(u*)(vl + 56UL) = vtmp;
vptr = vptr - *(u*)(vl + 64UL);
@@ -27155,12 +21959,12 @@ b16: v27 = (u)zread;
v28 = *(u*)(vl + 32UL);
v29 = *(u*)(vl + 56UL) + *(u*)(vl + 80UL) * 1UL;
v30 = *(u*)(vl + 88UL) - *(u*)(vl + 80UL);
- v31 = ((u(*)())v27)(v28, v29, v30);
+ v31 = ((u(*)())(v27))(v28, v29, v30);
vret = v31;
- if ((s)vret >= (s)0UL) goto b28;
+ if ((s)(vret) >= (s)0UL) goto b28;
v32 = (u)zdie;
v33 = (u)"read failed";
- v34 = ((u(*)())v32)(v33);
+ v34 = ((u(*)())(v32))(v33);
v34;
b26: if (vret != 0UL) goto b32;
*(u*)(vl + 48UL) = 1UL;
@@ -27177,7 +21981,7 @@ b7: vch = (u)*(b*)(*(u*)(vl + 56UL) + vptr * 1UL);
b36: vstate = *(u*)(*(u*)(vl + 24UL) + (vstate * 256UL + vch) * 8UL);
if (vstate != -1UL) goto b41;
goto b6;
-b41: if (!*(u*)(*(u*)(vl + 16UL) + vstate * 8UL)) goto b44;
+b41: if (!(*(u*)(*(u*)(vl + 16UL) + vstate * 8UL))) goto b44;
vtag = *(u*)(*(u*)(vl + 16UL) + vstate * 8UL);
*(u*)(vl + 72UL) = vptr;
*(u*)(vl + 120UL) = vlineno;
@@ -27187,12 +21991,12 @@ b44: goto b42;
b38: vcolno = vcolno + 1UL;
goto b36;
b28: goto b26;
-b18: if ((s)*(u*)(vl + 80UL) < (s)(*(u*)(vl + 88UL) >> 1UL)) goto b23;
+b18: if ((s)(*(u*)(vl + 80UL)) < (s)(*(u*)(vl + 88UL) >> 1UL)) goto b23;
v22 = (u)zmemcpy;
v23 = *(u*)(vl + 56UL);
v24 = *(u*)(vl + 56UL) + *(u*)(vl + 64UL) * 1UL;
v25 = *(u*)(vl + 80UL) - *(u*)(vl + 64UL);
- v26 = ((u(*)())v22)(v23, v24, v25);
+ v26 = ((u(*)())(v22))(v23, v24, v25);
v26;
vptr = vptr - *(u*)(vl + 64UL);
*(u*)(vl + 72UL) = *(u*)(vl + 72UL) - *(u*)(vl + 64UL);
@@ -27212,40 +22016,40 @@ u zhex2int(u vs, u vlen, u vok) {
vx = 0UL;
vi = 0UL;
b1: if (vi != vlen) goto b5;
- *(u*)vok = 1UL;
+ *(u*)(vok) = 1UL;
return vx;
b5: vd = (u)*(b*)(vs + vi * 1UL);
if (vd != 95UL) goto b8;
vi = vi + 1UL;
goto b1;
-b8: if ((s)vd < (s)48UL) goto b12;
- if ((s)vd > (s)57UL) goto b12;
+b8: if ((s)(vd) < (s)48UL) goto b12;
+ if ((s)(vd) > (s)57UL) goto b12;
v6 = 1UL;
-b14: if (!v6) goto b10;
+b14: if (!(v6)) goto b10;
vd = vd - 48UL;
-b6: if ((s)vx <= (s)((1UL << 59UL) - 1UL)) goto b29;
- *(u*)vok = 0UL;
+b6: if ((s)(vx) <= (s)((1UL << 59UL) - 1UL)) goto b29;
+ *(u*)(vok) = 0UL;
return 0UL;
b29: vx = vx * 16UL;
- if ((s)vx <= (s)((1UL << 63UL) - 1UL - vd)) goto b32;
- *(u*)vok = 0UL;
+ if ((s)(vx) <= (s)(((1UL << 63UL) - 1UL) - vd)) goto b32;
+ *(u*)(vok) = 0UL;
return 0UL;
b32: vx = vx + vd;
vi = vi + 1UL;
goto b1;
-b10: if ((s)vd < (s)97UL) goto b18;
- if ((s)vd > (s)102UL) goto b18;
+b10: if ((s)(vd) < (s)97UL) goto b18;
+ if ((s)(vd) > (s)102UL) goto b18;
v7 = 1UL;
-b20: if (!v7) goto b16;
- vd = vd - 97UL + 10UL;
+b20: if (!(v7)) goto b16;
+ vd = (vd - 97UL) + 10UL;
goto b6;
-b16: if ((s)vd < (s)65UL) goto b24;
- if ((s)vd > (s)70UL) goto b24;
+b16: if ((s)(vd) < (s)65UL) goto b24;
+ if ((s)(vd) > (s)70UL) goto b24;
v8 = 1UL;
-b26: if (!v8) goto b22;
- vd = vd - 65UL + 10UL;
+b26: if (!(v8)) goto b22;
+ vd = (vd - 65UL) + 10UL;
goto b6;
-b22: *(u*)vok = 0UL;
+b22: *(u*)(vok) = 0UL;
return 0UL;
b24: v8 = 0UL;
goto b26;
@@ -27258,25 +22062,25 @@ u zhexdig(u vch, u vok) {
u v2 = 0;
u v3 = 0;
u v4 = 0;
- if ((s)vch < (s)48UL) goto b5;
- if ((s)vch > (s)57UL) goto b5;
+ if ((s)(vch) < (s)48UL) goto b5;
+ if ((s)(vch) > (s)57UL) goto b5;
v2 = 1UL;
-b7: if (!v2) goto b3;
- *(u*)vok = 1UL;
+b7: if (!(v2)) goto b3;
+ *(u*)(vok) = 1UL;
return vch - 48UL;
-b3: if ((s)vch < (s)65UL) goto b11;
- if ((s)vch > (s)70UL) goto b11;
+b3: if ((s)(vch) < (s)65UL) goto b11;
+ if ((s)(vch) > (s)70UL) goto b11;
v3 = 1UL;
-b13: if (!v3) goto b9;
- *(u*)vok = 1UL;
- return vch - 70UL + 10UL;
-b9: if ((s)vch < (s)97UL) goto b17;
- if ((s)vch > (s)102UL) goto b17;
+b13: if (!(v3)) goto b9;
+ *(u*)(vok) = 1UL;
+ return (vch - 70UL) + 10UL;
+b9: if ((s)(vch) < (s)97UL) goto b17;
+ if ((s)(vch) > (s)102UL) goto b17;
v4 = 1UL;
-b19: if (!v4) goto b15;
- *(u*)vok = 1UL;
- return vch - 97UL + 10UL;
-b15: *(u*)vok = 0UL;
+b19: if (!(v4)) goto b15;
+ *(u*)(vok) = 1UL;
+ return (vch - 97UL) + 10UL;
+b15: *(u*)(vok) = 0UL;
return 0UL;
b17: v4 = 0UL;
goto b19;
@@ -27332,36 +22136,36 @@ u zhoist_locals(u vc, u vd, u vn) {
u v46 = 0;
u v47 = 0;
u v48 = 0;
- if (!vn) goto b5;
+ if (!(vn)) goto b5;
v7 = 0UL;
-b6: if (!v7) goto b3;
+b6: if (!(v7)) goto b3;
return 0UL;
b3: vkind = *(u*)(vn + 0UL);
if (vkind != 21UL) goto b9;
-b10: if (!vn) goto b16;
+b10: if (!(vn)) goto b16;
v8 = 0UL;
-b17: if (!v8) goto b14;
+b17: if (!(v8)) goto b14;
return 0UL;
b14: v9 = (u)zhoist_locals;
v10 = vc;
v11 = vd;
v12 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v13 = ((u(*)())v9)(v10, v11, v12);
+ v13 = ((u(*)())(v9))(v10, v11, v12);
v13;
vn = *(u*)(vn + 16UL);
goto b10;
b16: v8 = 1UL;
goto b17;
b9: if (vkind != 5UL) goto b20;
-b21: if (!vn) goto b27;
+b21: if (!(vn)) goto b27;
v14 = 0UL;
-b28: if (!v14) goto b25;
+b28: if (!(v14)) goto b25;
return 0UL;
b25: v15 = (u)zhoist_locals;
v16 = vc;
v17 = vd;
v18 = *(u*)(vn + 8UL);
- v19 = ((u(*)())v15)(v16, v17, v18);
+ v19 = ((u(*)())(v15))(v16, v17, v18);
v19;
vn = *(u*)(vn + 16UL);
goto b21;
@@ -27372,7 +22176,7 @@ b20: if (vkind != 26UL) goto b31;
v21 = vc;
v22 = vd;
v23 = *(u*)(vn + 8UL);
- v24 = ((u(*)())v20)(v21, v22, v23);
+ v24 = ((u(*)())(v20))(v21, v22, v23);
v24;
return 0UL;
b31: if (vkind != 31UL) goto b34;
@@ -27382,13 +22186,13 @@ b31: if (vkind != 31UL) goto b34;
v27 = *(u*)(vd + 32UL);
v28 = vname;
v29 = 1UL;
- v30 = ((u(*)())v25)(v26, v27, v28, v29);
+ v30 = ((u(*)())(v25))(v26, v27, v28, v29);
vv = v30;
- if (!*(u*)(vv + 224UL)) goto b38;
+ if (!(*(u*)(vv + 224UL))) goto b38;
v31 = (u)zcdie;
v32 = vc;
v33 = (u)"duplicate goto";
- v34 = ((u(*)())v31)(v32, v33);
+ v34 = ((u(*)())(v31))(v32, v33);
v34;
b36: *(u*)(vv + 224UL) = 1UL;
return 0UL;
@@ -27399,7 +22203,7 @@ b41: vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
v35 = (u)zprototype;
v36 = vc;
v37 = *(u*)(vn + 16UL);
- v38 = ((u(*)())v35)(v36, v37);
+ v38 = ((u(*)())(v35))(v36, v37);
vt = v38;
*(u*)(vn + 64UL) = vt;
v39 = (u)zfind;
@@ -27407,13 +22211,13 @@ b41: vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
v41 = *(u*)(vd + 32UL);
v42 = vname;
v43 = 1UL;
- v44 = ((u(*)())v39)(v40, v41, v42, v43);
+ v44 = ((u(*)())(v39))(v40, v41, v42, v43);
vv = v44;
- if (!*(u*)(vv + 208UL)) goto b46;
+ if (!(*(u*)(vv + 208UL))) goto b46;
v45 = (u)zcdie;
v46 = vc;
v47 = (u)"duplicate variable";
- v48 = ((u(*)())v45)(v46, v47);
+ v48 = ((u(*)())(v45))(v46, v47);
v48;
b44: *(u*)(vv + 216UL) = vt;
*(u*)(vv + 208UL) = 1UL;
@@ -27427,13 +22231,13 @@ u zint2str(u vs, u vx) {
u vi = 0;
vi = 0UL;
vj = 21UL;
- if ((s)vx >= (s)0UL) goto b3;
+ if ((s)(vx) >= (s)0UL) goto b3;
*(b*)(vs + 0UL * 1UL) = 45UL;
vi = vi + 1UL;
- vx = -vx;
+ vx = -(vx);
b1:b4: vj = vj - 1UL;
- *(b*)(vs + vj * 1UL) = 48UL + (u)((s)vx % (s)10UL);
- vx = (u)((s)vx / (s)10UL);
+ *(b*)(vs + vj * 1UL) = 48UL + (u)((s)(vx) % (s)10UL);
+ vx = (u)((s)(vx) / (s)10UL);
if (vx != 0UL) goto b8;
b9: if (vj != 21UL) goto b13;
*(b*)(vs + vi * 1UL) = 0UL;
@@ -27490,22 +22294,22 @@ u ziraddarg(u vic, u vname, u vt) {
v4 = (u)zirfind_var;
v5 = vic;
v6 = vname;
- v7 = ((u(*)())v4)(v5, v6);
+ v7 = ((u(*)())(v4))(v5, v6);
viv = v7;
- if (!*(u*)viv) goto b4;
+ if (!(*(u*)(viv))) goto b4;
v8 = (u)zcdie;
v9 = *(u*)(vic + 0UL);
v10 = (u)"duplicate var";
- v11 = ((u(*)())v8)(v9, v10);
+ v11 = ((u(*)())(v8))(v9, v10);
v11;
b2: v12 = (u)zmkirvar;
v13 = vic;
v14 = vname;
v15 = vt;
- v16 = ((u(*)())v12)(v13, v14, v15);
- *(u*)viv = v16;
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ *(u*)(viv) = v16;
*(u*)(vic + 152UL) = *(u*)(vic + 152UL) + 1UL;
- return *(u*)viv;
+ return *(u*)(viv);
b4: goto b2;
}
u ziraddop(u vic, u vo) {
@@ -27529,32 +22333,32 @@ u ziraddop(u vic, u vo) {
u v19 = 0;
u v20 = 0;
vcur = *(u*)(vic + 104UL);
- if (!vcur) goto b5;
+ if (!(vcur)) goto b5;
v5 = 0UL;
-b6: if (!v5) goto b3;
+b6: if (!(v5)) goto b3;
return 0UL;
b3: v6 = (u)zassert;
- if (!vo) goto b11;
+ if (!(vo)) goto b11;
v9 = 0UL;
-b12: if (!v9) goto b8;
+b12: if (!(v9)) goto b8;
v8 = 0UL;
b9: v7 = v8;
v10 = (u)"expected op to add";
- v11 = ((u(*)())v6)(v7, v10);
+ v11 = ((u(*)())(v6))(v7, v10);
v11;
v12 = (u)zassert;
- if (!*(u*)(vcur + 32UL)) goto b15;
+ if (!(*(u*)(vcur + 32UL))) goto b15;
v14 = 0UL;
b16: v13 = v14;
v15 = (u)"block already closed";
- v16 = ((u(*)())v12)(v13, v15);
+ v16 = ((u(*)())(v12))(v13, v15);
v16;
if (*(u*)(vcur + 16UL) != *(u*)(vcur + 24UL)) goto b20;
*(u*)(vcur + 24UL) = *(u*)(vcur + 24UL) * 2UL + 16UL;
v17 = (u)zalloc;
v18 = *(u*)(vic + 16UL);
v19 = *(u*)(vcur + 24UL) * 8UL;
- v20 = ((u(*)())v17)(v18, v19);
+ v20 = ((u(*)())(v17))(v18, v19);
vops = v20;
vi = 0UL;
b22: if (vi != *(u*)(vcur + 16UL)) goto b26;
@@ -27593,20 +22397,20 @@ u ziraddvar(u vic, u vname, u vt) {
v4 = (u)zirfind_var;
v5 = vic;
v6 = vname;
- v7 = ((u(*)())v4)(v5, v6);
+ v7 = ((u(*)())(v4))(v5, v6);
viv = v7;
- if (!*(u*)viv) goto b4;
+ if (!(*(u*)(viv))) goto b4;
v8 = (u)zcdie;
v9 = *(u*)(vic + 0UL);
v10 = (u)"duplicate var";
- v11 = ((u(*)())v8)(v9, v10);
+ v11 = ((u(*)())(v8))(v9, v10);
v11;
b2: v12 = (u)zmkirvar;
v13 = vic;
v14 = vname;
v15 = vt;
- v16 = ((u(*)())v12)(v13, v14, v15);
- *(u*)viv = v16;
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ *(u*)(viv) = v16;
return 0UL;
b4: goto b2;
}
@@ -27631,22 +22435,22 @@ u zirblock_backlink(u vic, u vib, u vfrom) {
u v20 = 0;
u v21 = 0;
u v22 = 0;
- if (!vfrom) goto b3;
- if (!*(u*)(vib + 40UL)) goto b6;
+ if (!(vfrom)) goto b3;
+ if (!(*(u*)(vib + 40UL))) goto b6;
*(u*)(*(u*)(vib + 40UL) + *(u*)(vib + 48UL) * 8UL) = vfrom;
b4: *(u*)(vib + 48UL) = *(u*)(vib + 48UL) + 1UL;
-b1: if (!*(u*)(vib + 80UL)) goto b9;
+b1: if (!(*(u*)(vib + 80UL))) goto b9;
return 0UL;
b9: *(u*)(vib + 80UL) = 1UL;
vkind = *(u*)(*(u*)(*(u*)(vib + 8UL) + (*(u*)(vib + 16UL) - 1UL) * 8UL) + 0UL);
if (vkind != 27UL) goto b14;
v4 = 1UL;
-b16: if (!v4) goto b12;
+b16: if (!(v4)) goto b12;
v5 = (u)zirblock_backlink;
v6 = vic;
v7 = *(u*)(vib + 56UL);
v8 = vib;
- v9 = ((u(*)())v5)(v6, v7, v8);
+ v9 = ((u(*)())(v5))(v6, v7, v8);
v9;
b10: return 0UL;
b12: if (vkind != 29UL) goto b20;
@@ -27654,26 +22458,26 @@ b12: if (vkind != 29UL) goto b20;
v11 = vic;
v12 = *(u*)(vib + 56UL);
v13 = vib;
- v14 = ((u(*)())v10)(v11, v12, v13);
+ v14 = ((u(*)())(v10))(v11, v12, v13);
v14;
if (*(u*)(vib + 56UL) == *(u*)(vib + 64UL)) goto b24;
v15 = (u)zirblock_backlink;
v16 = vic;
v17 = *(u*)(vib + 64UL);
v18 = vib;
- v19 = ((u(*)())v15)(v16, v17, v18);
+ v19 = ((u(*)())(v15))(v16, v17, v18);
v19;
b22: goto b10;
b24: goto b22;
b20: if (vkind != 30UL) goto b27;
- if (!*(u*)(vic + 88UL)) goto b30;
+ if (!(*(u*)(vic + 88UL))) goto b30;
*(u*)(*(u*)(vic + 88UL) + *(u*)(vic + 96UL) * 8UL) = vib;
b28: *(u*)(vic + 96UL) = *(u*)(vic + 96UL) + 1UL;
goto b10;
b30: goto b28;
b27: v20 = (u)zdie;
v21 = (u)"invalid block";
- v22 = ((u(*)())v20)(v21);
+ v22 = ((u(*)())(v20))(v21);
v22;
goto b10;
b14: if (vkind != 28UL) goto b17;
@@ -27730,66 +22534,66 @@ u zirblock_basic_value(u vic, u vib) {
u v44 = 0;
u v45 = 0;
u v46 = 0;
- if (!*(u*)(vib + 32UL)) goto b5;
+ if (!(*(u*)(vib + 32UL))) goto b5;
v6 = 0UL;
-b6: if (!v6) goto b3;
+b6: if (!(v6)) goto b3;
v7 = (u)zdie;
v8 = (u)"block not closed";
- v9 = ((u(*)())v7)(v8);
+ v9 = ((u(*)())(v7))(v8);
v9;
-b1: if (!*(u*)(vib + 80UL)) goto b10;
+b1: if (!(*(u*)(vib + 80UL))) goto b10;
return 0UL;
b10: *(u*)(vib + 80UL) = 1UL;
vnvals = *(u*)(vic + 136UL);
v10 = (u)zalloc;
v11 = *(u*)(vic + 16UL);
v12 = 8UL * vnvals;
- v13 = ((u(*)())v10)(v11, v12);
+ v13 = ((u(*)())(v10))(v11, v12);
vvals = v13;
v14 = (u)zassert_zero;
v15 = vvals;
v16 = 8UL * vnvals;
- v17 = ((u(*)())v14)(v15, v16);
+ v17 = ((u(*)())(v14))(v15, v16);
v17;
vi = 0UL;
b13: if (vi != *(u*)(vib + 16UL)) goto b17;
v23 = (u)zfree;
v24 = *(u*)(vic + 16UL);
v25 = vvals;
- v26 = ((u(*)())v23)(v24, v25);
+ v26 = ((u(*)())(v23))(v24, v25);
v26;
v27 = (u)zalloc;
v28 = *(u*)(vic + 16UL);
v29 = 16UL;
- v30 = ((u(*)())v27)(v28, v29);
+ v30 = ((u(*)())(v27))(v28, v29);
v30;
vop = *(u*)(*(u*)(vib + 8UL) + (*(u*)(vib + 16UL) - 1UL) * 8UL);
if (*(u*)(vop + 0UL) != 29UL) goto b23;
v31 = (u)zirblock_basic_value;
v32 = vic;
v33 = *(u*)(vib + 56UL);
- v34 = ((u(*)())v31)(v32, v33);
+ v34 = ((u(*)())(v31))(v32, v33);
v34;
v35 = (u)zirblock_basic_value;
v36 = vic;
v37 = *(u*)(vib + 64UL);
- v38 = ((u(*)())v35)(v36, v37);
+ v38 = ((u(*)())(v35))(v36, v37);
v38;
b21: return 0UL;
b23: if (*(u*)(vop + 0UL) != 28UL) goto b29;
v39 = 1UL;
-b31: if (!v39) goto b27;
+b31: if (!(v39)) goto b27;
v40 = (u)zirblock_basic_value;
v41 = vic;
v42 = *(u*)(vib + 56UL);
- v43 = ((u(*)())v40)(v41, v42);
+ v43 = ((u(*)())(v40))(v41, v42);
v43;
goto b21;
b27: if (*(u*)(vop + 0UL) != 30UL) goto b35;
goto b21;
b35: v44 = (u)zdie;
v45 = (u)"invalid block";
- v46 = ((u(*)())v44)(v45);
+ v46 = ((u(*)())(v44))(v45);
v46;
goto b21;
b29: if (*(u*)(vop + 0UL) != 27UL) goto b32;
@@ -27802,7 +22606,7 @@ b17: vop = *(u*)(*(u*)(vib + 8UL) + vi * 8UL);
v19 = vic;
v20 = vvals;
v21 = vop;
- v22 = ((u(*)())v18)(v19, v20, v21);
+ v22 = ((u(*)())(v18))(v19, v20, v21);
vop = v22;
*(u*)(*(u*)(vib + 8UL) + vi * 8UL) = vop;
vi = vi + 1UL;
@@ -27824,9 +22628,9 @@ u zirblock_dead_expr(u vic, u vb) {
u v11 = 0;
u v12 = 0;
u v13 = 0;
- if (!*(u*)(vb + 32UL)) goto b5;
+ if (!(*(u*)(vb + 32UL))) goto b5;
v6 = 0UL;
-b6: if (!v6) goto b3;
+b6: if (!(v6)) goto b3;
return 0UL;
b3: vi = 0UL;
vj = 0UL;
@@ -27837,18 +22641,18 @@ b11: vo = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
vkind = *(u*)(vo + 0UL);
if (vkind != 6UL) goto b16;
v7 = 1UL;
-b18: if (!v7) goto b14;
+b18: if (!(v7)) goto b14;
if (*(u*)(*(u*)(vo + 8UL) + 0UL) == 0UL) goto b24;
v8 = 1UL;
-b26: if (!v8) goto b22;
+b26: if (!(v8)) goto b22;
*(u*)(*(u*)(vb + 8UL) + vj * 8UL) = vo;
vj = vj + 1UL;
b20:b12: vi = vi + 1UL;
goto b7;
b22: goto b20;
-b24: if (!*(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(*(u*)(vo + 8UL) + 24UL) * 8UL) + 48UL)) goto b29;
+b24: if (!(*(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(*(u*)(vo + 8UL) + 24UL) * 8UL) + 48UL))) goto b29;
v9 = 0UL;
-b30: if (!v9) goto b27;
+b30: if (!(v9)) goto b27;
v8 = 1UL;
goto b26;
b27: v8 = 0UL;
@@ -27857,13 +22661,13 @@ b29: v9 = 1UL;
goto b30;
b14: if (vkind != 8UL) goto b46;
v13 = 1UL;
-b48: if (!v13) goto b42;
+b48: if (!(v13)) goto b42;
v12 = 1UL;
-b44: if (!v12) goto b38;
+b44: if (!(v12)) goto b38;
v11 = 1UL;
-b40: if (!v11) goto b34;
+b40: if (!(v11)) goto b34;
v10 = 1UL;
-b36: if (!v10) goto b32;
+b36: if (!(v10)) goto b32;
*(u*)(*(u*)(vb + 8UL) + vj * 8UL) = vo;
vj = vj + 1UL;
goto b12;
@@ -27928,15 +22732,15 @@ u zirblock_dead_var(u vic, u vib) {
u v30 = 0;
u v31 = 0;
u v32 = 0;
- if (!*(u*)(vib + 80UL)) goto b3;
+ if (!(*(u*)(vib + 80UL))) goto b3;
return 0UL;
b3: *(u*)(vib + 80UL) = 1UL;
- if (!*(u*)(vib + 32UL)) goto b8;
+ if (!(*(u*)(vib + 32UL))) goto b8;
v5 = 0UL;
-b9: if (!v5) goto b6;
+b9: if (!(v5)) goto b6;
v6 = (u)zdie;
v7 = (u)"block not closed";
- v8 = ((u(*)())v6)(v7);
+ v8 = ((u(*)())(v6))(v7);
v8;
b4:b11: if (vi != *(u*)(vib + 16UL)) goto b15;
vop = *(u*)(*(u*)(vib + 8UL) + (*(u*)(vib + 16UL) - 1UL) * 8UL);
@@ -27945,32 +22749,32 @@ b4:b11: if (vi != *(u*)(vib + 16UL)) goto b15;
v14 = (u)zirblock_dead_var;
v15 = vic;
v16 = *(u*)(vib + 56UL);
- v17 = ((u(*)())v14)(v15, v16);
+ v17 = ((u(*)())(v14))(v15, v16);
v17;
v18 = (u)zirblock_dead_var;
v19 = vic;
v20 = *(u*)(vib + 64UL);
- v21 = ((u(*)())v18)(v19, v20);
+ v21 = ((u(*)())(v18))(v19, v20);
v21;
b17: return 0UL;
b19: if (vkind != 27UL) goto b23;
v22 = (u)zirblock_dead_var;
v23 = vic;
v24 = *(u*)(vib + 56UL);
- v25 = ((u(*)())v22)(v23, v24);
+ v25 = ((u(*)())(v22))(v23, v24);
v25;
goto b17;
b23: if (vkind != 28UL) goto b26;
v26 = (u)zirblock_dead_var;
v27 = vic;
v28 = *(u*)(vib + 56UL);
- v29 = ((u(*)())v26)(v27, v28);
+ v29 = ((u(*)())(v26))(v27, v28);
v29;
goto b17;
b26: if (vkind == 30UL) goto b29;
v30 = (u)zdie;
v31 = (u)"invalid block";
- v32 = ((u(*)())v30)(v31);
+ v32 = ((u(*)())(v30))(v31);
v32;
goto b17;
b29: goto b17;
@@ -27978,7 +22782,7 @@ b15: v9 = (u)ziruseop;
v10 = vic;
v11 = vib;
v12 = *(u*)(*(u*)(vib + 8UL) + vi * 8UL);
- v13 = ((u(*)())v9)(v10, v11, v12);
+ v13 = ((u(*)())(v9))(v10, v11, v12);
v13;
vi = vi + 1UL;
goto b11;
@@ -28008,7 +22812,7 @@ u zirblock_flow2(u vic, u vib) {
u v20 = 0;
u v21 = 0;
u v22 = 0;
- if (!*(u*)(vib + 80UL)) goto b3;
+ if (!(*(u*)(vib + 80UL))) goto b3;
*(u*)(vib + 80UL) = 2UL;
return 0UL;
b3: *(u*)(vib + 80UL) = 1UL;
@@ -28017,14 +22821,14 @@ b3: *(u*)(vib + 80UL) = 1UL;
if (vkind != 29UL) goto b8;
if (*(u*)(vib + 56UL) != *(u*)(vib + 64UL)) goto b8;
v4 = 1UL;
-b10: if (!v4) goto b6;
+b10: if (!(v4)) goto b6;
vkind = 28UL;
v5 = (u)zmkirop;
v6 = vic;
v7 = 28UL;
v8 = 0UL;
v9 = 0UL;
- v10 = ((u(*)())v5)(v6, v7, v8, v9);
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
vop = v10;
*(u*)(*(u*)(vib + 8UL) + (*(u*)(vib + 16UL) - 1UL) * 8UL) = vop;
*(u*)(vib + 64UL) = 0UL;
@@ -28032,27 +22836,27 @@ b4: if (vkind != 29UL) goto b14;
v11 = (u)zirblock_flow2;
v12 = vic;
v13 = *(u*)(vib + 64UL);
- v14 = ((u(*)())v11)(v12, v13);
+ v14 = ((u(*)())(v11))(v12, v13);
v14;
if (*(u*)(*(u*)(vib + 64UL) + 16UL) != 1UL) goto b20;
if (*(u*)(*(u*)(*(u*)(*(u*)(vib + 64UL) + 8UL) + 0UL * 8UL) + 0UL) != 28UL) goto b20;
v15 = 1UL;
-b22: if (!v15) goto b18;
+b22: if (!(v15)) goto b18;
*(u*)(vib + 64UL) = *(u*)(*(u*)(vib + 64UL) + 56UL);
b16:b12: if (vkind != 29UL) goto b31;
v17 = 1UL;
-b33: if (!v17) goto b27;
+b33: if (!(v17)) goto b27;
v16 = 1UL;
-b29: if (!v16) goto b25;
+b29: if (!(v16)) goto b25;
v18 = (u)zirblock_flow2;
v19 = vic;
v20 = *(u*)(vib + 56UL);
- v21 = ((u(*)())v18)(v19, v20);
+ v21 = ((u(*)())(v18))(v19, v20);
v21;
if (*(u*)(*(u*)(vib + 56UL) + 16UL) != 1UL) goto b41;
if (*(u*)(*(u*)(*(u*)(*(u*)(vib + 56UL) + 8UL) + 0UL * 8UL) + 0UL) != 28UL) goto b41;
v22 = 1UL;
-b43: if (!v22) goto b39;
+b43: if (!(v22)) goto b39;
*(u*)(vib + 56UL) = *(u*)(*(u*)(vib + 56UL) + 56UL);
b37:b23: return 0UL;
b39: goto b37;
@@ -28097,7 +22901,7 @@ b4: vkind = *(u*)(*(u*)(*(u*)(vib + 8UL) + (*(u*)(vib + 16UL) - 1UL) * 8UL) + 0U
v5 = (u)zirblock_flow3;
v6 = vic;
v7 = *(u*)(vib + 64UL);
- v8 = ((u(*)())v5)(v6, v7);
+ v8 = ((u(*)())(v5))(v6, v7);
v8;
b5: return 0UL;
b8: if (vkind == 28UL) goto b12;
@@ -28121,7 +22925,7 @@ b19: if (vi != *(u*)(vout + 16UL)) goto b23;
b23: v9 = (u)ziraddop;
v10 = vic;
v11 = *(u*)(*(u*)(vout + 8UL) + vi * 8UL);
- v12 = ((u(*)())v9)(v10, v11);
+ v12 = ((u(*)())(v9))(v10, v11);
v12;
vi = vi + 1UL;
goto b19;
@@ -28169,14 +22973,14 @@ u zirblock_fold(u vic, u vb) {
u v41 = 0;
u v42 = 0;
u v43 = 0;
- if (!*(u*)(vb + 80UL)) goto b3;
+ if (!(*(u*)(vb + 80UL))) goto b3;
return 0UL;
-b3: if (!*(u*)(vb + 32UL)) goto b8;
+b3: if (!(*(u*)(vb + 32UL))) goto b8;
v5 = 0UL;
-b9: if (!v5) goto b6;
+b9: if (!(v5)) goto b6;
v6 = (u)zdie;
v7 = (u)"block not closed";
- v8 = ((u(*)())v6)(v7);
+ v8 = ((u(*)())(v6))(v7);
v8;
b4: *(u*)(vb + 80UL) = 1UL;
vi = 0UL;
@@ -28186,33 +22990,33 @@ b11: if (vi != *(u*)(vb + 16UL)) goto b15;
if (*(u*)(vo + 0UL) != 29UL) goto b21;
if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 3UL) goto b21;
v13 = 1UL;
-b23: if (!v13) goto b19;
+b23: if (!(v13)) goto b19;
v14 = (u)zmkirop;
v15 = vic;
v16 = 28UL;
v17 = 0UL;
v18 = 0UL;
- v19 = ((u(*)())v14)(v15, v16, v17, v18);
+ v19 = ((u(*)())(v14))(v15, v16, v17, v18);
vret = v19;
*(u*)(vret + 64UL) = *(u*)(vo + 64UL);
*(u*)(vret + 72UL) = *(u*)(vo + 72UL);
*(u*)(vret + 80UL) = *(u*)(vo + 80UL);
*(u*)(*(u*)(vb + 8UL) + vi * 8UL) = vret;
- if (!*(u*)(*(u*)(vo + 8UL) + 24UL)) goto b29;
+ if (!(*(u*)(*(u*)(vo + 8UL) + 24UL))) goto b29;
v20 = 0UL;
-b30: if (!v20) goto b27;
+b30: if (!(v20)) goto b27;
*(u*)(vb + 56UL) = *(u*)(vb + 64UL);
b25: *(u*)(vb + 64UL) = 0UL;
b17: if (*(u*)(vo + 0UL) != 29UL) goto b35;
if (*(u*)(vb + 56UL) != *(u*)(vb + 64UL)) goto b35;
v21 = 1UL;
-b37: if (!v21) goto b33;
+b37: if (!(v21)) goto b33;
v22 = (u)zmkirop;
v23 = vic;
v24 = 28UL;
v25 = 0UL;
v26 = 0UL;
- v27 = ((u(*)())v22)(v23, v24, v25, v26);
+ v27 = ((u(*)())(v22))(v23, v24, v25, v26);
vret = v27;
*(u*)(vret + 64UL) = *(u*)(vo + 64UL);
*(u*)(vret + 72UL) = *(u*)(vo + 72UL);
@@ -28223,28 +23027,28 @@ b31: if (*(u*)(vo + 0UL) != 29UL) goto b41;
v28 = (u)zirblock_fold;
v29 = vic;
v30 = *(u*)(vb + 56UL);
- v31 = ((u(*)())v28)(v29, v30);
+ v31 = ((u(*)())(v28))(v29, v30);
v31;
v32 = (u)zirblock_fold;
v33 = vic;
v34 = *(u*)(vb + 64UL);
- v35 = ((u(*)())v32)(v33, v34);
+ v35 = ((u(*)())(v32))(v33, v34);
v35;
b39: return 0UL;
b41: if (*(u*)(vo + 0UL) != 28UL) goto b47;
v36 = 1UL;
-b49: if (!v36) goto b45;
+b49: if (!(v36)) goto b45;
v37 = (u)zirblock_fold;
v38 = vic;
v39 = *(u*)(vb + 56UL);
- v40 = ((u(*)())v37)(v38, v39);
+ v40 = ((u(*)())(v37))(v38, v39);
v40;
goto b39;
b45: if (*(u*)(vo + 0UL) != 30UL) goto b53;
goto b39;
b53: v41 = (u)zdie;
v42 = (u)"invalid block";
- v43 = ((u(*)())v41)(v42);
+ v43 = ((u(*)())(v41))(v42);
v43;
goto b39;
b47: if (*(u*)(vo + 0UL) != 27UL) goto b50;
@@ -28264,7 +23068,7 @@ b21: v13 = 0UL;
b15: v9 = (u)zirexpr_fold;
v10 = vic;
v11 = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
- v12 = ((u(*)())v9)(v10, v11);
+ v12 = ((u(*)())(v9))(v10, v11);
vo = v12;
*(u*)(*(u*)(vb + 8UL) + vi * 8UL) = vo;
vi = vi + 1UL;
@@ -28295,20 +23099,20 @@ u zirbranch(u vic, u vcond, u valt, u vnext) {
v8 = 29UL;
v9 = vcond;
v10 = 0UL;
- v11 = ((u(*)())v6)(v7, v8, v9, v10);
+ v11 = ((u(*)())(v6))(v7, v8, v9, v10);
vo = v11;
v12 = (u)ziraddop;
v13 = vic;
v14 = vo;
- v15 = ((u(*)())v12)(v13, v14);
+ v15 = ((u(*)())(v12))(v13, v14);
v15;
vcur = *(u*)(vic + 104UL);
- if (!vcur) goto b5;
- if (!*(u*)(vcur + 32UL)) goto b8;
+ if (!(vcur)) goto b5;
+ if (!(*(u*)(vcur + 32UL))) goto b8;
v16 = (u)zcdie;
v17 = *(u*)(vic + 0UL);
v18 = (u)"block already done";
- v19 = ((u(*)())v16)(v17, v18);
+ v19 = ((u(*)())(v16))(v17, v18);
v19;
b6: *(u*)(vcur + 32UL) = 1UL;
*(u*)(vcur + 64UL) = valt;
@@ -28344,25 +23148,25 @@ u zircall(u vic, u vfp, u vnargs) {
v8 = 27UL;
v9 = vfp;
v10 = 0UL;
- v11 = ((u(*)())v6)(v7, v8, v9, v10);
+ v11 = ((u(*)())(v6))(v7, v8, v9, v10);
vo = v11;
*(u*)(vo + 24UL) = vnargs;
v12 = (u)ziraddop;
v13 = vic;
v14 = vo;
- v15 = ((u(*)())v12)(v13, v14);
+ v15 = ((u(*)())(v12))(v13, v14);
v15;
v16 = (u)zmkirblock;
v17 = vic;
- v18 = ((u(*)())v16)(v17);
+ v18 = ((u(*)())(v16))(v17);
vnext = v18;
vcur = *(u*)(vic + 104UL);
- if (!vcur) goto b6;
- if (!*(u*)(vcur + 32UL)) goto b9;
+ if (!(vcur)) goto b6;
+ if (!(*(u*)(vcur + 32UL))) goto b9;
v19 = (u)zcdie;
v20 = *(u*)(vic + 0UL);
v21 = (u)"block already done";
- v22 = ((u(*)())v19)(v20, v21);
+ v22 = ((u(*)())(v19))(v20, v21);
v22;
b7: *(u*)(vcur + 32UL) = 1UL;
*(u*)(vcur + 56UL) = vnext;
@@ -28402,7 +23206,7 @@ u zircargs(u vc, u vic, u vib, u vn) {
v8 = (u)zalloc;
v9 = *(u*)(vc + 0UL);
v10 = vn * 8UL;
- v11 = ((u(*)())v8)(v9, v10);
+ v11 = ((u(*)())(v8))(v9, v10);
vargs = v11;
vi = 0UL;
b2: if (vi != *(u*)(vib + 16UL)) goto b6;
@@ -28411,31 +23215,31 @@ b10: if (vi != vn) goto b14;
v27 = (u)zfree;
v28 = *(u*)(vc + 0UL);
v29 = vargs;
- v30 = ((u(*)())v27)(v28, v29);
+ v30 = ((u(*)())(v27))(v28, v29);
v30;
return 0UL;
-b14: if (!*(u*)(vargs + vi * 8UL)) goto b17;
+b14: if (!(*(u*)(vargs + vi * 8UL))) goto b17;
v12 = (u)zircop;
v13 = vc;
v14 = vic;
v15 = vib;
v16 = *(u*)(vargs + vi * 8UL);
v17 = 15UL;
- v18 = ((u(*)())v12)(v13, v14, v15, v16, v17);
+ v18 = ((u(*)())(v12))(v13, v14, v15, v16, v17);
v18;
b15: vi = vi + 1UL;
if (vi == vn) goto b22;
v23 = (u)zfputs;
v24 = *(u*)(vc + 72UL);
v25 = (u)", ";
- v26 = ((u(*)())v23)(v24, v25);
+ v26 = ((u(*)())(v23))(v24, v25);
v26;
b20: goto b10;
b22: goto b20;
b17: v19 = (u)zfputs;
v20 = *(u*)(vc + 72UL);
v21 = (u)"0UL";
- v22 = ((u(*)())v19)(v20, v21);
+ v22 = ((u(*)())(v19))(v20, v21);
v22;
goto b15;
b6: vop = *(u*)(*(u*)(vib + 8UL) + vi * 8UL);
@@ -28650,25 +23454,25 @@ b1: if (vi + 1UL != *(u*)(vib + 16UL)) goto b5;
v40 = (u)zircline;
v41 = vc;
v42 = vop;
- v43 = ((u(*)())v40)(v41, v42);
+ v43 = ((u(*)())(v40))(v41, v42);
v43;
- if (!vdidlabel) goto b35;
+ if (!(vdidlabel)) goto b35;
v44 = 0UL;
-b36: if (!v44) goto b33;
+b36: if (!(v44)) goto b33;
v45 = (u)zfputs;
v46 = *(u*)(vc + 72UL);
v47 = (u)"b";
- v48 = ((u(*)())v45)(v46, v47);
+ v48 = ((u(*)())(v45))(v46, v47);
v48;
v49 = (u)zfputd;
v50 = *(u*)(vc + 72UL);
v51 = *(u*)(vib + 0UL);
- v52 = ((u(*)())v49)(v50, v51);
+ v52 = ((u(*)())(v49))(v50, v51);
v52;
v53 = (u)zfputs;
v54 = *(u*)(vc + 72UL);
v55 = (u)":";
- v56 = ((u(*)())v53)(v54, v55);
+ v56 = ((u(*)())(v53))(v54, v55);
v56;
vdidlabel = 1UL;
b31: v57 = (u)zirccall;
@@ -28676,7 +23480,7 @@ b31: v57 = (u)zirccall;
v59 = vic;
v60 = vib;
v61 = vop;
- v62 = ((u(*)())v57)(v58, v59, v60, v61);
+ v62 = ((u(*)())(v57))(v58, v59, v60, v61);
v62;
b27: return 0UL;
b33: goto b31;
@@ -28686,47 +23490,47 @@ b29: if (vkind != 28UL) goto b42;
v63 = (u)zircline;
v64 = vc;
v65 = vop;
- v66 = ((u(*)())v63)(v64, v65);
+ v66 = ((u(*)())(v63))(v64, v65);
v66;
- if (!vdidlabel) goto b48;
+ if (!(vdidlabel)) goto b48;
v67 = 0UL;
-b49: if (!v67) goto b46;
+b49: if (!(v67)) goto b46;
v68 = (u)zfputs;
v69 = *(u*)(vc + 72UL);
v70 = (u)"b";
- v71 = ((u(*)())v68)(v69, v70);
+ v71 = ((u(*)())(v68))(v69, v70);
v71;
v72 = (u)zfputd;
v73 = *(u*)(vc + 72UL);
v74 = *(u*)(vib + 0UL);
- v75 = ((u(*)())v72)(v73, v74);
+ v75 = ((u(*)())(v72))(v73, v74);
v75;
v76 = (u)zfputs;
v77 = *(u*)(vc + 72UL);
v78 = (u)":";
- v79 = ((u(*)())v76)(v77, v78);
+ v79 = ((u(*)())(v76))(v77, v78);
v79;
vdidlabel = 1UL;
b44: if (!(*(u*)(*(u*)(vib + 56UL) + 80UL) & 1UL)) goto b55;
v80 = (u)zfputs;
v81 = *(u*)(vc + 72UL);
v82 = (u)"\011";
- v83 = ((u(*)())v80)(v81, v82);
+ v83 = ((u(*)())(v80))(v81, v82);
v83;
v84 = (u)zfputs;
v85 = *(u*)(vc + 72UL);
v86 = (u)"goto b";
- v87 = ((u(*)())v84)(v85, v86);
+ v87 = ((u(*)())(v84))(v85, v86);
v87;
v88 = (u)zfputd;
v89 = *(u*)(vc + 72UL);
v90 = *(u*)(*(u*)(vib + 56UL) + 0UL);
- v91 = ((u(*)())v88)(v89, v90);
+ v91 = ((u(*)())(v88))(v89, v90);
v91;
v92 = (u)zfputs;
v93 = *(u*)(vc + 72UL);
v94 = (u)";\012";
- v95 = ((u(*)())v92)(v93, v94);
+ v95 = ((u(*)())(v92))(v93, v94);
v95;
b53: goto b27;
b55: goto b53;
@@ -28737,36 +23541,36 @@ b42: if (vkind != 29UL) goto b61;
v96 = (u)zircline;
v97 = vc;
v98 = vop;
- v99 = ((u(*)())v96)(v97, v98);
+ v99 = ((u(*)())(v96))(v97, v98);
v99;
- if (!vdidlabel) goto b67;
+ if (!(vdidlabel)) goto b67;
v100 = 0UL;
-b68: if (!v100) goto b65;
+b68: if (!(v100)) goto b65;
v101 = (u)zfputs;
v102 = *(u*)(vc + 72UL);
v103 = (u)"b";
- v104 = ((u(*)())v101)(v102, v103);
+ v104 = ((u(*)())(v101))(v102, v103);
v104;
v105 = (u)zfputd;
v106 = *(u*)(vc + 72UL);
v107 = *(u*)(vib + 0UL);
- v108 = ((u(*)())v105)(v106, v107);
+ v108 = ((u(*)())(v105))(v106, v107);
v108;
v109 = (u)zfputs;
v110 = *(u*)(vc + 72UL);
v111 = (u)":";
- v112 = ((u(*)())v109)(v110, v111);
+ v112 = ((u(*)())(v109))(v110, v111);
v112;
vdidlabel = 1UL;
b63: v113 = (u)zfputs;
v114 = *(u*)(vc + 72UL);
v115 = (u)"\011";
- v116 = ((u(*)())v113)(v114, v115);
+ v116 = ((u(*)())(v113))(v114, v115);
v116;
v117 = (u)zfputs;
v118 = *(u*)(vc + 72UL);
v119 = (u)"if (";
- v120 = ((u(*)())v117)(v118, v119);
+ v120 = ((u(*)())(v117))(v118, v119);
v120;
v121 = (u)zircop_neg;
v122 = vc;
@@ -28774,48 +23578,48 @@ b63: v113 = (u)zfputs;
v124 = vib;
v125 = *(u*)(vop + 8UL);
v126 = 20UL;
- v127 = ((u(*)())v121)(v122, v123, v124, v125, v126);
+ v127 = ((u(*)())(v121))(v122, v123, v124, v125, v126);
v127;
v128 = (u)zfputs;
v129 = *(u*)(vc + 72UL);
v130 = (u)") goto b";
- v131 = ((u(*)())v128)(v129, v130);
+ v131 = ((u(*)())(v128))(v129, v130);
v131;
v132 = (u)zfputd;
v133 = *(u*)(vc + 72UL);
v134 = *(u*)(*(u*)(vib + 64UL) + 0UL);
- v135 = ((u(*)())v132)(v133, v134);
+ v135 = ((u(*)())(v132))(v133, v134);
v135;
v136 = (u)zfputs;
v137 = *(u*)(vc + 72UL);
v138 = (u)";\012";
- v139 = ((u(*)())v136)(v137, v138);
+ v139 = ((u(*)())(v136))(v137, v138);
v139;
if (!(*(u*)(*(u*)(vib + 56UL) + 80UL) & 1UL)) goto b80;
v140 = (u)zircline;
v141 = vc;
v142 = vop;
- v143 = ((u(*)())v140)(v141, v142);
+ v143 = ((u(*)())(v140))(v141, v142);
v143;
v144 = (u)zfputs;
v145 = *(u*)(vc + 72UL);
v146 = (u)"\011";
- v147 = ((u(*)())v144)(v145, v146);
+ v147 = ((u(*)())(v144))(v145, v146);
v147;
v148 = (u)zfputs;
v149 = *(u*)(vc + 72UL);
v150 = (u)"goto b";
- v151 = ((u(*)())v148)(v149, v150);
+ v151 = ((u(*)())(v148))(v149, v150);
v151;
v152 = (u)zfputd;
v153 = *(u*)(vc + 72UL);
v154 = *(u*)(*(u*)(vib + 56UL) + 0UL);
- v155 = ((u(*)())v152)(v153, v154);
+ v155 = ((u(*)())(v152))(v153, v154);
v155;
v156 = (u)zfputs;
v157 = *(u*)(vc + 72UL);
v158 = (u)";\012";
- v159 = ((u(*)())v156)(v157, v158);
+ v159 = ((u(*)())(v156))(v157, v158);
v159;
b78: goto b27;
b80: goto b78;
@@ -28826,36 +23630,36 @@ b61: if (vkind != 30UL) goto b87;
v160 = (u)zircline;
v161 = vc;
v162 = vop;
- v163 = ((u(*)())v160)(v161, v162);
+ v163 = ((u(*)())(v160))(v161, v162);
v163;
- if (!vdidlabel) goto b93;
+ if (!(vdidlabel)) goto b93;
v164 = 0UL;
-b94: if (!v164) goto b91;
+b94: if (!(v164)) goto b91;
v165 = (u)zfputs;
v166 = *(u*)(vc + 72UL);
v167 = (u)"b";
- v168 = ((u(*)())v165)(v166, v167);
+ v168 = ((u(*)())(v165))(v166, v167);
v168;
v169 = (u)zfputd;
v170 = *(u*)(vc + 72UL);
v171 = *(u*)(vib + 0UL);
- v172 = ((u(*)())v169)(v170, v171);
+ v172 = ((u(*)())(v169))(v170, v171);
v172;
v173 = (u)zfputs;
v174 = *(u*)(vc + 72UL);
v175 = (u)":";
- v176 = ((u(*)())v173)(v174, v175);
+ v176 = ((u(*)())(v173))(v174, v175);
v176;
vdidlabel = 1UL;
b89: v177 = (u)zfputs;
v178 = *(u*)(vc + 72UL);
v179 = (u)"\011";
- v180 = ((u(*)())v177)(v178, v179);
+ v180 = ((u(*)())(v177))(v178, v179);
v180;
v181 = (u)zfputs;
v182 = *(u*)(vc + 72UL);
v183 = (u)"return ";
- v184 = ((u(*)())v181)(v182, v183);
+ v184 = ((u(*)())(v181))(v182, v183);
v184;
v185 = (u)zircop;
v186 = vc;
@@ -28863,12 +23667,12 @@ b89: v177 = (u)zfputs;
v188 = vib;
v189 = *(u*)(vop + 8UL);
v190 = 20UL;
- v191 = ((u(*)())v185)(v186, v187, v188, v189, v190);
+ v191 = ((u(*)())(v185))(v186, v187, v188, v189, v190);
v191;
v192 = (u)zfputs;
v193 = *(u*)(vc + 72UL);
v194 = (u)";\012";
- v195 = ((u(*)())v192)(v193, v194);
+ v195 = ((u(*)())(v192))(v193, v194);
v195;
goto b27;
b91: goto b89;
@@ -28876,44 +23680,44 @@ b93: v164 = 1UL;
goto b94;
b87: v196 = (u)zdie;
v197 = (u)"invalid op";
- v198 = ((u(*)())v196)(v197);
+ v198 = ((u(*)())(v196))(v197);
v198;
goto b27;
b5: vop = *(u*)(*(u*)(vib + 8UL) + vi * 8UL);
vkind = *(u*)(vop + 0UL);
if (vkind != 8UL) goto b10;
v7 = 1UL;
-b12: if (!v7) goto b8;
+b12: if (!(v7)) goto b8;
vi = vi + 1UL;
goto b1;
b8: v8 = (u)zircline;
v9 = vc;
v10 = vop;
- v11 = ((u(*)())v8)(v9, v10);
+ v11 = ((u(*)())(v8))(v9, v10);
v11;
- if (!vdidlabel) goto b19;
+ if (!(vdidlabel)) goto b19;
v12 = 0UL;
-b20: if (!v12) goto b17;
+b20: if (!(v12)) goto b17;
v13 = (u)zfputs;
v14 = *(u*)(vc + 72UL);
v15 = (u)"b";
- v16 = ((u(*)())v13)(v14, v15);
+ v16 = ((u(*)())(v13))(v14, v15);
v16;
v17 = (u)zfputd;
v18 = *(u*)(vc + 72UL);
v19 = *(u*)(vib + 0UL);
- v20 = ((u(*)())v17)(v18, v19);
+ v20 = ((u(*)())(v17))(v18, v19);
v20;
v21 = (u)zfputs;
v22 = *(u*)(vc + 72UL);
v23 = (u)":";
- v24 = ((u(*)())v21)(v22, v23);
+ v24 = ((u(*)())(v21))(v22, v23);
v24;
vdidlabel = 1UL;
b15: v25 = (u)zfputs;
v26 = *(u*)(vc + 72UL);
v27 = (u)"\011";
- v28 = ((u(*)())v25)(v26, v27);
+ v28 = ((u(*)())(v25))(v26, v27);
v28;
v29 = (u)zircop;
v30 = vc;
@@ -28921,12 +23725,12 @@ b15: v25 = (u)zfputs;
v32 = vib;
v33 = vop;
v34 = 20UL;
- v35 = ((u(*)())v29)(v30, v31, v32, v33, v34);
+ v35 = ((u(*)())(v29))(v30, v31, v32, v33, v34);
v35;
v36 = (u)zfputs;
v37 = *(u*)(vc + 72UL);
v38 = (u)";\012";
- v39 = ((u(*)())v36)(v37, v38);
+ v39 = ((u(*)())(v36))(v37, v38);
v39;
vi = vi + 1UL;
goto b1;
@@ -28958,35 +23762,35 @@ u zircbody(u vc, u vic, u vib) {
u v18 = 0;
u v19 = 0;
u v20 = 0;
- if (!vib) goto b9;
+ if (!(vib)) goto b9;
v4 = 0UL;
-b10: if (!v4) goto b5;
+b10: if (!(v4)) goto b5;
v3 = 1UL;
-b7: if (!v3) goto b3;
+b7: if (!(v3)) goto b3;
return 0UL;
b3: *(u*)(vib + 80UL) = *(u*)(vib + 80UL) | 1UL;
v5 = (u)zircblock;
v6 = vc;
v7 = vic;
v8 = vib;
- v9 = ((u(*)())v5)(v6, v7, v8);
+ v9 = ((u(*)())(v5))(v6, v7, v8);
v9;
- if (!*(u*)(vib + 56UL)) goto b15;
+ if (!(*(u*)(vib + 56UL))) goto b15;
v10 = (u)zircbody;
v11 = vc;
v12 = vic;
v13 = *(u*)(vib + 56UL);
- v14 = ((u(*)())v10)(v11, v12, v13);
+ v14 = ((u(*)())(v10))(v11, v12, v13);
v14;
-b13: if (!*(u*)(vib + 64UL)) goto b21;
+b13: if (!(*(u*)(vib + 64UL))) goto b21;
if (*(u*)(*(u*)(*(u*)(vib + 8UL) + (*(u*)(vib + 16UL) - 1UL) * 8UL) + 0UL) != 29UL) goto b21;
v15 = 1UL;
-b23: if (!v15) goto b19;
+b23: if (!(v15)) goto b19;
v16 = (u)zircbody;
v17 = vc;
v18 = vic;
v19 = *(u*)(vib + 64UL);
- v20 = ((u(*)())v16)(v17, v18, v19);
+ v20 = ((u(*)())(v16))(v17, v18, v19);
v20;
b17: return 0UL;
b19: goto b17;
@@ -29071,19 +23875,19 @@ u zirccall(u vc, u vic, u vib, u vop) {
v4 = (u)zfputs;
v5 = *(u*)(vc + 72UL);
v6 = (u)"\011";
- v7 = ((u(*)())v4)(v5, v6);
+ v7 = ((u(*)())(v4))(v5, v6);
v7;
v8 = (u)zircretval;
v9 = vc;
v10 = vic;
v11 = vib;
- v12 = ((u(*)())v8)(v9, v10, v11);
+ v12 = ((u(*)())(v8))(v9, v10, v11);
v12;
if (*(u*)(*(u*)(vop + 8UL) + 0UL) == 2UL) goto b5;
v13 = (u)zfputs;
v14 = *(u*)(vc + 72UL);
v15 = (u)"((u(*)())";
- v16 = ((u(*)())v13)(v14, v15);
+ v16 = ((u(*)())(v13))(v14, v15);
v16;
v17 = (u)zircop;
v18 = vc;
@@ -29091,67 +23895,67 @@ u zirccall(u vc, u vic, u vib, u vop) {
v20 = vib;
v21 = *(u*)(vop + 8UL);
v22 = 2UL;
- v23 = ((u(*)())v17)(v18, v19, v20, v21, v22);
+ v23 = ((u(*)())(v17))(v18, v19, v20, v21, v22);
v23;
v24 = (u)zfputs;
v25 = *(u*)(vc + 72UL);
v26 = (u)")(";
- v27 = ((u(*)())v24)(v25, v26);
+ v27 = ((u(*)())(v24))(v25, v26);
v27;
b3: v40 = (u)zircargs;
v41 = vc;
v42 = vic;
v43 = vib;
v44 = *(u*)(vop + 24UL);
- v45 = ((u(*)())v40)(v41, v42, v43, v44);
+ v45 = ((u(*)())(v40))(v41, v42, v43, v44);
v45;
v46 = (u)zfputs;
v47 = *(u*)(vc + 72UL);
v48 = (u)");\012";
- v49 = ((u(*)())v46)(v47, v48);
+ v49 = ((u(*)())(v46))(v47, v48);
v49;
if (!(*(u*)(*(u*)(vib + 56UL) + 80UL) & 1UL)) goto b16;
v50 = (u)zircline;
v51 = vc;
v52 = vop;
- v53 = ((u(*)())v50)(v51, v52);
+ v53 = ((u(*)())(v50))(v51, v52);
v53;
v54 = (u)zfputs;
v55 = *(u*)(vc + 72UL);
v56 = (u)"\011";
- v57 = ((u(*)())v54)(v55, v56);
+ v57 = ((u(*)())(v54))(v55, v56);
v57;
v58 = (u)zfputs;
v59 = *(u*)(vc + 72UL);
v60 = (u)"goto b";
- v61 = ((u(*)())v58)(v59, v60);
+ v61 = ((u(*)())(v58))(v59, v60);
v61;
v62 = (u)zfputd;
v63 = *(u*)(vc + 72UL);
v64 = *(u*)(*(u*)(vib + 56UL) + 0UL);
- v65 = ((u(*)())v62)(v63, v64);
+ v65 = ((u(*)())(v62))(v63, v64);
v65;
v66 = (u)zfputs;
v67 = *(u*)(vc + 72UL);
v68 = (u)";\012";
- v69 = ((u(*)())v66)(v67, v68);
+ v69 = ((u(*)())(v66))(v67, v68);
v69;
b14: return 0UL;
b16: goto b14;
b5: v28 = (u)zfputs;
v29 = *(u*)(vc + 72UL);
v30 = (u)"z";
- v31 = ((u(*)())v28)(v29, v30);
+ v31 = ((u(*)())(v28))(v29, v30);
v31;
v32 = (u)zfputs;
v33 = *(u*)(vc + 72UL);
v34 = *(u*)(*(u*)(vop + 8UL) + 32UL);
- v35 = ((u(*)())v32)(v33, v34);
+ v35 = ((u(*)())(v32))(v33, v34);
v35;
v36 = (u)zfputs;
v37 = *(u*)(vc + 72UL);
v38 = (u)"(";
- v39 = ((u(*)())v36)(v37, v38);
+ v39 = ((u(*)())(v36))(v37, v38);
v39;
goto b3;
}
@@ -29189,43 +23993,43 @@ u zircdecl(u vc, u vic) {
v4 = (u)zfputs;
v5 = *(u*)(vc + 72UL);
v6 = (u)"u z";
- v7 = ((u(*)())v4)(v5, v6);
+ v7 = ((u(*)())(v4))(v5, v6);
v7;
v8 = (u)zfputs;
v9 = *(u*)(vc + 72UL);
v10 = *(u*)(vic + 24UL);
- v11 = ((u(*)())v8)(v9, v10);
+ v11 = ((u(*)())(v8))(v9, v10);
v11;
v12 = (u)zfputs;
v13 = *(u*)(vc + 72UL);
v14 = (u)"(";
- v15 = ((u(*)())v12)(v13, v14);
+ v15 = ((u(*)())(v12))(v13, v14);
v15;
vi = 0UL;
b4: if (vi != *(u*)(vic + 152UL)) goto b8;
v28 = (u)zfputs;
v29 = *(u*)(vc + 72UL);
v30 = (u)")";
- v31 = ((u(*)())v28)(v29, v30);
+ v31 = ((u(*)())(v28))(v29, v30);
v31;
return 0UL;
b8: viv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
v16 = (u)zfputs;
v17 = *(u*)(vc + 72UL);
v18 = (u)"u v";
- v19 = ((u(*)())v16)(v17, v18);
+ v19 = ((u(*)())(v16))(v17, v18);
v19;
v20 = (u)zfputs;
v21 = *(u*)(vc + 72UL);
v22 = *(u*)(viv + 0UL);
- v23 = ((u(*)())v20)(v21, v22);
+ v23 = ((u(*)())(v20))(v21, v22);
v23;
vi = vi + 1UL;
if (vi == *(u*)(vic + 152UL)) goto b13;
v24 = (u)zfputs;
v25 = *(u*)(vc + 72UL);
v26 = (u)", ";
- v27 = ((u(*)())v24)(v25, v26);
+ v27 = ((u(*)())(v24))(v25, v26);
v27;
b11: goto b4;
b13: goto b11;
@@ -29282,62 +24086,62 @@ u zircdeclstdlib(u vc) {
v1 = (u)zfputs;
v2 = *(u*)(vc + 72UL);
v3 = (u)"extern u syscall();\012";
- v4 = ((u(*)())v1)(v2, v3);
+ v4 = ((u(*)())(v1))(v2, v3);
v4;
v5 = (u)zfputs;
v6 = *(u*)(vc + 72UL);
v7 = (u)"extern void exit();\012";
- v8 = ((u(*)())v5)(v6, v7);
+ v8 = ((u(*)())(v5))(v6, v7);
v8;
v9 = (u)zfputs;
v10 = *(u*)(vc + 72UL);
v11 = (u)"extern s read();\012";
- v12 = ((u(*)())v9)(v10, v11);
+ v12 = ((u(*)())(v9))(v10, v11);
v12;
v13 = (u)zfputs;
v14 = *(u*)(vc + 72UL);
v15 = (u)"extern s write();\012";
- v16 = ((u(*)())v13)(v14, v15);
+ v16 = ((u(*)())(v13))(v14, v15);
v16;
v17 = (u)zfputs;
v18 = *(u*)(vc + 72UL);
v19 = (u)"extern u mmap();\012";
- v20 = ((u(*)())v17)(v18, v19);
+ v20 = ((u(*)())(v17))(v18, v19);
v20;
v21 = (u)zfputs;
v22 = *(u*)(vc + 72UL);
v23 = (u)"extern int close();\012";
- v24 = ((u(*)())v21)(v22, v23);
+ v24 = ((u(*)())(v21))(v22, v23);
v24;
v25 = (u)zfputs;
v26 = *(u*)(vc + 72UL);
v27 = (u)"extern int unlink();\012";
- v28 = ((u(*)())v25)(v26, v27);
+ v28 = ((u(*)())(v25))(v26, v27);
v28;
v29 = (u)zfputs;
v30 = *(u*)(vc + 72UL);
v31 = (u)"extern int open();\012";
- v32 = ((u(*)())v29)(v30, v31);
+ v32 = ((u(*)())(v29))(v30, v31);
v32;
v33 = (u)zfputs;
v34 = *(u*)(vc + 72UL);
v35 = (u)"extern char **environ;\012";
- v36 = ((u(*)())v33)(v34, v35);
+ v36 = ((u(*)())(v33))(v34, v35);
v36;
v37 = (u)zfputs;
v38 = *(u*)(vc + 72UL);
v39 = (u)"int main(int argc, char**argv) {\012";
- v40 = ((u(*)())v37)(v38, v39);
+ v40 = ((u(*)())(v37))(v38, v39);
v40;
v41 = (u)zfputs;
v42 = *(u*)(vc + 72UL);
v43 = (u)"\011return zmain((u)argc, (u)argv, (u)environ);\012";
- v44 = ((u(*)())v41)(v42, v43);
+ v44 = ((u(*)())(v41))(v42, v43);
v44;
v45 = (u)zfputs;
v46 = *(u*)(vc + 72UL);
v47 = (u)"}\012";
- v48 = ((u(*)())v45)(v46, v47);
+ v48 = ((u(*)())(v45))(v46, v47);
v48;
return 0UL;
}
@@ -29427,17 +24231,17 @@ u zircdefine(u vc, u vd) {
u v84 = 0;
u v85 = 0;
u v86 = 0;
- if (!*(u*)(vd + 120UL)) goto b3;
+ if (!(*(u*)(vd + 120UL))) goto b3;
v8 = (u)zircstdlib;
v9 = vc;
v10 = vd;
- v11 = ((u(*)())v8)(v9, v10);
+ v11 = ((u(*)())(v8))(v9, v10);
v11;
return 0UL;
b3: vic = *(u*)(vd + 112UL);
- if (!vic) goto b9;
+ if (!(vic)) goto b9;
v12 = 0UL;
-b10: if (!v12) goto b7;
+b10: if (!(v12)) goto b7;
return 0UL;
b7: vi = 0UL;
b11: if (vi != *(u*)(vic + 136UL)) goto b15;
@@ -29446,17 +24250,17 @@ b11: if (vi != *(u*)(vic + 136UL)) goto b15;
v14 = vc;
v15 = vic;
v16 = vtop;
- v17 = ((u(*)())v13)(v14, v15, v16);
+ v17 = ((u(*)())(v13))(v14, v15, v16);
v17;
v18 = (u)zircdecl;
v19 = vc;
v20 = vic;
- v21 = ((u(*)())v18)(v19, v20);
+ v21 = ((u(*)())(v18))(v19, v20);
v21;
v22 = (u)zfputs;
v23 = *(u*)(vc + 72UL);
v24 = (u)" {\012";
- v25 = ((u(*)())v22)(v23, v24);
+ v25 = ((u(*)())(v22))(v23, v24);
v25;
vi = *(u*)(vic + 152UL);
b19: if (vi != *(u*)(vic + 136UL)) goto b23;
@@ -29464,79 +24268,79 @@ b19: if (vi != *(u*)(vic + 136UL)) goto b23;
v76 = vc;
v77 = vic;
v78 = vtop;
- v79 = ((u(*)())v75)(v76, v77, v78);
+ v79 = ((u(*)())(v75))(v76, v77, v78);
v79;
v80 = (u)zirreset;
v81 = vtop;
- v82 = ((u(*)())v80)(v81);
+ v82 = ((u(*)())(v80))(v81);
v82;
v83 = (u)zfputs;
v84 = *(u*)(vc + 72UL);
v85 = (u)"}\012";
- v86 = ((u(*)())v83)(v84, v85);
+ v86 = ((u(*)())(v83))(v84, v85);
v86;
return 0UL;
b23: viv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
- if (!*(u*)(viv + 48UL)) goto b26;
+ if (!(*(u*)(viv + 48UL))) goto b26;
vi = vi + 1UL;
goto b19;
b26: v26 = (u)zfputs;
v27 = *(u*)(vc + 72UL);
v28 = (u)"\011";
- v29 = ((u(*)())v26)(v27, v28);
+ v29 = ((u(*)())(v26))(v27, v28);
v29;
v30 = (u)zfputs;
v31 = *(u*)(vc + 72UL);
v32 = (u)"u ";
- v33 = ((u(*)())v30)(v31, v32);
+ v33 = ((u(*)())(v30))(v31, v32);
v33;
- if (!*(u*)(viv + 0UL)) goto b31;
+ if (!(*(u*)(viv + 0UL))) goto b31;
v34 = (u)zfputs;
v35 = *(u*)(vc + 72UL);
v36 = (u)"v";
- v37 = ((u(*)())v34)(v35, v36);
+ v37 = ((u(*)())(v34))(v35, v36);
v37;
v38 = (u)zfputs;
v39 = *(u*)(vc + 72UL);
v40 = *(u*)(viv + 0UL);
- v41 = ((u(*)())v38)(v39, v40);
+ v41 = ((u(*)())(v38))(v39, v40);
v41;
-b29: if (!*(u*)(viv + 24UL)) goto b40;
+b29: if (!(*(u*)(viv + 24UL))) goto b40;
if (*(u*)(*(u*)(viv + 24UL) + 0UL) == 1UL) goto b40;
v50 = 1UL;
-b42: if (!v50) goto b38;
+b42: if (!(v50)) goto b38;
v51 = (u)ztype_sizeof;
v52 = vc;
v53 = *(u*)(viv + 24UL);
- v54 = ((u(*)())v51)(v52, v53);
+ v54 = ((u(*)())(v51))(v52, v53);
vsize = v54;
b36: if (vsize != 8UL) goto b46;
v55 = (u)zfputs;
v56 = *(u*)(vc + 72UL);
v57 = (u)" = 0";
- v58 = ((u(*)())v55)(v56, v57);
+ v58 = ((u(*)())(v55))(v56, v57);
v58;
b44: v71 = (u)zfputs;
v72 = *(u*)(vc + 72UL);
v73 = (u)";\012";
- v74 = ((u(*)())v71)(v72, v73);
+ v74 = ((u(*)())(v71))(v72, v73);
v74;
vi = vi + 1UL;
goto b19;
b46: v59 = (u)zfputs;
v60 = *(u*)(vc + 72UL);
v61 = (u)"[";
- v62 = ((u(*)())v59)(v60, v61);
+ v62 = ((u(*)())(v59))(v60, v61);
v62;
v63 = (u)zfputd;
v64 = *(u*)(vc + 72UL);
- v65 = (u)((s)(vsize + 8UL + 1UL) / (s)8UL);
- v66 = ((u(*)())v63)(v64, v65);
+ v65 = (u)((s)((vsize + 8UL) + 1UL) / (s)8UL);
+ v66 = ((u(*)())(v63))(v64, v65);
v66;
v67 = (u)zfputs;
v68 = *(u*)(vc + 72UL);
v69 = (u)"] = {0}";
- v70 = ((u(*)())v67)(v68, v69);
+ v70 = ((u(*)())(v67))(v68, v69);
v70;
goto b44;
b38: vsize = 8UL;
@@ -29546,12 +24350,12 @@ b40: v50 = 0UL;
b31: v42 = (u)zfputs;
v43 = *(u*)(vc + 72UL);
v44 = (u)"v";
- v45 = ((u(*)())v42)(v43, v44);
+ v45 = ((u(*)())(v42))(v43, v44);
v45;
v46 = (u)zfputd;
v47 = *(u*)(vc + 72UL);
v48 = vi;
- v49 = ((u(*)())v46)(v47, v48);
+ v49 = ((u(*)())(v46))(v47, v48);
v49;
goto b29;
b15: viv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
@@ -29576,24 +24380,24 @@ u zircforward(u vc, u vd) {
u v14 = 0;
u v15 = 0;
vic = *(u*)(vd + 112UL);
- if (!vic) goto b5;
+ if (!(vic)) goto b5;
v3 = 0UL;
-b6: if (!v3) goto b3;
+b6: if (!(v3)) goto b3;
return 0UL;
b3: v4 = (u)zfputs;
v5 = *(u*)(vc + 72UL);
v6 = (u)"u z";
- v7 = ((u(*)())v4)(v5, v6);
+ v7 = ((u(*)())(v4))(v5, v6);
v7;
v8 = (u)zfputs;
v9 = *(u*)(vc + 72UL);
v10 = *(u*)(vic + 24UL);
- v11 = ((u(*)())v8)(v9, v10);
+ v11 = ((u(*)())(v8))(v9, v10);
v11;
v12 = (u)zfputs;
v13 = *(u*)(vc + 72UL);
v14 = (u)"();\012";
- v15 = ((u(*)())v12)(v13, v14);
+ v15 = ((u(*)())(v12))(v13, v14);
v15;
return 0UL;
b5: v3 = 1UL;
@@ -30152,62 +24956,62 @@ u zircop(u vc, u vic, u vib, u vop, u vpri) {
vkind = *(u*)(vop + 0UL);
if (vkind != 0UL) goto b5;
v9 = 1UL;
-b7: if (!v9) goto b3;
+b7: if (!(v9)) goto b3;
vmypri = 2UL;
-b1: if ((s)vmypri <= (s)vpri) goto b58;
+b1: if ((s)(vmypri) < (s)(vpri)) goto b58;
v13 = (u)zfputs;
v14 = *(u*)(vc + 72UL);
v15 = (u)"(";
- v16 = ((u(*)())v13)(v14, v15);
+ v16 = ((u(*)())(v13))(v14, v15);
v16;
b56: if (vkind != 0UL) goto b64;
v17 = 1UL;
-b66: if (!v17) goto b62;
+b66: if (!(v17)) goto b62;
viv = *(u*)(*(u*)(vic + 128UL) + *(u*)(vop + 24UL) * 8UL);
- if (!*(u*)(viv + 24UL)) goto b72;
+ if (!(*(u*)(viv + 24UL))) goto b72;
if (*(u*)(*(u*)(viv + 24UL) + 0UL) == 1UL) goto b72;
v18 = 1UL;
-b74: if (!v18) goto b70;
+b74: if (!(v18)) goto b70;
v19 = (u)ztype_sizeof;
v20 = vc;
v21 = *(u*)(viv + 24UL);
- v22 = ((u(*)())v19)(v20, v21);
+ v22 = ((u(*)())(v19))(v20, v21);
vsize = v22;
b68: if (vsize != 8UL) goto b78;
if (vkind != 1UL) goto b81;
v23 = (u)zfputs;
v24 = *(u*)(vc + 72UL);
v25 = (u)"(u)&";
- v26 = ((u(*)())v23)(v24, v25);
+ v26 = ((u(*)())(v23))(v24, v25);
v26;
-b79:b76: if (!*(u*)(viv + 0UL)) goto b90;
+b79:b76: if (!(*(u*)(viv + 0UL))) goto b90;
v35 = (u)zfputs;
v36 = *(u*)(vc + 72UL);
v37 = (u)"v";
- v38 = ((u(*)())v35)(v36, v37);
+ v38 = ((u(*)())(v35))(v36, v37);
v38;
v39 = (u)zfputs;
v40 = *(u*)(vc + 72UL);
v41 = *(u*)(viv + 0UL);
- v42 = ((u(*)())v39)(v40, v41);
+ v42 = ((u(*)())(v39))(v40, v41);
v42;
-b88:b60: if ((s)vmypri <= (s)vpri) goto b242;
+b88:b60: if ((s)(vmypri) < (s)(vpri)) goto b242;
v522 = (u)zfputs;
v523 = *(u*)(vc + 72UL);
v524 = (u)")";
- v525 = ((u(*)())v522)(v523, v524);
+ v525 = ((u(*)())(v522))(v523, v524);
v525;
b240: return 0UL;
b242: goto b240;
b90: v43 = (u)zfputs;
v44 = *(u*)(vc + 72UL);
v45 = (u)"v";
- v46 = ((u(*)())v43)(v44, v45);
+ v46 = ((u(*)())(v43))(v44, v45);
v46;
v47 = (u)zfputd;
v48 = *(u*)(vc + 72UL);
v49 = *(u*)(vop + 24UL);
- v50 = ((u(*)())v47)(v48, v49);
+ v50 = ((u(*)())(v47))(v48, v49);
v50;
goto b88;
b81: goto b79;
@@ -30215,13 +25019,13 @@ b78: if (vkind != 1UL) goto b85;
v27 = (u)zfputs;
v28 = *(u*)(vc + 72UL);
v29 = (u)"(u)";
- v30 = ((u(*)())v27)(v28, v29);
+ v30 = ((u(*)())(v27))(v28, v29);
v30;
b83: goto b76;
b85: v31 = (u)zfputs;
v32 = *(u*)(vc + 72UL);
v33 = (u)"*";
- v34 = ((u(*)())v31)(v32, v33);
+ v34 = ((u(*)())(v31))(v32, v33);
v34;
goto b83;
b70: vsize = 8UL;
@@ -30232,37 +25036,37 @@ b62: if (vkind != 2UL) goto b96;
v51 = (u)zfputs;
v52 = *(u*)(vc + 72UL);
v53 = (u)"(u)z";
- v54 = ((u(*)())v51)(v52, v53);
+ v54 = ((u(*)())(v51))(v52, v53);
v54;
v55 = (u)zfputs;
v56 = *(u*)(vc + 72UL);
v57 = *(u*)(vop + 32UL);
- v58 = ((u(*)())v55)(v56, v57);
+ v58 = ((u(*)())(v55))(v56, v57);
v58;
goto b60;
b96: if (vkind != 3UL) goto b100;
v59 = (u)zfputd;
v60 = *(u*)(vc + 72UL);
v61 = *(u*)(vop + 24UL);
- v62 = ((u(*)())v59)(v60, v61);
+ v62 = ((u(*)())(v59))(v60, v61);
v62;
v63 = (u)zfputs;
v64 = *(u*)(vc + 72UL);
v65 = (u)"UL";
- v66 = ((u(*)())v63)(v64, v65);
+ v66 = ((u(*)())(v63))(v64, v65);
v66;
goto b60;
b100: if (vkind != 4UL) goto b104;
v67 = (u)zfputs;
v68 = *(u*)(vc + 72UL);
v69 = (u)"(u)";
- v70 = ((u(*)())v67)(v68, v69);
+ v70 = ((u(*)())(v67))(v68, v69);
v70;
v71 = (u)zircstr;
v72 = vc;
v73 = *(u*)(vop + 32UL);
v74 = *(u*)(vop + 40UL);
- v75 = ((u(*)())v71)(v72, v73, v74);
+ v75 = ((u(*)())(v71))(v72, v73, v74);
v75;
goto b60;
b104: if (vkind != 5UL) goto b108;
@@ -30270,7 +25074,7 @@ b104: if (vkind != 5UL) goto b108;
v76 = (u)zfputs;
v77 = *(u*)(vc + 72UL);
v78 = (u)"(u)*(b*)";
- v79 = ((u(*)())v76)(v77, v78);
+ v79 = ((u(*)())(v76))(v77, v78);
v79;
v80 = (u)zircop;
v81 = vc;
@@ -30278,13 +25082,13 @@ b104: if (vkind != 5UL) goto b108;
v83 = vib;
v84 = *(u*)(vop + 8UL);
v85 = 2UL;
- v86 = ((u(*)())v80)(v81, v82, v83, v84, v85);
+ v86 = ((u(*)())(v80))(v81, v82, v83, v84, v85);
v86;
b109: goto b60;
b111: v87 = (u)zfputs;
v88 = *(u*)(vc + 72UL);
v89 = (u)"*(u*)";
- v90 = ((u(*)())v87)(v88, v89);
+ v90 = ((u(*)())(v87))(v88, v89);
v90;
v91 = (u)zircop;
v92 = vc;
@@ -30292,7 +25096,7 @@ b111: v87 = (u)zfputs;
v94 = vib;
v95 = *(u*)(vop + 8UL);
v96 = 2UL;
- v97 = ((u(*)())v91)(v92, v93, v94, v95, v96);
+ v97 = ((u(*)())(v91))(v92, v93, v94, v95, v96);
v97;
goto b109;
b108: if (vkind != 6UL) goto b117;
@@ -30303,12 +25107,12 @@ b108: if (vkind != 6UL) goto b117;
v101 = vib;
v102 = *(u*)(vop + 8UL);
v103 = 14UL;
- v104 = ((u(*)())v98)(v99, v100, v101, v102, v103);
+ v104 = ((u(*)())(v98))(v99, v100, v101, v102, v103);
v104;
v105 = (u)zfputs;
v106 = *(u*)(vc + 72UL);
v107 = (u)" = ";
- v108 = ((u(*)())v105)(v106, v107);
+ v108 = ((u(*)())(v105))(v106, v107);
v108;
v109 = (u)zircop;
v110 = vc;
@@ -30316,7 +25120,7 @@ b108: if (vkind != 6UL) goto b117;
v112 = vib;
v113 = *(u*)(vop + 16UL);
v114 = 14UL;
- v115 = ((u(*)())v109)(v110, v111, v112, v113, v114);
+ v115 = ((u(*)())(v109))(v110, v111, v112, v113, v114);
v115;
b118: goto b60;
b120: if (*(u*)(*(u*)(vop + 8UL) + 0UL) != 5UL) goto b125;
@@ -30324,7 +25128,7 @@ b120: if (*(u*)(*(u*)(vop + 8UL) + 0UL) != 5UL) goto b125;
v116 = (u)zfputs;
v117 = *(u*)(vc + 72UL);
v118 = (u)"*(b*)";
- v119 = ((u(*)())v116)(v117, v118);
+ v119 = ((u(*)())(v116))(v117, v118);
v119;
b126: v124 = (u)zircop;
v125 = vc;
@@ -30332,12 +25136,12 @@ b126: v124 = (u)zircop;
v127 = vib;
v128 = *(u*)(*(u*)(vop + 8UL) + 8UL);
v129 = 2UL;
- v130 = ((u(*)())v124)(v125, v126, v127, v128, v129);
+ v130 = ((u(*)())(v124))(v125, v126, v127, v128, v129);
v130;
v131 = (u)zfputs;
v132 = *(u*)(vc + 72UL);
v133 = (u)" = ";
- v134 = ((u(*)())v131)(v132, v133);
+ v134 = ((u(*)())(v131))(v132, v133);
v134;
v135 = (u)zircop;
v136 = vc;
@@ -30345,25 +25149,25 @@ b126: v124 = (u)zircop;
v138 = vib;
v139 = *(u*)(vop + 16UL);
v140 = 14UL;
- v141 = ((u(*)())v135)(v136, v137, v138, v139, v140);
+ v141 = ((u(*)())(v135))(v136, v137, v138, v139, v140);
v141;
goto b118;
b128: v120 = (u)zfputs;
v121 = *(u*)(vc + 72UL);
v122 = (u)"*(u*)";
- v123 = ((u(*)())v120)(v121, v122);
+ v123 = ((u(*)())(v120))(v121, v122);
v123;
goto b126;
b125: v142 = (u)zdie;
v143 = (u)"invalid store";
- v144 = ((u(*)())v142)(v143);
+ v144 = ((u(*)())(v142))(v143);
v144;
goto b118;
b117: if (vkind != 9UL) goto b136;
v145 = (u)zfputs;
v146 = *(u*)(vc + 72UL);
v147 = (u)"-";
- v148 = ((u(*)())v145)(v146, v147);
+ v148 = ((u(*)())(v145))(v146, v147);
v148;
v149 = (u)zircop;
v150 = vc;
@@ -30371,14 +25175,14 @@ b117: if (vkind != 9UL) goto b136;
v152 = vib;
v153 = *(u*)(vop + 8UL);
v154 = 2UL;
- v155 = ((u(*)())v149)(v150, v151, v152, v153, v154);
+ v155 = ((u(*)())(v149))(v150, v151, v152, v153, v154);
v155;
goto b60;
b136: if (vkind != 10UL) goto b140;
v156 = (u)zfputs;
v157 = *(u*)(vc + 72UL);
v158 = (u)"~";
- v159 = ((u(*)())v156)(v157, v158);
+ v159 = ((u(*)())(v156))(v157, v158);
v159;
v160 = (u)zircop;
v161 = vc;
@@ -30386,7 +25190,7 @@ b136: if (vkind != 10UL) goto b140;
v163 = vib;
v164 = *(u*)(vop + 8UL);
v165 = 2UL;
- v166 = ((u(*)())v160)(v161, v162, v163, v164, v165);
+ v166 = ((u(*)())(v160))(v161, v162, v163, v164, v165);
v166;
goto b60;
b140: if (vkind != 11UL) goto b144;
@@ -30396,12 +25200,12 @@ b140: if (vkind != 11UL) goto b144;
v170 = vib;
v171 = *(u*)(vop + 8UL);
v172 = 4UL;
- v173 = ((u(*)())v167)(v168, v169, v170, v171, v172);
+ v173 = ((u(*)())(v167))(v168, v169, v170, v171, v172);
v173;
v174 = (u)zfputs;
v175 = *(u*)(vc + 72UL);
v176 = (u)" + ";
- v177 = ((u(*)())v174)(v175, v176);
+ v177 = ((u(*)())(v174))(v175, v176);
v177;
v178 = (u)zircop;
v179 = vc;
@@ -30409,7 +25213,7 @@ b140: if (vkind != 11UL) goto b144;
v181 = vib;
v182 = *(u*)(vop + 16UL);
v183 = 4UL;
- v184 = ((u(*)())v178)(v179, v180, v181, v182, v183);
+ v184 = ((u(*)())(v178))(v179, v180, v181, v182, v183);
v184;
goto b60;
b144: if (vkind != 12UL) goto b149;
@@ -30419,12 +25223,12 @@ b144: if (vkind != 12UL) goto b149;
v188 = vib;
v189 = *(u*)(vop + 8UL);
v190 = 8UL;
- v191 = ((u(*)())v185)(v186, v187, v188, v189, v190);
+ v191 = ((u(*)())(v185))(v186, v187, v188, v189, v190);
v191;
v192 = (u)zfputs;
v193 = *(u*)(vc + 72UL);
v194 = (u)" & ";
- v195 = ((u(*)())v192)(v193, v194);
+ v195 = ((u(*)())(v192))(v193, v194);
v195;
v196 = (u)zircop;
v197 = vc;
@@ -30432,7 +25236,7 @@ b144: if (vkind != 12UL) goto b149;
v199 = vib;
v200 = *(u*)(vop + 16UL);
v201 = 8UL;
- v202 = ((u(*)())v196)(v197, v198, v199, v200, v201);
+ v202 = ((u(*)())(v196))(v197, v198, v199, v200, v201);
v202;
goto b60;
b149: if (vkind != 13UL) goto b154;
@@ -30442,12 +25246,12 @@ b149: if (vkind != 13UL) goto b154;
v206 = vib;
v207 = *(u*)(vop + 8UL);
v208 = 10UL;
- v209 = ((u(*)())v203)(v204, v205, v206, v207, v208);
+ v209 = ((u(*)())(v203))(v204, v205, v206, v207, v208);
v209;
v210 = (u)zfputs;
v211 = *(u*)(vc + 72UL);
v212 = (u)" | ";
- v213 = ((u(*)())v210)(v211, v212);
+ v213 = ((u(*)())(v210))(v211, v212);
v213;
v214 = (u)zircop;
v215 = vc;
@@ -30455,7 +25259,7 @@ b149: if (vkind != 13UL) goto b154;
v217 = vib;
v218 = *(u*)(vop + 16UL);
v219 = 10UL;
- v220 = ((u(*)())v214)(v215, v216, v217, v218, v219);
+ v220 = ((u(*)())(v214))(v215, v216, v217, v218, v219);
v220;
goto b60;
b154: if (vkind != 14UL) goto b159;
@@ -30465,12 +25269,12 @@ b154: if (vkind != 14UL) goto b159;
v224 = vib;
v225 = *(u*)(vop + 8UL);
v226 = 9UL;
- v227 = ((u(*)())v221)(v222, v223, v224, v225, v226);
+ v227 = ((u(*)())(v221))(v222, v223, v224, v225, v226);
v227;
v228 = (u)zfputs;
v229 = *(u*)(vc + 72UL);
v230 = (u)" ^ ";
- v231 = ((u(*)())v228)(v229, v230);
+ v231 = ((u(*)())(v228))(v229, v230);
v231;
v232 = (u)zircop;
v233 = vc;
@@ -30478,14 +25282,14 @@ b154: if (vkind != 14UL) goto b159;
v235 = vib;
v236 = *(u*)(vop + 16UL);
v237 = 9UL;
- v238 = ((u(*)())v232)(v233, v234, v235, v236, v237);
+ v238 = ((u(*)())(v232))(v233, v234, v235, v236, v237);
v238;
goto b60;
b159: if (vkind != 15UL) goto b164;
v239 = (u)zfputs;
v240 = *(u*)(vc + 72UL);
v241 = (u)"(u)((s)";
- v242 = ((u(*)())v239)(v240, v241);
+ v242 = ((u(*)())(v239))(v240, v241);
v242;
v243 = (u)zircop;
v244 = vc;
@@ -30493,12 +25297,12 @@ b159: if (vkind != 15UL) goto b164;
v246 = vib;
v247 = *(u*)(vop + 8UL);
v248 = 2UL;
- v249 = ((u(*)())v243)(v244, v245, v246, v247, v248);
+ v249 = ((u(*)())(v243))(v244, v245, v246, v247, v248);
v249;
v250 = (u)zfputs;
v251 = *(u*)(vc + 72UL);
v252 = (u)" / (s)";
- v253 = ((u(*)())v250)(v251, v252);
+ v253 = ((u(*)())(v250))(v251, v252);
v253;
v254 = (u)zircop;
v255 = vc;
@@ -30506,19 +25310,19 @@ b159: if (vkind != 15UL) goto b164;
v257 = vib;
v258 = *(u*)(vop + 16UL);
v259 = 2UL;
- v260 = ((u(*)())v254)(v255, v256, v257, v258, v259);
+ v260 = ((u(*)())(v254))(v255, v256, v257, v258, v259);
v260;
v261 = (u)zfputs;
v262 = *(u*)(vc + 72UL);
v263 = (u)")";
- v264 = ((u(*)())v261)(v262, v263);
+ v264 = ((u(*)())(v261))(v262, v263);
v264;
goto b60;
b164: if (vkind != 16UL) goto b171;
v265 = (u)zfputs;
v266 = *(u*)(vc + 72UL);
v267 = (u)"(u)((s)";
- v268 = ((u(*)())v265)(v266, v267);
+ v268 = ((u(*)())(v265))(v266, v267);
v268;
v269 = (u)zircop;
v270 = vc;
@@ -30526,12 +25330,12 @@ b164: if (vkind != 16UL) goto b171;
v272 = vib;
v273 = *(u*)(vop + 8UL);
v274 = 2UL;
- v275 = ((u(*)())v269)(v270, v271, v272, v273, v274);
+ v275 = ((u(*)())(v269))(v270, v271, v272, v273, v274);
v275;
v276 = (u)zfputs;
v277 = *(u*)(vc + 72UL);
v278 = (u)" % (s)";
- v279 = ((u(*)())v276)(v277, v278);
+ v279 = ((u(*)())(v276))(v277, v278);
v279;
v280 = (u)zircop;
v281 = vc;
@@ -30539,12 +25343,12 @@ b164: if (vkind != 16UL) goto b171;
v283 = vib;
v284 = *(u*)(vop + 16UL);
v285 = 2UL;
- v286 = ((u(*)())v280)(v281, v282, v283, v284, v285);
+ v286 = ((u(*)())(v280))(v281, v282, v283, v284, v285);
v286;
v287 = (u)zfputs;
v288 = *(u*)(vc + 72UL);
v289 = (u)")";
- v290 = ((u(*)())v287)(v288, v289);
+ v290 = ((u(*)())(v287))(v288, v289);
v290;
goto b60;
b171: if (vkind != 17UL) goto b178;
@@ -30554,12 +25358,12 @@ b171: if (vkind != 17UL) goto b178;
v294 = vib;
v295 = *(u*)(vop + 8UL);
v296 = 6UL;
- v297 = ((u(*)())v291)(v292, v293, v294, v295, v296);
+ v297 = ((u(*)())(v291))(v292, v293, v294, v295, v296);
v297;
v298 = (u)zfputs;
v299 = *(u*)(vc + 72UL);
v300 = (u)" << ";
- v301 = ((u(*)())v298)(v299, v300);
+ v301 = ((u(*)())(v298))(v299, v300);
v301;
v302 = (u)zircop;
v303 = vc;
@@ -30567,7 +25371,7 @@ b171: if (vkind != 17UL) goto b178;
v305 = vib;
v306 = *(u*)(vop + 16UL);
v307 = 6UL;
- v308 = ((u(*)())v302)(v303, v304, v305, v306, v307);
+ v308 = ((u(*)())(v302))(v303, v304, v305, v306, v307);
v308;
goto b60;
b178: if (vkind != 18UL) goto b183;
@@ -30577,12 +25381,12 @@ b178: if (vkind != 18UL) goto b183;
v312 = vib;
v313 = *(u*)(vop + 8UL);
v314 = 6UL;
- v315 = ((u(*)())v309)(v310, v311, v312, v313, v314);
+ v315 = ((u(*)())(v309))(v310, v311, v312, v313, v314);
v315;
v316 = (u)zfputs;
v317 = *(u*)(vc + 72UL);
v318 = (u)" >> ";
- v319 = ((u(*)())v316)(v317, v318);
+ v319 = ((u(*)())(v316))(v317, v318);
v319;
v320 = (u)zircop;
v321 = vc;
@@ -30590,7 +25394,7 @@ b178: if (vkind != 18UL) goto b183;
v323 = vib;
v324 = *(u*)(vop + 16UL);
v325 = 6UL;
- v326 = ((u(*)())v320)(v321, v322, v323, v324, v325);
+ v326 = ((u(*)())(v320))(v321, v322, v323, v324, v325);
v326;
goto b60;
b183: if (vkind != 19UL) goto b188;
@@ -30600,12 +25404,12 @@ b183: if (vkind != 19UL) goto b188;
v330 = vib;
v331 = *(u*)(vop + 8UL);
v332 = 3UL;
- v333 = ((u(*)())v327)(v328, v329, v330, v331, v332);
+ v333 = ((u(*)())(v327))(v328, v329, v330, v331, v332);
v333;
v334 = (u)zfputs;
v335 = *(u*)(vc + 72UL);
v336 = (u)" * ";
- v337 = ((u(*)())v334)(v335, v336);
+ v337 = ((u(*)())(v334))(v335, v336);
v337;
v338 = (u)zircop;
v339 = vc;
@@ -30613,7 +25417,7 @@ b183: if (vkind != 19UL) goto b188;
v341 = vib;
v342 = *(u*)(vop + 16UL);
v343 = 3UL;
- v344 = ((u(*)())v338)(v339, v340, v341, v342, v343);
+ v344 = ((u(*)())(v338))(v339, v340, v341, v342, v343);
v344;
goto b60;
b188: if (vkind != 20UL) goto b193;
@@ -30623,12 +25427,12 @@ b188: if (vkind != 20UL) goto b193;
v348 = vib;
v349 = *(u*)(vop + 8UL);
v350 = 4UL;
- v351 = ((u(*)())v345)(v346, v347, v348, v349, v350);
+ v351 = ((u(*)())(v345))(v346, v347, v348, v349, v350);
v351;
v352 = (u)zfputs;
v353 = *(u*)(vc + 72UL);
v354 = (u)" - ";
- v355 = ((u(*)())v352)(v353, v354);
+ v355 = ((u(*)())(v352))(v353, v354);
v355;
v356 = (u)zircop;
v357 = vc;
@@ -30636,14 +25440,14 @@ b188: if (vkind != 20UL) goto b193;
v359 = vib;
v360 = *(u*)(vop + 16UL);
v361 = 4UL;
- v362 = ((u(*)())v356)(v357, v358, v359, v360, v361);
+ v362 = ((u(*)())(v356))(v357, v358, v359, v360, v361);
v362;
goto b60;
b193: if (vkind != 21UL) goto b198;
v363 = (u)zfputs;
v364 = *(u*)(vc + 72UL);
v365 = (u)"(u)(";
- v366 = ((u(*)())v363)(v364, v365);
+ v366 = ((u(*)())(v363))(v364, v365);
v366;
v367 = (u)zircop;
v368 = vc;
@@ -30651,12 +25455,12 @@ b193: if (vkind != 21UL) goto b198;
v370 = vib;
v371 = *(u*)(vop + 8UL);
v372 = 7UL;
- v373 = ((u(*)())v367)(v368, v369, v370, v371, v372);
+ v373 = ((u(*)())(v367))(v368, v369, v370, v371, v372);
v373;
v374 = (u)zfputs;
v375 = *(u*)(vc + 72UL);
v376 = (u)" == ";
- v377 = ((u(*)())v374)(v375, v376);
+ v377 = ((u(*)())(v374))(v375, v376);
v377;
v378 = (u)zircop;
v379 = vc;
@@ -30664,19 +25468,19 @@ b193: if (vkind != 21UL) goto b198;
v381 = vib;
v382 = *(u*)(vop + 16UL);
v383 = 7UL;
- v384 = ((u(*)())v378)(v379, v380, v381, v382, v383);
+ v384 = ((u(*)())(v378))(v379, v380, v381, v382, v383);
v384;
v385 = (u)zfputs;
v386 = *(u*)(vc + 72UL);
v387 = (u)")";
- v388 = ((u(*)())v385)(v386, v387);
+ v388 = ((u(*)())(v385))(v386, v387);
v388;
goto b60;
b198: if (vkind != 22UL) goto b205;
v389 = (u)zfputs;
v390 = *(u*)(vc + 72UL);
v391 = (u)"(u)(";
- v392 = ((u(*)())v389)(v390, v391);
+ v392 = ((u(*)())(v389))(v390, v391);
v392;
v393 = (u)zircop;
v394 = vc;
@@ -30684,12 +25488,12 @@ b198: if (vkind != 22UL) goto b205;
v396 = vib;
v397 = *(u*)(vop + 8UL);
v398 = 7UL;
- v399 = ((u(*)())v393)(v394, v395, v396, v397, v398);
+ v399 = ((u(*)())(v393))(v394, v395, v396, v397, v398);
v399;
v400 = (u)zfputs;
v401 = *(u*)(vc + 72UL);
v402 = (u)" != ";
- v403 = ((u(*)())v400)(v401, v402);
+ v403 = ((u(*)())(v400))(v401, v402);
v403;
v404 = (u)zircop;
v405 = vc;
@@ -30697,19 +25501,19 @@ b198: if (vkind != 22UL) goto b205;
v407 = vib;
v408 = *(u*)(vop + 16UL);
v409 = 7UL;
- v410 = ((u(*)())v404)(v405, v406, v407, v408, v409);
+ v410 = ((u(*)())(v404))(v405, v406, v407, v408, v409);
v410;
v411 = (u)zfputs;
v412 = *(u*)(vc + 72UL);
v413 = (u)")";
- v414 = ((u(*)())v411)(v412, v413);
+ v414 = ((u(*)())(v411))(v412, v413);
v414;
goto b60;
b205: if (vkind != 23UL) goto b212;
v415 = (u)zfputs;
v416 = *(u*)(vc + 72UL);
v417 = (u)"(u)((s)";
- v418 = ((u(*)())v415)(v416, v417);
+ v418 = ((u(*)())(v415))(v416, v417);
v418;
v419 = (u)zircop;
v420 = vc;
@@ -30717,12 +25521,12 @@ b205: if (vkind != 23UL) goto b212;
v422 = vib;
v423 = *(u*)(vop + 8UL);
v424 = 6UL;
- v425 = ((u(*)())v419)(v420, v421, v422, v423, v424);
+ v425 = ((u(*)())(v419))(v420, v421, v422, v423, v424);
v425;
v426 = (u)zfputs;
v427 = *(u*)(vc + 72UL);
v428 = (u)" > (s)";
- v429 = ((u(*)())v426)(v427, v428);
+ v429 = ((u(*)())(v426))(v427, v428);
v429;
v430 = (u)zircop;
v431 = vc;
@@ -30730,19 +25534,19 @@ b205: if (vkind != 23UL) goto b212;
v433 = vib;
v434 = *(u*)(vop + 16UL);
v435 = 6UL;
- v436 = ((u(*)())v430)(v431, v432, v433, v434, v435);
+ v436 = ((u(*)())(v430))(v431, v432, v433, v434, v435);
v436;
v437 = (u)zfputs;
v438 = *(u*)(vc + 72UL);
v439 = (u)")";
- v440 = ((u(*)())v437)(v438, v439);
+ v440 = ((u(*)())(v437))(v438, v439);
v440;
goto b60;
b212: if (vkind != 24UL) goto b219;
v441 = (u)zfputs;
v442 = *(u*)(vc + 72UL);
v443 = (u)"(u)((s)";
- v444 = ((u(*)())v441)(v442, v443);
+ v444 = ((u(*)())(v441))(v442, v443);
v444;
v445 = (u)zircop;
v446 = vc;
@@ -30750,12 +25554,12 @@ b212: if (vkind != 24UL) goto b219;
v448 = vib;
v449 = *(u*)(vop + 8UL);
v450 = 6UL;
- v451 = ((u(*)())v445)(v446, v447, v448, v449, v450);
+ v451 = ((u(*)())(v445))(v446, v447, v448, v449, v450);
v451;
v452 = (u)zfputs;
v453 = *(u*)(vc + 72UL);
v454 = (u)" >= (s)";
- v455 = ((u(*)())v452)(v453, v454);
+ v455 = ((u(*)())(v452))(v453, v454);
v455;
v456 = (u)zircop;
v457 = vc;
@@ -30763,19 +25567,19 @@ b212: if (vkind != 24UL) goto b219;
v459 = vib;
v460 = *(u*)(vop + 16UL);
v461 = 6UL;
- v462 = ((u(*)())v456)(v457, v458, v459, v460, v461);
+ v462 = ((u(*)())(v456))(v457, v458, v459, v460, v461);
v462;
v463 = (u)zfputs;
v464 = *(u*)(vc + 72UL);
v465 = (u)")";
- v466 = ((u(*)())v463)(v464, v465);
+ v466 = ((u(*)())(v463))(v464, v465);
v466;
goto b60;
b219: if (vkind != 25UL) goto b226;
v467 = (u)zfputs;
v468 = *(u*)(vc + 72UL);
v469 = (u)"(u)((s)";
- v470 = ((u(*)())v467)(v468, v469);
+ v470 = ((u(*)())(v467))(v468, v469);
v470;
v471 = (u)zircop;
v472 = vc;
@@ -30783,12 +25587,12 @@ b219: if (vkind != 25UL) goto b226;
v474 = vib;
v475 = *(u*)(vop + 8UL);
v476 = 6UL;
- v477 = ((u(*)())v471)(v472, v473, v474, v475, v476);
+ v477 = ((u(*)())(v471))(v472, v473, v474, v475, v476);
v477;
v478 = (u)zfputs;
v479 = *(u*)(vc + 72UL);
v480 = (u)" < (s)";
- v481 = ((u(*)())v478)(v479, v480);
+ v481 = ((u(*)())(v478))(v479, v480);
v481;
v482 = (u)zircop;
v483 = vc;
@@ -30796,19 +25600,19 @@ b219: if (vkind != 25UL) goto b226;
v485 = vib;
v486 = *(u*)(vop + 16UL);
v487 = 6UL;
- v488 = ((u(*)())v482)(v483, v484, v485, v486, v487);
+ v488 = ((u(*)())(v482))(v483, v484, v485, v486, v487);
v488;
v489 = (u)zfputs;
v490 = *(u*)(vc + 72UL);
v491 = (u)")";
- v492 = ((u(*)())v489)(v490, v491);
+ v492 = ((u(*)())(v489))(v490, v491);
v492;
goto b60;
b226: if (vkind != 26UL) goto b233;
v493 = (u)zfputs;
v494 = *(u*)(vc + 72UL);
v495 = (u)"(u)((s)";
- v496 = ((u(*)())v493)(v494, v495);
+ v496 = ((u(*)())(v493))(v494, v495);
v496;
v497 = (u)zircop;
v498 = vc;
@@ -30816,12 +25620,12 @@ b226: if (vkind != 26UL) goto b233;
v500 = vib;
v501 = *(u*)(vop + 8UL);
v502 = 6UL;
- v503 = ((u(*)())v497)(v498, v499, v500, v501, v502);
+ v503 = ((u(*)())(v497))(v498, v499, v500, v501, v502);
v503;
v504 = (u)zfputs;
v505 = *(u*)(vc + 72UL);
v506 = (u)" <= (s)";
- v507 = ((u(*)())v504)(v505, v506);
+ v507 = ((u(*)())(v504))(v505, v506);
v507;
v508 = (u)zircop;
v509 = vc;
@@ -30829,17 +25633,17 @@ b226: if (vkind != 26UL) goto b233;
v511 = vib;
v512 = *(u*)(vop + 16UL);
v513 = 6UL;
- v514 = ((u(*)())v508)(v509, v510, v511, v512, v513);
+ v514 = ((u(*)())(v508))(v509, v510, v511, v512, v513);
v514;
v515 = (u)zfputs;
v516 = *(u*)(vc + 72UL);
v517 = (u)")";
- v518 = ((u(*)())v515)(v516, v517);
+ v518 = ((u(*)())(v515))(v516, v517);
v518;
goto b60;
b233: v519 = (u)zdie;
v520 = (u)"invalid op";
- v521 = ((u(*)())v519)(v520);
+ v521 = ((u(*)())(v519))(v520);
v521;
goto b60;
b64: if (vkind != 1UL) goto b67;
@@ -30919,7 +25723,7 @@ b52: if (vkind != 26UL) goto b54;
goto b1;
b54: v10 = (u)zdie;
v11 = (u)"invalid op";
- v12 = ((u(*)())v10)(v11);
+ v12 = ((u(*)())(v10))(v11);
v12;
goto b1;
b5: if (vkind != 1UL) goto b8;
@@ -31073,12 +25877,12 @@ u zircop_neg(u vc, u vic, u vib, u vop, u vpri) {
v9 = vib;
v10 = *(u*)(vop + 8UL);
v11 = 7UL;
- v12 = ((u(*)())v6)(v7, v8, v9, v10, v11);
+ v12 = ((u(*)())(v6))(v7, v8, v9, v10, v11);
v12;
v13 = (u)zfputs;
v14 = *(u*)(vc + 72UL);
v15 = (u)" != ";
- v16 = ((u(*)())v13)(v14, v15);
+ v16 = ((u(*)())(v13))(v14, v15);
v16;
v17 = (u)zircop;
v18 = vc;
@@ -31086,7 +25890,7 @@ u zircop_neg(u vc, u vic, u vib, u vop, u vpri) {
v20 = vib;
v21 = *(u*)(vop + 16UL);
v22 = 7UL;
- v23 = ((u(*)())v17)(v18, v19, v20, v21, v22);
+ v23 = ((u(*)())(v17))(v18, v19, v20, v21, v22);
v23;
b1: return 0UL;
b3: if (vkind != 22UL) goto b8;
@@ -31096,12 +25900,12 @@ b3: if (vkind != 22UL) goto b8;
v27 = vib;
v28 = *(u*)(vop + 8UL);
v29 = 7UL;
- v30 = ((u(*)())v24)(v25, v26, v27, v28, v29);
+ v30 = ((u(*)())(v24))(v25, v26, v27, v28, v29);
v30;
v31 = (u)zfputs;
v32 = *(u*)(vc + 72UL);
v33 = (u)" == ";
- v34 = ((u(*)())v31)(v32, v33);
+ v34 = ((u(*)())(v31))(v32, v33);
v34;
v35 = (u)zircop;
v36 = vc;
@@ -31109,14 +25913,14 @@ b3: if (vkind != 22UL) goto b8;
v38 = vib;
v39 = *(u*)(vop + 16UL);
v40 = 7UL;
- v41 = ((u(*)())v35)(v36, v37, v38, v39, v40);
+ v41 = ((u(*)())(v35))(v36, v37, v38, v39, v40);
v41;
goto b1;
b8: if (vkind != 23UL) goto b13;
v42 = (u)zfputs;
v43 = *(u*)(vc + 72UL);
v44 = (u)"(s)";
- v45 = ((u(*)())v42)(v43, v44);
+ v45 = ((u(*)())(v42))(v43, v44);
v45;
v46 = (u)zircop;
v47 = vc;
@@ -31124,12 +25928,12 @@ b8: if (vkind != 23UL) goto b13;
v49 = vib;
v50 = *(u*)(vop + 8UL);
v51 = 2UL;
- v52 = ((u(*)())v46)(v47, v48, v49, v50, v51);
+ v52 = ((u(*)())(v46))(v47, v48, v49, v50, v51);
v52;
v53 = (u)zfputs;
v54 = *(u*)(vc + 72UL);
v55 = (u)" <= (s)";
- v56 = ((u(*)())v53)(v54, v55);
+ v56 = ((u(*)())(v53))(v54, v55);
v56;
v57 = (u)zircop;
v58 = vc;
@@ -31137,14 +25941,14 @@ b8: if (vkind != 23UL) goto b13;
v60 = vib;
v61 = *(u*)(vop + 16UL);
v62 = 2UL;
- v63 = ((u(*)())v57)(v58, v59, v60, v61, v62);
+ v63 = ((u(*)())(v57))(v58, v59, v60, v61, v62);
v63;
goto b1;
b13: if (vkind != 24UL) goto b19;
v64 = (u)zfputs;
v65 = *(u*)(vc + 72UL);
v66 = (u)"(s)";
- v67 = ((u(*)())v64)(v65, v66);
+ v67 = ((u(*)())(v64))(v65, v66);
v67;
v68 = (u)zircop;
v69 = vc;
@@ -31152,12 +25956,12 @@ b13: if (vkind != 24UL) goto b19;
v71 = vib;
v72 = *(u*)(vop + 8UL);
v73 = 2UL;
- v74 = ((u(*)())v68)(v69, v70, v71, v72, v73);
+ v74 = ((u(*)())(v68))(v69, v70, v71, v72, v73);
v74;
v75 = (u)zfputs;
v76 = *(u*)(vc + 72UL);
v77 = (u)" < (s)";
- v78 = ((u(*)())v75)(v76, v77);
+ v78 = ((u(*)())(v75))(v76, v77);
v78;
v79 = (u)zircop;
v80 = vc;
@@ -31165,14 +25969,14 @@ b13: if (vkind != 24UL) goto b19;
v82 = vib;
v83 = *(u*)(vop + 16UL);
v84 = 2UL;
- v85 = ((u(*)())v79)(v80, v81, v82, v83, v84);
+ v85 = ((u(*)())(v79))(v80, v81, v82, v83, v84);
v85;
goto b1;
b19: if (vkind != 25UL) goto b25;
v86 = (u)zfputs;
v87 = *(u*)(vc + 72UL);
v88 = (u)"(s)";
- v89 = ((u(*)())v86)(v87, v88);
+ v89 = ((u(*)())(v86))(v87, v88);
v89;
v90 = (u)zircop;
v91 = vc;
@@ -31180,12 +25984,12 @@ b19: if (vkind != 25UL) goto b25;
v93 = vib;
v94 = *(u*)(vop + 8UL);
v95 = 2UL;
- v96 = ((u(*)())v90)(v91, v92, v93, v94, v95);
+ v96 = ((u(*)())(v90))(v91, v92, v93, v94, v95);
v96;
v97 = (u)zfputs;
v98 = *(u*)(vc + 72UL);
v99 = (u)" >= (s)";
- v100 = ((u(*)())v97)(v98, v99);
+ v100 = ((u(*)())(v97))(v98, v99);
v100;
v101 = (u)zircop;
v102 = vc;
@@ -31193,14 +25997,14 @@ b19: if (vkind != 25UL) goto b25;
v104 = vib;
v105 = *(u*)(vop + 16UL);
v106 = 2UL;
- v107 = ((u(*)())v101)(v102, v103, v104, v105, v106);
+ v107 = ((u(*)())(v101))(v102, v103, v104, v105, v106);
v107;
goto b1;
b25: if (vkind != 26UL) goto b31;
v108 = (u)zfputs;
v109 = *(u*)(vc + 72UL);
v110 = (u)"(s)";
- v111 = ((u(*)())v108)(v109, v110);
+ v111 = ((u(*)())(v108))(v109, v110);
v111;
v112 = (u)zircop;
v113 = vc;
@@ -31208,12 +26012,12 @@ b25: if (vkind != 26UL) goto b31;
v115 = vib;
v116 = *(u*)(vop + 8UL);
v117 = 2UL;
- v118 = ((u(*)())v112)(v113, v114, v115, v116, v117);
+ v118 = ((u(*)())(v112))(v113, v114, v115, v116, v117);
v118;
v119 = (u)zfputs;
v120 = *(u*)(vc + 72UL);
v121 = (u)" > (s)";
- v122 = ((u(*)())v119)(v120, v121);
+ v122 = ((u(*)())(v119))(v120, v121);
v122;
v123 = (u)zircop;
v124 = vc;
@@ -31221,13 +26025,13 @@ b25: if (vkind != 26UL) goto b31;
v126 = vib;
v127 = *(u*)(vop + 16UL);
v128 = 2UL;
- v129 = ((u(*)())v123)(v124, v125, v126, v127, v128);
+ v129 = ((u(*)())(v123))(v124, v125, v126, v127, v128);
v129;
goto b1;
b31: v130 = (u)zfputs;
v131 = *(u*)(vc + 72UL);
v132 = (u)"!";
- v133 = ((u(*)())v130)(v131, v132);
+ v133 = ((u(*)())(v130))(v131, v132);
v133;
v134 = (u)zircop;
v135 = vc;
@@ -31235,7 +26039,7 @@ b31: v130 = (u)zfputs;
v137 = vib;
v138 = vop;
v139 = 2UL;
- v140 = ((u(*)())v134)(v135, v136, v137, v138, v139);
+ v140 = ((u(*)())(v134))(v135, v136, v137, v138, v139);
v140;
goto b1;
}
@@ -31294,54 +26098,54 @@ u zircout(u vc) {
v2 = (u)zfputs;
v3 = *(u*)(vc + 72UL);
v4 = (u)"typedef unsigned char b;\012";
- v5 = ((u(*)())v2)(v3, v4);
+ v5 = ((u(*)())(v2))(v3, v4);
v5;
v6 = (u)zfputs;
v7 = *(u*)(vc + 72UL);
v8 = (u)"typedef unsigned long u;\012";
- v9 = ((u(*)())v6)(v7, v8);
+ v9 = ((u(*)())(v6))(v7, v8);
v9;
v10 = (u)zfputs;
v11 = *(u*)(vc + 72UL);
v12 = (u)"typedef long s;\012";
- v13 = ((u(*)())v10)(v11, v12);
+ v13 = ((u(*)())(v10))(v11, v12);
v13;
v14 = (u)zfirst_decl;
v15 = vc;
- v16 = ((u(*)())v14)(v15);
+ v16 = ((u(*)())(v14))(v15);
vd = v16;
-b5: if (!vd) goto b11;
+b5: if (!(vd)) goto b11;
v17 = 0UL;
-b12: if (!v17) goto b9;
+b12: if (!(v17)) goto b9;
v27 = (u)zircdeclstdlib;
v28 = vc;
- v29 = ((u(*)())v27)(v28);
+ v29 = ((u(*)())(v27))(v28);
v29;
v30 = (u)zfirst_decl;
v31 = vc;
- v32 = ((u(*)())v30)(v31);
+ v32 = ((u(*)())(v30))(v31);
vd = v32;
-b24: if (!vd) goto b30;
+b24: if (!(vd)) goto b30;
v33 = 0UL;
-b31: if (!v33) goto b28;
+b31: if (!(v33)) goto b28;
v43 = (u)zfflush;
v44 = *(u*)(vc + 72UL);
- v45 = ((u(*)())v43)(v44);
+ v45 = ((u(*)())(v43))(v44);
v45;
return 0UL;
-b28: if (!*(u*)(vd + 96UL)) goto b36;
- if (!*(u*)(vd + 72UL)) goto b36;
+b28: if (!(*(u*)(vd + 96UL))) goto b36;
+ if (!(*(u*)(vd + 72UL))) goto b36;
v34 = 1UL;
-b38: if (!v34) goto b34;
+b38: if (!(v34)) goto b34;
v35 = (u)zircdefine;
v36 = vc;
v37 = vd;
- v38 = ((u(*)())v35)(v36, v37);
+ v38 = ((u(*)())(v35))(v36, v37);
v38;
b32: v39 = (u)znext_decl;
v40 = vc;
v41 = vd;
- v42 = ((u(*)())v39)(v40, v41);
+ v42 = ((u(*)())(v39))(v40, v41);
vd = v42;
goto b24;
b34: goto b32;
@@ -31349,19 +26153,19 @@ b36: v34 = 0UL;
goto b38;
b30: v33 = 1UL;
goto b31;
-b9: if (!*(u*)(vd + 96UL)) goto b17;
- if (!*(u*)(vd + 72UL)) goto b17;
+b9: if (!(*(u*)(vd + 96UL))) goto b17;
+ if (!(*(u*)(vd + 72UL))) goto b17;
v18 = 1UL;
-b19: if (!v18) goto b15;
+b19: if (!(v18)) goto b15;
v19 = (u)zircforward;
v20 = vc;
v21 = vd;
- v22 = ((u(*)())v19)(v20, v21);
+ v22 = ((u(*)())(v19))(v20, v21);
v22;
b13: v23 = (u)znext_decl;
v24 = vc;
v25 = vd;
- v26 = ((u(*)())v23)(v24, v25);
+ v26 = ((u(*)())(v23))(v24, v25);
vd = v26;
goto b5;
b15: goto b13;
@@ -31370,12 +26174,552 @@ b17: v18 = 0UL;
b11: v17 = 1UL;
goto b12;
}
-u zircretval(u vc, u vic, u vib) {
- u vi = 0;
- u vop = 0;
+u zircretval(u vc, u vic, u vib) {
+ u vi = 0;
+ u vop = 0;
+ u vkind = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ vi = 0UL;
+b1: if (vi != *(u*)(vib + 16UL)) goto b5;
+b2: return 0UL;
+b5: vop = *(u*)(*(u*)(vib + 8UL) + vi * 8UL);
+ if (*(u*)(vop + 0UL) != 7UL) goto b8;
+ v6 = (u)zircop;
+ v7 = vc;
+ v8 = vic;
+ v9 = vib;
+ v10 = *(u*)(vop + 8UL);
+ v11 = 14UL;
+ v12 = ((u(*)())(v6))(v7, v8, v9, v10, v11);
+ v12;
+ v13 = (u)zfputs;
+ v14 = *(u*)(vc + 72UL);
+ v15 = (u)" = ";
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+ goto b2;
+b8: vi = vi + 1UL;
+ goto b1;
+}
+u zircstdlib(u vc, u vd) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ v2 = (u)zstrcmp;
+ v3 = *(u*)(vd + 32UL);
+ v4 = (u)"syscall";
+ v5 = ((u(*)())(v2))(v3, v4);
+ if (v5 != 0UL) goto b3;
+ v6 = (u)zfputs;
+ v7 = *(u*)(vc + 72UL);
+ v8 = (u)"/* no glue for syscall using stdlib */\012";
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+b1: return 0UL;
+b3: v10 = (u)zstrcmp;
+ v11 = *(u*)(vd + 32UL);
+ v12 = (u)"_start";
+ v13 = ((u(*)())(v10))(v11, v12);
+ if (v13 != 0UL) goto b7;
+ v14 = (u)zfputs;
+ v15 = *(u*)(vc + 72UL);
+ v16 = (u)"/* no glue for _start using stdlib */\012";
+ v17 = ((u(*)())(v14))(v15, v16);
+ v17;
+ goto b1;
+b7: v18 = (u)zstrcmp;
+ v19 = *(u*)(vd + 32UL);
+ v20 = (u)"exit";
+ v21 = ((u(*)())(v18))(v19, v20);
+ if (v21 != 0UL) goto b11;
+ v22 = (u)zfputs;
+ v23 = *(u*)(vc + 72UL);
+ v24 = (u)"u zexit(u vn) {\012";
+ v25 = ((u(*)())(v22))(v23, v24);
+ v25;
+ v26 = (u)zfputs;
+ v27 = *(u*)(vc + 72UL);
+ v28 = (u)"\011exit((int)vn);\012";
+ v29 = ((u(*)())(v26))(v27, v28);
+ v29;
+ v30 = (u)zfputs;
+ v31 = *(u*)(vc + 72UL);
+ v32 = (u)"}\012";
+ v33 = ((u(*)())(v30))(v31, v32);
+ v33;
+ goto b1;
+b11: v34 = (u)zstrcmp;
+ v35 = *(u*)(vd + 32UL);
+ v36 = (u)"read";
+ v37 = ((u(*)())(v34))(v35, v36);
+ if (v37 != 0UL) goto b17;
+ v38 = (u)zfputs;
+ v39 = *(u*)(vc + 72UL);
+ v40 = (u)"u zread(u vfd, u vbuf, u vn) {\012";
+ v41 = ((u(*)())(v38))(v39, v40);
+ v41;
+ v42 = (u)zfputs;
+ v43 = *(u*)(vc + 72UL);
+ v44 = (u)"\011return (u)read((int)vfd, (void*)vbuf, (unsigned long)vn);\012";
+ v45 = ((u(*)())(v42))(v43, v44);
+ v45;
+ v46 = (u)zfputs;
+ v47 = *(u*)(vc + 72UL);
+ v48 = (u)"}\012";
+ v49 = ((u(*)())(v46))(v47, v48);
+ v49;
+ goto b1;
+b17: v50 = (u)zstrcmp;
+ v51 = *(u*)(vd + 32UL);
+ v52 = (u)"write";
+ v53 = ((u(*)())(v50))(v51, v52);
+ if (v53 != 0UL) goto b23;
+ v54 = (u)zfputs;
+ v55 = *(u*)(vc + 72UL);
+ v56 = (u)"u zwrite(u vfd, u vbuf, u vn) {\012";
+ v57 = ((u(*)())(v54))(v55, v56);
+ v57;
+ v58 = (u)zfputs;
+ v59 = *(u*)(vc + 72UL);
+ v60 = (u)"\011return (u)write((int)vfd, (void*)vbuf, (unsigned long)vn);\012";
+ v61 = ((u(*)())(v58))(v59, v60);
+ v61;
+ v62 = (u)zfputs;
+ v63 = *(u*)(vc + 72UL);
+ v64 = (u)"}\012";
+ v65 = ((u(*)())(v62))(v63, v64);
+ v65;
+ goto b1;
+b23: v66 = (u)zstrcmp;
+ v67 = *(u*)(vd + 32UL);
+ v68 = (u)"mmap";
+ v69 = ((u(*)())(v66))(v67, v68);
+ if (v69 != 0UL) goto b29;
+ v70 = (u)zfputs;
+ v71 = *(u*)(vc + 72UL);
+ v72 = (u)"u zmmap(u vaddr, u vlen, u vprot, u vflags, u vfd, u voff) {\012";
+ v73 = ((u(*)())(v70))(v71, v72);
+ v73;
+ v74 = (u)zfputs;
+ v75 = *(u*)(vc + 72UL);
+ v76 = (u)"\011return (u)mmap((void*)vaddr, (unsigned long)vlen, (int)vprot, (int)vflags, (int)vfd, (long)voff);\012";
+ v77 = ((u(*)())(v74))(v75, v76);
+ v77;
+ v78 = (u)zfputs;
+ v79 = *(u*)(vc + 72UL);
+ v80 = (u)"}\012";
+ v81 = ((u(*)())(v78))(v79, v80);
+ v81;
+ goto b1;
+b29: v82 = (u)zstrcmp;
+ v83 = *(u*)(vd + 32UL);
+ v84 = (u)"close";
+ v85 = ((u(*)())(v82))(v83, v84);
+ if (v85 != 0UL) goto b35;
+ v86 = (u)zfputs;
+ v87 = *(u*)(vc + 72UL);
+ v88 = (u)"u zclose(u vfd) {\012";
+ v89 = ((u(*)())(v86))(v87, v88);
+ v89;
+ v90 = (u)zfputs;
+ v91 = *(u*)(vc + 72UL);
+ v92 = (u)"\011return (u)close((int)vfd);\012";
+ v93 = ((u(*)())(v90))(v91, v92);
+ v93;
+ v94 = (u)zfputs;
+ v95 = *(u*)(vc + 72UL);
+ v96 = (u)"}\012";
+ v97 = ((u(*)())(v94))(v95, v96);
+ v97;
+ goto b1;
+b35: v98 = (u)zstrcmp;
+ v99 = *(u*)(vd + 32UL);
+ v100 = (u)"unlink";
+ v101 = ((u(*)())(v98))(v99, v100);
+ if (v101 != 0UL) goto b41;
+ v102 = (u)zfputs;
+ v103 = *(u*)(vc + 72UL);
+ v104 = (u)"u zunlink(u vname) {\012";
+ v105 = ((u(*)())(v102))(v103, v104);
+ v105;
+ v106 = (u)zfputs;
+ v107 = *(u*)(vc + 72UL);
+ v108 = (u)"\011return (u)unlink((char *)vname);\012";
+ v109 = ((u(*)())(v106))(v107, v108);
+ v109;
+ v110 = (u)zfputs;
+ v111 = *(u*)(vc + 72UL);
+ v112 = (u)"}\012";
+ v113 = ((u(*)())(v110))(v111, v112);
+ v113;
+ goto b1;
+b41: v114 = (u)zstrcmp;
+ v115 = *(u*)(vd + 32UL);
+ v116 = (u)"open";
+ v117 = ((u(*)())(v114))(v115, v116);
+ if (v117 != 0UL) goto b47;
+ v118 = (u)zfputs;
+ v119 = *(u*)(vc + 72UL);
+ v120 = (u)"u zopen(u vname, u vflags, u vmode) {\012";
+ v121 = ((u(*)())(v118))(v119, v120);
+ v121;
+ v122 = (u)zfputs;
+ v123 = *(u*)(vc + 72UL);
+ v124 = (u)"\011return (u)open((char *)vname, (int)vflags, (int)vmode);\012";
+ v125 = ((u(*)())(v122))(v123, v124);
+ v125;
+ v126 = (u)zfputs;
+ v127 = *(u*)(vc + 72UL);
+ v128 = (u)"}\012";
+ v129 = ((u(*)())(v126))(v127, v128);
+ v129;
+ goto b1;
+b47: v130 = (u)zstrcmp;
+ v131 = *(u*)(vd + 32UL);
+ v132 = (u)"get_machine";
+ v133 = ((u(*)())(v130))(v131, v132);
+ if (v133 != 0UL) goto b53;
+ v134 = (u)zfputs;
+ v135 = *(u*)(vc + 72UL);
+ v136 = (u)"u zget_machine() {\012";
+ v137 = ((u(*)())(v134))(v135, v136);
+ v137;
+ v138 = (u)zfputs;
+ v139 = *(u*)(vc + 72UL);
+ v140 = (u)"\011return 0;\012";
+ v141 = ((u(*)())(v138))(v139, v140);
+ v141;
+ v142 = (u)zfputs;
+ v143 = *(u*)(vc + 72UL);
+ v144 = (u)"}\012";
+ v145 = ((u(*)())(v142))(v143, v144);
+ v145;
+ goto b1;
+b53: v146 = (u)zdie;
+ v147 = (u)"unimplemented stdlib glue";
+ v148 = ((u(*)())(v146))(v147);
+ v148;
+ goto b1;
+}
+u zircstr(u vc, u vs, u vn) {
+ u vi = 0;
+ u vch = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ vi = 0UL;
+ v5 = (u)zfputs;
+ v6 = *(u*)(vc + 72UL);
+ v7 = (u)"\042";
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+b2: if (vi != vn) goto b6;
+ v36 = (u)zfputs;
+ v37 = *(u*)(vc + 72UL);
+ v38 = (u)"\042";
+ v39 = ((u(*)())(v36))(v37, v38);
+ v39;
+ return 0UL;
+b6: if ((u)((s)(vi) % (s)100UL) != 99UL) goto b9;
+ v9 = (u)zfputs;
+ v10 = *(u*)(vc + 72UL);
+ v11 = (u)"\042\012\011\011\042";
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+b7: vch = (u)*(b*)(vs + vi * 1UL);
+ if ((s)(vch) >= (s)32UL) goto b23;
+ v15 = 1UL;
+b25: if (!(v15)) goto b19;
+ v14 = 1UL;
+b21: if (!(v14)) goto b15;
+ v13 = 1UL;
+b17: if (!(v13)) goto b13;
+ v16 = (u)zfputc;
+ v17 = *(u*)(vc + 72UL);
+ v18 = 92UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ v20 = (u)zfputc;
+ v21 = *(u*)(vc + 72UL);
+ v22 = 48UL + (vch >> 6UL & 7UL);
+ v23 = ((u(*)())(v20))(v21, v22);
+ v23;
+ v24 = (u)zfputc;
+ v25 = *(u*)(vc + 72UL);
+ v26 = 48UL + (vch >> 3UL & 7UL);
+ v27 = ((u(*)())(v24))(v25, v26);
+ v27;
+ v28 = (u)zfputc;
+ v29 = *(u*)(vc + 72UL);
+ v30 = 48UL + (vch & 7UL);
+ v31 = ((u(*)())(v28))(v29, v30);
+ v31;
+b11: vi = vi + 1UL;
+ goto b2;
+b13: v32 = (u)zfputc;
+ v33 = *(u*)(vc + 72UL);
+ v34 = vch;
+ v35 = ((u(*)())(v32))(v33, v34);
+ v35;
+ goto b11;
+b15: if (vch != 34UL) goto b28;
+ v13 = 1UL;
+ goto b17;
+b28: v13 = 0UL;
+ goto b17;
+b19: if (vch != 92UL) goto b27;
+ v14 = 1UL;
+ goto b21;
+b27: v14 = 0UL;
+ goto b21;
+b23: if ((s)(vch) <= (s)127UL) goto b26;
+ v15 = 1UL;
+ goto b25;
+b26: v15 = 0UL;
+ goto b25;
+b9: goto b7;
+}
+u zircuse(u vc, u vic, u vib) {
+ u vi = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ if (!(vib)) goto b5;
+ v4 = 0UL;
+b6: if (!(v4)) goto b3;
+ return 0UL;
+b3: if (!(*(u*)(vib + 80UL))) goto b9;
+ *(u*)(vib + 80UL) = 6UL;
+ return 0UL;
+b9: *(u*)(vib + 80UL) = 2UL;
+ if (!(*(u*)(vib + 56UL))) goto b12;
+ v5 = (u)zircuse;
+ v6 = vc;
+ v7 = vic;
+ v8 = *(u*)(vib + 56UL);
+ v9 = ((u(*)())(v5))(v6, v7, v8);
+ v9;
+b10: if (!(*(u*)(vib + 64UL))) goto b18;
+ if (*(u*)(*(u*)(*(u*)(vib + 8UL) + (*(u*)(vib + 16UL) - 1UL) * 8UL) + 0UL) != 29UL) goto b18;
+ v10 = 1UL;
+b20: if (!(v10)) goto b16;
+ v11 = (u)zircuse;
+ v12 = vc;
+ v13 = vic;
+ v14 = *(u*)(vib + 64UL);
+ v15 = ((u(*)())(v11))(v12, v13, v14);
+ v15;
+ *(u*)(*(u*)(vib + 64UL) + 80UL) = 6UL;
+b14: return 0UL;
+b16: goto b14;
+b18: v10 = 0UL;
+ goto b20;
+b12: goto b10;
+b5: v4 = 1UL;
+ goto b6;
+}
+u zirexpr_fold(u vic, u vo) {
+ u va = 0;
+ u vb = 0;
+ u vc = 0;
+ u vn = 0;
u vkind = 0;
- u v6 = 0;
- u v7 = 0;
+ u vret = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
@@ -31385,33 +26729,564 @@ u zircretval(u vc, u vic, u vib) {
u v14 = 0;
u v15 = 0;
u v16 = 0;
- vi = 0UL;
-b1: if (vi != *(u*)(vib + 16UL)) goto b5;
-b2: return 0UL;
-b5: vop = *(u*)(*(u*)(vib + 8UL) + vi * 8UL);
- if (*(u*)(vop + 0UL) != 7UL) goto b8;
- v6 = (u)zircop;
- v7 = vc;
- v8 = vic;
- v9 = vib;
- v10 = *(u*)(vop + 8UL);
- v11 = 14UL;
- v12 = ((u(*)())v6)(v7, v8, v9, v10, v11);
- v12;
- v13 = (u)zfputs;
- v14 = *(u*)(vc + 72UL);
- v15 = (u)" = ";
- v16 = ((u(*)())v13)(v14, v15);
- v16;
- goto b2;
-b8: vi = vi + 1UL;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ u v156 = 0;
+ u v157 = 0;
+ u v158 = 0;
+ u v159 = 0;
+ u v160 = 0;
+ u v161 = 0;
+ u v162 = 0;
+ u v163 = 0;
+ u v164 = 0;
+ u v165 = 0;
+ u v166 = 0;
+ u v167 = 0;
+ u v168 = 0;
+ u v169 = 0;
+ u v170 = 0;
+ u v171 = 0;
+ u v172 = 0;
+ u v173 = 0;
+ u v174 = 0;
+ u v175 = 0;
+ if (!(*(u*)(vo + 8UL))) goto b4;
+ va = *(u*)(vo + 8UL);
+ v8 = (u)zirexpr_fold;
+ v9 = vic;
+ v10 = *(u*)(vo + 8UL);
+ v11 = ((u(*)())(v8))(v9, v10);
+ va = v11;
+ if (!(*(u*)(vo + 16UL))) goto b8;
+ vb = *(u*)(vo + 16UL);
+ v12 = (u)zirexpr_fold;
+ v13 = vic;
+ v14 = *(u*)(vo + 16UL);
+ v15 = ((u(*)())(v12))(v13, v14);
+ vb = v15;
+b6: vkind = *(u*)(vo + 0UL);
+ if (vkind != 5UL) goto b14;
+ if (*(u*)(va + 0UL) != 1UL) goto b14;
+ v16 = 1UL;
+b16: if (!(v16)) goto b12;
+ v17 = (u)zmkirop;
+ v18 = vic;
+ v19 = 0UL;
+ v20 = 0UL;
+ v21 = 0UL;
+ v22 = ((u(*)())(v17))(v18, v19, v20, v21);
+ vret = v22;
+ *(u*)(vret + 24UL) = *(u*)(va + 24UL);
+ *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
+ *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
+ *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+ return vret;
+b12: if (*(u*)(va + 0UL) == 3UL) goto b20;
+b1: if (!(va)) goto b92;
+ if (*(u*)(va + 0UL) != 3UL) goto b92;
+ v115 = 1UL;
+b94: if (!(v115)) goto b90;
+ vn = *(u*)(va + 24UL);
+ if (vn != 0UL) goto b97;
+ if (vkind != 11UL) goto b106;
+ v117 = 1UL;
+b108: if (!(v117)) goto b102;
+ v116 = 1UL;
+b104: if (!(v116)) goto b100;
+ return vb;
+b100: if (vkind != 20UL) goto b113;
+ v118 = (u)zmkirop;
+ v119 = vic;
+ v120 = 9UL;
+ v121 = vb;
+ v122 = 0UL;
+ v123 = ((u(*)())(v118))(v119, v120, v121, v122);
+ vret = v123;
+ *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
+ *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
+ *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+ return vret;
+b113: if (vkind != 12UL) goto b127;
+ v126 = 1UL;
+b129: if (!(v126)) goto b123;
+ v125 = 1UL;
+b125: if (!(v125)) goto b119;
+ v124 = 1UL;
+b121: if (!(v124)) goto b117;
+ v127 = (u)zmkirfold;
+ v128 = vic;
+ v129 = vo;
+ v130 = 0UL;
+ v131 = ((u(*)())(v127))(v128, v129, v130);
+ return v131;
+b117:b95:b88: if (!(vb)) goto b156;
+ if (*(u*)(vb + 0UL) != 3UL) goto b156;
+ v144 = 1UL;
+b158: if (!(v144)) goto b154;
+ vn = *(u*)(vb + 24UL);
+ if (vn != 0UL) goto b161;
+ if (vkind != 11UL) goto b182;
+ v149 = 1UL;
+b184: if (!(v149)) goto b178;
+ v148 = 1UL;
+b180: if (!(v148)) goto b174;
+ v147 = 1UL;
+b176: if (!(v147)) goto b170;
+ v146 = 1UL;
+b172: if (!(v146)) goto b166;
+ v145 = 1UL;
+b168: if (!(v145)) goto b164;
+ return va;
+b164: if (vkind != 12UL) goto b194;
+ v150 = 1UL;
+b196: if (!(v150)) goto b192;
+ v151 = (u)zmkirfold;
+ v152 = vic;
+ v153 = vo;
+ v154 = 0UL;
+ v155 = ((u(*)())(v151))(v152, v153, v154);
+ return v155;
+b192:b159:b152: if (*(u*)(vo + 8UL) != va) goto b226;
+ if (*(u*)(vo + 16UL) != vb) goto b226;
+ v169 = 1UL;
+b228: if (!(v169)) goto b224;
+ return vo;
+b224: v170 = (u)zmkirop;
+ v171 = vic;
+ v172 = vkind;
+ v173 = va;
+ v174 = vb;
+ v175 = ((u(*)())(v170))(v171, v172, v173, v174);
+ vret = v175;
+ *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
+ *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
+ *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+ *(u*)(vret + 48UL) = *(u*)(vo + 48UL);
+ *(u*)(vret + 24UL) = *(u*)(vo + 24UL);
+ return vret;
+b226: v169 = 0UL;
+ goto b228;
+b194: if (vkind != 19UL) goto b197;
+ v150 = 1UL;
+ goto b196;
+b197: v150 = 0UL;
+ goto b196;
+b166: if (vkind != 18UL) goto b189;
+ v145 = 1UL;
+ goto b168;
+b189: v145 = 0UL;
+ goto b168;
+b170: if (vkind != 17UL) goto b188;
+ v146 = 1UL;
+ goto b172;
+b188: v146 = 0UL;
+ goto b172;
+b174: if (vkind != 20UL) goto b187;
+ v147 = 1UL;
+ goto b176;
+b187: v147 = 0UL;
+ goto b176;
+b178: if (vkind != 14UL) goto b186;
+ v148 = 1UL;
+ goto b180;
+b186: v148 = 0UL;
+ goto b180;
+b182: if (vkind != 13UL) goto b185;
+ v149 = 1UL;
+ goto b184;
+b185: v149 = 0UL;
+ goto b184;
+b161: if (vn != 1UL) goto b200;
+ if (vkind != 15UL) goto b205;
+ v156 = 1UL;
+b207: if (!(v156)) goto b203;
+ return va;
+b203: goto b159;
+b205: if (vkind != 19UL) goto b208;
+ v156 = 1UL;
+ goto b207;
+b208: v156 = 0UL;
+ goto b207;
+b200: if (vn != -1UL) goto b210;
+ if (vkind != 19UL) goto b213;
+ v157 = (u)zmkirop;
+ v158 = vic;
+ v159 = 9UL;
+ v160 = va;
+ v161 = 0UL;
+ v162 = ((u(*)())(v157))(v158, v159, v160, v161);
+ vret = v162;
+ *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
+ *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
+ *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+ return vret;
+b213: if (vkind != 14UL) goto b217;
+ v163 = (u)zmkirop;
+ v164 = vic;
+ v165 = 10UL;
+ v166 = va;
+ v167 = 0UL;
+ v168 = ((u(*)())(v163))(v164, v165, v166, v167);
+ vret = v168;
+ *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
+ *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
+ *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+ return vret;
+b217: if (vkind != 12UL) goto b221;
+ return va;
+b221: goto b159;
+b210: goto b159;
+b154: goto b152;
+b156: v144 = 0UL;
+ goto b158;
+b119: if (vkind != 18UL) goto b132;
+ v124 = 1UL;
+ goto b121;
+b132: v124 = 0UL;
+ goto b121;
+b123: if (vkind != 17UL) goto b131;
+ v125 = 1UL;
+ goto b125;
+b131: v125 = 0UL;
+ goto b125;
+b127: if (vkind != 19UL) goto b130;
+ v126 = 1UL;
+ goto b129;
+b130: v126 = 0UL;
+ goto b129;
+b102: if (vkind != 14UL) goto b110;
+ v116 = 1UL;
+ goto b104;
+b110: v116 = 0UL;
+ goto b104;
+b106: if (vkind != 13UL) goto b109;
+ v117 = 1UL;
+ goto b108;
+b109: v117 = 0UL;
+ goto b108;
+b97: if (vn != 1UL) goto b135;
+ if (vkind != 19UL) goto b138;
+ return vb;
+b138: goto b95;
+b135: if (vn != -1UL) goto b140;
+ if (vkind != 19UL) goto b143;
+ v132 = (u)zmkirop;
+ v133 = vic;
+ v134 = 9UL;
+ v135 = vb;
+ v136 = 0UL;
+ v137 = ((u(*)())(v132))(v133, v134, v135, v136);
+ vret = v137;
+ *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
+ *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
+ *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+ return vret;
+b143: if (vkind != 14UL) goto b147;
+ v138 = (u)zmkirop;
+ v139 = vic;
+ v140 = 10UL;
+ v141 = vb;
+ v142 = 0UL;
+ v143 = ((u(*)())(v138))(v139, v140, v141, v142);
+ vret = v143;
+ *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
+ *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
+ *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+ return vret;
+b147: if (vkind != 12UL) goto b151;
+ return vb;
+b151: goto b95;
+b140: goto b95;
+b90: goto b88;
+b92: v115 = 0UL;
+ goto b94;
+b20: if (vkind != 9UL) goto b23;
+ v23 = (u)zmkirfold;
+ v24 = vic;
+ v25 = vo;
+ v26 = -(*(u*)(va + 24UL));
+ v27 = ((u(*)())(v23))(v24, v25, v26);
+ return v27;
+b23: if (vkind != 10UL) goto b26;
+ v28 = (u)zmkirfold;
+ v29 = vic;
+ v30 = vo;
+ v31 = ~(*(u*)(va + 24UL));
+ v32 = ((u(*)())(v28))(v29, v30, v31);
+ return v32;
+b26: if (!(vb)) goto b36;
+ v34 = 0UL;
+b37: if (!(v34)) goto b32;
+ v33 = 1UL;
+b34: if (!(v33)) goto b30;
goto b1;
+b30: if (vkind != 11UL) goto b41;
+ v35 = (u)zmkirfold;
+ v36 = vic;
+ v37 = vo;
+ v38 = *(u*)(va + 24UL) + *(u*)(vb + 24UL);
+ v39 = ((u(*)())(v35))(v36, v37, v38);
+ return v39;
+b41: if (vkind != 12UL) goto b44;
+ v40 = (u)zmkirfold;
+ v41 = vic;
+ v42 = vo;
+ v43 = *(u*)(va + 24UL) & *(u*)(vb + 24UL);
+ v44 = ((u(*)())(v40))(v41, v42, v43);
+ return v44;
+b44: if (vkind != 13UL) goto b47;
+ v45 = (u)zmkirfold;
+ v46 = vic;
+ v47 = vo;
+ v48 = *(u*)(va + 24UL) | *(u*)(vb + 24UL);
+ v49 = ((u(*)())(v45))(v46, v47, v48);
+ return v49;
+b47: if (vkind != 14UL) goto b50;
+ v50 = (u)zmkirfold;
+ v51 = vic;
+ v52 = vo;
+ v53 = *(u*)(va + 24UL) ^ *(u*)(vb + 24UL);
+ v54 = ((u(*)())(v50))(v51, v52, v53);
+ return v54;
+b50: if (vkind != 15UL) goto b53;
+ v55 = (u)zmkirfold;
+ v56 = vic;
+ v57 = vo;
+ v58 = (u)((s)(*(u*)(va + 24UL)) / (s)(*(u*)(vb + 24UL)));
+ v59 = ((u(*)())(v55))(v56, v57, v58);
+ return v59;
+b53: if (vkind != 16UL) goto b56;
+ v60 = (u)zmkirfold;
+ v61 = vic;
+ v62 = vo;
+ v63 = (u)((s)(*(u*)(va + 24UL)) % (s)(*(u*)(vb + 24UL)));
+ v64 = ((u(*)())(v60))(v61, v62, v63);
+ return v64;
+b56: if (vkind != 17UL) goto b59;
+ v65 = (u)zmkirfold;
+ v66 = vic;
+ v67 = vo;
+ v68 = *(u*)(va + 24UL) << *(u*)(vb + 24UL);
+ v69 = ((u(*)())(v65))(v66, v67, v68);
+ return v69;
+b59: if (vkind != 18UL) goto b62;
+ v70 = (u)zmkirfold;
+ v71 = vic;
+ v72 = vo;
+ v73 = *(u*)(va + 24UL) >> *(u*)(vb + 24UL);
+ v74 = ((u(*)())(v70))(v71, v72, v73);
+ return v74;
+b62: if (vkind != 19UL) goto b65;
+ v75 = (u)zmkirfold;
+ v76 = vic;
+ v77 = vo;
+ v78 = *(u*)(va + 24UL) * *(u*)(vb + 24UL);
+ v79 = ((u(*)())(v75))(v76, v77, v78);
+ return v79;
+b65: if (vkind != 20UL) goto b68;
+ v80 = (u)zmkirfold;
+ v81 = vic;
+ v82 = vo;
+ v83 = *(u*)(va + 24UL) - *(u*)(vb + 24UL);
+ v84 = ((u(*)())(v80))(v81, v82, v83);
+ return v84;
+b68: if (vkind != 21UL) goto b71;
+ v85 = (u)zmkirfold;
+ v86 = vic;
+ v87 = vo;
+ v88 = (u)(*(u*)(va + 24UL) == *(u*)(vb + 24UL));
+ v89 = ((u(*)())(v85))(v86, v87, v88);
+ return v89;
+b71: if (vkind != 22UL) goto b74;
+ v90 = (u)zmkirfold;
+ v91 = vic;
+ v92 = vo;
+ v93 = (u)(*(u*)(va + 24UL) != *(u*)(vb + 24UL));
+ v94 = ((u(*)())(v90))(v91, v92, v93);
+ return v94;
+b74: if (vkind != 23UL) goto b77;
+ v95 = (u)zmkirfold;
+ v96 = vic;
+ v97 = vo;
+ v98 = (u)((s)*(u*)(va + 24UL) > (s)*(u*)(vb + 24UL));
+ v99 = ((u(*)())(v95))(v96, v97, v98);
+ return v99;
+b77: if (vkind != 24UL) goto b80;
+ v100 = (u)zmkirfold;
+ v101 = vic;
+ v102 = vo;
+ v103 = (u)((s)*(u*)(va + 24UL) >= (s)*(u*)(vb + 24UL));
+ v104 = ((u(*)())(v100))(v101, v102, v103);
+ return v104;
+b80: if (vkind != 25UL) goto b83;
+ v105 = (u)zmkirfold;
+ v106 = vic;
+ v107 = vo;
+ v108 = (u)((s)*(u*)(va + 24UL) < (s)*(u*)(vb + 24UL));
+ v109 = ((u(*)())(v105))(v106, v107, v108);
+ return v109;
+b83: if (vkind != 26UL) goto b86;
+ v110 = (u)zmkirfold;
+ v111 = vic;
+ v112 = vo;
+ v113 = (u)((s)*(u*)(va + 24UL) <= (s)*(u*)(vb + 24UL));
+ v114 = ((u(*)())(v110))(v111, v112, v113);
+ return v114;
+b86: goto b1;
+b32: if (*(u*)(vb + 0UL) == 3UL) goto b38;
+ v33 = 1UL;
+ goto b34;
+b38: v33 = 0UL;
+ goto b34;
+b36: v34 = 1UL;
+ goto b37;
+b14: v16 = 0UL;
+ goto b16;
+b8: goto b6;
+b4: return vo;
}
-u zircstdlib(u vc, u vd) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
+u zirfind_block(u vic, u vname, u vmake) {
+ u vlink = 0;
+ u vl = 0;
+ u vdir = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -31433,290 +27308,93 @@ u zircstdlib(u vc, u vd) {
u v24 = 0;
u v25 = 0;
u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- v2 = (u)zstrcmp;
- v3 = *(u*)(vd + 32UL);
- v4 = (u)"syscall";
- v5 = ((u(*)())v2)(v3, v4);
- if (v5 != 0UL) goto b3;
- v6 = (u)zfputs;
- v7 = *(u*)(vc + 72UL);
- v8 = (u)"/* no glue for syscall using stdlib */\012";
- v9 = ((u(*)())v6)(v7, v8);
- v9;
-b1: return 0UL;
-b3: v10 = (u)zstrcmp;
- v11 = *(u*)(vd + 32UL);
- v12 = (u)"_start";
- v13 = ((u(*)())v10)(v11, v12);
- if (v13 != 0UL) goto b7;
- v14 = (u)zfputs;
- v15 = *(u*)(vc + 72UL);
- v16 = (u)"/* no glue for _start using stdlib */\012";
- v17 = ((u(*)())v14)(v15, v16);
- v17;
- goto b1;
-b7: v18 = (u)zstrcmp;
- v19 = *(u*)(vd + 32UL);
- v20 = (u)"exit";
- v21 = ((u(*)())v18)(v19, v20);
- if (v21 != 0UL) goto b11;
- v22 = (u)zfputs;
- v23 = *(u*)(vc + 72UL);
- v24 = (u)"u zexit(u vn) {\012";
- v25 = ((u(*)())v22)(v23, v24);
- v25;
- v26 = (u)zfputs;
- v27 = *(u*)(vc + 72UL);
- v28 = (u)"\011exit((int)vn);\012";
- v29 = ((u(*)())v26)(v27, v28);
- v29;
- v30 = (u)zfputs;
- v31 = *(u*)(vc + 72UL);
- v32 = (u)"}\012";
- v33 = ((u(*)())v30)(v31, v32);
- v33;
- goto b1;
-b11: v34 = (u)zstrcmp;
- v35 = *(u*)(vd + 32UL);
- v36 = (u)"read";
- v37 = ((u(*)())v34)(v35, v36);
- if (v37 != 0UL) goto b17;
- v38 = (u)zfputs;
- v39 = *(u*)(vc + 72UL);
- v40 = (u)"u zread(u vfd, u vbuf, u vn) {\012";
- v41 = ((u(*)())v38)(v39, v40);
- v41;
- v42 = (u)zfputs;
- v43 = *(u*)(vc + 72UL);
- v44 = (u)"\011return (u)read((int)vfd, (void*)vbuf, (unsigned long)vn);\012";
- v45 = ((u(*)())v42)(v43, v44);
- v45;
- v46 = (u)zfputs;
- v47 = *(u*)(vc + 72UL);
- v48 = (u)"}\012";
- v49 = ((u(*)())v46)(v47, v48);
- v49;
- goto b1;
-b17: v50 = (u)zstrcmp;
- v51 = *(u*)(vd + 32UL);
- v52 = (u)"write";
- v53 = ((u(*)())v50)(v51, v52);
- if (v53 != 0UL) goto b23;
- v54 = (u)zfputs;
- v55 = *(u*)(vc + 72UL);
- v56 = (u)"u zwrite(u vfd, u vbuf, u vn) {\012";
- v57 = ((u(*)())v54)(v55, v56);
- v57;
- v58 = (u)zfputs;
- v59 = *(u*)(vc + 72UL);
- v60 = (u)"\011return (u)write((int)vfd, (void*)vbuf, (unsigned long)vn);\012";
- v61 = ((u(*)())v58)(v59, v60);
- v61;
- v62 = (u)zfputs;
- v63 = *(u*)(vc + 72UL);
- v64 = (u)"}\012";
- v65 = ((u(*)())v62)(v63, v64);
- v65;
- goto b1;
-b23: v66 = (u)zstrcmp;
- v67 = *(u*)(vd + 32UL);
- v68 = (u)"mmap";
- v69 = ((u(*)())v66)(v67, v68);
- if (v69 != 0UL) goto b29;
- v70 = (u)zfputs;
- v71 = *(u*)(vc + 72UL);
- v72 = (u)"u zmmap(u vaddr, u vlen, u vprot, u vflags, u vfd, u voff) {\012";
- v73 = ((u(*)())v70)(v71, v72);
- v73;
- v74 = (u)zfputs;
- v75 = *(u*)(vc + 72UL);
- v76 = (u)"\011return (u)mmap((void*)vaddr, (unsigned long)vlen, (int)vprot, (int)vflags, (int)vfd, (long)voff);\012";
- v77 = ((u(*)())v74)(v75, v76);
- v77;
- v78 = (u)zfputs;
- v79 = *(u*)(vc + 72UL);
- v80 = (u)"}\012";
- v81 = ((u(*)())v78)(v79, v80);
- v81;
- goto b1;
-b29: v82 = (u)zstrcmp;
- v83 = *(u*)(vd + 32UL);
- v84 = (u)"close";
- v85 = ((u(*)())v82)(v83, v84);
- if (v85 != 0UL) goto b35;
- v86 = (u)zfputs;
- v87 = *(u*)(vc + 72UL);
- v88 = (u)"u zclose(u vfd) {\012";
- v89 = ((u(*)())v86)(v87, v88);
- v89;
- v90 = (u)zfputs;
- v91 = *(u*)(vc + 72UL);
- v92 = (u)"\011return (u)close((int)vfd);\012";
- v93 = ((u(*)())v90)(v91, v92);
- v93;
- v94 = (u)zfputs;
- v95 = *(u*)(vc + 72UL);
- v96 = (u)"}\012";
- v97 = ((u(*)())v94)(v95, v96);
- v97;
- goto b1;
-b35: v98 = (u)zstrcmp;
- v99 = *(u*)(vd + 32UL);
- v100 = (u)"unlink";
- v101 = ((u(*)())v98)(v99, v100);
- if (v101 != 0UL) goto b41;
- v102 = (u)zfputs;
- v103 = *(u*)(vc + 72UL);
- v104 = (u)"u zunlink(u vname) {\012";
- v105 = ((u(*)())v102)(v103, v104);
- v105;
- v106 = (u)zfputs;
- v107 = *(u*)(vc + 72UL);
- v108 = (u)"\011return (u)unlink((char *)vname);\012";
- v109 = ((u(*)())v106)(v107, v108);
- v109;
- v110 = (u)zfputs;
- v111 = *(u*)(vc + 72UL);
- v112 = (u)"}\012";
- v113 = ((u(*)())v110)(v111, v112);
- v113;
- goto b1;
-b41: v114 = (u)zstrcmp;
- v115 = *(u*)(vd + 32UL);
- v116 = (u)"open";
- v117 = ((u(*)())v114)(v115, v116);
- if (v117 != 0UL) goto b47;
- v118 = (u)zfputs;
- v119 = *(u*)(vc + 72UL);
- v120 = (u)"u zopen(u vname, u vflags, u vmode) {\012";
- v121 = ((u(*)())v118)(v119, v120);
- v121;
- v122 = (u)zfputs;
- v123 = *(u*)(vc + 72UL);
- v124 = (u)"\011return (u)open((char *)vname, (int)vflags, (int)vmode);\012";
- v125 = ((u(*)())v122)(v123, v124);
- v125;
- v126 = (u)zfputs;
- v127 = *(u*)(vc + 72UL);
- v128 = (u)"}\012";
- v129 = ((u(*)())v126)(v127, v128);
- v129;
- goto b1;
-b47: v130 = (u)zdie;
- v131 = (u)"unimplemented stdlib glue";
- v132 = ((u(*)())v130)(v131);
- v132;
- goto b1;
+ vlink = vic + 112UL;
+b1: vl = *(u*)(vlink);
+ if (!(vl)) goto b7;
+ v6 = 0UL;
+b8: if (!(v6)) goto b5;
+ if (!(vmake)) goto b23;
+ v15 = 0UL;
+b24: if (!(v15)) goto b21;
+ v16 = (u)zcdie;
+ v17 = *(u*)(vic + 0UL);
+ v18 = (u)"no such label";
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+b19: v20 = (u)zalloc;
+ v21 = *(u*)(vic + 16UL);
+ v22 = 32UL;
+ v23 = ((u(*)())(v20))(v21, v22);
+ vl = v23;
+ *(u*)(vl + 0UL) = vname;
+ *(u*)(vl + 8UL) = 0UL;
+ *(u*)(vl + 16UL) = 0UL;
+ v24 = (u)zmkirblock;
+ v25 = vic;
+ v26 = ((u(*)())(v24))(v25);
+ *(u*)(vl + 24UL) = v26;
+ *(u*)(vlink) = vl;
+ return *(u*)(vl + 24UL);
+b21: goto b19;
+b23: v15 = 1UL;
+ goto b24;
+b5: v7 = (u)zstrcmp;
+ v8 = vname;
+ v9 = *(u*)(vl + 0UL);
+ v10 = ((u(*)())(v7))(v8, v9);
+ vdir = v10;
+ if (vdir != 0UL) goto b12;
+ if (!(vmake)) goto b15;
+ v11 = (u)zcdie;
+ v12 = *(u*)(vic + 0UL);
+ v13 = (u)"duplicate label";
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+b13: return *(u*)(vl + 24UL);
+b15: goto b13;
+b12: if ((s)(vdir) >= (s)0UL) goto b18;
+ vlink = vl + 8UL;
+b10: goto b1;
+b18: vlink = vl + 16UL;
+ goto b10;
+b7: v6 = 1UL;
+ goto b8;
}
-u zircstr(u vc, u vs, u vn) {
+u zirfind_var(u vic, u vname) {
+ u vlink = 0;
+ u vv = 0;
+ u vdir = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ vlink = vic + 120UL;
+b1: vv = *(u*)(vlink);
+ if (!(vv)) goto b7;
+ v5 = 0UL;
+b8: if (!(v5)) goto b5;
+ return vlink;
+b5: v6 = (u)zstrcmp;
+ v7 = vname;
+ v8 = *(u*)(vv + 0UL);
+ v9 = ((u(*)())(v6))(v7, v8);
+ vdir = v9;
+ if (vdir != 0UL) goto b12;
+ return vlink;
+b12: if ((s)(vdir) >= (s)0UL) goto b14;
+ vlink = vv + 8UL;
+b10: goto b1;
+b14: vlink = vv + 16UL;
+ goto b10;
+b7: v5 = 1UL;
+ goto b8;
+}
+u zirfunc_backlink(u vic) {
+ u vib = 0;
u vi = 0;
- u vch = 0;
+ u vj = 0;
+ u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -31745,92 +27423,193 @@ u zircstr(u vc, u vs, u vn) {
u v30 = 0;
u v31 = 0;
u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
+ if (!(*(u*)(vic + 88UL))) goto b3;
+ v4 = (u)zfree;
+ v5 = *(u*)(vic + 16UL);
+ v6 = *(u*)(vic + 88UL);
+ v7 = ((u(*)())(v4))(v5, v6);
+ v7;
+b1: *(u*)(vic + 88UL) = 0UL;
+ *(u*)(vic + 96UL) = 0UL;
vi = 0UL;
- v5 = (u)zfputs;
- v6 = *(u*)(vc + 72UL);
- v7 = (u)"\042";
- v8 = ((u(*)())v5)(v6, v7);
+b5: if (vi != *(u*)(vic + 72UL)) goto b9;
+ v12 = (u)zirblock_backlink;
+ v13 = vic;
+ v14 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v15 = 0UL;
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ v16;
+ v17 = (u)zalloc;
+ v18 = *(u*)(vic + 16UL);
+ v19 = *(u*)(vic + 96UL) * 8UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ *(u*)(vic + 88UL) = v20;
+ vi = 0UL;
+ vj = 0UL;
+b16: if (vi != *(u*)(vic + 72UL)) goto b20;
+ v25 = (u)zirblock_backlink;
+ v26 = vic;
+ v27 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v28 = 0UL;
+ v29 = ((u(*)())(v25))(v26, v27, v28);
+ v29;
+ v30 = (u)zirreset;
+ v31 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v32 = ((u(*)())(v30))(v31);
+ v32;
+ return 0UL;
+b20: vib = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
+ if (!(*(u*)(vib + 48UL))) goto b23;
+ v21 = (u)zalloc;
+ v22 = *(u*)(vic + 16UL);
+ v23 = *(u*)(vib + 48UL) * 8UL;
+ v24 = ((u(*)())(v21))(v22, v23);
+ *(u*)(vib + 40UL) = v24;
+b21: *(u*)(vib + 48UL) = 0UL;
+ *(u*)(vib + 80UL) = 0UL;
+ vi = vi + 1UL;
+ goto b16;
+b23: goto b21;
+b9: vib = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
+ if (!(*(u*)(vib + 40UL))) goto b12;
+ v8 = (u)zfree;
+ v9 = *(u*)(vic + 16UL);
+ v10 = *(u*)(vib + 40UL);
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+b10: *(u*)(vib + 40UL) = 0UL;
+ *(u*)(vib + 48UL) = 0UL;
+ vi = vi + 1UL;
+ goto b5;
+b12: goto b10;
+b3: goto b1;
+}
+u zirfunc_basic_value(u vic) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ v1 = (u)zirblock_basic_value;
+ v2 = vic;
+ v3 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v4 = ((u(*)())(v1))(v2, v3);
+ v4;
+ v5 = (u)zirreset;
+ v6 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v7 = ((u(*)())(v5))(v6);
+ v7;
+ return 0UL;
+}
+u zirfunc_dead(u vic) {
+ u vi = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ v2 = (u)zirblock_dead_var;
+ v3 = vic;
+ v4 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v5 = ((u(*)())(v2))(v3, v4);
+ v5;
+ v6 = (u)zirreset;
+ v7 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v8 = ((u(*)())(v6))(v7);
v8;
-b2: if (vi != vn) goto b6;
- v36 = (u)zfputs;
- v37 = *(u*)(vc + 72UL);
- v38 = (u)"\042";
- v39 = ((u(*)())v36)(v37, v38);
- v39;
+ vi = 0UL;
+b3: if (vi != *(u*)(vic + 136UL)) goto b7;
+ vi = 0UL;
+b18: if (vi != *(u*)(vic + 72UL)) goto b22;
return 0UL;
-b6: if ((u)((s)vi % (s)100UL) != 99UL) goto b9;
- v9 = (u)zfputs;
- v10 = *(u*)(vc + 72UL);
- v11 = (u)"\042\012\011\011\042";
- v12 = ((u(*)())v9)(v10, v11);
- v12;
-b7: vch = (u)*(b*)(vs + vi * 1UL);
- if ((s)vch >= (s)32UL) goto b23;
- v15 = 1UL;
-b25: if (!v15) goto b19;
- v14 = 1UL;
-b21: if (!v14) goto b15;
- v13 = 1UL;
-b17: if (!v13) goto b13;
- v16 = (u)zfputc;
- v17 = *(u*)(vc + 72UL);
- v18 = 92UL;
- v19 = ((u(*)())v16)(v17, v18);
- v19;
- v20 = (u)zfputc;
- v21 = *(u*)(vc + 72UL);
- v22 = 48UL + (vch >> 6UL & 7UL);
- v23 = ((u(*)())v20)(v21, v22);
- v23;
- v24 = (u)zfputc;
- v25 = *(u*)(vc + 72UL);
- v26 = 48UL + (vch >> 3UL & 7UL);
- v27 = ((u(*)())v24)(v25, v26);
- v27;
- v28 = (u)zfputc;
- v29 = *(u*)(vc + 72UL);
- v30 = 48UL + (vch & 7UL);
- v31 = ((u(*)())v28)(v29, v30);
- v31;
-b11: vi = vi + 1UL;
- goto b2;
-b13: v32 = (u)zfputc;
- v33 = *(u*)(vc + 72UL);
- v34 = vch;
- v35 = ((u(*)())v32)(v33, v34);
- v35;
- goto b11;
-b15: if (vch != 34UL) goto b28;
- v13 = 1UL;
- goto b17;
-b28: v13 = 0UL;
- goto b17;
-b19: if (vch != 92UL) goto b27;
- v14 = 1UL;
- goto b21;
-b27: v14 = 0UL;
- goto b21;
-b23: if ((s)vch <= (s)127UL) goto b26;
- v15 = 1UL;
- goto b25;
-b26: v15 = 0UL;
- goto b25;
-b9: goto b7;
+b22: v11 = (u)zirblock_dead_expr;
+ v12 = vic;
+ v13 = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+ vi = vi + 1UL;
+ goto b18;
+b7: if ((s)(vi) < (s)(*(u*)(vic + 152UL))) goto b12;
+ if (!(*(u*)(*(u*)(*(u*)(vic + 128UL) + vi * 8UL) + 64UL))) goto b16;
+ v10 = 0UL;
+b17: if (!(v10)) goto b12;
+ v9 = 1UL;
+b14: if (!(v9)) goto b10;
+ *(u*)(*(u*)(*(u*)(vic + 128UL) + vi * 8UL) + 48UL) = 1UL;
+b8: *(u*)(*(u*)(*(u*)(vic + 128UL) + vi * 8UL) + 64UL) = 0UL;
+ vi = vi + 1UL;
+ goto b3;
+b10: goto b8;
+b12: v9 = 0UL;
+ goto b14;
+b16: v10 = 1UL;
+ goto b17;
}
-u zircuse(u vc, u vic, u vib) {
+u zirfunc_flow(u vic) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ v1 = (u)zirblock_flow2;
+ v2 = vic;
+ v3 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v4 = ((u(*)())(v1))(v2, v3);
+ v4;
+ v5 = (u)zirblock_flow3;
+ v6 = vic;
+ v7 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zirreset;
+ v10 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v11 = ((u(*)())(v9))(v10);
+ v11;
+ return 0UL;
+}
+u zirfunc_fold(u vic) {
u vi = 0;
+ u v2 = 0;
+ u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
+ v2 = (u)zirblock_fold;
+ v3 = vic;
+ v4 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v5 = ((u(*)())(v2))(v3, v4);
+ v5;
+ v6 = (u)zirreset;
+ v7 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v8 = ((u(*)())(v6))(v7);
+ v8;
+ return 0UL;
+}
+u zirjump(u vic, u vto, u vnext) {
+ u vcur = 0;
+ u vo = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -31838,48 +27617,43 @@ u zircuse(u vc, u vic, u vib) {
u v13 = 0;
u v14 = 0;
u v15 = 0;
- if (!vib) goto b5;
- v4 = 0UL;
-b6: if (!v4) goto b3;
- return 0UL;
-b3: if (!*(u*)(vib + 80UL)) goto b9;
- *(u*)(vib + 80UL) = 6UL;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ v5 = (u)zmkirop;
+ v6 = vic;
+ v7 = 28UL;
+ v8 = 0UL;
+ v9 = 0UL;
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ vo = v10;
+ v11 = (u)ziraddop;
+ v12 = vic;
+ v13 = vo;
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+ vcur = *(u*)(vic + 104UL);
+ if (!(vcur)) goto b5;
+ if (!(*(u*)(vcur + 32UL))) goto b8;
+ v15 = (u)zcdie;
+ v16 = *(u*)(vic + 0UL);
+ v17 = (u)"block already done";
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
+b6: *(u*)(vcur + 32UL) = 1UL;
+ *(u*)(vcur + 56UL) = vto;
+b3: *(u*)(vic + 104UL) = vnext;
return 0UL;
-b9: *(u*)(vib + 80UL) = 2UL;
- if (!*(u*)(vib + 56UL)) goto b12;
- v5 = (u)zircuse;
- v6 = vc;
- v7 = vic;
- v8 = *(u*)(vib + 56UL);
- v9 = ((u(*)())v5)(v6, v7, v8);
- v9;
-b10: if (!*(u*)(vib + 64UL)) goto b18;
- if (*(u*)(*(u*)(*(u*)(vib + 8UL) + (*(u*)(vib + 16UL) - 1UL) * 8UL) + 0UL) != 29UL) goto b18;
- v10 = 1UL;
-b20: if (!v10) goto b16;
- v11 = (u)zircuse;
- v12 = vc;
- v13 = vic;
- v14 = *(u*)(vib + 64UL);
- v15 = ((u(*)())v11)(v12, v13, v14);
- v15;
- *(u*)(*(u*)(vib + 64UL) + 80UL) = 6UL;
-b14: return 0UL;
-b16: goto b14;
-b18: v10 = 0UL;
- goto b20;
-b12: goto b10;
-b5: v4 = 1UL;
- goto b6;
+b8: goto b6;
+b5: goto b3;
}
-u zirexpr_fold(u vic, u vo) {
+u zirop_basic_value(u vic, u vvals, u vop) {
u va = 0;
u vb = 0;
- u vc = 0;
- u vn = 0;
- u vkind = 0;
+ u vv = 0;
u vret = 0;
- u v8 = 0;
+ u vkind = 0;
+ u vi = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -31982,471 +27756,2592 @@ u zirexpr_fold(u vic, u vo) {
u v108 = 0;
u v109 = 0;
u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- u v134 = 0;
- u v135 = 0;
- u v136 = 0;
- u v137 = 0;
- u v138 = 0;
- u v139 = 0;
- u v140 = 0;
- u v141 = 0;
- u v142 = 0;
- u v143 = 0;
- u v144 = 0;
- u v145 = 0;
- u v146 = 0;
- u v147 = 0;
- u v148 = 0;
- u v149 = 0;
- u v150 = 0;
- u v151 = 0;
- u v152 = 0;
- u v153 = 0;
- u v154 = 0;
- u v155 = 0;
- u v156 = 0;
- u v157 = 0;
- u v158 = 0;
- u v159 = 0;
- u v160 = 0;
- u v161 = 0;
- u v162 = 0;
- u v163 = 0;
- u v164 = 0;
- u v165 = 0;
- u v166 = 0;
- u v167 = 0;
- u v168 = 0;
- u v169 = 0;
- u v170 = 0;
- u v171 = 0;
- u v172 = 0;
- u v173 = 0;
- u v174 = 0;
- u v175 = 0;
- if (!*(u*)(vo + 8UL)) goto b4;
- va = *(u*)(vo + 8UL);
- v8 = (u)zirexpr_fold;
- v9 = vic;
- v10 = *(u*)(vo + 8UL);
- v11 = ((u(*)())v8)(v9, v10);
- va = v11;
- if (!*(u*)(vo + 16UL)) goto b8;
- vb = *(u*)(vo + 16UL);
- v12 = (u)zirexpr_fold;
- v13 = vic;
- v14 = *(u*)(vo + 16UL);
- v15 = ((u(*)())v12)(v13, v14);
- vb = v15;
-b6: vkind = *(u*)(vo + 0UL);
- if (vkind != 5UL) goto b14;
- if (*(u*)(va + 0UL) != 1UL) goto b14;
- v16 = 1UL;
-b16: if (!v16) goto b12;
- v17 = (u)zmkirop;
- v18 = vic;
- v19 = 0UL;
- v20 = 0UL;
- v21 = 0UL;
- v22 = ((u(*)())v17)(v18, v19, v20, v21);
- vret = v22;
- *(u*)(vret + 24UL) = *(u*)(va + 24UL);
- *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
- *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
- *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
- return vret;
-b12: if (*(u*)(va + 0UL) == 3UL) goto b20;
-b1: if (!va) goto b92;
- if (*(u*)(va + 0UL) != 3UL) goto b92;
- v115 = 1UL;
-b94: if (!v115) goto b90;
- vn = *(u*)(va + 24UL);
- if (vn != 0UL) goto b97;
- if (vkind != 11UL) goto b106;
- v117 = 1UL;
-b108: if (!v117) goto b102;
- v116 = 1UL;
-b104: if (!v116) goto b100;
- return vb;
-b100: if (vkind != 20UL) goto b113;
- v118 = (u)zmkirop;
- v119 = vic;
- v120 = 9UL;
- v121 = vb;
- v122 = 0UL;
- v123 = ((u(*)())v118)(v119, v120, v121, v122);
- vret = v123;
- *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
- *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
- *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
- return vret;
-b113: if (vkind != 12UL) goto b127;
- v126 = 1UL;
-b129: if (!v126) goto b123;
- v125 = 1UL;
-b125: if (!v125) goto b119;
- v124 = 1UL;
-b121: if (!v124) goto b117;
- v127 = (u)zmkirfold;
- v128 = vic;
- v129 = vo;
- v130 = 0UL;
- v131 = ((u(*)())v127)(v128, v129, v130);
- return v131;
-b117:b95:b88: if (!vb) goto b156;
- if (*(u*)(vb + 0UL) != 3UL) goto b156;
- v144 = 1UL;
-b158: if (!v144) goto b154;
- vn = *(u*)(vb + 24UL);
- if (vn != 0UL) goto b161;
- if (vkind != 11UL) goto b182;
- v149 = 1UL;
-b184: if (!v149) goto b178;
- v148 = 1UL;
-b180: if (!v148) goto b174;
- v147 = 1UL;
-b176: if (!v147) goto b170;
- v146 = 1UL;
-b172: if (!v146) goto b166;
- v145 = 1UL;
-b168: if (!v145) goto b164;
- return va;
-b164: if (vkind != 12UL) goto b194;
- v150 = 1UL;
-b196: if (!v150) goto b192;
- v151 = (u)zmkirfold;
- v152 = vic;
- v153 = vo;
- v154 = 0UL;
- v155 = ((u(*)())v151)(v152, v153, v154);
- return v155;
-b192:b159:b152: if (*(u*)(vo + 8UL) != va) goto b226;
- if (*(u*)(vo + 16UL) != vb) goto b226;
- v169 = 1UL;
-b228: if (!v169) goto b224;
- return vo;
-b224: v170 = (u)zmkirop;
- v171 = vic;
- v172 = vkind;
- v173 = va;
- v174 = vb;
- v175 = ((u(*)())v170)(v171, v172, v173, v174);
- vret = v175;
- *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
- *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
- *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
- *(u*)(vret + 48UL) = *(u*)(vo + 48UL);
- *(u*)(vret + 24UL) = *(u*)(vo + 24UL);
- return vret;
-b226: v169 = 0UL;
- goto b228;
-b194: if (vkind != 19UL) goto b197;
- v150 = 1UL;
- goto b196;
-b197: v150 = 0UL;
- goto b196;
-b166: if (vkind != 18UL) goto b189;
- v145 = 1UL;
- goto b168;
-b189: v145 = 0UL;
- goto b168;
-b170: if (vkind != 17UL) goto b188;
- v146 = 1UL;
- goto b172;
-b188: v146 = 0UL;
- goto b172;
-b174: if (vkind != 20UL) goto b187;
- v147 = 1UL;
- goto b176;
-b187: v147 = 0UL;
- goto b176;
-b178: if (vkind != 14UL) goto b186;
- v148 = 1UL;
- goto b180;
-b186: v148 = 0UL;
- goto b180;
-b182: if (vkind != 13UL) goto b185;
- v149 = 1UL;
- goto b184;
-b185: v149 = 0UL;
- goto b184;
-b161: if (vn != 1UL) goto b200;
- if (vkind != 15UL) goto b205;
- v156 = 1UL;
-b207: if (!v156) goto b203;
- return va;
-b203: goto b159;
-b205: if (vkind != 19UL) goto b208;
- v156 = 1UL;
- goto b207;
-b208: v156 = 0UL;
- goto b207;
-b200: if (vn != -1UL) goto b210;
- if (vkind != 19UL) goto b213;
- v157 = (u)zmkirop;
- v158 = vic;
- v159 = 9UL;
- v160 = va;
- v161 = 0UL;
- v162 = ((u(*)())v157)(v158, v159, v160, v161);
- vret = v162;
- *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
- *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
- *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
- return vret;
-b213: if (vkind != 14UL) goto b217;
- v163 = (u)zmkirop;
- v164 = vic;
- v165 = 10UL;
- v166 = va;
- v167 = 0UL;
- v168 = ((u(*)())v163)(v164, v165, v166, v167);
- vret = v168;
- *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
- *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
- *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+ vkind = *(u*)(vop + 0UL);
+ va = *(u*)(vop + 8UL);
+ vb = *(u*)(vop + 16UL);
+ if (vkind != 6UL) goto b3;
+ if (*(u*)(va + 0UL) != 0UL) goto b6;
+ v9 = (u)zirop_kill;
+ v10 = vic;
+ v11 = vvals;
+ v12 = *(u*)(va + 24UL);
+ v13 = ((u(*)())(v9))(v10, v11, v12);
+ v13;
+ v14 = (u)zirop_basic_value;
+ v15 = vic;
+ v16 = vvals;
+ v17 = vb;
+ v18 = ((u(*)())(v14))(v15, v16, v17);
+ vb = v18;
+ if ((s)(*(u*)(va + 24UL)) >= (s)0UL) goto b13;
+ v19 = 1UL;
+b15: if (!(v19)) goto b11;
+ v20 = (u)zdie;
+ v21 = (u)"WTF";
+ v22 = ((u(*)())(v20))(v21);
+ v22;
+b9: *(u*)(vvals + *(u*)(va + 24UL) * 8UL) = vb;
+ v23 = (u)zirop_kill;
+ v24 = vic;
+ v25 = vvals;
+ v26 = *(u*)(va + 24UL);
+ v27 = ((u(*)())(v23))(v24, v25, v26);
+ v27;
+ if (vb != *(u*)(vop + 16UL)) goto b21;
+ return vop;
+b21: v28 = (u)zmkirop;
+ v29 = vic;
+ v30 = 6UL;
+ v31 = va;
+ v32 = vb;
+ v33 = ((u(*)())(v28))(v29, v30, v31, v32);
+ vret = v33;
+ v34 = (u)zircopyloc;
+ v35 = vret;
+ v36 = vop;
+ v37 = ((u(*)())(v34))(v35, v36);
+ v37;
+ *(u*)(vret + 48UL) = *(u*)(vop + 48UL);
return vret;
-b217: if (vkind != 12UL) goto b221;
- return va;
-b221: goto b159;
-b210: goto b159;
-b154: goto b152;
-b156: v144 = 0UL;
- goto b158;
-b119: if (vkind != 18UL) goto b132;
- v124 = 1UL;
- goto b121;
-b132: v124 = 0UL;
- goto b121;
-b123: if (vkind != 17UL) goto b131;
- v125 = 1UL;
- goto b125;
-b131: v125 = 0UL;
- goto b125;
-b127: if (vkind != 19UL) goto b130;
- v126 = 1UL;
- goto b129;
-b130: v126 = 0UL;
- goto b129;
-b102: if (vkind != 14UL) goto b110;
- v116 = 1UL;
- goto b104;
-b110: v116 = 0UL;
- goto b104;
-b106: if (vkind != 13UL) goto b109;
- v117 = 1UL;
- goto b108;
-b109: v117 = 0UL;
- goto b108;
-b97: if (vn != 1UL) goto b135;
- if (vkind != 19UL) goto b138;
- return vb;
-b138: goto b95;
-b135: if (vn != -1UL) goto b140;
- if (vkind != 19UL) goto b143;
- v132 = (u)zmkirop;
- v133 = vic;
- v134 = 9UL;
- v135 = vb;
- v136 = 0UL;
- v137 = ((u(*)())v132)(v133, v134, v135, v136);
- vret = v137;
- *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
- *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
- *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+b11: goto b9;
+b13: if ((s)(*(u*)(va + 24UL)) < (s)(*(u*)(vic + 136UL))) goto b16;
+ v19 = 1UL;
+ goto b15;
+b16: v19 = 0UL;
+ goto b15;
+b6: if (*(u*)(va + 0UL) != 5UL) goto b25;
+ vi = 0UL;
+b26: if (vi != *(u*)(vic + 136UL)) goto b30;
+ return vop;
+b30: *(u*)(vvals + vi * 8UL) = 0UL;
+ vi = vi + 1UL;
+ goto b26;
+b25: v38 = (u)zdie;
+ v39 = (u)"invalid store";
+ v40 = ((u(*)())(v38))(v39);
+ v40;
+ return 0UL;
+b3: if (vkind != 0UL) goto b33;
+ vv = *(u*)(vvals + *(u*)(vop + 24UL) * 8UL);
+ if (!(vv)) goto b38;
+ v41 = 0UL;
+b39: if (!(v41)) goto b36;
+ return vop;
+b36: return vv;
+b38: v41 = 1UL;
+ goto b39;
+b33: if (vkind != 7UL) goto b42;
+ return vop;
+b42: if (vkind != 8UL) goto b66;
+ v52 = 1UL;
+b68: if (!(v52)) goto b62;
+ v51 = 1UL;
+b64: if (!(v51)) goto b58;
+ v50 = 1UL;
+b60: if (!(v50)) goto b54;
+ v49 = 1UL;
+b56: if (!(v49)) goto b50;
+ v48 = 1UL;
+b52: if (!(v48)) goto b46;
+ v47 = 1UL;
+b48: if (!(v47)) goto b44;
+ v53 = (u)zirop_basic_value;
+ v54 = vic;
+ v55 = vvals;
+ v56 = va;
+ v57 = ((u(*)())(v53))(v54, v55, v56);
+ va = v57;
+ if (va != *(u*)(vop + 8UL)) goto b78;
+ return vop;
+b78: v58 = (u)zmkirop;
+ v59 = vic;
+ v60 = vkind;
+ v61 = va;
+ v62 = 0UL;
+ v63 = ((u(*)())(v58))(v59, v60, v61, v62);
+ vret = v63;
+ v64 = (u)zircopyloc;
+ v65 = vret;
+ v66 = vop;
+ v67 = ((u(*)())(v64))(v65, v66);
+ v67;
+ *(u*)(vret + 48UL) = *(u*)(vop + 48UL);
+ *(u*)(vret + 24UL) = *(u*)(vop + 24UL);
return vret;
-b143: if (vkind != 14UL) goto b147;
- v138 = (u)zmkirop;
- v139 = vic;
- v140 = 10UL;
- v141 = vb;
- v142 = 0UL;
- v143 = ((u(*)())v138)(v139, v140, v141, v142);
- vret = v143;
- *(u*)(vret + 64UL) = *(u*)(vo + 64UL);
- *(u*)(vret + 72UL) = *(u*)(vo + 72UL);
- *(u*)(vret + 80UL) = *(u*)(vo + 80UL);
+b44: if (vkind != 1UL) goto b96;
+ v71 = 1UL;
+b98: if (!(v71)) goto b92;
+ v70 = 1UL;
+b94: if (!(v70)) goto b88;
+ v69 = 1UL;
+b90: if (!(v69)) goto b84;
+ v68 = 1UL;
+b86: if (!(v68)) goto b82;
+ return vop;
+b82: if (vkind != 11UL) goto b162;
+ v86 = 1UL;
+b164: if (!(v86)) goto b158;
+ v85 = 1UL;
+b160: if (!(v85)) goto b154;
+ v84 = 1UL;
+b156: if (!(v84)) goto b150;
+ v83 = 1UL;
+b152: if (!(v83)) goto b146;
+ v82 = 1UL;
+b148: if (!(v82)) goto b142;
+ v81 = 1UL;
+b144: if (!(v81)) goto b138;
+ v80 = 1UL;
+b140: if (!(v80)) goto b134;
+ v79 = 1UL;
+b136: if (!(v79)) goto b130;
+ v78 = 1UL;
+b132: if (!(v78)) goto b126;
+ v77 = 1UL;
+b128: if (!(v77)) goto b122;
+ v76 = 1UL;
+b124: if (!(v76)) goto b118;
+ v75 = 1UL;
+b120: if (!(v75)) goto b114;
+ v74 = 1UL;
+b116: if (!(v74)) goto b110;
+ v73 = 1UL;
+b112: if (!(v73)) goto b106;
+ v72 = 1UL;
+b108: if (!(v72)) goto b104;
+ v87 = (u)zirop_basic_value;
+ v88 = vic;
+ v89 = vvals;
+ v90 = va;
+ v91 = ((u(*)())(v87))(v88, v89, v90);
+ va = v91;
+ v92 = (u)zirop_basic_value;
+ v93 = vic;
+ v94 = vvals;
+ v95 = vb;
+ v96 = ((u(*)())(v92))(v93, v94, v95);
+ vb = v96;
+ if (va != *(u*)(vop + 8UL)) goto b186;
+ if (vb != *(u*)(vop + 16UL)) goto b186;
+ v97 = 1UL;
+b188: if (!(v97)) goto b184;
+ return vop;
+b184: v98 = (u)zmkirop;
+ v99 = vic;
+ v100 = vkind;
+ v101 = va;
+ v102 = vb;
+ v103 = ((u(*)())(v98))(v99, v100, v101, v102);
+ vret = v103;
+ v104 = (u)zircopyloc;
+ v105 = vret;
+ v106 = vop;
+ v107 = ((u(*)())(v104))(v105, v106);
+ v107;
+ *(u*)(vret + 48UL) = *(u*)(vop + 48UL);
return vret;
-b147: if (vkind != 12UL) goto b151;
- return vb;
-b151: goto b95;
-b140: goto b95;
-b90: goto b88;
-b92: v115 = 0UL;
+b186: v97 = 0UL;
+ goto b188;
+b104: v108 = (u)zdie;
+ v109 = (u)"invalid op";
+ v110 = ((u(*)())(v108))(v109);
+ v110;
+ return 0UL;
+b106: if (vkind != 26UL) goto b179;
+ v72 = 1UL;
+ goto b108;
+b179: v72 = 0UL;
+ goto b108;
+b110: if (vkind != 25UL) goto b178;
+ v73 = 1UL;
+ goto b112;
+b178: v73 = 0UL;
+ goto b112;
+b114: if (vkind != 24UL) goto b177;
+ v74 = 1UL;
+ goto b116;
+b177: v74 = 0UL;
+ goto b116;
+b118: if (vkind != 23UL) goto b176;
+ v75 = 1UL;
+ goto b120;
+b176: v75 = 0UL;
+ goto b120;
+b122: if (vkind != 22UL) goto b175;
+ v76 = 1UL;
+ goto b124;
+b175: v76 = 0UL;
+ goto b124;
+b126: if (vkind != 21UL) goto b174;
+ v77 = 1UL;
+ goto b128;
+b174: v77 = 0UL;
+ goto b128;
+b130: if (vkind != 20UL) goto b173;
+ v78 = 1UL;
+ goto b132;
+b173: v78 = 0UL;
+ goto b132;
+b134: if (vkind != 19UL) goto b172;
+ v79 = 1UL;
+ goto b136;
+b172: v79 = 0UL;
+ goto b136;
+b138: if (vkind != 18UL) goto b171;
+ v80 = 1UL;
+ goto b140;
+b171: v80 = 0UL;
+ goto b140;
+b142: if (vkind != 17UL) goto b170;
+ v81 = 1UL;
+ goto b144;
+b170: v81 = 0UL;
+ goto b144;
+b146: if (vkind != 16UL) goto b169;
+ v82 = 1UL;
+ goto b148;
+b169: v82 = 0UL;
+ goto b148;
+b150: if (vkind != 15UL) goto b168;
+ v83 = 1UL;
+ goto b152;
+b168: v83 = 0UL;
+ goto b152;
+b154: if (vkind != 14UL) goto b167;
+ v84 = 1UL;
+ goto b156;
+b167: v84 = 0UL;
+ goto b156;
+b158: if (vkind != 13UL) goto b166;
+ v85 = 1UL;
+ goto b160;
+b166: v85 = 0UL;
+ goto b160;
+b162: if (vkind != 12UL) goto b165;
+ v86 = 1UL;
+ goto b164;
+b165: v86 = 0UL;
+ goto b164;
+b84: if (vkind != 28UL) goto b102;
+ v68 = 1UL;
+ goto b86;
+b102: v68 = 0UL;
+ goto b86;
+b88: if (vkind != 4UL) goto b101;
+ v69 = 1UL;
+ goto b90;
+b101: v69 = 0UL;
+ goto b90;
+b92: if (vkind != 3UL) goto b100;
+ v70 = 1UL;
goto b94;
-b20: if (vkind != 9UL) goto b23;
- v23 = (u)zmkirfold;
- v24 = vic;
- v25 = vo;
- v26 = -*(u*)(va + 24UL);
- v27 = ((u(*)())v23)(v24, v25, v26);
- return v27;
-b23: if (vkind != 10UL) goto b26;
- v28 = (u)zmkirfold;
- v29 = vic;
- v30 = vo;
- v31 = ~*(u*)(va + 24UL);
- v32 = ((u(*)())v28)(v29, v30, v31);
- return v32;
-b26: if (!vb) goto b36;
- v34 = 0UL;
-b37: if (!v34) goto b32;
- v33 = 1UL;
-b34: if (!v33) goto b30;
+b100: v70 = 0UL;
+ goto b94;
+b96: if (vkind != 2UL) goto b99;
+ v71 = 1UL;
+ goto b98;
+b99: v71 = 0UL;
+ goto b98;
+b46: if (vkind != 30UL) goto b74;
+ v47 = 1UL;
+ goto b48;
+b74: v47 = 0UL;
+ goto b48;
+b50: if (vkind != 29UL) goto b73;
+ v48 = 1UL;
+ goto b52;
+b73: v48 = 0UL;
+ goto b52;
+b54: if (vkind != 27UL) goto b72;
+ v49 = 1UL;
+ goto b56;
+b72: v49 = 0UL;
+ goto b56;
+b58: if (vkind != 10UL) goto b71;
+ v50 = 1UL;
+ goto b60;
+b71: v50 = 0UL;
+ goto b60;
+b62: if (vkind != 9UL) goto b70;
+ v51 = 1UL;
+ goto b64;
+b70: v51 = 0UL;
+ goto b64;
+b66: if (vkind != 5UL) goto b69;
+ v52 = 1UL;
+ goto b68;
+b69: v52 = 0UL;
+ goto b68;
+}
+u zirop_kill(u vic, u vvals, u vn) {
+ u vi = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+b1: if (vi != *(u*)(vic + 136UL)) goto b5;
+ return 0UL;
+b5: v4 = (u)zirop_occurs;
+ v5 = *(u*)(vvals + vi * 8UL);
+ v6 = vn;
+ v7 = ((u(*)())(v4))(v5, v6);
+ if (!(v7)) goto b8;
+ *(u*)(vvals + vi * 8UL) = 0UL;
+b6: vi = vi + 1UL;
goto b1;
-b30: if (vkind != 11UL) goto b41;
- v35 = (u)zmkirfold;
+b8: goto b6;
+}
+u zirop_occurs(u vop, u vn) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ if (!(vop)) goto b5;
+ v2 = 0UL;
+b6: if (!(v2)) goto b3;
+ return 0UL;
+b3: if (*(u*)(vop + 0UL) != 0UL) goto b9;
+ if (*(u*)(vop + 24UL) != vn) goto b12;
+ return 1UL;
+b12: return 0UL;
+b9: v3 = (u)zirop_occurs;
+ v4 = *(u*)(vop + 8UL);
+ v5 = vn;
+ v6 = ((u(*)())(v3))(v4, v5);
+ if (!(v6)) goto b15;
+ return 1UL;
+b15: v7 = (u)zirop_occurs;
+ v8 = *(u*)(vop + 16UL);
+ v9 = vn;
+ v10 = ((u(*)())(v7))(v8, v9);
+ if (!(v10)) goto b19;
+ return 1UL;
+b19: return 0UL;
+b5: v2 = 1UL;
+ goto b6;
+}
+u zirreset(u vb) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ if (!(vb)) goto b5;
+ v1 = 0UL;
+b6: if (!(v1)) goto b3;
+ return 0UL;
+b3: if (!(*(u*)(vb + 80UL))) goto b11;
+ v2 = 0UL;
+b12: if (!(v2)) goto b9;
+ return 0UL;
+b9: *(u*)(vb + 80UL) = 0UL;
+ v3 = (u)zirreset;
+ v4 = *(u*)(vb + 56UL);
+ v5 = ((u(*)())(v3))(v4);
+ v5;
+ v6 = (u)zirreset;
+ v7 = *(u*)(vb + 64UL);
+ v8 = ((u(*)())(v6))(v7);
+ v8;
+ return 0UL;
+b11: v2 = 1UL;
+ goto b12;
+b5: v1 = 1UL;
+ goto b6;
+}
+u zirreturn(u vic, u vvalue) {
+ u vcur = 0;
+ u vo = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ v4 = (u)zmkirop;
+ v5 = vic;
+ v6 = 30UL;
+ v7 = vvalue;
+ v8 = 0UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vo = v9;
+ v10 = (u)ziraddop;
+ v11 = vic;
+ v12 = vo;
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+ vcur = *(u*)(vic + 104UL);
+ if (!(vcur)) goto b5;
+ if (!(*(u*)(vcur + 32UL))) goto b8;
+ v14 = (u)zcdie;
+ v15 = *(u*)(vic + 0UL);
+ v16 = (u)"block already done";
+ v17 = ((u(*)())(v14))(v15, v16);
+ v17;
+b6: *(u*)(vcur + 32UL) = 1UL;
+b3: *(u*)(vic + 104UL) = 0UL;
+ return 0UL;
+b8: goto b6;
+b5: goto b3;
+}
+u ziruseop(u vic, u vib, u vop) {
+ u vkind = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ vkind = *(u*)(vop + 0UL);
+ if (vkind != 0UL) goto b5;
+ v4 = 1UL;
+b7: if (!(v4)) goto b3;
+ *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(vop + 24UL) * 8UL) + 64UL) = 1UL;
+b1: return 0UL;
+b3: if (vkind != 6UL) goto b10;
+ if (*(u*)(*(u*)(vop + 8UL) + 0UL) == 0UL) goto b13;
+ v5 = (u)ziruseop;
+ v6 = vic;
+ v7 = vib;
+ v8 = *(u*)(vop + 8UL);
+ v9 = ((u(*)())(v5))(v6, v7, v8);
+ v9;
+b11: v10 = (u)ziruseop;
+ v11 = vic;
+ v12 = vib;
+ v13 = *(u*)(vop + 16UL);
+ v14 = ((u(*)())(v10))(v11, v12, v13);
+ v14;
+ goto b1;
+b13: goto b11;
+b10: if (vkind != 11UL) goto b75;
+ v29 = 1UL;
+b77: if (!(v29)) goto b71;
+ v28 = 1UL;
+b73: if (!(v28)) goto b67;
+ v27 = 1UL;
+b69: if (!(v27)) goto b63;
+ v26 = 1UL;
+b65: if (!(v26)) goto b59;
+ v25 = 1UL;
+b61: if (!(v25)) goto b55;
+ v24 = 1UL;
+b57: if (!(v24)) goto b51;
+ v23 = 1UL;
+b53: if (!(v23)) goto b47;
+ v22 = 1UL;
+b49: if (!(v22)) goto b43;
+ v21 = 1UL;
+b45: if (!(v21)) goto b39;
+ v20 = 1UL;
+b41: if (!(v20)) goto b35;
+ v19 = 1UL;
+b37: if (!(v19)) goto b31;
+ v18 = 1UL;
+b33: if (!(v18)) goto b27;
+ v17 = 1UL;
+b29: if (!(v17)) goto b23;
+ v16 = 1UL;
+b25: if (!(v16)) goto b19;
+ v15 = 1UL;
+b21: if (!(v15)) goto b17;
+ v30 = (u)ziruseop;
+ v31 = vic;
+ v32 = vib;
+ v33 = *(u*)(vop + 8UL);
+ v34 = ((u(*)())(v30))(v31, v32, v33);
+ v34;
+ v35 = (u)ziruseop;
v36 = vic;
- v37 = vo;
- v38 = *(u*)(va + 24UL) + *(u*)(vb + 24UL);
- v39 = ((u(*)())v35)(v36, v37, v38);
- return v39;
-b41: if (vkind != 12UL) goto b44;
- v40 = (u)zmkirfold;
- v41 = vic;
- v42 = vo;
- v43 = *(u*)(va + 24UL) & *(u*)(vb + 24UL);
- v44 = ((u(*)())v40)(v41, v42, v43);
- return v44;
-b44: if (vkind != 13UL) goto b47;
- v45 = (u)zmkirfold;
- v46 = vic;
- v47 = vo;
- v48 = *(u*)(va + 24UL) | *(u*)(vb + 24UL);
- v49 = ((u(*)())v45)(v46, v47, v48);
- return v49;
-b47: if (vkind != 14UL) goto b50;
- v50 = (u)zmkirfold;
- v51 = vic;
- v52 = vo;
- v53 = *(u*)(va + 24UL) ^ *(u*)(vb + 24UL);
- v54 = ((u(*)())v50)(v51, v52, v53);
- return v54;
-b50: if (vkind != 15UL) goto b53;
- v55 = (u)zmkirfold;
- v56 = vic;
- v57 = vo;
- v58 = (u)((s)*(u*)(va + 24UL) / (s)*(u*)(vb + 24UL));
- v59 = ((u(*)())v55)(v56, v57, v58);
- return v59;
-b53: if (vkind != 16UL) goto b56;
- v60 = (u)zmkirfold;
- v61 = vic;
- v62 = vo;
- v63 = (u)((s)*(u*)(va + 24UL) % (s)*(u*)(vb + 24UL));
- v64 = ((u(*)())v60)(v61, v62, v63);
- return v64;
-b56: if (vkind != 17UL) goto b59;
- v65 = (u)zmkirfold;
- v66 = vic;
- v67 = vo;
- v68 = *(u*)(va + 24UL) << *(u*)(vb + 24UL);
- v69 = ((u(*)())v65)(v66, v67, v68);
- return v69;
-b59: if (vkind != 18UL) goto b62;
- v70 = (u)zmkirfold;
- v71 = vic;
- v72 = vo;
- v73 = *(u*)(va + 24UL) >> *(u*)(vb + 24UL);
- v74 = ((u(*)())v70)(v71, v72, v73);
- return v74;
-b62: if (vkind != 19UL) goto b65;
- v75 = (u)zmkirfold;
- v76 = vic;
- v77 = vo;
- v78 = *(u*)(va + 24UL) * *(u*)(vb + 24UL);
- v79 = ((u(*)())v75)(v76, v77, v78);
- return v79;
-b65: if (vkind != 20UL) goto b68;
- v80 = (u)zmkirfold;
- v81 = vic;
- v82 = vo;
- v83 = *(u*)(va + 24UL) - *(u*)(vb + 24UL);
- v84 = ((u(*)())v80)(v81, v82, v83);
- return v84;
-b68: if (vkind != 21UL) goto b71;
- v85 = (u)zmkirfold;
- v86 = vic;
- v87 = vo;
- v88 = (u)(*(u*)(va + 24UL) == *(u*)(vb + 24UL));
- v89 = ((u(*)())v85)(v86, v87, v88);
- return v89;
-b71: if (vkind != 22UL) goto b74;
- v90 = (u)zmkirfold;
- v91 = vic;
- v92 = vo;
- v93 = (u)(*(u*)(va + 24UL) != *(u*)(vb + 24UL));
- v94 = ((u(*)())v90)(v91, v92, v93);
- return v94;
-b74: if (vkind != 23UL) goto b77;
- v95 = (u)zmkirfold;
- v96 = vic;
- v97 = vo;
- v98 = (u)((s)*(u*)(va + 24UL) > (s)*(u*)(vb + 24UL));
- v99 = ((u(*)())v95)(v96, v97, v98);
- return v99;
-b77: if (vkind != 24UL) goto b80;
- v100 = (u)zmkirfold;
- v101 = vic;
- v102 = vo;
- v103 = (u)((s)*(u*)(va + 24UL) >= (s)*(u*)(vb + 24UL));
- v104 = ((u(*)())v100)(v101, v102, v103);
- return v104;
-b80: if (vkind != 25UL) goto b83;
- v105 = (u)zmkirfold;
- v106 = vic;
- v107 = vo;
- v108 = (u)((s)*(u*)(va + 24UL) < (s)*(u*)(vb + 24UL));
- v109 = ((u(*)())v105)(v106, v107, v108);
- return v109;
-b83: if (vkind != 26UL) goto b86;
- v110 = (u)zmkirfold;
- v111 = vic;
- v112 = vo;
- v113 = (u)((s)*(u*)(va + 24UL) <= (s)*(u*)(vb + 24UL));
- v114 = ((u(*)())v110)(v111, v112, v113);
- return v114;
-b86: goto b1;
-b32: if (*(u*)(vb + 0UL) == 3UL) goto b38;
- v33 = 1UL;
- goto b34;
-b38: v33 = 0UL;
- goto b34;
-b36: v34 = 1UL;
+ v37 = vib;
+ v38 = *(u*)(vop + 16UL);
+ v39 = ((u(*)())(v35))(v36, v37, v38);
+ v39;
+ goto b1;
+b17: if (vkind != 9UL) goto b118;
+ v45 = 1UL;
+b120: if (!(v45)) goto b114;
+ v44 = 1UL;
+b116: if (!(v44)) goto b110;
+ v43 = 1UL;
+b112: if (!(v43)) goto b106;
+ v42 = 1UL;
+b108: if (!(v42)) goto b102;
+ v41 = 1UL;
+b104: if (!(v41)) goto b98;
+ v40 = 1UL;
+b100: if (!(v40)) goto b96;
+ v46 = (u)ziruseop;
+ v47 = vic;
+ v48 = vib;
+ v49 = *(u*)(vop + 8UL);
+ v50 = ((u(*)())(v46))(v47, v48, v49);
+ v50;
+ goto b1;
+b96: if (vkind != 7UL) goto b129;
+ if (*(u*)(*(u*)(vop + 8UL) + 0UL) == 0UL) goto b132;
+ v51 = (u)ziruseop;
+ v52 = vic;
+ v53 = vib;
+ v54 = *(u*)(vop + 8UL);
+ v55 = ((u(*)())(v51))(v52, v53, v54);
+ v55;
+b130: goto b1;
+b132: goto b130;
+b129: if (vkind != 2UL) goto b145;
+ v58 = 1UL;
+b147: if (!(v58)) goto b141;
+ v57 = 1UL;
+b143: if (!(v57)) goto b137;
+ v56 = 1UL;
+b139: if (!(v56)) goto b135;
+ goto b1;
+b135: v59 = (u)zdie;
+ v60 = (u)"invalid op";
+ v61 = ((u(*)())(v59))(v60);
+ v61;
+ goto b1;
+b137: if (vkind != 28UL) goto b150;
+ v56 = 1UL;
+ goto b139;
+b150: v56 = 0UL;
+ goto b139;
+b141: if (vkind != 4UL) goto b149;
+ v57 = 1UL;
+ goto b143;
+b149: v57 = 0UL;
+ goto b143;
+b145: if (vkind != 3UL) goto b148;
+ v58 = 1UL;
+ goto b147;
+b148: v58 = 0UL;
+ goto b147;
+b98: if (vkind != 30UL) goto b126;
+ v40 = 1UL;
+ goto b100;
+b126: v40 = 0UL;
+ goto b100;
+b102: if (vkind != 29UL) goto b125;
+ v41 = 1UL;
+ goto b104;
+b125: v41 = 0UL;
+ goto b104;
+b106: if (vkind != 27UL) goto b124;
+ v42 = 1UL;
+ goto b108;
+b124: v42 = 0UL;
+ goto b108;
+b110: if (vkind != 8UL) goto b123;
+ v43 = 1UL;
+ goto b112;
+b123: v43 = 0UL;
+ goto b112;
+b114: if (vkind != 5UL) goto b122;
+ v44 = 1UL;
+ goto b116;
+b122: v44 = 0UL;
+ goto b116;
+b118: if (vkind != 10UL) goto b121;
+ v45 = 1UL;
+ goto b120;
+b121: v45 = 0UL;
+ goto b120;
+b19: if (vkind != 26UL) goto b92;
+ v15 = 1UL;
+ goto b21;
+b92: v15 = 0UL;
+ goto b21;
+b23: if (vkind != 25UL) goto b91;
+ v16 = 1UL;
+ goto b25;
+b91: v16 = 0UL;
+ goto b25;
+b27: if (vkind != 24UL) goto b90;
+ v17 = 1UL;
+ goto b29;
+b90: v17 = 0UL;
+ goto b29;
+b31: if (vkind != 23UL) goto b89;
+ v18 = 1UL;
+ goto b33;
+b89: v18 = 0UL;
+ goto b33;
+b35: if (vkind != 22UL) goto b88;
+ v19 = 1UL;
goto b37;
-b14: v16 = 0UL;
- goto b16;
-b8: goto b6;
-b4: return vo;
+b88: v19 = 0UL;
+ goto b37;
+b39: if (vkind != 21UL) goto b87;
+ v20 = 1UL;
+ goto b41;
+b87: v20 = 0UL;
+ goto b41;
+b43: if (vkind != 20UL) goto b86;
+ v21 = 1UL;
+ goto b45;
+b86: v21 = 0UL;
+ goto b45;
+b47: if (vkind != 19UL) goto b85;
+ v22 = 1UL;
+ goto b49;
+b85: v22 = 0UL;
+ goto b49;
+b51: if (vkind != 18UL) goto b84;
+ v23 = 1UL;
+ goto b53;
+b84: v23 = 0UL;
+ goto b53;
+b55: if (vkind != 17UL) goto b83;
+ v24 = 1UL;
+ goto b57;
+b83: v24 = 0UL;
+ goto b57;
+b59: if (vkind != 16UL) goto b82;
+ v25 = 1UL;
+ goto b61;
+b82: v25 = 0UL;
+ goto b61;
+b63: if (vkind != 15UL) goto b81;
+ v26 = 1UL;
+ goto b65;
+b81: v26 = 0UL;
+ goto b65;
+b67: if (vkind != 14UL) goto b80;
+ v27 = 1UL;
+ goto b69;
+b80: v27 = 0UL;
+ goto b69;
+b71: if (vkind != 13UL) goto b79;
+ v28 = 1UL;
+ goto b73;
+b79: v28 = 0UL;
+ goto b73;
+b75: if (vkind != 12UL) goto b78;
+ v29 = 1UL;
+ goto b77;
+b78: v29 = 0UL;
+ goto b77;
+b5: if (vkind != 1UL) goto b8;
+ v4 = 1UL;
+ goto b7;
+b8: v4 = 0UL;
+ goto b7;
+}
+u zlabels_to_ir(u vic, u vn) {
+ u vkind = 0;
+ u vname = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ if (!(vn)) goto b5;
+ v4 = 0UL;
+b6: if (!(v4)) goto b3;
+ return 0UL;
+b3: *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vn + 40UL);
+ vkind = *(u*)(vn + 0UL);
+ if (vkind != 21UL) goto b9;
+b10: if (!(vn)) goto b16;
+ v5 = 0UL;
+b17: if (!(v5)) goto b14;
+b7: return 0UL;
+b14: v6 = (u)zlabels_to_ir;
+ v7 = vic;
+ v8 = *(u*)(*(u*)(vn + 8UL) + 16UL);
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+ vn = *(u*)(vn + 16UL);
+ goto b10;
+b16: v5 = 1UL;
+ goto b17;
+b9: if (vkind != 5UL) goto b20;
+b21: if (!(vn)) goto b27;
+ v10 = 0UL;
+b28: if (!(v10)) goto b25;
+ goto b7;
+b25: v11 = (u)zlabels_to_ir;
+ v12 = vic;
+ v13 = *(u*)(vn + 8UL);
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+ vn = *(u*)(vn + 16UL);
+ goto b21;
+b27: v10 = 1UL;
+ goto b28;
+b20: if (vkind != 26UL) goto b31;
+ v15 = (u)zlabels_to_ir;
+ v16 = vic;
+ v17 = *(u*)(vn + 8UL);
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
+ goto b7;
+b31: if (vkind != 31UL) goto b34;
+ vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v19 = (u)zirfind_block;
+ v20 = vic;
+ v21 = vname;
+ v22 = 1UL;
+ v23 = ((u(*)())(v19))(v20, v21, v22);
+ v23;
+ goto b7;
+b34: goto b7;
+b5: v4 = 1UL;
+ goto b6;
+}
+u zlalr_action(u vlc, u va, u vpn) {
+ u vs = 0;
+ u vb = 0;
+ u vd = 0;
+ u vn = 0;
+ u vc = 0;
+ u vj = 0;
+ u vch = 0;
+ u vx = 0;
+ u vprod = 0;
+ u valt = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ v13 = (u)zalloc;
+ v14 = *(u*)(vlc + 0UL);
+ v15 = 64UL;
+ v16 = ((u(*)())(v13))(v14, v15);
+ vs = v16;
+ v17 = (u)zmknode0;
+ v18 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v19 = 0UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ vn = v20;
+ v21 = (u)zmemcpy;
+ v22 = vs;
+ v23 = (u)"lalr_action_";
+ v24 = 12UL;
+ v25 = ((u(*)())(v21))(v22, v23, v24);
+ v25;
+ v26 = (u)zlalr_mkprod;
+ v27 = vlc;
+ v28 = ((u(*)())(v26))(v27);
+ vprod = v28;
+ *(u*)(vprod + 120UL) = *(u*)(va + 24UL);
+ *(u*)(vprod + 112UL) = vs;
+ v29 = (u)zint2str;
+ v30 = vs + 12UL * 1UL;
+ v31 = *(u*)(vprod + 32UL);
+ v32 = ((u(*)())(v29))(v30, v31);
+ v32;
+ *(u*)(vn + 56UL) = vs;
+ v33 = (u)zmknode0;
+ v34 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v35 = 0UL;
+ v36 = ((u(*)())(v33))(v34, v35);
+ vc = v36;
+ *(u*)(vc + 56UL) = (u)"ctx";
+ v37 = (u)zmknode0;
+ v38 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v39 = 0UL;
+ v40 = ((u(*)())(v37))(v38, v39);
+ vb = v40;
+ *(u*)(vb + 56UL) = (u)"lex";
+ v41 = (u)zmknode1;
+ v42 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v43 = 16UL;
+ v44 = vb;
+ v45 = ((u(*)())(v41))(v42, v43, v44);
+ vb = v45;
+ v46 = (u)zmknode;
+ v47 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v48 = 12UL;
+ v49 = vc;
+ v50 = vb;
+ v51 = ((u(*)())(v46))(v47, v48, v49, v50);
+ vb = v51;
+ v52 = (u)zmknode1;
+ v53 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v54 = 10UL;
+ v55 = vb;
+ v56 = ((u(*)())(v52))(v53, v54, v55);
+ vb = v56;
+ v57 = (u)zmknode;
+ v58 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v59 = 15UL;
+ v60 = vb;
+ v61 = 0UL;
+ v62 = ((u(*)())(v57))(v58, v59, v60, v61);
+ vb = v62;
+ v63 = (u)zmknode;
+ v64 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v65 = 13UL;
+ v66 = vn;
+ v67 = vb;
+ v68 = ((u(*)())(v63))(v64, v65, v66, v67);
+ vd = v68;
+ v69 = (u)zmknode;
+ v70 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
+ v71 = 11UL;
+ v72 = vd;
+ v73 = vpn;
+ v74 = ((u(*)())(v69))(v70, v71, v72, v73);
+ vn = v74;
+ v75 = (u)zdefun;
+ v76 = *(u*)(vlc + 8UL);
+ v77 = vn;
+ v78 = ((u(*)())(v75))(v76, v77);
+ v78;
+ v79 = (u)zlalr_mkalt;
+ v80 = vlc;
+ v81 = vprod;
+ v82 = ((u(*)())(v79))(v80, v81);
+ valt = v82;
+ v83 = (u)zlalr_alt_nonterminal;
+ v84 = vlc;
+ v85 = va;
+ v86 = vprod;
+ v87 = ((u(*)())(v83))(v84, v85, v86);
+ v87;
+ return 0UL;
+}
+u zlalr_action_100(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_101(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_102(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_103(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 21UL;
+ v5 = (u)zmknode;
+ v6 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v7 = 22UL;
+ v8 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v9 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ v4 = v10;
+ v11 = 0UL;
+ v12 = ((u(*)())(v1))(v2, v3, v4, v11);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v12;
+ return 0UL;
+}
+u zlalr_action_104(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 21UL;
+ v5 = (u)zmknode;
+ v6 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v7 = 22UL;
+ v8 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v9 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ v4 = v10;
+ v11 = *(u*)((*(u*)(vctx + 152UL) + 4UL * 8UL) + 0UL);
+ v12 = ((u(*)())(v1))(v2, v3, v4, v11);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v12;
+ return 0UL;
+}
+u zlalr_action_105(u vctx) {
+ u vn = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ v2 = (u)zmknode;
+ v3 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v4 = 21UL;
+ v6 = (u)zmknode;
+ v7 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v8 = 22UL;
+ v9 = 0UL;
+ v10 = *(u*)((*(u*)(vctx + 152UL) + 4UL * 8UL) + 0UL);
+ v11 = ((u(*)())(v6))(v7, v8, v9, v10);
+ v5 = v11;
+ v12 = vn;
+ v13 = ((u(*)())(v2))(v3, v4, v5, v12);
+ vn = v13;
+ v14 = (u)zmknode;
+ v15 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v16 = 21UL;
+ v18 = (u)zmknode;
+ v19 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v20 = 22UL;
+ v21 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v22 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v23 = ((u(*)())(v18))(v19, v20, v21, v22);
+ v17 = v23;
+ v24 = vn;
+ v25 = ((u(*)())(v14))(v15, v16, v17, v24);
+ vn = v25;
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
+ return 0UL;
+}
+u zlalr_action_106(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 26UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_107(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 27UL;
+ v4 = 0UL;
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_108(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 28UL;
+ v4 = 0UL;
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_109(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 29UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_110(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 29UL;
+ v4 = 0UL;
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_111(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 30UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 3UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_112(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 31UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_113(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 32UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_114(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 33UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_115(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_116(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_117(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 5UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_118(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_119(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_120(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 52UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_121(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 51UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_122(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_123(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 41UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_124(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 42UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_125(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 39UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_126(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 40UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_127(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 43UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_128(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 44UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_129(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_130(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 45UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_131(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 46UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_132(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 54UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_133(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 55UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_134(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_135(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 47UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_136(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 59UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_137(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 60UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_138(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 53UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_139(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_140(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 48UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_141(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 49UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_142(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_143(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 35UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_144(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 36UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_145(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 57UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_146(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 58UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_147(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 56UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_148(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 50UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_149(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_150(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 6UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_151(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 6UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_152(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_153(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 38UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_154(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 7UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_155(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 9UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_156(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 37UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_157(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_158(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_159(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_160(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_161(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 34UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_162(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 4UL;
+ v4 = 0UL;
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_163(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_164(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_165(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 62UL;
+ v4 = 0UL;
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_166(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_167(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_168(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 63UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_169(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 64UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_170(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 65UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_171(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_172(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 66UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_173(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_174(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 67UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_175(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_176(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 68UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_177(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 69UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_178(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_179(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 70UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_180(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_181(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_182(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 71UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_183(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_184(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 72UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_185(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 72UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_186(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 73UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_187(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 74UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_188(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 74UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_189(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 75UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_54(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_55(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 14UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_56(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_57(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_58(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_59(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_60(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_61(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_62(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_63(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 24UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_64(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 24UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_65(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 25UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_66(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 25UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_67(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 25UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_68(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 23UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_69(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 19UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_70(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 20UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_71(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_72(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 17UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 3UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_73(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 18UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 3UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_74(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_75(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ v1 = (u)zmkident;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = (u)"byte";
+ v4 = ((u(*)())(v1))(v2, v3);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v4;
+ return 0UL;
+}
+u zlalr_action_76(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ v1 = (u)zmkident;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = (u)"int";
+ v4 = ((u(*)())(v1))(v2, v3);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v4;
+ return 0UL;
+}
+u zlalr_action_77(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ v1 = (u)zmkident;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = (u)"void";
+ v4 = ((u(*)())(v1))(v2, v3);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v4;
+ return 0UL;
+}
+u zlalr_action_78(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_79(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 16UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
}
-u zirfind_block(u vic, u vname, u vmake) {
+u zlalr_action_80(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_81(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 12UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_82(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 10UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_83(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 10UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = 0UL;
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_84(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_85(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_86(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
+ return 0UL;
+}
+u zlalr_action_87(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 15UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 3UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_88(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 13UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 2UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_89(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_90(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v1 = (u)zmknode;
+ v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v3 = 11UL;
+ v4 = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ v5 = *(u*)((*(u*)(vctx + 152UL) + 1UL * 8UL) + 0UL);
+ v6 = ((u(*)())(v1))(v2, v3, v4, v5);
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ return 0UL;
+}
+u zlalr_action_91(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_92(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_93(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_94(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_95(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_96(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_97(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_98(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_action_99(u vctx) {
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)((*(u*)(vctx + 152UL) + 0UL * 8UL) + 0UL);
+ return 0UL;
+}
+u zlalr_add_first(u vlc, u vout, u vsym) {
+ u vp = 0;
u vlink = 0;
- u vl = 0;
+ u vd = 0;
u vdir = 0;
- u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -32462,110 +30357,452 @@ u zirfind_block(u vic, u vname, u vmake) {
u v19 = 0;
u v20 = 0;
u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- vlink = vic + 112UL;
-b1: vl = *(u*)vlink;
- if (!vl) goto b7;
- v6 = 0UL;
-b8: if (!v6) goto b5;
- if (!vmake) goto b23;
- v15 = 0UL;
-b24: if (!v15) goto b21;
- v16 = (u)zcdie;
- v17 = *(u*)(vic + 0UL);
- v18 = (u)"no such label";
- v19 = ((u(*)())v16)(v17, v18);
- v19;
-b19: v20 = (u)zalloc;
- v21 = *(u*)(vic + 16UL);
- v22 = 32UL;
- v23 = ((u(*)())v20)(v21, v22);
- vl = v23;
- *(u*)(vl + 0UL) = vname;
- *(u*)(vl + 8UL) = 0UL;
- *(u*)(vl + 16UL) = 0UL;
- v24 = (u)zmkirblock;
- v25 = vic;
- v26 = ((u(*)())v24)(v25);
- *(u*)(vl + 24UL) = v26;
- *(u*)vlink = vl;
- return *(u*)(vl + 24UL);
-b21: goto b19;
-b23: v15 = 1UL;
- goto b24;
-b5: v7 = (u)zstrcmp;
- v8 = vname;
- v9 = *(u*)(vl + 0UL);
- v10 = ((u(*)())v7)(v8, v9);
- vdir = v10;
- if (vdir != 0UL) goto b12;
- if (!vmake) goto b15;
- v11 = (u)zcdie;
- v12 = *(u*)(vic + 0UL);
- v13 = (u)"duplicate label";
- v14 = ((u(*)())v11)(v12, v13);
- v14;
-b13: return *(u*)(vl + 24UL);
-b15: goto b13;
-b12: if ((s)vdir >= (s)0UL) goto b18;
- vlink = vl + 8UL;
+ vp = 0UL;
+ vlink = vout;
+b1: vd = *(u*)(vlink);
+ if (!(vd)) goto b7;
+ v7 = 0UL;
+b8: if (!(v7)) goto b5;
+ v12 = (u)zalloc;
+ v13 = *(u*)(vlc + 0UL);
+ v14 = 64UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ vd = v15;
+ *(u*)(vd + 32UL) = *(u*)(vsym + 32UL);
+ *(u*)(vd + 40UL) = *(u*)(vsym + 40UL);
+ *(u*)(vd + 48UL) = *(u*)(vsym + 48UL);
+ v16 = (u)zrb_link;
+ v17 = vout;
+ v18 = vlink;
+ v19 = vp;
+ v20 = vd + 0UL;
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ v21;
+ return 1UL;
+b5: v8 = (u)zlalr_pointcmp;
+ v9 = vsym;
+ v10 = vd;
+ v11 = ((u(*)())(v8))(v9, v10);
+ vdir = v11;
+ if ((s)(vdir) >= (s)0UL) goto b12;
+ vlink = (vd + 0UL) + 16UL;
+ vp = vd + 0UL;
b10: goto b1;
-b18: vlink = vl + 16UL;
+b12: if ((s)(vdir) <= (s)0UL) goto b14;
+ vlink = (vd + 0UL) + 24UL;
+ vp = vd + 0UL;
goto b10;
-b7: v6 = 1UL;
+b14: return 0UL;
+b7: v7 = 1UL;
goto b8;
}
-u zirfind_var(u vic, u vname) {
+u zlalr_addlook(u vlc, u vout, u vsym) {
+ u vp = 0;
u vlink = 0;
- u vv = 0;
+ u vd = 0;
u vdir = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ vp = 0UL;
+ vlink = vout;
+b1: vd = *(u*)(vlink);
+ if (!(vd)) goto b7;
+ v7 = 0UL;
+b8: if (!(v7)) goto b5;
+ v12 = (u)zalloc;
+ v13 = *(u*)(vlc + 0UL);
+ v14 = 64UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ vd = v15;
+ *(u*)(vd + 32UL) = *(u*)(vsym + 32UL);
+ *(u*)(vd + 40UL) = *(u*)(vsym + 40UL);
+ *(u*)(vd + 48UL) = *(u*)(vsym + 48UL);
+ v16 = (u)zrb_link;
+ v17 = vout;
+ v18 = vlink;
+ v19 = vp;
+ v20 = vd + 0UL;
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ v21;
+ return 1UL;
+b5: v8 = (u)zlalr_pointcmp;
+ v9 = vsym;
+ v10 = vd;
+ v11 = ((u(*)())(v8))(v9, v10);
+ vdir = v11;
+ if ((s)(vdir) >= (s)0UL) goto b12;
+ vlink = (vd + 0UL) + 16UL;
+ vp = vd + 0UL;
+b10: goto b1;
+b12: if ((s)(vdir) <= (s)0UL) goto b14;
+ vlink = (vd + 0UL) + 24UL;
+ vp = vd + 0UL;
+ goto b10;
+b14: return 0UL;
+b7: v7 = 1UL;
+ goto b8;
+}
+u zlalr_alt(u vlc, u va, u vpn) {
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+b1: if (!(vpn)) goto b7;
+ v3 = 0UL;
+b8: if (!(v3)) goto b5;
+ return 0UL;
+b5: v4 = (u)zlalr_primary;
+ v5 = vlc;
+ v6 = va;
+ v7 = *(u*)(vpn + 8UL);
+ v8 = ((u(*)())(v4))(v5, v6, v7);
+ v8;
+ vpn = *(u*)(vpn + 16UL);
+ goto b1;
+b7: v3 = 1UL;
+ goto b8;
+}
+u zlalr_alt_nonterminal(u vlc, u va, u vs) {
+ u vuse[10] = {0};
+ u vi = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
- vlink = vic + 120UL;
-b1: vv = *(u*)vlink;
- if (!vv) goto b7;
- v5 = 0UL;
-b8: if (!v5) goto b5;
- return vlink;
-b5: v6 = (u)zstrcmp;
- v7 = vname;
- v8 = *(u*)(vv + 0UL);
- v9 = ((u(*)())v6)(v7, v8);
- vdir = v9;
- if (vdir != 0UL) goto b12;
- return vlink;
-b12: if ((s)vdir >= (s)0UL) goto b14;
- vlink = vv + 8UL;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ v5 = (u)zensure_arr;
+ v6 = *(u*)(vlc + 0UL);
+ v7 = va + 16UL;
+ v8 = va + 32UL;
+ v9 = *(u*)(va + 24UL) + 1UL;
+ v10 = 64UL;
+ v11 = ((u(*)())(v5))(v6, v7, v8, v9, v10);
+ v11;
+ vi = *(u*)(va + 24UL);
+ *(u*)(va + 24UL) = *(u*)(va + 24UL) + 1UL;
+ *(u*)((*(u*)(va + 16UL) + vi * 64UL) + 32UL) = 0UL;
+ *(u*)((*(u*)(va + 16UL) + vi * 64UL) + 40UL) = *(u*)(vs + 32UL);
+ *(u*)((*(u*)(va + 16UL) + vi * 64UL) + 48UL) = *(u*)(vs + 40UL);
+ *(u*)((u)vuse + 40UL) = *(u*)(va + 0UL);
+ *(u*)((u)vuse + 48UL) = 0UL;
+ *(u*)((u)vuse + 56UL) = 0UL;
+ v12 = (u)zlalr_assoc;
+ v13 = vlc;
+ v14 = *(u*)(vs + 48UL);
+ v15 = (u)vuse;
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ v16;
+ return 0UL;
+}
+u zlalr_alt_terminal(u vlc, u va, u vname, u vid) {
+ u vi = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ v5 = (u)zensure_arr;
+ v6 = *(u*)(vlc + 0UL);
+ v7 = va + 16UL;
+ v8 = va + 32UL;
+ v9 = *(u*)(va + 24UL) + 1UL;
+ v10 = 64UL;
+ v11 = ((u(*)())(v5))(v6, v7, v8, v9, v10);
+ v11;
+ vi = *(u*)(va + 24UL);
+ *(u*)(va + 24UL) = *(u*)(va + 24UL) + 1UL;
+ *(u*)((*(u*)(va + 16UL) + vi * 64UL) + 32UL) = 1UL;
+ *(u*)((*(u*)(va + 16UL) + vi * 64UL) + 40UL) = vid;
+ *(u*)((*(u*)(va + 16UL) + vi * 64UL) + 48UL) = vname;
+ if ((s)(vid) >= (s)0UL) goto b4;
+ v12 = (u)zdie;
+ v13 = (u)"invalid terminal";
+ v14 = ((u(*)())(v12))(v13);
+ v14;
+b2: if ((s)(*(u*)(vlc + 80UL)) > (s)(vid)) goto b8;
+ *(u*)(vlc + 80UL) = vid + 1UL;
+b6: return 0UL;
+b8: goto b6;
+b4: goto b2;
+}
+u zlalr_assoc(u vlc, u vi, u vt) {
+ u vp = 0;
+ u vlink = 0;
+ u vd = 0;
+ u vdir = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ vp = 0UL;
+ vlink = vi + 40UL;
+b1: vd = *(u*)(vlink);
+ if (!(vd)) goto b7;
+ v7 = 0UL;
+b8: if (!(v7)) goto b5;
+ v12 = (u)zalloc;
+ v13 = *(u*)(vlc + 0UL);
+ v14 = 72UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ vd = v15;
+ *(u*)(vd + 40UL) = *(u*)(vt + 40UL);
+ *(u*)(vd + 48UL) = *(u*)(vt + 48UL);
+ *(u*)(vd + 56UL) = *(u*)(vt + 56UL);
+ v16 = (u)zrb_link;
+ v17 = vi + 40UL;
+ v18 = vlink;
+ v19 = vp;
+ v20 = vd + 0UL;
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ v21;
+ return vd;
+b5: v8 = (u)zlalr_itemcmp;
+ v9 = vt;
+ v10 = vd;
+ v11 = ((u(*)())(v8))(v9, v10);
+ vdir = v11;
+ if ((s)(vdir) >= (s)0UL) goto b12;
+ vlink = (vd + 0UL) + 16UL;
+ vp = vd + 0UL;
b10: goto b1;
-b14: vlink = vv + 16UL;
+b12: if ((s)(vdir) <= (s)0UL) goto b14;
+ vlink = (vd + 0UL) + 24UL;
+ vp = vd + 0UL;
goto b10;
-b7: v5 = 1UL;
+b14: return 0UL;
+b7: v7 = 1UL;
goto b8;
}
-u zirfunc_backlink(u vic) {
- u vib = 0;
+u zlalr_codegen(u vlc) {
+ u vi = 0;
+ u vt = 0;
+ u vnext_tree = 0;
+ u vlen = 0;
+ u vsym = 0;
+ u vaction = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ *(u*)(vlc + 96UL) = (8UL * *(u*)(vlc + 88UL)) * *(u*)(vlc + 80UL);
+ v7 = (u)zalloc;
+ v8 = *(u*)(vlc + 0UL);
+ v9 = *(u*)(vlc + 96UL);
+ v10 = ((u(*)())(v7))(v8, v9);
+ *(u*)(vlc + 104UL) = v10;
+ *(u*)(vlc + 112UL) = (8UL * *(u*)(vlc + 88UL)) * *(u*)(vlc + 40UL);
+ v11 = (u)zalloc;
+ v12 = *(u*)(vlc + 0UL);
+ v13 = *(u*)(vlc + 112UL);
+ v14 = ((u(*)())(v11))(v12, v13);
+ *(u*)(vlc + 120UL) = v14;
+ v15 = (u)zrb_first;
+ v16 = *(u*)(vlc + 56UL);
+ v17 = ((u(*)())(v15))(v16);
+ vi = v17;
+b4: if (!(vi)) goto b10;
+ v18 = 0UL;
+b11: if (!(v18)) goto b8;
+ if (!(*(u*)(*(u*)(*(u*)(vlc + 32UL) + 1UL * 8UL) + 56UL))) goto b72;
+ *(u*)(*(u*)(vlc + 104UL) + 0UL * 8UL) = 97UL;
+b70: return 0UL;
+b72: goto b70;
+b8: v19 = (u)zrb_first;
+ v20 = *(u*)(vi + 64UL);
+ v21 = ((u(*)())(v19))(v20);
+ vsym = v21;
+b13: if (!(vsym)) goto b19;
+ v22 = 0UL;
+b20: if (!(v22)) goto b17;
+ v26 = (u)zrb_first;
+ v27 = *(u*)(vi + 40UL);
+ v28 = ((u(*)())(v26))(v27);
+ vt = v28;
+ vnext_tree = *(u*)(vi + 48UL);
+b26: if (!(vt)) goto b32;
+ v29 = 0UL;
+b33: if (!(v29)) goto b30;
+ if (!(vnext_tree)) goto b36;
+ v30 = (u)zrb_first;
+ v31 = vnext_tree;
+ v32 = ((u(*)())(v30))(v31);
+ vt = v32;
+ vnext_tree = 0UL;
+ goto b26;
+b36: v55 = (u)zrb_next;
+ v56 = vi + 0UL;
+ v57 = ((u(*)())(v55))(v56);
+ vi = v57;
+ goto b4;
+b30: vlen = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)(vt + 40UL) * 8UL) + 88UL) + *(u*)(vt + 48UL) * 8UL) + 24UL);
+ if (*(u*)(vt + 56UL) == vlen) goto b40;
+ v33 = (u)zrb_next;
+ v34 = vt + 0UL;
+ v35 = ((u(*)())(v33))(v34);
+ vt = v35;
+ goto b26;
+b40: v36 = (u)zrb_first;
+ v37 = *(u*)(vt + 64UL);
+ v38 = ((u(*)())(v36))(v37);
+ vsym = v38;
+b43: if (!(vsym)) goto b49;
+ v39 = 0UL;
+b50: if (!(v39)) goto b47;
+ v52 = (u)zrb_next;
+ v53 = vt + 0UL;
+ v54 = ((u(*)())(v52))(v53);
+ vt = v54;
+ goto b26;
+b47: if (!(*(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL))) goto b53;
+ v40 = (u)zfputc;
+ v41 = 0UL;
+ v42 = *(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL);
+ v43 = ((u(*)())(v40))(v41, v42);
+ v43;
+ v44 = (u)zdie;
+ v45 = (u)"/reduce conflict";
+ v46 = ((u(*)())(v44))(v45);
+ v46;
+b51: if (*(u*)(vt + 40UL) != 0UL) goto b64;
+ if (*(u*)(vt + 48UL) != 0UL) goto b64;
+ v48 = 1UL;
+b66: if (!(v48)) goto b60;
+ if (*(u*)(vt + 56UL) != 1UL) goto b60;
+ v47 = 1UL;
+b62: if (!(v47)) goto b58;
+ *(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL) = 97UL;
+b56: v49 = (u)zrb_next;
+ v50 = vsym + 0UL;
+ v51 = ((u(*)())(v49))(v50);
+ vsym = v51;
+ goto b43;
+b58: *(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL) = ((vlen << 32UL) + (*(u*)(vt + 40UL) << 8UL)) + 114UL;
+ goto b56;
+b60: v47 = 0UL;
+ goto b62;
+b64: v48 = 0UL;
+ goto b66;
+b53: goto b51;
+b49: v39 = 1UL;
+ goto b50;
+b32: v29 = 1UL;
+ goto b33;
+b17: if (!(*(u*)(vsym + 32UL))) goto b23;
+ *(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL) = (*(u*)(*(u*)(vsym + 56UL) + 32UL) << 8UL) + 115UL;
+b21: v23 = (u)zrb_next;
+ v24 = vsym + 0UL;
+ v25 = ((u(*)())(v23))(v24);
+ vsym = v25;
+ goto b13;
+b23: *(u*)(*(u*)(vlc + 120UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 40UL) + *(u*)(vsym + 40UL)) * 8UL) = *(u*)(*(u*)(vsym + 56UL) + 32UL);
+ goto b21;
+b19: v22 = 1UL;
+ goto b20;
+b10: v18 = 1UL;
+ goto b11;
+}
+u zlalr_compile_get_call_table(u vlc) {
+ u varg1_type = 0;
+ u vargs_type = 0;
+ u vret_type = 0;
+ u vfunc_type = 0;
+ u vic = 0;
+ u vo = 0;
+ u va = 0;
+ u vb = 0;
+ u vthis = 0;
+ u vnext = 0;
+ u vprod = 0;
+ u vident = 0;
u vi = 0;
- u vj = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
+ u vv = 0;
+ u vpos_table = 0;
+ u vpos_table_len = 0;
u v17 = 0;
u v18 = 0;
u v19 = 0;
@@ -32582,237 +30819,317 @@ u zirfunc_backlink(u vic) {
u v30 = 0;
u v31 = 0;
u v32 = 0;
- if (!*(u*)(vic + 88UL)) goto b3;
- v4 = (u)zfree;
- v5 = *(u*)(vic + 16UL);
- v6 = *(u*)(vic + 88UL);
- v7 = ((u(*)())v4)(v5, v6);
- v7;
-b1: *(u*)(vic + 88UL) = 0UL;
- *(u*)(vic + 96UL) = 0UL;
- vi = 0UL;
-b5: if (vi != *(u*)(vic + 72UL)) goto b9;
- v12 = (u)zirblock_backlink;
- v13 = vic;
- v14 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v15 = 0UL;
- v16 = ((u(*)())v12)(v13, v14, v15);
- v16;
- v17 = (u)zalloc;
- v18 = *(u*)(vic + 16UL);
- v19 = *(u*)(vic + 96UL) * 8UL;
- v20 = ((u(*)())v17)(v18, v19);
- *(u*)(vic + 88UL) = v20;
- vi = 0UL;
- vj = 0UL;
-b16: if (vi != *(u*)(vic + 72UL)) goto b20;
- v25 = (u)zirblock_backlink;
- v26 = vic;
- v27 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v28 = 0UL;
- v29 = ((u(*)())v25)(v26, v27, v28);
- v29;
- v30 = (u)zirreset;
- v31 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v32 = ((u(*)())v30)(v31);
- v32;
- return 0UL;
-b20: vib = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
- if (!*(u*)(vib + 48UL)) goto b23;
- v21 = (u)zalloc;
- v22 = *(u*)(vic + 16UL);
- v23 = *(u*)(vib + 48UL) * 8UL;
- v24 = ((u(*)())v21)(v22, v23);
- *(u*)(vib + 40UL) = v24;
-b21: *(u*)(vib + 48UL) = 0UL;
- *(u*)(vib + 80UL) = 0UL;
- vi = vi + 1UL;
- goto b16;
-b23: goto b21;
-b9: vib = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
- if (!*(u*)(vib + 40UL)) goto b12;
- v8 = (u)zfree;
- v9 = *(u*)(vic + 16UL);
- v10 = *(u*)(vib + 40UL);
- v11 = ((u(*)())v8)(v9, v10);
- v11;
-b10: *(u*)(vib + 40UL) = 0UL;
- *(u*)(vib + 48UL) = 0UL;
- vi = vi + 1UL;
- goto b5;
-b12: goto b10;
-b3: goto b1;
-}
-u zirfunc_basic_value(u vic) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- v1 = (u)zirblock_basic_value;
- v2 = vic;
- v3 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v4 = ((u(*)())v1)(v2, v3);
- v4;
- v5 = (u)zirreset;
- v6 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v7 = ((u(*)())v5)(v6);
- v7;
- return 0UL;
-}
-u zirfunc_dead(u vic) {
- u vi = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- v2 = (u)zirblock_dead_var;
- v3 = vic;
- v4 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v5 = ((u(*)())v2)(v3, v4);
- v5;
- v6 = (u)zirreset;
- v7 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v8 = ((u(*)())v6)(v7);
- v8;
- vi = 0UL;
-b3: if (vi != *(u*)(vic + 136UL)) goto b7;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ v17 = (u)zmktype0;
+ v18 = *(u*)(vlc + 8UL);
+ v19 = 1UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ varg1_type = v20;
+ v21 = (u)zmktype1;
+ v22 = *(u*)(vlc + 8UL);
+ v23 = 4UL;
+ v24 = varg1_type;
+ v25 = ((u(*)())(v21))(v22, v23, v24);
+ varg1_type = v25;
+ v26 = (u)zmktype1;
+ v27 = *(u*)(vlc + 8UL);
+ v28 = 5UL;
+ v29 = varg1_type;
+ v30 = ((u(*)())(v26))(v27, v28, v29);
+ vargs_type = v30;
+ v31 = (u)zmktype0;
+ v32 = *(u*)(vlc + 8UL);
+ v33 = 1UL;
+ v34 = ((u(*)())(v31))(v32, v33);
+ vret_type = v34;
+ v35 = (u)zmktype2;
+ v36 = *(u*)(vlc + 8UL);
+ v37 = 6UL;
+ v38 = vret_type;
+ v39 = vargs_type;
+ v40 = ((u(*)())(v35))(v36, v37, v38, v39);
+ vfunc_type = v40;
+ v41 = (u)zmktype1;
+ v42 = *(u*)(vlc + 8UL);
+ v43 = 4UL;
+ v44 = vfunc_type;
+ v45 = ((u(*)())(v41))(v42, v43, v44);
+ varg1_type = v45;
+ v46 = (u)zmktype1;
+ v47 = *(u*)(vlc + 8UL);
+ v48 = 5UL;
+ v49 = varg1_type;
+ v50 = ((u(*)())(v46))(v47, v48, v49);
+ vargs_type = v50;
+ v51 = (u)zmktype0;
+ v52 = *(u*)(vlc + 8UL);
+ v53 = 1UL;
+ v54 = ((u(*)())(v51))(v52, v53);
+ vret_type = v54;
+ v55 = (u)zmktype2;
+ v56 = *(u*)(vlc + 8UL);
+ v57 = 6UL;
+ v58 = vret_type;
+ v59 = vargs_type;
+ v60 = ((u(*)())(v55))(v56, v57, v58, v59);
+ vfunc_type = v60;
+ v61 = (u)zmkirfunc;
+ v62 = *(u*)(vlc + 8UL);
+ v63 = (u)"get_call_table";
+ v64 = ((u(*)())(v61))(v62, v63);
+ vic = v64;
+ v65 = (u)ziraddarg;
+ v66 = vic;
+ v67 = (u)"t";
+ v68 = varg1_type;
+ v69 = ((u(*)())(v65))(v66, v67, v68);
+ vv = v69;
+ vpos_table_len = *(u*)(vlc + 40UL) * 8UL;
+ v70 = (u)zalloc;
+ v71 = *(u*)(vlc + 0UL);
+ v72 = vpos_table_len;
+ v73 = ((u(*)())(v70))(v71, v72);
+ vpos_table = v73;
vi = 0UL;
-b18: if (vi != *(u*)(vic + 72UL)) goto b22;
- return 0UL;
-b22: v11 = (u)zirblock_dead_expr;
- v12 = vic;
- v13 = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
- v14 = ((u(*)())v11)(v12, v13);
- v14;
- vi = vi + 1UL;
- goto b18;
-b7: if ((s)vi < (s)*(u*)(vic + 152UL)) goto b12;
- if (!*(u*)(*(u*)(*(u*)(vic + 128UL) + vi * 8UL) + 64UL)) goto b16;
- v10 = 0UL;
-b17: if (!v10) goto b12;
- v9 = 1UL;
-b14: if (!v9) goto b10;
- *(u*)(*(u*)(*(u*)(vic + 128UL) + vi * 8UL) + 48UL) = 1UL;
-b8: *(u*)(*(u*)(*(u*)(vic + 128UL) + vi * 8UL) + 64UL) = 0UL;
- vi = vi + 1UL;
- goto b3;
-b10: goto b8;
-b12: v9 = 0UL;
- goto b14;
-b16: v10 = 1UL;
- goto b17;
-}
-u zirfunc_flow(u vic) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- v1 = (u)zirblock_flow2;
- v2 = vic;
- v3 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v4 = ((u(*)())v1)(v2, v3);
- v4;
- v5 = (u)zirblock_flow3;
- v6 = vic;
- v7 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v8 = ((u(*)())v5)(v6, v7);
- v8;
- v9 = (u)zirreset;
- v10 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v11 = ((u(*)())v9)(v10);
- v11;
- return 0UL;
-}
-u zirfunc_fold(u vic) {
- u vi = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- v2 = (u)zirblock_fold;
- v3 = vic;
- v4 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v5 = ((u(*)())v2)(v3, v4);
- v5;
- v6 = (u)zirreset;
- v7 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v8 = ((u(*)())v6)(v7);
- v8;
- return 0UL;
-}
-u zirjump(u vic, u vto, u vnext) {
- u vcur = 0;
- u vo = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- v5 = (u)zmkirop;
- v6 = vic;
- v7 = 28UL;
- v8 = 0UL;
- v9 = 0UL;
- v10 = ((u(*)())v5)(v6, v7, v8, v9);
- vo = v10;
- v11 = (u)ziraddop;
- v12 = vic;
- v13 = vo;
- v14 = ((u(*)())v11)(v12, v13);
- v14;
- vcur = *(u*)(vic + 104UL);
- if (!vcur) goto b5;
- if (!*(u*)(vcur + 32UL)) goto b8;
- v15 = (u)zcdie;
- v16 = *(u*)(vic + 0UL);
- v17 = (u)"block already done";
- v18 = ((u(*)())v15)(v16, v17);
- v18;
-b6: *(u*)(vcur + 32UL) = 1UL;
- *(u*)(vcur + 56UL) = vto;
-b3: *(u*)(vic + 104UL) = vnext;
+b13: if (vi != *(u*)(vlc + 40UL)) goto b17;
+ v110 = (u)zmkirconst;
+ v111 = vic;
+ v112 = 0UL;
+ v113 = ((u(*)())(v110))(v111, v112);
+ vo = v113;
+ v114 = (u)zirreturn;
+ v115 = vic;
+ v116 = vo;
+ v117 = ((u(*)())(v114))(v115, v116);
+ v117;
+ v118 = (u)zdefine_ir_func;
+ v119 = *(u*)(vlc + 8UL);
+ v120 = vic;
+ v121 = vfunc_type;
+ v122 = ((u(*)())(v118))(v119, v120, v121);
+ v122;
+ v123 = (u)zmktype0;
+ v124 = *(u*)(vlc + 8UL);
+ v125 = 2UL;
+ v126 = ((u(*)())(v123))(v124, v125);
+ vret_type = v126;
+ v127 = (u)zmktype1;
+ v128 = *(u*)(vlc + 8UL);
+ v129 = 4UL;
+ v130 = vret_type;
+ v131 = ((u(*)())(v127))(v128, v129, v130);
+ vret_type = v131;
+ v132 = (u)zmktype2;
+ v133 = *(u*)(vlc + 8UL);
+ v134 = 6UL;
+ v135 = vret_type;
+ v136 = 0UL;
+ v137 = ((u(*)())(v132))(v133, v134, v135, v136);
+ vfunc_type = v137;
+ v138 = (u)zmkirfunc;
+ v139 = *(u*)(vlc + 8UL);
+ v140 = (u)"get_pos_table";
+ v141 = ((u(*)())(v138))(v139, v140);
+ vic = v141;
+ v142 = (u)zmkirstr;
+ v143 = vic;
+ v144 = vpos_table;
+ v145 = vpos_table_len;
+ v146 = ((u(*)())(v142))(v143, v144, v145);
+ vo = v146;
+ v147 = (u)zirreturn;
+ v148 = vic;
+ v149 = vo;
+ v150 = ((u(*)())(v147))(v148, v149);
+ v150;
+ v151 = (u)zdefine_ir_func;
+ v152 = *(u*)(vlc + 8UL);
+ v153 = vic;
+ v154 = vfunc_type;
+ v155 = ((u(*)())(v151))(v152, v153, v154);
+ v155;
return 0UL;
-b8: goto b6;
-b5: goto b3;
+b17: vprod = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL);
+ *(u*)(vpos_table + vi * 8UL) = *(u*)(vprod + 120UL);
+ if (!(*(u*)(vprod + 112UL))) goto b20;
+ v74 = (u)zmkirop;
+ v75 = vic;
+ v76 = 0UL;
+ v77 = 0UL;
+ v78 = 0UL;
+ v79 = ((u(*)())(v74))(v75, v76, v77, v78);
+ va = v79;
+ *(u*)(va + 24UL) = *(u*)(vv + 32UL);
+ v80 = (u)zmkirconst;
+ v81 = vic;
+ v82 = 8UL * vi;
+ v83 = ((u(*)())(v80))(v81, v82);
+ vb = v83;
+ v84 = (u)zmkirop;
+ v85 = vic;
+ v86 = 11UL;
+ v87 = va;
+ v88 = vb;
+ v89 = ((u(*)())(v84))(v85, v86, v87, v88);
+ va = v89;
+ v90 = (u)zmkirop;
+ v91 = vic;
+ v92 = 5UL;
+ v93 = va;
+ v94 = 0UL;
+ v95 = ((u(*)())(v90))(v91, v92, v93, v94);
+ va = v95;
+ v96 = (u)zmkirfuncref;
+ v97 = vic;
+ v98 = *(u*)(vprod + 112UL);
+ v99 = ((u(*)())(v96))(v97, v98);
+ vb = v99;
+ v100 = (u)zmkirop;
+ v101 = vic;
+ v102 = 6UL;
+ v103 = va;
+ v104 = vb;
+ v105 = ((u(*)())(v100))(v101, v102, v103, v104);
+ vo = v105;
+ *(u*)(vo + 48UL) = *(u*)(varg1_type + 16UL);
+ v106 = (u)ziraddop;
+ v107 = vic;
+ v108 = vo;
+ v109 = ((u(*)())(v106))(v107, v108);
+ v109;
+b18: vi = vi + 1UL;
+ goto b13;
+b20: goto b18;
}
-u zirop_basic_value(u vic, u vvals, u vop) {
- u va = 0;
- u vb = 0;
- u vv = 0;
- u vret = 0;
- u vkind = 0;
- u vi = 0;
+u zlalr_compiler(u vc, u vpn, u verr) {
+ u v_lc[17] = {0};
+ u vlc = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -32828,504 +31145,154 @@ u zirop_basic_value(u vic, u vvals, u vop) {
u v21 = 0;
u v22 = 0;
u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- vkind = *(u*)(vop + 0UL);
- va = *(u*)(vop + 8UL);
- vb = *(u*)(vop + 16UL);
- if (vkind != 6UL) goto b3;
- if (*(u*)(va + 0UL) != 0UL) goto b6;
- v9 = (u)zirop_kill;
- v10 = vic;
- v11 = vvals;
- v12 = *(u*)(va + 24UL);
- v13 = ((u(*)())v9)(v10, v11, v12);
- v13;
- v14 = (u)zirop_basic_value;
- v15 = vic;
- v16 = vvals;
- v17 = vb;
- v18 = ((u(*)())v14)(v15, v16, v17);
- vb = v18;
- if ((s)*(u*)(va + 24UL) >= (s)0UL) goto b13;
- v19 = 1UL;
-b15: if (!v19) goto b11;
- v20 = (u)zdie;
- v21 = (u)"WTF";
- v22 = ((u(*)())v20)(v21);
- v22;
-b9: *(u*)(vvals + *(u*)(va + 24UL) * 8UL) = vb;
- v23 = (u)zirop_kill;
- v24 = vic;
- v25 = vvals;
- v26 = *(u*)(va + 24UL);
- v27 = ((u(*)())v23)(v24, v25, v26);
- v27;
- if (vb != *(u*)(vop + 16UL)) goto b21;
- return vop;
-b21: v28 = (u)zmkirop;
- v29 = vic;
- v30 = 6UL;
- v31 = va;
- v32 = vb;
- v33 = ((u(*)())v28)(v29, v30, v31, v32);
- vret = v33;
- v34 = (u)zircopyloc;
- v35 = vret;
- v36 = vop;
- v37 = ((u(*)())v34)(v35, v36);
- v37;
- *(u*)(vret + 48UL) = *(u*)(vop + 48UL);
- return vret;
-b11: goto b9;
-b13: if ((s)*(u*)(va + 24UL) < (s)*(u*)(vic + 136UL)) goto b16;
- v19 = 1UL;
- goto b15;
-b16: v19 = 0UL;
- goto b15;
-b6: if (*(u*)(va + 0UL) != 5UL) goto b25;
- vi = 0UL;
-b26: if (vi != *(u*)(vic + 136UL)) goto b30;
- return vop;
-b30: *(u*)(vvals + vi * 8UL) = 0UL;
- vi = vi + 1UL;
- goto b26;
-b25: v38 = (u)zdie;
- v39 = (u)"invalid store";
- v40 = ((u(*)())v38)(v39);
- v40;
- return 0UL;
-b3: if (vkind != 0UL) goto b33;
- vv = *(u*)(vvals + *(u*)(vop + 24UL) * 8UL);
- if (!vv) goto b38;
- v41 = 0UL;
-b39: if (!v41) goto b36;
- return vop;
-b36: return vv;
-b38: v41 = 1UL;
- goto b39;
-b33: if (vkind != 7UL) goto b42;
- return vop;
-b42: if (vkind != 8UL) goto b66;
- v52 = 1UL;
-b68: if (!v52) goto b62;
- v51 = 1UL;
-b64: if (!v51) goto b58;
- v50 = 1UL;
-b60: if (!v50) goto b54;
- v49 = 1UL;
-b56: if (!v49) goto b50;
- v48 = 1UL;
-b52: if (!v48) goto b46;
- v47 = 1UL;
-b48: if (!v47) goto b44;
- v53 = (u)zirop_basic_value;
- v54 = vic;
- v55 = vvals;
- v56 = va;
- v57 = ((u(*)())v53)(v54, v55, v56);
- va = v57;
- if (va != *(u*)(vop + 8UL)) goto b78;
- return vop;
-b78: v58 = (u)zmkirop;
- v59 = vic;
- v60 = vkind;
- v61 = va;
- v62 = 0UL;
- v63 = ((u(*)())v58)(v59, v60, v61, v62);
- vret = v63;
- v64 = (u)zircopyloc;
- v65 = vret;
- v66 = vop;
- v67 = ((u(*)())v64)(v65, v66);
- v67;
- *(u*)(vret + 48UL) = *(u*)(vop + 48UL);
- *(u*)(vret + 24UL) = *(u*)(vop + 24UL);
- return vret;
-b44: if (vkind != 1UL) goto b96;
- v71 = 1UL;
-b98: if (!v71) goto b92;
- v70 = 1UL;
-b94: if (!v70) goto b88;
- v69 = 1UL;
-b90: if (!v69) goto b84;
- v68 = 1UL;
-b86: if (!v68) goto b82;
- return vop;
-b82: if (vkind != 11UL) goto b162;
- v86 = 1UL;
-b164: if (!v86) goto b158;
- v85 = 1UL;
-b160: if (!v85) goto b154;
- v84 = 1UL;
-b156: if (!v84) goto b150;
- v83 = 1UL;
-b152: if (!v83) goto b146;
- v82 = 1UL;
-b148: if (!v82) goto b142;
- v81 = 1UL;
-b144: if (!v81) goto b138;
- v80 = 1UL;
-b140: if (!v80) goto b134;
- v79 = 1UL;
-b136: if (!v79) goto b130;
- v78 = 1UL;
-b132: if (!v78) goto b126;
- v77 = 1UL;
-b128: if (!v77) goto b122;
- v76 = 1UL;
-b124: if (!v76) goto b118;
- v75 = 1UL;
-b120: if (!v75) goto b114;
- v74 = 1UL;
-b116: if (!v74) goto b110;
- v73 = 1UL;
-b112: if (!v73) goto b106;
- v72 = 1UL;
-b108: if (!v72) goto b104;
- v87 = (u)zirop_basic_value;
- v88 = vic;
- v89 = vvals;
- v90 = va;
- v91 = ((u(*)())v87)(v88, v89, v90);
- va = v91;
- v92 = (u)zirop_basic_value;
- v93 = vic;
- v94 = vvals;
- v95 = vb;
- v96 = ((u(*)())v92)(v93, v94, v95);
- vb = v96;
- if (va != *(u*)(vop + 8UL)) goto b186;
- if (vb != *(u*)(vop + 16UL)) goto b186;
- v97 = 1UL;
-b188: if (!v97) goto b184;
- return vop;
-b184: v98 = (u)zmkirop;
- v99 = vic;
- v100 = vkind;
- v101 = va;
- v102 = vb;
- v103 = ((u(*)())v98)(v99, v100, v101, v102);
- vret = v103;
- v104 = (u)zircopyloc;
- v105 = vret;
- v106 = vop;
- v107 = ((u(*)())v104)(v105, v106);
- v107;
- *(u*)(vret + 48UL) = *(u*)(vop + 48UL);
- return vret;
-b186: v97 = 0UL;
- goto b188;
-b104: v108 = (u)zdie;
- v109 = (u)"invalid op";
- v110 = ((u(*)())v108)(v109);
- v110;
- return 0UL;
-b106: if (vkind != 26UL) goto b179;
- v72 = 1UL;
- goto b108;
-b179: v72 = 0UL;
- goto b108;
-b110: if (vkind != 25UL) goto b178;
- v73 = 1UL;
- goto b112;
-b178: v73 = 0UL;
- goto b112;
-b114: if (vkind != 24UL) goto b177;
- v74 = 1UL;
- goto b116;
-b177: v74 = 0UL;
- goto b116;
-b118: if (vkind != 23UL) goto b176;
- v75 = 1UL;
- goto b120;
-b176: v75 = 0UL;
- goto b120;
-b122: if (vkind != 22UL) goto b175;
- v76 = 1UL;
- goto b124;
-b175: v76 = 0UL;
- goto b124;
-b126: if (vkind != 21UL) goto b174;
- v77 = 1UL;
- goto b128;
-b174: v77 = 0UL;
- goto b128;
-b130: if (vkind != 20UL) goto b173;
- v78 = 1UL;
- goto b132;
-b173: v78 = 0UL;
- goto b132;
-b134: if (vkind != 19UL) goto b172;
- v79 = 1UL;
- goto b136;
-b172: v79 = 0UL;
- goto b136;
-b138: if (vkind != 18UL) goto b171;
- v80 = 1UL;
- goto b140;
-b171: v80 = 0UL;
- goto b140;
-b142: if (vkind != 17UL) goto b170;
- v81 = 1UL;
- goto b144;
-b170: v81 = 0UL;
- goto b144;
-b146: if (vkind != 16UL) goto b169;
- v82 = 1UL;
- goto b148;
-b169: v82 = 0UL;
- goto b148;
-b150: if (vkind != 15UL) goto b168;
- v83 = 1UL;
- goto b152;
-b168: v83 = 0UL;
- goto b152;
-b154: if (vkind != 14UL) goto b167;
- v84 = 1UL;
- goto b156;
-b167: v84 = 0UL;
- goto b156;
-b158: if (vkind != 13UL) goto b166;
- v85 = 1UL;
- goto b160;
-b166: v85 = 0UL;
- goto b160;
-b162: if (vkind != 12UL) goto b165;
- v86 = 1UL;
- goto b164;
-b165: v86 = 0UL;
- goto b164;
-b84: if (vkind != 28UL) goto b102;
- v68 = 1UL;
- goto b86;
-b102: v68 = 0UL;
- goto b86;
-b88: if (vkind != 4UL) goto b101;
- v69 = 1UL;
- goto b90;
-b101: v69 = 0UL;
- goto b90;
-b92: if (vkind != 3UL) goto b100;
- v70 = 1UL;
- goto b94;
-b100: v70 = 0UL;
- goto b94;
-b96: if (vkind != 2UL) goto b99;
- v71 = 1UL;
- goto b98;
-b99: v71 = 0UL;
- goto b98;
-b46: if (vkind != 30UL) goto b74;
- v47 = 1UL;
- goto b48;
-b74: v47 = 0UL;
- goto b48;
-b50: if (vkind != 29UL) goto b73;
- v48 = 1UL;
- goto b52;
-b73: v48 = 0UL;
- goto b52;
-b54: if (vkind != 27UL) goto b72;
- v49 = 1UL;
- goto b56;
-b72: v49 = 0UL;
- goto b56;
-b58: if (vkind != 10UL) goto b71;
- v50 = 1UL;
- goto b60;
-b71: v50 = 0UL;
- goto b60;
-b62: if (vkind != 9UL) goto b70;
- v51 = 1UL;
- goto b64;
-b70: v51 = 0UL;
- goto b64;
-b66: if (vkind != 5UL) goto b69;
- v52 = 1UL;
- goto b68;
-b69: v52 = 0UL;
- goto b68;
-}
-u zirop_kill(u vic, u vvals, u vn) {
- u vi = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
-b1: if (vi != *(u*)(vic + 136UL)) goto b5;
+ vlc = (u)v_lc;
+ *(u*)(vlc + 0UL) = *(u*)(vc + 0UL);
+ *(u*)(vlc + 8UL) = vc;
+ *(u*)(vlc + 16UL) = verr;
+ v5 = (u)zlalr_rules;
+ v6 = vlc;
+ v7 = vpn;
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+ v9 = (u)zlalr_items;
+ v10 = vlc;
+ v11 = ((u(*)())(v9))(v10);
+ v11;
+ v12 = (u)zlalr_first;
+ v13 = vlc;
+ v14 = ((u(*)())(v12))(v13);
+ v14;
+ v15 = (u)zlalr_lookahead;
+ v16 = vlc;
+ v17 = ((u(*)())(v15))(v16);
+ v17;
+ v18 = (u)zlalr_codegen;
+ v19 = vlc;
+ v20 = ((u(*)())(v18))(v19);
+ v20;
+ v21 = (u)zlalr_output;
+ v22 = vlc;
+ v23 = ((u(*)())(v21))(v22);
+ v23;
return 0UL;
-b5: v4 = (u)zirop_occurs;
- v5 = *(u*)(vvals + vi * 8UL);
- v6 = vn;
- v7 = ((u(*)())v4)(v5, v6);
- if (!v7) goto b8;
- *(u*)(vvals + vi * 8UL) = 0UL;
-b6: vi = vi + 1UL;
- goto b1;
-b8: goto b6;
}
-u zirop_occurs(u vop, u vn) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
+u zlalr_finditem(u vlc, u vitemset, u vitem) {
+ u vp = 0;
+ u vlink = 0;
+ u vd = 0;
+ u vdir = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
- if (!vop) goto b5;
- v2 = 0UL;
-b6: if (!v2) goto b3;
- return 0UL;
-b3: if (*(u*)(vop + 0UL) != 0UL) goto b9;
- if (*(u*)(vop + 24UL) != vn) goto b12;
- return 1UL;
-b12: return 0UL;
-b9: v3 = (u)zirop_occurs;
- v4 = *(u*)(vop + 8UL);
- v5 = vn;
- v6 = ((u(*)())v3)(v4, v5);
- if (!v6) goto b15;
- return 1UL;
-b15: v7 = (u)zirop_occurs;
- v8 = *(u*)(vop + 16UL);
- v9 = vn;
- v10 = ((u(*)())v7)(v8, v9);
- if (!v10) goto b19;
- return 1UL;
-b19: return 0UL;
-b5: v2 = 1UL;
- goto b6;
-}
-u zirreset(u vb) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- if (!vb) goto b5;
- v1 = 0UL;
-b6: if (!v1) goto b3;
- return 0UL;
-b3: if (!*(u*)(vb + 80UL)) goto b11;
- v2 = 0UL;
-b12: if (!v2) goto b9;
- return 0UL;
-b9: *(u*)(vb + 80UL) = 0UL;
- v3 = (u)zirreset;
- v4 = *(u*)(vb + 56UL);
- v5 = ((u(*)())v3)(v4);
- v5;
- v6 = (u)zirreset;
- v7 = *(u*)(vb + 64UL);
- v8 = ((u(*)())v6)(v7);
- v8;
- return 0UL;
-b11: v2 = 1UL;
- goto b12;
-b5: v1 = 1UL;
- goto b6;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ vd = *(u*)(vitemset + 40UL);
+b1: if (!(vd)) goto b7;
+ v7 = 0UL;
+b8: if (!(v7)) goto b5;
+ vp = 0UL;
+ vlink = vitemset + 48UL;
+b15: vd = *(u*)(vlink);
+ if (!(vd)) goto b21;
+ v12 = 0UL;
+b22: if (!(v12)) goto b19;
+ v17 = (u)zalloc;
+ v18 = *(u*)(vlc + 0UL);
+ v19 = 72UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ vd = v20;
+ *(u*)(vd + 40UL) = *(u*)(vitem + 40UL);
+ *(u*)(vd + 48UL) = *(u*)(vitem + 48UL);
+ *(u*)(vd + 56UL) = *(u*)(vitem + 56UL);
+ v21 = (u)zrb_link;
+ v22 = vitemset + 48UL;
+ v23 = vlink;
+ v24 = vp;
+ v25 = vd + 0UL;
+ v26 = ((u(*)())(v21))(v22, v23, v24, v25);
+ v26;
+ return vd;
+b19: v13 = (u)zlalr_itemcmp;
+ v14 = vitem;
+ v15 = vd;
+ v16 = ((u(*)())(v13))(v14, v15);
+ vdir = v16;
+ if ((s)(vdir) >= (s)0UL) goto b26;
+ vlink = (vd + 0UL) + 16UL;
+ vp = vd + 0UL;
+b24: goto b15;
+b26: if ((s)(vdir) <= (s)0UL) goto b28;
+ vlink = (vd + 0UL) + 24UL;
+ vp = vd + 0UL;
+ goto b24;
+b28: return vd;
+b21: v12 = 1UL;
+ goto b22;
+b5: v8 = (u)zlalr_itemcmp;
+ v9 = vitem;
+ v10 = vd;
+ v11 = ((u(*)())(v8))(v9, v10);
+ vdir = v11;
+ if ((s)(vdir) >= (s)0UL) goto b12;
+ vd = *(u*)((vd + 0UL) + 16UL);
+b10: goto b1;
+b12: if ((s)(vdir) <= (s)0UL) goto b14;
+ vd = *(u*)((vd + 0UL) + 24UL);
+ goto b10;
+b14: return vd;
+b7: v7 = 1UL;
+ goto b8;
}
-u zirreturn(u vic, u vvalue) {
- u vcur = 0;
- u vo = 0;
- u v4 = 0;
- u v5 = 0;
+u zlalr_findout(u vlc, u vw, u vsym) {
+ u vd = 0;
+ u vr[10] = {0};
+ u vdir = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
- u v10 = 0;
+ vd = *(u*)(*(u*)(vw + 80UL) + 64UL);
+b1: v6 = (u)zlalr_pointcmp;
+ v7 = vsym;
+ v8 = vd;
+ v9 = ((u(*)())(v6))(v7, v8);
+ vdir = v9;
+ if ((s)(vdir) >= (s)0UL) goto b6;
+ vd = *(u*)((vd + 0UL) + 16UL);
+b4: goto b1;
+b6: if ((s)(vdir) <= (s)0UL) goto b8;
+ vd = *(u*)((vd + 0UL) + 24UL);
+ goto b4;
+b8: *(u*)(vw + 80UL) = *(u*)(vd + 56UL);
+ *(u*)((vw + 8UL) + 56UL) = *(u*)((vw + 8UL) + 56UL) + 1UL;
+ return 0UL;
+}
+u zlalr_first(u vlc) {
+ u vuse = 0;
+ u vp = 0;
+ u vqueue = 0;
+ u vprod = 0;
+ u valt = 0;
+ u vsym = 0;
+ u vref = 0;
+ u vi = 0;
+ u vj = 0;
+ u vk = 0;
u v11 = 0;
u v12 = 0;
u v13 = 0;
@@ -33333,41 +31300,154 @@ u zirreturn(u vic, u vvalue) {
u v15 = 0;
u v16 = 0;
u v17 = 0;
- v4 = (u)zmkirop;
- v5 = vic;
- v6 = 30UL;
- v7 = vvalue;
- v8 = 0UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vo = v9;
- v10 = (u)ziraddop;
- v11 = vic;
- v12 = vo;
- v13 = ((u(*)())v10)(v11, v12);
- v13;
- vcur = *(u*)(vic + 104UL);
- if (!vcur) goto b5;
- if (!*(u*)(vcur + 32UL)) goto b8;
- v14 = (u)zcdie;
- v15 = *(u*)(vic + 0UL);
- v16 = (u)"block already done";
- v17 = ((u(*)())v14)(v15, v16);
- v17;
-b6: *(u*)(vcur + 32UL) = 1UL;
-b3: *(u*)(vic + 104UL) = 0UL;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ vi = 0UL;
+b1: if (vi != *(u*)(vlc + 40UL)) goto b5;
+b18: vp = vqueue;
+ if (!(vp)) goto b24;
+ v16 = 0UL;
+b25: if (!(v16)) goto b22;
return 0UL;
-b8: goto b6;
-b5: goto b3;
+b22: *(u*)(vp + 72UL) = 0UL;
+ vqueue = *(u*)(vp + 80UL);
+ v17 = (u)zrb_first;
+ v18 = *(u*)(*(u*)(vp + 48UL) + 40UL);
+ v19 = ((u(*)())(v17))(v18);
+ vuse = v19;
+b27: if (!(vuse)) goto b33;
+ v20 = 0UL;
+b34: if (!(v20)) goto b31;
+ goto b18;
+b31: vi = *(u*)(vuse + 40UL);
+ vprod = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL);
+ vj = 0UL;
+b35: if (vj != *(u*)(vprod + 96UL)) goto b39;
+ v36 = (u)zrb_next;
+ v37 = vuse + 0UL;
+ v38 = ((u(*)())(v36))(v37);
+ vuse = v38;
+ goto b27;
+b39: valt = *(u*)(*(u*)(vprod + 88UL) + vj * 8UL);
+ vk = 0UL;
+b40: if (vk != *(u*)(valt + 24UL)) goto b44;
+ if (!(*(u*)(vprod + 56UL))) goto b49;
+ v21 = 0UL;
+b50: if (!(v21)) goto b47;
+ *(u*)(vprod + 56UL) = 1UL;
+ if (!(*(u*)(vprod + 72UL))) goto b55;
+ v22 = 0UL;
+b56: if (!(v22)) goto b53;
+ *(u*)(vprod + 72UL) = 1UL;
+ *(u*)(vprod + 80UL) = vqueue;
+ vqueue = vprod;
+b51:b45:b41: vj = vj + 1UL;
+ goto b35;
+b53: goto b51;
+b55: v22 = 1UL;
+ goto b56;
+b47: goto b45;
+b49: v21 = 1UL;
+ goto b50;
+b44: vsym = *(u*)(valt + 16UL) + vk * 64UL;
+ if (!(*(u*)(vsym + 32UL))) goto b59;
+ v23 = (u)zlalr_add_first;
+ v24 = vlc;
+ v25 = vprod + 64UL;
+ v26 = vsym;
+ v27 = ((u(*)())(v23))(v24, v25, v26);
+ if (!(v27)) goto b62;
+ if (!(*(u*)(vprod + 72UL))) goto b68;
+ v28 = 0UL;
+b69: if (!(v28)) goto b66;
+ *(u*)(vprod + 72UL) = 1UL;
+ *(u*)(vprod + 80UL) = vqueue;
+ vqueue = vprod;
+b64:b60: goto b41;
+b66: goto b64;
+b68: v28 = 1UL;
+ goto b69;
+b62: goto b60;
+b59: vref = *(u*)(*(u*)(vlc + 32UL) + *(u*)(vsym + 40UL) * 8UL);
+ v29 = (u)zlalr_union_first;
+ v30 = vlc;
+ v31 = vprod + 64UL;
+ v32 = *(u*)(vref + 64UL);
+ v33 = ((u(*)())(v29))(v30, v31, v32);
+ if (!(v33)) goto b72;
+ if (!(*(u*)(vprod + 72UL))) goto b78;
+ v34 = 0UL;
+b79: if (!(v34)) goto b76;
+ *(u*)(vprod + 72UL) = 1UL;
+ *(u*)(vprod + 80UL) = vqueue;
+ vqueue = vprod;
+b74:b70: if (!(*(u*)(vref + 56UL))) goto b84;
+ v35 = 0UL;
+b85: if (!(v35)) goto b82;
+ goto b41;
+b82: vk = vk + 1UL;
+ goto b40;
+b84: v35 = 1UL;
+ goto b85;
+b76: goto b74;
+b78: v34 = 1UL;
+ goto b79;
+b72: goto b70;
+b33: v20 = 1UL;
+ goto b34;
+b24: v16 = 1UL;
+ goto b25;
+b5: vj = 0UL;
+b6: if (vj != *(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 96UL)) goto b10;
+ *(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 72UL) = 1UL;
+ *(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 80UL) = vqueue;
+ vqueue = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL);
+ vi = vi + 1UL;
+ goto b1;
+b10: if (*(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 88UL) + vj * 8UL) + 24UL) != 0UL) goto b13;
+ *(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 56UL) = 1UL;
+ vj = vj + 1UL;
+ goto b6;
+b13: if (!(*(u*)((*(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 88UL) + vj * 8UL) + 16UL) + 0UL * 64UL) + 32UL))) goto b16;
+ v11 = (u)zlalr_addlook;
+ v12 = vlc;
+ v13 = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 64UL;
+ v14 = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 88UL) + vj * 8UL) + 16UL) + 0UL * 64UL;
+ v15 = ((u(*)())(v11))(v12, v13, v14);
+ v15;
+b14: vj = vj + 1UL;
+ goto b6;
+b16: goto b14;
}
-u ziruseop(u vic, u vib, u vop) {
- u vkind = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
+u zlalr_goto(u vlc, u vi) {
+ u vt = 0;
+ u va = 0;
+ u vseen = 0;
+ u vqueue = 0;
+ u vprod = 0;
+ u valt = 0;
+ u vsym = 0;
+ u vr[10] = {0};
+ u vj = 0;
u v11 = 0;
u v12 = 0;
u v13 = 0;
@@ -33411,253 +31491,172 @@ u ziruseop(u vic, u vib, u vop) {
u v51 = 0;
u v52 = 0;
u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- vkind = *(u*)(vop + 0UL);
- if (vkind != 0UL) goto b5;
- v4 = 1UL;
-b7: if (!v4) goto b3;
- *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(vop + 24UL) * 8UL) + 64UL) = 1UL;
-b1: return 0UL;
-b3: if (vkind != 6UL) goto b10;
- if (*(u*)(*(u*)(vop + 8UL) + 0UL) == 0UL) goto b13;
- v5 = (u)ziruseop;
- v6 = vic;
- v7 = vib;
- v8 = *(u*)(vop + 8UL);
- v9 = ((u(*)())v5)(v6, v7, v8);
- v9;
-b11: v10 = (u)ziruseop;
- v11 = vic;
- v12 = vib;
- v13 = *(u*)(vop + 16UL);
- v14 = ((u(*)())v10)(v11, v12, v13);
- v14;
- goto b1;
-b13: goto b11;
-b10: if (vkind != 11UL) goto b75;
- v29 = 1UL;
-b77: if (!v29) goto b71;
- v28 = 1UL;
-b73: if (!v28) goto b67;
- v27 = 1UL;
-b69: if (!v27) goto b63;
- v26 = 1UL;
-b65: if (!v26) goto b59;
- v25 = 1UL;
-b61: if (!v25) goto b55;
- v24 = 1UL;
-b57: if (!v24) goto b51;
- v23 = 1UL;
-b53: if (!v23) goto b47;
- v22 = 1UL;
-b49: if (!v22) goto b43;
- v21 = 1UL;
-b45: if (!v21) goto b39;
- v20 = 1UL;
-b41: if (!v20) goto b35;
- v19 = 1UL;
-b37: if (!v19) goto b31;
- v18 = 1UL;
-b33: if (!v18) goto b27;
- v17 = 1UL;
-b29: if (!v17) goto b23;
- v16 = 1UL;
-b25: if (!v16) goto b19;
- v15 = 1UL;
-b21: if (!v15) goto b17;
- v30 = (u)ziruseop;
- v31 = vic;
- v32 = vib;
- v33 = *(u*)(vop + 8UL);
- v34 = ((u(*)())v30)(v31, v32, v33);
- v34;
- v35 = (u)ziruseop;
- v36 = vic;
- v37 = vib;
- v38 = *(u*)(vop + 16UL);
- v39 = ((u(*)())v35)(v36, v37, v38);
- v39;
- goto b1;
-b17: if (vkind != 9UL) goto b118;
- v45 = 1UL;
-b120: if (!v45) goto b114;
- v44 = 1UL;
-b116: if (!v44) goto b110;
- v43 = 1UL;
-b112: if (!v43) goto b106;
- v42 = 1UL;
-b108: if (!v42) goto b102;
- v41 = 1UL;
-b104: if (!v41) goto b98;
- v40 = 1UL;
-b100: if (!v40) goto b96;
- v46 = (u)ziruseop;
- v47 = vic;
- v48 = vib;
- v49 = *(u*)(vop + 8UL);
- v50 = ((u(*)())v46)(v47, v48, v49);
- v50;
- goto b1;
-b96: if (vkind != 7UL) goto b129;
- if (*(u*)(*(u*)(vop + 8UL) + 0UL) == 0UL) goto b132;
- v51 = (u)ziruseop;
- v52 = vic;
- v53 = vib;
- v54 = *(u*)(vop + 8UL);
- v55 = ((u(*)())v51)(v52, v53, v54);
- v55;
-b130: goto b1;
-b132: goto b130;
-b129: if (vkind != 2UL) goto b145;
- v58 = 1UL;
-b147: if (!v58) goto b141;
- v57 = 1UL;
-b143: if (!v57) goto b137;
- v56 = 1UL;
-b139: if (!v56) goto b135;
- goto b1;
-b135: v59 = (u)zdie;
- v60 = (u)"invalid op";
- v61 = ((u(*)())v59)(v60);
- v61;
- goto b1;
-b137: if (vkind != 28UL) goto b150;
- v56 = 1UL;
- goto b139;
-b150: v56 = 0UL;
- goto b139;
-b141: if (vkind != 4UL) goto b149;
- v57 = 1UL;
- goto b143;
-b149: v57 = 0UL;
- goto b143;
-b145: if (vkind != 3UL) goto b148;
- v58 = 1UL;
- goto b147;
-b148: v58 = 0UL;
- goto b147;
-b98: if (vkind != 30UL) goto b126;
- v40 = 1UL;
- goto b100;
-b126: v40 = 0UL;
- goto b100;
-b102: if (vkind != 29UL) goto b125;
- v41 = 1UL;
- goto b104;
-b125: v41 = 0UL;
- goto b104;
-b106: if (vkind != 27UL) goto b124;
- v42 = 1UL;
- goto b108;
-b124: v42 = 0UL;
- goto b108;
-b110: if (vkind != 8UL) goto b123;
- v43 = 1UL;
- goto b112;
-b123: v43 = 0UL;
- goto b112;
-b114: if (vkind != 5UL) goto b122;
- v44 = 1UL;
- goto b116;
-b122: v44 = 0UL;
- goto b116;
-b118: if (vkind != 10UL) goto b121;
- v45 = 1UL;
- goto b120;
-b121: v45 = 0UL;
- goto b120;
-b19: if (vkind != 26UL) goto b92;
- v15 = 1UL;
- goto b21;
-b92: v15 = 0UL;
- goto b21;
-b23: if (vkind != 25UL) goto b91;
- v16 = 1UL;
- goto b25;
-b91: v16 = 0UL;
- goto b25;
-b27: if (vkind != 24UL) goto b90;
- v17 = 1UL;
- goto b29;
-b90: v17 = 0UL;
- goto b29;
-b31: if (vkind != 23UL) goto b89;
- v18 = 1UL;
- goto b33;
-b89: v18 = 0UL;
- goto b33;
-b35: if (vkind != 22UL) goto b88;
- v19 = 1UL;
- goto b37;
-b88: v19 = 0UL;
- goto b37;
-b39: if (vkind != 21UL) goto b87;
- v20 = 1UL;
- goto b41;
-b87: v20 = 0UL;
- goto b41;
-b43: if (vkind != 20UL) goto b86;
- v21 = 1UL;
- goto b45;
-b86: v21 = 0UL;
- goto b45;
-b47: if (vkind != 19UL) goto b85;
- v22 = 1UL;
- goto b49;
-b85: v22 = 0UL;
+ v11 = (u)zlalr_mkitemset;
+ v12 = vlc;
+ v13 = ((u(*)())(v11))(v12);
+ vseen = v13;
+ v14 = (u)zrb_first;
+ v15 = *(u*)(vi + 40UL);
+ v16 = ((u(*)())(v14))(v15);
+ vt = v16;
+b3: if (!(vt)) goto b9;
+ v17 = 0UL;
+b10: if (!(v17)) goto b7;
+b16: vt = vqueue;
+ if (!(vt)) goto b22;
+ v26 = 0UL;
+b23: if (!(v26)) goto b20;
+ v43 = (u)zrb_first;
+ v44 = *(u*)(vi + 64UL);
+ v45 = ((u(*)())(v43))(v44);
+ vsym = v45;
+b42: if (!(vsym)) goto b48;
+ v46 = 0UL;
+b49: if (!(v46)) goto b46;
+ return 0UL;
+b46: v47 = (u)zlalr_memoset;
+ v48 = vlc;
+ v49 = *(u*)(vsym + 56UL);
+ v50 = ((u(*)())(v47))(v48, v49);
+ *(u*)(vsym + 56UL) = v50;
+ v51 = (u)zrb_next;
+ v52 = vsym + 0UL;
+ v53 = ((u(*)())(v51))(v52);
+ vsym = v53;
+ goto b42;
+b48: v46 = 1UL;
goto b49;
-b51: if (vkind != 18UL) goto b84;
- v23 = 1UL;
- goto b53;
-b84: v23 = 0UL;
- goto b53;
-b55: if (vkind != 17UL) goto b83;
- v24 = 1UL;
- goto b57;
-b83: v24 = 0UL;
- goto b57;
-b59: if (vkind != 16UL) goto b82;
- v25 = 1UL;
- goto b61;
-b82: v25 = 0UL;
- goto b61;
-b63: if (vkind != 15UL) goto b81;
- v26 = 1UL;
- goto b65;
-b81: v26 = 0UL;
- goto b65;
-b67: if (vkind != 14UL) goto b80;
- v27 = 1UL;
- goto b69;
-b80: v27 = 0UL;
- goto b69;
-b71: if (vkind != 13UL) goto b79;
- v28 = 1UL;
- goto b73;
-b79: v28 = 0UL;
- goto b73;
-b75: if (vkind != 12UL) goto b78;
- v29 = 1UL;
- goto b77;
-b78: v29 = 0UL;
- goto b77;
-b5: if (vkind != 1UL) goto b8;
- v4 = 1UL;
- goto b7;
-b8: v4 = 0UL;
- goto b7;
+b20: vqueue = *(u*)(vt + 32UL);
+ valt = *(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)(vt + 40UL) * 8UL) + 88UL) + *(u*)(vt + 48UL) * 8UL);
+ if (*(u*)(vt + 56UL) != *(u*)(valt + 24UL)) goto b26;
+ goto b16;
+b26: vsym = *(u*)(valt + 16UL) + *(u*)(vt + 56UL) * 64UL;
+ *(u*)((u)vr + 40UL) = *(u*)(vt + 40UL);
+ *(u*)((u)vr + 48UL) = *(u*)(vt + 48UL);
+ *(u*)((u)vr + 56UL) = *(u*)(vt + 56UL) + 1UL;
+ v27 = (u)zlalr_assoc;
+ v28 = vlc;
+ v29 = vseen;
+ v30 = (u)vr;
+ v31 = ((u(*)())(v27))(v28, v29, v30);
+ v31;
+ v32 = (u)zlalr_linkout;
+ v33 = vlc;
+ v34 = vi + 64UL;
+ v35 = vsym;
+ v36 = (u)vr;
+ v37 = ((u(*)())(v32))(v33, v34, v35, v36);
+ v37;
+ if (!(*(u*)(vsym + 32UL))) goto b31;
+ goto b16;
+b31: vprod = *(u*)(*(u*)(vlc + 32UL) + *(u*)(vsym + 40UL) * 8UL);
+ vj = 0UL;
+b32: if (vj != *(u*)(vprod + 96UL)) goto b36;
+ goto b16;
+b36: *(u*)((u)vr + 40UL) = *(u*)(vsym + 40UL);
+ *(u*)((u)vr + 48UL) = vj;
+ *(u*)((u)vr + 56UL) = 0UL;
+ v38 = (u)zlalr_assoc;
+ v39 = vlc;
+ v40 = vseen;
+ v41 = (u)vr;
+ v42 = ((u(*)())(v38))(v39, v40, v41);
+ va = v42;
+ if (!(va)) goto b40;
+ *(u*)(va + 32UL) = vqueue;
+ vqueue = va;
+b38: vj = vj + 1UL;
+ goto b32;
+b40: goto b38;
+b22: v26 = 1UL;
+ goto b23;
+b7: v18 = (u)zlalr_assoc;
+ v19 = vlc;
+ v20 = vseen;
+ v21 = vt;
+ v22 = ((u(*)())(v18))(v19, v20, v21);
+ va = v22;
+ if (!(va)) goto b14;
+ *(u*)(va + 32UL) = vqueue;
+ vqueue = va;
+b12: v23 = (u)zrb_next;
+ v24 = vt + 0UL;
+ v25 = ((u(*)())(v23))(v24);
+ vt = v25;
+ goto b3;
+b14: goto b12;
+b9: v17 = 1UL;
+ goto b10;
+}
+u zlalr_itemcmp(u va, u vb) {
+ if ((s)(*(u*)(va + 40UL)) >= (s)(*(u*)(vb + 40UL))) goto b3;
+ return -1UL;
+b3: if ((s)(*(u*)(va + 40UL)) <= (s)(*(u*)(vb + 40UL))) goto b5;
+ return 1UL;
+b5: if ((s)(*(u*)(va + 48UL)) >= (s)(*(u*)(vb + 48UL))) goto b7;
+ return -1UL;
+b7: if ((s)(*(u*)(va + 48UL)) <= (s)(*(u*)(vb + 48UL))) goto b9;
+ return 1UL;
+b9: if ((s)(*(u*)(va + 56UL)) >= (s)(*(u*)(vb + 56UL))) goto b11;
+ return -1UL;
+b11: if ((s)(*(u*)(va + 56UL)) <= (s)(*(u*)(vb + 56UL))) goto b13;
+ return 1UL;
+b13: return 0UL;
+}
+u zlalr_items(u vlc) {
+ u vi = 0;
+ u vinit_state[10] = {0};
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ v3 = (u)zlalr_mkitemset;
+ v4 = vlc;
+ v5 = ((u(*)())(v3))(v4);
+ vi = v5;
+ v6 = (u)zlalr_assoc;
+ v7 = vlc;
+ v8 = vi;
+ v9 = (u)vinit_state;
+ v10 = ((u(*)())(v6))(v7, v8, v9);
+ v10;
+ v11 = (u)zlalr_memoset;
+ v12 = vlc;
+ v13 = vi;
+ v14 = ((u(*)())(v11))(v12, v13);
+ *(u*)(vlc + 64UL) = v14;
+b4: vi = *(u*)(vlc + 72UL);
+ if (!(vi)) goto b10;
+ v15 = 0UL;
+b11: if (!(v15)) goto b8;
+ return 0UL;
+b8: *(u*)(vlc + 72UL) = *(u*)(vi + 56UL);
+ v16 = (u)zlalr_goto;
+ v17 = vlc;
+ v18 = vi;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ goto b4;
+b10: v15 = 1UL;
+ goto b11;
}
-u zlabels_to_ir(u vic, u vn) {
- u vkind = 0;
- u vname = 0;
- u v4 = 0;
+u zlalr_itemsetcmp(u va, u vb) {
+ u vx = 0;
+ u vy = 0;
+ u vdir = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -33677,73 +31676,70 @@ u zlabels_to_ir(u vic, u vn) {
u v21 = 0;
u v22 = 0;
u v23 = 0;
- if (!vn) goto b5;
- v4 = 0UL;
-b6: if (!v4) goto b3;
+ u v24 = 0;
+ u v25 = 0;
+ v5 = (u)zrb_first;
+ v6 = *(u*)(va + 40UL);
+ v7 = ((u(*)())(v5))(v6);
+ vx = v7;
+ v8 = (u)zrb_first;
+ v9 = *(u*)(vb + 40UL);
+ v10 = ((u(*)())(v8))(v9);
+ vy = v10;
+b3: if (!(vx)) goto b13;
+ v12 = 0UL;
+b14: if (!(v12)) goto b9;
+ if (!(vy)) goto b16;
+ v13 = 0UL;
+b17: if (!(v13)) goto b9;
+ v11 = 1UL;
+b11: if (!(v11)) goto b7;
return 0UL;
-b3: *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vn + 24UL);
- *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vn + 32UL);
- *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vn + 40UL);
- vkind = *(u*)(vn + 0UL);
- if (vkind != 21UL) goto b9;
-b10: if (!vn) goto b16;
- v5 = 0UL;
-b17: if (!v5) goto b14;
-b7: return 0UL;
-b14: v6 = (u)zlabels_to_ir;
- v7 = vic;
- v8 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v9 = ((u(*)())v6)(v7, v8);
- v9;
- vn = *(u*)(vn + 16UL);
- goto b10;
-b16: v5 = 1UL;
+b7: if (!(vx)) goto b21;
+ v14 = 0UL;
+b22: if (!(v14)) goto b19;
+ return -1UL;
+b19: if (!(vy)) goto b26;
+ v15 = 0UL;
+b27: if (!(v15)) goto b24;
+ return 1UL;
+b24: v16 = (u)zlalr_itemcmp;
+ v17 = vx;
+ v18 = vy;
+ v19 = ((u(*)())(v16))(v17, v18);
+ vdir = v19;
+ if (vdir == 0UL) goto b31;
+ return vdir;
+b31: v20 = (u)zrb_next;
+ v21 = vx + 0UL;
+ v22 = ((u(*)())(v20))(v21);
+ vx = v22;
+ v23 = (u)zrb_next;
+ v24 = vy + 0UL;
+ v25 = ((u(*)())(v23))(v24);
+ vy = v25;
+ goto b3;
+b26: v15 = 1UL;
+ goto b27;
+b21: v14 = 1UL;
+ goto b22;
+b9: v11 = 0UL;
+ goto b11;
+b16: v13 = 1UL;
goto b17;
-b9: if (vkind != 5UL) goto b20;
-b21: if (!vn) goto b27;
- v10 = 0UL;
-b28: if (!v10) goto b25;
- goto b7;
-b25: v11 = (u)zlabels_to_ir;
- v12 = vic;
- v13 = *(u*)(vn + 8UL);
- v14 = ((u(*)())v11)(v12, v13);
- v14;
- vn = *(u*)(vn + 16UL);
- goto b21;
-b27: v10 = 1UL;
- goto b28;
-b20: if (vkind != 26UL) goto b31;
- v15 = (u)zlabels_to_ir;
- v16 = vic;
- v17 = *(u*)(vn + 8UL);
- v18 = ((u(*)())v15)(v16, v17);
- v18;
- goto b7;
-b31: if (vkind != 31UL) goto b34;
- vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v19 = (u)zirfind_block;
- v20 = vic;
- v21 = vname;
- v22 = 1UL;
- v23 = ((u(*)())v19)(v20, v21, v22);
- v23;
- goto b7;
-b34: goto b7;
-b5: v4 = 1UL;
- goto b6;
+b13: v12 = 1UL;
+ goto b14;
}
-u zlalr_action(u vlc, u va, u vpn) {
- u vs = 0;
- u vb = 0;
+u zlalr_linkout(u vlc, u vout, u vsym, u vt) {
+ u vp = 0;
+ u vlink = 0;
u vd = 0;
- u vn = 0;
- u vc = 0;
- u vj = 0;
- u vch = 0;
- u vx = 0;
- u vprod = 0;
- u valt = 0;
+ u vdir = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
u v13 = 0;
u v14 = 0;
u v15 = 0;
@@ -33767,6 +31763,97 @@ u zlalr_action(u vlc, u va, u vpn) {
u v33 = 0;
u v34 = 0;
u v35 = 0;
+ vp = 0UL;
+ vlink = vout;
+b1: vd = *(u*)(vlink);
+ if (!(vd)) goto b7;
+ v8 = 0UL;
+b8: if (!(v8)) goto b5;
+ v18 = (u)zalloc;
+ v19 = *(u*)(vlc + 0UL);
+ v20 = 64UL;
+ v21 = ((u(*)())(v18))(v19, v20);
+ vd = v21;
+ *(u*)(vd + 32UL) = *(u*)(vsym + 32UL);
+ *(u*)(vd + 40UL) = *(u*)(vsym + 40UL);
+ *(u*)(vd + 48UL) = *(u*)(vsym + 48UL);
+ v22 = (u)zlalr_mkitemset;
+ v23 = vlc;
+ v24 = ((u(*)())(v22))(v23);
+ *(u*)(vd + 56UL) = v24;
+ v25 = (u)zrb_link;
+ v26 = vout;
+ v27 = vlink;
+ v28 = vp;
+ v29 = vd + 0UL;
+ v30 = ((u(*)())(v25))(v26, v27, v28, v29);
+ v30;
+ v31 = (u)zlalr_assoc;
+ v32 = vlc;
+ v33 = *(u*)(vd + 56UL);
+ v34 = vt;
+ v35 = ((u(*)())(v31))(v32, v33, v34);
+ v35;
+ return 0UL;
+b5: v9 = (u)zlalr_pointcmp;
+ v10 = vsym;
+ v11 = vd;
+ v12 = ((u(*)())(v9))(v10, v11);
+ vdir = v12;
+ if ((s)(vdir) >= (s)0UL) goto b12;
+ vlink = (vd + 0UL) + 16UL;
+ vp = vd + 0UL;
+b10: goto b1;
+b12: if ((s)(vdir) <= (s)0UL) goto b14;
+ vlink = (vd + 0UL) + 24UL;
+ vp = vd + 0UL;
+ goto b10;
+b14: v13 = (u)zlalr_assoc;
+ v14 = vlc;
+ v15 = *(u*)(vd + 56UL);
+ v16 = vt;
+ v17 = ((u(*)())(v13))(v14, v15, v16);
+ v17;
+ return 0UL;
+b7: v8 = 1UL;
+ goto b8;
+}
+u zlalr_lookahead(u vlc) {
+ u vqueue = 0;
+ u vw = 0;
+ u vq = 0;
+ u vr[9] = {0};
+ u vsym = 0;
+ u vrest_sym = 0;
+ u valt = 0;
+ u vprod = 0;
+ u vrest_prod = 0;
+ u vi = 0;
+ u vj = 0;
+ u vk = 0;
+ u vepsilon = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
u v36 = 0;
u v37 = 0;
u v38 = 0;
@@ -33774,164 +31861,244 @@ u zlalr_action(u vlc, u va, u vpn) {
u v40 = 0;
u v41 = 0;
u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- v13 = (u)zalloc;
- v14 = *(u*)(vlc + 0UL);
- v15 = 64UL;
- v16 = ((u(*)())v13)(v14, v15);
- vs = v16;
- v17 = (u)zmknode0;
- v18 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v19 = 0UL;
- v20 = ((u(*)())v17)(v18, v19);
- vn = v20;
- v21 = (u)zmemcpy;
- v22 = vs;
- v23 = (u)"lalr_action_";
- v24 = 12UL;
- v25 = ((u(*)())v21)(v22, v23, v24);
- v25;
- v26 = (u)zlalr_mkprod;
- v27 = vlc;
- v28 = ((u(*)())v26)(v27);
- vprod = v28;
- *(u*)(vprod + 120UL) = *(u*)(va + 24UL);
- *(u*)(vprod + 112UL) = vs;
- v29 = (u)zint2str;
- v30 = vs + 12UL * 1UL;
- v31 = *(u*)(vprod + 32UL);
- v32 = ((u(*)())v29)(v30, v31);
- v32;
- *(u*)(vn + 56UL) = vs;
- v33 = (u)zmknode0;
- v34 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v35 = 0UL;
- v36 = ((u(*)())v33)(v34, v35);
- vc = v36;
- *(u*)(vc + 56UL) = (u)"ctx";
- v37 = (u)zmknode0;
- v38 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v39 = 0UL;
- v40 = ((u(*)())v37)(v38, v39);
- vb = v40;
- *(u*)(vb + 56UL) = (u)"lex";
- v41 = (u)zmknode1;
- v42 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v43 = 16UL;
- v44 = vb;
- v45 = ((u(*)())v41)(v42, v43, v44);
- vb = v45;
- v46 = (u)zmknode;
- v47 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v48 = 12UL;
- v49 = vc;
- v50 = vb;
- v51 = ((u(*)())v46)(v47, v48, v49, v50);
- vb = v51;
- v52 = (u)zmknode1;
- v53 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v54 = 10UL;
- v55 = vb;
- v56 = ((u(*)())v52)(v53, v54, v55);
- vb = v56;
- v57 = (u)zmknode;
- v58 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v59 = 15UL;
- v60 = vb;
- v61 = 0UL;
- v62 = ((u(*)())v57)(v58, v59, v60, v61);
- vb = v62;
- v63 = (u)zmknode;
- v64 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v65 = 13UL;
- v66 = vn;
- v67 = vb;
- v68 = ((u(*)())v63)(v64, v65, v66, v67);
- vd = v68;
- v69 = (u)zmknode;
- v70 = *(u*)(*(u*)(vlc + 8UL) + 16UL);
- v71 = 11UL;
- v72 = vd;
- v73 = vpn;
- v74 = ((u(*)())v69)(v70, v71, v72, v73);
- vn = v74;
- v75 = (u)zdefun;
- v76 = *(u*)(vlc + 8UL);
- v77 = vn;
- v78 = ((u(*)())v75)(v76, v77);
- v78;
- v79 = (u)zlalr_mkalt;
- v80 = vlc;
- v81 = vprod;
- v82 = ((u(*)())v79)(v80, v81);
- valt = v82;
- v83 = (u)zlalr_alt_nonterminal;
- v84 = vlc;
- v85 = va;
- v86 = vprod;
- v87 = ((u(*)())v83)(v84, v85, v86);
- v87;
- return 0UL;
-}
-u zlalr_action_100(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_101(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
+ *(u*)((u)vr + 32UL) = 1UL;
+ *(u*)((u)vr + 40UL) = *(u*)(vlc + 80UL);
+ *(u*)((u)vr + 48UL) = (u)"$";
+ *(u*)(vlc + 80UL) = *(u*)(vlc + 80UL) + 1UL;
+ v14 = (u)zalloc;
+ v15 = *(u*)(vlc + 0UL);
+ v16 = 104UL;
+ v17 = ((u(*)())(v14))(v15, v16);
+ vw = v17;
+ *(u*)((vw + 8UL) + 40UL) = 0UL;
+ *(u*)((vw + 8UL) + 48UL) = 0UL;
+ *(u*)((vw + 8UL) + 56UL) = 0UL;
+ *(u*)(vw + 80UL) = *(u*)(vlc + 64UL);
+ *(u*)(vw + 88UL) = vw + 96UL;
+ *(u*)(vw + 96UL) = (u)vr + 0UL;
+ vqueue = vw;
+b2: vw = vqueue;
+ if (!(vw)) goto b8;
+ v18 = 0UL;
+b9: if (!(v18)) goto b6;
return 0UL;
+b6: v20 = (u)zlalr_unionlook;
+ v21 = vlc;
+ v22 = vw;
+ v23 = ((u(*)())(v20))(v21, v22);
+ if (!(v23)) goto b14;
+ v19 = 0UL;
+b15: if (!(v19)) goto b12;
+ vqueue = *(u*)(vw + 0UL);
+ goto b2;
+b12: valt = *(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)((vw + 8UL) + 40UL) * 8UL) + 88UL) + *(u*)((vw + 8UL) + 48UL) * 8UL);
+ if (*(u*)((vw + 8UL) + 56UL) != *(u*)(valt + 24UL)) goto b19;
+ vqueue = *(u*)(vw + 0UL);
+ goto b2;
+b19: vi = *(u*)(vw + 80UL);
+ vsym = *(u*)(valt + 16UL) + *(u*)((vw + 8UL) + 56UL) * 64UL;
+ v24 = (u)zlalr_findout;
+ v25 = vlc;
+ v26 = vw;
+ v27 = vsym;
+ v28 = ((u(*)())(v24))(v25, v26, v27);
+ v28;
+ if (!(*(u*)(vsym + 32UL))) goto b23;
+ goto b2;
+b23: vprod = *(u*)(*(u*)(vlc + 32UL) + *(u*)(vsym + 40UL) * 8UL);
+ vepsilon = 1UL;
+ vj = 0UL;
+b24: if (vj != *(u*)(vprod + 96UL)) goto b28;
+ if (!(vepsilon)) goto b49;
+ v38 = 0UL;
+b50: if (!(v38)) goto b47;
+ goto b2;
+b47: vj = 0UL;
+b51: if (vj != *(u*)(vprod + 96UL)) goto b55;
+ goto b2;
+b55: valt = *(u*)(*(u*)(vprod + 88UL) + vj * 8UL);
+ v39 = (u)zalloc;
+ v40 = *(u*)(vlc + 0UL);
+ v41 = 104UL;
+ v42 = ((u(*)())(v39))(v40, v41);
+ vq = v42;
+ *(u*)((vq + 8UL) + 40UL) = *(u*)(vsym + 40UL);
+ *(u*)((vq + 8UL) + 48UL) = vj;
+ *(u*)((vq + 8UL) + 56UL) = 0UL;
+ *(u*)(vq + 80UL) = vi;
+ *(u*)(vq + 88UL) = *(u*)(vw + 88UL);
+ *(u*)(vq + 0UL) = vqueue;
+ vqueue = vq;
+ vj = vj + 1UL;
+ goto b51;
+b49: v38 = 1UL;
+ goto b50;
+b28: valt = *(u*)(*(u*)(vprod + 88UL) + vj * 8UL);
+ vk = *(u*)((vw + 8UL) + 56UL);
+b29: if (vk != *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)((vw + 8UL) + 40UL) * 8UL) + 88UL) + *(u*)((vw + 8UL) + 48UL) * 8UL) + 24UL)) goto b33;
+b30: vj = vj + 1UL;
+ goto b24;
+b33: vrest_sym = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)((vw + 8UL) + 40UL) * 8UL) + 88UL) + *(u*)((vw + 8UL) + 48UL) * 8UL) + 16UL) + vk * 64UL;
+ if (!(*(u*)(vrest_sym + 32UL))) goto b36;
+ v29 = (u)zalloc;
+ v30 = *(u*)(vlc + 0UL);
+ v31 = 104UL;
+ v32 = ((u(*)())(v29))(v30, v31);
+ vq = v32;
+ *(u*)((vq + 8UL) + 40UL) = *(u*)(vsym + 40UL);
+ *(u*)((vq + 8UL) + 48UL) = vj;
+ *(u*)((vq + 8UL) + 56UL) = 0UL;
+ *(u*)(vq + 80UL) = vi;
+ *(u*)(vq + 88UL) = vq + 96UL;
+ *(u*)(vq + 96UL) = vrest_sym + 0UL;
+ *(u*)(vq + 0UL) = vqueue;
+ vqueue = vq;
+ vepsilon = 0UL;
+ goto b30;
+b36: vrest_prod = *(u*)(*(u*)(vlc + 32UL) + *(u*)(vrest_sym + 40UL) * 8UL);
+ v33 = (u)zalloc;
+ v34 = *(u*)(vlc + 0UL);
+ v35 = 104UL;
+ v36 = ((u(*)())(v33))(v34, v35);
+ vq = v36;
+ *(u*)((vq + 8UL) + 40UL) = *(u*)(vsym + 40UL);
+ *(u*)((vq + 8UL) + 48UL) = vj;
+ *(u*)((vq + 8UL) + 56UL) = 0UL;
+ *(u*)(vq + 80UL) = vi;
+ *(u*)(vq + 88UL) = vrest_prod + 64UL;
+ *(u*)(vq + 0UL) = vqueue;
+ vqueue = vq;
+ if (!(*(u*)(vrest_prod + 56UL))) goto b43;
+ v37 = 0UL;
+b44: if (!(v37)) goto b41;
+ vepsilon = 0UL;
+ goto b30;
+b41: vk = vk + 1UL;
+ goto b29;
+b43: v37 = 1UL;
+ goto b44;
+b14: v19 = 1UL;
+ goto b15;
+b8: v18 = 1UL;
+ goto b9;
}
-u zlalr_action_102(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+u zlalr_lookup(u vlc, u vname, u vnew) {
+ u vp = 0;
+ u vlink = 0;
+ u vd = 0;
+ u vdir = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ vp = 0UL;
+ vlink = vlc + 24UL;
+b1: vd = *(u*)(vlink);
+ if (!(vd)) goto b7;
+ v7 = 0UL;
+b8: if (!(v7)) goto b5;
+b2: if (!(vnew)) goto b19;
+ v12 = 0UL;
+b20: if (!(v12)) goto b17;
+ return vd;
+b17: if (!(vd)) goto b23;
+ v13 = (u)zdie;
+ v14 = (u)"duplicate rule";
+ v15 = ((u(*)())(v13))(v14);
+ v15;
+b21: *(u*)(vnew + 40UL) = vname;
+ v16 = (u)zrb_link;
+ v17 = vlc + 24UL;
+ v18 = vlink;
+ v19 = vp;
+ v20 = vnew + 0UL;
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ v21;
+ return vnew;
+b23: goto b21;
+b19: v12 = 1UL;
+ goto b20;
+b5: v8 = (u)zstrcmp;
+ v9 = *(u*)(vd + 40UL);
+ v10 = vname;
+ v11 = ((u(*)())(v8))(v9, v10);
+ vdir = v11;
+ if (vdir != 0UL) goto b12;
+ goto b2;
+b12: if ((s)(vdir) >= (s)0UL) goto b14;
+ vlink = (vd + 0UL) + 16UL;
+ vp = vd + 0UL;
+b10: goto b1;
+b14: vlink = (vd + 0UL) + 24UL;
+ vp = vd + 0UL;
+ goto b10;
+b7: v7 = 1UL;
+ goto b8;
}
-u zlalr_action_103(u vctx) {
- u v1 = 0;
- u v2 = 0;
+u zlalr_memoset(u vlc, u vi) {
+ u vp = 0;
+ u vlink = 0;
+ u vd = 0;
+ u vdir = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ vp = 0UL;
+ vlink = vlc + 56UL;
+b1: vd = *(u*)(vlink);
+ if (!(vd)) goto b7;
+ v6 = 0UL;
+b8: if (!(v6)) goto b5;
+ v11 = (u)zrb_link;
+ v12 = vlc + 56UL;
+ v13 = vlink;
+ v14 = vp;
+ v15 = vi + 0UL;
+ v16 = ((u(*)())(v11))(v12, v13, v14, v15);
+ v16;
+ *(u*)(vi + 56UL) = *(u*)(vlc + 72UL);
+ *(u*)(vi + 32UL) = *(u*)(vlc + 88UL);
+ *(u*)(vlc + 88UL) = *(u*)(vlc + 88UL) + 1UL;
+ *(u*)(vlc + 72UL) = vi;
+ return vi;
+b5: v7 = (u)zlalr_itemsetcmp;
+ v8 = vi;
+ v9 = vd;
+ v10 = ((u(*)())(v7))(v8, v9);
+ vdir = v10;
+ if ((s)(vdir) >= (s)0UL) goto b12;
+ vlink = (vd + 0UL) + 16UL;
+ vp = vd + 0UL;
+b10: goto b1;
+b12: if ((s)(vdir) <= (s)0UL) goto b14;
+ vlink = (vd + 0UL) + 24UL;
+ vp = vd + 0UL;
+ goto b10;
+b14: return vd;
+b7: v6 = 1UL;
+ goto b8;
+}
+u zlalr_mkalt(u vlc, u vp) {
+ u va = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
@@ -33942,23 +32109,41 @@ u zlalr_action_103(u vctx) {
u v10 = 0;
u v11 = 0;
u v12 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 21UL;
- v5 = (u)zmknode;
- v6 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v7 = 22UL;
- v8 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v9 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v10 = ((u(*)())v5)(v6, v7, v8, v9);
- v4 = v10;
- v11 = 0UL;
- v12 = ((u(*)())v1)(v2, v3, v4, v11);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v12;
- return 0UL;
+ u v13 = 0;
+ v3 = (u)zalloc;
+ v4 = *(u*)(vlc + 0UL);
+ v5 = 40UL;
+ v6 = ((u(*)())(v3))(v4, v5);
+ va = v6;
+ *(u*)(va + 8UL) = *(u*)(vp + 96UL);
+ *(u*)(va + 0UL) = *(u*)(vp + 32UL);
+ v7 = (u)zensure_arr;
+ v8 = *(u*)(vlc + 0UL);
+ v9 = vp + 88UL;
+ v10 = vp + 104UL;
+ v11 = *(u*)(vp + 96UL) + 1UL;
+ v12 = 8UL;
+ v13 = ((u(*)())(v7))(v8, v9, v10, v11, v12);
+ v13;
+ *(u*)(*(u*)(vp + 88UL) + *(u*)(vp + 96UL) * 8UL) = va;
+ *(u*)(vp + 96UL) = *(u*)(vp + 96UL) + 1UL;
+ return va;
}
-u zlalr_action_104(u vctx) {
- u v1 = 0;
+u zlalr_mkitemset(u vlc) {
+ u vi = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ v2 = (u)zalloc;
+ v3 = *(u*)(vlc + 0UL);
+ v4 = 80UL;
+ v5 = ((u(*)())(v2))(v3, v4);
+ vi = v5;
+ return vi;
+}
+u zlalr_mkprod(u vlc) {
+ u vp = 0;
u v2 = 0;
u v3 = 0;
u v4 = 0;
@@ -33970,26 +32155,36 @@ u zlalr_action_104(u vctx) {
u v10 = 0;
u v11 = 0;
u v12 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 21UL;
- v5 = (u)zmknode;
- v6 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v7 = 22UL;
- v8 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v9 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v10 = ((u(*)())v5)(v6, v7, v8, v9);
- v4 = v10;
- v11 = *(u*)(*(u*)(vctx + 152UL) + 4UL * 8UL + 0UL);
- v12 = ((u(*)())v1)(v2, v3, v4, v11);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v12;
- return 0UL;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ v2 = (u)zensure_arr;
+ v3 = *(u*)(vlc + 0UL);
+ v4 = vlc + 32UL;
+ v5 = vlc + 48UL;
+ v6 = *(u*)(vlc + 40UL) + 1UL;
+ v7 = 8UL;
+ v8 = ((u(*)())(v2))(v3, v4, v5, v6, v7);
+ v8;
+ v9 = (u)zalloc;
+ v10 = *(u*)(vlc + 0UL);
+ v11 = 128UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ vp = v12;
+ *(u*)(vp + 32UL) = *(u*)(vlc + 40UL);
+ v13 = (u)zlalr_mkitemset;
+ v14 = vlc;
+ v15 = ((u(*)())(v13))(v14);
+ *(u*)(vp + 48UL) = v15;
+ *(u*)(*(u*)(vlc + 32UL) + *(u*)(vlc + 40UL) * 8UL) = vp;
+ *(u*)(vlc + 40UL) = *(u*)(vlc + 40UL) + 1UL;
+ return vp;
}
-u zlalr_action_105(u vctx) {
- u vn = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
+u zlalr_output(u vlc) {
+ u vic = 0;
+ u vo = 0;
+ u vret_type = 0;
+ u vfunc_type = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -34011,1496 +32206,1095 @@ u zlalr_action_105(u vctx) {
u v23 = 0;
u v24 = 0;
u v25 = 0;
- v2 = (u)zmknode;
- v3 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v4 = 21UL;
- v6 = (u)zmknode;
- v7 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v8 = 22UL;
- v9 = 0UL;
- v10 = *(u*)(*(u*)(vctx + 152UL) + 4UL * 8UL + 0UL);
- v11 = ((u(*)())v6)(v7, v8, v9, v10);
- v5 = v11;
- v12 = vn;
- v13 = ((u(*)())v2)(v3, v4, v5, v12);
- vn = v13;
- v14 = (u)zmknode;
- v15 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v16 = 21UL;
- v18 = (u)zmknode;
- v19 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v20 = 22UL;
- v21 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v22 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v23 = ((u(*)())v18)(v19, v20, v21, v22);
- v17 = v23;
- v24 = vn;
- v25 = ((u(*)())v14)(v15, v16, v17, v24);
- vn = v25;
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
- return 0UL;
-}
-u zlalr_action_106(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 26UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_107(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 27UL;
- v4 = 0UL;
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_108(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 28UL;
- v4 = 0UL;
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_109(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 29UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_110(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 29UL;
- v4 = 0UL;
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_111(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 30UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 3UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_112(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 31UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_113(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 32UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_114(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 33UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_115(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_116(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
-}
-u zlalr_action_117(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 5UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_118(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
-}
-u zlalr_action_119(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_120(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 52UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_121(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 51UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_122(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_123(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 41UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_124(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 42UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_125(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 39UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_126(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 40UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_127(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 43UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_128(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 44UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_129(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_130(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 45UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ v5 = (u)zmktype0;
+ v6 = *(u*)(vlc + 8UL);
+ v7 = 2UL;
+ v8 = ((u(*)())(v5))(v6, v7);
+ vret_type = v8;
+ v9 = (u)zmktype1;
+ v10 = *(u*)(vlc + 8UL);
+ v11 = 4UL;
+ v12 = vret_type;
+ v13 = ((u(*)())(v9))(v10, v11, v12);
+ vret_type = v13;
+ v14 = (u)zmktype2;
+ v15 = *(u*)(vlc + 8UL);
+ v16 = 6UL;
+ v17 = vret_type;
+ v18 = 0UL;
+ v19 = ((u(*)())(v14))(v15, v16, v17, v18);
+ vfunc_type = v19;
+ v20 = (u)zmkirfunc;
+ v21 = *(u*)(vlc + 8UL);
+ v22 = (u)"get_act_table";
+ v23 = ((u(*)())(v20))(v21, v22);
+ vic = v23;
+ v24 = (u)zmkirstr;
+ v25 = vic;
+ v26 = *(u*)(vlc + 104UL);
+ v27 = *(u*)(vlc + 96UL);
+ v28 = ((u(*)())(v24))(v25, v26, v27);
+ vo = v28;
+ v29 = (u)zirreturn;
+ v30 = vic;
+ v31 = vo;
+ v32 = ((u(*)())(v29))(v30, v31);
+ v32;
+ v33 = (u)zdefine_ir_func;
+ v34 = *(u*)(vlc + 8UL);
+ v35 = vic;
+ v36 = vfunc_type;
+ v37 = ((u(*)())(v33))(v34, v35, v36);
+ v37;
+ v38 = (u)zmkirfunc;
+ v39 = *(u*)(vlc + 8UL);
+ v40 = (u)"get_goto_table";
+ v41 = ((u(*)())(v38))(v39, v40);
+ vic = v41;
+ v42 = (u)zmkirstr;
+ v43 = vic;
+ v44 = *(u*)(vlc + 120UL);
+ v45 = *(u*)(vlc + 112UL);
+ v46 = ((u(*)())(v42))(v43, v44, v45);
+ vo = v46;
+ v47 = (u)zirreturn;
+ v48 = vic;
+ v49 = vo;
+ v50 = ((u(*)())(v47))(v48, v49);
+ v50;
+ v51 = (u)zdefine_ir_func;
+ v52 = *(u*)(vlc + 8UL);
+ v53 = vic;
+ v54 = vfunc_type;
+ v55 = ((u(*)())(v51))(v52, v53, v54);
+ v55;
+ v56 = (u)zmktype0;
+ v57 = *(u*)(vlc + 8UL);
+ v58 = 2UL;
+ v59 = ((u(*)())(v56))(v57, v58);
+ vret_type = v59;
+ v60 = (u)zmktype2;
+ v61 = *(u*)(vlc + 8UL);
+ v62 = 6UL;
+ v63 = vret_type;
+ v64 = 0UL;
+ v65 = ((u(*)())(v60))(v61, v62, v63, v64);
+ vfunc_type = v65;
+ v66 = (u)zmkirfunc;
+ v67 = *(u*)(vlc + 8UL);
+ v68 = (u)"get_prod_len";
+ v69 = ((u(*)())(v66))(v67, v68);
+ vic = v69;
+ v70 = (u)zmkirconst;
+ v71 = vic;
+ v72 = *(u*)(vlc + 40UL);
+ v73 = ((u(*)())(v70))(v71, v72);
+ vo = v73;
+ v74 = (u)zirreturn;
+ v75 = vic;
+ v76 = vo;
+ v77 = ((u(*)())(v74))(v75, v76);
+ v77;
+ v78 = (u)zdefine_ir_func;
+ v79 = *(u*)(vlc + 8UL);
+ v80 = vic;
+ v81 = vfunc_type;
+ v82 = ((u(*)())(v78))(v79, v80, v81);
+ v82;
+ v83 = (u)zmkirfunc;
+ v84 = *(u*)(vlc + 8UL);
+ v85 = (u)"get_term_len";
+ v86 = ((u(*)())(v83))(v84, v85);
+ vic = v86;
+ v87 = (u)zmkirconst;
+ v88 = vic;
+ v89 = *(u*)(vlc + 80UL);
+ v90 = ((u(*)())(v87))(v88, v89);
+ vo = v90;
+ v91 = (u)zirreturn;
+ v92 = vic;
+ v93 = vo;
+ v94 = ((u(*)())(v91))(v92, v93);
+ v94;
+ v95 = (u)zdefine_ir_func;
+ v96 = *(u*)(vlc + 8UL);
+ v97 = vic;
+ v98 = vfunc_type;
+ v99 = ((u(*)())(v95))(v96, v97, v98);
+ v99;
+ v100 = (u)zlalr_compile_get_call_table;
+ v101 = vlc;
+ v102 = ((u(*)())(v100))(v101);
+ v102;
return 0UL;
}
-u zlalr_action_131(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
+u zlalr_pattern(u vlc, u vp, u vpn) {
+ u va = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 46UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+b1: if (!(vpn)) goto b7;
+ v4 = 0UL;
+b8: if (!(v4)) goto b5;
return 0UL;
+b5: v5 = (u)zlalr_mkalt;
+ v6 = vlc;
+ v7 = vp;
+ v8 = ((u(*)())(v5))(v6, v7);
+ va = v8;
+ v9 = (u)zlalr_alt;
+ v10 = vlc;
+ v11 = va;
+ v12 = *(u*)(vpn + 8UL);
+ v13 = ((u(*)())(v9))(v10, v11, v12);
+ v13;
+ vpn = *(u*)(vpn + 16UL);
+ goto b1;
+b7: v4 = 1UL;
+ goto b8;
}
-u zlalr_action_132(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 54UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+u zlalr_pointcmp(u va, u vb) {
+ if ((s)(*(u*)(va + 32UL)) >= (s)(*(u*)(vb + 32UL))) goto b3;
+ return -1UL;
+b3: if ((s)(*(u*)(va + 32UL)) <= (s)(*(u*)(vb + 32UL))) goto b5;
+ return 1UL;
+b5: if ((s)(*(u*)(va + 40UL)) >= (s)(*(u*)(vb + 40UL))) goto b7;
+ return -1UL;
+b7: if ((s)(*(u*)(va + 40UL)) <= (s)(*(u*)(vb + 40UL))) goto b9;
+ return 1UL;
+b9: return 0UL;
}
-u zlalr_action_133(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
+u zlalr_primary(u vlc, u va, u vpn) {
+ u vv = 0;
+ u vs = 0;
u v5 = 0;
u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 55UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_134(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ if (*(u*)(vpn + 0UL) != 0UL) goto b3;
+ v5 = (u)zlalr_lookup;
+ v6 = vlc;
+ v7 = *(u*)(vpn + 56UL);
+ v8 = 0UL;
+ v9 = ((u(*)())(v5))(v6, v7, v8);
+ vs = v9;
+ if (!(vs)) goto b7;
+ v10 = (u)zlalr_alt_nonterminal;
+ v11 = vlc;
+ v12 = va;
+ v13 = vs;
+ v14 = ((u(*)())(v10))(v11, v12, v13);
+ v14;
return 0UL;
-}
-u zlalr_action_135(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 47UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+b7: v15 = (u)zfind;
+ v16 = *(u*)(vlc + 8UL);
+ v17 = *(u*)(vpn + 56UL);
+ v18 = 0UL;
+ v19 = 0UL;
+ v20 = ((u(*)())(v15))(v16, v17, v18, v19);
+ vv = v20;
+ if (!(vv)) goto b18;
+ v22 = 0UL;
+b19: if (!(v22)) goto b14;
+ v21 = 1UL;
+b16: if (!(v21)) goto b12;
+ v24 = (u)zfputs;
+ v25 = *(u*)(vlc + 16UL);
+ v26 = (u)"name: ";
+ v27 = ((u(*)())(v24))(v25, v26);
+ v27;
+ v28 = (u)zfputs;
+ v29 = *(u*)(vlc + 16UL);
+ v30 = *(u*)(vpn + 56UL);
+ v31 = ((u(*)())(v28))(v29, v30);
+ v31;
+ v32 = (u)zfputs;
+ v33 = *(u*)(vlc + 16UL);
+ v34 = (u)"\012";
+ v35 = ((u(*)())(v32))(v33, v34);
+ v35;
+ v36 = (u)zdie;
+ v37 = (u)"undefined terminal";
+ v38 = ((u(*)())(v36))(v37);
+ v38;
+b10: v39 = (u)zlalr_alt_terminal;
+ v40 = vlc;
+ v41 = va;
+ v42 = *(u*)(vpn + 56UL);
+ v43 = *(u*)(vv + 200UL);
+ v44 = ((u(*)())(v39))(v40, v41, v42, v43);
+ v44;
return 0UL;
-}
-u zlalr_action_136(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 59UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+b12: goto b10;
+b14: if (!(*(u*)(vv + 192UL))) goto b22;
+ v23 = 0UL;
+b23: if (!(v23)) goto b20;
+ v21 = 1UL;
+ goto b16;
+b20: v21 = 0UL;
+ goto b16;
+b22: v23 = 1UL;
+ goto b23;
+b18: v22 = 1UL;
+ goto b19;
+b3: v45 = (u)zlalr_action;
+ v46 = vlc;
+ v47 = va;
+ v48 = vpn;
+ v49 = ((u(*)())(v45))(v46, v47, v48);
+ v49;
return 0UL;
}
-u zlalr_action_137(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 60UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+u zlalr_rules(u vlc, u vpn) {
+ u vrule = 0;
+ u vroot = 0;
+ u vp = 0;
+ u va = 0;
+ u vi = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ v7 = (u)zlalr_mkprod;
+ v8 = vlc;
+ v9 = ((u(*)())(v7))(v8);
+ vroot = v9;
+ vrule = *(u*)(vpn + 8UL);
+b2: if (!(vrule)) goto b8;
+ v10 = 0UL;
+b9: if (!(v10)) goto b6;
+ vi = 1UL;
+ vrule = *(u*)(vpn + 8UL);
+b12: if (!(vrule)) goto b18;
+ v19 = 0UL;
+b19: if (!(v19)) goto b16;
+ v25 = (u)zlalr_mkalt;
+ v26 = vlc;
+ v27 = vroot;
+ v28 = ((u(*)())(v25))(v26, v27);
+ va = v28;
+ v29 = (u)zlalr_alt_nonterminal;
+ v30 = vlc;
+ v31 = va;
+ v32 = *(u*)(*(u*)(vlc + 32UL) + 1UL * 8UL);
+ v33 = ((u(*)())(v29))(v30, v31, v32);
+ v33;
return 0UL;
+b16: vp = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL);
+ v20 = (u)zlalr_pattern;
+ v21 = vlc;
+ v22 = vp;
+ v23 = *(u*)(*(u*)(vrule + 8UL) + 16UL);
+ v24 = ((u(*)())(v20))(v21, v22, v23);
+ v24;
+ vrule = *(u*)(vrule + 16UL);
+ vi = vi + 1UL;
+ goto b12;
+b18: v19 = 1UL;
+ goto b19;
+b6: v11 = (u)zlalr_mkprod;
+ v12 = vlc;
+ v13 = ((u(*)())(v11))(v12);
+ vp = v13;
+ v14 = (u)zlalr_lookup;
+ v15 = vlc;
+ v16 = *(u*)(*(u*)(*(u*)(vrule + 8UL) + 8UL) + 56UL);
+ v17 = vp;
+ v18 = ((u(*)())(v14))(v15, v16, v17);
+ v18;
+ vrule = *(u*)(vrule + 16UL);
+ goto b2;
+b8: v10 = 1UL;
+ goto b9;
}
-u zlalr_action_138(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
+u zlalr_union_first(u vlc, u vout, u vsrc) {
+ u vs = 0;
+ u vt = 0;
+ u vret = 0;
u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 53UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_139(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ v6 = (u)zrb_first;
+ v7 = vsrc;
+ v8 = ((u(*)())(v6))(v7);
+ vs = v8;
+b2: if (!(vs)) goto b8;
+ v9 = 0UL;
+b9: if (!(v9)) goto b6;
+ return vret;
+b6: v10 = (u)zlalr_add_first;
+ v11 = vlc;
+ v12 = vout;
+ v13 = vs;
+ v14 = ((u(*)())(v10))(v11, v12, v13);
+ if (!(v14)) goto b12;
+ vret = 1UL;
+b10: v15 = (u)zrb_next;
+ v16 = vs;
+ v17 = ((u(*)())(v15))(v16);
+ vs = v17;
+ goto b2;
+b12: goto b10;
+b8: v9 = 1UL;
+ goto b9;
}
-u zlalr_action_140(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
+u zlalr_unionlook(u vlc, u vw) {
+ u vs = 0;
+ u vt = 0;
+ u vret = 0;
u v5 = 0;
u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 48UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ v5 = (u)zlalr_finditem;
+ v6 = vlc;
+ v7 = *(u*)(vw + 80UL);
+ v8 = vw + 8UL;
+ v9 = ((u(*)())(v5))(v6, v7, v8);
+ vt = v9;
+ v10 = (u)zrb_first;
+ v11 = *(u*)(*(u*)(vw + 88UL));
+ v12 = ((u(*)())(v10))(v11);
+ vs = v12;
+b3: if (!(vs)) goto b9;
+ v13 = 0UL;
+b10: if (!(v13)) goto b7;
+ *(u*)(vw + 88UL) = vt + 64UL;
+ return vret;
+b7: v14 = (u)zlalr_addlook;
+ v15 = vlc;
+ v16 = vt + 64UL;
+ v17 = vs;
+ v18 = ((u(*)())(v14))(v15, v16, v17);
+ if (!(v18)) goto b13;
+ vret = 1UL;
+b11: v19 = (u)zrb_next;
+ v20 = vs;
+ v21 = ((u(*)())(v19))(v20);
+ vs = v21;
+ goto b3;
+b13: goto b11;
+b9: v13 = 1UL;
+ goto b10;
}
-u zlalr_action_141(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 49UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+u zlayout_struct(u vc, u vd) {
+ u vm = 0;
+ u voffset = 0;
+ u vname = 0;
+ u vmd = 0;
+ u vt = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ if (!(*(u*)(vd + 144UL))) goto b3;
+ if (*(u*)(vd + 144UL) != 2UL) goto b6;
+ v7 = (u)zcdie;
+ v8 = vc;
+ v9 = (u)"circular struct definition";
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+b4: return 0UL;
+b6: goto b4;
+b3: *(u*)(vd + 144UL) = 2UL;
+ vm = *(u*)(*(u*)(vd + 152UL) + 16UL);
+ voffset = 0UL;
+b8: if (!(vm)) goto b14;
+ v11 = 0UL;
+b15: if (!(v11)) goto b12;
+ *(u*)(vd + 136UL) = voffset;
+ *(u*)(vd + 144UL) = 1UL;
return 0UL;
+b12: *(u*)(vc + 24UL) = *(u*)(*(u*)(vm + 8UL) + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(*(u*)(vm + 8UL) + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(*(u*)(vm + 8UL) + 40UL);
+ vname = *(u*)(*(u*)(*(u*)(vm + 8UL) + 8UL) + 56UL);
+ v12 = (u)zprototype;
+ v13 = vc;
+ v14 = *(u*)(*(u*)(vm + 8UL) + 16UL);
+ v15 = ((u(*)())(v12))(v13, v14);
+ vt = v15;
+ v16 = (u)zfind;
+ v17 = vc;
+ v18 = *(u*)(vd + 32UL);
+ v19 = vname;
+ v20 = 1UL;
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ vmd = v21;
+ if (!(*(u*)(vd + 168UL))) goto b20;
+ v22 = (u)zcdie;
+ v23 = vc;
+ v24 = (u)"duplicate member";
+ v25 = ((u(*)())(v22))(v23, v24);
+ v25;
+b18: *(u*)(vmd + 168UL) = 1UL;
+ *(u*)(vmd + 176UL) = vt;
+ *(u*)(vmd + 184UL) = voffset;
+ v26 = (u)ztype_sizeof;
+ v27 = vc;
+ v28 = vt;
+ v29 = ((u(*)())(v26))(v27, v28);
+ voffset = voffset + v29;
+ vm = *(u*)(vm + 16UL);
+ goto b8;
+b20: goto b18;
+b14: v11 = 1UL;
+ goto b15;
}
-u zlalr_action_142(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
+u zlayout_union(u vc, u vd) {
+ u vm = 0;
+ u vsize = 0;
+ u vmember_size = 0;
+ u vname = 0;
+ u vmd = 0;
+ u vt = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ if (!(*(u*)(vd + 144UL))) goto b3;
+ if (*(u*)(vd + 144UL) != 2UL) goto b6;
+ v8 = (u)zcdie;
+ v9 = vc;
+ v10 = (u)"circular struct definition";
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+b4: return 0UL;
+b6: goto b4;
+b3: *(u*)(vd + 144UL) = 2UL;
+ vm = *(u*)(*(u*)(vd + 152UL) + 16UL);
+ vsize = 0UL;
+b8: if (!(vm)) goto b14;
+ v12 = 0UL;
+b15: if (!(v12)) goto b12;
+ *(u*)(vd + 136UL) = vsize;
+ *(u*)(vd + 144UL) = 1UL;
return 0UL;
+b12: *(u*)(vc + 24UL) = *(u*)(*(u*)(vm + 8UL) + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(*(u*)(vm + 8UL) + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(*(u*)(vm + 8UL) + 40UL);
+ vname = *(u*)(*(u*)(*(u*)(vm + 8UL) + 8UL) + 56UL);
+ v13 = (u)zprototype;
+ v14 = vc;
+ v15 = *(u*)(*(u*)(vm + 8UL) + 16UL);
+ v16 = ((u(*)())(v13))(v14, v15);
+ vt = v16;
+ v17 = (u)zfind;
+ v18 = vc;
+ v19 = *(u*)(vd + 32UL);
+ v20 = vname;
+ v21 = 1UL;
+ v22 = ((u(*)())(v17))(v18, v19, v20, v21);
+ vmd = v22;
+ if (!(*(u*)(vd + 168UL))) goto b20;
+ v23 = (u)zcdie;
+ v24 = vc;
+ v25 = (u)"duplicate member";
+ v26 = ((u(*)())(v23))(v24, v25);
+ v26;
+b18: *(u*)(vmd + 168UL) = 1UL;
+ *(u*)(vmd + 176UL) = vt;
+ *(u*)(vmd + 184UL) = 0UL;
+ v27 = (u)ztype_sizeof;
+ v28 = vc;
+ v29 = vt;
+ v30 = ((u(*)())(v27))(v28, v29);
+ vmember_size = v30;
+ if ((s)(vmember_size) <= (s)(vsize)) goto b25;
+ vsize = vmember_size;
+b23: vm = *(u*)(vm + 16UL);
+ goto b8;
+b25: goto b23;
+b20: goto b18;
+b14: v12 = 1UL;
+ goto b15;
}
-u zlalr_action_143(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 35UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
+u zlex_skip(u vl) {
+ *(u*)(vl + 96UL) = 1UL;
return 0UL;
}
-u zlalr_action_144(u vctx) {
+u zlexer_action_0(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 36UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
return 0UL;
}
-u zlalr_action_145(u vctx) {
+u zlexer_action_1(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 57UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 1UL;
}
-u zlalr_action_146(u vctx) {
+u zlexer_action_10(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 58UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 10UL;
}
-u zlalr_action_147(u vctx) {
+u zlexer_action_11(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 56UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 11UL;
}
-u zlalr_action_148(u vctx) {
+u zlexer_action_12(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 50UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_149(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 12UL;
}
-u zlalr_action_150(u vctx) {
+u zlexer_action_13(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 6UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 13UL;
}
-u zlalr_action_151(u vctx) {
+u zlexer_action_14(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 6UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_152(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
+ return 14UL;
}
-u zlalr_action_153(u vctx) {
+u zlexer_action_15(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 38UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 15UL;
}
-u zlalr_action_154(u vctx) {
+u zlexer_action_16(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 7UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 16UL;
}
-u zlalr_action_155(u vctx) {
+u zlexer_action_17(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 9UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 17UL;
}
-u zlalr_action_156(u vctx) {
+u zlexer_action_18(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 37UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_157(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_158(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_159(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_160(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 18UL;
}
-u zlalr_action_161(u vctx) {
+u zlexer_action_19(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 34UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 19UL;
}
-u zlalr_action_162(u vctx) {
+u zlexer_action_2(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 4UL;
- v4 = 0UL;
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_163(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_164(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- return 0UL;
+ return 2UL;
}
-u zlalr_action_165(u vctx) {
+u zlexer_action_20(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 62UL;
- v4 = 0UL;
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_166(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_167(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 20UL;
}
-u zlalr_action_168(u vctx) {
+u zlexer_action_21(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 63UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 21UL;
}
-u zlalr_action_169(u vctx) {
+u zlexer_action_22(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 64UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 22UL;
}
-u zlalr_action_170(u vctx) {
+u zlexer_action_23(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 65UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_171(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 23UL;
}
-u zlalr_action_172(u vctx) {
+u zlexer_action_24(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 66UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_173(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 24UL;
}
-u zlalr_action_174(u vctx) {
+u zlexer_action_25(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 67UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_175(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 25UL;
}
-u zlalr_action_176(u vctx) {
+u zlexer_action_26(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 68UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 26UL;
}
-u zlalr_action_177(u vctx) {
+u zlexer_action_27(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 69UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_178(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
+ return 27UL;
}
-u zlalr_action_179(u vctx) {
+u zlexer_action_28(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 70UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_180(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_181(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 28UL;
}
-u zlalr_action_182(u vctx) {
+u zlexer_action_29(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 71UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_183(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
+ return 29UL;
}
-u zlalr_action_184(u vctx) {
+u zlexer_action_3(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 72UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 3UL;
}
-u zlalr_action_185(u vctx) {
+u zlexer_action_30(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 72UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 30UL;
}
-u zlalr_action_186(u vctx) {
+u zlexer_action_31(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 73UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 31UL;
}
-u zlalr_action_187(u vctx) {
+u zlexer_action_32(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 74UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 32UL;
}
-u zlalr_action_188(u vctx) {
+u zlexer_action_33(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 74UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 33UL;
}
-u zlalr_action_189(u vctx) {
+u zlexer_action_34(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 75UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_54(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 34UL;
}
-u zlalr_action_55(u vctx) {
+u zlexer_action_35(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 14UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_56(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
-}
-u zlalr_action_57(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_58(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_59(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_60(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_61(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_62(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 35UL;
}
-u zlalr_action_63(u vctx) {
+u zlexer_action_36(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 24UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 36UL;
}
-u zlalr_action_64(u vctx) {
+u zlexer_action_37(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 24UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 37UL;
}
-u zlalr_action_65(u vctx) {
+u zlexer_action_38(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 25UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 38UL;
}
-u zlalr_action_66(u vctx) {
+u zlexer_action_39(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 25UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 39UL;
}
-u zlalr_action_67(u vctx) {
+u zlexer_action_4(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 25UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 4UL;
}
-u zlalr_action_68(u vctx) {
+u zlexer_action_40(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 23UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 40UL;
}
-u zlalr_action_69(u vctx) {
+u zlexer_action_41(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 19UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 41UL;
}
-u zlalr_action_70(u vctx) {
+u zlexer_action_42(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 20UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_71(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
+ return 42UL;
}
-u zlalr_action_72(u vctx) {
+u zlexer_action_43(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 17UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 3UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 43UL;
}
-u zlalr_action_73(u vctx) {
+u zlexer_action_44(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 18UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 3UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_74(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ return 44UL;
}
-u zlalr_action_75(u vctx) {
+u zlexer_action_45(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- v1 = (u)zmkident;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = (u)"byte";
- v4 = ((u(*)())v1)(v2, v3);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v4;
- return 0UL;
+ return 45UL;
}
-u zlalr_action_76(u vctx) {
+u zlexer_action_46(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- v1 = (u)zmkident;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = (u)"int";
- v4 = ((u(*)())v1)(v2, v3);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v4;
- return 0UL;
+ return 46UL;
}
-u zlalr_action_77(u vctx) {
+u zlexer_action_47(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- v1 = (u)zmkident;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = (u)"void";
- v4 = ((u(*)())v1)(v2, v3);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v4;
- return 0UL;
-}
-u zlalr_action_78(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- return 0UL;
+ return 47UL;
}
-u zlalr_action_79(u vctx) {
+u zlexer_action_48(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 16UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_80(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- return 0UL;
+ return 48UL;
}
-u zlalr_action_81(u vctx) {
+u zlexer_action_49(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 12UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 49UL;
}
-u zlalr_action_82(u vctx) {
+u zlexer_action_5(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 10UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 5UL;
}
-u zlalr_action_83(u vctx) {
+u zlexer_action_50(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 10UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = 0UL;
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_84(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
-}
-u zlalr_action_85(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_86(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = 0UL;
- return 0UL;
+ return 50UL;
}
-u zlalr_action_87(u vctx) {
+u zlexer_action_51(u vctx) {
u v1 = 0;
u v2 = 0;
u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 15UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 3UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
+ return 51UL;
}
-u zlalr_action_88(u vctx) {
- u v1 = 0;
+u zlexer_action_52(u vctx) {
+ u vn = 0;
u v2 = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 13UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 2UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_89(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ v2 = (u)zmknode;
+ v3 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v4 = 0UL;
+ v5 = 0UL;
+ v6 = 0UL;
+ v7 = ((u(*)())(v2))(v3, v4, v5, v6);
+ vn = v7;
+ v8 = (u)zmkstr;
+ v9 = *(u*)(vctx + 0UL);
+ v10 = *(u*)(vctx + 56UL) + *(u*)(vctx + 64UL) * 1UL;
+ v11 = *(u*)(vctx + 72UL) - *(u*)(vctx + 64UL);
+ v12 = ((u(*)())(v8))(v9, v10, v11);
+ *(u*)(vn + 56UL) = v12;
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
+ return 52UL;
}
-u zlalr_action_90(u vctx) {
- u v1 = 0;
- u v2 = 0;
+u zlexer_action_53(u vctx) {
+ u vn = 0;
+ u vok = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
- v1 = (u)zmknode;
- v2 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v3 = 11UL;
- v4 = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- v5 = *(u*)(*(u*)(vctx + 152UL) + 1UL * 8UL + 0UL);
- v6 = ((u(*)())v1)(v2, v3, v4, v5);
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = v6;
- return 0UL;
-}
-u zlalr_action_91(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_92(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_93(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_94(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_95(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_96(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_97(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_98(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
-}
-u zlalr_action_99(u vctx) {
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = *(u*)(*(u*)(vctx + 152UL) + 0UL * 8UL + 0UL);
- return 0UL;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ v3 = (u)zmknode;
+ v4 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v5 = 1UL;
+ v6 = 0UL;
+ v7 = 0UL;
+ v8 = ((u(*)())(v3))(v4, v5, v6, v7);
+ vn = v8;
+ v9 = (u)zhex2int;
+ v10 = *(u*)(vctx + 56UL) + (*(u*)(vctx + 64UL) + 2UL) * 1UL;
+ v11 = (*(u*)(vctx + 72UL) - *(u*)(vctx + 64UL)) - 2UL;
+ v12 = (u)&vok;
+ v13 = ((u(*)())(v9))(v10, v11, v12);
+ *(u*)(vn + 48UL) = v13;
+ if (!(vok)) goto b7;
+ v14 = 0UL;
+b8: if (!(v14)) goto b5;
+ v15 = (u)zdie;
+ v16 = (u)"invalid hex";
+ v17 = ((u(*)())(v15))(v16);
+ v17;
+b3: *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
+ return 53UL;
+b5: goto b3;
+b7: v14 = 1UL;
+ goto b8;
}
-u zlalr_add_first(u vlc, u vout, u vsym) {
- u vp = 0;
- u vlink = 0;
- u vd = 0;
- u vdir = 0;
+u zlexer_action_54(u vctx) {
+ u vn = 0;
+ u vx = 0;
+ u vok = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -35516,50 +33310,240 @@ u zlalr_add_first(u vlc, u vout, u vsym) {
u v19 = 0;
u v20 = 0;
u v21 = 0;
- vp = 0UL;
- vlink = vout;
-b1: vd = *(u*)vlink;
- if (!vd) goto b7;
+ v4 = (u)zmknode;
+ v5 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v6 = 1UL;
v7 = 0UL;
-b8: if (!v7) goto b5;
- v12 = (u)zalloc;
- v13 = *(u*)(vlc + 0UL);
- v14 = 64UL;
- v15 = ((u(*)())v12)(v13, v14);
- vd = v15;
- *(u*)(vd + 32UL) = *(u*)(vsym + 32UL);
- *(u*)(vd + 40UL) = *(u*)(vsym + 40UL);
- *(u*)(vd + 48UL) = *(u*)(vsym + 48UL);
- v16 = (u)zrb_link;
- v17 = vout;
- v18 = vlink;
- v19 = vp;
- v20 = vd + 0UL;
- v21 = ((u(*)())v16)(v17, v18, v19, v20);
- v21;
- return 1UL;
-b5: v8 = (u)zlalr_pointcmp;
- v9 = vsym;
- v10 = vd;
- v11 = ((u(*)())v8)(v9, v10);
- vdir = v11;
- if ((s)vdir >= (s)0UL) goto b12;
- vlink = vd + 0UL + 16UL;
- vp = vd + 0UL;
-b10: goto b1;
-b12: if ((s)vdir <= (s)0UL) goto b14;
- vlink = vd + 0UL + 24UL;
- vp = vd + 0UL;
- goto b10;
-b14: return 0UL;
-b7: v7 = 1UL;
+ v8 = 0UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vn = v9;
+ v10 = (u)zdec2int;
+ v11 = *(u*)(vctx + 56UL) + *(u*)(vctx + 64UL) * 1UL;
+ v12 = *(u*)(vctx + 72UL) - *(u*)(vctx + 64UL);
+ v13 = (u)&vok;
+ v14 = ((u(*)())(v10))(v11, v12, v13);
+ *(u*)(vn + 48UL) = v14;
+ if (!(vok)) goto b7;
+ v15 = 0UL;
+b8: if (!(v15)) goto b5;
+ v16 = (u)zdie;
+ v17 = (u)"invalid dec";
+ v18 = ((u(*)())(v16))(v17);
+ v18;
+b3: *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
+ return 53UL;
+b5: goto b3;
+b7: v15 = 1UL;
goto b8;
}
-u zlalr_addlook(u vlc, u vout, u vsym) {
- u vp = 0;
- u vlink = 0;
- u vd = 0;
- u vdir = 0;
+u zlexer_action_55(u vctx) {
+ u vn = 0;
+ u vi = 0;
+ u vx = 0;
+ u vok = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ v5 = (u)zmknode;
+ v6 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v7 = 1UL;
+ v8 = 0UL;
+ v9 = 0UL;
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ vn = v10;
+ vi = *(u*)(vctx + 64UL) + 1UL;
+ v11 = (u)zunescape;
+ v12 = *(u*)(vctx + 56UL);
+ v13 = (u)&vi;
+ v14 = *(u*)(vctx + 72UL) - 1UL;
+ v15 = (u)&vok;
+ v16 = ((u(*)())(v11))(v12, v13, v14, v15);
+ *(u*)(vn + 48UL) = v16;
+ if (!(vok)) goto b11;
+ v18 = 0UL;
+b12: if (!(v18)) goto b7;
+ v17 = 1UL;
+b9: if (!(v17)) goto b5;
+ v19 = (u)zdie;
+ v20 = (u)"invalid char";
+ v21 = ((u(*)())(v19))(v20);
+ v21;
+b3: *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
+ return 53UL;
+b5: goto b3;
+b7: if (vi == *(u*)(vctx + 72UL) - 1UL) goto b13;
+ v17 = 1UL;
+ goto b9;
+b13: v17 = 0UL;
+ goto b9;
+b11: v18 = 1UL;
+ goto b12;
+}
+u zlexer_action_56(u vctx) {
+ u vn = 0;
+ u vi = 0;
+ u vj = 0;
+ u vok = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ v5 = (u)zmknode;
+ v6 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v7 = 3UL;
+ v8 = 0UL;
+ v9 = 0UL;
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ vn = v10;
+ v11 = (u)zalloc;
+ v12 = *(u*)(vctx + 0UL);
+ v13 = *(u*)(vctx + 72UL) - *(u*)(vctx + 64UL);
+ v14 = ((u(*)())(v11))(v12, v13);
+ *(u*)(vn + 56UL) = v14;
+ vi = *(u*)(vctx + 64UL) + 1UL;
+ vj = 0UL;
+b3: if (vi != *(u*)(vctx + 72UL) - 1UL) goto b7;
+ *(b*)(*(u*)(vn + 56UL) + vj * 1UL) = 0UL;
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
+ return 54UL;
+b7: v15 = (u)zunescape;
+ v16 = *(u*)(vctx + 56UL);
+ v17 = (u)&vi;
+ v18 = *(u*)(vctx + 72UL) - 1UL;
+ v19 = (u)&vok;
+ v20 = ((u(*)())(v15))(v16, v17, v18, v19);
+ *(b*)(*(u*)(vn + 56UL) + vj * 1UL) = v20;
+ if (!(vok)) goto b13;
+ v21 = 0UL;
+b14: if (!(v21)) goto b11;
+ v22 = (u)zdie;
+ v23 = (u)"invalid string";
+ v24 = ((u(*)())(v22))(v23);
+ v24;
+b9: vj = vj + 1UL;
+ goto b3;
+b11: goto b9;
+b13: v21 = 1UL;
+ goto b14;
+}
+u zlexer_action_57(u vctx) {
+ u vn = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ v2 = (u)zmknode;
+ v3 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
+ v4 = 61UL;
+ v5 = 0UL;
+ v6 = 0UL;
+ v7 = ((u(*)())(v2))(v3, v4, v5, v6);
+ vn = v7;
+ v8 = (u)zparse_charset;
+ v9 = *(u*)(vctx + 0UL);
+ v10 = *(u*)(vctx + 56UL) + (*(u*)(vctx + 64UL) + 2UL) * 1UL;
+ v11 = (*(u*)(vctx + 72UL) - *(u*)(vctx + 64UL)) - 4UL;
+ v12 = ((u(*)())(v8))(v9, v10, v11);
+ *(u*)(vn + 56UL) = v12;
+ *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
+ return 55UL;
+}
+u zlexer_action_58(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ v1 = (u)zlex_skip;
+ v2 = vctx;
+ v3 = ((u(*)())(v1))(v2);
+ v3;
+ return 0UL;
+}
+u zlexer_action_59(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ v1 = (u)zlex_skip;
+ v2 = vctx;
+ v3 = ((u(*)())(v1))(v2);
+ v3;
+ return 0UL;
+}
+u zlexer_action_6(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ return 6UL;
+}
+u zlexer_action_7(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ return 7UL;
+}
+u zlexer_action_8(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ return 8UL;
+}
+u zlexer_action_9(u vctx) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ return 9UL;
+}
+u zlexer_codegen(u vc, u vd) {
+ u v_cg[9] = {0};
+ u vcg = 0;
+ u vi = 0;
+ u vch = 0;
+ u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -35575,70 +33559,58 @@ u zlalr_addlook(u vlc, u vout, u vsym) {
u v19 = 0;
u v20 = 0;
u v21 = 0;
- vp = 0UL;
- vlink = vout;
-b1: vd = *(u*)vlink;
- if (!vd) goto b7;
- v7 = 0UL;
-b8: if (!v7) goto b5;
- v12 = (u)zalloc;
- v13 = *(u*)(vlc + 0UL);
- v14 = 64UL;
- v15 = ((u(*)())v12)(v13, v14);
- vd = v15;
- *(u*)(vd + 32UL) = *(u*)(vsym + 32UL);
- *(u*)(vd + 40UL) = *(u*)(vsym + 40UL);
- *(u*)(vd + 48UL) = *(u*)(vsym + 48UL);
- v16 = (u)zrb_link;
- v17 = vout;
- v18 = vlink;
- v19 = vp;
- v20 = vd + 0UL;
- v21 = ((u(*)())v16)(v17, v18, v19, v20);
+ vcg = (u)v_cg;
+ *(u*)(vcg + 0UL) = *(u*)(vc + 0UL);
+ v6 = (u)zlexer_codegen_setup;
+ v7 = vcg;
+ v8 = vd;
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+ *(u*)(vcg + 40UL) = *(u*)(vcg + 16UL) * 8UL;
+ v10 = (u)zalloc;
+ v11 = *(u*)(vcg + 0UL);
+ v12 = *(u*)(vcg + 40UL);
+ v13 = ((u(*)())(v10))(v11, v12);
+ *(u*)(vcg + 32UL) = v13;
+ *(u*)(vcg + 56UL) = (*(u*)(vcg + 16UL) * 256UL) * 8UL;
+ v14 = (u)zalloc;
+ v15 = *(u*)(vcg + 0UL);
+ v16 = *(u*)(vcg + 56UL) + 1UL;
+ v17 = ((u(*)())(v14))(v15, v16);
+ *(u*)(vcg + 48UL) = v17;
+ vi = 0UL;
+b4: if (vi != *(u*)(vcg + 16UL)) goto b8;
+ vi = 0UL;
+b9: if (vi != *(u*)(vcg + 16UL)) goto b13;
+ v18 = (u)zlexer_output;
+ v19 = vc;
+ v20 = vcg;
+ v21 = ((u(*)())(v18))(v19, v20);
v21;
- return 1UL;
-b5: v8 = (u)zlalr_pointcmp;
- v9 = vsym;
- v10 = vd;
- v11 = ((u(*)())v8)(v9, v10);
- vdir = v11;
- if ((s)vdir >= (s)0UL) goto b12;
- vlink = vd + 0UL + 16UL;
- vp = vd + 0UL;
-b10: goto b1;
-b12: if ((s)vdir <= (s)0UL) goto b14;
- vlink = vd + 0UL + 24UL;
- vp = vd + 0UL;
- goto b10;
-b14: return 0UL;
-b7: v7 = 1UL;
- goto b8;
-}
-u zlalr_alt(u vlc, u va, u vpn) {
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
-b1: if (!vpn) goto b7;
- v3 = 0UL;
-b8: if (!v3) goto b5;
return 0UL;
-b5: v4 = (u)zlalr_primary;
- v5 = vlc;
- v6 = va;
- v7 = *(u*)(vpn + 8UL);
- v8 = ((u(*)())v4)(v5, v6, v7);
- v8;
- vpn = *(u*)(vpn + 16UL);
- goto b1;
-b7: v3 = 1UL;
- goto b8;
+b13: vd = *(u*)(*(u*)(vcg + 8UL) + vi * 8UL);
+ if (!(*(u*)(vd + 72UL))) goto b16;
+ *(u*)(*(u*)(vcg + 32UL) + vi * 8UL) = *(u*)(*(u*)(vc + 112UL) + (*(u*)(vd + 72UL) - 1UL) * 8UL);
+b14: vch = 0UL;
+b17: if (vch != 256UL) goto b21;
+ vi = vi + 1UL;
+ goto b9;
+b21: if (!(*(u*)(*(u*)(vd + 40UL) + vch * 8UL))) goto b24;
+ *(u*)(*(u*)(vcg + 48UL) + (vi * 256UL + vch) * 8UL) = *(u*)(*(u*)(*(u*)(vd + 40UL) + vch * 8UL) + 64UL);
+b22: vch = vch + 1UL;
+ goto b17;
+b24: *(u*)(*(u*)(vcg + 48UL) + (vi * 256UL + vch) * 8UL) = -1UL;
+ goto b22;
+b16: goto b14;
+b8: vd = *(u*)(*(u*)(vcg + 8UL) + vi * 8UL);
+ *(u*)(vd + 64UL) = vi;
+ vi = vi + 1UL;
+ goto b4;
}
-u zlalr_alt_nonterminal(u vlc, u va, u vs) {
- u vuse[10] = {0};
+u zlexer_codegen_setup(u vcg, u vd) {
u vi = 0;
+ u v3 = 0;
+ u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -35650,34 +33622,45 @@ u zlalr_alt_nonterminal(u vlc, u va, u vs) {
u v13 = 0;
u v14 = 0;
u v15 = 0;
- u v16 = 0;
+ if (!(vd)) goto b9;
+ v4 = 0UL;
+b10: if (!(v4)) goto b5;
+ v3 = 1UL;
+b7: if (!(v3)) goto b3;
+ return 0UL;
+b3: *(u*)(vd + 64UL) = 1UL;
v5 = (u)zensure_arr;
- v6 = *(u*)(vlc + 0UL);
- v7 = va + 16UL;
- v8 = va + 32UL;
- v9 = *(u*)(va + 24UL) + 1UL;
- v10 = 64UL;
- v11 = ((u(*)())v5)(v6, v7, v8, v9, v10);
+ v6 = *(u*)(vcg + 0UL);
+ v7 = vcg + 8UL;
+ v8 = vcg + 24UL;
+ v9 = *(u*)(vcg + 16UL) + 1UL;
+ v10 = 8UL;
+ v11 = ((u(*)())(v5))(v6, v7, v8, v9, v10);
v11;
- vi = *(u*)(va + 24UL);
- *(u*)(va + 24UL) = *(u*)(va + 24UL) + 1UL;
- *(u*)(*(u*)(va + 16UL) + vi * 64UL + 32UL) = 0UL;
- *(u*)(*(u*)(va + 16UL) + vi * 64UL + 40UL) = *(u*)(vs + 32UL);
- *(u*)(*(u*)(va + 16UL) + vi * 64UL + 48UL) = *(u*)(vs + 40UL);
- *(u*)((u)vuse + 40UL) = *(u*)(va + 0UL);
- *(u*)((u)vuse + 48UL) = 0UL;
- *(u*)((u)vuse + 56UL) = 0UL;
- v12 = (u)zlalr_assoc;
- v13 = vlc;
- v14 = *(u*)(vs + 48UL);
- v15 = (u)vuse;
- v16 = ((u(*)())v12)(v13, v14, v15);
- v16;
+ *(u*)(*(u*)(vcg + 8UL) + *(u*)(vcg + 16UL) * 8UL) = vd;
+ *(u*)(vcg + 16UL) = *(u*)(vcg + 16UL) + 1UL;
+ vi = 0UL;
+b13: if (vi != 256UL) goto b17;
return 0UL;
+b17: v12 = (u)zlexer_codegen_setup;
+ v13 = vcg;
+ v14 = *(u*)(*(u*)(vd + 40UL) + vi * 8UL);
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ vi = vi + 1UL;
+ goto b13;
+b5: if (!(*(u*)(vd + 64UL))) goto b11;
+ v3 = 1UL;
+ goto b7;
+b11: v3 = 0UL;
+ goto b7;
+b9: v4 = 1UL;
+ goto b10;
}
-u zlalr_alt_terminal(u vlc, u va, u vname, u vid) {
- u vi = 0;
- u v5 = 0;
+u zlexer_compile(u vc, u vn, u verr) {
+ u va = 0;
+ u vb = 0;
+ u vd = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -35687,39 +33670,56 @@ u zlalr_alt_terminal(u vlc, u va, u vname, u vid) {
u v12 = 0;
u v13 = 0;
u v14 = 0;
- v5 = (u)zensure_arr;
- v6 = *(u*)(vlc + 0UL);
- v7 = va + 16UL;
- v8 = va + 32UL;
- v9 = *(u*)(va + 24UL) + 1UL;
- v10 = 64UL;
- v11 = ((u(*)())v5)(v6, v7, v8, v9, v10);
- v11;
- vi = *(u*)(va + 24UL);
- *(u*)(va + 24UL) = *(u*)(va + 24UL) + 1UL;
- *(u*)(*(u*)(va + 16UL) + vi * 64UL + 32UL) = 1UL;
- *(u*)(*(u*)(va + 16UL) + vi * 64UL + 40UL) = vid;
- *(u*)(*(u*)(va + 16UL) + vi * 64UL + 48UL) = vname;
- if ((s)vid >= (s)0UL) goto b4;
- v12 = (u)zdie;
- v13 = (u)"invalid terminal";
- v14 = ((u(*)())v12)(v13);
- v14;
-b2: if ((s)*(u*)(vlc + 80UL) > (s)vid) goto b8;
- *(u*)(vlc + 80UL) = vid + 1UL;
-b6: return 0UL;
-b8: goto b6;
-b4: goto b2;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ vn = *(u*)(vn + 8UL);
+b1: if (!(vn)) goto b7;
+ v6 = 0UL;
+b8: if (!(v6)) goto b5;
+ v16 = (u)zlexer_explode;
+ v17 = vc;
+ v18 = va;
+ v19 = ((u(*)())(v16))(v17, v18);
+ vd = v19;
+ v20 = (u)zlexer_codegen;
+ v21 = vc;
+ v22 = vd;
+ v23 = ((u(*)())(v20))(v21, v22);
+ v23;
+ return 0UL;
+b5: v7 = (u)zlexer_compile_rule;
+ v8 = vc;
+ v9 = *(u*)(vn + 8UL);
+ v10 = ((u(*)())(v7))(v8, v9);
+ vb = v10;
+ v11 = (u)znfa_alt;
+ v12 = vc;
+ v13 = va;
+ v14 = vb;
+ v15 = ((u(*)())(v11))(v12, v13, v14);
+ va = v15;
+ vn = *(u*)(vn + 16UL);
+ goto b1;
+b7: v6 = 1UL;
+ goto b8;
}
-u zlalr_assoc(u vlc, u vi, u vt) {
- u vp = 0;
- u vlink = 0;
+u zlexer_compile_action(u vc, u vn) {
+ u va = 0;
+ u vb = 0;
u vd = 0;
- u vdir = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
+ u vt = 0;
+ u vid = 0;
+ u vs = 0;
+ u vfunc_type = 0;
+ u vv = 0;
+ u vo = 0;
u v11 = 0;
u v12 = 0;
u v13 = 0;
@@ -35731,53 +33731,323 @@ u zlalr_assoc(u vlc, u vi, u vt) {
u v19 = 0;
u v20 = 0;
u v21 = 0;
- vp = 0UL;
- vlink = vi + 40UL;
-b1: vd = *(u*)vlink;
- if (!vd) goto b7;
- v7 = 0UL;
-b8: if (!v7) goto b5;
- v12 = (u)zalloc;
- v13 = *(u*)(vlc + 0UL);
- v14 = 72UL;
- v15 = ((u(*)())v12)(v13, v14);
- vd = v15;
- *(u*)(vd + 40UL) = *(u*)(vt + 40UL);
- *(u*)(vd + 48UL) = *(u*)(vt + 48UL);
- *(u*)(vd + 56UL) = *(u*)(vt + 56UL);
- v16 = (u)zrb_link;
- v17 = vi + 40UL;
- v18 = vlink;
- v19 = vp;
- v20 = vd + 0UL;
- v21 = ((u(*)())v16)(v17, v18, v19, v20);
- v21;
- return vd;
-b5: v8 = (u)zlalr_itemcmp;
- v9 = vt;
- v10 = vd;
- v11 = ((u(*)())v8)(v9, v10);
- vdir = v11;
- if ((s)vdir >= (s)0UL) goto b12;
- vlink = vd + 0UL + 16UL;
- vp = vd + 0UL;
-b10: goto b1;
-b12: if ((s)vdir <= (s)0UL) goto b14;
- vlink = vd + 0UL + 24UL;
- vp = vd + 0UL;
- goto b10;
-b14: return 0UL;
-b7: v7 = 1UL;
- goto b8;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ v11 = (u)zensure_arr;
+ v12 = *(u*)(vc + 0UL);
+ v13 = vc + 112UL;
+ v14 = vc + 128UL;
+ v15 = *(u*)(vc + 120UL) + 1UL;
+ v16 = 8UL;
+ v17 = ((u(*)())(v11))(v12, v13, v14, v15, v16);
+ v17;
+ vid = *(u*)(vc + 120UL);
+ v18 = (u)zalloc;
+ v19 = *(u*)(vc + 0UL);
+ v20 = 64UL;
+ v21 = ((u(*)())(v18))(v19, v20);
+ vs = v21;
+ v22 = (u)zmemcpy;
+ v23 = vs;
+ v24 = (u)"lexer_action_";
+ v25 = 13UL;
+ v26 = ((u(*)())(v22))(v23, v24, v25);
+ v26;
+ v27 = (u)zint2str;
+ v28 = vs + 13UL * 1UL;
+ v29 = vid;
+ v30 = ((u(*)())(v27))(v28, v29);
+ v30;
+ *(u*)(*(u*)(vc + 112UL) + vid * 8UL) = vs;
+ *(u*)(vc + 120UL) = *(u*)(vc + 120UL) + 1UL;
+ v31 = (u)zmknode;
+ v32 = *(u*)(vc + 16UL);
+ v33 = 0UL;
+ v34 = 0UL;
+ v35 = 0UL;
+ v36 = ((u(*)())(v31))(v32, v33, v34, v35);
+ vb = v36;
+ *(u*)(vb + 56UL) = (u)"ctx";
+ v37 = (u)zmknode;
+ v38 = *(u*)(vc + 16UL);
+ v39 = 0UL;
+ v40 = 0UL;
+ v41 = 0UL;
+ v42 = ((u(*)())(v37))(v38, v39, v40, v41);
+ va = v42;
+ *(u*)(va + 56UL) = (u)"lex";
+ v43 = (u)zmknode;
+ v44 = *(u*)(vc + 16UL);
+ v45 = 16UL;
+ v46 = va;
+ v47 = 0UL;
+ v48 = ((u(*)())(v43))(v44, v45, v46, v47);
+ va = v48;
+ v49 = (u)zmknode;
+ v50 = *(u*)(vc + 16UL);
+ v51 = 12UL;
+ v52 = vb;
+ v53 = va;
+ v54 = ((u(*)())(v49))(v50, v51, v52, v53);
+ va = v54;
+ v55 = (u)zmknode;
+ v56 = *(u*)(vc + 16UL);
+ v57 = 10UL;
+ v58 = va;
+ v59 = 0UL;
+ v60 = ((u(*)())(v55))(v56, v57, v58, v59);
+ va = v60;
+ v61 = (u)zmknode;
+ v62 = *(u*)(vc + 16UL);
+ v63 = 0UL;
+ v64 = 0UL;
+ v65 = 0UL;
+ v66 = ((u(*)())(v61))(v62, v63, v64, v65);
+ vb = v66;
+ *(u*)(vb + 56UL) = (u)"int";
+ v67 = (u)zmknode;
+ v68 = *(u*)(vc + 16UL);
+ v69 = 15UL;
+ v70 = va;
+ v71 = vb;
+ v72 = ((u(*)())(v67))(v68, v69, v70, v71);
+ va = v72;
+ v73 = (u)zprototype;
+ v74 = vc;
+ v75 = va;
+ v76 = ((u(*)())(v73))(v74, v75);
+ vfunc_type = v76;
+ v77 = (u)zmknode;
+ v78 = *(u*)(vc + 16UL);
+ v79 = 0UL;
+ v80 = 0UL;
+ v81 = 0UL;
+ v82 = ((u(*)())(v77))(v78, v79, v80, v81);
+ vb = v82;
+ *(u*)(vb + 56UL) = vs;
+ v83 = (u)zmknode;
+ v84 = *(u*)(vc + 16UL);
+ v85 = 13UL;
+ v86 = vb;
+ v87 = va;
+ v88 = ((u(*)())(v83))(v84, v85, v86, v87);
+ va = v88;
+ v89 = (u)zmknode;
+ v90 = *(u*)(vc + 16UL);
+ v91 = 1UL;
+ v92 = 0UL;
+ v93 = 0UL;
+ v94 = ((u(*)())(v89))(v90, v91, v92, v93);
+ vb = v94;
+ *(u*)(vb + 48UL) = 0UL;
+ v95 = (u)zmknode;
+ v96 = *(u*)(vc + 16UL);
+ v97 = 29UL;
+ v98 = vb;
+ v99 = 0UL;
+ v100 = ((u(*)())(v95))(v96, v97, v98, v99);
+ vb = v100;
+ v101 = (u)zmknode;
+ v102 = *(u*)(vc + 16UL);
+ v103 = 5UL;
+ v104 = vb;
+ v105 = vt;
+ v106 = ((u(*)())(v101))(v102, v103, v104, v105);
+ vt = v106;
+ v107 = (u)zmknode;
+ v108 = *(u*)(vc + 16UL);
+ v109 = 0UL;
+ v110 = 0UL;
+ v111 = 0UL;
+ v112 = ((u(*)())(v107))(v108, v109, v110, v111);
+ vd = v112;
+ *(u*)(vd + 56UL) = (u)"ctx";
+ v113 = (u)zmknode;
+ v114 = *(u*)(vc + 16UL);
+ v115 = 6UL;
+ v116 = vd;
+ v117 = 0UL;
+ v118 = ((u(*)())(v113))(v114, v115, v116, v117);
+ vd = v118;
+ v119 = (u)zmknode;
+ v120 = *(u*)(vc + 16UL);
+ v121 = 0UL;
+ v122 = 0UL;
+ v123 = 0UL;
+ v124 = ((u(*)())(v119))(v120, v121, v122, v123);
+ vb = v124;
+ *(u*)(vb + 56UL) = (u)"lex_skip";
+ v125 = (u)zmknode;
+ v126 = *(u*)(vc + 16UL);
+ v127 = 7UL;
+ v128 = vb;
+ v129 = vd;
+ v130 = ((u(*)())(v125))(v126, v127, v128, v129);
+ vb = v130;
+ v131 = (u)zmknode;
+ v132 = *(u*)(vc + 16UL);
+ v133 = 5UL;
+ v134 = vb;
+ v135 = vt;
+ v136 = ((u(*)())(v131))(v132, v133, v134, v135);
+ vt = v136;
+ v137 = (u)zmknode;
+ v138 = *(u*)(vc + 16UL);
+ v139 = 5UL;
+ v140 = vn;
+ v141 = vt;
+ v142 = ((u(*)())(v137))(v138, v139, v140, v141);
+ vt = v142;
+ v143 = (u)zmknode;
+ v144 = *(u*)(vc + 16UL);
+ v145 = 11UL;
+ v146 = va;
+ v147 = vt;
+ v148 = ((u(*)())(v143))(v144, v145, v146, v147);
+ va = v148;
+ v149 = (u)zdefun;
+ v150 = vc;
+ v151 = va;
+ v152 = ((u(*)())(v149))(v150, v151);
+ v152;
+ return vid + 1UL;
}
-u zlalr_codegen(u vlc) {
- u vi = 0;
- u vt = 0;
- u vnext_tree = 0;
- u vlen = 0;
- u vsym = 0;
- u vaction = 0;
- u v7 = 0;
+u zlexer_compile_charset(u vc, u vn) {
+ u vscratch = 0;
+ u vj = 0;
+ u vstart = 0;
+ u vend = 0;
+ u va = 0;
+ u vb = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
@@ -35791,161 +34061,48 @@ u zlalr_codegen(u vlc) {
u v18 = 0;
u v19 = 0;
u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- *(u*)(vlc + 96UL) = 8UL * *(u*)(vlc + 88UL) * *(u*)(vlc + 80UL);
- v7 = (u)zalloc;
- v8 = *(u*)(vlc + 0UL);
- v9 = *(u*)(vlc + 96UL);
- v10 = ((u(*)())v7)(v8, v9);
- *(u*)(vlc + 104UL) = v10;
- *(u*)(vlc + 112UL) = 8UL * *(u*)(vlc + 88UL) * *(u*)(vlc + 40UL);
- v11 = (u)zalloc;
- v12 = *(u*)(vlc + 0UL);
- v13 = *(u*)(vlc + 112UL);
- v14 = ((u(*)())v11)(v12, v13);
- *(u*)(vlc + 120UL) = v14;
- v15 = (u)zrb_first;
- v16 = *(u*)(vlc + 56UL);
- v17 = ((u(*)())v15)(v16);
- vi = v17;
-b4: if (!vi) goto b10;
- v18 = 0UL;
-b11: if (!v18) goto b8;
- if (!*(u*)(*(u*)(*(u*)(vlc + 32UL) + 1UL * 8UL) + 56UL)) goto b72;
- *(u*)(*(u*)(vlc + 104UL) + 0UL * 8UL) = 97UL;
-b70: return 0UL;
-b72: goto b70;
-b8: v19 = (u)zrb_first;
- v20 = *(u*)(vi + 64UL);
- v21 = ((u(*)())v19)(v20);
- vsym = v21;
-b13: if (!vsym) goto b19;
- v22 = 0UL;
-b20: if (!v22) goto b17;
- v26 = (u)zrb_first;
- v27 = *(u*)(vi + 40UL);
- v28 = ((u(*)())v26)(v27);
- vt = v28;
- vnext_tree = *(u*)(vi + 48UL);
-b26: if (!vt) goto b32;
- v29 = 0UL;
-b33: if (!v29) goto b30;
- if (!vnext_tree) goto b36;
- v30 = (u)zrb_first;
- v31 = vnext_tree;
- v32 = ((u(*)())v30)(v31);
- vt = v32;
- vnext_tree = 0UL;
- goto b26;
-b36: v55 = (u)zrb_next;
- v56 = vi + 0UL;
- v57 = ((u(*)())v55)(v56);
- vi = v57;
- goto b4;
-b30: vlen = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)(vt + 40UL) * 8UL) + 88UL) + *(u*)(vt + 48UL) * 8UL) + 24UL);
- if (*(u*)(vt + 56UL) == vlen) goto b40;
- v33 = (u)zrb_next;
- v34 = vt + 0UL;
- v35 = ((u(*)())v33)(v34);
- vt = v35;
- goto b26;
-b40: v36 = (u)zrb_first;
- v37 = *(u*)(vt + 64UL);
- v38 = ((u(*)())v36)(v37);
- vsym = v38;
-b43: if (!vsym) goto b49;
- v39 = 0UL;
-b50: if (!v39) goto b47;
- v52 = (u)zrb_next;
- v53 = vt + 0UL;
- v54 = ((u(*)())v52)(v53);
- vt = v54;
- goto b26;
-b47: if (!*(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL)) goto b53;
- v40 = (u)zfputc;
- v41 = 0UL;
- v42 = *(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL);
- v43 = ((u(*)())v40)(v41, v42);
- v43;
- v44 = (u)zdie;
- v45 = (u)"/reduce conflict";
- v46 = ((u(*)())v44)(v45);
- v46;
-b51: if (*(u*)(vt + 40UL) != 0UL) goto b64;
- if (*(u*)(vt + 48UL) != 0UL) goto b64;
- v48 = 1UL;
-b66: if (!v48) goto b60;
- if (*(u*)(vt + 56UL) != 1UL) goto b60;
- v47 = 1UL;
-b62: if (!v47) goto b58;
- *(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL) = 97UL;
-b56: v49 = (u)zrb_next;
- v50 = vsym + 0UL;
- v51 = ((u(*)())v49)(v50);
- vsym = v51;
- goto b43;
-b58: *(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL) = (vlen << 32UL) + (*(u*)(vt + 40UL) << 8UL) + 114UL;
- goto b56;
-b60: v47 = 0UL;
- goto b62;
-b64: v48 = 0UL;
- goto b66;
-b53: goto b51;
-b49: v39 = 1UL;
- goto b50;
-b32: v29 = 1UL;
- goto b33;
-b17: if (!*(u*)(vsym + 32UL)) goto b23;
- *(u*)(*(u*)(vlc + 104UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 80UL) + *(u*)(vsym + 40UL)) * 8UL) = (*(u*)(*(u*)(vsym + 56UL) + 32UL) << 8UL) + 115UL;
-b21: v23 = (u)zrb_next;
- v24 = vsym + 0UL;
- v25 = ((u(*)())v23)(v24);
- vsym = v25;
- goto b13;
-b23: *(u*)(*(u*)(vlc + 120UL) + (*(u*)(vi + 32UL) * *(u*)(vlc + 40UL) + *(u*)(vsym + 40UL)) * 8UL) = *(u*)(*(u*)(vsym + 56UL) + 32UL);
- goto b21;
-b19: v22 = 1UL;
+ vscratch = *(u*)(vn + 56UL);
+ vj = 0UL;
+b1: if (vj != 256UL) goto b5;
+ return va;
+b5: if (!((u)*(b*)(vscratch + vj * 1UL))) goto b10;
+ v8 = 0UL;
+b11: if (!(v8)) goto b8;
+ vj = vj + 1UL;
+ goto b1;
+b8: vstart = vj;
+b12: if (vj != 256UL) goto b18;
+ v9 = 1UL;
+b20: if (!(v9)) goto b16;
+ vend = vj - 1UL;
+ v11 = (u)znfa_lit;
+ v12 = vc;
+ v13 = vstart;
+ v14 = vend;
+ v15 = ((u(*)())(v11))(v12, v13, v14);
+ vb = v15;
+ v16 = (u)znfa_alt;
+ v17 = vc;
+ v18 = va;
+ v19 = vb;
+ v20 = ((u(*)())(v16))(v17, v18, v19);
+ va = v20;
+ goto b1;
+b16: vj = vj + 1UL;
+ goto b12;
+b18: if (!((u)*(b*)(vscratch + vj * 1UL))) goto b23;
+ v10 = 0UL;
+b24: if (!(v10)) goto b21;
+ v9 = 1UL;
goto b20;
-b10: v18 = 1UL;
+b21: v9 = 0UL;
+ goto b20;
+b23: v10 = 1UL;
+ goto b24;
+b10: v8 = 1UL;
goto b11;
}
-u zlalr_compile_get_call_table(u vlc) {
+u zlexer_compile_get_tag_table(u vc, u vcg) {
u varg1_type = 0;
u vargs_type = 0;
u vret_type = 0;
@@ -35956,12 +34113,11 @@ u zlalr_compile_get_call_table(u vlc) {
u vb = 0;
u vthis = 0;
u vnext = 0;
- u vprod = 0;
- u vident = 0;
u vi = 0;
u vv = 0;
- u vpos_table = 0;
- u vpos_table_len = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
u v17 = 0;
u v18 = 0;
u v19 = 0;
@@ -36061,231 +34217,144 @@ u zlalr_compile_get_call_table(u vlc) {
u v113 = 0;
u v114 = 0;
u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- u v134 = 0;
- u v135 = 0;
- u v136 = 0;
- u v137 = 0;
- u v138 = 0;
- u v139 = 0;
- u v140 = 0;
- u v141 = 0;
- u v142 = 0;
- u v143 = 0;
- u v144 = 0;
- u v145 = 0;
- u v146 = 0;
- u v147 = 0;
- u v148 = 0;
- u v149 = 0;
- u v150 = 0;
- u v151 = 0;
- u v152 = 0;
- u v153 = 0;
- u v154 = 0;
- u v155 = 0;
- v17 = (u)zmktype0;
- v18 = *(u*)(vlc + 8UL);
- v19 = 1UL;
- v20 = ((u(*)())v17)(v18, v19);
- varg1_type = v20;
- v21 = (u)zmktype1;
- v22 = *(u*)(vlc + 8UL);
- v23 = 4UL;
- v24 = varg1_type;
- v25 = ((u(*)())v21)(v22, v23, v24);
- varg1_type = v25;
- v26 = (u)zmktype1;
- v27 = *(u*)(vlc + 8UL);
- v28 = 5UL;
- v29 = varg1_type;
- v30 = ((u(*)())v26)(v27, v28, v29);
- vargs_type = v30;
- v31 = (u)zmktype0;
- v32 = *(u*)(vlc + 8UL);
- v33 = 1UL;
- v34 = ((u(*)())v31)(v32, v33);
- vret_type = v34;
- v35 = (u)zmktype2;
- v36 = *(u*)(vlc + 8UL);
- v37 = 6UL;
- v38 = vret_type;
- v39 = vargs_type;
- v40 = ((u(*)())v35)(v36, v37, v38, v39);
- vfunc_type = v40;
- v41 = (u)zmktype1;
- v42 = *(u*)(vlc + 8UL);
- v43 = 4UL;
- v44 = vfunc_type;
- v45 = ((u(*)())v41)(v42, v43, v44);
- varg1_type = v45;
- v46 = (u)zmktype1;
- v47 = *(u*)(vlc + 8UL);
- v48 = 5UL;
- v49 = varg1_type;
- v50 = ((u(*)())v46)(v47, v48, v49);
- vargs_type = v50;
- v51 = (u)zmktype0;
- v52 = *(u*)(vlc + 8UL);
- v53 = 1UL;
- v54 = ((u(*)())v51)(v52, v53);
- vret_type = v54;
- v55 = (u)zmktype2;
- v56 = *(u*)(vlc + 8UL);
- v57 = 6UL;
- v58 = vret_type;
- v59 = vargs_type;
- v60 = ((u(*)())v55)(v56, v57, v58, v59);
- vfunc_type = v60;
- v61 = (u)zmkirfunc;
- v62 = *(u*)(vlc + 8UL);
- v63 = (u)"get_call_table";
- v64 = ((u(*)())v61)(v62, v63);
- vic = v64;
- v65 = (u)ziraddarg;
- v66 = vic;
- v67 = (u)"t";
- v68 = varg1_type;
- v69 = ((u(*)())v65)(v66, v67, v68);
- vv = v69;
- vpos_table_len = *(u*)(vlc + 40UL) * 8UL;
- v70 = (u)zalloc;
- v71 = *(u*)(vlc + 0UL);
- v72 = vpos_table_len;
- v73 = ((u(*)())v70)(v71, v72);
- vpos_table = v73;
+ v14 = (u)zmktype0;
+ v15 = vc;
+ v16 = 1UL;
+ v17 = ((u(*)())(v14))(v15, v16);
+ varg1_type = v17;
+ v18 = (u)zmktype1;
+ v19 = vc;
+ v20 = 4UL;
+ v21 = varg1_type;
+ v22 = ((u(*)())(v18))(v19, v20, v21);
+ varg1_type = v22;
+ v23 = (u)zmktype1;
+ v24 = vc;
+ v25 = 5UL;
+ v26 = varg1_type;
+ v27 = ((u(*)())(v23))(v24, v25, v26);
+ vargs_type = v27;
+ v28 = (u)zmktype0;
+ v29 = vc;
+ v30 = 2UL;
+ v31 = ((u(*)())(v28))(v29, v30);
+ vret_type = v31;
+ v32 = (u)zmktype2;
+ v33 = vc;
+ v34 = 6UL;
+ v35 = vret_type;
+ v36 = vargs_type;
+ v37 = ((u(*)())(v32))(v33, v34, v35, v36);
+ vfunc_type = v37;
+ v38 = (u)zmktype1;
+ v39 = vc;
+ v40 = 4UL;
+ v41 = vfunc_type;
+ v42 = ((u(*)())(v38))(v39, v40, v41);
+ varg1_type = v42;
+ v43 = (u)zmktype1;
+ v44 = vc;
+ v45 = 5UL;
+ v46 = varg1_type;
+ v47 = ((u(*)())(v43))(v44, v45, v46);
+ vargs_type = v47;
+ v48 = (u)zmktype0;
+ v49 = vc;
+ v50 = 1UL;
+ v51 = ((u(*)())(v48))(v49, v50);
+ vret_type = v51;
+ v52 = (u)zmktype2;
+ v53 = vc;
+ v54 = 6UL;
+ v55 = vret_type;
+ v56 = vargs_type;
+ v57 = ((u(*)())(v52))(v53, v54, v55, v56);
+ vfunc_type = v57;
+ v58 = (u)zmkirfunc;
+ v59 = vc;
+ v60 = (u)"get_tag_table";
+ v61 = ((u(*)())(v58))(v59, v60);
+ vic = v61;
+ v62 = (u)ziraddarg;
+ v63 = vic;
+ v64 = (u)"t";
+ v65 = varg1_type;
+ v66 = ((u(*)())(v62))(v63, v64, v65);
+ vv = v66;
vi = 0UL;
-b13: if (vi != *(u*)(vlc + 40UL)) goto b17;
- v110 = (u)zmkirconst;
- v111 = vic;
- v112 = 0UL;
- v113 = ((u(*)())v110)(v111, v112);
- vo = v113;
- v114 = (u)zirreturn;
- v115 = vic;
- v116 = vo;
- v117 = ((u(*)())v114)(v115, v116);
- v117;
- v118 = (u)zdefine_ir_func;
- v119 = *(u*)(vlc + 8UL);
- v120 = vic;
- v121 = vfunc_type;
- v122 = ((u(*)())v118)(v119, v120, v121);
- v122;
- v123 = (u)zmktype0;
- v124 = *(u*)(vlc + 8UL);
- v125 = 2UL;
- v126 = ((u(*)())v123)(v124, v125);
- vret_type = v126;
- v127 = (u)zmktype1;
- v128 = *(u*)(vlc + 8UL);
- v129 = 4UL;
- v130 = vret_type;
- v131 = ((u(*)())v127)(v128, v129, v130);
- vret_type = v131;
- v132 = (u)zmktype2;
- v133 = *(u*)(vlc + 8UL);
- v134 = 6UL;
- v135 = vret_type;
- v136 = 0UL;
- v137 = ((u(*)())v132)(v133, v134, v135, v136);
- vfunc_type = v137;
- v138 = (u)zmkirfunc;
- v139 = *(u*)(vlc + 8UL);
- v140 = (u)"get_pos_table";
- v141 = ((u(*)())v138)(v139, v140);
- vic = v141;
- v142 = (u)zmkirstr;
- v143 = vic;
- v144 = vpos_table;
- v145 = vpos_table_len;
- v146 = ((u(*)())v142)(v143, v144, v145);
- vo = v146;
- v147 = (u)zirreturn;
- v148 = vic;
- v149 = vo;
- v150 = ((u(*)())v147)(v148, v149);
- v150;
- v151 = (u)zdefine_ir_func;
- v152 = *(u*)(vlc + 8UL);
- v153 = vic;
- v154 = vfunc_type;
- v155 = ((u(*)())v151)(v152, v153, v154);
- v155;
+b12: if (vi != *(u*)(vcg + 16UL)) goto b16;
+ v103 = (u)zmkirconst;
+ v104 = vic;
+ v105 = 0UL;
+ v106 = ((u(*)())(v103))(v104, v105);
+ vo = v106;
+ v107 = (u)zirreturn;
+ v108 = vic;
+ v109 = vo;
+ v110 = ((u(*)())(v107))(v108, v109);
+ v110;
+ v111 = (u)zdefine_ir_func;
+ v112 = vc;
+ v113 = vic;
+ v114 = vfunc_type;
+ v115 = ((u(*)())(v111))(v112, v113, v114);
+ v115;
return 0UL;
-b17: vprod = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL);
- *(u*)(vpos_table + vi * 8UL) = *(u*)(vprod + 120UL);
- if (!*(u*)(vprod + 112UL)) goto b20;
- v74 = (u)zmkirop;
- v75 = vic;
- v76 = 0UL;
- v77 = 0UL;
- v78 = 0UL;
- v79 = ((u(*)())v74)(v75, v76, v77, v78);
- va = v79;
+b16: if (!(*(u*)(*(u*)(vcg + 32UL) + vi * 8UL))) goto b19;
+ v67 = (u)zmkirop;
+ v68 = vic;
+ v69 = 0UL;
+ v70 = 0UL;
+ v71 = 0UL;
+ v72 = ((u(*)())(v67))(v68, v69, v70, v71);
+ va = v72;
*(u*)(va + 24UL) = *(u*)(vv + 32UL);
- v80 = (u)zmkirconst;
- v81 = vic;
- v82 = 8UL * vi;
- v83 = ((u(*)())v80)(v81, v82);
- vb = v83;
- v84 = (u)zmkirop;
- v85 = vic;
- v86 = 11UL;
- v87 = va;
- v88 = vb;
- v89 = ((u(*)())v84)(v85, v86, v87, v88);
- va = v89;
- v90 = (u)zmkirop;
- v91 = vic;
- v92 = 5UL;
- v93 = va;
- v94 = 0UL;
- v95 = ((u(*)())v90)(v91, v92, v93, v94);
- va = v95;
- v96 = (u)zmkirfuncref;
- v97 = vic;
- v98 = *(u*)(vprod + 112UL);
- v99 = ((u(*)())v96)(v97, v98);
- vb = v99;
- v100 = (u)zmkirop;
- v101 = vic;
- v102 = 6UL;
- v103 = va;
- v104 = vb;
- v105 = ((u(*)())v100)(v101, v102, v103, v104);
- vo = v105;
- *(u*)(vo + 48UL) = *(u*)(varg1_type + 16UL);
- v106 = (u)ziraddop;
- v107 = vic;
- v108 = vo;
- v109 = ((u(*)())v106)(v107, v108);
- v109;
-b18: vi = vi + 1UL;
- goto b13;
-b20: goto b18;
+ v73 = (u)zmkirconst;
+ v74 = vic;
+ v75 = 8UL * vi;
+ v76 = ((u(*)())(v73))(v74, v75);
+ vb = v76;
+ v77 = (u)zmkirop;
+ v78 = vic;
+ v79 = 11UL;
+ v80 = va;
+ v81 = vb;
+ v82 = ((u(*)())(v77))(v78, v79, v80, v81);
+ va = v82;
+ v83 = (u)zmkirop;
+ v84 = vic;
+ v85 = 5UL;
+ v86 = va;
+ v87 = 0UL;
+ v88 = ((u(*)())(v83))(v84, v85, v86, v87);
+ va = v88;
+ v89 = (u)zmkirfuncref;
+ v90 = vic;
+ v91 = *(u*)(*(u*)(vcg + 32UL) + vi * 8UL);
+ v92 = ((u(*)())(v89))(v90, v91);
+ vb = v92;
+ v93 = (u)zmkirop;
+ v94 = vic;
+ v95 = 6UL;
+ v96 = va;
+ v97 = vb;
+ v98 = ((u(*)())(v93))(v94, v95, v96, v97);
+ vo = v98;
+ *(u*)(vo + 48UL) = *(u*)(varg1_type + 16UL);
+ v99 = (u)ziraddop;
+ v100 = vic;
+ v101 = vo;
+ v102 = ((u(*)())(v99))(v100, v101);
+ v102;
+b17: vi = vi + 1UL;
+ goto b12;
+b19: goto b17;
}
-u zlalr_compiler(u vc, u vpn, u verr) {
- u v_lc[17] = {0};
- u vlc = 0;
- u v5 = 0;
+u zlexer_compile_pattern(u vc, u vn) {
+ u valt = 0;
+ u va = 0;
+ u vb = 0;
+ u vkind = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -36304,42 +34373,149 @@ u zlalr_compiler(u vc, u vpn, u verr) {
u v21 = 0;
u v22 = 0;
u v23 = 0;
- vlc = (u)v_lc;
- *(u*)(vlc + 0UL) = *(u*)(vc + 0UL);
- *(u*)(vlc + 8UL) = vc;
- *(u*)(vlc + 16UL) = verr;
- v5 = (u)zlalr_rules;
- v6 = vlc;
- v7 = vpn;
- v8 = ((u(*)())v5)(v6, v7);
- v8;
- v9 = (u)zlalr_items;
- v10 = vlc;
- v11 = ((u(*)())v9)(v10);
- v11;
- v12 = (u)zlalr_first;
- v13 = vlc;
- v14 = ((u(*)())v12)(v13);
- v14;
- v15 = (u)zlalr_lookahead;
- v16 = vlc;
- v17 = ((u(*)())v15)(v16);
- v17;
- v18 = (u)zlalr_codegen;
- v19 = vlc;
- v20 = ((u(*)())v18)(v19);
- v20;
- v21 = (u)zlalr_output;
- v22 = vlc;
- v23 = ((u(*)())v21)(v22);
- v23;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ vkind = *(u*)(vn + 0UL);
+ if (vkind != 3UL) goto b3;
+ v6 = (u)zlexer_compile_str;
+ v7 = vc;
+ v8 = vn;
+ v9 = ((u(*)())(v6))(v7, v8);
+ return v9;
+b3: if (vkind != 62UL) goto b6;
+ v10 = (u)znfa_any;
+ v11 = vc;
+ v12 = ((u(*)())(v10))(v11);
+ return v12;
+b6: if (vkind != 61UL) goto b9;
+ v13 = (u)zlexer_compile_charset;
+ v14 = vc;
+ v15 = vn;
+ v16 = ((u(*)())(v13))(v14, v15);
+ return v16;
+b9: if (vkind != 63UL) goto b12;
+ v17 = (u)zlexer_compile_pattern;
+ v18 = vc;
+ v19 = *(u*)(vn + 8UL);
+ v20 = ((u(*)())(v17))(v18, v19);
+ va = v20;
+ v21 = (u)znfa_star;
+ v22 = vc;
+ v23 = va;
+ v24 = ((u(*)())(v21))(v22, v23);
+ return v24;
+b12: if (vkind != 64UL) goto b16;
+ v25 = (u)zlexer_compile_pattern;
+ v26 = vc;
+ v27 = *(u*)(vn + 8UL);
+ v28 = ((u(*)())(v25))(v26, v27);
+ va = v28;
+ v29 = (u)znfa_plus;
+ v30 = vc;
+ v31 = va;
+ v32 = ((u(*)())(v29))(v30, v31);
+ return v32;
+b16: if (vkind != 65UL) goto b20;
+ v33 = (u)zlexer_compile_pattern;
+ v34 = vc;
+ v35 = *(u*)(vn + 8UL);
+ v36 = ((u(*)())(v33))(v34, v35);
+ va = v36;
+ v37 = (u)znfa_qmark;
+ v38 = vc;
+ v39 = va;
+ v40 = ((u(*)())(v37))(v38, v39);
+ return v40;
+b20: if (vkind != 66UL) goto b24;
+ v41 = (u)zlexer_compile_pattern;
+ v42 = vc;
+ v43 = *(u*)(vn + 8UL);
+ v44 = ((u(*)())(v41))(v42, v43);
+ va = v44;
+ v45 = (u)zlexer_compile_pattern;
+ v46 = vc;
+ v47 = *(u*)(vn + 16UL);
+ v48 = ((u(*)())(v45))(v46, v47);
+ vb = v48;
+ v49 = (u)znfa_concat;
+ v50 = vc;
+ v51 = va;
+ v52 = vb;
+ v53 = ((u(*)())(v49))(v50, v51, v52);
+ return v53;
+b24: if (vkind != 67UL) goto b29;
+ v54 = (u)zlexer_compile_pattern;
+ v55 = vc;
+ v56 = *(u*)(vn + 8UL);
+ v57 = ((u(*)())(v54))(v55, v56);
+ va = v57;
+ v58 = (u)zlexer_compile_pattern;
+ v59 = vc;
+ v60 = *(u*)(vn + 16UL);
+ v61 = ((u(*)())(v58))(v59, v60);
+ vb = v61;
+ v62 = (u)znfa_alt;
+ v63 = vc;
+ v64 = va;
+ v65 = vb;
+ v66 = ((u(*)())(v62))(v63, v64, v65);
+ return v66;
+b29: v67 = (u)zdie;
+ v68 = (u)"unknown lex node";
+ v69 = ((u(*)())(v67))(v68);
+ v69;
return 0UL;
}
-u zlalr_finditem(u vlc, u vitemset, u vitem) {
- u vp = 0;
- u vlink = 0;
- u vd = 0;
- u vdir = 0;
+u zlexer_compile_rule(u vc, u vn) {
+ u vpat = 0;
+ u vact = 0;
+ u va = 0;
+ u vb = 0;
+ u vs = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -36356,102 +34532,135 @@ u zlalr_finditem(u vlc, u vitemset, u vitem) {
u v20 = 0;
u v21 = 0;
u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- vd = *(u*)(vitemset + 40UL);
-b1: if (!vd) goto b7;
- v7 = 0UL;
-b8: if (!v7) goto b5;
- vp = 0UL;
- vlink = vitemset + 48UL;
-b15: vd = *(u*)vlink;
- if (!vd) goto b21;
- v12 = 0UL;
-b22: if (!v12) goto b19;
- v17 = (u)zalloc;
- v18 = *(u*)(vlc + 0UL);
- v19 = 72UL;
- v20 = ((u(*)())v17)(v18, v19);
- vd = v20;
- *(u*)(vd + 40UL) = *(u*)(vitem + 40UL);
- *(u*)(vd + 48UL) = *(u*)(vitem + 48UL);
- *(u*)(vd + 56UL) = *(u*)(vitem + 56UL);
- v21 = (u)zrb_link;
- v22 = vitemset + 48UL;
- v23 = vlink;
- v24 = vp;
- v25 = vd + 0UL;
- v26 = ((u(*)())v21)(v22, v23, v24, v25);
- v26;
- return vd;
-b19: v13 = (u)zlalr_itemcmp;
- v14 = vitem;
- v15 = vd;
- v16 = ((u(*)())v13)(v14, v15);
- vdir = v16;
- if ((s)vdir >= (s)0UL) goto b26;
- vlink = vd + 0UL + 16UL;
- vp = vd + 0UL;
-b24: goto b15;
-b26: if ((s)vdir <= (s)0UL) goto b28;
- vlink = vd + 0UL + 24UL;
- vp = vd + 0UL;
- goto b24;
-b28: return vd;
-b21: v12 = 1UL;
- goto b22;
-b5: v8 = (u)zlalr_itemcmp;
- v9 = vitem;
- v10 = vd;
- v11 = ((u(*)())v8)(v9, v10);
- vdir = v11;
- if ((s)vdir >= (s)0UL) goto b12;
- vd = *(u*)(vd + 0UL + 16UL);
-b10: goto b1;
-b12: if ((s)vdir <= (s)0UL) goto b14;
- vd = *(u*)(vd + 0UL + 24UL);
- goto b10;
-b14: return vd;
-b7: v7 = 1UL;
- goto b8;
+ vpat = *(u*)(vn + 8UL);
+ vact = *(u*)(vn + 16UL);
+ v7 = (u)zlexer_compile_pattern;
+ v8 = vc;
+ v9 = vpat;
+ v10 = ((u(*)())(v7))(v8, v9);
+ va = v10;
+ v11 = (u)znfa_empty;
+ v12 = vc;
+ v13 = ((u(*)())(v11))(v12);
+ vb = v13;
+ v14 = (u)zlexer_compile_action;
+ v15 = vc;
+ v16 = vact;
+ v17 = ((u(*)())(v14))(v15, v16);
+ *(u*)(vb + 8UL) = v17;
+ v18 = (u)znfa_concat;
+ v19 = vc;
+ v20 = va;
+ v21 = vb;
+ v22 = ((u(*)())(v18))(v19, v20, v21);
+ return v22;
}
-u zlalr_findout(u vlc, u vw, u vsym) {
- u vd = 0;
- u vr[10] = {0};
- u vdir = 0;
+u zlexer_compile_str(u vc, u vn) {
+ u vi = 0;
+ u vlen = 0;
+ u vok = 0;
+ u vch = 0;
+ u va = 0;
+ u vb = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ vi = 0UL;
+ v8 = (u)znfa_empty;
+ v9 = vc;
+ v10 = ((u(*)())(v8))(v9);
+ va = v10;
+b2: vch = (u)*(b*)(*(u*)(vn + 56UL) + vi * 1UL);
+ if (vch != 0UL) goto b6;
+ return va;
+b6: v11 = (u)znfa_lit;
+ v12 = vc;
+ v13 = vch;
+ v14 = vch;
+ v15 = ((u(*)())(v11))(v12, v13, v14);
+ vb = v15;
+ v16 = (u)znfa_concat;
+ v17 = vc;
+ v18 = va;
+ v19 = vb;
+ v20 = ((u(*)())(v16))(v17, v18, v19);
+ va = v20;
+ vi = vi + 1UL;
+ goto b2;
+}
+u zlexer_explode(u vc, u vn) {
+ u v_k[6] = {0};
+ u vk = 0;
+ u vret = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
- vd = *(u*)(*(u*)(vw + 80UL) + 64UL);
-b1: v6 = (u)zlalr_pointcmp;
- v7 = vsym;
- v8 = vd;
- v9 = ((u(*)())v6)(v7, v8);
- vdir = v9;
- if ((s)vdir >= (s)0UL) goto b6;
- vd = *(u*)(vd + 0UL + 16UL);
-b4: goto b1;
-b6: if ((s)vdir <= (s)0UL) goto b8;
- vd = *(u*)(vd + 0UL + 24UL);
- goto b4;
-b8: *(u*)(vw + 80UL) = *(u*)(vd + 56UL);
- *(u*)(vw + 8UL + 56UL) = *(u*)(vw + 8UL + 56UL) + 1UL;
- return 0UL;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ vk = (u)v_k;
+ *(u*)(vk + 0UL) = *(u*)(vc + 0UL);
+ if (*(u*)(vn + 16UL) == -1UL) goto b3;
+ v5 = (u)zdie;
+ v6 = (u)"expected epsilon";
+ v7 = ((u(*)())(v5))(v6);
+ v7;
+b1: v8 = (u)zdfakey_add;
+ v9 = vk;
+ v10 = vn;
+ v11 = ((u(*)())(v8))(v9, v10);
+ v11;
+ v12 = (u)znfa2dfa;
+ v13 = vc;
+ v14 = vk;
+ v15 = ((u(*)())(v12))(v13, v14);
+ vret = v15;
+ v16 = (u)zfree;
+ v17 = *(u*)(vk + 0UL);
+ v18 = *(u*)(vk + 8UL);
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ v20 = (u)zdfa_minimize;
+ v21 = vc;
+ v22 = vret;
+ v23 = ((u(*)())(v20))(v21, v22);
+ vret = v23;
+ return vret;
+b3: goto b1;
}
-u zlalr_first(u vlc) {
- u vuse = 0;
- u vp = 0;
- u vqueue = 0;
- u vprod = 0;
- u valt = 0;
- u vsym = 0;
- u vref = 0;
- u vi = 0;
- u vj = 0;
- u vk = 0;
+u zlexer_output(u vc, u vcg) {
+ u vic = 0;
+ u vo = 0;
+ u vret_type = 0;
+ u vfunc_type = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
u v11 = 0;
u v12 = 0;
u v13 = 0;
@@ -36480,133 +34689,127 @@ u zlalr_first(u vlc) {
u v36 = 0;
u v37 = 0;
u v38 = 0;
- vi = 0UL;
-b1: if (vi != *(u*)(vlc + 40UL)) goto b5;
-b18: vp = vqueue;
- if (!vp) goto b24;
- v16 = 0UL;
-b25: if (!v16) goto b22;
- return 0UL;
-b22: *(u*)(vp + 72UL) = 0UL;
- vqueue = *(u*)(vp + 80UL);
- v17 = (u)zrb_first;
- v18 = *(u*)(*(u*)(vp + 48UL) + 40UL);
- v19 = ((u(*)())v17)(v18);
- vuse = v19;
-b27: if (!vuse) goto b33;
- v20 = 0UL;
-b34: if (!v20) goto b31;
- goto b18;
-b31: vi = *(u*)(vuse + 40UL);
- vprod = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL);
- vj = 0UL;
-b35: if (vj != *(u*)(vprod + 96UL)) goto b39;
- v36 = (u)zrb_next;
- v37 = vuse + 0UL;
- v38 = ((u(*)())v36)(v37);
- vuse = v38;
- goto b27;
-b39: valt = *(u*)(*(u*)(vprod + 88UL) + vj * 8UL);
- vk = 0UL;
-b40: if (vk != *(u*)(valt + 24UL)) goto b44;
- if (!*(u*)(vprod + 56UL)) goto b49;
- v21 = 0UL;
-b50: if (!v21) goto b47;
- *(u*)(vprod + 56UL) = 1UL;
- if (!*(u*)(vprod + 72UL)) goto b55;
- v22 = 0UL;
-b56: if (!v22) goto b53;
- *(u*)(vprod + 72UL) = 1UL;
- *(u*)(vprod + 80UL) = vqueue;
- vqueue = vprod;
-b51:b45:b41: vj = vj + 1UL;
- goto b35;
-b53: goto b51;
-b55: v22 = 1UL;
- goto b56;
-b47: goto b45;
-b49: v21 = 1UL;
- goto b50;
-b44: vsym = *(u*)(valt + 16UL) + vk * 64UL;
- if (!*(u*)(vsym + 32UL)) goto b59;
- v23 = (u)zlalr_add_first;
- v24 = vlc;
- v25 = vprod + 64UL;
- v26 = vsym;
- v27 = ((u(*)())v23)(v24, v25, v26);
- if (!v27) goto b62;
- if (!*(u*)(vprod + 72UL)) goto b68;
- v28 = 0UL;
-b69: if (!v28) goto b66;
- *(u*)(vprod + 72UL) = 1UL;
- *(u*)(vprod + 80UL) = vqueue;
- vqueue = vprod;
-b64:b60: goto b41;
-b66: goto b64;
-b68: v28 = 1UL;
- goto b69;
-b62: goto b60;
-b59: vref = *(u*)(*(u*)(vlc + 32UL) + *(u*)(vsym + 40UL) * 8UL);
- v29 = (u)zlalr_union_first;
- v30 = vlc;
- v31 = vprod + 64UL;
- v32 = *(u*)(vref + 64UL);
- v33 = ((u(*)())v29)(v30, v31, v32);
- if (!v33) goto b72;
- if (!*(u*)(vprod + 72UL)) goto b78;
- v34 = 0UL;
-b79: if (!v34) goto b76;
- *(u*)(vprod + 72UL) = 1UL;
- *(u*)(vprod + 80UL) = vqueue;
- vqueue = vprod;
-b74:b70: if (!*(u*)(vref + 56UL)) goto b84;
- v35 = 0UL;
-b85: if (!v35) goto b82;
- goto b41;
-b82: vk = vk + 1UL;
- goto b40;
-b84: v35 = 1UL;
- goto b85;
-b76: goto b74;
-b78: v34 = 1UL;
- goto b79;
-b72: goto b70;
-b33: v20 = 1UL;
- goto b34;
-b24: v16 = 1UL;
- goto b25;
-b5: vj = 0UL;
-b6: if (vj != *(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 96UL)) goto b10;
- *(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 72UL) = 1UL;
- *(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 80UL) = vqueue;
- vqueue = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL);
- vi = vi + 1UL;
- goto b1;
-b10: if (*(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 88UL) + vj * 8UL) + 24UL) != 0UL) goto b13;
- *(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 56UL) = 1UL;
- vj = vj + 1UL;
- goto b6;
-b13: if (!*(u*)(*(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 88UL) + vj * 8UL) + 16UL) + 0UL * 64UL + 32UL)) goto b16;
- v11 = (u)zlalr_addlook;
- v12 = vlc;
- v13 = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 64UL;
- v14 = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + vi * 8UL) + 88UL) + vj * 8UL) + 16UL) + 0UL * 64UL;
- v15 = ((u(*)())v11)(v12, v13, v14);
- v15;
-b14: vj = vj + 1UL;
- goto b6;
-b16: goto b14;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ v6 = (u)zmktype0;
+ v7 = vc;
+ v8 = 2UL;
+ v9 = ((u(*)())(v6))(v7, v8);
+ vret_type = v9;
+ v10 = (u)zmktype1;
+ v11 = vc;
+ v12 = 4UL;
+ v13 = vret_type;
+ v14 = ((u(*)())(v10))(v11, v12, v13);
+ vret_type = v14;
+ v15 = (u)zmktype2;
+ v16 = vc;
+ v17 = 6UL;
+ v18 = vret_type;
+ v19 = 0UL;
+ v20 = ((u(*)())(v15))(v16, v17, v18, v19);
+ vfunc_type = v20;
+ v21 = (u)zmkirfunc;
+ v22 = vc;
+ v23 = (u)"get_link_table";
+ v24 = ((u(*)())(v21))(v22, v23);
+ vic = v24;
+ v25 = (u)zmkirstr;
+ v26 = vic;
+ v27 = *(u*)(vcg + 48UL);
+ v28 = *(u*)(vcg + 56UL);
+ v29 = ((u(*)())(v25))(v26, v27, v28);
+ vo = v29;
+ v30 = (u)zirreturn;
+ v31 = vic;
+ v32 = vo;
+ v33 = ((u(*)())(v30))(v31, v32);
+ v33;
+ v34 = (u)zdefine_ir_func;
+ v35 = vc;
+ v36 = vic;
+ v37 = vfunc_type;
+ v38 = ((u(*)())(v34))(v35, v36, v37);
+ v38;
+ v39 = (u)zmktype0;
+ v40 = vc;
+ v41 = 2UL;
+ v42 = ((u(*)())(v39))(v40, v41);
+ vret_type = v42;
+ v43 = (u)zmktype2;
+ v44 = vc;
+ v45 = 6UL;
+ v46 = vret_type;
+ v47 = 0UL;
+ v48 = ((u(*)())(v43))(v44, v45, v46, v47);
+ vfunc_type = v48;
+ v49 = (u)zmkirfunc;
+ v50 = vc;
+ v51 = (u)"get_num_states";
+ v52 = ((u(*)())(v49))(v50, v51);
+ vic = v52;
+ v53 = (u)zmkirconst;
+ v54 = vic;
+ v55 = *(u*)(vcg + 16UL);
+ v56 = ((u(*)())(v53))(v54, v55);
+ vo = v56;
+ v57 = (u)zirreturn;
+ v58 = vic;
+ v59 = vo;
+ v60 = ((u(*)())(v57))(v58, v59);
+ v60;
+ v61 = (u)zdefine_ir_func;
+ v62 = vc;
+ v63 = vic;
+ v64 = vfunc_type;
+ v65 = ((u(*)())(v61))(v62, v63, v64);
+ v65;
+ v66 = (u)zlexer_compile_get_tag_table;
+ v67 = vc;
+ v68 = vcg;
+ v69 = ((u(*)())(v66))(v67, v68);
+ v69;
+ return 0UL;
}
-u zlalr_goto(u vlc, u vi) {
+u zlocals_to_ir(u vic, u vn) {
+ u vname = 0;
u vt = 0;
- u va = 0;
- u vseen = 0;
- u vqueue = 0;
- u vprod = 0;
- u valt = 0;
- u vsym = 0;
- u vr[10] = {0};
- u vj = 0;
+ u vkind = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
u v11 = 0;
u v12 = 0;
u v13 = 0;
@@ -36625,6 +34828,94 @@ u zlalr_goto(u vlc, u vi) {
u v26 = 0;
u v27 = 0;
u v28 = 0;
+ if (!(vn)) goto b5;
+ v5 = 0UL;
+b6: if (!(v5)) goto b3;
+ return 0UL;
+b3: *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vn + 40UL);
+ vkind = *(u*)(vn + 0UL);
+ if (vkind != 21UL) goto b9;
+b10: if (!(vn)) goto b16;
+ v6 = 0UL;
+b17: if (!(v6)) goto b14;
+b7: return 0UL;
+b14: v7 = (u)zlocals_to_ir;
+ v8 = vic;
+ v9 = *(u*)(*(u*)(vn + 8UL) + 16UL);
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+ vn = *(u*)(vn + 16UL);
+ goto b10;
+b16: v6 = 1UL;
+ goto b17;
+b9: if (vkind != 5UL) goto b20;
+b21: if (!(vn)) goto b27;
+ v11 = 0UL;
+b28: if (!(v11)) goto b25;
+ goto b7;
+b25: v12 = (u)zlocals_to_ir;
+ v13 = vic;
+ v14 = *(u*)(vn + 8UL);
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ vn = *(u*)(vn + 16UL);
+ goto b21;
+b27: v11 = 1UL;
+ goto b28;
+b20: if (vkind != 26UL) goto b31;
+ v16 = (u)zlocals_to_ir;
+ v17 = vic;
+ v18 = *(u*)(vn + 8UL);
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ goto b7;
+b31: if (vkind != 30UL) goto b34;
+ vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v20 = (u)zprototype;
+ v21 = *(u*)(vic + 0UL);
+ v22 = *(u*)(vn + 16UL);
+ v23 = ((u(*)())(v20))(v21, v22);
+ vt = v23;
+ v24 = (u)ziraddvar;
+ v25 = vic;
+ v26 = vname;
+ v27 = vt;
+ v28 = ((u(*)())(v24))(v25, v26, v27);
+ v28;
+ goto b7;
+b34: goto b7;
+b5: v5 = 1UL;
+ goto b6;
+}
+u zmain(u vargc, u vargv, u venvp) {
+ u va = 0;
+ u vc = 0;
+ u vp = 0;
+ u vi = 0;
+ u vshow = 0;
+ u vout_filename = 0;
+ u vcout_filename = 0;
+ u verr = 0;
+ u vinput = 0;
+ u vtmp = 0;
+ u vlink = 0;
+ u vsem = 0;
+ u v_aarch64[4] = {0};
+ u v_x86_64[4] = {0};
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
u v29 = 0;
u v30 = 0;
u v31 = 0;
@@ -36650,172 +34941,372 @@ u zlalr_goto(u vlc, u vi) {
u v51 = 0;
u v52 = 0;
u v53 = 0;
- v11 = (u)zlalr_mkitemset;
- v12 = vlc;
- v13 = ((u(*)())v11)(v12);
- vseen = v13;
- v14 = (u)zrb_first;
- v15 = *(u*)(vi + 40UL);
- v16 = ((u(*)())v14)(v15);
- vt = v16;
-b3: if (!vt) goto b9;
- v17 = 0UL;
-b10: if (!v17) goto b7;
-b16: vt = vqueue;
- if (!vt) goto b22;
- v26 = 0UL;
-b23: if (!v26) goto b20;
- v43 = (u)zrb_first;
- v44 = *(u*)(vi + 64UL);
- v45 = ((u(*)())v43)(v44);
- vsym = v45;
-b42: if (!vsym) goto b48;
- v46 = 0UL;
-b49: if (!v46) goto b46;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ vlink = (u)&vinput;
+ v17 = (u)zsetup_alloc;
+ v18 = (u)&va;
+ v19 = ((u(*)())(v17))(v18);
+ v19;
+ v20 = (u)zfopen;
+ v21 = 2UL;
+ v22 = (u)&va;
+ v23 = ((u(*)())(v20))(v21, v22);
+ verr = v23;
+ v24 = (u)zcomp_setup;
+ v25 = (u)&va;
+ v26 = verr;
+ v27 = ((u(*)())(v24))(v25, v26);
+ vc = v27;
+ *(u*)((u)v_aarch64 + 0UL) = 183UL;
+ *(u*)((u)v_aarch64 + 8UL) = (u)zaarch64_builtin;
+ *(u*)((u)v_aarch64 + 16UL) = (u)zaarch64_output_ir;
+ *(u*)((u)v_x86_64 + 0UL) = 62UL;
+ *(u*)((u)v_x86_64 + 8UL) = (u)zx86_64_builtin;
+ *(u*)((u)v_x86_64 + 16UL) = (u)zx86_64_output_ir;
+ v28 = (u)zget_machine;
+ v29 = ((u(*)())(v28))();
+ if (v29 != 183UL) goto b6;
+ *(u*)(vc + 160UL) = (u)v_aarch64;
+b4: vi = 1UL;
+b11: if ((s)(vi) < (s)(vargc)) goto b15;
+ vtmp = vinput;
+b99: if (!(vtmp)) goto b105;
+ v105 = 0UL;
+b106: if (!(v105)) goto b103;
+ if (!(vshow)) goto b111;
+ v115 = (u)zshow_node;
+ v116 = verr;
+ v117 = vp;
+ v118 = ((u(*)())(v115))(v116, v117);
+ v118;
+ v119 = (u)zfflush;
+ v120 = verr;
+ v121 = ((u(*)())(v119))(v120);
+ v121;
return 0UL;
-b46: v47 = (u)zlalr_memoset;
- v48 = vlc;
- v49 = *(u*)(vsym + 56UL);
- v50 = ((u(*)())v47)(v48, v49);
- *(u*)(vsym + 56UL) = v50;
- v51 = (u)zrb_next;
- v52 = vsym + 0UL;
- v53 = ((u(*)())v51)(v52);
- vsym = v53;
- goto b42;
-b48: v46 = 1UL;
- goto b49;
-b20: vqueue = *(u*)(vt + 32UL);
- valt = *(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)(vt + 40UL) * 8UL) + 88UL) + *(u*)(vt + 48UL) * 8UL);
- if (*(u*)(vt + 56UL) != *(u*)(valt + 24UL)) goto b26;
- goto b16;
-b26: vsym = *(u*)(valt + 16UL) + *(u*)(vt + 56UL) * 64UL;
- *(u*)((u)vr + 40UL) = *(u*)(vt + 40UL);
- *(u*)((u)vr + 48UL) = *(u*)(vt + 48UL);
- *(u*)((u)vr + 56UL) = *(u*)(vt + 56UL) + 1UL;
- v27 = (u)zlalr_assoc;
- v28 = vlc;
- v29 = vseen;
- v30 = (u)vr;
- v31 = ((u(*)())v27)(v28, v29, v30);
- v31;
- v32 = (u)zlalr_linkout;
- v33 = vlc;
- v34 = vi + 64UL;
- v35 = vsym;
- v36 = (u)vr;
- v37 = ((u(*)())v32)(v33, v34, v35, v36);
- v37;
- if (!*(u*)(vsym + 32UL)) goto b31;
- goto b16;
-b31: vprod = *(u*)(*(u*)(vlc + 32UL) + *(u*)(vsym + 40UL) * 8UL);
- vj = 0UL;
-b32: if (vj != *(u*)(vprod + 96UL)) goto b36;
- goto b16;
-b36: *(u*)((u)vr + 40UL) = *(u*)(vsym + 40UL);
- *(u*)((u)vr + 48UL) = vj;
- *(u*)((u)vr + 56UL) = 0UL;
- v38 = (u)zlalr_assoc;
- v39 = vlc;
- v40 = vseen;
- v41 = (u)vr;
- v42 = ((u(*)())v38)(v39, v40, v41);
- va = v42;
- if (!va) goto b40;
- *(u*)(va + 32UL) = vqueue;
- vqueue = va;
-b38: vj = vj + 1UL;
+b111: if (!(*(u*)(vc + 160UL))) goto b118;
+ v122 = 0UL;
+b119: if (!(v122)) goto b116;
+ v123 = (u)zdie;
+ v124 = (u)"machine not set";
+ v125 = ((u(*)())(v123))(v124);
+ v125;
+b114: v126 = (u)zcompile;
+ v127 = vc;
+ v128 = vp;
+ v129 = ((u(*)())(v126))(v127, v128);
+ v129;
+ if (!(vcout_filename)) goto b124;
+ v130 = (u)zopen_coutput;
+ v131 = vc;
+ v132 = vcout_filename;
+ v133 = ((u(*)())(v130))(v131, v132);
+ v133;
+ v134 = (u)zircout;
+ v135 = vc;
+ v136 = ((u(*)())(v134))(v135);
+ v136;
+b122: if (!(vout_filename)) goto b129;
+ v137 = *(u*)(*(u*)(vc + 160UL) + 8UL);
+ v138 = vc;
+ v139 = ((u(*)())(v137))(v138);
+ v139;
+ v140 = (u)zopen_output;
+ v141 = *(u*)(vc + 48UL);
+ v142 = vout_filename;
+ v143 = ((u(*)())(v140))(v141, v142);
+ v143;
+ v144 = (u)zwriteout;
+ v145 = *(u*)(vc + 48UL);
+ v146 = *(u*)(*(u*)(vc + 160UL) + 0UL);
+ v147 = *(u*)(vc + 88UL);
+ v148 = *(u*)(vc + 96UL);
+ v149 = ((u(*)())(v144))(v145, v146, v147, v148);
+ v149;
+b127: return 0UL;
+b129: goto b127;
+b124: goto b122;
+b116: goto b114;
+b118: v122 = 1UL;
+ goto b119;
+b103: v106 = (u)zdolalr;
+ v107 = vc;
+ v108 = *(u*)(vtmp + 8UL);
+ v109 = verr;
+ v110 = ((u(*)())(v106))(v107, v108, v109);
+ vsem = v110;
+ v111 = (u)zconcat_program;
+ v112 = vp;
+ v113 = *(u*)(vsem + 0UL);
+ v114 = ((u(*)())(v111))(v112, v113);
+ vp = v114;
+ vtmp = *(u*)(vtmp + 0UL);
+ goto b99;
+b105: v105 = 1UL;
+ goto b106;
+b15: v33 = (u)zstrcmp;
+ v34 = *(u*)(vargv + vi * 8UL);
+ v35 = (u)"-o";
+ v36 = ((u(*)())(v33))(v34, v35);
+ if (!(v36)) goto b20;
+ v32 = 0UL;
+b21: if (!(v32)) goto b18;
+ vi = vi + 1UL;
+ if ((s)(vi) < (s)(vargc)) goto b25;
+ v37 = (u)zdie;
+ v38 = (u)"invalid -o at end of argument list";
+ v39 = ((u(*)())(v37))(v38);
+ v39;
+b23: vout_filename = *(u*)(vargv + vi * 8UL);
+ vi = vi + 1UL;
+ goto b11;
+b25: goto b23;
+b18: v41 = (u)zstrcmp;
+ v42 = *(u*)(vargv + vi * 8UL);
+ v43 = (u)"-fdump";
+ v44 = ((u(*)())(v41))(v42, v43);
+ if (!(v44)) goto b31;
+ v40 = 0UL;
+b32: if (!(v40)) goto b29;
+ vi = vi + 1UL;
+ vshow = 1UL;
+ goto b11;
+b29: v46 = (u)zstrcmp;
+ v47 = *(u*)(vargv + vi * 8UL);
+ v48 = (u)"-m";
+ v49 = ((u(*)())(v46))(v47, v48);
+ if (!(v49)) goto b38;
+ v45 = 0UL;
+b39: if (!(v45)) goto b36;
+ vi = vi + 1UL;
+ if ((s)(vi) < (s)(vargc)) goto b43;
+ v50 = (u)zdie;
+ v51 = (u)"invalid -m at end of argument list";
+ v52 = ((u(*)())(v50))(v51);
+ v52;
+b41: v54 = (u)zstrcmp;
+ v55 = *(u*)(vargv + vi * 8UL);
+ v56 = (u)"aarch64";
+ v57 = ((u(*)())(v54))(v55, v56);
+ if (!(v57)) goto b49;
+ v53 = 0UL;
+b50: if (!(v53)) goto b47;
+ *(u*)(vc + 160UL) = (u)v_aarch64;
+ vi = vi + 1UL;
+b45: goto b11;
+b47: v59 = (u)zstrcmp;
+ v60 = *(u*)(vargv + vi * 8UL);
+ v61 = (u)"x86_64";
+ v62 = ((u(*)())(v59))(v60, v61);
+ if (!(v62)) goto b55;
+ v58 = 0UL;
+b56: if (!(v58)) goto b53;
+ *(u*)(vc + 160UL) = (u)v_x86_64;
+ vi = vi + 1UL;
+ goto b45;
+b53: v63 = (u)zdie;
+ v64 = (u)"unknown machine";
+ v65 = ((u(*)())(v63))(v64);
+ v65;
+ goto b45;
+b55: v58 = 1UL;
+ goto b56;
+b49: v53 = 1UL;
+ goto b50;
+b43: goto b41;
+b36: v67 = (u)zstrcmp;
+ v68 = *(u*)(vargv + vi * 8UL);
+ v69 = (u)"-C";
+ v70 = ((u(*)())(v67))(v68, v69);
+ if (!(v70)) goto b63;
+ v66 = 0UL;
+b64: if (!(v66)) goto b61;
+ vi = vi + 1UL;
+ if ((s)(vi) < (s)(vargc)) goto b68;
+ v71 = (u)zdie;
+ v72 = (u)"invalid -o at end of argument list";
+ v73 = ((u(*)())(v71))(v72);
+ v73;
+b66: vcout_filename = *(u*)(vargv + vi * 8UL);
+ vi = vi + 1UL;
+ goto b11;
+b68: goto b66;
+b61: v75 = (u)zstrcmp;
+ v76 = *(u*)(vargv + vi * 8UL);
+ v77 = (u)"-G";
+ v78 = ((u(*)())(v75))(v76, v77);
+ if (!(v78)) goto b74;
+ v74 = 0UL;
+b75: if (!(v74)) goto b72;
+ vi = vi + 1UL;
+ if ((s)(vi) < (s)(vargc)) goto b79;
+ v79 = (u)zdie;
+ v80 = (u)"invalid -G at end of argument list";
+ v81 = ((u(*)())(v79))(v80);
+ v81;
+b77: v82 = (u)zopen_call_out;
+ v83 = vc;
+ v84 = *(u*)(vargv + vi * 8UL);
+ v85 = ((u(*)())(v82))(v83, v84);
+ v85;
+ vi = vi + 1UL;
+ goto b11;
+b79: goto b77;
+b72: v87 = (u)zstrcmp;
+ v88 = *(u*)(vargv + vi * 8UL);
+ v89 = (u)"-n";
+ v90 = ((u(*)())(v87))(v88, v89);
+ if (!(v90)) goto b86;
+ v86 = 0UL;
+b87: if (!(v86)) goto b84;
+ vi = vi + 1UL;
+ if ((s)(vi) < (s)(vargc)) goto b91;
+ v91 = (u)zdie;
+ v92 = (u)"invalid -n at end of argument list";
+ v93 = ((u(*)())(v91))(v92);
+ v93;
+b89: v94 = (u)zopen_lines_out;
+ v95 = vc;
+ v96 = *(u*)(vargv + vi * 8UL);
+ v97 = ((u(*)())(v94))(v95, v96);
+ v97;
+ vi = vi + 1UL;
+ goto b11;
+b91: goto b89;
+b84: if ((u)*(b*)(*(u*)(vargv + vi * 8UL) + 0UL * 1UL) != 45UL) goto b96;
+ v98 = (u)zdie;
+ v99 = (u)"invalid argument";
+ v100 = ((u(*)())(v98))(v99);
+ v100;
+b94: v101 = (u)zalloc;
+ v102 = (u)&va;
+ v103 = 16UL;
+ v104 = ((u(*)())(v101))(v102, v103);
+ vtmp = v104;
+ *(u*)(vtmp + 0UL) = 0UL;
+ *(u*)(vtmp + 8UL) = *(u*)(vargv + vi * 8UL);
+ *(u*)(vlink) = vtmp;
+ vlink = vtmp + 0UL;
+ vi = vi + 1UL;
+ goto b11;
+b96: goto b94;
+b86: v86 = 1UL;
+ goto b87;
+b74: v74 = 1UL;
+ goto b75;
+b63: v66 = 1UL;
+ goto b64;
+b38: v45 = 1UL;
+ goto b39;
+b31: v40 = 1UL;
goto b32;
-b40: goto b38;
-b22: v26 = 1UL;
- goto b23;
-b7: v18 = (u)zlalr_assoc;
- v19 = vlc;
- v20 = vseen;
- v21 = vt;
- v22 = ((u(*)())v18)(v19, v20, v21);
- va = v22;
- if (!va) goto b14;
- *(u*)(va + 32UL) = vqueue;
- vqueue = va;
-b12: v23 = (u)zrb_next;
- v24 = vt + 0UL;
- v25 = ((u(*)())v23)(v24);
- vt = v25;
- goto b3;
-b14: goto b12;
-b9: v17 = 1UL;
- goto b10;
-}
-u zlalr_itemcmp(u va, u vb) {
- if ((s)*(u*)(va + 40UL) >= (s)*(u*)(vb + 40UL)) goto b3;
- return -1UL;
-b3: if ((s)*(u*)(va + 40UL) <= (s)*(u*)(vb + 40UL)) goto b5;
- return 1UL;
-b5: if ((s)*(u*)(va + 48UL) >= (s)*(u*)(vb + 48UL)) goto b7;
- return -1UL;
-b7: if ((s)*(u*)(va + 48UL) <= (s)*(u*)(vb + 48UL)) goto b9;
- return 1UL;
-b9: if ((s)*(u*)(va + 56UL) >= (s)*(u*)(vb + 56UL)) goto b11;
- return -1UL;
-b11: if ((s)*(u*)(va + 56UL) <= (s)*(u*)(vb + 56UL)) goto b13;
- return 1UL;
-b13: return 0UL;
-}
-u zlalr_items(u vlc) {
- u vi = 0;
- u vinit_state[10] = {0};
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- v3 = (u)zlalr_mkitemset;
- v4 = vlc;
- v5 = ((u(*)())v3)(v4);
- vi = v5;
- v6 = (u)zlalr_assoc;
- v7 = vlc;
- v8 = vi;
- v9 = (u)vinit_state;
- v10 = ((u(*)())v6)(v7, v8, v9);
- v10;
- v11 = (u)zlalr_memoset;
- v12 = vlc;
- v13 = vi;
- v14 = ((u(*)())v11)(v12, v13);
- *(u*)(vlc + 64UL) = v14;
-b4: vi = *(u*)(vlc + 72UL);
- if (!vi) goto b10;
- v15 = 0UL;
-b11: if (!v15) goto b8;
- return 0UL;
-b8: *(u*)(vlc + 72UL) = *(u*)(vi + 56UL);
- v16 = (u)zlalr_goto;
- v17 = vlc;
- v18 = vi;
- v19 = ((u(*)())v16)(v17, v18);
- v19;
+b20: v32 = 1UL;
+ goto b21;
+b6: v30 = (u)zget_machine;
+ v31 = ((u(*)())(v30))();
+ if (v31 != 62UL) goto b9;
+ *(u*)(vc + 160UL) = (u)v_x86_64;
goto b4;
-b10: v15 = 1UL;
- goto b11;
+b9: goto b4;
}
-u zlalr_itemsetcmp(u va, u vb) {
- u vx = 0;
- u vy = 0;
- u vdir = 0;
+u zmark_func_used(u vc, u vd, u vv) {
+ u vedge = 0;
+ u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -36837,63 +35328,76 @@ u zlalr_itemsetcmp(u va, u vb) {
u v23 = 0;
u v24 = 0;
u v25 = 0;
- v5 = (u)zrb_first;
- v6 = *(u*)(va + 40UL);
- v7 = ((u(*)())v5)(v6);
- vx = v7;
- v8 = (u)zrb_first;
- v9 = *(u*)(vb + 40UL);
- v10 = ((u(*)())v8)(v9);
- vy = v10;
-b3: if (!vx) goto b13;
- v12 = 0UL;
-b14: if (!v12) goto b9;
- if (!vy) goto b16;
- v13 = 0UL;
-b17: if (!v13) goto b9;
- v11 = 1UL;
-b11: if (!v11) goto b7;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ if (!(vd)) goto b3;
+ v4 = (u)zfind;
+ v5 = vc;
+ v6 = *(u*)(vd + 32UL);
+ v7 = *(u*)(vv + 32UL);
+ v8 = 1UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vedge = v9;
+ if (!(*(u*)(vc + 80UL))) goto b9;
+ if (!(*(u*)(vedge + 56UL))) goto b13;
+ v11 = 0UL;
+b14: if (!(v11)) goto b9;
+ v10 = 1UL;
+b11: if (!(v10)) goto b7;
+ v12 = (u)zfputs;
+ v13 = *(u*)(vc + 80UL);
+ v14 = *(u*)(vd + 32UL);
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+ v16 = (u)zfputs;
+ v17 = *(u*)(vc + 80UL);
+ v18 = (u)" -> ";
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ v20 = (u)zfputs;
+ v21 = *(u*)(vc + 80UL);
+ v22 = *(u*)(vv + 32UL);
+ v23 = ((u(*)())(v20))(v21, v22);
+ v23;
+ v24 = (u)zfputs;
+ v25 = *(u*)(vc + 80UL);
+ v26 = (u)"\012";
+ v27 = ((u(*)())(v24))(v25, v26);
+ v27;
+b5: *(u*)(vedge + 56UL) = 1UL;
+ v28 = (u)zfind;
+ v29 = vc;
+ v30 = *(u*)(vv + 32UL);
+ v31 = *(u*)(vd + 32UL);
+ v32 = 1UL;
+ v33 = ((u(*)())(v28))(v29, v30, v31, v32);
+ vedge = v33;
+ *(u*)(vedge + 64UL) = 1UL;
+b1: if (!(*(u*)(vv + 96UL))) goto b22;
return 0UL;
-b7: if (!vx) goto b21;
- v14 = 0UL;
-b22: if (!v14) goto b19;
- return -1UL;
-b19: if (!vy) goto b26;
- v15 = 0UL;
-b27: if (!v15) goto b24;
- return 1UL;
-b24: v16 = (u)zlalr_itemcmp;
- v17 = vx;
- v18 = vy;
- v19 = ((u(*)())v16)(v17, v18);
- vdir = v19;
- if (vdir == 0UL) goto b31;
- return vdir;
-b31: v20 = (u)zrb_next;
- v21 = vx + 0UL;
- v22 = ((u(*)())v20)(v21);
- vx = v22;
- v23 = (u)zrb_next;
- v24 = vy + 0UL;
- v25 = ((u(*)())v23)(v24);
- vy = v25;
- goto b3;
-b26: v15 = 1UL;
- goto b27;
-b21: v14 = 1UL;
- goto b22;
-b9: v11 = 0UL;
- goto b11;
-b16: v13 = 1UL;
- goto b17;
-b13: v12 = 1UL;
+b22: *(u*)(vv + 96UL) = 1UL;
+ *(u*)(vv + 48UL) = *(u*)(vc + 104UL);
+ *(u*)(vc + 104UL) = vv;
+ return 0UL;
+b7: goto b5;
+b9: v10 = 0UL;
+ goto b11;
+b13: v11 = 1UL;
goto b14;
+b3: goto b1;
}
-u zlalr_linkout(u vlc, u vout, u vsym, u vt) {
- u vp = 0;
- u vlink = 0;
- u vd = 0;
- u vdir = 0;
+u zmark_ir_expr(u vc, u vd, u vop) {
+ u vv = 0;
+ u vkind = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
@@ -36915,237 +35419,133 @@ u zlalr_linkout(u vlc, u vout, u vsym, u vt) {
u v26 = 0;
u v27 = 0;
u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- vp = 0UL;
- vlink = vout;
-b1: vd = *(u*)vlink;
- if (!vd) goto b7;
+ if (*(u*)(vop + 0UL) != 2UL) goto b3;
+ v5 = (u)zfind;
+ v6 = vc;
+ v7 = *(u*)(vop + 32UL);
v8 = 0UL;
-b8: if (!v8) goto b5;
- v18 = (u)zalloc;
- v19 = *(u*)(vlc + 0UL);
- v20 = 64UL;
- v21 = ((u(*)())v18)(v19, v20);
- vd = v21;
- *(u*)(vd + 32UL) = *(u*)(vsym + 32UL);
- *(u*)(vd + 40UL) = *(u*)(vsym + 40UL);
- *(u*)(vd + 48UL) = *(u*)(vsym + 48UL);
- v22 = (u)zlalr_mkitemset;
- v23 = vlc;
- v24 = ((u(*)())v22)(v23);
- *(u*)(vd + 56UL) = v24;
- v25 = (u)zrb_link;
- v26 = vout;
- v27 = vlink;
- v28 = vp;
- v29 = vd + 0UL;
- v30 = ((u(*)())v25)(v26, v27, v28, v29);
- v30;
- v31 = (u)zlalr_assoc;
- v32 = vlc;
- v33 = *(u*)(vd + 56UL);
- v34 = vt;
- v35 = ((u(*)())v31)(v32, v33, v34);
- v35;
- return 0UL;
-b5: v9 = (u)zlalr_pointcmp;
- v10 = vsym;
- v11 = vd;
- v12 = ((u(*)())v9)(v10, v11);
- vdir = v12;
- if ((s)vdir >= (s)0UL) goto b12;
- vlink = vd + 0UL + 16UL;
- vp = vd + 0UL;
-b10: goto b1;
-b12: if ((s)vdir <= (s)0UL) goto b14;
- vlink = vd + 0UL + 24UL;
- vp = vd + 0UL;
- goto b10;
-b14: v13 = (u)zlalr_assoc;
- v14 = vlc;
- v15 = *(u*)(vd + 56UL);
- v16 = vt;
- v17 = ((u(*)())v13)(v14, v15, v16);
- v17;
+ v9 = 0UL;
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ vv = v10;
+ if (!(vv)) goto b13;
+ v12 = 0UL;
+b14: if (!(v12)) goto b9;
+ v11 = 1UL;
+b11: if (!(v11)) goto b7;
return 0UL;
-b7: v8 = 1UL;
- goto b8;
+b7: v14 = (u)zmark_func_used;
+ v15 = vc;
+ v16 = vd;
+ v17 = vv;
+ v18 = ((u(*)())(v14))(v15, v16, v17);
+ v18;
+b1: if (!(*(u*)(vop + 8UL))) goto b22;
+ v19 = (u)zmark_ir_expr;
+ v20 = vc;
+ v21 = vd;
+ v22 = *(u*)(vop + 8UL);
+ v23 = ((u(*)())(v19))(v20, v21, v22);
+ v23;
+b20: if (!(*(u*)(vop + 16UL))) goto b26;
+ v24 = (u)zmark_ir_expr;
+ v25 = vc;
+ v26 = vd;
+ v27 = *(u*)(vop + 16UL);
+ v28 = ((u(*)())(v24))(v25, v26, v27);
+ v28;
+b24: return 0UL;
+b26: goto b24;
+b22: goto b20;
+b9: if (!(*(u*)(vv + 72UL))) goto b17;
+ v13 = 0UL;
+b18: if (!(v13)) goto b15;
+ v11 = 1UL;
+ goto b11;
+b15: v11 = 0UL;
+ goto b11;
+b17: v13 = 1UL;
+ goto b18;
+b13: v12 = 1UL;
+ goto b14;
+b3: goto b1;
}
-u zlalr_lookahead(u vlc) {
- u vqueue = 0;
- u vw = 0;
- u vq = 0;
- u vr[9] = {0};
- u vsym = 0;
- u vrest_sym = 0;
- u valt = 0;
- u vprod = 0;
- u vrest_prod = 0;
+u zmark_ir_used(u vc, u vd) {
+ u vic = 0;
+ u vib = 0;
u vi = 0;
u vj = 0;
- u vk = 0;
- u vepsilon = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- *(u*)((u)vr + 32UL) = 1UL;
- *(u*)((u)vr + 40UL) = *(u*)(vlc + 80UL);
- *(u*)((u)vr + 48UL) = (u)"$";
- *(u*)(vlc + 80UL) = *(u*)(vlc + 80UL) + 1UL;
- v14 = (u)zalloc;
- v15 = *(u*)(vlc + 0UL);
- v16 = 104UL;
- v17 = ((u(*)())v14)(v15, v16);
- vw = v17;
- *(u*)(vw + 8UL + 40UL) = 0UL;
- *(u*)(vw + 8UL + 48UL) = 0UL;
- *(u*)(vw + 8UL + 56UL) = 0UL;
- *(u*)(vw + 80UL) = *(u*)(vlc + 64UL);
- *(u*)(vw + 88UL) = vw + 96UL;
- *(u*)(vw + 96UL) = (u)vr + 0UL;
- vqueue = vw;
-b2: vw = vqueue;
- if (!vw) goto b8;
- v18 = 0UL;
-b9: if (!v18) goto b6;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ vic = *(u*)(vd + 112UL);
+ vi = 0UL;
+b1: if (vi != *(u*)(vic + 72UL)) goto b5;
return 0UL;
-b6: v20 = (u)zlalr_unionlook;
- v21 = vlc;
- v22 = vw;
- v23 = ((u(*)())v20)(v21, v22);
- if (!v23) goto b14;
- v19 = 0UL;
-b15: if (!v19) goto b12;
- vqueue = *(u*)(vw + 0UL);
- goto b2;
-b12: valt = *(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)(vw + 8UL + 40UL) * 8UL) + 88UL) + *(u*)(vw + 8UL + 48UL) * 8UL);
- if (*(u*)(vw + 8UL + 56UL) != *(u*)(valt + 24UL)) goto b19;
- vqueue = *(u*)(vw + 0UL);
- goto b2;
-b19: vi = *(u*)(vw + 80UL);
- vsym = *(u*)(valt + 16UL) + *(u*)(vw + 8UL + 56UL) * 64UL;
- v24 = (u)zlalr_findout;
- v25 = vlc;
- v26 = vw;
- v27 = vsym;
- v28 = ((u(*)())v24)(v25, v26, v27);
- v28;
- if (!*(u*)(vsym + 32UL)) goto b23;
- goto b2;
-b23: vprod = *(u*)(*(u*)(vlc + 32UL) + *(u*)(vsym + 40UL) * 8UL);
- vepsilon = 1UL;
+b5: vib = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
vj = 0UL;
-b24: if (vj != *(u*)(vprod + 96UL)) goto b28;
- if (!vepsilon) goto b49;
- v38 = 0UL;
-b50: if (!v38) goto b47;
- goto b2;
-b47: vj = 0UL;
-b51: if (vj != *(u*)(vprod + 96UL)) goto b55;
- goto b2;
-b55: valt = *(u*)(*(u*)(vprod + 88UL) + vj * 8UL);
- v39 = (u)zalloc;
- v40 = *(u*)(vlc + 0UL);
- v41 = 104UL;
- v42 = ((u(*)())v39)(v40, v41);
- vq = v42;
- *(u*)(vq + 8UL + 40UL) = *(u*)(vsym + 40UL);
- *(u*)(vq + 8UL + 48UL) = vj;
- *(u*)(vq + 8UL + 56UL) = 0UL;
- *(u*)(vq + 80UL) = vi;
- *(u*)(vq + 88UL) = *(u*)(vw + 88UL);
- *(u*)(vq + 0UL) = vqueue;
- vqueue = vq;
+b6: if (vj != *(u*)(vib + 16UL)) goto b10;
+ vi = vi + 1UL;
+ goto b1;
+b10: v6 = (u)zmark_ir_expr;
+ v7 = vc;
+ v8 = vd;
+ v9 = *(u*)(*(u*)(vib + 8UL) + vj * 8UL);
+ v10 = ((u(*)())(v6))(v7, v8, v9);
+ v10;
vj = vj + 1UL;
- goto b51;
-b49: v38 = 1UL;
- goto b50;
-b28: valt = *(u*)(*(u*)(vprod + 88UL) + vj * 8UL);
- vk = *(u*)(vw + 8UL + 56UL);
-b29: if (vk != *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)(vw + 8UL + 40UL) * 8UL) + 88UL) + *(u*)(vw + 8UL + 48UL) * 8UL) + 24UL)) goto b33;
-b30: vj = vj + 1UL;
- goto b24;
-b33: vrest_sym = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vlc + 32UL) + *(u*)(vw + 8UL + 40UL) * 8UL) + 88UL) + *(u*)(vw + 8UL + 48UL) * 8UL) + 16UL) + vk * 64UL;
- if (!*(u*)(vrest_sym + 32UL)) goto b36;
- v29 = (u)zalloc;
- v30 = *(u*)(vlc + 0UL);
- v31 = 104UL;
- v32 = ((u(*)())v29)(v30, v31);
- vq = v32;
- *(u*)(vq + 8UL + 40UL) = *(u*)(vsym + 40UL);
- *(u*)(vq + 8UL + 48UL) = vj;
- *(u*)(vq + 8UL + 56UL) = 0UL;
- *(u*)(vq + 80UL) = vi;
- *(u*)(vq + 88UL) = vq + 96UL;
- *(u*)(vq + 96UL) = vrest_sym + 0UL;
- *(u*)(vq + 0UL) = vqueue;
- vqueue = vq;
- vepsilon = 0UL;
- goto b30;
-b36: vrest_prod = *(u*)(*(u*)(vlc + 32UL) + *(u*)(vrest_sym + 40UL) * 8UL);
- v33 = (u)zalloc;
- v34 = *(u*)(vlc + 0UL);
- v35 = 104UL;
- v36 = ((u(*)())v33)(v34, v35);
- vq = v36;
- *(u*)(vq + 8UL + 40UL) = *(u*)(vsym + 40UL);
- *(u*)(vq + 8UL + 48UL) = vj;
- *(u*)(vq + 8UL + 56UL) = 0UL;
- *(u*)(vq + 80UL) = vi;
- *(u*)(vq + 88UL) = vrest_prod + 64UL;
- *(u*)(vq + 0UL) = vqueue;
- vqueue = vq;
- if (!*(u*)(vrest_prod + 56UL)) goto b43;
- v37 = 0UL;
-b44: if (!v37) goto b41;
- vepsilon = 0UL;
- goto b30;
-b41: vk = vk + 1UL;
- goto b29;
-b43: v37 = 1UL;
- goto b44;
-b14: v19 = 1UL;
- goto b15;
-b8: v18 = 1UL;
- goto b9;
+ goto b6;
}
-u zlalr_lookup(u vlc, u vname, u vnew) {
- u vp = 0;
- u vlink = 0;
- u vd = 0;
- u vdir = 0;
+u zmemcmp(u va, u vb, u vn) {
+ u vi = 0;
+ vi = 0UL;
+b1: if (vi != vn) goto b5;
+ return 0UL;
+b5: if ((s)((u)*(b*)(va + vi * 1UL)) <= (s)((u)*(b*)(vb + vi * 1UL))) goto b8;
+ return 1UL;
+b8: if ((s)((u)*(b*)(va + vi * 1UL)) >= (s)((u)*(b*)(vb + vi * 1UL))) goto b11;
+ return -1UL;
+b11: vi = vi + 1UL;
+ goto b1;
+}
+u zmemcpy(u vdest, u vsrc, u vsize) {
+ u vi = 0;
+ if ((s)(vsize) >= (s)0UL) goto b3;
+ return 0UL;
+b3: if ((s)(vsrc) <= (s)(vdest)) goto b6;
+ vi = 0UL;
+b7: if (vi != vsize) goto b11;
+b4: return 0UL;
+b11: *(b*)(vdest + vi * 1UL) = (u)*(b*)(vsrc + vi * 1UL);
+ vi = vi + 1UL;
+ goto b7;
+b6: if ((s)(vsrc) >= (s)(vdest)) goto b13;
+ vi = vsize;
+b14: if (vi != 0UL) goto b18;
+ goto b4;
+b18: vi = vi - 1UL;
+ *(b*)(vdest + vi * 1UL) = (u)*(b*)(vsrc + vi * 1UL);
+ goto b14;
+b13: goto b4;
+}
+u zmemset(u vdest, u vc, u vsize) {
+ u vi = 0;
+ if ((s)(vsize) >= (s)0UL) goto b3;
+ return 0UL;
+b3: vi = 0UL;
+b4: if (vi != vsize) goto b8;
+ return 0UL;
+b8: *(b*)(vdest + vi * 1UL) = vc;
+ vi = vi + 1UL;
+ goto b4;
+}
+u zmkident(u vc, u vname) {
+ u vn = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -37156,60 +35556,241 @@ u zlalr_lookup(u vlc, u vname, u vnew) {
u v14 = 0;
u v15 = 0;
u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- vp = 0UL;
- vlink = vlc + 24UL;
-b1: vd = *(u*)vlink;
- if (!vd) goto b7;
+ v3 = (u)zmknode;
+ v4 = vc;
+ v5 = 0UL;
+ v6 = 0UL;
v7 = 0UL;
-b8: if (!v7) goto b5;
-b2: if (!vnew) goto b19;
- v12 = 0UL;
-b20: if (!v12) goto b17;
- return vd;
-b17: if (!vd) goto b23;
- v13 = (u)zdie;
- v14 = (u)"duplicate rule";
- v15 = ((u(*)())v13)(v14);
- v15;
-b21: *(u*)(vnew + 40UL) = vname;
- v16 = (u)zrb_link;
- v17 = vlc + 24UL;
- v18 = vlink;
- v19 = vp;
- v20 = vnew + 0UL;
- v21 = ((u(*)())v16)(v17, v18, v19, v20);
- v21;
- return vnew;
-b23: goto b21;
-b19: v12 = 1UL;
- goto b20;
-b5: v8 = (u)zstrcmp;
- v9 = *(u*)(vd + 40UL);
+ v8 = ((u(*)())(v3))(v4, v5, v6, v7);
+ vn = v8;
+ v9 = (u)zmkstr;
+ v10 = *(u*)(vc + 0UL);
+ v11 = vname;
+ v13 = (u)zstrlen;
+ v14 = vname;
+ v15 = ((u(*)())(v13))(v14);
+ v12 = v15;
+ v16 = ((u(*)())(v9))(v10, v11, v12);
+ *(u*)(vn + 56UL) = v16;
+ return vn;
+}
+u zmkirarg(u vic, u vn, u va) {
+ u vo = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ v4 = (u)zmkirop;
+ v5 = vic;
+ v6 = 8UL;
+ v7 = va;
+ v8 = 0UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vo = v9;
+ *(u*)(vo + 24UL) = vn;
+ return vo;
+}
+u zmkirblock(u vic) {
+ u vb = 0;
+ u vtmp = 0;
+ u vi = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ if (*(u*)(vic + 72UL) != *(u*)(vic + 80UL)) goto b3;
+ *(u*)(vic + 80UL) = *(u*)(vic + 80UL) * 2UL + 16UL;
+ v4 = (u)zalloc;
+ v5 = *(u*)(vic + 16UL);
+ v6 = 8UL * *(u*)(vic + 80UL);
+ v7 = ((u(*)())(v4))(v5, v6);
+ vtmp = v7;
+ vi = 0UL;
+b5: if (vi != *(u*)(vic + 72UL)) goto b9;
+ *(u*)(vic + 64UL) = vtmp;
+b1: v8 = (u)zalloc;
+ v9 = *(u*)(vic + 16UL);
+ v10 = 88UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ vb = v11;
+ *(u*)(vb + 0UL) = *(u*)(vic + 72UL);
+ v12 = (u)zmklabel;
+ v13 = *(u*)(vic + 8UL);
+ v14 = ((u(*)())(v12))(v13);
+ *(u*)(vb + 72UL) = v14;
+ *(u*)(vb + 8UL) = 0UL;
+ *(u*)(vb + 16UL) = 0UL;
+ *(u*)(vb + 24UL) = 0UL;
+ *(u*)(vb + 32UL) = 0UL;
+ *(u*)(vb + 56UL) = 0UL;
+ *(u*)(vb + 64UL) = 0UL;
+ *(u*)(*(u*)(vic + 64UL) + *(u*)(vic + 72UL) * 8UL) = vb;
+ *(u*)(vic + 72UL) = *(u*)(vic + 72UL) + 1UL;
+ return vb;
+b9: *(u*)(vtmp + vi * 8UL) = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
+ vi = vi + 1UL;
+ goto b5;
+b3: goto b1;
+}
+u zmkirconst(u vic, u vn) {
+ u vo = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ v3 = (u)zmkirop;
+ v4 = vic;
+ v5 = 3UL;
+ v6 = 0UL;
+ v7 = 0UL;
+ v8 = ((u(*)())(v3))(v4, v5, v6, v7);
+ vo = v8;
+ *(u*)(vo + 24UL) = vn;
+ return vo;
+}
+u zmkirfold(u vic, u vs, u vn) {
+ u vo = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ v4 = (u)zmkirop;
+ v5 = vic;
+ v6 = 3UL;
+ v7 = 0UL;
+ v8 = 0UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vo = v9;
+ *(u*)(vo + 64UL) = *(u*)(vs + 64UL);
+ *(u*)(vo + 72UL) = *(u*)(vs + 72UL);
+ *(u*)(vo + 80UL) = *(u*)(vs + 80UL);
+ *(u*)(vo + 24UL) = vn;
+ return vo;
+}
+u zmkirfunc(u vc, u vname) {
+ u vic = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ v3 = (u)zalloc;
+ v4 = *(u*)(vc + 0UL);
+ v5 = 168UL;
+ v6 = ((u(*)())(v3))(v4, v5);
+ vic = v6;
+ *(u*)(vic + 0UL) = vc;
+ *(u*)(vic + 16UL) = *(u*)(vc + 0UL);
+ *(u*)(vic + 8UL) = *(u*)(vc + 48UL);
+ v7 = (u)zmkirblock;
+ v8 = vic;
+ v9 = ((u(*)())(v7))(v8);
+ v9;
+ *(u*)(vic + 104UL) = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ *(u*)(vic + 24UL) = vname;
+ return vic;
+}
+u zmkirfuncref(u vic, u vname) {
+ u vo = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ v3 = (u)zmkirop;
+ v4 = vic;
+ v5 = 2UL;
+ v6 = 0UL;
+ v7 = 0UL;
+ v8 = ((u(*)())(v3))(v4, v5, v6, v7);
+ vo = v8;
+ *(u*)(vo + 32UL) = vname;
+ v9 = (u)zstrlen;
v10 = vname;
- v11 = ((u(*)())v8)(v9, v10);
- vdir = v11;
- if (vdir != 0UL) goto b12;
- goto b2;
-b12: if ((s)vdir >= (s)0UL) goto b14;
- vlink = vd + 0UL + 16UL;
- vp = vd + 0UL;
-b10: goto b1;
-b14: vlink = vd + 0UL + 24UL;
- vp = vd + 0UL;
- goto b10;
-b7: v7 = 1UL;
- goto b8;
+ v11 = ((u(*)())(v9))(v10);
+ *(u*)(vo + 40UL) = v11;
+ return vo;
+}
+u zmkirop(u vic, u vkind, u va, u vb) {
+ u vo = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ v5 = (u)zalloc;
+ v6 = *(u*)(vic + 16UL);
+ v7 = 88UL;
+ v8 = ((u(*)())(v5))(v6, v7);
+ vo = v8;
+ *(u*)(vo + 0UL) = vkind;
+ *(u*)(vo + 8UL) = va;
+ *(u*)(vo + 16UL) = vb;
+ *(u*)(vo + 64UL) = *(u*)(*(u*)(vic + 0UL) + 24UL);
+ *(u*)(vo + 72UL) = *(u*)(*(u*)(vic + 0UL) + 32UL);
+ *(u*)(vo + 80UL) = *(u*)(*(u*)(vic + 0UL) + 40UL);
+ return vo;
+}
+u zmkirretval(u vic, u va, u vt) {
+ u vo = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ v4 = (u)zmkirop;
+ v5 = vic;
+ v6 = 7UL;
+ v7 = va;
+ v8 = 0UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vo = v9;
+ *(u*)(vo + 48UL) = vt;
+ return vo;
}
-u zlalr_memoset(u vlc, u vi) {
- u vp = 0;
- u vlink = 0;
- u vd = 0;
- u vdir = 0;
+u zmkirstr(u vic, u vs, u vslen) {
+ u vo = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ v4 = (u)zmkirop;
+ v5 = vic;
+ v6 = 4UL;
+ v7 = 0UL;
+ v8 = 0UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vo = v9;
+ *(u*)(vo + 32UL) = vs;
+ *(u*)(vo + 40UL) = vslen;
+ return vo;
+}
+u zmkirtmp(u vic, u vt) {
+ u vo = 0;
+ u vv = 0;
+ u v4 = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -37219,48 +35800,26 @@ u zlalr_memoset(u vlc, u vi) {
u v12 = 0;
u v13 = 0;
u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- vp = 0UL;
- vlink = vlc + 56UL;
-b1: vd = *(u*)vlink;
- if (!vd) goto b7;
+ v4 = (u)zmkirvar;
+ v5 = vic;
v6 = 0UL;
-b8: if (!v6) goto b5;
- v11 = (u)zrb_link;
- v12 = vlc + 56UL;
- v13 = vlink;
- v14 = vp;
- v15 = vi + 0UL;
- v16 = ((u(*)())v11)(v12, v13, v14, v15);
- v16;
- *(u*)(vi + 56UL) = *(u*)(vlc + 72UL);
- *(u*)(vi + 32UL) = *(u*)(vlc + 88UL);
- *(u*)(vlc + 88UL) = *(u*)(vlc + 88UL) + 1UL;
- *(u*)(vlc + 72UL) = vi;
- return vi;
-b5: v7 = (u)zlalr_itemsetcmp;
- v8 = vi;
- v9 = vd;
- v10 = ((u(*)())v7)(v8, v9);
- vdir = v10;
- if ((s)vdir >= (s)0UL) goto b12;
- vlink = vd + 0UL + 16UL;
- vp = vd + 0UL;
-b10: goto b1;
-b12: if ((s)vdir <= (s)0UL) goto b14;
- vlink = vd + 0UL + 24UL;
- vp = vd + 0UL;
- goto b10;
-b14: return vd;
-b7: v6 = 1UL;
- goto b8;
+ v7 = vt;
+ v8 = ((u(*)())(v4))(v5, v6, v7);
+ vv = v8;
+ v9 = (u)zmkirop;
+ v10 = vic;
+ v11 = 0UL;
+ v12 = 0UL;
+ v13 = 0UL;
+ v14 = ((u(*)())(v9))(v10, v11, v12, v13);
+ vo = v14;
+ *(u*)(vo + 24UL) = *(u*)(vv + 32UL);
+ return vo;
}
-u zlalr_mkalt(u vlc, u vp) {
- u va = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
+u zmkirvar(u vic, u vname, u vt) {
+ u vv = 0;
+ u vtmp = 0;
+ u vi = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -37269,303 +35828,181 @@ u zlalr_mkalt(u vlc, u vp) {
u v11 = 0;
u v12 = 0;
u v13 = 0;
- v3 = (u)zalloc;
- v4 = *(u*)(vlc + 0UL);
- v5 = 40UL;
- v6 = ((u(*)())v3)(v4, v5);
- va = v6;
- *(u*)(va + 8UL) = *(u*)(vp + 96UL);
- *(u*)(va + 0UL) = *(u*)(vp + 32UL);
- v7 = (u)zensure_arr;
- v8 = *(u*)(vlc + 0UL);
- v9 = vp + 88UL;
- v10 = vp + 104UL;
- v11 = *(u*)(vp + 96UL) + 1UL;
- v12 = 8UL;
- v13 = ((u(*)())v7)(v8, v9, v10, v11, v12);
- v13;
- *(u*)(*(u*)(vp + 88UL) + *(u*)(vp + 96UL) * 8UL) = va;
- *(u*)(vp + 96UL) = *(u*)(vp + 96UL) + 1UL;
- return va;
+ if (*(u*)(vic + 136UL) != *(u*)(vic + 144UL)) goto b3;
+ *(u*)(vic + 144UL) = *(u*)(vic + 144UL) * 2UL + 16UL;
+ v6 = (u)zalloc;
+ v7 = *(u*)(vic + 16UL);
+ v8 = 8UL * *(u*)(vic + 144UL);
+ v9 = ((u(*)())(v6))(v7, v8);
+ vtmp = v9;
+ vi = 0UL;
+b5: if (vi != *(u*)(vic + 136UL)) goto b9;
+ *(u*)(vic + 128UL) = vtmp;
+b1: vi = *(u*)(vic + 136UL);
+ v10 = (u)zalloc;
+ v11 = *(u*)(vic + 16UL);
+ v12 = 72UL;
+ v13 = ((u(*)())(v10))(v11, v12);
+ vv = v13;
+ *(u*)(vv + 32UL) = vi;
+ *(u*)(vv + 0UL) = vname;
+ *(u*)(vv + 24UL) = vt;
+ *(u*)(*(u*)(vic + 128UL) + vi * 8UL) = vv;
+ *(u*)(vic + 136UL) = *(u*)(vic + 136UL) + 1UL;
+ return vv;
+b9: *(u*)(vtmp + vi * 8UL) = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
+ vi = vi + 1UL;
+ goto b5;
+b3: goto b1;
}
-u zlalr_mkitemset(u vlc) {
- u vi = 0;
+u zmklabel(u vc) {
+ u vl = 0;
u v2 = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
v2 = (u)zalloc;
- v3 = *(u*)(vlc + 0UL);
- v4 = 80UL;
- v5 = ((u(*)())v2)(v3, v4);
- vi = v5;
- return vi;
+ v3 = *(u*)(vc + 0UL);
+ v4 = 24UL;
+ v5 = ((u(*)())(v2))(v3, v4);
+ vl = v5;
+ *(u*)(vl + 0UL) = 0UL;
+ *(u*)(vl + 8UL) = 0UL;
+ *(u*)(vl + 16UL) = 0UL;
+ return vl;
}
-u zlalr_mkprod(u vlc) {
- u vp = 0;
+u zmknode(u vc, u vkind, u va, u vb) {
+ u vret = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ v5 = (u)zalloc;
+ v6 = *(u*)(vc + 0UL);
+ v7 = 72UL;
+ v8 = ((u(*)())(v5))(v6, v7);
+ vret = v8;
+ *(u*)(vret + 0UL) = vkind;
+ *(u*)(vret + 8UL) = va;
+ *(u*)(vret + 16UL) = vb;
+ *(u*)(vret + 24UL) = 0UL;
+ *(u*)(vret + 32UL) = 0UL;
+ *(u*)(vret + 40UL) = 0UL;
+ *(u*)(vret + 48UL) = 0UL;
+ *(u*)(vret + 56UL) = 0UL;
+ *(u*)(vret + 64UL) = 0UL;
+ *(u*)(vret + 24UL) = *(u*)(*(u*)(vc + 8UL) + 24UL);
+ *(u*)(vret + 32UL) = *(u*)(*(u*)(vc + 8UL) + 32UL);
+ *(u*)(vret + 40UL) = *(u*)(*(u*)(vc + 8UL) + 40UL);
+ return vret;
+}
+u zmknode0(u vc, u vkind) {
u v2 = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
+ v2 = (u)zmknode;
+ v3 = vc;
+ v4 = vkind;
+ v5 = 0UL;
+ v6 = 0UL;
+ v7 = ((u(*)())(v2))(v3, v4, v5, v6);
+ return v7;
+}
+u zmknode1(u vc, u vkind, u va) {
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ v3 = (u)zmknode;
+ v4 = vc;
+ v5 = vkind;
+ v6 = va;
+ v7 = 0UL;
+ v8 = ((u(*)())(v3))(v4, v5, v6, v7);
+ return v8;
+}
+u zmkstr(u va, u vs, u vn) {
+ u vr = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- v2 = (u)zensure_arr;
- v3 = *(u*)(vlc + 0UL);
- v4 = vlc + 32UL;
- v5 = vlc + 48UL;
- v6 = *(u*)(vlc + 40UL) + 1UL;
- v7 = 8UL;
- v8 = ((u(*)())v2)(v3, v4, v5, v6, v7);
- v8;
- v9 = (u)zalloc;
- v10 = *(u*)(vlc + 0UL);
- v11 = 128UL;
- v12 = ((u(*)())v9)(v10, v11);
- vp = v12;
- *(u*)(vp + 32UL) = *(u*)(vlc + 40UL);
- v13 = (u)zlalr_mkitemset;
- v14 = vlc;
- v15 = ((u(*)())v13)(v14);
- *(u*)(vp + 48UL) = v15;
- *(u*)(*(u*)(vlc + 32UL) + *(u*)(vlc + 40UL) * 8UL) = vp;
- *(u*)(vlc + 40UL) = *(u*)(vlc + 40UL) + 1UL;
- return vp;
+ v4 = (u)zalloc;
+ v5 = va;
+ v6 = vn + 1UL;
+ v7 = ((u(*)())(v4))(v5, v6);
+ vr = v7;
+ v8 = (u)zmemcpy;
+ v9 = vr;
+ v10 = vs;
+ v11 = vn;
+ v12 = ((u(*)())(v8))(v9, v10, v11);
+ v12;
+ *(b*)(vr + vn * 1UL) = 0UL;
+ return vr;
}
-u zlalr_output(u vlc) {
- u vic = 0;
- u vo = 0;
- u vret_type = 0;
- u vfunc_type = 0;
+u zmktype(u vc, u vkind, u va, u vb, u vst) {
+ u vt = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ v6 = (u)zalloc;
+ v7 = *(u*)(vc + 0UL);
+ v8 = 32UL;
+ v9 = ((u(*)())(v6))(v7, v8);
+ vt = v9;
+ *(u*)(vt + 0UL) = vkind;
+ *(u*)(vt + 8UL) = vst;
+ *(u*)(vt + 16UL) = va;
+ *(u*)(vt + 24UL) = vb;
+ return vt;
+}
+u zmktype0(u vc, u vkind) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ v2 = (u)zmktype;
+ v3 = vc;
+ v4 = vkind;
+ v5 = 0UL;
+ v6 = 0UL;
+ v7 = 0UL;
+ v8 = ((u(*)())(v2))(v3, v4, v5, v6, v7);
+ return v8;
+}
+u zmktype1(u vc, u vkind, u va) {
+ u v3 = 0;
+ u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- v5 = (u)zmktype0;
- v6 = *(u*)(vlc + 8UL);
- v7 = 2UL;
- v8 = ((u(*)())v5)(v6, v7);
- vret_type = v8;
- v9 = (u)zmktype1;
- v10 = *(u*)(vlc + 8UL);
- v11 = 4UL;
- v12 = vret_type;
- v13 = ((u(*)())v9)(v10, v11, v12);
- vret_type = v13;
- v14 = (u)zmktype2;
- v15 = *(u*)(vlc + 8UL);
- v16 = 6UL;
- v17 = vret_type;
- v18 = 0UL;
- v19 = ((u(*)())v14)(v15, v16, v17, v18);
- vfunc_type = v19;
- v20 = (u)zmkirfunc;
- v21 = *(u*)(vlc + 8UL);
- v22 = (u)"get_act_table";
- v23 = ((u(*)())v20)(v21, v22);
- vic = v23;
- v24 = (u)zmkirstr;
- v25 = vic;
- v26 = *(u*)(vlc + 104UL);
- v27 = *(u*)(vlc + 96UL);
- v28 = ((u(*)())v24)(v25, v26, v27);
- vo = v28;
- v29 = (u)zirreturn;
- v30 = vic;
- v31 = vo;
- v32 = ((u(*)())v29)(v30, v31);
- v32;
- v33 = (u)zdefine_ir_func;
- v34 = *(u*)(vlc + 8UL);
- v35 = vic;
- v36 = vfunc_type;
- v37 = ((u(*)())v33)(v34, v35, v36);
- v37;
- v38 = (u)zmkirfunc;
- v39 = *(u*)(vlc + 8UL);
- v40 = (u)"get_goto_table";
- v41 = ((u(*)())v38)(v39, v40);
- vic = v41;
- v42 = (u)zmkirstr;
- v43 = vic;
- v44 = *(u*)(vlc + 120UL);
- v45 = *(u*)(vlc + 112UL);
- v46 = ((u(*)())v42)(v43, v44, v45);
- vo = v46;
- v47 = (u)zirreturn;
- v48 = vic;
- v49 = vo;
- v50 = ((u(*)())v47)(v48, v49);
- v50;
- v51 = (u)zdefine_ir_func;
- v52 = *(u*)(vlc + 8UL);
- v53 = vic;
- v54 = vfunc_type;
- v55 = ((u(*)())v51)(v52, v53, v54);
- v55;
- v56 = (u)zmktype0;
- v57 = *(u*)(vlc + 8UL);
- v58 = 2UL;
- v59 = ((u(*)())v56)(v57, v58);
- vret_type = v59;
- v60 = (u)zmktype2;
- v61 = *(u*)(vlc + 8UL);
- v62 = 6UL;
- v63 = vret_type;
- v64 = 0UL;
- v65 = ((u(*)())v60)(v61, v62, v63, v64);
- vfunc_type = v65;
- v66 = (u)zmkirfunc;
- v67 = *(u*)(vlc + 8UL);
- v68 = (u)"get_prod_len";
- v69 = ((u(*)())v66)(v67, v68);
- vic = v69;
- v70 = (u)zmkirconst;
- v71 = vic;
- v72 = *(u*)(vlc + 40UL);
- v73 = ((u(*)())v70)(v71, v72);
- vo = v73;
- v74 = (u)zirreturn;
- v75 = vic;
- v76 = vo;
- v77 = ((u(*)())v74)(v75, v76);
- v77;
- v78 = (u)zdefine_ir_func;
- v79 = *(u*)(vlc + 8UL);
- v80 = vic;
- v81 = vfunc_type;
- v82 = ((u(*)())v78)(v79, v80, v81);
- v82;
- v83 = (u)zmkirfunc;
- v84 = *(u*)(vlc + 8UL);
- v85 = (u)"get_term_len";
- v86 = ((u(*)())v83)(v84, v85);
- vic = v86;
- v87 = (u)zmkirconst;
- v88 = vic;
- v89 = *(u*)(vlc + 80UL);
- v90 = ((u(*)())v87)(v88, v89);
- vo = v90;
- v91 = (u)zirreturn;
- v92 = vic;
- v93 = vo;
- v94 = ((u(*)())v91)(v92, v93);
- v94;
- v95 = (u)zdefine_ir_func;
- v96 = *(u*)(vlc + 8UL);
- v97 = vic;
- v98 = vfunc_type;
- v99 = ((u(*)())v95)(v96, v97, v98);
- v99;
- v100 = (u)zlalr_compile_get_call_table;
- v101 = vlc;
- v102 = ((u(*)())v100)(v101);
- v102;
- return 0UL;
+ v3 = (u)zmktype;
+ v4 = vc;
+ v5 = vkind;
+ v6 = va;
+ v7 = 0UL;
+ v8 = 0UL;
+ v9 = ((u(*)())(v3))(v4, v5, v6, v7, v8);
+ return v9;
}
-u zlalr_pattern(u vlc, u vp, u vpn) {
- u va = 0;
+u zmktype2(u vc, u vkind, u va, u vb) {
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -37573,47 +36010,69 @@ u zlalr_pattern(u vlc, u vp, u vpn) {
u v8 = 0;
u v9 = 0;
u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
-b1: if (!vpn) goto b7;
- v4 = 0UL;
-b8: if (!v4) goto b5;
- return 0UL;
-b5: v5 = (u)zlalr_mkalt;
- v6 = vlc;
- v7 = vp;
- v8 = ((u(*)())v5)(v6, v7);
- va = v8;
- v9 = (u)zlalr_alt;
- v10 = vlc;
- v11 = va;
- v12 = *(u*)(vpn + 8UL);
- v13 = ((u(*)())v9)(v10, v11, v12);
- v13;
- vpn = *(u*)(vpn + 16UL);
- goto b1;
-b7: v4 = 1UL;
- goto b8;
-}
-u zlalr_pointcmp(u va, u vb) {
- if ((s)*(u*)(va + 32UL) >= (s)*(u*)(vb + 32UL)) goto b3;
- return -1UL;
-b3: if ((s)*(u*)(va + 32UL) <= (s)*(u*)(vb + 32UL)) goto b5;
- return 1UL;
-b5: if ((s)*(u*)(va + 40UL) >= (s)*(u*)(vb + 40UL)) goto b7;
- return -1UL;
-b7: if ((s)*(u*)(va + 40UL) <= (s)*(u*)(vb + 40UL)) goto b9;
- return 1UL;
-b9: return 0UL;
+ v4 = (u)zmktype;
+ v5 = vc;
+ v6 = vkind;
+ v7 = va;
+ v8 = vb;
+ v9 = 0UL;
+ v10 = ((u(*)())(v4))(v5, v6, v7, v8, v9);
+ return v10;
}
-u zlalr_primary(u vlc, u va, u vpn) {
- u vv = 0;
- u vs = 0;
+u zmktype_struct(u vc, u vst) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ v2 = (u)zmktype;
+ v3 = vc;
+ v4 = 7UL;
+ v5 = 0UL;
+ v6 = 0UL;
+ v7 = vst;
+ v8 = ((u(*)())(v2))(v3, v4, v5, v6, v7);
+ return v8;
+}
+u zmktype_union(u vc, u vst) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
+ v2 = (u)zmktype;
+ v3 = vc;
+ v4 = 8UL;
+ v5 = 0UL;
+ v6 = 0UL;
+ v7 = vst;
+ v8 = ((u(*)())(v2))(v3, v4, v5, v6, v7);
+ return v8;
+}
+u zmmap(u vaddr, u vlen, u vprot, u vflags, u vfd, u voff) {
+ return (u)mmap((void*)vaddr, (unsigned long)vlen, (int)vprot, (int)vflags, (int)vfd, (long)voff);
+}
+u znext_decl(u vc, u vd) {
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ v2 = (u)zrb_next;
+ v3 = vd + 0UL;
+ v4 = ((u(*)())(v2))(v3);
+ return v4;
+}
+u znfa2dfa(u vc, u vk) {
+ u vd = 0;
+ u vp = 0;
+ u vlink = 0;
+ u vdir = 0;
+ u vi = 0;
+ u vj = 0;
+ u v8 = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -37655,86 +36114,126 @@ u zlalr_primary(u vlc, u va, u vpn) {
u v47 = 0;
u v48 = 0;
u v49 = 0;
- if (*(u*)(vpn + 0UL) != 0UL) goto b3;
- v5 = (u)zlalr_lookup;
- v6 = vlc;
- v7 = *(u*)(vpn + 56UL);
- v8 = 0UL;
- v9 = ((u(*)())v5)(v6, v7, v8);
- vs = v9;
- if (!vs) goto b7;
- v10 = (u)zlalr_alt_nonterminal;
- v11 = vlc;
- v12 = va;
- v13 = vs;
- v14 = ((u(*)())v10)(v11, v12, v13);
- v14;
- return 0UL;
-b7: v15 = (u)zfind;
- v16 = *(u*)(vlc + 8UL);
- v17 = *(u*)(vpn + 56UL);
- v18 = 0UL;
- v19 = 0UL;
- v20 = ((u(*)())v15)(v16, v17, v18, v19);
- vv = v20;
- if (!vv) goto b18;
- v22 = 0UL;
-b19: if (!v22) goto b14;
- v21 = 1UL;
-b16: if (!v21) goto b12;
- v24 = (u)zfputs;
- v25 = *(u*)(vlc + 16UL);
- v26 = (u)"name: ";
- v27 = ((u(*)())v24)(v25, v26);
- v27;
- v28 = (u)zfputs;
- v29 = *(u*)(vlc + 16UL);
- v30 = *(u*)(vpn + 56UL);
- v31 = ((u(*)())v28)(v29, v30);
- v31;
- v32 = (u)zfputs;
- v33 = *(u*)(vlc + 16UL);
- v34 = (u)"\012";
- v35 = ((u(*)())v32)(v33, v34);
- v35;
- v36 = (u)zdie;
- v37 = (u)"undefined terminal";
- v38 = ((u(*)())v36)(v37);
- v38;
-b10: v39 = (u)zlalr_alt_terminal;
- v40 = vlc;
- v41 = va;
- v42 = *(u*)(vpn + 56UL);
- v43 = *(u*)(vv + 200UL);
- v44 = ((u(*)())v39)(v40, v41, v42, v43);
- v44;
- return 0UL;
-b12: goto b10;
-b14: if (!*(u*)(vv + 192UL)) goto b22;
- v23 = 0UL;
-b23: if (!v23) goto b20;
- v21 = 1UL;
- goto b16;
-b20: v21 = 0UL;
- goto b16;
-b22: v23 = 1UL;
- goto b23;
-b18: v22 = 1UL;
- goto b19;
-b3: v45 = (u)zlalr_action;
- v46 = vlc;
- v47 = va;
- v48 = vpn;
- v49 = ((u(*)())v45)(v46, v47, v48);
- v49;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ if (*(u*)(vk + 16UL) != 0UL) goto b3;
return 0UL;
+b3: v8 = (u)zdfakey_sort;
+ v9 = vk;
+ v10 = ((u(*)())(v8))(v9);
+ v10;
+ vp = 0UL;
+ vlink = vc + 152UL;
+b5: vd = *(u*)(vlink);
+ if (!(vd)) goto b11;
+ v11 = 0UL;
+b12: if (!(v11)) goto b9;
+ v16 = (u)zalloc;
+ v17 = *(u*)(vc + 0UL);
+ v18 = 80UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ vd = v19;
+ v20 = (u)zalloc;
+ v21 = *(u*)(vc + 0UL);
+ v22 = 8UL * 256UL;
+ v23 = ((u(*)())(v20))(v21, v22);
+ *(u*)(vd + 40UL) = v23;
+ v24 = (u)zalloc;
+ v25 = *(u*)(vc + 0UL);
+ v26 = 8UL * *(u*)(vk + 16UL);
+ v27 = ((u(*)())(v24))(v25, v26);
+ *(u*)(vd + 48UL) = v27;
+ *(u*)(vd + 56UL) = *(u*)(vk + 16UL);
+ *(u*)(vd + 32UL) = *(u*)(vc + 144UL);
+ *(u*)(vc + 144UL) = *(u*)(vc + 144UL) + 1UL;
+ vi = 0UL;
+b22: if (vi != *(u*)(vk + 16UL)) goto b26;
+ *(u*)(vd + 72UL) = *(u*)(vk + 32UL);
+ v28 = (u)zrb_link;
+ v29 = vc + 152UL;
+ v30 = vlink;
+ v31 = vp;
+ v32 = vd + 0UL;
+ v33 = ((u(*)())(v28))(v29, v30, v31, v32);
+ v33;
+ vi = 0UL;
+b28: if (vi != 256UL) goto b32;
+ return vd;
+b32: v34 = (u)zdfakey_clear;
+ v35 = vk;
+ v36 = ((u(*)())(v34))(v35);
+ v36;
+ vj = 0UL;
+b34: if (vj != *(u*)(vd + 56UL)) goto b38;
+ v49 = (u)znfa2dfa;
+ v50 = vc;
+ v51 = vk;
+ v52 = ((u(*)())(v49))(v50, v51);
+ *(u*)(*(u*)(vd + 40UL) + vi * 8UL) = v52;
+ vi = vi + 1UL;
+ goto b28;
+b38: if (!(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 32UL))) goto b47;
+ if ((s)(*(u*)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 32UL) + 16UL)) > (s)(vi)) goto b47;
+ v38 = 1UL;
+b49: if (!(v38)) goto b43;
+ if ((s)(*(u*)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 32UL) + 24UL)) < (s)(vi)) goto b43;
+ v37 = 1UL;
+b45: if (!(v37)) goto b41;
+ v39 = (u)zdfakey_add;
+ v40 = vk;
+ v41 = *(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 32UL);
+ v42 = ((u(*)())(v39))(v40, v41);
+ v42;
+b39: if (!(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 40UL))) goto b59;
+ if ((s)(*(u*)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 40UL) + 16UL)) > (s)(vi)) goto b59;
+ v44 = 1UL;
+b61: if (!(v44)) goto b55;
+ if ((s)(*(u*)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 40UL) + 24UL)) < (s)(vi)) goto b55;
+ v43 = 1UL;
+b57: if (!(v43)) goto b53;
+ v45 = (u)zdfakey_add;
+ v46 = vk;
+ v47 = *(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 40UL);
+ v48 = ((u(*)())(v45))(v46, v47);
+ v48;
+b51: vj = vj + 1UL;
+ goto b34;
+b53: goto b51;
+b55: v43 = 0UL;
+ goto b57;
+b59: v44 = 0UL;
+ goto b61;
+b41: goto b39;
+b43: v37 = 0UL;
+ goto b45;
+b47: v38 = 0UL;
+ goto b49;
+b26: *(u*)(*(u*)(vd + 48UL) + vi * 8UL) = *(u*)(*(u*)(vk + 8UL) + vi * 8UL);
+ vi = vi + 1UL;
+ goto b22;
+b9: v12 = (u)zdfa_cmp;
+ v13 = vk;
+ v14 = vd;
+ v15 = ((u(*)())(v12))(v13, v14);
+ vdir = v15;
+ if ((s)(vdir) >= (s)0UL) goto b16;
+ vlink = (vd + 0UL) + 16UL;
+ vp = vd + 0UL;
+b14: goto b5;
+b16: if ((s)(vdir) <= (s)0UL) goto b18;
+ vlink = (vd + 0UL) + 24UL;
+ vp = vd + 0UL;
+ goto b14;
+b18: return vd;
+b11: v11 = 1UL;
+ goto b12;
}
-u zlalr_rules(u vlc, u vpn) {
- u vrule = 0;
- u vroot = 0;
- u vp = 0;
- u va = 0;
+u znfa_alt(u vc, u va, u vb) {
+ u vn = 0;
+ u vtail = 0;
u vi = 0;
+ u vj = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -37753,111 +36252,156 @@ u zlalr_rules(u vlc, u vpn) {
u v22 = 0;
u v23 = 0;
u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- v7 = (u)zlalr_mkprod;
- v8 = vlc;
- v9 = ((u(*)())v7)(v8);
- vroot = v9;
- vrule = *(u*)(vpn + 8UL);
-b2: if (!vrule) goto b8;
- v10 = 0UL;
-b9: if (!v10) goto b6;
- vi = 1UL;
- vrule = *(u*)(vpn + 8UL);
-b12: if (!vrule) goto b18;
- v19 = 0UL;
-b19: if (!v19) goto b16;
- v25 = (u)zlalr_mkalt;
- v26 = vlc;
- v27 = vroot;
- v28 = ((u(*)())v25)(v26, v27);
- va = v28;
- v29 = (u)zlalr_alt_nonterminal;
- v30 = vlc;
- v31 = va;
- v32 = *(u*)(*(u*)(vlc + 32UL) + 1UL * 8UL);
- v33 = ((u(*)())v29)(v30, v31, v32);
- v33;
- return 0UL;
-b16: vp = *(u*)(*(u*)(vlc + 32UL) + vi * 8UL);
- v20 = (u)zlalr_pattern;
- v21 = vlc;
- v22 = vp;
- v23 = *(u*)(*(u*)(vrule + 8UL) + 16UL);
- v24 = ((u(*)())v20)(v21, v22, v23);
+ if (!(va)) goto b5;
+ v7 = 0UL;
+b6: if (!(v7)) goto b3;
+ return vb;
+b3: if (!(vb)) goto b11;
+ v8 = 0UL;
+b12: if (!(v8)) goto b9;
+ return va;
+b9: v9 = (u)zalloc;
+ v10 = *(u*)(vc + 0UL);
+ v11 = 72UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ vn = v12;
+ *(u*)(vn + 0UL) = *(u*)(vc + 136UL);
+ *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
+ *(u*)(vn + 16UL) = -1UL;
+ *(u*)(vn + 24UL) = -1UL;
+ *(u*)(vn + 32UL) = va;
+ *(u*)(vn + 40UL) = vb;
+ *(u*)(vn + 56UL) = *(u*)(va + 56UL) + *(u*)(vb + 56UL);
+ v13 = (u)zalloc;
+ v14 = *(u*)(vc + 0UL);
+ v15 = 8UL * *(u*)(vn + 56UL);
+ v16 = ((u(*)())(v13))(v14, v15);
+ *(u*)(vn + 48UL) = v16;
+ vi = 0UL;
+ vj = 0UL;
+b15: if (vi != *(u*)(va + 56UL)) goto b19;
+ vi = 0UL;
+b20: if (vi != *(u*)(vb + 56UL)) goto b24;
+ v17 = (u)zfree;
+ v18 = *(u*)(vc + 0UL);
+ v19 = *(u*)(va + 48UL);
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ v21 = (u)zfree;
+ v22 = *(u*)(vc + 0UL);
+ v23 = *(u*)(vb + 48UL);
+ v24 = ((u(*)())(v21))(v22, v23);
v24;
- vrule = *(u*)(vrule + 16UL);
+ return vn;
+b24: *(u*)(*(u*)(vn + 48UL) + vj * 8UL) = *(u*)(*(u*)(vb + 48UL) + vi * 8UL);
+ vj = vj + 1UL;
+ vi = vi + 1UL;
+ goto b20;
+b19: *(u*)(*(u*)(vn + 48UL) + vj * 8UL) = *(u*)(*(u*)(va + 48UL) + vi * 8UL);
+ vj = vj + 1UL;
+ vi = vi + 1UL;
+ goto b15;
+b11: v8 = 1UL;
+ goto b12;
+b5: v7 = 1UL;
+ goto b6;
+}
+u znfa_any(u vc) {
+ u vn = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ v2 = (u)zalloc;
+ v3 = *(u*)(vc + 0UL);
+ v4 = 72UL;
+ v5 = ((u(*)())(v2))(v3, v4);
+ vn = v5;
+ *(u*)(vn + 0UL) = *(u*)(vc + 136UL);
+ *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
+ *(u*)(vn + 32UL) = 0UL;
+ *(u*)(vn + 16UL) = 0UL;
+ *(u*)(vn + 24UL) = 255UL;
+ v6 = (u)zalloc;
+ v7 = *(u*)(vc + 0UL);
+ v8 = 8UL;
+ v9 = ((u(*)())(v6))(v7, v8);
+ *(u*)(vn + 48UL) = v9;
+ *(u*)(vn + 56UL) = 1UL;
+ *(u*)(*(u*)(vn + 48UL) + 0UL * 8UL) = vn;
+ return vn;
+}
+u znfa_concat(u vc, u va, u vb) {
+ u vi = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ if (!(va)) goto b5;
+ v4 = 0UL;
+b6: if (!(v4)) goto b3;
+ return 0UL;
+b3: if (!(vb)) goto b11;
+ v5 = 0UL;
+b12: if (!(v5)) goto b9;
+ return 0UL;
+b9: vi = 0UL;
+b13: if (vi != *(u*)(va + 56UL)) goto b17;
+ v6 = (u)zfree;
+ v7 = *(u*)(vc + 0UL);
+ v8 = *(u*)(va + 48UL);
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+ *(u*)(va + 48UL) = *(u*)(vb + 48UL);
+ *(u*)(va + 56UL) = *(u*)(vb + 56UL);
+ return va;
+b17: *(u*)(*(u*)(*(u*)(va + 48UL) + vi * 8UL) + 32UL) = vb;
vi = vi + 1UL;
+ goto b13;
+b11: v5 = 1UL;
goto b12;
-b18: v19 = 1UL;
- goto b19;
-b6: v11 = (u)zlalr_mkprod;
- v12 = vlc;
- v13 = ((u(*)())v11)(v12);
- vp = v13;
- v14 = (u)zlalr_lookup;
- v15 = vlc;
- v16 = *(u*)(*(u*)(*(u*)(vrule + 8UL) + 8UL) + 56UL);
- v17 = vp;
- v18 = ((u(*)())v14)(v15, v16, v17);
- v18;
- vrule = *(u*)(vrule + 16UL);
- goto b2;
-b8: v10 = 1UL;
- goto b9;
+b5: v4 = 1UL;
+ goto b6;
}
-u zlalr_union_first(u vlc, u vout, u vsrc) {
- u vs = 0;
- u vt = 0;
- u vret = 0;
+u znfa_empty(u vc) {
+ u vn = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- v6 = (u)zrb_first;
- v7 = vsrc;
- v8 = ((u(*)())v6)(v7);
- vs = v8;
-b2: if (!vs) goto b8;
- v9 = 0UL;
-b9: if (!v9) goto b6;
- return vret;
-b6: v10 = (u)zlalr_add_first;
- v11 = vlc;
- v12 = vout;
- v13 = vs;
- v14 = ((u(*)())v10)(v11, v12, v13);
- if (!v14) goto b12;
- vret = 1UL;
-b10: v15 = (u)zrb_next;
- v16 = vs;
- v17 = ((u(*)())v15)(v16);
- vs = v17;
- goto b2;
-b12: goto b10;
-b8: v9 = 1UL;
- goto b9;
+ v2 = (u)zalloc;
+ v3 = *(u*)(vc + 0UL);
+ v4 = 72UL;
+ v5 = ((u(*)())(v2))(v3, v4);
+ vn = v5;
+ *(u*)(vn + 0UL) = *(u*)(vc + 136UL);
+ *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
+ *(u*)(vn + 16UL) = -1UL;
+ *(u*)(vn + 24UL) = -1UL;
+ *(u*)(vn + 32UL) = 0UL;
+ *(u*)(vn + 40UL) = 0UL;
+ v6 = (u)zalloc;
+ v7 = *(u*)(vc + 0UL);
+ v8 = 8UL;
+ v9 = ((u(*)())(v6))(v7, v8);
+ *(u*)(vn + 48UL) = v9;
+ *(u*)(vn + 56UL) = 1UL;
+ *(u*)(*(u*)(vn + 48UL) + 0UL * 8UL) = vn;
+ return vn;
}
-u zlalr_unionlook(u vlc, u vw) {
- u vs = 0;
- u vt = 0;
- u vret = 0;
+u znfa_lit(u vc, u vstart, u vend) {
+ u vn = 0;
+ u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -37865,53 +36409,31 @@ u zlalr_unionlook(u vlc, u vw) {
u v9 = 0;
u v10 = 0;
u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- v5 = (u)zlalr_finditem;
- v6 = vlc;
- v7 = *(u*)(vw + 80UL);
- v8 = vw + 8UL;
- v9 = ((u(*)())v5)(v6, v7, v8);
- vt = v9;
- v10 = (u)zrb_first;
- v11 = *(u*)*(u*)(vw + 88UL);
- v12 = ((u(*)())v10)(v11);
- vs = v12;
-b3: if (!vs) goto b9;
- v13 = 0UL;
-b10: if (!v13) goto b7;
- *(u*)(vw + 88UL) = vt + 64UL;
- return vret;
-b7: v14 = (u)zlalr_addlook;
- v15 = vlc;
- v16 = vt + 64UL;
- v17 = vs;
- v18 = ((u(*)())v14)(v15, v16, v17);
- if (!v18) goto b13;
- vret = 1UL;
-b11: v19 = (u)zrb_next;
- v20 = vs;
- v21 = ((u(*)())v19)(v20);
- vs = v21;
- goto b3;
-b13: goto b11;
-b9: v13 = 1UL;
- goto b10;
+ v4 = (u)zalloc;
+ v5 = *(u*)(vc + 0UL);
+ v6 = 72UL;
+ v7 = ((u(*)())(v4))(v5, v6);
+ vn = v7;
+ *(u*)(vn + 0UL) = *(u*)(vc + 136UL);
+ *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
+ *(u*)(vn + 32UL) = 0UL;
+ *(u*)(vn + 16UL) = vstart;
+ *(u*)(vn + 24UL) = vend;
+ v8 = (u)zalloc;
+ v9 = *(u*)(vc + 0UL);
+ v10 = 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ *(u*)(vn + 48UL) = v11;
+ *(u*)(vn + 56UL) = 1UL;
+ *(u*)(*(u*)(vn + 48UL) + 0UL * 8UL) = vn;
+ return vn;
}
-u zlayout_struct(u vc, u vd) {
- u vm = 0;
- u voffset = 0;
- u vname = 0;
- u vmd = 0;
- u vt = 0;
+u znfa_plus(u vc, u va) {
+ u vb = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -37922,80 +36444,44 @@ u zlayout_struct(u vc, u vd) {
u v14 = 0;
u v15 = 0;
u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- if (!*(u*)(vd + 144UL)) goto b3;
- if (*(u*)(vd + 144UL) != 2UL) goto b6;
- v7 = (u)zcdie;
- v8 = vc;
- v9 = (u)"circular struct definition";
- v10 = ((u(*)())v7)(v8, v9);
- v10;
-b4: return 0UL;
-b6: goto b4;
-b3: *(u*)(vd + 144UL) = 2UL;
- vm = *(u*)(*(u*)(vd + 152UL) + 16UL);
- voffset = 0UL;
-b8: if (!vm) goto b14;
- v11 = 0UL;
-b15: if (!v11) goto b12;
- *(u*)(vd + 136UL) = voffset;
- *(u*)(vd + 144UL) = 1UL;
+ if (!(va)) goto b5;
+ v3 = 0UL;
+b6: if (!(v3)) goto b3;
return 0UL;
-b12: *(u*)(vc + 24UL) = *(u*)(*(u*)(vm + 8UL) + 24UL);
- *(u*)(vc + 32UL) = *(u*)(*(u*)(vm + 8UL) + 32UL);
- *(u*)(vc + 40UL) = *(u*)(*(u*)(vm + 8UL) + 40UL);
- vname = *(u*)(*(u*)(*(u*)(vm + 8UL) + 8UL) + 56UL);
- v12 = (u)zprototype;
- v13 = vc;
- v14 = *(u*)(*(u*)(vm + 8UL) + 16UL);
- v15 = ((u(*)())v12)(v13, v14);
- vt = v15;
- v16 = (u)zfind;
- v17 = vc;
- v18 = *(u*)(vd + 32UL);
- v19 = vname;
- v20 = 1UL;
- v21 = ((u(*)())v16)(v17, v18, v19, v20);
- vmd = v21;
- if (!*(u*)(vd + 168UL)) goto b20;
- v22 = (u)zcdie;
- v23 = vc;
- v24 = (u)"duplicate member";
- v25 = ((u(*)())v22)(v23, v24);
- v25;
-b18: *(u*)(vmd + 168UL) = 1UL;
- *(u*)(vmd + 176UL) = vt;
- *(u*)(vmd + 184UL) = voffset;
- v26 = (u)ztype_sizeof;
- v27 = vc;
- v28 = vt;
- v29 = ((u(*)())v26)(v27, v28);
- voffset = voffset + v29;
- vm = *(u*)(vm + 16UL);
- goto b8;
-b20: goto b18;
-b14: v11 = 1UL;
- goto b15;
+b3: v4 = (u)zalloc;
+ v5 = *(u*)(vc + 0UL);
+ v6 = 72UL;
+ v7 = ((u(*)())(v4))(v5, v6);
+ vb = v7;
+ *(u*)(vb + 0UL) = *(u*)(vc + 136UL);
+ *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
+ *(u*)(vb + 16UL) = -1UL;
+ *(u*)(vb + 24UL) = -1UL;
+ *(u*)(vb + 32UL) = 0UL;
+ *(u*)(vb + 40UL) = va;
+ v8 = (u)zalloc;
+ v9 = *(u*)(vc + 0UL);
+ v10 = 8UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ *(u*)(vb + 48UL) = v11;
+ *(u*)(vb + 56UL) = 1UL;
+ *(u*)(*(u*)(vb + 48UL) + 0UL * 8UL) = vb;
+ v12 = (u)znfa_concat;
+ v13 = vc;
+ v14 = va;
+ v15 = vb;
+ v16 = ((u(*)())(v12))(v13, v14, v15);
+ return v16;
+b5: v3 = 1UL;
+ goto b6;
}
-u zlayout_union(u vc, u vd) {
- u vm = 0;
- u vsize = 0;
- u vmember_size = 0;
- u vname = 0;
- u vmd = 0;
- u vt = 0;
+u znfa_qmark(u vc, u va) {
+ u vb = 0;
+ u vi = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
@@ -38008,501 +36494,859 @@ u zlayout_union(u vc, u vd) {
u v17 = 0;
u v18 = 0;
u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- if (!*(u*)(vd + 144UL)) goto b3;
- if (*(u*)(vd + 144UL) != 2UL) goto b6;
- v8 = (u)zcdie;
- v9 = vc;
- v10 = (u)"circular struct definition";
- v11 = ((u(*)())v8)(v9, v10);
- v11;
-b4: return 0UL;
-b6: goto b4;
-b3: *(u*)(vd + 144UL) = 2UL;
- vm = *(u*)(*(u*)(vd + 152UL) + 16UL);
- vsize = 0UL;
-b8: if (!vm) goto b14;
- v12 = 0UL;
-b15: if (!v12) goto b12;
- *(u*)(vd + 136UL) = vsize;
- *(u*)(vd + 144UL) = 1UL;
- return 0UL;
-b12: *(u*)(vc + 24UL) = *(u*)(*(u*)(vm + 8UL) + 24UL);
- *(u*)(vc + 32UL) = *(u*)(*(u*)(vm + 8UL) + 32UL);
- *(u*)(vc + 40UL) = *(u*)(*(u*)(vm + 8UL) + 40UL);
- vname = *(u*)(*(u*)(*(u*)(vm + 8UL) + 8UL) + 56UL);
- v13 = (u)zprototype;
- v14 = vc;
- v15 = *(u*)(*(u*)(vm + 8UL) + 16UL);
- v16 = ((u(*)())v13)(v14, v15);
- vt = v16;
- v17 = (u)zfind;
- v18 = vc;
- v19 = *(u*)(vd + 32UL);
- v20 = vname;
- v21 = 1UL;
- v22 = ((u(*)())v17)(v18, v19, v20, v21);
- vmd = v22;
- if (!*(u*)(vd + 168UL)) goto b20;
- v23 = (u)zcdie;
- v24 = vc;
- v25 = (u)"duplicate member";
- v26 = ((u(*)())v23)(v24, v25);
- v26;
-b18: *(u*)(vmd + 168UL) = 1UL;
- *(u*)(vmd + 176UL) = vt;
- *(u*)(vmd + 184UL) = 0UL;
- v27 = (u)ztype_sizeof;
- v28 = vc;
- v29 = vt;
- v30 = ((u(*)())v27)(v28, v29);
- vmember_size = v30;
- if ((s)vmember_size <= (s)vsize) goto b25;
- vsize = vmember_size;
-b23: vm = *(u*)(vm + 16UL);
- goto b8;
-b25: goto b23;
-b20: goto b18;
-b14: v12 = 1UL;
- goto b15;
-}
-u zlex_skip(u vl) {
- *(u*)(vl + 96UL) = 1UL;
- return 0UL;
-}
-u zlexer_action_0(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 0UL;
-}
-u zlexer_action_1(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 1UL;
-}
-u zlexer_action_10(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 10UL;
-}
-u zlexer_action_11(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 11UL;
-}
-u zlexer_action_12(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 12UL;
-}
-u zlexer_action_13(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 13UL;
-}
-u zlexer_action_14(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 14UL;
-}
-u zlexer_action_15(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 15UL;
-}
-u zlexer_action_16(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 16UL;
-}
-u zlexer_action_17(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 17UL;
-}
-u zlexer_action_18(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 18UL;
-}
-u zlexer_action_19(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 19UL;
-}
-u zlexer_action_2(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 2UL;
-}
-u zlexer_action_20(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 20UL;
-}
-u zlexer_action_21(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 21UL;
-}
-u zlexer_action_22(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 22UL;
-}
-u zlexer_action_23(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 23UL;
-}
-u zlexer_action_24(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 24UL;
-}
-u zlexer_action_25(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 25UL;
-}
-u zlexer_action_26(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 26UL;
-}
-u zlexer_action_27(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 27UL;
-}
-u zlexer_action_28(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 28UL;
-}
-u zlexer_action_29(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 29UL;
-}
-u zlexer_action_3(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 3UL;
-}
-u zlexer_action_30(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 30UL;
-}
-u zlexer_action_31(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 31UL;
-}
-u zlexer_action_32(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 32UL;
-}
-u zlexer_action_33(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 33UL;
-}
-u zlexer_action_34(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 34UL;
-}
-u zlexer_action_35(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 35UL;
-}
-u zlexer_action_36(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 36UL;
-}
-u zlexer_action_37(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 37UL;
-}
-u zlexer_action_38(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 38UL;
-}
-u zlexer_action_39(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 39UL;
-}
-u zlexer_action_4(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 4UL;
-}
-u zlexer_action_40(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 40UL;
-}
-u zlexer_action_41(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 41UL;
-}
-u zlexer_action_42(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 42UL;
+ if (!(va)) goto b5;
+ v4 = 0UL;
+b6: if (!(v4)) goto b3;
+ v5 = (u)znfa_empty;
+ v6 = vc;
+ v7 = ((u(*)())(v5))(v6);
+ return v7;
+b3: v8 = (u)zalloc;
+ v9 = *(u*)(vc + 0UL);
+ v10 = 72UL;
+ v11 = ((u(*)())(v8))(v9, v10);
+ vb = v11;
+ *(u*)(vb + 0UL) = *(u*)(vc + 136UL);
+ *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
+ *(u*)(vb + 16UL) = -1UL;
+ *(u*)(vb + 24UL) = -1UL;
+ *(u*)(vb + 32UL) = 0UL;
+ *(u*)(vb + 40UL) = va;
+ *(u*)(vb + 56UL) = *(u*)(va + 56UL) + 1UL;
+ v12 = (u)zalloc;
+ v13 = *(u*)(vc + 0UL);
+ v14 = 8UL * *(u*)(vb + 56UL);
+ v15 = ((u(*)())(v12))(v13, v14);
+ *(u*)(vb + 48UL) = v15;
+b10: if (vi != *(u*)(va + 56UL)) goto b14;
+ *(u*)(*(u*)(vb + 48UL) + vi * 8UL) = vb;
+ v16 = (u)zfree;
+ v17 = *(u*)(vc + 0UL);
+ v18 = *(u*)(va + 48UL);
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ return vb;
+b14: *(u*)(*(u*)(vb + 48UL) + vi * 8UL) = *(u*)(*(u*)(va + 48UL) + vi * 8UL);
+ vi = vi + 1UL;
+ goto b10;
+b5: v4 = 1UL;
+ goto b6;
}
-u zlexer_action_43(u vctx) {
- u v1 = 0;
+u znfa_star(u vc, u va) {
u v2 = 0;
u v3 = 0;
- return 43UL;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ v2 = (u)znfa_plus;
+ v3 = vc;
+ v4 = va;
+ v5 = ((u(*)())(v2))(v3, v4);
+ va = v5;
+ v6 = (u)znfa_qmark;
+ v7 = vc;
+ v8 = va;
+ v9 = ((u(*)())(v6))(v7, v8);
+ return v9;
}
-u zlexer_action_44(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 44UL;
+u znode_to_str(u vkind) {
+ if (vkind != 0UL) goto b3;
+ return (u)"N_IDENT";
+b3: if (vkind != 1UL) goto b6;
+ return (u)"N_NUM";
+b6: if (vkind != 2UL) goto b9;
+ return (u)"N_CHAR";
+b9: if (vkind != 3UL) goto b12;
+ return (u)"N_STR";
+b12: if (vkind != 4UL) goto b15;
+ return (u)"N_NIL";
+b15: if (vkind != 5UL) goto b18;
+ return (u)"N_STMTLIST";
+b18: if (vkind != 6UL) goto b21;
+ return (u)"N_EXPRLIST";
+b21: if (vkind != 7UL) goto b24;
+ return (u)"N_CALL";
+b24: if (vkind != 9UL) goto b27;
+ return (u)"N_DOT";
+b27: if (vkind != 10UL) goto b30;
+ return (u)"N_ARGLIST";
+b30: if (vkind != 11UL) goto b33;
+ return (u)"N_FUNC";
+b33: if (vkind != 12UL) goto b36;
+ return (u)"N_ARGDECL";
+b36: if (vkind != 13UL) goto b39;
+ return (u)"N_FUNCDECL";
+b39: if (vkind != 14UL) goto b42;
+ return (u)"N_PROGRAM";
+b42: if (vkind != 15UL) goto b45;
+ return (u)"N_FUNCTYPE";
+b45: if (vkind != 16UL) goto b48;
+ return (u)"N_PTRTYPE";
+b48: if (vkind != 17UL) goto b51;
+ return (u)"N_STRUCT";
+b51: if (vkind != 18UL) goto b54;
+ return (u)"N_UNION";
+b54: if (vkind != 19UL) goto b57;
+ return (u)"N_MEMBERDECL";
+b57: if (vkind != 20UL) goto b60;
+ return (u)"N_MEMBERLIST";
+b60: if (vkind != 21UL) goto b63;
+ return (u)"N_CONDLIST";
+b63: if (vkind != 22UL) goto b66;
+ return (u)"N_COND";
+b66: if (vkind != 23UL) goto b69;
+ return (u)"N_ENUM";
+b69: if (vkind != 24UL) goto b72;
+ return (u)"N_ENUMITEM";
+b72: if (vkind != 25UL) goto b75;
+ return (u)"N_ENUMLIST";
+b75: if (vkind != 26UL) goto b78;
+ return (u)"N_LOOP";
+b78: if (vkind != 27UL) goto b81;
+ return (u)"N_BREAK";
+b81: if (vkind != 28UL) goto b84;
+ return (u)"N_CONTINUE";
+b84: if (vkind != 29UL) goto b87;
+ return (u)"N_RETURN";
+b87: if (vkind != 30UL) goto b90;
+ return (u)"N_VARDECL";
+b90: if (vkind != 31UL) goto b93;
+ return (u)"N_LABEL";
+b93: if (vkind != 32UL) goto b96;
+ return (u)"N_GOTO";
+b96: if (vkind != 33UL) goto b99;
+ return (u)"N_ASSIGN";
+b99: if (vkind != 34UL) goto b102;
+ return (u)"N_SIZEOF";
+b102: if (vkind != 35UL) goto b105;
+ return (u)"N_REF";
+b105: if (vkind != 36UL) goto b108;
+ return (u)"N_DEREF";
+b108: if (vkind != 37UL) goto b111;
+ return (u)"N_CAST";
+b111: if (vkind != 38UL) goto b114;
+ return (u)"N_INDEX";
+b114: if (vkind != 39UL) goto b117;
+ return (u)"N_LT";
+b117: if (vkind != 40UL) goto b120;
+ return (u)"N_GT";
+b120: if (vkind != 41UL) goto b123;
+ return (u)"N_LE";
+b123: if (vkind != 42UL) goto b126;
+ return (u)"N_GE";
+b126: if (vkind != 43UL) goto b129;
+ return (u)"N_EQ";
+b129: if (vkind != 44UL) goto b132;
+ return (u)"N_NE";
+b132: if (vkind != 45UL) goto b135;
+ return (u)"N_ADD";
+b135: if (vkind != 46UL) goto b138;
+ return (u)"N_SUB";
+b138: if (vkind != 47UL) goto b141;
+ return (u)"N_MUL";
+b141: if (vkind != 48UL) goto b144;
+ return (u)"N_LSH";
+b144: if (vkind != 49UL) goto b147;
+ return (u)"N_RSH";
+b147: if (vkind != 50UL) goto b150;
+ return (u)"N_BNOT";
+b150: if (vkind != 51UL) goto b153;
+ return (u)"N_BOR";
+b153: if (vkind != 52UL) goto b156;
+ return (u)"N_BAND";
+b156: if (vkind != 53UL) goto b159;
+ return (u)"N_AND";
+b159: if (vkind != 54UL) goto b162;
+ return (u)"N_OR";
+b162: if (vkind != 55UL) goto b165;
+ return (u)"N_XOR";
+b165: if (vkind != 56UL) goto b168;
+ return (u)"N_NOT";
+b168: if (vkind != 57UL) goto b171;
+ return (u)"N_POS";
+b171: if (vkind != 58UL) goto b174;
+ return (u)"N_NEG";
+b174: if (vkind != 59UL) goto b177;
+ return (u)"N_DIV";
+b177: if (vkind != 60UL) goto b180;
+ return (u)"N_MOD";
+b180: if (vkind != 61UL) goto b183;
+ return (u)"N_CHARSET";
+b183: if (vkind != 62UL) goto b186;
+ return (u)"N_LEXDOT";
+b186: if (vkind != 63UL) goto b189;
+ return (u)"N_LEXSTAR";
+b189: if (vkind != 64UL) goto b192;
+ return (u)"N_LEXPLUS";
+b192: if (vkind != 65UL) goto b195;
+ return (u)"N_LEXQMARK";
+b195: if (vkind != 66UL) goto b198;
+ return (u)"N_LEXCONCAT";
+b198: if (vkind != 67UL) goto b201;
+ return (u)"N_LEXALT";
+b201: if (vkind != 68UL) goto b204;
+ return (u)"N_LEXRULE";
+b204: if (vkind != 69UL) goto b207;
+ return (u)"N_LEXLIST";
+b207: if (vkind != 70UL) goto b210;
+ return (u)"N_LEXER";
+b210: if (vkind != 71UL) goto b213;
+ return (u)"N_PRODITEM";
+b213: if (vkind != 72UL) goto b216;
+ return (u)"N_PRODALT";
+b216: if (vkind != 73UL) goto b219;
+ return (u)"N_PROD";
+b219: if (vkind != 74UL) goto b222;
+ return (u)"N_PRODLIST";
+b222: if (vkind != 75UL) goto b225;
+ return (u)"N_GRAMMAR";
+b225: return (u)"(invalid)";
}
-u zlexer_action_45(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 45UL;
+u zopen(u vname, u vflags, u vmode) {
+ return (u)open((char *)vname, (int)vflags, (int)vmode);
}
-u zlexer_action_46(u vctx) {
- u v1 = 0;
- u v2 = 0;
+u zopen_call_out(u vc, u vfilename) {
+ u vfd = 0;
u v3 = 0;
- return 46UL;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ v3 = (u)zopen;
+ v4 = vfilename;
+ v5 = (64UL | 1UL) | 512UL;
+ v6 = ((6UL << 6UL) + (6UL << 3UL)) + 6UL;
+ v7 = ((u(*)())(v3))(v4, v5, v6);
+ vfd = v7;
+ if ((s)(vfd) >= (s)0UL) goto b4;
+ v8 = (u)zdie;
+ v9 = (u)"open_call_out: failed to open output";
+ v10 = ((u(*)())(v8))(v9);
+ v10;
+b2: v11 = (u)zfopen;
+ v12 = vfd;
+ v13 = *(u*)(vc + 0UL);
+ v14 = ((u(*)())(v11))(v12, v13);
+ *(u*)(vc + 80UL) = v14;
+ *(u*)(*(u*)(vc + 80UL) + 56UL) = 1UL;
+ return 0UL;
+b4: goto b2;
}
-u zlexer_action_47(u vctx) {
- u v1 = 0;
- u v2 = 0;
+u zopen_coutput(u vc, u vfilename) {
+ u vfd = 0;
u v3 = 0;
- return 47UL;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ if (!(*(u*)(vc + 72UL))) goto b3;
+ v3 = (u)zdie;
+ v4 = (u)"multiple output files";
+ v5 = ((u(*)())(v3))(v4);
+ v5;
+b1: v6 = (u)zopen;
+ v7 = vfilename;
+ v8 = (64UL | 1UL) | 512UL;
+ v9 = ((6UL << 6UL) + (6UL << 3UL)) + 6UL;
+ v10 = ((u(*)())(v6))(v7, v8, v9);
+ vfd = v10;
+ if ((s)(vfd) >= (s)0UL) goto b8;
+ v11 = (u)zdie;
+ v12 = (u)"open_coutput: failed to open output";
+ v13 = ((u(*)())(v11))(v12);
+ v13;
+b6: v14 = (u)zfopen;
+ v15 = vfd;
+ v16 = *(u*)(vc + 0UL);
+ v17 = ((u(*)())(v14))(v15, v16);
+ *(u*)(vc + 72UL) = v17;
+ *(u*)(*(u*)(vc + 72UL) + 56UL) = 1UL;
+ return 0UL;
+b8: goto b6;
+b3: goto b1;
}
-u zlexer_action_48(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 48UL;
+u zopen_lex(u vl, u vfd) {
+ *(u*)(vl + 32UL) = vfd;
+ *(u*)(vl + 40UL) = 0UL;
+ *(u*)(vl + 48UL) = 0UL;
+ *(u*)(vl + 64UL) = 0UL;
+ *(u*)(vl + 72UL) = 0UL;
+ *(u*)(vl + 80UL) = 0UL;
+ *(u*)(vl + 104UL) = 1UL;
+ *(u*)(vl + 112UL) = 1UL;
+ *(u*)(vl + 120UL) = 1UL;
+ *(u*)(vl + 128UL) = 1UL;
+ return 0UL;
}
-u zlexer_action_49(u vctx) {
- u v1 = 0;
- u v2 = 0;
+u zopen_lines_out(u vc, u vfilename) {
+ u vfd = 0;
u v3 = 0;
- return 49UL;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ v3 = (u)zopen;
+ v4 = vfilename;
+ v5 = (64UL | 1UL) | 512UL;
+ v6 = ((6UL << 6UL) + (6UL << 3UL)) + 6UL;
+ v7 = ((u(*)())(v3))(v4, v5, v6);
+ vfd = v7;
+ if ((s)(vfd) >= (s)0UL) goto b4;
+ v8 = (u)zdie;
+ v9 = (u)"open_lines_out: failed to open output";
+ v10 = ((u(*)())(v8))(v9);
+ v10;
+b2: v11 = (u)zfopen;
+ v12 = vfd;
+ v13 = *(u*)(vc + 0UL);
+ v14 = ((u(*)())(v11))(v12, v13);
+ *(u*)(*(u*)(vc + 48UL) + 80UL) = v14;
+ *(u*)(*(u*)(*(u*)(vc + 48UL) + 80UL) + 56UL) = 1UL;
+ return 0UL;
+b4: goto b2;
}
-u zlexer_action_5(u vctx) {
- u v1 = 0;
- u v2 = 0;
+u zopen_output(u vc, u vfilename) {
+ u vfd = 0;
u v3 = 0;
- return 5UL;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ if (!(*(u*)(vc + 8UL))) goto b3;
+ v3 = (u)zdie;
+ v4 = (u)"multiple output files";
+ v5 = ((u(*)())(v3))(v4);
+ v5;
+b1: v6 = (u)zunlink;
+ v7 = vfilename;
+ v8 = ((u(*)())(v6))(v7);
+ v8;
+ v9 = (u)zopen;
+ v10 = vfilename;
+ v11 = 64UL | 1UL;
+ v12 = ((7UL << 6UL) + (7UL << 3UL)) + 7UL;
+ v13 = ((u(*)())(v9))(v10, v11, v12);
+ vfd = v13;
+ if ((s)(vfd) >= (s)0UL) goto b9;
+ v14 = (u)zdie;
+ v15 = (u)"failed to open output";
+ v16 = ((u(*)())(v14))(v15);
+ v16;
+b7: v17 = (u)zfopen;
+ v18 = vfd;
+ v19 = *(u*)(vc + 0UL);
+ v20 = ((u(*)())(v17))(v18, v19);
+ *(u*)(vc + 8UL) = v20;
+ *(u*)(*(u*)(vc + 8UL) + 56UL) = 1UL;
+ return 0UL;
+b9: goto b7;
+b3: goto b1;
}
-u zlexer_action_50(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 50UL;
+u zparse_charset(u va, u vs, u vlen) {
+ u vi = 0;
+ u vj = 0;
+ u vch = 0;
+ u vx = 0;
+ u vok = 0;
+ u vscratch = 0;
+ u vstart = 0;
+ u vend = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ v11 = (u)zalloc;
+ v12 = va;
+ v13 = 256UL;
+ v14 = ((u(*)())(v11))(v12, v13);
+ vscratch = v14;
+ vi = 0UL;
+ vx = 1UL;
+ if ((u)*(b*)(vs + vi * 1UL) != 94UL) goto b4;
+ vx = 0UL;
+ vj = 0UL;
+b5: if (vj != 256UL) goto b9;
+ vi = vi + 1UL;
+b2:b10: if (vi != vlen) goto b14;
+ return vscratch;
+b14: vch = (u)*(b*)(vs + vi * 1UL);
+ if (vch != 92UL) goto b17;
+ v15 = (u)zunescape;
+ v16 = vs;
+ v17 = (u)&vi;
+ v18 = vlen;
+ v19 = (u)&vok;
+ v20 = ((u(*)())(v15))(v16, v17, v18, v19);
+ vch = v20;
+ if (!(vok)) goto b23;
+ v21 = 0UL;
+b24: if (!(v21)) goto b21;
+ v22 = (u)zdie;
+ v23 = (u)"parse_charset: invalid escape";
+ v24 = ((u(*)())(v22))(v23);
+ v24;
+b19:b15: vstart = vch;
+ vend = vch;
+ if (vi == vlen) goto b32;
+ if ((u)*(b*)(vs + vi * 1UL) != 45UL) goto b32;
+ v25 = 1UL;
+b34: if (!(v25)) goto b30;
+ vi = vi + 1UL;
+ v26 = (u)zunescape;
+ v27 = vs;
+ v28 = (u)&vi;
+ v29 = vlen;
+ v30 = (u)&vok;
+ v31 = ((u(*)())(v26))(v27, v28, v29, v30);
+ vch = v31;
+ if (!(vok)) goto b40;
+ v32 = 0UL;
+b41: if (!(v32)) goto b38;
+ v33 = (u)zdie;
+ v34 = (u)"parse_charset: invalid escape";
+ v35 = ((u(*)())(v33))(v34);
+ v35;
+b36: vend = vch;
+b28: vj = vstart;
+b43: if ((s)(vj) <= (s)(vend)) goto b47;
+ goto b10;
+b47: *(b*)(vscratch + vj * 1UL) = vx;
+ vj = vj + 1UL;
+ goto b43;
+b38: goto b36;
+b40: v32 = 1UL;
+ goto b41;
+b30: goto b28;
+b32: v25 = 0UL;
+ goto b34;
+b21: goto b19;
+b23: v21 = 1UL;
+ goto b24;
+b17: if (vch != 94UL) goto b27;
+ vx = 0UL;
+ vi = vi + 1UL;
+ goto b10;
+b27: vi = vi + 1UL;
+ goto b15;
+b9: *(b*)(vscratch + vj * 1UL) = 1UL;
+ vj = vj + 1UL;
+ goto b5;
+b4: goto b2;
}
-u zlexer_action_51(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 51UL;
+u zprototype(u vc, u vn) {
+ u va = 0;
+ u vb = 0;
+ u vst = 0;
+ u vkind = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ if (!(vn)) goto b5;
+ v6 = 0UL;
+b6: if (!(v6)) goto b3;
+ return 0UL;
+b3: *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(vc + 40UL) = 0UL;
+ vkind = *(u*)(vn + 0UL);
+ if (vkind != 0UL) goto b9;
+ v8 = (u)zstrcmp;
+ v9 = *(u*)(vn + 56UL);
+ v10 = (u)"void";
+ v11 = ((u(*)())(v8))(v9, v10);
+ if (!(v11)) goto b14;
+ v7 = 0UL;
+b15: if (!(v7)) goto b12;
+ v12 = (u)zmktype0;
+ v13 = vc;
+ v14 = 1UL;
+ v15 = ((u(*)())(v12))(v13, v14);
+ return v15;
+b12: v17 = (u)zstrcmp;
+ v18 = *(u*)(vn + 56UL);
+ v19 = (u)"int";
+ v20 = ((u(*)())(v17))(v18, v19);
+ if (!(v20)) goto b22;
+ v16 = 0UL;
+b23: if (!(v16)) goto b20;
+ v21 = (u)zmktype0;
+ v22 = vc;
+ v23 = 2UL;
+ v24 = ((u(*)())(v21))(v22, v23);
+ return v24;
+b20: v26 = (u)zstrcmp;
+ v27 = *(u*)(vn + 56UL);
+ v28 = (u)"byte";
+ v29 = ((u(*)())(v26))(v27, v28);
+ if (!(v29)) goto b30;
+ v25 = 0UL;
+b31: if (!(v25)) goto b28;
+ v30 = (u)zmktype0;
+ v31 = vc;
+ v32 = 3UL;
+ v33 = ((u(*)())(v30))(v31, v32);
+ return v33;
+b28: v34 = (u)zfind;
+ v35 = vc;
+ v36 = *(u*)(vn + 56UL);
+ v37 = 0UL;
+ v38 = 0UL;
+ v39 = ((u(*)())(v34))(v35, v36, v37, v38);
+ vst = v39;
+ if (!(vst)) goto b43;
+ v41 = 0UL;
+b44: if (!(v41)) goto b39;
+ v40 = 1UL;
+b41: if (!(v40)) goto b37;
+ v43 = (u)zcdie;
+ v44 = vc;
+ v45 = (u)"unknown struct";
+ v46 = ((u(*)())(v43))(v44, v45);
+ v46;
+b35: if (*(u*)(*(u*)(vst + 152UL) + 0UL) != 17UL) goto b52;
+ v47 = (u)zmktype_struct;
+ v48 = vc;
+ v49 = vst;
+ v50 = ((u(*)())(v47))(v48, v49);
+ return v50;
+b52: v51 = (u)zmktype_union;
+ v52 = vc;
+ v53 = vst;
+ v54 = ((u(*)())(v51))(v52, v53);
+ return v54;
+b37: goto b35;
+b39: if (!(*(u*)(vst + 128UL))) goto b47;
+ v42 = 0UL;
+b48: if (!(v42)) goto b45;
+ v40 = 1UL;
+ goto b41;
+b45: v40 = 0UL;
+ goto b41;
+b47: v42 = 1UL;
+ goto b48;
+b43: v41 = 1UL;
+ goto b44;
+b30: v25 = 1UL;
+ goto b31;
+b22: v16 = 1UL;
+ goto b23;
+b14: v7 = 1UL;
+ goto b15;
+b9: if (vkind != 10UL) goto b56;
+ v55 = (u)zprototype;
+ v56 = vc;
+ v57 = *(u*)(*(u*)(vn + 8UL) + 16UL);
+ v58 = ((u(*)())(v55))(v56, v57);
+ va = v58;
+ v59 = (u)zprototype;
+ v60 = vc;
+ v61 = *(u*)(vn + 16UL);
+ v62 = ((u(*)())(v59))(v60, v61);
+ vb = v62;
+ vkind = *(u*)(va + 0UL);
+ if (vkind == 2UL) goto b71;
+ if (vkind == 3UL) goto b71;
+ v65 = 1UL;
+b73: if (!(v65)) goto b67;
+ if (vkind == 4UL) goto b67;
+ v64 = 1UL;
+b69: if (!(v64)) goto b63;
+ if (vkind == 6UL) goto b63;
+ v63 = 1UL;
+b65: if (!(v63)) goto b61;
+ v66 = (u)zcdie;
+ v67 = vc;
+ v68 = (u)"not a ptr arg";
+ v69 = ((u(*)())(v66))(v67, v68);
+ v69;
+b59: v70 = (u)zmktype2;
+ v71 = vc;
+ v72 = 5UL;
+ v73 = va;
+ v74 = vb;
+ v75 = ((u(*)())(v70))(v71, v72, v73, v74);
+ return v75;
+b61: goto b59;
+b63: v63 = 0UL;
+ goto b65;
+b67: v64 = 0UL;
+ goto b69;
+b71: v65 = 0UL;
+ goto b73;
+b56: if (vkind != 15UL) goto b77;
+ if (!(*(u*)(vn + 16UL))) goto b80;
+ v76 = (u)zprototype;
+ v77 = vc;
+ v78 = *(u*)(vn + 16UL);
+ v79 = ((u(*)())(v76))(v77, v78);
+ va = v79;
+b78: v84 = (u)zprototype;
+ v85 = vc;
+ v86 = *(u*)(vn + 8UL);
+ v87 = ((u(*)())(v84))(v85, v86);
+ vb = v87;
+ vkind = *(u*)(va + 0UL);
+ if (vkind == 1UL) goto b100;
+ if (vkind == 2UL) goto b100;
+ v91 = 1UL;
+b102: if (!(v91)) goto b96;
+ if (vkind == 3UL) goto b96;
+ v90 = 1UL;
+b98: if (!(v90)) goto b92;
+ if (vkind == 4UL) goto b92;
+ v89 = 1UL;
+b94: if (!(v89)) goto b88;
+ if (vkind == 6UL) goto b88;
+ v88 = 1UL;
+b90: if (!(v88)) goto b86;
+ v92 = (u)zcdie;
+ v93 = vc;
+ v94 = (u)"not a ptr return";
+ v95 = ((u(*)())(v92))(v93, v94);
+ v95;
+b84: v96 = (u)zmktype2;
+ v97 = vc;
+ v98 = 6UL;
+ v99 = va;
+ v100 = vb;
+ v101 = ((u(*)())(v96))(v97, v98, v99, v100);
+ return v101;
+b86: goto b84;
+b88: v88 = 0UL;
+ goto b90;
+b92: v89 = 0UL;
+ goto b94;
+b96: v90 = 0UL;
+ goto b98;
+b100: v91 = 0UL;
+ goto b102;
+b80: v80 = (u)zmktype0;
+ v81 = vc;
+ v82 = 1UL;
+ v83 = ((u(*)())(v80))(v81, v82);
+ va = v83;
+ goto b78;
+b77: if (vkind != 16UL) goto b106;
+ v102 = (u)zmktype1;
+ v103 = vc;
+ v104 = 4UL;
+ v106 = (u)zprototype;
+ v107 = vc;
+ v108 = *(u*)(vn + 8UL);
+ v109 = ((u(*)())(v106))(v107, v108);
+ v105 = v109;
+ v110 = ((u(*)())(v102))(v103, v104, v105);
+ return v110;
+b106: v111 = (u)zcdie;
+ v112 = vc;
+ v113 = (u)"prototype: invalid type";
+ v114 = ((u(*)())(v111))(v112, v113);
+ v114;
+ return 0UL;
+b5: v6 = 1UL;
+ goto b6;
}
-u zlexer_action_52(u vctx) {
- u vn = 0;
+u zputchar(u vc, u vch) {
u v2 = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- v2 = (u)zmknode;
- v3 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v4 = 0UL;
- v5 = 0UL;
- v6 = 0UL;
- v7 = ((u(*)())v2)(v3, v4, v5, v6);
- vn = v7;
- v8 = (u)zmkstr;
- v9 = *(u*)(vctx + 0UL);
- v10 = *(u*)(vctx + 56UL) + *(u*)(vctx + 64UL) * 1UL;
- v11 = *(u*)(vctx + 72UL) - *(u*)(vctx + 64UL);
- v12 = ((u(*)())v8)(v9, v10, v11);
- *(u*)(vn + 56UL) = v12;
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
- return 52UL;
-}
-u zlexer_action_53(u vctx) {
- u vn = 0;
- u vok = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- v3 = (u)zmknode;
- v4 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v5 = 1UL;
- v6 = 0UL;
- v7 = 0UL;
- v8 = ((u(*)())v3)(v4, v5, v6, v7);
- vn = v8;
- v9 = (u)zhex2int;
- v10 = *(u*)(vctx + 56UL) + (*(u*)(vctx + 64UL) + 2UL) * 1UL;
- v11 = *(u*)(vctx + 72UL) - *(u*)(vctx + 64UL) - 2UL;
- v12 = (u)&vok;
- v13 = ((u(*)())v9)(v10, v11, v12);
- *(u*)(vn + 48UL) = v13;
- if (!vok) goto b7;
- v14 = 0UL;
-b8: if (!v14) goto b5;
- v15 = (u)zdie;
- v16 = (u)"invalid hex";
- v17 = ((u(*)())v15)(v16);
- v17;
-b3: *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
- return 53UL;
-b5: goto b3;
-b7: v14 = 1UL;
- goto b8;
+ v2 = (u)zfputc;
+ v3 = *(u*)(vc + 8UL);
+ v4 = vch;
+ v5 = ((u(*)())(v2))(v3, v4);
+ v5;
+ return 0UL;
}
-u zlexer_action_54(u vctx) {
- u vn = 0;
- u vx = 0;
- u vok = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- v4 = (u)zmknode;
- v5 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v6 = 1UL;
- v7 = 0UL;
- v8 = 0UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vn = v9;
- v10 = (u)zdec2int;
- v11 = *(u*)(vctx + 56UL) + *(u*)(vctx + 64UL) * 1UL;
- v12 = *(u*)(vctx + 72UL) - *(u*)(vctx + 64UL);
- v13 = (u)&vok;
- v14 = ((u(*)())v10)(v11, v12, v13);
- *(u*)(vn + 48UL) = v14;
- if (!vok) goto b7;
- v15 = 0UL;
-b8: if (!v15) goto b5;
- v16 = (u)zdie;
- v17 = (u)"invalid dec";
- v18 = ((u(*)())v16)(v17);
- v18;
-b3: *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
- return 53UL;
-b5: goto b3;
-b7: v15 = 1UL;
- goto b8;
+u zrb_first(u vn) {
+ u v1 = 0;
+ u v2 = 0;
+ if (!(vn)) goto b5;
+ v1 = 0UL;
+b6: if (!(v1)) goto b3;
+ return 0UL;
+b3:b7: if (!(*(u*)(vn + 16UL))) goto b13;
+ v2 = 0UL;
+b14: if (!(v2)) goto b11;
+ return vn;
+b11: vn = *(u*)(vn + 16UL);
+ goto b7;
+b13: v2 = 1UL;
+ goto b14;
+b5: v1 = 1UL;
+ goto b6;
}
-u zlexer_action_55(u vctx) {
- u vn = 0;
- u vi = 0;
- u vx = 0;
- u vok = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
+u zrb_link(u vtree, u vlink, u vparent, u vn) {
+ u vl = 0;
+ u vr = 0;
+ u vg = 0;
+ u vp = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
@@ -38520,50 +37364,199 @@ u zlexer_action_55(u vctx) {
u v22 = 0;
u v23 = 0;
u v24 = 0;
- v5 = (u)zmknode;
- v6 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v7 = 1UL;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ *(u*)(vn + 0UL) = 1UL;
+ *(u*)(vn + 8UL) = vparent;
+ *(u*)(vn + 16UL) = 0UL;
+ *(u*)(vn + 24UL) = 0UL;
+ *(u*)(vlink) = vn;
+b1: vp = *(u*)(vn + 8UL);
+ if (!(vp)) goto b7;
v8 = 0UL;
+b8: if (!(v8)) goto b5;
+ *(u*)(vn + 0UL) = 0UL;
+ return 0UL;
+b5: if (!(*(u*)(vp + 0UL))) goto b13;
v9 = 0UL;
- v10 = ((u(*)())v5)(v6, v7, v8, v9);
- vn = v10;
- vi = *(u*)(vctx + 64UL) + 1UL;
- v11 = (u)zunescape;
- v12 = *(u*)(vctx + 56UL);
- v13 = (u)&vi;
- v14 = *(u*)(vctx + 72UL) - 1UL;
- v15 = (u)&vok;
- v16 = ((u(*)())v11)(v12, v13, v14, v15);
- *(u*)(vn + 48UL) = v16;
- if (!vok) goto b11;
- v18 = 0UL;
-b12: if (!v18) goto b7;
- v17 = 1UL;
-b9: if (!v17) goto b5;
- v19 = (u)zdie;
- v20 = (u)"invalid char";
- v21 = ((u(*)())v19)(v20);
+b14: if (!(v9)) goto b11;
+ return 0UL;
+b11: vg = *(u*)(vp + 8UL);
+ if (!(vg)) goto b19;
+ v10 = 0UL;
+b20: if (!(v10)) goto b17;
+ *(u*)(vp + 0UL) = 0UL;
+ return 0UL;
+b17: vl = *(u*)(vg + 16UL);
+ vr = *(u*)(vg + 24UL);
+ if (!(vl)) goto b33;
+ if (!(vr)) goto b33;
+ v13 = 1UL;
+b35: if (!(v13)) goto b29;
+ if (!(*(u*)(vl + 0UL))) goto b29;
+ v12 = 1UL;
+b31: if (!(v12)) goto b25;
+ if (!(*(u*)(vr + 0UL))) goto b25;
+ v11 = 1UL;
+b27: if (!(v11)) goto b23;
+ *(u*)(vl + 0UL) = 0UL;
+ *(u*)(vr + 0UL) = 0UL;
+ *(u*)(vg + 0UL) = 1UL;
+ vn = vg;
+ goto b1;
+b23: if (vp != *(u*)(vg + 16UL)) goto b38;
+ if (vn != *(u*)(vp + 16UL)) goto b41;
+ *(u*)(vn + 0UL) = 0UL;
+ v14 = (u)zrb_rotate_right;
+ v15 = vtree;
+ v16 = vp;
+ v17 = ((u(*)())(v14))(v15, v16);
+ v17;
+ vn = vp;
+b39:b36: goto b1;
+b41: *(u*)(vp + 0UL) = 0UL;
+ v18 = (u)zrb_rotate_left;
+ v19 = vtree;
+ v20 = vn;
+ v21 = ((u(*)())(v18))(v19, v20);
v21;
-b3: *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
- return 53UL;
-b5: goto b3;
-b7: if (vi == *(u*)(vctx + 72UL) - 1UL) goto b13;
- v17 = 1UL;
- goto b9;
-b13: v17 = 0UL;
- goto b9;
-b11: v18 = 1UL;
- goto b12;
+ v22 = (u)zrb_rotate_right;
+ v23 = vtree;
+ v24 = vn;
+ v25 = ((u(*)())(v22))(v23, v24);
+ v25;
+ goto b39;
+b38: if (vn != *(u*)(vp + 16UL)) goto b47;
+ *(u*)(vp + 0UL) = 0UL;
+ v26 = (u)zrb_rotate_right;
+ v27 = vtree;
+ v28 = vn;
+ v29 = ((u(*)())(v26))(v27, v28);
+ v29;
+ v30 = (u)zrb_rotate_left;
+ v31 = vtree;
+ v32 = vn;
+ v33 = ((u(*)())(v30))(v31, v32);
+ v33;
+b45: goto b36;
+b47: *(u*)(vn + 0UL) = 0UL;
+ v34 = (u)zrb_rotate_left;
+ v35 = vtree;
+ v36 = vp;
+ v37 = ((u(*)())(v34))(v35, v36);
+ v37;
+ vn = vp;
+ goto b45;
+b25: v11 = 0UL;
+ goto b27;
+b29: v12 = 0UL;
+ goto b31;
+b33: v13 = 0UL;
+ goto b35;
+b19: v10 = 1UL;
+ goto b20;
+b13: v9 = 1UL;
+ goto b14;
+b7: v8 = 1UL;
+ goto b8;
}
-u zlexer_action_56(u vctx) {
- u vn = 0;
- u vi = 0;
- u vj = 0;
- u vok = 0;
+u zrb_next(u vn) {
+ u v1 = 0;
+ u v2 = 0;
+ u v3 = 0;
+ u v4 = 0;
u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
+ if (!(vn)) goto b5;
+ v1 = 0UL;
+b6: if (!(v1)) goto b3;
+ return 0UL;
+b3: if (!(*(u*)(vn + 24UL))) goto b9;
+ v2 = (u)zrb_first;
+ v3 = *(u*)(vn + 24UL);
+ v4 = ((u(*)())(v2))(v3);
+ return v4;
+b9:b11: if (!(*(u*)(vn + 8UL))) goto b17;
+ v5 = 0UL;
+b18: if (!(v5)) goto b15;
+ return 0UL;
+b15: if (*(u*)(*(u*)(vn + 8UL) + 16UL) != vn) goto b21;
+ return *(u*)(vn + 8UL);
+b21: vn = *(u*)(vn + 8UL);
+ goto b11;
+b17: v5 = 1UL;
+ goto b18;
+b5: v1 = 1UL;
+ goto b6;
+}
+u zrb_rotate_left(u vtree, u vn) {
+ u vgg = 0;
+ u vg = 0;
+ u vp = 0;
+ u vs = 0;
+ vs = *(u*)(vn + 16UL);
+ vp = *(u*)(vn + 8UL);
+ vg = *(u*)(vp + 8UL);
+ *(u*)(vn + 16UL) = vp;
+ *(u*)(vp + 8UL) = vn;
+ *(u*)(vp + 24UL) = vs;
+ if (!(vs)) goto b3;
+ *(u*)(vs + 8UL) = vp;
+b1: *(u*)(vn + 8UL) = vg;
+ if (!(vg)) goto b6;
+ if (*(u*)(vg + 16UL) != vp) goto b9;
+ *(u*)(vg + 16UL) = vn;
+b7:b4: return 0UL;
+b9: *(u*)(vg + 24UL) = vn;
+ goto b7;
+b6: *(u*)(vtree) = vn;
+ goto b4;
+b3: goto b1;
+}
+u zrb_rotate_right(u vtree, u vn) {
+ u vgg = 0;
+ u vg = 0;
+ u vp = 0;
+ u vs = 0;
+ vs = *(u*)(vn + 24UL);
+ vp = *(u*)(vn + 8UL);
+ vg = *(u*)(vp + 8UL);
+ *(u*)(vn + 24UL) = vp;
+ *(u*)(vp + 8UL) = vn;
+ *(u*)(vp + 16UL) = vs;
+ if (!(vs)) goto b3;
+ *(u*)(vs + 8UL) = vp;
+b1: *(u*)(vn + 8UL) = vg;
+ if (!(vg)) goto b6;
+ if (*(u*)(vg + 16UL) != vp) goto b9;
+ *(u*)(vg + 16UL) = vn;
+b7:b4: return 0UL;
+b9: *(u*)(vg + 24UL) = vn;
+ goto b7;
+b6: *(u*)(vtree) = vn;
+ goto b4;
+b3: goto b1;
+}
+u zread(u vfd, u vbuf, u vn) {
+ return (u)read((int)vfd, (void*)vbuf, (unsigned long)vn);
+}
+u zreadall(u vfd, u vlen, u va) {
+ u vbuf = 0;
+ u vtmp = 0;
+ u vcap = 0;
+ u vnewcap = 0;
+ u vret = 0;
+ u vn = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -38583,125 +37576,57 @@ u zlexer_action_56(u vctx) {
u v25 = 0;
u v26 = 0;
u v27 = 0;
- v5 = (u)zmknode;
- v6 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v7 = 3UL;
- v8 = 0UL;
- v9 = 0UL;
- v10 = ((u(*)())v5)(v6, v7, v8, v9);
- vn = v10;
- v11 = (u)zalloc;
- v12 = *(u*)(vctx + 0UL);
- v13 = *(u*)(vctx + 72UL) - *(u*)(vctx + 64UL);
- v14 = ((u(*)())v11)(v12, v13);
- *(u*)(vn + 56UL) = v14;
- vi = *(u*)(vctx + 64UL) + 1UL;
- vj = 0UL;
-b3: if (vi != *(u*)(vctx + 72UL) - 1UL) goto b7;
- *(b*)(*(u*)(vn + 56UL) + vj * 1UL) = 0UL;
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
- return 54UL;
-b7: v15 = (u)zunescape;
- v16 = *(u*)(vctx + 56UL);
- v17 = (u)&vi;
- v18 = *(u*)(vctx + 72UL) - 1UL;
- v19 = (u)&vok;
- v20 = ((u(*)())v15)(v16, v17, v18, v19);
- *(b*)(*(u*)(vn + 56UL) + vj * 1UL) = v20;
- if (!vok) goto b13;
- v21 = 0UL;
-b14: if (!v21) goto b11;
- v22 = (u)zdie;
- v23 = (u)"invalid string";
- v24 = ((u(*)())v22)(v23);
- v24;
-b9: vj = vj + 1UL;
- goto b3;
-b11: goto b9;
-b13: v21 = 1UL;
- goto b14;
-}
-u zlexer_action_57(u vctx) {
- u vn = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- v2 = (u)zmknode;
- v3 = *(u*)(*(u*)(vctx + 8UL) + 16UL);
- v4 = 61UL;
- v5 = 0UL;
- v6 = 0UL;
- v7 = ((u(*)())v2)(v3, v4, v5, v6);
- vn = v7;
- v8 = (u)zparse_charset;
- v9 = *(u*)(vctx + 0UL);
- v10 = *(u*)(vctx + 56UL) + (*(u*)(vctx + 64UL) + 2UL) * 1UL;
- v11 = *(u*)(vctx + 72UL) - *(u*)(vctx + 64UL) - 4UL;
- v12 = ((u(*)())v8)(v9, v10, v11);
- *(u*)(vn + 56UL) = v12;
- *(u*)(*(u*)(vctx + 144UL) + 0UL) = vn;
- return 55UL;
-}
-u zlexer_action_58(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- v1 = (u)zlex_skip;
- v2 = vctx;
- v3 = ((u(*)())v1)(v2);
- v3;
- return 0UL;
-}
-u zlexer_action_59(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- v1 = (u)zlex_skip;
- v2 = vctx;
- v3 = ((u(*)())v1)(v2);
- v3;
- return 0UL;
-}
-u zlexer_action_6(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 6UL;
-}
-u zlexer_action_7(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 7UL;
-}
-u zlexer_action_8(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 8UL;
-}
-u zlexer_action_9(u vctx) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- return 9UL;
+ u v28 = 0;
+ u v29 = 0;
+ vcap = 0UL;
+ vn = 0UL;
+b1: if (vn != vcap) goto b5;
+ if (vcap != 0UL) goto b8;
+ vnewcap = 4096UL;
+b6: v9 = (u)zalloc;
+ v10 = va;
+ v11 = vnewcap;
+ v12 = ((u(*)())(v9))(v10, v11);
+ vtmp = v12;
+ v13 = (u)zmemcpy;
+ v14 = vtmp;
+ v15 = vbuf;
+ v16 = vn;
+ v17 = ((u(*)())(v13))(v14, v15, v16);
+ v17;
+ v18 = (u)zfree;
+ v19 = va;
+ v20 = vbuf;
+ v21 = ((u(*)())(v18))(v19, v20);
+ v21;
+ vbuf = vtmp;
+ vcap = vnewcap;
+b3: v22 = (u)zread;
+ v23 = vfd;
+ v24 = vbuf + vn * 1UL;
+ v25 = vcap - vn;
+ v26 = ((u(*)())(v22))(v23, v24, v25);
+ vret = v26;
+ if ((s)(vret) >= (s)0UL) goto b15;
+ v27 = (u)zdie;
+ v28 = (u)"readall failed";
+ v29 = ((u(*)())(v27))(v28);
+ v29;
+b13: if (vret != 0UL) goto b19;
+ *(u*)(vlen) = vn;
+ return vbuf;
+b19: vn = vn + vret;
+ goto b1;
+b15: goto b13;
+b8: vnewcap = vcap * 2UL;
+ goto b6;
+b5: goto b3;
}
-u zlexer_codegen(u vc, u vd) {
- u v_cg[9] = {0};
- u vcg = 0;
- u vi = 0;
- u vch = 0;
+u zreserve(u vc, u vn) {
+ u vm = 0;
+ u vb = 0;
+ u v4 = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -38709,65 +37634,45 @@ u zlexer_codegen(u vc, u vd) {
u v10 = 0;
u v11 = 0;
u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- vcg = (u)v_cg;
- *(u*)(vcg + 0UL) = *(u*)(vc + 0UL);
- v6 = (u)zlexer_codegen_setup;
- v7 = vcg;
- v8 = vd;
- v9 = ((u(*)())v6)(v7, v8);
- v9;
- *(u*)(vcg + 40UL) = *(u*)(vcg + 16UL) * 8UL;
- v10 = (u)zalloc;
- v11 = *(u*)(vcg + 0UL);
- v12 = *(u*)(vcg + 40UL);
- v13 = ((u(*)())v10)(v11, v12);
- *(u*)(vcg + 32UL) = v13;
- *(u*)(vcg + 56UL) = *(u*)(vcg + 16UL) * 256UL * 8UL;
- v14 = (u)zalloc;
- v15 = *(u*)(vcg + 0UL);
- v16 = *(u*)(vcg + 56UL) + 1UL;
- v17 = ((u(*)())v14)(v15, v16);
- *(u*)(vcg + 48UL) = v17;
- vi = 0UL;
-b4: if (vi != *(u*)(vcg + 16UL)) goto b8;
- vi = 0UL;
-b9: if (vi != *(u*)(vcg + 16UL)) goto b13;
- v18 = (u)zlexer_output;
- v19 = vc;
- v20 = vcg;
- v21 = ((u(*)())v18)(v19, v20);
- v21;
+ if (!(*(u*)(vc + 40UL))) goto b5;
+ if ((s)(*(u*)(*(u*)(vc + 40UL) + 24UL) - *(u*)(*(u*)(vc + 40UL) + 16UL)) < (s)(vn)) goto b5;
+ v4 = 1UL;
+b7: if (!(v4)) goto b3;
return 0UL;
-b13: vd = *(u*)(*(u*)(vcg + 8UL) + vi * 8UL);
- if (!*(u*)(vd + 72UL)) goto b16;
- *(u*)(*(u*)(vcg + 32UL) + vi * 8UL) = *(u*)(*(u*)(vc + 112UL) + (*(u*)(vd + 72UL) - 1UL) * 8UL);
-b14: vch = 0UL;
-b17: if (vch != 256UL) goto b21;
- vi = vi + 1UL;
- goto b9;
-b21: if (!*(u*)(*(u*)(vd + 40UL) + vch * 8UL)) goto b24;
- *(u*)(*(u*)(vcg + 48UL) + (vi * 256UL + vch) * 8UL) = *(u*)(*(u*)(*(u*)(vd + 40UL) + vch * 8UL) + 64UL);
-b22: vch = vch + 1UL;
- goto b17;
-b24: *(u*)(*(u*)(vcg + 48UL) + (vi * 256UL + vch) * 8UL) = -1UL;
- goto b22;
-b16: goto b14;
-b8: vd = *(u*)(*(u*)(vcg + 8UL) + vi * 8UL);
- *(u*)(vd + 64UL) = vi;
- vi = vi + 1UL;
- goto b4;
+b3: if ((s)(vn) >= (s)4096UL) goto b10;
+ vn = 4096UL;
+b8: v5 = (u)zalloc;
+ v6 = *(u*)(vc + 0UL);
+ v7 = vn;
+ v8 = ((u(*)())(v5))(v6, v7);
+ vm = v8;
+ v9 = (u)zalloc;
+ v10 = *(u*)(vc + 0UL);
+ v11 = 32UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ vb = v12;
+ *(u*)(vb + 8UL) = vm;
+ *(u*)(vb + 16UL) = 0UL;
+ *(u*)(vb + 24UL) = vn;
+ *(u*)(vb + 0UL) = 0UL;
+ if (!(*(u*)(vc + 40UL))) goto b15;
+ *(u*)(*(u*)(vc + 40UL) + 0UL) = vb;
+ *(u*)(vc + 40UL) = vb;
+b13: return 0UL;
+b15: *(u*)(vc + 32UL) = vb;
+ *(u*)(vc + 40UL) = vb;
+ goto b13;
+b10: goto b8;
+b5: v4 = 0UL;
+ goto b7;
}
-u zlexer_codegen_setup(u vcg, u vd) {
- u vi = 0;
+u zsetup_alloc(u vc) {
+ *(u*)(vc + 0UL) = 0UL;
+ return 0UL;
+}
+u zsetup_assembler(u va) {
+ u vc = 0;
+ u v2 = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
@@ -38781,45 +37686,39 @@ u zlexer_codegen_setup(u vcg, u vd) {
u v13 = 0;
u v14 = 0;
u v15 = 0;
- if (!vd) goto b9;
- v4 = 0UL;
-b10: if (!v4) goto b5;
- v3 = 1UL;
-b7: if (!v3) goto b3;
- return 0UL;
-b3: *(u*)(vd + 64UL) = 1UL;
- v5 = (u)zensure_arr;
- v6 = *(u*)(vcg + 0UL);
- v7 = vcg + 8UL;
- v8 = vcg + 24UL;
- v9 = *(u*)(vcg + 16UL) + 1UL;
- v10 = 8UL;
- v11 = ((u(*)())v5)(v6, v7, v8, v9, v10);
- v11;
- *(u*)(*(u*)(vcg + 8UL) + *(u*)(vcg + 16UL) * 8UL) = vd;
- *(u*)(vcg + 16UL) = *(u*)(vcg + 16UL) + 1UL;
- vi = 0UL;
-b13: if (vi != 256UL) goto b17;
- return 0UL;
-b17: v12 = (u)zlexer_codegen_setup;
- v13 = vcg;
- v14 = *(u*)(*(u*)(vd + 40UL) + vi * 8UL);
- v15 = ((u(*)())v12)(v13, v14);
+ v2 = (u)zalloc;
+ v3 = va;
+ v4 = 128UL;
+ v5 = ((u(*)())(v2))(v3, v4);
+ vc = v5;
+ *(u*)(vc + 0UL) = va;
+ *(u*)(vc + 8UL) = 0UL;
+ *(u*)(vc + 24UL) = 160UL;
+ *(u*)(vc + 32UL) = 0UL;
+ *(u*)(vc + 40UL) = 0UL;
+ *(u*)(vc + 48UL) = 0UL;
+ *(u*)(vc + 56UL) = 0UL;
+ *(u*)(vc + 72UL) = 0UL;
+ v6 = (u)zadd_section;
+ v7 = vc;
+ v8 = (u)"";
+ v9 = 0UL;
+ v10 = ((u(*)())(v6))(v7, v8, v9);
+ v10;
+ v11 = (u)zadd_section;
+ v12 = vc;
+ v13 = (u)".text";
+ v14 = 1UL;
+ v15 = ((u(*)())(v11))(v12, v13, v14);
v15;
- vi = vi + 1UL;
- goto b13;
-b5: if (!*(u*)(vd + 64UL)) goto b11;
- v3 = 1UL;
- goto b7;
-b11: v3 = 0UL;
- goto b7;
-b9: v4 = 1UL;
- goto b10;
+ return vc;
}
-u zlexer_compile(u vc, u vn, u verr) {
- u va = 0;
- u vb = 0;
- u vd = 0;
+u zsetup_lex(u vc) {
+ u vl = 0;
+ u vi = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -38838,47 +37737,83 @@ u zlexer_compile(u vc, u vn, u verr) {
u v21 = 0;
u v22 = 0;
u v23 = 0;
- vn = *(u*)(vn + 8UL);
-b1: if (!vn) goto b7;
- v6 = 0UL;
-b8: if (!v6) goto b5;
- v16 = (u)zlexer_explode;
- v17 = vc;
- v18 = va;
- v19 = ((u(*)())v16)(v17, v18);
- vd = v19;
- v20 = (u)zlexer_codegen;
- v21 = vc;
- v22 = vd;
- v23 = ((u(*)())v20)(v21, v22);
- v23;
- return 0UL;
-b5: v7 = (u)zlexer_compile_rule;
- v8 = vc;
- v9 = *(u*)(vn + 8UL);
- v10 = ((u(*)())v7)(v8, v9);
- vb = v10;
- v11 = (u)znfa_alt;
- v12 = vc;
- v13 = va;
- v14 = vb;
- v15 = ((u(*)())v11)(v12, v13, v14);
- va = v15;
- vn = *(u*)(vn + 16UL);
- goto b1;
-b7: v6 = 1UL;
- goto b8;
+ u v24 = 0;
+ v3 = (u)zalloc;
+ v4 = *(u*)(vc + 0UL);
+ v5 = 192UL;
+ v6 = ((u(*)())(v3))(v4, v5);
+ vl = v6;
+ *(u*)(vl + 0UL) = *(u*)(vc + 0UL);
+ *(u*)(vl + 8UL) = vc;
+ v7 = (u)zget_num_states;
+ v8 = ((u(*)())(v7))();
+ vi = v8;
+ v9 = (u)zalloc;
+ v10 = *(u*)(vl + 0UL);
+ v11 = 8UL * vi;
+ v12 = ((u(*)())(v9))(v10, v11);
+ *(u*)(vl + 16UL) = v12;
+ v13 = (u)zget_tag_table;
+ v14 = *(u*)(vl + 16UL);
+ v15 = ((u(*)())(v13))(v14);
+ v15;
+ v16 = (u)zget_link_table;
+ v17 = ((u(*)())(v16))();
+ *(u*)(vl + 24UL) = v17;
+ *(u*)(vl + 32UL) = 0UL;
+ *(u*)(vl + 40UL) = 1UL;
+ *(u*)(vl + 48UL) = 1UL;
+ *(u*)(vl + 56UL) = 0UL;
+ *(u*)(vl + 64UL) = 0UL;
+ *(u*)(vl + 72UL) = 0UL;
+ *(u*)(vl + 80UL) = 0UL;
+ *(u*)(vl + 88UL) = 0UL;
+ *(u*)(vl + 104UL) = 1UL;
+ *(u*)(vl + 112UL) = 1UL;
+ *(u*)(vl + 120UL) = 1UL;
+ *(u*)(vl + 128UL) = 1UL;
+ *(u*)(vl + 144UL) = vl + 136UL;
+ *(u*)(vl + 152UL) = 0UL;
+ *(u*)(vl + 160UL) = 0UL;
+ *(u*)(vl + 168UL) = 0UL;
+ *(u*)(vl + 176UL) = 0UL;
+ *(u*)(vl + 184UL) = 0UL;
+ v18 = (u)zensure_arr;
+ v19 = *(u*)(vl + 0UL);
+ v20 = vl + 168UL;
+ v21 = vl + 184UL;
+ v22 = *(u*)(vl + 176UL) + 2UL;
+ v23 = 8UL;
+ v24 = ((u(*)())(v18))(v19, v20, v21, v22, v23);
+ v24;
+ return vl;
}
-u zlexer_compile_action(u vc, u vn) {
- u va = 0;
- u vb = 0;
- u vd = 0;
- u vt = 0;
- u vid = 0;
- u vs = 0;
- u vfunc_type = 0;
- u vv = 0;
- u vo = 0;
+u zsetup_parser(u vc, u verr) {
+ u vp = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ v3 = (u)zalloc;
+ v4 = *(u*)(vc + 0UL);
+ v5 = 24UL;
+ v6 = ((u(*)())(v3))(v4, v5);
+ vp = v6;
+ *(u*)(vp + 0UL) = *(u*)(vc + 0UL);
+ *(u*)(vp + 8UL) = vc;
+ *(u*)(vp + 16UL) = verr;
+ return vp;
+}
+u zshow_node(u vout, u vn) {
+ u vi = 0;
+ u vch = 0;
+ u vhex = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
u v11 = 0;
u v12 = 0;
u v13 = 0;
@@ -38949,265 +37884,151 @@ u zlexer_compile_action(u vc, u vn) {
u v78 = 0;
u v79 = 0;
u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- u v134 = 0;
- u v135 = 0;
- u v136 = 0;
- u v137 = 0;
- u v138 = 0;
- u v139 = 0;
- u v140 = 0;
- u v141 = 0;
- u v142 = 0;
- u v143 = 0;
- u v144 = 0;
- u v145 = 0;
- u v146 = 0;
- u v147 = 0;
- u v148 = 0;
- u v149 = 0;
- u v150 = 0;
- u v151 = 0;
- u v152 = 0;
- v11 = (u)zensure_arr;
- v12 = *(u*)(vc + 0UL);
- v13 = vc + 112UL;
- v14 = vc + 128UL;
- v15 = *(u*)(vc + 120UL) + 1UL;
- v16 = 8UL;
- v17 = ((u(*)())v11)(v12, v13, v14, v15, v16);
- v17;
- vid = *(u*)(vc + 120UL);
- v18 = (u)zalloc;
- v19 = *(u*)(vc + 0UL);
- v20 = 64UL;
- v21 = ((u(*)())v18)(v19, v20);
- vs = v21;
- v22 = (u)zmemcpy;
- v23 = vs;
- v24 = (u)"lexer_action_";
- v25 = 13UL;
- v26 = ((u(*)())v22)(v23, v24, v25);
- v26;
- v27 = (u)zint2str;
- v28 = vs + 13UL * 1UL;
- v29 = vid;
- v30 = ((u(*)())v27)(v28, v29);
- v30;
- *(u*)(*(u*)(vc + 112UL) + vid * 8UL) = vs;
- *(u*)(vc + 120UL) = *(u*)(vc + 120UL) + 1UL;
- v31 = (u)zmknode;
- v32 = *(u*)(vc + 16UL);
- v33 = 0UL;
- v34 = 0UL;
- v35 = 0UL;
- v36 = ((u(*)())v31)(v32, v33, v34, v35);
- vb = v36;
- *(u*)(vb + 56UL) = (u)"ctx";
- v37 = (u)zmknode;
- v38 = *(u*)(vc + 16UL);
- v39 = 0UL;
- v40 = 0UL;
- v41 = 0UL;
- v42 = ((u(*)())v37)(v38, v39, v40, v41);
- va = v42;
- *(u*)(va + 56UL) = (u)"lex";
- v43 = (u)zmknode;
- v44 = *(u*)(vc + 16UL);
- v45 = 16UL;
- v46 = va;
- v47 = 0UL;
- v48 = ((u(*)())v43)(v44, v45, v46, v47);
- va = v48;
- v49 = (u)zmknode;
- v50 = *(u*)(vc + 16UL);
- v51 = 12UL;
- v52 = vb;
- v53 = va;
- v54 = ((u(*)())v49)(v50, v51, v52, v53);
- va = v54;
- v55 = (u)zmknode;
- v56 = *(u*)(vc + 16UL);
- v57 = 10UL;
- v58 = va;
- v59 = 0UL;
- v60 = ((u(*)())v55)(v56, v57, v58, v59);
- va = v60;
- v61 = (u)zmknode;
- v62 = *(u*)(vc + 16UL);
- v63 = 0UL;
- v64 = 0UL;
- v65 = 0UL;
- v66 = ((u(*)())v61)(v62, v63, v64, v65);
- vb = v66;
- *(u*)(vb + 56UL) = (u)"int";
- v67 = (u)zmknode;
- v68 = *(u*)(vc + 16UL);
- v69 = 15UL;
- v70 = va;
- v71 = vb;
- v72 = ((u(*)())v67)(v68, v69, v70, v71);
- va = v72;
- v73 = (u)zprototype;
- v74 = vc;
- v75 = va;
- v76 = ((u(*)())v73)(v74, v75);
- vfunc_type = v76;
- v77 = (u)zmknode;
- v78 = *(u*)(vc + 16UL);
- v79 = 0UL;
- v80 = 0UL;
- v81 = 0UL;
- v82 = ((u(*)())v77)(v78, v79, v80, v81);
- vb = v82;
- *(u*)(vb + 56UL) = vs;
- v83 = (u)zmknode;
- v84 = *(u*)(vc + 16UL);
- v85 = 13UL;
- v86 = vb;
- v87 = va;
- v88 = ((u(*)())v83)(v84, v85, v86, v87);
- va = v88;
- v89 = (u)zmknode;
- v90 = *(u*)(vc + 16UL);
- v91 = 1UL;
- v92 = 0UL;
- v93 = 0UL;
- v94 = ((u(*)())v89)(v90, v91, v92, v93);
- vb = v94;
- *(u*)(vb + 48UL) = 0UL;
- v95 = (u)zmknode;
- v96 = *(u*)(vc + 16UL);
- v97 = 29UL;
- v98 = vb;
- v99 = 0UL;
- v100 = ((u(*)())v95)(v96, v97, v98, v99);
- vb = v100;
- v101 = (u)zmknode;
- v102 = *(u*)(vc + 16UL);
- v103 = 5UL;
- v104 = vb;
- v105 = vt;
- v106 = ((u(*)())v101)(v102, v103, v104, v105);
- vt = v106;
- v107 = (u)zmknode;
- v108 = *(u*)(vc + 16UL);
- v109 = 0UL;
- v110 = 0UL;
- v111 = 0UL;
- v112 = ((u(*)())v107)(v108, v109, v110, v111);
- vd = v112;
- *(u*)(vd + 56UL) = (u)"ctx";
- v113 = (u)zmknode;
- v114 = *(u*)(vc + 16UL);
- v115 = 6UL;
- v116 = vd;
- v117 = 0UL;
- v118 = ((u(*)())v113)(v114, v115, v116, v117);
- vd = v118;
- v119 = (u)zmknode;
- v120 = *(u*)(vc + 16UL);
- v121 = 0UL;
- v122 = 0UL;
- v123 = 0UL;
- v124 = ((u(*)())v119)(v120, v121, v122, v123);
- vb = v124;
- *(u*)(vb + 56UL) = (u)"lex_skip";
- v125 = (u)zmknode;
- v126 = *(u*)(vc + 16UL);
- v127 = 7UL;
- v128 = vb;
- v129 = vd;
- v130 = ((u(*)())v125)(v126, v127, v128, v129);
- vb = v130;
- v131 = (u)zmknode;
- v132 = *(u*)(vc + 16UL);
- v133 = 5UL;
- v134 = vb;
- v135 = vt;
- v136 = ((u(*)())v131)(v132, v133, v134, v135);
- vt = v136;
- v137 = (u)zmknode;
- v138 = *(u*)(vc + 16UL);
- v139 = 5UL;
- v140 = vn;
- v141 = vt;
- v142 = ((u(*)())v137)(v138, v139, v140, v141);
- vt = v142;
- v143 = (u)zmknode;
- v144 = *(u*)(vc + 16UL);
- v145 = 11UL;
- v146 = va;
- v147 = vt;
- v148 = ((u(*)())v143)(v144, v145, v146, v147);
- va = v148;
- v149 = (u)zdefun;
- v150 = vc;
- v151 = va;
- v152 = ((u(*)())v149)(v150, v151);
- v152;
- return vid + 1UL;
+ vhex = (u)"0123456789abcdef";
+ if (!(vn)) goto b5;
+ v5 = 0UL;
+b6: if (!(v5)) goto b3;
+ return 0UL;
+b3: v6 = (u)zfputc;
+ v7 = vout;
+ v8 = 40UL;
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+ v10 = (u)zfputs;
+ v11 = vout;
+ v13 = (u)znode_to_str;
+ v14 = *(u*)(vn + 0UL);
+ v15 = ((u(*)())(v13))(v14);
+ v12 = v15;
+ v16 = ((u(*)())(v10))(v11, v12);
+ v16;
+ if (*(u*)(vn + 0UL) != 1UL) goto b12;
+ v17 = (u)zfputc;
+ v18 = vout;
+ v19 = 32UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ v21 = (u)zfputd;
+ v22 = vout;
+ v23 = *(u*)(vn + 48UL);
+ v24 = ((u(*)())(v21))(v22, v23);
+ v24;
+b10: if (!(*(u*)(vn + 56UL))) goto b17;
+ v25 = (u)zfputc;
+ v26 = vout;
+ v27 = 32UL;
+ v28 = ((u(*)())(v25))(v26, v27);
+ v28;
+ v29 = (u)zfputc;
+ v30 = vout;
+ v31 = 34UL;
+ v32 = ((u(*)())(v29))(v30, v31);
+ v32;
+ vi = 0UL;
+b20: vch = (u)*(b*)(*(u*)(vn + 56UL) + vi * 1UL);
+ if (!(vch)) goto b26;
+ v33 = 0UL;
+b27: if (!(v33)) goto b24;
+ v57 = (u)zfputc;
+ v58 = vout;
+ v59 = 34UL;
+ v60 = ((u(*)())(v57))(v58, v59);
+ v60;
+b15: if (!(*(u*)(vn + 8UL))) goto b54;
+ v61 = (u)zfputc;
+ v62 = vout;
+ v63 = 32UL;
+ v64 = ((u(*)())(v61))(v62, v63);
+ v64;
+ v65 = (u)zshow_node;
+ v66 = vout;
+ v67 = *(u*)(vn + 8UL);
+ v68 = ((u(*)())(v65))(v66, v67);
+ v68;
+b52: if (!(*(u*)(vn + 16UL))) goto b59;
+ v69 = (u)zfputc;
+ v70 = vout;
+ v71 = 32UL;
+ v72 = ((u(*)())(v69))(v70, v71);
+ v72;
+ v73 = (u)zshow_node;
+ v74 = vout;
+ v75 = *(u*)(vn + 16UL);
+ v76 = ((u(*)())(v73))(v74, v75);
+ v76;
+b57: v77 = (u)zfputc;
+ v78 = vout;
+ v79 = 41UL;
+ v80 = ((u(*)())(v77))(v78, v79);
+ v80;
+ return 0UL;
+b59: goto b57;
+b54: goto b52;
+b24: if ((s)(vch) >= (s)32UL) goto b40;
+ v36 = 1UL;
+b42: if (!(v36)) goto b36;
+ v35 = 1UL;
+b38: if (!(v35)) goto b32;
+ v34 = 1UL;
+b34: if (!(v34)) goto b30;
+ v37 = (u)zfputc;
+ v38 = vout;
+ v39 = 92UL;
+ v40 = ((u(*)())(v37))(v38, v39);
+ v40;
+ v41 = (u)zfputc;
+ v42 = vout;
+ v43 = 120UL;
+ v44 = ((u(*)())(v41))(v42, v43);
+ v44;
+ v45 = (u)zfputc;
+ v46 = vout;
+ v47 = (u)*(b*)(vhex + (vch >> 4UL) * 1UL);
+ v48 = ((u(*)())(v45))(v46, v47);
+ v48;
+ v49 = (u)zfputc;
+ v50 = vout;
+ v51 = (u)*(b*)(vhex + (vch & 15UL) * 1UL);
+ v52 = ((u(*)())(v49))(v50, v51);
+ v52;
+b28: vi = vi + 1UL;
+ goto b20;
+b30: v53 = (u)zfputc;
+ v54 = vout;
+ v55 = vch;
+ v56 = ((u(*)())(v53))(v54, v55);
+ v56;
+ goto b28;
+b32: if (vch != 34UL) goto b45;
+ v34 = 1UL;
+ goto b34;
+b45: v34 = 0UL;
+ goto b34;
+b36: if (vch != 92UL) goto b44;
+ v35 = 1UL;
+ goto b38;
+b44: v35 = 0UL;
+ goto b38;
+b40: if ((s)(vch) <= (s)127UL) goto b43;
+ v36 = 1UL;
+ goto b42;
+b43: v36 = 0UL;
+ goto b42;
+b26: v33 = 1UL;
+ goto b27;
+b17: goto b15;
+b12: goto b10;
+b5: v5 = 1UL;
+ goto b6;
}
-u zlexer_compile_charset(u vc, u vn) {
- u vscratch = 0;
- u vj = 0;
- u vstart = 0;
- u vend = 0;
- u va = 0;
- u vb = 0;
- u v8 = 0;
+u zstmt_to_ir(u vic, u vn) {
+ u vloopctx[4] = {0};
+ u vcond_body = 0;
+ u vcond_next = 0;
+ u vcond_out = 0;
+ u vlabel = 0;
+ u vvalue = 0;
+ u vkind = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -39220,67 +38041,6 @@ u zlexer_compile_charset(u vc, u vn) {
u v18 = 0;
u v19 = 0;
u v20 = 0;
- vscratch = *(u*)(vn + 56UL);
- vj = 0UL;
-b1: if (vj != 256UL) goto b5;
- return va;
-b5: if (!(u)*(b*)(vscratch + vj * 1UL)) goto b10;
- v8 = 0UL;
-b11: if (!v8) goto b8;
- vj = vj + 1UL;
- goto b1;
-b8: vstart = vj;
-b12: if (vj != 256UL) goto b18;
- v9 = 1UL;
-b20: if (!v9) goto b16;
- vend = vj - 1UL;
- v11 = (u)znfa_lit;
- v12 = vc;
- v13 = vstart;
- v14 = vend;
- v15 = ((u(*)())v11)(v12, v13, v14);
- vb = v15;
- v16 = (u)znfa_alt;
- v17 = vc;
- v18 = va;
- v19 = vb;
- v20 = ((u(*)())v16)(v17, v18, v19);
- va = v20;
- goto b1;
-b16: vj = vj + 1UL;
- goto b12;
-b18: if (!(u)*(b*)(vscratch + vj * 1UL)) goto b23;
- v10 = 0UL;
-b24: if (!v10) goto b21;
- v9 = 1UL;
- goto b20;
-b21: v9 = 0UL;
- goto b20;
-b23: v10 = 1UL;
- goto b24;
-b10: v8 = 1UL;
- goto b11;
-}
-u zlexer_compile_get_tag_table(u vc, u vcg) {
- u varg1_type = 0;
- u vargs_type = 0;
- u vret_type = 0;
- u vfunc_type = 0;
- u vic = 0;
- u vo = 0;
- u va = 0;
- u vb = 0;
- u vthis = 0;
- u vnext = 0;
- u vi = 0;
- u vv = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
u v21 = 0;
u v22 = 0;
u v23 = 0;
@@ -39376,143 +38136,333 @@ u zlexer_compile_get_tag_table(u vc, u vcg) {
u v113 = 0;
u v114 = 0;
u v115 = 0;
- v14 = (u)zmktype0;
- v15 = vc;
- v16 = 1UL;
- v17 = ((u(*)())v14)(v15, v16);
- varg1_type = v17;
- v18 = (u)zmktype1;
- v19 = vc;
- v20 = 4UL;
- v21 = varg1_type;
- v22 = ((u(*)())v18)(v19, v20, v21);
- varg1_type = v22;
- v23 = (u)zmktype1;
- v24 = vc;
- v25 = 5UL;
- v26 = varg1_type;
- v27 = ((u(*)())v23)(v24, v25, v26);
- vargs_type = v27;
- v28 = (u)zmktype0;
- v29 = vc;
- v30 = 2UL;
- v31 = ((u(*)())v28)(v29, v30);
- vret_type = v31;
- v32 = (u)zmktype2;
- v33 = vc;
- v34 = 6UL;
- v35 = vret_type;
- v36 = vargs_type;
- v37 = ((u(*)())v32)(v33, v34, v35, v36);
- vfunc_type = v37;
- v38 = (u)zmktype1;
- v39 = vc;
- v40 = 4UL;
- v41 = vfunc_type;
- v42 = ((u(*)())v38)(v39, v40, v41);
- varg1_type = v42;
- v43 = (u)zmktype1;
- v44 = vc;
- v45 = 5UL;
- v46 = varg1_type;
- v47 = ((u(*)())v43)(v44, v45, v46);
- vargs_type = v47;
- v48 = (u)zmktype0;
- v49 = vc;
- v50 = 1UL;
- v51 = ((u(*)())v48)(v49, v50);
- vret_type = v51;
- v52 = (u)zmktype2;
- v53 = vc;
- v54 = 6UL;
- v55 = vret_type;
- v56 = vargs_type;
- v57 = ((u(*)())v52)(v53, v54, v55, v56);
- vfunc_type = v57;
- v58 = (u)zmkirfunc;
- v59 = vc;
- v60 = (u)"get_tag_table";
- v61 = ((u(*)())v58)(v59, v60);
- vic = v61;
- v62 = (u)ziraddarg;
- v63 = vic;
- v64 = (u)"t";
- v65 = varg1_type;
- v66 = ((u(*)())v62)(v63, v64, v65);
- vv = v66;
- vi = 0UL;
-b12: if (vi != *(u*)(vcg + 16UL)) goto b16;
- v103 = (u)zmkirconst;
- v104 = vic;
- v105 = 0UL;
- v106 = ((u(*)())v103)(v104, v105);
- vo = v106;
- v107 = (u)zirreturn;
- v108 = vic;
- v109 = vo;
- v110 = ((u(*)())v107)(v108, v109);
- v110;
- v111 = (u)zdefine_ir_func;
- v112 = vc;
- v113 = vic;
- v114 = vfunc_type;
- v115 = ((u(*)())v111)(v112, v113, v114);
- v115;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ if (!(vn)) goto b5;
+ v9 = 0UL;
+b6: if (!(v9)) goto b3;
return 0UL;
-b16: if (!*(u*)(*(u*)(vcg + 32UL) + vi * 8UL)) goto b19;
- v67 = (u)zmkirop;
- v68 = vic;
- v69 = 0UL;
- v70 = 0UL;
- v71 = 0UL;
- v72 = ((u(*)())v67)(v68, v69, v70, v71);
- va = v72;
- *(u*)(va + 24UL) = *(u*)(vv + 32UL);
- v73 = (u)zmkirconst;
- v74 = vic;
- v75 = 8UL * vi;
- v76 = ((u(*)())v73)(v74, v75);
- vb = v76;
- v77 = (u)zmkirop;
- v78 = vic;
- v79 = 11UL;
- v80 = va;
- v81 = vb;
- v82 = ((u(*)())v77)(v78, v79, v80, v81);
- va = v82;
- v83 = (u)zmkirop;
- v84 = vic;
- v85 = 5UL;
- v86 = va;
- v87 = 0UL;
- v88 = ((u(*)())v83)(v84, v85, v86, v87);
- va = v88;
- v89 = (u)zmkirfuncref;
- v90 = vic;
- v91 = *(u*)(*(u*)(vcg + 32UL) + vi * 8UL);
- v92 = ((u(*)())v89)(v90, v91);
- vb = v92;
- v93 = (u)zmkirop;
- v94 = vic;
- v95 = 6UL;
- v96 = va;
- v97 = vb;
- v98 = ((u(*)())v93)(v94, v95, v96, v97);
- vo = v98;
- *(u*)(vo + 48UL) = *(u*)(varg1_type + 16UL);
- v99 = (u)ziraddop;
- v100 = vic;
- v101 = vo;
- v102 = ((u(*)())v99)(v100, v101);
- v102;
-b17: vi = vi + 1UL;
+b3: *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vn + 40UL);
+ vkind = *(u*)(vn + 0UL);
+ if (vkind != 21UL) goto b9;
+ v10 = (u)zmkirblock;
+ v11 = vic;
+ v12 = ((u(*)())(v10))(v11);
+ vcond_out = v12;
+b11: if (!(vn)) goto b17;
+ v13 = 0UL;
+b18: if (!(v13)) goto b15;
+b12: v44 = (u)zirjump;
+ v45 = vic;
+ v46 = vcond_out;
+ v47 = vcond_out;
+ v48 = ((u(*)())(v44))(v45, v46, v47);
+ v48;
+b7: return 0UL;
+b15: if (!(*(u*)(*(u*)(vn + 8UL) + 8UL))) goto b23;
+ v14 = 0UL;
+b24: if (!(v14)) goto b21;
+ v15 = (u)zstmt_to_ir;
+ v16 = vic;
+ v17 = *(u*)(*(u*)(vn + 8UL) + 16UL);
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
goto b12;
-b19: goto b17;
+b21: v19 = (u)zmkirblock;
+ v20 = vic;
+ v21 = ((u(*)())(v19))(v20);
+ vcond_body = v21;
+ v22 = (u)zmkirblock;
+ v23 = vic;
+ v24 = ((u(*)())(v22))(v23);
+ vcond_next = v24;
+ v25 = (u)zexpr_to_ir;
+ v26 = vic;
+ v27 = *(u*)(*(u*)(vn + 8UL) + 8UL);
+ v28 = ((u(*)())(v25))(v26, v27);
+ vvalue = v28;
+ v29 = (u)zirbranch;
+ v30 = vic;
+ v31 = vvalue;
+ v32 = vcond_next;
+ v33 = vcond_body;
+ v34 = ((u(*)())(v29))(v30, v31, v32, v33);
+ v34;
+ v35 = (u)zstmt_to_ir;
+ v36 = vic;
+ v37 = *(u*)(*(u*)(vn + 8UL) + 16UL);
+ v38 = ((u(*)())(v35))(v36, v37);
+ v38;
+ v39 = (u)zirjump;
+ v40 = vic;
+ v41 = vcond_out;
+ v42 = vcond_next;
+ v43 = ((u(*)())(v39))(v40, v41, v42);
+ v43;
+ vn = *(u*)(vn + 16UL);
+ goto b11;
+b23: v14 = 1UL;
+ goto b24;
+b17: v13 = 1UL;
+ goto b18;
+b9: if (vkind != 5UL) goto b34;
+b35: if (!(vn)) goto b41;
+ v49 = 0UL;
+b42: if (!(v49)) goto b39;
+ goto b7;
+b39: v50 = (u)zstmt_to_ir;
+ v51 = vic;
+ v52 = *(u*)(vn + 8UL);
+ v53 = ((u(*)())(v50))(v51, v52);
+ v53;
+ vn = *(u*)(vn + 16UL);
+ goto b35;
+b41: v49 = 1UL;
+ goto b42;
+b34: if (vkind != 26UL) goto b45;
+ *(u*)((u)vloopctx + 0UL) = *(u*)(vic + 56UL);
+ v54 = (u)zmkirblock;
+ v55 = vic;
+ v56 = ((u(*)())(v54))(v55);
+ *(u*)((u)vloopctx + 8UL) = v56;
+ v57 = (u)zmkirblock;
+ v58 = vic;
+ v59 = ((u(*)())(v57))(v58);
+ *(u*)((u)vloopctx + 16UL) = v59;
+ *(u*)(vic + 56UL) = (u)vloopctx;
+ v60 = (u)zirjump;
+ v61 = vic;
+ v62 = *(u*)((u)vloopctx + 8UL);
+ v63 = *(u*)((u)vloopctx + 8UL);
+ v64 = ((u(*)())(v60))(v61, v62, v63);
+ v64;
+ v65 = (u)zstmt_to_ir;
+ v66 = vic;
+ v67 = *(u*)(vn + 8UL);
+ v68 = ((u(*)())(v65))(v66, v67);
+ v68;
+ v69 = (u)zirjump;
+ v70 = vic;
+ v71 = *(u*)((u)vloopctx + 8UL);
+ v72 = *(u*)((u)vloopctx + 16UL);
+ v73 = ((u(*)())(v69))(v70, v71, v72);
+ v73;
+ *(u*)(vic + 56UL) = *(u*)((u)vloopctx + 0UL);
+ goto b7;
+b45: if (vkind != 27UL) goto b52;
+ if (!(*(u*)(vic + 56UL))) goto b57;
+ v74 = 0UL;
+b58: if (!(v74)) goto b55;
+ v75 = (u)zcdie;
+ v76 = *(u*)(vic + 0UL);
+ v77 = (u)"break not in loop";
+ v78 = ((u(*)())(v75))(v76, v77);
+ v78;
+b53: v79 = (u)zirjump;
+ v80 = vic;
+ v81 = *(u*)(*(u*)(vic + 56UL) + 16UL);
+ v82 = 0UL;
+ v83 = ((u(*)())(v79))(v80, v81, v82);
+ v83;
+ goto b7;
+b55: goto b53;
+b57: v74 = 1UL;
+ goto b58;
+b52: if (vkind != 28UL) goto b62;
+ if (!(*(u*)(vic + 56UL))) goto b67;
+ v84 = 0UL;
+b68: if (!(v84)) goto b65;
+ v85 = (u)zcdie;
+ v86 = *(u*)(vic + 0UL);
+ v87 = (u)"continue not in loop";
+ v88 = ((u(*)())(v85))(v86, v87);
+ v88;
+b63: v89 = (u)zirjump;
+ v90 = vic;
+ v91 = *(u*)(*(u*)(vic + 56UL) + 8UL);
+ v92 = 0UL;
+ v93 = ((u(*)())(v89))(v90, v91, v92);
+ v93;
+ goto b7;
+b65: goto b63;
+b67: v84 = 1UL;
+ goto b68;
+b62: if (vkind != 29UL) goto b72;
+ if (!(*(u*)(vn + 8UL))) goto b75;
+ v94 = (u)zexpr_to_ir;
+ v95 = vic;
+ v96 = *(u*)(vn + 8UL);
+ v97 = ((u(*)())(v94))(v95, v96);
+ vvalue = v97;
+b73: v102 = (u)zirreturn;
+ v103 = vic;
+ v104 = vvalue;
+ v105 = ((u(*)())(v102))(v103, v104);
+ v105;
+ goto b7;
+b75: v98 = (u)zmkirconst;
+ v99 = vic;
+ v100 = 0UL;
+ v101 = ((u(*)())(v98))(v99, v100);
+ vvalue = v101;
+ goto b73;
+b72: if (vkind != 31UL) goto b80;
+ v106 = (u)zirfind_block;
+ v107 = vic;
+ v108 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v109 = 0UL;
+ v110 = ((u(*)())(v106))(v107, v108, v109);
+ vlabel = v110;
+ v111 = (u)zirjump;
+ v112 = vic;
+ v113 = vlabel;
+ v114 = vlabel;
+ v115 = ((u(*)())(v111))(v112, v113, v114);
+ v115;
+ goto b7;
+b80: if (vkind != 32UL) goto b84;
+ v116 = (u)zirfind_block;
+ v117 = vic;
+ v118 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v119 = 0UL;
+ v120 = ((u(*)())(v116))(v117, v118, v119);
+ vlabel = v120;
+ v121 = (u)zirjump;
+ v122 = vic;
+ v123 = vlabel;
+ v124 = 0UL;
+ v125 = ((u(*)())(v121))(v122, v123, v124);
+ v125;
+ goto b7;
+b84: if (vkind != 30UL) goto b88;
+ goto b7;
+b88: v126 = (u)zexpr_to_ir;
+ v127 = vic;
+ v128 = vn;
+ v129 = ((u(*)())(v126))(v127, v128);
+ vvalue = v129;
+ v130 = (u)ziraddop;
+ v131 = vic;
+ v132 = vvalue;
+ v133 = ((u(*)())(v130))(v131, v132);
+ v133;
+ goto b7;
+b5: v9 = 1UL;
+ goto b6;
+}
+u zstrcmp(u va, u vb) {
+ u vi = 0;
+ vi = 0UL;
+b1: if ((s)((u)*(b*)(va + vi * 1UL)) <= (s)((u)*(b*)(vb + vi * 1UL))) goto b5;
+ return 1UL;
+b5: if ((s)((u)*(b*)(va + vi * 1UL)) >= (s)((u)*(b*)(vb + vi * 1UL))) goto b8;
+ return -1UL;
+b8: if ((u)*(b*)(va + vi * 1UL) != 0UL) goto b11;
+ return 0UL;
+b11: vi = vi + 1UL;
+ goto b1;
+}
+u zstrlen(u vs) {
+ u vret = 0;
+ vret = 0UL;
+b1: if ((u)*(b*)(vs + vret * 1UL) != 0UL) goto b5;
+ return vret;
+b5: vret = vret + 1UL;
+ goto b1;
+}
+/* no glue for syscall using stdlib */
+u ztype_isint(u vt) {
+ u v1 = 0;
+ if (*(u*)(vt + 0UL) != 2UL) goto b2;
+ v1 = 1UL;
+b4: return v1;
+b2: if (*(u*)(vt + 0UL) != 3UL) goto b5;
+ v1 = 1UL;
+ goto b4;
+b5: v1 = 0UL;
+ goto b4;
+}
+u ztype_isprim(u vt) {
+ u v1 = 0;
+ u v2 = 0;
+ if (*(u*)(vt + 0UL) == 1UL) goto b6;
+ if (*(u*)(vt + 0UL) == 7UL) goto b6;
+ v2 = 1UL;
+b8: if (!(v2)) goto b2;
+ if (*(u*)(vt + 0UL) == 8UL) goto b2;
+ v1 = 1UL;
+b4: return v1;
+b2: v1 = 0UL;
+ goto b4;
+b6: v2 = 0UL;
+ goto b8;
+}
+u ztype_sizeof(u vc, u vt) {
+ u vkind = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ vkind = *(u*)(vt + 0UL);
+ if (vkind != 0UL) goto b3;
+ return 8UL;
+b3: if (vkind != 2UL) goto b5;
+ return 8UL;
+b5: if (vkind != 3UL) goto b7;
+ return 8UL;
+b7: if (vkind != 4UL) goto b9;
+ return 8UL;
+b9: if (vkind != 6UL) goto b11;
+ return 8UL;
+b11: if (vkind != 7UL) goto b13;
+ v3 = (u)zlayout_struct;
+ v4 = vc;
+ v5 = *(u*)(vt + 8UL);
+ v6 = ((u(*)())(v3))(v4, v5);
+ v6;
+ return *(u*)(*(u*)(vt + 8UL) + 136UL);
+b13: if (vkind != 8UL) goto b16;
+ v7 = (u)zlayout_union;
+ v8 = vc;
+ v9 = *(u*)(vt + 8UL);
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+ return *(u*)(*(u*)(vt + 8UL) + 136UL);
+b16: v11 = (u)zcdie;
+ v12 = vc;
+ v13 = (u)"sizeof: invalid type";
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+ return 0UL;
}
-u zlexer_compile_pattern(u vc, u vn) {
- u valt = 0;
- u va = 0;
- u vb = 0;
+u ztypecheck_expr(u vc, u vd, u vn, u vrhs) {
+ u vv = 0;
u vkind = 0;
u v6 = 0;
u v7 = 0;
@@ -39578,1273 +38528,2543 @@ u zlexer_compile_pattern(u vc, u vn) {
u v67 = 0;
u v68 = 0;
u v69 = 0;
- vkind = *(u*)(vn + 0UL);
- if (vkind != 3UL) goto b3;
- v6 = (u)zlexer_compile_str;
- v7 = vc;
- v8 = vn;
- v9 = ((u(*)())v6)(v7, v8);
- return v9;
-b3: if (vkind != 62UL) goto b6;
- v10 = (u)znfa_any;
- v11 = vc;
- v12 = ((u(*)())v10)(v11);
- return v12;
-b6: if (vkind != 61UL) goto b9;
- v13 = (u)zlexer_compile_charset;
- v14 = vc;
- v15 = vn;
- v16 = ((u(*)())v13)(v14, v15);
- return v16;
-b9: if (vkind != 63UL) goto b12;
- v17 = (u)zlexer_compile_pattern;
- v18 = vc;
- v19 = *(u*)(vn + 8UL);
- v20 = ((u(*)())v17)(v18, v19);
- va = v20;
- v21 = (u)znfa_star;
- v22 = vc;
- v23 = va;
- v24 = ((u(*)())v21)(v22, v23);
- return v24;
-b12: if (vkind != 64UL) goto b16;
- v25 = (u)zlexer_compile_pattern;
- v26 = vc;
- v27 = *(u*)(vn + 8UL);
- v28 = ((u(*)())v25)(v26, v27);
- va = v28;
- v29 = (u)znfa_plus;
- v30 = vc;
- v31 = va;
- v32 = ((u(*)())v29)(v30, v31);
- return v32;
-b16: if (vkind != 65UL) goto b20;
- v33 = (u)zlexer_compile_pattern;
- v34 = vc;
- v35 = *(u*)(vn + 8UL);
- v36 = ((u(*)())v33)(v34, v35);
- va = v36;
- v37 = (u)znfa_qmark;
- v38 = vc;
- v39 = va;
- v40 = ((u(*)())v37)(v38, v39);
- return v40;
-b20: if (vkind != 66UL) goto b24;
- v41 = (u)zlexer_compile_pattern;
- v42 = vc;
- v43 = *(u*)(vn + 8UL);
- v44 = ((u(*)())v41)(v42, v43);
- va = v44;
- v45 = (u)zlexer_compile_pattern;
- v46 = vc;
- v47 = *(u*)(vn + 16UL);
- v48 = ((u(*)())v45)(v46, v47);
- vb = v48;
- v49 = (u)znfa_concat;
- v50 = vc;
- v51 = va;
- v52 = vb;
- v53 = ((u(*)())v49)(v50, v51, v52);
- return v53;
-b24: if (vkind != 67UL) goto b29;
- v54 = (u)zlexer_compile_pattern;
- v55 = vc;
- v56 = *(u*)(vn + 8UL);
- v57 = ((u(*)())v54)(v55, v56);
- va = v57;
- v58 = (u)zlexer_compile_pattern;
- v59 = vc;
- v60 = *(u*)(vn + 16UL);
- v61 = ((u(*)())v58)(v59, v60);
- vb = v61;
- v62 = (u)znfa_alt;
- v63 = vc;
- v64 = va;
- v65 = vb;
- v66 = ((u(*)())v62)(v63, v64, v65);
- return v66;
-b29: v67 = (u)zdie;
- v68 = (u)"unknown lex node";
- v69 = ((u(*)())v67)(v68);
- v69;
- return 0UL;
-}
-u zlexer_compile_rule(u vc, u vn) {
- u vpat = 0;
- u vact = 0;
- u va = 0;
- u vb = 0;
- u vs = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- vpat = *(u*)(vn + 8UL);
- vact = *(u*)(vn + 16UL);
- v7 = (u)zlexer_compile_pattern;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ u v156 = 0;
+ u v157 = 0;
+ u v158 = 0;
+ u v159 = 0;
+ u v160 = 0;
+ u v161 = 0;
+ u v162 = 0;
+ u v163 = 0;
+ u v164 = 0;
+ u v165 = 0;
+ u v166 = 0;
+ u v167 = 0;
+ u v168 = 0;
+ u v169 = 0;
+ u v170 = 0;
+ u v171 = 0;
+ u v172 = 0;
+ u v173 = 0;
+ u v174 = 0;
+ u v175 = 0;
+ u v176 = 0;
+ u v177 = 0;
+ u v178 = 0;
+ u v179 = 0;
+ u v180 = 0;
+ u v181 = 0;
+ u v182 = 0;
+ u v183 = 0;
+ u v184 = 0;
+ u v185 = 0;
+ u v186 = 0;
+ u v187 = 0;
+ u v188 = 0;
+ u v189 = 0;
+ u v190 = 0;
+ u v191 = 0;
+ u v192 = 0;
+ u v193 = 0;
+ u v194 = 0;
+ u v195 = 0;
+ u v196 = 0;
+ u v197 = 0;
+ u v198 = 0;
+ u v199 = 0;
+ u v200 = 0;
+ u v201 = 0;
+ u v202 = 0;
+ u v203 = 0;
+ u v204 = 0;
+ u v205 = 0;
+ u v206 = 0;
+ u v207 = 0;
+ u v208 = 0;
+ u v209 = 0;
+ u v210 = 0;
+ u v211 = 0;
+ u v212 = 0;
+ u v213 = 0;
+ u v214 = 0;
+ u v215 = 0;
+ u v216 = 0;
+ u v217 = 0;
+ u v218 = 0;
+ u v219 = 0;
+ u v220 = 0;
+ u v221 = 0;
+ u v222 = 0;
+ u v223 = 0;
+ u v224 = 0;
+ u v225 = 0;
+ u v226 = 0;
+ u v227 = 0;
+ u v228 = 0;
+ u v229 = 0;
+ u v230 = 0;
+ u v231 = 0;
+ u v232 = 0;
+ u v233 = 0;
+ u v234 = 0;
+ u v235 = 0;
+ u v236 = 0;
+ u v237 = 0;
+ u v238 = 0;
+ u v239 = 0;
+ u v240 = 0;
+ u v241 = 0;
+ u v242 = 0;
+ u v243 = 0;
+ u v244 = 0;
+ u v245 = 0;
+ u v246 = 0;
+ u v247 = 0;
+ u v248 = 0;
+ u v249 = 0;
+ u v250 = 0;
+ u v251 = 0;
+ u v252 = 0;
+ u v253 = 0;
+ u v254 = 0;
+ u v255 = 0;
+ u v256 = 0;
+ u v257 = 0;
+ u v258 = 0;
+ u v259 = 0;
+ u v260 = 0;
+ u v261 = 0;
+ u v262 = 0;
+ u v263 = 0;
+ u v264 = 0;
+ u v265 = 0;
+ u v266 = 0;
+ u v267 = 0;
+ u v268 = 0;
+ u v269 = 0;
+ u v270 = 0;
+ u v271 = 0;
+ u v272 = 0;
+ u v273 = 0;
+ u v274 = 0;
+ u v275 = 0;
+ u v276 = 0;
+ u v277 = 0;
+ u v278 = 0;
+ u v279 = 0;
+ u v280 = 0;
+ u v281 = 0;
+ u v282 = 0;
+ u v283 = 0;
+ u v284 = 0;
+ u v285 = 0;
+ u v286 = 0;
+ u v287 = 0;
+ u v288 = 0;
+ u v289 = 0;
+ u v290 = 0;
+ u v291 = 0;
+ u v292 = 0;
+ u v293 = 0;
+ u v294 = 0;
+ u v295 = 0;
+ u v296 = 0;
+ u v297 = 0;
+ u v298 = 0;
+ u v299 = 0;
+ u v300 = 0;
+ u v301 = 0;
+ u v302 = 0;
+ u v303 = 0;
+ u v304 = 0;
+ u v305 = 0;
+ u v306 = 0;
+ u v307 = 0;
+ u v308 = 0;
+ u v309 = 0;
+ u v310 = 0;
+ u v311 = 0;
+ u v312 = 0;
+ u v313 = 0;
+ u v314 = 0;
+ u v315 = 0;
+ u v316 = 0;
+ u v317 = 0;
+ u v318 = 0;
+ u v319 = 0;
+ u v320 = 0;
+ u v321 = 0;
+ u v322 = 0;
+ u v323 = 0;
+ u v324 = 0;
+ u v325 = 0;
+ u v326 = 0;
+ u v327 = 0;
+ u v328 = 0;
+ u v329 = 0;
+ u v330 = 0;
+ u v331 = 0;
+ u v332 = 0;
+ u v333 = 0;
+ u v334 = 0;
+ u v335 = 0;
+ u v336 = 0;
+ u v337 = 0;
+ u v338 = 0;
+ u v339 = 0;
+ u v340 = 0;
+ u v341 = 0;
+ u v342 = 0;
+ u v343 = 0;
+ u v344 = 0;
+ u v345 = 0;
+ u v346 = 0;
+ u v347 = 0;
+ u v348 = 0;
+ u v349 = 0;
+ u v350 = 0;
+ u v351 = 0;
+ u v352 = 0;
+ u v353 = 0;
+ u v354 = 0;
+ u v355 = 0;
+ u v356 = 0;
+ u v357 = 0;
+ u v358 = 0;
+ u v359 = 0;
+ u v360 = 0;
+ u v361 = 0;
+ u v362 = 0;
+ u v363 = 0;
+ u v364 = 0;
+ u v365 = 0;
+ u v366 = 0;
+ u v367 = 0;
+ u v368 = 0;
+ u v369 = 0;
+ u v370 = 0;
+ u v371 = 0;
+ u v372 = 0;
+ u v373 = 0;
+ u v374 = 0;
+ u v375 = 0;
+ u v376 = 0;
+ u v377 = 0;
+ u v378 = 0;
+ u v379 = 0;
+ u v380 = 0;
+ u v381 = 0;
+ u v382 = 0;
+ u v383 = 0;
+ u v384 = 0;
+ u v385 = 0;
+ u v386 = 0;
+ u v387 = 0;
+ u v388 = 0;
+ u v389 = 0;
+ u v390 = 0;
+ u v391 = 0;
+ u v392 = 0;
+ u v393 = 0;
+ u v394 = 0;
+ u v395 = 0;
+ u v396 = 0;
+ u v397 = 0;
+ u v398 = 0;
+ u v399 = 0;
+ u v400 = 0;
+ u v401 = 0;
+ u v402 = 0;
+ u v403 = 0;
+ u v404 = 0;
+ u v405 = 0;
+ u v406 = 0;
+ u v407 = 0;
+ u v408 = 0;
+ u v409 = 0;
+ u v410 = 0;
+ u v411 = 0;
+ u v412 = 0;
+ u v413 = 0;
+ u v414 = 0;
+ u v415 = 0;
+ u v416 = 0;
+ u v417 = 0;
+ u v418 = 0;
+ u v419 = 0;
+ u v420 = 0;
+ u v421 = 0;
+ u v422 = 0;
+ u v423 = 0;
+ u v424 = 0;
+ u v425 = 0;
+ u v426 = 0;
+ u v427 = 0;
+ u v428 = 0;
+ u v429 = 0;
+ u v430 = 0;
+ u v431 = 0;
+ u v432 = 0;
+ u v433 = 0;
+ u v434 = 0;
+ u v435 = 0;
+ u v436 = 0;
+ u v437 = 0;
+ u v438 = 0;
+ u v439 = 0;
+ u v440 = 0;
+ u v441 = 0;
+ u v442 = 0;
+ u v443 = 0;
+ u v444 = 0;
+ u v445 = 0;
+ u v446 = 0;
+ u v447 = 0;
+ u v448 = 0;
+ u v449 = 0;
+ u v450 = 0;
+ u v451 = 0;
+ u v452 = 0;
+ u v453 = 0;
+ u v454 = 0;
+ u v455 = 0;
+ u v456 = 0;
+ u v457 = 0;
+ u v458 = 0;
+ u v459 = 0;
+ u v460 = 0;
+ u v461 = 0;
+ u v462 = 0;
+ u v463 = 0;
+ u v464 = 0;
+ u v465 = 0;
+ u v466 = 0;
+ u v467 = 0;
+ u v468 = 0;
+ u v469 = 0;
+ u v470 = 0;
+ u v471 = 0;
+ u v472 = 0;
+ u v473 = 0;
+ u v474 = 0;
+ u v475 = 0;
+ u v476 = 0;
+ u v477 = 0;
+ u v478 = 0;
+ u v479 = 0;
+ u v480 = 0;
+ u v481 = 0;
+ u v482 = 0;
+ u v483 = 0;
+ u v484 = 0;
+ u v485 = 0;
+ u v486 = 0;
+ u v487 = 0;
+ u v488 = 0;
+ u v489 = 0;
+ u v490 = 0;
+ u v491 = 0;
+ u v492 = 0;
+ u v493 = 0;
+ u v494 = 0;
+ u v495 = 0;
+ u v496 = 0;
+ u v497 = 0;
+ u v498 = 0;
+ u v499 = 0;
+ u v500 = 0;
+ u v501 = 0;
+ u v502 = 0;
+ u v503 = 0;
+ u v504 = 0;
+ u v505 = 0;
+ u v506 = 0;
+ u v507 = 0;
+ u v508 = 0;
+ u v509 = 0;
+ u v510 = 0;
+ u v511 = 0;
+ u v512 = 0;
+ u v513 = 0;
+ u v514 = 0;
+ u v515 = 0;
+ u v516 = 0;
+ u v517 = 0;
+ u v518 = 0;
+ u v519 = 0;
+ u v520 = 0;
+ u v521 = 0;
+ u v522 = 0;
+ u v523 = 0;
+ u v524 = 0;
+ u v525 = 0;
+ u v526 = 0;
+ u v527 = 0;
+ u v528 = 0;
+ u v529 = 0;
+ u v530 = 0;
+ u v531 = 0;
+ u v532 = 0;
+ u v533 = 0;
+ u v534 = 0;
+ u v535 = 0;
+ u v536 = 0;
+ u v537 = 0;
+ u v538 = 0;
+ u v539 = 0;
+ u v540 = 0;
+ u v541 = 0;
+ u v542 = 0;
+ u v543 = 0;
+ u v544 = 0;
+ u v545 = 0;
+ u v546 = 0;
+ u v547 = 0;
+ u v548 = 0;
+ u v549 = 0;
+ u v550 = 0;
+ u v551 = 0;
+ u v552 = 0;
+ u v553 = 0;
+ u v554 = 0;
+ u v555 = 0;
+ u v556 = 0;
+ u v557 = 0;
+ u v558 = 0;
+ u v559 = 0;
+ u v560 = 0;
+ u v561 = 0;
+ u v562 = 0;
+ u v563 = 0;
+ u v564 = 0;
+ u v565 = 0;
+ u v566 = 0;
+ u v567 = 0;
+ u v568 = 0;
+ u v569 = 0;
+ u v570 = 0;
+ u v571 = 0;
+ u v572 = 0;
+ u v573 = 0;
+ u v574 = 0;
+ u v575 = 0;
+ u v576 = 0;
+ u v577 = 0;
+ u v578 = 0;
+ u v579 = 0;
+ u v580 = 0;
+ u v581 = 0;
+ u v582 = 0;
+ u v583 = 0;
+ u v584 = 0;
+ u v585 = 0;
+ u v586 = 0;
+ u v587 = 0;
+ u v588 = 0;
+ u v589 = 0;
+ u v590 = 0;
+ u v591 = 0;
+ u v592 = 0;
+ u v593 = 0;
+ u v594 = 0;
+ u v595 = 0;
+ u v596 = 0;
+ u v597 = 0;
+ u v598 = 0;
+ u v599 = 0;
+ u v600 = 0;
+ u v601 = 0;
+ u v602 = 0;
+ u v603 = 0;
+ u v604 = 0;
+ u v605 = 0;
+ u v606 = 0;
+ u v607 = 0;
+ u v608 = 0;
+ u v609 = 0;
+ u v610 = 0;
+ u v611 = 0;
+ u v612 = 0;
+ u v613 = 0;
+ u v614 = 0;
+ u v615 = 0;
+ u v616 = 0;
+ u v617 = 0;
+ u v618 = 0;
+ u v619 = 0;
+ u v620 = 0;
+ u v621 = 0;
+ u v622 = 0;
+ u v623 = 0;
+ u v624 = 0;
+ u v625 = 0;
+ u v626 = 0;
+ u v627 = 0;
+ u v628 = 0;
+ u v629 = 0;
+ u v630 = 0;
+ u v631 = 0;
+ u v632 = 0;
+ u v633 = 0;
+ u v634 = 0;
+ u v635 = 0;
+ u v636 = 0;
+ u v637 = 0;
+ u v638 = 0;
+ u v639 = 0;
+ u v640 = 0;
+ u v641 = 0;
+ u v642 = 0;
+ u v643 = 0;
+ u v644 = 0;
+ u v645 = 0;
+ u v646 = 0;
+ u v647 = 0;
+ u v648 = 0;
+ u v649 = 0;
+ u v650 = 0;
+ u v651 = 0;
+ u v652 = 0;
+ u v653 = 0;
+ u v654 = 0;
+ u v655 = 0;
+ u v656 = 0;
+ u v657 = 0;
+ u v658 = 0;
+ u v659 = 0;
+ u v660 = 0;
+ u v661 = 0;
+ u v662 = 0;
+ u v663 = 0;
+ u v664 = 0;
+ u v665 = 0;
+ u v666 = 0;
+ u v667 = 0;
+ u v668 = 0;
+ u v669 = 0;
+ u v670 = 0;
+ u v671 = 0;
+ u v672 = 0;
+ u v673 = 0;
+ u v674 = 0;
+ u v675 = 0;
+ u v676 = 0;
+ u v677 = 0;
+ u v678 = 0;
+ u v679 = 0;
+ u v680 = 0;
+ u v681 = 0;
+ u v682 = 0;
+ u v683 = 0;
+ u v684 = 0;
+ u v685 = 0;
+ u v686 = 0;
+ u v687 = 0;
+ u v688 = 0;
+ u v689 = 0;
+ u v690 = 0;
+ u v691 = 0;
+ u v692 = 0;
+ u v693 = 0;
+ u v694 = 0;
+ u v695 = 0;
+ u v696 = 0;
+ u v697 = 0;
+ u v698 = 0;
+ u v699 = 0;
+ u v700 = 0;
+ u v701 = 0;
+ u v702 = 0;
+ u v703 = 0;
+ u v704 = 0;
+ u v705 = 0;
+ u v706 = 0;
+ u v707 = 0;
+ u v708 = 0;
+ u v709 = 0;
+ u v710 = 0;
+ u v711 = 0;
+ u v712 = 0;
+ u v713 = 0;
+ u v714 = 0;
+ u v715 = 0;
+ u v716 = 0;
+ u v717 = 0;
+ u v718 = 0;
+ u v719 = 0;
+ u v720 = 0;
+ u v721 = 0;
+ u v722 = 0;
+ u v723 = 0;
+ u v724 = 0;
+ u v725 = 0;
+ u v726 = 0;
+ u v727 = 0;
+ u v728 = 0;
+ u v729 = 0;
+ u v730 = 0;
+ u v731 = 0;
+ u v732 = 0;
+ u v733 = 0;
+ u v734 = 0;
+ u v735 = 0;
+ u v736 = 0;
+ u v737 = 0;
+ u v738 = 0;
+ u v739 = 0;
+ u v740 = 0;
+ u v741 = 0;
+ u v742 = 0;
+ u v743 = 0;
+ u v744 = 0;
+ u v745 = 0;
+ u v746 = 0;
+ u v747 = 0;
+ u v748 = 0;
+ u v749 = 0;
+ u v750 = 0;
+ u v751 = 0;
+ u v752 = 0;
+ u v753 = 0;
+ u v754 = 0;
+ u v755 = 0;
+ u v756 = 0;
+ u v757 = 0;
+ u v758 = 0;
+ u v759 = 0;
+ u v760 = 0;
+ u v761 = 0;
+ u v762 = 0;
+ u v763 = 0;
+ u v764 = 0;
+ u v765 = 0;
+ u v766 = 0;
+ u v767 = 0;
+ u v768 = 0;
+ u v769 = 0;
+ u v770 = 0;
+ u v771 = 0;
+ u v772 = 0;
+ u v773 = 0;
+ u v774 = 0;
+ u v775 = 0;
+ u v776 = 0;
+ u v777 = 0;
+ u v778 = 0;
+ u v779 = 0;
+ u v780 = 0;
+ u v781 = 0;
+ u v782 = 0;
+ u v783 = 0;
+ u v784 = 0;
+ u v785 = 0;
+ u v786 = 0;
+ u v787 = 0;
+ u v788 = 0;
+ u v789 = 0;
+ u v790 = 0;
+ u v791 = 0;
+ u v792 = 0;
+ u v793 = 0;
+ u v794 = 0;
+ u v795 = 0;
+ u v796 = 0;
+ u v797 = 0;
+ u v798 = 0;
+ u v799 = 0;
+ u v800 = 0;
+ u v801 = 0;
+ u v802 = 0;
+ u v803 = 0;
+ u v804 = 0;
+ u v805 = 0;
+ u v806 = 0;
+ u v807 = 0;
+ u v808 = 0;
+ u v809 = 0;
+ u v810 = 0;
+ u v811 = 0;
+ u v812 = 0;
+ u v813 = 0;
+ u v814 = 0;
+ u v815 = 0;
+ u v816 = 0;
+ u v817 = 0;
+ u v818 = 0;
+ u v819 = 0;
+ u v820 = 0;
+ u v821 = 0;
+ u v822 = 0;
+ u v823 = 0;
+ u v824 = 0;
+ u v825 = 0;
+ u v826 = 0;
+ u v827 = 0;
+ u v828 = 0;
+ u v829 = 0;
+ u v830 = 0;
+ u v831 = 0;
+ u v832 = 0;
+ u v833 = 0;
+ u v834 = 0;
+ u v835 = 0;
+ u v836 = 0;
+ u v837 = 0;
+ u v838 = 0;
+ u v839 = 0;
+ u v840 = 0;
+ u v841 = 0;
+ u v842 = 0;
+ u v843 = 0;
+ u v844 = 0;
+ u v845 = 0;
+ u v846 = 0;
+ u v847 = 0;
+ u v848 = 0;
+ u v849 = 0;
+ u v850 = 0;
+ u v851 = 0;
+ u v852 = 0;
+ u v853 = 0;
+ u v854 = 0;
+ u v855 = 0;
+ u v856 = 0;
+ u v857 = 0;
+ u v858 = 0;
+ u v859 = 0;
+ u v860 = 0;
+ u v861 = 0;
+ u v862 = 0;
+ u v863 = 0;
+ u v864 = 0;
+ u v865 = 0;
+ u v866 = 0;
+ u v867 = 0;
+ u v868 = 0;
+ u v869 = 0;
+ u v870 = 0;
+ u v871 = 0;
+ u v872 = 0;
+ u v873 = 0;
+ u v874 = 0;
+ u v875 = 0;
+ u v876 = 0;
+ u v877 = 0;
+ u v878 = 0;
+ u v879 = 0;
+ u v880 = 0;
+ u v881 = 0;
+ u v882 = 0;
+ u v883 = 0;
+ u v884 = 0;
+ u v885 = 0;
+ u v886 = 0;
+ u v887 = 0;
+ u v888 = 0;
+ u v889 = 0;
+ u v890 = 0;
+ u v891 = 0;
+ u v892 = 0;
+ u v893 = 0;
+ u v894 = 0;
+ u v895 = 0;
+ u v896 = 0;
+ u v897 = 0;
+ u v898 = 0;
+ u v899 = 0;
+ u v900 = 0;
+ u v901 = 0;
+ u v902 = 0;
+ u v903 = 0;
+ u v904 = 0;
+ u v905 = 0;
+ u v906 = 0;
+ u v907 = 0;
+ u v908 = 0;
+ u v909 = 0;
+ u v910 = 0;
+ u v911 = 0;
+ u v912 = 0;
+ u v913 = 0;
+ u v914 = 0;
+ u v915 = 0;
+ u v916 = 0;
+ u v917 = 0;
+ u v918 = 0;
+ u v919 = 0;
+ u v920 = 0;
+ u v921 = 0;
+ u v922 = 0;
+ u v923 = 0;
+ u v924 = 0;
+ u v925 = 0;
+ u v926 = 0;
+ u v927 = 0;
+ u v928 = 0;
+ u v929 = 0;
+ u v930 = 0;
+ u v931 = 0;
+ u v932 = 0;
+ u v933 = 0;
+ u v934 = 0;
+ u v935 = 0;
+ u v936 = 0;
+ u v937 = 0;
+ u v938 = 0;
+ u v939 = 0;
+ u v940 = 0;
+ u v941 = 0;
+ u v942 = 0;
+ u v943 = 0;
+ u v944 = 0;
+ u v945 = 0;
+ u v946 = 0;
+ u v947 = 0;
+ u v948 = 0;
+ u v949 = 0;
+ u v950 = 0;
+ u v951 = 0;
+ u v952 = 0;
+ u v953 = 0;
+ u v954 = 0;
+ u v955 = 0;
+ u v956 = 0;
+ u v957 = 0;
+ u v958 = 0;
+ u v959 = 0;
+ u v960 = 0;
+ u v961 = 0;
+ u v962 = 0;
+ u v963 = 0;
+ u v964 = 0;
+ u v965 = 0;
+ u v966 = 0;
+ u v967 = 0;
+ u v968 = 0;
+ u v969 = 0;
+ u v970 = 0;
+ *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
+ vkind = *(u*)(vn + 0UL);
+ if (vkind != 3UL) goto b3;
+ if (!(vrhs)) goto b8;
+ v6 = 0UL;
+b9: if (!(v6)) goto b6;
+ v7 = (u)zcdie;
v8 = vc;
- v9 = vpat;
- v10 = ((u(*)())v7)(v8, v9);
- va = v10;
- v11 = (u)znfa_empty;
- v12 = vc;
- v13 = ((u(*)())v11)(v12);
- vb = v13;
- v14 = (u)zlexer_compile_action;
- v15 = vc;
- v16 = vact;
- v17 = ((u(*)())v14)(v15, v16);
- *(u*)(vb + 8UL) = v17;
- v18 = (u)znfa_concat;
- v19 = vc;
- v20 = va;
- v21 = vb;
- v22 = ((u(*)())v18)(v19, v20, v21);
- return v22;
-}
-u zlexer_compile_str(u vc, u vn) {
- u vi = 0;
- u vlen = 0;
- u vok = 0;
- u vch = 0;
- u va = 0;
- u vb = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- vi = 0UL;
- v8 = (u)znfa_empty;
- v9 = vc;
- v10 = ((u(*)())v8)(v9);
- va = v10;
-b2: vch = (u)*(b*)(*(u*)(vn + 56UL) + vi * 1UL);
- if (vch != 0UL) goto b6;
- return va;
-b6: v11 = (u)znfa_lit;
+ v9 = (u)"str is not an lexpr";
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+b4: v11 = (u)zmktype1;
v12 = vc;
- v13 = vch;
- v14 = vch;
- v15 = ((u(*)())v11)(v12, v13, v14);
- vb = v15;
- v16 = (u)znfa_concat;
- v17 = vc;
- v18 = va;
- v19 = vb;
- v20 = ((u(*)())v16)(v17, v18, v19);
- va = v20;
- vi = vi + 1UL;
- goto b2;
-}
-u zlexer_explode(u vc, u vn) {
- u v_k[6] = {0};
- u vk = 0;
- u vret = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- vk = (u)v_k;
- *(u*)(vk + 0UL) = *(u*)(vc + 0UL);
- if (*(u*)(vn + 16UL) == -1UL) goto b3;
- v5 = (u)zdie;
- v6 = (u)"expected epsilon";
- v7 = ((u(*)())v5)(v6);
- v7;
-b1: v8 = (u)zdfakey_add;
- v9 = vk;
- v10 = vn;
- v11 = ((u(*)())v8)(v9, v10);
- v11;
- v12 = (u)znfa2dfa;
- v13 = vc;
- v14 = vk;
- v15 = ((u(*)())v12)(v13, v14);
- vret = v15;
- v16 = (u)zfree;
- v17 = *(u*)(vk + 0UL);
- v18 = *(u*)(vk + 8UL);
- v19 = ((u(*)())v16)(v17, v18);
- v19;
- v20 = (u)zdfa_minimize;
- v21 = vc;
- v22 = vret;
- v23 = ((u(*)())v20)(v21, v22);
- vret = v23;
- return vret;
-b3: goto b1;
-}
-u zlexer_output(u vc, u vcg) {
- u vic = 0;
- u vo = 0;
- u vret_type = 0;
- u vfunc_type = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- v6 = (u)zmktype0;
- v7 = vc;
- v8 = 2UL;
- v9 = ((u(*)())v6)(v7, v8);
- vret_type = v9;
- v10 = (u)zmktype1;
- v11 = vc;
- v12 = 4UL;
- v13 = vret_type;
- v14 = ((u(*)())v10)(v11, v12, v13);
- vret_type = v14;
- v15 = (u)zmktype2;
+ v13 = 4UL;
+ v15 = (u)zmktype0;
v16 = vc;
- v17 = 6UL;
- v18 = vret_type;
- v19 = 0UL;
- v20 = ((u(*)())v15)(v16, v17, v18, v19);
- vfunc_type = v20;
- v21 = (u)zmkirfunc;
+ v17 = 3UL;
+ v18 = ((u(*)())(v15))(v16, v17);
+ v14 = v18;
+ v19 = ((u(*)())(v11))(v12, v13, v14);
+ *(u*)(vn + 64UL) = v19;
+b1: return 0UL;
+b6: goto b4;
+b8: v6 = 1UL;
+ goto b9;
+b3: if (vkind != 4UL) goto b14;
+ if (!(vrhs)) goto b19;
+ v20 = 0UL;
+b20: if (!(v20)) goto b17;
+ v21 = (u)zcdie;
v22 = vc;
- v23 = (u)"get_link_table";
- v24 = ((u(*)())v21)(v22, v23);
- vic = v24;
- v25 = (u)zmkirstr;
- v26 = vic;
- v27 = *(u*)(vcg + 48UL);
- v28 = *(u*)(vcg + 56UL);
- v29 = ((u(*)())v25)(v26, v27, v28);
- vo = v29;
- v30 = (u)zirreturn;
- v31 = vic;
- v32 = vo;
- v33 = ((u(*)())v30)(v31, v32);
+ v23 = (u)"nil is not an lexpr";
+ v24 = ((u(*)())(v21))(v22, v23);
+ v24;
+b15: v25 = (u)zmktype0;
+ v26 = vc;
+ v27 = 0UL;
+ v28 = ((u(*)())(v25))(v26, v27);
+ *(u*)(vn + 64UL) = v28;
+ goto b1;
+b17: goto b15;
+b19: v20 = 1UL;
+ goto b20;
+b14: if (vkind != 1UL) goto b24;
+ if (!(vrhs)) goto b29;
+ v29 = 0UL;
+b30: if (!(v29)) goto b27;
+ v30 = (u)zcdie;
+ v31 = vc;
+ v32 = (u)"num is not an lexpr";
+ v33 = ((u(*)())(v30))(v31, v32);
v33;
- v34 = (u)zdefine_ir_func;
+b25: v34 = (u)zmktype0;
v35 = vc;
- v36 = vic;
- v37 = vfunc_type;
- v38 = ((u(*)())v34)(v35, v36, v37);
- v38;
- v39 = (u)zmktype0;
- v40 = vc;
- v41 = 2UL;
- v42 = ((u(*)())v39)(v40, v41);
- vret_type = v42;
- v43 = (u)zmktype2;
- v44 = vc;
- v45 = 6UL;
- v46 = vret_type;
- v47 = 0UL;
- v48 = ((u(*)())v43)(v44, v45, v46, v47);
- vfunc_type = v48;
- v49 = (u)zmkirfunc;
- v50 = vc;
- v51 = (u)"get_num_states";
- v52 = ((u(*)())v49)(v50, v51);
- vic = v52;
- v53 = (u)zmkirconst;
- v54 = vic;
- v55 = *(u*)(vcg + 16UL);
- v56 = ((u(*)())v53)(v54, v55);
- vo = v56;
- v57 = (u)zirreturn;
- v58 = vic;
- v59 = vo;
- v60 = ((u(*)())v57)(v58, v59);
- v60;
- v61 = (u)zdefine_ir_func;
- v62 = vc;
- v63 = vic;
- v64 = vfunc_type;
- v65 = ((u(*)())v61)(v62, v63, v64);
- v65;
- v66 = (u)zlexer_compile_get_tag_table;
- v67 = vc;
- v68 = vcg;
- v69 = ((u(*)())v66)(v67, v68);
- v69;
- return 0UL;
-}
-u zlocals_to_ir(u vic, u vn) {
- u vname = 0;
- u vt = 0;
- u vkind = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- if (!vn) goto b5;
- v5 = 0UL;
-b6: if (!v5) goto b3;
- return 0UL;
-b3: *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vn + 24UL);
- *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vn + 32UL);
- *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vn + 40UL);
- vkind = *(u*)(vn + 0UL);
- if (vkind != 21UL) goto b9;
-b10: if (!vn) goto b16;
- v6 = 0UL;
-b17: if (!v6) goto b14;
-b7: return 0UL;
-b14: v7 = (u)zlocals_to_ir;
- v8 = vic;
- v9 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v10 = ((u(*)())v7)(v8, v9);
- v10;
- vn = *(u*)(vn + 16UL);
- goto b10;
-b16: v6 = 1UL;
- goto b17;
-b9: if (vkind != 5UL) goto b20;
-b21: if (!vn) goto b27;
- v11 = 0UL;
-b28: if (!v11) goto b25;
- goto b7;
-b25: v12 = (u)zlocals_to_ir;
- v13 = vic;
- v14 = *(u*)(vn + 8UL);
- v15 = ((u(*)())v12)(v13, v14);
- v15;
- vn = *(u*)(vn + 16UL);
- goto b21;
-b27: v11 = 1UL;
- goto b28;
-b20: if (vkind != 26UL) goto b31;
- v16 = (u)zlocals_to_ir;
- v17 = vic;
- v18 = *(u*)(vn + 8UL);
- v19 = ((u(*)())v16)(v17, v18);
- v19;
- goto b7;
-b31: if (vkind != 30UL) goto b34;
- vname = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v20 = (u)zprototype;
- v21 = *(u*)(vic + 0UL);
- v22 = *(u*)(vn + 16UL);
- v23 = ((u(*)())v20)(v21, v22);
- vt = v23;
- v24 = (u)ziraddvar;
- v25 = vic;
- v26 = vname;
- v27 = vt;
- v28 = ((u(*)())v24)(v25, v26, v27);
- v28;
- goto b7;
-b34: goto b7;
-b5: v5 = 1UL;
- goto b6;
-}
-u zmain(u vargc, u vargv, u venvp) {
- u va = 0;
- u vc = 0;
- u vp = 0;
- u vi = 0;
- u vshow = 0;
- u vout_filename = 0;
- u vcout_filename = 0;
- u verr = 0;
- u vinput = 0;
- u vtmp = 0;
- u vlink = 0;
- u vsem = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- vlink = (u)&vinput;
- v15 = (u)zsetup_alloc;
- v16 = (u)&va;
- v17 = ((u(*)())v15)(v16);
- v17;
- v18 = (u)zfopen;
- v19 = 2UL;
- v20 = (u)&va;
- v21 = ((u(*)())v18)(v19, v20);
- verr = v21;
- v22 = (u)zcomp_setup;
- v23 = (u)&va;
- v24 = verr;
- v25 = ((u(*)())v22)(v23, v24);
- vc = v25;
- vi = 1UL;
-b4: if ((s)vi < (s)vargc) goto b8;
- vtmp = vinput;
-b67: if (!vtmp) goto b73;
- v78 = 0UL;
-b74: if (!v78) goto b71;
- if (!vshow) goto b79;
- v88 = (u)zshow_node;
- v89 = verr;
- v90 = vp;
- v91 = ((u(*)())v88)(v89, v90);
- v91;
- v92 = (u)zfflush;
- v93 = verr;
- v94 = ((u(*)())v92)(v93);
- v94;
- return 0UL;
-b79: v95 = (u)zcompile;
- v96 = vc;
- v97 = vp;
- v98 = ((u(*)())v95)(v96, v97);
- v98;
- if (!vcout_filename) goto b85;
- v99 = (u)zopen_coutput;
- v100 = vc;
- v101 = vcout_filename;
- v102 = ((u(*)())v99)(v100, v101);
- v102;
- v103 = (u)zircout;
- v104 = vc;
- v105 = ((u(*)())v103)(v104);
- v105;
-b83: v106 = (u)zemit_builtin;
- v107 = vc;
- v108 = ((u(*)())v106)(v107);
- v108;
- if (!vout_filename) goto b91;
- v109 = (u)zopen_output;
- v110 = *(u*)(vc + 48UL);
- v111 = vout_filename;
- v112 = ((u(*)())v109)(v110, v111);
- v112;
- v113 = (u)zwriteout;
- v114 = *(u*)(vc + 48UL);
- v115 = *(u*)(vc + 88UL);
- v116 = *(u*)(vc + 96UL);
- v117 = ((u(*)())v113)(v114, v115, v116);
- v117;
-b89: return 0UL;
-b91: goto b89;
-b85: goto b83;
-b71: v79 = (u)zdolalr;
- v80 = vc;
- v81 = *(u*)(vtmp + 8UL);
- v82 = verr;
- v83 = ((u(*)())v79)(v80, v81, v82);
- vsem = v83;
- v84 = (u)zconcat_program;
- v85 = vp;
- v86 = *(u*)(vsem + 0UL);
- v87 = ((u(*)())v84)(v85, v86);
- vp = v87;
- vtmp = *(u*)(vtmp + 0UL);
- goto b67;
-b73: v78 = 1UL;
- goto b74;
-b8: v27 = (u)zstrcmp;
- v28 = *(u*)(vargv + vi * 8UL);
- v29 = (u)"-o";
- v30 = ((u(*)())v27)(v28, v29);
- if (!v30) goto b13;
- v26 = 0UL;
-b14: if (!v26) goto b11;
- vi = vi + 1UL;
- if ((s)vi < (s)vargc) goto b18;
- v31 = (u)zdie;
- v32 = (u)"invalid -o at end of argument list";
- v33 = ((u(*)())v31)(v32);
- v33;
-b16: vout_filename = *(u*)(vargv + vi * 8UL);
- vi = vi + 1UL;
- goto b4;
-b18: goto b16;
-b11: v35 = (u)zstrcmp;
- v36 = *(u*)(vargv + vi * 8UL);
- v37 = (u)"-fdump";
- v38 = ((u(*)())v35)(v36, v37);
- if (!v38) goto b24;
- v34 = 0UL;
-b25: if (!v34) goto b22;
- vi = vi + 1UL;
- vshow = 1UL;
- goto b4;
-b22: v40 = (u)zstrcmp;
- v41 = *(u*)(vargv + vi * 8UL);
- v42 = (u)"-C";
- v43 = ((u(*)())v40)(v41, v42);
- if (!v43) goto b31;
- v39 = 0UL;
-b32: if (!v39) goto b29;
- vi = vi + 1UL;
- if ((s)vi < (s)vargc) goto b36;
- v44 = (u)zdie;
- v45 = (u)"invalid -o at end of argument list";
- v46 = ((u(*)())v44)(v45);
- v46;
-b34: vcout_filename = *(u*)(vargv + vi * 8UL);
- vi = vi + 1UL;
- goto b4;
-b36: goto b34;
-b29: v48 = (u)zstrcmp;
- v49 = *(u*)(vargv + vi * 8UL);
- v50 = (u)"-G";
- v51 = ((u(*)())v48)(v49, v50);
- if (!v51) goto b42;
+ v36 = 2UL;
+ v37 = ((u(*)())(v34))(v35, v36);
+ *(u*)(vn + 64UL) = v37;
+ goto b1;
+b27: goto b25;
+b29: v29 = 1UL;
+ goto b30;
+b24: if (vkind != 2UL) goto b34;
+ if (!(vrhs)) goto b39;
+ v38 = 0UL;
+b40: if (!(v38)) goto b37;
+ v39 = (u)zcdie;
+ v40 = vc;
+ v41 = (u)"char is not an lexpr";
+ v42 = ((u(*)())(v39))(v40, v41);
+ v42;
+b35: v43 = (u)zmktype0;
+ v44 = vc;
+ v45 = 2UL;
+ v46 = ((u(*)())(v43))(v44, v45);
+ *(u*)(vn + 64UL) = v46;
+ goto b1;
+b37: goto b35;
+b39: v38 = 1UL;
+ goto b40;
+b34: if (vkind != 6UL) goto b44;
+ if (!(vrhs)) goto b49;
v47 = 0UL;
-b43: if (!v47) goto b40;
- vi = vi + 1UL;
- if ((s)vi < (s)vargc) goto b47;
- v52 = (u)zdie;
- v53 = (u)"invalid -G at end of argument list";
- v54 = ((u(*)())v52)(v53);
- v54;
-b45: v55 = (u)zopen_call_out;
- v56 = vc;
- v57 = *(u*)(vargv + vi * 8UL);
- v58 = ((u(*)())v55)(v56, v57);
- v58;
- vi = vi + 1UL;
- goto b4;
+b50: if (!(v47)) goto b47;
+ v48 = (u)zcdie;
+ v49 = vc;
+ v50 = (u)"call is not an lexpr";
+ v51 = ((u(*)())(v48))(v49, v50);
+ v51;
+b45: if (!(*(u*)(vn + 16UL))) goto b54;
+ v52 = (u)ztypecheck_expr;
+ v53 = vc;
+ v54 = vd;
+ v55 = *(u*)(vn + 16UL);
+ v56 = 1UL;
+ v57 = ((u(*)())(v52))(v53, v54, v55, v56);
+ v57;
+b52: v58 = (u)ztypecheck_expr;
+ v59 = vc;
+ v60 = vd;
+ v61 = *(u*)(vn + 8UL);
+ v62 = 1UL;
+ v63 = ((u(*)())(v58))(v59, v60, v61, v62);
+ v63;
+ if (!(*(u*)(vn + 16UL))) goto b59;
+ v64 = (u)zmktype2;
+ v65 = vc;
+ v66 = 5UL;
+ v67 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v68 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v69 = ((u(*)())(v64))(v65, v66, v67, v68);
+ *(u*)(vn + 64UL) = v69;
+b57: goto b1;
+b59: v70 = (u)zmktype1;
+ v71 = vc;
+ v72 = 5UL;
+ v73 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v74 = ((u(*)())(v70))(v71, v72, v73);
+ *(u*)(vn + 64UL) = v74;
+ goto b57;
+b54: goto b52;
b47: goto b45;
-b40: v60 = (u)zstrcmp;
- v61 = *(u*)(vargv + vi * 8UL);
- v62 = (u)"-n";
- v63 = ((u(*)())v60)(v61, v62);
- if (!v63) goto b54;
- v59 = 0UL;
-b55: if (!v59) goto b52;
- vi = vi + 1UL;
- if ((s)vi < (s)vargc) goto b59;
- v64 = (u)zdie;
- v65 = (u)"invalid -n at end of argument list";
- v66 = ((u(*)())v64)(v65);
- v66;
-b57: v67 = (u)zopen_lines_out;
- v68 = vc;
- v69 = *(u*)(vargv + vi * 8UL);
- v70 = ((u(*)())v67)(v68, v69);
- v70;
- vi = vi + 1UL;
- goto b4;
-b59: goto b57;
-b52: if ((u)*(b*)(*(u*)(vargv + vi * 8UL) + 0UL * 1UL) != 45UL) goto b64;
- v71 = (u)zdie;
- v72 = (u)"invalid argument";
- v73 = ((u(*)())v71)(v72);
- v73;
-b62: v74 = (u)zalloc;
- v75 = (u)&va;
- v76 = 16UL;
- v77 = ((u(*)())v74)(v75, v76);
- vtmp = v77;
- *(u*)(vtmp + 0UL) = 0UL;
- *(u*)(vtmp + 8UL) = *(u*)(vargv + vi * 8UL);
- *(u*)vlink = vtmp;
- vlink = vtmp + 0UL;
- vi = vi + 1UL;
- goto b4;
-b64: goto b62;
-b54: v59 = 1UL;
- goto b55;
-b42: v47 = 1UL;
- goto b43;
-b31: v39 = 1UL;
- goto b32;
-b24: v34 = 1UL;
- goto b25;
-b13: v26 = 1UL;
- goto b14;
-}
-u zmark_func_used(u vc, u vd, u vv) {
- u vedge = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- if (!vd) goto b3;
- v4 = (u)zfind;
- v5 = vc;
- v6 = *(u*)(vd + 32UL);
- v7 = *(u*)(vv + 32UL);
- v8 = 1UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vedge = v9;
- if (!*(u*)(vc + 80UL)) goto b9;
- if (!*(u*)(vedge + 56UL)) goto b13;
- v11 = 0UL;
-b14: if (!v11) goto b9;
- v10 = 1UL;
-b11: if (!v10) goto b7;
- v12 = (u)zfputs;
- v13 = *(u*)(vc + 80UL);
- v14 = *(u*)(vd + 32UL);
- v15 = ((u(*)())v12)(v13, v14);
- v15;
- v16 = (u)zfputs;
- v17 = *(u*)(vc + 80UL);
- v18 = (u)" -> ";
- v19 = ((u(*)())v16)(v17, v18);
- v19;
- v20 = (u)zfputs;
- v21 = *(u*)(vc + 80UL);
- v22 = *(u*)(vv + 32UL);
- v23 = ((u(*)())v20)(v21, v22);
- v23;
- v24 = (u)zfputs;
- v25 = *(u*)(vc + 80UL);
- v26 = (u)"\012";
- v27 = ((u(*)())v24)(v25, v26);
- v27;
-b5: *(u*)(vedge + 56UL) = 1UL;
- v28 = (u)zfind;
- v29 = vc;
- v30 = *(u*)(vv + 32UL);
- v31 = *(u*)(vd + 32UL);
- v32 = 1UL;
- v33 = ((u(*)())v28)(v29, v30, v31, v32);
- vedge = v33;
- *(u*)(vedge + 64UL) = 1UL;
-b1: if (!*(u*)(vv + 96UL)) goto b22;
- return 0UL;
-b22: *(u*)(vv + 96UL) = 1UL;
- *(u*)(vv + 48UL) = *(u*)(vc + 104UL);
- *(u*)(vc + 104UL) = vv;
+b49: v47 = 1UL;
+ goto b50;
+b44: if (vkind != 7UL) goto b63;
+ if (!(vrhs)) goto b68;
+ v75 = 0UL;
+b69: if (!(v75)) goto b66;
+ v76 = (u)zcdie;
+ v77 = vc;
+ v78 = (u)"call is not an lexpr";
+ v79 = ((u(*)())(v76))(v77, v78);
+ v79;
+b64: if (!(*(u*)(vn + 16UL))) goto b73;
+ v80 = (u)ztypecheck_expr;
+ v81 = vc;
+ v82 = vd;
+ v83 = *(u*)(vn + 16UL);
+ v84 = 1UL;
+ v85 = ((u(*)())(v80))(v81, v82, v83, v84);
+ v85;
+b71: if (*(u*)(*(u*)(vn + 8UL) + 0UL) != 0UL) goto b77;
+ v86 = (u)zfind;
+ v87 = vc;
+ v88 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v89 = 0UL;
+ v90 = 0UL;
+ v91 = ((u(*)())(v86))(v87, v88, v89, v90);
+ vv = v91;
+ if (!(vv)) goto b83;
+ if (!(*(u*)(vv + 192UL))) goto b83;
+ v92 = 1UL;
+b85: if (!(v92)) goto b81;
+ v93 = (u)zcdie;
+ v94 = vc;
+ v95 = (u)"type error";
+ v96 = ((u(*)())(v93))(v94, v95);
+ v96;
+b79: v97 = (u)zfind;
+ v98 = vc;
+ v99 = *(u*)(vd + 32UL);
+ v100 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v101 = 0UL;
+ v102 = ((u(*)())(v97))(v98, v99, v100, v101);
+ vv = v102;
+ if (!(vv)) goto b92;
+ if (!(*(u*)(vv + 208UL))) goto b92;
+ v103 = 1UL;
+b94: if (!(v103)) goto b90;
+ *(u*)(*(u*)(vn + 8UL) + 64UL) = *(u*)(vv + 216UL);
+b88:b75: if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 6UL) goto b136;
+ v141 = (u)zcdie;
+ v142 = vc;
+ v143 = (u)"calling not a function";
+ v144 = ((u(*)())(v141))(v142, v143);
+ v144;
+b134: if (!(*(u*)(vn + 16UL))) goto b140;
+ v145 = (u)zunify;
+ v146 = vc;
+ v147 = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 24UL);
+ v148 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v149 = ((u(*)())(v145))(v146, v147, v148);
+ v149;
+b138: *(u*)(vn + 64UL) = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL);
+ goto b1;
+b140: v150 = (u)zunify;
+ v151 = vc;
+ v152 = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 24UL);
+ v153 = 0UL;
+ v154 = ((u(*)())(v150))(v151, v152, v153);
+ v154;
+ goto b138;
+b136: goto b134;
+b90: v105 = (u)zstrcmp;
+ v106 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v107 = (u)"_include";
+ v108 = ((u(*)())(v105))(v106, v107);
+ if (!(v108)) goto b98;
+ v104 = 0UL;
+b99: if (!(v104)) goto b96;
+ v109 = (u)zfind;
+ v110 = vc;
+ v111 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v112 = 0UL;
+ v113 = 0UL;
+ v114 = ((u(*)())(v109))(v110, v111, v112, v113);
+ vv = v114;
+ if (!(vv)) goto b110;
+ v116 = 0UL;
+b111: if (!(v116)) goto b106;
+ v115 = 1UL;
+b108: if (!(v115)) goto b104;
+ v118 = (u)zcdie;
+ v119 = vc;
+ v120 = (u)"no such function";
+ v121 = ((u(*)())(v118))(v119, v120);
+ v121;
+b102: *(u*)(*(u*)(vn + 8UL) + 64UL) = *(u*)(vv + 80UL);
+ goto b88;
+b104: goto b102;
+b106: if (!(*(u*)(vv + 72UL))) goto b114;
+ v117 = 0UL;
+b115: if (!(v117)) goto b112;
+ v115 = 1UL;
+ goto b108;
+b112: v115 = 0UL;
+ goto b108;
+b114: v117 = 1UL;
+ goto b115;
+b110: v116 = 1UL;
+ goto b111;
+b96: v122 = (u)zfind;
+ v123 = vc;
+ v124 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v125 = 0UL;
+ v126 = 0UL;
+ v127 = ((u(*)())(v122))(v123, v124, v125, v126);
+ vv = v127;
+ if (!(vv)) goto b126;
+ v129 = 0UL;
+b127: if (!(v129)) goto b122;
+ v128 = 1UL;
+b124: if (!(v128)) goto b120;
+ v131 = (u)zcdie;
+ v132 = vc;
+ v133 = (u)"no such function";
+ v134 = ((u(*)())(v131))(v132, v133);
+ v134;
+b118: *(u*)(*(u*)(vn + 8UL) + 64UL) = *(u*)(vv + 80UL);
+ goto b88;
+b120: goto b118;
+b122: if (!(*(u*)(vv + 72UL))) goto b130;
+ v130 = 0UL;
+b131: if (!(v130)) goto b128;
+ v128 = 1UL;
+ goto b124;
+b128: v128 = 0UL;
+ goto b124;
+b130: v130 = 1UL;
+ goto b131;
+b126: v129 = 1UL;
+ goto b127;
+b98: v104 = 1UL;
+ goto b99;
+b92: v103 = 0UL;
+ goto b94;
+b81: goto b79;
+b83: v92 = 0UL;
+ goto b85;
+b77: v135 = (u)ztypecheck_expr;
+ v136 = vc;
+ v137 = vd;
+ v138 = *(u*)(vn + 8UL);
+ v139 = 1UL;
+ v140 = ((u(*)())(v135))(v136, v137, v138, v139);
+ v140;
+ goto b75;
+b73: goto b71;
+b66: goto b64;
+b68: v75 = 1UL;
+ goto b69;
+b63: if (vkind != 9UL) goto b144;
+ v155 = (u)ztypecheck_expr;
+ v156 = vc;
+ v157 = vd;
+ v158 = *(u*)(vn + 8UL);
+ v159 = 0UL;
+ v160 = ((u(*)())(v155))(v156, v157, v158, v159);
+ v160;
+ if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) != 4UL) goto b148;
+ if (*(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL) + 0UL) == 7UL) goto b153;
+ if (*(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL) + 0UL) == 8UL) goto b153;
+ v161 = 1UL;
+b155: if (!(v161)) goto b151;
+ v162 = (u)zcdie;
+ v163 = vc;
+ v164 = (u)"dot not a struct";
+ v165 = ((u(*)())(v162))(v163, v164);
+ v165;
+b149: v166 = (u)zfind;
+ v167 = vc;
+ v168 = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL) + 8UL) + 32UL);
+ v169 = *(u*)(*(u*)(vn + 16UL) + 56UL);
+ v170 = 0UL;
+ v171 = ((u(*)())(v166))(v167, v168, v169, v170);
+ vv = v171;
+b146: if (!(vv)) goto b175;
+ v184 = 0UL;
+b176: if (!(v184)) goto b171;
+ v183 = 1UL;
+b173: if (!(v183)) goto b169;
+ v186 = (u)zcdie;
+ v187 = vc;
+ v188 = (u)"no such member";
+ v189 = ((u(*)())(v186))(v187, v188);
+ v189;
+b167: *(u*)(vn + 64UL) = *(u*)(vv + 176UL);
+ goto b1;
+b169: goto b167;
+b171: if (!(*(u*)(vv + 168UL))) goto b179;
+ v185 = 0UL;
+b180: if (!(v185)) goto b177;
+ v183 = 1UL;
+ goto b173;
+b177: v183 = 0UL;
+ goto b173;
+b179: v185 = 1UL;
+ goto b180;
+b175: v184 = 1UL;
+ goto b176;
+b151: goto b149;
+b153: v161 = 0UL;
+ goto b155;
+b148: if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 7UL) goto b162;
+ if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 8UL) goto b162;
+ v172 = 1UL;
+b164: if (!(v172)) goto b160;
+ v173 = (u)zcdie;
+ v174 = vc;
+ v175 = (u)"dot not a struct";
+ v176 = ((u(*)())(v173))(v174, v175);
+ v176;
+b158: v177 = (u)zfind;
+ v178 = vc;
+ v179 = *(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 8UL) + 32UL);
+ v180 = *(u*)(*(u*)(vn + 16UL) + 56UL);
+ v181 = 0UL;
+ v182 = ((u(*)())(v177))(v178, v179, v180, v181);
+ vv = v182;
+ goto b146;
+b160: goto b158;
+b162: v172 = 0UL;
+ goto b164;
+b144: if (vkind != 0UL) goto b183;
+ v190 = (u)zfind;
+ v191 = vc;
+ v192 = *(u*)(vn + 56UL);
+ v193 = 0UL;
+ v194 = 0UL;
+ v195 = ((u(*)())(v190))(v191, v192, v193, v194);
+ vv = v195;
+ if (!(vv)) goto b189;
+ if (!(*(u*)(vv + 192UL))) goto b189;
+ v196 = 1UL;
+b191: if (!(v196)) goto b187;
+ v197 = (u)zmktype0;
+ v198 = vc;
+ v199 = 2UL;
+ v200 = ((u(*)())(v197))(v198, v199);
+ *(u*)(vn + 64UL) = v200;
return 0UL;
-b7: goto b5;
-b9: v10 = 0UL;
- goto b11;
-b13: v11 = 1UL;
- goto b14;
-b3: goto b1;
-}
-u zmark_ir_expr(u vc, u vd, u vop) {
- u vv = 0;
- u vkind = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- if (*(u*)(vop + 0UL) != 2UL) goto b3;
- v5 = (u)zfind;
- v6 = vc;
- v7 = *(u*)(vop + 32UL);
- v8 = 0UL;
- v9 = 0UL;
- v10 = ((u(*)())v5)(v6, v7, v8, v9);
- vv = v10;
- if (!vv) goto b13;
- v12 = 0UL;
-b14: if (!v12) goto b9;
- v11 = 1UL;
-b11: if (!v11) goto b7;
+b187: v201 = (u)zfind;
+ v202 = vc;
+ v203 = *(u*)(vd + 32UL);
+ v204 = *(u*)(vn + 56UL);
+ v205 = 0UL;
+ v206 = ((u(*)())(v201))(v202, v203, v204, v205);
+ vv = v206;
+ if (!(vv)) goto b198;
+ if (!(*(u*)(vv + 208UL))) goto b198;
+ v207 = 1UL;
+b200: if (!(v207)) goto b196;
+ *(u*)(vn + 64UL) = *(u*)(vv + 216UL);
return 0UL;
-b7: v14 = (u)zmark_func_used;
- v15 = vc;
- v16 = vd;
- v17 = vv;
- v18 = ((u(*)())v14)(v15, v16, v17);
- v18;
-b1: if (!*(u*)(vop + 8UL)) goto b22;
- v19 = (u)zmark_ir_expr;
- v20 = vc;
- v21 = vd;
- v22 = *(u*)(vop + 8UL);
- v23 = ((u(*)())v19)(v20, v21, v22);
- v23;
-b20: if (!*(u*)(vop + 16UL)) goto b26;
- v24 = (u)zmark_ir_expr;
- v25 = vc;
- v26 = vd;
- v27 = *(u*)(vop + 16UL);
- v28 = ((u(*)())v24)(v25, v26, v27);
- v28;
-b24: return 0UL;
-b26: goto b24;
-b22: goto b20;
-b9: if (!*(u*)(vv + 72UL)) goto b17;
- v13 = 0UL;
-b18: if (!v13) goto b15;
- v11 = 1UL;
- goto b11;
-b15: v11 = 0UL;
- goto b11;
-b17: v13 = 1UL;
- goto b18;
-b13: v12 = 1UL;
- goto b14;
-b3: goto b1;
-}
-u zmark_ir_used(u vc, u vd) {
- u vic = 0;
- u vib = 0;
- u vi = 0;
- u vj = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- vic = *(u*)(vd + 112UL);
- vi = 0UL;
-b1: if (vi != *(u*)(vic + 72UL)) goto b5;
+b196: v208 = (u)zfind;
+ v209 = vc;
+ v210 = *(u*)(vn + 56UL);
+ v211 = 0UL;
+ v212 = 0UL;
+ v213 = ((u(*)())(v208))(v209, v210, v211, v212);
+ vv = v213;
+ if (!(vv)) goto b206;
+ if (!(*(u*)(vv + 72UL))) goto b206;
+ v214 = 1UL;
+b208: if (!(v214)) goto b204;
+ *(u*)(vn + 64UL) = *(u*)(vv + 80UL);
return 0UL;
-b5: vib = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
- vj = 0UL;
-b6: if (vj != *(u*)(vib + 16UL)) goto b10;
- vi = vi + 1UL;
+b204: v215 = (u)zfputs;
+ v216 = 0UL;
+ v217 = *(u*)(vn + 56UL);
+ v218 = ((u(*)())(v215))(v216, v217);
+ v218;
+ v219 = (u)zcdie;
+ v220 = vc;
+ v221 = (u)"no such variable";
+ v222 = ((u(*)())(v219))(v220, v221);
+ v222;
+ goto b1;
+b206: v214 = 0UL;
+ goto b208;
+b198: v207 = 0UL;
+ goto b200;
+b189: v196 = 0UL;
+ goto b191;
+b183: if (vkind != 33UL) goto b212;
+ if (!(vrhs)) goto b217;
+ v223 = 0UL;
+b218: if (!(v223)) goto b215;
+ v224 = (u)zcdie;
+ v225 = vc;
+ v226 = (u)"assign is not an lexpr";
+ v227 = ((u(*)())(v224))(v225, v226);
+ v227;
+b213: v228 = (u)ztypecheck_expr;
+ v229 = vc;
+ v230 = vd;
+ v231 = *(u*)(vn + 16UL);
+ v232 = 1UL;
+ v233 = ((u(*)())(v228))(v229, v230, v231, v232);
+ v233;
+ v234 = (u)ztypecheck_expr;
+ v235 = vc;
+ v236 = vd;
+ v237 = *(u*)(vn + 8UL);
+ v238 = 0UL;
+ v239 = ((u(*)())(v234))(v235, v236, v237, v238);
+ v239;
+ v240 = (u)zunify;
+ v241 = vc;
+ v242 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v243 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v244 = ((u(*)())(v240))(v241, v242, v243);
+ v244;
+ *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b215: goto b213;
+b217: v223 = 1UL;
+ goto b218;
+b212: if (vkind != 34UL) goto b224;
+ if (!(vrhs)) goto b229;
+ v245 = 0UL;
+b230: if (!(v245)) goto b227;
+ v246 = (u)zcdie;
+ v247 = vc;
+ v248 = (u)"sizeof is not an lexpr";
+ v249 = ((u(*)())(v246))(v247, v248);
+ v249;
+b225: v250 = (u)ztypecheck_expr;
+ v251 = vc;
+ v252 = vd;
+ v253 = *(u*)(vn + 8UL);
+ v254 = 0UL;
+ v255 = ((u(*)())(v250))(v251, v252, v253, v254);
+ v255;
+ v256 = (u)zmktype0;
+ v257 = vc;
+ v258 = 2UL;
+ v259 = ((u(*)())(v256))(v257, v258);
+ *(u*)(vn + 64UL) = v259;
+ goto b1;
+b227: goto b225;
+b229: v245 = 1UL;
+ goto b230;
+b224: if (vkind != 35UL) goto b235;
+ if (!(vrhs)) goto b240;
+ v260 = 0UL;
+b241: if (!(v260)) goto b238;
+ v261 = (u)zcdie;
+ v262 = vc;
+ v263 = (u)"ref is not an lexpr";
+ v264 = ((u(*)())(v261))(v262, v263);
+ v264;
+b236: v265 = (u)ztypecheck_expr;
+ v266 = vc;
+ v267 = vd;
+ v268 = *(u*)(vn + 8UL);
+ v269 = 0UL;
+ v270 = ((u(*)())(v265))(v266, v267, v268, v269);
+ v270;
+ v271 = (u)zmktype1;
+ v272 = vc;
+ v273 = 4UL;
+ v274 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v275 = ((u(*)())(v271))(v272, v273, v274);
+ *(u*)(vn + 64UL) = v275;
+ goto b1;
+b238: goto b236;
+b240: v260 = 1UL;
+ goto b241;
+b235: if (vkind != 36UL) goto b246;
+ v276 = (u)ztypecheck_expr;
+ v277 = vc;
+ v278 = vd;
+ v279 = *(u*)(vn + 8UL);
+ v280 = 1UL;
+ v281 = ((u(*)())(v276))(v277, v278, v279, v280);
+ v281;
+ if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 4UL) goto b250;
+ v282 = (u)zcdie;
+ v283 = vc;
+ v284 = (u)"deref not a pointer";
+ v285 = ((u(*)())(v282))(v283, v284);
+ v285;
+b248: *(u*)(vn + 64UL) = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL);
+ goto b1;
+b250: goto b248;
+b246: if (vkind != 38UL) goto b253;
+ v286 = (u)ztypecheck_expr;
+ v287 = vc;
+ v288 = vd;
+ v289 = *(u*)(vn + 8UL);
+ v290 = 1UL;
+ v291 = ((u(*)())(v286))(v287, v288, v289, v290);
+ v291;
+ v292 = (u)ztypecheck_expr;
+ v293 = vc;
+ v294 = vd;
+ v295 = *(u*)(vn + 16UL);
+ v296 = 1UL;
+ v297 = ((u(*)())(v292))(v293, v294, v295, v296);
+ v297;
+ if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 4UL) goto b258;
+ v298 = (u)zcdie;
+ v299 = vc;
+ v300 = (u)"not a pointer";
+ v301 = ((u(*)())(v298))(v299, v300);
+ v301;
+b256: v303 = (u)ztype_isint;
+ v304 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v305 = ((u(*)())(v303))(v304);
+ if (!(v305)) goto b264;
+ v302 = 0UL;
+b265: if (!(v302)) goto b262;
+ v306 = (u)zcdie;
+ v307 = vc;
+ v308 = (u)"index: not an int";
+ v309 = ((u(*)())(v306))(v307, v308);
+ v309;
+b260: *(u*)(vn + 64UL) = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL);
+ goto b1;
+b262: goto b260;
+b264: v302 = 1UL;
+ goto b265;
+b258: goto b256;
+b253: if (vkind != 39UL) goto b269;
+ if (!(vrhs)) goto b274;
+ v310 = 0UL;
+b275: if (!(v310)) goto b272;
+ v311 = (u)zcdie;
+ v312 = vc;
+ v313 = (u)"not lexpr";
+ v314 = ((u(*)())(v311))(v312, v313);
+ v314;
+b270: v315 = (u)ztypecheck_expr;
+ v316 = vc;
+ v317 = vd;
+ v318 = *(u*)(vn + 16UL);
+ v319 = 1UL;
+ v320 = ((u(*)())(v315))(v316, v317, v318, v319);
+ v320;
+ v321 = (u)ztypecheck_expr;
+ v322 = vc;
+ v323 = vd;
+ v324 = *(u*)(vn + 8UL);
+ v325 = 1UL;
+ v326 = ((u(*)())(v321))(v322, v323, v324, v325);
+ v326;
+ v327 = (u)zunify;
+ v328 = vc;
+ v329 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v330 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v331 = ((u(*)())(v327))(v328, v329, v330);
+ v331;
+ v333 = (u)ztype_isprim;
+ v334 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v335 = ((u(*)())(v333))(v334);
+ if (!(v335)) goto b284;
+ v332 = 0UL;
+b285: if (!(v332)) goto b282;
+ v336 = (u)zcdie;
+ v337 = vc;
+ v338 = (u)"lt: not an int";
+ v339 = ((u(*)())(v336))(v337, v338);
+ v339;
+b280: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b282: goto b280;
+b284: v332 = 1UL;
+ goto b285;
+b272: goto b270;
+b274: v310 = 1UL;
+ goto b275;
+b269: if (vkind != 40UL) goto b289;
+ if (!(vrhs)) goto b294;
+ v340 = 0UL;
+b295: if (!(v340)) goto b292;
+ v341 = (u)zcdie;
+ v342 = vc;
+ v343 = (u)"not lexpr";
+ v344 = ((u(*)())(v341))(v342, v343);
+ v344;
+b290: v345 = (u)ztypecheck_expr;
+ v346 = vc;
+ v347 = vd;
+ v348 = *(u*)(vn + 16UL);
+ v349 = 1UL;
+ v350 = ((u(*)())(v345))(v346, v347, v348, v349);
+ v350;
+ v351 = (u)ztypecheck_expr;
+ v352 = vc;
+ v353 = vd;
+ v354 = *(u*)(vn + 8UL);
+ v355 = 1UL;
+ v356 = ((u(*)())(v351))(v352, v353, v354, v355);
+ v356;
+ v357 = (u)zunify;
+ v358 = vc;
+ v359 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v360 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v361 = ((u(*)())(v357))(v358, v359, v360);
+ v361;
+ v363 = (u)ztype_isprim;
+ v364 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v365 = ((u(*)())(v363))(v364);
+ if (!(v365)) goto b304;
+ v362 = 0UL;
+b305: if (!(v362)) goto b302;
+ v366 = (u)zcdie;
+ v367 = vc;
+ v368 = (u)"gt: not an int";
+ v369 = ((u(*)())(v366))(v367, v368);
+ v369;
+b300: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b302: goto b300;
+b304: v362 = 1UL;
+ goto b305;
+b292: goto b290;
+b294: v340 = 1UL;
+ goto b295;
+b289: if (vkind != 41UL) goto b309;
+ if (!(vrhs)) goto b314;
+ v370 = 0UL;
+b315: if (!(v370)) goto b312;
+ v371 = (u)zcdie;
+ v372 = vc;
+ v373 = (u)"not lexpr";
+ v374 = ((u(*)())(v371))(v372, v373);
+ v374;
+b310: v375 = (u)ztypecheck_expr;
+ v376 = vc;
+ v377 = vd;
+ v378 = *(u*)(vn + 16UL);
+ v379 = 1UL;
+ v380 = ((u(*)())(v375))(v376, v377, v378, v379);
+ v380;
+ v381 = (u)ztypecheck_expr;
+ v382 = vc;
+ v383 = vd;
+ v384 = *(u*)(vn + 8UL);
+ v385 = 1UL;
+ v386 = ((u(*)())(v381))(v382, v383, v384, v385);
+ v386;
+ v387 = (u)zunify;
+ v388 = vc;
+ v389 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v390 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v391 = ((u(*)())(v387))(v388, v389, v390);
+ v391;
+ v393 = (u)ztype_isprim;
+ v394 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v395 = ((u(*)())(v393))(v394);
+ if (!(v395)) goto b324;
+ v392 = 0UL;
+b325: if (!(v392)) goto b322;
+ v396 = (u)zcdie;
+ v397 = vc;
+ v398 = (u)"le: not an int";
+ v399 = ((u(*)())(v396))(v397, v398);
+ v399;
+b320: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b322: goto b320;
+b324: v392 = 1UL;
+ goto b325;
+b312: goto b310;
+b314: v370 = 1UL;
+ goto b315;
+b309: if (vkind != 42UL) goto b329;
+ if (!(vrhs)) goto b334;
+ v400 = 0UL;
+b335: if (!(v400)) goto b332;
+ v401 = (u)zcdie;
+ v402 = vc;
+ v403 = (u)"not lexpr";
+ v404 = ((u(*)())(v401))(v402, v403);
+ v404;
+b330: v405 = (u)ztypecheck_expr;
+ v406 = vc;
+ v407 = vd;
+ v408 = *(u*)(vn + 16UL);
+ v409 = 1UL;
+ v410 = ((u(*)())(v405))(v406, v407, v408, v409);
+ v410;
+ v411 = (u)ztypecheck_expr;
+ v412 = vc;
+ v413 = vd;
+ v414 = *(u*)(vn + 8UL);
+ v415 = 1UL;
+ v416 = ((u(*)())(v411))(v412, v413, v414, v415);
+ v416;
+ v417 = (u)zunify;
+ v418 = vc;
+ v419 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v420 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v421 = ((u(*)())(v417))(v418, v419, v420);
+ v421;
+ v423 = (u)ztype_isprim;
+ v424 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v425 = ((u(*)())(v423))(v424);
+ if (!(v425)) goto b344;
+ v422 = 0UL;
+b345: if (!(v422)) goto b342;
+ v426 = (u)zcdie;
+ v427 = vc;
+ v428 = (u)"ge: not an int";
+ v429 = ((u(*)())(v426))(v427, v428);
+ v429;
+b340: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b342: goto b340;
+b344: v422 = 1UL;
+ goto b345;
+b332: goto b330;
+b334: v400 = 1UL;
+ goto b335;
+b329: if (vkind != 43UL) goto b349;
+ if (!(vrhs)) goto b354;
+ v430 = 0UL;
+b355: if (!(v430)) goto b352;
+ v431 = (u)zcdie;
+ v432 = vc;
+ v433 = (u)"not lexpr";
+ v434 = ((u(*)())(v431))(v432, v433);
+ v434;
+b350: v435 = (u)ztypecheck_expr;
+ v436 = vc;
+ v437 = vd;
+ v438 = *(u*)(vn + 16UL);
+ v439 = 1UL;
+ v440 = ((u(*)())(v435))(v436, v437, v438, v439);
+ v440;
+ v441 = (u)ztypecheck_expr;
+ v442 = vc;
+ v443 = vd;
+ v444 = *(u*)(vn + 8UL);
+ v445 = 1UL;
+ v446 = ((u(*)())(v441))(v442, v443, v444, v445);
+ v446;
+ v447 = (u)zunify;
+ v448 = vc;
+ v449 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v450 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v451 = ((u(*)())(v447))(v448, v449, v450);
+ v451;
+ v453 = (u)ztype_isprim;
+ v454 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v455 = ((u(*)())(v453))(v454);
+ if (!(v455)) goto b364;
+ v452 = 0UL;
+b365: if (!(v452)) goto b362;
+ v456 = (u)zcdie;
+ v457 = vc;
+ v458 = (u)"eq: not an int";
+ v459 = ((u(*)())(v456))(v457, v458);
+ v459;
+b360: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b362: goto b360;
+b364: v452 = 1UL;
+ goto b365;
+b352: goto b350;
+b354: v430 = 1UL;
+ goto b355;
+b349: if (vkind != 44UL) goto b369;
+ if (!(vrhs)) goto b374;
+ v460 = 0UL;
+b375: if (!(v460)) goto b372;
+ v461 = (u)zcdie;
+ v462 = vc;
+ v463 = (u)"not lexpr";
+ v464 = ((u(*)())(v461))(v462, v463);
+ v464;
+b370: v465 = (u)ztypecheck_expr;
+ v466 = vc;
+ v467 = vd;
+ v468 = *(u*)(vn + 16UL);
+ v469 = 1UL;
+ v470 = ((u(*)())(v465))(v466, v467, v468, v469);
+ v470;
+ v471 = (u)ztypecheck_expr;
+ v472 = vc;
+ v473 = vd;
+ v474 = *(u*)(vn + 8UL);
+ v475 = 1UL;
+ v476 = ((u(*)())(v471))(v472, v473, v474, v475);
+ v476;
+ v477 = (u)zunify;
+ v478 = vc;
+ v479 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v480 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v481 = ((u(*)())(v477))(v478, v479, v480);
+ v481;
+ v483 = (u)ztype_isprim;
+ v484 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v485 = ((u(*)())(v483))(v484);
+ if (!(v485)) goto b384;
+ v482 = 0UL;
+b385: if (!(v482)) goto b382;
+ v486 = (u)zcdie;
+ v487 = vc;
+ v488 = (u)"ne: not an int";
+ v489 = ((u(*)())(v486))(v487, v488);
+ v489;
+b380: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b382: goto b380;
+b384: v482 = 1UL;
+ goto b385;
+b372: goto b370;
+b374: v460 = 1UL;
+ goto b375;
+b369: if (vkind != 50UL) goto b389;
+ if (!(vrhs)) goto b394;
+ v490 = 0UL;
+b395: if (!(v490)) goto b392;
+ v491 = (u)zcdie;
+ v492 = vc;
+ v493 = (u)"not lexpr";
+ v494 = ((u(*)())(v491))(v492, v493);
+ v494;
+b390: v495 = (u)ztypecheck_expr;
+ v496 = vc;
+ v497 = vd;
+ v498 = *(u*)(vn + 8UL);
+ v499 = 1UL;
+ v500 = ((u(*)())(v495))(v496, v497, v498, v499);
+ v500;
+ v502 = (u)ztype_isprim;
+ v503 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v504 = ((u(*)())(v502))(v503);
+ if (!(v504)) goto b402;
+ v501 = 0UL;
+b403: if (!(v501)) goto b400;
+ v505 = (u)zcdie;
+ v506 = vc;
+ v507 = (u)"not an prim";
+ v508 = ((u(*)())(v505))(v506, v507);
+ v508;
+b398: v509 = (u)zmktype0;
+ v510 = vc;
+ v511 = 2UL;
+ v512 = ((u(*)())(v509))(v510, v511);
+ *(u*)(vn + 64UL) = v512;
+ goto b1;
+b400: goto b398;
+b402: v501 = 1UL;
+ goto b403;
+b392: goto b390;
+b394: v490 = 1UL;
+ goto b395;
+b389: if (vkind != 51UL) goto b408;
+ if (!(vrhs)) goto b413;
+ v513 = 0UL;
+b414: if (!(v513)) goto b411;
+ v514 = (u)zcdie;
+ v515 = vc;
+ v516 = (u)"not lexpr";
+ v517 = ((u(*)())(v514))(v515, v516);
+ v517;
+b409: v518 = (u)ztypecheck_expr;
+ v519 = vc;
+ v520 = vd;
+ v521 = *(u*)(vn + 8UL);
+ v522 = 1UL;
+ v523 = ((u(*)())(v518))(v519, v520, v521, v522);
+ v523;
+ v524 = (u)ztypecheck_expr;
+ v525 = vc;
+ v526 = vd;
+ v527 = *(u*)(vn + 16UL);
+ v528 = 1UL;
+ v529 = ((u(*)())(v524))(v525, v526, v527, v528);
+ v529;
+ v531 = (u)ztype_isprim;
+ v532 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v533 = ((u(*)())(v531))(v532);
+ if (!(v533)) goto b422;
+ v530 = 0UL;
+b423: if (!(v530)) goto b420;
+ v534 = (u)zcdie;
+ v535 = vc;
+ v536 = (u)"not an prim";
+ v537 = ((u(*)())(v534))(v535, v536);
+ v537;
+b418: v539 = (u)ztype_isprim;
+ v540 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v541 = ((u(*)())(v539))(v540);
+ if (!(v541)) goto b430;
+ v538 = 0UL;
+b431: if (!(v538)) goto b428;
+ v542 = (u)zcdie;
+ v543 = vc;
+ v544 = (u)"not an prim";
+ v545 = ((u(*)())(v542))(v543, v544);
+ v545;
+b426: v546 = (u)zmktype0;
+ v547 = vc;
+ v548 = 2UL;
+ v549 = ((u(*)())(v546))(v547, v548);
+ *(u*)(vn + 64UL) = v549;
+ goto b1;
+b428: goto b426;
+b430: v538 = 1UL;
+ goto b431;
+b420: goto b418;
+b422: v530 = 1UL;
+ goto b423;
+b411: goto b409;
+b413: v513 = 1UL;
+ goto b414;
+b408: if (vkind != 52UL) goto b436;
+ if (!(vrhs)) goto b441;
+ v550 = 0UL;
+b442: if (!(v550)) goto b439;
+ v551 = (u)zcdie;
+ v552 = vc;
+ v553 = (u)"not lexpr";
+ v554 = ((u(*)())(v551))(v552, v553);
+ v554;
+b437: v555 = (u)ztypecheck_expr;
+ v556 = vc;
+ v557 = vd;
+ v558 = *(u*)(vn + 8UL);
+ v559 = 1UL;
+ v560 = ((u(*)())(v555))(v556, v557, v558, v559);
+ v560;
+ v561 = (u)ztypecheck_expr;
+ v562 = vc;
+ v563 = vd;
+ v564 = *(u*)(vn + 16UL);
+ v565 = 1UL;
+ v566 = ((u(*)())(v561))(v562, v563, v564, v565);
+ v566;
+ v568 = (u)ztype_isprim;
+ v569 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v570 = ((u(*)())(v568))(v569);
+ if (!(v570)) goto b450;
+ v567 = 0UL;
+b451: if (!(v567)) goto b448;
+ v571 = (u)zcdie;
+ v572 = vc;
+ v573 = (u)"not an prim";
+ v574 = ((u(*)())(v571))(v572, v573);
+ v574;
+b446: v576 = (u)ztype_isprim;
+ v577 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v578 = ((u(*)())(v576))(v577);
+ if (!(v578)) goto b458;
+ v575 = 0UL;
+b459: if (!(v575)) goto b456;
+ v579 = (u)zcdie;
+ v580 = vc;
+ v581 = (u)"not an prim";
+ v582 = ((u(*)())(v579))(v580, v581);
+ v582;
+b454: v583 = (u)zmktype0;
+ v584 = vc;
+ v585 = 2UL;
+ v586 = ((u(*)())(v583))(v584, v585);
+ *(u*)(vn + 64UL) = v586;
+ goto b1;
+b456: goto b454;
+b458: v575 = 1UL;
+ goto b459;
+b448: goto b446;
+b450: v567 = 1UL;
+ goto b451;
+b439: goto b437;
+b441: v550 = 1UL;
+ goto b442;
+b436: if (vkind != 57UL) goto b464;
+ if (!(vrhs)) goto b469;
+ v587 = 0UL;
+b470: if (!(v587)) goto b467;
+ v588 = (u)zcdie;
+ v589 = vc;
+ v590 = (u)"not lexpr";
+ v591 = ((u(*)())(v588))(v589, v590);
+ v591;
+b465: v592 = (u)ztypecheck_expr;
+ v593 = vc;
+ v594 = vd;
+ v595 = *(u*)(vn + 8UL);
+ v596 = 1UL;
+ v597 = ((u(*)())(v592))(v593, v594, v595, v596);
+ v597;
+ v599 = (u)ztype_isint;
+ v600 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v601 = ((u(*)())(v599))(v600);
+ if (!(v601)) goto b477;
+ v598 = 0UL;
+b478: if (!(v598)) goto b475;
+ v602 = (u)zcdie;
+ v603 = vc;
+ v604 = (u)"pos: not an int";
+ v605 = ((u(*)())(v602))(v603, v604);
+ v605;
+b473: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b475: goto b473;
+b477: v598 = 1UL;
+ goto b478;
+b467: goto b465;
+b469: v587 = 1UL;
+ goto b470;
+b464: if (vkind != 58UL) goto b482;
+ if (!(vrhs)) goto b487;
+ v606 = 0UL;
+b488: if (!(v606)) goto b485;
+ v607 = (u)zcdie;
+ v608 = vc;
+ v609 = (u)"not lexpr";
+ v610 = ((u(*)())(v607))(v608, v609);
+ v610;
+b483: v611 = (u)ztypecheck_expr;
+ v612 = vc;
+ v613 = vd;
+ v614 = *(u*)(vn + 8UL);
+ v615 = 1UL;
+ v616 = ((u(*)())(v611))(v612, v613, v614, v615);
+ v616;
+ v618 = (u)ztype_isint;
+ v619 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v620 = ((u(*)())(v618))(v619);
+ if (!(v620)) goto b495;
+ v617 = 0UL;
+b496: if (!(v617)) goto b493;
+ v621 = (u)zcdie;
+ v622 = vc;
+ v623 = (u)"neg: not an int";
+ v624 = ((u(*)())(v621))(v622, v623);
+ v624;
+b491: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b493: goto b491;
+b495: v617 = 1UL;
+ goto b496;
+b485: goto b483;
+b487: v606 = 1UL;
+ goto b488;
+b482: if (vkind != 56UL) goto b500;
+ if (!(vrhs)) goto b505;
+ v625 = 0UL;
+b506: if (!(v625)) goto b503;
+ v626 = (u)zcdie;
+ v627 = vc;
+ v628 = (u)"not lexpr";
+ v629 = ((u(*)())(v626))(v627, v628);
+ v629;
+b501: v630 = (u)ztypecheck_expr;
+ v631 = vc;
+ v632 = vd;
+ v633 = *(u*)(vn + 8UL);
+ v634 = 1UL;
+ v635 = ((u(*)())(v630))(v631, v632, v633, v634);
+ v635;
+ v637 = (u)ztype_isint;
+ v638 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v639 = ((u(*)())(v637))(v638);
+ if (!(v639)) goto b513;
+ v636 = 0UL;
+b514: if (!(v636)) goto b511;
+ v640 = (u)zcdie;
+ v641 = vc;
+ v642 = (u)"not: not an int";
+ v643 = ((u(*)())(v640))(v641, v642);
+ v643;
+b509: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b511: goto b509;
+b513: v636 = 1UL;
+ goto b514;
+b503: goto b501;
+b505: v625 = 1UL;
+ goto b506;
+b500: if (vkind != 45UL) goto b518;
+ if (!(vrhs)) goto b523;
+ v644 = 0UL;
+b524: if (!(v644)) goto b521;
+ v645 = (u)zcdie;
+ v646 = vc;
+ v647 = (u)"not lexpr";
+ v648 = ((u(*)())(v645))(v646, v647);
+ v648;
+b519: v649 = (u)ztypecheck_expr;
+ v650 = vc;
+ v651 = vd;
+ v652 = *(u*)(vn + 16UL);
+ v653 = 1UL;
+ v654 = ((u(*)())(v649))(v650, v651, v652, v653);
+ v654;
+ v655 = (u)ztypecheck_expr;
+ v656 = vc;
+ v657 = vd;
+ v658 = *(u*)(vn + 8UL);
+ v659 = 1UL;
+ v660 = ((u(*)())(v655))(v656, v657, v658, v659);
+ v660;
+ v661 = (u)zunify;
+ v662 = vc;
+ v663 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v664 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v665 = ((u(*)())(v661))(v662, v663, v664);
+ v665;
+ v667 = (u)ztype_isint;
+ v668 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v669 = ((u(*)())(v667))(v668);
+ if (!(v669)) goto b533;
+ v666 = 0UL;
+b534: if (!(v666)) goto b531;
+ v670 = (u)zcdie;
+ v671 = vc;
+ v672 = (u)"add: not an int";
+ v673 = ((u(*)())(v670))(v671, v672);
+ v673;
+b529: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
goto b1;
-b10: v6 = (u)zmark_ir_expr;
- v7 = vc;
- v8 = vd;
- v9 = *(u*)(*(u*)(vib + 8UL) + vj * 8UL);
- v10 = ((u(*)())v6)(v7, v8, v9);
- v10;
- vj = vj + 1UL;
- goto b6;
-}
-u zmemcmp(u va, u vb, u vn) {
- u vi = 0;
- vi = 0UL;
-b1: if (vi != vn) goto b5;
- return 0UL;
-b5: if ((s)(u)*(b*)(va + vi * 1UL) <= (s)(u)*(b*)(vb + vi * 1UL)) goto b8;
- return 1UL;
-b8: if ((s)(u)*(b*)(va + vi * 1UL) >= (s)(u)*(b*)(vb + vi * 1UL)) goto b11;
- return -1UL;
-b11: vi = vi + 1UL;
+b531: goto b529;
+b533: v666 = 1UL;
+ goto b534;
+b521: goto b519;
+b523: v644 = 1UL;
+ goto b524;
+b518: if (vkind != 46UL) goto b538;
+ if (!(vrhs)) goto b543;
+ v674 = 0UL;
+b544: if (!(v674)) goto b541;
+ v675 = (u)zcdie;
+ v676 = vc;
+ v677 = (u)"not lexpr";
+ v678 = ((u(*)())(v675))(v676, v677);
+ v678;
+b539: v679 = (u)ztypecheck_expr;
+ v680 = vc;
+ v681 = vd;
+ v682 = *(u*)(vn + 16UL);
+ v683 = 1UL;
+ v684 = ((u(*)())(v679))(v680, v681, v682, v683);
+ v684;
+ v685 = (u)ztypecheck_expr;
+ v686 = vc;
+ v687 = vd;
+ v688 = *(u*)(vn + 8UL);
+ v689 = 1UL;
+ v690 = ((u(*)())(v685))(v686, v687, v688, v689);
+ v690;
+ v691 = (u)zunify;
+ v692 = vc;
+ v693 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v694 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v695 = ((u(*)())(v691))(v692, v693, v694);
+ v695;
+ v697 = (u)ztype_isint;
+ v698 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v699 = ((u(*)())(v697))(v698);
+ if (!(v699)) goto b553;
+ v696 = 0UL;
+b554: if (!(v696)) goto b551;
+ v700 = (u)zcdie;
+ v701 = vc;
+ v702 = (u)"sub: not an int";
+ v703 = ((u(*)())(v700))(v701, v702);
+ v703;
+b549: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b551: goto b549;
+b553: v696 = 1UL;
+ goto b554;
+b541: goto b539;
+b543: v674 = 1UL;
+ goto b544;
+b538: if (vkind != 47UL) goto b558;
+ if (!(vrhs)) goto b563;
+ v704 = 0UL;
+b564: if (!(v704)) goto b561;
+ v705 = (u)zcdie;
+ v706 = vc;
+ v707 = (u)"not lexpr";
+ v708 = ((u(*)())(v705))(v706, v707);
+ v708;
+b559: v709 = (u)ztypecheck_expr;
+ v710 = vc;
+ v711 = vd;
+ v712 = *(u*)(vn + 16UL);
+ v713 = 1UL;
+ v714 = ((u(*)())(v709))(v710, v711, v712, v713);
+ v714;
+ v715 = (u)ztypecheck_expr;
+ v716 = vc;
+ v717 = vd;
+ v718 = *(u*)(vn + 8UL);
+ v719 = 1UL;
+ v720 = ((u(*)())(v715))(v716, v717, v718, v719);
+ v720;
+ v721 = (u)zunify;
+ v722 = vc;
+ v723 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v724 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v725 = ((u(*)())(v721))(v722, v723, v724);
+ v725;
+ v727 = (u)ztype_isint;
+ v728 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v729 = ((u(*)())(v727))(v728);
+ if (!(v729)) goto b573;
+ v726 = 0UL;
+b574: if (!(v726)) goto b571;
+ v730 = (u)zcdie;
+ v731 = vc;
+ v732 = (u)"mul: not an int";
+ v733 = ((u(*)())(v730))(v731, v732);
+ v733;
+b569: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b571: goto b569;
+b573: v726 = 1UL;
+ goto b574;
+b561: goto b559;
+b563: v704 = 1UL;
+ goto b564;
+b558: if (vkind != 59UL) goto b578;
+ if (!(vrhs)) goto b583;
+ v734 = 0UL;
+b584: if (!(v734)) goto b581;
+ v735 = (u)zcdie;
+ v736 = vc;
+ v737 = (u)"not lexpr";
+ v738 = ((u(*)())(v735))(v736, v737);
+ v738;
+b579: v739 = (u)ztypecheck_expr;
+ v740 = vc;
+ v741 = vd;
+ v742 = *(u*)(vn + 16UL);
+ v743 = 1UL;
+ v744 = ((u(*)())(v739))(v740, v741, v742, v743);
+ v744;
+ v745 = (u)ztypecheck_expr;
+ v746 = vc;
+ v747 = vd;
+ v748 = *(u*)(vn + 8UL);
+ v749 = 1UL;
+ v750 = ((u(*)())(v745))(v746, v747, v748, v749);
+ v750;
+ v751 = (u)zunify;
+ v752 = vc;
+ v753 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v754 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v755 = ((u(*)())(v751))(v752, v753, v754);
+ v755;
+ v757 = (u)ztype_isint;
+ v758 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v759 = ((u(*)())(v757))(v758);
+ if (!(v759)) goto b593;
+ v756 = 0UL;
+b594: if (!(v756)) goto b591;
+ v760 = (u)zcdie;
+ v761 = vc;
+ v762 = (u)"div: not an int";
+ v763 = ((u(*)())(v760))(v761, v762);
+ v763;
+b589: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b591: goto b589;
+b593: v756 = 1UL;
+ goto b594;
+b581: goto b579;
+b583: v734 = 1UL;
+ goto b584;
+b578: if (vkind != 60UL) goto b598;
+ if (!(vrhs)) goto b603;
+ v764 = 0UL;
+b604: if (!(v764)) goto b601;
+ v765 = (u)zcdie;
+ v766 = vc;
+ v767 = (u)"not lexpr";
+ v768 = ((u(*)())(v765))(v766, v767);
+ v768;
+b599: v769 = (u)ztypecheck_expr;
+ v770 = vc;
+ v771 = vd;
+ v772 = *(u*)(vn + 16UL);
+ v773 = 1UL;
+ v774 = ((u(*)())(v769))(v770, v771, v772, v773);
+ v774;
+ v775 = (u)ztypecheck_expr;
+ v776 = vc;
+ v777 = vd;
+ v778 = *(u*)(vn + 8UL);
+ v779 = 1UL;
+ v780 = ((u(*)())(v775))(v776, v777, v778, v779);
+ v780;
+ v781 = (u)zunify;
+ v782 = vc;
+ v783 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v784 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v785 = ((u(*)())(v781))(v782, v783, v784);
+ v785;
+ v787 = (u)ztype_isint;
+ v788 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v789 = ((u(*)())(v787))(v788);
+ if (!(v789)) goto b613;
+ v786 = 0UL;
+b614: if (!(v786)) goto b611;
+ v790 = (u)zcdie;
+ v791 = vc;
+ v792 = (u)"mod: not an int";
+ v793 = ((u(*)())(v790))(v791, v792);
+ v793;
+b609: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b611: goto b609;
+b613: v786 = 1UL;
+ goto b614;
+b601: goto b599;
+b603: v764 = 1UL;
+ goto b604;
+b598: if (vkind != 48UL) goto b618;
+ if (!(vrhs)) goto b623;
+ v794 = 0UL;
+b624: if (!(v794)) goto b621;
+ v795 = (u)zcdie;
+ v796 = vc;
+ v797 = (u)"not lexpr";
+ v798 = ((u(*)())(v795))(v796, v797);
+ v798;
+b619: v799 = (u)ztypecheck_expr;
+ v800 = vc;
+ v801 = vd;
+ v802 = *(u*)(vn + 16UL);
+ v803 = 1UL;
+ v804 = ((u(*)())(v799))(v800, v801, v802, v803);
+ v804;
+ v805 = (u)ztypecheck_expr;
+ v806 = vc;
+ v807 = vd;
+ v808 = *(u*)(vn + 8UL);
+ v809 = 1UL;
+ v810 = ((u(*)())(v805))(v806, v807, v808, v809);
+ v810;
+ v811 = (u)zunify;
+ v812 = vc;
+ v813 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v814 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v815 = ((u(*)())(v811))(v812, v813, v814);
+ v815;
+ v817 = (u)ztype_isint;
+ v818 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v819 = ((u(*)())(v817))(v818);
+ if (!(v819)) goto b633;
+ v816 = 0UL;
+b634: if (!(v816)) goto b631;
+ v820 = (u)zcdie;
+ v821 = vc;
+ v822 = (u)"lsh: not an int";
+ v823 = ((u(*)())(v820))(v821, v822);
+ v823;
+b629: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b631: goto b629;
+b633: v816 = 1UL;
+ goto b634;
+b621: goto b619;
+b623: v794 = 1UL;
+ goto b624;
+b618: if (vkind != 49UL) goto b638;
+ if (!(vrhs)) goto b643;
+ v824 = 0UL;
+b644: if (!(v824)) goto b641;
+ v825 = (u)zcdie;
+ v826 = vc;
+ v827 = (u)"not lexpr";
+ v828 = ((u(*)())(v825))(v826, v827);
+ v828;
+b639: v829 = (u)ztypecheck_expr;
+ v830 = vc;
+ v831 = vd;
+ v832 = *(u*)(vn + 16UL);
+ v833 = 1UL;
+ v834 = ((u(*)())(v829))(v830, v831, v832, v833);
+ v834;
+ v835 = (u)ztypecheck_expr;
+ v836 = vc;
+ v837 = vd;
+ v838 = *(u*)(vn + 8UL);
+ v839 = 1UL;
+ v840 = ((u(*)())(v835))(v836, v837, v838, v839);
+ v840;
+ v841 = (u)zunify;
+ v842 = vc;
+ v843 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v844 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v845 = ((u(*)())(v841))(v842, v843, v844);
+ v845;
+ v847 = (u)ztype_isint;
+ v848 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v849 = ((u(*)())(v847))(v848);
+ if (!(v849)) goto b653;
+ v846 = 0UL;
+b654: if (!(v846)) goto b651;
+ v850 = (u)zcdie;
+ v851 = vc;
+ v852 = (u)"rsh: not an int";
+ v853 = ((u(*)())(v850))(v851, v852);
+ v853;
+b649: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b651: goto b649;
+b653: v846 = 1UL;
+ goto b654;
+b641: goto b639;
+b643: v824 = 1UL;
+ goto b644;
+b638: if (vkind != 53UL) goto b658;
+ if (!(vrhs)) goto b663;
+ v854 = 0UL;
+b664: if (!(v854)) goto b661;
+ v855 = (u)zcdie;
+ v856 = vc;
+ v857 = (u)"not lexpr";
+ v858 = ((u(*)())(v855))(v856, v857);
+ v858;
+b659: v859 = (u)ztypecheck_expr;
+ v860 = vc;
+ v861 = vd;
+ v862 = *(u*)(vn + 16UL);
+ v863 = 1UL;
+ v864 = ((u(*)())(v859))(v860, v861, v862, v863);
+ v864;
+ v865 = (u)ztypecheck_expr;
+ v866 = vc;
+ v867 = vd;
+ v868 = *(u*)(vn + 8UL);
+ v869 = 1UL;
+ v870 = ((u(*)())(v865))(v866, v867, v868, v869);
+ v870;
+ v871 = (u)zunify;
+ v872 = vc;
+ v873 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v874 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v875 = ((u(*)())(v871))(v872, v873, v874);
+ v875;
+ v877 = (u)ztype_isint;
+ v878 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v879 = ((u(*)())(v877))(v878);
+ if (!(v879)) goto b673;
+ v876 = 0UL;
+b674: if (!(v876)) goto b671;
+ v880 = (u)zcdie;
+ v881 = vc;
+ v882 = (u)"and: not an int";
+ v883 = ((u(*)())(v880))(v881, v882);
+ v883;
+b669: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b671: goto b669;
+b673: v876 = 1UL;
+ goto b674;
+b661: goto b659;
+b663: v854 = 1UL;
+ goto b664;
+b658: if (vkind != 54UL) goto b678;
+ if (!(vrhs)) goto b683;
+ v884 = 0UL;
+b684: if (!(v884)) goto b681;
+ v885 = (u)zcdie;
+ v886 = vc;
+ v887 = (u)"not lexpr";
+ v888 = ((u(*)())(v885))(v886, v887);
+ v888;
+b679: v889 = (u)ztypecheck_expr;
+ v890 = vc;
+ v891 = vd;
+ v892 = *(u*)(vn + 16UL);
+ v893 = 1UL;
+ v894 = ((u(*)())(v889))(v890, v891, v892, v893);
+ v894;
+ v895 = (u)ztypecheck_expr;
+ v896 = vc;
+ v897 = vd;
+ v898 = *(u*)(vn + 8UL);
+ v899 = 1UL;
+ v900 = ((u(*)())(v895))(v896, v897, v898, v899);
+ v900;
+ v901 = (u)zunify;
+ v902 = vc;
+ v903 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v904 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v905 = ((u(*)())(v901))(v902, v903, v904);
+ v905;
+ v907 = (u)ztype_isint;
+ v908 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v909 = ((u(*)())(v907))(v908);
+ if (!(v909)) goto b693;
+ v906 = 0UL;
+b694: if (!(v906)) goto b691;
+ v910 = (u)zcdie;
+ v911 = vc;
+ v912 = (u)"or: not an int";
+ v913 = ((u(*)())(v910))(v911, v912);
+ v913;
+b689: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b691: goto b689;
+b693: v906 = 1UL;
+ goto b694;
+b681: goto b679;
+b683: v884 = 1UL;
+ goto b684;
+b678: if (vkind != 55UL) goto b698;
+ if (!(vrhs)) goto b703;
+ v914 = 0UL;
+b704: if (!(v914)) goto b701;
+ v915 = (u)zcdie;
+ v916 = vc;
+ v917 = (u)"not lexpr";
+ v918 = ((u(*)())(v915))(v916, v917);
+ v918;
+b699: v919 = (u)ztypecheck_expr;
+ v920 = vc;
+ v921 = vd;
+ v922 = *(u*)(vn + 16UL);
+ v923 = 1UL;
+ v924 = ((u(*)())(v919))(v920, v921, v922, v923);
+ v924;
+ v925 = (u)ztypecheck_expr;
+ v926 = vc;
+ v927 = vd;
+ v928 = *(u*)(vn + 8UL);
+ v929 = 1UL;
+ v930 = ((u(*)())(v925))(v926, v927, v928, v929);
+ v930;
+ v931 = (u)zunify;
+ v932 = vc;
+ v933 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v934 = *(u*)(*(u*)(vn + 16UL) + 64UL);
+ v935 = ((u(*)())(v931))(v932, v933, v934);
+ v935;
+ v937 = (u)ztype_isint;
+ v938 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v939 = ((u(*)())(v937))(v938);
+ if (!(v939)) goto b713;
+ v936 = 0UL;
+b714: if (!(v936)) goto b711;
+ v940 = (u)zcdie;
+ v941 = vc;
+ v942 = (u)"xor: not an int";
+ v943 = ((u(*)())(v940))(v941, v942);
+ v943;
+b709: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ goto b1;
+b711: goto b709;
+b713: v936 = 1UL;
+ goto b714;
+b701: goto b699;
+b703: v914 = 1UL;
+ goto b704;
+b698: if (vkind != 37UL) goto b718;
+ if (!(vrhs)) goto b723;
+ v944 = 0UL;
+b724: if (!(v944)) goto b721;
+ v945 = (u)zcdie;
+ v946 = vc;
+ v947 = (u)"not lexpr";
+ v948 = ((u(*)())(v945))(v946, v947);
+ v948;
+b719: v949 = (u)ztypecheck_expr;
+ v950 = vc;
+ v951 = vd;
+ v952 = *(u*)(vn + 8UL);
+ v953 = 1UL;
+ v954 = ((u(*)())(v949))(v950, v951, v952, v953);
+ v954;
+ v956 = (u)ztype_isprim;
+ v957 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v958 = ((u(*)())(v956))(v957);
+ if (!(v958)) goto b731;
+ v955 = 0UL;
+b732: if (!(v955)) goto b729;
+ v959 = (u)zcdie;
+ v960 = vc;
+ v961 = (u)"not a primitive";
+ v962 = ((u(*)())(v959))(v960, v961);
+ v962;
+b727: v963 = (u)zprototype;
+ v964 = vc;
+ v965 = *(u*)(vn + 16UL);
+ v966 = ((u(*)())(v963))(v964, v965);
+ *(u*)(vn + 64UL) = v966;
+ goto b1;
+b729: goto b727;
+b731: v955 = 1UL;
+ goto b732;
+b721: goto b719;
+b723: v944 = 1UL;
+ goto b724;
+b718: v967 = (u)zcdie;
+ v968 = vc;
+ v969 = (u)"not an expression";
+ v970 = ((u(*)())(v967))(v968, v969);
+ v970;
goto b1;
}
-u zmemcpy(u vdest, u vsrc, u vsize) {
- u vi = 0;
- if ((s)vsize >= (s)0UL) goto b3;
- return 0UL;
-b3: if ((s)vsrc <= (s)vdest) goto b6;
- vi = 0UL;
-b7: if (vi != vsize) goto b11;
-b4: return 0UL;
-b11: *(b*)(vdest + vi * 1UL) = (u)*(b*)(vsrc + vi * 1UL);
- vi = vi + 1UL;
- goto b7;
-b6: if ((s)vsrc >= (s)vdest) goto b13;
- vi = vsize;
-b14: if (vi != 0UL) goto b18;
- goto b4;
-b18: vi = vi - 1UL;
- *(b*)(vdest + vi * 1UL) = (u)*(b*)(vsrc + vi * 1UL);
- goto b14;
-b13: goto b4;
-}
-u zmemset(u vdest, u vc, u vsize) {
- u vi = 0;
- if ((s)vsize >= (s)0UL) goto b3;
- return 0UL;
-b3: vi = 0UL;
-b4: if (vi != vsize) goto b8;
- return 0UL;
-b8: *(b*)(vdest + vi * 1UL) = vc;
- vi = vi + 1UL;
- goto b4;
-}
-u zmkident(u vc, u vname) {
- u vn = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- v3 = (u)zmknode;
- v4 = vc;
- v5 = 0UL;
- v6 = 0UL;
- v7 = 0UL;
- v8 = ((u(*)())v3)(v4, v5, v6, v7);
- vn = v8;
- v9 = (u)zmkstr;
- v10 = *(u*)(vc + 0UL);
- v11 = vname;
- v13 = (u)zstrlen;
- v14 = vname;
- v15 = ((u(*)())v13)(v14);
- v12 = v15;
- v16 = ((u(*)())v9)(v10, v11, v12);
- *(u*)(vn + 56UL) = v16;
- return vn;
-}
-u zmkirarg(u vic, u vn, u va) {
- u vo = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v4 = (u)zmkirop;
- v5 = vic;
- v6 = 8UL;
- v7 = va;
- v8 = 0UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vo = v9;
- *(u*)(vo + 24UL) = vn;
- return vo;
-}
-u zmkirblock(u vic) {
- u vb = 0;
- u vtmp = 0;
- u vi = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- if (*(u*)(vic + 72UL) != *(u*)(vic + 80UL)) goto b3;
- *(u*)(vic + 80UL) = *(u*)(vic + 80UL) * 2UL + 16UL;
- v4 = (u)zalloc;
- v5 = *(u*)(vic + 16UL);
- v6 = 8UL * *(u*)(vic + 80UL);
- v7 = ((u(*)())v4)(v5, v6);
- vtmp = v7;
- vi = 0UL;
-b5: if (vi != *(u*)(vic + 72UL)) goto b9;
- *(u*)(vic + 64UL) = vtmp;
-b1: v8 = (u)zalloc;
- v9 = *(u*)(vic + 16UL);
- v10 = 88UL;
- v11 = ((u(*)())v8)(v9, v10);
- vb = v11;
- *(u*)(vb + 0UL) = *(u*)(vic + 72UL);
- v12 = (u)zmklabel;
- v13 = *(u*)(vic + 8UL);
- v14 = ((u(*)())v12)(v13);
- *(u*)(vb + 72UL) = v14;
- *(u*)(vb + 8UL) = 0UL;
- *(u*)(vb + 16UL) = 0UL;
- *(u*)(vb + 24UL) = 0UL;
- *(u*)(vb + 32UL) = 0UL;
- *(u*)(vb + 56UL) = 0UL;
- *(u*)(vb + 64UL) = 0UL;
- *(u*)(*(u*)(vic + 64UL) + *(u*)(vic + 72UL) * 8UL) = vb;
- *(u*)(vic + 72UL) = *(u*)(vic + 72UL) + 1UL;
- return vb;
-b9: *(u*)(vtmp + vi * 8UL) = *(u*)(*(u*)(vic + 64UL) + vi * 8UL);
- vi = vi + 1UL;
- goto b5;
-b3: goto b1;
-}
-u zmkirconst(u vic, u vn) {
- u vo = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- v3 = (u)zmkirop;
- v4 = vic;
- v5 = 3UL;
- v6 = 0UL;
- v7 = 0UL;
- v8 = ((u(*)())v3)(v4, v5, v6, v7);
- vo = v8;
- *(u*)(vo + 24UL) = vn;
- return vo;
-}
-u zmkirfold(u vic, u vs, u vn) {
- u vo = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v4 = (u)zmkirop;
- v5 = vic;
- v6 = 3UL;
- v7 = 0UL;
- v8 = 0UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vo = v9;
- *(u*)(vo + 64UL) = *(u*)(vs + 64UL);
- *(u*)(vo + 72UL) = *(u*)(vs + 72UL);
- *(u*)(vo + 80UL) = *(u*)(vs + 80UL);
- *(u*)(vo + 24UL) = vn;
- return vo;
-}
-u zmkirfunc(u vc, u vname) {
- u vic = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v3 = (u)zalloc;
- v4 = *(u*)(vc + 0UL);
- v5 = 160UL;
- v6 = ((u(*)())v3)(v4, v5);
- vic = v6;
- *(u*)(vic + 0UL) = vc;
- *(u*)(vic + 16UL) = *(u*)(vc + 0UL);
- *(u*)(vic + 8UL) = *(u*)(vc + 48UL);
- v7 = (u)zmkirblock;
- v8 = vic;
- v9 = ((u(*)())v7)(v8);
- v9;
- *(u*)(vic + 104UL) = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- *(u*)(vic + 24UL) = vname;
- return vic;
-}
-u zmkirfuncref(u vic, u vname) {
- u vo = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- v3 = (u)zmkirop;
- v4 = vic;
- v5 = 2UL;
- v6 = 0UL;
- v7 = 0UL;
- v8 = ((u(*)())v3)(v4, v5, v6, v7);
- vo = v8;
- *(u*)(vo + 32UL) = vname;
- v9 = (u)zstrlen;
- v10 = vname;
- v11 = ((u(*)())v9)(v10);
- *(u*)(vo + 40UL) = v11;
- return vo;
-}
-u zmkirop(u vic, u vkind, u va, u vb) {
- u vo = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- v5 = (u)zalloc;
- v6 = *(u*)(vic + 16UL);
- v7 = 88UL;
- v8 = ((u(*)())v5)(v6, v7);
- vo = v8;
- *(u*)(vo + 0UL) = vkind;
- *(u*)(vo + 8UL) = va;
- *(u*)(vo + 16UL) = vb;
- *(u*)(vo + 64UL) = *(u*)(*(u*)(vic + 0UL) + 24UL);
- *(u*)(vo + 72UL) = *(u*)(*(u*)(vic + 0UL) + 32UL);
- *(u*)(vo + 80UL) = *(u*)(*(u*)(vic + 0UL) + 40UL);
- return vo;
-}
-u zmkirretval(u vic, u va, u vt) {
- u vo = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v4 = (u)zmkirop;
- v5 = vic;
- v6 = 7UL;
- v7 = va;
- v8 = 0UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vo = v9;
- *(u*)(vo + 48UL) = vt;
- return vo;
-}
-u zmkirstr(u vic, u vs, u vslen) {
- u vo = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v4 = (u)zmkirop;
- v5 = vic;
- v6 = 4UL;
- v7 = 0UL;
- v8 = 0UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vo = v9;
- *(u*)(vo + 32UL) = vs;
- *(u*)(vo + 40UL) = vslen;
- return vo;
-}
-u zmkirtmp(u vic, u vt) {
- u vo = 0;
+u ztypecheck_stmt(u vc, u vd, u vn) {
u vv = 0;
- u v4 = 0;
+ u vkind = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -40855,279 +41075,315 @@ u zmkirtmp(u vic, u vt) {
u v12 = 0;
u v13 = 0;
u v14 = 0;
- v4 = (u)zmkirvar;
- v5 = vic;
- v6 = 0UL;
- v7 = vt;
- v8 = ((u(*)())v4)(v5, v6, v7);
- vv = v8;
- v9 = (u)zmkirop;
- v10 = vic;
- v11 = 0UL;
- v12 = 0UL;
- v13 = 0UL;
- v14 = ((u(*)())v9)(v10, v11, v12, v13);
- vo = v14;
- *(u*)(vo + 24UL) = *(u*)(vv + 32UL);
- return vo;
-}
-u zmkirvar(u vic, u vname, u vt) {
- u vv = 0;
- u vtmp = 0;
- u vi = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- if (*(u*)(vic + 136UL) != *(u*)(vic + 144UL)) goto b3;
- *(u*)(vic + 144UL) = *(u*)(vic + 144UL) * 2UL + 16UL;
- v6 = (u)zalloc;
- v7 = *(u*)(vic + 16UL);
- v8 = 8UL * *(u*)(vic + 144UL);
- v9 = ((u(*)())v6)(v7, v8);
- vtmp = v9;
- vi = 0UL;
-b5: if (vi != *(u*)(vic + 136UL)) goto b9;
- *(u*)(vic + 128UL) = vtmp;
-b1: vi = *(u*)(vic + 136UL);
- v10 = (u)zalloc;
- v11 = *(u*)(vic + 16UL);
- v12 = 72UL;
- v13 = ((u(*)())v10)(v11, v12);
- vv = v13;
- *(u*)(vv + 32UL) = vi;
- *(u*)(vv + 0UL) = vname;
- *(u*)(vv + 24UL) = vt;
- *(u*)(*(u*)(vic + 128UL) + vi * 8UL) = vv;
- *(u*)(vic + 136UL) = *(u*)(vic + 136UL) + 1UL;
- return vv;
-b9: *(u*)(vtmp + vi * 8UL) = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
- vi = vi + 1UL;
- goto b5;
-b3: goto b1;
-}
-u zmklabel(u vc) {
- u vl = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- v2 = (u)zalloc;
- v3 = *(u*)(vc + 0UL);
- v4 = 24UL;
- v5 = ((u(*)())v2)(v3, v4);
- vl = v5;
- *(u*)(vl + 0UL) = 0UL;
- *(u*)(vl + 8UL) = 0UL;
- *(u*)(vl + 16UL) = 0UL;
- return vl;
-}
-u zmknode(u vc, u vkind, u va, u vb) {
- u vret = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- v5 = (u)zalloc;
- v6 = *(u*)(vc + 0UL);
- v7 = 72UL;
- v8 = ((u(*)())v5)(v6, v7);
- vret = v8;
- *(u*)(vret + 0UL) = vkind;
- *(u*)(vret + 8UL) = va;
- *(u*)(vret + 16UL) = vb;
- *(u*)(vret + 24UL) = 0UL;
- *(u*)(vret + 32UL) = 0UL;
- *(u*)(vret + 40UL) = 0UL;
- *(u*)(vret + 48UL) = 0UL;
- *(u*)(vret + 56UL) = 0UL;
- *(u*)(vret + 64UL) = 0UL;
- *(u*)(vret + 24UL) = *(u*)(*(u*)(vc + 8UL) + 24UL);
- *(u*)(vret + 32UL) = *(u*)(*(u*)(vc + 8UL) + 32UL);
- *(u*)(vret + 40UL) = *(u*)(*(u*)(vc + 8UL) + 40UL);
- return vret;
-}
-u zmknode0(u vc, u vkind) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- v2 = (u)zmknode;
- v3 = vc;
- v4 = vkind;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ if (!(vn)) goto b5;
v5 = 0UL;
+b6: if (!(v5)) goto b3;
+ return 0UL;
+b3: *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
+ *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
+ *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
+ vkind = *(u*)(vn + 0UL);
+ if (vkind != 21UL) goto b9;
+b10: if (!(vn)) goto b16;
v6 = 0UL;
- v7 = ((u(*)())v2)(v3, v4, v5, v6);
- return v7;
-}
-u zmknode1(u vc, u vkind, u va) {
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- v3 = (u)zmknode;
- v4 = vc;
- v5 = vkind;
- v6 = va;
- v7 = 0UL;
- v8 = ((u(*)())v3)(v4, v5, v6, v7);
- return v8;
-}
-u zmkstr(u va, u vs, u vn) {
- u vr = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- v4 = (u)zalloc;
- v5 = va;
- v6 = vn + 1UL;
- v7 = ((u(*)())v4)(v5, v6);
- vr = v7;
- v8 = (u)zmemcpy;
- v9 = vr;
- v10 = vs;
- v11 = vn;
- v12 = ((u(*)())v8)(v9, v10, v11);
+b17: if (!(v6)) goto b14;
+b7: return 0UL;
+b14: if (!(*(u*)(*(u*)(vn + 8UL) + 8UL))) goto b20;
+ v7 = (u)ztypecheck_expr;
+ v8 = vc;
+ v9 = vd;
+ v10 = *(u*)(*(u*)(vn + 8UL) + 8UL);
+ v11 = 1UL;
+ v12 = ((u(*)())(v7))(v8, v9, v10, v11);
v12;
- *(b*)(vr + vn * 1UL) = 0UL;
- return vr;
-}
-u zmktype(u vc, u vkind, u va, u vb, u vst) {
- u vt = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v6 = (u)zalloc;
- v7 = *(u*)(vc + 0UL);
- v8 = 32UL;
- v9 = ((u(*)())v6)(v7, v8);
- vt = v9;
- *(u*)(vt + 0UL) = vkind;
- *(u*)(vt + 8UL) = vst;
- *(u*)(vt + 16UL) = va;
- *(u*)(vt + 24UL) = vb;
- return vt;
-}
-u zmktype0(u vc, u vkind) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- v2 = (u)zmktype;
- v3 = vc;
- v4 = vkind;
- v5 = 0UL;
- v6 = 0UL;
- v7 = 0UL;
- v8 = ((u(*)())v2)(v3, v4, v5, v6, v7);
- return v8;
-}
-u zmktype1(u vc, u vkind, u va) {
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v3 = (u)zmktype;
- v4 = vc;
- v5 = vkind;
- v6 = va;
- v7 = 0UL;
- v8 = 0UL;
- v9 = ((u(*)())v3)(v4, v5, v6, v7, v8);
- return v9;
+b18: v13 = (u)ztypecheck_stmt;
+ v14 = vc;
+ v15 = vd;
+ v16 = *(u*)(*(u*)(vn + 8UL) + 16UL);
+ v17 = ((u(*)())(v13))(v14, v15, v16);
+ v17;
+ vn = *(u*)(vn + 16UL);
+ goto b10;
+b20: goto b18;
+b16: v6 = 1UL;
+ goto b17;
+b9: if (vkind != 5UL) goto b24;
+b25: if (!(vn)) goto b31;
+ v18 = 0UL;
+b32: if (!(v18)) goto b29;
+ goto b7;
+b29: v19 = (u)ztypecheck_stmt;
+ v20 = vc;
+ v21 = vd;
+ v22 = *(u*)(vn + 8UL);
+ v23 = ((u(*)())(v19))(v20, v21, v22);
+ v23;
+ vn = *(u*)(vn + 16UL);
+ goto b25;
+b31: v18 = 1UL;
+ goto b32;
+b24: if (vkind != 26UL) goto b35;
+ v24 = (u)ztypecheck_stmt;
+ v25 = vc;
+ v26 = vd;
+ v27 = *(u*)(vn + 8UL);
+ v28 = ((u(*)())(v24))(v25, v26, v27);
+ v28;
+ goto b7;
+b35: if (vkind != 27UL) goto b38;
+ goto b7;
+b38: if (vkind != 28UL) goto b40;
+ goto b7;
+b40: if (vkind != 29UL) goto b42;
+ if (!(*(u*)(vn + 8UL))) goto b45;
+ if (*(u*)(*(u*)(*(u*)(vd + 80UL) + 16UL) + 0UL) != 1UL) goto b48;
+ v29 = (u)zcdie;
+ v30 = vc;
+ v31 = (u)"returning a value in a void function";
+ v32 = ((u(*)())(v29))(v30, v31);
+ v32;
+b46: v33 = (u)zcall_check;
+ v34 = vc;
+ v35 = *(u*)(vn + 8UL);
+ v36 = ((u(*)())(v33))(v34, v35);
+ v36;
+ v37 = (u)ztypecheck_expr;
+ v38 = vc;
+ v39 = vd;
+ v40 = *(u*)(vn + 8UL);
+ v41 = 1UL;
+ v42 = ((u(*)())(v37))(v38, v39, v40, v41);
+ v42;
+ v43 = (u)zunify;
+ v44 = vc;
+ v45 = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v46 = *(u*)(*(u*)(vd + 80UL) + 16UL);
+ v47 = ((u(*)())(v43))(v44, v45, v46);
+ v47;
+b43: goto b7;
+b48: goto b46;
+b45: if (*(u*)(*(u*)(*(u*)(vd + 80UL) + 16UL) + 0UL) == 1UL) goto b55;
+ v48 = (u)zcdie;
+ v49 = vc;
+ v50 = (u)"returning void in a non void function";
+ v51 = ((u(*)())(v48))(v49, v50);
+ v51;
+b53: goto b43;
+b55: goto b53;
+b42: if (vkind != 31UL) goto b58;
+ v52 = (u)zfind;
+ v53 = vc;
+ v54 = *(u*)(vd + 32UL);
+ v55 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v56 = 0UL;
+ v57 = ((u(*)())(v52))(v53, v54, v55, v56);
+ vv = v57;
+ goto b7;
+b58: if (vkind != 32UL) goto b61;
+ v58 = (u)zfind;
+ v59 = vc;
+ v60 = *(u*)(vd + 32UL);
+ v61 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+ v62 = 0UL;
+ v63 = ((u(*)())(v58))(v59, v60, v61, v62);
+ vv = v63;
+ if (!(vv)) goto b71;
+ v65 = 0UL;
+b72: if (!(v65)) goto b67;
+ v64 = 1UL;
+b69: if (!(v64)) goto b65;
+ v67 = (u)zcdie;
+ v68 = vc;
+ v69 = (u)"label not defined";
+ v70 = ((u(*)())(v67))(v68, v69);
+ v70;
+b63: goto b7;
+b65: goto b63;
+b67: if (!(*(u*)(vv + 224UL))) goto b75;
+ v66 = 0UL;
+b76: if (!(v66)) goto b73;
+ v64 = 1UL;
+ goto b69;
+b73: v64 = 0UL;
+ goto b69;
+b75: v66 = 1UL;
+ goto b76;
+b71: v65 = 1UL;
+ goto b72;
+b61: if (vkind == 30UL) goto b79;
+ v71 = (u)zcall_check;
+ v72 = vc;
+ v73 = vn;
+ v74 = ((u(*)())(v71))(v72, v73);
+ v74;
+ v75 = (u)ztypecheck_expr;
+ v76 = vc;
+ v77 = vd;
+ v78 = vn;
+ v79 = 1UL;
+ v80 = ((u(*)())(v75))(v76, v77, v78, v79);
+ v80;
+ goto b7;
+b79: goto b7;
+b5: v5 = 1UL;
+ goto b6;
}
-u zmktype2(u vc, u vkind, u va, u vb) {
- u v4 = 0;
- u v5 = 0;
+u zunescape(u vs, u vi, u vlen, u vok) {
+ u vch = 0;
+ u vhex = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
u v10 = 0;
- v4 = (u)zmktype;
- v5 = vc;
- v6 = vkind;
- v7 = va;
- v8 = vb;
- v9 = 0UL;
- v10 = ((u(*)())v4)(v5, v6, v7, v8, v9);
- return v10;
-}
-u zmktype_struct(u vc, u vst) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- v2 = (u)zmktype;
- v3 = vc;
- v4 = 7UL;
- v5 = 0UL;
- v6 = 0UL;
- v7 = vst;
- v8 = ((u(*)())v2)(v3, v4, v5, v6, v7);
- return v8;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ *(u*)(vok) = 1UL;
+ if ((s)(*(u*)(vi)) < (s)(vlen)) goto b3;
+ *(u*)(vok) = 0UL;
+ return 0UL;
+b3: vch = (u)*(b*)(vs + *(u*)(vi) * 1UL);
+ *(u*)(vi) = *(u*)(vi) + 1UL;
+ if (vch == 92UL) goto b6;
+ return vch;
+b6: if ((s)(*(u*)(vi)) < (s)(vlen)) goto b9;
+ *(u*)(vok) = 0UL;
+ return 0UL;
+b9: vch = (u)*(b*)(vs + *(u*)(vi) * 1UL);
+ *(u*)(vi) = *(u*)(vi) + 1UL;
+ if (vch != 116UL) goto b12;
+ return 9UL;
+b12: if (vch != 114UL) goto b14;
+ return 13UL;
+b14: if (vch != 110UL) goto b16;
+ return 10UL;
+b16: if (vch != 92UL) goto b18;
+ return 92UL;
+b18: if (vch != 39UL) goto b20;
+ return 39UL;
+b20: if (vch != 34UL) goto b22;
+ return 34UL;
+b22: if (vch != 91UL) goto b24;
+ return 91UL;
+b24: if (vch != 93UL) goto b26;
+ return 93UL;
+b26: if (vch != 45UL) goto b28;
+ return 45UL;
+b28: if (vch != 94UL) goto b30;
+ return 94UL;
+b30: if (vch != 120UL) goto b32;
+ if ((s)(*(u*)(vi)) < (s)(vlen)) goto b35;
+ *(u*)(vok) = 0UL;
+ return 0UL;
+b35: vch = (u)*(b*)(vs + *(u*)(vi) * 1UL);
+ *(u*)(vi) = *(u*)(vi) + 1UL;
+ v6 = (u)zhexdig;
+ v7 = vch;
+ v8 = vok;
+ v9 = ((u(*)())(v6))(v7, v8);
+ vhex = v9 * 16UL;
+ if (!(*(u*)(vok))) goto b41;
+ v10 = 0UL;
+b42: if (!(v10)) goto b39;
+ return 0UL;
+b39: if ((s)(*(u*)(vi)) < (s)(vlen)) goto b45;
+ *(u*)(vok) = 0UL;
+ return 0UL;
+b45: vch = (u)*(b*)(vs + *(u*)(vi) * 1UL);
+ *(u*)(vi) = *(u*)(vi) + 1UL;
+ v11 = (u)zhexdig;
+ v12 = vch;
+ v13 = vok;
+ v14 = ((u(*)())(v11))(v12, v13);
+ vhex = vhex | v14;
+ if (!(*(u*)(vok))) goto b51;
+ v15 = 0UL;
+b52: if (!(v15)) goto b49;
+ return 0UL;
+b49: return vhex;
+b51: v15 = 1UL;
+ goto b52;
+b41: v10 = 1UL;
+ goto b42;
+b32: *(u*)(vok) = 0UL;
+ return 0UL;
}
-u zmktype_union(u vc, u vst) {
- u v2 = 0;
- u v3 = 0;
+u zunify(u vc, u va, u vb) {
+ u vkind = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
- v2 = (u)zmktype;
- v3 = vc;
- v4 = 8UL;
- v5 = 0UL;
- v6 = 0UL;
- v7 = vst;
- v8 = ((u(*)())v2)(v3, v4, v5, v6, v7);
- return v8;
-}
-u zmmap(u vaddr, u vlen, u vprot, u vflags, u vfd, u voff) {
- return (u)mmap((void*)vaddr, (unsigned long)vlen, (int)vprot, (int)vflags, (int)vfd, (long)voff);
-}
-u znext_decl(u vc, u vd) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- v2 = (u)zrb_next;
- v3 = vd + 0UL;
- v4 = ((u(*)())v2)(v3);
- return v4;
-}
-u znfa2dfa(u vc, u vk) {
- u vd = 0;
- u vp = 0;
- u vlink = 0;
- u vdir = 0;
- u vi = 0;
- u vj = 0;
- u v8 = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -41172,133 +41428,191 @@ u znfa2dfa(u vc, u vk) {
u v50 = 0;
u v51 = 0;
u v52 = 0;
- if (*(u*)(vk + 16UL) != 0UL) goto b3;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ if (va != vb) goto b3;
return 0UL;
-b3: v8 = (u)zdfakey_sort;
- v9 = vk;
- v10 = ((u(*)())v8)(v9);
- v10;
- vp = 0UL;
- vlink = vc + 152UL;
-b5: vd = *(u*)vlink;
- if (!vd) goto b11;
- v11 = 0UL;
-b12: if (!v11) goto b9;
- v16 = (u)zalloc;
- v17 = *(u*)(vc + 0UL);
- v18 = 80UL;
- v19 = ((u(*)())v16)(v17, v18);
- vd = v19;
- v20 = (u)zalloc;
- v21 = *(u*)(vc + 0UL);
- v22 = 8UL * 256UL;
- v23 = ((u(*)())v20)(v21, v22);
- *(u*)(vd + 40UL) = v23;
- v24 = (u)zalloc;
- v25 = *(u*)(vc + 0UL);
- v26 = 8UL * *(u*)(vk + 16UL);
- v27 = ((u(*)())v24)(v25, v26);
- *(u*)(vd + 48UL) = v27;
- *(u*)(vd + 56UL) = *(u*)(vk + 16UL);
- *(u*)(vd + 32UL) = *(u*)(vc + 144UL);
- *(u*)(vc + 144UL) = *(u*)(vc + 144UL) + 1UL;
- vi = 0UL;
-b22: if (vi != *(u*)(vk + 16UL)) goto b26;
- *(u*)(vd + 72UL) = *(u*)(vk + 32UL);
- v28 = (u)zrb_link;
- v29 = vc + 152UL;
- v30 = vlink;
- v31 = vp;
- v32 = vd + 0UL;
- v33 = ((u(*)())v28)(v29, v30, v31, v32);
- v33;
- vi = 0UL;
-b28: if (vi != 256UL) goto b32;
- return vd;
-b32: v34 = (u)zdfakey_clear;
- v35 = vk;
- v36 = ((u(*)())v34)(v35);
- v36;
- vj = 0UL;
-b34: if (vj != *(u*)(vd + 56UL)) goto b38;
- v49 = (u)znfa2dfa;
- v50 = vc;
- v51 = vk;
- v52 = ((u(*)())v49)(v50, v51);
- *(u*)(*(u*)(vd + 40UL) + vi * 8UL) = v52;
- vi = vi + 1UL;
- goto b28;
-b38: if (!*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 32UL)) goto b47;
- if ((s)*(u*)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 32UL) + 16UL) > (s)vi) goto b47;
- v38 = 1UL;
-b49: if (!v38) goto b43;
- if ((s)*(u*)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 32UL) + 24UL) < (s)vi) goto b43;
- v37 = 1UL;
-b45: if (!v37) goto b41;
- v39 = (u)zdfakey_add;
- v40 = vk;
- v41 = *(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 32UL);
- v42 = ((u(*)())v39)(v40, v41);
- v42;
-b39: if (!*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 40UL)) goto b59;
- if ((s)*(u*)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 40UL) + 16UL) > (s)vi) goto b59;
- v44 = 1UL;
-b61: if (!v44) goto b55;
- if ((s)*(u*)(*(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 40UL) + 24UL) < (s)vi) goto b55;
- v43 = 1UL;
-b57: if (!v43) goto b53;
- v45 = (u)zdfakey_add;
- v46 = vk;
- v47 = *(u*)(*(u*)(*(u*)(vd + 48UL) + vj * 8UL) + 40UL);
- v48 = ((u(*)())v45)(v46, v47);
- v48;
-b51: vj = vj + 1UL;
- goto b34;
-b53: goto b51;
-b55: v43 = 0UL;
- goto b57;
-b59: v44 = 0UL;
- goto b61;
-b41: goto b39;
-b43: v37 = 0UL;
- goto b45;
-b47: v38 = 0UL;
- goto b49;
-b26: *(u*)(*(u*)(vd + 48UL) + vi * 8UL) = *(u*)(*(u*)(vk + 8UL) + vi * 8UL);
- vi = vi + 1UL;
+b3: if (!(va)) goto b12;
+ if (!(vb)) goto b12;
+ v5 = 1UL;
+b14: if (!(v5)) goto b8;
+ if (*(u*)(va + 0UL) != 0UL) goto b20;
+ if (*(u*)(vb + 0UL) != 4UL) goto b24;
+ v8 = 1UL;
+b26: if (!(v8)) goto b20;
+ v7 = 1UL;
+b22: if (!(v7)) goto b16;
+ v6 = 1UL;
+b18: if (!(v6)) goto b8;
+ v4 = 1UL;
+b10: if (!(v4)) goto b6;
+ return 0UL;
+b6: if (!(va)) goto b50;
+ if (!(vb)) goto b54;
+ v14 = 0UL;
+b55: if (!(v14)) goto b50;
+ v13 = 1UL;
+b52: if (!(v13)) goto b46;
+ v12 = 1UL;
+b48: if (!(v12)) goto b42;
+ v11 = 1UL;
+b44: if (!(v11)) goto b40;
+ v17 = (u)zcdie;
+ v18 = vc;
+ v19 = (u)"type error";
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+b38: vkind = *(u*)(va + 0UL);
+ if (vkind != 4UL) goto b68;
+ v21 = (u)zunify;
+ v22 = vc;
+ v23 = *(u*)(va + 16UL);
+ v24 = *(u*)(vb + 16UL);
+ v25 = ((u(*)())(v21))(v22, v23, v24);
+ v25;
+b66: return 0UL;
+b68: if (vkind != 6UL) goto b71;
+ v26 = (u)zunify;
+ v27 = vc;
+ v28 = *(u*)(va + 16UL);
+ v29 = *(u*)(vb + 16UL);
+ v30 = ((u(*)())(v26))(v27, v28, v29);
+ v30;
+ v31 = (u)zunify;
+ v32 = vc;
+ v33 = *(u*)(va + 24UL);
+ v34 = *(u*)(vb + 24UL);
+ v35 = ((u(*)())(v31))(v32, v33, v34);
+ v35;
+ goto b66;
+b71: if (vkind != 5UL) goto b75;
+ v36 = (u)zunify;
+ v37 = vc;
+ v38 = *(u*)(va + 16UL);
+ v39 = *(u*)(vb + 16UL);
+ v40 = ((u(*)())(v36))(v37, v38, v39);
+ v40;
+ v41 = (u)zunify;
+ v42 = vc;
+ v43 = *(u*)(va + 24UL);
+ v44 = *(u*)(vb + 24UL);
+ v45 = ((u(*)())(v41))(v42, v43, v44);
+ v45;
+ goto b66;
+b75: if (vkind != 7UL) goto b79;
+ if (*(u*)(va + 8UL) == *(u*)(vb + 8UL)) goto b82;
+ v46 = (u)zcdie;
+ v47 = vc;
+ v48 = (u)"type error";
+ v49 = ((u(*)())(v46))(v47, v48);
+ v49;
+b80: goto b66;
+b82: goto b80;
+b79: if (vkind != 8UL) goto b85;
+ if (*(u*)(va + 8UL) == *(u*)(vb + 8UL)) goto b88;
+ v50 = (u)zcdie;
+ v51 = vc;
+ v52 = (u)"type error";
+ v53 = ((u(*)())(v50))(v51, v52);
+ v53;
+b86: goto b66;
+b88: goto b86;
+b85: if (vkind == 1UL) goto b97;
+ if (vkind == 2UL) goto b97;
+ v55 = 1UL;
+b99: if (!(v55)) goto b93;
+ if (vkind == 3UL) goto b93;
+ v54 = 1UL;
+b95: if (!(v54)) goto b91;
+ v56 = (u)zcdie;
+ v57 = vc;
+ v58 = (u)"unify: invalid type";
+ v59 = ((u(*)())(v56))(v57, v58);
+ v59;
+ goto b66;
+b91: goto b66;
+b93: v54 = 0UL;
+ goto b95;
+b97: v55 = 0UL;
+ goto b99;
+b40: goto b38;
+b42: if (*(u*)(va + 0UL) == *(u*)(vb + 0UL)) goto b64;
+ v11 = 1UL;
+ goto b44;
+b64: v11 = 0UL;
+ goto b44;
+b46: if (!(vb)) goto b58;
+ if (!(va)) goto b62;
+ v16 = 0UL;
+b63: if (!(v16)) goto b58;
+ v15 = 1UL;
+b60: if (!(v15)) goto b56;
+ v12 = 1UL;
+ goto b48;
+b56: v12 = 0UL;
+ goto b48;
+b58: v15 = 0UL;
+ goto b60;
+b62: v16 = 1UL;
+ goto b63;
+b50: v13 = 0UL;
+ goto b52;
+b54: v14 = 1UL;
+ goto b55;
+b8: v4 = 0UL;
+ goto b10;
+b16: if (*(u*)(va + 0UL) != 4UL) goto b34;
+ v10 = 1UL;
+b36: if (!(v10)) goto b30;
+ if (*(u*)(vb + 0UL) != 0UL) goto b30;
+ v9 = 1UL;
+b32: if (!(v9)) goto b28;
+ v6 = 1UL;
+ goto b18;
+b28: v6 = 0UL;
+ goto b18;
+b30: v9 = 0UL;
+ goto b32;
+b34: if (*(u*)(va + 0UL) != 6UL) goto b37;
+ v10 = 1UL;
+ goto b36;
+b37: v10 = 0UL;
+ goto b36;
+b20: v7 = 0UL;
goto b22;
-b9: v12 = (u)zdfa_cmp;
- v13 = vk;
- v14 = vd;
- v15 = ((u(*)())v12)(v13, v14);
- vdir = v15;
- if ((s)vdir >= (s)0UL) goto b16;
- vlink = vd + 0UL + 16UL;
- vp = vd + 0UL;
-b14: goto b5;
-b16: if ((s)vdir <= (s)0UL) goto b18;
- vlink = vd + 0UL + 24UL;
- vp = vd + 0UL;
+b24: if (*(u*)(vb + 0UL) != 6UL) goto b27;
+ v8 = 1UL;
+ goto b26;
+b27: v8 = 0UL;
+ goto b26;
+b12: v5 = 0UL;
goto b14;
-b18: return vd;
-b11: v11 = 1UL;
- goto b12;
}
-u znfa_alt(u vc, u va, u vb) {
- u vn = 0;
- u vtail = 0;
+u zunlink(u vname) {
+ return (u)unlink((char *)vname);
+}
+u zwrite(u vfd, u vbuf, u vn) {
+ return (u)write((int)vfd, (void*)vbuf, (unsigned long)vn);
+}
+u zwriteout(u vc, u vmachine, u vstart, u vkstart) {
+ u vb = 0;
u vi = 0;
- u vj = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
+ u vtext_size = 0;
+ u vtext_end = 0;
+ u vload_addr = 0;
+ u ventry = 0;
+ u vkentry = 0;
+ u vmb_magic = 0;
+ u vmb_flags = 0;
+ u vmb_checksum = 0;
+ u vmb_addr = 0;
+ u vs = 0;
+ u vshoff = 0;
u v17 = 0;
u v18 = 0;
u v19 = 0;
@@ -41307,287 +41621,1563 @@ u znfa_alt(u vc, u va, u vb) {
u v22 = 0;
u v23 = 0;
u v24 = 0;
- if (!va) goto b5;
- v7 = 0UL;
-b6: if (!v7) goto b3;
- return vb;
-b3: if (!vb) goto b11;
- v8 = 0UL;
-b12: if (!v8) goto b9;
- return va;
-b9: v9 = (u)zalloc;
- v10 = *(u*)(vc + 0UL);
- v11 = 72UL;
- v12 = ((u(*)())v9)(v10, v11);
- vn = v12;
- *(u*)(vn + 0UL) = *(u*)(vc + 136UL);
- *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
- *(u*)(vn + 16UL) = -1UL;
- *(u*)(vn + 24UL) = -1UL;
- *(u*)(vn + 32UL) = va;
- *(u*)(vn + 40UL) = vb;
- *(u*)(vn + 56UL) = *(u*)(va + 56UL) + *(u*)(vb + 56UL);
- v13 = (u)zalloc;
- v14 = *(u*)(vc + 0UL);
- v15 = 8UL * *(u*)(vn + 56UL);
- v16 = ((u(*)())v13)(v14, v15);
- *(u*)(vn + 48UL) = v16;
- vi = 0UL;
- vj = 0UL;
-b15: if (vi != *(u*)(va + 56UL)) goto b19;
- vi = 0UL;
-b20: if (vi != *(u*)(vb + 56UL)) goto b24;
- v17 = (u)zfree;
- v18 = *(u*)(vc + 0UL);
- v19 = *(u*)(va + 48UL);
- v20 = ((u(*)())v17)(v18, v19);
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ u v156 = 0;
+ u v157 = 0;
+ u v158 = 0;
+ u v159 = 0;
+ u v160 = 0;
+ u v161 = 0;
+ u v162 = 0;
+ u v163 = 0;
+ u v164 = 0;
+ u v165 = 0;
+ u v166 = 0;
+ u v167 = 0;
+ u v168 = 0;
+ u v169 = 0;
+ u v170 = 0;
+ u v171 = 0;
+ u v172 = 0;
+ u v173 = 0;
+ u v174 = 0;
+ u v175 = 0;
+ u v176 = 0;
+ u v177 = 0;
+ u v178 = 0;
+ u v179 = 0;
+ u v180 = 0;
+ u v181 = 0;
+ u v182 = 0;
+ u v183 = 0;
+ u v184 = 0;
+ u v185 = 0;
+ u v186 = 0;
+ u v187 = 0;
+ u v188 = 0;
+ u v189 = 0;
+ u v190 = 0;
+ u v191 = 0;
+ u v192 = 0;
+ u v193 = 0;
+ u v194 = 0;
+ u v195 = 0;
+ u v196 = 0;
+ u v197 = 0;
+ u v198 = 0;
+ u v199 = 0;
+ u v200 = 0;
+ u v201 = 0;
+ u v202 = 0;
+ u v203 = 0;
+ u v204 = 0;
+ u v205 = 0;
+ u v206 = 0;
+ u v207 = 0;
+ u v208 = 0;
+ u v209 = 0;
+ u v210 = 0;
+ u v211 = 0;
+ u v212 = 0;
+ u v213 = 0;
+ u v214 = 0;
+ u v215 = 0;
+ u v216 = 0;
+ u v217 = 0;
+ u v218 = 0;
+ u v219 = 0;
+ u v220 = 0;
+ u v221 = 0;
+ u v222 = 0;
+ u v223 = 0;
+ u v224 = 0;
+ u v225 = 0;
+ u v226 = 0;
+ u v227 = 0;
+ u v228 = 0;
+ u v229 = 0;
+ u v230 = 0;
+ u v231 = 0;
+ u v232 = 0;
+ u v233 = 0;
+ u v234 = 0;
+ u v235 = 0;
+ u v236 = 0;
+ u v237 = 0;
+ u v238 = 0;
+ u v239 = 0;
+ u v240 = 0;
+ u v241 = 0;
+ u v242 = 0;
+ u v243 = 0;
+ u v244 = 0;
+ u v245 = 0;
+ u v246 = 0;
+ u v247 = 0;
+ u v248 = 0;
+ u v249 = 0;
+ u v250 = 0;
+ u v251 = 0;
+ u v252 = 0;
+ u v253 = 0;
+ u v254 = 0;
+ u v255 = 0;
+ u v256 = 0;
+ u v257 = 0;
+ u v258 = 0;
+ u v259 = 0;
+ u v260 = 0;
+ u v261 = 0;
+ u v262 = 0;
+ u v263 = 0;
+ u v264 = 0;
+ u v265 = 0;
+ u v266 = 0;
+ u v267 = 0;
+ u v268 = 0;
+ u v269 = 0;
+ u v270 = 0;
+ u v271 = 0;
+ u v272 = 0;
+ u v273 = 0;
+ u v274 = 0;
+ u v275 = 0;
+ u v276 = 0;
+ u v277 = 0;
+ u v278 = 0;
+ u v279 = 0;
+ u v280 = 0;
+ u v281 = 0;
+ u v282 = 0;
+ u v283 = 0;
+ u v284 = 0;
+ u v285 = 0;
+ u v286 = 0;
+ u v287 = 0;
+ u v288 = 0;
+ u v289 = 0;
+ u v290 = 0;
+ u v291 = 0;
+ u v292 = 0;
+ u v293 = 0;
+ u v294 = 0;
+ u v295 = 0;
+ u v296 = 0;
+ u v297 = 0;
+ u v298 = 0;
+ u v299 = 0;
+ u v300 = 0;
+ u v301 = 0;
+ u v302 = 0;
+ u v303 = 0;
+ u v304 = 0;
+ u v305 = 0;
+ u v306 = 0;
+ u v307 = 0;
+ u v308 = 0;
+ u v309 = 0;
+ u v310 = 0;
+ u v311 = 0;
+ u v312 = 0;
+ u v313 = 0;
+ u v314 = 0;
+ u v315 = 0;
+ u v316 = 0;
+ u v317 = 0;
+ u v318 = 0;
+ u v319 = 0;
+ u v320 = 0;
+ u v321 = 0;
+ u v322 = 0;
+ u v323 = 0;
+ u v324 = 0;
+ u v325 = 0;
+ u v326 = 0;
+ u v327 = 0;
+ u v328 = 0;
+ u v329 = 0;
+ u v330 = 0;
+ u v331 = 0;
+ u v332 = 0;
+ u v333 = 0;
+ u v334 = 0;
+ u v335 = 0;
+ u v336 = 0;
+ u v337 = 0;
+ u v338 = 0;
+ u v339 = 0;
+ u v340 = 0;
+ u v341 = 0;
+ u v342 = 0;
+ u v343 = 0;
+ u v344 = 0;
+ u v345 = 0;
+ u v346 = 0;
+ u v347 = 0;
+ u v348 = 0;
+ u v349 = 0;
+ u v350 = 0;
+ u v351 = 0;
+ u v352 = 0;
+ u v353 = 0;
+ u v354 = 0;
+ u v355 = 0;
+ u v356 = 0;
+ u v357 = 0;
+ u v358 = 0;
+ u v359 = 0;
+ u v360 = 0;
+ u v361 = 0;
+ u v362 = 0;
+ u v363 = 0;
+ u v364 = 0;
+ u v365 = 0;
+ u v366 = 0;
+ u v367 = 0;
+ u v368 = 0;
+ u v369 = 0;
+ u v370 = 0;
+ u v371 = 0;
+ u v372 = 0;
+ u v373 = 0;
+ u v374 = 0;
+ u v375 = 0;
+ u v376 = 0;
+ u v377 = 0;
+ u v378 = 0;
+ u v379 = 0;
+ u v380 = 0;
+ u v381 = 0;
+ u v382 = 0;
+ u v383 = 0;
+ u v384 = 0;
+ u v385 = 0;
+ u v386 = 0;
+ u v387 = 0;
+ u v388 = 0;
+ u v389 = 0;
+ u v390 = 0;
+ u v391 = 0;
+ u v392 = 0;
+ u v393 = 0;
+ u v394 = 0;
+ u v395 = 0;
+ u v396 = 0;
+ u v397 = 0;
+ u v398 = 0;
+ u v399 = 0;
+ u v400 = 0;
+ u v401 = 0;
+ u v402 = 0;
+ u v403 = 0;
+ u v404 = 0;
+ u v405 = 0;
+ u v406 = 0;
+ u v407 = 0;
+ u v408 = 0;
+ u v409 = 0;
+ u v410 = 0;
+ u v411 = 0;
+ u v412 = 0;
+ u v413 = 0;
+ u v414 = 0;
+ u v415 = 0;
+ u v416 = 0;
+ u v417 = 0;
+ u v418 = 0;
+ u v419 = 0;
+ u v420 = 0;
+ u v421 = 0;
+ u v422 = 0;
+ u v423 = 0;
+ u v424 = 0;
+ u v425 = 0;
+ u v426 = 0;
+ u v427 = 0;
+ u v428 = 0;
+ u v429 = 0;
+ u v430 = 0;
+ u v431 = 0;
+ u v432 = 0;
+ u v433 = 0;
+ u v434 = 0;
+ u v435 = 0;
+ u v436 = 0;
+ u v437 = 0;
+ u v438 = 0;
+ u v439 = 0;
+ u v440 = 0;
+ u v441 = 0;
+ u v442 = 0;
+ u v443 = 0;
+ u v444 = 0;
+ u v445 = 0;
+ u v446 = 0;
+ u v447 = 0;
+ u v448 = 0;
+ u v449 = 0;
+ u v450 = 0;
+ u v451 = 0;
+ u v452 = 0;
+ u v453 = 0;
+ u v454 = 0;
+ u v455 = 0;
+ u v456 = 0;
+ u v457 = 0;
+ u v458 = 0;
+ u v459 = 0;
+ u v460 = 0;
+ u v461 = 0;
+ u v462 = 0;
+ u v463 = 0;
+ u v464 = 0;
+ u v465 = 0;
+ u v466 = 0;
+ u v467 = 0;
+ u v468 = 0;
+ u v469 = 0;
+ u v470 = 0;
+ u v471 = 0;
+ u v472 = 0;
+ u v473 = 0;
+ u v474 = 0;
+ u v475 = 0;
+ u v476 = 0;
+ u v477 = 0;
+ u v478 = 0;
+ u v479 = 0;
+ u v480 = 0;
+ u v481 = 0;
+ u v482 = 0;
+ u v483 = 0;
+ u v484 = 0;
+ u v485 = 0;
+ u v486 = 0;
+ u v487 = 0;
+ u v488 = 0;
+ u v489 = 0;
+ u v490 = 0;
+ u v491 = 0;
+ u v492 = 0;
+ u v493 = 0;
+ u v494 = 0;
+ u v495 = 0;
+ u v496 = 0;
+ u v497 = 0;
+ u v498 = 0;
+ u v499 = 0;
+ u v500 = 0;
+ u v501 = 0;
+ u v502 = 0;
+ u v503 = 0;
+ u v504 = 0;
+ u v505 = 0;
+ u v506 = 0;
+ u v507 = 0;
+ u v508 = 0;
+ u v509 = 0;
+ u v510 = 0;
+ u v511 = 0;
+ u v512 = 0;
+ u v513 = 0;
+ u v514 = 0;
+ u v515 = 0;
+ u v516 = 0;
+ u v517 = 0;
+ u v518 = 0;
+ u v519 = 0;
+ u v520 = 0;
+ u v521 = 0;
+ u v522 = 0;
+ u v523 = 0;
+ u v524 = 0;
+ u v525 = 0;
+ u v526 = 0;
+ u v527 = 0;
+ u v528 = 0;
+ u v529 = 0;
+ u v530 = 0;
+ u v531 = 0;
+ u v532 = 0;
+ u v533 = 0;
+ u v534 = 0;
+ u v535 = 0;
+ u v536 = 0;
+ u v537 = 0;
+ u v538 = 0;
+ u v539 = 0;
+ u v540 = 0;
+ u v541 = 0;
+ u v542 = 0;
+ u v543 = 0;
+ u v544 = 0;
+ u v545 = 0;
+ u v546 = 0;
+ u v547 = 0;
+ u v548 = 0;
+ u v549 = 0;
+ u v550 = 0;
+ u v551 = 0;
+ u v552 = 0;
+ u v553 = 0;
+ u v554 = 0;
+ u v555 = 0;
+ u v556 = 0;
+ u v557 = 0;
+ u v558 = 0;
+ u v559 = 0;
+ u v560 = 0;
+ u v561 = 0;
+ u v562 = 0;
+ u v563 = 0;
+ u v564 = 0;
+ u v565 = 0;
+ u v566 = 0;
+ u v567 = 0;
+ u v568 = 0;
+ u v569 = 0;
+ u v570 = 0;
+ u v571 = 0;
+ u v572 = 0;
+ u v573 = 0;
+ u v574 = 0;
+ u v575 = 0;
+ u v576 = 0;
+ u v577 = 0;
+ u v578 = 0;
+ u v579 = 0;
+ u v580 = 0;
+ u v581 = 0;
+ u v582 = 0;
+ u v583 = 0;
+ u v584 = 0;
+ u v585 = 0;
+ u v586 = 0;
+ u v587 = 0;
+ u v588 = 0;
+ u v589 = 0;
+ u v590 = 0;
+ u v591 = 0;
+ u v592 = 0;
+ u v593 = 0;
+ u v594 = 0;
+ u v595 = 0;
+ u v596 = 0;
+ u v597 = 0;
+ u v598 = 0;
+ u v599 = 0;
+ u v600 = 0;
+ u v601 = 0;
+ u v602 = 0;
+ u v603 = 0;
+ u v604 = 0;
+ u v605 = 0;
+ u v606 = 0;
+ u v607 = 0;
+ u v608 = 0;
+ u v609 = 0;
+ u v610 = 0;
+ u v611 = 0;
+ u v612 = 0;
+ u v613 = 0;
+ u v614 = 0;
+ u v615 = 0;
+ u v616 = 0;
+ u v617 = 0;
+ u v618 = 0;
+ u v619 = 0;
+ u v620 = 0;
+ u v621 = 0;
+ u v622 = 0;
+ u v623 = 0;
+ u v624 = 0;
+ u v625 = 0;
+ u v626 = 0;
+ u v627 = 0;
+ u v628 = 0;
+ u v629 = 0;
+ u v630 = 0;
+ u v631 = 0;
+ u v632 = 0;
+ u v633 = 0;
+ u v634 = 0;
+ u v635 = 0;
+ u v636 = 0;
+ u v637 = 0;
+ u v638 = 0;
+ u v639 = 0;
+ u v640 = 0;
+ u v641 = 0;
+ u v642 = 0;
+ u v643 = 0;
+ u v644 = 0;
+ u v645 = 0;
+ u v646 = 0;
+ u v647 = 0;
+ u v648 = 0;
+ u v649 = 0;
+ u v650 = 0;
+ u v651 = 0;
+ u v652 = 0;
+ u v653 = 0;
+ u v654 = 0;
+ u v655 = 0;
+ u v656 = 0;
+ u v657 = 0;
+ u v658 = 0;
+ u v659 = 0;
+ u v660 = 0;
+ u v661 = 0;
+ u v662 = 0;
+ u v663 = 0;
+ u v664 = 0;
+ u v665 = 0;
+ u v666 = 0;
+ u v667 = 0;
+ u v668 = 0;
+ u v669 = 0;
+ u v670 = 0;
+ u v671 = 0;
+ u v672 = 0;
+ u v673 = 0;
+ u v674 = 0;
+ u v675 = 0;
+ u v676 = 0;
+ u v677 = 0;
+ u v678 = 0;
+ u v679 = 0;
+ u v680 = 0;
+ u v681 = 0;
+ u v682 = 0;
+ u v683 = 0;
+ u v684 = 0;
+ u v685 = 0;
+ u v686 = 0;
+ if (!(*(u*)(vc + 8UL))) goto b5;
+ v17 = 0UL;
+b6: if (!(v17)) goto b3;
+ v18 = (u)zdie;
+ v19 = (u)"output not opened";
+ v20 = ((u(*)())(v18))(v19);
v20;
- v21 = (u)zfree;
- v22 = *(u*)(vc + 0UL);
- v23 = *(u*)(vb + 48UL);
- v24 = ((u(*)())v21)(v22, v23);
- v24;
- return vn;
-b24: *(u*)(*(u*)(vn + 48UL) + vj * 8UL) = *(u*)(*(u*)(vb + 48UL) + vi * 8UL);
- vj = vj + 1UL;
- vi = vi + 1UL;
- goto b20;
-b19: *(u*)(*(u*)(vn + 48UL) + vj * 8UL) = *(u*)(*(u*)(va + 48UL) + vi * 8UL);
- vj = vj + 1UL;
- vi = vi + 1UL;
- goto b15;
-b11: v8 = 1UL;
- goto b12;
-b5: v7 = 1UL;
- goto b6;
-}
-u znfa_any(u vc) {
- u vn = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v2 = (u)zalloc;
- v3 = *(u*)(vc + 0UL);
- v4 = 72UL;
- v5 = ((u(*)())v2)(v3, v4);
- vn = v5;
- *(u*)(vn + 0UL) = *(u*)(vc + 136UL);
- *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
- *(u*)(vn + 32UL) = 0UL;
- *(u*)(vn + 16UL) = 0UL;
- *(u*)(vn + 24UL) = 255UL;
- v6 = (u)zalloc;
- v7 = *(u*)(vc + 0UL);
- v8 = 8UL;
- v9 = ((u(*)())v6)(v7, v8);
- *(u*)(vn + 48UL) = v9;
- *(u*)(vn + 56UL) = 1UL;
- *(u*)(*(u*)(vn + 48UL) + 0UL * 8UL) = vn;
- return vn;
-}
-u znfa_concat(u vc, u va, u vb) {
- u vi = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- if (!va) goto b5;
- v4 = 0UL;
-b6: if (!v4) goto b3;
- return 0UL;
-b3: if (!vb) goto b11;
- v5 = 0UL;
-b12: if (!v5) goto b9;
- return 0UL;
-b9: vi = 0UL;
-b13: if (vi != *(u*)(va + 56UL)) goto b17;
- v6 = (u)zfree;
- v7 = *(u*)(vc + 0UL);
- v8 = *(u*)(va + 48UL);
- v9 = ((u(*)())v6)(v7, v8);
- v9;
- *(u*)(va + 48UL) = *(u*)(vb + 48UL);
- *(u*)(va + 56UL) = *(u*)(vb + 56UL);
- return va;
-b17: *(u*)(*(u*)(*(u*)(va + 48UL) + vi * 8UL) + 32UL) = vb;
- vi = vi + 1UL;
- goto b13;
-b11: v5 = 1UL;
- goto b12;
-b5: v4 = 1UL;
- goto b6;
-}
-u znfa_empty(u vc) {
- u vn = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- v2 = (u)zalloc;
- v3 = *(u*)(vc + 0UL);
- v4 = 72UL;
- v5 = ((u(*)())v2)(v3, v4);
- vn = v5;
- *(u*)(vn + 0UL) = *(u*)(vc + 136UL);
- *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
- *(u*)(vn + 16UL) = -1UL;
- *(u*)(vn + 24UL) = -1UL;
- *(u*)(vn + 32UL) = 0UL;
- *(u*)(vn + 40UL) = 0UL;
- v6 = (u)zalloc;
- v7 = *(u*)(vc + 0UL);
- v8 = 8UL;
- v9 = ((u(*)())v6)(v7, v8);
- *(u*)(vn + 48UL) = v9;
- *(u*)(vn + 56UL) = 1UL;
- *(u*)(*(u*)(vn + 48UL) + 0UL * 8UL) = vn;
- return vn;
-}
-u znfa_lit(u vc, u vstart, u vend) {
- u vn = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- v4 = (u)zalloc;
- v5 = *(u*)(vc + 0UL);
- v6 = 72UL;
- v7 = ((u(*)())v4)(v5, v6);
- vn = v7;
- *(u*)(vn + 0UL) = *(u*)(vc + 136UL);
- *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
- *(u*)(vn + 32UL) = 0UL;
- *(u*)(vn + 16UL) = vstart;
- *(u*)(vn + 24UL) = vend;
- v8 = (u)zalloc;
- v9 = *(u*)(vc + 0UL);
- v10 = 8UL;
- v11 = ((u(*)())v8)(v9, v10);
- *(u*)(vn + 48UL) = v11;
- *(u*)(vn + 56UL) = 1UL;
- *(u*)(*(u*)(vn + 48UL) + 0UL * 8UL) = vn;
- return vn;
-}
-u znfa_plus(u vc, u va) {
- u vb = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- if (!va) goto b5;
- v3 = 0UL;
-b6: if (!v3) goto b3;
- return 0UL;
-b3: v4 = (u)zalloc;
- v5 = *(u*)(vc + 0UL);
- v6 = 72UL;
- v7 = ((u(*)())v4)(v5, v6);
- vb = v7;
- *(u*)(vb + 0UL) = *(u*)(vc + 136UL);
- *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
- *(u*)(vb + 16UL) = -1UL;
- *(u*)(vb + 24UL) = -1UL;
- *(u*)(vb + 32UL) = 0UL;
- *(u*)(vb + 40UL) = va;
- v8 = (u)zalloc;
- v9 = *(u*)(vc + 0UL);
- v10 = 8UL;
- v11 = ((u(*)())v8)(v9, v10);
- *(u*)(vb + 48UL) = v11;
- *(u*)(vb + 56UL) = 1UL;
- *(u*)(*(u*)(vb + 48UL) + 0UL * 8UL) = vb;
- v12 = (u)znfa_concat;
- v13 = vc;
- v14 = va;
- v15 = vb;
- v16 = ((u(*)())v12)(v13, v14, v15);
- return v16;
-b5: v3 = 1UL;
- goto b6;
-}
-u znfa_qmark(u vc, u va) {
- u vb = 0;
- u vi = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- if (!va) goto b5;
- v4 = 0UL;
-b6: if (!v4) goto b3;
- v5 = (u)znfa_empty;
- v6 = vc;
- v7 = ((u(*)())v5)(v6);
- return v7;
-b3: v8 = (u)zalloc;
- v9 = *(u*)(vc + 0UL);
- v10 = 72UL;
- v11 = ((u(*)())v8)(v9, v10);
- vb = v11;
- *(u*)(vb + 0UL) = *(u*)(vc + 136UL);
- *(u*)(vc + 136UL) = *(u*)(vc + 136UL) + 1UL;
- *(u*)(vb + 16UL) = -1UL;
- *(u*)(vb + 24UL) = -1UL;
- *(u*)(vb + 32UL) = 0UL;
- *(u*)(vb + 40UL) = va;
- *(u*)(vb + 56UL) = *(u*)(va + 56UL) + 1UL;
- v12 = (u)zalloc;
- v13 = *(u*)(vc + 0UL);
- v14 = 8UL * *(u*)(vb + 56UL);
- v15 = ((u(*)())v12)(v13, v14);
- *(u*)(vb + 48UL) = v15;
-b10: if (vi != *(u*)(va + 56UL)) goto b14;
- *(u*)(*(u*)(vb + 48UL) + vi * 8UL) = vb;
- v16 = (u)zfree;
- v17 = *(u*)(vc + 0UL);
- v18 = *(u*)(va + 48UL);
- v19 = ((u(*)())v16)(v17, v18);
- v19;
- return vb;
-b14: *(u*)(*(u*)(vb + 48UL) + vi * 8UL) = *(u*)(*(u*)(va + 48UL) + vi * 8UL);
+b1: vload_addr = 1048576UL;
+ if (!(vstart)) goto b16;
+ v22 = 0UL;
+b17: if (!(v22)) goto b12;
+ v21 = 1UL;
+b14: if (!(v21)) goto b10;
+ if (!(vkstart)) goto b26;
+ v24 = 0UL;
+b27: if (!(v24)) goto b24;
+ v25 = (u)zdie;
+ v26 = (u)"_start is not defined";
+ v27 = ((u(*)())(v25))(v26);
+ v27;
+b22:b8: vmb_magic = 464367618UL;
+ vmb_flags = 65539UL;
+ vmb_checksum = -(vmb_magic + vmb_flags);
+ vmb_addr = vload_addr + 120UL;
+ if (!(vkstart)) goto b33;
+ if (!(*(u*)(vkstart + 16UL))) goto b33;
+ v28 = 1UL;
+b35: if (!(v28)) goto b31;
+ vkentry = vload_addr + *(u*)(vkstart + 8UL);
+b29: v29 = (u)zemit_sections;
+ v30 = vc;
+ v31 = ((u(*)())(v29))(v30);
+ vshoff = v31;
+ vtext_size = *(u*)(vc + 24UL);
+ vtext_end = vload_addr + vtext_size;
+ v32 = (u)zputchar;
+ v33 = vc;
+ v34 = 127UL;
+ v35 = ((u(*)())(v32))(v33, v34);
+ v35;
+ v36 = (u)zputchar;
+ v37 = vc;
+ v38 = 69UL;
+ v39 = ((u(*)())(v36))(v37, v38);
+ v39;
+ v40 = (u)zputchar;
+ v41 = vc;
+ v42 = 76UL;
+ v43 = ((u(*)())(v40))(v41, v42);
+ v43;
+ v44 = (u)zputchar;
+ v45 = vc;
+ v46 = 70UL;
+ v47 = ((u(*)())(v44))(v45, v46);
+ v47;
+ v48 = (u)zputchar;
+ v49 = vc;
+ v50 = 2UL;
+ v51 = ((u(*)())(v48))(v49, v50);
+ v51;
+ v52 = (u)zputchar;
+ v53 = vc;
+ v54 = 1UL;
+ v55 = ((u(*)())(v52))(v53, v54);
+ v55;
+ v56 = (u)zputchar;
+ v57 = vc;
+ v58 = 1UL;
+ v59 = ((u(*)())(v56))(v57, v58);
+ v59;
+ v60 = (u)zputchar;
+ v61 = vc;
+ v62 = 0UL;
+ v63 = ((u(*)())(v60))(v61, v62);
+ v63;
+ v64 = (u)zputchar;
+ v65 = vc;
+ v66 = 0UL;
+ v67 = ((u(*)())(v64))(v65, v66);
+ v67;
+ v68 = (u)zputchar;
+ v69 = vc;
+ v70 = 0UL;
+ v71 = ((u(*)())(v68))(v69, v70);
+ v71;
+ v72 = (u)zputchar;
+ v73 = vc;
+ v74 = 0UL;
+ v75 = ((u(*)())(v72))(v73, v74);
+ v75;
+ v76 = (u)zputchar;
+ v77 = vc;
+ v78 = 0UL;
+ v79 = ((u(*)())(v76))(v77, v78);
+ v79;
+ v80 = (u)zputchar;
+ v81 = vc;
+ v82 = 0UL;
+ v83 = ((u(*)())(v80))(v81, v82);
+ v83;
+ v84 = (u)zputchar;
+ v85 = vc;
+ v86 = 0UL;
+ v87 = ((u(*)())(v84))(v85, v86);
+ v87;
+ v88 = (u)zputchar;
+ v89 = vc;
+ v90 = 0UL;
+ v91 = ((u(*)())(v88))(v89, v90);
+ v91;
+ v92 = (u)zputchar;
+ v93 = vc;
+ v94 = 0UL;
+ v95 = ((u(*)())(v92))(v93, v94);
+ v95;
+ v96 = (u)zputchar;
+ v97 = vc;
+ v98 = 2UL;
+ v99 = ((u(*)())(v96))(v97, v98);
+ v99;
+ v100 = (u)zputchar;
+ v101 = vc;
+ v102 = 0UL;
+ v103 = ((u(*)())(v100))(v101, v102);
+ v103;
+ v104 = (u)zputchar;
+ v105 = vc;
+ v106 = vmachine;
+ v107 = ((u(*)())(v104))(v105, v106);
+ v107;
+ v108 = (u)zputchar;
+ v109 = vc;
+ v110 = 0UL;
+ v111 = ((u(*)())(v108))(v109, v110);
+ v111;
+ v112 = (u)zputchar;
+ v113 = vc;
+ v114 = 1UL;
+ v115 = ((u(*)())(v112))(v113, v114);
+ v115;
+ v116 = (u)zputchar;
+ v117 = vc;
+ v118 = 0UL;
+ v119 = ((u(*)())(v116))(v117, v118);
+ v119;
+ v120 = (u)zputchar;
+ v121 = vc;
+ v122 = 0UL;
+ v123 = ((u(*)())(v120))(v121, v122);
+ v123;
+ v124 = (u)zputchar;
+ v125 = vc;
+ v126 = 0UL;
+ v127 = ((u(*)())(v124))(v125, v126);
+ v127;
+ v128 = (u)zputchar;
+ v129 = vc;
+ v130 = ventry;
+ v131 = ((u(*)())(v128))(v129, v130);
+ v131;
+ v132 = (u)zputchar;
+ v133 = vc;
+ v134 = ventry >> 8UL;
+ v135 = ((u(*)())(v132))(v133, v134);
+ v135;
+ v136 = (u)zputchar;
+ v137 = vc;
+ v138 = ventry >> 16UL;
+ v139 = ((u(*)())(v136))(v137, v138);
+ v139;
+ v140 = (u)zputchar;
+ v141 = vc;
+ v142 = ventry >> 24UL;
+ v143 = ((u(*)())(v140))(v141, v142);
+ v143;
+ v144 = (u)zputchar;
+ v145 = vc;
+ v146 = 0UL;
+ v147 = ((u(*)())(v144))(v145, v146);
+ v147;
+ v148 = (u)zputchar;
+ v149 = vc;
+ v150 = 0UL;
+ v151 = ((u(*)())(v148))(v149, v150);
+ v151;
+ v152 = (u)zputchar;
+ v153 = vc;
+ v154 = 0UL;
+ v155 = ((u(*)())(v152))(v153, v154);
+ v155;
+ v156 = (u)zputchar;
+ v157 = vc;
+ v158 = 0UL;
+ v159 = ((u(*)())(v156))(v157, v158);
+ v159;
+ v160 = (u)zputchar;
+ v161 = vc;
+ v162 = 64UL;
+ v163 = ((u(*)())(v160))(v161, v162);
+ v163;
+ v164 = (u)zputchar;
+ v165 = vc;
+ v166 = 0UL;
+ v167 = ((u(*)())(v164))(v165, v166);
+ v167;
+ v168 = (u)zputchar;
+ v169 = vc;
+ v170 = 0UL;
+ v171 = ((u(*)())(v168))(v169, v170);
+ v171;
+ v172 = (u)zputchar;
+ v173 = vc;
+ v174 = 0UL;
+ v175 = ((u(*)())(v172))(v173, v174);
+ v175;
+ v176 = (u)zputchar;
+ v177 = vc;
+ v178 = 0UL;
+ v179 = ((u(*)())(v176))(v177, v178);
+ v179;
+ v180 = (u)zputchar;
+ v181 = vc;
+ v182 = 0UL;
+ v183 = ((u(*)())(v180))(v181, v182);
+ v183;
+ v184 = (u)zputchar;
+ v185 = vc;
+ v186 = 0UL;
+ v187 = ((u(*)())(v184))(v185, v186);
+ v187;
+ v188 = (u)zputchar;
+ v189 = vc;
+ v190 = 0UL;
+ v191 = ((u(*)())(v188))(v189, v190);
+ v191;
+ v192 = (u)zputchar;
+ v193 = vc;
+ v194 = vshoff;
+ v195 = ((u(*)())(v192))(v193, v194);
+ v195;
+ v196 = (u)zputchar;
+ v197 = vc;
+ v198 = vshoff >> 8UL;
+ v199 = ((u(*)())(v196))(v197, v198);
+ v199;
+ v200 = (u)zputchar;
+ v201 = vc;
+ v202 = vshoff >> 16UL;
+ v203 = ((u(*)())(v200))(v201, v202);
+ v203;
+ v204 = (u)zputchar;
+ v205 = vc;
+ v206 = vshoff >> 24UL;
+ v207 = ((u(*)())(v204))(v205, v206);
+ v207;
+ v208 = (u)zputchar;
+ v209 = vc;
+ v210 = vshoff >> 32UL;
+ v211 = ((u(*)())(v208))(v209, v210);
+ v211;
+ v212 = (u)zputchar;
+ v213 = vc;
+ v214 = vshoff >> 40UL;
+ v215 = ((u(*)())(v212))(v213, v214);
+ v215;
+ v216 = (u)zputchar;
+ v217 = vc;
+ v218 = vshoff >> 48UL;
+ v219 = ((u(*)())(v216))(v217, v218);
+ v219;
+ v220 = (u)zputchar;
+ v221 = vc;
+ v222 = vshoff >> 56UL;
+ v223 = ((u(*)())(v220))(v221, v222);
+ v223;
+ v224 = (u)zputchar;
+ v225 = vc;
+ v226 = 0UL;
+ v227 = ((u(*)())(v224))(v225, v226);
+ v227;
+ v228 = (u)zputchar;
+ v229 = vc;
+ v230 = 0UL;
+ v231 = ((u(*)())(v228))(v229, v230);
+ v231;
+ v232 = (u)zputchar;
+ v233 = vc;
+ v234 = 0UL;
+ v235 = ((u(*)())(v232))(v233, v234);
+ v235;
+ v236 = (u)zputchar;
+ v237 = vc;
+ v238 = 0UL;
+ v239 = ((u(*)())(v236))(v237, v238);
+ v239;
+ v240 = (u)zputchar;
+ v241 = vc;
+ v242 = 64UL;
+ v243 = ((u(*)())(v240))(v241, v242);
+ v243;
+ v244 = (u)zputchar;
+ v245 = vc;
+ v246 = 0UL;
+ v247 = ((u(*)())(v244))(v245, v246);
+ v247;
+ v248 = (u)zputchar;
+ v249 = vc;
+ v250 = 56UL;
+ v251 = ((u(*)())(v248))(v249, v250);
+ v251;
+ v252 = (u)zputchar;
+ v253 = vc;
+ v254 = 0UL;
+ v255 = ((u(*)())(v252))(v253, v254);
+ v255;
+ v256 = (u)zputchar;
+ v257 = vc;
+ v258 = 1UL;
+ v259 = ((u(*)())(v256))(v257, v258);
+ v259;
+ v260 = (u)zputchar;
+ v261 = vc;
+ v262 = 0UL;
+ v263 = ((u(*)())(v260))(v261, v262);
+ v263;
+ v264 = (u)zputchar;
+ v265 = vc;
+ v266 = 64UL;
+ v267 = ((u(*)())(v264))(v265, v266);
+ v267;
+ v268 = (u)zputchar;
+ v269 = vc;
+ v270 = 0UL;
+ v271 = ((u(*)())(v268))(v269, v270);
+ v271;
+ v272 = (u)zputchar;
+ v273 = vc;
+ v274 = *(u*)(vc + 72UL);
+ v275 = ((u(*)())(v272))(v273, v274);
+ v275;
+ v276 = (u)zputchar;
+ v277 = vc;
+ v278 = *(u*)(vc + 72UL) >> 8UL;
+ v279 = ((u(*)())(v276))(v277, v278);
+ v279;
+ v280 = (u)zfind_section;
+ v281 = vc;
+ v282 = (u)".shstrtab";
+ v283 = ((u(*)())(v280))(v281, v282);
+ vs = v283;
+ v284 = (u)zputchar;
+ v285 = vc;
+ v286 = *(u*)(vs + 32UL);
+ v287 = ((u(*)())(v284))(v285, v286);
+ v287;
+ v288 = (u)zputchar;
+ v289 = vc;
+ v290 = *(u*)(vs + 32UL) >> 8UL;
+ v291 = ((u(*)())(v288))(v289, v290);
+ v291;
+ v292 = (u)zputchar;
+ v293 = vc;
+ v294 = 1UL;
+ v295 = ((u(*)())(v292))(v293, v294);
+ v295;
+ v296 = (u)zputchar;
+ v297 = vc;
+ v298 = 0UL;
+ v299 = ((u(*)())(v296))(v297, v298);
+ v299;
+ v300 = (u)zputchar;
+ v301 = vc;
+ v302 = 0UL;
+ v303 = ((u(*)())(v300))(v301, v302);
+ v303;
+ v304 = (u)zputchar;
+ v305 = vc;
+ v306 = 0UL;
+ v307 = ((u(*)())(v304))(v305, v306);
+ v307;
+ v308 = (u)zputchar;
+ v309 = vc;
+ v310 = 5UL;
+ v311 = ((u(*)())(v308))(v309, v310);
+ v311;
+ v312 = (u)zputchar;
+ v313 = vc;
+ v314 = 0UL;
+ v315 = ((u(*)())(v312))(v313, v314);
+ v315;
+ v316 = (u)zputchar;
+ v317 = vc;
+ v318 = 0UL;
+ v319 = ((u(*)())(v316))(v317, v318);
+ v319;
+ v320 = (u)zputchar;
+ v321 = vc;
+ v322 = 0UL;
+ v323 = ((u(*)())(v320))(v321, v322);
+ v323;
+ v324 = (u)zputchar;
+ v325 = vc;
+ v326 = 0UL;
+ v327 = ((u(*)())(v324))(v325, v326);
+ v327;
+ v328 = (u)zputchar;
+ v329 = vc;
+ v330 = 0UL;
+ v331 = ((u(*)())(v328))(v329, v330);
+ v331;
+ v332 = (u)zputchar;
+ v333 = vc;
+ v334 = 0UL;
+ v335 = ((u(*)())(v332))(v333, v334);
+ v335;
+ v336 = (u)zputchar;
+ v337 = vc;
+ v338 = 0UL;
+ v339 = ((u(*)())(v336))(v337, v338);
+ v339;
+ v340 = (u)zputchar;
+ v341 = vc;
+ v342 = 0UL;
+ v343 = ((u(*)())(v340))(v341, v342);
+ v343;
+ v344 = (u)zputchar;
+ v345 = vc;
+ v346 = 0UL;
+ v347 = ((u(*)())(v344))(v345, v346);
+ v347;
+ v348 = (u)zputchar;
+ v349 = vc;
+ v350 = 0UL;
+ v351 = ((u(*)())(v348))(v349, v350);
+ v351;
+ v352 = (u)zputchar;
+ v353 = vc;
+ v354 = 0UL;
+ v355 = ((u(*)())(v352))(v353, v354);
+ v355;
+ v356 = (u)zputchar;
+ v357 = vc;
+ v358 = 0UL;
+ v359 = ((u(*)())(v356))(v357, v358);
+ v359;
+ v360 = (u)zputchar;
+ v361 = vc;
+ v362 = 0UL;
+ v363 = ((u(*)())(v360))(v361, v362);
+ v363;
+ v364 = (u)zputchar;
+ v365 = vc;
+ v366 = 16UL;
+ v367 = ((u(*)())(v364))(v365, v366);
+ v367;
+ v368 = (u)zputchar;
+ v369 = vc;
+ v370 = 0UL;
+ v371 = ((u(*)())(v368))(v369, v370);
+ v371;
+ v372 = (u)zputchar;
+ v373 = vc;
+ v374 = 0UL;
+ v375 = ((u(*)())(v372))(v373, v374);
+ v375;
+ v376 = (u)zputchar;
+ v377 = vc;
+ v378 = 0UL;
+ v379 = ((u(*)())(v376))(v377, v378);
+ v379;
+ v380 = (u)zputchar;
+ v381 = vc;
+ v382 = 0UL;
+ v383 = ((u(*)())(v380))(v381, v382);
+ v383;
+ v384 = (u)zputchar;
+ v385 = vc;
+ v386 = 0UL;
+ v387 = ((u(*)())(v384))(v385, v386);
+ v387;
+ v388 = (u)zputchar;
+ v389 = vc;
+ v390 = 0UL;
+ v391 = ((u(*)())(v388))(v389, v390);
+ v391;
+ v392 = (u)zputchar;
+ v393 = vc;
+ v394 = 0UL;
+ v395 = ((u(*)())(v392))(v393, v394);
+ v395;
+ v396 = (u)zputchar;
+ v397 = vc;
+ v398 = 0UL;
+ v399 = ((u(*)())(v396))(v397, v398);
+ v399;
+ v400 = (u)zputchar;
+ v401 = vc;
+ v402 = 0UL;
+ v403 = ((u(*)())(v400))(v401, v402);
+ v403;
+ v404 = (u)zputchar;
+ v405 = vc;
+ v406 = 0UL;
+ v407 = ((u(*)())(v404))(v405, v406);
+ v407;
+ v408 = (u)zputchar;
+ v409 = vc;
+ v410 = 0UL;
+ v411 = ((u(*)())(v408))(v409, v410);
+ v411;
+ v412 = (u)zputchar;
+ v413 = vc;
+ v414 = 0UL;
+ v415 = ((u(*)())(v412))(v413, v414);
+ v415;
+ v416 = (u)zputchar;
+ v417 = vc;
+ v418 = 0UL;
+ v419 = ((u(*)())(v416))(v417, v418);
+ v419;
+ v420 = (u)zputchar;
+ v421 = vc;
+ v422 = vtext_size;
+ v423 = ((u(*)())(v420))(v421, v422);
+ v423;
+ v424 = (u)zputchar;
+ v425 = vc;
+ v426 = vtext_size >> 8UL;
+ v427 = ((u(*)())(v424))(v425, v426);
+ v427;
+ v428 = (u)zputchar;
+ v429 = vc;
+ v430 = vtext_size >> 16UL;
+ v431 = ((u(*)())(v428))(v429, v430);
+ v431;
+ v432 = (u)zputchar;
+ v433 = vc;
+ v434 = vtext_size >> 24UL;
+ v435 = ((u(*)())(v432))(v433, v434);
+ v435;
+ v436 = (u)zputchar;
+ v437 = vc;
+ v438 = 0UL;
+ v439 = ((u(*)())(v436))(v437, v438);
+ v439;
+ v440 = (u)zputchar;
+ v441 = vc;
+ v442 = 0UL;
+ v443 = ((u(*)())(v440))(v441, v442);
+ v443;
+ v444 = (u)zputchar;
+ v445 = vc;
+ v446 = 0UL;
+ v447 = ((u(*)())(v444))(v445, v446);
+ v447;
+ v448 = (u)zputchar;
+ v449 = vc;
+ v450 = 0UL;
+ v451 = ((u(*)())(v448))(v449, v450);
+ v451;
+ v452 = (u)zputchar;
+ v453 = vc;
+ v454 = vtext_size;
+ v455 = ((u(*)())(v452))(v453, v454);
+ v455;
+ v456 = (u)zputchar;
+ v457 = vc;
+ v458 = vtext_size >> 8UL;
+ v459 = ((u(*)())(v456))(v457, v458);
+ v459;
+ v460 = (u)zputchar;
+ v461 = vc;
+ v462 = vtext_size >> 16UL;
+ v463 = ((u(*)())(v460))(v461, v462);
+ v463;
+ v464 = (u)zputchar;
+ v465 = vc;
+ v466 = vtext_size >> 24UL;
+ v467 = ((u(*)())(v464))(v465, v466);
+ v467;
+ v468 = (u)zputchar;
+ v469 = vc;
+ v470 = 0UL;
+ v471 = ((u(*)())(v468))(v469, v470);
+ v471;
+ v472 = (u)zputchar;
+ v473 = vc;
+ v474 = 0UL;
+ v475 = ((u(*)())(v472))(v473, v474);
+ v475;
+ v476 = (u)zputchar;
+ v477 = vc;
+ v478 = 0UL;
+ v479 = ((u(*)())(v476))(v477, v478);
+ v479;
+ v480 = (u)zputchar;
+ v481 = vc;
+ v482 = 0UL;
+ v483 = ((u(*)())(v480))(v481, v482);
+ v483;
+ v484 = (u)zputchar;
+ v485 = vc;
+ v486 = 0UL;
+ v487 = ((u(*)())(v484))(v485, v486);
+ v487;
+ v488 = (u)zputchar;
+ v489 = vc;
+ v490 = 0UL;
+ v491 = ((u(*)())(v488))(v489, v490);
+ v491;
+ v492 = (u)zputchar;
+ v493 = vc;
+ v494 = 0UL;
+ v495 = ((u(*)())(v492))(v493, v494);
+ v495;
+ v496 = (u)zputchar;
+ v497 = vc;
+ v498 = 0UL;
+ v499 = ((u(*)())(v496))(v497, v498);
+ v499;
+ v500 = (u)zputchar;
+ v501 = vc;
+ v502 = 0UL;
+ v503 = ((u(*)())(v500))(v501, v502);
+ v503;
+ v504 = (u)zputchar;
+ v505 = vc;
+ v506 = 0UL;
+ v507 = ((u(*)())(v504))(v505, v506);
+ v507;
+ v508 = (u)zputchar;
+ v509 = vc;
+ v510 = 0UL;
+ v511 = ((u(*)())(v508))(v509, v510);
+ v511;
+ v512 = (u)zputchar;
+ v513 = vc;
+ v514 = 0UL;
+ v515 = ((u(*)())(v512))(v513, v514);
+ v515;
+ v516 = (u)zputchar;
+ v517 = vc;
+ v518 = vmb_magic;
+ v519 = ((u(*)())(v516))(v517, v518);
+ v519;
+ v520 = (u)zputchar;
+ v521 = vc;
+ v522 = vmb_magic >> 8UL;
+ v523 = ((u(*)())(v520))(v521, v522);
+ v523;
+ v524 = (u)zputchar;
+ v525 = vc;
+ v526 = vmb_magic >> 16UL;
+ v527 = ((u(*)())(v524))(v525, v526);
+ v527;
+ v528 = (u)zputchar;
+ v529 = vc;
+ v530 = vmb_magic >> 24UL;
+ v531 = ((u(*)())(v528))(v529, v530);
+ v531;
+ v532 = (u)zputchar;
+ v533 = vc;
+ v534 = vmb_flags;
+ v535 = ((u(*)())(v532))(v533, v534);
+ v535;
+ v536 = (u)zputchar;
+ v537 = vc;
+ v538 = vmb_flags >> 8UL;
+ v539 = ((u(*)())(v536))(v537, v538);
+ v539;
+ v540 = (u)zputchar;
+ v541 = vc;
+ v542 = vmb_flags >> 16UL;
+ v543 = ((u(*)())(v540))(v541, v542);
+ v543;
+ v544 = (u)zputchar;
+ v545 = vc;
+ v546 = vmb_flags >> 24UL;
+ v547 = ((u(*)())(v544))(v545, v546);
+ v547;
+ v548 = (u)zputchar;
+ v549 = vc;
+ v550 = vmb_checksum;
+ v551 = ((u(*)())(v548))(v549, v550);
+ v551;
+ v552 = (u)zputchar;
+ v553 = vc;
+ v554 = vmb_checksum >> 8UL;
+ v555 = ((u(*)())(v552))(v553, v554);
+ v555;
+ v556 = (u)zputchar;
+ v557 = vc;
+ v558 = vmb_checksum >> 16UL;
+ v559 = ((u(*)())(v556))(v557, v558);
+ v559;
+ v560 = (u)zputchar;
+ v561 = vc;
+ v562 = vmb_checksum >> 24UL;
+ v563 = ((u(*)())(v560))(v561, v562);
+ v563;
+ v564 = (u)zputchar;
+ v565 = vc;
+ v566 = vmb_addr;
+ v567 = ((u(*)())(v564))(v565, v566);
+ v567;
+ v568 = (u)zputchar;
+ v569 = vc;
+ v570 = vmb_addr >> 8UL;
+ v571 = ((u(*)())(v568))(v569, v570);
+ v571;
+ v572 = (u)zputchar;
+ v573 = vc;
+ v574 = vmb_addr >> 16UL;
+ v575 = ((u(*)())(v572))(v573, v574);
+ v575;
+ v576 = (u)zputchar;
+ v577 = vc;
+ v578 = vmb_addr >> 24UL;
+ v579 = ((u(*)())(v576))(v577, v578);
+ v579;
+ v580 = (u)zputchar;
+ v581 = vc;
+ v582 = vload_addr;
+ v583 = ((u(*)())(v580))(v581, v582);
+ v583;
+ v584 = (u)zputchar;
+ v585 = vc;
+ v586 = vload_addr >> 8UL;
+ v587 = ((u(*)())(v584))(v585, v586);
+ v587;
+ v588 = (u)zputchar;
+ v589 = vc;
+ v590 = vload_addr >> 16UL;
+ v591 = ((u(*)())(v588))(v589, v590);
+ v591;
+ v592 = (u)zputchar;
+ v593 = vc;
+ v594 = vload_addr >> 24UL;
+ v595 = ((u(*)())(v592))(v593, v594);
+ v595;
+ v596 = (u)zputchar;
+ v597 = vc;
+ v598 = vtext_end;
+ v599 = ((u(*)())(v596))(v597, v598);
+ v599;
+ v600 = (u)zputchar;
+ v601 = vc;
+ v602 = vtext_end >> 8UL;
+ v603 = ((u(*)())(v600))(v601, v602);
+ v603;
+ v604 = (u)zputchar;
+ v605 = vc;
+ v606 = vtext_end >> 16UL;
+ v607 = ((u(*)())(v604))(v605, v606);
+ v607;
+ v608 = (u)zputchar;
+ v609 = vc;
+ v610 = vtext_end >> 24UL;
+ v611 = ((u(*)())(v608))(v609, v610);
+ v611;
+ v612 = (u)zputchar;
+ v613 = vc;
+ v614 = 0UL;
+ v615 = ((u(*)())(v612))(v613, v614);
+ v615;
+ v616 = (u)zputchar;
+ v617 = vc;
+ v618 = 0UL;
+ v619 = ((u(*)())(v616))(v617, v618);
+ v619;
+ v620 = (u)zputchar;
+ v621 = vc;
+ v622 = 0UL;
+ v623 = ((u(*)())(v620))(v621, v622);
+ v623;
+ v624 = (u)zputchar;
+ v625 = vc;
+ v626 = 0UL;
+ v627 = ((u(*)())(v624))(v625, v626);
+ v627;
+ v628 = (u)zputchar;
+ v629 = vc;
+ v630 = vkentry;
+ v631 = ((u(*)())(v628))(v629, v630);
+ v631;
+ v632 = (u)zputchar;
+ v633 = vc;
+ v634 = vkentry >> 8UL;
+ v635 = ((u(*)())(v632))(v633, v634);
+ v635;
+ v636 = (u)zputchar;
+ v637 = vc;
+ v638 = vkentry >> 16UL;
+ v639 = ((u(*)())(v636))(v637, v638);
+ v639;
+ v640 = (u)zputchar;
+ v641 = vc;
+ v642 = vkentry >> 24UL;
+ v643 = ((u(*)())(v640))(v641, v642);
+ v643;
+ v644 = (u)zputchar;
+ v645 = vc;
+ v646 = 0UL;
+ v647 = ((u(*)())(v644))(v645, v646);
+ v647;
+ v648 = (u)zputchar;
+ v649 = vc;
+ v650 = 0UL;
+ v651 = ((u(*)())(v648))(v649, v650);
+ v651;
+ v652 = (u)zputchar;
+ v653 = vc;
+ v654 = 0UL;
+ v655 = ((u(*)())(v652))(v653, v654);
+ v655;
+ v656 = (u)zputchar;
+ v657 = vc;
+ v658 = 0UL;
+ v659 = ((u(*)())(v656))(v657, v658);
+ v659;
+ v660 = (u)zputchar;
+ v661 = vc;
+ v662 = 0UL;
+ v663 = ((u(*)())(v660))(v661, v662);
+ v663;
+ v664 = (u)zputchar;
+ v665 = vc;
+ v666 = 0UL;
+ v667 = ((u(*)())(v664))(v665, v666);
+ v667;
+ v668 = (u)zputchar;
+ v669 = vc;
+ v670 = 0UL;
+ v671 = ((u(*)())(v668))(v669, v670);
+ v671;
+ v672 = (u)zputchar;
+ v673 = vc;
+ v674 = 0UL;
+ v675 = ((u(*)())(v672))(v673, v674);
+ v675;
+ vb = *(u*)(vc + 32UL);
+b198: if (!(vb)) goto b204;
+ v676 = 0UL;
+b205: if (!(v676)) goto b202;
+ v681 = (u)zfflush;
+ v682 = *(u*)(vc + 8UL);
+ v683 = ((u(*)())(v681))(v682);
+ v683;
+ if (!(*(u*)(vc + 80UL))) goto b215;
+ v684 = (u)zfflush;
+ v685 = *(u*)(vc + 80UL);
+ v686 = ((u(*)())(v684))(v685);
+ v686;
+b213: return 0UL;
+b215: goto b213;
+b202: vi = 0UL;
+b206: if ((s)(vi) < (s)(*(u*)(vb + 16UL))) goto b210;
+ vb = *(u*)(vb + 0UL);
+ goto b198;
+b210: v677 = (u)zputchar;
+ v678 = vc;
+ v679 = (u)*(b*)(*(u*)(vb + 8UL) + vi * 1UL);
+ v680 = ((u(*)())(v677))(v678, v679);
+ v680;
vi = vi + 1UL;
- goto b10;
-b5: v4 = 1UL;
+ goto b206;
+b204: v676 = 1UL;
+ goto b205;
+b31: vmb_magic = 0UL;
+ vkentry = 0UL;
+ goto b29;
+b33: v28 = 0UL;
+ goto b35;
+b24: goto b22;
+b26: v24 = 1UL;
+ goto b27;
+b10: ventry = vload_addr + *(u*)(vstart + 8UL);
+ goto b8;
+b12: if (!(*(u*)(vstart + 16UL))) goto b20;
+ v23 = 0UL;
+b21: if (!(v23)) goto b18;
+ v21 = 1UL;
+ goto b14;
+b18: v21 = 0UL;
+ goto b14;
+b20: v23 = 1UL;
+ goto b21;
+b16: v22 = 1UL;
+ goto b17;
+b3: goto b1;
+b5: v17 = 1UL;
goto b6;
}
-u znfa_star(u vc, u va) {
+u zx86_64_builtin(u vc) {
+ u vd = 0;
u v2 = 0;
u v3 = 0;
u v4 = 0;
@@ -41596,216 +43186,6 @@ u znfa_star(u vc, u va) {
u v7 = 0;
u v8 = 0;
u v9 = 0;
- v2 = (u)znfa_plus;
- v3 = vc;
- v4 = va;
- v5 = ((u(*)())v2)(v3, v4);
- va = v5;
- v6 = (u)znfa_qmark;
- v7 = vc;
- v8 = va;
- v9 = ((u(*)())v6)(v7, v8);
- return v9;
-}
-u znode_to_str(u vkind) {
- if (vkind != 0UL) goto b3;
- return (u)"N_IDENT";
-b3: if (vkind != 1UL) goto b6;
- return (u)"N_NUM";
-b6: if (vkind != 2UL) goto b9;
- return (u)"N_CHAR";
-b9: if (vkind != 3UL) goto b12;
- return (u)"N_STR";
-b12: if (vkind != 4UL) goto b15;
- return (u)"N_NIL";
-b15: if (vkind != 5UL) goto b18;
- return (u)"N_STMTLIST";
-b18: if (vkind != 6UL) goto b21;
- return (u)"N_EXPRLIST";
-b21: if (vkind != 7UL) goto b24;
- return (u)"N_CALL";
-b24: if (vkind != 9UL) goto b27;
- return (u)"N_DOT";
-b27: if (vkind != 10UL) goto b30;
- return (u)"N_ARGLIST";
-b30: if (vkind != 11UL) goto b33;
- return (u)"N_FUNC";
-b33: if (vkind != 12UL) goto b36;
- return (u)"N_ARGDECL";
-b36: if (vkind != 13UL) goto b39;
- return (u)"N_FUNCDECL";
-b39: if (vkind != 14UL) goto b42;
- return (u)"N_PROGRAM";
-b42: if (vkind != 15UL) goto b45;
- return (u)"N_FUNCTYPE";
-b45: if (vkind != 16UL) goto b48;
- return (u)"N_PTRTYPE";
-b48: if (vkind != 17UL) goto b51;
- return (u)"N_STRUCT";
-b51: if (vkind != 18UL) goto b54;
- return (u)"N_UNION";
-b54: if (vkind != 19UL) goto b57;
- return (u)"N_MEMBERDECL";
-b57: if (vkind != 20UL) goto b60;
- return (u)"N_MEMBERLIST";
-b60: if (vkind != 21UL) goto b63;
- return (u)"N_CONDLIST";
-b63: if (vkind != 22UL) goto b66;
- return (u)"N_COND";
-b66: if (vkind != 23UL) goto b69;
- return (u)"N_ENUM";
-b69: if (vkind != 24UL) goto b72;
- return (u)"N_ENUMITEM";
-b72: if (vkind != 25UL) goto b75;
- return (u)"N_ENUMLIST";
-b75: if (vkind != 26UL) goto b78;
- return (u)"N_LOOP";
-b78: if (vkind != 27UL) goto b81;
- return (u)"N_BREAK";
-b81: if (vkind != 28UL) goto b84;
- return (u)"N_CONTINUE";
-b84: if (vkind != 29UL) goto b87;
- return (u)"N_RETURN";
-b87: if (vkind != 30UL) goto b90;
- return (u)"N_VARDECL";
-b90: if (vkind != 31UL) goto b93;
- return (u)"N_LABEL";
-b93: if (vkind != 32UL) goto b96;
- return (u)"N_GOTO";
-b96: if (vkind != 33UL) goto b99;
- return (u)"N_ASSIGN";
-b99: if (vkind != 34UL) goto b102;
- return (u)"N_SIZEOF";
-b102: if (vkind != 35UL) goto b105;
- return (u)"N_REF";
-b105: if (vkind != 36UL) goto b108;
- return (u)"N_DEREF";
-b108: if (vkind != 37UL) goto b111;
- return (u)"N_CAST";
-b111: if (vkind != 38UL) goto b114;
- return (u)"N_INDEX";
-b114: if (vkind != 39UL) goto b117;
- return (u)"N_LT";
-b117: if (vkind != 40UL) goto b120;
- return (u)"N_GT";
-b120: if (vkind != 41UL) goto b123;
- return (u)"N_LE";
-b123: if (vkind != 42UL) goto b126;
- return (u)"N_GE";
-b126: if (vkind != 43UL) goto b129;
- return (u)"N_EQ";
-b129: if (vkind != 44UL) goto b132;
- return (u)"N_NE";
-b132: if (vkind != 45UL) goto b135;
- return (u)"N_ADD";
-b135: if (vkind != 46UL) goto b138;
- return (u)"N_SUB";
-b138: if (vkind != 47UL) goto b141;
- return (u)"N_MUL";
-b141: if (vkind != 48UL) goto b144;
- return (u)"N_LSH";
-b144: if (vkind != 49UL) goto b147;
- return (u)"N_RSH";
-b147: if (vkind != 50UL) goto b150;
- return (u)"N_BNOT";
-b150: if (vkind != 51UL) goto b153;
- return (u)"N_BOR";
-b153: if (vkind != 52UL) goto b156;
- return (u)"N_BAND";
-b156: if (vkind != 53UL) goto b159;
- return (u)"N_AND";
-b159: if (vkind != 54UL) goto b162;
- return (u)"N_OR";
-b162: if (vkind != 55UL) goto b165;
- return (u)"N_XOR";
-b165: if (vkind != 56UL) goto b168;
- return (u)"N_NOT";
-b168: if (vkind != 57UL) goto b171;
- return (u)"N_POS";
-b171: if (vkind != 58UL) goto b174;
- return (u)"N_NEG";
-b174: if (vkind != 59UL) goto b177;
- return (u)"N_DIV";
-b177: if (vkind != 60UL) goto b180;
- return (u)"N_MOD";
-b180: if (vkind != 61UL) goto b183;
- return (u)"N_CHARSET";
-b183: if (vkind != 62UL) goto b186;
- return (u)"N_LEXDOT";
-b186: if (vkind != 63UL) goto b189;
- return (u)"N_LEXSTAR";
-b189: if (vkind != 64UL) goto b192;
- return (u)"N_LEXPLUS";
-b192: if (vkind != 65UL) goto b195;
- return (u)"N_LEXQMARK";
-b195: if (vkind != 66UL) goto b198;
- return (u)"N_LEXCONCAT";
-b198: if (vkind != 67UL) goto b201;
- return (u)"N_LEXALT";
-b201: if (vkind != 68UL) goto b204;
- return (u)"N_LEXRULE";
-b204: if (vkind != 69UL) goto b207;
- return (u)"N_LEXLIST";
-b207: if (vkind != 70UL) goto b210;
- return (u)"N_LEXER";
-b210: if (vkind != 71UL) goto b213;
- return (u)"N_PRODITEM";
-b213: if (vkind != 72UL) goto b216;
- return (u)"N_PRODALT";
-b216: if (vkind != 73UL) goto b219;
- return (u)"N_PROD";
-b219: if (vkind != 74UL) goto b222;
- return (u)"N_PRODLIST";
-b222: if (vkind != 75UL) goto b225;
- return (u)"N_GRAMMAR";
-b225: return (u)"(invalid)";
-}
-u zopen(u vname, u vflags, u vmode) {
- return (u)open((char *)vname, (int)vflags, (int)vmode);
-}
-u zopen_call_out(u vc, u vfilename) {
- u vfd = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- v3 = (u)zopen;
- v4 = vfilename;
- v5 = 64UL | 1UL | 512UL;
- v6 = (6UL << 6UL) + (6UL << 3UL) + 6UL;
- v7 = ((u(*)())v3)(v4, v5, v6);
- vfd = v7;
- if ((s)vfd >= (s)0UL) goto b4;
- v8 = (u)zdie;
- v9 = (u)"open_call_out: failed to open output";
- v10 = ((u(*)())v8)(v9);
- v10;
-b2: v11 = (u)zfopen;
- v12 = vfd;
- v13 = *(u*)(vc + 0UL);
- v14 = ((u(*)())v11)(v12, v13);
- *(u*)(vc + 80UL) = v14;
- *(u*)(*(u*)(vc + 80UL) + 56UL) = 1UL;
- return 0UL;
-b4: goto b2;
-}
-u zopen_coutput(u vc, u vfilename) {
- u vfd = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
u v10 = 0;
u v11 = 0;
u v12 = 0;
@@ -41814,539 +43194,4678 @@ u zopen_coutput(u vc, u vfilename) {
u v15 = 0;
u v16 = 0;
u v17 = 0;
- if (!*(u*)(vc + 72UL)) goto b3;
- v3 = (u)zdie;
- v4 = (u)"multiple output files";
- v5 = ((u(*)())v3)(v4);
- v5;
-b1: v6 = (u)zopen;
- v7 = vfilename;
- v8 = 64UL | 1UL | 512UL;
- v9 = (6UL << 6UL) + (6UL << 3UL) + 6UL;
- v10 = ((u(*)())v6)(v7, v8, v9);
- vfd = v10;
- if ((s)vfd >= (s)0UL) goto b8;
- v11 = (u)zdie;
- v12 = (u)"open_coutput: failed to open output";
- v13 = ((u(*)())v11)(v12);
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ u v156 = 0;
+ u v157 = 0;
+ u v158 = 0;
+ u v159 = 0;
+ u v160 = 0;
+ u v161 = 0;
+ u v162 = 0;
+ u v163 = 0;
+ u v164 = 0;
+ u v165 = 0;
+ u v166 = 0;
+ u v167 = 0;
+ u v168 = 0;
+ u v169 = 0;
+ u v170 = 0;
+ u v171 = 0;
+ u v172 = 0;
+ u v173 = 0;
+ u v174 = 0;
+ u v175 = 0;
+ u v176 = 0;
+ u v177 = 0;
+ u v178 = 0;
+ u v179 = 0;
+ u v180 = 0;
+ u v181 = 0;
+ u v182 = 0;
+ u v183 = 0;
+ u v184 = 0;
+ u v185 = 0;
+ u v186 = 0;
+ u v187 = 0;
+ u v188 = 0;
+ u v189 = 0;
+ u v190 = 0;
+ u v191 = 0;
+ u v192 = 0;
+ u v193 = 0;
+ u v194 = 0;
+ u v195 = 0;
+ u v196 = 0;
+ u v197 = 0;
+ u v198 = 0;
+ u v199 = 0;
+ u v200 = 0;
+ u v201 = 0;
+ u v202 = 0;
+ u v203 = 0;
+ u v204 = 0;
+ u v205 = 0;
+ u v206 = 0;
+ u v207 = 0;
+ u v208 = 0;
+ u v209 = 0;
+ u v210 = 0;
+ u v211 = 0;
+ u v212 = 0;
+ u v213 = 0;
+ u v214 = 0;
+ u v215 = 0;
+ u v216 = 0;
+ u v217 = 0;
+ u v218 = 0;
+ u v219 = 0;
+ u v220 = 0;
+ u v221 = 0;
+ u v222 = 0;
+ u v223 = 0;
+ u v224 = 0;
+ u v225 = 0;
+ u v226 = 0;
+ u v227 = 0;
+ u v228 = 0;
+ u v229 = 0;
+ u v230 = 0;
+ u v231 = 0;
+ u v232 = 0;
+ u v233 = 0;
+ u v234 = 0;
+ u v235 = 0;
+ u v236 = 0;
+ u v237 = 0;
+ u v238 = 0;
+ u v239 = 0;
+ u v240 = 0;
+ u v241 = 0;
+ u v242 = 0;
+ u v243 = 0;
+ u v244 = 0;
+ u v245 = 0;
+ u v246 = 0;
+ u v247 = 0;
+ u v248 = 0;
+ u v249 = 0;
+ u v250 = 0;
+ u v251 = 0;
+ u v252 = 0;
+ u v253 = 0;
+ u v254 = 0;
+ u v255 = 0;
+ u v256 = 0;
+ u v257 = 0;
+ u v258 = 0;
+ u v259 = 0;
+ u v260 = 0;
+ u v261 = 0;
+ u v262 = 0;
+ u v263 = 0;
+ u v264 = 0;
+ u v265 = 0;
+ u v266 = 0;
+ u v267 = 0;
+ u v268 = 0;
+ u v269 = 0;
+ u v270 = 0;
+ u v271 = 0;
+ u v272 = 0;
+ u v273 = 0;
+ u v274 = 0;
+ u v275 = 0;
+ u v276 = 0;
+ u v277 = 0;
+ u v278 = 0;
+ u v279 = 0;
+ u v280 = 0;
+ u v281 = 0;
+ u v282 = 0;
+ u v283 = 0;
+ u v284 = 0;
+ u v285 = 0;
+ u v286 = 0;
+ u v287 = 0;
+ u v288 = 0;
+ u v289 = 0;
+ u v290 = 0;
+ u v291 = 0;
+ u v292 = 0;
+ u v293 = 0;
+ u v294 = 0;
+ u v295 = 0;
+ u v296 = 0;
+ u v297 = 0;
+ u v298 = 0;
+ u v299 = 0;
+ u v300 = 0;
+ u v301 = 0;
+ u v302 = 0;
+ u v303 = 0;
+ u v304 = 0;
+ u v305 = 0;
+ u v306 = 0;
+ u v307 = 0;
+ u v308 = 0;
+ u v309 = 0;
+ u v310 = 0;
+ u v311 = 0;
+ u v312 = 0;
+ u v313 = 0;
+ u v314 = 0;
+ u v315 = 0;
+ u v316 = 0;
+ u v317 = 0;
+ u v318 = 0;
+ u v319 = 0;
+ u v320 = 0;
+ u v321 = 0;
+ u v322 = 0;
+ u v323 = 0;
+ u v324 = 0;
+ u v325 = 0;
+ u v326 = 0;
+ u v327 = 0;
+ u v328 = 0;
+ u v329 = 0;
+ u v330 = 0;
+ u v331 = 0;
+ u v332 = 0;
+ u v333 = 0;
+ u v334 = 0;
+ u v335 = 0;
+ u v336 = 0;
+ u v337 = 0;
+ u v338 = 0;
+ u v339 = 0;
+ u v340 = 0;
+ u v341 = 0;
+ u v342 = 0;
+ u v343 = 0;
+ u v344 = 0;
+ u v345 = 0;
+ u v346 = 0;
+ u v347 = 0;
+ u v348 = 0;
+ u v349 = 0;
+ u v350 = 0;
+ u v351 = 0;
+ u v352 = 0;
+ u v353 = 0;
+ u v354 = 0;
+ u v355 = 0;
+ u v356 = 0;
+ u v357 = 0;
+ u v358 = 0;
+ u v359 = 0;
+ u v360 = 0;
+ u v361 = 0;
+ u v362 = 0;
+ u v363 = 0;
+ u v364 = 0;
+ u v365 = 0;
+ u v366 = 0;
+ u v367 = 0;
+ u v368 = 0;
+ u v369 = 0;
+ u v370 = 0;
+ u v371 = 0;
+ u v372 = 0;
+ u v373 = 0;
+ u v374 = 0;
+ u v375 = 0;
+ u v376 = 0;
+ u v377 = 0;
+ u v378 = 0;
+ u v379 = 0;
+ u v380 = 0;
+ u v381 = 0;
+ u v382 = 0;
+ u v383 = 0;
+ u v384 = 0;
+ u v385 = 0;
+ u v386 = 0;
+ u v387 = 0;
+ u v388 = 0;
+ u v389 = 0;
+ u v390 = 0;
+ u v391 = 0;
+ u v392 = 0;
+ u v393 = 0;
+ u v394 = 0;
+ u v395 = 0;
+ u v396 = 0;
+ u v397 = 0;
+ u v398 = 0;
+ u v399 = 0;
+ u v400 = 0;
+ u v401 = 0;
+ u v402 = 0;
+ u v403 = 0;
+ u v404 = 0;
+ u v405 = 0;
+ u v406 = 0;
+ u v407 = 0;
+ u v408 = 0;
+ u v409 = 0;
+ u v410 = 0;
+ u v411 = 0;
+ u v412 = 0;
+ u v413 = 0;
+ u v414 = 0;
+ u v415 = 0;
+ u v416 = 0;
+ u v417 = 0;
+ u v418 = 0;
+ u v419 = 0;
+ u v420 = 0;
+ u v421 = 0;
+ u v422 = 0;
+ u v423 = 0;
+ u v424 = 0;
+ u v425 = 0;
+ u v426 = 0;
+ u v427 = 0;
+ u v428 = 0;
+ u v429 = 0;
+ u v430 = 0;
+ u v431 = 0;
+ u v432 = 0;
+ u v433 = 0;
+ u v434 = 0;
+ u v435 = 0;
+ u v436 = 0;
+ u v437 = 0;
+ u v438 = 0;
+ u v439 = 0;
+ u v440 = 0;
+ u v441 = 0;
+ u v442 = 0;
+ u v443 = 0;
+ u v444 = 0;
+ u v445 = 0;
+ u v446 = 0;
+ u v447 = 0;
+ u v448 = 0;
+ u v449 = 0;
+ u v450 = 0;
+ u v451 = 0;
+ u v452 = 0;
+ u v453 = 0;
+ u v454 = 0;
+ u v455 = 0;
+ u v456 = 0;
+ u v457 = 0;
+ u v458 = 0;
+ u v459 = 0;
+ u v460 = 0;
+ u v461 = 0;
+ u v462 = 0;
+ u v463 = 0;
+ u v464 = 0;
+ u v465 = 0;
+ u v466 = 0;
+ u v467 = 0;
+ u v468 = 0;
+ u v469 = 0;
+ u v470 = 0;
+ u v471 = 0;
+ u v472 = 0;
+ u v473 = 0;
+ u v474 = 0;
+ u v475 = 0;
+ u v476 = 0;
+ u v477 = 0;
+ u v478 = 0;
+ u v479 = 0;
+ u v480 = 0;
+ u v481 = 0;
+ u v482 = 0;
+ u v483 = 0;
+ u v484 = 0;
+ u v485 = 0;
+ u v486 = 0;
+ u v487 = 0;
+ u v488 = 0;
+ u v489 = 0;
+ u v490 = 0;
+ u v491 = 0;
+ u v492 = 0;
+ u v493 = 0;
+ u v494 = 0;
+ u v495 = 0;
+ u v496 = 0;
+ u v497 = 0;
+ u v498 = 0;
+ u v499 = 0;
+ u v500 = 0;
+ u v501 = 0;
+ u v502 = 0;
+ u v503 = 0;
+ u v504 = 0;
+ u v505 = 0;
+ u v506 = 0;
+ u v507 = 0;
+ u v508 = 0;
+ u v509 = 0;
+ u v510 = 0;
+ u v511 = 0;
+ u v512 = 0;
+ u v513 = 0;
+ u v514 = 0;
+ u v515 = 0;
+ u v516 = 0;
+ u v517 = 0;
+ u v518 = 0;
+ u v519 = 0;
+ u v520 = 0;
+ u v521 = 0;
+ u v522 = 0;
+ u v523 = 0;
+ u v524 = 0;
+ u v525 = 0;
+ u v526 = 0;
+ u v527 = 0;
+ u v528 = 0;
+ u v529 = 0;
+ u v530 = 0;
+ u v531 = 0;
+ u v532 = 0;
+ u v533 = 0;
+ u v534 = 0;
+ u v535 = 0;
+ u v536 = 0;
+ u v537 = 0;
+ u v538 = 0;
+ u v539 = 0;
+ u v540 = 0;
+ u v541 = 0;
+ u v542 = 0;
+ u v543 = 0;
+ u v544 = 0;
+ u v545 = 0;
+ u v546 = 0;
+ u v547 = 0;
+ u v548 = 0;
+ u v549 = 0;
+ u v550 = 0;
+ u v551 = 0;
+ u v552 = 0;
+ u v553 = 0;
+ u v554 = 0;
+ u v555 = 0;
+ u v556 = 0;
+ u v557 = 0;
+ u v558 = 0;
+ u v559 = 0;
+ u v560 = 0;
+ u v561 = 0;
+ u v562 = 0;
+ u v563 = 0;
+ u v564 = 0;
+ u v565 = 0;
+ u v566 = 0;
+ u v567 = 0;
+ u v568 = 0;
+ u v569 = 0;
+ u v570 = 0;
+ u v571 = 0;
+ u v572 = 0;
+ u v573 = 0;
+ u v574 = 0;
+ u v575 = 0;
+ u v576 = 0;
+ u v577 = 0;
+ u v578 = 0;
+ u v579 = 0;
+ u v580 = 0;
+ u v581 = 0;
+ u v582 = 0;
+ u v583 = 0;
+ u v584 = 0;
+ u v585 = 0;
+ u v586 = 0;
+ u v587 = 0;
+ u v588 = 0;
+ u v589 = 0;
+ u v590 = 0;
+ u v591 = 0;
+ u v592 = 0;
+ u v593 = 0;
+ u v594 = 0;
+ u v595 = 0;
+ u v596 = 0;
+ u v597 = 0;
+ u v598 = 0;
+ u v599 = 0;
+ u v600 = 0;
+ u v601 = 0;
+ u v602 = 0;
+ u v603 = 0;
+ u v604 = 0;
+ u v605 = 0;
+ u v606 = 0;
+ u v607 = 0;
+ u v608 = 0;
+ u v609 = 0;
+ u v610 = 0;
+ u v611 = 0;
+ u v612 = 0;
+ u v613 = 0;
+ u v614 = 0;
+ u v615 = 0;
+ u v616 = 0;
+ u v617 = 0;
+ u v618 = 0;
+ u v619 = 0;
+ u v620 = 0;
+ u v621 = 0;
+ u v622 = 0;
+ u v623 = 0;
+ u v624 = 0;
+ u v625 = 0;
+ u v626 = 0;
+ u v627 = 0;
+ u v628 = 0;
+ u v629 = 0;
+ u v630 = 0;
+ u v631 = 0;
+ u v632 = 0;
+ u v633 = 0;
+ u v634 = 0;
+ u v635 = 0;
+ u v636 = 0;
+ u v637 = 0;
+ u v638 = 0;
+ u v639 = 0;
+ u v640 = 0;
+ u v641 = 0;
+ u v642 = 0;
+ u v643 = 0;
+ u v644 = 0;
+ u v645 = 0;
+ u v646 = 0;
+ u v647 = 0;
+ u v648 = 0;
+ u v649 = 0;
+ u v650 = 0;
+ u v651 = 0;
+ u v652 = 0;
+ u v653 = 0;
+ u v654 = 0;
+ u v655 = 0;
+ u v656 = 0;
+ u v657 = 0;
+ u v658 = 0;
+ u v659 = 0;
+ u v660 = 0;
+ u v661 = 0;
+ u v662 = 0;
+ u v663 = 0;
+ u v664 = 0;
+ u v665 = 0;
+ u v666 = 0;
+ u v667 = 0;
+ u v668 = 0;
+ u v669 = 0;
+ u v670 = 0;
+ u v671 = 0;
+ u v672 = 0;
+ u v673 = 0;
+ u v674 = 0;
+ u v675 = 0;
+ u v676 = 0;
+ u v677 = 0;
+ u v678 = 0;
+ u v679 = 0;
+ u v680 = 0;
+ u v681 = 0;
+ u v682 = 0;
+ u v683 = 0;
+ u v684 = 0;
+ u v685 = 0;
+ u v686 = 0;
+ u v687 = 0;
+ u v688 = 0;
+ u v689 = 0;
+ u v690 = 0;
+ u v691 = 0;
+ u v692 = 0;
+ u v693 = 0;
+ u v694 = 0;
+ u v695 = 0;
+ u v696 = 0;
+ u v697 = 0;
+ u v698 = 0;
+ u v699 = 0;
+ u v700 = 0;
+ u v701 = 0;
+ u v702 = 0;
+ u v703 = 0;
+ u v704 = 0;
+ u v705 = 0;
+ u v706 = 0;
+ u v707 = 0;
+ u v708 = 0;
+ u v709 = 0;
+ u v710 = 0;
+ u v711 = 0;
+ u v712 = 0;
+ u v713 = 0;
+ u v714 = 0;
+ u v715 = 0;
+ u v716 = 0;
+ u v717 = 0;
+ u v718 = 0;
+ u v719 = 0;
+ u v720 = 0;
+ u v721 = 0;
+ u v722 = 0;
+ u v723 = 0;
+ u v724 = 0;
+ u v725 = 0;
+ u v726 = 0;
+ u v727 = 0;
+ u v728 = 0;
+ u v729 = 0;
+ u v730 = 0;
+ u v731 = 0;
+ u v732 = 0;
+ u v733 = 0;
+ u v734 = 0;
+ u v735 = 0;
+ u v736 = 0;
+ u v737 = 0;
+ u v738 = 0;
+ u v739 = 0;
+ u v740 = 0;
+ u v741 = 0;
+ u v742 = 0;
+ u v743 = 0;
+ u v744 = 0;
+ u v745 = 0;
+ u v746 = 0;
+ u v747 = 0;
+ u v748 = 0;
+ u v749 = 0;
+ u v750 = 0;
+ u v751 = 0;
+ u v752 = 0;
+ u v753 = 0;
+ u v754 = 0;
+ u v755 = 0;
+ u v756 = 0;
+ u v757 = 0;
+ u v758 = 0;
+ u v759 = 0;
+ u v760 = 0;
+ u v761 = 0;
+ u v762 = 0;
+ u v763 = 0;
+ u v764 = 0;
+ u v765 = 0;
+ u v766 = 0;
+ u v767 = 0;
+ u v768 = 0;
+ u v769 = 0;
+ u v770 = 0;
+ u v771 = 0;
+ u v772 = 0;
+ u v773 = 0;
+ u v774 = 0;
+ u v775 = 0;
+ u v776 = 0;
+ u v777 = 0;
+ u v778 = 0;
+ u v779 = 0;
+ u v780 = 0;
+ u v781 = 0;
+ u v782 = 0;
+ u v783 = 0;
+ u v784 = 0;
+ u v785 = 0;
+ u v786 = 0;
+ u v787 = 0;
+ u v788 = 0;
+ u v789 = 0;
+ u v790 = 0;
+ u v791 = 0;
+ u v792 = 0;
+ u v793 = 0;
+ u v794 = 0;
+ u v795 = 0;
+ u v796 = 0;
+ u v797 = 0;
+ u v798 = 0;
+ u v799 = 0;
+ u v800 = 0;
+ u v801 = 0;
+ u v802 = 0;
+ u v803 = 0;
+ u v804 = 0;
+ u v805 = 0;
+ u v806 = 0;
+ u v807 = 0;
+ u v808 = 0;
+ u v809 = 0;
+ u v810 = 0;
+ u v811 = 0;
+ u v812 = 0;
+ u v813 = 0;
+ u v814 = 0;
+ u v815 = 0;
+ u v816 = 0;
+ u v817 = 0;
+ u v818 = 0;
+ u v819 = 0;
+ u v820 = 0;
+ u v821 = 0;
+ u v822 = 0;
+ u v823 = 0;
+ u v824 = 0;
+ u v825 = 0;
+ u v826 = 0;
+ u v827 = 0;
+ u v828 = 0;
+ u v829 = 0;
+ u v830 = 0;
+ u v831 = 0;
+ u v832 = 0;
+ u v833 = 0;
+ u v834 = 0;
+ u v835 = 0;
+ u v836 = 0;
+ u v837 = 0;
+ u v838 = 0;
+ u v839 = 0;
+ u v840 = 0;
+ u v841 = 0;
+ u v842 = 0;
+ u v843 = 0;
+ u v844 = 0;
+ u v845 = 0;
+ u v846 = 0;
+ u v847 = 0;
+ u v848 = 0;
+ u v849 = 0;
+ u v850 = 0;
+ u v851 = 0;
+ u v852 = 0;
+ u v853 = 0;
+ u v854 = 0;
+ u v855 = 0;
+ u v856 = 0;
+ u v857 = 0;
+ u v858 = 0;
+ u v859 = 0;
+ u v860 = 0;
+ u v861 = 0;
+ u v862 = 0;
+ u v863 = 0;
+ u v864 = 0;
+ u v865 = 0;
+ u v866 = 0;
+ u v867 = 0;
+ u v868 = 0;
+ u v869 = 0;
+ u v870 = 0;
+ u v871 = 0;
+ u v872 = 0;
+ u v873 = 0;
+ u v874 = 0;
+ u v875 = 0;
+ u v876 = 0;
+ u v877 = 0;
+ u v878 = 0;
+ u v879 = 0;
+ u v880 = 0;
+ u v881 = 0;
+ u v882 = 0;
+ u v883 = 0;
+ u v884 = 0;
+ u v885 = 0;
+ u v886 = 0;
+ u v887 = 0;
+ u v888 = 0;
+ u v889 = 0;
+ u v890 = 0;
+ u v891 = 0;
+ u v892 = 0;
+ u v893 = 0;
+ u v894 = 0;
+ u v895 = 0;
+ u v896 = 0;
+ u v897 = 0;
+ u v898 = 0;
+ u v899 = 0;
+ u v900 = 0;
+ u v901 = 0;
+ u v902 = 0;
+ u v903 = 0;
+ u v904 = 0;
+ u v905 = 0;
+ u v906 = 0;
+ u v907 = 0;
+ u v908 = 0;
+ u v909 = 0;
+ u v910 = 0;
+ u v911 = 0;
+ u v912 = 0;
+ u v913 = 0;
+ u v914 = 0;
+ u v915 = 0;
+ u v916 = 0;
+ u v917 = 0;
+ u v918 = 0;
+ u v919 = 0;
+ u v920 = 0;
+ u v921 = 0;
+ u v922 = 0;
+ u v923 = 0;
+ u v924 = 0;
+ u v925 = 0;
+ u v926 = 0;
+ u v927 = 0;
+ u v928 = 0;
+ u v929 = 0;
+ u v930 = 0;
+ u v931 = 0;
+ u v932 = 0;
+ u v933 = 0;
+ u v934 = 0;
+ u v935 = 0;
+ u v936 = 0;
+ u v937 = 0;
+ u v938 = 0;
+ u v939 = 0;
+ u v940 = 0;
+ u v941 = 0;
+ u v942 = 0;
+ u v943 = 0;
+ u v944 = 0;
+ u v945 = 0;
+ u v946 = 0;
+ u v947 = 0;
+ u v948 = 0;
+ u v949 = 0;
+ u v950 = 0;
+ u v951 = 0;
+ u v952 = 0;
+ u v953 = 0;
+ u v954 = 0;
+ u v955 = 0;
+ u v956 = 0;
+ u v957 = 0;
+ u v958 = 0;
+ u v959 = 0;
+ u v960 = 0;
+ u v961 = 0;
+ u v962 = 0;
+ u v963 = 0;
+ u v964 = 0;
+ u v965 = 0;
+ u v966 = 0;
+ u v967 = 0;
+ u v968 = 0;
+ u v969 = 0;
+ u v970 = 0;
+ u v971 = 0;
+ u v972 = 0;
+ u v973 = 0;
+ u v974 = 0;
+ u v975 = 0;
+ u v976 = 0;
+ u v977 = 0;
+ u v978 = 0;
+ u v979 = 0;
+ u v980 = 0;
+ u v981 = 0;
+ u v982 = 0;
+ u v983 = 0;
+ u v984 = 0;
+ u v985 = 0;
+ u v986 = 0;
+ u v987 = 0;
+ u v988 = 0;
+ u v989 = 0;
+ u v990 = 0;
+ u v991 = 0;
+ u v992 = 0;
+ u v993 = 0;
+ u v994 = 0;
+ u v995 = 0;
+ u v996 = 0;
+ u v997 = 0;
+ u v998 = 0;
+ u v999 = 0;
+ u v1000 = 0;
+ u v1001 = 0;
+ u v1002 = 0;
+ u v1003 = 0;
+ u v1004 = 0;
+ u v1005 = 0;
+ u v1006 = 0;
+ u v1007 = 0;
+ u v1008 = 0;
+ u v1009 = 0;
+ u v1010 = 0;
+ u v1011 = 0;
+ u v1012 = 0;
+ u v1013 = 0;
+ u v1014 = 0;
+ u v1015 = 0;
+ u v1016 = 0;
+ u v1017 = 0;
+ u v1018 = 0;
+ u v1019 = 0;
+ u v1020 = 0;
+ u v1021 = 0;
+ u v1022 = 0;
+ u v1023 = 0;
+ u v1024 = 0;
+ u v1025 = 0;
+ u v1026 = 0;
+ u v1027 = 0;
+ u v1028 = 0;
+ u v1029 = 0;
+ u v1030 = 0;
+ u v1031 = 0;
+ u v1032 = 0;
+ u v1033 = 0;
+ u v1034 = 0;
+ u v1035 = 0;
+ u v1036 = 0;
+ u v1037 = 0;
+ u v1038 = 0;
+ u v1039 = 0;
+ u v1040 = 0;
+ u v1041 = 0;
+ u v1042 = 0;
+ u v1043 = 0;
+ u v1044 = 0;
+ u v1045 = 0;
+ u v1046 = 0;
+ u v1047 = 0;
+ u v1048 = 0;
+ u v1049 = 0;
+ u v1050 = 0;
+ u v1051 = 0;
+ u v1052 = 0;
+ u v1053 = 0;
+ u v1054 = 0;
+ u v1055 = 0;
+ u v1056 = 0;
+ u v1057 = 0;
+ u v1058 = 0;
+ u v1059 = 0;
+ u v1060 = 0;
+ u v1061 = 0;
+ u v1062 = 0;
+ u v1063 = 0;
+ u v1064 = 0;
+ u v1065 = 0;
+ u v1066 = 0;
+ u v1067 = 0;
+ u v1068 = 0;
+ u v1069 = 0;
+ u v1070 = 0;
+ u v1071 = 0;
+ u v1072 = 0;
+ u v1073 = 0;
+ u v1074 = 0;
+ u v1075 = 0;
+ u v1076 = 0;
+ u v1077 = 0;
+ u v1078 = 0;
+ u v1079 = 0;
+ u v1080 = 0;
+ u v1081 = 0;
+ u v1082 = 0;
+ u v1083 = 0;
+ u v1084 = 0;
+ u v1085 = 0;
+ u v1086 = 0;
+ u v1087 = 0;
+ u v1088 = 0;
+ u v1089 = 0;
+ u v1090 = 0;
+ u v1091 = 0;
+ u v1092 = 0;
+ u v1093 = 0;
+ u v1094 = 0;
+ u v1095 = 0;
+ u v1096 = 0;
+ u v1097 = 0;
+ u v1098 = 0;
+ u v1099 = 0;
+ u v1100 = 0;
+ u v1101 = 0;
+ u v1102 = 0;
+ u v1103 = 0;
+ u v1104 = 0;
+ u v1105 = 0;
+ u v1106 = 0;
+ u v1107 = 0;
+ u v1108 = 0;
+ u v1109 = 0;
+ u v1110 = 0;
+ u v1111 = 0;
+ u v1112 = 0;
+ u v1113 = 0;
+ u v1114 = 0;
+ u v1115 = 0;
+ u v1116 = 0;
+ u v1117 = 0;
+ u v1118 = 0;
+ u v1119 = 0;
+ u v1120 = 0;
+ u v1121 = 0;
+ u v1122 = 0;
+ u v1123 = 0;
+ u v1124 = 0;
+ u v1125 = 0;
+ u v1126 = 0;
+ u v1127 = 0;
+ u v1128 = 0;
+ u v1129 = 0;
+ u v1130 = 0;
+ u v1131 = 0;
+ u v1132 = 0;
+ u v1133 = 0;
+ u v1134 = 0;
+ u v1135 = 0;
+ u v1136 = 0;
+ u v1137 = 0;
+ u v1138 = 0;
+ u v1139 = 0;
+ u v1140 = 0;
+ u v1141 = 0;
+ u v1142 = 0;
+ u v1143 = 0;
+ u v1144 = 0;
+ u v1145 = 0;
+ u v1146 = 0;
+ u v1147 = 0;
+ u v1148 = 0;
+ u v1149 = 0;
+ u v1150 = 0;
+ u v1151 = 0;
+ u v1152 = 0;
+ u v1153 = 0;
+ u v1154 = 0;
+ u v1155 = 0;
+ u v1156 = 0;
+ u v1157 = 0;
+ u v1158 = 0;
+ u v1159 = 0;
+ u v1160 = 0;
+ u v1161 = 0;
+ u v1162 = 0;
+ u v1163 = 0;
+ u v1164 = 0;
+ u v1165 = 0;
+ u v1166 = 0;
+ u v1167 = 0;
+ u v1168 = 0;
+ u v1169 = 0;
+ u v1170 = 0;
+ u v1171 = 0;
+ u v1172 = 0;
+ u v1173 = 0;
+ u v1174 = 0;
+ u v1175 = 0;
+ u v1176 = 0;
+ u v1177 = 0;
+ u v1178 = 0;
+ u v1179 = 0;
+ u v1180 = 0;
+ u v1181 = 0;
+ u v1182 = 0;
+ u v1183 = 0;
+ u v1184 = 0;
+ u v1185 = 0;
+ u v1186 = 0;
+ u v1187 = 0;
+ u v1188 = 0;
+ u v1189 = 0;
+ u v1190 = 0;
+ u v1191 = 0;
+ u v1192 = 0;
+ u v1193 = 0;
+ u v1194 = 0;
+ u v1195 = 0;
+ u v1196 = 0;
+ u v1197 = 0;
+ u v1198 = 0;
+ u v1199 = 0;
+ u v1200 = 0;
+ u v1201 = 0;
+ u v1202 = 0;
+ u v1203 = 0;
+ u v1204 = 0;
+ u v1205 = 0;
+ u v1206 = 0;
+ u v1207 = 0;
+ u v1208 = 0;
+ u v1209 = 0;
+ u v1210 = 0;
+ u v1211 = 0;
+ u v1212 = 0;
+ u v1213 = 0;
+ u v1214 = 0;
+ u v1215 = 0;
+ u v1216 = 0;
+ u v1217 = 0;
+ u v1218 = 0;
+ u v1219 = 0;
+ u v1220 = 0;
+ u v1221 = 0;
+ u v1222 = 0;
+ u v1223 = 0;
+ u v1224 = 0;
+ u v1225 = 0;
+ u v1226 = 0;
+ u v1227 = 0;
+ u v1228 = 0;
+ u v1229 = 0;
+ u v1230 = 0;
+ u v1231 = 0;
+ u v1232 = 0;
+ u v1233 = 0;
+ u v1234 = 0;
+ u v1235 = 0;
+ u v1236 = 0;
+ u v1237 = 0;
+ u v1238 = 0;
+ u v1239 = 0;
+ u v1240 = 0;
+ u v1241 = 0;
+ u v1242 = 0;
+ u v1243 = 0;
+ u v1244 = 0;
+ u v1245 = 0;
+ u v1246 = 0;
+ u v1247 = 0;
+ u v1248 = 0;
+ u v1249 = 0;
+ u v1250 = 0;
+ u v1251 = 0;
+ u v1252 = 0;
+ u v1253 = 0;
+ u v1254 = 0;
+ u v1255 = 0;
+ u v1256 = 0;
+ u v1257 = 0;
+ u v1258 = 0;
+ u v1259 = 0;
+ u v1260 = 0;
+ u v1261 = 0;
+ u v1262 = 0;
+ u v1263 = 0;
+ u v1264 = 0;
+ u v1265 = 0;
+ u v1266 = 0;
+ u v1267 = 0;
+ u v1268 = 0;
+ u v1269 = 0;
+ u v1270 = 0;
+ u v1271 = 0;
+ u v1272 = 0;
+ u v1273 = 0;
+ u v1274 = 0;
+ u v1275 = 0;
+ u v1276 = 0;
+ u v1277 = 0;
+ u v1278 = 0;
+ u v1279 = 0;
+ u v1280 = 0;
+ u v1281 = 0;
+ u v1282 = 0;
+ u v1283 = 0;
+ u v1284 = 0;
+ u v1285 = 0;
+ u v1286 = 0;
+ u v1287 = 0;
+ u v1288 = 0;
+ u v1289 = 0;
+ u v1290 = 0;
+ u v1291 = 0;
+ u v1292 = 0;
+ u v1293 = 0;
+ u v1294 = 0;
+ u v1295 = 0;
+ u v1296 = 0;
+ u v1297 = 0;
+ u v1298 = 0;
+ u v1299 = 0;
+ u v1300 = 0;
+ u v1301 = 0;
+ u v1302 = 0;
+ u v1303 = 0;
+ u v1304 = 0;
+ u v1305 = 0;
+ u v1306 = 0;
+ u v1307 = 0;
+ u v1308 = 0;
+ u v1309 = 0;
+ u v1310 = 0;
+ u v1311 = 0;
+ u v1312 = 0;
+ u v1313 = 0;
+ u v1314 = 0;
+ u v1315 = 0;
+ u v1316 = 0;
+ u v1317 = 0;
+ u v1318 = 0;
+ u v1319 = 0;
+ u v1320 = 0;
+ u v1321 = 0;
+ u v1322 = 0;
+ u v1323 = 0;
+ u v1324 = 0;
+ u v1325 = 0;
+ u v1326 = 0;
+ u v1327 = 0;
+ u v1328 = 0;
+ u v1329 = 0;
+ u v1330 = 0;
+ u v1331 = 0;
+ u v1332 = 0;
+ u v1333 = 0;
+ u v1334 = 0;
+ u v1335 = 0;
+ u v1336 = 0;
+ u v1337 = 0;
+ u v1338 = 0;
+ u v1339 = 0;
+ u v1340 = 0;
+ u v1341 = 0;
+ u v1342 = 0;
+ u v1343 = 0;
+ u v1344 = 0;
+ u v1345 = 0;
+ u v1346 = 0;
+ u v1347 = 0;
+ u v1348 = 0;
+ u v1349 = 0;
+ u v1350 = 0;
+ u v1351 = 0;
+ u v1352 = 0;
+ u v1353 = 0;
+ u v1354 = 0;
+ u v1355 = 0;
+ u v1356 = 0;
+ u v1357 = 0;
+ u v1358 = 0;
+ u v1359 = 0;
+ u v1360 = 0;
+ u v1361 = 0;
+ u v1362 = 0;
+ u v1363 = 0;
+ u v1364 = 0;
+ u v1365 = 0;
+ u v1366 = 0;
+ u v1367 = 0;
+ u v1368 = 0;
+ u v1369 = 0;
+ u v1370 = 0;
+ u v1371 = 0;
+ u v1372 = 0;
+ u v1373 = 0;
+ u v1374 = 0;
+ u v1375 = 0;
+ u v1376 = 0;
+ u v1377 = 0;
+ u v1378 = 0;
+ u v1379 = 0;
+ u v1380 = 0;
+ u v1381 = 0;
+ u v1382 = 0;
+ u v1383 = 0;
+ u v1384 = 0;
+ u v1385 = 0;
+ u v1386 = 0;
+ u v1387 = 0;
+ u v1388 = 0;
+ u v1389 = 0;
+ u v1390 = 0;
+ u v1391 = 0;
+ u v1392 = 0;
+ u v1393 = 0;
+ u v1394 = 0;
+ u v1395 = 0;
+ u v1396 = 0;
+ u v1397 = 0;
+ u v1398 = 0;
+ u v1399 = 0;
+ u v1400 = 0;
+ u v1401 = 0;
+ u v1402 = 0;
+ u v1403 = 0;
+ u v1404 = 0;
+ u v1405 = 0;
+ u v1406 = 0;
+ u v1407 = 0;
+ u v1408 = 0;
+ u v1409 = 0;
+ u v1410 = 0;
+ u v1411 = 0;
+ u v1412 = 0;
+ u v1413 = 0;
+ u v1414 = 0;
+ u v1415 = 0;
+ u v1416 = 0;
+ u v1417 = 0;
+ u v1418 = 0;
+ u v1419 = 0;
+ u v1420 = 0;
+ u v1421 = 0;
+ u v1422 = 0;
+ u v1423 = 0;
+ u v1424 = 0;
+ u v1425 = 0;
+ u v1426 = 0;
+ u v1427 = 0;
+ u v1428 = 0;
+ u v1429 = 0;
+ u v1430 = 0;
+ u v1431 = 0;
+ u v1432 = 0;
+ u v1433 = 0;
+ u v1434 = 0;
+ u v1435 = 0;
+ u v1436 = 0;
+ u v1437 = 0;
+ u v1438 = 0;
+ u v1439 = 0;
+ u v1440 = 0;
+ u v1441 = 0;
+ u v1442 = 0;
+ u v1443 = 0;
+ u v1444 = 0;
+ u v1445 = 0;
+ u v1446 = 0;
+ u v1447 = 0;
+ u v1448 = 0;
+ u v1449 = 0;
+ u v1450 = 0;
+ u v1451 = 0;
+ u v1452 = 0;
+ u v1453 = 0;
+ u v1454 = 0;
+ u v1455 = 0;
+ u v1456 = 0;
+ u v1457 = 0;
+ u v1458 = 0;
+ u v1459 = 0;
+ u v1460 = 0;
+ u v1461 = 0;
+ u v1462 = 0;
+ u v1463 = 0;
+ u v1464 = 0;
+ u v1465 = 0;
+ u v1466 = 0;
+ u v1467 = 0;
+ u v1468 = 0;
+ u v1469 = 0;
+ u v1470 = 0;
+ u v1471 = 0;
+ u v1472 = 0;
+ u v1473 = 0;
+ u v1474 = 0;
+ u v1475 = 0;
+ u v1476 = 0;
+ u v1477 = 0;
+ u v1478 = 0;
+ u v1479 = 0;
+ u v1480 = 0;
+ u v1481 = 0;
+ u v1482 = 0;
+ u v1483 = 0;
+ u v1484 = 0;
+ u v1485 = 0;
+ u v1486 = 0;
+ u v1487 = 0;
+ u v1488 = 0;
+ u v1489 = 0;
+ u v1490 = 0;
+ u v1491 = 0;
+ u v1492 = 0;
+ u v1493 = 0;
+ u v1494 = 0;
+ u v1495 = 0;
+ u v1496 = 0;
+ u v1497 = 0;
+ u v1498 = 0;
+ u v1499 = 0;
+ u v1500 = 0;
+ u v1501 = 0;
+ u v1502 = 0;
+ u v1503 = 0;
+ u v1504 = 0;
+ u v1505 = 0;
+ u v1506 = 0;
+ u v1507 = 0;
+ u v1508 = 0;
+ u v1509 = 0;
+ u v1510 = 0;
+ u v1511 = 0;
+ u v1512 = 0;
+ u v1513 = 0;
+ u v1514 = 0;
+ u v1515 = 0;
+ u v1516 = 0;
+ u v1517 = 0;
+ u v1518 = 0;
+ u v1519 = 0;
+ u v1520 = 0;
+ u v1521 = 0;
+ u v1522 = 0;
+ u v1523 = 0;
+ u v1524 = 0;
+ u v1525 = 0;
+ u v1526 = 0;
+ u v1527 = 0;
+ u v1528 = 0;
+ u v1529 = 0;
+ u v1530 = 0;
+ u v1531 = 0;
+ u v1532 = 0;
+ u v1533 = 0;
+ u v1534 = 0;
+ u v1535 = 0;
+ u v1536 = 0;
+ u v1537 = 0;
+ u v1538 = 0;
+ u v1539 = 0;
+ u v1540 = 0;
+ u v1541 = 0;
+ u v1542 = 0;
+ u v1543 = 0;
+ u v1544 = 0;
+ u v1545 = 0;
+ u v1546 = 0;
+ u v1547 = 0;
+ u v1548 = 0;
+ u v1549 = 0;
+ u v1550 = 0;
+ u v1551 = 0;
+ u v1552 = 0;
+ u v1553 = 0;
+ u v1554 = 0;
+ u v1555 = 0;
+ u v1556 = 0;
+ u v1557 = 0;
+ u v1558 = 0;
+ u v1559 = 0;
+ u v1560 = 0;
+ u v1561 = 0;
+ u v1562 = 0;
+ u v1563 = 0;
+ u v1564 = 0;
+ u v1565 = 0;
+ u v1566 = 0;
+ u v1567 = 0;
+ u v1568 = 0;
+ u v1569 = 0;
+ u v1570 = 0;
+ u v1571 = 0;
+ u v1572 = 0;
+ u v1573 = 0;
+ u v1574 = 0;
+ u v1575 = 0;
+ u v1576 = 0;
+ u v1577 = 0;
+ u v1578 = 0;
+ u v1579 = 0;
+ u v1580 = 0;
+ u v1581 = 0;
+ u v1582 = 0;
+ u v1583 = 0;
+ u v1584 = 0;
+ u v1585 = 0;
+ u v1586 = 0;
+ u v1587 = 0;
+ u v1588 = 0;
+ u v1589 = 0;
+ u v1590 = 0;
+ u v1591 = 0;
+ u v1592 = 0;
+ u v1593 = 0;
+ u v1594 = 0;
+ u v1595 = 0;
+ u v1596 = 0;
+ u v1597 = 0;
+ u v1598 = 0;
+ u v1599 = 0;
+ u v1600 = 0;
+ u v1601 = 0;
+ u v1602 = 0;
+ u v1603 = 0;
+ u v1604 = 0;
+ u v1605 = 0;
+ u v1606 = 0;
+ u v1607 = 0;
+ u v1608 = 0;
+ u v1609 = 0;
+ u v1610 = 0;
+ u v1611 = 0;
+ u v1612 = 0;
+ u v1613 = 0;
+ u v1614 = 0;
+ u v1615 = 0;
+ u v1616 = 0;
+ u v1617 = 0;
+ u v1618 = 0;
+ u v1619 = 0;
+ u v1620 = 0;
+ u v1621 = 0;
+ u v1622 = 0;
+ u v1623 = 0;
+ u v1624 = 0;
+ u v1625 = 0;
+ u v1626 = 0;
+ u v1627 = 0;
+ u v1628 = 0;
+ u v1629 = 0;
+ u v1630 = 0;
+ u v1631 = 0;
+ u v1632 = 0;
+ u v1633 = 0;
+ u v1634 = 0;
+ u v1635 = 0;
+ u v1636 = 0;
+ u v1637 = 0;
+ u v1638 = 0;
+ u v1639 = 0;
+ u v1640 = 0;
+ u v1641 = 0;
+ u v1642 = 0;
+ u v1643 = 0;
+ u v1644 = 0;
+ u v1645 = 0;
+ u v1646 = 0;
+ u v1647 = 0;
+ u v1648 = 0;
+ u v1649 = 0;
+ u v1650 = 0;
+ u v1651 = 0;
+ u v1652 = 0;
+ u v1653 = 0;
+ u v1654 = 0;
+ u v1655 = 0;
+ u v1656 = 0;
+ u v1657 = 0;
+ u v1658 = 0;
+ u v1659 = 0;
+ u v1660 = 0;
+ u v1661 = 0;
+ u v1662 = 0;
+ u v1663 = 0;
+ u v1664 = 0;
+ u v1665 = 0;
+ u v1666 = 0;
+ u v1667 = 0;
+ u v1668 = 0;
+ u v1669 = 0;
+ u v1670 = 0;
+ u v1671 = 0;
+ u v1672 = 0;
+ u v1673 = 0;
+ u v1674 = 0;
+ u v1675 = 0;
+ u v1676 = 0;
+ u v1677 = 0;
+ u v1678 = 0;
+ u v1679 = 0;
+ u v1680 = 0;
+ u v1681 = 0;
+ u v1682 = 0;
+ u v1683 = 0;
+ u v1684 = 0;
+ u v1685 = 0;
+ u v1686 = 0;
+ u v1687 = 0;
+ u v1688 = 0;
+ u v1689 = 0;
+ u v1690 = 0;
+ u v1691 = 0;
+ u v1692 = 0;
+ u v1693 = 0;
+ u v1694 = 0;
+ u v1695 = 0;
+ u v1696 = 0;
+ u v1697 = 0;
+ u v1698 = 0;
+ u v1699 = 0;
+ u v1700 = 0;
+ u v1701 = 0;
+ u v1702 = 0;
+ u v1703 = 0;
+ u v1704 = 0;
+ u v1705 = 0;
+ u v1706 = 0;
+ u v1707 = 0;
+ u v1708 = 0;
+ u v1709 = 0;
+ u v1710 = 0;
+ u v1711 = 0;
+ u v1712 = 0;
+ u v1713 = 0;
+ u v1714 = 0;
+ u v1715 = 0;
+ u v1716 = 0;
+ u v1717 = 0;
+ u v1718 = 0;
+ u v1719 = 0;
+ u v1720 = 0;
+ u v1721 = 0;
+ u v1722 = 0;
+ u v1723 = 0;
+ u v1724 = 0;
+ u v1725 = 0;
+ u v1726 = 0;
+ u v1727 = 0;
+ u v1728 = 0;
+ u v1729 = 0;
+ u v1730 = 0;
+ u v1731 = 0;
+ u v1732 = 0;
+ u v1733 = 0;
+ u v1734 = 0;
+ u v1735 = 0;
+ u v1736 = 0;
+ u v1737 = 0;
+ u v1738 = 0;
+ u v1739 = 0;
+ u v1740 = 0;
+ u v1741 = 0;
+ u v1742 = 0;
+ u v1743 = 0;
+ u v1744 = 0;
+ u v1745 = 0;
+ u v1746 = 0;
+ u v1747 = 0;
+ u v1748 = 0;
+ u v1749 = 0;
+ u v1750 = 0;
+ u v1751 = 0;
+ u v1752 = 0;
+ u v1753 = 0;
+ u v1754 = 0;
+ u v1755 = 0;
+ u v1756 = 0;
+ u v1757 = 0;
+ u v1758 = 0;
+ u v1759 = 0;
+ u v1760 = 0;
+ u v1761 = 0;
+ u v1762 = 0;
+ u v1763 = 0;
+ u v1764 = 0;
+ u v1765 = 0;
+ u v1766 = 0;
+ u v1767 = 0;
+ u v1768 = 0;
+ u v1769 = 0;
+ u v1770 = 0;
+ u v1771 = 0;
+ u v1772 = 0;
+ u v1773 = 0;
+ u v1774 = 0;
+ u v1775 = 0;
+ u v1776 = 0;
+ u v1777 = 0;
+ u v1778 = 0;
+ u v1779 = 0;
+ u v1780 = 0;
+ u v1781 = 0;
+ u v1782 = 0;
+ u v1783 = 0;
+ u v1784 = 0;
+ u v1785 = 0;
+ u v1786 = 0;
+ u v1787 = 0;
+ u v1788 = 0;
+ u v1789 = 0;
+ u v1790 = 0;
+ u v1791 = 0;
+ u v1792 = 0;
+ u v1793 = 0;
+ u v1794 = 0;
+ u v1795 = 0;
+ u v1796 = 0;
+ u v1797 = 0;
+ u v1798 = 0;
+ u v1799 = 0;
+ u v1800 = 0;
+ u v1801 = 0;
+ u v1802 = 0;
+ u v1803 = 0;
+ u v1804 = 0;
+ u v1805 = 0;
+ u v1806 = 0;
+ u v1807 = 0;
+ u v1808 = 0;
+ u v1809 = 0;
+ u v1810 = 0;
+ u v1811 = 0;
+ u v1812 = 0;
+ u v1813 = 0;
+ u v1814 = 0;
+ u v1815 = 0;
+ u v1816 = 0;
+ u v1817 = 0;
+ u v1818 = 0;
+ u v1819 = 0;
+ u v1820 = 0;
+ u v1821 = 0;
+ u v1822 = 0;
+ u v1823 = 0;
+ u v1824 = 0;
+ u v1825 = 0;
+ u v1826 = 0;
+ u v1827 = 0;
+ u v1828 = 0;
+ u v1829 = 0;
+ u v1830 = 0;
+ u v1831 = 0;
+ u v1832 = 0;
+ u v1833 = 0;
+ u v1834 = 0;
+ u v1835 = 0;
+ u v1836 = 0;
+ u v1837 = 0;
+ u v1838 = 0;
+ u v1839 = 0;
+ u v1840 = 0;
+ u v1841 = 0;
+ u v1842 = 0;
+ u v1843 = 0;
+ u v1844 = 0;
+ u v1845 = 0;
+ u v1846 = 0;
+ u v1847 = 0;
+ u v1848 = 0;
+ u v1849 = 0;
+ u v1850 = 0;
+ u v1851 = 0;
+ u v1852 = 0;
+ u v1853 = 0;
+ u v1854 = 0;
+ u v1855 = 0;
+ u v1856 = 0;
+ u v1857 = 0;
+ u v1858 = 0;
+ u v1859 = 0;
+ u v1860 = 0;
+ u v1861 = 0;
+ u v1862 = 0;
+ u v1863 = 0;
+ u v1864 = 0;
+ u v1865 = 0;
+ u v1866 = 0;
+ u v1867 = 0;
+ u v1868 = 0;
+ u v1869 = 0;
+ u v1870 = 0;
+ u v1871 = 0;
+ u v1872 = 0;
+ u v1873 = 0;
+ u v1874 = 0;
+ u v1875 = 0;
+ u v1876 = 0;
+ u v1877 = 0;
+ u v1878 = 0;
+ u v1879 = 0;
+ u v1880 = 0;
+ u v1881 = 0;
+ u v1882 = 0;
+ u v1883 = 0;
+ u v1884 = 0;
+ u v1885 = 0;
+ u v1886 = 0;
+ u v1887 = 0;
+ u v1888 = 0;
+ u v1889 = 0;
+ u v1890 = 0;
+ u v1891 = 0;
+ u v1892 = 0;
+ u v1893 = 0;
+ u v1894 = 0;
+ u v1895 = 0;
+ u v1896 = 0;
+ u v1897 = 0;
+ u v1898 = 0;
+ u v1899 = 0;
+ u v1900 = 0;
+ u v1901 = 0;
+ u v1902 = 0;
+ u v1903 = 0;
+ u v1904 = 0;
+ u v1905 = 0;
+ u v1906 = 0;
+ u v1907 = 0;
+ u v1908 = 0;
+ u v1909 = 0;
+ u v1910 = 0;
+ u v1911 = 0;
+ u v1912 = 0;
+ u v1913 = 0;
+ u v1914 = 0;
+ u v1915 = 0;
+ u v1916 = 0;
+ u v1917 = 0;
+ u v1918 = 0;
+ u v1919 = 0;
+ u v1920 = 0;
+ u v1921 = 0;
+ u v1922 = 0;
+ u v1923 = 0;
+ u v1924 = 0;
+ u v1925 = 0;
+ u v1926 = 0;
+ u v1927 = 0;
+ u v1928 = 0;
+ u v1929 = 0;
+ u v1930 = 0;
+ u v1931 = 0;
+ u v1932 = 0;
+ u v1933 = 0;
+ u v1934 = 0;
+ u v1935 = 0;
+ u v1936 = 0;
+ u v1937 = 0;
+ u v1938 = 0;
+ u v1939 = 0;
+ u v1940 = 0;
+ u v1941 = 0;
+ u v1942 = 0;
+ u v1943 = 0;
+ u v1944 = 0;
+ u v1945 = 0;
+ u v1946 = 0;
+ u v1947 = 0;
+ u v1948 = 0;
+ u v1949 = 0;
+ u v1950 = 0;
+ u v1951 = 0;
+ u v1952 = 0;
+ u v1953 = 0;
+ u v1954 = 0;
+ u v1955 = 0;
+ u v1956 = 0;
+ u v1957 = 0;
+ u v1958 = 0;
+ u v1959 = 0;
+ u v1960 = 0;
+ u v1961 = 0;
+ u v1962 = 0;
+ u v1963 = 0;
+ u v1964 = 0;
+ u v1965 = 0;
+ u v1966 = 0;
+ u v1967 = 0;
+ u v1968 = 0;
+ u v1969 = 0;
+ u v1970 = 0;
+ u v1971 = 0;
+ u v1972 = 0;
+ u v1973 = 0;
+ u v1974 = 0;
+ u v1975 = 0;
+ u v1976 = 0;
+ u v1977 = 0;
+ u v1978 = 0;
+ u v1979 = 0;
+ u v1980 = 0;
+ u v1981 = 0;
+ v2 = (u)zfind;
+ v3 = vc;
+ v4 = (u)"syscall";
+ v5 = 0UL;
+ v6 = 1UL;
+ v7 = ((u(*)())(v2))(v3, v4, v5, v6);
+ vd = v7;
+ if (!(*(u*)(vd + 72UL))) goto b6;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b10;
+ v9 = 0UL;
+b11: if (!(v9)) goto b6;
+ v8 = 1UL;
+b8: if (!(v8)) goto b4;
+ v10 = (u)zfixup_label;
+ v11 = *(u*)(vc + 48UL);
+ v12 = *(u*)(vd + 88UL);
+ v13 = ((u(*)())(v10))(v11, v12);
v13;
-b6: v14 = (u)zfopen;
- v15 = vfd;
- v16 = *(u*)(vc + 0UL);
- v17 = ((u(*)())v14)(v15, v16);
- *(u*)(vc + 72UL) = v17;
- *(u*)(*(u*)(vc + 72UL) + 56UL) = 1UL;
- return 0UL;
-b8: goto b6;
-b3: goto b1;
-}
-u zopen_lex(u vl, u vfd) {
- *(u*)(vl + 32UL) = vfd;
- *(u*)(vl + 40UL) = 0UL;
- *(u*)(vl + 48UL) = 0UL;
- *(u*)(vl + 64UL) = 0UL;
- *(u*)(vl + 72UL) = 0UL;
- *(u*)(vl + 80UL) = 0UL;
- *(u*)(vl + 104UL) = 1UL;
- *(u*)(vl + 112UL) = 1UL;
- *(u*)(vl + 120UL) = 1UL;
- *(u*)(vl + 128UL) = 1UL;
- return 0UL;
-}
-u zopen_lines_out(u vc, u vfilename) {
- u vfd = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- v3 = (u)zopen;
- v4 = vfilename;
- v5 = 64UL | 1UL | 512UL;
- v6 = (6UL << 6UL) + (6UL << 3UL) + 6UL;
- v7 = ((u(*)())v3)(v4, v5, v6);
- vfd = v7;
- if ((s)vfd >= (s)0UL) goto b4;
- v8 = (u)zdie;
- v9 = (u)"open_lines_out: failed to open output";
- v10 = ((u(*)())v8)(v9);
- v10;
-b2: v11 = (u)zfopen;
- v12 = vfd;
- v13 = *(u*)(vc + 0UL);
- v14 = ((u(*)())v11)(v12, v13);
- *(u*)(*(u*)(vc + 48UL) + 80UL) = v14;
- *(u*)(*(u*)(*(u*)(vc + 48UL) + 80UL) + 56UL) = 1UL;
- return 0UL;
-b4: goto b2;
-}
-u zopen_output(u vc, u vfilename) {
- u vfd = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- if (!*(u*)(vc + 8UL)) goto b3;
- v3 = (u)zdie;
- v4 = (u)"multiple output files";
- v5 = ((u(*)())v3)(v4);
- v5;
-b1: v6 = (u)zunlink;
- v7 = vfilename;
- v8 = ((u(*)())v6)(v7);
- v8;
- v9 = (u)zopen;
- v10 = vfilename;
- v11 = 64UL | 1UL;
- v12 = (7UL << 6UL) + (7UL << 3UL) + 7UL;
- v13 = ((u(*)())v9)(v10, v11, v12);
- vfd = v13;
- if ((s)vfd >= (s)0UL) goto b9;
- v14 = (u)zdie;
- v15 = (u)"failed to open output";
- v16 = ((u(*)())v14)(v15);
- v16;
-b7: v17 = (u)zfopen;
- v18 = vfd;
- v19 = *(u*)(vc + 0UL);
- v20 = ((u(*)())v17)(v18, v19);
- *(u*)(vc + 8UL) = v20;
- *(u*)(*(u*)(vc + 8UL) + 56UL) = 1UL;
- return 0UL;
-b9: goto b7;
-b3: goto b1;
-}
-u zoutput_ir(u vc, u vd) {
- u vic = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- vic = *(u*)(vd + 112UL);
- *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vic + 32UL);
- *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vic + 40UL);
- *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vic + 48UL);
- *(u*)(*(u*)(vic + 8UL) + 88UL) = *(u*)(vic + 32UL);
- *(u*)(*(u*)(vic + 8UL) + 96UL) = *(u*)(vic + 40UL);
- v3 = (u)zfixup_label;
- v4 = *(u*)(vc + 48UL);
- v5 = *(u*)(vd + 88UL);
- v6 = ((u(*)())v3)(v4, v5);
- v6;
- v7 = (u)zadd_symbol;
- v8 = *(u*)(vc + 48UL);
- v9 = *(u*)(vd + 32UL);
- v10 = *(u*)(vd + 88UL);
- v11 = ((u(*)())v7)(v8, v9, v10);
- v11;
- v12 = (u)zstrcmp;
- v13 = *(u*)(vd + 32UL);
- v14 = (u)"_start";
- v15 = ((u(*)())v12)(v13, v14);
- if (v15 != 0UL) goto b5;
- v16 = (u)zas_modrm;
- v17 = *(u*)(vc + 48UL);
- v18 = 139UL;
- v19 = 7UL;
- v20 = 4UL;
- v21 = 0UL;
- v22 = 0UL;
- v23 = 0UL;
- v24 = ((u(*)())v16)(v17, v18, v19, v20, v21, v22, v23);
- v24;
- v25 = (u)zas_modrm;
- v26 = *(u*)(vc + 48UL);
- v27 = 141UL;
- v28 = 6UL;
- v29 = 4UL;
- v30 = 0UL;
- v31 = 0UL;
- v32 = 8UL;
- v33 = ((u(*)())v25)(v26, v27, v28, v29, v30, v31, v32);
- v33;
- v34 = (u)zas_modrm;
- v35 = *(u*)(vc + 48UL);
- v36 = 141UL;
- v37 = 2UL;
- v38 = 6UL;
- v39 = 7UL;
- v40 = 8UL;
- v41 = 8UL;
- v42 = ((u(*)())v34)(v35, v36, v37, v38, v39, v40, v41);
- v42;
- v43 = (u)zas_opr;
- v44 = *(u*)(vc + 48UL);
- v45 = 80UL;
- v46 = 5UL;
- v47 = ((u(*)())v43)(v44, v45, v46);
- v47;
-b3: v55 = (u)zas_opr;
- v56 = *(u*)(vic + 8UL);
- v57 = 80UL;
- v58 = 5UL;
- v59 = ((u(*)())v55)(v56, v57, v58);
- v59;
- v60 = (u)zas_modrr;
- v61 = *(u*)(vic + 8UL);
- v62 = 139UL;
- v63 = 5UL;
- v64 = 4UL;
- v65 = ((u(*)())v60)(v61, v62, v63, v64);
- v65;
- v66 = (u)zoutput_irvars;
- v67 = vic;
- v68 = ((u(*)())v66)(v67);
- v68;
- v69 = (u)zoutput_irblock;
- v70 = vic;
- v71 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v72 = ((u(*)())v69)(v70, v71);
- v72;
- v73 = (u)zirreset;
- v74 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
- v75 = ((u(*)())v73)(v74);
- v75;
- return 0UL;
-b5: v48 = (u)zstrcmp;
- v49 = *(u*)(vd + 32UL);
- v50 = (u)"_kstart";
- v51 = ((u(*)())v48)(v49, v50);
- if (v51 != 0UL) goto b12;
- v52 = (u)zemit_kstart;
- v53 = *(u*)(vc + 48UL);
- v54 = ((u(*)())v52)(v53);
- v54;
- goto b3;
-b12: goto b3;
-}
-u zoutput_irargs(u vic, u vb, u vo) {
- u vi = 0;
- u vop = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- vi = 0UL;
-b1: if (vi != *(u*)(vb + 16UL)) goto b5;
- return 0UL;
-b5: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
- if (*(u*)(vop + 0UL) != 8UL) goto b8;
- v5 = (u)zoutput_irexpr;
- v6 = vic;
- v7 = vb;
- v8 = *(u*)(vop + 8UL);
- v9 = ((u(*)())v5)(v6, v7, v8);
- v9;
- if (*(u*)(vop + 24UL) != 0UL) goto b12;
- v10 = (u)zas_modrr;
- v11 = *(u*)(vic + 8UL);
- v12 = 139UL;
- v13 = 7UL;
- v14 = 0UL;
- v15 = ((u(*)())v10)(v11, v12, v13, v14);
- v15;
-b10:b6: vi = vi + 1UL;
- goto b1;
-b12: if (*(u*)(vop + 24UL) != 1UL) goto b15;
- v16 = (u)zas_modrr;
- v17 = *(u*)(vic + 8UL);
- v18 = 139UL;
- v19 = 6UL;
- v20 = 0UL;
- v21 = ((u(*)())v16)(v17, v18, v19, v20);
- v21;
- goto b10;
-b15: if (*(u*)(vop + 24UL) != 2UL) goto b18;
- v22 = (u)zas_modrr;
- v23 = *(u*)(vic + 8UL);
- v24 = 139UL;
- v25 = 2UL;
- v26 = 0UL;
- v27 = ((u(*)())v22)(v23, v24, v25, v26);
- v27;
- goto b10;
-b18: if (*(u*)(vop + 24UL) != 3UL) goto b21;
- v28 = (u)zas_modrr;
- v29 = *(u*)(vic + 8UL);
- v30 = 139UL;
- v31 = 1UL;
- v32 = 0UL;
- v33 = ((u(*)())v28)(v29, v30, v31, v32);
- v33;
- goto b10;
-b21: if (*(u*)(vop + 24UL) != 4UL) goto b24;
- v34 = (u)zas_modrr;
- v35 = *(u*)(vic + 8UL);
- v36 = 139UL;
- v37 = 8UL;
- v38 = 0UL;
- v39 = ((u(*)())v34)(v35, v36, v37, v38);
- v39;
- goto b10;
-b24: if (*(u*)(vop + 24UL) != 5UL) goto b27;
- v40 = (u)zas_modrr;
- v41 = *(u*)(vic + 8UL);
- v42 = 139UL;
- v43 = 9UL;
- v44 = 0UL;
- v45 = ((u(*)())v40)(v41, v42, v43, v44);
- v45;
- goto b10;
-b27: v46 = (u)zas_modrm;
- v47 = *(u*)(vic + 8UL);
- v48 = 137UL;
- v49 = 0UL;
- v50 = 4UL;
- v51 = 0UL;
- v52 = 0UL;
- v53 = (*(u*)(vop + 24UL) - 6UL) * 8UL;
- v54 = ((u(*)())v46)(v47, v48, v49, v50, v51, v52, v53);
+ v14 = (u)zadd_symbol;
+ v15 = *(u*)(vc + 48UL);
+ v16 = *(u*)(vd + 32UL);
+ v17 = *(u*)(vd + 88UL);
+ v18 = ((u(*)())(v14))(v15, v16, v17);
+ v18;
+ v19 = (u)zx86_64_modrr;
+ v20 = *(u*)(vc + 48UL);
+ v21 = 139UL;
+ v22 = 0UL;
+ v23 = 7UL;
+ v24 = ((u(*)())(v19))(v20, v21, v22, v23);
+ v24;
+ v25 = (u)zx86_64_modrr;
+ v26 = *(u*)(vc + 48UL);
+ v27 = 139UL;
+ v28 = 7UL;
+ v29 = 6UL;
+ v30 = ((u(*)())(v25))(v26, v27, v28, v29);
+ v30;
+ v31 = (u)zx86_64_modrr;
+ v32 = *(u*)(vc + 48UL);
+ v33 = 139UL;
+ v34 = 6UL;
+ v35 = 2UL;
+ v36 = ((u(*)())(v31))(v32, v33, v34, v35);
+ v36;
+ v37 = (u)zx86_64_modrr;
+ v38 = *(u*)(vc + 48UL);
+ v39 = 139UL;
+ v40 = 2UL;
+ v41 = 1UL;
+ v42 = ((u(*)())(v37))(v38, v39, v40, v41);
+ v42;
+ v43 = (u)zx86_64_modrr;
+ v44 = *(u*)(vc + 48UL);
+ v45 = 139UL;
+ v46 = 10UL;
+ v47 = 8UL;
+ v48 = ((u(*)())(v43))(v44, v45, v46, v47);
+ v48;
+ v49 = (u)zx86_64_modrr;
+ v50 = *(u*)(vc + 48UL);
+ v51 = 139UL;
+ v52 = 8UL;
+ v53 = 9UL;
+ v54 = ((u(*)())(v49))(v50, v51, v52, v53);
v54;
- goto b10;
-b8: goto b6;
-}
-u zoutput_irblock(u vic, u vb) {
- u vop = 0;
- u vi = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- *(u*)(vb + 80UL) = 1UL;
- if (!*(u*)(vb + 32UL)) goto b5;
- v4 = 0UL;
-b6: if (!v4) goto b3;
- v5 = (u)zcdie;
- v6 = *(u*)(vic + 0UL);
- v7 = (u)"no return in function";
- v8 = ((u(*)())v5)(v6, v7);
- v8;
-b1: v9 = (u)zfixup_label;
- v10 = *(u*)(vic + 8UL);
- v11 = *(u*)(vb + 72UL);
- v12 = ((u(*)())v9)(v10, v11);
- v12;
- vi = 0UL;
-b9: if (vi != *(u*)(vb + 16UL)) goto b13;
- return 0UL;
-b13: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
- v13 = (u)zoutput_irstmt;
- v14 = vic;
- v15 = vb;
- v16 = vop;
- v17 = ((u(*)())v13)(v14, v15, v16);
- v17;
- vi = vi + 1UL;
- goto b9;
-b3: goto b1;
-b5: v4 = 1UL;
- goto b6;
-}
-u zoutput_ircall(u vic, u vb, u vo) {
- u vd = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- v4 = (u)zfind;
- v5 = *(u*)(vic + 0UL);
- v6 = *(u*)(vo + 32UL);
- v7 = 0UL;
- v8 = 0UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vd = v9;
- if (!vd) goto b10;
- v11 = 0UL;
-b11: if (!v11) goto b6;
- v10 = 1UL;
-b8: if (!v10) goto b4;
- v13 = (u)zcdie;
- v14 = *(u*)(vic + 0UL);
- v15 = (u)"no such function";
- v16 = ((u(*)())v13)(v14, v15);
- v16;
-b2: v17 = (u)zas_jmp;
- v18 = *(u*)(vic + 8UL);
- v19 = 232UL;
- v20 = *(u*)(vd + 88UL);
- v21 = ((u(*)())v17)(v18, v19, v20);
- v21;
- return 0UL;
+ v55 = (u)zx86_64_modrm;
+ v56 = *(u*)(vc + 48UL);
+ v57 = 139UL;
+ v58 = 9UL;
+ v59 = 4UL;
+ v60 = 0UL;
+ v61 = 0UL;
+ v62 = 8UL;
+ v63 = ((u(*)())(v55))(v56, v57, v58, v59, v60, v61, v62);
+ v63;
+ v64 = (u)zx86_64_op;
+ v65 = *(u*)(vc + 48UL);
+ v66 = 3845UL;
+ v67 = ((u(*)())(v64))(v65, v66);
+ v67;
+ v68 = (u)zx86_64_op;
+ v69 = *(u*)(vc + 48UL);
+ v70 = 195UL;
+ v71 = ((u(*)())(v68))(v69, v70);
+ v71;
+b2: v72 = (u)zfind;
+ v73 = vc;
+ v74 = (u)"_restorer";
+ v75 = 0UL;
+ v76 = 1UL;
+ v77 = ((u(*)())(v72))(v73, v74, v75, v76);
+ vd = v77;
+ if (!(*(u*)(vd + 72UL))) goto b28;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b32;
+ v79 = 0UL;
+b33: if (!(v79)) goto b28;
+ v78 = 1UL;
+b30: if (!(v78)) goto b26;
+ v80 = (u)zfixup_label;
+ v81 = *(u*)(vc + 48UL);
+ v82 = *(u*)(vd + 88UL);
+ v83 = ((u(*)())(v80))(v81, v82);
+ v83;
+ v84 = (u)zadd_symbol;
+ v85 = *(u*)(vc + 48UL);
+ v86 = *(u*)(vd + 32UL);
+ v87 = *(u*)(vd + 88UL);
+ v88 = ((u(*)())(v84))(v85, v86, v87);
+ v88;
+ v89 = (u)zx86_64_modri;
+ v90 = *(u*)(vc + 48UL);
+ v91 = 199UL;
+ v92 = 0UL;
+ v93 = 15UL;
+ v94 = ((u(*)())(v89))(v90, v91, v92, v93);
+ v94;
+ v95 = (u)zx86_64_op;
+ v96 = *(u*)(vc + 48UL);
+ v97 = 3845UL;
+ v98 = ((u(*)())(v95))(v96, v97);
+ v98;
+b24: v99 = (u)zfind;
+ v100 = vc;
+ v101 = (u)"_include";
+ v102 = 0UL;
+ v103 = 1UL;
+ v104 = ((u(*)())(v99))(v100, v101, v102, v103);
+ vd = v104;
+ if (!(*(u*)(vd + 72UL))) goto b43;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b47;
+ v106 = 0UL;
+b48: if (!(v106)) goto b43;
+ v105 = 1UL;
+b45: if (!(v105)) goto b41;
+ v107 = (u)zfixup_label;
+ v108 = *(u*)(vc + 48UL);
+ v109 = *(u*)(vd + 88UL);
+ v110 = ((u(*)())(v107))(v108, v109);
+ v110;
+ v111 = (u)zadd_symbol;
+ v112 = *(u*)(vc + 48UL);
+ v113 = *(u*)(vd + 32UL);
+ v114 = *(u*)(vd + 88UL);
+ v115 = ((u(*)())(v111))(v112, v113, v114);
+ v115;
+ v116 = (u)zx86_64_op;
+ v117 = *(u*)(vc + 48UL);
+ v118 = 3851UL;
+ v119 = ((u(*)())(v116))(v117, v118);
+ v119;
+b39: v120 = (u)zfind;
+ v121 = vc;
+ v122 = (u)"ud2";
+ v123 = 0UL;
+ v124 = 1UL;
+ v125 = ((u(*)())(v120))(v121, v122, v123, v124);
+ vd = v125;
+ if (!(*(u*)(vd + 72UL))) goto b57;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b61;
+ v127 = 0UL;
+b62: if (!(v127)) goto b57;
+ v126 = 1UL;
+b59: if (!(v126)) goto b55;
+ v128 = (u)zfixup_label;
+ v129 = *(u*)(vc + 48UL);
+ v130 = *(u*)(vd + 88UL);
+ v131 = ((u(*)())(v128))(v129, v130);
+ v131;
+ v132 = (u)zadd_symbol;
+ v133 = *(u*)(vc + 48UL);
+ v134 = *(u*)(vd + 32UL);
+ v135 = *(u*)(vd + 88UL);
+ v136 = ((u(*)())(v132))(v133, v134, v135);
+ v136;
+ v137 = (u)zx86_64_op;
+ v138 = *(u*)(vc + 48UL);
+ v139 = 3851UL;
+ v140 = ((u(*)())(v137))(v138, v139);
+ v140;
+b53: v141 = (u)zfind;
+ v142 = vc;
+ v143 = (u)"cpuid";
+ v144 = 0UL;
+ v145 = 1UL;
+ v146 = ((u(*)())(v141))(v142, v143, v144, v145);
+ vd = v146;
+ if (!(*(u*)(vd + 72UL))) goto b71;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b75;
+ v148 = 0UL;
+b76: if (!(v148)) goto b71;
+ v147 = 1UL;
+b73: if (!(v147)) goto b69;
+ v149 = (u)zfixup_label;
+ v150 = *(u*)(vc + 48UL);
+ v151 = *(u*)(vd + 88UL);
+ v152 = ((u(*)())(v149))(v150, v151);
+ v152;
+ v153 = (u)zadd_symbol;
+ v154 = *(u*)(vc + 48UL);
+ v155 = *(u*)(vd + 32UL);
+ v156 = *(u*)(vd + 88UL);
+ v157 = ((u(*)())(v153))(v154, v155, v156);
+ v157;
+ v158 = (u)zx86_64_opr;
+ v159 = *(u*)(vc + 48UL);
+ v160 = 80UL;
+ v161 = 1UL;
+ v162 = ((u(*)())(v158))(v159, v160, v161);
+ v162;
+ v163 = (u)zx86_64_opr;
+ v164 = *(u*)(vc + 48UL);
+ v165 = 80UL;
+ v166 = 2UL;
+ v167 = ((u(*)())(v163))(v164, v165, v166);
+ v167;
+ v168 = (u)zx86_64_opr;
+ v169 = *(u*)(vc + 48UL);
+ v170 = 80UL;
+ v171 = 6UL;
+ v172 = ((u(*)())(v168))(v169, v170, v171);
+ v172;
+ v173 = (u)zx86_64_opr;
+ v174 = *(u*)(vc + 48UL);
+ v175 = 80UL;
+ v176 = 7UL;
+ v177 = ((u(*)())(v173))(v174, v175, v176);
+ v177;
+ v178 = (u)zx86_64_modrm;
+ v179 = *(u*)(vc + 48UL);
+ v180 = 139UL;
+ v181 = 0UL;
+ v182 = 7UL;
+ v183 = 0UL;
+ v184 = 0UL;
+ v185 = 0UL;
+ v186 = ((u(*)())(v178))(v179, v180, v181, v182, v183, v184, v185);
+ v186;
+ v187 = (u)zx86_64_modrm;
+ v188 = *(u*)(vc + 48UL);
+ v189 = 139UL;
+ v190 = 1UL;
+ v191 = 6UL;
+ v192 = 0UL;
+ v193 = 0UL;
+ v194 = 0UL;
+ v195 = ((u(*)())(v187))(v188, v189, v190, v191, v192, v193, v194);
+ v195;
+ v196 = (u)zx86_64_modrm;
+ v197 = *(u*)(vc + 48UL);
+ v198 = 139UL;
+ v199 = 2UL;
+ v200 = 2UL;
+ v201 = 0UL;
+ v202 = 0UL;
+ v203 = 0UL;
+ v204 = ((u(*)())(v196))(v197, v198, v199, v200, v201, v202, v203);
+ v204;
+ v205 = (u)zx86_64_modrm;
+ v206 = *(u*)(vc + 48UL);
+ v207 = 139UL;
+ v208 = 3UL;
+ v209 = 1UL;
+ v210 = 0UL;
+ v211 = 0UL;
+ v212 = 0UL;
+ v213 = ((u(*)())(v205))(v206, v207, v208, v209, v210, v211, v212);
+ v213;
+ v214 = (u)zx86_64_op;
+ v215 = *(u*)(vc + 48UL);
+ v216 = 4002UL;
+ v217 = ((u(*)())(v214))(v215, v216);
+ v217;
+ v218 = (u)zx86_64_opr;
+ v219 = *(u*)(vc + 48UL);
+ v220 = 88UL;
+ v221 = 7UL;
+ v222 = ((u(*)())(v218))(v219, v220, v221);
+ v222;
+ v223 = (u)zx86_64_opr;
+ v224 = *(u*)(vc + 48UL);
+ v225 = 88UL;
+ v226 = 6UL;
+ v227 = ((u(*)())(v223))(v224, v225, v226);
+ v227;
+ v228 = (u)zx86_64_opr;
+ v229 = *(u*)(vc + 48UL);
+ v230 = 88UL;
+ v231 = 2UL;
+ v232 = ((u(*)())(v228))(v229, v230, v231);
+ v232;
+ v233 = (u)zx86_64_opr;
+ v234 = *(u*)(vc + 48UL);
+ v235 = 88UL;
+ v236 = 1UL;
+ v237 = ((u(*)())(v233))(v234, v235, v236);
+ v237;
+ v238 = (u)zx86_64_modrm;
+ v239 = *(u*)(vc + 48UL);
+ v240 = 137UL;
+ v241 = 0UL;
+ v242 = 7UL;
+ v243 = 0UL;
+ v244 = 0UL;
+ v245 = 0UL;
+ v246 = ((u(*)())(v238))(v239, v240, v241, v242, v243, v244, v245);
+ v246;
+ v247 = (u)zx86_64_modrm;
+ v248 = *(u*)(vc + 48UL);
+ v249 = 137UL;
+ v250 = 1UL;
+ v251 = 6UL;
+ v252 = 0UL;
+ v253 = 0UL;
+ v254 = 0UL;
+ v255 = ((u(*)())(v247))(v248, v249, v250, v251, v252, v253, v254);
+ v255;
+ v256 = (u)zx86_64_modrm;
+ v257 = *(u*)(vc + 48UL);
+ v258 = 137UL;
+ v259 = 2UL;
+ v260 = 2UL;
+ v261 = 0UL;
+ v262 = 0UL;
+ v263 = 0UL;
+ v264 = ((u(*)())(v256))(v257, v258, v259, v260, v261, v262, v263);
+ v264;
+ v265 = (u)zx86_64_modrm;
+ v266 = *(u*)(vc + 48UL);
+ v267 = 137UL;
+ v268 = 3UL;
+ v269 = 1UL;
+ v270 = 0UL;
+ v271 = 0UL;
+ v272 = 0UL;
+ v273 = ((u(*)())(v265))(v266, v267, v268, v269, v270, v271, v272);
+ v273;
+ v274 = (u)zx86_64_op;
+ v275 = *(u*)(vc + 48UL);
+ v276 = 195UL;
+ v277 = ((u(*)())(v274))(v275, v276);
+ v277;
+b67: v278 = (u)zfind;
+ v279 = vc;
+ v280 = (u)"inb";
+ v281 = 0UL;
+ v282 = 1UL;
+ v283 = ((u(*)())(v278))(v279, v280, v281, v282);
+ vd = v283;
+ if (!(*(u*)(vd + 72UL))) goto b102;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b106;
+ v285 = 0UL;
+b107: if (!(v285)) goto b102;
+ v284 = 1UL;
+b104: if (!(v284)) goto b100;
+ v286 = (u)zfixup_label;
+ v287 = *(u*)(vc + 48UL);
+ v288 = *(u*)(vd + 88UL);
+ v289 = ((u(*)())(v286))(v287, v288);
+ v289;
+ v290 = (u)zadd_symbol;
+ v291 = *(u*)(vc + 48UL);
+ v292 = *(u*)(vd + 32UL);
+ v293 = *(u*)(vd + 88UL);
+ v294 = ((u(*)())(v290))(v291, v292, v293);
+ v294;
+ v295 = (u)zx86_64_modrr;
+ v296 = *(u*)(vc + 48UL);
+ v297 = 139UL;
+ v298 = 2UL;
+ v299 = 7UL;
+ v300 = ((u(*)())(v295))(v296, v297, v298, v299);
+ v300;
+ v301 = (u)zx86_64_op;
+ v302 = *(u*)(vc + 48UL);
+ v303 = 236UL;
+ v304 = ((u(*)())(v301))(v302, v303);
+ v304;
+ v305 = (u)zx86_64_op;
+ v306 = *(u*)(vc + 48UL);
+ v307 = 195UL;
+ v308 = ((u(*)())(v305))(v306, v307);
+ v308;
+b98: v309 = (u)zfind;
+ v310 = vc;
+ v311 = (u)"outb";
+ v312 = 0UL;
+ v313 = 1UL;
+ v314 = ((u(*)())(v309))(v310, v311, v312, v313);
+ vd = v314;
+ if (!(*(u*)(vd + 72UL))) goto b118;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b122;
+ v316 = 0UL;
+b123: if (!(v316)) goto b118;
+ v315 = 1UL;
+b120: if (!(v315)) goto b116;
+ v317 = (u)zfixup_label;
+ v318 = *(u*)(vc + 48UL);
+ v319 = *(u*)(vd + 88UL);
+ v320 = ((u(*)())(v317))(v318, v319);
+ v320;
+ v321 = (u)zadd_symbol;
+ v322 = *(u*)(vc + 48UL);
+ v323 = *(u*)(vd + 32UL);
+ v324 = *(u*)(vd + 88UL);
+ v325 = ((u(*)())(v321))(v322, v323, v324);
+ v325;
+ v326 = (u)zx86_64_modrr;
+ v327 = *(u*)(vc + 48UL);
+ v328 = 139UL;
+ v329 = 2UL;
+ v330 = 7UL;
+ v331 = ((u(*)())(v326))(v327, v328, v329, v330);
+ v331;
+ v332 = (u)zx86_64_modrr;
+ v333 = *(u*)(vc + 48UL);
+ v334 = 139UL;
+ v335 = 0UL;
+ v336 = 6UL;
+ v337 = ((u(*)())(v332))(v333, v334, v335, v336);
+ v337;
+ v338 = (u)zx86_64_op;
+ v339 = *(u*)(vc + 48UL);
+ v340 = 238UL;
+ v341 = ((u(*)())(v338))(v339, v340);
+ v341;
+ v342 = (u)zx86_64_op;
+ v343 = *(u*)(vc + 48UL);
+ v344 = 195UL;
+ v345 = ((u(*)())(v342))(v343, v344);
+ v345;
+b114: v346 = (u)zfind;
+ v347 = vc;
+ v348 = (u)"inw";
+ v349 = 0UL;
+ v350 = 1UL;
+ v351 = ((u(*)())(v346))(v347, v348, v349, v350);
+ vd = v351;
+ if (!(*(u*)(vd + 72UL))) goto b135;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b139;
+ v353 = 0UL;
+b140: if (!(v353)) goto b135;
+ v352 = 1UL;
+b137: if (!(v352)) goto b133;
+ v354 = (u)zfixup_label;
+ v355 = *(u*)(vc + 48UL);
+ v356 = *(u*)(vd + 88UL);
+ v357 = ((u(*)())(v354))(v355, v356);
+ v357;
+ v358 = (u)zadd_symbol;
+ v359 = *(u*)(vc + 48UL);
+ v360 = *(u*)(vd + 32UL);
+ v361 = *(u*)(vd + 88UL);
+ v362 = ((u(*)())(v358))(v359, v360, v361);
+ v362;
+ v363 = (u)zx86_64_modrr;
+ v364 = *(u*)(vc + 48UL);
+ v365 = 139UL;
+ v366 = 2UL;
+ v367 = 7UL;
+ v368 = ((u(*)())(v363))(v364, v365, v366, v367);
+ v368;
+ v369 = (u)zas_emit;
+ v370 = *(u*)(vc + 48UL);
+ v371 = 102UL;
+ v372 = ((u(*)())(v369))(v370, v371);
+ v372;
+ v373 = (u)zx86_64_op;
+ v374 = *(u*)(vc + 48UL);
+ v375 = 237UL;
+ v376 = ((u(*)())(v373))(v374, v375);
+ v376;
+ v377 = (u)zx86_64_op;
+ v378 = *(u*)(vc + 48UL);
+ v379 = 195UL;
+ v380 = ((u(*)())(v377))(v378, v379);
+ v380;
+b131: v381 = (u)zfind;
+ v382 = vc;
+ v383 = (u)"outw";
+ v384 = 0UL;
+ v385 = 1UL;
+ v386 = ((u(*)())(v381))(v382, v383, v384, v385);
+ vd = v386;
+ if (!(*(u*)(vd + 72UL))) goto b152;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b156;
+ v388 = 0UL;
+b157: if (!(v388)) goto b152;
+ v387 = 1UL;
+b154: if (!(v387)) goto b150;
+ v389 = (u)zfixup_label;
+ v390 = *(u*)(vc + 48UL);
+ v391 = *(u*)(vd + 88UL);
+ v392 = ((u(*)())(v389))(v390, v391);
+ v392;
+ v393 = (u)zadd_symbol;
+ v394 = *(u*)(vc + 48UL);
+ v395 = *(u*)(vd + 32UL);
+ v396 = *(u*)(vd + 88UL);
+ v397 = ((u(*)())(v393))(v394, v395, v396);
+ v397;
+ v398 = (u)zx86_64_modrr;
+ v399 = *(u*)(vc + 48UL);
+ v400 = 139UL;
+ v401 = 2UL;
+ v402 = 7UL;
+ v403 = ((u(*)())(v398))(v399, v400, v401, v402);
+ v403;
+ v404 = (u)zx86_64_modrr;
+ v405 = *(u*)(vc + 48UL);
+ v406 = 139UL;
+ v407 = 0UL;
+ v408 = 6UL;
+ v409 = ((u(*)())(v404))(v405, v406, v407, v408);
+ v409;
+ v410 = (u)zas_emit;
+ v411 = *(u*)(vc + 48UL);
+ v412 = 102UL;
+ v413 = ((u(*)())(v410))(v411, v412);
+ v413;
+ v414 = (u)zx86_64_op;
+ v415 = *(u*)(vc + 48UL);
+ v416 = 239UL;
+ v417 = ((u(*)())(v414))(v415, v416);
+ v417;
+ v418 = (u)zx86_64_op;
+ v419 = *(u*)(vc + 48UL);
+ v420 = 195UL;
+ v421 = ((u(*)())(v418))(v419, v420);
+ v421;
+b148: v422 = (u)zfind;
+ v423 = vc;
+ v424 = (u)"ind";
+ v425 = 0UL;
+ v426 = 1UL;
+ v427 = ((u(*)())(v422))(v423, v424, v425, v426);
+ vd = v427;
+ if (!(*(u*)(vd + 72UL))) goto b170;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b174;
+ v429 = 0UL;
+b175: if (!(v429)) goto b170;
+ v428 = 1UL;
+b172: if (!(v428)) goto b168;
+ v430 = (u)zfixup_label;
+ v431 = *(u*)(vc + 48UL);
+ v432 = *(u*)(vd + 88UL);
+ v433 = ((u(*)())(v430))(v431, v432);
+ v433;
+ v434 = (u)zadd_symbol;
+ v435 = *(u*)(vc + 48UL);
+ v436 = *(u*)(vd + 32UL);
+ v437 = *(u*)(vd + 88UL);
+ v438 = ((u(*)())(v434))(v435, v436, v437);
+ v438;
+ v439 = (u)zx86_64_modrr;
+ v440 = *(u*)(vc + 48UL);
+ v441 = 139UL;
+ v442 = 2UL;
+ v443 = 7UL;
+ v444 = ((u(*)())(v439))(v440, v441, v442, v443);
+ v444;
+ v445 = (u)zx86_64_op;
+ v446 = *(u*)(vc + 48UL);
+ v447 = 237UL;
+ v448 = ((u(*)())(v445))(v446, v447);
+ v448;
+ v449 = (u)zx86_64_op;
+ v450 = *(u*)(vc + 48UL);
+ v451 = 195UL;
+ v452 = ((u(*)())(v449))(v450, v451);
+ v452;
+b166: v453 = (u)zfind;
+ v454 = vc;
+ v455 = (u)"outd";
+ v456 = 0UL;
+ v457 = 1UL;
+ v458 = ((u(*)())(v453))(v454, v455, v456, v457);
+ vd = v458;
+ if (!(*(u*)(vd + 72UL))) goto b186;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b190;
+ v460 = 0UL;
+b191: if (!(v460)) goto b186;
+ v459 = 1UL;
+b188: if (!(v459)) goto b184;
+ v461 = (u)zfixup_label;
+ v462 = *(u*)(vc + 48UL);
+ v463 = *(u*)(vd + 88UL);
+ v464 = ((u(*)())(v461))(v462, v463);
+ v464;
+ v465 = (u)zadd_symbol;
+ v466 = *(u*)(vc + 48UL);
+ v467 = *(u*)(vd + 32UL);
+ v468 = *(u*)(vd + 88UL);
+ v469 = ((u(*)())(v465))(v466, v467, v468);
+ v469;
+ v470 = (u)zx86_64_modrr;
+ v471 = *(u*)(vc + 48UL);
+ v472 = 139UL;
+ v473 = 2UL;
+ v474 = 7UL;
+ v475 = ((u(*)())(v470))(v471, v472, v473, v474);
+ v475;
+ v476 = (u)zx86_64_modrr;
+ v477 = *(u*)(vc + 48UL);
+ v478 = 139UL;
+ v479 = 0UL;
+ v480 = 6UL;
+ v481 = ((u(*)())(v476))(v477, v478, v479, v480);
+ v481;
+ v482 = (u)zx86_64_op;
+ v483 = *(u*)(vc + 48UL);
+ v484 = 239UL;
+ v485 = ((u(*)())(v482))(v483, v484);
+ v485;
+ v486 = (u)zx86_64_op;
+ v487 = *(u*)(vc + 48UL);
+ v488 = 195UL;
+ v489 = ((u(*)())(v486))(v487, v488);
+ v489;
+b182: v490 = (u)zfind;
+ v491 = vc;
+ v492 = (u)"rdmsr";
+ v493 = 0UL;
+ v494 = 1UL;
+ v495 = ((u(*)())(v490))(v491, v492, v493, v494);
+ vd = v495;
+ if (!(*(u*)(vd + 72UL))) goto b203;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b207;
+ v497 = 0UL;
+b208: if (!(v497)) goto b203;
+ v496 = 1UL;
+b205: if (!(v496)) goto b201;
+ v498 = (u)zfixup_label;
+ v499 = *(u*)(vc + 48UL);
+ v500 = *(u*)(vd + 88UL);
+ v501 = ((u(*)())(v498))(v499, v500);
+ v501;
+ v502 = (u)zadd_symbol;
+ v503 = *(u*)(vc + 48UL);
+ v504 = *(u*)(vd + 32UL);
+ v505 = *(u*)(vd + 88UL);
+ v506 = ((u(*)())(v502))(v503, v504, v505);
+ v506;
+ v507 = (u)zx86_64_modrr;
+ v508 = *(u*)(vc + 48UL);
+ v509 = 139UL;
+ v510 = 1UL;
+ v511 = 7UL;
+ v512 = ((u(*)())(v507))(v508, v509, v510, v511);
+ v512;
+ v513 = (u)zx86_64_op;
+ v514 = *(u*)(vc + 48UL);
+ v515 = 3890UL;
+ v516 = ((u(*)())(v513))(v514, v515);
+ v516;
+ v517 = (u)zx86_64_modri;
+ v518 = *(u*)(vc + 48UL);
+ v519 = 199UL;
+ v520 = 1UL;
+ v521 = 32UL;
+ v522 = ((u(*)())(v517))(v518, v519, v520, v521);
+ v522;
+ v523 = (u)zx86_64_modr;
+ v524 = *(u*)(vc + 48UL);
+ v525 = 262355UL;
+ v526 = 2UL;
+ v527 = ((u(*)())(v523))(v524, v525, v526);
+ v527;
+ v528 = (u)zx86_64_modrr;
+ v529 = *(u*)(vc + 48UL);
+ v530 = 11UL;
+ v531 = 0UL;
+ v532 = 2UL;
+ v533 = ((u(*)())(v528))(v529, v530, v531, v532);
+ v533;
+ v534 = (u)zx86_64_op;
+ v535 = *(u*)(vc + 48UL);
+ v536 = 195UL;
+ v537 = ((u(*)())(v534))(v535, v536);
+ v537;
+b199: v538 = (u)zfind;
+ v539 = vc;
+ v540 = (u)"wrmsr";
+ v541 = 0UL;
+ v542 = 1UL;
+ v543 = ((u(*)())(v538))(v539, v540, v541, v542);
+ vd = v543;
+ if (!(*(u*)(vd + 72UL))) goto b222;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b226;
+ v545 = 0UL;
+b227: if (!(v545)) goto b222;
+ v544 = 1UL;
+b224: if (!(v544)) goto b220;
+ v546 = (u)zfixup_label;
+ v547 = *(u*)(vc + 48UL);
+ v548 = *(u*)(vd + 88UL);
+ v549 = ((u(*)())(v546))(v547, v548);
+ v549;
+ v550 = (u)zadd_symbol;
+ v551 = *(u*)(vc + 48UL);
+ v552 = *(u*)(vd + 32UL);
+ v553 = *(u*)(vd + 88UL);
+ v554 = ((u(*)())(v550))(v551, v552, v553);
+ v554;
+ v555 = (u)zx86_64_modrr;
+ v556 = *(u*)(vc + 48UL);
+ v557 = 139UL;
+ v558 = 0UL;
+ v559 = 6UL;
+ v560 = ((u(*)())(v555))(v556, v557, v558, v559);
+ v560;
+ v561 = (u)zx86_64_modrr;
+ v562 = *(u*)(vc + 48UL);
+ v563 = 139UL;
+ v564 = 2UL;
+ v565 = 6UL;
+ v566 = ((u(*)())(v561))(v562, v563, v564, v565);
+ v566;
+ v567 = (u)zx86_64_modri;
+ v568 = *(u*)(vc + 48UL);
+ v569 = 199UL;
+ v570 = 1UL;
+ v571 = 32UL;
+ v572 = ((u(*)())(v567))(v568, v569, v570, v571);
+ v572;
+ v573 = (u)zx86_64_modr;
+ v574 = *(u*)(vc + 48UL);
+ v575 = 327891UL;
+ v576 = 2UL;
+ v577 = ((u(*)())(v573))(v574, v575, v576);
+ v577;
+ v578 = (u)zx86_64_modrr;
+ v579 = *(u*)(vc + 48UL);
+ v580 = 139UL;
+ v581 = 1UL;
+ v582 = 7UL;
+ v583 = ((u(*)())(v578))(v579, v580, v581, v582);
+ v583;
+ v584 = (u)zx86_64_op;
+ v585 = *(u*)(vc + 48UL);
+ v586 = 3888UL;
+ v587 = ((u(*)())(v584))(v585, v586);
+ v587;
+ v588 = (u)zx86_64_op;
+ v589 = *(u*)(vc + 48UL);
+ v590 = 195UL;
+ v591 = ((u(*)())(v588))(v589, v590);
+ v591;
+b218: v592 = (u)zfind;
+ v593 = vc;
+ v594 = (u)"rdcr0";
+ v595 = 0UL;
+ v596 = 1UL;
+ v597 = ((u(*)())(v592))(v593, v594, v595, v596);
+ vd = v597;
+ if (!(*(u*)(vd + 72UL))) goto b242;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b246;
+ v599 = 0UL;
+b247: if (!(v599)) goto b242;
+ v598 = 1UL;
+b244: if (!(v598)) goto b240;
+ v600 = (u)zfixup_label;
+ v601 = *(u*)(vc + 48UL);
+ v602 = *(u*)(vd + 88UL);
+ v603 = ((u(*)())(v600))(v601, v602);
+ v603;
+ v604 = (u)zadd_symbol;
+ v605 = *(u*)(vc + 48UL);
+ v606 = *(u*)(vd + 32UL);
+ v607 = *(u*)(vd + 88UL);
+ v608 = ((u(*)())(v604))(v605, v606, v607);
+ v608;
+ v609 = (u)zx86_64_modrr;
+ v610 = *(u*)(vc + 48UL);
+ v611 = 3872UL;
+ v612 = 0UL;
+ v613 = 0UL;
+ v614 = ((u(*)())(v609))(v610, v611, v612, v613);
+ v614;
+ v615 = (u)zx86_64_op;
+ v616 = *(u*)(vc + 48UL);
+ v617 = 195UL;
+ v618 = ((u(*)())(v615))(v616, v617);
+ v618;
+b238: v619 = (u)zfind;
+ v620 = vc;
+ v621 = (u)"wrcr0";
+ v622 = 0UL;
+ v623 = 1UL;
+ v624 = ((u(*)())(v619))(v620, v621, v622, v623);
+ vd = v624;
+ if (!(*(u*)(vd + 72UL))) goto b257;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b261;
+ v626 = 0UL;
+b262: if (!(v626)) goto b257;
+ v625 = 1UL;
+b259: if (!(v625)) goto b255;
+ v627 = (u)zfixup_label;
+ v628 = *(u*)(vc + 48UL);
+ v629 = *(u*)(vd + 88UL);
+ v630 = ((u(*)())(v627))(v628, v629);
+ v630;
+ v631 = (u)zadd_symbol;
+ v632 = *(u*)(vc + 48UL);
+ v633 = *(u*)(vd + 32UL);
+ v634 = *(u*)(vd + 88UL);
+ v635 = ((u(*)())(v631))(v632, v633, v634);
+ v635;
+ v636 = (u)zx86_64_modrr;
+ v637 = *(u*)(vc + 48UL);
+ v638 = 3874UL;
+ v639 = 0UL;
+ v640 = 7UL;
+ v641 = ((u(*)())(v636))(v637, v638, v639, v640);
+ v641;
+ v642 = (u)zx86_64_op;
+ v643 = *(u*)(vc + 48UL);
+ v644 = 195UL;
+ v645 = ((u(*)())(v642))(v643, v644);
+ v645;
+b253: v646 = (u)zfind;
+ v647 = vc;
+ v648 = (u)"rdcr2";
+ v649 = 0UL;
+ v650 = 1UL;
+ v651 = ((u(*)())(v646))(v647, v648, v649, v650);
+ vd = v651;
+ if (!(*(u*)(vd + 72UL))) goto b272;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b276;
+ v653 = 0UL;
+b277: if (!(v653)) goto b272;
+ v652 = 1UL;
+b274: if (!(v652)) goto b270;
+ v654 = (u)zfixup_label;
+ v655 = *(u*)(vc + 48UL);
+ v656 = *(u*)(vd + 88UL);
+ v657 = ((u(*)())(v654))(v655, v656);
+ v657;
+ v658 = (u)zadd_symbol;
+ v659 = *(u*)(vc + 48UL);
+ v660 = *(u*)(vd + 32UL);
+ v661 = *(u*)(vd + 88UL);
+ v662 = ((u(*)())(v658))(v659, v660, v661);
+ v662;
+ v663 = (u)zx86_64_modrr;
+ v664 = *(u*)(vc + 48UL);
+ v665 = 3872UL;
+ v666 = 2UL;
+ v667 = 0UL;
+ v668 = ((u(*)())(v663))(v664, v665, v666, v667);
+ v668;
+ v669 = (u)zx86_64_op;
+ v670 = *(u*)(vc + 48UL);
+ v671 = 195UL;
+ v672 = ((u(*)())(v669))(v670, v671);
+ v672;
+b268: v673 = (u)zfind;
+ v674 = vc;
+ v675 = (u)"wrcr2";
+ v676 = 0UL;
+ v677 = 1UL;
+ v678 = ((u(*)())(v673))(v674, v675, v676, v677);
+ vd = v678;
+ if (!(*(u*)(vd + 72UL))) goto b287;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b291;
+ v680 = 0UL;
+b292: if (!(v680)) goto b287;
+ v679 = 1UL;
+b289: if (!(v679)) goto b285;
+ v681 = (u)zfixup_label;
+ v682 = *(u*)(vc + 48UL);
+ v683 = *(u*)(vd + 88UL);
+ v684 = ((u(*)())(v681))(v682, v683);
+ v684;
+ v685 = (u)zadd_symbol;
+ v686 = *(u*)(vc + 48UL);
+ v687 = *(u*)(vd + 32UL);
+ v688 = *(u*)(vd + 88UL);
+ v689 = ((u(*)())(v685))(v686, v687, v688);
+ v689;
+ v690 = (u)zx86_64_modrr;
+ v691 = *(u*)(vc + 48UL);
+ v692 = 3874UL;
+ v693 = 2UL;
+ v694 = 7UL;
+ v695 = ((u(*)())(v690))(v691, v692, v693, v694);
+ v695;
+ v696 = (u)zx86_64_op;
+ v697 = *(u*)(vc + 48UL);
+ v698 = 195UL;
+ v699 = ((u(*)())(v696))(v697, v698);
+ v699;
+b283: v700 = (u)zfind;
+ v701 = vc;
+ v702 = (u)"rdcr3";
+ v703 = 0UL;
+ v704 = 1UL;
+ v705 = ((u(*)())(v700))(v701, v702, v703, v704);
+ vd = v705;
+ if (!(*(u*)(vd + 72UL))) goto b302;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b306;
+ v707 = 0UL;
+b307: if (!(v707)) goto b302;
+ v706 = 1UL;
+b304: if (!(v706)) goto b300;
+ v708 = (u)zfixup_label;
+ v709 = *(u*)(vc + 48UL);
+ v710 = *(u*)(vd + 88UL);
+ v711 = ((u(*)())(v708))(v709, v710);
+ v711;
+ v712 = (u)zadd_symbol;
+ v713 = *(u*)(vc + 48UL);
+ v714 = *(u*)(vd + 32UL);
+ v715 = *(u*)(vd + 88UL);
+ v716 = ((u(*)())(v712))(v713, v714, v715);
+ v716;
+ v717 = (u)zx86_64_modrr;
+ v718 = *(u*)(vc + 48UL);
+ v719 = 3872UL;
+ v720 = 3UL;
+ v721 = 0UL;
+ v722 = ((u(*)())(v717))(v718, v719, v720, v721);
+ v722;
+ v723 = (u)zx86_64_op;
+ v724 = *(u*)(vc + 48UL);
+ v725 = 195UL;
+ v726 = ((u(*)())(v723))(v724, v725);
+ v726;
+b298: v727 = (u)zfind;
+ v728 = vc;
+ v729 = (u)"wrcr3";
+ v730 = 0UL;
+ v731 = 1UL;
+ v732 = ((u(*)())(v727))(v728, v729, v730, v731);
+ vd = v732;
+ if (!(*(u*)(vd + 72UL))) goto b317;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b321;
+ v734 = 0UL;
+b322: if (!(v734)) goto b317;
+ v733 = 1UL;
+b319: if (!(v733)) goto b315;
+ v735 = (u)zfixup_label;
+ v736 = *(u*)(vc + 48UL);
+ v737 = *(u*)(vd + 88UL);
+ v738 = ((u(*)())(v735))(v736, v737);
+ v738;
+ v739 = (u)zadd_symbol;
+ v740 = *(u*)(vc + 48UL);
+ v741 = *(u*)(vd + 32UL);
+ v742 = *(u*)(vd + 88UL);
+ v743 = ((u(*)())(v739))(v740, v741, v742);
+ v743;
+ v744 = (u)zx86_64_modrr;
+ v745 = *(u*)(vc + 48UL);
+ v746 = 3874UL;
+ v747 = 3UL;
+ v748 = 7UL;
+ v749 = ((u(*)())(v744))(v745, v746, v747, v748);
+ v749;
+ v750 = (u)zx86_64_op;
+ v751 = *(u*)(vc + 48UL);
+ v752 = 195UL;
+ v753 = ((u(*)())(v750))(v751, v752);
+ v753;
+b313: v754 = (u)zfind;
+ v755 = vc;
+ v756 = (u)"rdcr4";
+ v757 = 0UL;
+ v758 = 1UL;
+ v759 = ((u(*)())(v754))(v755, v756, v757, v758);
+ vd = v759;
+ if (!(*(u*)(vd + 72UL))) goto b332;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b336;
+ v761 = 0UL;
+b337: if (!(v761)) goto b332;
+ v760 = 1UL;
+b334: if (!(v760)) goto b330;
+ v762 = (u)zfixup_label;
+ v763 = *(u*)(vc + 48UL);
+ v764 = *(u*)(vd + 88UL);
+ v765 = ((u(*)())(v762))(v763, v764);
+ v765;
+ v766 = (u)zadd_symbol;
+ v767 = *(u*)(vc + 48UL);
+ v768 = *(u*)(vd + 32UL);
+ v769 = *(u*)(vd + 88UL);
+ v770 = ((u(*)())(v766))(v767, v768, v769);
+ v770;
+ v771 = (u)zx86_64_modrr;
+ v772 = *(u*)(vc + 48UL);
+ v773 = 3872UL;
+ v774 = 4UL;
+ v775 = 0UL;
+ v776 = ((u(*)())(v771))(v772, v773, v774, v775);
+ v776;
+ v777 = (u)zx86_64_op;
+ v778 = *(u*)(vc + 48UL);
+ v779 = 195UL;
+ v780 = ((u(*)())(v777))(v778, v779);
+ v780;
+b328: v781 = (u)zfind;
+ v782 = vc;
+ v783 = (u)"wrcr4";
+ v784 = 0UL;
+ v785 = 1UL;
+ v786 = ((u(*)())(v781))(v782, v783, v784, v785);
+ vd = v786;
+ if (!(*(u*)(vd + 72UL))) goto b347;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b351;
+ v788 = 0UL;
+b352: if (!(v788)) goto b347;
+ v787 = 1UL;
+b349: if (!(v787)) goto b345;
+ v789 = (u)zfixup_label;
+ v790 = *(u*)(vc + 48UL);
+ v791 = *(u*)(vd + 88UL);
+ v792 = ((u(*)())(v789))(v790, v791);
+ v792;
+ v793 = (u)zadd_symbol;
+ v794 = *(u*)(vc + 48UL);
+ v795 = *(u*)(vd + 32UL);
+ v796 = *(u*)(vd + 88UL);
+ v797 = ((u(*)())(v793))(v794, v795, v796);
+ v797;
+ v798 = (u)zx86_64_modrr;
+ v799 = *(u*)(vc + 48UL);
+ v800 = 3874UL;
+ v801 = 4UL;
+ v802 = 7UL;
+ v803 = ((u(*)())(v798))(v799, v800, v801, v802);
+ v803;
+ v804 = (u)zx86_64_op;
+ v805 = *(u*)(vc + 48UL);
+ v806 = 195UL;
+ v807 = ((u(*)())(v804))(v805, v806);
+ v807;
+b343: v808 = (u)zfind;
+ v809 = vc;
+ v810 = (u)"lgdt";
+ v811 = 0UL;
+ v812 = 1UL;
+ v813 = ((u(*)())(v808))(v809, v810, v811, v812);
+ vd = v813;
+ if (!(*(u*)(vd + 72UL))) goto b362;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b366;
+ v815 = 0UL;
+b367: if (!(v815)) goto b362;
+ v814 = 1UL;
+b364: if (!(v814)) goto b360;
+ v816 = (u)zfixup_label;
+ v817 = *(u*)(vc + 48UL);
+ v818 = *(u*)(vd + 88UL);
+ v819 = ((u(*)())(v816))(v817, v818);
+ v819;
+ v820 = (u)zadd_symbol;
+ v821 = *(u*)(vc + 48UL);
+ v822 = *(u*)(vd + 32UL);
+ v823 = *(u*)(vd + 88UL);
+ v824 = ((u(*)())(v820))(v821, v822, v823);
+ v824;
+ v825 = (u)zx86_64_modri;
+ v826 = *(u*)(vc + 48UL);
+ v827 = 327809UL;
+ v828 = 4UL;
+ v829 = 16UL;
+ v830 = ((u(*)())(v825))(v826, v827, v828, v829);
+ v830;
+ v831 = (u)zx86_64_modri;
+ v832 = *(u*)(vc + 48UL);
+ v833 = 327809UL;
+ v834 = 6UL;
+ v835 = 1UL;
+ v836 = ((u(*)())(v831))(v832, v833, v834, v835);
+ v836;
+ v837 = (u)zx86_64_modrm;
+ v838 = *(u*)(vc + 48UL);
+ v839 = 137UL;
+ v840 = 6UL;
+ v841 = 4UL;
+ v842 = 0UL;
+ v843 = 0UL;
+ v844 = 0UL;
+ v845 = ((u(*)())(v837))(v838, v839, v840, v841, v842, v843, v844);
+ v845;
+ v846 = (u)zx86_64_modrm;
+ v847 = *(u*)(vc + 48UL);
+ v848 = 137UL;
+ v849 = 7UL;
+ v850 = 4UL;
+ v851 = 0UL;
+ v852 = 0UL;
+ v853 = 2UL;
+ v854 = ((u(*)())(v846))(v847, v848, v849, v850, v851, v852, v853);
+ v854;
+ v855 = (u)zx86_64_modm;
+ v856 = *(u*)(vc + 48UL);
+ v857 = 134913UL;
+ v858 = 4UL;
+ v859 = 0UL;
+ v860 = 0UL;
+ v861 = 0UL;
+ v862 = ((u(*)())(v855))(v856, v857, v858, v859, v860, v861);
+ v862;
+ v863 = (u)zx86_64_modri;
+ v864 = *(u*)(vc + 48UL);
+ v865 = 129UL;
+ v866 = 4UL;
+ v867 = 16UL;
+ v868 = ((u(*)())(v863))(v864, v865, v866, v867);
+ v868;
+ v869 = (u)zx86_64_op;
+ v870 = *(u*)(vc + 48UL);
+ v871 = 195UL;
+ v872 = ((u(*)())(v869))(v870, v871);
+ v872;
+b358: v873 = (u)zfind;
+ v874 = vc;
+ v875 = (u)"lidt";
+ v876 = 0UL;
+ v877 = 1UL;
+ v878 = ((u(*)())(v873))(v874, v875, v876, v877);
+ vd = v878;
+ if (!(*(u*)(vd + 72UL))) goto b382;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b386;
+ v880 = 0UL;
+b387: if (!(v880)) goto b382;
+ v879 = 1UL;
+b384: if (!(v879)) goto b380;
+ v881 = (u)zfixup_label;
+ v882 = *(u*)(vc + 48UL);
+ v883 = *(u*)(vd + 88UL);
+ v884 = ((u(*)())(v881))(v882, v883);
+ v884;
+ v885 = (u)zadd_symbol;
+ v886 = *(u*)(vc + 48UL);
+ v887 = *(u*)(vd + 32UL);
+ v888 = *(u*)(vd + 88UL);
+ v889 = ((u(*)())(v885))(v886, v887, v888);
+ v889;
+ v890 = (u)zx86_64_modri;
+ v891 = *(u*)(vc + 48UL);
+ v892 = 327809UL;
+ v893 = 4UL;
+ v894 = 16UL;
+ v895 = ((u(*)())(v890))(v891, v892, v893, v894);
+ v895;
+ v896 = (u)zx86_64_modri;
+ v897 = *(u*)(vc + 48UL);
+ v898 = 327809UL;
+ v899 = 6UL;
+ v900 = 1UL;
+ v901 = ((u(*)())(v896))(v897, v898, v899, v900);
+ v901;
+ v902 = (u)zx86_64_modrm;
+ v903 = *(u*)(vc + 48UL);
+ v904 = 137UL;
+ v905 = 6UL;
+ v906 = 4UL;
+ v907 = 0UL;
+ v908 = 0UL;
+ v909 = 0UL;
+ v910 = ((u(*)())(v902))(v903, v904, v905, v906, v907, v908, v909);
+ v910;
+ v911 = (u)zx86_64_modrm;
+ v912 = *(u*)(vc + 48UL);
+ v913 = 137UL;
+ v914 = 7UL;
+ v915 = 4UL;
+ v916 = 0UL;
+ v917 = 0UL;
+ v918 = 2UL;
+ v919 = ((u(*)())(v911))(v912, v913, v914, v915, v916, v917, v918);
+ v919;
+ v920 = (u)zx86_64_modm;
+ v921 = *(u*)(vc + 48UL);
+ v922 = 200449UL;
+ v923 = 4UL;
+ v924 = 0UL;
+ v925 = 0UL;
+ v926 = 0UL;
+ v927 = ((u(*)())(v920))(v921, v922, v923, v924, v925, v926);
+ v927;
+ v928 = (u)zx86_64_modri;
+ v929 = *(u*)(vc + 48UL);
+ v930 = 129UL;
+ v931 = 4UL;
+ v932 = 16UL;
+ v933 = ((u(*)())(v928))(v929, v930, v931, v932);
+ v933;
+ v934 = (u)zx86_64_op;
+ v935 = *(u*)(vc + 48UL);
+ v936 = 195UL;
+ v937 = ((u(*)())(v934))(v935, v936);
+ v937;
+b378: v938 = (u)zfind;
+ v939 = vc;
+ v940 = (u)"lldt";
+ v941 = 0UL;
+ v942 = 1UL;
+ v943 = ((u(*)())(v938))(v939, v940, v941, v942);
+ vd = v943;
+ if (!(*(u*)(vd + 72UL))) goto b402;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b406;
+ v945 = 0UL;
+b407: if (!(v945)) goto b402;
+ v944 = 1UL;
+b404: if (!(v944)) goto b400;
+ v946 = (u)zfixup_label;
+ v947 = *(u*)(vc + 48UL);
+ v948 = *(u*)(vd + 88UL);
+ v949 = ((u(*)())(v946))(v947, v948);
+ v949;
+ v950 = (u)zadd_symbol;
+ v951 = *(u*)(vc + 48UL);
+ v952 = *(u*)(vd + 32UL);
+ v953 = *(u*)(vd + 88UL);
+ v954 = ((u(*)())(v950))(v951, v952, v953);
+ v954;
+ v955 = (u)zx86_64_modr;
+ v956 = *(u*)(vc + 48UL);
+ v957 = 134912UL;
+ v958 = 7UL;
+ v959 = ((u(*)())(v955))(v956, v957, v958);
+ v959;
+ v960 = (u)zx86_64_op;
+ v961 = *(u*)(vc + 48UL);
+ v962 = 195UL;
+ v963 = ((u(*)())(v960))(v961, v962);
+ v963;
+b398: v964 = (u)zfind;
+ v965 = vc;
+ v966 = (u)"ltr";
+ v967 = 0UL;
+ v968 = 1UL;
+ v969 = ((u(*)())(v964))(v965, v966, v967, v968);
+ vd = v969;
+ if (!(*(u*)(vd + 72UL))) goto b417;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b421;
+ v971 = 0UL;
+b422: if (!(v971)) goto b417;
+ v970 = 1UL;
+b419: if (!(v970)) goto b415;
+ v972 = (u)zfixup_label;
+ v973 = *(u*)(vc + 48UL);
+ v974 = *(u*)(vd + 88UL);
+ v975 = ((u(*)())(v972))(v973, v974);
+ v975;
+ v976 = (u)zadd_symbol;
+ v977 = *(u*)(vc + 48UL);
+ v978 = *(u*)(vd + 32UL);
+ v979 = *(u*)(vd + 88UL);
+ v980 = ((u(*)())(v976))(v977, v978, v979);
+ v980;
+ v981 = (u)zx86_64_modr;
+ v982 = *(u*)(vc + 48UL);
+ v983 = 200448UL;
+ v984 = 7UL;
+ v985 = ((u(*)())(v981))(v982, v983, v984);
+ v985;
+ v986 = (u)zx86_64_op;
+ v987 = *(u*)(vc + 48UL);
+ v988 = 195UL;
+ v989 = ((u(*)())(v986))(v987, v988);
+ v989;
+b413: v990 = (u)zfind;
+ v991 = vc;
+ v992 = (u)"lseg";
+ v993 = 0UL;
+ v994 = 1UL;
+ v995 = ((u(*)())(v990))(v991, v992, v993, v994);
+ vd = v995;
+ if (!(*(u*)(vd + 72UL))) goto b432;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b436;
+ v997 = 0UL;
+b437: if (!(v997)) goto b432;
+ v996 = 1UL;
+b434: if (!(v996)) goto b430;
+ v998 = (u)zfixup_label;
+ v999 = *(u*)(vc + 48UL);
+ v1000 = *(u*)(vd + 88UL);
+ v1001 = ((u(*)())(v998))(v999, v1000);
+ v1001;
+ v1002 = (u)zadd_symbol;
+ v1003 = *(u*)(vc + 48UL);
+ v1004 = *(u*)(vd + 32UL);
+ v1005 = *(u*)(vd + 88UL);
+ v1006 = ((u(*)())(v1002))(v1003, v1004, v1005);
+ v1006;
+ v1007 = (u)zx86_64_opr;
+ v1008 = *(u*)(vc + 48UL);
+ v1009 = 80UL;
+ v1010 = 5UL;
+ v1011 = ((u(*)())(v1007))(v1008, v1009, v1010);
+ v1011;
+ v1012 = (u)zx86_64_modrr;
+ v1013 = *(u*)(vc + 48UL);
+ v1014 = 139UL;
+ v1015 = 5UL;
+ v1016 = 4UL;
+ v1017 = ((u(*)())(v1012))(v1013, v1014, v1015, v1016);
+ v1017;
+ v1018 = (u)zx86_64_modrr;
+ v1019 = *(u*)(vc + 48UL);
+ v1020 = 142UL;
+ v1021 = 0UL;
+ v1022 = 6UL;
+ v1023 = ((u(*)())(v1018))(v1019, v1020, v1021, v1022);
+ v1023;
+ v1024 = (u)zx86_64_modrr;
+ v1025 = *(u*)(vc + 48UL);
+ v1026 = 142UL;
+ v1027 = 3UL;
+ v1028 = 6UL;
+ v1029 = ((u(*)())(v1024))(v1025, v1026, v1027, v1028);
+ v1029;
+ v1030 = (u)zx86_64_modrr;
+ v1031 = *(u*)(vc + 48UL);
+ v1032 = 142UL;
+ v1033 = 4UL;
+ v1034 = 6UL;
+ v1035 = ((u(*)())(v1030))(v1031, v1032, v1033, v1034);
+ v1035;
+ v1036 = (u)zx86_64_modrr;
+ v1037 = *(u*)(vc + 48UL);
+ v1038 = 142UL;
+ v1039 = 5UL;
+ v1040 = 6UL;
+ v1041 = ((u(*)())(v1036))(v1037, v1038, v1039, v1040);
+ v1041;
+ v1042 = (u)zx86_64_opr;
+ v1043 = *(u*)(vc + 48UL);
+ v1044 = 80UL;
+ v1045 = 6UL;
+ v1046 = ((u(*)())(v1042))(v1043, v1044, v1045);
+ v1046;
+ v1047 = (u)zx86_64_opr;
+ v1048 = *(u*)(vc + 48UL);
+ v1049 = 80UL;
+ v1050 = 5UL;
+ v1051 = ((u(*)())(v1047))(v1048, v1049, v1050);
+ v1051;
+ v1052 = (u)zx86_64_op;
+ v1053 = *(u*)(vc + 48UL);
+ v1054 = 156UL;
+ v1055 = ((u(*)())(v1052))(v1053, v1054);
+ v1055;
+ v1056 = (u)zx86_64_opr;
+ v1057 = *(u*)(vc + 48UL);
+ v1058 = 80UL;
+ v1059 = 7UL;
+ v1060 = ((u(*)())(v1056))(v1057, v1058, v1059);
+ v1060;
+ v1061 = (u)zx86_64_op;
+ v1062 = *(u*)(vc + 48UL);
+ v1063 = 232UL;
+ v1064 = ((u(*)())(v1061))(v1062, v1063);
+ v1064;
+ v1065 = (u)zas_emit;
+ v1066 = *(u*)(vc + 48UL);
+ v1067 = 5UL;
+ v1068 = ((u(*)())(v1065))(v1066, v1067);
+ v1068;
+ v1069 = (u)zas_emit;
+ v1070 = *(u*)(vc + 48UL);
+ v1071 = 0UL;
+ v1072 = ((u(*)())(v1069))(v1070, v1071);
+ v1072;
+ v1073 = (u)zas_emit;
+ v1074 = *(u*)(vc + 48UL);
+ v1075 = 0UL;
+ v1076 = ((u(*)())(v1073))(v1074, v1075);
+ v1076;
+ v1077 = (u)zas_emit;
+ v1078 = *(u*)(vc + 48UL);
+ v1079 = 0UL;
+ v1080 = ((u(*)())(v1077))(v1078, v1079);
+ v1080;
+ v1081 = (u)zx86_64_op;
+ v1082 = *(u*)(vc + 48UL);
+ v1083 = 233UL;
+ v1084 = ((u(*)())(v1081))(v1082, v1083);
+ v1084;
+ v1085 = (u)zas_emit;
+ v1086 = *(u*)(vc + 48UL);
+ v1087 = 2UL;
+ v1088 = ((u(*)())(v1085))(v1086, v1087);
+ v1088;
+ v1089 = (u)zas_emit;
+ v1090 = *(u*)(vc + 48UL);
+ v1091 = 0UL;
+ v1092 = ((u(*)())(v1089))(v1090, v1091);
+ v1092;
+ v1093 = (u)zas_emit;
+ v1094 = *(u*)(vc + 48UL);
+ v1095 = 0UL;
+ v1096 = ((u(*)())(v1093))(v1094, v1095);
+ v1096;
+ v1097 = (u)zas_emit;
+ v1098 = *(u*)(vc + 48UL);
+ v1099 = 0UL;
+ v1100 = ((u(*)())(v1097))(v1098, v1099);
+ v1100;
+ v1101 = (u)zx86_64_op;
+ v1102 = *(u*)(vc + 48UL);
+ v1103 = 18639UL;
+ v1104 = ((u(*)())(v1101))(v1102, v1103);
+ v1104;
+ v1105 = (u)zx86_64_opr;
+ v1106 = *(u*)(vc + 48UL);
+ v1107 = 88UL;
+ v1108 = 5UL;
+ v1109 = ((u(*)())(v1105))(v1106, v1107, v1108);
+ v1109;
+ v1110 = (u)zx86_64_op;
+ v1111 = *(u*)(vc + 48UL);
+ v1112 = 195UL;
+ v1113 = ((u(*)())(v1110))(v1111, v1112);
+ v1113;
+b428: v1114 = (u)zfind;
+ v1115 = vc;
+ v1116 = (u)"hlt";
+ v1117 = 0UL;
+ v1118 = 1UL;
+ v1119 = ((u(*)())(v1114))(v1115, v1116, v1117, v1118);
+ vd = v1119;
+ if (!(*(u*)(vd + 72UL))) goto b468;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b472;
+ v1121 = 0UL;
+b473: if (!(v1121)) goto b468;
+ v1120 = 1UL;
+b470: if (!(v1120)) goto b466;
+ v1122 = (u)zfixup_label;
+ v1123 = *(u*)(vc + 48UL);
+ v1124 = *(u*)(vd + 88UL);
+ v1125 = ((u(*)())(v1122))(v1123, v1124);
+ v1125;
+ v1126 = (u)zadd_symbol;
+ v1127 = *(u*)(vc + 48UL);
+ v1128 = *(u*)(vd + 32UL);
+ v1129 = *(u*)(vd + 88UL);
+ v1130 = ((u(*)())(v1126))(v1127, v1128, v1129);
+ v1130;
+ v1131 = (u)zx86_64_op;
+ v1132 = *(u*)(vc + 48UL);
+ v1133 = 244UL;
+ v1134 = ((u(*)())(v1131))(v1132, v1133);
+ v1134;
+ v1135 = (u)zx86_64_op;
+ v1136 = *(u*)(vc + 48UL);
+ v1137 = 195UL;
+ v1138 = ((u(*)())(v1135))(v1136, v1137);
+ v1138;
+b464: v1139 = (u)zfind;
+ v1140 = vc;
+ v1141 = (u)"cli";
+ v1142 = 0UL;
+ v1143 = 1UL;
+ v1144 = ((u(*)())(v1139))(v1140, v1141, v1142, v1143);
+ vd = v1144;
+ if (!(*(u*)(vd + 72UL))) goto b483;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b487;
+ v1146 = 0UL;
+b488: if (!(v1146)) goto b483;
+ v1145 = 1UL;
+b485: if (!(v1145)) goto b481;
+ v1147 = (u)zfixup_label;
+ v1148 = *(u*)(vc + 48UL);
+ v1149 = *(u*)(vd + 88UL);
+ v1150 = ((u(*)())(v1147))(v1148, v1149);
+ v1150;
+ v1151 = (u)zadd_symbol;
+ v1152 = *(u*)(vc + 48UL);
+ v1153 = *(u*)(vd + 32UL);
+ v1154 = *(u*)(vd + 88UL);
+ v1155 = ((u(*)())(v1151))(v1152, v1153, v1154);
+ v1155;
+ v1156 = (u)zx86_64_op;
+ v1157 = *(u*)(vc + 48UL);
+ v1158 = 250UL;
+ v1159 = ((u(*)())(v1156))(v1157, v1158);
+ v1159;
+ v1160 = (u)zx86_64_op;
+ v1161 = *(u*)(vc + 48UL);
+ v1162 = 195UL;
+ v1163 = ((u(*)())(v1160))(v1161, v1162);
+ v1163;
+b479: v1164 = (u)zfind;
+ v1165 = vc;
+ v1166 = (u)"sti";
+ v1167 = 0UL;
+ v1168 = 1UL;
+ v1169 = ((u(*)())(v1164))(v1165, v1166, v1167, v1168);
+ vd = v1169;
+ if (!(*(u*)(vd + 72UL))) goto b498;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b502;
+ v1171 = 0UL;
+b503: if (!(v1171)) goto b498;
+ v1170 = 1UL;
+b500: if (!(v1170)) goto b496;
+ v1172 = (u)zfixup_label;
+ v1173 = *(u*)(vc + 48UL);
+ v1174 = *(u*)(vd + 88UL);
+ v1175 = ((u(*)())(v1172))(v1173, v1174);
+ v1175;
+ v1176 = (u)zadd_symbol;
+ v1177 = *(u*)(vc + 48UL);
+ v1178 = *(u*)(vd + 32UL);
+ v1179 = *(u*)(vd + 88UL);
+ v1180 = ((u(*)())(v1176))(v1177, v1178, v1179);
+ v1180;
+ v1181 = (u)zx86_64_op;
+ v1182 = *(u*)(vc + 48UL);
+ v1183 = 251UL;
+ v1184 = ((u(*)())(v1181))(v1182, v1183);
+ v1184;
+ v1185 = (u)zx86_64_op;
+ v1186 = *(u*)(vc + 48UL);
+ v1187 = 195UL;
+ v1188 = ((u(*)())(v1185))(v1186, v1187);
+ v1188;
+b494: v1189 = (u)zfind;
+ v1190 = vc;
+ v1191 = (u)"rdflags";
+ v1192 = 0UL;
+ v1193 = 1UL;
+ v1194 = ((u(*)())(v1189))(v1190, v1191, v1192, v1193);
+ vd = v1194;
+ if (!(*(u*)(vd + 72UL))) goto b513;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b517;
+ v1196 = 0UL;
+b518: if (!(v1196)) goto b513;
+ v1195 = 1UL;
+b515: if (!(v1195)) goto b511;
+ v1197 = (u)zfixup_label;
+ v1198 = *(u*)(vc + 48UL);
+ v1199 = *(u*)(vd + 88UL);
+ v1200 = ((u(*)())(v1197))(v1198, v1199);
+ v1200;
+ v1201 = (u)zadd_symbol;
+ v1202 = *(u*)(vc + 48UL);
+ v1203 = *(u*)(vd + 32UL);
+ v1204 = *(u*)(vd + 88UL);
+ v1205 = ((u(*)())(v1201))(v1202, v1203, v1204);
+ v1205;
+ v1206 = (u)zx86_64_op;
+ v1207 = *(u*)(vc + 48UL);
+ v1208 = 156UL;
+ v1209 = ((u(*)())(v1206))(v1207, v1208);
+ v1209;
+ v1210 = (u)zx86_64_opr;
+ v1211 = *(u*)(vc + 48UL);
+ v1212 = 88UL;
+ v1213 = 0UL;
+ v1214 = ((u(*)())(v1210))(v1211, v1212, v1213);
+ v1214;
+ v1215 = (u)zx86_64_op;
+ v1216 = *(u*)(vc + 48UL);
+ v1217 = 195UL;
+ v1218 = ((u(*)())(v1215))(v1216, v1217);
+ v1218;
+b509: v1219 = (u)zfind;
+ v1220 = vc;
+ v1221 = (u)"wrflags";
+ v1222 = 0UL;
+ v1223 = 1UL;
+ v1224 = ((u(*)())(v1219))(v1220, v1221, v1222, v1223);
+ vd = v1224;
+ if (!(*(u*)(vd + 72UL))) goto b529;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b533;
+ v1226 = 0UL;
+b534: if (!(v1226)) goto b529;
+ v1225 = 1UL;
+b531: if (!(v1225)) goto b527;
+ v1227 = (u)zfixup_label;
+ v1228 = *(u*)(vc + 48UL);
+ v1229 = *(u*)(vd + 88UL);
+ v1230 = ((u(*)())(v1227))(v1228, v1229);
+ v1230;
+ v1231 = (u)zadd_symbol;
+ v1232 = *(u*)(vc + 48UL);
+ v1233 = *(u*)(vd + 32UL);
+ v1234 = *(u*)(vd + 88UL);
+ v1235 = ((u(*)())(v1231))(v1232, v1233, v1234);
+ v1235;
+ v1236 = (u)zx86_64_opr;
+ v1237 = *(u*)(vc + 48UL);
+ v1238 = 80UL;
+ v1239 = 7UL;
+ v1240 = ((u(*)())(v1236))(v1237, v1238, v1239);
+ v1240;
+ v1241 = (u)zx86_64_op;
+ v1242 = *(u*)(vc + 48UL);
+ v1243 = 157UL;
+ v1244 = ((u(*)())(v1241))(v1242, v1243);
+ v1244;
+ v1245 = (u)zx86_64_op;
+ v1246 = *(u*)(vc + 48UL);
+ v1247 = 195UL;
+ v1248 = ((u(*)())(v1245))(v1246, v1247);
+ v1248;
+b525: v1249 = (u)zfind;
+ v1250 = vc;
+ v1251 = (u)"wbinvld";
+ v1252 = 0UL;
+ v1253 = 1UL;
+ v1254 = ((u(*)())(v1249))(v1250, v1251, v1252, v1253);
+ vd = v1254;
+ if (!(*(u*)(vd + 72UL))) goto b545;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b549;
+ v1256 = 0UL;
+b550: if (!(v1256)) goto b545;
+ v1255 = 1UL;
+b547: if (!(v1255)) goto b543;
+ v1257 = (u)zfixup_label;
+ v1258 = *(u*)(vc + 48UL);
+ v1259 = *(u*)(vd + 88UL);
+ v1260 = ((u(*)())(v1257))(v1258, v1259);
+ v1260;
+ v1261 = (u)zadd_symbol;
+ v1262 = *(u*)(vc + 48UL);
+ v1263 = *(u*)(vd + 32UL);
+ v1264 = *(u*)(vd + 88UL);
+ v1265 = ((u(*)())(v1261))(v1262, v1263, v1264);
+ v1265;
+ v1266 = (u)zx86_64_modm;
+ v1267 = *(u*)(vc + 48UL);
+ v1268 = 3849UL;
+ v1269 = 7UL;
+ v1270 = 0UL;
+ v1271 = 0UL;
+ v1272 = 0UL;
+ v1273 = ((u(*)())(v1266))(v1267, v1268, v1269, v1270, v1271, v1272);
+ v1273;
+ v1274 = (u)zx86_64_op;
+ v1275 = *(u*)(vc + 48UL);
+ v1276 = 195UL;
+ v1277 = ((u(*)())(v1274))(v1275, v1276);
+ v1277;
+b541: v1278 = (u)zfind;
+ v1279 = vc;
+ v1280 = (u)"invlpg";
+ v1281 = 0UL;
+ v1282 = 1UL;
+ v1283 = ((u(*)())(v1278))(v1279, v1280, v1281, v1282);
+ vd = v1283;
+ if (!(*(u*)(vd + 72UL))) goto b560;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b564;
+ v1285 = 0UL;
+b565: if (!(v1285)) goto b560;
+ v1284 = 1UL;
+b562: if (!(v1284)) goto b558;
+ v1286 = (u)zfixup_label;
+ v1287 = *(u*)(vc + 48UL);
+ v1288 = *(u*)(vd + 88UL);
+ v1289 = ((u(*)())(v1286))(v1287, v1288);
+ v1289;
+ v1290 = (u)zadd_symbol;
+ v1291 = *(u*)(vc + 48UL);
+ v1292 = *(u*)(vd + 32UL);
+ v1293 = *(u*)(vd + 88UL);
+ v1294 = ((u(*)())(v1290))(v1291, v1292, v1293);
+ v1294;
+ v1295 = (u)zx86_64_modm;
+ v1296 = *(u*)(vc + 48UL);
+ v1297 = 462593UL;
+ v1298 = 7UL;
+ v1299 = 0UL;
+ v1300 = 0UL;
+ v1301 = 0UL;
+ v1302 = ((u(*)())(v1295))(v1296, v1297, v1298, v1299, v1300, v1301);
+ v1302;
+ v1303 = (u)zx86_64_op;
+ v1304 = *(u*)(vc + 48UL);
+ v1305 = 195UL;
+ v1306 = ((u(*)())(v1303))(v1304, v1305);
+ v1306;
+b556: v1307 = (u)zfind;
+ v1308 = vc;
+ v1309 = (u)"_ssr0";
+ v1310 = 0UL;
+ v1311 = 1UL;
+ v1312 = ((u(*)())(v1307))(v1308, v1309, v1310, v1311);
+ vd = v1312;
+ if (!(*(u*)(vd + 72UL))) goto b575;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b579;
+ v1314 = 0UL;
+b580: if (!(v1314)) goto b575;
+ v1313 = 1UL;
+b577: if (!(v1313)) goto b573;
+ v1315 = (u)zfixup_label;
+ v1316 = *(u*)(vc + 48UL);
+ v1317 = *(u*)(vd + 88UL);
+ v1318 = ((u(*)())(v1315))(v1316, v1317);
+ v1318;
+ v1319 = (u)zadd_symbol;
+ v1320 = *(u*)(vc + 48UL);
+ v1321 = *(u*)(vd + 32UL);
+ v1322 = *(u*)(vd + 88UL);
+ v1323 = ((u(*)())(v1319))(v1320, v1321, v1322);
+ v1323;
+ v1324 = (u)zx86_64_ssr;
+ v1325 = vc;
+ v1326 = ((u(*)())(v1324))(v1325);
+ v1326;
+ v1327 = (u)zx86_64_op;
+ v1328 = *(u*)(vc + 48UL);
+ v1329 = 195UL;
+ v1330 = ((u(*)())(v1327))(v1328, v1329);
+ v1330;
+b571: v1331 = (u)zfind;
+ v1332 = vc;
+ v1333 = (u)"_isr0";
+ v1334 = 0UL;
+ v1335 = 1UL;
+ v1336 = ((u(*)())(v1331))(v1332, v1333, v1334, v1335);
+ vd = v1336;
+ if (!(*(u*)(vd + 72UL))) goto b590;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b594;
+ v1338 = 0UL;
+b595: if (!(v1338)) goto b590;
+ v1337 = 1UL;
+b592: if (!(v1337)) goto b588;
+ v1339 = (u)zfixup_label;
+ v1340 = *(u*)(vc + 48UL);
+ v1341 = *(u*)(vd + 88UL);
+ v1342 = ((u(*)())(v1339))(v1340, v1341);
+ v1342;
+ v1343 = (u)zadd_symbol;
+ v1344 = *(u*)(vc + 48UL);
+ v1345 = *(u*)(vd + 32UL);
+ v1346 = *(u*)(vd + 88UL);
+ v1347 = ((u(*)())(v1343))(v1344, v1345, v1346);
+ v1347;
+ v1348 = (u)zx86_64_isr;
+ v1349 = vc;
+ v1350 = ((u(*)())(v1348))(v1349);
+ v1350;
+ v1351 = (u)zx86_64_op;
+ v1352 = *(u*)(vc + 48UL);
+ v1353 = 195UL;
+ v1354 = ((u(*)())(v1351))(v1352, v1353);
+ v1354;
+b586: v1355 = (u)zfind;
+ v1356 = vc;
+ v1357 = (u)"_rgs";
+ v1358 = 0UL;
+ v1359 = 1UL;
+ v1360 = ((u(*)())(v1355))(v1356, v1357, v1358, v1359);
+ vd = v1360;
+ if (!(*(u*)(vd + 72UL))) goto b605;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b609;
+ v1362 = 0UL;
+b610: if (!(v1362)) goto b605;
+ v1361 = 1UL;
+b607: if (!(v1361)) goto b603;
+ v1363 = (u)zfixup_label;
+ v1364 = *(u*)(vc + 48UL);
+ v1365 = *(u*)(vd + 88UL);
+ v1366 = ((u(*)())(v1363))(v1364, v1365);
+ v1366;
+ v1367 = (u)zadd_symbol;
+ v1368 = *(u*)(vc + 48UL);
+ v1369 = *(u*)(vd + 32UL);
+ v1370 = *(u*)(vd + 88UL);
+ v1371 = ((u(*)())(v1367))(v1368, v1369, v1370);
+ v1371;
+ v1372 = (u)zx86_64_modrm;
+ v1373 = *(u*)(vc + 48UL);
+ v1374 = 139UL;
+ v1375 = 6UL;
+ v1376 = 5UL;
+ v1377 = 0UL;
+ v1378 = 0UL;
+ v1379 = 16UL;
+ v1380 = ((u(*)())(v1372))(v1373, v1374, v1375, v1376, v1377, v1378, v1379);
+ v1380;
+ v1381 = (u)zas_emit;
+ v1382 = *(u*)(vc + 48UL);
+ v1383 = 101UL;
+ v1384 = ((u(*)())(v1381))(v1382, v1383);
+ v1384;
+ v1385 = (u)zx86_64_modrm;
+ v1386 = *(u*)(vc + 48UL);
+ v1387 = 139UL;
+ v1388 = 0UL;
+ v1389 = 6UL;
+ v1390 = 0UL;
+ v1391 = 0UL;
+ v1392 = 0UL;
+ v1393 = ((u(*)())(v1385))(v1386, v1387, v1388, v1389, v1390, v1391, v1392);
+ v1393;
+ v1394 = (u)zx86_64_op;
+ v1395 = *(u*)(vc + 48UL);
+ v1396 = 195UL;
+ v1397 = ((u(*)())(v1394))(v1395, v1396);
+ v1397;
+b601: v1398 = (u)zfind;
+ v1399 = vc;
+ v1400 = (u)"_r32";
+ v1401 = 0UL;
+ v1402 = 1UL;
+ v1403 = ((u(*)())(v1398))(v1399, v1400, v1401, v1402);
+ vd = v1403;
+ if (!(*(u*)(vd + 72UL))) goto b622;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b626;
+ v1405 = 0UL;
+b627: if (!(v1405)) goto b622;
+ v1404 = 1UL;
+b624: if (!(v1404)) goto b620;
+ v1406 = (u)zfixup_label;
+ v1407 = *(u*)(vc + 48UL);
+ v1408 = *(u*)(vd + 88UL);
+ v1409 = ((u(*)())(v1406))(v1407, v1408);
+ v1409;
+ v1410 = (u)zadd_symbol;
+ v1411 = *(u*)(vc + 48UL);
+ v1412 = *(u*)(vd + 32UL);
+ v1413 = *(u*)(vd + 88UL);
+ v1414 = ((u(*)())(v1410))(v1411, v1412, v1413);
+ v1414;
+ *(u*)(*(u*)(vc + 48UL) + 48UL) = 1UL;
+ v1415 = (u)zx86_64_modrm;
+ v1416 = *(u*)(vc + 48UL);
+ v1417 = 139UL;
+ v1418 = 0UL;
+ v1419 = 7UL;
+ v1420 = 0UL;
+ v1421 = 0UL;
+ v1422 = 0UL;
+ v1423 = ((u(*)())(v1415))(v1416, v1417, v1418, v1419, v1420, v1421, v1422);
+ v1423;
+ *(u*)(*(u*)(vc + 48UL) + 48UL) = 0UL;
+ v1424 = (u)zx86_64_op;
+ v1425 = *(u*)(vc + 48UL);
+ v1426 = 195UL;
+ v1427 = ((u(*)())(v1424))(v1425, v1426);
+ v1427;
+b618: v1428 = (u)zfind;
+ v1429 = vc;
+ v1430 = (u)"_w32";
+ v1431 = 0UL;
+ v1432 = 1UL;
+ v1433 = ((u(*)())(v1428))(v1429, v1430, v1431, v1432);
+ vd = v1433;
+ if (!(*(u*)(vd + 72UL))) goto b637;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b641;
+ v1435 = 0UL;
+b642: if (!(v1435)) goto b637;
+ v1434 = 1UL;
+b639: if (!(v1434)) goto b635;
+ v1436 = (u)zfixup_label;
+ v1437 = *(u*)(vc + 48UL);
+ v1438 = *(u*)(vd + 88UL);
+ v1439 = ((u(*)())(v1436))(v1437, v1438);
+ v1439;
+ v1440 = (u)zadd_symbol;
+ v1441 = *(u*)(vc + 48UL);
+ v1442 = *(u*)(vd + 32UL);
+ v1443 = *(u*)(vd + 88UL);
+ v1444 = ((u(*)())(v1440))(v1441, v1442, v1443);
+ v1444;
+ *(u*)(*(u*)(vc + 48UL) + 48UL) = 1UL;
+ v1445 = (u)zx86_64_modrm;
+ v1446 = *(u*)(vc + 48UL);
+ v1447 = 137UL;
+ v1448 = 6UL;
+ v1449 = 7UL;
+ v1450 = 0UL;
+ v1451 = 0UL;
+ v1452 = 0UL;
+ v1453 = ((u(*)())(v1445))(v1446, v1447, v1448, v1449, v1450, v1451, v1452);
+ v1453;
+ *(u*)(*(u*)(vc + 48UL) + 48UL) = 0UL;
+ v1454 = (u)zx86_64_op;
+ v1455 = *(u*)(vc + 48UL);
+ v1456 = 195UL;
+ v1457 = ((u(*)())(v1454))(v1455, v1456);
+ v1457;
+b633: v1458 = (u)zfind;
+ v1459 = vc;
+ v1460 = (u)"_r16";
+ v1461 = 0UL;
+ v1462 = 1UL;
+ v1463 = ((u(*)())(v1458))(v1459, v1460, v1461, v1462);
+ vd = v1463;
+ if (!(*(u*)(vd + 72UL))) goto b652;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b656;
+ v1465 = 0UL;
+b657: if (!(v1465)) goto b652;
+ v1464 = 1UL;
+b654: if (!(v1464)) goto b650;
+ v1466 = (u)zfixup_label;
+ v1467 = *(u*)(vc + 48UL);
+ v1468 = *(u*)(vd + 88UL);
+ v1469 = ((u(*)())(v1466))(v1467, v1468);
+ v1469;
+ v1470 = (u)zadd_symbol;
+ v1471 = *(u*)(vc + 48UL);
+ v1472 = *(u*)(vd + 32UL);
+ v1473 = *(u*)(vd + 88UL);
+ v1474 = ((u(*)())(v1470))(v1471, v1472, v1473);
+ v1474;
+ v1475 = (u)zx86_64_modrr;
+ v1476 = *(u*)(vc + 48UL);
+ v1477 = 51UL;
+ v1478 = 0UL;
+ v1479 = 0UL;
+ v1480 = ((u(*)())(v1475))(v1476, v1477, v1478, v1479);
+ v1480;
+ *(u*)(*(u*)(vc + 48UL) + 48UL) = 1UL;
+ v1481 = (u)zx86_64_modrm;
+ v1482 = *(u*)(vc + 48UL);
+ v1483 = 26250UL;
+ v1484 = 0UL;
+ v1485 = 7UL;
+ v1486 = 0UL;
+ v1487 = 0UL;
+ v1488 = 0UL;
+ v1489 = ((u(*)())(v1481))(v1482, v1483, v1484, v1485, v1486, v1487, v1488);
+ v1489;
+ *(u*)(*(u*)(vc + 48UL) + 48UL) = 0UL;
+ v1490 = (u)zx86_64_op;
+ v1491 = *(u*)(vc + 48UL);
+ v1492 = 195UL;
+ v1493 = ((u(*)())(v1490))(v1491, v1492);
+ v1493;
+b648: v1494 = (u)zfind;
+ v1495 = vc;
+ v1496 = (u)"_w16";
+ v1497 = 0UL;
+ v1498 = 1UL;
+ v1499 = ((u(*)())(v1494))(v1495, v1496, v1497, v1498);
+ vd = v1499;
+ if (!(*(u*)(vd + 72UL))) goto b668;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b672;
+ v1501 = 0UL;
+b673: if (!(v1501)) goto b668;
+ v1500 = 1UL;
+b670: if (!(v1500)) goto b666;
+ v1502 = (u)zfixup_label;
+ v1503 = *(u*)(vc + 48UL);
+ v1504 = *(u*)(vd + 88UL);
+ v1505 = ((u(*)())(v1502))(v1503, v1504);
+ v1505;
+ v1506 = (u)zadd_symbol;
+ v1507 = *(u*)(vc + 48UL);
+ v1508 = *(u*)(vd + 32UL);
+ v1509 = *(u*)(vd + 88UL);
+ v1510 = ((u(*)())(v1506))(v1507, v1508, v1509);
+ v1510;
+ *(u*)(*(u*)(vc + 48UL) + 48UL) = 1UL;
+ v1511 = (u)zx86_64_modrm;
+ v1512 = *(u*)(vc + 48UL);
+ v1513 = 26249UL;
+ v1514 = 6UL;
+ v1515 = 7UL;
+ v1516 = 0UL;
+ v1517 = 0UL;
+ v1518 = 0UL;
+ v1519 = ((u(*)())(v1511))(v1512, v1513, v1514, v1515, v1516, v1517, v1518);
+ v1519;
+ *(u*)(*(u*)(vc + 48UL) + 48UL) = 0UL;
+ v1520 = (u)zx86_64_op;
+ v1521 = *(u*)(vc + 48UL);
+ v1522 = 195UL;
+ v1523 = ((u(*)())(v1520))(v1521, v1522);
+ v1523;
+b664: v1524 = (u)zfind;
+ v1525 = vc;
+ v1526 = (u)"_rdrand";
+ v1527 = 0UL;
+ v1528 = 1UL;
+ v1529 = ((u(*)())(v1524))(v1525, v1526, v1527, v1528);
+ vd = v1529;
+ if (!(*(u*)(vd + 72UL))) goto b683;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b687;
+ v1531 = 0UL;
+b688: if (!(v1531)) goto b683;
+ v1530 = 1UL;
+b685: if (!(v1530)) goto b681;
+ v1532 = (u)zfixup_label;
+ v1533 = *(u*)(vc + 48UL);
+ v1534 = *(u*)(vd + 88UL);
+ v1535 = ((u(*)())(v1532))(v1533, v1534);
+ v1535;
+ v1536 = (u)zadd_symbol;
+ v1537 = *(u*)(vc + 48UL);
+ v1538 = *(u*)(vd + 32UL);
+ v1539 = *(u*)(vd + 88UL);
+ v1540 = ((u(*)())(v1536))(v1537, v1538, v1539);
+ v1540;
+ v1541 = (u)zx86_64_modr;
+ v1542 = *(u*)(vc + 48UL);
+ v1543 = 397255UL;
+ v1544 = 0UL;
+ v1545 = ((u(*)())(v1541))(v1542, v1543, v1544);
+ v1545;
+ v1546 = (u)zx86_64_op;
+ v1547 = *(u*)(vc + 48UL);
+ v1548 = 195UL;
+ v1549 = ((u(*)())(v1546))(v1547, v1548);
+ v1549;
+b679: v1550 = (u)zfind;
+ v1551 = vc;
+ v1552 = (u)"taskswitch";
+ v1553 = 0UL;
+ v1554 = 1UL;
+ v1555 = ((u(*)())(v1550))(v1551, v1552, v1553, v1554);
+ vd = v1555;
+ if (!(*(u*)(vd + 72UL))) goto b698;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b702;
+ v1557 = 0UL;
+b703: if (!(v1557)) goto b698;
+ v1556 = 1UL;
+b700: if (!(v1556)) goto b696;
+ v1558 = (u)zfixup_label;
+ v1559 = *(u*)(vc + 48UL);
+ v1560 = *(u*)(vd + 88UL);
+ v1561 = ((u(*)())(v1558))(v1559, v1560);
+ v1561;
+ v1562 = (u)zadd_symbol;
+ v1563 = *(u*)(vc + 48UL);
+ v1564 = *(u*)(vd + 32UL);
+ v1565 = *(u*)(vd + 88UL);
+ v1566 = ((u(*)())(v1562))(v1563, v1564, v1565);
+ v1566;
+ v1567 = (u)zx86_64_modrm;
+ v1568 = *(u*)(vc + 48UL);
+ v1569 = 137UL;
+ v1570 = 0UL;
+ v1571 = 7UL;
+ v1572 = 0UL;
+ v1573 = 0UL;
+ v1574 = 0UL;
+ v1575 = ((u(*)())(v1567))(v1568, v1569, v1570, v1571, v1572, v1573, v1574);
+ v1575;
+ v1576 = (u)zx86_64_modrm;
+ v1577 = *(u*)(vc + 48UL);
+ v1578 = 137UL;
+ v1579 = 1UL;
+ v1580 = 7UL;
+ v1581 = 0UL;
+ v1582 = 0UL;
+ v1583 = 8UL;
+ v1584 = ((u(*)())(v1576))(v1577, v1578, v1579, v1580, v1581, v1582, v1583);
+ v1584;
+ v1585 = (u)zx86_64_modrm;
+ v1586 = *(u*)(vc + 48UL);
+ v1587 = 137UL;
+ v1588 = 2UL;
+ v1589 = 7UL;
+ v1590 = 0UL;
+ v1591 = 0UL;
+ v1592 = 16UL;
+ v1593 = ((u(*)())(v1585))(v1586, v1587, v1588, v1589, v1590, v1591, v1592);
+ v1593;
+ v1594 = (u)zx86_64_modrm;
+ v1595 = *(u*)(vc + 48UL);
+ v1596 = 137UL;
+ v1597 = 3UL;
+ v1598 = 7UL;
+ v1599 = 0UL;
+ v1600 = 0UL;
+ v1601 = 24UL;
+ v1602 = ((u(*)())(v1594))(v1595, v1596, v1597, v1598, v1599, v1600, v1601);
+ v1602;
+ v1603 = (u)zx86_64_modrm;
+ v1604 = *(u*)(vc + 48UL);
+ v1605 = 137UL;
+ v1606 = 5UL;
+ v1607 = 7UL;
+ v1608 = 0UL;
+ v1609 = 0UL;
+ v1610 = 40UL;
+ v1611 = ((u(*)())(v1603))(v1604, v1605, v1606, v1607, v1608, v1609, v1610);
+ v1611;
+ v1612 = (u)zx86_64_modrm;
+ v1613 = *(u*)(vc + 48UL);
+ v1614 = 137UL;
+ v1615 = 6UL;
+ v1616 = 7UL;
+ v1617 = 0UL;
+ v1618 = 0UL;
+ v1619 = 48UL;
+ v1620 = ((u(*)())(v1612))(v1613, v1614, v1615, v1616, v1617, v1618, v1619);
+ v1620;
+ v1621 = (u)zx86_64_modrm;
+ v1622 = *(u*)(vc + 48UL);
+ v1623 = 137UL;
+ v1624 = 7UL;
+ v1625 = 7UL;
+ v1626 = 0UL;
+ v1627 = 0UL;
+ v1628 = 56UL;
+ v1629 = ((u(*)())(v1621))(v1622, v1623, v1624, v1625, v1626, v1627, v1628);
+ v1629;
+ v1630 = (u)zx86_64_modrm;
+ v1631 = *(u*)(vc + 48UL);
+ v1632 = 137UL;
+ v1633 = 8UL;
+ v1634 = 7UL;
+ v1635 = 0UL;
+ v1636 = 0UL;
+ v1637 = 64UL;
+ v1638 = ((u(*)())(v1630))(v1631, v1632, v1633, v1634, v1635, v1636, v1637);
+ v1638;
+ v1639 = (u)zx86_64_modrm;
+ v1640 = *(u*)(vc + 48UL);
+ v1641 = 137UL;
+ v1642 = 9UL;
+ v1643 = 7UL;
+ v1644 = 0UL;
+ v1645 = 0UL;
+ v1646 = 72UL;
+ v1647 = ((u(*)())(v1639))(v1640, v1641, v1642, v1643, v1644, v1645, v1646);
+ v1647;
+ v1648 = (u)zx86_64_modrm;
+ v1649 = *(u*)(vc + 48UL);
+ v1650 = 137UL;
+ v1651 = 10UL;
+ v1652 = 7UL;
+ v1653 = 0UL;
+ v1654 = 0UL;
+ v1655 = 80UL;
+ v1656 = ((u(*)())(v1648))(v1649, v1650, v1651, v1652, v1653, v1654, v1655);
+ v1656;
+ v1657 = (u)zx86_64_modrm;
+ v1658 = *(u*)(vc + 48UL);
+ v1659 = 137UL;
+ v1660 = 11UL;
+ v1661 = 7UL;
+ v1662 = 0UL;
+ v1663 = 0UL;
+ v1664 = 88UL;
+ v1665 = ((u(*)())(v1657))(v1658, v1659, v1660, v1661, v1662, v1663, v1664);
+ v1665;
+ v1666 = (u)zx86_64_modrm;
+ v1667 = *(u*)(vc + 48UL);
+ v1668 = 137UL;
+ v1669 = 12UL;
+ v1670 = 7UL;
+ v1671 = 0UL;
+ v1672 = 0UL;
+ v1673 = 96UL;
+ v1674 = ((u(*)())(v1666))(v1667, v1668, v1669, v1670, v1671, v1672, v1673);
+ v1674;
+ v1675 = (u)zx86_64_modrm;
+ v1676 = *(u*)(vc + 48UL);
+ v1677 = 137UL;
+ v1678 = 13UL;
+ v1679 = 7UL;
+ v1680 = 0UL;
+ v1681 = 0UL;
+ v1682 = 104UL;
+ v1683 = ((u(*)())(v1675))(v1676, v1677, v1678, v1679, v1680, v1681, v1682);
+ v1683;
+ v1684 = (u)zx86_64_modrm;
+ v1685 = *(u*)(vc + 48UL);
+ v1686 = 137UL;
+ v1687 = 14UL;
+ v1688 = 7UL;
+ v1689 = 0UL;
+ v1690 = 0UL;
+ v1691 = 112UL;
+ v1692 = ((u(*)())(v1684))(v1685, v1686, v1687, v1688, v1689, v1690, v1691);
+ v1692;
+ v1693 = (u)zx86_64_modrm;
+ v1694 = *(u*)(vc + 48UL);
+ v1695 = 137UL;
+ v1696 = 15UL;
+ v1697 = 7UL;
+ v1698 = 0UL;
+ v1699 = 0UL;
+ v1700 = 120UL;
+ v1701 = ((u(*)())(v1693))(v1694, v1695, v1696, v1697, v1698, v1699, v1700);
+ v1701;
+ v1702 = (u)zx86_64_opr;
+ v1703 = *(u*)(vc + 48UL);
+ v1704 = 88UL;
+ v1705 = 0UL;
+ v1706 = ((u(*)())(v1702))(v1703, v1704, v1705);
+ v1706;
+ v1707 = (u)zx86_64_modrm;
+ v1708 = *(u*)(vc + 48UL);
+ v1709 = 137UL;
+ v1710 = 0UL;
+ v1711 = 7UL;
+ v1712 = 0UL;
+ v1713 = 0UL;
+ v1714 = 128UL;
+ v1715 = ((u(*)())(v1707))(v1708, v1709, v1710, v1711, v1712, v1713, v1714);
+ v1715;
+ v1716 = (u)zx86_64_modrr;
+ v1717 = *(u*)(vc + 48UL);
+ v1718 = 140UL;
+ v1719 = 1UL;
+ v1720 = 0UL;
+ v1721 = ((u(*)())(v1716))(v1717, v1718, v1719, v1720);
+ v1721;
+ v1722 = (u)zx86_64_modrm;
+ v1723 = *(u*)(vc + 48UL);
+ v1724 = 137UL;
+ v1725 = 0UL;
+ v1726 = 7UL;
+ v1727 = 0UL;
+ v1728 = 0UL;
+ v1729 = 144UL;
+ v1730 = ((u(*)())(v1722))(v1723, v1724, v1725, v1726, v1727, v1728, v1729);
+ v1730;
+ v1731 = (u)zx86_64_op;
+ v1732 = *(u*)(vc + 48UL);
+ v1733 = 156UL;
+ v1734 = ((u(*)())(v1731))(v1732, v1733);
+ v1734;
+ v1735 = (u)zx86_64_opr;
+ v1736 = *(u*)(vc + 48UL);
+ v1737 = 88UL;
+ v1738 = 0UL;
+ v1739 = ((u(*)())(v1735))(v1736, v1737, v1738);
+ v1739;
+ v1740 = (u)zx86_64_modrm;
+ v1741 = *(u*)(vc + 48UL);
+ v1742 = 137UL;
+ v1743 = 0UL;
+ v1744 = 7UL;
+ v1745 = 0UL;
+ v1746 = 0UL;
+ v1747 = 136UL;
+ v1748 = ((u(*)())(v1740))(v1741, v1742, v1743, v1744, v1745, v1746, v1747);
+ v1748;
+ v1749 = (u)zx86_64_modrm;
+ v1750 = *(u*)(vc + 48UL);
+ v1751 = 137UL;
+ v1752 = 4UL;
+ v1753 = 7UL;
+ v1754 = 0UL;
+ v1755 = 0UL;
+ v1756 = 32UL;
+ v1757 = ((u(*)())(v1749))(v1750, v1751, v1752, v1753, v1754, v1755, v1756);
+ v1757;
+ v1758 = (u)zx86_64_modrr;
+ v1759 = *(u*)(vc + 48UL);
+ v1760 = 140UL;
+ v1761 = 2UL;
+ v1762 = 0UL;
+ v1763 = ((u(*)())(v1758))(v1759, v1760, v1761, v1762);
+ v1763;
+ v1764 = (u)zx86_64_modrm;
+ v1765 = *(u*)(vc + 48UL);
+ v1766 = 137UL;
+ v1767 = 0UL;
+ v1768 = 7UL;
+ v1769 = 0UL;
+ v1770 = 0UL;
+ v1771 = 152UL;
+ v1772 = ((u(*)())(v1764))(v1765, v1766, v1767, v1768, v1769, v1770, v1771);
+ v1772;
+ v1773 = (u)zx86_64_modrm;
+ v1774 = *(u*)(vc + 48UL);
+ v1775 = 137UL;
+ v1776 = 1UL;
+ v1777 = 7UL;
+ v1778 = 0UL;
+ v1779 = 0UL;
+ v1780 = 8UL;
+ v1781 = ((u(*)())(v1773))(v1774, v1775, v1776, v1777, v1778, v1779, v1780);
+ v1781;
+ v1782 = (u)zx86_64_modrm;
+ v1783 = *(u*)(vc + 48UL);
+ v1784 = 137UL;
+ v1785 = 2UL;
+ v1786 = 7UL;
+ v1787 = 0UL;
+ v1788 = 0UL;
+ v1789 = 16UL;
+ v1790 = ((u(*)())(v1782))(v1783, v1784, v1785, v1786, v1787, v1788, v1789);
+ v1790;
+ v1791 = (u)zx86_64_modrm;
+ v1792 = *(u*)(vc + 48UL);
+ v1793 = 137UL;
+ v1794 = 3UL;
+ v1795 = 7UL;
+ v1796 = 0UL;
+ v1797 = 0UL;
+ v1798 = 24UL;
+ v1799 = ((u(*)())(v1791))(v1792, v1793, v1794, v1795, v1796, v1797, v1798);
+ v1799;
+ v1800 = (u)zx86_64_modrm;
+ v1801 = *(u*)(vc + 48UL);
+ v1802 = 137UL;
+ v1803 = 5UL;
+ v1804 = 7UL;
+ v1805 = 0UL;
+ v1806 = 0UL;
+ v1807 = 40UL;
+ v1808 = ((u(*)())(v1800))(v1801, v1802, v1803, v1804, v1805, v1806, v1807);
+ v1808;
+ v1809 = (u)zx86_64_modrm;
+ v1810 = *(u*)(vc + 48UL);
+ v1811 = 137UL;
+ v1812 = 7UL;
+ v1813 = 7UL;
+ v1814 = 0UL;
+ v1815 = 0UL;
+ v1816 = 56UL;
+ v1817 = ((u(*)())(v1809))(v1810, v1811, v1812, v1813, v1814, v1815, v1816);
+ v1817;
+ v1818 = (u)zx86_64_modrm;
+ v1819 = *(u*)(vc + 48UL);
+ v1820 = 137UL;
+ v1821 = 8UL;
+ v1822 = 7UL;
+ v1823 = 0UL;
+ v1824 = 0UL;
+ v1825 = 64UL;
+ v1826 = ((u(*)())(v1818))(v1819, v1820, v1821, v1822, v1823, v1824, v1825);
+ v1826;
+ v1827 = (u)zx86_64_modrm;
+ v1828 = *(u*)(vc + 48UL);
+ v1829 = 137UL;
+ v1830 = 9UL;
+ v1831 = 7UL;
+ v1832 = 0UL;
+ v1833 = 0UL;
+ v1834 = 72UL;
+ v1835 = ((u(*)())(v1827))(v1828, v1829, v1830, v1831, v1832, v1833, v1834);
+ v1835;
+ v1836 = (u)zx86_64_modrm;
+ v1837 = *(u*)(vc + 48UL);
+ v1838 = 137UL;
+ v1839 = 10UL;
+ v1840 = 7UL;
+ v1841 = 0UL;
+ v1842 = 0UL;
+ v1843 = 80UL;
+ v1844 = ((u(*)())(v1836))(v1837, v1838, v1839, v1840, v1841, v1842, v1843);
+ v1844;
+ v1845 = (u)zx86_64_modrm;
+ v1846 = *(u*)(vc + 48UL);
+ v1847 = 137UL;
+ v1848 = 11UL;
+ v1849 = 7UL;
+ v1850 = 0UL;
+ v1851 = 0UL;
+ v1852 = 88UL;
+ v1853 = ((u(*)())(v1845))(v1846, v1847, v1848, v1849, v1850, v1851, v1852);
+ v1853;
+ v1854 = (u)zx86_64_modrm;
+ v1855 = *(u*)(vc + 48UL);
+ v1856 = 137UL;
+ v1857 = 12UL;
+ v1858 = 7UL;
+ v1859 = 0UL;
+ v1860 = 0UL;
+ v1861 = 96UL;
+ v1862 = ((u(*)())(v1854))(v1855, v1856, v1857, v1858, v1859, v1860, v1861);
+ v1862;
+ v1863 = (u)zx86_64_modrm;
+ v1864 = *(u*)(vc + 48UL);
+ v1865 = 137UL;
+ v1866 = 13UL;
+ v1867 = 7UL;
+ v1868 = 0UL;
+ v1869 = 0UL;
+ v1870 = 104UL;
+ v1871 = ((u(*)())(v1863))(v1864, v1865, v1866, v1867, v1868, v1869, v1870);
+ v1871;
+ v1872 = (u)zx86_64_modrm;
+ v1873 = *(u*)(vc + 48UL);
+ v1874 = 137UL;
+ v1875 = 14UL;
+ v1876 = 7UL;
+ v1877 = 0UL;
+ v1878 = 0UL;
+ v1879 = 112UL;
+ v1880 = ((u(*)())(v1872))(v1873, v1874, v1875, v1876, v1877, v1878, v1879);
+ v1880;
+ v1881 = (u)zx86_64_modrm;
+ v1882 = *(u*)(vc + 48UL);
+ v1883 = 137UL;
+ v1884 = 15UL;
+ v1885 = 7UL;
+ v1886 = 0UL;
+ v1887 = 0UL;
+ v1888 = 120UL;
+ v1889 = ((u(*)())(v1881))(v1882, v1883, v1884, v1885, v1886, v1887, v1888);
+ v1889;
+ v1890 = (u)zx86_64_modrm;
+ v1891 = *(u*)(vc + 48UL);
+ v1892 = 139UL;
+ v1893 = 0UL;
+ v1894 = 6UL;
+ v1895 = 0UL;
+ v1896 = 0UL;
+ v1897 = 152UL;
+ v1898 = ((u(*)())(v1890))(v1891, v1892, v1893, v1894, v1895, v1896, v1897);
+ v1898;
+ v1899 = (u)zx86_64_opr;
+ v1900 = *(u*)(vc + 48UL);
+ v1901 = 80UL;
+ v1902 = 0UL;
+ v1903 = ((u(*)())(v1899))(v1900, v1901, v1902);
+ v1903;
+ v1904 = (u)zx86_64_modrm;
+ v1905 = *(u*)(vc + 48UL);
+ v1906 = 139UL;
+ v1907 = 0UL;
+ v1908 = 6UL;
+ v1909 = 0UL;
+ v1910 = 0UL;
+ v1911 = 32UL;
+ v1912 = ((u(*)())(v1904))(v1905, v1906, v1907, v1908, v1909, v1910, v1911);
+ v1912;
+ v1913 = (u)zx86_64_opr;
+ v1914 = *(u*)(vc + 48UL);
+ v1915 = 80UL;
+ v1916 = 0UL;
+ v1917 = ((u(*)())(v1913))(v1914, v1915, v1916);
+ v1917;
+ v1918 = (u)zx86_64_modrm;
+ v1919 = *(u*)(vc + 48UL);
+ v1920 = 139UL;
+ v1921 = 0UL;
+ v1922 = 6UL;
+ v1923 = 0UL;
+ v1924 = 0UL;
+ v1925 = 136UL;
+ v1926 = ((u(*)())(v1918))(v1919, v1920, v1921, v1922, v1923, v1924, v1925);
+ v1926;
+ v1927 = (u)zx86_64_opr;
+ v1928 = *(u*)(vc + 48UL);
+ v1929 = 80UL;
+ v1930 = 0UL;
+ v1931 = ((u(*)())(v1927))(v1928, v1929, v1930);
+ v1931;
+ v1932 = (u)zx86_64_modrm;
+ v1933 = *(u*)(vc + 48UL);
+ v1934 = 139UL;
+ v1935 = 0UL;
+ v1936 = 6UL;
+ v1937 = 0UL;
+ v1938 = 0UL;
+ v1939 = 144UL;
+ v1940 = ((u(*)())(v1932))(v1933, v1934, v1935, v1936, v1937, v1938, v1939);
+ v1940;
+ v1941 = (u)zx86_64_opr;
+ v1942 = *(u*)(vc + 48UL);
+ v1943 = 80UL;
+ v1944 = 0UL;
+ v1945 = ((u(*)())(v1941))(v1942, v1943, v1944);
+ v1945;
+ v1946 = (u)zx86_64_modrm;
+ v1947 = *(u*)(vc + 48UL);
+ v1948 = 139UL;
+ v1949 = 0UL;
+ v1950 = 6UL;
+ v1951 = 0UL;
+ v1952 = 0UL;
+ v1953 = 128UL;
+ v1954 = ((u(*)())(v1946))(v1947, v1948, v1949, v1950, v1951, v1952, v1953);
+ v1954;
+ v1955 = (u)zx86_64_opr;
+ v1956 = *(u*)(vc + 48UL);
+ v1957 = 80UL;
+ v1958 = 0UL;
+ v1959 = ((u(*)())(v1955))(v1956, v1957, v1958);
+ v1959;
+ v1960 = (u)zx86_64_modrm;
+ v1961 = *(u*)(vc + 48UL);
+ v1962 = 139UL;
+ v1963 = 0UL;
+ v1964 = 6UL;
+ v1965 = 0UL;
+ v1966 = 0UL;
+ v1967 = 0UL;
+ v1968 = ((u(*)())(v1960))(v1961, v1962, v1963, v1964, v1965, v1966, v1967);
+ v1968;
+ v1969 = (u)zx86_64_modrm;
+ v1970 = *(u*)(vc + 48UL);
+ v1971 = 139UL;
+ v1972 = 6UL;
+ v1973 = 6UL;
+ v1974 = 0UL;
+ v1975 = 0UL;
+ v1976 = 40UL;
+ v1977 = ((u(*)())(v1969))(v1970, v1971, v1972, v1973, v1974, v1975, v1976);
+ v1977;
+ v1978 = (u)zx86_64_op;
+ v1979 = *(u*)(vc + 48UL);
+ v1980 = 18639UL;
+ v1981 = ((u(*)())(v1978))(v1979, v1980);
+ v1981;
+b694: return 0UL;
+b696: goto b694;
+b698: v1556 = 0UL;
+ goto b700;
+b702: v1557 = 1UL;
+ goto b703;
+b681: goto b679;
+b683: v1530 = 0UL;
+ goto b685;
+b687: v1531 = 1UL;
+ goto b688;
+b666: goto b664;
+b668: v1500 = 0UL;
+ goto b670;
+b672: v1501 = 1UL;
+ goto b673;
+b650: goto b648;
+b652: v1464 = 0UL;
+ goto b654;
+b656: v1465 = 1UL;
+ goto b657;
+b635: goto b633;
+b637: v1434 = 0UL;
+ goto b639;
+b641: v1435 = 1UL;
+ goto b642;
+b620: goto b618;
+b622: v1404 = 0UL;
+ goto b624;
+b626: v1405 = 1UL;
+ goto b627;
+b603: goto b601;
+b605: v1361 = 0UL;
+ goto b607;
+b609: v1362 = 1UL;
+ goto b610;
+b588: goto b586;
+b590: v1337 = 0UL;
+ goto b592;
+b594: v1338 = 1UL;
+ goto b595;
+b573: goto b571;
+b575: v1313 = 0UL;
+ goto b577;
+b579: v1314 = 1UL;
+ goto b580;
+b558: goto b556;
+b560: v1284 = 0UL;
+ goto b562;
+b564: v1285 = 1UL;
+ goto b565;
+b543: goto b541;
+b545: v1255 = 0UL;
+ goto b547;
+b549: v1256 = 1UL;
+ goto b550;
+b527: goto b525;
+b529: v1225 = 0UL;
+ goto b531;
+b533: v1226 = 1UL;
+ goto b534;
+b511: goto b509;
+b513: v1195 = 0UL;
+ goto b515;
+b517: v1196 = 1UL;
+ goto b518;
+b496: goto b494;
+b498: v1170 = 0UL;
+ goto b500;
+b502: v1171 = 1UL;
+ goto b503;
+b481: goto b479;
+b483: v1145 = 0UL;
+ goto b485;
+b487: v1146 = 1UL;
+ goto b488;
+b466: goto b464;
+b468: v1120 = 0UL;
+ goto b470;
+b472: v1121 = 1UL;
+ goto b473;
+b430: goto b428;
+b432: v996 = 0UL;
+ goto b434;
+b436: v997 = 1UL;
+ goto b437;
+b415: goto b413;
+b417: v970 = 0UL;
+ goto b419;
+b421: v971 = 1UL;
+ goto b422;
+b400: goto b398;
+b402: v944 = 0UL;
+ goto b404;
+b406: v945 = 1UL;
+ goto b407;
+b380: goto b378;
+b382: v879 = 0UL;
+ goto b384;
+b386: v880 = 1UL;
+ goto b387;
+b360: goto b358;
+b362: v814 = 0UL;
+ goto b364;
+b366: v815 = 1UL;
+ goto b367;
+b345: goto b343;
+b347: v787 = 0UL;
+ goto b349;
+b351: v788 = 1UL;
+ goto b352;
+b330: goto b328;
+b332: v760 = 0UL;
+ goto b334;
+b336: v761 = 1UL;
+ goto b337;
+b315: goto b313;
+b317: v733 = 0UL;
+ goto b319;
+b321: v734 = 1UL;
+ goto b322;
+b300: goto b298;
+b302: v706 = 0UL;
+ goto b304;
+b306: v707 = 1UL;
+ goto b307;
+b285: goto b283;
+b287: v679 = 0UL;
+ goto b289;
+b291: v680 = 1UL;
+ goto b292;
+b270: goto b268;
+b272: v652 = 0UL;
+ goto b274;
+b276: v653 = 1UL;
+ goto b277;
+b255: goto b253;
+b257: v625 = 0UL;
+ goto b259;
+b261: v626 = 1UL;
+ goto b262;
+b240: goto b238;
+b242: v598 = 0UL;
+ goto b244;
+b246: v599 = 1UL;
+ goto b247;
+b220: goto b218;
+b222: v544 = 0UL;
+ goto b224;
+b226: v545 = 1UL;
+ goto b227;
+b201: goto b199;
+b203: v496 = 0UL;
+ goto b205;
+b207: v497 = 1UL;
+ goto b208;
+b184: goto b182;
+b186: v459 = 0UL;
+ goto b188;
+b190: v460 = 1UL;
+ goto b191;
+b168: goto b166;
+b170: v428 = 0UL;
+ goto b172;
+b174: v429 = 1UL;
+ goto b175;
+b150: goto b148;
+b152: v387 = 0UL;
+ goto b154;
+b156: v388 = 1UL;
+ goto b157;
+b133: goto b131;
+b135: v352 = 0UL;
+ goto b137;
+b139: v353 = 1UL;
+ goto b140;
+b116: goto b114;
+b118: v315 = 0UL;
+ goto b120;
+b122: v316 = 1UL;
+ goto b123;
+b100: goto b98;
+b102: v284 = 0UL;
+ goto b104;
+b106: v285 = 1UL;
+ goto b107;
+b69: goto b67;
+b71: v147 = 0UL;
+ goto b73;
+b75: v148 = 1UL;
+ goto b76;
+b55: goto b53;
+b57: v126 = 0UL;
+ goto b59;
+b61: v127 = 1UL;
+ goto b62;
+b41: goto b39;
+b43: v105 = 0UL;
+ goto b45;
+b47: v106 = 1UL;
+ goto b48;
+b26: goto b24;
+b28: v78 = 0UL;
+ goto b30;
+b32: v79 = 1UL;
+ goto b33;
b4: goto b2;
-b6: if (!*(u*)(vd + 72UL)) goto b14;
- v12 = 0UL;
-b15: if (!v12) goto b12;
- v10 = 1UL;
- goto b8;
-b12: v10 = 0UL;
+b6: v8 = 0UL;
goto b8;
-b14: v12 = 1UL;
- goto b15;
-b10: v11 = 1UL;
+b10: v9 = 1UL;
goto b11;
}
-u zoutput_irexpr(u vic, u vb, u vo) {
- u vkind = 0;
+u zx86_64_isr(u vc) {
+ u vd = 0;
+ u vout = 0;
+ u vi = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -42970,958 +48489,853 @@ u zoutput_irexpr(u vic, u vb, u vo) {
u v624 = 0;
u v625 = 0;
u v626 = 0;
- u v627 = 0;
- u v628 = 0;
- u v629 = 0;
- u v630 = 0;
- u v631 = 0;
- u v632 = 0;
- u v633 = 0;
- u v634 = 0;
- u v635 = 0;
- u v636 = 0;
- u v637 = 0;
- u v638 = 0;
- u v639 = 0;
- u v640 = 0;
- u v641 = 0;
- u v642 = 0;
- u v643 = 0;
- u v644 = 0;
- u v645 = 0;
- u v646 = 0;
- u v647 = 0;
- u v648 = 0;
- u v649 = 0;
- u v650 = 0;
- u v651 = 0;
- u v652 = 0;
- u v653 = 0;
- u v654 = 0;
- u v655 = 0;
- u v656 = 0;
- u v657 = 0;
- u v658 = 0;
- u v659 = 0;
- u v660 = 0;
- u v661 = 0;
- u v662 = 0;
- u v663 = 0;
- u v664 = 0;
- u v665 = 0;
- u v666 = 0;
- u v667 = 0;
- u v668 = 0;
- u v669 = 0;
- u v670 = 0;
- u v671 = 0;
- u v672 = 0;
- u v673 = 0;
- u v674 = 0;
- u v675 = 0;
- u v676 = 0;
- u v677 = 0;
- u v678 = 0;
- u v679 = 0;
- u v680 = 0;
- u v681 = 0;
- u v682 = 0;
- u v683 = 0;
- u v684 = 0;
- u v685 = 0;
- u v686 = 0;
- u v687 = 0;
- u v688 = 0;
- u v689 = 0;
- u v690 = 0;
- u v691 = 0;
- u v692 = 0;
- if (!vo) goto b5;
- v4 = 0UL;
-b6: if (!v4) goto b3;
- v5 = (u)zcdie;
- v6 = *(u*)(vic + 0UL);
- v7 = (u)"no expr";
- v8 = ((u(*)())v5)(v6, v7);
- v8;
-b1: vkind = *(u*)(vo + 0UL);
- if (vkind != 0UL) goto b10;
- v9 = (u)zas_modrm;
- v10 = *(u*)(vic + 8UL);
- v11 = 139UL;
- v12 = 0UL;
- v13 = 5UL;
- v14 = 0UL;
- v15 = 0UL;
- v16 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(vo + 24UL) * 8UL) + 40UL);
- v17 = ((u(*)())v9)(v10, v11, v12, v13, v14, v15, v16);
- v17;
-b8: return 0UL;
-b10: if (vkind != 1UL) goto b13;
- v18 = (u)zas_modrm;
- v19 = *(u*)(vic + 8UL);
- v20 = 141UL;
- v21 = 0UL;
- v22 = 5UL;
- v23 = 0UL;
- v24 = 0UL;
- v25 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(vo + 24UL) * 8UL) + 40UL);
- v26 = ((u(*)())v18)(v19, v20, v21, v22, v23, v24, v25);
- v26;
- goto b8;
-b13: if (vkind != 2UL) goto b16;
- v27 = (u)zoutput_irfuncptr;
- v28 = vic;
- v29 = vb;
- v30 = vo;
- v31 = ((u(*)())v27)(v28, v29, v30);
- v31;
- goto b8;
-b16: if (vkind != 3UL) goto b19;
- if (*(u*)(vo + 24UL) != 0UL) goto b22;
- v32 = (u)zas_modrr;
- v33 = *(u*)(vic + 8UL);
- v34 = 51UL;
- v35 = 0UL;
- v36 = 0UL;
- v37 = ((u(*)())v32)(v33, v34, v35, v36);
- v37;
-b20: goto b8;
-b22: if ((s)*(u*)(vo + 24UL) >= (s)(-1UL >> 33UL)) goto b27;
- if ((s)*(u*)(vo + 24UL) < (s)(-1UL << 31UL)) goto b27;
- v38 = 1UL;
-b29: if (!v38) goto b25;
- v39 = (u)zas_modri;
- v40 = *(u*)(vic + 8UL);
- v41 = 199UL;
- v42 = 0UL;
- v43 = *(u*)(vo + 24UL);
- v44 = ((u(*)())v39)(v40, v41, v42, v43);
- v44;
- goto b20;
-b25: v45 = (u)zas_opri64;
- v46 = *(u*)(vic + 8UL);
- v47 = 184UL;
- v48 = 0UL;
- v49 = *(u*)(vo + 24UL);
- v50 = ((u(*)())v45)(v46, v47, v48, v49);
- v50;
- goto b20;
-b27: v38 = 0UL;
- goto b29;
-b19: if (vkind != 4UL) goto b33;
- v51 = (u)zoutput_irstr;
- v52 = vic;
- v53 = vb;
- v54 = vo;
- v55 = ((u(*)())v51)(v52, v53, v54);
- v55;
- goto b8;
-b33: if (vkind != 5UL) goto b36;
- v56 = (u)zoutput_irexpr;
- v57 = vic;
- v58 = vb;
- v59 = *(u*)(vo + 8UL);
- v60 = ((u(*)())v56)(v57, v58, v59);
- v60;
- if (*(u*)(*(u*)(vo + 48UL) + 0UL) != 3UL) goto b40;
- v61 = (u)zas_modrr;
- v62 = *(u*)(vic + 8UL);
- v63 = 139UL;
- v64 = 6UL;
- v65 = 0UL;
- v66 = ((u(*)())v61)(v62, v63, v64, v65);
- v66;
- v67 = (u)zas_modrr;
- v68 = *(u*)(vic + 8UL);
- v69 = 51UL;
- v70 = 0UL;
- v71 = 0UL;
- v72 = ((u(*)())v67)(v68, v69, v70, v71);
- v72;
- v73 = (u)zas_modrm;
- v74 = *(u*)(vic + 8UL);
- v75 = 138UL;
- v76 = 0UL;
- v77 = 6UL;
- v78 = 0UL;
- v79 = 0UL;
- v80 = 0UL;
- v81 = ((u(*)())v73)(v74, v75, v76, v77, v78, v79, v80);
- v81;
-b38: goto b8;
-b40: v82 = (u)ztype_isprim;
- v83 = *(u*)(vo + 48UL);
- v84 = ((u(*)())v82)(v83);
- if (!v84) goto b45;
- v85 = (u)zas_modrm;
- v86 = *(u*)(vic + 8UL);
- v87 = 139UL;
- v88 = 0UL;
- v89 = 0UL;
- v90 = 0UL;
- v91 = 0UL;
- v92 = 0UL;
- v93 = ((u(*)())v85)(v86, v87, v88, v89, v90, v91, v92);
- v93;
- goto b38;
-b45: v94 = (u)zcdie;
- v95 = *(u*)(vic + 0UL);
- v96 = (u)"invalid load";
- v97 = ((u(*)())v94)(v95, v96);
- v97;
- goto b38;
-b36: if (vkind != 9UL) goto b50;
- v98 = (u)zoutput_irexpr;
- v99 = vic;
- v100 = vb;
- v101 = *(u*)(vo + 8UL);
- v102 = ((u(*)())v98)(v99, v100, v101);
- v102;
- v103 = (u)zas_modr;
- v104 = *(u*)(vic + 8UL);
- v105 = 196855UL;
- v106 = 0UL;
- v107 = ((u(*)())v103)(v104, v105, v106);
- v107;
- goto b8;
-b50: if (vkind != 10UL) goto b54;
- v108 = (u)zoutput_irexpr;
- v109 = vic;
- v110 = vb;
- v111 = *(u*)(vo + 8UL);
- v112 = ((u(*)())v108)(v109, v110, v111);
- v112;
- v113 = (u)zas_modr;
- v114 = *(u*)(vic + 8UL);
- v115 = 131319UL;
- v116 = 0UL;
- v117 = ((u(*)())v113)(v114, v115, v116);
- v117;
- goto b8;
-b54: if (vkind != 11UL) goto b58;
- v118 = (u)zoutput_irexpr;
- v119 = vic;
- v120 = vb;
- v121 = *(u*)(vo + 16UL);
- v122 = ((u(*)())v118)(v119, v120, v121);
- v122;
- v123 = (u)zas_opr;
- v124 = *(u*)(vic + 8UL);
- v125 = 80UL;
- v126 = 0UL;
- v127 = ((u(*)())v123)(v124, v125, v126);
- v127;
- v128 = (u)zoutput_irexpr;
- v129 = vic;
- v130 = vb;
- v131 = *(u*)(vo + 8UL);
- v132 = ((u(*)())v128)(v129, v130, v131);
- v132;
- v133 = (u)zas_opr;
- v134 = *(u*)(vic + 8UL);
- v135 = 88UL;
- v136 = 1UL;
- v137 = ((u(*)())v133)(v134, v135, v136);
- v137;
- v138 = (u)zas_modrr;
- v139 = *(u*)(vic + 8UL);
- v140 = 3UL;
- v141 = 0UL;
- v142 = 1UL;
- v143 = ((u(*)())v138)(v139, v140, v141, v142);
- v143;
- goto b8;
-b58: if (vkind != 12UL) goto b65;
- v144 = (u)zoutput_irexpr;
- v145 = vic;
- v146 = vb;
- v147 = *(u*)(vo + 16UL);
- v148 = ((u(*)())v144)(v145, v146, v147);
+ v4 = (u)zmklabel;
+ v5 = *(u*)(vc + 48UL);
+ v6 = ((u(*)())(v4))(v5);
+ vout = v6;
+ vi = 0UL;
+b2: if (vi != 256UL) goto b6;
+ v97 = (u)zfixup_label;
+ v98 = *(u*)(vc + 48UL);
+ v99 = vout;
+ v100 = ((u(*)())(v97))(v98, v99);
+ v100;
+ v101 = (u)zx86_64_modri;
+ v102 = *(u*)(vc + 48UL);
+ v103 = 327809UL;
+ v104 = 4UL;
+ v105 = 176UL;
+ v106 = ((u(*)())(v101))(v102, v103, v104, v105);
+ v106;
+ v107 = (u)zx86_64_modrm;
+ v108 = *(u*)(vc + 48UL);
+ v109 = 137UL;
+ v110 = 5UL;
+ v111 = 4UL;
+ v112 = 0UL;
+ v113 = 0UL;
+ v114 = 40UL;
+ v115 = ((u(*)())(v107))(v108, v109, v110, v111, v112, v113, v114);
+ v115;
+ v116 = (u)zx86_64_modrr;
+ v117 = *(u*)(vc + 48UL);
+ v118 = 139UL;
+ v119 = 5UL;
+ v120 = 4UL;
+ v121 = ((u(*)())(v116))(v117, v118, v119, v120);
+ v121;
+ v122 = (u)zx86_64_modrm;
+ v123 = *(u*)(vc + 48UL);
+ v124 = 137UL;
+ v125 = 0UL;
+ v126 = 5UL;
+ v127 = 0UL;
+ v128 = 0UL;
+ v129 = 0UL;
+ v130 = ((u(*)())(v122))(v123, v124, v125, v126, v127, v128, v129);
+ v130;
+ v131 = (u)zx86_64_modrm;
+ v132 = *(u*)(vc + 48UL);
+ v133 = 137UL;
+ v134 = 1UL;
+ v135 = 5UL;
+ v136 = 0UL;
+ v137 = 0UL;
+ v138 = 8UL;
+ v139 = ((u(*)())(v131))(v132, v133, v134, v135, v136, v137, v138);
+ v139;
+ v140 = (u)zx86_64_modrm;
+ v141 = *(u*)(vc + 48UL);
+ v142 = 137UL;
+ v143 = 2UL;
+ v144 = 5UL;
+ v145 = 0UL;
+ v146 = 0UL;
+ v147 = 16UL;
+ v148 = ((u(*)())(v140))(v141, v142, v143, v144, v145, v146, v147);
v148;
- v149 = (u)zas_opr;
- v150 = *(u*)(vic + 8UL);
- v151 = 80UL;
- v152 = 0UL;
- v153 = ((u(*)())v149)(v150, v151, v152);
- v153;
- v154 = (u)zoutput_irexpr;
- v155 = vic;
- v156 = vb;
- v157 = *(u*)(vo + 8UL);
- v158 = ((u(*)())v154)(v155, v156, v157);
- v158;
- v159 = (u)zas_opr;
- v160 = *(u*)(vic + 8UL);
- v161 = 88UL;
- v162 = 1UL;
- v163 = ((u(*)())v159)(v160, v161, v162);
- v163;
- v164 = (u)zas_modrr;
- v165 = *(u*)(vic + 8UL);
- v166 = 35UL;
- v167 = 0UL;
- v168 = 1UL;
- v169 = ((u(*)())v164)(v165, v166, v167, v168);
- v169;
- goto b8;
-b65: if (vkind != 13UL) goto b72;
- v170 = (u)zoutput_irexpr;
- v171 = vic;
- v172 = vb;
- v173 = *(u*)(vo + 16UL);
- v174 = ((u(*)())v170)(v171, v172, v173);
- v174;
- v175 = (u)zas_opr;
- v176 = *(u*)(vic + 8UL);
- v177 = 80UL;
- v178 = 0UL;
- v179 = ((u(*)())v175)(v176, v177, v178);
- v179;
- v180 = (u)zoutput_irexpr;
- v181 = vic;
- v182 = vb;
- v183 = *(u*)(vo + 8UL);
- v184 = ((u(*)())v180)(v181, v182, v183);
+ v149 = (u)zx86_64_modrm;
+ v150 = *(u*)(vc + 48UL);
+ v151 = 137UL;
+ v152 = 3UL;
+ v153 = 5UL;
+ v154 = 0UL;
+ v155 = 0UL;
+ v156 = 24UL;
+ v157 = ((u(*)())(v149))(v150, v151, v152, v153, v154, v155, v156);
+ v157;
+ v158 = (u)zx86_64_modrm;
+ v159 = *(u*)(vc + 48UL);
+ v160 = 137UL;
+ v161 = 6UL;
+ v162 = 5UL;
+ v163 = 0UL;
+ v164 = 0UL;
+ v165 = 48UL;
+ v166 = ((u(*)())(v158))(v159, v160, v161, v162, v163, v164, v165);
+ v166;
+ v167 = (u)zx86_64_modrm;
+ v168 = *(u*)(vc + 48UL);
+ v169 = 137UL;
+ v170 = 7UL;
+ v171 = 5UL;
+ v172 = 0UL;
+ v173 = 0UL;
+ v174 = 56UL;
+ v175 = ((u(*)())(v167))(v168, v169, v170, v171, v172, v173, v174);
+ v175;
+ v176 = (u)zx86_64_modrm;
+ v177 = *(u*)(vc + 48UL);
+ v178 = 137UL;
+ v179 = 8UL;
+ v180 = 5UL;
+ v181 = 0UL;
+ v182 = 0UL;
+ v183 = 64UL;
+ v184 = ((u(*)())(v176))(v177, v178, v179, v180, v181, v182, v183);
v184;
- v185 = (u)zas_opr;
- v186 = *(u*)(vic + 8UL);
- v187 = 88UL;
- v188 = 1UL;
- v189 = ((u(*)())v185)(v186, v187, v188);
- v189;
- v190 = (u)zas_modrr;
- v191 = *(u*)(vic + 8UL);
- v192 = 11UL;
- v193 = 0UL;
- v194 = 1UL;
- v195 = ((u(*)())v190)(v191, v192, v193, v194);
- v195;
- goto b8;
-b72: if (vkind != 14UL) goto b79;
- v196 = (u)zoutput_irexpr;
- v197 = vic;
- v198 = vb;
- v199 = *(u*)(vo + 16UL);
- v200 = ((u(*)())v196)(v197, v198, v199);
- v200;
- v201 = (u)zas_opr;
- v202 = *(u*)(vic + 8UL);
- v203 = 80UL;
- v204 = 0UL;
- v205 = ((u(*)())v201)(v202, v203, v204);
- v205;
- v206 = (u)zoutput_irexpr;
- v207 = vic;
- v208 = vb;
- v209 = *(u*)(vo + 8UL);
- v210 = ((u(*)())v206)(v207, v208, v209);
- v210;
- v211 = (u)zas_opr;
- v212 = *(u*)(vic + 8UL);
- v213 = 88UL;
- v214 = 1UL;
- v215 = ((u(*)())v211)(v212, v213, v214);
- v215;
- v216 = (u)zas_modrr;
- v217 = *(u*)(vic + 8UL);
- v218 = 51UL;
- v219 = 0UL;
- v220 = 1UL;
- v221 = ((u(*)())v216)(v217, v218, v219, v220);
- v221;
- goto b8;
-b79: if (vkind != 15UL) goto b86;
- v222 = (u)zoutput_irexpr;
- v223 = vic;
- v224 = vb;
- v225 = *(u*)(vo + 16UL);
- v226 = ((u(*)())v222)(v223, v224, v225);
- v226;
- v227 = (u)zas_opr;
- v228 = *(u*)(vic + 8UL);
- v229 = 80UL;
- v230 = 0UL;
- v231 = ((u(*)())v227)(v228, v229, v230);
- v231;
- v232 = (u)zoutput_irexpr;
- v233 = vic;
- v234 = vb;
- v235 = *(u*)(vo + 8UL);
- v236 = ((u(*)())v232)(v233, v234, v235);
- v236;
- v237 = (u)zas_opr;
- v238 = *(u*)(vic + 8UL);
- v239 = 88UL;
- v240 = 1UL;
- v241 = ((u(*)())v237)(v238, v239, v240);
- v241;
- v242 = (u)zas_modrr;
- v243 = *(u*)(vic + 8UL);
- v244 = 51UL;
- v245 = 2UL;
- v246 = 2UL;
- v247 = ((u(*)())v242)(v243, v244, v245, v246);
+ v185 = (u)zx86_64_modrm;
+ v186 = *(u*)(vc + 48UL);
+ v187 = 137UL;
+ v188 = 9UL;
+ v189 = 5UL;
+ v190 = 0UL;
+ v191 = 0UL;
+ v192 = 72UL;
+ v193 = ((u(*)())(v185))(v186, v187, v188, v189, v190, v191, v192);
+ v193;
+ v194 = (u)zx86_64_modrm;
+ v195 = *(u*)(vc + 48UL);
+ v196 = 137UL;
+ v197 = 10UL;
+ v198 = 5UL;
+ v199 = 0UL;
+ v200 = 0UL;
+ v201 = 80UL;
+ v202 = ((u(*)())(v194))(v195, v196, v197, v198, v199, v200, v201);
+ v202;
+ v203 = (u)zx86_64_modrm;
+ v204 = *(u*)(vc + 48UL);
+ v205 = 137UL;
+ v206 = 11UL;
+ v207 = 5UL;
+ v208 = 0UL;
+ v209 = 0UL;
+ v210 = 88UL;
+ v211 = ((u(*)())(v203))(v204, v205, v206, v207, v208, v209, v210);
+ v211;
+ v212 = (u)zx86_64_modrm;
+ v213 = *(u*)(vc + 48UL);
+ v214 = 137UL;
+ v215 = 12UL;
+ v216 = 5UL;
+ v217 = 0UL;
+ v218 = 0UL;
+ v219 = 96UL;
+ v220 = ((u(*)())(v212))(v213, v214, v215, v216, v217, v218, v219);
+ v220;
+ v221 = (u)zx86_64_modrm;
+ v222 = *(u*)(vc + 48UL);
+ v223 = 137UL;
+ v224 = 13UL;
+ v225 = 5UL;
+ v226 = 0UL;
+ v227 = 0UL;
+ v228 = 104UL;
+ v229 = ((u(*)())(v221))(v222, v223, v224, v225, v226, v227, v228);
+ v229;
+ v230 = (u)zx86_64_modrm;
+ v231 = *(u*)(vc + 48UL);
+ v232 = 137UL;
+ v233 = 14UL;
+ v234 = 5UL;
+ v235 = 0UL;
+ v236 = 0UL;
+ v237 = 112UL;
+ v238 = ((u(*)())(v230))(v231, v232, v233, v234, v235, v236, v237);
+ v238;
+ v239 = (u)zx86_64_modrm;
+ v240 = *(u*)(vc + 48UL);
+ v241 = 137UL;
+ v242 = 15UL;
+ v243 = 5UL;
+ v244 = 0UL;
+ v245 = 0UL;
+ v246 = 120UL;
+ v247 = ((u(*)())(v239))(v240, v241, v242, v243, v244, v245, v246);
v247;
- v248 = (u)zas_modrr;
- v249 = *(u*)(vic + 8UL);
- v250 = 133UL;
+ v248 = (u)zx86_64_modrm;
+ v249 = *(u*)(vc + 48UL);
+ v250 = 139UL;
v251 = 0UL;
- v252 = 0UL;
- v253 = ((u(*)())v248)(v249, v250, v251, v252);
- v253;
- v254 = (u)zas_modrr;
- v255 = *(u*)(vic + 8UL);
- v256 = 3984UL + 8UL;
- v257 = 0UL;
- v258 = 2UL;
- v259 = ((u(*)())v254)(v255, v256, v257, v258);
- v259;
- v260 = (u)zas_modr;
- v261 = *(u*)(vic + 8UL);
- v262 = 196855UL;
- v263 = 2UL;
- v264 = ((u(*)())v260)(v261, v262, v263);
- v264;
- v265 = (u)zas_modr;
- v266 = *(u*)(vic + 8UL);
- v267 = 458999UL;
- v268 = 1UL;
- v269 = ((u(*)())v265)(v266, v267, v268);
- v269;
- goto b8;
-b86: if (vkind != 16UL) goto b97;
- v270 = (u)zoutput_irexpr;
- v271 = vic;
- v272 = vb;
- v273 = *(u*)(vo + 16UL);
- v274 = ((u(*)())v270)(v271, v272, v273);
+ v252 = 5UL;
+ v253 = 0UL;
+ v254 = 0UL;
+ v255 = 176UL + 0UL;
+ v256 = ((u(*)())(v248))(v249, v250, v251, v252, v253, v254, v255);
+ v256;
+ v257 = (u)zx86_64_modrm;
+ v258 = *(u*)(vc + 48UL);
+ v259 = 137UL;
+ v260 = 0UL;
+ v261 = 5UL;
+ v262 = 0UL;
+ v263 = 0UL;
+ v264 = 160UL;
+ v265 = ((u(*)())(v257))(v258, v259, v260, v261, v262, v263, v264);
+ v265;
+ v266 = (u)zx86_64_modrm;
+ v267 = *(u*)(vc + 48UL);
+ v268 = 139UL;
+ v269 = 0UL;
+ v270 = 5UL;
+ v271 = 0UL;
+ v272 = 0UL;
+ v273 = 176UL + 8UL;
+ v274 = ((u(*)())(v266))(v267, v268, v269, v270, v271, v272, v273);
v274;
- v275 = (u)zas_opr;
- v276 = *(u*)(vic + 8UL);
- v277 = 80UL;
- v278 = 0UL;
- v279 = ((u(*)())v275)(v276, v277, v278);
- v279;
- v280 = (u)zoutput_irexpr;
- v281 = vic;
- v282 = vb;
- v283 = *(u*)(vo + 8UL);
- v284 = ((u(*)())v280)(v281, v282, v283);
- v284;
- v285 = (u)zas_opr;
- v286 = *(u*)(vic + 8UL);
- v287 = 88UL;
- v288 = 1UL;
- v289 = ((u(*)())v285)(v286, v287, v288);
- v289;
- v290 = (u)zas_modrr;
- v291 = *(u*)(vic + 8UL);
- v292 = 51UL;
- v293 = 2UL;
- v294 = 2UL;
- v295 = ((u(*)())v290)(v291, v292, v293, v294);
- v295;
- v296 = (u)zas_modrr;
- v297 = *(u*)(vic + 8UL);
- v298 = 133UL;
- v299 = 0UL;
- v300 = 0UL;
- v301 = ((u(*)())v296)(v297, v298, v299, v300);
- v301;
- v302 = (u)zas_modrr;
- v303 = *(u*)(vic + 8UL);
- v304 = 3984UL + 8UL;
- v305 = 0UL;
- v306 = 2UL;
- v307 = ((u(*)())v302)(v303, v304, v305, v306);
- v307;
- v308 = (u)zas_modr;
- v309 = *(u*)(vic + 8UL);
- v310 = 196855UL;
- v311 = 2UL;
- v312 = ((u(*)())v308)(v309, v310, v311);
- v312;
- v313 = (u)zas_modr;
- v314 = *(u*)(vic + 8UL);
- v315 = 458999UL;
- v316 = 1UL;
- v317 = ((u(*)())v313)(v314, v315, v316);
- v317;
- v318 = (u)zas_modrr;
- v319 = *(u*)(vic + 8UL);
- v320 = 139UL;
- v321 = 0UL;
- v322 = 2UL;
- v323 = ((u(*)())v318)(v319, v320, v321, v322);
- v323;
- goto b8;
-b97: if (vkind != 17UL) goto b109;
- v324 = (u)zoutput_irexpr;
- v325 = vic;
- v326 = vb;
- v327 = *(u*)(vo + 16UL);
- v328 = ((u(*)())v324)(v325, v326, v327);
- v328;
- v329 = (u)zas_opr;
- v330 = *(u*)(vic + 8UL);
- v331 = 80UL;
- v332 = 0UL;
- v333 = ((u(*)())v329)(v330, v331, v332);
- v333;
- v334 = (u)zoutput_irexpr;
- v335 = vic;
- v336 = vb;
- v337 = *(u*)(vo + 8UL);
- v338 = ((u(*)())v334)(v335, v336, v337);
- v338;
- v339 = (u)zas_opr;
- v340 = *(u*)(vic + 8UL);
- v341 = 88UL;
- v342 = 1UL;
- v343 = ((u(*)())v339)(v340, v341, v342);
- v343;
- v344 = (u)zas_modr;
- v345 = *(u*)(vic + 8UL);
- v346 = 262355UL;
- v347 = 0UL;
- v348 = ((u(*)())v344)(v345, v346, v347);
- v348;
- goto b8;
-b109: if (vkind != 18UL) goto b116;
- v349 = (u)zoutput_irexpr;
- v350 = vic;
- v351 = vb;
- v352 = *(u*)(vo + 16UL);
- v353 = ((u(*)())v349)(v350, v351, v352);
- v353;
- v354 = (u)zas_opr;
- v355 = *(u*)(vic + 8UL);
- v356 = 80UL;
- v357 = 0UL;
- v358 = ((u(*)())v354)(v355, v356, v357);
- v358;
- v359 = (u)zoutput_irexpr;
- v360 = vic;
- v361 = vb;
- v362 = *(u*)(vo + 8UL);
- v363 = ((u(*)())v359)(v360, v361, v362);
- v363;
- v364 = (u)zas_opr;
- v365 = *(u*)(vic + 8UL);
- v366 = 88UL;
- v367 = 1UL;
- v368 = ((u(*)())v364)(v365, v366, v367);
- v368;
- v369 = (u)zas_modr;
- v370 = *(u*)(vic + 8UL);
- v371 = 327891UL;
- v372 = 0UL;
- v373 = ((u(*)())v369)(v370, v371, v372);
+ v275 = (u)zx86_64_modrm;
+ v276 = *(u*)(vc + 48UL);
+ v277 = 137UL;
+ v278 = 0UL;
+ v279 = 5UL;
+ v280 = 0UL;
+ v281 = 0UL;
+ v282 = 168UL;
+ v283 = ((u(*)())(v275))(v276, v277, v278, v279, v280, v281, v282);
+ v283;
+ v284 = (u)zx86_64_modrm;
+ v285 = *(u*)(vc + 48UL);
+ v286 = 139UL;
+ v287 = 0UL;
+ v288 = 5UL;
+ v289 = 0UL;
+ v290 = 0UL;
+ v291 = 176UL + 16UL;
+ v292 = ((u(*)())(v284))(v285, v286, v287, v288, v289, v290, v291);
+ v292;
+ v293 = (u)zx86_64_modrm;
+ v294 = *(u*)(vc + 48UL);
+ v295 = 137UL;
+ v296 = 0UL;
+ v297 = 5UL;
+ v298 = 0UL;
+ v299 = 0UL;
+ v300 = 128UL;
+ v301 = ((u(*)())(v293))(v294, v295, v296, v297, v298, v299, v300);
+ v301;
+ v302 = (u)zx86_64_modrm;
+ v303 = *(u*)(vc + 48UL);
+ v304 = 139UL;
+ v305 = 0UL;
+ v306 = 5UL;
+ v307 = 0UL;
+ v308 = 0UL;
+ v309 = 176UL + 24UL;
+ v310 = ((u(*)())(v302))(v303, v304, v305, v306, v307, v308, v309);
+ v310;
+ v311 = (u)zx86_64_modrm;
+ v312 = *(u*)(vc + 48UL);
+ v313 = 137UL;
+ v314 = 0UL;
+ v315 = 5UL;
+ v316 = 0UL;
+ v317 = 0UL;
+ v318 = 144UL;
+ v319 = ((u(*)())(v311))(v312, v313, v314, v315, v316, v317, v318);
+ v319;
+ v320 = (u)zx86_64_modrm;
+ v321 = *(u*)(vc + 48UL);
+ v322 = 139UL;
+ v323 = 0UL;
+ v324 = 5UL;
+ v325 = 0UL;
+ v326 = 0UL;
+ v327 = 176UL + 32UL;
+ v328 = ((u(*)())(v320))(v321, v322, v323, v324, v325, v326, v327);
+ v328;
+ v329 = (u)zx86_64_modrm;
+ v330 = *(u*)(vc + 48UL);
+ v331 = 137UL;
+ v332 = 0UL;
+ v333 = 5UL;
+ v334 = 0UL;
+ v335 = 0UL;
+ v336 = 136UL;
+ v337 = ((u(*)())(v329))(v330, v331, v332, v333, v334, v335, v336);
+ v337;
+ v338 = (u)zx86_64_modrm;
+ v339 = *(u*)(vc + 48UL);
+ v340 = 139UL;
+ v341 = 0UL;
+ v342 = 5UL;
+ v343 = 0UL;
+ v344 = 0UL;
+ v345 = 176UL + 40UL;
+ v346 = ((u(*)())(v338))(v339, v340, v341, v342, v343, v344, v345);
+ v346;
+ v347 = (u)zx86_64_modrm;
+ v348 = *(u*)(vc + 48UL);
+ v349 = 137UL;
+ v350 = 0UL;
+ v351 = 5UL;
+ v352 = 0UL;
+ v353 = 0UL;
+ v354 = 32UL;
+ v355 = ((u(*)())(v347))(v348, v349, v350, v351, v352, v353, v354);
+ v355;
+ v356 = (u)zx86_64_modrm;
+ v357 = *(u*)(vc + 48UL);
+ v358 = 139UL;
+ v359 = 0UL;
+ v360 = 5UL;
+ v361 = 0UL;
+ v362 = 0UL;
+ v363 = 176UL + 48UL;
+ v364 = ((u(*)())(v356))(v357, v358, v359, v360, v361, v362, v363);
+ v364;
+ v365 = (u)zx86_64_modrm;
+ v366 = *(u*)(vc + 48UL);
+ v367 = 137UL;
+ v368 = 0UL;
+ v369 = 5UL;
+ v370 = 0UL;
+ v371 = 0UL;
+ v372 = 152UL;
+ v373 = ((u(*)())(v365))(v366, v367, v368, v369, v370, v371, v372);
v373;
- goto b8;
-b116: if (vkind != 19UL) goto b123;
- v374 = (u)zoutput_irexpr;
- v375 = vic;
- v376 = vb;
- v377 = *(u*)(vo + 16UL);
- v378 = ((u(*)())v374)(v375, v376, v377);
- v378;
- v379 = (u)zas_opr;
- v380 = *(u*)(vic + 8UL);
- v381 = 80UL;
- v382 = 0UL;
- v383 = ((u(*)())v379)(v380, v381, v382);
- v383;
- v384 = (u)zoutput_irexpr;
- v385 = vic;
- v386 = vb;
- v387 = *(u*)(vo + 8UL);
- v388 = ((u(*)())v384)(v385, v386, v387);
- v388;
- v389 = (u)zas_opr;
- v390 = *(u*)(vic + 8UL);
- v391 = 88UL;
- v392 = 1UL;
- v393 = ((u(*)())v389)(v390, v391, v392);
- v393;
- v394 = (u)zas_modr;
- v395 = *(u*)(vic + 8UL);
- v396 = 262391UL;
- v397 = 1UL;
- v398 = ((u(*)())v394)(v395, v396, v397);
- v398;
- goto b8;
-b123: if (vkind != 20UL) goto b130;
- v399 = (u)zoutput_irexpr;
- v400 = vic;
- v401 = vb;
- v402 = *(u*)(vo + 16UL);
- v403 = ((u(*)())v399)(v400, v401, v402);
- v403;
- v404 = (u)zas_opr;
- v405 = *(u*)(vic + 8UL);
- v406 = 80UL;
+ v374 = (u)zx86_64_modrr;
+ v375 = *(u*)(vc + 48UL);
+ v376 = 139UL;
+ v377 = 7UL;
+ v378 = 5UL;
+ v379 = ((u(*)())(v374))(v375, v376, v377, v378);
+ v379;
+ v380 = (u)zfind;
+ v381 = vc;
+ v382 = (u)"_isr";
+ v383 = 0UL;
+ v384 = 1UL;
+ v385 = ((u(*)())(v380))(v381, v382, v383, v384);
+ vd = v385;
+ if (!(*(u*)(vd + 72UL))) goto b113;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b113;
+ v386 = 1UL;
+b115: if (!(v386)) goto b111;
+ v387 = (u)zx86_64_jmp;
+ v388 = *(u*)(vc + 48UL);
+ v389 = 232UL;
+ v390 = *(u*)(vd + 88UL);
+ v391 = ((u(*)())(v387))(v388, v389, v390);
+ v391;
+b109: v392 = (u)zx86_64_modrm;
+ v393 = *(u*)(vc + 48UL);
+ v394 = 139UL;
+ v395 = 0UL;
+ v396 = 5UL;
+ v397 = 0UL;
+ v398 = 0UL;
+ v399 = 128UL;
+ v400 = ((u(*)())(v392))(v393, v394, v395, v396, v397, v398, v399);
+ v400;
+ v401 = (u)zx86_64_modrm;
+ v402 = *(u*)(vc + 48UL);
+ v403 = 137UL;
+ v404 = 0UL;
+ v405 = 5UL;
+ v406 = 0UL;
v407 = 0UL;
- v408 = ((u(*)())v404)(v405, v406, v407);
- v408;
- v409 = (u)zoutput_irexpr;
- v410 = vic;
- v411 = vb;
- v412 = *(u*)(vo + 8UL);
- v413 = ((u(*)())v409)(v410, v411, v412);
- v413;
- v414 = (u)zas_opr;
- v415 = *(u*)(vic + 8UL);
- v416 = 88UL;
- v417 = 1UL;
- v418 = ((u(*)())v414)(v415, v416, v417);
+ v408 = 176UL + 16UL;
+ v409 = ((u(*)())(v401))(v402, v403, v404, v405, v406, v407, v408);
+ v409;
+ v410 = (u)zx86_64_modrm;
+ v411 = *(u*)(vc + 48UL);
+ v412 = 139UL;
+ v413 = 0UL;
+ v414 = 5UL;
+ v415 = 0UL;
+ v416 = 0UL;
+ v417 = 144UL;
+ v418 = ((u(*)())(v410))(v411, v412, v413, v414, v415, v416, v417);
v418;
- v419 = (u)zas_modrr;
- v420 = *(u*)(vic + 8UL);
- v421 = 43UL;
+ v419 = (u)zx86_64_modrm;
+ v420 = *(u*)(vc + 48UL);
+ v421 = 137UL;
v422 = 0UL;
- v423 = 1UL;
- v424 = ((u(*)())v419)(v420, v421, v422, v423);
- v424;
- goto b8;
-b130: if (vkind != 21UL) goto b137;
- v425 = (u)zoutput_irexpr;
- v426 = vic;
- v427 = vb;
- v428 = *(u*)(vo + 16UL);
- v429 = ((u(*)())v425)(v426, v427, v428);
- v429;
- v430 = (u)zas_opr;
- v431 = *(u*)(vic + 8UL);
- v432 = 80UL;
+ v423 = 5UL;
+ v424 = 0UL;
+ v425 = 0UL;
+ v426 = 176UL + 24UL;
+ v427 = ((u(*)())(v419))(v420, v421, v422, v423, v424, v425, v426);
+ v427;
+ v428 = (u)zx86_64_modrm;
+ v429 = *(u*)(vc + 48UL);
+ v430 = 139UL;
+ v431 = 0UL;
+ v432 = 5UL;
v433 = 0UL;
- v434 = ((u(*)())v430)(v431, v432, v433);
- v434;
- v435 = (u)zoutput_irexpr;
- v436 = vic;
- v437 = vb;
- v438 = *(u*)(vo + 8UL);
- v439 = ((u(*)())v435)(v436, v437, v438);
- v439;
- v440 = (u)zas_opr;
- v441 = *(u*)(vic + 8UL);
- v442 = 88UL;
- v443 = 1UL;
- v444 = ((u(*)())v440)(v441, v442, v443);
- v444;
- v445 = (u)zas_modrr;
- v446 = *(u*)(vic + 8UL);
- v447 = 139UL;
- v448 = 2UL;
+ v434 = 0UL;
+ v435 = 136UL;
+ v436 = ((u(*)())(v428))(v429, v430, v431, v432, v433, v434, v435);
+ v436;
+ v437 = (u)zx86_64_modrm;
+ v438 = *(u*)(vc + 48UL);
+ v439 = 137UL;
+ v440 = 0UL;
+ v441 = 5UL;
+ v442 = 0UL;
+ v443 = 0UL;
+ v444 = 176UL + 32UL;
+ v445 = ((u(*)())(v437))(v438, v439, v440, v441, v442, v443, v444);
+ v445;
+ v446 = (u)zx86_64_modrm;
+ v447 = *(u*)(vc + 48UL);
+ v448 = 139UL;
v449 = 0UL;
- v450 = ((u(*)())v445)(v446, v447, v448, v449);
- v450;
- v451 = (u)zas_modrr;
- v452 = *(u*)(vic + 8UL);
- v453 = 51UL;
- v454 = 0UL;
- v455 = 0UL;
- v456 = ((u(*)())v451)(v452, v453, v454, v455);
- v456;
- v457 = (u)zas_modrr;
- v458 = *(u*)(vic + 8UL);
- v459 = 59UL;
- v460 = 2UL;
- v461 = 1UL;
- v462 = ((u(*)())v457)(v458, v459, v460, v461);
- v462;
- v463 = (u)zas_modrr;
- v464 = *(u*)(vic + 8UL);
- v465 = 3984UL + 4UL;
- v466 = 0UL;
+ v450 = 5UL;
+ v451 = 0UL;
+ v452 = 0UL;
+ v453 = 32UL;
+ v454 = ((u(*)())(v446))(v447, v448, v449, v450, v451, v452, v453);
+ v454;
+ v455 = (u)zx86_64_modrm;
+ v456 = *(u*)(vc + 48UL);
+ v457 = 137UL;
+ v458 = 0UL;
+ v459 = 5UL;
+ v460 = 0UL;
+ v461 = 0UL;
+ v462 = 176UL + 40UL;
+ v463 = ((u(*)())(v455))(v456, v457, v458, v459, v460, v461, v462);
+ v463;
+ v464 = (u)zx86_64_modrm;
+ v465 = *(u*)(vc + 48UL);
+ v466 = 139UL;
v467 = 0UL;
- v468 = ((u(*)())v463)(v464, v465, v466, v467);
- v468;
- goto b8;
-b137: if (vkind != 22UL) goto b147;
- v469 = (u)zoutput_irexpr;
- v470 = vic;
- v471 = vb;
- v472 = *(u*)(vo + 16UL);
- v473 = ((u(*)())v469)(v470, v471, v472);
- v473;
- v474 = (u)zas_opr;
- v475 = *(u*)(vic + 8UL);
- v476 = 80UL;
- v477 = 0UL;
- v478 = ((u(*)())v474)(v475, v476, v477);
- v478;
- v479 = (u)zoutput_irexpr;
- v480 = vic;
- v481 = vb;
- v482 = *(u*)(vo + 8UL);
- v483 = ((u(*)())v479)(v480, v481, v482);
- v483;
- v484 = (u)zas_opr;
- v485 = *(u*)(vic + 8UL);
- v486 = 88UL;
- v487 = 1UL;
- v488 = ((u(*)())v484)(v485, v486, v487);
- v488;
- v489 = (u)zas_modrr;
- v490 = *(u*)(vic + 8UL);
- v491 = 139UL;
- v492 = 2UL;
- v493 = 0UL;
- v494 = ((u(*)())v489)(v490, v491, v492, v493);
- v494;
- v495 = (u)zas_modrr;
- v496 = *(u*)(vic + 8UL);
- v497 = 51UL;
- v498 = 0UL;
- v499 = 0UL;
- v500 = ((u(*)())v495)(v496, v497, v498, v499);
- v500;
- v501 = (u)zas_modrr;
- v502 = *(u*)(vic + 8UL);
- v503 = 59UL;
- v504 = 2UL;
- v505 = 1UL;
- v506 = ((u(*)())v501)(v502, v503, v504, v505);
- v506;
- v507 = (u)zas_modrr;
- v508 = *(u*)(vic + 8UL);
- v509 = 3984UL + 5UL;
- v510 = 0UL;
- v511 = 0UL;
- v512 = ((u(*)())v507)(v508, v509, v510, v511);
- v512;
- goto b8;
-b147: if (vkind != 23UL) goto b157;
- v513 = (u)zoutput_irexpr;
- v514 = vic;
- v515 = vb;
- v516 = *(u*)(vo + 16UL);
- v517 = ((u(*)())v513)(v514, v515, v516);
+ v468 = 5UL;
+ v469 = 0UL;
+ v470 = 0UL;
+ v471 = 152UL;
+ v472 = ((u(*)())(v464))(v465, v466, v467, v468, v469, v470, v471);
+ v472;
+ v473 = (u)zx86_64_modrm;
+ v474 = *(u*)(vc + 48UL);
+ v475 = 137UL;
+ v476 = 0UL;
+ v477 = 5UL;
+ v478 = 0UL;
+ v479 = 0UL;
+ v480 = 176UL + 48UL;
+ v481 = ((u(*)())(v473))(v474, v475, v476, v477, v478, v479, v480);
+ v481;
+ v482 = (u)zx86_64_modrm;
+ v483 = *(u*)(vc + 48UL);
+ v484 = 139UL;
+ v485 = 0UL;
+ v486 = 5UL;
+ v487 = 0UL;
+ v488 = 0UL;
+ v489 = 0UL;
+ v490 = ((u(*)())(v482))(v483, v484, v485, v486, v487, v488, v489);
+ v490;
+ v491 = (u)zx86_64_modrm;
+ v492 = *(u*)(vc + 48UL);
+ v493 = 139UL;
+ v494 = 1UL;
+ v495 = 5UL;
+ v496 = 0UL;
+ v497 = 0UL;
+ v498 = 8UL;
+ v499 = ((u(*)())(v491))(v492, v493, v494, v495, v496, v497, v498);
+ v499;
+ v500 = (u)zx86_64_modrm;
+ v501 = *(u*)(vc + 48UL);
+ v502 = 139UL;
+ v503 = 2UL;
+ v504 = 5UL;
+ v505 = 0UL;
+ v506 = 0UL;
+ v507 = 16UL;
+ v508 = ((u(*)())(v500))(v501, v502, v503, v504, v505, v506, v507);
+ v508;
+ v509 = (u)zx86_64_modrm;
+ v510 = *(u*)(vc + 48UL);
+ v511 = 139UL;
+ v512 = 3UL;
+ v513 = 5UL;
+ v514 = 0UL;
+ v515 = 0UL;
+ v516 = 24UL;
+ v517 = ((u(*)())(v509))(v510, v511, v512, v513, v514, v515, v516);
v517;
- v518 = (u)zas_opr;
- v519 = *(u*)(vic + 8UL);
- v520 = 80UL;
- v521 = 0UL;
- v522 = ((u(*)())v518)(v519, v520, v521);
- v522;
- v523 = (u)zoutput_irexpr;
- v524 = vic;
- v525 = vb;
- v526 = *(u*)(vo + 8UL);
- v527 = ((u(*)())v523)(v524, v525, v526);
- v527;
- v528 = (u)zas_opr;
- v529 = *(u*)(vic + 8UL);
- v530 = 88UL;
- v531 = 1UL;
- v532 = ((u(*)())v528)(v529, v530, v531);
- v532;
- v533 = (u)zas_modrr;
- v534 = *(u*)(vic + 8UL);
- v535 = 139UL;
- v536 = 2UL;
- v537 = 0UL;
- v538 = ((u(*)())v533)(v534, v535, v536, v537);
- v538;
- v539 = (u)zas_modrr;
- v540 = *(u*)(vic + 8UL);
- v541 = 51UL;
+ v518 = (u)zx86_64_modrm;
+ v519 = *(u*)(vc + 48UL);
+ v520 = 139UL;
+ v521 = 6UL;
+ v522 = 5UL;
+ v523 = 0UL;
+ v524 = 0UL;
+ v525 = 48UL;
+ v526 = ((u(*)())(v518))(v519, v520, v521, v522, v523, v524, v525);
+ v526;
+ v527 = (u)zx86_64_modrm;
+ v528 = *(u*)(vc + 48UL);
+ v529 = 139UL;
+ v530 = 7UL;
+ v531 = 5UL;
+ v532 = 0UL;
+ v533 = 0UL;
+ v534 = 56UL;
+ v535 = ((u(*)())(v527))(v528, v529, v530, v531, v532, v533, v534);
+ v535;
+ v536 = (u)zx86_64_modrm;
+ v537 = *(u*)(vc + 48UL);
+ v538 = 139UL;
+ v539 = 8UL;
+ v540 = 5UL;
+ v541 = 0UL;
v542 = 0UL;
- v543 = 0UL;
- v544 = ((u(*)())v539)(v540, v541, v542, v543);
+ v543 = 64UL;
+ v544 = ((u(*)())(v536))(v537, v538, v539, v540, v541, v542, v543);
v544;
- v545 = (u)zas_modrr;
- v546 = *(u*)(vic + 8UL);
- v547 = 59UL;
- v548 = 2UL;
- v549 = 1UL;
- v550 = ((u(*)())v545)(v546, v547, v548, v549);
- v550;
- v551 = (u)zas_modrr;
- v552 = *(u*)(vic + 8UL);
- v553 = 3984UL + 15UL;
- v554 = 0UL;
- v555 = 0UL;
- v556 = ((u(*)())v551)(v552, v553, v554, v555);
- v556;
- goto b8;
-b157: if (vkind != 24UL) goto b167;
- v557 = (u)zoutput_irexpr;
- v558 = vic;
- v559 = vb;
- v560 = *(u*)(vo + 16UL);
- v561 = ((u(*)())v557)(v558, v559, v560);
- v561;
- v562 = (u)zas_opr;
- v563 = *(u*)(vic + 8UL);
- v564 = 80UL;
- v565 = 0UL;
- v566 = ((u(*)())v562)(v563, v564, v565);
- v566;
- v567 = (u)zoutput_irexpr;
- v568 = vic;
- v569 = vb;
- v570 = *(u*)(vo + 8UL);
- v571 = ((u(*)())v567)(v568, v569, v570);
+ v545 = (u)zx86_64_modrm;
+ v546 = *(u*)(vc + 48UL);
+ v547 = 139UL;
+ v548 = 9UL;
+ v549 = 5UL;
+ v550 = 0UL;
+ v551 = 0UL;
+ v552 = 72UL;
+ v553 = ((u(*)())(v545))(v546, v547, v548, v549, v550, v551, v552);
+ v553;
+ v554 = (u)zx86_64_modrm;
+ v555 = *(u*)(vc + 48UL);
+ v556 = 139UL;
+ v557 = 10UL;
+ v558 = 5UL;
+ v559 = 0UL;
+ v560 = 0UL;
+ v561 = 80UL;
+ v562 = ((u(*)())(v554))(v555, v556, v557, v558, v559, v560, v561);
+ v562;
+ v563 = (u)zx86_64_modrm;
+ v564 = *(u*)(vc + 48UL);
+ v565 = 139UL;
+ v566 = 11UL;
+ v567 = 5UL;
+ v568 = 0UL;
+ v569 = 0UL;
+ v570 = 88UL;
+ v571 = ((u(*)())(v563))(v564, v565, v566, v567, v568, v569, v570);
v571;
- v572 = (u)zas_opr;
- v573 = *(u*)(vic + 8UL);
- v574 = 88UL;
- v575 = 1UL;
- v576 = ((u(*)())v572)(v573, v574, v575);
- v576;
- v577 = (u)zas_modrr;
- v578 = *(u*)(vic + 8UL);
- v579 = 139UL;
- v580 = 2UL;
- v581 = 0UL;
- v582 = ((u(*)())v577)(v578, v579, v580, v581);
- v582;
- v583 = (u)zas_modrr;
- v584 = *(u*)(vic + 8UL);
- v585 = 51UL;
+ v572 = (u)zx86_64_modrm;
+ v573 = *(u*)(vc + 48UL);
+ v574 = 139UL;
+ v575 = 12UL;
+ v576 = 5UL;
+ v577 = 0UL;
+ v578 = 0UL;
+ v579 = 96UL;
+ v580 = ((u(*)())(v572))(v573, v574, v575, v576, v577, v578, v579);
+ v580;
+ v581 = (u)zx86_64_modrm;
+ v582 = *(u*)(vc + 48UL);
+ v583 = 139UL;
+ v584 = 13UL;
+ v585 = 5UL;
v586 = 0UL;
v587 = 0UL;
- v588 = ((u(*)())v583)(v584, v585, v586, v587);
- v588;
- v589 = (u)zas_modrr;
- v590 = *(u*)(vic + 8UL);
- v591 = 59UL;
- v592 = 2UL;
- v593 = 1UL;
- v594 = ((u(*)())v589)(v590, v591, v592, v593);
- v594;
- v595 = (u)zas_modrr;
- v596 = *(u*)(vic + 8UL);
- v597 = 3984UL + 13UL;
- v598 = 0UL;
- v599 = 0UL;
- v600 = ((u(*)())v595)(v596, v597, v598, v599);
- v600;
- goto b8;
-b167: if (vkind != 25UL) goto b177;
- v601 = (u)zoutput_irexpr;
- v602 = vic;
- v603 = vb;
- v604 = *(u*)(vo + 16UL);
- v605 = ((u(*)())v601)(v602, v603, v604);
- v605;
- v606 = (u)zas_opr;
- v607 = *(u*)(vic + 8UL);
- v608 = 80UL;
- v609 = 0UL;
- v610 = ((u(*)())v606)(v607, v608, v609);
- v610;
- v611 = (u)zoutput_irexpr;
- v612 = vic;
- v613 = vb;
- v614 = *(u*)(vo + 8UL);
- v615 = ((u(*)())v611)(v612, v613, v614);
- v615;
- v616 = (u)zas_opr;
- v617 = *(u*)(vic + 8UL);
- v618 = 88UL;
- v619 = 1UL;
- v620 = ((u(*)())v616)(v617, v618, v619);
- v620;
- v621 = (u)zas_modrr;
- v622 = *(u*)(vic + 8UL);
- v623 = 139UL;
- v624 = 2UL;
- v625 = 0UL;
- v626 = ((u(*)())v621)(v622, v623, v624, v625);
+ v588 = 104UL;
+ v589 = ((u(*)())(v581))(v582, v583, v584, v585, v586, v587, v588);
+ v589;
+ v590 = (u)zx86_64_modrm;
+ v591 = *(u*)(vc + 48UL);
+ v592 = 139UL;
+ v593 = 14UL;
+ v594 = 5UL;
+ v595 = 0UL;
+ v596 = 0UL;
+ v597 = 112UL;
+ v598 = ((u(*)())(v590))(v591, v592, v593, v594, v595, v596, v597);
+ v598;
+ v599 = (u)zx86_64_modrm;
+ v600 = *(u*)(vc + 48UL);
+ v601 = 139UL;
+ v602 = 15UL;
+ v603 = 5UL;
+ v604 = 0UL;
+ v605 = 0UL;
+ v606 = 120UL;
+ v607 = ((u(*)())(v599))(v600, v601, v602, v603, v604, v605, v606);
+ v607;
+ v608 = (u)zx86_64_modrm;
+ v609 = *(u*)(vc + 48UL);
+ v610 = 139UL;
+ v611 = 5UL;
+ v612 = 5UL;
+ v613 = 0UL;
+ v614 = 0UL;
+ v615 = 40UL;
+ v616 = ((u(*)())(v608))(v609, v610, v611, v612, v613, v614, v615);
+ v616;
+ v617 = (u)zx86_64_modri;
+ v618 = *(u*)(vc + 48UL);
+ v619 = 129UL;
+ v620 = 4UL;
+ v621 = 176UL + 2UL * 8UL;
+ v622 = ((u(*)())(v617))(v618, v619, v620, v621);
+ v622;
+ v623 = (u)zx86_64_op;
+ v624 = *(u*)(vc + 48UL);
+ v625 = 18639UL;
+ v626 = ((u(*)())(v623))(v624, v625);
v626;
- v627 = (u)zas_modrr;
- v628 = *(u*)(vic + 8UL);
- v629 = 51UL;
- v630 = 0UL;
- v631 = 0UL;
- v632 = ((u(*)())v627)(v628, v629, v630, v631);
- v632;
- v633 = (u)zas_modrr;
- v634 = *(u*)(vic + 8UL);
- v635 = 59UL;
- v636 = 2UL;
- v637 = 1UL;
- v638 = ((u(*)())v633)(v634, v635, v636, v637);
- v638;
- v639 = (u)zas_modrr;
- v640 = *(u*)(vic + 8UL);
- v641 = 3984UL + 12UL;
- v642 = 0UL;
- v643 = 0UL;
- v644 = ((u(*)())v639)(v640, v641, v642, v643);
- v644;
- goto b8;
-b177: if (vkind != 26UL) goto b187;
- v645 = (u)zoutput_irexpr;
- v646 = vic;
- v647 = vb;
- v648 = *(u*)(vo + 16UL);
- v649 = ((u(*)())v645)(v646, v647, v648);
- v649;
- v650 = (u)zas_opr;
- v651 = *(u*)(vic + 8UL);
- v652 = 80UL;
- v653 = 0UL;
- v654 = ((u(*)())v650)(v651, v652, v653);
- v654;
- v655 = (u)zoutput_irexpr;
- v656 = vic;
- v657 = vb;
- v658 = *(u*)(vo + 8UL);
- v659 = ((u(*)())v655)(v656, v657, v658);
- v659;
- v660 = (u)zas_opr;
- v661 = *(u*)(vic + 8UL);
- v662 = 88UL;
- v663 = 1UL;
- v664 = ((u(*)())v660)(v661, v662, v663);
- v664;
- v665 = (u)zas_modrr;
- v666 = *(u*)(vic + 8UL);
- v667 = 139UL;
- v668 = 2UL;
- v669 = 0UL;
- v670 = ((u(*)())v665)(v666, v667, v668, v669);
- v670;
- v671 = (u)zas_modrr;
- v672 = *(u*)(vic + 8UL);
- v673 = 51UL;
- v674 = 0UL;
- v675 = 0UL;
- v676 = ((u(*)())v671)(v672, v673, v674, v675);
- v676;
- v677 = (u)zas_modrr;
- v678 = *(u*)(vic + 8UL);
- v679 = 59UL;
- v680 = 2UL;
- v681 = 1UL;
- v682 = ((u(*)())v677)(v678, v679, v680, v681);
- v682;
- v683 = (u)zas_modrr;
- v684 = *(u*)(vic + 8UL);
- v685 = 3984UL + 14UL;
- v686 = 0UL;
- v687 = 0UL;
- v688 = ((u(*)())v683)(v684, v685, v686, v687);
- v688;
- goto b8;
-b187: v689 = (u)zcdie;
- v690 = *(u*)(vic + 0UL);
- v691 = (u)"invalid op";
- v692 = ((u(*)())v689)(v690, v691);
- v692;
+ return 0UL;
+b111: goto b109;
+b113: v386 = 0UL;
+ goto b115;
+b6: v7 = (u)zreserve;
+ v8 = *(u*)(vc + 48UL);
+ v9 = 16UL;
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+ if (vi != 8UL) goto b44;
+ v19 = 1UL;
+b46: if (!(v19)) goto b40;
+ v18 = 1UL;
+b42: if (!(v18)) goto b36;
+ v17 = 1UL;
+b38: if (!(v17)) goto b32;
+ v16 = 1UL;
+b34: if (!(v16)) goto b28;
+ v15 = 1UL;
+b30: if (!(v15)) goto b24;
+ v14 = 1UL;
+b26: if (!(v14)) goto b20;
+ v13 = 1UL;
+b22: if (!(v13)) goto b16;
+ v12 = 1UL;
+b18: if (!(v12)) goto b12;
+ v11 = 1UL;
+b14: if (!(v11)) goto b10;
+ v20 = (u)zas_emit;
+ v21 = *(u*)(vc + 48UL);
+ v22 = 144UL;
+ v23 = ((u(*)())(v20))(v21, v22);
+ v23;
+ v24 = (u)zas_emit;
+ v25 = *(u*)(vc + 48UL);
+ v26 = 144UL;
+ v27 = ((u(*)())(v24))(v25, v26);
+ v27;
+b8: v36 = (u)zas_emit;
+ v37 = *(u*)(vc + 48UL);
+ v38 = 104UL;
+ v39 = ((u(*)())(v36))(v37, v38);
+ v39;
+ v40 = (u)zas_emit;
+ v41 = *(u*)(vc + 48UL);
+ v42 = vi;
+ v43 = ((u(*)())(v40))(v41, v42);
+ v43;
+ v44 = (u)zas_emit;
+ v45 = *(u*)(vc + 48UL);
+ v46 = 0UL;
+ v47 = ((u(*)())(v44))(v45, v46);
+ v47;
+ v48 = (u)zas_emit;
+ v49 = *(u*)(vc + 48UL);
+ v50 = 0UL;
+ v51 = ((u(*)())(v48))(v49, v50);
+ v51;
+ v52 = (u)zas_emit;
+ v53 = *(u*)(vc + 48UL);
+ v54 = 0UL;
+ v55 = ((u(*)())(v52))(v53, v54);
+ v55;
+ v56 = (u)zas_emit;
+ v57 = *(u*)(vc + 48UL);
+ v58 = 233UL;
+ v59 = ((u(*)())(v56))(v57, v58);
+ v59;
+ v60 = (u)zas_emit;
+ v61 = *(u*)(vc + 48UL);
+ v62 = 0UL;
+ v63 = ((u(*)())(v60))(v61, v62);
+ v63;
+ v64 = (u)zas_emit;
+ v65 = *(u*)(vc + 48UL);
+ v66 = 0UL;
+ v67 = ((u(*)())(v64))(v65, v66);
+ v67;
+ v68 = (u)zas_emit;
+ v69 = *(u*)(vc + 48UL);
+ v70 = 0UL;
+ v71 = ((u(*)())(v68))(v69, v70);
+ v71;
+ v72 = (u)zas_emit;
+ v73 = *(u*)(vc + 48UL);
+ v74 = 0UL;
+ v75 = ((u(*)())(v72))(v73, v74);
+ v75;
+ v76 = (u)zaddfixup;
+ v77 = *(u*)(vc + 48UL);
+ v78 = vout;
+ v79 = 0UL;
+ v80 = ((u(*)())(v76))(v77, v78, v79);
+ v80;
+ v81 = (u)zas_emit;
+ v82 = *(u*)(vc + 48UL);
+ v83 = 144UL;
+ v84 = ((u(*)())(v81))(v82, v83);
+ v84;
+ v85 = (u)zas_emit;
+ v86 = *(u*)(vc + 48UL);
+ v87 = 144UL;
+ v88 = ((u(*)())(v85))(v86, v87);
+ v88;
+ v89 = (u)zas_emit;
+ v90 = *(u*)(vc + 48UL);
+ v91 = 144UL;
+ v92 = ((u(*)())(v89))(v90, v91);
+ v92;
+ v93 = (u)zas_emit;
+ v94 = *(u*)(vc + 48UL);
+ v95 = 144UL;
+ v96 = ((u(*)())(v93))(v94, v95);
+ v96;
+ vi = vi + 1UL;
+ goto b2;
+b10: v28 = (u)zas_emit;
+ v29 = *(u*)(vc + 48UL);
+ v30 = 106UL;
+ v31 = ((u(*)())(v28))(v29, v30);
+ v31;
+ v32 = (u)zas_emit;
+ v33 = *(u*)(vc + 48UL);
+ v34 = 0UL;
+ v35 = ((u(*)())(v32))(v33, v34);
+ v35;
goto b8;
-b3: goto b1;
-b5: v4 = 1UL;
- goto b6;
+b12: if (vi != 30UL) goto b55;
+ v11 = 1UL;
+ goto b14;
+b55: v11 = 0UL;
+ goto b14;
+b16: if (vi != 29UL) goto b54;
+ v12 = 1UL;
+ goto b18;
+b54: v12 = 0UL;
+ goto b18;
+b20: if (vi != 21UL) goto b53;
+ v13 = 1UL;
+ goto b22;
+b53: v13 = 0UL;
+ goto b22;
+b24: if (vi != 17UL) goto b52;
+ v14 = 1UL;
+ goto b26;
+b52: v14 = 0UL;
+ goto b26;
+b28: if (vi != 14UL) goto b51;
+ v15 = 1UL;
+ goto b30;
+b51: v15 = 0UL;
+ goto b30;
+b32: if (vi != 13UL) goto b50;
+ v16 = 1UL;
+ goto b34;
+b50: v16 = 0UL;
+ goto b34;
+b36: if (vi != 12UL) goto b49;
+ v17 = 1UL;
+ goto b38;
+b49: v17 = 0UL;
+ goto b38;
+b40: if (vi != 11UL) goto b48;
+ v18 = 1UL;
+ goto b42;
+b48: v18 = 0UL;
+ goto b42;
+b44: if (vi != 10UL) goto b47;
+ v19 = 1UL;
+ goto b46;
+b47: v19 = 0UL;
+ goto b46;
+}
+u zx86_64_jmp(u va, u vop, u vl) {
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ v3 = (u)zreserve;
+ v4 = va;
+ v5 = 16UL;
+ v6 = ((u(*)())(v3))(v4, v5);
+ v6;
+ v7 = (u)zx86_64_op;
+ v8 = va;
+ v9 = vop;
+ v10 = ((u(*)())(v7))(v8, v9);
+ v10;
+ v11 = (u)zas_emit;
+ v12 = va;
+ v13 = 0UL;
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+ v15 = (u)zas_emit;
+ v16 = va;
+ v17 = 0UL;
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
+ v19 = (u)zas_emit;
+ v20 = va;
+ v21 = 0UL;
+ v22 = ((u(*)())(v19))(v20, v21);
+ v22;
+ v23 = (u)zas_emit;
+ v24 = va;
+ v25 = 0UL;
+ v26 = ((u(*)())(v23))(v24, v25);
+ v26;
+ v27 = (u)zaddfixup;
+ v28 = va;
+ v29 = vl;
+ v30 = 0UL;
+ v31 = ((u(*)())(v27))(v28, v29, v30);
+ v31;
+ return 0UL;
}
-u zoutput_irfuncptr(u vic, u vb, u vo) {
- u vd = 0;
- u v4 = 0;
+u zx86_64_kstart(u vc) {
+ u vhang = 0;
+ u vdo_iret = 0;
+ u vdo_ret = 0;
+ u vdone = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -43951,603 +49365,1320 @@ u zoutput_irfuncptr(u vic, u vb, u vo) {
u v31 = 0;
u v32 = 0;
u v33 = 0;
- v4 = (u)zfind;
- v5 = *(u*)(vic + 0UL);
- v6 = *(u*)(vo + 32UL);
- v7 = 0UL;
- v8 = 0UL;
- v9 = ((u(*)())v4)(v5, v6, v7, v8);
- vd = v9;
- if (!vd) goto b10;
- v11 = 0UL;
-b11: if (!v11) goto b6;
- v10 = 1UL;
-b8: if (!v10) goto b4;
- v13 = (u)zcdie;
- v14 = *(u*)(vic + 0UL);
- v15 = (u)"no such function";
- v16 = ((u(*)())v13)(v14, v15);
- v16;
-b2: v17 = (u)zreserve;
- v18 = *(u*)(vic + 8UL);
- v19 = 16UL;
- v20 = ((u(*)())v17)(v18, v19);
- v20;
- v21 = (u)zas_modrm;
- v22 = *(u*)(vic + 8UL);
- v23 = 141UL;
- v24 = 0UL;
- v25 = 16UL;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ u v156 = 0;
+ u v157 = 0;
+ u v158 = 0;
+ u v159 = 0;
+ u v160 = 0;
+ u v161 = 0;
+ u v162 = 0;
+ u v163 = 0;
+ u v164 = 0;
+ u v165 = 0;
+ u v166 = 0;
+ u v167 = 0;
+ u v168 = 0;
+ u v169 = 0;
+ u v170 = 0;
+ u v171 = 0;
+ u v172 = 0;
+ u v173 = 0;
+ u v174 = 0;
+ u v175 = 0;
+ u v176 = 0;
+ u v177 = 0;
+ u v178 = 0;
+ u v179 = 0;
+ u v180 = 0;
+ u v181 = 0;
+ u v182 = 0;
+ u v183 = 0;
+ u v184 = 0;
+ u v185 = 0;
+ u v186 = 0;
+ u v187 = 0;
+ u v188 = 0;
+ u v189 = 0;
+ u v190 = 0;
+ u v191 = 0;
+ u v192 = 0;
+ u v193 = 0;
+ u v194 = 0;
+ u v195 = 0;
+ u v196 = 0;
+ u v197 = 0;
+ u v198 = 0;
+ u v199 = 0;
+ u v200 = 0;
+ u v201 = 0;
+ u v202 = 0;
+ u v203 = 0;
+ u v204 = 0;
+ u v205 = 0;
+ u v206 = 0;
+ u v207 = 0;
+ u v208 = 0;
+ u v209 = 0;
+ u v210 = 0;
+ u v211 = 0;
+ u v212 = 0;
+ u v213 = 0;
+ u v214 = 0;
+ u v215 = 0;
+ u v216 = 0;
+ u v217 = 0;
+ u v218 = 0;
+ u v219 = 0;
+ u v220 = 0;
+ u v221 = 0;
+ u v222 = 0;
+ u v223 = 0;
+ u v224 = 0;
+ u v225 = 0;
+ u v226 = 0;
+ u v227 = 0;
+ u v228 = 0;
+ u v229 = 0;
+ u v230 = 0;
+ u v231 = 0;
+ u v232 = 0;
+ u v233 = 0;
+ u v234 = 0;
+ u v235 = 0;
+ u v236 = 0;
+ u v237 = 0;
+ u v238 = 0;
+ u v239 = 0;
+ u v240 = 0;
+ u v241 = 0;
+ u v242 = 0;
+ u v243 = 0;
+ u v244 = 0;
+ u v245 = 0;
+ u v246 = 0;
+ u v247 = 0;
+ u v248 = 0;
+ u v249 = 0;
+ u v250 = 0;
+ u v251 = 0;
+ u v252 = 0;
+ u v253 = 0;
+ u v254 = 0;
+ u v255 = 0;
+ u v256 = 0;
+ u v257 = 0;
+ u v258 = 0;
+ u v259 = 0;
+ u v260 = 0;
+ u v261 = 0;
+ u v262 = 0;
+ u v263 = 0;
+ u v264 = 0;
+ u v265 = 0;
+ u v266 = 0;
+ u v267 = 0;
+ u v268 = 0;
+ u v269 = 0;
+ u v270 = 0;
+ u v271 = 0;
+ u v272 = 0;
+ u v273 = 0;
+ u v274 = 0;
+ u v275 = 0;
+ u v276 = 0;
+ u v277 = 0;
+ u v278 = 0;
+ u v279 = 0;
+ u v280 = 0;
+ u v281 = 0;
+ u v282 = 0;
+ u v283 = 0;
+ u v284 = 0;
+ u v285 = 0;
+ u v286 = 0;
+ u v287 = 0;
+ u v288 = 0;
+ u v289 = 0;
+ u v290 = 0;
+ u v291 = 0;
+ u v292 = 0;
+ u v293 = 0;
+ u v294 = 0;
+ u v295 = 0;
+ u v296 = 0;
+ u v297 = 0;
+ u v298 = 0;
+ u v299 = 0;
+ u v300 = 0;
+ u v301 = 0;
+ u v302 = 0;
+ u v303 = 0;
+ u v304 = 0;
+ u v305 = 0;
+ u v306 = 0;
+ u v307 = 0;
+ u v308 = 0;
+ u v309 = 0;
+ u v310 = 0;
+ u v311 = 0;
+ u v312 = 0;
+ u v313 = 0;
+ u v314 = 0;
+ u v315 = 0;
+ u v316 = 0;
+ u v317 = 0;
+ u v318 = 0;
+ u v319 = 0;
+ u v320 = 0;
+ u v321 = 0;
+ u v322 = 0;
+ u v323 = 0;
+ u v324 = 0;
+ u v325 = 0;
+ u v326 = 0;
+ u v327 = 0;
+ u v328 = 0;
+ u v329 = 0;
+ u v330 = 0;
+ u v331 = 0;
+ u v332 = 0;
+ u v333 = 0;
+ u v334 = 0;
+ u v335 = 0;
+ u v336 = 0;
+ u v337 = 0;
+ u v338 = 0;
+ u v339 = 0;
+ u v340 = 0;
+ u v341 = 0;
+ u v342 = 0;
+ u v343 = 0;
+ u v344 = 0;
+ u v345 = 0;
+ u v346 = 0;
+ u v347 = 0;
+ u v348 = 0;
+ u v349 = 0;
+ u v350 = 0;
+ u v351 = 0;
+ u v352 = 0;
+ u v353 = 0;
+ u v354 = 0;
+ u v355 = 0;
+ u v356 = 0;
+ u v357 = 0;
+ u v358 = 0;
+ u v359 = 0;
+ u v360 = 0;
+ u v361 = 0;
+ u v362 = 0;
+ u v363 = 0;
+ u v364 = 0;
+ u v365 = 0;
+ u v366 = 0;
+ u v367 = 0;
+ u v368 = 0;
+ u v369 = 0;
+ u v370 = 0;
+ u v371 = 0;
+ u v372 = 0;
+ u v373 = 0;
+ u v374 = 0;
+ u v375 = 0;
+ u v376 = 0;
+ u v377 = 0;
+ u v378 = 0;
+ u v379 = 0;
+ u v380 = 0;
+ u v381 = 0;
+ u v382 = 0;
+ u v383 = 0;
+ u v384 = 0;
+ u v385 = 0;
+ u v386 = 0;
+ u v387 = 0;
+ u v388 = 0;
+ u v389 = 0;
+ u v390 = 0;
+ u v391 = 0;
+ u v392 = 0;
+ u v393 = 0;
+ u v394 = 0;
+ u v395 = 0;
+ u v396 = 0;
+ u v397 = 0;
+ u v398 = 0;
+ u v399 = 0;
+ u v400 = 0;
+ u v401 = 0;
+ u v402 = 0;
+ u v403 = 0;
+ u v404 = 0;
+ u v405 = 0;
+ u v406 = 0;
+ u v407 = 0;
+ u v408 = 0;
+ u v409 = 0;
+ u v410 = 0;
+ u v411 = 0;
+ u v412 = 0;
+ u v413 = 0;
+ u v414 = 0;
+ u v415 = 0;
+ u v416 = 0;
+ u v417 = 0;
+ u v418 = 0;
+ u v419 = 0;
+ u v420 = 0;
+ u v421 = 0;
+ u v422 = 0;
+ u v423 = 0;
+ u v424 = 0;
+ u v425 = 0;
+ u v426 = 0;
+ u v427 = 0;
+ u v428 = 0;
+ u v429 = 0;
+ u v430 = 0;
+ u v431 = 0;
+ u v432 = 0;
+ u v433 = 0;
+ u v434 = 0;
+ u v435 = 0;
+ u v436 = 0;
+ u v437 = 0;
+ u v438 = 0;
+ u v439 = 0;
+ u v440 = 0;
+ u v441 = 0;
+ u v442 = 0;
+ u v443 = 0;
+ u v444 = 0;
+ u v445 = 0;
+ u v446 = 0;
+ u v447 = 0;
+ u v448 = 0;
+ u v449 = 0;
+ u v450 = 0;
+ u v451 = 0;
+ u v452 = 0;
+ u v453 = 0;
+ u v454 = 0;
+ u v455 = 0;
+ u v456 = 0;
+ u v457 = 0;
+ u v458 = 0;
+ u v459 = 0;
+ u v460 = 0;
+ u v461 = 0;
+ u v462 = 0;
+ u v463 = 0;
+ u v464 = 0;
+ u v465 = 0;
+ u v466 = 0;
+ u v467 = 0;
+ u v468 = 0;
+ u v469 = 0;
+ u v470 = 0;
+ u v471 = 0;
+ u v472 = 0;
+ u v473 = 0;
+ u v474 = 0;
+ u v475 = 0;
+ u v476 = 0;
+ u v477 = 0;
+ u v478 = 0;
+ u v479 = 0;
+ u v480 = 0;
+ u v481 = 0;
+ u v482 = 0;
+ u v483 = 0;
+ u v484 = 0;
+ u v485 = 0;
+ u v486 = 0;
+ u v487 = 0;
+ u v488 = 0;
+ u v489 = 0;
+ u v490 = 0;
+ u v491 = 0;
+ u v492 = 0;
+ u v493 = 0;
+ u v494 = 0;
+ u v495 = 0;
+ u v496 = 0;
+ u v497 = 0;
+ u v498 = 0;
+ u v499 = 0;
+ u v500 = 0;
+ u v501 = 0;
+ u v502 = 0;
+ u v503 = 0;
+ u v504 = 0;
+ u v505 = 0;
+ u v506 = 0;
+ u v507 = 0;
+ u v508 = 0;
+ u v509 = 0;
+ u v510 = 0;
+ u v511 = 0;
+ u v512 = 0;
+ u v513 = 0;
+ u v514 = 0;
+ u v515 = 0;
+ u v516 = 0;
+ u v517 = 0;
+ u v518 = 0;
+ u v519 = 0;
+ u v520 = 0;
+ u v521 = 0;
+ u v522 = 0;
+ u v523 = 0;
+ u v524 = 0;
+ u v525 = 0;
+ u v526 = 0;
+ u v527 = 0;
+ u v528 = 0;
+ u v529 = 0;
+ u v530 = 0;
+ u v531 = 0;
+ u v532 = 0;
+ u v533 = 0;
+ u v534 = 0;
+ u v535 = 0;
+ u v536 = 0;
+ u v537 = 0;
+ u v538 = 0;
+ u v539 = 0;
+ u v540 = 0;
+ u v541 = 0;
+ u v542 = 0;
+ u v543 = 0;
+ u v544 = 0;
+ u v545 = 0;
+ u v546 = 0;
+ u v547 = 0;
+ u v548 = 0;
+ u v549 = 0;
+ u v550 = 0;
+ u v551 = 0;
+ u v552 = 0;
+ u v553 = 0;
+ u v554 = 0;
+ u v555 = 0;
+ u v556 = 0;
+ u v557 = 0;
+ u v558 = 0;
+ u v559 = 0;
+ u v560 = 0;
+ u v561 = 0;
+ u v562 = 0;
+ u v563 = 0;
+ u v564 = 0;
+ u v565 = 0;
+ u v566 = 0;
+ u v567 = 0;
+ u v568 = 0;
+ u v569 = 0;
+ u v570 = 0;
+ u v571 = 0;
+ u v572 = 0;
+ u v573 = 0;
+ u v574 = 0;
+ u v575 = 0;
+ u v576 = 0;
+ u v577 = 0;
+ u v578 = 0;
+ u v579 = 0;
+ u v580 = 0;
+ u v581 = 0;
+ u v582 = 0;
+ u v583 = 0;
+ u v584 = 0;
+ u v585 = 0;
+ u v586 = 0;
+ u v587 = 0;
+ u v588 = 0;
+ u v589 = 0;
+ u v590 = 0;
+ u v591 = 0;
+ u v592 = 0;
+ u v593 = 0;
+ u v594 = 0;
+ u v595 = 0;
+ u v596 = 0;
+ u v597 = 0;
+ u v598 = 0;
+ u v599 = 0;
+ u v600 = 0;
+ u v601 = 0;
+ u v602 = 0;
+ u v603 = 0;
+ u v604 = 0;
+ u v605 = 0;
+ u v606 = 0;
+ u v607 = 0;
+ u v608 = 0;
+ u v609 = 0;
+ u v610 = 0;
+ u v611 = 0;
+ u v612 = 0;
+ u v613 = 0;
+ u v614 = 0;
+ u v615 = 0;
+ u v616 = 0;
+ u v617 = 0;
+ u v618 = 0;
+ u v619 = 0;
+ u v620 = 0;
+ u v621 = 0;
+ u v622 = 0;
+ u v623 = 0;
+ u v624 = 0;
+ *(u*)(vc + 48UL) = 1UL;
+ v5 = (u)zmklabel;
+ v6 = vc;
+ v7 = ((u(*)())(v5))(v6);
+ vhang = v7;
+ v8 = (u)zmklabel;
+ v9 = vc;
+ v10 = ((u(*)())(v8))(v9);
+ vdo_iret = v10;
+ v11 = (u)zmklabel;
+ v12 = vc;
+ v13 = ((u(*)())(v11))(v12);
+ vdo_ret = v13;
+ v14 = (u)zmklabel;
+ v15 = vc;
+ v16 = ((u(*)())(v14))(v15);
+ vdone = v16;
+ v17 = (u)zx86_64_modri;
+ v18 = vc;
+ v19 = 199UL;
+ v20 = 2UL;
+ v21 = 732803074UL;
+ v22 = ((u(*)())(v17))(v18, v19, v20, v21);
+ v22;
+ v23 = (u)zx86_64_modrr;
+ v24 = vc;
+ v25 = 59UL;
v26 = 0UL;
- v27 = 0UL;
- v28 = 128UL;
- v29 = ((u(*)())v21)(v22, v23, v24, v25, v26, v27, v28);
- v29;
- v30 = (u)zaddfixup;
- v31 = *(u*)(vic + 8UL);
- v32 = *(u*)(vd + 88UL);
- v33 = ((u(*)())v30)(v31, v32);
+ v27 = 2UL;
+ v28 = ((u(*)())(v23))(v24, v25, v26, v27);
+ v28;
+ v29 = (u)zx86_64_jmp;
+ v30 = vc;
+ v31 = 3968UL + 5UL;
+ v32 = vhang;
+ v33 = ((u(*)())(v29))(v30, v31, v32);
v33;
- return 0UL;
-b4: goto b2;
-b6: if (!*(u*)(vd + 72UL)) goto b14;
- v12 = 0UL;
-b15: if (!v12) goto b12;
- v10 = 1UL;
- goto b8;
-b12: v10 = 0UL;
- goto b8;
-b14: v12 = 1UL;
- goto b15;
-b10: v11 = 1UL;
- goto b11;
-}
-u zoutput_irretval(u vic, u vb, u vo) {
- u vi = 0;
- u vop = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- vop = 0UL;
- vi = 0UL;
-b1: if (vi != *(u*)(vb + 16UL)) goto b5;
- return 0UL;
-b5: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
- if (*(u*)(vop + 0UL) != 7UL) goto b8;
- if (*(u*)(*(u*)(vop + 48UL) + 0UL) != 1UL) goto b11;
- return 0UL;
-b11: v5 = (u)zas_modrr;
- v6 = *(u*)(vic + 8UL);
- v7 = 139UL;
- v8 = 7UL;
- v9 = 0UL;
- v10 = ((u(*)())v5)(v6, v7, v8, v9);
- v10;
- if (*(u*)(*(u*)(vop + 8UL) + 0UL) != 5UL) goto b15;
- v11 = (u)zoutput_irexpr;
- v12 = vic;
- v13 = vb;
- v14 = *(u*)(*(u*)(vop + 8UL) + 8UL);
- v15 = ((u(*)())v11)(v12, v13, v14);
- v15;
-b13: if (*(u*)(*(u*)(vop + 48UL) + 0UL) != 3UL) goto b23;
- v28 = (u)zas_modrm;
- v29 = *(u*)(vic + 8UL);
- v30 = 136UL;
- v31 = 7UL;
- v32 = 0UL;
- v33 = 0UL;
- v34 = 0UL;
- v35 = 0UL;
- v36 = ((u(*)())v28)(v29, v30, v31, v32, v33, v34, v35);
- v36;
-b21: return 0UL;
-b23: v37 = (u)ztype_isprim;
- v38 = *(u*)(vop + 48UL);
- v39 = ((u(*)())v37)(v38);
- if (!v39) goto b26;
- v40 = (u)zas_modrm;
- v41 = *(u*)(vic + 8UL);
- v42 = 137UL;
- v43 = 7UL;
- v44 = 0UL;
- v45 = 0UL;
- v46 = 0UL;
- v47 = 0UL;
- v48 = ((u(*)())v40)(v41, v42, v43, v44, v45, v46, v47);
- v48;
- goto b21;
-b26: v49 = (u)zcdie;
- v50 = *(u*)(vic + 0UL);
- v51 = (u)"invalid store";
- v52 = ((u(*)())v49)(v50, v51);
- v52;
- goto b21;
-b15: if (*(u*)(*(u*)(vop + 8UL) + 0UL) != 0UL) goto b18;
- v16 = (u)zas_modrm;
- v17 = *(u*)(vic + 8UL);
- v18 = 141UL;
- v19 = 0UL;
- v20 = 5UL;
- v21 = 0UL;
- v22 = 0UL;
- v23 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(*(u*)(vop + 8UL) + 24UL) * 8UL) + 40UL);
- v24 = ((u(*)())v16)(v17, v18, v19, v20, v21, v22, v23);
- v24;
- goto b13;
-b18: v25 = (u)zdie;
- v26 = (u)"invalid store";
- v27 = ((u(*)())v25)(v26);
- v27;
- goto b13;
-b8: vi = vi + 1UL;
- goto b1;
-}
-u zoutput_irstmt(u vic, u vb, u vo) {
- u vkind = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- u v134 = 0;
- u v135 = 0;
- u v136 = 0;
- u v137 = 0;
- u v138 = 0;
- u v139 = 0;
- u v140 = 0;
- u v141 = 0;
- u v142 = 0;
- u v143 = 0;
- u v144 = 0;
- u v145 = 0;
- u v146 = 0;
- u v147 = 0;
- u v148 = 0;
- u v149 = 0;
- u v150 = 0;
- u v151 = 0;
- u v152 = 0;
- u v153 = 0;
- u v154 = 0;
- u v155 = 0;
- u v156 = 0;
- u v157 = 0;
- u v158 = 0;
- u v159 = 0;
- u v160 = 0;
- u v161 = 0;
- u v162 = 0;
- u v163 = 0;
- u v164 = 0;
- u v165 = 0;
- u v166 = 0;
- u v167 = 0;
- u v168 = 0;
- u v169 = 0;
- u v170 = 0;
- *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vo + 64UL);
- *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vo + 72UL);
- *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vo + 80UL);
- *(u*)(*(u*)(vic + 8UL) + 88UL) = *(u*)(vo + 64UL);
- *(u*)(*(u*)(vic + 8UL) + 96UL) = *(u*)(vo + 72UL);
- vkind = *(u*)(vo + 0UL);
- if (vkind != 6UL) goto b3;
- if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 5UL) goto b6;
- v4 = (u)zoutput_irexpr;
- v5 = vic;
- v6 = vb;
- v7 = *(u*)(*(u*)(vo + 8UL) + 8UL);
- v8 = ((u(*)())v4)(v5, v6, v7);
- v8;
-b4: v21 = (u)zas_opr;
- v22 = *(u*)(vic + 8UL);
- v23 = 80UL;
- v24 = 0UL;
- v25 = ((u(*)())v21)(v22, v23, v24);
- v25;
- v26 = (u)zoutput_irexpr;
- v27 = vic;
- v28 = vb;
- v29 = *(u*)(vo + 16UL);
- v30 = ((u(*)())v26)(v27, v28, v29);
- v30;
- v31 = (u)zas_opr;
- v32 = *(u*)(vic + 8UL);
- v33 = 88UL;
- v34 = 7UL;
- v35 = ((u(*)())v31)(v32, v33, v34);
- v35;
- if (*(u*)(*(u*)(vo + 48UL) + 0UL) != 3UL) goto b17;
- v36 = (u)zas_modrm;
- v37 = *(u*)(vic + 8UL);
- v38 = 136UL;
- v39 = 0UL;
- v40 = 7UL;
- v41 = 0UL;
- v42 = 0UL;
- v43 = 0UL;
- v44 = ((u(*)())v36)(v37, v38, v39, v40, v41, v42, v43);
- v44;
-b15:b1: return 0UL;
-b17: v45 = (u)ztype_isprim;
- v46 = *(u*)(vo + 48UL);
- v47 = ((u(*)())v45)(v46);
- if (!v47) goto b20;
- v48 = (u)zas_modrm;
- v49 = *(u*)(vic + 8UL);
- v50 = 137UL;
- v51 = 0UL;
- v52 = 7UL;
- v53 = 0UL;
- v54 = 0UL;
+ v34 = (u)zx86_64_modri;
+ v35 = vc;
+ v36 = 199UL;
+ v37 = 4UL;
+ v38 = 3145728UL;
+ v39 = ((u(*)())(v34))(v35, v36, v37, v38);
+ v39;
+ v40 = (u)zx86_64_modri;
+ v41 = vc;
+ v42 = 262273UL;
+ v43 = 4UL;
+ v44 = -4096UL;
+ v45 = ((u(*)())(v40))(v41, v42, v43, v44);
+ v45;
+ v46 = (u)zx86_64_modri;
+ v47 = vc;
+ v48 = 327809UL;
+ v49 = 4UL;
+ v50 = 4096UL;
+ v51 = ((u(*)())(v46))(v47, v48, v49, v50);
+ v51;
+ v52 = (u)zx86_64_modri;
+ v53 = vc;
+ v54 = 199UL;
v55 = 0UL;
- v56 = ((u(*)())v48)(v49, v50, v51, v52, v53, v54, v55);
- v56;
- goto b15;
-b20: v57 = (u)zcdie;
- v58 = *(u*)(vic + 0UL);
- v59 = (u)"invalid store";
- v60 = ((u(*)())v57)(v58, v59);
- v60;
- goto b15;
-b6: if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 0UL) goto b9;
- v9 = (u)zas_modrm;
- v10 = *(u*)(vic + 8UL);
- v11 = 141UL;
- v12 = 0UL;
- v13 = 5UL;
- v14 = 0UL;
- v15 = 0UL;
- v16 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(*(u*)(vo + 8UL) + 24UL) * 8UL) + 40UL);
- v17 = ((u(*)())v9)(v10, v11, v12, v13, v14, v15, v16);
- v17;
- goto b4;
-b9: v18 = (u)zdie;
- v19 = (u)"invalid store";
- v20 = ((u(*)())v18)(v19);
- v20;
- goto b4;
-b3: if (vkind != 7UL) goto b25;
- goto b1;
-b25: if (vkind != 8UL) goto b27;
- goto b1;
-b27: if (vkind != 27UL) goto b29;
- if ((s)*(u*)(vo + 24UL) <= (s)6UL) goto b32;
- v61 = (u)zas_modri;
- v62 = *(u*)(vic + 8UL);
- v63 = 327809UL;
- v64 = 4UL;
- v65 = (*(u*)(vo + 24UL) - 6UL) * 8UL;
- v66 = ((u(*)())v61)(v62, v63, v64, v65);
- v66;
-b30: v67 = (u)zoutput_irargs;
- v68 = vic;
- v69 = vb;
- v70 = vo;
- v71 = ((u(*)())v67)(v68, v69, v70);
- v71;
- if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 2UL) goto b37;
- v72 = (u)zoutput_ircall;
- v73 = vic;
- v74 = vb;
- v75 = *(u*)(vo + 8UL);
- v76 = ((u(*)())v72)(v73, v74, v75);
- v76;
-b35: if ((s)*(u*)(vo + 24UL) <= (s)6UL) goto b43;
- v87 = (u)zas_modri;
- v88 = *(u*)(vic + 8UL);
- v89 = 129UL;
- v90 = 4UL;
- v91 = (*(u*)(vo + 24UL) - 6UL) * 8UL;
- v92 = ((u(*)())v87)(v88, v89, v90, v91);
- v92;
-b41: v93 = (u)zoutput_irretval;
- v94 = vic;
- v95 = vb;
- v96 = vo;
- v97 = ((u(*)())v93)(v94, v95, v96);
- v97;
- if (!*(u*)(*(u*)(vb + 56UL) + 80UL)) goto b48;
- v98 = (u)zas_jmp;
- v99 = *(u*)(vic + 8UL);
- v100 = 233UL;
- v101 = *(u*)(*(u*)(vb + 56UL) + 72UL);
- v102 = ((u(*)())v98)(v99, v100, v101);
- v102;
-b46: return 0UL;
-b48: v103 = (u)zoutput_irblock;
- v104 = vic;
- v105 = *(u*)(vb + 56UL);
- v106 = ((u(*)())v103)(v104, v105);
- v106;
- goto b46;
-b43: goto b41;
-b37: v77 = (u)zoutput_irexpr;
- v78 = vic;
- v79 = vb;
- v80 = *(u*)(vo + 8UL);
- v81 = ((u(*)())v77)(v78, v79, v80);
+ v56 = 131UL;
+ v57 = ((u(*)())(v52))(v53, v54, v55, v56);
+ v57;
+ v58 = (u)zx86_64_modri;
+ v59 = vc;
+ v60 = 199UL;
+ v61 = 2UL;
+ v62 = 0UL;
+ v63 = ((u(*)())(v58))(v59, v60, v61, v62);
+ v63;
+ v64 = (u)zx86_64_modrm;
+ v65 = vc;
+ v66 = 137UL;
+ v67 = 0UL;
+ v68 = 4UL;
+ v69 = 0UL;
+ v70 = 0UL;
+ v71 = 0UL;
+ v72 = ((u(*)())(v64))(v65, v66, v67, v68, v69, v70, v71);
+ v72;
+ v73 = (u)zx86_64_modrm;
+ v74 = vc;
+ v75 = 137UL;
+ v76 = 2UL;
+ v77 = 4UL;
+ v78 = 0UL;
+ v79 = 0UL;
+ v80 = 4UL;
+ v81 = ((u(*)())(v73))(v74, v75, v76, v77, v78, v79, v80);
v81;
- v82 = (u)zas_modr;
- v83 = *(u*)(vic + 8UL);
- v84 = 131327UL;
+ v82 = (u)zx86_64_modrm;
+ v83 = vc;
+ v84 = 137UL;
v85 = 0UL;
- v86 = ((u(*)())v82)(v83, v84, v85);
- v86;
- goto b35;
-b32: goto b30;
-b29: if (vkind != 28UL) goto b52;
- if (!*(u*)(*(u*)(vb + 56UL) + 80UL)) goto b55;
- v107 = (u)zas_jmp;
- v108 = *(u*)(vic + 8UL);
- v109 = 233UL;
- v110 = *(u*)(*(u*)(vb + 56UL) + 72UL);
- v111 = ((u(*)())v107)(v108, v109, v110);
+ v86 = 4UL;
+ v87 = 0UL;
+ v88 = 0UL;
+ v89 = 510UL * 8UL + 0UL;
+ v90 = ((u(*)())(v82))(v83, v84, v85, v86, v87, v88, v89);
+ v90;
+ v91 = (u)zx86_64_modrm;
+ v92 = vc;
+ v93 = 137UL;
+ v94 = 2UL;
+ v95 = 4UL;
+ v96 = 0UL;
+ v97 = 0UL;
+ v98 = 510UL * 8UL + 4UL;
+ v99 = ((u(*)())(v91))(v92, v93, v94, v95, v96, v97, v98);
+ v99;
+ v100 = (u)zx86_64_modrr;
+ v101 = vc;
+ v102 = 139UL;
+ v103 = 0UL;
+ v104 = 4UL;
+ v105 = ((u(*)())(v100))(v101, v102, v103, v104);
+ v105;
+ v106 = (u)zx86_64_modri;
+ v107 = vc;
+ v108 = 327809UL;
+ v109 = 4UL;
+ v110 = 4096UL;
+ v111 = ((u(*)())(v106))(v107, v108, v109, v110);
v111;
-b53: return 0UL;
-b55: v112 = (u)zoutput_irblock;
- v113 = vic;
- v114 = *(u*)(vb + 56UL);
- v115 = ((u(*)())v112)(v113, v114);
- v115;
- goto b53;
-b52: if (vkind != 29UL) goto b59;
- v116 = (u)zoutput_irexpr;
- v117 = vic;
- v118 = vb;
- v119 = *(u*)(vo + 8UL);
- v120 = ((u(*)())v116)(v117, v118, v119);
- v120;
- v121 = (u)zas_modrr;
- v122 = *(u*)(vic + 8UL);
- v123 = 133UL;
- v124 = 0UL;
- v125 = 0UL;
- v126 = ((u(*)())v121)(v122, v123, v124, v125);
- v126;
- v127 = (u)zas_jmp;
- v128 = *(u*)(vic + 8UL);
- v129 = 3968UL + 4UL;
- v130 = *(u*)(*(u*)(vb + 64UL) + 72UL);
- v131 = ((u(*)())v127)(v128, v129, v130);
- v131;
- if (!*(u*)(*(u*)(vb + 56UL) + 80UL)) goto b65;
- v132 = (u)zas_jmp;
- v133 = *(u*)(vic + 8UL);
- v134 = 3968UL + 5UL;
- v135 = *(u*)(*(u*)(vb + 56UL) + 72UL);
- v136 = ((u(*)())v132)(v133, v134, v135);
- v136;
-b63: if (!*(u*)(*(u*)(vb + 64UL) + 80UL)) goto b72;
- v141 = 0UL;
-b73: if (!v141) goto b70;
- v142 = (u)zoutput_irblock;
- v143 = vic;
- v144 = *(u*)(vb + 64UL);
- v145 = ((u(*)())v142)(v143, v144);
- v145;
-b68: return 0UL;
-b70: goto b68;
-b72: v141 = 1UL;
- goto b73;
-b65: v137 = (u)zoutput_irblock;
- v138 = vic;
- v139 = *(u*)(vb + 56UL);
- v140 = ((u(*)())v137)(v138, v139);
- v140;
- goto b63;
-b59: if (vkind != 30UL) goto b76;
- if (!*(u*)(vo + 8UL)) goto b79;
- v146 = (u)zoutput_irexpr;
- v147 = vic;
- v148 = vb;
- v149 = *(u*)(vo + 8UL);
- v150 = ((u(*)())v146)(v147, v148, v149);
+ v112 = (u)zx86_64_modri;
+ v113 = vc;
+ v114 = 65665UL;
+ v115 = 0UL;
+ v116 = 3UL;
+ v117 = ((u(*)())(v112))(v113, v114, v115, v116);
+ v117;
+ v118 = (u)zx86_64_modri;
+ v119 = vc;
+ v120 = 199UL;
+ v121 = 2UL;
+ v122 = 0UL;
+ v123 = ((u(*)())(v118))(v119, v120, v121, v122);
+ v123;
+ v124 = (u)zx86_64_modrm;
+ v125 = vc;
+ v126 = 137UL;
+ v127 = 0UL;
+ v128 = 4UL;
+ v129 = 0UL;
+ v130 = 0UL;
+ v131 = 0UL;
+ v132 = ((u(*)())(v124))(v125, v126, v127, v128, v129, v130, v131);
+ v132;
+ v133 = (u)zx86_64_modrm;
+ v134 = vc;
+ v135 = 137UL;
+ v136 = 2UL;
+ v137 = 4UL;
+ v138 = 0UL;
+ v139 = 0UL;
+ v140 = 4UL;
+ v141 = ((u(*)())(v133))(v134, v135, v136, v137, v138, v139, v140);
+ v141;
+ v142 = (u)zx86_64_modrm;
+ v143 = vc;
+ v144 = 137UL;
+ v145 = 0UL;
+ v146 = 4UL;
+ v147 = 0UL;
+ v148 = 0UL;
+ v149 = 511UL * 8UL + 0UL;
+ v150 = ((u(*)())(v142))(v143, v144, v145, v146, v147, v148, v149);
v150;
-b77: v151 = (u)zas_modrr;
- v152 = *(u*)(vic + 8UL);
- v153 = 139UL;
- v154 = 4UL;
- v155 = 5UL;
- v156 = ((u(*)())v151)(v152, v153, v154, v155);
- v156;
- v157 = (u)zas_opr;
- v158 = *(u*)(vic + 8UL);
- v159 = 88UL;
- v160 = 5UL;
- v161 = ((u(*)())v157)(v158, v159, v160);
- v161;
- v162 = (u)zas_op;
- v163 = *(u*)(vic + 8UL);
- v164 = 195UL;
- v165 = ((u(*)())v162)(v163, v164);
+ v151 = (u)zx86_64_modrm;
+ v152 = vc;
+ v153 = 137UL;
+ v154 = 2UL;
+ v155 = 4UL;
+ v156 = 0UL;
+ v157 = 0UL;
+ v158 = 511UL * 8UL + 4UL;
+ v159 = ((u(*)())(v151))(v152, v153, v154, v155, v156, v157, v158);
+ v159;
+ v160 = (u)zx86_64_modrr;
+ v161 = vc;
+ v162 = 3874UL;
+ v163 = 3UL;
+ v164 = 4UL;
+ v165 = ((u(*)())(v160))(v161, v162, v163, v164);
v165;
- goto b1;
-b79: goto b77;
-b76: v166 = (u)zoutput_irexpr;
- v167 = vic;
- v168 = vb;
- v169 = vo;
- v170 = ((u(*)())v166)(v167, v168, v169);
- v170;
- goto b1;
+ v166 = (u)zx86_64_modri;
+ v167 = vc;
+ v168 = 327809UL;
+ v169 = 4UL;
+ v170 = 64UL;
+ v171 = ((u(*)())(v166))(v167, v168, v169, v170);
+ v171;
+ v172 = (u)zx86_64_modrr;
+ v173 = vc;
+ v174 = 139UL;
+ v175 = 5UL;
+ v176 = 4UL;
+ v177 = ((u(*)())(v172))(v173, v174, v175, v176);
+ v177;
+ v178 = (u)zx86_64_modri;
+ v179 = vc;
+ v180 = 199UL;
+ v181 = 0UL;
+ v182 = 0UL;
+ v183 = ((u(*)())(v178))(v179, v180, v181, v182);
+ v183;
+ v184 = (u)zx86_64_modrm;
+ v185 = vc;
+ v186 = 137UL;
+ v187 = 0UL;
+ v188 = 5UL;
+ v189 = 0UL;
+ v190 = 0UL;
+ v191 = 8UL;
+ v192 = ((u(*)())(v184))(v185, v186, v187, v188, v189, v190, v191);
+ v192;
+ v193 = (u)zx86_64_modri;
+ v194 = vc;
+ v195 = 199UL;
+ v196 = 0UL;
+ v197 = 0UL;
+ v198 = ((u(*)())(v193))(v194, v195, v196, v197);
+ v198;
+ v199 = (u)zx86_64_modrm;
+ v200 = vc;
+ v201 = 137UL;
+ v202 = 0UL;
+ v203 = 5UL;
+ v204 = 0UL;
+ v205 = 0UL;
+ v206 = 12UL;
+ v207 = ((u(*)())(v199))(v200, v201, v202, v203, v204, v205, v206);
+ v207;
+ v208 = (u)zx86_64_modri;
+ v209 = vc;
+ v210 = 199UL;
+ v211 = 0UL;
+ v212 = 0UL;
+ v213 = ((u(*)())(v208))(v209, v210, v211, v212);
+ v213;
+ v214 = (u)zx86_64_modrm;
+ v215 = vc;
+ v216 = 137UL;
+ v217 = 0UL;
+ v218 = 5UL;
+ v219 = 0UL;
+ v220 = 0UL;
+ v221 = 16UL;
+ v222 = ((u(*)())(v214))(v215, v216, v217, v218, v219, v220, v221);
+ v222;
+ v223 = (u)zx86_64_modri;
+ v224 = vc;
+ v225 = 199UL;
+ v226 = 0UL;
+ v227 = 2136064UL;
+ v228 = ((u(*)())(v223))(v224, v225, v226, v227);
+ v228;
+ v229 = (u)zx86_64_modrm;
+ v230 = vc;
+ v231 = 137UL;
+ v232 = 0UL;
+ v233 = 5UL;
+ v234 = 0UL;
+ v235 = 0UL;
+ v236 = 20UL;
+ v237 = ((u(*)())(v229))(v230, v231, v232, v233, v234, v235, v236);
+ v237;
+ v238 = (u)zx86_64_modri;
+ v239 = vc;
+ v240 = 199UL;
+ v241 = 0UL;
+ v242 = 0UL;
+ v243 = ((u(*)())(v238))(v239, v240, v241, v242);
+ v243;
+ v244 = (u)zx86_64_modrm;
+ v245 = vc;
+ v246 = 137UL;
+ v247 = 0UL;
+ v248 = 5UL;
+ v249 = 0UL;
+ v250 = 0UL;
+ v251 = 24UL;
+ v252 = ((u(*)())(v244))(v245, v246, v247, v248, v249, v250, v251);
+ v252;
+ v253 = (u)zx86_64_modri;
+ v254 = vc;
+ v255 = 199UL;
+ v256 = 0UL;
+ v257 = 37376UL;
+ v258 = ((u(*)())(v253))(v254, v255, v256, v257);
+ v258;
+ v259 = (u)zx86_64_modrm;
+ v260 = vc;
+ v261 = 137UL;
+ v262 = 0UL;
+ v263 = 5UL;
+ v264 = 0UL;
+ v265 = 0UL;
+ v266 = 28UL;
+ v267 = ((u(*)())(v259))(v260, v261, v262, v263, v264, v265, v266);
+ v267;
+ v268 = (u)zx86_64_modri;
+ v269 = vc;
+ v270 = 199UL;
+ v271 = 0UL;
+ v272 = 23UL;
+ v273 = ((u(*)())(v268))(v269, v270, v271, v272);
+ v273;
+ v274 = (u)zx86_64_modrm;
+ v275 = vc;
+ v276 = 137UL;
+ v277 = 0UL;
+ v278 = 5UL;
+ v279 = 0UL;
+ v280 = 0UL;
+ v281 = 0UL;
+ v282 = ((u(*)())(v274))(v275, v276, v277, v278, v279, v280, v281);
+ v282;
+ v283 = (u)zx86_64_modrm;
+ v284 = vc;
+ v285 = 141UL;
+ v286 = 0UL;
+ v287 = 5UL;
+ v288 = 0UL;
+ v289 = 0UL;
+ v290 = 8UL;
+ v291 = ((u(*)())(v283))(v284, v285, v286, v287, v288, v289, v290);
+ v291;
+ v292 = (u)zx86_64_modrm;
+ v293 = vc;
+ v294 = 137UL;
+ v295 = 0UL;
+ v296 = 5UL;
+ v297 = 0UL;
+ v298 = 0UL;
+ v299 = 2UL;
+ v300 = ((u(*)())(v292))(v293, v294, v295, v296, v297, v298, v299);
+ v300;
+ v301 = (u)zx86_64_modm;
+ v302 = vc;
+ v303 = 134913UL;
+ v304 = 5UL;
+ v305 = 0UL;
+ v306 = 0UL;
+ v307 = 0UL;
+ v308 = ((u(*)())(v301))(v302, v303, v304, v305, v306, v307);
+ v308;
+ v309 = (u)zx86_64_modri;
+ v310 = vc;
+ v311 = 199UL;
+ v312 = 0UL;
+ v313 = 0UL;
+ v314 = ((u(*)())(v309))(v310, v311, v312, v313);
+ v314;
+ v315 = (u)zx86_64_modr;
+ v316 = vc;
+ v317 = 134912UL;
+ v318 = 0UL;
+ v319 = ((u(*)())(v315))(v316, v317, v318);
+ v319;
+ v320 = (u)zx86_64_modm;
+ v321 = vc;
+ v322 = 200449UL;
+ v323 = 5UL;
+ v324 = 0UL;
+ v325 = 0UL;
+ v326 = 8UL;
+ v327 = ((u(*)())(v320))(v321, v322, v323, v324, v325, v326);
+ v327;
+ v328 = (u)zx86_64_modri;
+ v329 = vc;
+ v330 = 199UL;
+ v331 = 0UL;
+ v332 = 160UL;
+ v333 = ((u(*)())(v328))(v329, v330, v331, v332);
+ v333;
+ v334 = (u)zx86_64_modrr;
+ v335 = vc;
+ v336 = 3874UL;
+ v337 = 4UL;
+ v338 = 0UL;
+ v339 = ((u(*)())(v334))(v335, v336, v337, v338);
+ v339;
+ v340 = (u)zx86_64_modri;
+ v341 = vc;
+ v342 = 199UL;
+ v343 = 1UL;
+ v344 = ((-1UL << 32UL) + (192UL << 24UL)) + 128UL;
+ v345 = ((u(*)())(v340))(v341, v342, v343, v344);
+ v345;
+ v346 = (u)zx86_64_op;
+ v347 = vc;
+ v348 = 3890UL;
+ v349 = ((u(*)())(v346))(v347, v348);
+ v349;
+ v350 = (u)zx86_64_modri;
+ v351 = vc;
+ v352 = 65665UL;
+ v353 = 0UL;
+ v354 = 256UL;
+ v355 = ((u(*)())(v350))(v351, v352, v353, v354);
+ v355;
+ v356 = (u)zx86_64_op;
+ v357 = vc;
+ v358 = 3888UL;
+ v359 = ((u(*)())(v356))(v357, v358);
+ v359;
+ v360 = (u)zx86_64_modrr;
+ v361 = vc;
+ v362 = 3872UL;
+ v363 = 0UL;
+ v364 = 0UL;
+ v365 = ((u(*)())(v360))(v361, v362, v363, v364);
+ v365;
+ v366 = (u)zx86_64_modri;
+ v367 = vc;
+ v368 = 65665UL;
+ v369 = 0UL;
+ v370 = -2147483648UL | 1UL;
+ v371 = ((u(*)())(v366))(v367, v368, v369, v370);
+ v371;
+ v372 = (u)zx86_64_modrr;
+ v373 = vc;
+ v374 = 3874UL;
+ v375 = 0UL;
+ v376 = 0UL;
+ v377 = ((u(*)())(v372))(v373, v374, v375, v376);
+ v377;
+ v378 = (u)zx86_64_modri;
+ v379 = vc;
+ v380 = 199UL;
+ v381 = 0UL;
+ v382 = 0UL;
+ v383 = ((u(*)())(v378))(v379, v380, v381, v382);
+ v383;
+ v384 = (u)zx86_64_opr;
+ v385 = vc;
+ v386 = 80UL;
+ v387 = 0UL;
+ v388 = ((u(*)())(v384))(v385, v386, v387);
+ v388;
+ v389 = (u)zx86_64_modri;
+ v390 = vc;
+ v391 = 199UL;
+ v392 = 0UL;
+ v393 = 8UL;
+ v394 = ((u(*)())(v389))(v390, v391, v392, v393);
+ v394;
+ v395 = (u)zx86_64_opr;
+ v396 = vc;
+ v397 = 80UL;
+ v398 = 0UL;
+ v399 = ((u(*)())(v395))(v396, v397, v398);
+ v399;
+ v400 = (u)zx86_64_jmp;
+ v401 = vc;
+ v402 = 232UL;
+ v403 = vdo_iret;
+ v404 = ((u(*)())(v400))(v401, v402, v403);
+ v404;
+ *(u*)(vc + 48UL) = 0UL;
+ v405 = (u)zx86_64_jmp;
+ v406 = vc;
+ v407 = 232UL;
+ v408 = vdo_ret;
+ v409 = ((u(*)())(v405))(v406, v407, v408);
+ v409;
+ v410 = (u)zx86_64_modri;
+ v411 = vc;
+ v412 = 65665UL;
+ v413 = 5UL;
+ v414 = -2147483648UL;
+ v415 = ((u(*)())(v410))(v411, v412, v413, v414);
+ v415;
+ v416 = (u)zx86_64_modri;
+ v417 = vc;
+ v418 = 199UL;
+ v419 = 0UL;
+ v420 = 23UL;
+ v421 = ((u(*)())(v416))(v417, v418, v419, v420);
+ v421;
+ v422 = (u)zx86_64_modrm;
+ v423 = vc;
+ v424 = 137UL;
+ v425 = 0UL;
+ v426 = 5UL;
+ v427 = 0UL;
+ v428 = 0UL;
+ v429 = 0UL;
+ v430 = ((u(*)())(v422))(v423, v424, v425, v426, v427, v428, v429);
+ v430;
+ v431 = (u)zx86_64_modrm;
+ v432 = vc;
+ v433 = 141UL;
+ v434 = 0UL;
+ v435 = 5UL;
+ v436 = 0UL;
+ v437 = 0UL;
+ v438 = 8UL;
+ v439 = ((u(*)())(v431))(v432, v433, v434, v435, v436, v437, v438);
+ v439;
+ v440 = (u)zx86_64_modrm;
+ v441 = vc;
+ v442 = 137UL;
+ v443 = 0UL;
+ v444 = 5UL;
+ v445 = 0UL;
+ v446 = 0UL;
+ v447 = 2UL;
+ v448 = ((u(*)())(v440))(v441, v442, v443, v444, v445, v446, v447);
+ v448;
+ v449 = (u)zx86_64_modm;
+ v450 = vc;
+ v451 = 134913UL;
+ v452 = 5UL;
+ v453 = 0UL;
+ v454 = 0UL;
+ v455 = 0UL;
+ v456 = ((u(*)())(v449))(v450, v451, v452, v453, v454, v455);
+ v456;
+ v457 = (u)zx86_64_modri;
+ v458 = vc;
+ v459 = 199UL;
+ v460 = 0UL;
+ v461 = 16UL;
+ v462 = ((u(*)())(v457))(v458, v459, v460, v461);
+ v462;
+ v463 = (u)zx86_64_modrr;
+ v464 = vc;
+ v465 = 142UL;
+ v466 = 0UL;
+ v467 = 0UL;
+ v468 = ((u(*)())(v463))(v464, v465, v466, v467);
+ v468;
+ v469 = (u)zx86_64_modrr;
+ v470 = vc;
+ v471 = 142UL;
+ v472 = 3UL;
+ v473 = 0UL;
+ v474 = ((u(*)())(v469))(v470, v471, v472, v473);
+ v474;
+ v475 = (u)zx86_64_modrr;
+ v476 = vc;
+ v477 = 142UL;
+ v478 = 4UL;
+ v479 = 0UL;
+ v480 = ((u(*)())(v475))(v476, v477, v478, v479);
+ v480;
+ v481 = (u)zx86_64_modrr;
+ v482 = vc;
+ v483 = 142UL;
+ v484 = 5UL;
+ v485 = 0UL;
+ v486 = ((u(*)())(v481))(v482, v483, v484, v485);
+ v486;
+ v487 = (u)zx86_64_modrr;
+ v488 = vc;
+ v489 = 142UL;
+ v490 = 2UL;
+ v491 = 0UL;
+ v492 = ((u(*)())(v487))(v488, v489, v490, v491);
+ v492;
+ v493 = (u)zx86_64_modrr;
+ v494 = vc;
+ v495 = 139UL;
+ v496 = 4UL;
+ v497 = 4UL;
+ v498 = ((u(*)())(v493))(v494, v495, v496, v497);
+ v498;
+ v499 = (u)zx86_64_modri;
+ v500 = vc;
+ v501 = 65665UL;
+ v502 = 4UL;
+ v503 = -2147483648UL;
+ v504 = ((u(*)())(v499))(v500, v501, v502, v503);
+ v504;
+ v505 = (u)zx86_64_modri;
+ v506 = vc;
+ v507 = 199UL;
+ v508 = 0UL;
+ v509 = 0UL;
+ v510 = ((u(*)())(v505))(v506, v507, v508, v509);
+ v510;
+ v511 = (u)zx86_64_modrm;
+ v512 = vc;
+ v513 = 141UL;
+ v514 = 7UL;
+ v515 = 5UL;
+ v516 = 0UL;
+ v517 = 0UL;
+ v518 = 64UL;
+ v519 = ((u(*)())(v511))(v512, v513, v514, v515, v516, v517, v518);
+ v519;
+ v520 = (u)zx86_64_modrm;
+ v521 = vc;
+ v522 = 137UL;
+ v523 = 0UL;
+ v524 = 7UL;
+ v525 = 0UL;
+ v526 = 0UL;
+ v527 = 4096UL;
+ v528 = ((u(*)())(v520))(v521, v522, v523, v524, v525, v526, v527);
+ v528;
+ v529 = (u)zx86_64_modrm;
+ v530 = vc;
+ v531 = 137UL;
+ v532 = 0UL;
+ v533 = 7UL;
+ v534 = 0UL;
+ v535 = 0UL;
+ v536 = 0UL;
+ v537 = ((u(*)())(v529))(v530, v531, v532, v533, v534, v535, v536);
+ v537;
+ v538 = (u)zx86_64_modri;
+ v539 = vc;
+ v540 = 262273UL;
+ v541 = 7UL;
+ v542 = 2147483647UL;
+ v543 = ((u(*)())(v538))(v539, v540, v541, v542);
+ v543;
+ v544 = (u)zx86_64_modrr;
+ v545 = vc;
+ v546 = 3874UL;
+ v547 = 3UL;
+ v548 = 7UL;
+ v549 = ((u(*)())(v544))(v545, v546, v547, v548);
+ v549;
+ v550 = (u)zx86_64_jmp;
+ v551 = vc;
+ v552 = 233UL;
+ v553 = vdone;
+ v554 = ((u(*)())(v550))(v551, v552, v553);
+ v554;
+ v555 = (u)zfixup_label;
+ v556 = vc;
+ v557 = vhang;
+ v558 = ((u(*)())(v555))(v556, v557);
+ v558;
+ v559 = (u)zx86_64_op;
+ v560 = vc;
+ v561 = 250UL;
+ v562 = ((u(*)())(v559))(v560, v561);
+ v562;
+ v563 = (u)zx86_64_op;
+ v564 = vc;
+ v565 = 244UL;
+ v566 = ((u(*)())(v563))(v564, v565);
+ v566;
+ v567 = (u)zx86_64_jmp;
+ v568 = vc;
+ v569 = 233UL;
+ v570 = vhang;
+ v571 = ((u(*)())(v567))(v568, v569, v570);
+ v571;
+ v572 = (u)zfixup_label;
+ v573 = vc;
+ v574 = vdo_iret;
+ v575 = ((u(*)())(v572))(v573, v574);
+ v575;
+ v576 = (u)zx86_64_op;
+ v577 = vc;
+ v578 = 207UL;
+ v579 = ((u(*)())(v576))(v577, v578);
+ v579;
+ v580 = (u)zfixup_label;
+ v581 = vc;
+ v582 = vdo_ret;
+ v583 = ((u(*)())(v580))(v581, v582);
+ v583;
+ v584 = (u)zx86_64_opr;
+ v585 = vc;
+ v586 = 88UL;
+ v587 = 0UL;
+ v588 = ((u(*)())(v584))(v585, v586, v587);
+ v588;
+ v589 = (u)zx86_64_modri;
+ v590 = vc;
+ v591 = 65665UL;
+ v592 = 0UL;
+ v593 = -2147483648UL;
+ v594 = ((u(*)())(v589))(v590, v591, v592, v593);
+ v594;
+ v595 = (u)zx86_64_opr;
+ v596 = vc;
+ v597 = 80UL;
+ v598 = 0UL;
+ v599 = ((u(*)())(v595))(v596, v597, v598);
+ v599;
+ v600 = (u)zx86_64_op;
+ v601 = vc;
+ v602 = 195UL;
+ v603 = ((u(*)())(v600))(v601, v602);
+ v603;
+ v604 = (u)zfixup_label;
+ v605 = vc;
+ v606 = vdone;
+ v607 = ((u(*)())(v604))(v605, v606);
+ v607;
+ v608 = (u)zx86_64_modrr;
+ v609 = vc;
+ v610 = 51UL;
+ v611 = 5UL;
+ v612 = 5UL;
+ v613 = ((u(*)())(v608))(v609, v610, v611, v612);
+ v613;
+ v614 = (u)zx86_64_modrr;
+ v615 = vc;
+ v616 = 139UL;
+ v617 = 7UL;
+ v618 = 3UL;
+ v619 = ((u(*)())(v614))(v615, v616, v617, v618);
+ v619;
+ v620 = (u)zx86_64_opr;
+ v621 = vc;
+ v622 = 80UL;
+ v623 = 5UL;
+ v624 = ((u(*)())(v620))(v621, v622, v623);
+ v624;
+ return 0UL;
}
-u zoutput_irstr(u vic, u vb, u vo) {
- u vs = 0;
- u v4 = 0;
- u v5 = 0;
+u zx86_64_modm(u va, u vop, u vb, u vi, u vs, u vd) {
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -44557,50 +50688,36 @@ u zoutput_irstr(u vic, u vb, u vo) {
u v12 = 0;
u v13 = 0;
u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- v4 = (u)zas_blob;
- v5 = *(u*)(vic + 8UL);
- v6 = *(u*)(vo + 32UL);
- v7 = *(u*)(vo + 40UL) + 1UL;
- v8 = ((u(*)())v4)(v5, v6, v7);
- vs = v8;
- v9 = (u)zreserve;
- v10 = *(u*)(vic + 8UL);
- v11 = 16UL;
- v12 = ((u(*)())v9)(v10, v11);
- v12;
- v13 = (u)zas_modrm;
- v14 = *(u*)(vic + 8UL);
- v15 = 141UL;
- v16 = 0UL;
- v17 = 16UL;
- v18 = 0UL;
- v19 = 0UL;
- v20 = 128UL;
- v21 = ((u(*)())v13)(v14, v15, v16, v17, v18, v19, v20);
- v21;
- v22 = (u)zaddfixup;
- v23 = *(u*)(vic + 8UL);
- v24 = vs;
- v25 = ((u(*)())v22)(v23, v24);
- v25;
+ v6 = (u)zx86_64_modrm;
+ v7 = va;
+ v8 = vop & 65535UL;
+ v9 = vop >> 16UL;
+ v10 = vb;
+ v11 = vi;
+ v12 = vs;
+ v13 = vd;
+ v14 = ((u(*)())(v6))(v7, v8, v9, v10, v11, v12, v13);
+ v14;
return 0UL;
}
-u zoutput_irvars(u vic) {
- u voffset = 0;
- u vsize = 0;
- u vi = 0;
- u vv = 0;
+u zx86_64_modr(u va, u vop, u vb) {
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ v3 = (u)zx86_64_modrr;
+ v4 = va;
+ v5 = vop & 65535UL;
+ v6 = vop >> 16UL;
+ v7 = vb;
+ v8 = ((u(*)())(v3))(v4, v5, v6, v7);
+ v8;
+ return 0UL;
+}
+u zx86_64_modra(u va, u vop, u vr, u vd) {
+ u v4 = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -44635,233 +50752,59 @@ u zoutput_irvars(u vic) {
u v36 = 0;
u v37 = 0;
u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- voffset = 0UL;
- vi = 0UL;
-b1: if (vi != *(u*)(vic + 136UL)) goto b5;
- if (voffset == 0UL) goto b19;
- v10 = (u)zas_modri;
- v11 = *(u*)(vic + 8UL);
- v12 = 327809UL;
- v13 = 4UL;
- v14 = voffset;
- v15 = ((u(*)())v10)(v11, v12, v13, v14);
- v15;
- v16 = (u)zas_modrr;
- v17 = *(u*)(vic + 8UL);
- v18 = 51UL;
- v19 = 0UL;
- v20 = 0UL;
- v21 = ((u(*)())v16)(v17, v18, v19, v20);
- v21;
- vi = 0UL;
-b22: if (vi != voffset) goto b26;
-b17: vi = 0UL;
-b28: if (vi != *(u*)(vic + 152UL)) goto b32;
- return 0UL;
-b32: vv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
- if (vi != 0UL) goto b35;
- v31 = (u)zas_modrm;
- v32 = *(u*)(vic + 8UL);
- v33 = 137UL;
- v34 = 7UL;
- v35 = 5UL;
- v36 = 0UL;
- v37 = 0UL;
- v38 = *(u*)(vv + 40UL);
- v39 = ((u(*)())v31)(v32, v33, v34, v35, v36, v37, v38);
- v39;
-b33: vi = vi + 1UL;
- goto b28;
-b35: if (vi != 1UL) goto b38;
- v40 = (u)zas_modrm;
- v41 = *(u*)(vic + 8UL);
- v42 = 137UL;
- v43 = 6UL;
- v44 = 5UL;
- v45 = 0UL;
- v46 = 0UL;
- v47 = *(u*)(vv + 40UL);
- v48 = ((u(*)())v40)(v41, v42, v43, v44, v45, v46, v47);
- v48;
- goto b33;
-b38: if (vi != 2UL) goto b41;
- v49 = (u)zas_modrm;
- v50 = *(u*)(vic + 8UL);
- v51 = 137UL;
- v52 = 2UL;
- v53 = 5UL;
- v54 = 0UL;
- v55 = 0UL;
- v56 = *(u*)(vv + 40UL);
- v57 = ((u(*)())v49)(v50, v51, v52, v53, v54, v55, v56);
- v57;
- goto b33;
-b41: if (vi != 3UL) goto b44;
- v58 = (u)zas_modrm;
- v59 = *(u*)(vic + 8UL);
- v60 = 137UL;
- v61 = 1UL;
- v62 = 5UL;
- v63 = 0UL;
- v64 = 0UL;
- v65 = *(u*)(vv + 40UL);
- v66 = ((u(*)())v58)(v59, v60, v61, v62, v63, v64, v65);
- v66;
- goto b33;
-b44: if (vi != 4UL) goto b47;
- v67 = (u)zas_modrm;
- v68 = *(u*)(vic + 8UL);
- v69 = 137UL;
- v70 = 8UL;
- v71 = 5UL;
- v72 = 0UL;
- v73 = 0UL;
- v74 = *(u*)(vv + 40UL);
- v75 = ((u(*)())v67)(v68, v69, v70, v71, v72, v73, v74);
- v75;
- goto b33;
-b47: if (vi != 5UL) goto b50;
- v76 = (u)zas_modrm;
- v77 = *(u*)(vic + 8UL);
- v78 = 137UL;
- v79 = 9UL;
- v80 = 5UL;
- v81 = 0UL;
- v82 = 0UL;
- v83 = *(u*)(vv + 40UL);
- v84 = ((u(*)())v76)(v77, v78, v79, v80, v81, v82, v83);
- v84;
- goto b33;
-b50: v85 = (u)zas_modrm;
- v86 = *(u*)(vic + 8UL);
- v87 = 139UL;
- v88 = 0UL;
- v89 = 5UL;
- v90 = 0UL;
- v91 = 0UL;
- v92 = (vi - 6UL + 2UL) * 8UL;
- v93 = ((u(*)())v85)(v86, v87, v88, v89, v90, v91, v92);
- v93;
- v94 = (u)zas_modrm;
- v95 = *(u*)(vic + 8UL);
- v96 = 137UL;
- v97 = 0UL;
- v98 = 5UL;
- v99 = 0UL;
- v100 = 0UL;
- v101 = *(u*)(vv + 40UL);
- v102 = ((u(*)())v94)(v95, v96, v97, v98, v99, v100, v101);
- v102;
- goto b33;
-b26: vi = vi + 8UL;
- v22 = (u)zas_modrm;
- v23 = *(u*)(vic + 8UL);
- v24 = 137UL;
- v25 = 0UL;
- v26 = 5UL;
- v27 = 0UL;
- v28 = 0UL;
- v29 = -vi;
- v30 = ((u(*)())v22)(v23, v24, v25, v26, v27, v28, v29);
+ v4 = (u)zx86_64_rex;
+ v5 = va;
+ v6 = vop;
+ v7 = vr;
+ v8 = 0UL;
+ v9 = 0UL;
+ v10 = ((u(*)())(v4))(v5, v6, v7, v8, v9);
+ v10;
+ v11 = (u)zx86_64_op;
+ v12 = va;
+ v13 = vop;
+ v14 = ((u(*)())(v11))(v12, v13);
+ v14;
+ v15 = (u)zas_emit;
+ v16 = va;
+ v17 = (vr << 3UL & 56UL) + 4UL;
+ v18 = ((u(*)())(v15))(v16, v17);
+ v18;
+ v19 = (u)zas_emit;
+ v20 = va;
+ v21 = (4UL << 3UL) + 5UL;
+ v22 = ((u(*)())(v19))(v20, v21);
+ v22;
+ v23 = (u)zas_emit;
+ v24 = va;
+ v25 = vd;
+ v26 = ((u(*)())(v23))(v24, v25);
+ v26;
+ v27 = (u)zas_emit;
+ v28 = va;
+ v29 = vd >> 8UL;
+ v30 = ((u(*)())(v27))(v28, v29);
v30;
- goto b22;
-b19: goto b17;
-b5: vv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
- if (!*(u*)(vv + 48UL)) goto b8;
- vi = vi + 1UL;
- goto b1;
-b8: if (!*(u*)(vv + 24UL)) goto b13;
- if (*(u*)(*(u*)(vv + 24UL) + 0UL) == 1UL) goto b13;
- v5 = 1UL;
-b15: if (!v5) goto b11;
- v6 = (u)ztype_sizeof;
- v7 = *(u*)(vic + 0UL);
- v8 = *(u*)(vv + 24UL);
- v9 = ((u(*)())v6)(v7, v8);
- vsize = v9;
-b9: vsize = vsize + 7UL & -8UL;
- voffset = voffset + vsize;
- *(u*)(vv + 40UL) = -voffset;
- vi = vi + 1UL;
- goto b1;
-b11: vsize = 8UL;
- goto b9;
-b13: v5 = 0UL;
- goto b15;
+ v31 = (u)zas_emit;
+ v32 = va;
+ v33 = vd >> 16UL;
+ v34 = ((u(*)())(v31))(v32, v33);
+ v34;
+ v35 = (u)zas_emit;
+ v36 = va;
+ v37 = vd >> 24UL;
+ v38 = ((u(*)())(v35))(v36, v37);
+ v38;
+ return 0UL;
}
-u zparse_charset(u va, u vs, u vlen) {
- u vi = 0;
- u vj = 0;
- u vch = 0;
- u vx = 0;
- u vok = 0;
- u vscratch = 0;
- u vstart = 0;
- u vend = 0;
+u zx86_64_modri(u va, u vop, u vr, u vx) {
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
u v11 = 0;
u v12 = 0;
u v13 = 0;
@@ -44881,100 +50824,53 @@ u zparse_charset(u va, u vs, u vlen) {
u v27 = 0;
u v28 = 0;
u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- v11 = (u)zalloc;
- v12 = va;
- v13 = 256UL;
- v14 = ((u(*)())v11)(v12, v13);
- vscratch = v14;
- vi = 0UL;
- vx = 1UL;
- if ((u)*(b*)(vs + vi * 1UL) != 94UL) goto b4;
- vx = 0UL;
- vj = 0UL;
-b5: if (vj != 256UL) goto b9;
- vi = vi + 1UL;
-b2:b10: if (vi != vlen) goto b14;
- return vscratch;
-b14: vch = (u)*(b*)(vs + vi * 1UL);
- if (vch != 92UL) goto b17;
- v15 = (u)zunescape;
- v16 = vs;
- v17 = (u)&vi;
- v18 = vlen;
- v19 = (u)&vok;
- v20 = ((u(*)())v15)(v16, v17, v18, v19);
- vch = v20;
- if (!vok) goto b23;
- v21 = 0UL;
-b24: if (!v21) goto b21;
- v22 = (u)zdie;
- v23 = (u)"parse_charset: invalid escape";
- v24 = ((u(*)())v22)(v23);
- v24;
-b19:b15: vstart = vch;
- vend = vch;
- if (vi == vlen) goto b32;
- if ((u)*(b*)(vs + vi * 1UL) != 45UL) goto b32;
- v25 = 1UL;
-b34: if (!v25) goto b30;
- vi = vi + 1UL;
- v26 = (u)zunescape;
- v27 = vs;
- v28 = (u)&vi;
- v29 = vlen;
- v30 = (u)&vok;
- v31 = ((u(*)())v26)(v27, v28, v29, v30);
- vch = v31;
- if (!vok) goto b40;
- v32 = 0UL;
-b41: if (!v32) goto b38;
- v33 = (u)zdie;
- v34 = (u)"parse_charset: invalid escape";
- v35 = ((u(*)())v33)(v34);
- v35;
-b36: vend = vch;
-b28: vj = vstart;
-b43: if ((s)vj <= (s)vend) goto b47;
- goto b10;
-b47: *(b*)(vscratch + vj * 1UL) = vx;
- vj = vj + 1UL;
- goto b43;
-b38: goto b36;
-b40: v32 = 1UL;
- goto b41;
-b30: goto b28;
-b32: v25 = 0UL;
- goto b34;
-b21: goto b19;
-b23: v21 = 1UL;
- goto b24;
-b17: if (vch != 94UL) goto b27;
- vx = 0UL;
- vi = vi + 1UL;
- goto b10;
-b27: vi = vi + 1UL;
- goto b15;
-b9: *(b*)(vscratch + vj * 1UL) = 1UL;
- vj = vj + 1UL;
- goto b5;
-b4: goto b2;
+ if ((s)(vx) >= (s)(-(1UL << 31UL))) goto b5;
+ v4 = 1UL;
+b7: if (!(v4)) goto b3;
+ v5 = (u)zdie;
+ v6 = (u)"immediate too large";
+ v7 = ((u(*)())(v5))(v6);
+ v7;
+b1: v8 = (u)zx86_64_modrr;
+ v9 = va;
+ v10 = vop & 65535UL;
+ v11 = vop >> 16UL;
+ v12 = vr;
+ v13 = ((u(*)())(v8))(v9, v10, v11, v12);
+ v13;
+ v14 = (u)zas_emit;
+ v15 = va;
+ v16 = vx;
+ v17 = ((u(*)())(v14))(v15, v16);
+ v17;
+ v18 = (u)zas_emit;
+ v19 = va;
+ v20 = vx >> 8UL;
+ v21 = ((u(*)())(v18))(v19, v20);
+ v21;
+ v22 = (u)zas_emit;
+ v23 = va;
+ v24 = vx >> 16UL;
+ v25 = ((u(*)())(v22))(v23, v24);
+ v25;
+ v26 = (u)zas_emit;
+ v27 = va;
+ v28 = vx >> 24UL;
+ v29 = ((u(*)())(v26))(v27, v28);
+ v29;
+ return 0UL;
+b3: goto b1;
+b5: if ((s)(vx) < (s)(1UL << 31UL)) goto b8;
+ v4 = 1UL;
+ goto b7;
+b8: v4 = 0UL;
+ goto b7;
}
-u zprototype(u vc, u vn) {
- u va = 0;
- u vb = 0;
- u vst = 0;
- u vkind = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
+u zx86_64_modrm(u va, u vop, u vr, u vb, u vi, u vs, u vd) {
+ u vsib = 0;
+ u vmod = 0;
+ u vrm = 0;
+ u vdw = 0;
u v11 = 0;
u v12 = 0;
u v13 = 0;
@@ -45053,481 +50949,245 @@ u zprototype(u vc, u vn) {
u v86 = 0;
u v87 = 0;
u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- if (!vn) goto b5;
- v6 = 0UL;
-b6: if (!v6) goto b3;
- return 0UL;
-b3: *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
- *(u*)(vc + 40UL) = 0UL;
- vkind = *(u*)(vn + 0UL);
- if (vkind != 0UL) goto b9;
- v8 = (u)zstrcmp;
- v9 = *(u*)(vn + 56UL);
- v10 = (u)"void";
- v11 = ((u(*)())v8)(v9, v10);
- if (!v11) goto b14;
- v7 = 0UL;
-b15: if (!v7) goto b12;
- v12 = (u)zmktype0;
- v13 = vc;
- v14 = 1UL;
- v15 = ((u(*)())v12)(v13, v14);
- return v15;
-b12: v17 = (u)zstrcmp;
- v18 = *(u*)(vn + 56UL);
- v19 = (u)"int";
- v20 = ((u(*)())v17)(v18, v19);
- if (!v20) goto b22;
- v16 = 0UL;
-b23: if (!v16) goto b20;
- v21 = (u)zmktype0;
- v22 = vc;
- v23 = 2UL;
- v24 = ((u(*)())v21)(v22, v23);
- return v24;
-b20: v26 = (u)zstrcmp;
- v27 = *(u*)(vn + 56UL);
- v28 = (u)"byte";
- v29 = ((u(*)())v26)(v27, v28);
- if (!v29) goto b30;
- v25 = 0UL;
-b31: if (!v25) goto b28;
- v30 = (u)zmktype0;
- v31 = vc;
- v32 = 3UL;
- v33 = ((u(*)())v30)(v31, v32);
- return v33;
-b28: v34 = (u)zfind;
- v35 = vc;
- v36 = *(u*)(vn + 56UL);
- v37 = 0UL;
- v38 = 0UL;
- v39 = ((u(*)())v34)(v35, v36, v37, v38);
- vst = v39;
- if (!vst) goto b43;
- v41 = 0UL;
-b44: if (!v41) goto b39;
- v40 = 1UL;
-b41: if (!v40) goto b37;
- v43 = (u)zcdie;
- v44 = vc;
- v45 = (u)"unknown struct";
- v46 = ((u(*)())v43)(v44, v45);
- v46;
-b35: if (*(u*)(*(u*)(vst + 152UL) + 0UL) != 17UL) goto b52;
- v47 = (u)zmktype_struct;
- v48 = vc;
- v49 = vst;
- v50 = ((u(*)())v47)(v48, v49);
- return v50;
-b52: v51 = (u)zmktype_union;
- v52 = vc;
- v53 = vst;
- v54 = ((u(*)())v51)(v52, v53);
- return v54;
-b37: goto b35;
-b39: if (!*(u*)(vst + 128UL)) goto b47;
- v42 = 0UL;
-b48: if (!v42) goto b45;
- v40 = 1UL;
- goto b41;
-b45: v40 = 0UL;
- goto b41;
-b47: v42 = 1UL;
- goto b48;
-b43: v41 = 1UL;
- goto b44;
-b30: v25 = 1UL;
- goto b31;
-b22: v16 = 1UL;
- goto b23;
-b14: v7 = 1UL;
- goto b15;
-b9: if (vkind != 10UL) goto b56;
- v55 = (u)zprototype;
- v56 = vc;
- v57 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v58 = ((u(*)())v55)(v56, v57);
- va = v58;
- v59 = (u)zprototype;
- v60 = vc;
- v61 = *(u*)(vn + 16UL);
- v62 = ((u(*)())v59)(v60, v61);
- vb = v62;
- vkind = *(u*)(va + 0UL);
- if (vkind == 2UL) goto b71;
- if (vkind == 3UL) goto b71;
- v65 = 1UL;
-b73: if (!v65) goto b67;
- if (vkind == 4UL) goto b67;
- v64 = 1UL;
-b69: if (!v64) goto b63;
- if (vkind == 6UL) goto b63;
- v63 = 1UL;
-b65: if (!v63) goto b61;
- v66 = (u)zcdie;
- v67 = vc;
- v68 = (u)"not a ptr arg";
- v69 = ((u(*)())v66)(v67, v68);
- v69;
-b59: v70 = (u)zmktype2;
- v71 = vc;
- v72 = 5UL;
- v73 = va;
- v74 = vb;
- v75 = ((u(*)())v70)(v71, v72, v73, v74);
- return v75;
-b61: goto b59;
-b63: v63 = 0UL;
- goto b65;
-b67: v64 = 0UL;
- goto b69;
-b71: v65 = 0UL;
- goto b73;
-b56: if (vkind != 15UL) goto b77;
- if (!*(u*)(vn + 16UL)) goto b80;
- v76 = (u)zprototype;
- v77 = vc;
- v78 = *(u*)(vn + 16UL);
- v79 = ((u(*)())v76)(v77, v78);
- va = v79;
-b78: v84 = (u)zprototype;
- v85 = vc;
- v86 = *(u*)(vn + 8UL);
- v87 = ((u(*)())v84)(v85, v86);
- vb = v87;
- vkind = *(u*)(va + 0UL);
- if (vkind == 1UL) goto b100;
- if (vkind == 2UL) goto b100;
- v91 = 1UL;
-b102: if (!v91) goto b96;
- if (vkind == 3UL) goto b96;
- v90 = 1UL;
-b98: if (!v90) goto b92;
- if (vkind == 4UL) goto b92;
- v89 = 1UL;
-b94: if (!v89) goto b88;
- if (vkind == 6UL) goto b88;
- v88 = 1UL;
-b90: if (!v88) goto b86;
- v92 = (u)zcdie;
- v93 = vc;
- v94 = (u)"not a ptr return";
- v95 = ((u(*)())v92)(v93, v94);
- v95;
-b84: v96 = (u)zmktype2;
- v97 = vc;
- v98 = 6UL;
- v99 = va;
- v100 = vb;
- v101 = ((u(*)())v96)(v97, v98, v99, v100);
- return v101;
-b86: goto b84;
-b88: v88 = 0UL;
- goto b90;
-b92: v89 = 0UL;
- goto b94;
-b96: v90 = 0UL;
- goto b98;
-b100: v91 = 0UL;
- goto b102;
-b80: v80 = (u)zmktype0;
- v81 = vc;
- v82 = 1UL;
- v83 = ((u(*)())v80)(v81, v82);
- va = v83;
- goto b78;
-b77: if (vkind != 16UL) goto b106;
- v102 = (u)zmktype1;
- v103 = vc;
- v104 = 4UL;
- v106 = (u)zprototype;
- v107 = vc;
- v108 = *(u*)(vn + 8UL);
- v109 = ((u(*)())v106)(v107, v108);
- v105 = v109;
- v110 = ((u(*)())v102)(v103, v104, v105);
- return v110;
-b106: v111 = (u)zcdie;
- v112 = vc;
- v113 = (u)"prototype: invalid type";
- v114 = ((u(*)())v111)(v112, v113);
- v114;
- return 0UL;
-b5: v6 = 1UL;
- goto b6;
-}
-u zputchar(u vc, u vch) {
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- v2 = (u)zfputc;
- v3 = *(u*)(vc + 8UL);
- v4 = vch;
- v5 = ((u(*)())v2)(v3, v4);
- v5;
- return 0UL;
-}
-u zrb_first(u vn) {
- u v1 = 0;
- u v2 = 0;
- if (!vn) goto b5;
- v1 = 0UL;
-b6: if (!v1) goto b3;
- return 0UL;
-b3:b7: if (!*(u*)(vn + 16UL)) goto b13;
- v2 = 0UL;
-b14: if (!v2) goto b11;
- return vn;
-b11: vn = *(u*)(vn + 16UL);
- goto b7;
-b13: v2 = 1UL;
- goto b14;
-b5: v1 = 1UL;
- goto b6;
-}
-u zrb_link(u vtree, u vlink, u vparent, u vn) {
- u vl = 0;
- u vr = 0;
- u vg = 0;
- u vp = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- *(u*)(vn + 0UL) = 1UL;
- *(u*)(vn + 8UL) = vparent;
- *(u*)(vn + 16UL) = 0UL;
- *(u*)(vn + 24UL) = 0UL;
- *(u*)vlink = vn;
-b1: vp = *(u*)(vn + 8UL);
- if (!vp) goto b7;
- v8 = 0UL;
-b8: if (!v8) goto b5;
- *(u*)(vn + 0UL) = 0UL;
- return 0UL;
-b5: if (!*(u*)(vp + 0UL)) goto b13;
- v9 = 0UL;
-b14: if (!v9) goto b11;
- return 0UL;
-b11: vg = *(u*)(vp + 8UL);
- if (!vg) goto b19;
- v10 = 0UL;
-b20: if (!v10) goto b17;
- *(u*)(vp + 0UL) = 0UL;
- return 0UL;
-b17: vl = *(u*)(vg + 16UL);
- vr = *(u*)(vg + 24UL);
- if (!vl) goto b33;
- if (!vr) goto b33;
- v13 = 1UL;
-b35: if (!v13) goto b29;
- if (!*(u*)(vl + 0UL)) goto b29;
- v12 = 1UL;
-b31: if (!v12) goto b25;
- if (!*(u*)(vr + 0UL)) goto b25;
+ if ((s)(vr) >= (s)0UL) goto b5;
v11 = 1UL;
-b27: if (!v11) goto b23;
- *(u*)(vl + 0UL) = 0UL;
- *(u*)(vr + 0UL) = 0UL;
- *(u*)(vg + 0UL) = 1UL;
- vn = vg;
- goto b1;
-b23: if (vp != *(u*)(vg + 16UL)) goto b38;
- if (vn != *(u*)(vp + 16UL)) goto b41;
- *(u*)(vn + 0UL) = 0UL;
- v14 = (u)zrb_rotate_right;
- v15 = vtree;
- v16 = vp;
- v17 = ((u(*)())v14)(v15, v16);
- v17;
- vn = vp;
-b39:b36: goto b1;
-b41: *(u*)(vp + 0UL) = 0UL;
- v18 = (u)zrb_rotate_left;
- v19 = vtree;
- v20 = vn;
- v21 = ((u(*)())v18)(v19, v20);
- v21;
- v22 = (u)zrb_rotate_right;
- v23 = vtree;
- v24 = vn;
- v25 = ((u(*)())v22)(v23, v24);
+b7: if (!(v11)) goto b3;
+ v12 = (u)zdie;
+ v13 = (u)"invalid reg";
+ v14 = ((u(*)())(v12))(v13);
+ v14;
+b1: vrm = vr << 3UL & 56UL;
+ if (vd == 0UL) goto b12;
+ if ((s)(vd) < (s)(-128UL)) goto b17;
+ if ((s)(vd) > (s)127UL) goto b17;
+ v15 = 1UL;
+b19: if (!(v15)) goto b15;
+ vmod = 1UL;
+ vdw = 1UL;
+b13:b10: if (vmod != 0UL) goto b22;
+ if ((s)(vb) >= (s)0UL) goto b27;
+ v16 = 1UL;
+b29: if (!(v16)) goto b25;
+ v17 = (u)zdie;
+ v18 = (u)"invalid reg";
+ v19 = ((u(*)())(v17))(v18);
+ v19;
+b23: if (!(vs)) goto b34;
+ if (vb != 16UL) goto b37;
+ v20 = (u)zdie;
+ v21 = (u)"invalid base";
+ v22 = ((u(*)())(v20))(v21);
+ v22;
+b35: if (vi != 4UL) goto b41;
+ v23 = (u)zdie;
+ v24 = (u)"invalid index";
+ v25 = ((u(*)())(v23))(v24);
v25;
- goto b39;
-b38: if (vn != *(u*)(vp + 16UL)) goto b47;
- *(u*)(vp + 0UL) = 0UL;
- v26 = (u)zrb_rotate_right;
- v27 = vtree;
- v28 = vn;
- v29 = ((u(*)())v26)(v27, v28);
- v29;
- v30 = (u)zrb_rotate_left;
- v31 = vtree;
- v32 = vn;
- v33 = ((u(*)())v30)(v31, v32);
- v33;
-b45: goto b36;
-b47: *(u*)(vn + 0UL) = 0UL;
- v34 = (u)zrb_rotate_left;
- v35 = vtree;
- v36 = vp;
- v37 = ((u(*)())v34)(v35, v36);
- v37;
- vn = vp;
- goto b45;
-b25: v11 = 0UL;
- goto b27;
-b29: v12 = 0UL;
- goto b31;
-b33: v13 = 0UL;
- goto b35;
-b19: v10 = 1UL;
- goto b20;
-b13: v9 = 1UL;
- goto b14;
-b7: v8 = 1UL;
- goto b8;
-}
-u zrb_next(u vn) {
- u v1 = 0;
- u v2 = 0;
- u v3 = 0;
- u v4 = 0;
- u v5 = 0;
- if (!vn) goto b5;
- v1 = 0UL;
-b6: if (!v1) goto b3;
- return 0UL;
-b3: if (!*(u*)(vn + 24UL)) goto b9;
- v2 = (u)zrb_first;
- v3 = *(u*)(vn + 24UL);
- v4 = ((u(*)())v2)(v3);
- return v4;
-b9:b11: if (!*(u*)(vn + 8UL)) goto b17;
- v5 = 0UL;
-b18: if (!v5) goto b15;
- return 0UL;
-b15: if (*(u*)(*(u*)(vn + 8UL) + 16UL) != vn) goto b21;
- return *(u*)(vn + 8UL);
-b21: vn = *(u*)(vn + 8UL);
- goto b11;
-b17: v5 = 1UL;
- goto b18;
-b5: v1 = 1UL;
- goto b6;
-}
-u zrb_rotate_left(u vtree, u vn) {
- u vgg = 0;
- u vg = 0;
- u vp = 0;
- u vs = 0;
- vs = *(u*)(vn + 16UL);
- vp = *(u*)(vn + 8UL);
- vg = *(u*)(vp + 8UL);
- *(u*)(vn + 16UL) = vp;
- *(u*)(vp + 8UL) = vn;
- *(u*)(vp + 24UL) = vs;
- if (!vs) goto b3;
- *(u*)(vs + 8UL) = vp;
-b1: *(u*)(vn + 8UL) = vg;
- if (!vg) goto b6;
- if (*(u*)(vg + 16UL) != vp) goto b9;
- *(u*)(vg + 16UL) = vn;
-b7:b4: return 0UL;
-b9: *(u*)(vg + 24UL) = vn;
- goto b7;
-b6: *(u*)vtree = vn;
- goto b4;
+b39: vrm = vrm + 4UL;
+b32:b20: v47 = (u)zx86_64_rex;
+ v48 = va;
+ v49 = vop;
+ v50 = vr;
+ v51 = vi;
+ v52 = vb;
+ v53 = ((u(*)())(v47))(v48, v49, v50, v51, v52);
+ v53;
+ v54 = (u)zx86_64_op;
+ v55 = va;
+ v56 = vop;
+ v57 = ((u(*)())(v54))(v55, v56);
+ v57;
+ v58 = (u)zas_emit;
+ v59 = va;
+ v60 = (vmod << 6UL) + vrm;
+ v61 = ((u(*)())(v58))(v59, v60);
+ v61;
+ if (!(vs)) goto b113;
+ vsib = (vi << 3UL & 56UL) + (vb & 7UL);
+ if (vs != 2UL) goto b116;
+ vsib = vsib + 64UL;
+b114: v65 = (u)zas_emit;
+ v66 = va;
+ v67 = vsib;
+ v68 = ((u(*)())(v65))(v66, v67);
+ v68;
+b111: if (vdw != 1UL) goto b127;
+ v69 = (u)zas_emit;
+ v70 = va;
+ v71 = vd;
+ v72 = ((u(*)())(v69))(v70, v71);
+ v72;
+b125: return 0UL;
+b127: if (vdw != 4UL) goto b130;
+ v73 = (u)zas_emit;
+ v74 = va;
+ v75 = vd;
+ v76 = ((u(*)())(v73))(v74, v75);
+ v76;
+ v77 = (u)zas_emit;
+ v78 = va;
+ v79 = vd >> 8UL;
+ v80 = ((u(*)())(v77))(v78, v79);
+ v80;
+ v81 = (u)zas_emit;
+ v82 = va;
+ v83 = vd >> 16UL;
+ v84 = ((u(*)())(v81))(v82, v83);
+ v84;
+ v85 = (u)zas_emit;
+ v86 = va;
+ v87 = vd >> 24UL;
+ v88 = ((u(*)())(v85))(v86, v87);
+ v88;
+ goto b125;
+b130: goto b125;
+b116: if (vs != 4UL) goto b118;
+ vsib = vsib + 128UL;
+ goto b114;
+b118: if (vs != 8UL) goto b120;
+ vsib = vsib + 192UL;
+ goto b114;
+b120: if (vs == 1UL) goto b122;
+ v62 = (u)zdie;
+ v63 = (u)"invalid scale";
+ v64 = ((u(*)())(v62))(v63);
+ v64;
+ goto b114;
+b122: goto b114;
+b113: goto b111;
+b41: goto b39;
+b37: goto b35;
+b34: if (vi == 0UL) goto b45;
+ v26 = (u)zdie;
+ v27 = (u)"invalid index";
+ v28 = ((u(*)())(v26))(v27);
+ v28;
+b43: if (vb != 16UL) goto b49;
+ vmod = 0UL;
+ vdw = 4UL;
+ vrm = vrm + 5UL;
+b47: goto b32;
+b49: if (vb != 4UL) goto b53;
+ v29 = 1UL;
+b55: if (!(v29)) goto b51;
+ vs = 1UL;
+ vi = 4UL;
+ vrm = vrm + 4UL;
+ goto b47;
+b51: if (vb != 5UL) goto b60;
+ v30 = 1UL;
+b62: if (!(v30)) goto b58;
+ vmod = 1UL;
+ vdw = 1UL;
+ vrm = vrm + 5UL;
+ goto b47;
+b58: vrm = vrm + (vb & 7UL);
+ goto b47;
+b60: if (vb != 13UL) goto b63;
+ v30 = 1UL;
+ goto b62;
+b63: v30 = 0UL;
+ goto b62;
+b53: if (vb != 12UL) goto b56;
+ v29 = 1UL;
+ goto b55;
+b56: v29 = 0UL;
+ goto b55;
+b45: goto b43;
+b25: goto b23;
+b27: if ((s)(vb) <= (s)16UL) goto b30;
+ v16 = 1UL;
+ goto b29;
+b30: v16 = 0UL;
+ goto b29;
+b22: if ((s)(vb) >= (s)0UL) goto b76;
+ v33 = 1UL;
+b78: if (!(v33)) goto b72;
+ v32 = 1UL;
+b74: if (!(v32)) goto b68;
+ v31 = 1UL;
+b70: if (!(v31)) goto b66;
+ v34 = (u)zdie;
+ v35 = (u)"invalid reg";
+ v36 = ((u(*)())(v34))(v35);
+ v36;
+b64: if (!(vs)) goto b85;
+ if (vb != 16UL) goto b88;
+ v37 = (u)zdie;
+ v38 = (u)"invalid base";
+ v39 = ((u(*)())(v37))(v38);
+ v39;
+b86: if (vi != 4UL) goto b92;
+ v40 = (u)zdie;
+ v41 = (u)"invalid index";
+ v42 = ((u(*)())(v40))(v41);
+ v42;
+b90: vrm = vrm + 4UL;
+b83: goto b20;
+b92: goto b90;
+b88: goto b86;
+b85: if (vi == 0UL) goto b96;
+ v43 = (u)zdie;
+ v44 = (u)"invalid index";
+ v45 = ((u(*)())(v43))(v44);
+ v45;
+b94: if (vb != 16UL) goto b100;
+ vmod = 0UL;
+ vdw = 4UL;
+ vrm = vrm + 5UL;
+b98: goto b83;
+b100: if (vb != 4UL) goto b104;
+ v46 = 1UL;
+b106: if (!(v46)) goto b102;
+ vs = 1UL;
+ vi = 4UL;
+ vrm = vrm + 4UL;
+ goto b98;
+b102: vrm = vrm + (vb & 7UL);
+ goto b98;
+b104: if (vb != 12UL) goto b107;
+ v46 = 1UL;
+ goto b106;
+b107: v46 = 0UL;
+ goto b106;
+b96: goto b94;
+b66: goto b64;
+b68: if ((s)(vi) <= (s)15UL) goto b81;
+ v31 = 1UL;
+ goto b70;
+b81: v31 = 0UL;
+ goto b70;
+b72: if ((s)(vi) >= (s)0UL) goto b80;
+ v32 = 1UL;
+ goto b74;
+b80: v32 = 0UL;
+ goto b74;
+b76: if ((s)(vb) <= (s)16UL) goto b79;
+ v33 = 1UL;
+ goto b78;
+b79: v33 = 0UL;
+ goto b78;
+b15: vmod = 2UL;
+ vdw = 4UL;
+ goto b13;
+b17: v15 = 0UL;
+ goto b19;
+b12: vmod = 0UL;
+ vdw = 0UL;
+ goto b10;
b3: goto b1;
-}
-u zrb_rotate_right(u vtree, u vn) {
- u vgg = 0;
- u vg = 0;
- u vp = 0;
- u vs = 0;
- vs = *(u*)(vn + 24UL);
- vp = *(u*)(vn + 8UL);
- vg = *(u*)(vp + 8UL);
- *(u*)(vn + 24UL) = vp;
- *(u*)(vp + 8UL) = vn;
- *(u*)(vp + 16UL) = vs;
- if (!vs) goto b3;
- *(u*)(vs + 8UL) = vp;
-b1: *(u*)(vn + 8UL) = vg;
- if (!vg) goto b6;
- if (*(u*)(vg + 16UL) != vp) goto b9;
- *(u*)(vg + 16UL) = vn;
-b7:b4: return 0UL;
-b9: *(u*)(vg + 24UL) = vn;
+b5: if ((s)(vr) <= (s)15UL) goto b8;
+ v11 = 1UL;
+ goto b7;
+b8: v11 = 0UL;
goto b7;
-b6: *(u*)vtree = vn;
- goto b4;
-b3: goto b1;
-}
-u zread(u vfd, u vbuf, u vn) {
- return (u)read((int)vfd, (void*)vbuf, (unsigned long)vn);
}
-u zreadall(u vfd, u vlen, u va) {
- u vbuf = 0;
- u vtmp = 0;
- u vcap = 0;
- u vnewcap = 0;
- u vret = 0;
- u vn = 0;
+u zx86_64_modrr(u va, u vop, u vr, u vb) {
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -45546,56 +51206,70 @@ u zreadall(u vfd, u vlen, u va) {
u v24 = 0;
u v25 = 0;
u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- vcap = 0UL;
- vn = 0UL;
-b1: if (vn != vcap) goto b5;
- if (vcap != 0UL) goto b8;
- vnewcap = 4096UL;
-b6: v9 = (u)zalloc;
- v10 = va;
- v11 = vnewcap;
- v12 = ((u(*)())v9)(v10, v11);
- vtmp = v12;
- v13 = (u)zmemcpy;
- v14 = vtmp;
- v15 = vbuf;
- v16 = vn;
- v17 = ((u(*)())v13)(v14, v15, v16);
- v17;
- v18 = (u)zfree;
- v19 = va;
- v20 = vbuf;
- v21 = ((u(*)())v18)(v19, v20);
- v21;
- vbuf = vtmp;
- vcap = vnewcap;
-b3: v22 = (u)zread;
- v23 = vfd;
- v24 = vbuf + vn * 1UL;
- v25 = vcap - vn;
- v26 = ((u(*)())v22)(v23, v24, v25);
- vret = v26;
- if ((s)vret >= (s)0UL) goto b15;
- v27 = (u)zdie;
- v28 = (u)"readall failed";
- v29 = ((u(*)())v27)(v28);
- v29;
-b13: if (vret != 0UL) goto b19;
- *(u*)vlen = vn;
- return vbuf;
-b19: vn = vn + vret;
- goto b1;
-b15: goto b13;
-b8: vnewcap = vcap * 2UL;
- goto b6;
-b5: goto b3;
+ if ((s)(vr) >= (s)0UL) goto b13;
+ v6 = 1UL;
+b15: if (!(v6)) goto b9;
+ v5 = 1UL;
+b11: if (!(v5)) goto b5;
+ v4 = 1UL;
+b7: if (!(v4)) goto b3;
+ v7 = (u)zdie;
+ v8 = (u)"invalid reg";
+ v9 = ((u(*)())(v7))(v8);
+ v9;
+b1: if (vop == (131327UL & 65535UL)) goto b28;
+ if ((vop & -16UL) == 3984UL) goto b28;
+ v11 = 1UL;
+b30: if (!(v11)) goto b24;
+ v10 = 1UL;
+b26: if (!(v10)) goto b22;
+ v12 = (u)zx86_64_rex;
+ v13 = va;
+ v14 = vop;
+ v15 = vr;
+ v16 = 0UL;
+ v17 = vb;
+ v18 = ((u(*)())(v12))(v13, v14, v15, v16, v17);
+ v18;
+b20: v19 = (u)zx86_64_op;
+ v20 = va;
+ v21 = vop;
+ v22 = ((u(*)())(v19))(v20, v21);
+ v22;
+ v23 = (u)zas_emit;
+ v24 = va;
+ v25 = (192UL + (vr << 3UL & 56UL)) + (vb & 7UL);
+ v26 = ((u(*)())(v23))(v24, v25);
+ v26;
+ return 0UL;
+b22: goto b20;
+b24: if ((s)(vb) < (s)8UL) goto b31;
+ v10 = 1UL;
+ goto b26;
+b31: v10 = 0UL;
+ goto b26;
+b28: v11 = 0UL;
+ goto b30;
+b3: goto b1;
+b5: if ((s)(vb) <= (s)15UL) goto b18;
+ v4 = 1UL;
+ goto b7;
+b18: v4 = 0UL;
+ goto b7;
+b9: if ((s)(vb) >= (s)0UL) goto b17;
+ v5 = 1UL;
+ goto b11;
+b17: v5 = 0UL;
+ goto b11;
+b13: if ((s)(vr) <= (s)15UL) goto b16;
+ v6 = 1UL;
+ goto b15;
+b16: v6 = 0UL;
+ goto b15;
}
-u zreserve(u vc, u vn) {
- u vm = 0;
- u vb = 0;
+u zx86_64_op(u va, u vop) {
+ u v2 = 0;
+ u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -45605,45 +51279,27 @@ u zreserve(u vc, u vn) {
u v10 = 0;
u v11 = 0;
u v12 = 0;
- if (!*(u*)(vc + 40UL)) goto b5;
- if ((s)(*(u*)(*(u*)(vc + 40UL) + 24UL) - *(u*)(*(u*)(vc + 40UL) + 16UL)) < (s)vn) goto b5;
- v4 = 1UL;
-b7: if (!v4) goto b3;
- return 0UL;
-b3: if ((s)vn >= (s)4096UL) goto b10;
- vn = 4096UL;
-b8: v5 = (u)zalloc;
- v6 = *(u*)(vc + 0UL);
- v7 = vn;
- v8 = ((u(*)())v5)(v6, v7);
- vm = v8;
- v9 = (u)zalloc;
- v10 = *(u*)(vc + 0UL);
- v11 = 32UL;
- v12 = ((u(*)())v9)(v10, v11);
- vb = v12;
- *(u*)(vb + 8UL) = vm;
- *(u*)(vb + 16UL) = 0UL;
- *(u*)(vb + 24UL) = vn;
- *(u*)(vb + 0UL) = 0UL;
- if (!*(u*)(vc + 40UL)) goto b15;
- *(u*)(*(u*)(vc + 40UL) + 0UL) = vb;
- *(u*)(vc + 40UL) = vb;
-b13: return 0UL;
-b15: *(u*)(vc + 32UL) = vb;
- *(u*)(vc + 40UL) = vb;
- goto b13;
-b10: goto b8;
-b5: v4 = 0UL;
- goto b7;
-}
-u zsetup_alloc(u vc) {
- *(u*)(vc + 0UL) = 0UL;
- return 0UL;
+ u v13 = 0;
+ if ((s)(vop) <= (s)255UL) goto b3;
+ v2 = (u)zas_emit;
+ v3 = va;
+ v4 = vop >> 8UL;
+ v5 = ((u(*)())(v2))(v3, v4);
+ v5;
+ v6 = (u)zas_emit;
+ v7 = va;
+ v8 = vop;
+ v9 = ((u(*)())(v6))(v7, v8);
+ v9;
+b1: return 0UL;
+b3: v10 = (u)zas_emit;
+ v11 = va;
+ v12 = vop;
+ v13 = ((u(*)())(v10))(v11, v12);
+ v13;
+ goto b1;
}
-u zsetup_assembler(u va) {
- u vc = 0;
- u v2 = 0;
+u zx86_64_opr(u va, u vop, u vr) {
u v3 = 0;
u v4 = 0;
u v5 = 0;
@@ -45657,37 +51313,53 @@ u zsetup_assembler(u va) {
u v13 = 0;
u v14 = 0;
u v15 = 0;
- v2 = (u)zalloc;
- v3 = va;
- v4 = 128UL;
- v5 = ((u(*)())v2)(v3, v4);
- vc = v5;
- *(u*)(vc + 0UL) = va;
- *(u*)(vc + 8UL) = 0UL;
- *(u*)(vc + 24UL) = 160UL;
- *(u*)(vc + 32UL) = 0UL;
- *(u*)(vc + 40UL) = 0UL;
- *(u*)(vc + 48UL) = 0UL;
- *(u*)(vc + 56UL) = 0UL;
- *(u*)(vc + 72UL) = 0UL;
- v6 = (u)zadd_section;
- v7 = vc;
- v8 = (u)"";
- v9 = 0UL;
- v10 = ((u(*)())v6)(v7, v8, v9);
- v10;
- v11 = (u)zadd_section;
- v12 = vc;
- v13 = (u)".text";
- v14 = 1UL;
- v15 = ((u(*)())v11)(v12, v13, v14);
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ if ((s)(vr) >= (s)0UL) goto b5;
+ v3 = 1UL;
+b7: if (!(v3)) goto b3;
+ v4 = (u)zdie;
+ v5 = (u)"invalid reg";
+ v6 = ((u(*)())(v4))(v5);
+ v6;
+b1: if (vop == 80UL) goto b18;
+ if (vop == 88UL) goto b18;
+ v8 = 1UL;
+b20: if (!(v8)) goto b14;
+ v7 = 1UL;
+b16: if (!(v7)) goto b12;
+ v9 = (u)zx86_64_rex;
+ v10 = va;
+ v11 = vop;
+ v12 = vr;
+ v13 = 0UL;
+ v14 = 0UL;
+ v15 = ((u(*)())(v9))(v10, v11, v12, v13, v14);
v15;
- return vc;
+b10: v16 = (u)zx86_64_op;
+ v17 = va;
+ v18 = vop + (vr & 7UL);
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ return 0UL;
+b12: goto b10;
+b14: if ((s)(vr) <= (s)7UL) goto b21;
+ v7 = 1UL;
+ goto b16;
+b21: v7 = 0UL;
+ goto b16;
+b18: v8 = 0UL;
+ goto b20;
+b3: goto b1;
+b5: if ((s)(vr) <= (s)15UL) goto b8;
+ v3 = 1UL;
+ goto b7;
+b8: v3 = 0UL;
+ goto b7;
}
-u zsetup_lex(u vc) {
- u vl = 0;
- u vi = 0;
- u v3 = 0;
+u zx86_64_opri64(u va, u vop, u vr, u vx) {
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -45709,78 +51381,85 @@ u zsetup_lex(u vc) {
u v22 = 0;
u v23 = 0;
u v24 = 0;
- v3 = (u)zalloc;
- v4 = *(u*)(vc + 0UL);
- v5 = 192UL;
- v6 = ((u(*)())v3)(v4, v5);
- vl = v6;
- *(u*)(vl + 0UL) = *(u*)(vc + 0UL);
- *(u*)(vl + 8UL) = vc;
- v7 = (u)zget_num_states;
- v8 = ((u(*)())v7)();
- vi = v8;
- v9 = (u)zalloc;
- v10 = *(u*)(vl + 0UL);
- v11 = 8UL * vi;
- v12 = ((u(*)())v9)(v10, v11);
- *(u*)(vl + 16UL) = v12;
- v13 = (u)zget_tag_table;
- v14 = *(u*)(vl + 16UL);
- v15 = ((u(*)())v13)(v14);
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ if (vop == 184UL) goto b3;
+ v4 = (u)zdie;
+ v5 = (u)"only movabs";
+ v6 = ((u(*)())(v4))(v5);
+ v6;
+b1: v7 = (u)zx86_64_opr;
+ v8 = va;
+ v9 = vop;
+ v10 = vr;
+ v11 = ((u(*)())(v7))(v8, v9, v10);
+ v11;
+ v12 = (u)zas_emit;
+ v13 = va;
+ v14 = vx;
+ v15 = ((u(*)())(v12))(v13, v14);
v15;
- v16 = (u)zget_link_table;
- v17 = ((u(*)())v16)();
- *(u*)(vl + 24UL) = v17;
- *(u*)(vl + 32UL) = 0UL;
- *(u*)(vl + 40UL) = 1UL;
- *(u*)(vl + 48UL) = 1UL;
- *(u*)(vl + 56UL) = 0UL;
- *(u*)(vl + 64UL) = 0UL;
- *(u*)(vl + 72UL) = 0UL;
- *(u*)(vl + 80UL) = 0UL;
- *(u*)(vl + 88UL) = 0UL;
- *(u*)(vl + 104UL) = 1UL;
- *(u*)(vl + 112UL) = 1UL;
- *(u*)(vl + 120UL) = 1UL;
- *(u*)(vl + 128UL) = 1UL;
- *(u*)(vl + 144UL) = vl + 136UL;
- *(u*)(vl + 152UL) = 0UL;
- *(u*)(vl + 160UL) = 0UL;
- *(u*)(vl + 168UL) = 0UL;
- *(u*)(vl + 176UL) = 0UL;
- *(u*)(vl + 184UL) = 0UL;
- v18 = (u)zensure_arr;
- v19 = *(u*)(vl + 0UL);
- v20 = vl + 168UL;
- v21 = vl + 184UL;
- v22 = *(u*)(vl + 176UL) + 2UL;
- v23 = 8UL;
- v24 = ((u(*)())v18)(v19, v20, v21, v22, v23);
- v24;
- return vl;
+ v16 = (u)zas_emit;
+ v17 = va;
+ v18 = vx >> 8UL;
+ v19 = ((u(*)())(v16))(v17, v18);
+ v19;
+ v20 = (u)zas_emit;
+ v21 = va;
+ v22 = vx >> 16UL;
+ v23 = ((u(*)())(v20))(v21, v22);
+ v23;
+ v24 = (u)zas_emit;
+ v25 = va;
+ v26 = vx >> 24UL;
+ v27 = ((u(*)())(v24))(v25, v26);
+ v27;
+ v28 = (u)zas_emit;
+ v29 = va;
+ v30 = vx >> 32UL;
+ v31 = ((u(*)())(v28))(v29, v30);
+ v31;
+ v32 = (u)zas_emit;
+ v33 = va;
+ v34 = vx >> 40UL;
+ v35 = ((u(*)())(v32))(v33, v34);
+ v35;
+ v36 = (u)zas_emit;
+ v37 = va;
+ v38 = vx >> 48UL;
+ v39 = ((u(*)())(v36))(v37, v38);
+ v39;
+ v40 = (u)zas_emit;
+ v41 = va;
+ v42 = vx >> 56UL;
+ v43 = ((u(*)())(v40))(v41, v42);
+ v43;
+ return 0UL;
+b3: goto b1;
}
-u zsetup_parser(u vc, u verr) {
- u vp = 0;
+u zx86_64_output_ir(u vc, u vd) {
+ u vic = 0;
u v3 = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
- v3 = (u)zalloc;
- v4 = *(u*)(vc + 0UL);
- v5 = 24UL;
- v6 = ((u(*)())v3)(v4, v5);
- vp = v6;
- *(u*)(vp + 0UL) = *(u*)(vc + 0UL);
- *(u*)(vp + 8UL) = vc;
- *(u*)(vp + 16UL) = verr;
- return vp;
-}
-u zshow_node(u vout, u vn) {
- u vi = 0;
- u vch = 0;
- u vhex = 0;
- u v5 = 0;
- u v6 = 0;
u v7 = 0;
u v8 = 0;
u v9 = 0;
@@ -45850,156 +51529,110 @@ u zshow_node(u vout, u vn) {
u v73 = 0;
u v74 = 0;
u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- vhex = (u)"0123456789abcdef";
- if (!vn) goto b5;
- v5 = 0UL;
-b6: if (!v5) goto b3;
- return 0UL;
-b3: v6 = (u)zfputc;
- v7 = vout;
- v8 = 40UL;
- v9 = ((u(*)())v6)(v7, v8);
- v9;
- v10 = (u)zfputs;
- v11 = vout;
- v13 = (u)znode_to_str;
- v14 = *(u*)(vn + 0UL);
- v15 = ((u(*)())v13)(v14);
- v12 = v15;
- v16 = ((u(*)())v10)(v11, v12);
- v16;
- if (*(u*)(vn + 0UL) != 1UL) goto b12;
- v17 = (u)zfputc;
- v18 = vout;
- v19 = 32UL;
- v20 = ((u(*)())v17)(v18, v19);
- v20;
- v21 = (u)zfputd;
- v22 = vout;
- v23 = *(u*)(vn + 48UL);
- v24 = ((u(*)())v21)(v22, v23);
+ vic = *(u*)(vd + 112UL);
+ *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vic + 32UL);
+ *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vic + 40UL);
+ *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vic + 48UL);
+ *(u*)(*(u*)(vic + 8UL) + 88UL) = *(u*)(vic + 32UL);
+ *(u*)(*(u*)(vic + 8UL) + 96UL) = *(u*)(vic + 40UL);
+ v3 = (u)zfixup_label;
+ v4 = *(u*)(vc + 48UL);
+ v5 = *(u*)(vd + 88UL);
+ v6 = ((u(*)())(v3))(v4, v5);
+ v6;
+ v7 = (u)zadd_symbol;
+ v8 = *(u*)(vc + 48UL);
+ v9 = *(u*)(vd + 32UL);
+ v10 = *(u*)(vd + 88UL);
+ v11 = ((u(*)())(v7))(v8, v9, v10);
+ v11;
+ v12 = (u)zstrcmp;
+ v13 = *(u*)(vd + 32UL);
+ v14 = (u)"_start";
+ v15 = ((u(*)())(v12))(v13, v14);
+ if (v15 != 0UL) goto b5;
+ v16 = (u)zx86_64_modrm;
+ v17 = *(u*)(vc + 48UL);
+ v18 = 139UL;
+ v19 = 7UL;
+ v20 = 4UL;
+ v21 = 0UL;
+ v22 = 0UL;
+ v23 = 0UL;
+ v24 = ((u(*)())(v16))(v17, v18, v19, v20, v21, v22, v23);
v24;
-b10: if (!*(u*)(vn + 56UL)) goto b17;
- v25 = (u)zfputc;
- v26 = vout;
- v27 = 32UL;
- v28 = ((u(*)())v25)(v26, v27);
- v28;
- v29 = (u)zfputc;
- v30 = vout;
- v31 = 34UL;
- v32 = ((u(*)())v29)(v30, v31);
- v32;
- vi = 0UL;
-b20: vch = (u)*(b*)(*(u*)(vn + 56UL) + vi * 1UL);
- if (!vch) goto b26;
- v33 = 0UL;
-b27: if (!v33) goto b24;
- v57 = (u)zfputc;
- v58 = vout;
- v59 = 34UL;
- v60 = ((u(*)())v57)(v58, v59);
- v60;
-b15: if (!*(u*)(vn + 8UL)) goto b54;
- v61 = (u)zfputc;
- v62 = vout;
- v63 = 32UL;
- v64 = ((u(*)())v61)(v62, v63);
- v64;
- v65 = (u)zshow_node;
- v66 = vout;
- v67 = *(u*)(vn + 8UL);
- v68 = ((u(*)())v65)(v66, v67);
+ v25 = (u)zx86_64_modrm;
+ v26 = *(u*)(vc + 48UL);
+ v27 = 141UL;
+ v28 = 6UL;
+ v29 = 4UL;
+ v30 = 0UL;
+ v31 = 0UL;
+ v32 = 8UL;
+ v33 = ((u(*)())(v25))(v26, v27, v28, v29, v30, v31, v32);
+ v33;
+ v34 = (u)zx86_64_modrm;
+ v35 = *(u*)(vc + 48UL);
+ v36 = 141UL;
+ v37 = 2UL;
+ v38 = 6UL;
+ v39 = 7UL;
+ v40 = 8UL;
+ v41 = 8UL;
+ v42 = ((u(*)())(v34))(v35, v36, v37, v38, v39, v40, v41);
+ v42;
+ v43 = (u)zx86_64_opr;
+ v44 = *(u*)(vc + 48UL);
+ v45 = 80UL;
+ v46 = 5UL;
+ v47 = ((u(*)())(v43))(v44, v45, v46);
+ v47;
+b3: v55 = (u)zx86_64_opr;
+ v56 = *(u*)(vic + 8UL);
+ v57 = 80UL;
+ v58 = 5UL;
+ v59 = ((u(*)())(v55))(v56, v57, v58);
+ v59;
+ v60 = (u)zx86_64_modrr;
+ v61 = *(u*)(vic + 8UL);
+ v62 = 139UL;
+ v63 = 5UL;
+ v64 = 4UL;
+ v65 = ((u(*)())(v60))(v61, v62, v63, v64);
+ v65;
+ v66 = (u)zx86_64_output_irvars;
+ v67 = vic;
+ v68 = ((u(*)())(v66))(v67);
v68;
-b52: if (!*(u*)(vn + 16UL)) goto b59;
- v69 = (u)zfputc;
- v70 = vout;
- v71 = 32UL;
- v72 = ((u(*)())v69)(v70, v71);
+ v69 = (u)zx86_64_output_irblock;
+ v70 = vic;
+ v71 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v72 = ((u(*)())(v69))(v70, v71);
v72;
- v73 = (u)zshow_node;
- v74 = vout;
- v75 = *(u*)(vn + 16UL);
- v76 = ((u(*)())v73)(v74, v75);
- v76;
-b57: v77 = (u)zfputc;
- v78 = vout;
- v79 = 41UL;
- v80 = ((u(*)())v77)(v78, v79);
- v80;
+ v73 = (u)zirreset;
+ v74 = *(u*)(*(u*)(vic + 64UL) + 0UL * 8UL);
+ v75 = ((u(*)())(v73))(v74);
+ v75;
return 0UL;
-b59: goto b57;
-b54: goto b52;
-b24: if ((s)vch >= (s)32UL) goto b40;
- v36 = 1UL;
-b42: if (!v36) goto b36;
- v35 = 1UL;
-b38: if (!v35) goto b32;
- v34 = 1UL;
-b34: if (!v34) goto b30;
- v37 = (u)zfputc;
- v38 = vout;
- v39 = 92UL;
- v40 = ((u(*)())v37)(v38, v39);
- v40;
- v41 = (u)zfputc;
- v42 = vout;
- v43 = 120UL;
- v44 = ((u(*)())v41)(v42, v43);
- v44;
- v45 = (u)zfputc;
- v46 = vout;
- v47 = (u)*(b*)(vhex + (vch >> 4UL) * 1UL);
- v48 = ((u(*)())v45)(v46, v47);
- v48;
- v49 = (u)zfputc;
- v50 = vout;
- v51 = (u)*(b*)(vhex + (vch & 15UL) * 1UL);
- v52 = ((u(*)())v49)(v50, v51);
- v52;
-b28: vi = vi + 1UL;
- goto b20;
-b30: v53 = (u)zfputc;
- v54 = vout;
- v55 = vch;
- v56 = ((u(*)())v53)(v54, v55);
- v56;
- goto b28;
-b32: if (vch != 34UL) goto b45;
- v34 = 1UL;
- goto b34;
-b45: v34 = 0UL;
- goto b34;
-b36: if (vch != 92UL) goto b44;
- v35 = 1UL;
- goto b38;
-b44: v35 = 0UL;
- goto b38;
-b40: if ((s)vch <= (s)127UL) goto b43;
- v36 = 1UL;
- goto b42;
-b43: v36 = 0UL;
- goto b42;
-b26: v33 = 1UL;
- goto b27;
-b17: goto b15;
-b12: goto b10;
-b5: v5 = 1UL;
- goto b6;
+b5: v48 = (u)zstrcmp;
+ v49 = *(u*)(vd + 32UL);
+ v50 = (u)"_kstart";
+ v51 = ((u(*)())(v48))(v49, v50);
+ if (v51 != 0UL) goto b12;
+ v52 = (u)zx86_64_kstart;
+ v53 = *(u*)(vc + 48UL);
+ v54 = ((u(*)())(v52))(v53);
+ v54;
+ goto b3;
+b12: goto b3;
}
-u zstmt_to_ir(u vic, u vn) {
- u vloopctx[4] = {0};
- u vcond_body = 0;
- u vcond_next = 0;
- u vcond_out = 0;
- u vlabel = 0;
- u vvalue = 0;
- u vkind = 0;
+u zx86_64_output_irargs(u vic, u vb, u vo) {
+ u vi = 0;
+ u vop = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
u v9 = 0;
u v10 = 0;
u v11 = 0;
@@ -46046,349 +51679,134 @@ u zstmt_to_ir(u vic, u vn) {
u v52 = 0;
u v53 = 0;
u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- u v60 = 0;
- u v61 = 0;
- u v62 = 0;
- u v63 = 0;
- u v64 = 0;
- u v65 = 0;
- u v66 = 0;
- u v67 = 0;
- u v68 = 0;
- u v69 = 0;
- u v70 = 0;
- u v71 = 0;
- u v72 = 0;
- u v73 = 0;
- u v74 = 0;
- u v75 = 0;
- u v76 = 0;
- u v77 = 0;
- u v78 = 0;
- u v79 = 0;
- u v80 = 0;
- u v81 = 0;
- u v82 = 0;
- u v83 = 0;
- u v84 = 0;
- u v85 = 0;
- u v86 = 0;
- u v87 = 0;
- u v88 = 0;
- u v89 = 0;
- u v90 = 0;
- u v91 = 0;
- u v92 = 0;
- u v93 = 0;
- u v94 = 0;
- u v95 = 0;
- u v96 = 0;
- u v97 = 0;
- u v98 = 0;
- u v99 = 0;
- u v100 = 0;
- u v101 = 0;
- u v102 = 0;
- u v103 = 0;
- u v104 = 0;
- u v105 = 0;
- u v106 = 0;
- u v107 = 0;
- u v108 = 0;
- u v109 = 0;
- u v110 = 0;
- u v111 = 0;
- u v112 = 0;
- u v113 = 0;
- u v114 = 0;
- u v115 = 0;
- u v116 = 0;
- u v117 = 0;
- u v118 = 0;
- u v119 = 0;
- u v120 = 0;
- u v121 = 0;
- u v122 = 0;
- u v123 = 0;
- u v124 = 0;
- u v125 = 0;
- u v126 = 0;
- u v127 = 0;
- u v128 = 0;
- u v129 = 0;
- u v130 = 0;
- u v131 = 0;
- u v132 = 0;
- u v133 = 0;
- if (!vn) goto b5;
- v9 = 0UL;
-b6: if (!v9) goto b3;
+ vi = 0UL;
+b1: if (vi != *(u*)(vb + 16UL)) goto b5;
return 0UL;
-b3: *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vn + 24UL);
- *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vn + 32UL);
- *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vn + 40UL);
- vkind = *(u*)(vn + 0UL);
- if (vkind != 21UL) goto b9;
- v10 = (u)zmkirblock;
- v11 = vic;
- v12 = ((u(*)())v10)(v11);
- vcond_out = v12;
-b11: if (!vn) goto b17;
- v13 = 0UL;
-b18: if (!v13) goto b15;
-b12: v44 = (u)zirjump;
- v45 = vic;
- v46 = vcond_out;
- v47 = vcond_out;
- v48 = ((u(*)())v44)(v45, v46, v47);
- v48;
-b7: return 0UL;
-b15: if (!*(u*)(*(u*)(vn + 8UL) + 8UL)) goto b23;
+b5: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
+ if (*(u*)(vop + 0UL) != 8UL) goto b8;
+ v5 = (u)zx86_64_output_irexpr;
+ v6 = vic;
+ v7 = vb;
+ v8 = *(u*)(vop + 8UL);
+ v9 = ((u(*)())(v5))(v6, v7, v8);
+ v9;
+ if (*(u*)(vop + 24UL) != 0UL) goto b12;
+ v10 = (u)zx86_64_modrr;
+ v11 = *(u*)(vic + 8UL);
+ v12 = 139UL;
+ v13 = 7UL;
v14 = 0UL;
-b24: if (!v14) goto b21;
- v15 = (u)zstmt_to_ir;
- v16 = vic;
- v17 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v18 = ((u(*)())v15)(v16, v17);
- v18;
- goto b12;
-b21: v19 = (u)zmkirblock;
- v20 = vic;
- v21 = ((u(*)())v19)(v20);
- vcond_body = v21;
- v22 = (u)zmkirblock;
- v23 = vic;
- v24 = ((u(*)())v22)(v23);
- vcond_next = v24;
- v25 = (u)zexpr_to_ir;
- v26 = vic;
- v27 = *(u*)(*(u*)(vn + 8UL) + 8UL);
- v28 = ((u(*)())v25)(v26, v27);
- vvalue = v28;
- v29 = (u)zirbranch;
- v30 = vic;
- v31 = vvalue;
- v32 = vcond_next;
- v33 = vcond_body;
- v34 = ((u(*)())v29)(v30, v31, v32, v33);
- v34;
- v35 = (u)zstmt_to_ir;
- v36 = vic;
- v37 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v38 = ((u(*)())v35)(v36, v37);
- v38;
- v39 = (u)zirjump;
- v40 = vic;
- v41 = vcond_out;
- v42 = vcond_next;
- v43 = ((u(*)())v39)(v40, v41, v42);
- v43;
- vn = *(u*)(vn + 16UL);
- goto b11;
-b23: v14 = 1UL;
- goto b24;
-b17: v13 = 1UL;
- goto b18;
-b9: if (vkind != 5UL) goto b34;
-b35: if (!vn) goto b41;
+ v15 = ((u(*)())(v10))(v11, v12, v13, v14);
+ v15;
+b10:b6: vi = vi + 1UL;
+ goto b1;
+b12: if (*(u*)(vop + 24UL) != 1UL) goto b15;
+ v16 = (u)zx86_64_modrr;
+ v17 = *(u*)(vic + 8UL);
+ v18 = 139UL;
+ v19 = 6UL;
+ v20 = 0UL;
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ v21;
+ goto b10;
+b15: if (*(u*)(vop + 24UL) != 2UL) goto b18;
+ v22 = (u)zx86_64_modrr;
+ v23 = *(u*)(vic + 8UL);
+ v24 = 139UL;
+ v25 = 2UL;
+ v26 = 0UL;
+ v27 = ((u(*)())(v22))(v23, v24, v25, v26);
+ v27;
+ goto b10;
+b18: if (*(u*)(vop + 24UL) != 3UL) goto b21;
+ v28 = (u)zx86_64_modrr;
+ v29 = *(u*)(vic + 8UL);
+ v30 = 139UL;
+ v31 = 1UL;
+ v32 = 0UL;
+ v33 = ((u(*)())(v28))(v29, v30, v31, v32);
+ v33;
+ goto b10;
+b21: if (*(u*)(vop + 24UL) != 4UL) goto b24;
+ v34 = (u)zx86_64_modrr;
+ v35 = *(u*)(vic + 8UL);
+ v36 = 139UL;
+ v37 = 8UL;
+ v38 = 0UL;
+ v39 = ((u(*)())(v34))(v35, v36, v37, v38);
+ v39;
+ goto b10;
+b24: if (*(u*)(vop + 24UL) != 5UL) goto b27;
+ v40 = (u)zx86_64_modrr;
+ v41 = *(u*)(vic + 8UL);
+ v42 = 139UL;
+ v43 = 9UL;
+ v44 = 0UL;
+ v45 = ((u(*)())(v40))(v41, v42, v43, v44);
+ v45;
+ goto b10;
+b27: v46 = (u)zx86_64_modrm;
+ v47 = *(u*)(vic + 8UL);
+ v48 = 137UL;
v49 = 0UL;
-b42: if (!v49) goto b39;
- goto b7;
-b39: v50 = (u)zstmt_to_ir;
- v51 = vic;
- v52 = *(u*)(vn + 8UL);
- v53 = ((u(*)())v50)(v51, v52);
- v53;
- vn = *(u*)(vn + 16UL);
- goto b35;
-b41: v49 = 1UL;
- goto b42;
-b34: if (vkind != 26UL) goto b45;
- *(u*)((u)vloopctx + 0UL) = *(u*)(vic + 56UL);
- v54 = (u)zmkirblock;
- v55 = vic;
- v56 = ((u(*)())v54)(v55);
- *(u*)((u)vloopctx + 8UL) = v56;
- v57 = (u)zmkirblock;
- v58 = vic;
- v59 = ((u(*)())v57)(v58);
- *(u*)((u)vloopctx + 16UL) = v59;
- *(u*)(vic + 56UL) = (u)vloopctx;
- v60 = (u)zirjump;
- v61 = vic;
- v62 = *(u*)((u)vloopctx + 8UL);
- v63 = *(u*)((u)vloopctx + 8UL);
- v64 = ((u(*)())v60)(v61, v62, v63);
- v64;
- v65 = (u)zstmt_to_ir;
- v66 = vic;
- v67 = *(u*)(vn + 8UL);
- v68 = ((u(*)())v65)(v66, v67);
- v68;
- v69 = (u)zirjump;
- v70 = vic;
- v71 = *(u*)((u)vloopctx + 8UL);
- v72 = *(u*)((u)vloopctx + 16UL);
- v73 = ((u(*)())v69)(v70, v71, v72);
- v73;
- *(u*)(vic + 56UL) = *(u*)((u)vloopctx + 0UL);
- goto b7;
-b45: if (vkind != 27UL) goto b52;
- if (!*(u*)(vic + 56UL)) goto b57;
- v74 = 0UL;
-b58: if (!v74) goto b55;
- v75 = (u)zcdie;
- v76 = *(u*)(vic + 0UL);
- v77 = (u)"break not in loop";
- v78 = ((u(*)())v75)(v76, v77);
- v78;
-b53: v79 = (u)zirjump;
- v80 = vic;
- v81 = *(u*)(*(u*)(vic + 56UL) + 16UL);
- v82 = 0UL;
- v83 = ((u(*)())v79)(v80, v81, v82);
- v83;
- goto b7;
-b55: goto b53;
-b57: v74 = 1UL;
- goto b58;
-b52: if (vkind != 28UL) goto b62;
- if (!*(u*)(vic + 56UL)) goto b67;
- v84 = 0UL;
-b68: if (!v84) goto b65;
- v85 = (u)zcdie;
- v86 = *(u*)(vic + 0UL);
- v87 = (u)"continue not in loop";
- v88 = ((u(*)())v85)(v86, v87);
- v88;
-b63: v89 = (u)zirjump;
- v90 = vic;
- v91 = *(u*)(*(u*)(vic + 56UL) + 8UL);
- v92 = 0UL;
- v93 = ((u(*)())v89)(v90, v91, v92);
- v93;
- goto b7;
-b65: goto b63;
-b67: v84 = 1UL;
- goto b68;
-b62: if (vkind != 29UL) goto b72;
- if (!*(u*)(vn + 8UL)) goto b75;
- v94 = (u)zexpr_to_ir;
- v95 = vic;
- v96 = *(u*)(vn + 8UL);
- v97 = ((u(*)())v94)(v95, v96);
- vvalue = v97;
-b73: v102 = (u)zirreturn;
- v103 = vic;
- v104 = vvalue;
- v105 = ((u(*)())v102)(v103, v104);
- v105;
- goto b7;
-b75: v98 = (u)zmkirconst;
- v99 = vic;
- v100 = 0UL;
- v101 = ((u(*)())v98)(v99, v100);
- vvalue = v101;
- goto b73;
-b72: if (vkind != 31UL) goto b80;
- v106 = (u)zirfind_block;
- v107 = vic;
- v108 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v109 = 0UL;
- v110 = ((u(*)())v106)(v107, v108, v109);
- vlabel = v110;
- v111 = (u)zirjump;
- v112 = vic;
- v113 = vlabel;
- v114 = vlabel;
- v115 = ((u(*)())v111)(v112, v113, v114);
- v115;
- goto b7;
-b80: if (vkind != 32UL) goto b84;
- v116 = (u)zirfind_block;
- v117 = vic;
- v118 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v119 = 0UL;
- v120 = ((u(*)())v116)(v117, v118, v119);
- vlabel = v120;
- v121 = (u)zirjump;
- v122 = vic;
- v123 = vlabel;
- v124 = 0UL;
- v125 = ((u(*)())v121)(v122, v123, v124);
- v125;
- goto b7;
-b84: if (vkind != 30UL) goto b88;
- goto b7;
-b88: v126 = (u)zexpr_to_ir;
- v127 = vic;
- v128 = vn;
- v129 = ((u(*)())v126)(v127, v128);
- vvalue = v129;
- v130 = (u)ziraddop;
- v131 = vic;
- v132 = vvalue;
- v133 = ((u(*)())v130)(v131, v132);
- v133;
- goto b7;
-b5: v9 = 1UL;
- goto b6;
+ v50 = 4UL;
+ v51 = 0UL;
+ v52 = 0UL;
+ v53 = (*(u*)(vop + 24UL) - 6UL) * 8UL;
+ v54 = ((u(*)())(v46))(v47, v48, v49, v50, v51, v52, v53);
+ v54;
+ goto b10;
+b8: goto b6;
}
-u zstrcmp(u va, u vb) {
+u zx86_64_output_irblock(u vic, u vb) {
+ u vop = 0;
u vi = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ *(u*)(vb + 80UL) = 1UL;
+ if (!(*(u*)(vb + 32UL))) goto b5;
+ v4 = 0UL;
+b6: if (!(v4)) goto b3;
+ v5 = (u)zcdie;
+ v6 = *(u*)(vic + 0UL);
+ v7 = (u)"no return in function";
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+b1: v9 = (u)zfixup_label;
+ v10 = *(u*)(vic + 8UL);
+ v11 = *(u*)(vb + 72UL);
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
vi = 0UL;
-b1: if ((s)(u)*(b*)(va + vi * 1UL) <= (s)(u)*(b*)(vb + vi * 1UL)) goto b5;
- return 1UL;
-b5: if ((s)(u)*(b*)(va + vi * 1UL) >= (s)(u)*(b*)(vb + vi * 1UL)) goto b8;
- return -1UL;
-b8: if ((u)*(b*)(va + vi * 1UL) != 0UL) goto b11;
+b9: if (vi != *(u*)(vb + 16UL)) goto b13;
return 0UL;
-b11: vi = vi + 1UL;
- goto b1;
-}
-u zstrlen(u vs) {
- u vret = 0;
- vret = 0UL;
-b1: if ((u)*(b*)(vs + vret * 1UL) != 0UL) goto b5;
- return vret;
-b5: vret = vret + 1UL;
- goto b1;
-}
-/* no glue for syscall using stdlib */
-u ztype_isint(u vt) {
- u v1 = 0;
- if (*(u*)(vt + 0UL) != 2UL) goto b2;
- v1 = 1UL;
-b4: return v1;
-b2: if (*(u*)(vt + 0UL) != 3UL) goto b5;
- v1 = 1UL;
- goto b4;
-b5: v1 = 0UL;
- goto b4;
-}
-u ztype_isprim(u vt) {
- u v1 = 0;
- u v2 = 0;
- if (*(u*)(vt + 0UL) == 1UL) goto b6;
- if (*(u*)(vt + 0UL) == 7UL) goto b6;
- v2 = 1UL;
-b8: if (!v2) goto b2;
- if (*(u*)(vt + 0UL) == 8UL) goto b2;
- v1 = 1UL;
-b4: return v1;
-b2: v1 = 0UL;
- goto b4;
-b6: v2 = 0UL;
- goto b8;
+b13: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
+ v13 = (u)zx86_64_output_irstmt;
+ v14 = vic;
+ v15 = vb;
+ v16 = vop;
+ v17 = ((u(*)())(v13))(v14, v15, v16);
+ v17;
+ vi = vi + 1UL;
+ goto b9;
+b3: goto b1;
+b5: v4 = 1UL;
+ goto b6;
}
-u ztype_sizeof(u vc, u vt) {
- u vkind = 0;
- u v3 = 0;
+u zx86_64_output_ircall(u vic, u vb, u vo) {
+ u vd = 0;
u v4 = 0;
u v5 = 0;
u v6 = 0;
@@ -46400,41 +51818,54 @@ u ztype_sizeof(u vc, u vt) {
u v12 = 0;
u v13 = 0;
u v14 = 0;
- vkind = *(u*)(vt + 0UL);
- if (vkind != 0UL) goto b3;
- return 8UL;
-b3: if (vkind != 2UL) goto b5;
- return 8UL;
-b5: if (vkind != 3UL) goto b7;
- return 8UL;
-b7: if (vkind != 4UL) goto b9;
- return 8UL;
-b9: if (vkind != 6UL) goto b11;
- return 8UL;
-b11: if (vkind != 7UL) goto b13;
- v3 = (u)zlayout_struct;
- v4 = vc;
- v5 = *(u*)(vt + 8UL);
- v6 = ((u(*)())v3)(v4, v5);
- v6;
- return *(u*)(*(u*)(vt + 8UL) + 136UL);
-b13: if (vkind != 8UL) goto b16;
- v7 = (u)zlayout_union;
- v8 = vc;
- v9 = *(u*)(vt + 8UL);
- v10 = ((u(*)())v7)(v8, v9);
- v10;
- return *(u*)(*(u*)(vt + 8UL) + 136UL);
-b16: v11 = (u)zcdie;
- v12 = vc;
- v13 = (u)"sizeof: invalid type";
- v14 = ((u(*)())v11)(v12, v13);
- v14;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ v4 = (u)zfind;
+ v5 = *(u*)(vic + 0UL);
+ v6 = *(u*)(vo + 32UL);
+ v7 = 0UL;
+ v8 = 0UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vd = v9;
+ if (!(vd)) goto b10;
+ v11 = 0UL;
+b11: if (!(v11)) goto b6;
+ v10 = 1UL;
+b8: if (!(v10)) goto b4;
+ v13 = (u)zcdie;
+ v14 = *(u*)(vic + 0UL);
+ v15 = (u)"no such function";
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+b2: v17 = (u)zx86_64_jmp;
+ v18 = *(u*)(vic + 8UL);
+ v19 = 232UL;
+ v20 = *(u*)(vd + 88UL);
+ v21 = ((u(*)())(v17))(v18, v19, v20);
+ v21;
return 0UL;
+b4: goto b2;
+b6: if (!(*(u*)(vd + 72UL))) goto b14;
+ v12 = 0UL;
+b15: if (!(v12)) goto b12;
+ v10 = 1UL;
+ goto b8;
+b12: v10 = 0UL;
+ goto b8;
+b14: v12 = 1UL;
+ goto b15;
+b10: v11 = 1UL;
+ goto b11;
}
-u ztypecheck_expr(u vc, u vd, u vn, u vrhs) {
- u vv = 0;
+u zx86_64_output_irexpr(u vic, u vb, u vo) {
u vkind = 0;
+ u v4 = 0;
+ u v5 = 0;
u v6 = 0;
u v7 = 0;
u v8 = 0;
@@ -46934,2108 +52365,1763 @@ u ztypecheck_expr(u vc, u vd, u vn, u vrhs) {
u v502 = 0;
u v503 = 0;
u v504 = 0;
- u v505 = 0;
- u v506 = 0;
- u v507 = 0;
- u v508 = 0;
- u v509 = 0;
- u v510 = 0;
- u v511 = 0;
- u v512 = 0;
- u v513 = 0;
- u v514 = 0;
- u v515 = 0;
- u v516 = 0;
- u v517 = 0;
- u v518 = 0;
- u v519 = 0;
- u v520 = 0;
- u v521 = 0;
- u v522 = 0;
- u v523 = 0;
- u v524 = 0;
- u v525 = 0;
- u v526 = 0;
- u v527 = 0;
- u v528 = 0;
- u v529 = 0;
- u v530 = 0;
- u v531 = 0;
- u v532 = 0;
- u v533 = 0;
- u v534 = 0;
- u v535 = 0;
- u v536 = 0;
- u v537 = 0;
- u v538 = 0;
- u v539 = 0;
- u v540 = 0;
- u v541 = 0;
- u v542 = 0;
- u v543 = 0;
- u v544 = 0;
- u v545 = 0;
- u v546 = 0;
- u v547 = 0;
- u v548 = 0;
- u v549 = 0;
- u v550 = 0;
- u v551 = 0;
- u v552 = 0;
- u v553 = 0;
- u v554 = 0;
- u v555 = 0;
- u v556 = 0;
- u v557 = 0;
- u v558 = 0;
- u v559 = 0;
- u v560 = 0;
- u v561 = 0;
- u v562 = 0;
- u v563 = 0;
- u v564 = 0;
- u v565 = 0;
- u v566 = 0;
- u v567 = 0;
- u v568 = 0;
- u v569 = 0;
- u v570 = 0;
- u v571 = 0;
- u v572 = 0;
- u v573 = 0;
- u v574 = 0;
- u v575 = 0;
- u v576 = 0;
- u v577 = 0;
- u v578 = 0;
- u v579 = 0;
- u v580 = 0;
- u v581 = 0;
- u v582 = 0;
- u v583 = 0;
- u v584 = 0;
- u v585 = 0;
- u v586 = 0;
- u v587 = 0;
- u v588 = 0;
- u v589 = 0;
- u v590 = 0;
- u v591 = 0;
- u v592 = 0;
- u v593 = 0;
- u v594 = 0;
- u v595 = 0;
- u v596 = 0;
- u v597 = 0;
- u v598 = 0;
- u v599 = 0;
- u v600 = 0;
- u v601 = 0;
- u v602 = 0;
- u v603 = 0;
- u v604 = 0;
- u v605 = 0;
- u v606 = 0;
- u v607 = 0;
- u v608 = 0;
- u v609 = 0;
- u v610 = 0;
- u v611 = 0;
- u v612 = 0;
- u v613 = 0;
- u v614 = 0;
- u v615 = 0;
- u v616 = 0;
- u v617 = 0;
- u v618 = 0;
- u v619 = 0;
- u v620 = 0;
- u v621 = 0;
- u v622 = 0;
- u v623 = 0;
- u v624 = 0;
- u v625 = 0;
- u v626 = 0;
- u v627 = 0;
- u v628 = 0;
- u v629 = 0;
- u v630 = 0;
- u v631 = 0;
- u v632 = 0;
- u v633 = 0;
- u v634 = 0;
- u v635 = 0;
- u v636 = 0;
- u v637 = 0;
- u v638 = 0;
- u v639 = 0;
- u v640 = 0;
- u v641 = 0;
- u v642 = 0;
- u v643 = 0;
- u v644 = 0;
- u v645 = 0;
- u v646 = 0;
- u v647 = 0;
- u v648 = 0;
- u v649 = 0;
- u v650 = 0;
- u v651 = 0;
- u v652 = 0;
- u v653 = 0;
- u v654 = 0;
- u v655 = 0;
- u v656 = 0;
- u v657 = 0;
- u v658 = 0;
- u v659 = 0;
- u v660 = 0;
- u v661 = 0;
- u v662 = 0;
- u v663 = 0;
- u v664 = 0;
- u v665 = 0;
- u v666 = 0;
- u v667 = 0;
- u v668 = 0;
- u v669 = 0;
- u v670 = 0;
- u v671 = 0;
- u v672 = 0;
- u v673 = 0;
- u v674 = 0;
- u v675 = 0;
- u v676 = 0;
- u v677 = 0;
- u v678 = 0;
- u v679 = 0;
- u v680 = 0;
- u v681 = 0;
- u v682 = 0;
- u v683 = 0;
- u v684 = 0;
- u v685 = 0;
- u v686 = 0;
- u v687 = 0;
- u v688 = 0;
- u v689 = 0;
- u v690 = 0;
- u v691 = 0;
- u v692 = 0;
- u v693 = 0;
- u v694 = 0;
- u v695 = 0;
- u v696 = 0;
- u v697 = 0;
- u v698 = 0;
- u v699 = 0;
- u v700 = 0;
- u v701 = 0;
- u v702 = 0;
- u v703 = 0;
- u v704 = 0;
- u v705 = 0;
- u v706 = 0;
- u v707 = 0;
- u v708 = 0;
- u v709 = 0;
- u v710 = 0;
- u v711 = 0;
- u v712 = 0;
- u v713 = 0;
- u v714 = 0;
- u v715 = 0;
- u v716 = 0;
- u v717 = 0;
- u v718 = 0;
- u v719 = 0;
- u v720 = 0;
- u v721 = 0;
- u v722 = 0;
- u v723 = 0;
- u v724 = 0;
- u v725 = 0;
- u v726 = 0;
- u v727 = 0;
- u v728 = 0;
- u v729 = 0;
- u v730 = 0;
- u v731 = 0;
- u v732 = 0;
- u v733 = 0;
- u v734 = 0;
- u v735 = 0;
- u v736 = 0;
- u v737 = 0;
- u v738 = 0;
- u v739 = 0;
- u v740 = 0;
- u v741 = 0;
- u v742 = 0;
- u v743 = 0;
- u v744 = 0;
- u v745 = 0;
- u v746 = 0;
- u v747 = 0;
- u v748 = 0;
- u v749 = 0;
- u v750 = 0;
- u v751 = 0;
- u v752 = 0;
- u v753 = 0;
- u v754 = 0;
- u v755 = 0;
- u v756 = 0;
- u v757 = 0;
- u v758 = 0;
- u v759 = 0;
- u v760 = 0;
- u v761 = 0;
- u v762 = 0;
- u v763 = 0;
- u v764 = 0;
- u v765 = 0;
- u v766 = 0;
- u v767 = 0;
- u v768 = 0;
- u v769 = 0;
- u v770 = 0;
- u v771 = 0;
- u v772 = 0;
- u v773 = 0;
- u v774 = 0;
- u v775 = 0;
- u v776 = 0;
- u v777 = 0;
- u v778 = 0;
- u v779 = 0;
- u v780 = 0;
- u v781 = 0;
- u v782 = 0;
- u v783 = 0;
- u v784 = 0;
- u v785 = 0;
- u v786 = 0;
- u v787 = 0;
- u v788 = 0;
- u v789 = 0;
- u v790 = 0;
- u v791 = 0;
- u v792 = 0;
- u v793 = 0;
- u v794 = 0;
- u v795 = 0;
- u v796 = 0;
- u v797 = 0;
- u v798 = 0;
- u v799 = 0;
- u v800 = 0;
- u v801 = 0;
- u v802 = 0;
- u v803 = 0;
- u v804 = 0;
- u v805 = 0;
- u v806 = 0;
- u v807 = 0;
- u v808 = 0;
- u v809 = 0;
- u v810 = 0;
- u v811 = 0;
- u v812 = 0;
- u v813 = 0;
- u v814 = 0;
- u v815 = 0;
- u v816 = 0;
- u v817 = 0;
- u v818 = 0;
- u v819 = 0;
- u v820 = 0;
- u v821 = 0;
- u v822 = 0;
- u v823 = 0;
- u v824 = 0;
- u v825 = 0;
- u v826 = 0;
- u v827 = 0;
- u v828 = 0;
- u v829 = 0;
- u v830 = 0;
- u v831 = 0;
- u v832 = 0;
- u v833 = 0;
- u v834 = 0;
- u v835 = 0;
- u v836 = 0;
- u v837 = 0;
- u v838 = 0;
- u v839 = 0;
- u v840 = 0;
- u v841 = 0;
- u v842 = 0;
- u v843 = 0;
- u v844 = 0;
- u v845 = 0;
- u v846 = 0;
- u v847 = 0;
- u v848 = 0;
- u v849 = 0;
- u v850 = 0;
- u v851 = 0;
- u v852 = 0;
- u v853 = 0;
- u v854 = 0;
- u v855 = 0;
- u v856 = 0;
- u v857 = 0;
- u v858 = 0;
- u v859 = 0;
- u v860 = 0;
- u v861 = 0;
- u v862 = 0;
- u v863 = 0;
- u v864 = 0;
- u v865 = 0;
- u v866 = 0;
- u v867 = 0;
- u v868 = 0;
- u v869 = 0;
- u v870 = 0;
- u v871 = 0;
- u v872 = 0;
- u v873 = 0;
- u v874 = 0;
- u v875 = 0;
- u v876 = 0;
- u v877 = 0;
- u v878 = 0;
- u v879 = 0;
- u v880 = 0;
- u v881 = 0;
- u v882 = 0;
- u v883 = 0;
- u v884 = 0;
- u v885 = 0;
- u v886 = 0;
- u v887 = 0;
- u v888 = 0;
- u v889 = 0;
- u v890 = 0;
- u v891 = 0;
- u v892 = 0;
- u v893 = 0;
- u v894 = 0;
- u v895 = 0;
- u v896 = 0;
- u v897 = 0;
- u v898 = 0;
- u v899 = 0;
- u v900 = 0;
- u v901 = 0;
- u v902 = 0;
- u v903 = 0;
- u v904 = 0;
- u v905 = 0;
- u v906 = 0;
- u v907 = 0;
- u v908 = 0;
- u v909 = 0;
- u v910 = 0;
- u v911 = 0;
- u v912 = 0;
- u v913 = 0;
- u v914 = 0;
- u v915 = 0;
- u v916 = 0;
- u v917 = 0;
- u v918 = 0;
- u v919 = 0;
- u v920 = 0;
- u v921 = 0;
- u v922 = 0;
- u v923 = 0;
- u v924 = 0;
- u v925 = 0;
- u v926 = 0;
- u v927 = 0;
- u v928 = 0;
- u v929 = 0;
- u v930 = 0;
- u v931 = 0;
- u v932 = 0;
- u v933 = 0;
- u v934 = 0;
- u v935 = 0;
- u v936 = 0;
- u v937 = 0;
- u v938 = 0;
- u v939 = 0;
- u v940 = 0;
- u v941 = 0;
- u v942 = 0;
- u v943 = 0;
- u v944 = 0;
- u v945 = 0;
- u v946 = 0;
- u v947 = 0;
- u v948 = 0;
- u v949 = 0;
- u v950 = 0;
- u v951 = 0;
- u v952 = 0;
- u v953 = 0;
- u v954 = 0;
- u v955 = 0;
- u v956 = 0;
- u v957 = 0;
- u v958 = 0;
- u v959 = 0;
- u v960 = 0;
- u v961 = 0;
- u v962 = 0;
- u v963 = 0;
- u v964 = 0;
- u v965 = 0;
- u v966 = 0;
- u v967 = 0;
- u v968 = 0;
- u v969 = 0;
- u v970 = 0;
- *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
- *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
- *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
- vkind = *(u*)(vn + 0UL);
- if (vkind != 3UL) goto b3;
- if (!vrhs) goto b8;
- v6 = 0UL;
-b9: if (!v6) goto b6;
- v7 = (u)zcdie;
- v8 = vc;
- v9 = (u)"str is not an lexpr";
- v10 = ((u(*)())v7)(v8, v9);
- v10;
-b4: v11 = (u)zmktype1;
- v12 = vc;
- v13 = 4UL;
- v15 = (u)zmktype0;
- v16 = vc;
- v17 = 3UL;
- v18 = ((u(*)())v15)(v16, v17);
- v14 = v18;
- v19 = ((u(*)())v11)(v12, v13, v14);
- *(u*)(vn + 64UL) = v19;
-b1: return 0UL;
-b6: goto b4;
-b8: v6 = 1UL;
- goto b9;
-b3: if (vkind != 4UL) goto b14;
- if (!vrhs) goto b19;
- v20 = 0UL;
-b20: if (!v20) goto b17;
- v21 = (u)zcdie;
- v22 = vc;
- v23 = (u)"nil is not an lexpr";
- v24 = ((u(*)())v21)(v22, v23);
- v24;
-b15: v25 = (u)zmktype0;
- v26 = vc;
- v27 = 0UL;
- v28 = ((u(*)())v25)(v26, v27);
- *(u*)(vn + 64UL) = v28;
- goto b1;
-b17: goto b15;
-b19: v20 = 1UL;
+ u v505 = 0;
+ u v506 = 0;
+ u v507 = 0;
+ u v508 = 0;
+ u v509 = 0;
+ u v510 = 0;
+ u v511 = 0;
+ u v512 = 0;
+ u v513 = 0;
+ u v514 = 0;
+ u v515 = 0;
+ u v516 = 0;
+ u v517 = 0;
+ u v518 = 0;
+ u v519 = 0;
+ u v520 = 0;
+ u v521 = 0;
+ u v522 = 0;
+ u v523 = 0;
+ u v524 = 0;
+ u v525 = 0;
+ u v526 = 0;
+ u v527 = 0;
+ u v528 = 0;
+ u v529 = 0;
+ u v530 = 0;
+ u v531 = 0;
+ u v532 = 0;
+ u v533 = 0;
+ u v534 = 0;
+ u v535 = 0;
+ u v536 = 0;
+ u v537 = 0;
+ u v538 = 0;
+ u v539 = 0;
+ u v540 = 0;
+ u v541 = 0;
+ u v542 = 0;
+ u v543 = 0;
+ u v544 = 0;
+ u v545 = 0;
+ u v546 = 0;
+ u v547 = 0;
+ u v548 = 0;
+ u v549 = 0;
+ u v550 = 0;
+ u v551 = 0;
+ u v552 = 0;
+ u v553 = 0;
+ u v554 = 0;
+ u v555 = 0;
+ u v556 = 0;
+ u v557 = 0;
+ u v558 = 0;
+ u v559 = 0;
+ u v560 = 0;
+ u v561 = 0;
+ u v562 = 0;
+ u v563 = 0;
+ u v564 = 0;
+ u v565 = 0;
+ u v566 = 0;
+ u v567 = 0;
+ u v568 = 0;
+ u v569 = 0;
+ u v570 = 0;
+ u v571 = 0;
+ u v572 = 0;
+ u v573 = 0;
+ u v574 = 0;
+ u v575 = 0;
+ u v576 = 0;
+ u v577 = 0;
+ u v578 = 0;
+ u v579 = 0;
+ u v580 = 0;
+ u v581 = 0;
+ u v582 = 0;
+ u v583 = 0;
+ u v584 = 0;
+ u v585 = 0;
+ u v586 = 0;
+ u v587 = 0;
+ u v588 = 0;
+ u v589 = 0;
+ u v590 = 0;
+ u v591 = 0;
+ u v592 = 0;
+ u v593 = 0;
+ u v594 = 0;
+ u v595 = 0;
+ u v596 = 0;
+ u v597 = 0;
+ u v598 = 0;
+ u v599 = 0;
+ u v600 = 0;
+ u v601 = 0;
+ u v602 = 0;
+ u v603 = 0;
+ u v604 = 0;
+ u v605 = 0;
+ u v606 = 0;
+ u v607 = 0;
+ u v608 = 0;
+ u v609 = 0;
+ u v610 = 0;
+ u v611 = 0;
+ u v612 = 0;
+ u v613 = 0;
+ u v614 = 0;
+ u v615 = 0;
+ u v616 = 0;
+ u v617 = 0;
+ u v618 = 0;
+ u v619 = 0;
+ u v620 = 0;
+ u v621 = 0;
+ u v622 = 0;
+ u v623 = 0;
+ u v624 = 0;
+ u v625 = 0;
+ u v626 = 0;
+ u v627 = 0;
+ u v628 = 0;
+ u v629 = 0;
+ u v630 = 0;
+ u v631 = 0;
+ u v632 = 0;
+ u v633 = 0;
+ u v634 = 0;
+ u v635 = 0;
+ u v636 = 0;
+ u v637 = 0;
+ u v638 = 0;
+ u v639 = 0;
+ u v640 = 0;
+ u v641 = 0;
+ u v642 = 0;
+ u v643 = 0;
+ u v644 = 0;
+ u v645 = 0;
+ u v646 = 0;
+ u v647 = 0;
+ u v648 = 0;
+ u v649 = 0;
+ u v650 = 0;
+ u v651 = 0;
+ u v652 = 0;
+ u v653 = 0;
+ u v654 = 0;
+ u v655 = 0;
+ u v656 = 0;
+ u v657 = 0;
+ u v658 = 0;
+ u v659 = 0;
+ u v660 = 0;
+ u v661 = 0;
+ u v662 = 0;
+ u v663 = 0;
+ u v664 = 0;
+ u v665 = 0;
+ u v666 = 0;
+ u v667 = 0;
+ u v668 = 0;
+ u v669 = 0;
+ u v670 = 0;
+ u v671 = 0;
+ u v672 = 0;
+ u v673 = 0;
+ u v674 = 0;
+ u v675 = 0;
+ u v676 = 0;
+ u v677 = 0;
+ u v678 = 0;
+ u v679 = 0;
+ u v680 = 0;
+ u v681 = 0;
+ u v682 = 0;
+ u v683 = 0;
+ u v684 = 0;
+ u v685 = 0;
+ u v686 = 0;
+ u v687 = 0;
+ u v688 = 0;
+ u v689 = 0;
+ u v690 = 0;
+ u v691 = 0;
+ u v692 = 0;
+ if (!(vo)) goto b5;
+ v4 = 0UL;
+b6: if (!(v4)) goto b3;
+ v5 = (u)zcdie;
+ v6 = *(u*)(vic + 0UL);
+ v7 = (u)"no expr";
+ v8 = ((u(*)())(v5))(v6, v7);
+ v8;
+b1: vkind = *(u*)(vo + 0UL);
+ if (vkind != 0UL) goto b10;
+ v9 = (u)zx86_64_modrm;
+ v10 = *(u*)(vic + 8UL);
+ v11 = 139UL;
+ v12 = 0UL;
+ v13 = 5UL;
+ v14 = 0UL;
+ v15 = 0UL;
+ v16 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(vo + 24UL) * 8UL) + 40UL);
+ v17 = ((u(*)())(v9))(v10, v11, v12, v13, v14, v15, v16);
+ v17;
+b8: return 0UL;
+b10: if (vkind != 1UL) goto b13;
+ v18 = (u)zx86_64_modrm;
+ v19 = *(u*)(vic + 8UL);
+ v20 = 141UL;
+ v21 = 0UL;
+ v22 = 5UL;
+ v23 = 0UL;
+ v24 = 0UL;
+ v25 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(vo + 24UL) * 8UL) + 40UL);
+ v26 = ((u(*)())(v18))(v19, v20, v21, v22, v23, v24, v25);
+ v26;
+ goto b8;
+b13: if (vkind != 2UL) goto b16;
+ v27 = (u)zx86_64_output_irfuncptr;
+ v28 = vic;
+ v29 = vb;
+ v30 = vo;
+ v31 = ((u(*)())(v27))(v28, v29, v30);
+ v31;
+ goto b8;
+b16: if (vkind != 3UL) goto b19;
+ if (*(u*)(vo + 24UL) != 0UL) goto b22;
+ v32 = (u)zx86_64_modrr;
+ v33 = *(u*)(vic + 8UL);
+ v34 = 51UL;
+ v35 = 0UL;
+ v36 = 0UL;
+ v37 = ((u(*)())(v32))(v33, v34, v35, v36);
+ v37;
+b20: goto b8;
+b22: if ((s)(*(u*)(vo + 24UL)) >= (s)(-1UL >> 33UL)) goto b27;
+ if ((s)(*(u*)(vo + 24UL)) < (s)(-1UL << 31UL)) goto b27;
+ v38 = 1UL;
+b29: if (!(v38)) goto b25;
+ v39 = (u)zx86_64_modri;
+ v40 = *(u*)(vic + 8UL);
+ v41 = 199UL;
+ v42 = 0UL;
+ v43 = *(u*)(vo + 24UL);
+ v44 = ((u(*)())(v39))(v40, v41, v42, v43);
+ v44;
goto b20;
-b14: if (vkind != 1UL) goto b24;
- if (!vrhs) goto b29;
- v29 = 0UL;
-b30: if (!v29) goto b27;
- v30 = (u)zcdie;
- v31 = vc;
- v32 = (u)"num is not an lexpr";
- v33 = ((u(*)())v30)(v31, v32);
- v33;
-b25: v34 = (u)zmktype0;
- v35 = vc;
- v36 = 2UL;
- v37 = ((u(*)())v34)(v35, v36);
- *(u*)(vn + 64UL) = v37;
- goto b1;
-b27: goto b25;
-b29: v29 = 1UL;
- goto b30;
-b24: if (vkind != 2UL) goto b34;
- if (!vrhs) goto b39;
- v38 = 0UL;
-b40: if (!v38) goto b37;
- v39 = (u)zcdie;
- v40 = vc;
- v41 = (u)"char is not an lexpr";
- v42 = ((u(*)())v39)(v40, v41);
- v42;
-b35: v43 = (u)zmktype0;
- v44 = vc;
- v45 = 2UL;
- v46 = ((u(*)())v43)(v44, v45);
- *(u*)(vn + 64UL) = v46;
- goto b1;
-b37: goto b35;
-b39: v38 = 1UL;
- goto b40;
-b34: if (vkind != 6UL) goto b44;
- if (!vrhs) goto b49;
- v47 = 0UL;
-b50: if (!v47) goto b47;
- v48 = (u)zcdie;
- v49 = vc;
- v50 = (u)"call is not an lexpr";
- v51 = ((u(*)())v48)(v49, v50);
- v51;
-b45: if (!*(u*)(vn + 16UL)) goto b54;
- v52 = (u)ztypecheck_expr;
- v53 = vc;
- v54 = vd;
- v55 = *(u*)(vn + 16UL);
- v56 = 1UL;
- v57 = ((u(*)())v52)(v53, v54, v55, v56);
- v57;
-b52: v58 = (u)ztypecheck_expr;
- v59 = vc;
- v60 = vd;
- v61 = *(u*)(vn + 8UL);
- v62 = 1UL;
- v63 = ((u(*)())v58)(v59, v60, v61, v62);
- v63;
- if (!*(u*)(vn + 16UL)) goto b59;
- v64 = (u)zmktype2;
- v65 = vc;
- v66 = 5UL;
- v67 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v68 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v69 = ((u(*)())v64)(v65, v66, v67, v68);
- *(u*)(vn + 64UL) = v69;
-b57: goto b1;
-b59: v70 = (u)zmktype1;
- v71 = vc;
- v72 = 5UL;
- v73 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v74 = ((u(*)())v70)(v71, v72, v73);
- *(u*)(vn + 64UL) = v74;
- goto b57;
-b54: goto b52;
-b47: goto b45;
-b49: v47 = 1UL;
- goto b50;
-b44: if (vkind != 7UL) goto b63;
- if (!vrhs) goto b68;
- v75 = 0UL;
-b69: if (!v75) goto b66;
- v76 = (u)zcdie;
- v77 = vc;
- v78 = (u)"call is not an lexpr";
- v79 = ((u(*)())v76)(v77, v78);
- v79;
-b64: if (!*(u*)(vn + 16UL)) goto b73;
- v80 = (u)ztypecheck_expr;
- v81 = vc;
- v82 = vd;
- v83 = *(u*)(vn + 16UL);
- v84 = 1UL;
- v85 = ((u(*)())v80)(v81, v82, v83, v84);
- v85;
-b71: if (*(u*)(*(u*)(vn + 8UL) + 0UL) != 0UL) goto b77;
- v86 = (u)zfind;
- v87 = vc;
- v88 = *(u*)(*(u*)(vn + 8UL) + 56UL);
+b25: v45 = (u)zx86_64_opri64;
+ v46 = *(u*)(vic + 8UL);
+ v47 = 184UL;
+ v48 = 0UL;
+ v49 = *(u*)(vo + 24UL);
+ v50 = ((u(*)())(v45))(v46, v47, v48, v49);
+ v50;
+ goto b20;
+b27: v38 = 0UL;
+ goto b29;
+b19: if (vkind != 4UL) goto b33;
+ v51 = (u)zx86_64_output_irstr;
+ v52 = vic;
+ v53 = vb;
+ v54 = vo;
+ v55 = ((u(*)())(v51))(v52, v53, v54);
+ v55;
+ goto b8;
+b33: if (vkind != 5UL) goto b36;
+ v56 = (u)zx86_64_output_irexpr;
+ v57 = vic;
+ v58 = vb;
+ v59 = *(u*)(vo + 8UL);
+ v60 = ((u(*)())(v56))(v57, v58, v59);
+ v60;
+ if (*(u*)(*(u*)(vo + 48UL) + 0UL) != 3UL) goto b40;
+ v61 = (u)zx86_64_modrr;
+ v62 = *(u*)(vic + 8UL);
+ v63 = 139UL;
+ v64 = 6UL;
+ v65 = 0UL;
+ v66 = ((u(*)())(v61))(v62, v63, v64, v65);
+ v66;
+ v67 = (u)zx86_64_modrr;
+ v68 = *(u*)(vic + 8UL);
+ v69 = 51UL;
+ v70 = 0UL;
+ v71 = 0UL;
+ v72 = ((u(*)())(v67))(v68, v69, v70, v71);
+ v72;
+ v73 = (u)zx86_64_modrm;
+ v74 = *(u*)(vic + 8UL);
+ v75 = 138UL;
+ v76 = 0UL;
+ v77 = 6UL;
+ v78 = 0UL;
+ v79 = 0UL;
+ v80 = 0UL;
+ v81 = ((u(*)())(v73))(v74, v75, v76, v77, v78, v79, v80);
+ v81;
+b38: goto b8;
+b40: v82 = (u)ztype_isprim;
+ v83 = *(u*)(vo + 48UL);
+ v84 = ((u(*)())(v82))(v83);
+ if (!(v84)) goto b45;
+ v85 = (u)zx86_64_modrm;
+ v86 = *(u*)(vic + 8UL);
+ v87 = 139UL;
+ v88 = 0UL;
v89 = 0UL;
v90 = 0UL;
- v91 = ((u(*)())v86)(v87, v88, v89, v90);
- vv = v91;
- if (!vv) goto b83;
- if (!*(u*)(vv + 192UL)) goto b83;
- v92 = 1UL;
-b85: if (!v92) goto b81;
- v93 = (u)zcdie;
- v94 = vc;
- v95 = (u)"type error";
- v96 = ((u(*)())v93)(v94, v95);
- v96;
-b79: v97 = (u)zfind;
- v98 = vc;
- v99 = *(u*)(vd + 32UL);
- v100 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v101 = 0UL;
- v102 = ((u(*)())v97)(v98, v99, v100, v101);
- vv = v102;
- if (!vv) goto b92;
- if (!*(u*)(vv + 208UL)) goto b92;
- v103 = 1UL;
-b94: if (!v103) goto b90;
- *(u*)(*(u*)(vn + 8UL) + 64UL) = *(u*)(vv + 216UL);
-b88:b75: if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 6UL) goto b136;
- v141 = (u)zcdie;
- v142 = vc;
- v143 = (u)"calling not a function";
- v144 = ((u(*)())v141)(v142, v143);
- v144;
-b134: if (!*(u*)(vn + 16UL)) goto b140;
- v145 = (u)zunify;
- v146 = vc;
- v147 = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 24UL);
- v148 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v149 = ((u(*)())v145)(v146, v147, v148);
- v149;
-b138: *(u*)(vn + 64UL) = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL);
- goto b1;
-b140: v150 = (u)zunify;
- v151 = vc;
- v152 = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 24UL);
- v153 = 0UL;
- v154 = ((u(*)())v150)(v151, v152, v153);
- v154;
- goto b138;
-b136: goto b134;
-b90: v105 = (u)zstrcmp;
- v106 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v107 = (u)"_include";
- v108 = ((u(*)())v105)(v106, v107);
- if (!v108) goto b98;
- v104 = 0UL;
-b99: if (!v104) goto b96;
- v109 = (u)zfind;
- v110 = vc;
- v111 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v112 = 0UL;
- v113 = 0UL;
- v114 = ((u(*)())v109)(v110, v111, v112, v113);
- vv = v114;
- if (!vv) goto b110;
+ v91 = 0UL;
+ v92 = 0UL;
+ v93 = ((u(*)())(v85))(v86, v87, v88, v89, v90, v91, v92);
+ v93;
+ goto b38;
+b45: v94 = (u)zcdie;
+ v95 = *(u*)(vic + 0UL);
+ v96 = (u)"invalid load";
+ v97 = ((u(*)())(v94))(v95, v96);
+ v97;
+ goto b38;
+b36: if (vkind != 9UL) goto b50;
+ v98 = (u)zx86_64_output_irexpr;
+ v99 = vic;
+ v100 = vb;
+ v101 = *(u*)(vo + 8UL);
+ v102 = ((u(*)())(v98))(v99, v100, v101);
+ v102;
+ v103 = (u)zx86_64_modr;
+ v104 = *(u*)(vic + 8UL);
+ v105 = 196855UL;
+ v106 = 0UL;
+ v107 = ((u(*)())(v103))(v104, v105, v106);
+ v107;
+ goto b8;
+b50: if (vkind != 10UL) goto b54;
+ v108 = (u)zx86_64_output_irexpr;
+ v109 = vic;
+ v110 = vb;
+ v111 = *(u*)(vo + 8UL);
+ v112 = ((u(*)())(v108))(v109, v110, v111);
+ v112;
+ v113 = (u)zx86_64_modr;
+ v114 = *(u*)(vic + 8UL);
+ v115 = 131319UL;
v116 = 0UL;
-b111: if (!v116) goto b106;
- v115 = 1UL;
-b108: if (!v115) goto b104;
- v118 = (u)zcdie;
- v119 = vc;
- v120 = (u)"no such function";
- v121 = ((u(*)())v118)(v119, v120);
- v121;
-b102: *(u*)(*(u*)(vn + 8UL) + 64UL) = *(u*)(vv + 80UL);
- goto b88;
-b104: goto b102;
-b106: if (!*(u*)(vv + 72UL)) goto b114;
- v117 = 0UL;
-b115: if (!v117) goto b112;
- v115 = 1UL;
- goto b108;
-b112: v115 = 0UL;
- goto b108;
-b114: v117 = 1UL;
- goto b115;
-b110: v116 = 1UL;
- goto b111;
-b96: v122 = (u)zfind;
- v123 = vc;
- v124 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v125 = 0UL;
- v126 = 0UL;
- v127 = ((u(*)())v122)(v123, v124, v125, v126);
- vv = v127;
- if (!vv) goto b126;
- v129 = 0UL;
-b127: if (!v129) goto b122;
- v128 = 1UL;
-b124: if (!v128) goto b120;
- v131 = (u)zcdie;
- v132 = vc;
- v133 = (u)"no such function";
- v134 = ((u(*)())v131)(v132, v133);
- v134;
-b118: *(u*)(*(u*)(vn + 8UL) + 64UL) = *(u*)(vv + 80UL);
- goto b88;
-b120: goto b118;
-b122: if (!*(u*)(vv + 72UL)) goto b130;
- v130 = 0UL;
-b131: if (!v130) goto b128;
- v128 = 1UL;
- goto b124;
-b128: v128 = 0UL;
- goto b124;
-b130: v130 = 1UL;
- goto b131;
-b126: v129 = 1UL;
- goto b127;
-b98: v104 = 1UL;
- goto b99;
-b92: v103 = 0UL;
- goto b94;
-b81: goto b79;
-b83: v92 = 0UL;
- goto b85;
-b77: v135 = (u)ztypecheck_expr;
- v136 = vc;
- v137 = vd;
- v138 = *(u*)(vn + 8UL);
- v139 = 1UL;
- v140 = ((u(*)())v135)(v136, v137, v138, v139);
- v140;
- goto b75;
-b73: goto b71;
-b66: goto b64;
-b68: v75 = 1UL;
- goto b69;
-b63: if (vkind != 9UL) goto b144;
- v155 = (u)ztypecheck_expr;
- v156 = vc;
- v157 = vd;
- v158 = *(u*)(vn + 8UL);
- v159 = 0UL;
- v160 = ((u(*)())v155)(v156, v157, v158, v159);
- v160;
- if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) != 4UL) goto b148;
- if (*(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL) + 0UL) == 7UL) goto b153;
- if (*(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL) + 0UL) == 8UL) goto b153;
- v161 = 1UL;
-b155: if (!v161) goto b151;
- v162 = (u)zcdie;
- v163 = vc;
- v164 = (u)"dot not a struct";
- v165 = ((u(*)())v162)(v163, v164);
- v165;
-b149: v166 = (u)zfind;
- v167 = vc;
- v168 = *(u*)(*(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL) + 8UL) + 32UL);
- v169 = *(u*)(*(u*)(vn + 16UL) + 56UL);
- v170 = 0UL;
- v171 = ((u(*)())v166)(v167, v168, v169, v170);
- vv = v171;
-b146: if (!vv) goto b175;
- v184 = 0UL;
-b176: if (!v184) goto b171;
- v183 = 1UL;
-b173: if (!v183) goto b169;
- v186 = (u)zcdie;
- v187 = vc;
- v188 = (u)"no such member";
- v189 = ((u(*)())v186)(v187, v188);
+ v117 = ((u(*)())(v113))(v114, v115, v116);
+ v117;
+ goto b8;
+b54: if (vkind != 11UL) goto b58;
+ v118 = (u)zx86_64_output_irexpr;
+ v119 = vic;
+ v120 = vb;
+ v121 = *(u*)(vo + 16UL);
+ v122 = ((u(*)())(v118))(v119, v120, v121);
+ v122;
+ v123 = (u)zx86_64_opr;
+ v124 = *(u*)(vic + 8UL);
+ v125 = 80UL;
+ v126 = 0UL;
+ v127 = ((u(*)())(v123))(v124, v125, v126);
+ v127;
+ v128 = (u)zx86_64_output_irexpr;
+ v129 = vic;
+ v130 = vb;
+ v131 = *(u*)(vo + 8UL);
+ v132 = ((u(*)())(v128))(v129, v130, v131);
+ v132;
+ v133 = (u)zx86_64_opr;
+ v134 = *(u*)(vic + 8UL);
+ v135 = 88UL;
+ v136 = 1UL;
+ v137 = ((u(*)())(v133))(v134, v135, v136);
+ v137;
+ v138 = (u)zx86_64_modrr;
+ v139 = *(u*)(vic + 8UL);
+ v140 = 3UL;
+ v141 = 0UL;
+ v142 = 1UL;
+ v143 = ((u(*)())(v138))(v139, v140, v141, v142);
+ v143;
+ goto b8;
+b58: if (vkind != 12UL) goto b65;
+ v144 = (u)zx86_64_output_irexpr;
+ v145 = vic;
+ v146 = vb;
+ v147 = *(u*)(vo + 16UL);
+ v148 = ((u(*)())(v144))(v145, v146, v147);
+ v148;
+ v149 = (u)zx86_64_opr;
+ v150 = *(u*)(vic + 8UL);
+ v151 = 80UL;
+ v152 = 0UL;
+ v153 = ((u(*)())(v149))(v150, v151, v152);
+ v153;
+ v154 = (u)zx86_64_output_irexpr;
+ v155 = vic;
+ v156 = vb;
+ v157 = *(u*)(vo + 8UL);
+ v158 = ((u(*)())(v154))(v155, v156, v157);
+ v158;
+ v159 = (u)zx86_64_opr;
+ v160 = *(u*)(vic + 8UL);
+ v161 = 88UL;
+ v162 = 1UL;
+ v163 = ((u(*)())(v159))(v160, v161, v162);
+ v163;
+ v164 = (u)zx86_64_modrr;
+ v165 = *(u*)(vic + 8UL);
+ v166 = 35UL;
+ v167 = 0UL;
+ v168 = 1UL;
+ v169 = ((u(*)())(v164))(v165, v166, v167, v168);
+ v169;
+ goto b8;
+b65: if (vkind != 13UL) goto b72;
+ v170 = (u)zx86_64_output_irexpr;
+ v171 = vic;
+ v172 = vb;
+ v173 = *(u*)(vo + 16UL);
+ v174 = ((u(*)())(v170))(v171, v172, v173);
+ v174;
+ v175 = (u)zx86_64_opr;
+ v176 = *(u*)(vic + 8UL);
+ v177 = 80UL;
+ v178 = 0UL;
+ v179 = ((u(*)())(v175))(v176, v177, v178);
+ v179;
+ v180 = (u)zx86_64_output_irexpr;
+ v181 = vic;
+ v182 = vb;
+ v183 = *(u*)(vo + 8UL);
+ v184 = ((u(*)())(v180))(v181, v182, v183);
+ v184;
+ v185 = (u)zx86_64_opr;
+ v186 = *(u*)(vic + 8UL);
+ v187 = 88UL;
+ v188 = 1UL;
+ v189 = ((u(*)())(v185))(v186, v187, v188);
v189;
-b167: *(u*)(vn + 64UL) = *(u*)(vv + 176UL);
- goto b1;
-b169: goto b167;
-b171: if (!*(u*)(vv + 168UL)) goto b179;
- v185 = 0UL;
-b180: if (!v185) goto b177;
- v183 = 1UL;
- goto b173;
-b177: v183 = 0UL;
- goto b173;
-b179: v185 = 1UL;
- goto b180;
-b175: v184 = 1UL;
- goto b176;
-b151: goto b149;
-b153: v161 = 0UL;
- goto b155;
-b148: if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 7UL) goto b162;
- if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 8UL) goto b162;
- v172 = 1UL;
-b164: if (!v172) goto b160;
- v173 = (u)zcdie;
- v174 = vc;
- v175 = (u)"dot not a struct";
- v176 = ((u(*)())v173)(v174, v175);
- v176;
-b158: v177 = (u)zfind;
- v178 = vc;
- v179 = *(u*)(*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 8UL) + 32UL);
- v180 = *(u*)(*(u*)(vn + 16UL) + 56UL);
- v181 = 0UL;
- v182 = ((u(*)())v177)(v178, v179, v180, v181);
- vv = v182;
- goto b146;
-b160: goto b158;
-b162: v172 = 0UL;
- goto b164;
-b144: if (vkind != 0UL) goto b183;
- v190 = (u)zfind;
- v191 = vc;
- v192 = *(u*)(vn + 56UL);
+ v190 = (u)zx86_64_modrr;
+ v191 = *(u*)(vic + 8UL);
+ v192 = 11UL;
v193 = 0UL;
- v194 = 0UL;
- v195 = ((u(*)())v190)(v191, v192, v193, v194);
- vv = v195;
- if (!vv) goto b189;
- if (!*(u*)(vv + 192UL)) goto b189;
- v196 = 1UL;
-b191: if (!v196) goto b187;
- v197 = (u)zmktype0;
- v198 = vc;
- v199 = 2UL;
- v200 = ((u(*)())v197)(v198, v199);
- *(u*)(vn + 64UL) = v200;
- return 0UL;
-b187: v201 = (u)zfind;
- v202 = vc;
- v203 = *(u*)(vd + 32UL);
- v204 = *(u*)(vn + 56UL);
- v205 = 0UL;
- v206 = ((u(*)())v201)(v202, v203, v204, v205);
- vv = v206;
- if (!vv) goto b198;
- if (!*(u*)(vv + 208UL)) goto b198;
- v207 = 1UL;
-b200: if (!v207) goto b196;
- *(u*)(vn + 64UL) = *(u*)(vv + 216UL);
- return 0UL;
-b196: v208 = (u)zfind;
- v209 = vc;
- v210 = *(u*)(vn + 56UL);
- v211 = 0UL;
- v212 = 0UL;
- v213 = ((u(*)())v208)(v209, v210, v211, v212);
- vv = v213;
- if (!vv) goto b206;
- if (!*(u*)(vv + 72UL)) goto b206;
+ v194 = 1UL;
+ v195 = ((u(*)())(v190))(v191, v192, v193, v194);
+ v195;
+ goto b8;
+b72: if (vkind != 14UL) goto b79;
+ v196 = (u)zx86_64_output_irexpr;
+ v197 = vic;
+ v198 = vb;
+ v199 = *(u*)(vo + 16UL);
+ v200 = ((u(*)())(v196))(v197, v198, v199);
+ v200;
+ v201 = (u)zx86_64_opr;
+ v202 = *(u*)(vic + 8UL);
+ v203 = 80UL;
+ v204 = 0UL;
+ v205 = ((u(*)())(v201))(v202, v203, v204);
+ v205;
+ v206 = (u)zx86_64_output_irexpr;
+ v207 = vic;
+ v208 = vb;
+ v209 = *(u*)(vo + 8UL);
+ v210 = ((u(*)())(v206))(v207, v208, v209);
+ v210;
+ v211 = (u)zx86_64_opr;
+ v212 = *(u*)(vic + 8UL);
+ v213 = 88UL;
v214 = 1UL;
-b208: if (!v214) goto b204;
- *(u*)(vn + 64UL) = *(u*)(vv + 80UL);
- return 0UL;
-b204: v215 = (u)zfputs;
- v216 = 0UL;
- v217 = *(u*)(vn + 56UL);
- v218 = ((u(*)())v215)(v216, v217);
- v218;
- v219 = (u)zcdie;
- v220 = vc;
- v221 = (u)"no such variable";
- v222 = ((u(*)())v219)(v220, v221);
- v222;
- goto b1;
-b206: v214 = 0UL;
- goto b208;
-b198: v207 = 0UL;
- goto b200;
-b189: v196 = 0UL;
- goto b191;
-b183: if (vkind != 33UL) goto b212;
- if (!vrhs) goto b217;
- v223 = 0UL;
-b218: if (!v223) goto b215;
- v224 = (u)zcdie;
- v225 = vc;
- v226 = (u)"assign is not an lexpr";
- v227 = ((u(*)())v224)(v225, v226);
- v227;
-b213: v228 = (u)ztypecheck_expr;
- v229 = vc;
- v230 = vd;
- v231 = *(u*)(vn + 16UL);
- v232 = 1UL;
- v233 = ((u(*)())v228)(v229, v230, v231, v232);
- v233;
- v234 = (u)ztypecheck_expr;
- v235 = vc;
- v236 = vd;
- v237 = *(u*)(vn + 8UL);
- v238 = 0UL;
- v239 = ((u(*)())v234)(v235, v236, v237, v238);
- v239;
- v240 = (u)zunify;
- v241 = vc;
- v242 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v243 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v244 = ((u(*)())v240)(v241, v242, v243);
- v244;
- *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b215: goto b213;
-b217: v223 = 1UL;
- goto b218;
-b212: if (vkind != 34UL) goto b224;
- if (!vrhs) goto b229;
- v245 = 0UL;
-b230: if (!v245) goto b227;
- v246 = (u)zcdie;
- v247 = vc;
- v248 = (u)"sizeof is not an lexpr";
- v249 = ((u(*)())v246)(v247, v248);
- v249;
-b225: v250 = (u)ztypecheck_expr;
- v251 = vc;
- v252 = vd;
- v253 = *(u*)(vn + 8UL);
- v254 = 0UL;
- v255 = ((u(*)())v250)(v251, v252, v253, v254);
- v255;
- v256 = (u)zmktype0;
- v257 = vc;
+ v215 = ((u(*)())(v211))(v212, v213, v214);
+ v215;
+ v216 = (u)zx86_64_modrr;
+ v217 = *(u*)(vic + 8UL);
+ v218 = 51UL;
+ v219 = 0UL;
+ v220 = 1UL;
+ v221 = ((u(*)())(v216))(v217, v218, v219, v220);
+ v221;
+ goto b8;
+b79: if (vkind != 15UL) goto b86;
+ v222 = (u)zx86_64_output_irexpr;
+ v223 = vic;
+ v224 = vb;
+ v225 = *(u*)(vo + 16UL);
+ v226 = ((u(*)())(v222))(v223, v224, v225);
+ v226;
+ v227 = (u)zx86_64_opr;
+ v228 = *(u*)(vic + 8UL);
+ v229 = 80UL;
+ v230 = 0UL;
+ v231 = ((u(*)())(v227))(v228, v229, v230);
+ v231;
+ v232 = (u)zx86_64_output_irexpr;
+ v233 = vic;
+ v234 = vb;
+ v235 = *(u*)(vo + 8UL);
+ v236 = ((u(*)())(v232))(v233, v234, v235);
+ v236;
+ v237 = (u)zx86_64_opr;
+ v238 = *(u*)(vic + 8UL);
+ v239 = 88UL;
+ v240 = 1UL;
+ v241 = ((u(*)())(v237))(v238, v239, v240);
+ v241;
+ v242 = (u)zx86_64_modrr;
+ v243 = *(u*)(vic + 8UL);
+ v244 = 51UL;
+ v245 = 2UL;
+ v246 = 2UL;
+ v247 = ((u(*)())(v242))(v243, v244, v245, v246);
+ v247;
+ v248 = (u)zx86_64_modrr;
+ v249 = *(u*)(vic + 8UL);
+ v250 = 133UL;
+ v251 = 0UL;
+ v252 = 0UL;
+ v253 = ((u(*)())(v248))(v249, v250, v251, v252);
+ v253;
+ v254 = (u)zx86_64_modrr;
+ v255 = *(u*)(vic + 8UL);
+ v256 = 3984UL + 8UL;
+ v257 = 0UL;
v258 = 2UL;
- v259 = ((u(*)())v256)(v257, v258);
- *(u*)(vn + 64UL) = v259;
- goto b1;
-b227: goto b225;
-b229: v245 = 1UL;
- goto b230;
-b224: if (vkind != 35UL) goto b235;
- if (!vrhs) goto b240;
- v260 = 0UL;
-b241: if (!v260) goto b238;
- v261 = (u)zcdie;
- v262 = vc;
- v263 = (u)"ref is not an lexpr";
- v264 = ((u(*)())v261)(v262, v263);
+ v259 = ((u(*)())(v254))(v255, v256, v257, v258);
+ v259;
+ v260 = (u)zx86_64_modr;
+ v261 = *(u*)(vic + 8UL);
+ v262 = 196855UL;
+ v263 = 2UL;
+ v264 = ((u(*)())(v260))(v261, v262, v263);
v264;
-b236: v265 = (u)ztypecheck_expr;
- v266 = vc;
- v267 = vd;
- v268 = *(u*)(vn + 8UL);
- v269 = 0UL;
- v270 = ((u(*)())v265)(v266, v267, v268, v269);
- v270;
- v271 = (u)zmktype1;
- v272 = vc;
- v273 = 4UL;
- v274 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v275 = ((u(*)())v271)(v272, v273, v274);
- *(u*)(vn + 64UL) = v275;
- goto b1;
-b238: goto b236;
-b240: v260 = 1UL;
- goto b241;
-b235: if (vkind != 36UL) goto b246;
- v276 = (u)ztypecheck_expr;
- v277 = vc;
- v278 = vd;
- v279 = *(u*)(vn + 8UL);
- v280 = 1UL;
- v281 = ((u(*)())v276)(v277, v278, v279, v280);
- v281;
- if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 4UL) goto b250;
- v282 = (u)zcdie;
- v283 = vc;
- v284 = (u)"deref not a pointer";
- v285 = ((u(*)())v282)(v283, v284);
- v285;
-b248: *(u*)(vn + 64UL) = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL);
- goto b1;
-b250: goto b248;
-b246: if (vkind != 38UL) goto b253;
- v286 = (u)ztypecheck_expr;
- v287 = vc;
- v288 = vd;
- v289 = *(u*)(vn + 8UL);
- v290 = 1UL;
- v291 = ((u(*)())v286)(v287, v288, v289, v290);
- v291;
- v292 = (u)ztypecheck_expr;
- v293 = vc;
- v294 = vd;
- v295 = *(u*)(vn + 16UL);
- v296 = 1UL;
- v297 = ((u(*)())v292)(v293, v294, v295, v296);
- v297;
- if (*(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 0UL) == 4UL) goto b258;
- v298 = (u)zcdie;
- v299 = vc;
- v300 = (u)"not a pointer";
- v301 = ((u(*)())v298)(v299, v300);
+ v265 = (u)zx86_64_modr;
+ v266 = *(u*)(vic + 8UL);
+ v267 = 458999UL;
+ v268 = 1UL;
+ v269 = ((u(*)())(v265))(v266, v267, v268);
+ v269;
+ goto b8;
+b86: if (vkind != 16UL) goto b97;
+ v270 = (u)zx86_64_output_irexpr;
+ v271 = vic;
+ v272 = vb;
+ v273 = *(u*)(vo + 16UL);
+ v274 = ((u(*)())(v270))(v271, v272, v273);
+ v274;
+ v275 = (u)zx86_64_opr;
+ v276 = *(u*)(vic + 8UL);
+ v277 = 80UL;
+ v278 = 0UL;
+ v279 = ((u(*)())(v275))(v276, v277, v278);
+ v279;
+ v280 = (u)zx86_64_output_irexpr;
+ v281 = vic;
+ v282 = vb;
+ v283 = *(u*)(vo + 8UL);
+ v284 = ((u(*)())(v280))(v281, v282, v283);
+ v284;
+ v285 = (u)zx86_64_opr;
+ v286 = *(u*)(vic + 8UL);
+ v287 = 88UL;
+ v288 = 1UL;
+ v289 = ((u(*)())(v285))(v286, v287, v288);
+ v289;
+ v290 = (u)zx86_64_modrr;
+ v291 = *(u*)(vic + 8UL);
+ v292 = 51UL;
+ v293 = 2UL;
+ v294 = 2UL;
+ v295 = ((u(*)())(v290))(v291, v292, v293, v294);
+ v295;
+ v296 = (u)zx86_64_modrr;
+ v297 = *(u*)(vic + 8UL);
+ v298 = 133UL;
+ v299 = 0UL;
+ v300 = 0UL;
+ v301 = ((u(*)())(v296))(v297, v298, v299, v300);
v301;
-b256: v303 = (u)ztype_isint;
- v304 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v305 = ((u(*)())v303)(v304);
- if (!v305) goto b264;
- v302 = 0UL;
-b265: if (!v302) goto b262;
- v306 = (u)zcdie;
- v307 = vc;
- v308 = (u)"index: not an int";
- v309 = ((u(*)())v306)(v307, v308);
- v309;
-b260: *(u*)(vn + 64UL) = *(u*)(*(u*)(*(u*)(vn + 8UL) + 64UL) + 16UL);
- goto b1;
-b262: goto b260;
-b264: v302 = 1UL;
- goto b265;
-b258: goto b256;
-b253: if (vkind != 39UL) goto b269;
- if (!vrhs) goto b274;
- v310 = 0UL;
-b275: if (!v310) goto b272;
- v311 = (u)zcdie;
- v312 = vc;
- v313 = (u)"not lexpr";
- v314 = ((u(*)())v311)(v312, v313);
- v314;
-b270: v315 = (u)ztypecheck_expr;
- v316 = vc;
- v317 = vd;
- v318 = *(u*)(vn + 16UL);
- v319 = 1UL;
- v320 = ((u(*)())v315)(v316, v317, v318, v319);
- v320;
- v321 = (u)ztypecheck_expr;
- v322 = vc;
- v323 = vd;
- v324 = *(u*)(vn + 8UL);
- v325 = 1UL;
- v326 = ((u(*)())v321)(v322, v323, v324, v325);
- v326;
- v327 = (u)zunify;
- v328 = vc;
- v329 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v330 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v331 = ((u(*)())v327)(v328, v329, v330);
- v331;
- v333 = (u)ztype_isprim;
- v334 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v335 = ((u(*)())v333)(v334);
- if (!v335) goto b284;
+ v302 = (u)zx86_64_modrr;
+ v303 = *(u*)(vic + 8UL);
+ v304 = 3984UL + 8UL;
+ v305 = 0UL;
+ v306 = 2UL;
+ v307 = ((u(*)())(v302))(v303, v304, v305, v306);
+ v307;
+ v308 = (u)zx86_64_modr;
+ v309 = *(u*)(vic + 8UL);
+ v310 = 196855UL;
+ v311 = 2UL;
+ v312 = ((u(*)())(v308))(v309, v310, v311);
+ v312;
+ v313 = (u)zx86_64_modr;
+ v314 = *(u*)(vic + 8UL);
+ v315 = 458999UL;
+ v316 = 1UL;
+ v317 = ((u(*)())(v313))(v314, v315, v316);
+ v317;
+ v318 = (u)zx86_64_modrr;
+ v319 = *(u*)(vic + 8UL);
+ v320 = 139UL;
+ v321 = 0UL;
+ v322 = 2UL;
+ v323 = ((u(*)())(v318))(v319, v320, v321, v322);
+ v323;
+ goto b8;
+b97: if (vkind != 17UL) goto b109;
+ v324 = (u)zx86_64_output_irexpr;
+ v325 = vic;
+ v326 = vb;
+ v327 = *(u*)(vo + 16UL);
+ v328 = ((u(*)())(v324))(v325, v326, v327);
+ v328;
+ v329 = (u)zx86_64_opr;
+ v330 = *(u*)(vic + 8UL);
+ v331 = 80UL;
v332 = 0UL;
-b285: if (!v332) goto b282;
- v336 = (u)zcdie;
- v337 = vc;
- v338 = (u)"lt: not an int";
- v339 = ((u(*)())v336)(v337, v338);
- v339;
-b280: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b282: goto b280;
-b284: v332 = 1UL;
- goto b285;
-b272: goto b270;
-b274: v310 = 1UL;
- goto b275;
-b269: if (vkind != 40UL) goto b289;
- if (!vrhs) goto b294;
- v340 = 0UL;
-b295: if (!v340) goto b292;
- v341 = (u)zcdie;
- v342 = vc;
- v343 = (u)"not lexpr";
- v344 = ((u(*)())v341)(v342, v343);
- v344;
-b290: v345 = (u)ztypecheck_expr;
- v346 = vc;
- v347 = vd;
- v348 = *(u*)(vn + 16UL);
- v349 = 1UL;
- v350 = ((u(*)())v345)(v346, v347, v348, v349);
- v350;
- v351 = (u)ztypecheck_expr;
- v352 = vc;
- v353 = vd;
- v354 = *(u*)(vn + 8UL);
- v355 = 1UL;
- v356 = ((u(*)())v351)(v352, v353, v354, v355);
- v356;
- v357 = (u)zunify;
- v358 = vc;
- v359 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v360 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v361 = ((u(*)())v357)(v358, v359, v360);
- v361;
- v363 = (u)ztype_isprim;
- v364 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v365 = ((u(*)())v363)(v364);
- if (!v365) goto b304;
- v362 = 0UL;
-b305: if (!v362) goto b302;
- v366 = (u)zcdie;
- v367 = vc;
- v368 = (u)"gt: not an int";
- v369 = ((u(*)())v366)(v367, v368);
- v369;
-b300: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b302: goto b300;
-b304: v362 = 1UL;
- goto b305;
-b292: goto b290;
-b294: v340 = 1UL;
- goto b295;
-b289: if (vkind != 41UL) goto b309;
- if (!vrhs) goto b314;
- v370 = 0UL;
-b315: if (!v370) goto b312;
- v371 = (u)zcdie;
- v372 = vc;
- v373 = (u)"not lexpr";
- v374 = ((u(*)())v371)(v372, v373);
- v374;
-b310: v375 = (u)ztypecheck_expr;
- v376 = vc;
- v377 = vd;
- v378 = *(u*)(vn + 16UL);
- v379 = 1UL;
- v380 = ((u(*)())v375)(v376, v377, v378, v379);
- v380;
- v381 = (u)ztypecheck_expr;
- v382 = vc;
- v383 = vd;
- v384 = *(u*)(vn + 8UL);
- v385 = 1UL;
- v386 = ((u(*)())v381)(v382, v383, v384, v385);
- v386;
- v387 = (u)zunify;
- v388 = vc;
- v389 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v390 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v391 = ((u(*)())v387)(v388, v389, v390);
- v391;
- v393 = (u)ztype_isprim;
- v394 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v395 = ((u(*)())v393)(v394);
- if (!v395) goto b324;
- v392 = 0UL;
-b325: if (!v392) goto b322;
- v396 = (u)zcdie;
- v397 = vc;
- v398 = (u)"le: not an int";
- v399 = ((u(*)())v396)(v397, v398);
- v399;
-b320: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b322: goto b320;
-b324: v392 = 1UL;
- goto b325;
-b312: goto b310;
-b314: v370 = 1UL;
- goto b315;
-b309: if (vkind != 42UL) goto b329;
- if (!vrhs) goto b334;
- v400 = 0UL;
-b335: if (!v400) goto b332;
- v401 = (u)zcdie;
- v402 = vc;
- v403 = (u)"not lexpr";
- v404 = ((u(*)())v401)(v402, v403);
- v404;
-b330: v405 = (u)ztypecheck_expr;
- v406 = vc;
- v407 = vd;
- v408 = *(u*)(vn + 16UL);
- v409 = 1UL;
- v410 = ((u(*)())v405)(v406, v407, v408, v409);
- v410;
- v411 = (u)ztypecheck_expr;
- v412 = vc;
- v413 = vd;
- v414 = *(u*)(vn + 8UL);
- v415 = 1UL;
- v416 = ((u(*)())v411)(v412, v413, v414, v415);
- v416;
- v417 = (u)zunify;
- v418 = vc;
- v419 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v420 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v421 = ((u(*)())v417)(v418, v419, v420);
- v421;
- v423 = (u)ztype_isprim;
- v424 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v425 = ((u(*)())v423)(v424);
- if (!v425) goto b344;
+ v333 = ((u(*)())(v329))(v330, v331, v332);
+ v333;
+ v334 = (u)zx86_64_output_irexpr;
+ v335 = vic;
+ v336 = vb;
+ v337 = *(u*)(vo + 8UL);
+ v338 = ((u(*)())(v334))(v335, v336, v337);
+ v338;
+ v339 = (u)zx86_64_opr;
+ v340 = *(u*)(vic + 8UL);
+ v341 = 88UL;
+ v342 = 1UL;
+ v343 = ((u(*)())(v339))(v340, v341, v342);
+ v343;
+ v344 = (u)zx86_64_modr;
+ v345 = *(u*)(vic + 8UL);
+ v346 = 262355UL;
+ v347 = 0UL;
+ v348 = ((u(*)())(v344))(v345, v346, v347);
+ v348;
+ goto b8;
+b109: if (vkind != 18UL) goto b116;
+ v349 = (u)zx86_64_output_irexpr;
+ v350 = vic;
+ v351 = vb;
+ v352 = *(u*)(vo + 16UL);
+ v353 = ((u(*)())(v349))(v350, v351, v352);
+ v353;
+ v354 = (u)zx86_64_opr;
+ v355 = *(u*)(vic + 8UL);
+ v356 = 80UL;
+ v357 = 0UL;
+ v358 = ((u(*)())(v354))(v355, v356, v357);
+ v358;
+ v359 = (u)zx86_64_output_irexpr;
+ v360 = vic;
+ v361 = vb;
+ v362 = *(u*)(vo + 8UL);
+ v363 = ((u(*)())(v359))(v360, v361, v362);
+ v363;
+ v364 = (u)zx86_64_opr;
+ v365 = *(u*)(vic + 8UL);
+ v366 = 88UL;
+ v367 = 1UL;
+ v368 = ((u(*)())(v364))(v365, v366, v367);
+ v368;
+ v369 = (u)zx86_64_modr;
+ v370 = *(u*)(vic + 8UL);
+ v371 = 327891UL;
+ v372 = 0UL;
+ v373 = ((u(*)())(v369))(v370, v371, v372);
+ v373;
+ goto b8;
+b116: if (vkind != 19UL) goto b123;
+ v374 = (u)zx86_64_output_irexpr;
+ v375 = vic;
+ v376 = vb;
+ v377 = *(u*)(vo + 16UL);
+ v378 = ((u(*)())(v374))(v375, v376, v377);
+ v378;
+ v379 = (u)zx86_64_opr;
+ v380 = *(u*)(vic + 8UL);
+ v381 = 80UL;
+ v382 = 0UL;
+ v383 = ((u(*)())(v379))(v380, v381, v382);
+ v383;
+ v384 = (u)zx86_64_output_irexpr;
+ v385 = vic;
+ v386 = vb;
+ v387 = *(u*)(vo + 8UL);
+ v388 = ((u(*)())(v384))(v385, v386, v387);
+ v388;
+ v389 = (u)zx86_64_opr;
+ v390 = *(u*)(vic + 8UL);
+ v391 = 88UL;
+ v392 = 1UL;
+ v393 = ((u(*)())(v389))(v390, v391, v392);
+ v393;
+ v394 = (u)zx86_64_modr;
+ v395 = *(u*)(vic + 8UL);
+ v396 = 262391UL;
+ v397 = 1UL;
+ v398 = ((u(*)())(v394))(v395, v396, v397);
+ v398;
+ goto b8;
+b123: if (vkind != 20UL) goto b130;
+ v399 = (u)zx86_64_output_irexpr;
+ v400 = vic;
+ v401 = vb;
+ v402 = *(u*)(vo + 16UL);
+ v403 = ((u(*)())(v399))(v400, v401, v402);
+ v403;
+ v404 = (u)zx86_64_opr;
+ v405 = *(u*)(vic + 8UL);
+ v406 = 80UL;
+ v407 = 0UL;
+ v408 = ((u(*)())(v404))(v405, v406, v407);
+ v408;
+ v409 = (u)zx86_64_output_irexpr;
+ v410 = vic;
+ v411 = vb;
+ v412 = *(u*)(vo + 8UL);
+ v413 = ((u(*)())(v409))(v410, v411, v412);
+ v413;
+ v414 = (u)zx86_64_opr;
+ v415 = *(u*)(vic + 8UL);
+ v416 = 88UL;
+ v417 = 1UL;
+ v418 = ((u(*)())(v414))(v415, v416, v417);
+ v418;
+ v419 = (u)zx86_64_modrr;
+ v420 = *(u*)(vic + 8UL);
+ v421 = 43UL;
v422 = 0UL;
-b345: if (!v422) goto b342;
- v426 = (u)zcdie;
- v427 = vc;
- v428 = (u)"ge: not an int";
- v429 = ((u(*)())v426)(v427, v428);
+ v423 = 1UL;
+ v424 = ((u(*)())(v419))(v420, v421, v422, v423);
+ v424;
+ goto b8;
+b130: if (vkind != 21UL) goto b137;
+ v425 = (u)zx86_64_output_irexpr;
+ v426 = vic;
+ v427 = vb;
+ v428 = *(u*)(vo + 16UL);
+ v429 = ((u(*)())(v425))(v426, v427, v428);
v429;
-b340: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b342: goto b340;
-b344: v422 = 1UL;
- goto b345;
-b332: goto b330;
-b334: v400 = 1UL;
- goto b335;
-b329: if (vkind != 43UL) goto b349;
- if (!vrhs) goto b354;
- v430 = 0UL;
-b355: if (!v430) goto b352;
- v431 = (u)zcdie;
- v432 = vc;
- v433 = (u)"not lexpr";
- v434 = ((u(*)())v431)(v432, v433);
+ v430 = (u)zx86_64_opr;
+ v431 = *(u*)(vic + 8UL);
+ v432 = 80UL;
+ v433 = 0UL;
+ v434 = ((u(*)())(v430))(v431, v432, v433);
v434;
-b350: v435 = (u)ztypecheck_expr;
- v436 = vc;
- v437 = vd;
- v438 = *(u*)(vn + 16UL);
- v439 = 1UL;
- v440 = ((u(*)())v435)(v436, v437, v438, v439);
- v440;
- v441 = (u)ztypecheck_expr;
- v442 = vc;
- v443 = vd;
- v444 = *(u*)(vn + 8UL);
- v445 = 1UL;
- v446 = ((u(*)())v441)(v442, v443, v444, v445);
- v446;
- v447 = (u)zunify;
- v448 = vc;
- v449 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v450 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v451 = ((u(*)())v447)(v448, v449, v450);
- v451;
- v453 = (u)ztype_isprim;
- v454 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v455 = ((u(*)())v453)(v454);
- if (!v455) goto b364;
- v452 = 0UL;
-b365: if (!v452) goto b362;
- v456 = (u)zcdie;
- v457 = vc;
- v458 = (u)"eq: not an int";
- v459 = ((u(*)())v456)(v457, v458);
- v459;
-b360: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b362: goto b360;
-b364: v452 = 1UL;
- goto b365;
-b352: goto b350;
-b354: v430 = 1UL;
- goto b355;
-b349: if (vkind != 44UL) goto b369;
- if (!vrhs) goto b374;
- v460 = 0UL;
-b375: if (!v460) goto b372;
- v461 = (u)zcdie;
- v462 = vc;
- v463 = (u)"not lexpr";
- v464 = ((u(*)())v461)(v462, v463);
- v464;
-b370: v465 = (u)ztypecheck_expr;
- v466 = vc;
- v467 = vd;
- v468 = *(u*)(vn + 16UL);
- v469 = 1UL;
- v470 = ((u(*)())v465)(v466, v467, v468, v469);
- v470;
- v471 = (u)ztypecheck_expr;
- v472 = vc;
- v473 = vd;
- v474 = *(u*)(vn + 8UL);
- v475 = 1UL;
- v476 = ((u(*)())v471)(v472, v473, v474, v475);
- v476;
- v477 = (u)zunify;
- v478 = vc;
- v479 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v480 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v481 = ((u(*)())v477)(v478, v479, v480);
- v481;
- v483 = (u)ztype_isprim;
- v484 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v485 = ((u(*)())v483)(v484);
- if (!v485) goto b384;
- v482 = 0UL;
-b385: if (!v482) goto b382;
- v486 = (u)zcdie;
- v487 = vc;
- v488 = (u)"ne: not an int";
- v489 = ((u(*)())v486)(v487, v488);
- v489;
-b380: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b382: goto b380;
-b384: v482 = 1UL;
- goto b385;
-b372: goto b370;
-b374: v460 = 1UL;
- goto b375;
-b369: if (vkind != 50UL) goto b389;
- if (!vrhs) goto b394;
- v490 = 0UL;
-b395: if (!v490) goto b392;
- v491 = (u)zcdie;
- v492 = vc;
- v493 = (u)"not lexpr";
- v494 = ((u(*)())v491)(v492, v493);
+ v435 = (u)zx86_64_output_irexpr;
+ v436 = vic;
+ v437 = vb;
+ v438 = *(u*)(vo + 8UL);
+ v439 = ((u(*)())(v435))(v436, v437, v438);
+ v439;
+ v440 = (u)zx86_64_opr;
+ v441 = *(u*)(vic + 8UL);
+ v442 = 88UL;
+ v443 = 1UL;
+ v444 = ((u(*)())(v440))(v441, v442, v443);
+ v444;
+ v445 = (u)zx86_64_modrr;
+ v446 = *(u*)(vic + 8UL);
+ v447 = 139UL;
+ v448 = 2UL;
+ v449 = 0UL;
+ v450 = ((u(*)())(v445))(v446, v447, v448, v449);
+ v450;
+ v451 = (u)zx86_64_modrr;
+ v452 = *(u*)(vic + 8UL);
+ v453 = 51UL;
+ v454 = 0UL;
+ v455 = 0UL;
+ v456 = ((u(*)())(v451))(v452, v453, v454, v455);
+ v456;
+ v457 = (u)zx86_64_modrr;
+ v458 = *(u*)(vic + 8UL);
+ v459 = 59UL;
+ v460 = 2UL;
+ v461 = 1UL;
+ v462 = ((u(*)())(v457))(v458, v459, v460, v461);
+ v462;
+ v463 = (u)zx86_64_modrr;
+ v464 = *(u*)(vic + 8UL);
+ v465 = 3984UL + 4UL;
+ v466 = 0UL;
+ v467 = 0UL;
+ v468 = ((u(*)())(v463))(v464, v465, v466, v467);
+ v468;
+ goto b8;
+b137: if (vkind != 22UL) goto b147;
+ v469 = (u)zx86_64_output_irexpr;
+ v470 = vic;
+ v471 = vb;
+ v472 = *(u*)(vo + 16UL);
+ v473 = ((u(*)())(v469))(v470, v471, v472);
+ v473;
+ v474 = (u)zx86_64_opr;
+ v475 = *(u*)(vic + 8UL);
+ v476 = 80UL;
+ v477 = 0UL;
+ v478 = ((u(*)())(v474))(v475, v476, v477);
+ v478;
+ v479 = (u)zx86_64_output_irexpr;
+ v480 = vic;
+ v481 = vb;
+ v482 = *(u*)(vo + 8UL);
+ v483 = ((u(*)())(v479))(v480, v481, v482);
+ v483;
+ v484 = (u)zx86_64_opr;
+ v485 = *(u*)(vic + 8UL);
+ v486 = 88UL;
+ v487 = 1UL;
+ v488 = ((u(*)())(v484))(v485, v486, v487);
+ v488;
+ v489 = (u)zx86_64_modrr;
+ v490 = *(u*)(vic + 8UL);
+ v491 = 139UL;
+ v492 = 2UL;
+ v493 = 0UL;
+ v494 = ((u(*)())(v489))(v490, v491, v492, v493);
v494;
-b390: v495 = (u)ztypecheck_expr;
- v496 = vc;
- v497 = vd;
- v498 = *(u*)(vn + 8UL);
- v499 = 1UL;
- v500 = ((u(*)())v495)(v496, v497, v498, v499);
+ v495 = (u)zx86_64_modrr;
+ v496 = *(u*)(vic + 8UL);
+ v497 = 51UL;
+ v498 = 0UL;
+ v499 = 0UL;
+ v500 = ((u(*)())(v495))(v496, v497, v498, v499);
v500;
- v502 = (u)ztype_isprim;
- v503 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v504 = ((u(*)())v502)(v503);
- if (!v504) goto b402;
- v501 = 0UL;
-b403: if (!v501) goto b400;
- v505 = (u)zcdie;
- v506 = vc;
- v507 = (u)"not an prim";
- v508 = ((u(*)())v505)(v506, v507);
- v508;
-b398: v509 = (u)zmktype0;
- v510 = vc;
- v511 = 2UL;
- v512 = ((u(*)())v509)(v510, v511);
- *(u*)(vn + 64UL) = v512;
- goto b1;
-b400: goto b398;
-b402: v501 = 1UL;
- goto b403;
-b392: goto b390;
-b394: v490 = 1UL;
- goto b395;
-b389: if (vkind != 51UL) goto b408;
- if (!vrhs) goto b413;
- v513 = 0UL;
-b414: if (!v513) goto b411;
- v514 = (u)zcdie;
- v515 = vc;
- v516 = (u)"not lexpr";
- v517 = ((u(*)())v514)(v515, v516);
+ v501 = (u)zx86_64_modrr;
+ v502 = *(u*)(vic + 8UL);
+ v503 = 59UL;
+ v504 = 2UL;
+ v505 = 1UL;
+ v506 = ((u(*)())(v501))(v502, v503, v504, v505);
+ v506;
+ v507 = (u)zx86_64_modrr;
+ v508 = *(u*)(vic + 8UL);
+ v509 = 3984UL + 5UL;
+ v510 = 0UL;
+ v511 = 0UL;
+ v512 = ((u(*)())(v507))(v508, v509, v510, v511);
+ v512;
+ goto b8;
+b147: if (vkind != 23UL) goto b157;
+ v513 = (u)zx86_64_output_irexpr;
+ v514 = vic;
+ v515 = vb;
+ v516 = *(u*)(vo + 16UL);
+ v517 = ((u(*)())(v513))(v514, v515, v516);
v517;
-b409: v518 = (u)ztypecheck_expr;
- v519 = vc;
- v520 = vd;
- v521 = *(u*)(vn + 8UL);
- v522 = 1UL;
- v523 = ((u(*)())v518)(v519, v520, v521, v522);
- v523;
- v524 = (u)ztypecheck_expr;
- v525 = vc;
- v526 = vd;
- v527 = *(u*)(vn + 16UL);
- v528 = 1UL;
- v529 = ((u(*)())v524)(v525, v526, v527, v528);
- v529;
- v531 = (u)ztype_isprim;
- v532 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v533 = ((u(*)())v531)(v532);
- if (!v533) goto b422;
- v530 = 0UL;
-b423: if (!v530) goto b420;
- v534 = (u)zcdie;
- v535 = vc;
- v536 = (u)"not an prim";
- v537 = ((u(*)())v534)(v535, v536);
- v537;
-b418: v539 = (u)ztype_isprim;
- v540 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v541 = ((u(*)())v539)(v540);
- if (!v541) goto b430;
- v538 = 0UL;
-b431: if (!v538) goto b428;
- v542 = (u)zcdie;
- v543 = vc;
- v544 = (u)"not an prim";
- v545 = ((u(*)())v542)(v543, v544);
- v545;
-b426: v546 = (u)zmktype0;
- v547 = vc;
+ v518 = (u)zx86_64_opr;
+ v519 = *(u*)(vic + 8UL);
+ v520 = 80UL;
+ v521 = 0UL;
+ v522 = ((u(*)())(v518))(v519, v520, v521);
+ v522;
+ v523 = (u)zx86_64_output_irexpr;
+ v524 = vic;
+ v525 = vb;
+ v526 = *(u*)(vo + 8UL);
+ v527 = ((u(*)())(v523))(v524, v525, v526);
+ v527;
+ v528 = (u)zx86_64_opr;
+ v529 = *(u*)(vic + 8UL);
+ v530 = 88UL;
+ v531 = 1UL;
+ v532 = ((u(*)())(v528))(v529, v530, v531);
+ v532;
+ v533 = (u)zx86_64_modrr;
+ v534 = *(u*)(vic + 8UL);
+ v535 = 139UL;
+ v536 = 2UL;
+ v537 = 0UL;
+ v538 = ((u(*)())(v533))(v534, v535, v536, v537);
+ v538;
+ v539 = (u)zx86_64_modrr;
+ v540 = *(u*)(vic + 8UL);
+ v541 = 51UL;
+ v542 = 0UL;
+ v543 = 0UL;
+ v544 = ((u(*)())(v539))(v540, v541, v542, v543);
+ v544;
+ v545 = (u)zx86_64_modrr;
+ v546 = *(u*)(vic + 8UL);
+ v547 = 59UL;
v548 = 2UL;
- v549 = ((u(*)())v546)(v547, v548);
- *(u*)(vn + 64UL) = v549;
- goto b1;
-b428: goto b426;
-b430: v538 = 1UL;
- goto b431;
-b420: goto b418;
-b422: v530 = 1UL;
- goto b423;
-b411: goto b409;
-b413: v513 = 1UL;
- goto b414;
-b408: if (vkind != 52UL) goto b436;
- if (!vrhs) goto b441;
- v550 = 0UL;
-b442: if (!v550) goto b439;
- v551 = (u)zcdie;
- v552 = vc;
- v553 = (u)"not lexpr";
- v554 = ((u(*)())v551)(v552, v553);
- v554;
-b437: v555 = (u)ztypecheck_expr;
- v556 = vc;
- v557 = vd;
- v558 = *(u*)(vn + 8UL);
- v559 = 1UL;
- v560 = ((u(*)())v555)(v556, v557, v558, v559);
- v560;
- v561 = (u)ztypecheck_expr;
- v562 = vc;
- v563 = vd;
- v564 = *(u*)(vn + 16UL);
- v565 = 1UL;
- v566 = ((u(*)())v561)(v562, v563, v564, v565);
+ v549 = 1UL;
+ v550 = ((u(*)())(v545))(v546, v547, v548, v549);
+ v550;
+ v551 = (u)zx86_64_modrr;
+ v552 = *(u*)(vic + 8UL);
+ v553 = 3984UL + 15UL;
+ v554 = 0UL;
+ v555 = 0UL;
+ v556 = ((u(*)())(v551))(v552, v553, v554, v555);
+ v556;
+ goto b8;
+b157: if (vkind != 24UL) goto b167;
+ v557 = (u)zx86_64_output_irexpr;
+ v558 = vic;
+ v559 = vb;
+ v560 = *(u*)(vo + 16UL);
+ v561 = ((u(*)())(v557))(v558, v559, v560);
+ v561;
+ v562 = (u)zx86_64_opr;
+ v563 = *(u*)(vic + 8UL);
+ v564 = 80UL;
+ v565 = 0UL;
+ v566 = ((u(*)())(v562))(v563, v564, v565);
v566;
- v568 = (u)ztype_isprim;
- v569 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v570 = ((u(*)())v568)(v569);
- if (!v570) goto b450;
- v567 = 0UL;
-b451: if (!v567) goto b448;
- v571 = (u)zcdie;
- v572 = vc;
- v573 = (u)"not an prim";
- v574 = ((u(*)())v571)(v572, v573);
- v574;
-b446: v576 = (u)ztype_isprim;
- v577 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v578 = ((u(*)())v576)(v577);
- if (!v578) goto b458;
- v575 = 0UL;
-b459: if (!v575) goto b456;
- v579 = (u)zcdie;
- v580 = vc;
- v581 = (u)"not an prim";
- v582 = ((u(*)())v579)(v580, v581);
+ v567 = (u)zx86_64_output_irexpr;
+ v568 = vic;
+ v569 = vb;
+ v570 = *(u*)(vo + 8UL);
+ v571 = ((u(*)())(v567))(v568, v569, v570);
+ v571;
+ v572 = (u)zx86_64_opr;
+ v573 = *(u*)(vic + 8UL);
+ v574 = 88UL;
+ v575 = 1UL;
+ v576 = ((u(*)())(v572))(v573, v574, v575);
+ v576;
+ v577 = (u)zx86_64_modrr;
+ v578 = *(u*)(vic + 8UL);
+ v579 = 139UL;
+ v580 = 2UL;
+ v581 = 0UL;
+ v582 = ((u(*)())(v577))(v578, v579, v580, v581);
v582;
-b454: v583 = (u)zmktype0;
- v584 = vc;
- v585 = 2UL;
- v586 = ((u(*)())v583)(v584, v585);
- *(u*)(vn + 64UL) = v586;
- goto b1;
-b456: goto b454;
-b458: v575 = 1UL;
- goto b459;
-b448: goto b446;
-b450: v567 = 1UL;
- goto b451;
-b439: goto b437;
-b441: v550 = 1UL;
- goto b442;
-b436: if (vkind != 57UL) goto b464;
- if (!vrhs) goto b469;
+ v583 = (u)zx86_64_modrr;
+ v584 = *(u*)(vic + 8UL);
+ v585 = 51UL;
+ v586 = 0UL;
v587 = 0UL;
-b470: if (!v587) goto b467;
- v588 = (u)zcdie;
- v589 = vc;
- v590 = (u)"not lexpr";
- v591 = ((u(*)())v588)(v589, v590);
- v591;
-b465: v592 = (u)ztypecheck_expr;
- v593 = vc;
- v594 = vd;
- v595 = *(u*)(vn + 8UL);
- v596 = 1UL;
- v597 = ((u(*)())v592)(v593, v594, v595, v596);
- v597;
- v599 = (u)ztype_isint;
- v600 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v601 = ((u(*)())v599)(v600);
- if (!v601) goto b477;
+ v588 = ((u(*)())(v583))(v584, v585, v586, v587);
+ v588;
+ v589 = (u)zx86_64_modrr;
+ v590 = *(u*)(vic + 8UL);
+ v591 = 59UL;
+ v592 = 2UL;
+ v593 = 1UL;
+ v594 = ((u(*)())(v589))(v590, v591, v592, v593);
+ v594;
+ v595 = (u)zx86_64_modrr;
+ v596 = *(u*)(vic + 8UL);
+ v597 = 3984UL + 13UL;
v598 = 0UL;
-b478: if (!v598) goto b475;
- v602 = (u)zcdie;
- v603 = vc;
- v604 = (u)"pos: not an int";
- v605 = ((u(*)())v602)(v603, v604);
- v605;
-b473: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b475: goto b473;
-b477: v598 = 1UL;
- goto b478;
-b467: goto b465;
-b469: v587 = 1UL;
- goto b470;
-b464: if (vkind != 58UL) goto b482;
- if (!vrhs) goto b487;
- v606 = 0UL;
-b488: if (!v606) goto b485;
- v607 = (u)zcdie;
- v608 = vc;
- v609 = (u)"not lexpr";
- v610 = ((u(*)())v607)(v608, v609);
- v610;
-b483: v611 = (u)ztypecheck_expr;
- v612 = vc;
- v613 = vd;
- v614 = *(u*)(vn + 8UL);
- v615 = 1UL;
- v616 = ((u(*)())v611)(v612, v613, v614, v615);
- v616;
- v618 = (u)ztype_isint;
- v619 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v620 = ((u(*)())v618)(v619);
- if (!v620) goto b495;
- v617 = 0UL;
-b496: if (!v617) goto b493;
- v621 = (u)zcdie;
- v622 = vc;
- v623 = (u)"neg: not an int";
- v624 = ((u(*)())v621)(v622, v623);
- v624;
-b491: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b493: goto b491;
-b495: v617 = 1UL;
- goto b496;
-b485: goto b483;
-b487: v606 = 1UL;
- goto b488;
-b482: if (vkind != 56UL) goto b500;
- if (!vrhs) goto b505;
- v625 = 0UL;
-b506: if (!v625) goto b503;
- v626 = (u)zcdie;
- v627 = vc;
- v628 = (u)"not lexpr";
- v629 = ((u(*)())v626)(v627, v628);
- v629;
-b501: v630 = (u)ztypecheck_expr;
- v631 = vc;
- v632 = vd;
- v633 = *(u*)(vn + 8UL);
- v634 = 1UL;
- v635 = ((u(*)())v630)(v631, v632, v633, v634);
- v635;
- v637 = (u)ztype_isint;
- v638 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v639 = ((u(*)())v637)(v638);
- if (!v639) goto b513;
- v636 = 0UL;
-b514: if (!v636) goto b511;
- v640 = (u)zcdie;
- v641 = vc;
- v642 = (u)"not: not an int";
- v643 = ((u(*)())v640)(v641, v642);
- v643;
-b509: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b511: goto b509;
-b513: v636 = 1UL;
- goto b514;
-b503: goto b501;
-b505: v625 = 1UL;
- goto b506;
-b500: if (vkind != 45UL) goto b518;
- if (!vrhs) goto b523;
- v644 = 0UL;
-b524: if (!v644) goto b521;
- v645 = (u)zcdie;
- v646 = vc;
- v647 = (u)"not lexpr";
- v648 = ((u(*)())v645)(v646, v647);
- v648;
-b519: v649 = (u)ztypecheck_expr;
- v650 = vc;
- v651 = vd;
- v652 = *(u*)(vn + 16UL);
- v653 = 1UL;
- v654 = ((u(*)())v649)(v650, v651, v652, v653);
+ v599 = 0UL;
+ v600 = ((u(*)())(v595))(v596, v597, v598, v599);
+ v600;
+ goto b8;
+b167: if (vkind != 25UL) goto b177;
+ v601 = (u)zx86_64_output_irexpr;
+ v602 = vic;
+ v603 = vb;
+ v604 = *(u*)(vo + 16UL);
+ v605 = ((u(*)())(v601))(v602, v603, v604);
+ v605;
+ v606 = (u)zx86_64_opr;
+ v607 = *(u*)(vic + 8UL);
+ v608 = 80UL;
+ v609 = 0UL;
+ v610 = ((u(*)())(v606))(v607, v608, v609);
+ v610;
+ v611 = (u)zx86_64_output_irexpr;
+ v612 = vic;
+ v613 = vb;
+ v614 = *(u*)(vo + 8UL);
+ v615 = ((u(*)())(v611))(v612, v613, v614);
+ v615;
+ v616 = (u)zx86_64_opr;
+ v617 = *(u*)(vic + 8UL);
+ v618 = 88UL;
+ v619 = 1UL;
+ v620 = ((u(*)())(v616))(v617, v618, v619);
+ v620;
+ v621 = (u)zx86_64_modrr;
+ v622 = *(u*)(vic + 8UL);
+ v623 = 139UL;
+ v624 = 2UL;
+ v625 = 0UL;
+ v626 = ((u(*)())(v621))(v622, v623, v624, v625);
+ v626;
+ v627 = (u)zx86_64_modrr;
+ v628 = *(u*)(vic + 8UL);
+ v629 = 51UL;
+ v630 = 0UL;
+ v631 = 0UL;
+ v632 = ((u(*)())(v627))(v628, v629, v630, v631);
+ v632;
+ v633 = (u)zx86_64_modrr;
+ v634 = *(u*)(vic + 8UL);
+ v635 = 59UL;
+ v636 = 2UL;
+ v637 = 1UL;
+ v638 = ((u(*)())(v633))(v634, v635, v636, v637);
+ v638;
+ v639 = (u)zx86_64_modrr;
+ v640 = *(u*)(vic + 8UL);
+ v641 = 3984UL + 12UL;
+ v642 = 0UL;
+ v643 = 0UL;
+ v644 = ((u(*)())(v639))(v640, v641, v642, v643);
+ v644;
+ goto b8;
+b177: if (vkind != 26UL) goto b187;
+ v645 = (u)zx86_64_output_irexpr;
+ v646 = vic;
+ v647 = vb;
+ v648 = *(u*)(vo + 16UL);
+ v649 = ((u(*)())(v645))(v646, v647, v648);
+ v649;
+ v650 = (u)zx86_64_opr;
+ v651 = *(u*)(vic + 8UL);
+ v652 = 80UL;
+ v653 = 0UL;
+ v654 = ((u(*)())(v650))(v651, v652, v653);
v654;
- v655 = (u)ztypecheck_expr;
- v656 = vc;
- v657 = vd;
- v658 = *(u*)(vn + 8UL);
- v659 = 1UL;
- v660 = ((u(*)())v655)(v656, v657, v658, v659);
- v660;
- v661 = (u)zunify;
- v662 = vc;
- v663 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v664 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v665 = ((u(*)())v661)(v662, v663, v664);
- v665;
- v667 = (u)ztype_isint;
- v668 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v669 = ((u(*)())v667)(v668);
- if (!v669) goto b533;
- v666 = 0UL;
-b534: if (!v666) goto b531;
- v670 = (u)zcdie;
- v671 = vc;
- v672 = (u)"add: not an int";
- v673 = ((u(*)())v670)(v671, v672);
- v673;
-b529: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b531: goto b529;
-b533: v666 = 1UL;
- goto b534;
-b521: goto b519;
-b523: v644 = 1UL;
- goto b524;
-b518: if (vkind != 46UL) goto b538;
- if (!vrhs) goto b543;
+ v655 = (u)zx86_64_output_irexpr;
+ v656 = vic;
+ v657 = vb;
+ v658 = *(u*)(vo + 8UL);
+ v659 = ((u(*)())(v655))(v656, v657, v658);
+ v659;
+ v660 = (u)zx86_64_opr;
+ v661 = *(u*)(vic + 8UL);
+ v662 = 88UL;
+ v663 = 1UL;
+ v664 = ((u(*)())(v660))(v661, v662, v663);
+ v664;
+ v665 = (u)zx86_64_modrr;
+ v666 = *(u*)(vic + 8UL);
+ v667 = 139UL;
+ v668 = 2UL;
+ v669 = 0UL;
+ v670 = ((u(*)())(v665))(v666, v667, v668, v669);
+ v670;
+ v671 = (u)zx86_64_modrr;
+ v672 = *(u*)(vic + 8UL);
+ v673 = 51UL;
v674 = 0UL;
-b544: if (!v674) goto b541;
- v675 = (u)zcdie;
- v676 = vc;
- v677 = (u)"not lexpr";
- v678 = ((u(*)())v675)(v676, v677);
- v678;
-b539: v679 = (u)ztypecheck_expr;
- v680 = vc;
- v681 = vd;
- v682 = *(u*)(vn + 16UL);
- v683 = 1UL;
- v684 = ((u(*)())v679)(v680, v681, v682, v683);
- v684;
- v685 = (u)ztypecheck_expr;
- v686 = vc;
- v687 = vd;
- v688 = *(u*)(vn + 8UL);
- v689 = 1UL;
- v690 = ((u(*)())v685)(v686, v687, v688, v689);
- v690;
- v691 = (u)zunify;
- v692 = vc;
- v693 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v694 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v695 = ((u(*)())v691)(v692, v693, v694);
- v695;
- v697 = (u)ztype_isint;
- v698 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v699 = ((u(*)())v697)(v698);
- if (!v699) goto b553;
- v696 = 0UL;
-b554: if (!v696) goto b551;
- v700 = (u)zcdie;
- v701 = vc;
- v702 = (u)"sub: not an int";
- v703 = ((u(*)())v700)(v701, v702);
- v703;
-b549: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b551: goto b549;
-b553: v696 = 1UL;
- goto b554;
-b541: goto b539;
-b543: v674 = 1UL;
- goto b544;
-b538: if (vkind != 47UL) goto b558;
- if (!vrhs) goto b563;
- v704 = 0UL;
-b564: if (!v704) goto b561;
- v705 = (u)zcdie;
- v706 = vc;
- v707 = (u)"not lexpr";
- v708 = ((u(*)())v705)(v706, v707);
- v708;
-b559: v709 = (u)ztypecheck_expr;
- v710 = vc;
- v711 = vd;
- v712 = *(u*)(vn + 16UL);
- v713 = 1UL;
- v714 = ((u(*)())v709)(v710, v711, v712, v713);
- v714;
- v715 = (u)ztypecheck_expr;
- v716 = vc;
- v717 = vd;
- v718 = *(u*)(vn + 8UL);
- v719 = 1UL;
- v720 = ((u(*)())v715)(v716, v717, v718, v719);
- v720;
- v721 = (u)zunify;
- v722 = vc;
- v723 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v724 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v725 = ((u(*)())v721)(v722, v723, v724);
- v725;
- v727 = (u)ztype_isint;
- v728 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v729 = ((u(*)())v727)(v728);
- if (!v729) goto b573;
- v726 = 0UL;
-b574: if (!v726) goto b571;
- v730 = (u)zcdie;
- v731 = vc;
- v732 = (u)"mul: not an int";
- v733 = ((u(*)())v730)(v731, v732);
- v733;
-b569: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b571: goto b569;
-b573: v726 = 1UL;
- goto b574;
-b561: goto b559;
-b563: v704 = 1UL;
- goto b564;
-b558: if (vkind != 59UL) goto b578;
- if (!vrhs) goto b583;
- v734 = 0UL;
-b584: if (!v734) goto b581;
- v735 = (u)zcdie;
- v736 = vc;
- v737 = (u)"not lexpr";
- v738 = ((u(*)())v735)(v736, v737);
- v738;
-b579: v739 = (u)ztypecheck_expr;
- v740 = vc;
- v741 = vd;
- v742 = *(u*)(vn + 16UL);
- v743 = 1UL;
- v744 = ((u(*)())v739)(v740, v741, v742, v743);
- v744;
- v745 = (u)ztypecheck_expr;
- v746 = vc;
- v747 = vd;
- v748 = *(u*)(vn + 8UL);
- v749 = 1UL;
- v750 = ((u(*)())v745)(v746, v747, v748, v749);
- v750;
- v751 = (u)zunify;
- v752 = vc;
- v753 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v754 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v755 = ((u(*)())v751)(v752, v753, v754);
- v755;
- v757 = (u)ztype_isint;
- v758 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v759 = ((u(*)())v757)(v758);
- if (!v759) goto b593;
- v756 = 0UL;
-b594: if (!v756) goto b591;
- v760 = (u)zcdie;
- v761 = vc;
- v762 = (u)"div: not an int";
- v763 = ((u(*)())v760)(v761, v762);
- v763;
-b589: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b591: goto b589;
-b593: v756 = 1UL;
- goto b594;
-b581: goto b579;
-b583: v734 = 1UL;
- goto b584;
-b578: if (vkind != 60UL) goto b598;
- if (!vrhs) goto b603;
- v764 = 0UL;
-b604: if (!v764) goto b601;
- v765 = (u)zcdie;
- v766 = vc;
- v767 = (u)"not lexpr";
- v768 = ((u(*)())v765)(v766, v767);
- v768;
-b599: v769 = (u)ztypecheck_expr;
- v770 = vc;
- v771 = vd;
- v772 = *(u*)(vn + 16UL);
- v773 = 1UL;
- v774 = ((u(*)())v769)(v770, v771, v772, v773);
- v774;
- v775 = (u)ztypecheck_expr;
- v776 = vc;
- v777 = vd;
- v778 = *(u*)(vn + 8UL);
- v779 = 1UL;
- v780 = ((u(*)())v775)(v776, v777, v778, v779);
- v780;
- v781 = (u)zunify;
- v782 = vc;
- v783 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v784 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v785 = ((u(*)())v781)(v782, v783, v784);
- v785;
- v787 = (u)ztype_isint;
- v788 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v789 = ((u(*)())v787)(v788);
- if (!v789) goto b613;
- v786 = 0UL;
-b614: if (!v786) goto b611;
- v790 = (u)zcdie;
- v791 = vc;
- v792 = (u)"mod: not an int";
- v793 = ((u(*)())v790)(v791, v792);
- v793;
-b609: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b611: goto b609;
-b613: v786 = 1UL;
- goto b614;
-b601: goto b599;
-b603: v764 = 1UL;
- goto b604;
-b598: if (vkind != 48UL) goto b618;
- if (!vrhs) goto b623;
- v794 = 0UL;
-b624: if (!v794) goto b621;
- v795 = (u)zcdie;
- v796 = vc;
- v797 = (u)"not lexpr";
- v798 = ((u(*)())v795)(v796, v797);
- v798;
-b619: v799 = (u)ztypecheck_expr;
- v800 = vc;
- v801 = vd;
- v802 = *(u*)(vn + 16UL);
- v803 = 1UL;
- v804 = ((u(*)())v799)(v800, v801, v802, v803);
- v804;
- v805 = (u)ztypecheck_expr;
- v806 = vc;
- v807 = vd;
- v808 = *(u*)(vn + 8UL);
- v809 = 1UL;
- v810 = ((u(*)())v805)(v806, v807, v808, v809);
- v810;
- v811 = (u)zunify;
- v812 = vc;
- v813 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v814 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v815 = ((u(*)())v811)(v812, v813, v814);
- v815;
- v817 = (u)ztype_isint;
- v818 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v819 = ((u(*)())v817)(v818);
- if (!v819) goto b633;
- v816 = 0UL;
-b634: if (!v816) goto b631;
- v820 = (u)zcdie;
- v821 = vc;
- v822 = (u)"lsh: not an int";
- v823 = ((u(*)())v820)(v821, v822);
- v823;
-b629: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b631: goto b629;
-b633: v816 = 1UL;
- goto b634;
-b621: goto b619;
-b623: v794 = 1UL;
- goto b624;
-b618: if (vkind != 49UL) goto b638;
- if (!vrhs) goto b643;
- v824 = 0UL;
-b644: if (!v824) goto b641;
- v825 = (u)zcdie;
- v826 = vc;
- v827 = (u)"not lexpr";
- v828 = ((u(*)())v825)(v826, v827);
- v828;
-b639: v829 = (u)ztypecheck_expr;
- v830 = vc;
- v831 = vd;
- v832 = *(u*)(vn + 16UL);
- v833 = 1UL;
- v834 = ((u(*)())v829)(v830, v831, v832, v833);
- v834;
- v835 = (u)ztypecheck_expr;
- v836 = vc;
- v837 = vd;
- v838 = *(u*)(vn + 8UL);
- v839 = 1UL;
- v840 = ((u(*)())v835)(v836, v837, v838, v839);
- v840;
- v841 = (u)zunify;
- v842 = vc;
- v843 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v844 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v845 = ((u(*)())v841)(v842, v843, v844);
- v845;
- v847 = (u)ztype_isint;
- v848 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v849 = ((u(*)())v847)(v848);
- if (!v849) goto b653;
- v846 = 0UL;
-b654: if (!v846) goto b651;
- v850 = (u)zcdie;
- v851 = vc;
- v852 = (u)"rsh: not an int";
- v853 = ((u(*)())v850)(v851, v852);
- v853;
-b649: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
- goto b1;
-b651: goto b649;
-b653: v846 = 1UL;
- goto b654;
-b641: goto b639;
-b643: v824 = 1UL;
- goto b644;
-b638: if (vkind != 53UL) goto b658;
- if (!vrhs) goto b663;
- v854 = 0UL;
-b664: if (!v854) goto b661;
- v855 = (u)zcdie;
- v856 = vc;
- v857 = (u)"not lexpr";
- v858 = ((u(*)())v855)(v856, v857);
- v858;
-b659: v859 = (u)ztypecheck_expr;
- v860 = vc;
- v861 = vd;
- v862 = *(u*)(vn + 16UL);
- v863 = 1UL;
- v864 = ((u(*)())v859)(v860, v861, v862, v863);
- v864;
- v865 = (u)ztypecheck_expr;
- v866 = vc;
- v867 = vd;
- v868 = *(u*)(vn + 8UL);
- v869 = 1UL;
- v870 = ((u(*)())v865)(v866, v867, v868, v869);
- v870;
- v871 = (u)zunify;
- v872 = vc;
- v873 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v874 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v875 = ((u(*)())v871)(v872, v873, v874);
- v875;
- v877 = (u)ztype_isint;
- v878 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v879 = ((u(*)())v877)(v878);
- if (!v879) goto b673;
- v876 = 0UL;
-b674: if (!v876) goto b671;
- v880 = (u)zcdie;
- v881 = vc;
- v882 = (u)"and: not an int";
- v883 = ((u(*)())v880)(v881, v882);
- v883;
-b669: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+ v675 = 0UL;
+ v676 = ((u(*)())(v671))(v672, v673, v674, v675);
+ v676;
+ v677 = (u)zx86_64_modrr;
+ v678 = *(u*)(vic + 8UL);
+ v679 = 59UL;
+ v680 = 2UL;
+ v681 = 1UL;
+ v682 = ((u(*)())(v677))(v678, v679, v680, v681);
+ v682;
+ v683 = (u)zx86_64_modrr;
+ v684 = *(u*)(vic + 8UL);
+ v685 = 3984UL + 14UL;
+ v686 = 0UL;
+ v687 = 0UL;
+ v688 = ((u(*)())(v683))(v684, v685, v686, v687);
+ v688;
+ goto b8;
+b187: v689 = (u)zcdie;
+ v690 = *(u*)(vic + 0UL);
+ v691 = (u)"invalid op";
+ v692 = ((u(*)())(v689))(v690, v691);
+ v692;
+ goto b8;
+b3: goto b1;
+b5: v4 = 1UL;
+ goto b6;
+}
+u zx86_64_output_irfuncptr(u vic, u vb, u vo) {
+ u vd = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ v4 = (u)zfind;
+ v5 = *(u*)(vic + 0UL);
+ v6 = *(u*)(vo + 32UL);
+ v7 = 0UL;
+ v8 = 0UL;
+ v9 = ((u(*)())(v4))(v5, v6, v7, v8);
+ vd = v9;
+ if (!(vd)) goto b10;
+ v11 = 0UL;
+b11: if (!(v11)) goto b6;
+ v10 = 1UL;
+b8: if (!(v10)) goto b4;
+ v13 = (u)zcdie;
+ v14 = *(u*)(vic + 0UL);
+ v15 = (u)"no such function";
+ v16 = ((u(*)())(v13))(v14, v15);
+ v16;
+b2: v17 = (u)zreserve;
+ v18 = *(u*)(vic + 8UL);
+ v19 = 16UL;
+ v20 = ((u(*)())(v17))(v18, v19);
+ v20;
+ v21 = (u)zx86_64_modrm;
+ v22 = *(u*)(vic + 8UL);
+ v23 = 141UL;
+ v24 = 0UL;
+ v25 = 16UL;
+ v26 = 0UL;
+ v27 = 0UL;
+ v28 = 128UL;
+ v29 = ((u(*)())(v21))(v22, v23, v24, v25, v26, v27, v28);
+ v29;
+ v30 = (u)zaddfixup;
+ v31 = *(u*)(vic + 8UL);
+ v32 = *(u*)(vd + 88UL);
+ v33 = 0UL;
+ v34 = ((u(*)())(v30))(v31, v32, v33);
+ v34;
+ return 0UL;
+b4: goto b2;
+b6: if (!(*(u*)(vd + 72UL))) goto b14;
+ v12 = 0UL;
+b15: if (!(v12)) goto b12;
+ v10 = 1UL;
+ goto b8;
+b12: v10 = 0UL;
+ goto b8;
+b14: v12 = 1UL;
+ goto b15;
+b10: v11 = 1UL;
+ goto b11;
+}
+u zx86_64_output_irretval(u vic, u vb, u vo) {
+ u vi = 0;
+ u vop = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ vop = 0UL;
+ vi = 0UL;
+b1: if (vi != *(u*)(vb + 16UL)) goto b5;
+ return 0UL;
+b5: vop = *(u*)(*(u*)(vb + 8UL) + vi * 8UL);
+ if (*(u*)(vop + 0UL) != 7UL) goto b8;
+ if (*(u*)(*(u*)(vop + 48UL) + 0UL) != 1UL) goto b11;
+ return 0UL;
+b11: v5 = (u)zx86_64_modrr;
+ v6 = *(u*)(vic + 8UL);
+ v7 = 139UL;
+ v8 = 7UL;
+ v9 = 0UL;
+ v10 = ((u(*)())(v5))(v6, v7, v8, v9);
+ v10;
+ if (*(u*)(*(u*)(vop + 8UL) + 0UL) != 5UL) goto b15;
+ v11 = (u)zx86_64_output_irexpr;
+ v12 = vic;
+ v13 = vb;
+ v14 = *(u*)(*(u*)(vop + 8UL) + 8UL);
+ v15 = ((u(*)())(v11))(v12, v13, v14);
+ v15;
+b13: if (*(u*)(*(u*)(vop + 48UL) + 0UL) != 3UL) goto b23;
+ v28 = (u)zx86_64_modrm;
+ v29 = *(u*)(vic + 8UL);
+ v30 = 136UL;
+ v31 = 7UL;
+ v32 = 0UL;
+ v33 = 0UL;
+ v34 = 0UL;
+ v35 = 0UL;
+ v36 = ((u(*)())(v28))(v29, v30, v31, v32, v33, v34, v35);
+ v36;
+b21: return 0UL;
+b23: v37 = (u)ztype_isprim;
+ v38 = *(u*)(vop + 48UL);
+ v39 = ((u(*)())(v37))(v38);
+ if (!(v39)) goto b26;
+ v40 = (u)zx86_64_modrm;
+ v41 = *(u*)(vic + 8UL);
+ v42 = 137UL;
+ v43 = 7UL;
+ v44 = 0UL;
+ v45 = 0UL;
+ v46 = 0UL;
+ v47 = 0UL;
+ v48 = ((u(*)())(v40))(v41, v42, v43, v44, v45, v46, v47);
+ v48;
+ goto b21;
+b26: v49 = (u)zcdie;
+ v50 = *(u*)(vic + 0UL);
+ v51 = (u)"invalid store";
+ v52 = ((u(*)())(v49))(v50, v51);
+ v52;
+ goto b21;
+b15: if (*(u*)(*(u*)(vop + 8UL) + 0UL) != 0UL) goto b18;
+ v16 = (u)zx86_64_modrm;
+ v17 = *(u*)(vic + 8UL);
+ v18 = 141UL;
+ v19 = 0UL;
+ v20 = 5UL;
+ v21 = 0UL;
+ v22 = 0UL;
+ v23 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(*(u*)(vop + 8UL) + 24UL) * 8UL) + 40UL);
+ v24 = ((u(*)())(v16))(v17, v18, v19, v20, v21, v22, v23);
+ v24;
+ goto b13;
+b18: v25 = (u)zdie;
+ v26 = (u)"invalid store";
+ v27 = ((u(*)())(v25))(v26);
+ v27;
+ goto b13;
+b8: vi = vi + 1UL;
goto b1;
-b671: goto b669;
-b673: v876 = 1UL;
- goto b674;
-b661: goto b659;
-b663: v854 = 1UL;
- goto b664;
-b658: if (vkind != 54UL) goto b678;
- if (!vrhs) goto b683;
- v884 = 0UL;
-b684: if (!v884) goto b681;
- v885 = (u)zcdie;
- v886 = vc;
- v887 = (u)"not lexpr";
- v888 = ((u(*)())v885)(v886, v887);
- v888;
-b679: v889 = (u)ztypecheck_expr;
- v890 = vc;
- v891 = vd;
- v892 = *(u*)(vn + 16UL);
- v893 = 1UL;
- v894 = ((u(*)())v889)(v890, v891, v892, v893);
- v894;
- v895 = (u)ztypecheck_expr;
- v896 = vc;
- v897 = vd;
- v898 = *(u*)(vn + 8UL);
- v899 = 1UL;
- v900 = ((u(*)())v895)(v896, v897, v898, v899);
- v900;
- v901 = (u)zunify;
- v902 = vc;
- v903 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v904 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v905 = ((u(*)())v901)(v902, v903, v904);
- v905;
- v907 = (u)ztype_isint;
- v908 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v909 = ((u(*)())v907)(v908);
- if (!v909) goto b693;
- v906 = 0UL;
-b694: if (!v906) goto b691;
- v910 = (u)zcdie;
- v911 = vc;
- v912 = (u)"or: not an int";
- v913 = ((u(*)())v910)(v911, v912);
- v913;
-b689: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+}
+u zx86_64_output_irstmt(u vic, u vb, u vo) {
+ u vkind = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ u v27 = 0;
+ u v28 = 0;
+ u v29 = 0;
+ u v30 = 0;
+ u v31 = 0;
+ u v32 = 0;
+ u v33 = 0;
+ u v34 = 0;
+ u v35 = 0;
+ u v36 = 0;
+ u v37 = 0;
+ u v38 = 0;
+ u v39 = 0;
+ u v40 = 0;
+ u v41 = 0;
+ u v42 = 0;
+ u v43 = 0;
+ u v44 = 0;
+ u v45 = 0;
+ u v46 = 0;
+ u v47 = 0;
+ u v48 = 0;
+ u v49 = 0;
+ u v50 = 0;
+ u v51 = 0;
+ u v52 = 0;
+ u v53 = 0;
+ u v54 = 0;
+ u v55 = 0;
+ u v56 = 0;
+ u v57 = 0;
+ u v58 = 0;
+ u v59 = 0;
+ u v60 = 0;
+ u v61 = 0;
+ u v62 = 0;
+ u v63 = 0;
+ u v64 = 0;
+ u v65 = 0;
+ u v66 = 0;
+ u v67 = 0;
+ u v68 = 0;
+ u v69 = 0;
+ u v70 = 0;
+ u v71 = 0;
+ u v72 = 0;
+ u v73 = 0;
+ u v74 = 0;
+ u v75 = 0;
+ u v76 = 0;
+ u v77 = 0;
+ u v78 = 0;
+ u v79 = 0;
+ u v80 = 0;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ u v103 = 0;
+ u v104 = 0;
+ u v105 = 0;
+ u v106 = 0;
+ u v107 = 0;
+ u v108 = 0;
+ u v109 = 0;
+ u v110 = 0;
+ u v111 = 0;
+ u v112 = 0;
+ u v113 = 0;
+ u v114 = 0;
+ u v115 = 0;
+ u v116 = 0;
+ u v117 = 0;
+ u v118 = 0;
+ u v119 = 0;
+ u v120 = 0;
+ u v121 = 0;
+ u v122 = 0;
+ u v123 = 0;
+ u v124 = 0;
+ u v125 = 0;
+ u v126 = 0;
+ u v127 = 0;
+ u v128 = 0;
+ u v129 = 0;
+ u v130 = 0;
+ u v131 = 0;
+ u v132 = 0;
+ u v133 = 0;
+ u v134 = 0;
+ u v135 = 0;
+ u v136 = 0;
+ u v137 = 0;
+ u v138 = 0;
+ u v139 = 0;
+ u v140 = 0;
+ u v141 = 0;
+ u v142 = 0;
+ u v143 = 0;
+ u v144 = 0;
+ u v145 = 0;
+ u v146 = 0;
+ u v147 = 0;
+ u v148 = 0;
+ u v149 = 0;
+ u v150 = 0;
+ u v151 = 0;
+ u v152 = 0;
+ u v153 = 0;
+ u v154 = 0;
+ u v155 = 0;
+ u v156 = 0;
+ u v157 = 0;
+ u v158 = 0;
+ u v159 = 0;
+ u v160 = 0;
+ u v161 = 0;
+ u v162 = 0;
+ u v163 = 0;
+ u v164 = 0;
+ u v165 = 0;
+ u v166 = 0;
+ u v167 = 0;
+ u v168 = 0;
+ u v169 = 0;
+ u v170 = 0;
+ *(u*)(*(u*)(vic + 0UL) + 24UL) = *(u*)(vo + 64UL);
+ *(u*)(*(u*)(vic + 0UL) + 32UL) = *(u*)(vo + 72UL);
+ *(u*)(*(u*)(vic + 0UL) + 40UL) = *(u*)(vo + 80UL);
+ *(u*)(*(u*)(vic + 8UL) + 88UL) = *(u*)(vo + 64UL);
+ *(u*)(*(u*)(vic + 8UL) + 96UL) = *(u*)(vo + 72UL);
+ vkind = *(u*)(vo + 0UL);
+ if (vkind != 6UL) goto b3;
+ if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 5UL) goto b6;
+ v4 = (u)zx86_64_output_irexpr;
+ v5 = vic;
+ v6 = vb;
+ v7 = *(u*)(*(u*)(vo + 8UL) + 8UL);
+ v8 = ((u(*)())(v4))(v5, v6, v7);
+ v8;
+b4: v21 = (u)zx86_64_opr;
+ v22 = *(u*)(vic + 8UL);
+ v23 = 80UL;
+ v24 = 0UL;
+ v25 = ((u(*)())(v21))(v22, v23, v24);
+ v25;
+ v26 = (u)zx86_64_output_irexpr;
+ v27 = vic;
+ v28 = vb;
+ v29 = *(u*)(vo + 16UL);
+ v30 = ((u(*)())(v26))(v27, v28, v29);
+ v30;
+ v31 = (u)zx86_64_opr;
+ v32 = *(u*)(vic + 8UL);
+ v33 = 88UL;
+ v34 = 7UL;
+ v35 = ((u(*)())(v31))(v32, v33, v34);
+ v35;
+ if (*(u*)(*(u*)(vo + 48UL) + 0UL) != 3UL) goto b17;
+ v36 = (u)zx86_64_modrm;
+ v37 = *(u*)(vic + 8UL);
+ v38 = 136UL;
+ v39 = 0UL;
+ v40 = 7UL;
+ v41 = 0UL;
+ v42 = 0UL;
+ v43 = 0UL;
+ v44 = ((u(*)())(v36))(v37, v38, v39, v40, v41, v42, v43);
+ v44;
+b15:b1: return 0UL;
+b17: v45 = (u)ztype_isprim;
+ v46 = *(u*)(vo + 48UL);
+ v47 = ((u(*)())(v45))(v46);
+ if (!(v47)) goto b20;
+ v48 = (u)zx86_64_modrm;
+ v49 = *(u*)(vic + 8UL);
+ v50 = 137UL;
+ v51 = 0UL;
+ v52 = 7UL;
+ v53 = 0UL;
+ v54 = 0UL;
+ v55 = 0UL;
+ v56 = ((u(*)())(v48))(v49, v50, v51, v52, v53, v54, v55);
+ v56;
+ goto b15;
+b20: v57 = (u)zcdie;
+ v58 = *(u*)(vic + 0UL);
+ v59 = (u)"invalid store";
+ v60 = ((u(*)())(v57))(v58, v59);
+ v60;
+ goto b15;
+b6: if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 0UL) goto b9;
+ v9 = (u)zx86_64_modrm;
+ v10 = *(u*)(vic + 8UL);
+ v11 = 141UL;
+ v12 = 0UL;
+ v13 = 5UL;
+ v14 = 0UL;
+ v15 = 0UL;
+ v16 = *(u*)(*(u*)(*(u*)(vic + 128UL) + *(u*)(*(u*)(vo + 8UL) + 24UL) * 8UL) + 40UL);
+ v17 = ((u(*)())(v9))(v10, v11, v12, v13, v14, v15, v16);
+ v17;
+ goto b4;
+b9: v18 = (u)zdie;
+ v19 = (u)"invalid store";
+ v20 = ((u(*)())(v18))(v19);
+ v20;
+ goto b4;
+b3: if (vkind != 7UL) goto b25;
goto b1;
-b691: goto b689;
-b693: v906 = 1UL;
- goto b694;
-b681: goto b679;
-b683: v884 = 1UL;
- goto b684;
-b678: if (vkind != 55UL) goto b698;
- if (!vrhs) goto b703;
- v914 = 0UL;
-b704: if (!v914) goto b701;
- v915 = (u)zcdie;
- v916 = vc;
- v917 = (u)"not lexpr";
- v918 = ((u(*)())v915)(v916, v917);
- v918;
-b699: v919 = (u)ztypecheck_expr;
- v920 = vc;
- v921 = vd;
- v922 = *(u*)(vn + 16UL);
- v923 = 1UL;
- v924 = ((u(*)())v919)(v920, v921, v922, v923);
- v924;
- v925 = (u)ztypecheck_expr;
- v926 = vc;
- v927 = vd;
- v928 = *(u*)(vn + 8UL);
- v929 = 1UL;
- v930 = ((u(*)())v925)(v926, v927, v928, v929);
- v930;
- v931 = (u)zunify;
- v932 = vc;
- v933 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v934 = *(u*)(*(u*)(vn + 16UL) + 64UL);
- v935 = ((u(*)())v931)(v932, v933, v934);
- v935;
- v937 = (u)ztype_isint;
- v938 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v939 = ((u(*)())v937)(v938);
- if (!v939) goto b713;
- v936 = 0UL;
-b714: if (!v936) goto b711;
- v940 = (u)zcdie;
- v941 = vc;
- v942 = (u)"xor: not an int";
- v943 = ((u(*)())v940)(v941, v942);
- v943;
-b709: *(u*)(vn + 64UL) = *(u*)(*(u*)(vn + 8UL) + 64UL);
+b25: if (vkind != 8UL) goto b27;
goto b1;
-b711: goto b709;
-b713: v936 = 1UL;
- goto b714;
-b701: goto b699;
-b703: v914 = 1UL;
- goto b704;
-b698: if (vkind != 37UL) goto b718;
- if (!vrhs) goto b723;
- v944 = 0UL;
-b724: if (!v944) goto b721;
- v945 = (u)zcdie;
- v946 = vc;
- v947 = (u)"not lexpr";
- v948 = ((u(*)())v945)(v946, v947);
- v948;
-b719: v949 = (u)ztypecheck_expr;
- v950 = vc;
- v951 = vd;
- v952 = *(u*)(vn + 8UL);
- v953 = 1UL;
- v954 = ((u(*)())v949)(v950, v951, v952, v953);
- v954;
- v956 = (u)ztype_isprim;
- v957 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v958 = ((u(*)())v956)(v957);
- if (!v958) goto b731;
- v955 = 0UL;
-b732: if (!v955) goto b729;
- v959 = (u)zcdie;
- v960 = vc;
- v961 = (u)"not a primitive";
- v962 = ((u(*)())v959)(v960, v961);
- v962;
-b727: v963 = (u)zprototype;
- v964 = vc;
- v965 = *(u*)(vn + 16UL);
- v966 = ((u(*)())v963)(v964, v965);
- *(u*)(vn + 64UL) = v966;
+b27: if (vkind != 27UL) goto b29;
+ if ((s)(*(u*)(vo + 24UL)) <= (s)6UL) goto b32;
+ v61 = (u)zx86_64_modri;
+ v62 = *(u*)(vic + 8UL);
+ v63 = 327809UL;
+ v64 = 4UL;
+ v65 = (*(u*)(vo + 24UL) - 6UL) * 8UL;
+ v66 = ((u(*)())(v61))(v62, v63, v64, v65);
+ v66;
+b30: v67 = (u)zx86_64_output_irargs;
+ v68 = vic;
+ v69 = vb;
+ v70 = vo;
+ v71 = ((u(*)())(v67))(v68, v69, v70);
+ v71;
+ if (*(u*)(*(u*)(vo + 8UL) + 0UL) != 2UL) goto b37;
+ v72 = (u)zx86_64_output_ircall;
+ v73 = vic;
+ v74 = vb;
+ v75 = *(u*)(vo + 8UL);
+ v76 = ((u(*)())(v72))(v73, v74, v75);
+ v76;
+b35: if ((s)(*(u*)(vo + 24UL)) <= (s)6UL) goto b43;
+ v87 = (u)zx86_64_modri;
+ v88 = *(u*)(vic + 8UL);
+ v89 = 129UL;
+ v90 = 4UL;
+ v91 = (*(u*)(vo + 24UL) - 6UL) * 8UL;
+ v92 = ((u(*)())(v87))(v88, v89, v90, v91);
+ v92;
+b41: v93 = (u)zx86_64_output_irretval;
+ v94 = vic;
+ v95 = vb;
+ v96 = vo;
+ v97 = ((u(*)())(v93))(v94, v95, v96);
+ v97;
+ if (!(*(u*)(*(u*)(vb + 56UL) + 80UL))) goto b48;
+ v98 = (u)zx86_64_jmp;
+ v99 = *(u*)(vic + 8UL);
+ v100 = 233UL;
+ v101 = *(u*)(*(u*)(vb + 56UL) + 72UL);
+ v102 = ((u(*)())(v98))(v99, v100, v101);
+ v102;
+b46: return 0UL;
+b48: v103 = (u)zx86_64_output_irblock;
+ v104 = vic;
+ v105 = *(u*)(vb + 56UL);
+ v106 = ((u(*)())(v103))(v104, v105);
+ v106;
+ goto b46;
+b43: goto b41;
+b37: v77 = (u)zx86_64_output_irexpr;
+ v78 = vic;
+ v79 = vb;
+ v80 = *(u*)(vo + 8UL);
+ v81 = ((u(*)())(v77))(v78, v79, v80);
+ v81;
+ v82 = (u)zx86_64_modr;
+ v83 = *(u*)(vic + 8UL);
+ v84 = 131327UL;
+ v85 = 0UL;
+ v86 = ((u(*)())(v82))(v83, v84, v85);
+ v86;
+ goto b35;
+b32: goto b30;
+b29: if (vkind != 28UL) goto b52;
+ if (!(*(u*)(*(u*)(vb + 56UL) + 80UL))) goto b55;
+ v107 = (u)zx86_64_jmp;
+ v108 = *(u*)(vic + 8UL);
+ v109 = 233UL;
+ v110 = *(u*)(*(u*)(vb + 56UL) + 72UL);
+ v111 = ((u(*)())(v107))(v108, v109, v110);
+ v111;
+b53: return 0UL;
+b55: v112 = (u)zx86_64_output_irblock;
+ v113 = vic;
+ v114 = *(u*)(vb + 56UL);
+ v115 = ((u(*)())(v112))(v113, v114);
+ v115;
+ goto b53;
+b52: if (vkind != 29UL) goto b59;
+ v116 = (u)zx86_64_output_irexpr;
+ v117 = vic;
+ v118 = vb;
+ v119 = *(u*)(vo + 8UL);
+ v120 = ((u(*)())(v116))(v117, v118, v119);
+ v120;
+ v121 = (u)zx86_64_modrr;
+ v122 = *(u*)(vic + 8UL);
+ v123 = 133UL;
+ v124 = 0UL;
+ v125 = 0UL;
+ v126 = ((u(*)())(v121))(v122, v123, v124, v125);
+ v126;
+ v127 = (u)zx86_64_jmp;
+ v128 = *(u*)(vic + 8UL);
+ v129 = 3968UL + 4UL;
+ v130 = *(u*)(*(u*)(vb + 64UL) + 72UL);
+ v131 = ((u(*)())(v127))(v128, v129, v130);
+ v131;
+ if (!(*(u*)(*(u*)(vb + 56UL) + 80UL))) goto b65;
+ v132 = (u)zx86_64_jmp;
+ v133 = *(u*)(vic + 8UL);
+ v134 = 3968UL + 5UL;
+ v135 = *(u*)(*(u*)(vb + 56UL) + 72UL);
+ v136 = ((u(*)())(v132))(v133, v134, v135);
+ v136;
+b63: if (!(*(u*)(*(u*)(vb + 64UL) + 80UL))) goto b72;
+ v141 = 0UL;
+b73: if (!(v141)) goto b70;
+ v142 = (u)zx86_64_output_irblock;
+ v143 = vic;
+ v144 = *(u*)(vb + 64UL);
+ v145 = ((u(*)())(v142))(v143, v144);
+ v145;
+b68: return 0UL;
+b70: goto b68;
+b72: v141 = 1UL;
+ goto b73;
+b65: v137 = (u)zx86_64_output_irblock;
+ v138 = vic;
+ v139 = *(u*)(vb + 56UL);
+ v140 = ((u(*)())(v137))(v138, v139);
+ v140;
+ goto b63;
+b59: if (vkind != 30UL) goto b76;
+ if (!(*(u*)(vo + 8UL))) goto b79;
+ v146 = (u)zx86_64_output_irexpr;
+ v147 = vic;
+ v148 = vb;
+ v149 = *(u*)(vo + 8UL);
+ v150 = ((u(*)())(v146))(v147, v148, v149);
+ v150;
+b77: v151 = (u)zx86_64_modrr;
+ v152 = *(u*)(vic + 8UL);
+ v153 = 139UL;
+ v154 = 4UL;
+ v155 = 5UL;
+ v156 = ((u(*)())(v151))(v152, v153, v154, v155);
+ v156;
+ v157 = (u)zx86_64_opr;
+ v158 = *(u*)(vic + 8UL);
+ v159 = 88UL;
+ v160 = 5UL;
+ v161 = ((u(*)())(v157))(v158, v159, v160);
+ v161;
+ v162 = (u)zx86_64_op;
+ v163 = *(u*)(vic + 8UL);
+ v164 = 195UL;
+ v165 = ((u(*)())(v162))(v163, v164);
+ v165;
goto b1;
-b729: goto b727;
-b731: v955 = 1UL;
- goto b732;
-b721: goto b719;
-b723: v944 = 1UL;
- goto b724;
-b718: v967 = (u)zcdie;
- v968 = vc;
- v969 = (u)"not an expression";
- v970 = ((u(*)())v967)(v968, v969);
- v970;
+b79: goto b77;
+b76: v166 = (u)zx86_64_output_irexpr;
+ v167 = vic;
+ v168 = vb;
+ v169 = vo;
+ v170 = ((u(*)())(v166))(v167, v168, v169);
+ v170;
goto b1;
}
-u ztypecheck_stmt(u vc, u vd, u vn) {
+u zx86_64_output_irstr(u vic, u vb, u vo) {
+ u vs = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
+ u v16 = 0;
+ u v17 = 0;
+ u v18 = 0;
+ u v19 = 0;
+ u v20 = 0;
+ u v21 = 0;
+ u v22 = 0;
+ u v23 = 0;
+ u v24 = 0;
+ u v25 = 0;
+ u v26 = 0;
+ v4 = (u)zas_blob;
+ v5 = *(u*)(vic + 8UL);
+ v6 = *(u*)(vo + 32UL);
+ v7 = *(u*)(vo + 40UL) + 1UL;
+ v8 = ((u(*)())(v4))(v5, v6, v7);
+ vs = v8;
+ v9 = (u)zreserve;
+ v10 = *(u*)(vic + 8UL);
+ v11 = 16UL;
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ v13 = (u)zx86_64_modrm;
+ v14 = *(u*)(vic + 8UL);
+ v15 = 141UL;
+ v16 = 0UL;
+ v17 = 16UL;
+ v18 = 0UL;
+ v19 = 0UL;
+ v20 = 128UL;
+ v21 = ((u(*)())(v13))(v14, v15, v16, v17, v18, v19, v20);
+ v21;
+ v22 = (u)zaddfixup;
+ v23 = *(u*)(vic + 8UL);
+ v24 = vs;
+ v25 = 0UL;
+ v26 = ((u(*)())(v22))(v23, v24, v25);
+ v26;
+ return 0UL;
+}
+u zx86_64_output_irvars(u vic) {
+ u voffset = 0;
+ u vsize = 0;
+ u vi = 0;
u vv = 0;
- u vkind = 0;
u v5 = 0;
u v6 = 0;
u v7 = 0;
@@ -49112,478 +54198,239 @@ u ztypecheck_stmt(u vc, u vd, u vn) {
u v78 = 0;
u v79 = 0;
u v80 = 0;
- if (!vn) goto b5;
- v5 = 0UL;
-b6: if (!v5) goto b3;
- return 0UL;
-b3: *(u*)(vc + 24UL) = *(u*)(vn + 24UL);
- *(u*)(vc + 32UL) = *(u*)(vn + 32UL);
- *(u*)(vc + 40UL) = *(u*)(vn + 40UL);
- vkind = *(u*)(vn + 0UL);
- if (vkind != 21UL) goto b9;
-b10: if (!vn) goto b16;
- v6 = 0UL;
-b17: if (!v6) goto b14;
-b7: return 0UL;
-b14: if (!*(u*)(*(u*)(vn + 8UL) + 8UL)) goto b20;
- v7 = (u)ztypecheck_expr;
- v8 = vc;
- v9 = vd;
- v10 = *(u*)(*(u*)(vn + 8UL) + 8UL);
- v11 = 1UL;
- v12 = ((u(*)())v7)(v8, v9, v10, v11);
- v12;
-b18: v13 = (u)ztypecheck_stmt;
- v14 = vc;
- v15 = vd;
- v16 = *(u*)(*(u*)(vn + 8UL) + 16UL);
- v17 = ((u(*)())v13)(v14, v15, v16);
- v17;
- vn = *(u*)(vn + 16UL);
- goto b10;
-b20: goto b18;
-b16: v6 = 1UL;
- goto b17;
-b9: if (vkind != 5UL) goto b24;
-b25: if (!vn) goto b31;
- v18 = 0UL;
-b32: if (!v18) goto b29;
- goto b7;
-b29: v19 = (u)ztypecheck_stmt;
- v20 = vc;
- v21 = vd;
- v22 = *(u*)(vn + 8UL);
- v23 = ((u(*)())v19)(v20, v21, v22);
- v23;
- vn = *(u*)(vn + 16UL);
- goto b25;
-b31: v18 = 1UL;
- goto b32;
-b24: if (vkind != 26UL) goto b35;
- v24 = (u)ztypecheck_stmt;
- v25 = vc;
- v26 = vd;
- v27 = *(u*)(vn + 8UL);
- v28 = ((u(*)())v24)(v25, v26, v27);
- v28;
- goto b7;
-b35: if (vkind != 27UL) goto b38;
- goto b7;
-b38: if (vkind != 28UL) goto b40;
- goto b7;
-b40: if (vkind != 29UL) goto b42;
- if (!*(u*)(vn + 8UL)) goto b45;
- if (*(u*)(*(u*)(*(u*)(vd + 80UL) + 16UL) + 0UL) != 1UL) goto b48;
- v29 = (u)zcdie;
- v30 = vc;
- v31 = (u)"returning a value in a void function";
- v32 = ((u(*)())v29)(v30, v31);
- v32;
-b46: v33 = (u)zcall_check;
- v34 = vc;
- v35 = *(u*)(vn + 8UL);
- v36 = ((u(*)())v33)(v34, v35);
- v36;
- v37 = (u)ztypecheck_expr;
- v38 = vc;
- v39 = vd;
- v40 = *(u*)(vn + 8UL);
- v41 = 1UL;
- v42 = ((u(*)())v37)(v38, v39, v40, v41);
- v42;
- v43 = (u)zunify;
- v44 = vc;
- v45 = *(u*)(*(u*)(vn + 8UL) + 64UL);
- v46 = *(u*)(*(u*)(vd + 80UL) + 16UL);
- v47 = ((u(*)())v43)(v44, v45, v46);
- v47;
-b43: goto b7;
-b48: goto b46;
-b45: if (*(u*)(*(u*)(*(u*)(vd + 80UL) + 16UL) + 0UL) == 1UL) goto b55;
- v48 = (u)zcdie;
- v49 = vc;
- v50 = (u)"returning void in a non void function";
- v51 = ((u(*)())v48)(v49, v50);
- v51;
-b53: goto b43;
-b55: goto b53;
-b42: if (vkind != 31UL) goto b58;
- v52 = (u)zfind;
- v53 = vc;
- v54 = *(u*)(vd + 32UL);
- v55 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v56 = 0UL;
- v57 = ((u(*)())v52)(v53, v54, v55, v56);
- vv = v57;
- goto b7;
-b58: if (vkind != 32UL) goto b61;
- v58 = (u)zfind;
- v59 = vc;
- v60 = *(u*)(vd + 32UL);
- v61 = *(u*)(*(u*)(vn + 8UL) + 56UL);
- v62 = 0UL;
- v63 = ((u(*)())v58)(v59, v60, v61, v62);
- vv = v63;
- if (!vv) goto b71;
- v65 = 0UL;
-b72: if (!v65) goto b67;
- v64 = 1UL;
-b69: if (!v64) goto b65;
- v67 = (u)zcdie;
- v68 = vc;
- v69 = (u)"label not defined";
- v70 = ((u(*)())v67)(v68, v69);
- v70;
-b63: goto b7;
-b65: goto b63;
-b67: if (!*(u*)(vv + 224UL)) goto b75;
- v66 = 0UL;
-b76: if (!v66) goto b73;
- v64 = 1UL;
- goto b69;
-b73: v64 = 0UL;
- goto b69;
-b75: v66 = 1UL;
- goto b76;
-b71: v65 = 1UL;
- goto b72;
-b61: if (vkind == 30UL) goto b79;
- v71 = (u)zcall_check;
- v72 = vc;
- v73 = vn;
- v74 = ((u(*)())v71)(v72, v73);
- v74;
- v75 = (u)ztypecheck_expr;
- v76 = vc;
- v77 = vd;
- v78 = vn;
- v79 = 1UL;
- v80 = ((u(*)())v75)(v76, v77, v78, v79);
- v80;
- goto b7;
-b79: goto b7;
-b5: v5 = 1UL;
- goto b6;
-}
-u zunescape(u vs, u vi, u vlen, u vok) {
- u vch = 0;
- u vhex = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- *(u*)vok = 1UL;
- if ((s)*(u*)vi < (s)vlen) goto b3;
- *(u*)vok = 0UL;
- return 0UL;
-b3: vch = (u)*(b*)(vs + *(u*)vi * 1UL);
- *(u*)vi = *(u*)vi + 1UL;
- if (vch == 92UL) goto b6;
- return vch;
-b6: if ((s)*(u*)vi < (s)vlen) goto b9;
- *(u*)vok = 0UL;
- return 0UL;
-b9: vch = (u)*(b*)(vs + *(u*)vi * 1UL);
- *(u*)vi = *(u*)vi + 1UL;
- if (vch != 116UL) goto b12;
- return 9UL;
-b12: if (vch != 114UL) goto b14;
- return 13UL;
-b14: if (vch != 110UL) goto b16;
- return 10UL;
-b16: if (vch != 92UL) goto b18;
- return 92UL;
-b18: if (vch != 39UL) goto b20;
- return 39UL;
-b20: if (vch != 34UL) goto b22;
- return 34UL;
-b22: if (vch != 91UL) goto b24;
- return 91UL;
-b24: if (vch != 93UL) goto b26;
- return 93UL;
-b26: if (vch != 45UL) goto b28;
- return 45UL;
-b28: if (vch != 94UL) goto b30;
- return 94UL;
-b30: if (vch != 120UL) goto b32;
- if ((s)*(u*)vi < (s)vlen) goto b35;
- *(u*)vok = 0UL;
- return 0UL;
-b35: vch = (u)*(b*)(vs + *(u*)vi * 1UL);
- *(u*)vi = *(u*)vi + 1UL;
- v6 = (u)zhexdig;
- v7 = vch;
- v8 = vok;
- v9 = ((u(*)())v6)(v7, v8);
- vhex = v9 * 16UL;
- if (!*(u*)vok) goto b41;
- v10 = 0UL;
-b42: if (!v10) goto b39;
- return 0UL;
-b39: if ((s)*(u*)vi < (s)vlen) goto b45;
- *(u*)vok = 0UL;
- return 0UL;
-b45: vch = (u)*(b*)(vs + *(u*)vi * 1UL);
- *(u*)vi = *(u*)vi + 1UL;
- v11 = (u)zhexdig;
- v12 = vch;
- v13 = vok;
- v14 = ((u(*)())v11)(v12, v13);
- vhex = vhex | v14;
- if (!*(u*)vok) goto b51;
- v15 = 0UL;
-b52: if (!v15) goto b49;
- return 0UL;
-b49: return vhex;
-b51: v15 = 1UL;
- goto b52;
-b41: v10 = 1UL;
- goto b42;
-b32: *(u*)vok = 0UL;
- return 0UL;
-}
-u zunify(u vc, u va, u vb) {
- u vkind = 0;
- u v4 = 0;
- u v5 = 0;
- u v6 = 0;
- u v7 = 0;
- u v8 = 0;
- u v9 = 0;
- u v10 = 0;
- u v11 = 0;
- u v12 = 0;
- u v13 = 0;
- u v14 = 0;
- u v15 = 0;
- u v16 = 0;
- u v17 = 0;
- u v18 = 0;
- u v19 = 0;
- u v20 = 0;
- u v21 = 0;
- u v22 = 0;
- u v23 = 0;
- u v24 = 0;
- u v25 = 0;
- u v26 = 0;
- u v27 = 0;
- u v28 = 0;
- u v29 = 0;
- u v30 = 0;
- u v31 = 0;
- u v32 = 0;
- u v33 = 0;
- u v34 = 0;
- u v35 = 0;
- u v36 = 0;
- u v37 = 0;
- u v38 = 0;
- u v39 = 0;
- u v40 = 0;
- u v41 = 0;
- u v42 = 0;
- u v43 = 0;
- u v44 = 0;
- u v45 = 0;
- u v46 = 0;
- u v47 = 0;
- u v48 = 0;
- u v49 = 0;
- u v50 = 0;
- u v51 = 0;
- u v52 = 0;
- u v53 = 0;
- u v54 = 0;
- u v55 = 0;
- u v56 = 0;
- u v57 = 0;
- u v58 = 0;
- u v59 = 0;
- if (va != vb) goto b3;
- return 0UL;
-b3: if (!va) goto b12;
- if (!vb) goto b12;
- v5 = 1UL;
-b14: if (!v5) goto b8;
- if (*(u*)(va + 0UL) != 0UL) goto b20;
- if (*(u*)(vb + 0UL) != 4UL) goto b24;
- v8 = 1UL;
-b26: if (!v8) goto b20;
- v7 = 1UL;
-b22: if (!v7) goto b16;
- v6 = 1UL;
-b18: if (!v6) goto b8;
- v4 = 1UL;
-b10: if (!v4) goto b6;
+ u v81 = 0;
+ u v82 = 0;
+ u v83 = 0;
+ u v84 = 0;
+ u v85 = 0;
+ u v86 = 0;
+ u v87 = 0;
+ u v88 = 0;
+ u v89 = 0;
+ u v90 = 0;
+ u v91 = 0;
+ u v92 = 0;
+ u v93 = 0;
+ u v94 = 0;
+ u v95 = 0;
+ u v96 = 0;
+ u v97 = 0;
+ u v98 = 0;
+ u v99 = 0;
+ u v100 = 0;
+ u v101 = 0;
+ u v102 = 0;
+ voffset = 0UL;
+ vi = 0UL;
+b1: if (vi != *(u*)(vic + 136UL)) goto b5;
+ if (voffset == 0UL) goto b19;
+ v10 = (u)zx86_64_modri;
+ v11 = *(u*)(vic + 8UL);
+ v12 = 327809UL;
+ v13 = 4UL;
+ v14 = voffset;
+ v15 = ((u(*)())(v10))(v11, v12, v13, v14);
+ v15;
+ v16 = (u)zx86_64_modrr;
+ v17 = *(u*)(vic + 8UL);
+ v18 = 51UL;
+ v19 = 0UL;
+ v20 = 0UL;
+ v21 = ((u(*)())(v16))(v17, v18, v19, v20);
+ v21;
+ vi = 0UL;
+b22: if (vi != voffset) goto b26;
+b17: vi = 0UL;
+b28: if (vi != *(u*)(vic + 152UL)) goto b32;
return 0UL;
-b6: if (!va) goto b50;
- if (!vb) goto b54;
- v14 = 0UL;
-b55: if (!v14) goto b50;
- v13 = 1UL;
-b52: if (!v13) goto b46;
- v12 = 1UL;
-b48: if (!v12) goto b42;
- v11 = 1UL;
-b44: if (!v11) goto b40;
- v17 = (u)zcdie;
- v18 = vc;
- v19 = (u)"type error";
- v20 = ((u(*)())v17)(v18, v19);
- v20;
-b38: vkind = *(u*)(va + 0UL);
- if (vkind != 4UL) goto b68;
- v21 = (u)zunify;
- v22 = vc;
- v23 = *(u*)(va + 16UL);
- v24 = *(u*)(vb + 16UL);
- v25 = ((u(*)())v21)(v22, v23, v24);
- v25;
-b66: return 0UL;
-b68: if (vkind != 6UL) goto b71;
- v26 = (u)zunify;
- v27 = vc;
- v28 = *(u*)(va + 16UL);
- v29 = *(u*)(vb + 16UL);
- v30 = ((u(*)())v26)(v27, v28, v29);
+b32: vv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
+ if (vi != 0UL) goto b35;
+ v31 = (u)zx86_64_modrm;
+ v32 = *(u*)(vic + 8UL);
+ v33 = 137UL;
+ v34 = 7UL;
+ v35 = 5UL;
+ v36 = 0UL;
+ v37 = 0UL;
+ v38 = *(u*)(vv + 40UL);
+ v39 = ((u(*)())(v31))(v32, v33, v34, v35, v36, v37, v38);
+ v39;
+b33: vi = vi + 1UL;
+ goto b28;
+b35: if (vi != 1UL) goto b38;
+ v40 = (u)zx86_64_modrm;
+ v41 = *(u*)(vic + 8UL);
+ v42 = 137UL;
+ v43 = 6UL;
+ v44 = 5UL;
+ v45 = 0UL;
+ v46 = 0UL;
+ v47 = *(u*)(vv + 40UL);
+ v48 = ((u(*)())(v40))(v41, v42, v43, v44, v45, v46, v47);
+ v48;
+ goto b33;
+b38: if (vi != 2UL) goto b41;
+ v49 = (u)zx86_64_modrm;
+ v50 = *(u*)(vic + 8UL);
+ v51 = 137UL;
+ v52 = 2UL;
+ v53 = 5UL;
+ v54 = 0UL;
+ v55 = 0UL;
+ v56 = *(u*)(vv + 40UL);
+ v57 = ((u(*)())(v49))(v50, v51, v52, v53, v54, v55, v56);
+ v57;
+ goto b33;
+b41: if (vi != 3UL) goto b44;
+ v58 = (u)zx86_64_modrm;
+ v59 = *(u*)(vic + 8UL);
+ v60 = 137UL;
+ v61 = 1UL;
+ v62 = 5UL;
+ v63 = 0UL;
+ v64 = 0UL;
+ v65 = *(u*)(vv + 40UL);
+ v66 = ((u(*)())(v58))(v59, v60, v61, v62, v63, v64, v65);
+ v66;
+ goto b33;
+b44: if (vi != 4UL) goto b47;
+ v67 = (u)zx86_64_modrm;
+ v68 = *(u*)(vic + 8UL);
+ v69 = 137UL;
+ v70 = 8UL;
+ v71 = 5UL;
+ v72 = 0UL;
+ v73 = 0UL;
+ v74 = *(u*)(vv + 40UL);
+ v75 = ((u(*)())(v67))(v68, v69, v70, v71, v72, v73, v74);
+ v75;
+ goto b33;
+b47: if (vi != 5UL) goto b50;
+ v76 = (u)zx86_64_modrm;
+ v77 = *(u*)(vic + 8UL);
+ v78 = 137UL;
+ v79 = 9UL;
+ v80 = 5UL;
+ v81 = 0UL;
+ v82 = 0UL;
+ v83 = *(u*)(vv + 40UL);
+ v84 = ((u(*)())(v76))(v77, v78, v79, v80, v81, v82, v83);
+ v84;
+ goto b33;
+b50: v85 = (u)zx86_64_modrm;
+ v86 = *(u*)(vic + 8UL);
+ v87 = 139UL;
+ v88 = 0UL;
+ v89 = 5UL;
+ v90 = 0UL;
+ v91 = 0UL;
+ v92 = ((vi - 6UL) + 2UL) * 8UL;
+ v93 = ((u(*)())(v85))(v86, v87, v88, v89, v90, v91, v92);
+ v93;
+ v94 = (u)zx86_64_modrm;
+ v95 = *(u*)(vic + 8UL);
+ v96 = 137UL;
+ v97 = 0UL;
+ v98 = 5UL;
+ v99 = 0UL;
+ v100 = 0UL;
+ v101 = *(u*)(vv + 40UL);
+ v102 = ((u(*)())(v94))(v95, v96, v97, v98, v99, v100, v101);
+ v102;
+ goto b33;
+b26: vi = vi + 8UL;
+ v22 = (u)zx86_64_modrm;
+ v23 = *(u*)(vic + 8UL);
+ v24 = 137UL;
+ v25 = 0UL;
+ v26 = 5UL;
+ v27 = 0UL;
+ v28 = 0UL;
+ v29 = -(vi);
+ v30 = ((u(*)())(v22))(v23, v24, v25, v26, v27, v28, v29);
v30;
- v31 = (u)zunify;
- v32 = vc;
- v33 = *(u*)(va + 24UL);
- v34 = *(u*)(vb + 24UL);
- v35 = ((u(*)())v31)(v32, v33, v34);
- v35;
- goto b66;
-b71: if (vkind != 5UL) goto b75;
- v36 = (u)zunify;
- v37 = vc;
- v38 = *(u*)(va + 16UL);
- v39 = *(u*)(vb + 16UL);
- v40 = ((u(*)())v36)(v37, v38, v39);
- v40;
- v41 = (u)zunify;
- v42 = vc;
- v43 = *(u*)(va + 24UL);
- v44 = *(u*)(vb + 24UL);
- v45 = ((u(*)())v41)(v42, v43, v44);
- v45;
- goto b66;
-b75: if (vkind != 7UL) goto b79;
- if (*(u*)(va + 8UL) == *(u*)(vb + 8UL)) goto b82;
- v46 = (u)zcdie;
- v47 = vc;
- v48 = (u)"type error";
- v49 = ((u(*)())v46)(v47, v48);
- v49;
-b80: goto b66;
-b82: goto b80;
-b79: if (vkind != 8UL) goto b85;
- if (*(u*)(va + 8UL) == *(u*)(vb + 8UL)) goto b88;
- v50 = (u)zcdie;
- v51 = vc;
- v52 = (u)"type error";
- v53 = ((u(*)())v50)(v51, v52);
- v53;
-b86: goto b66;
-b88: goto b86;
-b85: if (vkind == 1UL) goto b97;
- if (vkind == 2UL) goto b97;
- v55 = 1UL;
-b99: if (!v55) goto b93;
- if (vkind == 3UL) goto b93;
- v54 = 1UL;
-b95: if (!v54) goto b91;
- v56 = (u)zcdie;
- v57 = vc;
- v58 = (u)"unify: invalid type";
- v59 = ((u(*)())v56)(v57, v58);
- v59;
- goto b66;
-b91: goto b66;
-b93: v54 = 0UL;
- goto b95;
-b97: v55 = 0UL;
- goto b99;
-b40: goto b38;
-b42: if (*(u*)(va + 0UL) == *(u*)(vb + 0UL)) goto b64;
- v11 = 1UL;
- goto b44;
-b64: v11 = 0UL;
- goto b44;
-b46: if (!vb) goto b58;
- if (!va) goto b62;
- v16 = 0UL;
-b63: if (!v16) goto b58;
- v15 = 1UL;
-b60: if (!v15) goto b56;
- v12 = 1UL;
- goto b48;
-b56: v12 = 0UL;
- goto b48;
-b58: v15 = 0UL;
- goto b60;
-b62: v16 = 1UL;
- goto b63;
-b50: v13 = 0UL;
- goto b52;
-b54: v14 = 1UL;
- goto b55;
-b8: v4 = 0UL;
- goto b10;
-b16: if (*(u*)(va + 0UL) != 4UL) goto b34;
- v10 = 1UL;
-b36: if (!v10) goto b30;
- if (*(u*)(vb + 0UL) != 0UL) goto b30;
- v9 = 1UL;
-b32: if (!v9) goto b28;
+ goto b22;
+b19: goto b17;
+b5: vv = *(u*)(*(u*)(vic + 128UL) + vi * 8UL);
+ if (!(*(u*)(vv + 48UL))) goto b8;
+ vi = vi + 1UL;
+ goto b1;
+b8: if (!(*(u*)(vv + 24UL))) goto b13;
+ if (*(u*)(*(u*)(vv + 24UL) + 0UL) == 1UL) goto b13;
+ v5 = 1UL;
+b15: if (!(v5)) goto b11;
+ v6 = (u)ztype_sizeof;
+ v7 = *(u*)(vic + 0UL);
+ v8 = *(u*)(vv + 24UL);
+ v9 = ((u(*)())(v6))(v7, v8);
+ vsize = v9;
+b9: vsize = vsize + 7UL & -8UL;
+ voffset = voffset + vsize;
+ *(u*)(vv + 40UL) = -(voffset);
+ vi = vi + 1UL;
+ goto b1;
+b11: vsize = 8UL;
+ goto b9;
+b13: v5 = 0UL;
+ goto b15;
+}
+u zx86_64_rex(u va, u vop, u vr, u vi, u vb) {
+ u vw = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ if (!(*(u*)(va + 48UL))) goto b3;
+ return 0UL;
+b3: vw = 8UL;
+ if (vop != 138UL) goto b8;
v6 = 1UL;
+b10: if (!(v6)) goto b6;
+ vw = 0UL;
+ if ((s)(vr) >= (s)8UL) goto b20;
+ if ((s)(vi) >= (s)8UL) goto b20;
+ v8 = 1UL;
+b22: if (!(v8)) goto b16;
+ if ((s)(vb) >= (s)8UL) goto b16;
+ v7 = 1UL;
+b18: if (!(v7)) goto b14;
+ return 0UL;
+b14:b4: v9 = (u)zas_emit;
+ v10 = va;
+ v11 = (((64UL + vw) + (vr >> 1UL & 4UL)) + (vi >> 2UL & 2UL)) + (vb >> 3UL & 1UL);
+ v12 = ((u(*)())(v9))(v10, v11);
+ v12;
+ return 0UL;
+b16: v7 = 0UL;
goto b18;
-b28: v6 = 0UL;
- goto b18;
-b30: v9 = 0UL;
- goto b32;
-b34: if (*(u*)(va + 0UL) != 6UL) goto b37;
- v10 = 1UL;
- goto b36;
-b37: v10 = 0UL;
- goto b36;
-b20: v7 = 0UL;
+b20: v8 = 0UL;
goto b22;
-b24: if (*(u*)(vb + 0UL) != 6UL) goto b27;
- v8 = 1UL;
- goto b26;
-b27: v8 = 0UL;
- goto b26;
-b12: v5 = 0UL;
- goto b14;
-}
-u zunlink(u vname) {
- return (u)unlink((char *)vname);
-}
-u zwrite(u vfd, u vbuf, u vn) {
- return (u)write((int)vfd, (void*)vbuf, (unsigned long)vn);
+b6: goto b4;
+b8: if (vop != 136UL) goto b11;
+ v6 = 1UL;
+ goto b10;
+b11: v6 = 0UL;
+ goto b10;
}
-u zwriteout(u vc, u vstart, u vkstart) {
- u vb = 0;
- u vi = 0;
- u vtext_size = 0;
- u vtext_end = 0;
- u vload_addr = 0;
- u ventry = 0;
- u vkentry = 0;
- u vmb_magic = 0;
- u vmb_flags = 0;
- u vmb_checksum = 0;
- u vmb_addr = 0;
- u vs = 0;
- u vshoff = 0;
+u zx86_64_ssr(u vc) {
+ u vd = 0;
+ u vv = 0;
+ u v3 = 0;
+ u v4 = 0;
+ u v5 = 0;
+ u v6 = 0;
+ u v7 = 0;
+ u v8 = 0;
+ u v9 = 0;
+ u v10 = 0;
+ u v11 = 0;
+ u v12 = 0;
+ u v13 = 0;
+ u v14 = 0;
+ u v15 = 0;
u v16 = 0;
u v17 = 0;
u v18 = 0;
@@ -50095,1055 +54942,725 @@ u zwriteout(u vc, u vstart, u vkstart) {
u v524 = 0;
u v525 = 0;
u v526 = 0;
- u v527 = 0;
- u v528 = 0;
- u v529 = 0;
- u v530 = 0;
- u v531 = 0;
- u v532 = 0;
- u v533 = 0;
- u v534 = 0;
- u v535 = 0;
- u v536 = 0;
- u v537 = 0;
- u v538 = 0;
- u v539 = 0;
- u v540 = 0;
- u v541 = 0;
- u v542 = 0;
- u v543 = 0;
- u v544 = 0;
- u v545 = 0;
- u v546 = 0;
- u v547 = 0;
- u v548 = 0;
- u v549 = 0;
- u v550 = 0;
- u v551 = 0;
- u v552 = 0;
- u v553 = 0;
- u v554 = 0;
- u v555 = 0;
- u v556 = 0;
- u v557 = 0;
- u v558 = 0;
- u v559 = 0;
- u v560 = 0;
- u v561 = 0;
- u v562 = 0;
- u v563 = 0;
- u v564 = 0;
- u v565 = 0;
- u v566 = 0;
- u v567 = 0;
- u v568 = 0;
- u v569 = 0;
- u v570 = 0;
- u v571 = 0;
- u v572 = 0;
- u v573 = 0;
- u v574 = 0;
- u v575 = 0;
- u v576 = 0;
- u v577 = 0;
- u v578 = 0;
- u v579 = 0;
- u v580 = 0;
- u v581 = 0;
- u v582 = 0;
- u v583 = 0;
- u v584 = 0;
- u v585 = 0;
- u v586 = 0;
- u v587 = 0;
- u v588 = 0;
- u v589 = 0;
- u v590 = 0;
- u v591 = 0;
- u v592 = 0;
- u v593 = 0;
- u v594 = 0;
- u v595 = 0;
- u v596 = 0;
- u v597 = 0;
- u v598 = 0;
- u v599 = 0;
- u v600 = 0;
- u v601 = 0;
- u v602 = 0;
- u v603 = 0;
- u v604 = 0;
- u v605 = 0;
- u v606 = 0;
- u v607 = 0;
- u v608 = 0;
- u v609 = 0;
- u v610 = 0;
- u v611 = 0;
- u v612 = 0;
- u v613 = 0;
- u v614 = 0;
- u v615 = 0;
- u v616 = 0;
- u v617 = 0;
- u v618 = 0;
- u v619 = 0;
- u v620 = 0;
- u v621 = 0;
- u v622 = 0;
- u v623 = 0;
- u v624 = 0;
- u v625 = 0;
- u v626 = 0;
- u v627 = 0;
- u v628 = 0;
- u v629 = 0;
- u v630 = 0;
- u v631 = 0;
- u v632 = 0;
- u v633 = 0;
- u v634 = 0;
- u v635 = 0;
- u v636 = 0;
- u v637 = 0;
- u v638 = 0;
- u v639 = 0;
- u v640 = 0;
- u v641 = 0;
- u v642 = 0;
- u v643 = 0;
- u v644 = 0;
- u v645 = 0;
- u v646 = 0;
- u v647 = 0;
- u v648 = 0;
- u v649 = 0;
- u v650 = 0;
- u v651 = 0;
- u v652 = 0;
- u v653 = 0;
- u v654 = 0;
- u v655 = 0;
- u v656 = 0;
- u v657 = 0;
- u v658 = 0;
- u v659 = 0;
- u v660 = 0;
- u v661 = 0;
- u v662 = 0;
- u v663 = 0;
- u v664 = 0;
- u v665 = 0;
- u v666 = 0;
- u v667 = 0;
- u v668 = 0;
- u v669 = 0;
- u v670 = 0;
- u v671 = 0;
- u v672 = 0;
- u v673 = 0;
- u v674 = 0;
- u v675 = 0;
- u v676 = 0;
- u v677 = 0;
- u v678 = 0;
- u v679 = 0;
- u v680 = 0;
- u v681 = 0;
- u v682 = 0;
- u v683 = 0;
- u v684 = 0;
- u v685 = 0;
- if (!*(u*)(vc + 8UL)) goto b5;
- v16 = 0UL;
-b6: if (!v16) goto b3;
- v17 = (u)zdie;
- v18 = (u)"output not opened";
- v19 = ((u(*)())v17)(v18);
+ v3 = (u)zfind;
+ v4 = vc;
+ v5 = (u)"global";
+ v6 = (u)"_save";
+ v7 = 0UL;
+ v8 = ((u(*)())(v3))(v4, v5, v6, v7);
+ vv = v8;
+ if (!(vv)) goto b10;
+ v10 = 0UL;
+b11: if (!(v10)) goto b6;
+ v9 = 1UL;
+b8: if (!(v9)) goto b4;
+ v12 = (u)zcdie;
+ v13 = vc;
+ v14 = (u)"no _save";
+ v15 = ((u(*)())(v12))(v13, v14);
+ v15;
+b2: v16 = (u)zas_emit;
+ v17 = *(u*)(vc + 48UL);
+ v18 = 101UL;
+ v19 = ((u(*)())(v16))(v17, v18);
v19;
-b1: vload_addr = 1048576UL;
- if (!vstart) goto b16;
- v21 = 0UL;
-b17: if (!v21) goto b12;
- v20 = 1UL;
-b14: if (!v20) goto b10;
- if (!vkstart) goto b26;
- v23 = 0UL;
-b27: if (!v23) goto b24;
- v24 = (u)zdie;
- v25 = (u)"_start is not defined";
- v26 = ((u(*)())v24)(v25);
- v26;
-b22:b8: vmb_magic = 464367618UL;
- vmb_flags = 65539UL;
- vmb_checksum = -(vmb_magic + vmb_flags);
- vmb_addr = vload_addr + 120UL;
- if (!vkstart) goto b33;
- if (!*(u*)(vkstart + 16UL)) goto b33;
- v27 = 1UL;
-b35: if (!v27) goto b31;
- vkentry = vload_addr + *(u*)(vkstart + 8UL);
-b29: v28 = (u)zemit_sections;
- v29 = vc;
- v30 = ((u(*)())v28)(v29);
- vshoff = v30;
- vtext_size = *(u*)(vc + 24UL);
- vtext_end = vload_addr + vtext_size;
- v31 = (u)zputchar;
- v32 = vc;
- v33 = 127UL;
- v34 = ((u(*)())v31)(v32, v33);
- v34;
- v35 = (u)zputchar;
+ v20 = (u)zx86_64_modra;
+ v21 = *(u*)(vc + 48UL);
+ v22 = 137UL;
+ v23 = 4UL;
+ v24 = *(u*)(vv + 184UL);
+ v25 = ((u(*)())(v20))(v21, v22, v23, v24);
+ v25;
+ v26 = (u)zfind;
+ v27 = vc;
+ v28 = (u)"global";
+ v29 = (u)"curtask";
+ v30 = 0UL;
+ v31 = ((u(*)())(v26))(v27, v28, v29, v30);
+ vv = v31;
+ if (!(vv)) goto b28;
+ v33 = 0UL;
+b29: if (!(v33)) goto b24;
+ v32 = 1UL;
+b26: if (!(v32)) goto b22;
+ v35 = (u)zcdie;
v36 = vc;
- v37 = 69UL;
- v38 = ((u(*)())v35)(v36, v37);
+ v37 = (u)"no global.curtask";
+ v38 = ((u(*)())(v35))(v36, v37);
v38;
- v39 = (u)zputchar;
- v40 = vc;
- v41 = 76UL;
- v42 = ((u(*)())v39)(v40, v41);
+b20: v39 = (u)zas_emit;
+ v40 = *(u*)(vc + 48UL);
+ v41 = 101UL;
+ v42 = ((u(*)())(v39))(v40, v41);
v42;
- v43 = (u)zputchar;
- v44 = vc;
- v45 = 70UL;
- v46 = ((u(*)())v43)(v44, v45);
- v46;
- v47 = (u)zputchar;
- v48 = vc;
- v49 = 2UL;
- v50 = ((u(*)())v47)(v48, v49);
- v50;
- v51 = (u)zputchar;
- v52 = vc;
- v53 = 1UL;
- v54 = ((u(*)())v51)(v52, v53);
- v54;
- v55 = (u)zputchar;
- v56 = vc;
- v57 = 1UL;
- v58 = ((u(*)())v55)(v56, v57);
- v58;
- v59 = (u)zputchar;
- v60 = vc;
- v61 = 0UL;
- v62 = ((u(*)())v59)(v60, v61);
- v62;
- v63 = (u)zputchar;
- v64 = vc;
- v65 = 0UL;
- v66 = ((u(*)())v63)(v64, v65);
- v66;
- v67 = (u)zputchar;
- v68 = vc;
- v69 = 0UL;
- v70 = ((u(*)())v67)(v68, v69);
+ v43 = (u)zx86_64_modra;
+ v44 = *(u*)(vc + 48UL);
+ v45 = 139UL;
+ v46 = 4UL;
+ v47 = *(u*)(vv + 184UL);
+ v48 = ((u(*)())(v43))(v44, v45, v46, v47);
+ v48;
+ v49 = (u)zfind;
+ v50 = vc;
+ v51 = (u)"task";
+ v52 = (u)"stack";
+ v53 = 0UL;
+ v54 = ((u(*)())(v49))(v50, v51, v52, v53);
+ vv = v54;
+ if (!(vv)) goto b46;
+ v56 = 0UL;
+b47: if (!(v56)) goto b42;
+ v55 = 1UL;
+b44: if (!(v55)) goto b40;
+ v58 = (u)zcdie;
+ v59 = vc;
+ v60 = (u)"no task.stack";
+ v61 = ((u(*)())(v58))(v59, v60);
+ v61;
+b38: v62 = (u)zx86_64_modrm;
+ v63 = *(u*)(vc + 48UL);
+ v64 = 139UL;
+ v65 = 4UL;
+ v66 = 4UL;
+ v67 = 0UL;
+ v68 = 0UL;
+ v69 = *(u*)(vv + 184UL);
+ v70 = ((u(*)())(v62))(v63, v64, v65, v66, v67, v68, v69);
v70;
- v71 = (u)zputchar;
- v72 = vc;
- v73 = 0UL;
- v74 = ((u(*)())v71)(v72, v73);
- v74;
- v75 = (u)zputchar;
- v76 = vc;
- v77 = 0UL;
- v78 = ((u(*)())v75)(v76, v77);
- v78;
- v79 = (u)zputchar;
- v80 = vc;
- v81 = 0UL;
- v82 = ((u(*)())v79)(v80, v81);
- v82;
- v83 = (u)zputchar;
- v84 = vc;
- v85 = 0UL;
- v86 = ((u(*)())v83)(v84, v85);
- v86;
- v87 = (u)zputchar;
- v88 = vc;
- v89 = 0UL;
- v90 = ((u(*)())v87)(v88, v89);
- v90;
- v91 = (u)zputchar;
- v92 = vc;
- v93 = 0UL;
- v94 = ((u(*)())v91)(v92, v93);
+ v71 = (u)zx86_64_modri;
+ v72 = *(u*)(vc + 48UL);
+ v73 = 129UL;
+ v74 = 4UL;
+ v75 = 4096UL - 176UL;
+ v76 = ((u(*)())(v71))(v72, v73, v74, v75);
+ v76;
+ v77 = (u)zx86_64_modrm;
+ v78 = *(u*)(vc + 48UL);
+ v79 = 137UL;
+ v80 = 0UL;
+ v81 = 4UL;
+ v82 = 0UL;
+ v83 = 0UL;
+ v84 = 0UL;
+ v85 = ((u(*)())(v77))(v78, v79, v80, v81, v82, v83, v84);
+ v85;
+ v86 = (u)zx86_64_modrm;
+ v87 = *(u*)(vc + 48UL);
+ v88 = 137UL;
+ v89 = 2UL;
+ v90 = 4UL;
+ v91 = 0UL;
+ v92 = 0UL;
+ v93 = 16UL;
+ v94 = ((u(*)())(v86))(v87, v88, v89, v90, v91, v92, v93);
v94;
- v95 = (u)zputchar;
- v96 = vc;
- v97 = 2UL;
- v98 = ((u(*)())v95)(v96, v97);
- v98;
- v99 = (u)zputchar;
- v100 = vc;
+ v95 = (u)zx86_64_modrm;
+ v96 = *(u*)(vc + 48UL);
+ v97 = 137UL;
+ v98 = 3UL;
+ v99 = 4UL;
+ v100 = 0UL;
v101 = 0UL;
- v102 = ((u(*)())v99)(v100, v101);
- v102;
- v103 = (u)zputchar;
- v104 = vc;
- v105 = 62UL;
- v106 = ((u(*)())v103)(v104, v105);
- v106;
- v107 = (u)zputchar;
- v108 = vc;
+ v102 = 24UL;
+ v103 = ((u(*)())(v95))(v96, v97, v98, v99, v100, v101, v102);
+ v103;
+ v104 = (u)zx86_64_modrm;
+ v105 = *(u*)(vc + 48UL);
+ v106 = 137UL;
+ v107 = 5UL;
+ v108 = 4UL;
v109 = 0UL;
- v110 = ((u(*)())v107)(v108, v109);
- v110;
- v111 = (u)zputchar;
- v112 = vc;
- v113 = 1UL;
- v114 = ((u(*)())v111)(v112, v113);
- v114;
- v115 = (u)zputchar;
- v116 = vc;
- v117 = 0UL;
- v118 = ((u(*)())v115)(v116, v117);
- v118;
- v119 = (u)zputchar;
- v120 = vc;
- v121 = 0UL;
- v122 = ((u(*)())v119)(v120, v121);
- v122;
- v123 = (u)zputchar;
- v124 = vc;
- v125 = 0UL;
- v126 = ((u(*)())v123)(v124, v125);
- v126;
- v127 = (u)zputchar;
- v128 = vc;
- v129 = ventry;
- v130 = ((u(*)())v127)(v128, v129);
+ v110 = 0UL;
+ v111 = 40UL;
+ v112 = ((u(*)())(v104))(v105, v106, v107, v108, v109, v110, v111);
+ v112;
+ v113 = (u)zx86_64_modrm;
+ v114 = *(u*)(vc + 48UL);
+ v115 = 137UL;
+ v116 = 6UL;
+ v117 = 4UL;
+ v118 = 0UL;
+ v119 = 0UL;
+ v120 = 48UL;
+ v121 = ((u(*)())(v113))(v114, v115, v116, v117, v118, v119, v120);
+ v121;
+ v122 = (u)zx86_64_modrm;
+ v123 = *(u*)(vc + 48UL);
+ v124 = 137UL;
+ v125 = 7UL;
+ v126 = 4UL;
+ v127 = 0UL;
+ v128 = 0UL;
+ v129 = 56UL;
+ v130 = ((u(*)())(v122))(v123, v124, v125, v126, v127, v128, v129);
v130;
- v131 = (u)zputchar;
- v132 = vc;
- v133 = ventry >> 8UL;
- v134 = ((u(*)())v131)(v132, v133);
- v134;
- v135 = (u)zputchar;
- v136 = vc;
- v137 = ventry >> 16UL;
- v138 = ((u(*)())v135)(v136, v137);
- v138;
- v139 = (u)zputchar;
- v140 = vc;
- v141 = ventry >> 24UL;
- v142 = ((u(*)())v139)(v140, v141);
- v142;
- v143 = (u)zputchar;
- v144 = vc;
+ v131 = (u)zx86_64_modrm;
+ v132 = *(u*)(vc + 48UL);
+ v133 = 137UL;
+ v134 = 8UL;
+ v135 = 4UL;
+ v136 = 0UL;
+ v137 = 0UL;
+ v138 = 64UL;
+ v139 = ((u(*)())(v131))(v132, v133, v134, v135, v136, v137, v138);
+ v139;
+ v140 = (u)zx86_64_modrm;
+ v141 = *(u*)(vc + 48UL);
+ v142 = 137UL;
+ v143 = 9UL;
+ v144 = 4UL;
v145 = 0UL;
- v146 = ((u(*)())v143)(v144, v145);
- v146;
- v147 = (u)zputchar;
- v148 = vc;
- v149 = 0UL;
- v150 = ((u(*)())v147)(v148, v149);
- v150;
- v151 = (u)zputchar;
- v152 = vc;
- v153 = 0UL;
- v154 = ((u(*)())v151)(v152, v153);
- v154;
- v155 = (u)zputchar;
- v156 = vc;
- v157 = 0UL;
- v158 = ((u(*)())v155)(v156, v157);
- v158;
- v159 = (u)zputchar;
- v160 = vc;
- v161 = 64UL;
- v162 = ((u(*)())v159)(v160, v161);
- v162;
- v163 = (u)zputchar;
- v164 = vc;
- v165 = 0UL;
- v166 = ((u(*)())v163)(v164, v165);
+ v146 = 0UL;
+ v147 = 72UL;
+ v148 = ((u(*)())(v140))(v141, v142, v143, v144, v145, v146, v147);
+ v148;
+ v149 = (u)zx86_64_modrm;
+ v150 = *(u*)(vc + 48UL);
+ v151 = 137UL;
+ v152 = 10UL;
+ v153 = 4UL;
+ v154 = 0UL;
+ v155 = 0UL;
+ v156 = 80UL;
+ v157 = ((u(*)())(v149))(v150, v151, v152, v153, v154, v155, v156);
+ v157;
+ v158 = (u)zx86_64_modrm;
+ v159 = *(u*)(vc + 48UL);
+ v160 = 137UL;
+ v161 = 12UL;
+ v162 = 4UL;
+ v163 = 0UL;
+ v164 = 0UL;
+ v165 = 96UL;
+ v166 = ((u(*)())(v158))(v159, v160, v161, v162, v163, v164, v165);
v166;
- v167 = (u)zputchar;
- v168 = vc;
- v169 = 0UL;
- v170 = ((u(*)())v167)(v168, v169);
- v170;
- v171 = (u)zputchar;
- v172 = vc;
+ v167 = (u)zx86_64_modrm;
+ v168 = *(u*)(vc + 48UL);
+ v169 = 137UL;
+ v170 = 13UL;
+ v171 = 4UL;
+ v172 = 0UL;
v173 = 0UL;
- v174 = ((u(*)())v171)(v172, v173);
- v174;
- v175 = (u)zputchar;
- v176 = vc;
- v177 = 0UL;
- v178 = ((u(*)())v175)(v176, v177);
- v178;
- v179 = (u)zputchar;
- v180 = vc;
+ v174 = 104UL;
+ v175 = ((u(*)())(v167))(v168, v169, v170, v171, v172, v173, v174);
+ v175;
+ v176 = (u)zx86_64_modrm;
+ v177 = *(u*)(vc + 48UL);
+ v178 = 137UL;
+ v179 = 14UL;
+ v180 = 4UL;
v181 = 0UL;
- v182 = ((u(*)())v179)(v180, v181);
- v182;
- v183 = (u)zputchar;
- v184 = vc;
- v185 = 0UL;
- v186 = ((u(*)())v183)(v184, v185);
- v186;
- v187 = (u)zputchar;
- v188 = vc;
- v189 = 0UL;
- v190 = ((u(*)())v187)(v188, v189);
- v190;
- v191 = (u)zputchar;
- v192 = vc;
- v193 = vshoff;
- v194 = ((u(*)())v191)(v192, v193);
- v194;
- v195 = (u)zputchar;
- v196 = vc;
- v197 = vshoff >> 8UL;
- v198 = ((u(*)())v195)(v196, v197);
- v198;
- v199 = (u)zputchar;
- v200 = vc;
- v201 = vshoff >> 16UL;
- v202 = ((u(*)())v199)(v200, v201);
- v202;
- v203 = (u)zputchar;
- v204 = vc;
- v205 = vshoff >> 24UL;
- v206 = ((u(*)())v203)(v204, v205);
- v206;
- v207 = (u)zputchar;
- v208 = vc;
- v209 = vshoff >> 32UL;
- v210 = ((u(*)())v207)(v208, v209);
- v210;
- v211 = (u)zputchar;
- v212 = vc;
- v213 = vshoff >> 40UL;
- v214 = ((u(*)())v211)(v212, v213);
- v214;
- v215 = (u)zputchar;
- v216 = vc;
- v217 = vshoff >> 48UL;
- v218 = ((u(*)())v215)(v216, v217);
- v218;
- v219 = (u)zputchar;
- v220 = vc;
- v221 = vshoff >> 56UL;
- v222 = ((u(*)())v219)(v220, v221);
- v222;
- v223 = (u)zputchar;
- v224 = vc;
- v225 = 0UL;
- v226 = ((u(*)())v223)(v224, v225);
+ v182 = 0UL;
+ v183 = 112UL;
+ v184 = ((u(*)())(v176))(v177, v178, v179, v180, v181, v182, v183);
+ v184;
+ v185 = (u)zx86_64_modrm;
+ v186 = *(u*)(vc + 48UL);
+ v187 = 137UL;
+ v188 = 15UL;
+ v189 = 4UL;
+ v190 = 0UL;
+ v191 = 0UL;
+ v192 = 120UL;
+ v193 = ((u(*)())(v185))(v186, v187, v188, v189, v190, v191, v192);
+ v193;
+ v194 = (u)zx86_64_modrm;
+ v195 = *(u*)(vc + 48UL);
+ v196 = 137UL;
+ v197 = 1UL;
+ v198 = 4UL;
+ v199 = 0UL;
+ v200 = 0UL;
+ v201 = 128UL;
+ v202 = ((u(*)())(v194))(v195, v196, v197, v198, v199, v200, v201);
+ v202;
+ v203 = (u)zx86_64_modrm;
+ v204 = *(u*)(vc + 48UL);
+ v205 = 137UL;
+ v206 = 11UL;
+ v207 = 4UL;
+ v208 = 0UL;
+ v209 = 0UL;
+ v210 = 136UL;
+ v211 = ((u(*)())(v203))(v204, v205, v206, v207, v208, v209, v210);
+ v211;
+ v212 = (u)zx86_64_modrr;
+ v213 = *(u*)(vc + 48UL);
+ v214 = 51UL;
+ v215 = 0UL;
+ v216 = 0UL;
+ v217 = ((u(*)())(v212))(v213, v214, v215, v216);
+ v217;
+ v218 = (u)zx86_64_modrm;
+ v219 = *(u*)(vc + 48UL);
+ v220 = 137UL;
+ v221 = 0UL;
+ v222 = 4UL;
+ v223 = 0UL;
+ v224 = 0UL;
+ v225 = 8UL;
+ v226 = ((u(*)())(v218))(v219, v220, v221, v222, v223, v224, v225);
v226;
- v227 = (u)zputchar;
- v228 = vc;
- v229 = 0UL;
- v230 = ((u(*)())v227)(v228, v229);
- v230;
- v231 = (u)zputchar;
- v232 = vc;
+ v227 = (u)zx86_64_modrm;
+ v228 = *(u*)(vc + 48UL);
+ v229 = 137UL;
+ v230 = 0UL;
+ v231 = 4UL;
+ v232 = 0UL;
v233 = 0UL;
- v234 = ((u(*)())v231)(v232, v233);
- v234;
- v235 = (u)zputchar;
- v236 = vc;
- v237 = 0UL;
- v238 = ((u(*)())v235)(v236, v237);
- v238;
- v239 = (u)zputchar;
- v240 = vc;
- v241 = 64UL;
- v242 = ((u(*)())v239)(v240, v241);
- v242;
- v243 = (u)zputchar;
- v244 = vc;
- v245 = 0UL;
- v246 = ((u(*)())v243)(v244, v245);
- v246;
- v247 = (u)zputchar;
- v248 = vc;
- v249 = 56UL;
- v250 = ((u(*)())v247)(v248, v249);
- v250;
- v251 = (u)zputchar;
- v252 = vc;
- v253 = 0UL;
- v254 = ((u(*)())v251)(v252, v253);
- v254;
- v255 = (u)zputchar;
- v256 = vc;
- v257 = 1UL;
- v258 = ((u(*)())v255)(v256, v257);
- v258;
- v259 = (u)zputchar;
- v260 = vc;
- v261 = 0UL;
- v262 = ((u(*)())v259)(v260, v261);
- v262;
- v263 = (u)zputchar;
- v264 = vc;
- v265 = 64UL;
- v266 = ((u(*)())v263)(v264, v265);
- v266;
- v267 = (u)zputchar;
- v268 = vc;
- v269 = 0UL;
- v270 = ((u(*)())v267)(v268, v269);
- v270;
- v271 = (u)zputchar;
- v272 = vc;
- v273 = *(u*)(vc + 72UL);
- v274 = ((u(*)())v271)(v272, v273);
+ v234 = 88UL;
+ v235 = ((u(*)())(v227))(v228, v229, v230, v231, v232, v233, v234);
+ v235;
+ v236 = (u)zx86_64_modrm;
+ v237 = *(u*)(vc + 48UL);
+ v238 = 137UL;
+ v239 = 0UL;
+ v240 = 4UL;
+ v241 = 0UL;
+ v242 = 0UL;
+ v243 = 160UL;
+ v244 = ((u(*)())(v236))(v237, v238, v239, v240, v241, v242, v243);
+ v244;
+ v245 = (u)zx86_64_modrm;
+ v246 = *(u*)(vc + 48UL);
+ v247 = 137UL;
+ v248 = 0UL;
+ v249 = 4UL;
+ v250 = 0UL;
+ v251 = 0UL;
+ v252 = 168UL;
+ v253 = ((u(*)())(v245))(v246, v247, v248, v249, v250, v251, v252);
+ v253;
+ v254 = (u)zx86_64_modri;
+ v255 = *(u*)(vc + 48UL);
+ v256 = 199UL;
+ v257 = 0UL;
+ v258 = 43UL;
+ v259 = ((u(*)())(v254))(v255, v256, v257, v258);
+ v259;
+ v260 = (u)zx86_64_modrm;
+ v261 = *(u*)(vc + 48UL);
+ v262 = 137UL;
+ v263 = 0UL;
+ v264 = 4UL;
+ v265 = 0UL;
+ v266 = 0UL;
+ v267 = 144UL;
+ v268 = ((u(*)())(v260))(v261, v262, v263, v264, v265, v266, v267);
+ v268;
+ v269 = (u)zx86_64_modri;
+ v270 = *(u*)(vc + 48UL);
+ v271 = 199UL;
+ v272 = 0UL;
+ v273 = 35UL;
+ v274 = ((u(*)())(v269))(v270, v271, v272, v273);
v274;
- v275 = (u)zputchar;
- v276 = vc;
- v277 = *(u*)(vc + 72UL) >> 8UL;
- v278 = ((u(*)())v275)(v276, v277);
- v278;
- v279 = (u)zfind_section;
- v280 = vc;
- v281 = (u)".shstrtab";
- v282 = ((u(*)())v279)(v280, v281);
- vs = v282;
- v283 = (u)zputchar;
- v284 = vc;
- v285 = *(u*)(vs + 32UL);
- v286 = ((u(*)())v283)(v284, v285);
- v286;
- v287 = (u)zputchar;
- v288 = vc;
- v289 = *(u*)(vs + 32UL) >> 8UL;
- v290 = ((u(*)())v287)(v288, v289);
- v290;
- v291 = (u)zputchar;
- v292 = vc;
- v293 = 1UL;
- v294 = ((u(*)())v291)(v292, v293);
- v294;
- v295 = (u)zputchar;
- v296 = vc;
- v297 = 0UL;
- v298 = ((u(*)())v295)(v296, v297);
- v298;
- v299 = (u)zputchar;
- v300 = vc;
- v301 = 0UL;
- v302 = ((u(*)())v299)(v300, v301);
- v302;
- v303 = (u)zputchar;
- v304 = vc;
- v305 = 0UL;
- v306 = ((u(*)())v303)(v304, v305);
+ v275 = (u)zx86_64_modrm;
+ v276 = *(u*)(vc + 48UL);
+ v277 = 137UL;
+ v278 = 0UL;
+ v279 = 4UL;
+ v280 = 0UL;
+ v281 = 0UL;
+ v282 = 152UL;
+ v283 = ((u(*)())(v275))(v276, v277, v278, v279, v280, v281, v282);
+ v283;
+ v284 = (u)zfind;
+ v285 = vc;
+ v286 = (u)"global";
+ v287 = (u)"_save";
+ v288 = 0UL;
+ v289 = ((u(*)())(v284))(v285, v286, v287, v288);
+ vv = v289;
+ if (!(vv)) goto b88;
+ v291 = 0UL;
+b89: if (!(v291)) goto b84;
+ v290 = 1UL;
+b86: if (!(v290)) goto b82;
+ v293 = (u)zcdie;
+ v294 = vc;
+ v295 = (u)"no _save";
+ v296 = ((u(*)())(v293))(v294, v295);
+ v296;
+b80: v297 = (u)zas_emit;
+ v298 = *(u*)(vc + 48UL);
+ v299 = 101UL;
+ v300 = ((u(*)())(v297))(v298, v299);
+ v300;
+ v301 = (u)zx86_64_modra;
+ v302 = *(u*)(vc + 48UL);
+ v303 = 139UL;
+ v304 = 0UL;
+ v305 = *(u*)(vv + 184UL);
+ v306 = ((u(*)())(v301))(v302, v303, v304, v305);
v306;
- v307 = (u)zputchar;
- v308 = vc;
- v309 = 5UL;
- v310 = ((u(*)())v307)(v308, v309);
- v310;
- v311 = (u)zputchar;
- v312 = vc;
+ v307 = (u)zx86_64_modrm;
+ v308 = *(u*)(vc + 48UL);
+ v309 = 137UL;
+ v310 = 0UL;
+ v311 = 4UL;
+ v312 = 0UL;
v313 = 0UL;
- v314 = ((u(*)())v311)(v312, v313);
- v314;
- v315 = (u)zputchar;
- v316 = vc;
- v317 = 0UL;
- v318 = ((u(*)())v315)(v316, v317);
- v318;
- v319 = (u)zputchar;
- v320 = vc;
- v321 = 0UL;
- v322 = ((u(*)())v319)(v320, v321);
- v322;
- v323 = (u)zputchar;
- v324 = vc;
- v325 = 0UL;
- v326 = ((u(*)())v323)(v324, v325);
- v326;
- v327 = (u)zputchar;
- v328 = vc;
- v329 = 0UL;
- v330 = ((u(*)())v327)(v328, v329);
- v330;
- v331 = (u)zputchar;
- v332 = vc;
- v333 = 0UL;
- v334 = ((u(*)())v331)(v332, v333);
- v334;
- v335 = (u)zputchar;
- v336 = vc;
- v337 = 0UL;
- v338 = ((u(*)())v335)(v336, v337);
- v338;
- v339 = (u)zputchar;
- v340 = vc;
- v341 = 0UL;
- v342 = ((u(*)())v339)(v340, v341);
- v342;
- v343 = (u)zputchar;
- v344 = vc;
- v345 = 0UL;
- v346 = ((u(*)())v343)(v344, v345);
- v346;
- v347 = (u)zputchar;
- v348 = vc;
- v349 = 0UL;
- v350 = ((u(*)())v347)(v348, v349);
- v350;
- v351 = (u)zputchar;
- v352 = vc;
+ v314 = 32UL;
+ v315 = ((u(*)())(v307))(v308, v309, v310, v311, v312, v313, v314);
+ v315;
+ v316 = (u)zx86_64_modrr;
+ v317 = *(u*)(vc + 48UL);
+ v318 = 139UL;
+ v319 = 0UL;
+ v320 = 4UL;
+ v321 = ((u(*)())(v316))(v317, v318, v319, v320);
+ v321;
+ v322 = (u)zx86_64_modrr;
+ v323 = *(u*)(vc + 48UL);
+ v324 = 51UL;
+ v325 = 5UL;
+ v326 = 5UL;
+ v327 = ((u(*)())(v322))(v323, v324, v325, v326);
+ v327;
+ v328 = (u)zx86_64_opr;
+ v329 = *(u*)(vc + 48UL);
+ v330 = 80UL;
+ v331 = 5UL;
+ v332 = ((u(*)())(v328))(v329, v330, v331);
+ v332;
+ v333 = (u)zx86_64_opr;
+ v334 = *(u*)(vc + 48UL);
+ v335 = 80UL;
+ v336 = 5UL;
+ v337 = ((u(*)())(v333))(v334, v335, v336);
+ v337;
+ v338 = (u)zx86_64_modrr;
+ v339 = *(u*)(vc + 48UL);
+ v340 = 139UL;
+ v341 = 5UL;
+ v342 = 4UL;
+ v343 = ((u(*)())(v338))(v339, v340, v341, v342);
+ v343;
+ v344 = (u)zx86_64_modrr;
+ v345 = *(u*)(vc + 48UL);
+ v346 = 139UL;
+ v347 = 7UL;
+ v348 = 0UL;
+ v349 = ((u(*)())(v344))(v345, v346, v347, v348);
+ v349;
+ v350 = (u)zfind;
+ v351 = vc;
+ v352 = (u)"_ssr";
v353 = 0UL;
- v354 = ((u(*)())v351)(v352, v353);
- v354;
- v355 = (u)zputchar;
- v356 = vc;
- v357 = 0UL;
- v358 = ((u(*)())v355)(v356, v357);
- v358;
- v359 = (u)zputchar;
- v360 = vc;
- v361 = 0UL;
- v362 = ((u(*)())v359)(v360, v361);
- v362;
- v363 = (u)zputchar;
- v364 = vc;
- v365 = 16UL;
- v366 = ((u(*)())v363)(v364, v365);
- v366;
- v367 = (u)zputchar;
- v368 = vc;
- v369 = 0UL;
- v370 = ((u(*)())v367)(v368, v369);
- v370;
- v371 = (u)zputchar;
- v372 = vc;
- v373 = 0UL;
- v374 = ((u(*)())v371)(v372, v373);
- v374;
- v375 = (u)zputchar;
- v376 = vc;
+ v354 = 1UL;
+ v355 = ((u(*)())(v350))(v351, v352, v353, v354);
+ vd = v355;
+ if (!(*(u*)(vd + 72UL))) goto b109;
+ if (!(*(u*)(*(u*)(vd + 88UL) + 16UL))) goto b109;
+ v356 = 1UL;
+b111: if (!(v356)) goto b107;
+ v357 = (u)zx86_64_jmp;
+ v358 = *(u*)(vc + 48UL);
+ v359 = 232UL;
+ v360 = *(u*)(vd + 88UL);
+ v361 = ((u(*)())(v357))(v358, v359, v360);
+ v361;
+b105: v362 = (u)zx86_64_op;
+ v363 = *(u*)(vc + 48UL);
+ v364 = 250UL;
+ v365 = ((u(*)())(v362))(v363, v364);
+ v365;
+ v366 = (u)zx86_64_modri;
+ v367 = *(u*)(vc + 48UL);
+ v368 = 129UL;
+ v369 = 4UL;
+ v370 = 2UL * 8UL;
+ v371 = ((u(*)())(v366))(v367, v368, v369, v370);
+ v371;
+ v372 = (u)zx86_64_modrm;
+ v373 = *(u*)(vc + 48UL);
+ v374 = 139UL;
+ v375 = 0UL;
+ v376 = 4UL;
v377 = 0UL;
- v378 = ((u(*)())v375)(v376, v377);
- v378;
- v379 = (u)zputchar;
- v380 = vc;
- v381 = 0UL;
- v382 = ((u(*)())v379)(v380, v381);
- v382;
- v383 = (u)zputchar;
- v384 = vc;
- v385 = 0UL;
- v386 = ((u(*)())v383)(v384, v385);
- v386;
- v387 = (u)zputchar;
- v388 = vc;
- v389 = 0UL;
- v390 = ((u(*)())v387)(v388, v389);
- v390;
- v391 = (u)zputchar;
- v392 = vc;
- v393 = 0UL;
- v394 = ((u(*)())v391)(v392, v393);
- v394;
- v395 = (u)zputchar;
- v396 = vc;
- v397 = 0UL;
- v398 = ((u(*)())v395)(v396, v397);
+ v378 = 0UL;
+ v379 = 0UL;
+ v380 = ((u(*)())(v372))(v373, v374, v375, v376, v377, v378, v379);
+ v380;
+ v381 = (u)zx86_64_modrm;
+ v382 = *(u*)(vc + 48UL);
+ v383 = 139UL;
+ v384 = 2UL;
+ v385 = 4UL;
+ v386 = 0UL;
+ v387 = 0UL;
+ v388 = 16UL;
+ v389 = ((u(*)())(v381))(v382, v383, v384, v385, v386, v387, v388);
+ v389;
+ v390 = (u)zx86_64_modrm;
+ v391 = *(u*)(vc + 48UL);
+ v392 = 139UL;
+ v393 = 3UL;
+ v394 = 4UL;
+ v395 = 0UL;
+ v396 = 0UL;
+ v397 = 24UL;
+ v398 = ((u(*)())(v390))(v391, v392, v393, v394, v395, v396, v397);
v398;
- v399 = (u)zputchar;
- v400 = vc;
- v401 = 0UL;
- v402 = ((u(*)())v399)(v400, v401);
- v402;
- v403 = (u)zputchar;
- v404 = vc;
+ v399 = (u)zx86_64_modrm;
+ v400 = *(u*)(vc + 48UL);
+ v401 = 139UL;
+ v402 = 5UL;
+ v403 = 4UL;
+ v404 = 0UL;
v405 = 0UL;
- v406 = ((u(*)())v403)(v404, v405);
- v406;
- v407 = (u)zputchar;
- v408 = vc;
- v409 = 0UL;
- v410 = ((u(*)())v407)(v408, v409);
- v410;
- v411 = (u)zputchar;
- v412 = vc;
+ v406 = 40UL;
+ v407 = ((u(*)())(v399))(v400, v401, v402, v403, v404, v405, v406);
+ v407;
+ v408 = (u)zx86_64_modrm;
+ v409 = *(u*)(vc + 48UL);
+ v410 = 139UL;
+ v411 = 6UL;
+ v412 = 4UL;
v413 = 0UL;
- v414 = ((u(*)())v411)(v412, v413);
- v414;
- v415 = (u)zputchar;
- v416 = vc;
- v417 = 0UL;
- v418 = ((u(*)())v415)(v416, v417);
- v418;
- v419 = (u)zputchar;
- v420 = vc;
- v421 = vtext_size;
- v422 = ((u(*)())v419)(v420, v421);
- v422;
- v423 = (u)zputchar;
- v424 = vc;
- v425 = vtext_size >> 8UL;
- v426 = ((u(*)())v423)(v424, v425);
- v426;
- v427 = (u)zputchar;
- v428 = vc;
- v429 = vtext_size >> 16UL;
- v430 = ((u(*)())v427)(v428, v429);
- v430;
- v431 = (u)zputchar;
- v432 = vc;
- v433 = vtext_size >> 24UL;
- v434 = ((u(*)())v431)(v432, v433);
+ v414 = 0UL;
+ v415 = 48UL;
+ v416 = ((u(*)())(v408))(v409, v410, v411, v412, v413, v414, v415);
+ v416;
+ v417 = (u)zx86_64_modrm;
+ v418 = *(u*)(vc + 48UL);
+ v419 = 139UL;
+ v420 = 7UL;
+ v421 = 4UL;
+ v422 = 0UL;
+ v423 = 0UL;
+ v424 = 56UL;
+ v425 = ((u(*)())(v417))(v418, v419, v420, v421, v422, v423, v424);
+ v425;
+ v426 = (u)zx86_64_modrm;
+ v427 = *(u*)(vc + 48UL);
+ v428 = 139UL;
+ v429 = 8UL;
+ v430 = 4UL;
+ v431 = 0UL;
+ v432 = 0UL;
+ v433 = 64UL;
+ v434 = ((u(*)())(v426))(v427, v428, v429, v430, v431, v432, v433);
v434;
- v435 = (u)zputchar;
- v436 = vc;
- v437 = 0UL;
- v438 = ((u(*)())v435)(v436, v437);
- v438;
- v439 = (u)zputchar;
- v440 = vc;
+ v435 = (u)zx86_64_modrm;
+ v436 = *(u*)(vc + 48UL);
+ v437 = 139UL;
+ v438 = 9UL;
+ v439 = 4UL;
+ v440 = 0UL;
v441 = 0UL;
- v442 = ((u(*)())v439)(v440, v441);
- v442;
- v443 = (u)zputchar;
- v444 = vc;
- v445 = 0UL;
- v446 = ((u(*)())v443)(v444, v445);
- v446;
- v447 = (u)zputchar;
- v448 = vc;
+ v442 = 72UL;
+ v443 = ((u(*)())(v435))(v436, v437, v438, v439, v440, v441, v442);
+ v443;
+ v444 = (u)zx86_64_modrm;
+ v445 = *(u*)(vc + 48UL);
+ v446 = 139UL;
+ v447 = 10UL;
+ v448 = 4UL;
v449 = 0UL;
- v450 = ((u(*)())v447)(v448, v449);
- v450;
- v451 = (u)zputchar;
- v452 = vc;
- v453 = vtext_size;
- v454 = ((u(*)())v451)(v452, v453);
- v454;
- v455 = (u)zputchar;
- v456 = vc;
- v457 = vtext_size >> 8UL;
- v458 = ((u(*)())v455)(v456, v457);
- v458;
- v459 = (u)zputchar;
- v460 = vc;
- v461 = vtext_size >> 16UL;
- v462 = ((u(*)())v459)(v460, v461);
- v462;
- v463 = (u)zputchar;
- v464 = vc;
- v465 = vtext_size >> 24UL;
- v466 = ((u(*)())v463)(v464, v465);
- v466;
- v467 = (u)zputchar;
- v468 = vc;
- v469 = 0UL;
- v470 = ((u(*)())v467)(v468, v469);
+ v450 = 0UL;
+ v451 = 80UL;
+ v452 = ((u(*)())(v444))(v445, v446, v447, v448, v449, v450, v451);
+ v452;
+ v453 = (u)zx86_64_modrm;
+ v454 = *(u*)(vc + 48UL);
+ v455 = 139UL;
+ v456 = 12UL;
+ v457 = 4UL;
+ v458 = 0UL;
+ v459 = 0UL;
+ v460 = 96UL;
+ v461 = ((u(*)())(v453))(v454, v455, v456, v457, v458, v459, v460);
+ v461;
+ v462 = (u)zx86_64_modrm;
+ v463 = *(u*)(vc + 48UL);
+ v464 = 139UL;
+ v465 = 13UL;
+ v466 = 4UL;
+ v467 = 0UL;
+ v468 = 0UL;
+ v469 = 104UL;
+ v470 = ((u(*)())(v462))(v463, v464, v465, v466, v467, v468, v469);
v470;
- v471 = (u)zputchar;
- v472 = vc;
- v473 = 0UL;
- v474 = ((u(*)())v471)(v472, v473);
- v474;
- v475 = (u)zputchar;
- v476 = vc;
+ v471 = (u)zx86_64_modrm;
+ v472 = *(u*)(vc + 48UL);
+ v473 = 139UL;
+ v474 = 14UL;
+ v475 = 4UL;
+ v476 = 0UL;
v477 = 0UL;
- v478 = ((u(*)())v475)(v476, v477);
- v478;
- v479 = (u)zputchar;
- v480 = vc;
- v481 = 0UL;
- v482 = ((u(*)())v479)(v480, v481);
- v482;
- v483 = (u)zputchar;
- v484 = vc;
+ v478 = 112UL;
+ v479 = ((u(*)())(v471))(v472, v473, v474, v475, v476, v477, v478);
+ v479;
+ v480 = (u)zx86_64_modrm;
+ v481 = *(u*)(vc + 48UL);
+ v482 = 139UL;
+ v483 = 15UL;
+ v484 = 4UL;
v485 = 0UL;
- v486 = ((u(*)())v483)(v484, v485);
- v486;
- v487 = (u)zputchar;
- v488 = vc;
- v489 = 0UL;
- v490 = ((u(*)())v487)(v488, v489);
- v490;
- v491 = (u)zputchar;
- v492 = vc;
- v493 = 0UL;
- v494 = ((u(*)())v491)(v492, v493);
- v494;
- v495 = (u)zputchar;
- v496 = vc;
- v497 = 0UL;
- v498 = ((u(*)())v495)(v496, v497);
- v498;
- v499 = (u)zputchar;
- v500 = vc;
- v501 = 0UL;
- v502 = ((u(*)())v499)(v500, v501);
- v502;
- v503 = (u)zputchar;
- v504 = vc;
- v505 = 0UL;
- v506 = ((u(*)())v503)(v504, v505);
+ v486 = 0UL;
+ v487 = 120UL;
+ v488 = ((u(*)())(v480))(v481, v482, v483, v484, v485, v486, v487);
+ v488;
+ v489 = (u)zx86_64_modrm;
+ v490 = *(u*)(vc + 48UL);
+ v491 = 139UL;
+ v492 = 1UL;
+ v493 = 4UL;
+ v494 = 0UL;
+ v495 = 0UL;
+ v496 = 128UL;
+ v497 = ((u(*)())(v489))(v490, v491, v492, v493, v494, v495, v496);
+ v497;
+ v498 = (u)zx86_64_modrm;
+ v499 = *(u*)(vc + 48UL);
+ v500 = 139UL;
+ v501 = 11UL;
+ v502 = 4UL;
+ v503 = 0UL;
+ v504 = 0UL;
+ v505 = 136UL;
+ v506 = ((u(*)())(v498))(v499, v500, v501, v502, v503, v504, v505);
v506;
- v507 = (u)zputchar;
- v508 = vc;
- v509 = 0UL;
- v510 = ((u(*)())v507)(v508, v509);
- v510;
- v511 = (u)zputchar;
- v512 = vc;
+ v507 = (u)zx86_64_modrm;
+ v508 = *(u*)(vc + 48UL);
+ v509 = 139UL;
+ v510 = 4UL;
+ v511 = 4UL;
+ v512 = 0UL;
v513 = 0UL;
- v514 = ((u(*)())v511)(v512, v513);
- v514;
- v515 = (u)zputchar;
- v516 = vc;
- v517 = vmb_magic;
- v518 = ((u(*)())v515)(v516, v517);
- v518;
- v519 = (u)zputchar;
- v520 = vc;
- v521 = vmb_magic >> 8UL;
- v522 = ((u(*)())v519)(v520, v521);
+ v514 = 32UL;
+ v515 = ((u(*)())(v507))(v508, v509, v510, v511, v512, v513, v514);
+ v515;
+ v516 = (u)zx86_64_rex;
+ v517 = *(u*)(vc + 48UL);
+ v518 = 3847UL;
+ v519 = 0UL;
+ v520 = 0UL;
+ v521 = 0UL;
+ v522 = ((u(*)())(v516))(v517, v518, v519, v520, v521);
v522;
- v523 = (u)zputchar;
- v524 = vc;
- v525 = vmb_magic >> 16UL;
- v526 = ((u(*)())v523)(v524, v525);
+ v523 = (u)zx86_64_op;
+ v524 = *(u*)(vc + 48UL);
+ v525 = 3847UL;
+ v526 = ((u(*)())(v523))(v524, v525);
v526;
- v527 = (u)zputchar;
- v528 = vc;
- v529 = vmb_magic >> 24UL;
- v530 = ((u(*)())v527)(v528, v529);
- v530;
- v531 = (u)zputchar;
- v532 = vc;
- v533 = vmb_flags;
- v534 = ((u(*)())v531)(v532, v533);
- v534;
- v535 = (u)zputchar;
- v536 = vc;
- v537 = vmb_flags >> 8UL;
- v538 = ((u(*)())v535)(v536, v537);
- v538;
- v539 = (u)zputchar;
- v540 = vc;
- v541 = vmb_flags >> 16UL;
- v542 = ((u(*)())v539)(v540, v541);
- v542;
- v543 = (u)zputchar;
- v544 = vc;
- v545 = vmb_flags >> 24UL;
- v546 = ((u(*)())v543)(v544, v545);
- v546;
- v547 = (u)zputchar;
- v548 = vc;
- v549 = vmb_checksum;
- v550 = ((u(*)())v547)(v548, v549);
- v550;
- v551 = (u)zputchar;
- v552 = vc;
- v553 = vmb_checksum >> 8UL;
- v554 = ((u(*)())v551)(v552, v553);
- v554;
- v555 = (u)zputchar;
- v556 = vc;
- v557 = vmb_checksum >> 16UL;
- v558 = ((u(*)())v555)(v556, v557);
- v558;
- v559 = (u)zputchar;
- v560 = vc;
- v561 = vmb_checksum >> 24UL;
- v562 = ((u(*)())v559)(v560, v561);
- v562;
- v563 = (u)zputchar;
- v564 = vc;
- v565 = vmb_addr;
- v566 = ((u(*)())v563)(v564, v565);
- v566;
- v567 = (u)zputchar;
- v568 = vc;
- v569 = vmb_addr >> 8UL;
- v570 = ((u(*)())v567)(v568, v569);
- v570;
- v571 = (u)zputchar;
- v572 = vc;
- v573 = vmb_addr >> 16UL;
- v574 = ((u(*)())v571)(v572, v573);
- v574;
- v575 = (u)zputchar;
- v576 = vc;
- v577 = vmb_addr >> 24UL;
- v578 = ((u(*)())v575)(v576, v577);
- v578;
- v579 = (u)zputchar;
- v580 = vc;
- v581 = vload_addr;
- v582 = ((u(*)())v579)(v580, v581);
- v582;
- v583 = (u)zputchar;
- v584 = vc;
- v585 = vload_addr >> 8UL;
- v586 = ((u(*)())v583)(v584, v585);
- v586;
- v587 = (u)zputchar;
- v588 = vc;
- v589 = vload_addr >> 16UL;
- v590 = ((u(*)())v587)(v588, v589);
- v590;
- v591 = (u)zputchar;
- v592 = vc;
- v593 = vload_addr >> 24UL;
- v594 = ((u(*)())v591)(v592, v593);
- v594;
- v595 = (u)zputchar;
- v596 = vc;
- v597 = vtext_end;
- v598 = ((u(*)())v595)(v596, v597);
- v598;
- v599 = (u)zputchar;
- v600 = vc;
- v601 = vtext_end >> 8UL;
- v602 = ((u(*)())v599)(v600, v601);
- v602;
- v603 = (u)zputchar;
- v604 = vc;
- v605 = vtext_end >> 16UL;
- v606 = ((u(*)())v603)(v604, v605);
- v606;
- v607 = (u)zputchar;
- v608 = vc;
- v609 = vtext_end >> 24UL;
- v610 = ((u(*)())v607)(v608, v609);
- v610;
- v611 = (u)zputchar;
- v612 = vc;
- v613 = 0UL;
- v614 = ((u(*)())v611)(v612, v613);
- v614;
- v615 = (u)zputchar;
- v616 = vc;
- v617 = 0UL;
- v618 = ((u(*)())v615)(v616, v617);
- v618;
- v619 = (u)zputchar;
- v620 = vc;
- v621 = 0UL;
- v622 = ((u(*)())v619)(v620, v621);
- v622;
- v623 = (u)zputchar;
- v624 = vc;
- v625 = 0UL;
- v626 = ((u(*)())v623)(v624, v625);
- v626;
- v627 = (u)zputchar;
- v628 = vc;
- v629 = vkentry;
- v630 = ((u(*)())v627)(v628, v629);
- v630;
- v631 = (u)zputchar;
- v632 = vc;
- v633 = vkentry >> 8UL;
- v634 = ((u(*)())v631)(v632, v633);
- v634;
- v635 = (u)zputchar;
- v636 = vc;
- v637 = vkentry >> 16UL;
- v638 = ((u(*)())v635)(v636, v637);
- v638;
- v639 = (u)zputchar;
- v640 = vc;
- v641 = vkentry >> 24UL;
- v642 = ((u(*)())v639)(v640, v641);
- v642;
- v643 = (u)zputchar;
- v644 = vc;
- v645 = 144UL;
- v646 = ((u(*)())v643)(v644, v645);
- v646;
- v647 = (u)zputchar;
- v648 = vc;
- v649 = 144UL;
- v650 = ((u(*)())v647)(v648, v649);
- v650;
- v651 = (u)zputchar;
- v652 = vc;
- v653 = 144UL;
- v654 = ((u(*)())v651)(v652, v653);
- v654;
- v655 = (u)zputchar;
- v656 = vc;
- v657 = 144UL;
- v658 = ((u(*)())v655)(v656, v657);
- v658;
- v659 = (u)zputchar;
- v660 = vc;
- v661 = 144UL;
- v662 = ((u(*)())v659)(v660, v661);
- v662;
- v663 = (u)zputchar;
- v664 = vc;
- v665 = 144UL;
- v666 = ((u(*)())v663)(v664, v665);
- v666;
- v667 = (u)zputchar;
- v668 = vc;
- v669 = 144UL;
- v670 = ((u(*)())v667)(v668, v669);
- v670;
- v671 = (u)zputchar;
- v672 = vc;
- v673 = 144UL;
- v674 = ((u(*)())v671)(v672, v673);
- v674;
- vb = *(u*)(vc + 32UL);
-b198: if (!vb) goto b204;
- v675 = 0UL;
-b205: if (!v675) goto b202;
- v680 = (u)zfflush;
- v681 = *(u*)(vc + 8UL);
- v682 = ((u(*)())v680)(v681);
- v682;
- if (!*(u*)(vc + 80UL)) goto b215;
- v683 = (u)zfflush;
- v684 = *(u*)(vc + 80UL);
- v685 = ((u(*)())v683)(v684);
- v685;
-b213: return 0UL;
-b215: goto b213;
-b202: vi = 0UL;
-b206: if ((s)vi < (s)*(u*)(vb + 16UL)) goto b210;
- vb = *(u*)(vb + 0UL);
- goto b198;
-b210: v676 = (u)zputchar;
- v677 = vc;
- v678 = (u)*(b*)(*(u*)(vb + 8UL) + vi * 1UL);
- v679 = ((u(*)())v676)(v677, v678);
- v679;
- vi = vi + 1UL;
- goto b206;
-b204: v675 = 1UL;
- goto b205;
-b31: vmb_magic = 0UL;
- vkentry = 0UL;
+ return 0UL;
+b107: goto b105;
+b109: v356 = 0UL;
+ goto b111;
+b82: goto b80;
+b84: if (!(*(u*)(vv + 168UL))) goto b92;
+ v292 = 0UL;
+b93: if (!(v292)) goto b90;
+ v290 = 1UL;
+ goto b86;
+b90: v290 = 0UL;
+ goto b86;
+b92: v292 = 1UL;
+ goto b93;
+b88: v291 = 1UL;
+ goto b89;
+b40: goto b38;
+b42: if (!(*(u*)(vv + 168UL))) goto b50;
+ v57 = 0UL;
+b51: if (!(v57)) goto b48;
+ v55 = 1UL;
+ goto b44;
+b48: v55 = 0UL;
+ goto b44;
+b50: v57 = 1UL;
+ goto b51;
+b46: v56 = 1UL;
+ goto b47;
+b22: goto b20;
+b24: if (!(*(u*)(vv + 168UL))) goto b32;
+ v34 = 0UL;
+b33: if (!(v34)) goto b30;
+ v32 = 1UL;
+ goto b26;
+b30: v32 = 0UL;
+ goto b26;
+b32: v34 = 1UL;
+ goto b33;
+b28: v33 = 1UL;
goto b29;
-b33: v27 = 0UL;
- goto b35;
-b24: goto b22;
-b26: v23 = 1UL;
- goto b27;
-b10: ventry = vload_addr + *(u*)(vstart + 8UL);
+b4: goto b2;
+b6: if (!(*(u*)(vv + 168UL))) goto b14;
+ v11 = 0UL;
+b15: if (!(v11)) goto b12;
+ v9 = 1UL;
goto b8;
-b12: if (!*(u*)(vstart + 16UL)) goto b20;
- v22 = 0UL;
-b21: if (!v22) goto b18;
- v20 = 1UL;
- goto b14;
-b18: v20 = 0UL;
- goto b14;
-b20: v22 = 1UL;
- goto b21;
-b16: v21 = 1UL;
- goto b17;
-b3: goto b1;
-b5: v16 = 1UL;
+b12: v9 = 0UL;
+ goto b8;
+b14: v11 = 1UL;
+ goto b15;
+b10: v10 = 1UL;
+ goto b11;
+}
+u zxxd_line(u vline, u voffset, u vdata, u vlen) {
+ u vi = 0;
+ u vj = 0;
+ u vd = 0;
+ u v7 = 0;
+ u v8 = 0;
+ vd = (u)"0123456789abcdef";
+ vi = 0UL;
+ *(b*)(vline + vi * 1UL) = (u)*(b*)(vd + (voffset >> 28UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 1UL) * 1UL) = (u)*(b*)(vd + (voffset >> 24UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 2UL) * 1UL) = (u)*(b*)(vd + (voffset >> 20UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 3UL) * 1UL) = (u)*(b*)(vd + (voffset >> 16UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 4UL) * 1UL) = (u)*(b*)(vd + (voffset >> 12UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 5UL) * 1UL) = (u)*(b*)(vd + (voffset >> 8UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 6UL) * 1UL) = (u)*(b*)(vd + (voffset >> 4UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 7UL) * 1UL) = (u)*(b*)(vd + (voffset & 15UL) * 1UL);
+ *(b*)(vline + (vi + 8UL) * 1UL) = 58UL;
+ *(b*)(vline + (vi + 9UL) * 1UL) = 32UL;
+ vi = vi + 10UL;
+ vj = 0UL;
+b1: if (vj != 16UL) goto b5;
+ *(b*)(vline + vi * 1UL) = 32UL;
+ vi = vi + 1UL;
+ vj = 0UL;
+b12: if (vj != 16UL) goto b18;
+ v7 = 1UL;
+b20: if (!(v7)) goto b16;
+ *(b*)(vline + vi * 1UL) = 10UL;
+ vi = vi + 1UL;
+ *(b*)(vline + vi * 1UL) = 0UL;
+ return 0UL;
+b16: if ((s)((u)*(b*)(vdata + vj * 1UL)) < (s)32UL) goto b26;
+ if ((s)((u)*(b*)(vdata + vj * 1UL)) >= (s)128UL) goto b26;
+ v8 = 1UL;
+b28: if (!(v8)) goto b24;
+ *(b*)(vline + vi * 1UL) = (u)*(b*)(vdata + vj * 1UL);
+b22: vj = vj + 1UL;
+ vi = vi + 1UL;
+ goto b12;
+b24: *(b*)(vline + vi * 1UL) = 46UL;
+ goto b22;
+b26: v8 = 0UL;
+ goto b28;
+b18: if ((s)(vj) < (s)(vlen)) goto b21;
+ v7 = 1UL;
+ goto b20;
+b21: v7 = 0UL;
+ goto b20;
+b5: if ((s)(vj) >= (s)(vlen)) goto b8;
+ *(b*)(vline + vi * 1UL) = (u)*(b*)(vd + ((u)*(b*)(vdata + vj * 1UL) >> 4UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 1UL) * 1UL) = (u)*(b*)(vd + ((u)*(b*)(vdata + vj * 1UL) & 15UL) * 1UL);
+b6: if ((s)(vj + 1UL) >= (s)(vlen)) goto b11;
+ *(b*)(vline + (vi + 2UL) * 1UL) = (u)*(b*)(vd + ((u)*(b*)(vdata + (vj + 1UL) * 1UL) >> 4UL & 15UL) * 1UL);
+ *(b*)(vline + (vi + 3UL) * 1UL) = (u)*(b*)(vd + ((u)*(b*)(vdata + (vj + 1UL) * 1UL) & 15UL) * 1UL);
+b9: *(b*)(vline + (vi + 4UL) * 1UL) = 32UL;
+ vj = vj + 2UL;
+ vi = vi + 5UL;
+ goto b1;
+b11: *(b*)(vline + (vi + 2UL) * 1UL) = 32UL;
+ *(b*)(vline + (vi + 3UL) * 1UL) = 32UL;
+ goto b9;
+b8: *(b*)(vline + vi * 1UL) = 32UL;
+ *(b*)(vline + (vi + 1UL) * 1UL) = 32UL;
goto b6;
}
diff --git a/cc1.om b/cc1.om
@@ -38,6 +38,14 @@ struct compiler {
nfa_id: int;
dfa_id: int;
dfa_cache: *rbnode;
+
+ mach: *machine;
+}
+
+struct machine {
+ id: int;
+ emit_builtin: func(c: *compiler);
+ output_ir: func(c: *compiler, d: *decl);
}
struct parser {
@@ -257,7 +265,7 @@ func compile(c: *compiler, p: *node) {
}
if d.func_used && d.func_defined && d.func_ir {
- output_ir(c, d);
+ c.mach.output_ir(c, d);
}
d = next_decl(c, d);
@@ -1424,6 +1432,8 @@ func main(argc: int, argv: **byte, envp: **byte) {
var tmp: *name_node;
var link: **name_node;
var sem: *lex_sem;
+ var _aarch64: machine;
+ var _x86_64: machine;
link = &input;
@@ -1433,6 +1443,20 @@ func main(argc: int, argv: **byte, envp: **byte) {
c = comp_setup(&a, err);
+ _aarch64.id = 0xb7;
+ _aarch64.emit_builtin = aarch64_builtin;
+ _aarch64.output_ir = aarch64_output_ir;
+
+ _x86_64.id = 0x3e;
+ _x86_64.emit_builtin = x86_64_builtin;
+ _x86_64.output_ir = x86_64_output_ir;
+
+ if get_machine() == 0xb7 {
+ c.mach = &_aarch64;
+ } else if get_machine() == 0x3e {
+ c.mach = &_x86_64;
+ }
+
i = 1;
loop {
if (i >= argc) {
@@ -1455,6 +1479,23 @@ func main(argc: int, argv: **byte, envp: **byte) {
continue;
}
+ if (!strcmp(argv[i], "-m")) {
+ i = i + 1;
+ if (i >= argc) {
+ die("invalid -m at end of argument list");
+ }
+ if (!strcmp(argv[i], "aarch64")) {
+ c.mach = &_aarch64;
+ i = i + 1;
+ } else if (!strcmp(argv[i], "x86_64")) {
+ c.mach = &_x86_64;
+ i = i + 1;
+ } else {
+ die("unknown machine");
+ }
+ continue;
+ }
+
if (!strcmp(argv[i], "-C")) {
i = i + 1;
if (i >= argc) {
@@ -1514,6 +1555,10 @@ func main(argc: int, argv: **byte, envp: **byte) {
return;
}
+ if !c.mach {
+ die("machine not set");
+ }
+
compile(c, p);
if cout_filename {
@@ -1521,10 +1566,10 @@ func main(argc: int, argv: **byte, envp: **byte) {
ircout(c);
}
- emit_builtin(c);
-
if out_filename {
+ c.mach.emit_builtin(c);
+
open_output(c.s, out_filename);
- writeout(c.s, c.start, c.kstart);
+ writeout(c.s, c.mach.id, c.start, c.kstart);
}
}
diff --git a/ir.om b/ir.om
@@ -120,6 +120,7 @@ struct irfunc {
vars_len: int;
vars_cap: int;
arg_count: int;
+ frame_size: int;
}
func mkirblock(ic: *irfunc): *irblock {
diff --git a/ircout.om b/ircout.om
@@ -87,6 +87,10 @@ func ircstdlib(c: *compiler, d: *decl) {
fputs(c.cout, "u zopen(u vname, u vflags, u vmode) {\n");
fputs(c.cout, "\treturn (u)open((char *)vname, (int)vflags, (int)vmode);\n");
fputs(c.cout, "}\n");
+ } else if strcmp(d.name, "get_machine") == 0 {
+ fputs(c.cout, "u zget_machine() {\n");
+ fputs(c.cout, "\treturn 0;\n");
+ fputs(c.cout, "}\n");
} else {
die("unimplemented stdlib glue");
}
@@ -522,7 +526,7 @@ func ircop(c: *compiler, ic: *irfunc, ib: *irblock, op: *irop, pri: int) {
die("invalid op");
}
- if mypri > pri {
+ if mypri >= pri {
fputs(c.cout, "(");
}
@@ -678,7 +682,7 @@ func ircop(c: *compiler, ic: *irfunc, ib: *irblock, op: *irop, pri: int) {
die("invalid op");
}
- if mypri > pri {
+ if mypri >= pri {
fputs(c.cout, ")");
}
}
diff --git a/kernel.x86.om b/kernel.x86_64.om
diff --git a/syscall.aarch64.om b/syscall.aarch64.om
@@ -0,0 +1,155 @@
+enum {
+ O_RDONLY = 0,
+ O_WRONLY = 1,
+ O_RDWR = 2,
+ O_CREAT = 64,
+ O_TRUNC = 512,
+ O_APPEND = 1024,
+ O_DIRECTORY = 0x1000,
+
+ EINTR = 4,
+ EPIPE = 32,
+
+ AF_INET = 2,
+ SOCK_STREAM = 1,
+
+ POLLIN = 0x01,
+ POLLPRI = 0x02,
+ POLLOUT = 0x04,
+ POLLERR = 0x08,
+ POLLHUP = 0x10,
+ POLLNVAL = 0x20,
+
+ PROT_NONE = 0,
+ PROT_READ = 1,
+ PROT_WRITE = 2,
+ PROT_EXEC = 4,
+
+ MAP_PRIVATE = 2,
+ MAP_ANON = 32,
+
+ WNOHANG = 1,
+
+ SIG_DFL = 0,
+ SIG_IGN = 1,
+
+ SIGINT = 2,
+ SIGPIPE = 13,
+ SIGALRM = 14,
+ SIGCHLD = 17,
+ SIGWINCH = 28,
+}
+
+func get_machine(): int {
+ return 0xb7;
+}
+
+func read(fd: int, buf: *byte, n: int): int {
+ return syscall(63, fd, buf as int, n, 0, 0, 0);
+}
+
+func write(fd: int, buf: *byte, n: int): int {
+ return syscall(64, fd, buf as int, n, 0, 0, 0);
+}
+
+func open(name: *byte, flags: int, mode: int): int {
+ return syscall(56, -100, name as int, flags, mode, 0, 0);
+}
+
+func close(fd: int): int {
+ return syscall(57, fd, 0, 0, 0, 0, 0);
+}
+
+//func fstat(fd: int, buf: *byte): int {
+// return syscall(5, fd, buf as int, 0, 0, 0, 0);
+//}
+//
+//func poll(pfd: *int, nfd: int, timeout: int): int {
+// return syscall(7, pfd as int, nfd, timeout, 0, 0, 0);
+//}
+//
+//func lseek(fd: int, off: int, whence: int): int {
+// return syscall(8, fd, off, whence, 0, 0, 0);
+//}
+
+func mmap(addr: int, len: int, prot: int, flags: int, fd: int, off: int): int {
+ return syscall(222, addr, len, prot, flags, fd, off);
+}
+
+//func munmap(addr: int, len: int): int {
+// return syscall(11, addr, len, 0, 0, 0, 0);
+//}
+
+//func sigaction(sig: int, act: *sigaction, oact: *sigaction): int {
+// return syscall(13, sig, act as int, oact as int, 8, 0, 0);
+//}
+
+//func pipe(rfd: *int, wfd: *int): int {
+// var buf: int;
+// var ret: int;
+// ret = syscall(22, (&buf) as int, 0, 0, 0, 0, 0);
+// if ret == 0 {
+// *rfd = buf & (-1 >> 32);
+// *wfd = buf >> 32;
+// }
+// return ret;
+//}
+
+//func dup2(old: int, new: int): int {
+// return syscall(33, old, new, 0, 0, 0, 0);
+//}
+
+//func socket(pf: int, ty: int, pc: int): int {
+// return syscall(41, pf, ty, pc, 0, 0, 0);
+//}
+
+//func accept(fd: int, addr: *byte, len: *int): int {
+// return syscall(43, fd, addr as int, len as int, 0, 0, 0);
+//}
+
+//func bind(fd: int, addr: *byte, len: int): int {
+// return syscall(49, fd, addr as int, len as int, 0, 0, 0);
+//}
+
+//func listen(fd: int, backlog: int): int {
+// return syscall(50, fd, backlog, 0, 0, 0, 0);
+//}
+
+//func fork(): int {
+// return syscall(57, 0, 0, 0, 0, 0, 0);
+//}
+
+//func exec(cmd: *byte, argv: **byte, envp: **byte): int {
+// return syscall(59, cmd as int, argv as int, envp as int, 0, 0, 0);
+//}
+
+func exit(n: int) {
+ syscall(93, n, 0, 0, 0, 0, 0);
+}
+
+//func wait(pid: int, status: *int, flags: int): int {
+// var s: int;
+// var ret: int;
+// s = 0;
+// ret = syscall(61, pid, s as int, flags, 0, 0, 0);
+// if status {
+// *status = s & (-1 >> 32);
+// }
+// return ret;
+//}
+
+//func rename(oldname: *byte, newname: *byte): int {
+// return syscall(82, oldname as int, newname as int, 0, 0, 0, 0);
+//}
+
+//func mkdir(name: *byte): int {
+// return syscall(83, name as int, 0, 0, 0, 0, 0);
+//}
+
+func unlink(name: *byte): int {
+ return syscall(35, -100, name as int, 0, 0, 0, 0);
+}
+
+//func getdirents(fd: int, buf: *byte, len: int): int {
+// return syscall(217, fd, buf as int, len, 0, 0, 0);
+//}
diff --git a/syscall.om b/syscall.om
@@ -3,6 +3,14 @@ func _start(argc: int, argv: **byte, envp: **byte) {
exit(0);
}
+struct sigaction {
+ handler: int;
+ flags: int;
+ restorer: int;
+ mask: int;
+}
+
+func get_machine(): int;
func syscall(n: int, a1: int, a2: int, a3: int, a4: int, a5: int, a6: int): int;
func read(fd: int, buf: *byte, n: int): int;
func write(fd: int, buf: *byte, n: int): int;
diff --git a/syscall.x86.om b/syscall.x86.om
@@ -1,158 +0,0 @@
-enum {
- O_RDONLY = 0,
- O_WRONLY = 1,
- O_RDWR = 2,
- O_CREAT = 64,
- O_TRUNC = 512,
- O_APPEND = 1024,
- O_DIRECTORY = 0x1000,
-
- EINTR = 4,
- EPIPE = 32,
-
- AF_INET = 2,
- SOCK_STREAM = 1,
-
- POLLIN = 0x01,
- POLLPRI = 0x02,
- POLLOUT = 0x04,
- POLLERR = 0x08,
- POLLHUP = 0x10,
- POLLNVAL = 0x20,
-
- PROT_NONE = 0,
- PROT_READ = 1,
- PROT_WRITE = 2,
- PROT_EXEC = 4,
-
- MAP_PRIVATE = 2,
- MAP_ANON = 32,
-
- WNOHANG = 1,
-
- SIG_DFL = 0,
- SIG_IGN = 1,
-
- SIGINT = 2,
- SIGPIPE = 13,
- SIGALRM = 14,
- SIGCHLD = 17,
- SIGWINCH = 28,
-}
-
-func read(fd: int, buf: *byte, n: int): int {
- return syscall(0, fd, buf as int, n, 0, 0, 0);
-}
-
-func write(fd: int, buf: *byte, n: int): int {
- return syscall(1, fd, buf as int, n, 0, 0, 0);
-}
-
-func open(name: *byte, flags: int, mode: int): int {
- return syscall(2, name as int, flags, mode, 0, 0, 0);
-}
-
-func close(fd: int): int {
- return syscall(3, fd, 0, 0, 0, 0, 0);
-}
-
-func fstat(fd: int, buf: *byte): int {
- return syscall(5, fd, buf as int, 0, 0, 0, 0);
-}
-
-func poll(pfd: *int, nfd: int, timeout: int): int {
- return syscall(7, pfd as int, nfd, timeout, 0, 0, 0);
-}
-
-func lseek(fd: int, off: int, whence: int): int {
- return syscall(8, fd, off, whence, 0, 0, 0);
-}
-
-func mmap(addr: int, len: int, prot: int, flags: int, fd: int, off: int): int {
- return syscall(9, addr, len, prot, flags, fd, off);
-}
-
-func munmap(addr: int, len: int): int {
- return syscall(11, addr, len, 0, 0, 0, 0);
-}
-
-struct sigaction {
- handler: int;
- flags: int;
- restorer: int;
- mask: int;
-}
-
-func sigaction(sig: int, act: *sigaction, oact: *sigaction): int {
- return syscall(13, sig, act as int, oact as int, 8, 0, 0);
-}
-
-func pipe(rfd: *int, wfd: *int): int {
- var buf: int;
- var ret: int;
- ret = syscall(22, (&buf) as int, 0, 0, 0, 0, 0);
- if ret == 0 {
- *rfd = buf & (-1 >> 32);
- *wfd = buf >> 32;
- }
- return ret;
-}
-
-func dup2(old: int, new: int): int {
- return syscall(33, old, new, 0, 0, 0, 0);
-}
-
-func socket(pf: int, ty: int, pc: int): int {
- return syscall(41, pf, ty, pc, 0, 0, 0);
-}
-
-func accept(fd: int, addr: *byte, len: *int): int {
- return syscall(43, fd, addr as int, len as int, 0, 0, 0);
-}
-
-func bind(fd: int, addr: *byte, len: int): int {
- return syscall(49, fd, addr as int, len as int, 0, 0, 0);
-}
-
-func listen(fd: int, backlog: int): int {
- return syscall(50, fd, backlog, 0, 0, 0, 0);
-}
-
-func fork(): int {
- return syscall(57, 0, 0, 0, 0, 0, 0);
-}
-
-func exec(cmd: *byte, argv: **byte, envp: **byte): int {
- return syscall(59, cmd as int, argv as int, envp as int, 0, 0, 0);
-}
-
-func exit(n: int) {
- syscall(60, n, 0, 0, 0, 0, 0);
-}
-
-func wait(pid: int, status: *int, flags: int): int {
- var s: int;
- var ret: int;
- s = 0;
- ret = syscall(61, pid, s as int, flags, 0, 0, 0);
- if status {
- *status = s & (-1 >> 32);
- }
- return ret;
-}
-
-func rename(oldname: *byte, newname: *byte): int {
- return syscall(82, oldname as int, newname as int, 0, 0, 0, 0);
-}
-
-func mkdir(name: *byte): int {
- return syscall(83, name as int, 0, 0, 0, 0, 0);
-}
-
-func unlink(name: *byte): int {
- return syscall(87, name as int, 0, 0, 0, 0, 0);
-}
-
-func getdirents(fd: int, buf: *byte, len: int): int {
- return syscall(217, fd, buf as int, len, 0, 0, 0);
-}
diff --git a/syscall.x86_64.om b/syscall.x86_64.om
@@ -0,0 +1,155 @@
+enum {
+ O_RDONLY = 0,
+ O_WRONLY = 1,
+ O_RDWR = 2,
+ O_CREAT = 64,
+ O_TRUNC = 512,
+ O_APPEND = 1024,
+ O_DIRECTORY = 0x1000,
+
+ EINTR = 4,
+ EPIPE = 32,
+
+ AF_INET = 2,
+ SOCK_STREAM = 1,
+
+ POLLIN = 0x01,
+ POLLPRI = 0x02,
+ POLLOUT = 0x04,
+ POLLERR = 0x08,
+ POLLHUP = 0x10,
+ POLLNVAL = 0x20,
+
+ PROT_NONE = 0,
+ PROT_READ = 1,
+ PROT_WRITE = 2,
+ PROT_EXEC = 4,
+
+ MAP_PRIVATE = 2,
+ MAP_ANON = 32,
+
+ WNOHANG = 1,
+
+ SIG_DFL = 0,
+ SIG_IGN = 1,
+
+ SIGINT = 2,
+ SIGPIPE = 13,
+ SIGALRM = 14,
+ SIGCHLD = 17,
+ SIGWINCH = 28,
+}
+
+func get_machine(): int {
+ return 0x3e;
+}
+
+func read(fd: int, buf: *byte, n: int): int {
+ return syscall(0, fd, buf as int, n, 0, 0, 0);
+}
+
+func write(fd: int, buf: *byte, n: int): int {
+ return syscall(1, fd, buf as int, n, 0, 0, 0);
+}
+
+func open(name: *byte, flags: int, mode: int): int {
+ return syscall(2, name as int, flags, mode, 0, 0, 0);
+}
+
+func close(fd: int): int {
+ return syscall(3, fd, 0, 0, 0, 0, 0);
+}
+
+func fstat(fd: int, buf: *byte): int {
+ return syscall(5, fd, buf as int, 0, 0, 0, 0);
+}
+
+func poll(pfd: *int, nfd: int, timeout: int): int {
+ return syscall(7, pfd as int, nfd, timeout, 0, 0, 0);
+}
+
+func lseek(fd: int, off: int, whence: int): int {
+ return syscall(8, fd, off, whence, 0, 0, 0);
+}
+
+func mmap(addr: int, len: int, prot: int, flags: int, fd: int, off: int): int {
+ return syscall(9, addr, len, prot, flags, fd, off);
+}
+
+func munmap(addr: int, len: int): int {
+ return syscall(11, addr, len, 0, 0, 0, 0);
+}
+
+func sigaction(sig: int, act: *sigaction, oact: *sigaction): int {
+ return syscall(13, sig, act as int, oact as int, 8, 0, 0);
+}
+
+func pipe(rfd: *int, wfd: *int): int {
+ var buf: int;
+ var ret: int;
+ ret = syscall(22, (&buf) as int, 0, 0, 0, 0, 0);
+ if ret == 0 {
+ *rfd = buf & (-1 >> 32);
+ *wfd = buf >> 32;
+ }
+ return ret;
+}
+
+func dup2(old: int, new: int): int {
+ return syscall(33, old, new, 0, 0, 0, 0);
+}
+
+func socket(pf: int, ty: int, pc: int): int {
+ return syscall(41, pf, ty, pc, 0, 0, 0);
+}
+
+func accept(fd: int, addr: *byte, len: *int): int {
+ return syscall(43, fd, addr as int, len as int, 0, 0, 0);
+}
+
+func bind(fd: int, addr: *byte, len: int): int {
+ return syscall(49, fd, addr as int, len as int, 0, 0, 0);
+}
+
+func listen(fd: int, backlog: int): int {
+ return syscall(50, fd, backlog, 0, 0, 0, 0);
+}
+
+func fork(): int {
+ return syscall(57, 0, 0, 0, 0, 0, 0);
+}
+
+func exec(cmd: *byte, argv: **byte, envp: **byte): int {
+ return syscall(59, cmd as int, argv as int, envp as int, 0, 0, 0);
+}
+
+func exit(n: int) {
+ syscall(60, n, 0, 0, 0, 0, 0);
+}
+
+func wait(pid: int, status: *int, flags: int): int {
+ var s: int;
+ var ret: int;
+ s = 0;
+ ret = syscall(61, pid, s as int, flags, 0, 0, 0);
+ if status {
+ *status = s & (-1 >> 32);
+ }
+ return ret;
+}
+
+func rename(oldname: *byte, newname: *byte): int {
+ return syscall(82, oldname as int, newname as int, 0, 0, 0, 0);
+}
+
+func mkdir(name: *byte): int {
+ return syscall(83, name as int, 0, 0, 0, 0, 0);
+}
+
+func unlink(name: *byte): int {
+ return syscall(87, name as int, 0, 0, 0, 0, 0);
+}
+
+func getdirents(fd: int, buf: *byte, len: int): int {
+ return syscall(217, fd, buf as int, len, 0, 0, 0);
+}
diff --git a/test.sh b/test.sh
@@ -1,13 +1,14 @@
#!/bin/sh
-LIBS="bufio.om lib.om alloc.om syscall.om syscall.x86.om"
+MACHINE="$(uname -m)"
+LIBS="bufio.om lib.om alloc.om syscall.om syscall.${MACHINE}.om"
CRYPTO="ed25519.om sha512.om sha256.om chacha20.om poly1305.om aes.om rsa.om"
-./cc1 ${LIBS} ${CRYPTO} chacha20_test.om -o chacha20_test -n chacha20_test.lines -G chacha20_test.call
-./cc1 ${LIBS} ${CRYPTO} ed25519_test.om -o ed25519_test -n ed25519_test.lines -G ed25519_test.call
-./cc1 ${LIBS} ${CRYPTO} poly1305_test.om -o poly1305_test -n poly1305_test.lines -G poly1305_test.call
-./cc1 ${LIBS} ${CRYPTO} sha256_test.om -o sha256_test -n sha256_test.lines -G sha256_test.call
-./cc1 ${LIBS} ${CRYPTO} sha512_test.om -o sha512_test -n sha512_test.lines -G sha512_test.call
-./cc1 ${LIBS} ${CRYPTO} x25519_test.om -o x25519_test -n x25519_test.lines -G x25519_test.call
-./cc1 ${LIBS} ${CRYPTO} aes_test.om -o aes_test -n aes_test.lines -G aes_test.call
-./cc1 ${LIBS} ${CRYPTO} rsa_test.om -o rsa_test -n rsa_test.lines -G rsa_test.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} chacha20_test.om -o chacha20_test -n chacha20_test.lines -G chacha20_test.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} ed25519_test.om -o ed25519_test -n ed25519_test.lines -G ed25519_test.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} poly1305_test.om -o poly1305_test -n poly1305_test.lines -G poly1305_test.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} sha256_test.om -o sha256_test -n sha256_test.lines -G sha256_test.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} sha512_test.om -o sha512_test -n sha512_test.lines -G sha512_test.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} x25519_test.om -o x25519_test -n x25519_test.lines -G x25519_test.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} aes_test.om -o aes_test -n aes_test.lines -G aes_test.call
+./cc1 -m ${MACHINE} ${LIBS} ${CRYPTO} rsa_test.om -o rsa_test -n rsa_test.lines -G rsa_test.call
diff --git a/x86.om b/x86.om
@@ -1,1873 +0,0 @@
-enum {
- R_RAX,
- R_RCX,
- R_RDX,
- R_RBX,
- R_RSP,
- R_RBP,
- R_RSI,
- R_RDI,
- R_R8,
- R_R9,
- R_R10,
- R_R11,
- R_R12,
- R_R13,
- R_R14,
- R_R15,
- R_RIP,
-
- R_ES = 0,
- R_CS = 1,
- R_SS = 2,
- R_DS = 3,
- R_FS = 4,
- R_GS = 5,
-
- R_CR0 = 0,
- R_CR1 = 1,
- R_CR2 = 2,
- R_CR3 = 3,
- R_CR4 = 4,
- R_CR5 = 5,
- R_CR6 = 6,
- R_CR7 = 7,
-}
-
-enum {
- CC_O = 0x00,
- CC_NO = 0x01,
- CC_B = 0x02,
- CC_AE = 0x03,
- CC_E = 0x04,
- CC_NE = 0x05,
- CC_BE = 0x06,
- CC_A = 0x07,
- CC_S = 0x08,
- CC_NS = 0x09,
- CC_P = 0x0a,
- CC_NP = 0x0b,
- CC_L = 0x0c,
- CC_GE = 0x0d,
- CC_LE = 0x0e,
- CC_G = 0x0f,
-}
-
-enum {
- OP_GS = 0x65,
- OP_OS = 0x66,
-
- OP_CLD = 0xfc,
- OP_CLI = 0xfa,
- OP_STI = 0xfb,
- OP_CPUID = 0x0fa2,
- OP_IN = 0xec,
- OP_IND = 0xed,
- OP_OUT = 0xee,
- OP_OUTD = 0xef,
- OP_HLT = 0xf4,
- OP_NOP = 0x90,
- OP_WBINVD = 0x0f09,
- OP_UD2 = 0x0f0b,
-
- OP_INVLPGM = 0x070f01,
- OP_LLDM = 0x020f00,
- OP_LTRM = 0x030f00,
-
- OP_WRSR = 0x8e,
- OP_RDSR = 0x8c,
-
- OP_RET = 0xc3,
- OP_CALL = 0xe8,
- OP_JMP = 0xe9,
- OP_JCC = 0x0f80,
- OP_SETCC = 0x0f90,
-
- OP_PUSHF = 0x9c,
- OP_POPF = 0x9d,
- OP_IRET = 0xcf,
- OP_IRETQ = 0x48cf,
- OP_WRMSR = 0x0f30,
- OP_RDMSR = 0x0f32,
- OP_RDCRR = 0x0f20,
- OP_WRCRR = 0x0f22,
- OP_LGDTM = 0x020f01,
- OP_LIDTM = 0x030f01,
- OP_LLDTM = 0x020f00,
-
- OP_ICALLM = 0x0200ff,
-
- OP_NOTM = 0x0200f7,
- OP_NEGM = 0x0300f7,
-
- OP_ANDRM = 0x23,
- OP_ORRM = 0x0b,
- OP_CMPRM = 0x3b,
- OP_TESTRM = 0x85,
- OP_SUBRM = 0x2b,
- OP_ADDRM = 0x03,
- OP_ADCRM = 0x13,
- OP_XORRM = 0x33,
-
- OP_ANDI = 0x040081,
- OP_ADDI = 0x000081,
- OP_SUBI = 0x050081,
- OP_ORI = 0x010081,
- OP_CMPI = 0x070081,
-
- OP_RDRAND = 0x060fc7,
-
- OP_IMULM = 0x0400f7,
- OP_IDIVM = 0x0700f7,
- OP_SHLM = 0x0400d3,
- OP_SHRM = 0x0500d3,
-
- OP_PUSHR = 0x50,
-
- OP_POPR = 0x58,
-
- OP_MOVI = 0x00c7,
- OP_MOVABS = 0xb8,
-
- OP_SYSCALL = 0x0f05,
- OP_SYSRET = 0x0f07,
-
- OP_LEA = 0x8d,
- OP_LOAD = 0x8b,
- OP_LOADB = 0x8a,
- OP_LOAD16 = 0x668a,
- OP_STOREB = 0x88,
- OP_STORE = 0x89,
- OP_STORE16 = 0x6689,
- OP_MOVE = 0x8b,
-}
-
-func as_rex(a: *assembler, op: int, r: int, i: int, b: int) {
- var w: int;
- if a.bits32 {
- return;
- }
- w = 0x08;
- if op == OP_LOADB || op == OP_STOREB {
- w = 0;
- if r < 8 && i < 8 && b < 8 {
- return;
- }
- }
- as_emit(a, 0x40 + w + ((r >> 1) & 4) + ((i >> 2) & 2) + ((b >> 3) & 1));
-}
-
-func as_op(a: *assembler, op: int) {
- if op > 0xff {
- as_emit(a, op >> 8);
- as_emit(a, op);
- } else {
- as_emit(a, op);
- }
-}
-
-// op + r
-func as_opr(a: *assembler, op: int, r: int) {
- if r < 0 || r > 15 {
- die("invalid reg");
- }
- if (op != OP_PUSHR && op != OP_POPR) || r > 7 {
- as_rex(a, op, r, 0, 0);
- }
- as_op(a, op + (r & 7));
-}
-
-func as_opri64(a: *assembler, op: int, r: int, x: int) {
- if op != OP_MOVABS {
- die("only movabs");
- }
- as_opr(a, op, r);
- as_emit(a, x);
- as_emit(a, x >> 8);
- as_emit(a, x >> 16);
- as_emit(a, x >> 24);
- as_emit(a, x >> 32);
- as_emit(a, x >> 40);
- as_emit(a, x >> 48);
- as_emit(a, x >> 56);
-}
-
-// modrm
-func as_modrr(a: *assembler, op: int, r: int, b: int) {
- if r < 0 || r > 15 || b < 0 || b > 15 {
- die("invalid reg");
- }
- if (op != (OP_ICALLM & 0xffff) && (op & -16) != OP_SETCC) || b >= 8 {
- as_rex(a, op, r, 0, b);
- }
- as_op(a, op);
- as_emit(a, 0xc0 + ((r << 3) & 0x38) + (b & 0x07));
-}
-
-// modrm /op
-func as_modr(a: *assembler, op: int, b: int) {
- as_modrr(a, op & 0xffff, op >> 16, b);
-}
-
-// modrm + disp
-func as_modra(a: *assembler, op: int, r: int, d: int) {
- as_rex(a, op, r, 0, 0);
- as_op(a, op);
- as_emit(a, ((r << 3) & 0x38) + R_RSP);
- as_emit(a, (R_RSP << 3) + R_RBP);
- as_emit(a, d);
- as_emit(a, d >> 8);
- as_emit(a, d >> 16);
- as_emit(a, d >> 24);
-}
-
-// modrm + sib + disp
-func as_modrm(a: *assembler, op: int, r: int, b: int, i: int, s: int, d: int) {
- var sib: int;
- var mod: int;
- var rm: int;
- var dw: int;
-
- if r < 0 || r > 15 {
- die("invalid reg");
- }
-
- rm = (r << 3) & 0x38;
-
- if d != 0 {
- if d >= -128 && d <= 127 {
- mod = 1;
- dw = 1;
- } else {
- mod = 2;
- dw = 4;
- }
- } else {
- mod = 0;
- dw = 0;
- }
-
- if mod == 0 {
- if b < 0 || b > 16 {
- die("invalid reg");
- }
-
- if s {
- if b == R_RIP {
- die("invalid base");
- }
-
- if i == R_RSP {
- die("invalid index");
- }
-
- rm = rm + R_RSP;
- } else {
- if i != 0 {
- die("invalid index");
- }
-
- if b == R_RIP {
- mod = 0;
- dw = 4;
- rm = rm + R_RBP;
- } else if b == R_RSP || b == R_R12 {
- s = 1;
- i = R_RSP;
- rm = rm + R_RSP;
- } else if b == R_RBP || b == R_R13 {
- mod = 1;
- dw = 1;
- rm = rm + R_RBP;
- } else {
- rm = rm + (b & 7);
- }
- }
- } else {
- if b < 0 || b > 16 || i < 0 || i > 15 {
- die("invalid reg");
- }
-
- if s {
- if b == R_RIP {
- die("invalid base");
- }
-
- if i == R_RSP {
- die("invalid index");
- }
-
- rm = rm + R_RSP;
- } else {
- if i != 0 {
- die("invalid index");
- }
-
- if b == R_RIP {
- mod = 0;
- dw = 4;
- rm = rm + R_RBP;
- } else if b == R_RSP || b == R_R12 {
- s = 1;
- i = R_RSP;
- rm = rm + R_RSP;
- } else {
- rm = rm + (b & 7);
- }
- }
- }
-
- as_rex(a, op, r, i, b);
- as_op(a, op);
- as_emit(a, (mod << 6) + rm);
-
- if s {
- sib = ((i << 3) & 0x38) + (b & 0x07);
- if s == 2 {
- sib = sib + 0x40;
- } else if s == 4 {
- sib = sib + 0x80;
- } else if s == 8 {
- sib = sib + 0xc0;
- } else if s != 1 {
- die("invalid scale");
- }
- as_emit(a, sib);
- }
-
- if dw == 1 {
- as_emit(a, d);
- } else if dw == 4 {
- as_emit(a, d);
- as_emit(a, d >> 8);
- as_emit(a, d >> 16);
- as_emit(a, d >> 24);
- }
-}
-
-// modrm /op
-func as_modm(a: *assembler, op: int, b: int, i: int, s: int, d: int) {
- as_modrm(a, op & 0xffff, op >> 16, b, i, s, d);
-}
-
-func as_modri(a: *assembler, op: int, r: int, x: int) {
- if x < -(1 << 31) || x >= (1 << 31) {
- die("immediate too large");
- }
- as_modrr(a, op & 0xffff, op >> 16, r);
- as_emit(a, x);
- as_emit(a, x >> 8);
- as_emit(a, x >> 16);
- as_emit(a, x >> 24);
-}
-
-func as_jmp(a: *assembler, op: int, l: *label) {
- reserve(a, 16);
- as_op(a, op);
- as_emit(a, 0);
- as_emit(a, 0);
- as_emit(a, 0);
- as_emit(a, 0);
- addfixup(a, l);
-}
-
-func emit_ssr(c: *compiler) {
- var d: *decl;
- var v: *decl;
-
- v = find(c, "global", "_save", 0);
- if (!v || !v.member_defined) {
- cdie(c, "no _save");
- }
-
- // Save the current stack
- as_emit(c.s, OP_GS);
- as_modra(c.s, OP_STORE, R_RSP, v.member_offset);
-
- v = find(c, "global", "curtask", 0);
- if (!v || !v.member_defined) {
- cdie(c, "no global.curtask");
- }
-
- // Load the current task
- as_emit(c.s, OP_GS);
- as_modra(c.s, OP_LOAD, R_RSP, v.member_offset);
-
- v = find(c, "task", "stack", 0);
- if (!v || !v.member_defined) {
- cdie(c, "no task.stack");
- }
-
- // Load the kernel stack but reserve some space for the regs struct
- as_modrm(c.s, OP_LOAD, R_RSP, R_RSP, 0, 0, v.member_offset);
- as_modri(c.s, OP_ADDI, R_RSP, 4096 - 176);
-
- // Save general purpose registers
- as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c.s, OP_STORE, R_RDX, R_RSP, 0, 0, 16);
- as_modrm(c.s, OP_STORE, R_RBX, R_RSP, 0, 0, 24);
- as_modrm(c.s, OP_STORE, R_RBP, R_RSP, 0, 0, 40);
- as_modrm(c.s, OP_STORE, R_RSI, R_RSP, 0, 0, 48);
- as_modrm(c.s, OP_STORE, R_RDI, R_RSP, 0, 0, 56);
- as_modrm(c.s, OP_STORE, R_R8, R_RSP, 0, 0, 64);
- as_modrm(c.s, OP_STORE, R_R9, R_RSP, 0, 0, 72);
- as_modrm(c.s, OP_STORE, R_R10, R_RSP, 0, 0, 80);
- as_modrm(c.s, OP_STORE, R_R12, R_RSP, 0, 0, 96);
- as_modrm(c.s, OP_STORE, R_R13, R_RSP, 0, 0, 104);
- as_modrm(c.s, OP_STORE, R_R14, R_RSP, 0, 0, 112);
- as_modrm(c.s, OP_STORE, R_R15, R_RSP, 0, 0, 120);
- as_modrm(c.s, OP_STORE, R_RCX, R_RSP, 0, 0, 128);
- as_modrm(c.s, OP_STORE, R_R11, R_RSP, 0, 0, 136);
-
- // Clear rcx, r11, trap, err
- as_modrr(c.s, OP_XORRM, R_RAX, R_RAX);
- as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 8);
- as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 88);
- as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 160);
- as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 168);
-
- // Save cs and ds
- as_modri(c.s, OP_MOVI, R_RAX, 43);
- as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 144);
- as_modri(c.s, OP_MOVI, R_RAX, 35);
- as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 152);
-
- v = find(c, "global", "_save", 0);
- if (!v || !v.member_defined) {
- cdie(c, "no _save");
- }
-
- // Save the saved stack and switch back
- as_emit(c.s, OP_GS);
- as_modra(c.s, OP_LOAD, R_RAX, v.member_offset);
- as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 32);
- as_modrr(c.s, OP_MOVE, R_RAX, R_RSP);
-
- // Create a frame
- as_modrr(c.s, OP_XORRM, R_RBP, R_RBP);
- as_opr(c.s, OP_PUSHR, R_RBP);
- as_opr(c.s, OP_PUSHR, R_RBP);
- as_modrr(c.s, OP_MOVE, R_RBP, R_RSP);
-
- as_modrr(c.s, OP_MOVE, R_RDI, R_RAX);
-
- // Call _ssr
- d = find(c, "_ssr", nil, 1);
- if (d.func_defined && d.func_label.fixed) {
- as_jmp(c.s, OP_CALL, d.func_label);
- }
-
- as_op(c.s, OP_CLI);
-
- // Delete the frame
- as_modri(c.s, OP_ADDI, R_RSP, 2 * 8);
-
- // Restore the old registers
- as_modrm(c.s, OP_LOAD, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c.s, OP_LOAD, R_RDX, R_RSP, 0, 0, 16);
- as_modrm(c.s, OP_LOAD, R_RBX, R_RSP, 0, 0, 24);
- as_modrm(c.s, OP_LOAD, R_RBP, R_RSP, 0, 0, 40);
- as_modrm(c.s, OP_LOAD, R_RSI, R_RSP, 0, 0, 48);
- as_modrm(c.s, OP_LOAD, R_RDI, R_RSP, 0, 0, 56);
- as_modrm(c.s, OP_LOAD, R_R8, R_RSP, 0, 0, 64);
- as_modrm(c.s, OP_LOAD, R_R9, R_RSP, 0, 0, 72);
- as_modrm(c.s, OP_LOAD, R_R10, R_RSP, 0, 0, 80);
- as_modrm(c.s, OP_LOAD, R_R12, R_RSP, 0, 0, 96);
- as_modrm(c.s, OP_LOAD, R_R13, R_RSP, 0, 0, 104);
- as_modrm(c.s, OP_LOAD, R_R14, R_RSP, 0, 0, 112);
- as_modrm(c.s, OP_LOAD, R_R15, R_RSP, 0, 0, 120);
-
- as_modrm(c.s, OP_LOAD, R_RCX, R_RSP, 0, 0, 128);
- as_modrm(c.s, OP_LOAD, R_R11, R_RSP, 0, 0, 136);
-
- as_modrm(c.s, OP_LOAD, R_RSP, R_RSP, 0, 0, 32);
-
- // Return to the user
- as_rex(c.s, OP_SYSRET, 0, 0, 0);
- as_op(c.s, OP_SYSRET);
-}
-
-func emit_isr(c: *compiler) {
- var d: *decl;
- var out: *label;
- var i: int;
-
- out = mklabel(c.s);
-
- i = 0;
- loop {
- if i == 256 {
- break;
- }
- reserve(c.s, 16);
-
- if i == 8 || i == 10 || i == 11 || i == 12
- || i == 13 || i == 14 || i == 17 || i == 21
- || i == 29 || i == 30 {
- // nop
- as_emit(c.s, 0x90);
- as_emit(c.s, 0x90);
- } else {
- // push 0
- as_emit(c.s, 0x6a);
- as_emit(c.s, 0x00);
- }
-
- // push i
- as_emit(c.s, 0x68);
- as_emit(c.s, i);
- as_emit(c.s, 0x00);
- as_emit(c.s, 0x00);
- as_emit(c.s, 0x00);
-
- // jmp out
- as_emit(c.s, 0xe9);
- as_emit(c.s, 0x00);
- as_emit(c.s, 0x00);
- as_emit(c.s, 0x00);
- as_emit(c.s, 0x00);
- addfixup(c.s, out);
-
- // Align to 16
- as_emit(c.s, 0x90);
- as_emit(c.s, 0x90);
- as_emit(c.s, 0x90);
- as_emit(c.s, 0x90);
-
- i = i + 1;
- }
-
- fixup_label(c.s, out);
-
- // Allocate a regs struct
- as_modri(c.s, OP_SUBI, R_RSP, 176);
-
- // Save rbp and use it as the regs pointer
- as_modrm(c.s, OP_STORE, R_RBP, R_RSP, 0, 0, 40);
- as_modrr(c.s, OP_MOVE, R_RBP, R_RSP);
-
- // Save general purpose registers
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
- as_modrm(c.s, OP_STORE, R_RCX, R_RBP, 0, 0, 8);
- as_modrm(c.s, OP_STORE, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.s, OP_STORE, R_RBX, R_RBP, 0, 0, 24);
- as_modrm(c.s, OP_STORE, R_RSI, R_RBP, 0, 0, 48);
- as_modrm(c.s, OP_STORE, R_RDI, R_RBP, 0, 0, 56);
- as_modrm(c.s, OP_STORE, R_R8, R_RBP, 0, 0, 64);
- as_modrm(c.s, OP_STORE, R_R9, R_RBP, 0, 0, 72);
- as_modrm(c.s, OP_STORE, R_R10, R_RBP, 0, 0, 80);
- as_modrm(c.s, OP_STORE, R_R11, R_RBP, 0, 0, 88);
- as_modrm(c.s, OP_STORE, R_R12, R_RBP, 0, 0, 96);
- as_modrm(c.s, OP_STORE, R_R13, R_RBP, 0, 0, 104);
- as_modrm(c.s, OP_STORE, R_R14, R_RBP, 0, 0, 112);
- as_modrm(c.s, OP_STORE, R_R15, R_RBP, 0, 0, 120);
-
- // trap
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 0);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 160);
- // err
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 8);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 168);
- // rip
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 16);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 128);
- // cs
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 24);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 144);
- // flags
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 32);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 136);
- // rsp
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 40);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 32);
- // ss
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 48);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 152);
-
- // Call _isr
- as_modrr(c.s, OP_MOVE, R_RDI, R_RBP);
- d = find(c, "_isr", nil, 1);
- if (d.func_defined && d.func_label.fixed) {
- as_jmp(c.s, OP_CALL, d.func_label);
- }
-
- // rip
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 128);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 16);
- // cs
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 144);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 24);
- // flags
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 136);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 32);
- // rsp
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 32);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 40);
- // ss
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 152);
- as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 48);
-
- // Restore general purpose registers
- as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 0);
- as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 8);
- as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.s, OP_LOAD, R_RBX, R_RBP, 0, 0, 24);
- as_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 48);
- as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 56);
- as_modrm(c.s, OP_LOAD, R_R8, R_RBP, 0, 0, 64);
- as_modrm(c.s, OP_LOAD, R_R9, R_RBP, 0, 0, 72);
- as_modrm(c.s, OP_LOAD, R_R10, R_RBP, 0, 0, 80);
- as_modrm(c.s, OP_LOAD, R_R11, R_RBP, 0, 0, 88);
- as_modrm(c.s, OP_LOAD, R_R12, R_RBP, 0, 0, 96);
- as_modrm(c.s, OP_LOAD, R_R13, R_RBP, 0, 0, 104);
- as_modrm(c.s, OP_LOAD, R_R14, R_RBP, 0, 0, 112);
- as_modrm(c.s, OP_LOAD, R_R15, R_RBP, 0, 0, 120);
-
- // Restore rbp
- as_modrm(c.s, OP_LOAD, R_RBP, R_RBP, 0, 0, 40);
-
- // Clean up regs + trap + err
- as_modri(c.s, OP_ADDI, R_RSP, 176 + 2 * 8);
-
- as_op(c.s, OP_IRETQ);
-}
-
-func emit_builtin(c: *compiler) {
- var d: *decl;
-
- d = find(c, "syscall", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RAX, R_RDI);
- as_modrr(c.s, OP_MOVE, R_RDI, R_RSI);
- as_modrr(c.s, OP_MOVE, R_RSI, R_RDX);
- as_modrr(c.s, OP_MOVE, R_RDX, R_RCX);
- as_modrr(c.s, OP_MOVE, R_R10, R_R8);
- as_modrr(c.s, OP_MOVE, R_R8, R_R9);
- as_modrm(c.s, OP_LOAD, R_R9, R_RSP, 0, 0, 8);
- as_op(c.s, OP_SYSCALL);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_restorer", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modri(c.s, OP_MOVI, R_RAX, 15);
- as_op(c.s, OP_SYSCALL);
- }
-
- d = find(c, "_include", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_op(c.s, OP_UD2);
- }
-
- d = find(c, "ud2", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_op(c.s, OP_UD2);
- }
-
- d = find(c, "cpuid", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_opr(c.s, OP_PUSHR, R_RCX);
- as_opr(c.s, OP_PUSHR, R_RDX);
- as_opr(c.s, OP_PUSHR, R_RSI);
- as_opr(c.s, OP_PUSHR, R_RDI);
- as_modrm(c.s, OP_LOAD, R_RAX, R_RDI, 0, 0, 0);
- as_modrm(c.s, OP_LOAD, R_RCX, R_RSI, 0, 0, 0);
- as_modrm(c.s, OP_LOAD, R_RDX, R_RDX, 0, 0, 0);
- as_modrm(c.s, OP_LOAD, R_RBX, R_RCX, 0, 0, 0);
- as_op(c.s, OP_CPUID);
- as_opr(c.s, OP_POPR, R_RDI);
- as_opr(c.s, OP_POPR, R_RSI);
- as_opr(c.s, OP_POPR, R_RDX);
- as_opr(c.s, OP_POPR, R_RCX);
- as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
- as_modrm(c.s, OP_STORE, R_RCX, R_RSI, 0, 0, 0);
- as_modrm(c.s, OP_STORE, R_RDX, R_RDX, 0, 0, 0);
- as_modrm(c.s, OP_STORE, R_RBX, R_RCX, 0, 0, 0);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "inb", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
- as_op(c.s, OP_IN);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "outb", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
- as_modrr(c.s, OP_MOVE, R_RAX, R_RSI);
- as_op(c.s, OP_OUT);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "inw", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
- as_emit(c.s, OP_OS);
- as_op(c.s, OP_IND);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "outw", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
- as_modrr(c.s, OP_MOVE, R_RAX, R_RSI);
- as_emit(c.s, OP_OS);
- as_op(c.s, OP_OUTD);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "ind", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
- as_op(c.s, OP_IND);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "outd", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
- as_modrr(c.s, OP_MOVE, R_RAX, R_RSI);
- as_op(c.s, OP_OUTD);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "rdmsr", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RCX, R_RDI);
- as_op(c.s, OP_RDMSR);
- as_modri(c.s, OP_MOVI, R_RCX, 32);
- as_modr(c.s, OP_SHLM, R_RDX);
- as_modrr(c.s, OP_ORRM, R_RAX, R_RDX);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "wrmsr", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_MOVE, R_RAX, R_RSI);
- as_modrr(c.s, OP_MOVE, R_RDX, R_RSI);
- as_modri(c.s, OP_MOVI, R_RCX, 32);
- as_modr(c.s, OP_SHRM, R_RDX);
- as_modrr(c.s, OP_MOVE, R_RCX, R_RDI);
- as_op(c.s, OP_WRMSR);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "rdcr0", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_RDCRR, R_CR0, R_RAX);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "wrcr0", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_WRCRR, R_CR0, R_RDI);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "rdcr2", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_RDCRR, R_CR2, R_RAX);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "wrcr2", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_WRCRR, R_CR2, R_RDI);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "rdcr3", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_RDCRR, R_CR3, R_RAX);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "wrcr3", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_WRCRR, R_CR3, R_RDI);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "rdcr4", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_RDCRR, R_CR4, R_RAX);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "wrcr4", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_WRCRR, R_CR4, R_RDI);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "lgdt", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modri(c.s, OP_SUBI, R_RSP, 16);
- as_modri(c.s, OP_SUBI, R_RSI, 1);
- as_modrm(c.s, OP_STORE, R_RSI, R_RSP, 0, 0, 0);
- as_modrm(c.s, OP_STORE, R_RDI, R_RSP, 0, 0, 2);
- as_modm(c.s, OP_LGDTM, R_RSP, 0, 0, 0);
- as_modri(c.s, OP_ADDI, R_RSP, 16);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "lidt", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modri(c.s, OP_SUBI, R_RSP, 16);
- as_modri(c.s, OP_SUBI, R_RSI, 1);
- as_modrm(c.s, OP_STORE, R_RSI, R_RSP, 0, 0, 0);
- as_modrm(c.s, OP_STORE, R_RDI, R_RSP, 0, 0, 2);
- as_modm(c.s, OP_LIDTM, R_RSP, 0, 0, 0);
- as_modri(c.s, OP_ADDI, R_RSP, 16);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "lldt", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modr(c.s, OP_LLDTM, R_RDI);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "ltr", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modr(c.s, OP_LTRM, R_RDI);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "lseg", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_opr(c.s, OP_PUSHR, R_RBP);
- as_modrr(c.s, OP_MOVE, R_RBP, R_RSP);
- // es ds fs gs
- as_modrr(c.s, OP_WRSR, R_ES, R_RSI);
- as_modrr(c.s, OP_WRSR, R_DS, R_RSI);
- as_modrr(c.s, OP_WRSR, R_FS, R_RSI);
- as_modrr(c.s, OP_WRSR, R_GS, R_RSI);
- // ss
- as_opr(c.s, OP_PUSHR, R_RSI);
- // rsp
- as_opr(c.s, OP_PUSHR, R_RBP);
- // flags
- as_op(c.s, OP_PUSHF);
- // cs
- as_opr(c.s, OP_PUSHR, R_RDI);
- // rip
- as_op(c.s, OP_CALL);
- as_emit(c.s, 5);
- as_emit(c.s, 0);
- as_emit(c.s, 0);
- as_emit(c.s, 0);
- as_op(c.s, OP_JMP);
- as_emit(c.s, 2);
- as_emit(c.s, 0);
- as_emit(c.s, 0);
- as_emit(c.s, 0);
- as_op(c.s, OP_IRETQ);
- as_opr(c.s, OP_POPR, R_RBP);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "hlt", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_op(c.s, OP_HLT);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "cli", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_op(c.s, OP_CLI);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "sti", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_op(c.s, OP_STI);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "rdflags", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_op(c.s, OP_PUSHF);
- as_opr(c.s, OP_POPR, R_RAX);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "wrflags", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_opr(c.s, OP_PUSHR, R_RDI);
- as_op(c.s, OP_POPF);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "wbinvld", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modm(c.s, OP_WBINVD, R_RDI, 0, 0, 0);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "invlpg", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modm(c.s, OP_INVLPGM, R_RDI, 0, 0, 0);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_ssr0", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- emit_ssr(c);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_isr0", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- emit_isr(c);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_rgs", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 16);
- as_emit(c.s, OP_GS);
- as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 0);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_r32", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- c.s.bits32 = 1;
- as_modrm(c.s, OP_LOAD, R_RAX, R_RDI, 0, 0, 0);
- c.s.bits32 = 0;
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_w32", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- c.s.bits32 = 1;
- as_modrm(c.s, OP_STORE, R_RSI, R_RDI, 0, 0, 0);
- c.s.bits32 = 0;
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_r16", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modrr(c.s, OP_XORRM, R_RAX, R_RAX);
- c.s.bits32 = 1;
- as_modrm(c.s, OP_LOAD16, R_RAX, R_RDI, 0, 0, 0);
- c.s.bits32 = 0;
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_w16", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- c.s.bits32 = 1;
- as_modrm(c.s, OP_STORE16, R_RSI, R_RDI, 0, 0, 0);
- c.s.bits32 = 0;
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "_rdrand", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
- as_modr(c.s, OP_RDRAND, R_RAX);
- as_op(c.s, OP_RET);
- }
-
- d = find(c, "taskswitch", nil, 1);
- if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
-
- // save
- as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
- as_modrm(c.s, OP_STORE, R_RCX, R_RDI, 0, 0, 8);
- as_modrm(c.s, OP_STORE, R_RDX, R_RDI, 0, 0, 16);
- as_modrm(c.s, OP_STORE, R_RBX, R_RDI, 0, 0, 24);
- as_modrm(c.s, OP_STORE, R_RBP, R_RDI, 0, 0, 40);
- as_modrm(c.s, OP_STORE, R_RSI, R_RDI, 0, 0, 48);
- as_modrm(c.s, OP_STORE, R_RDI, R_RDI, 0, 0, 56);
- as_modrm(c.s, OP_STORE, R_R8, R_RDI, 0, 0, 64);
- as_modrm(c.s, OP_STORE, R_R9, R_RDI, 0, 0, 72);
- as_modrm(c.s, OP_STORE, R_R10, R_RDI, 0, 0, 80);
- as_modrm(c.s, OP_STORE, R_R11, R_RDI, 0, 0, 88);
- as_modrm(c.s, OP_STORE, R_R12, R_RDI, 0, 0, 96);
- as_modrm(c.s, OP_STORE, R_R13, R_RDI, 0, 0, 104);
- as_modrm(c.s, OP_STORE, R_R14, R_RDI, 0, 0, 112);
- as_modrm(c.s, OP_STORE, R_R15, R_RDI, 0, 0, 120);
-
- // rip
- as_opr(c.s, OP_POPR, R_RAX);
- as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 128);
- // cs
- as_modrr(c.s, OP_RDSR, R_CS, R_RAX);
- as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 144);
- // flags
- as_op(c.s, OP_PUSHF);
- as_opr(c.s, OP_POPR, R_RAX);
- as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 136);
- // rsp
- as_modrm(c.s, OP_STORE, R_RSP, R_RDI, 0, 0, 32);
- // ss
- as_modrr(c.s, OP_RDSR, R_SS, R_RAX);
- as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 152);
-
- // restore
- as_modrm(c.s, OP_STORE, R_RCX, R_RDI, 0, 0, 8);
- as_modrm(c.s, OP_STORE, R_RDX, R_RDI, 0, 0, 16);
- as_modrm(c.s, OP_STORE, R_RBX, R_RDI, 0, 0, 24);
- as_modrm(c.s, OP_STORE, R_RBP, R_RDI, 0, 0, 40);
- as_modrm(c.s, OP_STORE, R_RDI, R_RDI, 0, 0, 56);
- as_modrm(c.s, OP_STORE, R_R8, R_RDI, 0, 0, 64);
- as_modrm(c.s, OP_STORE, R_R9, R_RDI, 0, 0, 72);
- as_modrm(c.s, OP_STORE, R_R10, R_RDI, 0, 0, 80);
- as_modrm(c.s, OP_STORE, R_R11, R_RDI, 0, 0, 88);
- as_modrm(c.s, OP_STORE, R_R12, R_RDI, 0, 0, 96);
- as_modrm(c.s, OP_STORE, R_R13, R_RDI, 0, 0, 104);
- as_modrm(c.s, OP_STORE, R_R14, R_RDI, 0, 0, 112);
- as_modrm(c.s, OP_STORE, R_R15, R_RDI, 0, 0, 120);
-
- // ss
- as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 152);
- as_opr(c.s, OP_PUSHR, R_RAX);
- // rsp
- as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 32);
- as_opr(c.s, OP_PUSHR, R_RAX);
- // flags
- as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 136);
- as_opr(c.s, OP_PUSHR, R_RAX);
- // cs
- as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 144);
- as_opr(c.s, OP_PUSHR, R_RAX);
- // rip
- as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 128);
- as_opr(c.s, OP_PUSHR, R_RAX);
-
- // restore temporaries
- as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 0);
- as_modrm(c.s, OP_LOAD, R_RSI, R_RSI, 0, 0, 40);
-
- // iretq
- as_op(c.s, OP_IRETQ);
- }
-}
-
-func emit_kstart(c: *assembler) {
- var hang: *label;
- var do_iret: *label;
- var do_ret: *label;
- var done: *label;
-
- c.bits32 = 1;
-
- hang = mklabel(c);
- do_iret = mklabel(c);
- do_ret = mklabel(c);
- done = mklabel(c);
-
- // Check for valid multiboot magic
- as_modri(c, OP_MOVI, R_RDX, 0x2badb002);
- as_modrr(c, OP_CMPRM, R_RAX, R_RDX);
- as_jmp(c, OP_JCC + CC_NE, hang);
-
- // Setup an initial stack
- as_modri(c, OP_MOVI, R_RSP, 0x00300000); // FIXME bss
-
- // Align stack to page
- as_modri(c, OP_ANDI, R_RSP, -0x1000);
-
- // pt3 -> 1g
- as_modri(c, OP_SUBI, R_RSP, 0x1000);
- as_modri(c, OP_MOVI, R_RAX, 0x83);
- as_modri(c, OP_MOVI, R_RDX, 0);
- as_modrm(c, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c, OP_STORE, R_RDX, R_RSP, 0, 0, 4);
- as_modrm(c, OP_STORE, R_RAX, R_RSP, 0, 0, 510 * 8 + 0);
- as_modrm(c, OP_STORE, R_RDX, R_RSP, 0, 0, 510 * 8 + 4);
-
- // pt4 -> pt3
- as_modrr(c, OP_MOVE, R_RAX, R_RSP);
- as_modri(c, OP_SUBI, R_RSP, 0x1000);
- as_modri(c, OP_ORI, R_RAX, 3);
- as_modri(c, OP_MOVI, R_RDX, 0);
- as_modrm(c, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c, OP_STORE, R_RDX, R_RSP, 0, 0, 4);
- as_modrm(c, OP_STORE, R_RAX, R_RSP, 0, 0, 511 * 8 + 0);
- as_modrm(c, OP_STORE, R_RDX, R_RSP, 0, 0, 511 * 8 + 4);
-
- // Load page table pt4
- as_modrr(c, OP_WRCRR, R_CR3, R_RSP);
-
- // Allocate space for the gdt
- as_modri(c, OP_SUBI, R_RSP, 64);
- as_modrr(c, OP_MOVE, R_RBP, R_RSP);
-
- // Null Segment
- as_modri(c, OP_MOVI, R_RAX, 0x00000000);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 8);
- as_modri(c, OP_MOVI, R_RAX, 0x00000000);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 12);
-
- // Kernel code segment
- as_modri(c, OP_MOVI, R_RAX, 0x00000000);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 16);
- as_modri(c, OP_MOVI, R_RAX, 0x00209800);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 20);
-
- // Kernel data segment
- as_modri(c, OP_MOVI, R_RAX, 0x00000000);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 24);
- as_modri(c, OP_MOVI, R_RAX, 0x00009200);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 28);
-
- // Load gdt
- as_modri(c, OP_MOVI, R_RAX, 23);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
- as_modrm(c, OP_LEA, R_RAX, R_RBP, 0, 0, 8);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 2);
- as_modm(c, OP_LGDTM, R_RBP, 0, 0, 0);
-
- // Load null lldt
- as_modri(c, OP_MOVI, R_RAX, 0);
- as_modr(c, OP_LLDTM, R_RAX);
-
- // Load null idt
- as_modm(c, OP_LIDTM, R_RBP, 0, 0, 8);
-
- // Enable pae
- as_modri(c, OP_MOVI, R_RAX, 0xa0);
- as_modrr(c, OP_WRCRR, R_CR4, R_RAX);
-
- // Enable long mode
- as_modri(c, OP_MOVI, R_RCX, (-1 << 32) + (0xc0 << 24) + 0x000080);
- as_op(c, OP_RDMSR);
- as_modri(c, OP_ORI, R_RAX, 0x100);
- as_op(c, OP_WRMSR);
-
- // Enable paging
- as_modrr(c, OP_RDCRR, R_CR0, R_RAX);
- as_modri(c, OP_ORI, R_RAX, (-0x80000000) | 0x0001);
- as_modrr(c, OP_WRCRR, R_CR0, R_RAX);
-
- // flags
- as_modri(c, OP_MOVI, R_RAX, 0);
- as_opr(c, OP_PUSHR, R_RAX);
- // cs
- as_modri(c, OP_MOVI, R_RAX, 8);
- as_opr(c, OP_PUSHR, R_RAX);
- // pointer
- as_jmp(c, OP_CALL, do_iret);
-
- c.bits32 = 0;
-
- // Jump to top half
- as_jmp(c, OP_CALL, do_ret);
-
- // Reload the gdt in the top half
- as_modri(c, OP_ORI, R_RBP, -0x80000000);
- as_modri(c, OP_MOVI, R_RAX, 23);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
- as_modrm(c, OP_LEA, R_RAX, R_RBP, 0, 0, 8);
- as_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 2);
- as_modm(c, OP_LGDTM, R_RBP, 0, 0, 0);
-
- // Reload segments
- as_modri(c, OP_MOVI, R_RAX, 16);
- as_modrr(c, OP_WRSR, R_ES, R_RAX);
- as_modrr(c, OP_WRSR, R_DS, R_RAX);
- as_modrr(c, OP_WRSR, R_FS, R_RAX);
- as_modrr(c, OP_WRSR, R_GS, R_RAX);
- as_modrr(c, OP_WRSR, R_SS, R_RAX);
- as_modrr(c, OP_MOVE, R_RSP, R_RSP);
-
- // Reload stack in the top half
- as_modri(c, OP_ORI, R_RSP, -0x80000000);
-
- // Kill the lower mapping
- as_modri(c, OP_MOVI, R_RAX, 0);
- as_modrm(c, OP_LEA, R_RDI, R_RBP, 0, 0, 64);
- as_modrm(c, OP_STORE, R_RAX, R_RDI, 0, 0, 4096);
- as_modrm(c, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
- as_modri(c, OP_ANDI, R_RDI, 0x7fffffff);
- as_modrr(c, OP_WRCRR, R_CR3, R_RDI);
-
- // Setup a call frame for _kstart
- as_jmp(c, OP_JMP, done);
-
- // hlt forever
- fixup_label(c, hang);
- as_op(c, OP_CLI);
- as_op(c, OP_HLT);
- as_jmp(c, OP_JMP, hang);
-
- // iret to long mode
- fixup_label(c, do_iret);
- as_op(c, OP_IRET);
-
- // ret to top half
- fixup_label(c, do_ret);
- as_opr(c, OP_POPR, R_RAX);
- as_modri(c, OP_ORI, R_RAX, -0x80000000);
- as_opr(c, OP_PUSHR, R_RAX);
- as_op(c, OP_RET);
-
- // Setup a call frame for _kstart
- fixup_label(c, done);
- as_modrr(c, OP_XORRM, R_RBP, R_RBP);
- as_modrr(c, OP_MOVE, R_RDI, R_RBX);
- as_opr(c, OP_PUSHR, R_RBP);
-}
-
-func emit_align(c: *assembler, n: int, b: int) {
- var pad: int;
-
- pad = c.at & (n - 1);
-
- if pad == 0 {
- return;
- }
-
- loop {
- if pad == n {
- break;
- }
-
- as_emit(c, b);
-
- pad = pad + 1;
- }
-}
-
-func output_ir(c: *compiler, d: *decl) {
- var ic: *irfunc;
-
- ic = d.func_ir;
-
- ic.c.filename = ic.filename;
- ic.c.lineno = ic.lineno;
- ic.c.colno = ic.colno;
- ic.s.filename = ic.filename;
- ic.s.lineno = ic.lineno;
-
- fixup_label(c.s, d.func_label);
- add_symbol(c.s, d.name, d.func_label);
-
- if strcmp(d.name, "_start") == 0 {
- as_modrm(c.s, OP_LOAD, R_RDI, R_RSP, 0, 0, 0);
- as_modrm(c.s, OP_LEA, R_RSI, R_RSP, 0, 0, 8);
- as_modrm(c.s, OP_LEA, R_RDX, R_RSI, R_RDI, 8, 8);
- as_opr(c.s, OP_PUSHR, R_RBP);
- } else if strcmp(d.name, "_kstart") == 0 {
- emit_kstart(c.s);
- }
-
- //fputc(nil, '\n');
- //fputs(nil, d.name);
- //irshow(nil, ic.blocks[0]);
-
- // Setup the frame
- as_opr(ic.s, OP_PUSHR, R_RBP);
- as_modrr(ic.s, OP_MOVE, R_RBP, R_RSP);
-
- // Allocate local variables
- output_irvars(ic);
-
- // Output all blocks
- output_irblock(ic, ic.blocks[0]);
-
- // Clear the marks
- irreset(ic.blocks[0]);
-}
-
-func output_irvars(ic: *irfunc) {
- var offset: int;
- var size: int;
- var i: int;
- var v: *irvar;
-
- // Allocate local variables
- offset = 0;
- i = 0;
- loop {
- if i == ic.vars_len {
- break;
- }
-
- v = ic.vars[i];
-
- if v.dead {
- i = i + 1;
- continue;
- }
-
- if v.t && v.t.kind != TY_VOID {
- size = type_sizeof(ic.c, v.t);
- } else {
- size = sizeof(i);
- }
-
- size = (size + 7) & -8;
-
- offset = offset + size;
-
- v.offset = -offset;
-
- i = i + 1;
- }
-
- // Zero initialize local variables
- if offset != 0 {
- as_modri(ic.s, OP_SUBI, R_RSP, offset);
-
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
-
- i = 0;
- loop {
- if i == offset {
- break;
- }
-
- i = i + 8;
-
- as_modrm(ic.s, OP_STORE, R_RAX, R_RBP, 0, 0, -i);
- }
- }
-
- // Save parameters
- i = 0;
- loop {
- if i == ic.arg_count {
- break;
- }
-
- v = ic.vars[i];
-
- if i == 0 {
- as_modrm(ic.s, OP_STORE, R_RDI, R_RBP, 0, 0, v.offset);
- } else if i == 1 {
- as_modrm(ic.s, OP_STORE, R_RSI, R_RBP, 0, 0, v.offset);
- } else if i == 2 {
- as_modrm(ic.s, OP_STORE, R_RDX, R_RBP, 0, 0, v.offset);
- } else if i == 3 {
- as_modrm(ic.s, OP_STORE, R_RCX, R_RBP, 0, 0, v.offset);
- } else if i == 4 {
- as_modrm(ic.s, OP_STORE, R_R8, R_RBP, 0, 0, v.offset);
- } else if i == 5 {
- as_modrm(ic.s, OP_STORE, R_R9, R_RBP, 0, 0, v.offset);
- } else {
- // Stack argument
- as_modrm(ic.s, OP_LOAD, R_RAX, R_RBP, 0, 0, (i - 6 + 2) * sizeof(i));
- as_modrm(ic.s, OP_STORE, R_RAX, R_RBP, 0, 0, v.offset);
- }
-
- i = i + 1;
- }
-}
-
-func output_irblock(ic: *irfunc, b: *irblock) {
- var op: *irop;
- var i: int;
-
- b.mark = 1;
-
- if !b.done {
- cdie(ic.c, "no return in function");
- }
-
- fixup_label(ic.s, b.label);
-
- i = 0;
- loop {
- if i == b.ops_len {
- break;
- }
-
- op = b.ops[i];
-
- output_irstmt(ic, b, op);
-
- i = i + 1;
- }
-}
-
-func output_irstmt(ic: *irfunc, b: *irblock, o: *irop) {
- var kind: int;
-
- ic.c.filename = o.filename;
- ic.c.lineno = o.lineno;
- ic.c.colno = o.colno;
- ic.s.filename = o.filename;
- ic.s.lineno = o.lineno;
-
- kind = o.kind;
- if kind == IOP_STORE {
- // Evaluate the address
- if o.a.kind == IOP_LOAD {
- output_irexpr(ic, b, o.a.a);
- } else if o.a.kind == IOP_VAR {
- as_modrm(ic.s, OP_LEA, R_RAX, R_RBP, 0, 0, ic.vars[o.a.n].offset);
- } else {
- die("invalid store");
- }
-
- as_opr(ic.s, OP_PUSHR, R_RAX);
-
- // Evaluate the value
- output_irexpr(ic, b, o.b);
-
- as_opr(ic.s, OP_POPR, R_RDI);
-
- // Execute the store
- if o.t.kind == TY_BYTE {
- as_modrm(ic.s, OP_STOREB, R_RAX, R_RDI, 0, 0, 0);
- } else if type_isprim(o.t) {
- as_modrm(ic.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
- } else {
- cdie(ic.c, "invalid store");
- }
- } else if kind == IOP_RETVAL {
- // Do nothing
- } else if kind == IOP_ARG {
- // Do nothing
- } else if kind == IOP_CALL {
- // Allocate some space for the arguments
- if o.n > 6 {
- as_modri(ic.s, OP_SUBI, R_RSP, (o.n - 6) * sizeof(kind));
- }
-
- // Setup arguments
- output_irargs(ic, b, o);
-
- // Call the function
- if o.a.kind == IOP_FUNC {
- output_ircall(ic, b, o.a);
- } else {
- output_irexpr(ic, b, o.a);
- as_modr(ic.s, OP_ICALLM, R_RAX);
- }
-
- // Release space reserved for the arguments
- if o.n > 6 {
- as_modri(ic.s, OP_ADDI, R_RSP, (o.n - 6) * sizeof(kind));
- }
-
- // Save the return value
- output_irretval(ic, b, o);
-
- if b.out.mark {
- as_jmp(ic.s, OP_JMP, b.out.label);
- } else {
- output_irblock(ic, b.out);
- }
- return;
- } else if kind == IOP_JUMP {
- if b.out.mark {
- // Jump to an already output block
- as_jmp(ic.s, OP_JMP, b.out.label);
- } else {
- // Output a new block
- output_irblock(ic, b.out);
- }
- return;
- } else if kind == IOP_BRANCH {
- // Evaluate the condition and branch if zero
- output_irexpr(ic, b, o.a);
- as_modrr(ic.s, OP_TESTRM, R_RAX, R_RAX);
- as_jmp(ic.s, OP_JCC + CC_E, b.alt.label);
-
- // Then jump to the output
- if b.out.mark {
- as_jmp(ic.s, OP_JCC + CC_NE, b.out.label);
- } else {
- output_irblock(ic, b.out);
- }
-
- // And if we haven't already, output the alt branch
- if !b.alt.mark {
- output_irblock(ic, b.alt);
- }
-
- return;
- } else if kind == IOP_RETURN {
- // Evaluate the return expression and return
- if o.a {
- output_irexpr(ic, b, o.a);
- }
-
- as_modrr(ic.s, OP_MOVE, R_RSP, R_RBP);
- as_opr(ic.s, OP_POPR, R_RBP);
- as_op(ic.s, OP_RET);
- } else {
- // Evaluate and discard the result
- output_irexpr(ic, b, o);
- }
-}
-
-func output_irargs(ic: *irfunc, b: *irblock, o: *irop) {
- var i: int;
- var op: *irop;
-
- i = 0;
- loop {
- if i == b.ops_len {
- return;
- }
-
- op = b.ops[i];
- if op.kind == IOP_ARG {
- // Compute the value
- output_irexpr(ic, b, op.a);
-
- if op.n == 0 {
- as_modrr(ic.s, OP_MOVE, R_RDI, R_RAX);
- } else if op.n == 1 {
- as_modrr(ic.s, OP_MOVE, R_RSI, R_RAX);
- } else if op.n == 2 {
- as_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
- } else if op.n == 3 {
- as_modrr(ic.s, OP_MOVE, R_RCX, R_RAX);
- } else if op.n == 4 {
- as_modrr(ic.s, OP_MOVE, R_R8, R_RAX);
- } else if op.n == 5 {
- as_modrr(ic.s, OP_MOVE, R_R9, R_RAX);
- } else {
- // Stack argument
- as_modrm(ic.s, OP_STORE, R_RAX, R_RSP, 0, 0, (op.n - 6) * sizeof(i));
- }
- }
-
- i = i + 1;
- }
-}
-
-func output_irretval(ic: *irfunc, b: *irblock, o: *irop) {
- var i: int;
- var op: *irop;
-
- // Find the retval place
- op = nil;
- i = 0;
- loop {
- if i == b.ops_len {
- return;
- }
-
- op = b.ops[i];
- if op.kind == IOP_RETVAL {
- break;
- }
-
- i = i + 1;
- }
-
- // Do nothing if there was no return value
- if op.t.kind == TY_VOID {
- return;
- }
-
- // Save the value
- as_modrr(ic.s, OP_MOVE, R_RDI, R_RAX);
-
- // Compute the address
- if op.a.kind == IOP_LOAD {
- output_irexpr(ic, b, op.a.a);
- } else if op.a.kind == IOP_VAR {
- as_modrm(ic.s, OP_LEA, R_RAX, R_RBP, 0, 0, ic.vars[op.a.n].offset);
- } else {
- die("invalid store");
- }
-
- // Execute the store
- if op.t.kind == TY_BYTE {
- as_modrm(ic.s, OP_STOREB, R_RDI, R_RAX, 0, 0, 0);
- } else if type_isprim(op.t) {
- as_modrm(ic.s, OP_STORE, R_RDI, R_RAX, 0, 0, 0);
- } else {
- cdie(ic.c, "invalid store");
- }
-}
-
-func output_irstr(ic: *irfunc, b: *irblock, o: *irop) {
- var s: *label;
-
- s = as_blob(ic.s, o.s, o.slen + 1);
-
- reserve(ic.s, 16);
- as_modrm(ic.s, OP_LEA, R_RAX, R_RIP, 0, 0, 128);
- addfixup(ic.s, s);
-}
-
-func output_irfuncptr(ic: *irfunc, b: *irblock, o: *irop) {
- var d: *decl;
-
- d = find(ic.c, o.s, nil, 0);
-
- if !d || !d.func_defined {
- cdie(ic.c, "no such function");
- }
-
- reserve(ic.s, 16);
- as_modrm(ic.s, OP_LEA, R_RAX, R_RIP, 0, 0, 128);
- addfixup(ic.s, d.func_label);
-}
-
-func output_ircall(ic: *irfunc, b: *irblock, o: *irop) {
- var d: *decl;
-
- d = find(ic.c, o.s, nil, 0);
-
- if !d || !d.func_defined {
- cdie(ic.c, "no such function");
- }
-
- as_jmp(ic.s, OP_CALL, d.func_label);
-}
-
-func output_irexpr(ic: *irfunc, b: *irblock, o: *irop) {
- var kind: int;
-
- if !o {
- cdie(ic.c, "no expr");
- }
-
- kind = o.kind;
- if kind == IOP_VAR {
- as_modrm(ic.s, OP_LOAD, R_RAX, R_RBP, 0, 0, ic.vars[o.n].offset);
- } else if kind == IOP_VARREF {
- as_modrm(ic.s, OP_LEA, R_RAX, R_RBP, 0, 0, ic.vars[o.n].offset);
- } else if kind == IOP_FUNC {
- output_irfuncptr(ic, b, o);
- } else if kind == IOP_CONST {
- if o.n == 0 {
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
- } else if o.n < (-1 >> 33) && o.n >= (-1 << 31) {
- as_modri(ic.s, OP_MOVI, R_RAX, o.n);
- } else {
- as_opri64(ic.s, OP_MOVABS, R_RAX, o.n);
- }
- } else if kind == IOP_STR {
- output_irstr(ic, b, o);
- } else if kind == IOP_LOAD {
- output_irexpr(ic, b, o.a);
- if o.t.kind == TY_BYTE {
- as_modrr(ic.s, OP_MOVE, R_RSI, R_RAX);
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
- as_modrm(ic.s, OP_LOADB, R_RAX, R_RSI, 0, 0, 0);
- } else if type_isprim(o.t) {
- as_modrm(ic.s, OP_LOAD, R_RAX, R_RAX, 0, 0, 0);
- } else {
- cdie(ic.c, "invalid load");
- }
- } else if kind == IOP_NEG {
- output_irexpr(ic, b, o.a);
- as_modr(ic.s, OP_NEGM, R_RAX);
- } else if kind == IOP_NOT {
- output_irexpr(ic, b, o.a);
- as_modr(ic.s, OP_NOTM, R_RAX);
- } else if kind == IOP_ADD {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_ADDRM, R_RAX, R_RCX);
- } else if kind == IOP_AND {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_ANDRM, R_RAX, R_RCX);
- } else if kind == IOP_OR {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_ORRM, R_RAX, R_RCX);
- } else if kind == IOP_XOR {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RCX);
- } else if kind == IOP_DIV {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_XORRM, R_RDX, R_RDX);
- as_modrr(ic.s, OP_TESTRM, R_RAX, R_RAX);
- as_modrr(ic.s, OP_SETCC + CC_S, 0, R_RDX);
- as_modr(ic.s, OP_NEGM, R_RDX);
- as_modr(ic.s, OP_IDIVM, R_RCX);
- } else if kind == IOP_MOD {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_XORRM, R_RDX, R_RDX);
- as_modrr(ic.s, OP_TESTRM, R_RAX, R_RAX);
- as_modrr(ic.s, OP_SETCC + CC_S, 0, R_RDX);
- as_modr(ic.s, OP_NEGM, R_RDX);
- as_modr(ic.s, OP_IDIVM, R_RCX);
- as_modrr(ic.s, OP_MOVE, R_RAX, R_RDX);
- } else if kind == IOP_LSH {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modr(ic.s, OP_SHLM, R_RAX);
- } else if kind == IOP_RSH {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modr(ic.s, OP_SHRM, R_RAX);
- } else if kind == IOP_MUL {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modr(ic.s, OP_IMULM, R_RCX);
- } else if kind == IOP_SUB {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_SUBRM, R_RAX, R_RCX);
- } else if kind == IOP_EQ {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
- as_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
- as_modrr(ic.s, OP_SETCC + CC_E, 0, R_RAX);
- } else if kind == IOP_NE {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
- as_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
- as_modrr(ic.s, OP_SETCC + CC_NE, 0, R_RAX);
- } else if kind == IOP_GT {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
- as_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
- as_modrr(ic.s, OP_SETCC + CC_G, 0, R_RAX);
- } else if kind == IOP_GE {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
- as_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
- as_modrr(ic.s, OP_SETCC + CC_GE, 0, R_RAX);
- } else if kind == IOP_LT {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
- as_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
- as_modrr(ic.s, OP_SETCC + CC_L, 0, R_RAX);
- } else if kind == IOP_LE {
- output_irexpr(ic, b, o.b);
- as_opr(ic.s, OP_PUSHR, R_RAX);
- output_irexpr(ic, b, o.a);
- as_opr(ic.s, OP_POPR, R_RCX);
- as_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
- as_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
- as_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
- as_modrr(ic.s, OP_SETCC + CC_LE, 0, R_RAX);
- } else {
- cdie(ic.c, "invalid op");
- }
-}
diff --git a/x86_64.om b/x86_64.om
@@ -0,0 +1,1853 @@
+enum {
+ R_RAX,
+ R_RCX,
+ R_RDX,
+ R_RBX,
+ R_RSP,
+ R_RBP,
+ R_RSI,
+ R_RDI,
+ R_R8,
+ R_R9,
+ R_R10,
+ R_R11,
+ R_R12,
+ R_R13,
+ R_R14,
+ R_R15,
+ R_RIP,
+
+ R_ES = 0,
+ R_CS = 1,
+ R_SS = 2,
+ R_DS = 3,
+ R_FS = 4,
+ R_GS = 5,
+
+ R_CR0 = 0,
+ R_CR1 = 1,
+ R_CR2 = 2,
+ R_CR3 = 3,
+ R_CR4 = 4,
+ R_CR5 = 5,
+ R_CR6 = 6,
+ R_CR7 = 7,
+}
+
+enum {
+ CC_O = 0x00,
+ CC_NO = 0x01,
+ CC_B = 0x02,
+ CC_AE = 0x03,
+ CC_E = 0x04,
+ CC_NE = 0x05,
+ CC_BE = 0x06,
+ CC_A = 0x07,
+ CC_S = 0x08,
+ CC_NS = 0x09,
+ CC_P = 0x0a,
+ CC_NP = 0x0b,
+ CC_L = 0x0c,
+ CC_GE = 0x0d,
+ CC_LE = 0x0e,
+ CC_G = 0x0f,
+}
+
+enum {
+ OP_GS = 0x65,
+ OP_OS = 0x66,
+
+ OP_CLD = 0xfc,
+ OP_CLI = 0xfa,
+ OP_STI = 0xfb,
+ OP_CPUID = 0x0fa2,
+ OP_IN = 0xec,
+ OP_IND = 0xed,
+ OP_OUT = 0xee,
+ OP_OUTD = 0xef,
+ OP_HLT = 0xf4,
+ OP_NOP = 0x90,
+ OP_WBINVD = 0x0f09,
+ OP_UD2 = 0x0f0b,
+
+ OP_INVLPGM = 0x070f01,
+ OP_LLDM = 0x020f00,
+ OP_LTRM = 0x030f00,
+
+ OP_WRSR = 0x8e,
+ OP_RDSR = 0x8c,
+
+ OP_RET = 0xc3,
+ OP_CALL = 0xe8,
+ OP_JMP = 0xe9,
+ OP_JCC = 0x0f80,
+ OP_SETCC = 0x0f90,
+
+ OP_PUSHF = 0x9c,
+ OP_POPF = 0x9d,
+ OP_IRET = 0xcf,
+ OP_IRETQ = 0x48cf,
+ OP_WRMSR = 0x0f30,
+ OP_RDMSR = 0x0f32,
+ OP_RDCRR = 0x0f20,
+ OP_WRCRR = 0x0f22,
+ OP_LGDTM = 0x020f01,
+ OP_LIDTM = 0x030f01,
+ OP_LLDTM = 0x020f00,
+
+ OP_ICALLM = 0x0200ff,
+
+ OP_NOTM = 0x0200f7,
+ OP_NEGM = 0x0300f7,
+
+ OP_ANDRM = 0x23,
+ OP_ORRM = 0x0b,
+ OP_CMPRM = 0x3b,
+ OP_TESTRM = 0x85,
+ OP_SUBRM = 0x2b,
+ OP_ADDRM = 0x03,
+ OP_ADCRM = 0x13,
+ OP_XORRM = 0x33,
+
+ OP_ANDI = 0x040081,
+ OP_ADDI = 0x000081,
+ OP_SUBI = 0x050081,
+ OP_ORI = 0x010081,
+ OP_CMPI = 0x070081,
+
+ OP_RDRAND = 0x060fc7,
+
+ OP_IMULM = 0x0400f7,
+ OP_IDIVM = 0x0700f7,
+ OP_SHLM = 0x0400d3,
+ OP_SHRM = 0x0500d3,
+
+ OP_PUSHR = 0x50,
+
+ OP_POPR = 0x58,
+
+ OP_MOVI = 0x00c7,
+ OP_MOVABS = 0xb8,
+
+ OP_SYSCALL = 0x0f05,
+ OP_SYSRET = 0x0f07,
+
+ OP_LEA = 0x8d,
+ OP_LOAD = 0x8b,
+ OP_LOADB = 0x8a,
+ OP_LOAD16 = 0x668a,
+ OP_STOREB = 0x88,
+ OP_STORE = 0x89,
+ OP_STORE16 = 0x6689,
+ OP_MOVE = 0x8b,
+}
+
+func x86_64_rex(a: *assembler, op: int, r: int, i: int, b: int) {
+ var w: int;
+ if a.bits32 {
+ return;
+ }
+ w = 0x08;
+ if op == OP_LOADB || op == OP_STOREB {
+ w = 0;
+ if r < 8 && i < 8 && b < 8 {
+ return;
+ }
+ }
+ as_emit(a, 0x40 + w + ((r >> 1) & 4) + ((i >> 2) & 2) + ((b >> 3) & 1));
+}
+
+func x86_64_op(a: *assembler, op: int) {
+ if op > 0xff {
+ as_emit(a, op >> 8);
+ as_emit(a, op);
+ } else {
+ as_emit(a, op);
+ }
+}
+
+// op + r
+func x86_64_opr(a: *assembler, op: int, r: int) {
+ if r < 0 || r > 15 {
+ die("invalid reg");
+ }
+ if (op != OP_PUSHR && op != OP_POPR) || r > 7 {
+ x86_64_rex(a, op, r, 0, 0);
+ }
+ x86_64_op(a, op + (r & 7));
+}
+
+func x86_64_opri64(a: *assembler, op: int, r: int, x: int) {
+ if op != OP_MOVABS {
+ die("only movabs");
+ }
+ x86_64_opr(a, op, r);
+ as_emit(a, x);
+ as_emit(a, x >> 8);
+ as_emit(a, x >> 16);
+ as_emit(a, x >> 24);
+ as_emit(a, x >> 32);
+ as_emit(a, x >> 40);
+ as_emit(a, x >> 48);
+ as_emit(a, x >> 56);
+}
+
+// modrm
+func x86_64_modrr(a: *assembler, op: int, r: int, b: int) {
+ if r < 0 || r > 15 || b < 0 || b > 15 {
+ die("invalid reg");
+ }
+ if (op != (OP_ICALLM & 0xffff) && (op & -16) != OP_SETCC) || b >= 8 {
+ x86_64_rex(a, op, r, 0, b);
+ }
+ x86_64_op(a, op);
+ as_emit(a, 0xc0 + ((r << 3) & 0x38) + (b & 0x07));
+}
+
+// modrm /op
+func x86_64_modr(a: *assembler, op: int, b: int) {
+ x86_64_modrr(a, op & 0xffff, op >> 16, b);
+}
+
+// modrm + disp
+func x86_64_modra(a: *assembler, op: int, r: int, d: int) {
+ x86_64_rex(a, op, r, 0, 0);
+ x86_64_op(a, op);
+ as_emit(a, ((r << 3) & 0x38) + R_RSP);
+ as_emit(a, (R_RSP << 3) + R_RBP);
+ as_emit(a, d);
+ as_emit(a, d >> 8);
+ as_emit(a, d >> 16);
+ as_emit(a, d >> 24);
+}
+
+// modrm + sib + disp
+func x86_64_modrm(a: *assembler, op: int, r: int, b: int, i: int, s: int, d: int) {
+ var sib: int;
+ var mod: int;
+ var rm: int;
+ var dw: int;
+
+ if r < 0 || r > 15 {
+ die("invalid reg");
+ }
+
+ rm = (r << 3) & 0x38;
+
+ if d != 0 {
+ if d >= -128 && d <= 127 {
+ mod = 1;
+ dw = 1;
+ } else {
+ mod = 2;
+ dw = 4;
+ }
+ } else {
+ mod = 0;
+ dw = 0;
+ }
+
+ if mod == 0 {
+ if b < 0 || b > 16 {
+ die("invalid reg");
+ }
+
+ if s {
+ if b == R_RIP {
+ die("invalid base");
+ }
+
+ if i == R_RSP {
+ die("invalid index");
+ }
+
+ rm = rm + R_RSP;
+ } else {
+ if i != 0 {
+ die("invalid index");
+ }
+
+ if b == R_RIP {
+ mod = 0;
+ dw = 4;
+ rm = rm + R_RBP;
+ } else if b == R_RSP || b == R_R12 {
+ s = 1;
+ i = R_RSP;
+ rm = rm + R_RSP;
+ } else if b == R_RBP || b == R_R13 {
+ mod = 1;
+ dw = 1;
+ rm = rm + R_RBP;
+ } else {
+ rm = rm + (b & 7);
+ }
+ }
+ } else {
+ if b < 0 || b > 16 || i < 0 || i > 15 {
+ die("invalid reg");
+ }
+
+ if s {
+ if b == R_RIP {
+ die("invalid base");
+ }
+
+ if i == R_RSP {
+ die("invalid index");
+ }
+
+ rm = rm + R_RSP;
+ } else {
+ if i != 0 {
+ die("invalid index");
+ }
+
+ if b == R_RIP {
+ mod = 0;
+ dw = 4;
+ rm = rm + R_RBP;
+ } else if b == R_RSP || b == R_R12 {
+ s = 1;
+ i = R_RSP;
+ rm = rm + R_RSP;
+ } else {
+ rm = rm + (b & 7);
+ }
+ }
+ }
+
+ x86_64_rex(a, op, r, i, b);
+ x86_64_op(a, op);
+ as_emit(a, (mod << 6) + rm);
+
+ if s {
+ sib = ((i << 3) & 0x38) + (b & 0x07);
+ if s == 2 {
+ sib = sib + 0x40;
+ } else if s == 4 {
+ sib = sib + 0x80;
+ } else if s == 8 {
+ sib = sib + 0xc0;
+ } else if s != 1 {
+ die("invalid scale");
+ }
+ as_emit(a, sib);
+ }
+
+ if dw == 1 {
+ as_emit(a, d);
+ } else if dw == 4 {
+ as_emit(a, d);
+ as_emit(a, d >> 8);
+ as_emit(a, d >> 16);
+ as_emit(a, d >> 24);
+ }
+}
+
+// modrm /op
+func x86_64_modm(a: *assembler, op: int, b: int, i: int, s: int, d: int) {
+ x86_64_modrm(a, op & 0xffff, op >> 16, b, i, s, d);
+}
+
+func x86_64_modri(a: *assembler, op: int, r: int, x: int) {
+ if x < -(1 << 31) || x >= (1 << 31) {
+ die("immediate too large");
+ }
+ x86_64_modrr(a, op & 0xffff, op >> 16, r);
+ as_emit(a, x);
+ as_emit(a, x >> 8);
+ as_emit(a, x >> 16);
+ as_emit(a, x >> 24);
+}
+
+func x86_64_jmp(a: *assembler, op: int, l: *label) {
+ reserve(a, 16);
+ x86_64_op(a, op);
+ as_emit(a, 0);
+ as_emit(a, 0);
+ as_emit(a, 0);
+ as_emit(a, 0);
+ addfixup(a, l, FIXUP_DISP32);
+}
+
+func x86_64_ssr(c: *compiler) {
+ var d: *decl;
+ var v: *decl;
+
+ v = find(c, "global", "_save", 0);
+ if (!v || !v.member_defined) {
+ cdie(c, "no _save");
+ }
+
+ // Save the current stack
+ as_emit(c.s, OP_GS);
+ x86_64_modra(c.s, OP_STORE, R_RSP, v.member_offset);
+
+ v = find(c, "global", "curtask", 0);
+ if (!v || !v.member_defined) {
+ cdie(c, "no global.curtask");
+ }
+
+ // Load the current task
+ as_emit(c.s, OP_GS);
+ x86_64_modra(c.s, OP_LOAD, R_RSP, v.member_offset);
+
+ v = find(c, "task", "stack", 0);
+ if (!v || !v.member_defined) {
+ cdie(c, "no task.stack");
+ }
+
+ // Load the kernel stack but reserve some space for the regs struct
+ x86_64_modrm(c.s, OP_LOAD, R_RSP, R_RSP, 0, 0, v.member_offset);
+ x86_64_modri(c.s, OP_ADDI, R_RSP, 4096 - 176);
+
+ // Save general purpose registers
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
+ x86_64_modrm(c.s, OP_STORE, R_RDX, R_RSP, 0, 0, 16);
+ x86_64_modrm(c.s, OP_STORE, R_RBX, R_RSP, 0, 0, 24);
+ x86_64_modrm(c.s, OP_STORE, R_RBP, R_RSP, 0, 0, 40);
+ x86_64_modrm(c.s, OP_STORE, R_RSI, R_RSP, 0, 0, 48);
+ x86_64_modrm(c.s, OP_STORE, R_RDI, R_RSP, 0, 0, 56);
+ x86_64_modrm(c.s, OP_STORE, R_R8, R_RSP, 0, 0, 64);
+ x86_64_modrm(c.s, OP_STORE, R_R9, R_RSP, 0, 0, 72);
+ x86_64_modrm(c.s, OP_STORE, R_R10, R_RSP, 0, 0, 80);
+ x86_64_modrm(c.s, OP_STORE, R_R12, R_RSP, 0, 0, 96);
+ x86_64_modrm(c.s, OP_STORE, R_R13, R_RSP, 0, 0, 104);
+ x86_64_modrm(c.s, OP_STORE, R_R14, R_RSP, 0, 0, 112);
+ x86_64_modrm(c.s, OP_STORE, R_R15, R_RSP, 0, 0, 120);
+ x86_64_modrm(c.s, OP_STORE, R_RCX, R_RSP, 0, 0, 128);
+ x86_64_modrm(c.s, OP_STORE, R_R11, R_RSP, 0, 0, 136);
+
+ // Clear rcx, r11, trap, err
+ x86_64_modrr(c.s, OP_XORRM, R_RAX, R_RAX);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 8);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 88);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 160);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 168);
+
+ // Save cs and ds
+ x86_64_modri(c.s, OP_MOVI, R_RAX, 43);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 144);
+ x86_64_modri(c.s, OP_MOVI, R_RAX, 35);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 152);
+
+ v = find(c, "global", "_save", 0);
+ if (!v || !v.member_defined) {
+ cdie(c, "no _save");
+ }
+
+ // Save the saved stack and switch back
+ as_emit(c.s, OP_GS);
+ x86_64_modra(c.s, OP_LOAD, R_RAX, v.member_offset);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 32);
+ x86_64_modrr(c.s, OP_MOVE, R_RAX, R_RSP);
+
+ // Create a frame
+ x86_64_modrr(c.s, OP_XORRM, R_RBP, R_RBP);
+ x86_64_opr(c.s, OP_PUSHR, R_RBP);
+ x86_64_opr(c.s, OP_PUSHR, R_RBP);
+ x86_64_modrr(c.s, OP_MOVE, R_RBP, R_RSP);
+
+ x86_64_modrr(c.s, OP_MOVE, R_RDI, R_RAX);
+
+ // Call _ssr
+ d = find(c, "_ssr", nil, 1);
+ if (d.func_defined && d.func_label.fixed) {
+ x86_64_jmp(c.s, OP_CALL, d.func_label);
+ }
+
+ x86_64_op(c.s, OP_CLI);
+
+ // Delete the frame
+ x86_64_modri(c.s, OP_ADDI, R_RSP, 2 * 8);
+
+ // Restore the old registers
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RSP, 0, 0, 0);
+ x86_64_modrm(c.s, OP_LOAD, R_RDX, R_RSP, 0, 0, 16);
+ x86_64_modrm(c.s, OP_LOAD, R_RBX, R_RSP, 0, 0, 24);
+ x86_64_modrm(c.s, OP_LOAD, R_RBP, R_RSP, 0, 0, 40);
+ x86_64_modrm(c.s, OP_LOAD, R_RSI, R_RSP, 0, 0, 48);
+ x86_64_modrm(c.s, OP_LOAD, R_RDI, R_RSP, 0, 0, 56);
+ x86_64_modrm(c.s, OP_LOAD, R_R8, R_RSP, 0, 0, 64);
+ x86_64_modrm(c.s, OP_LOAD, R_R9, R_RSP, 0, 0, 72);
+ x86_64_modrm(c.s, OP_LOAD, R_R10, R_RSP, 0, 0, 80);
+ x86_64_modrm(c.s, OP_LOAD, R_R12, R_RSP, 0, 0, 96);
+ x86_64_modrm(c.s, OP_LOAD, R_R13, R_RSP, 0, 0, 104);
+ x86_64_modrm(c.s, OP_LOAD, R_R14, R_RSP, 0, 0, 112);
+ x86_64_modrm(c.s, OP_LOAD, R_R15, R_RSP, 0, 0, 120);
+
+ x86_64_modrm(c.s, OP_LOAD, R_RCX, R_RSP, 0, 0, 128);
+ x86_64_modrm(c.s, OP_LOAD, R_R11, R_RSP, 0, 0, 136);
+
+ x86_64_modrm(c.s, OP_LOAD, R_RSP, R_RSP, 0, 0, 32);
+
+ // Return to the user
+ x86_64_rex(c.s, OP_SYSRET, 0, 0, 0);
+ x86_64_op(c.s, OP_SYSRET);
+}
+
+func x86_64_isr(c: *compiler) {
+ var d: *decl;
+ var out: *label;
+ var i: int;
+
+ out = mklabel(c.s);
+
+ i = 0;
+ loop {
+ if i == 256 {
+ break;
+ }
+ reserve(c.s, 16);
+
+ if i == 8 || i == 10 || i == 11 || i == 12
+ || i == 13 || i == 14 || i == 17 || i == 21
+ || i == 29 || i == 30 {
+ // nop
+ as_emit(c.s, 0x90);
+ as_emit(c.s, 0x90);
+ } else {
+ // push 0
+ as_emit(c.s, 0x6a);
+ as_emit(c.s, 0x00);
+ }
+
+ // push i
+ as_emit(c.s, 0x68);
+ as_emit(c.s, i);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+
+ // jmp out
+ as_emit(c.s, 0xe9);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ addfixup(c.s, out, FIXUP_DISP32);
+
+ // Align to 16
+ as_emit(c.s, 0x90);
+ as_emit(c.s, 0x90);
+ as_emit(c.s, 0x90);
+ as_emit(c.s, 0x90);
+
+ i = i + 1;
+ }
+
+ fixup_label(c.s, out);
+
+ // Allocate a regs struct
+ x86_64_modri(c.s, OP_SUBI, R_RSP, 176);
+
+ // Save rbp and use it as the regs pointer
+ x86_64_modrm(c.s, OP_STORE, R_RBP, R_RSP, 0, 0, 40);
+ x86_64_modrr(c.s, OP_MOVE, R_RBP, R_RSP);
+
+ // Save general purpose registers
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
+ x86_64_modrm(c.s, OP_STORE, R_RCX, R_RBP, 0, 0, 8);
+ x86_64_modrm(c.s, OP_STORE, R_RDX, R_RBP, 0, 0, 16);
+ x86_64_modrm(c.s, OP_STORE, R_RBX, R_RBP, 0, 0, 24);
+ x86_64_modrm(c.s, OP_STORE, R_RSI, R_RBP, 0, 0, 48);
+ x86_64_modrm(c.s, OP_STORE, R_RDI, R_RBP, 0, 0, 56);
+ x86_64_modrm(c.s, OP_STORE, R_R8, R_RBP, 0, 0, 64);
+ x86_64_modrm(c.s, OP_STORE, R_R9, R_RBP, 0, 0, 72);
+ x86_64_modrm(c.s, OP_STORE, R_R10, R_RBP, 0, 0, 80);
+ x86_64_modrm(c.s, OP_STORE, R_R11, R_RBP, 0, 0, 88);
+ x86_64_modrm(c.s, OP_STORE, R_R12, R_RBP, 0, 0, 96);
+ x86_64_modrm(c.s, OP_STORE, R_R13, R_RBP, 0, 0, 104);
+ x86_64_modrm(c.s, OP_STORE, R_R14, R_RBP, 0, 0, 112);
+ x86_64_modrm(c.s, OP_STORE, R_R15, R_RBP, 0, 0, 120);
+
+ // trap
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 0);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 160);
+ // err
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 8);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 168);
+ // rip
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 16);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 128);
+ // cs
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 24);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 144);
+ // flags
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 32);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 136);
+ // rsp
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 40);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 32);
+ // ss
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 48);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 152);
+
+ // Call _isr
+ x86_64_modrr(c.s, OP_MOVE, R_RDI, R_RBP);
+ d = find(c, "_isr", nil, 1);
+ if (d.func_defined && d.func_label.fixed) {
+ x86_64_jmp(c.s, OP_CALL, d.func_label);
+ }
+
+ // rip
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 128);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 16);
+ // cs
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 144);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 24);
+ // flags
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 136);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 32);
+ // rsp
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 32);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 40);
+ // ss
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 152);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 48);
+
+ // Restore general purpose registers
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 0);
+ x86_64_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 8);
+ x86_64_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ x86_64_modrm(c.s, OP_LOAD, R_RBX, R_RBP, 0, 0, 24);
+ x86_64_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 48);
+ x86_64_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 56);
+ x86_64_modrm(c.s, OP_LOAD, R_R8, R_RBP, 0, 0, 64);
+ x86_64_modrm(c.s, OP_LOAD, R_R9, R_RBP, 0, 0, 72);
+ x86_64_modrm(c.s, OP_LOAD, R_R10, R_RBP, 0, 0, 80);
+ x86_64_modrm(c.s, OP_LOAD, R_R11, R_RBP, 0, 0, 88);
+ x86_64_modrm(c.s, OP_LOAD, R_R12, R_RBP, 0, 0, 96);
+ x86_64_modrm(c.s, OP_LOAD, R_R13, R_RBP, 0, 0, 104);
+ x86_64_modrm(c.s, OP_LOAD, R_R14, R_RBP, 0, 0, 112);
+ x86_64_modrm(c.s, OP_LOAD, R_R15, R_RBP, 0, 0, 120);
+
+ // Restore rbp
+ x86_64_modrm(c.s, OP_LOAD, R_RBP, R_RBP, 0, 0, 40);
+
+ // Clean up regs + trap + err
+ x86_64_modri(c.s, OP_ADDI, R_RSP, 176 + 2 * 8);
+
+ x86_64_op(c.s, OP_IRETQ);
+}
+
+func x86_64_builtin(c: *compiler) {
+ var d: *decl;
+
+ d = find(c, "syscall", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RAX, R_RDI);
+ x86_64_modrr(c.s, OP_MOVE, R_RDI, R_RSI);
+ x86_64_modrr(c.s, OP_MOVE, R_RSI, R_RDX);
+ x86_64_modrr(c.s, OP_MOVE, R_RDX, R_RCX);
+ x86_64_modrr(c.s, OP_MOVE, R_R10, R_R8);
+ x86_64_modrr(c.s, OP_MOVE, R_R8, R_R9);
+ x86_64_modrm(c.s, OP_LOAD, R_R9, R_RSP, 0, 0, 8);
+ x86_64_op(c.s, OP_SYSCALL);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_restorer", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modri(c.s, OP_MOVI, R_RAX, 15);
+ x86_64_op(c.s, OP_SYSCALL);
+ }
+
+ d = find(c, "_include", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_op(c.s, OP_UD2);
+ }
+
+ d = find(c, "ud2", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_op(c.s, OP_UD2);
+ }
+
+ d = find(c, "cpuid", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_opr(c.s, OP_PUSHR, R_RCX);
+ x86_64_opr(c.s, OP_PUSHR, R_RDX);
+ x86_64_opr(c.s, OP_PUSHR, R_RSI);
+ x86_64_opr(c.s, OP_PUSHR, R_RDI);
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RDI, 0, 0, 0);
+ x86_64_modrm(c.s, OP_LOAD, R_RCX, R_RSI, 0, 0, 0);
+ x86_64_modrm(c.s, OP_LOAD, R_RDX, R_RDX, 0, 0, 0);
+ x86_64_modrm(c.s, OP_LOAD, R_RBX, R_RCX, 0, 0, 0);
+ x86_64_op(c.s, OP_CPUID);
+ x86_64_opr(c.s, OP_POPR, R_RDI);
+ x86_64_opr(c.s, OP_POPR, R_RSI);
+ x86_64_opr(c.s, OP_POPR, R_RDX);
+ x86_64_opr(c.s, OP_POPR, R_RCX);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
+ x86_64_modrm(c.s, OP_STORE, R_RCX, R_RSI, 0, 0, 0);
+ x86_64_modrm(c.s, OP_STORE, R_RDX, R_RDX, 0, 0, 0);
+ x86_64_modrm(c.s, OP_STORE, R_RBX, R_RCX, 0, 0, 0);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "inb", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
+ x86_64_op(c.s, OP_IN);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "outb", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
+ x86_64_modrr(c.s, OP_MOVE, R_RAX, R_RSI);
+ x86_64_op(c.s, OP_OUT);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "inw", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
+ as_emit(c.s, OP_OS);
+ x86_64_op(c.s, OP_IND);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "outw", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
+ x86_64_modrr(c.s, OP_MOVE, R_RAX, R_RSI);
+ as_emit(c.s, OP_OS);
+ x86_64_op(c.s, OP_OUTD);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "ind", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
+ x86_64_op(c.s, OP_IND);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "outd", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RDX, R_RDI);
+ x86_64_modrr(c.s, OP_MOVE, R_RAX, R_RSI);
+ x86_64_op(c.s, OP_OUTD);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "rdmsr", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RCX, R_RDI);
+ x86_64_op(c.s, OP_RDMSR);
+ x86_64_modri(c.s, OP_MOVI, R_RCX, 32);
+ x86_64_modr(c.s, OP_SHLM, R_RDX);
+ x86_64_modrr(c.s, OP_ORRM, R_RAX, R_RDX);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "wrmsr", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_MOVE, R_RAX, R_RSI);
+ x86_64_modrr(c.s, OP_MOVE, R_RDX, R_RSI);
+ x86_64_modri(c.s, OP_MOVI, R_RCX, 32);
+ x86_64_modr(c.s, OP_SHRM, R_RDX);
+ x86_64_modrr(c.s, OP_MOVE, R_RCX, R_RDI);
+ x86_64_op(c.s, OP_WRMSR);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "rdcr0", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_RDCRR, R_CR0, R_RAX);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "wrcr0", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_WRCRR, R_CR0, R_RDI);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "rdcr2", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_RDCRR, R_CR2, R_RAX);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "wrcr2", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_WRCRR, R_CR2, R_RDI);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "rdcr3", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_RDCRR, R_CR3, R_RAX);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "wrcr3", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_WRCRR, R_CR3, R_RDI);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "rdcr4", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_RDCRR, R_CR4, R_RAX);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "wrcr4", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_WRCRR, R_CR4, R_RDI);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "lgdt", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modri(c.s, OP_SUBI, R_RSP, 16);
+ x86_64_modri(c.s, OP_SUBI, R_RSI, 1);
+ x86_64_modrm(c.s, OP_STORE, R_RSI, R_RSP, 0, 0, 0);
+ x86_64_modrm(c.s, OP_STORE, R_RDI, R_RSP, 0, 0, 2);
+ x86_64_modm(c.s, OP_LGDTM, R_RSP, 0, 0, 0);
+ x86_64_modri(c.s, OP_ADDI, R_RSP, 16);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "lidt", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modri(c.s, OP_SUBI, R_RSP, 16);
+ x86_64_modri(c.s, OP_SUBI, R_RSI, 1);
+ x86_64_modrm(c.s, OP_STORE, R_RSI, R_RSP, 0, 0, 0);
+ x86_64_modrm(c.s, OP_STORE, R_RDI, R_RSP, 0, 0, 2);
+ x86_64_modm(c.s, OP_LIDTM, R_RSP, 0, 0, 0);
+ x86_64_modri(c.s, OP_ADDI, R_RSP, 16);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "lldt", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modr(c.s, OP_LLDTM, R_RDI);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "ltr", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modr(c.s, OP_LTRM, R_RDI);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "lseg", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_opr(c.s, OP_PUSHR, R_RBP);
+ x86_64_modrr(c.s, OP_MOVE, R_RBP, R_RSP);
+ // es ds fs gs
+ x86_64_modrr(c.s, OP_WRSR, R_ES, R_RSI);
+ x86_64_modrr(c.s, OP_WRSR, R_DS, R_RSI);
+ x86_64_modrr(c.s, OP_WRSR, R_FS, R_RSI);
+ x86_64_modrr(c.s, OP_WRSR, R_GS, R_RSI);
+ // ss
+ x86_64_opr(c.s, OP_PUSHR, R_RSI);
+ // rsp
+ x86_64_opr(c.s, OP_PUSHR, R_RBP);
+ // flags
+ x86_64_op(c.s, OP_PUSHF);
+ // cs
+ x86_64_opr(c.s, OP_PUSHR, R_RDI);
+ // rip
+ x86_64_op(c.s, OP_CALL);
+ as_emit(c.s, 5);
+ as_emit(c.s, 0);
+ as_emit(c.s, 0);
+ as_emit(c.s, 0);
+ x86_64_op(c.s, OP_JMP);
+ as_emit(c.s, 2);
+ as_emit(c.s, 0);
+ as_emit(c.s, 0);
+ as_emit(c.s, 0);
+ x86_64_op(c.s, OP_IRETQ);
+ x86_64_opr(c.s, OP_POPR, R_RBP);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "hlt", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_op(c.s, OP_HLT);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "cli", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_op(c.s, OP_CLI);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "sti", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_op(c.s, OP_STI);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "rdflags", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_op(c.s, OP_PUSHF);
+ x86_64_opr(c.s, OP_POPR, R_RAX);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "wrflags", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_opr(c.s, OP_PUSHR, R_RDI);
+ x86_64_op(c.s, OP_POPF);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "wbinvld", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modm(c.s, OP_WBINVD, R_RDI, 0, 0, 0);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "invlpg", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modm(c.s, OP_INVLPGM, R_RDI, 0, 0, 0);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_ssr0", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_ssr(c);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_isr0", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_isr(c);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_rgs", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 16);
+ as_emit(c.s, OP_GS);
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 0);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_r32", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ c.s.bits32 = 1;
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RDI, 0, 0, 0);
+ c.s.bits32 = 0;
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_w32", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ c.s.bits32 = 1;
+ x86_64_modrm(c.s, OP_STORE, R_RSI, R_RDI, 0, 0, 0);
+ c.s.bits32 = 0;
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_r16", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modrr(c.s, OP_XORRM, R_RAX, R_RAX);
+ c.s.bits32 = 1;
+ x86_64_modrm(c.s, OP_LOAD16, R_RAX, R_RDI, 0, 0, 0);
+ c.s.bits32 = 0;
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_w16", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ c.s.bits32 = 1;
+ x86_64_modrm(c.s, OP_STORE16, R_RSI, R_RDI, 0, 0, 0);
+ c.s.bits32 = 0;
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "_rdrand", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ x86_64_modr(c.s, OP_RDRAND, R_RAX);
+ x86_64_op(c.s, OP_RET);
+ }
+
+ d = find(c, "taskswitch", nil, 1);
+ if (d.func_defined && !d.func_label.fixed) {
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+
+ // save
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
+ x86_64_modrm(c.s, OP_STORE, R_RCX, R_RDI, 0, 0, 8);
+ x86_64_modrm(c.s, OP_STORE, R_RDX, R_RDI, 0, 0, 16);
+ x86_64_modrm(c.s, OP_STORE, R_RBX, R_RDI, 0, 0, 24);
+ x86_64_modrm(c.s, OP_STORE, R_RBP, R_RDI, 0, 0, 40);
+ x86_64_modrm(c.s, OP_STORE, R_RSI, R_RDI, 0, 0, 48);
+ x86_64_modrm(c.s, OP_STORE, R_RDI, R_RDI, 0, 0, 56);
+ x86_64_modrm(c.s, OP_STORE, R_R8, R_RDI, 0, 0, 64);
+ x86_64_modrm(c.s, OP_STORE, R_R9, R_RDI, 0, 0, 72);
+ x86_64_modrm(c.s, OP_STORE, R_R10, R_RDI, 0, 0, 80);
+ x86_64_modrm(c.s, OP_STORE, R_R11, R_RDI, 0, 0, 88);
+ x86_64_modrm(c.s, OP_STORE, R_R12, R_RDI, 0, 0, 96);
+ x86_64_modrm(c.s, OP_STORE, R_R13, R_RDI, 0, 0, 104);
+ x86_64_modrm(c.s, OP_STORE, R_R14, R_RDI, 0, 0, 112);
+ x86_64_modrm(c.s, OP_STORE, R_R15, R_RDI, 0, 0, 120);
+
+ // rip
+ x86_64_opr(c.s, OP_POPR, R_RAX);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 128);
+ // cs
+ x86_64_modrr(c.s, OP_RDSR, R_CS, R_RAX);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 144);
+ // flags
+ x86_64_op(c.s, OP_PUSHF);
+ x86_64_opr(c.s, OP_POPR, R_RAX);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 136);
+ // rsp
+ x86_64_modrm(c.s, OP_STORE, R_RSP, R_RDI, 0, 0, 32);
+ // ss
+ x86_64_modrr(c.s, OP_RDSR, R_SS, R_RAX);
+ x86_64_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 152);
+
+ // restore
+ x86_64_modrm(c.s, OP_STORE, R_RCX, R_RDI, 0, 0, 8);
+ x86_64_modrm(c.s, OP_STORE, R_RDX, R_RDI, 0, 0, 16);
+ x86_64_modrm(c.s, OP_STORE, R_RBX, R_RDI, 0, 0, 24);
+ x86_64_modrm(c.s, OP_STORE, R_RBP, R_RDI, 0, 0, 40);
+ x86_64_modrm(c.s, OP_STORE, R_RDI, R_RDI, 0, 0, 56);
+ x86_64_modrm(c.s, OP_STORE, R_R8, R_RDI, 0, 0, 64);
+ x86_64_modrm(c.s, OP_STORE, R_R9, R_RDI, 0, 0, 72);
+ x86_64_modrm(c.s, OP_STORE, R_R10, R_RDI, 0, 0, 80);
+ x86_64_modrm(c.s, OP_STORE, R_R11, R_RDI, 0, 0, 88);
+ x86_64_modrm(c.s, OP_STORE, R_R12, R_RDI, 0, 0, 96);
+ x86_64_modrm(c.s, OP_STORE, R_R13, R_RDI, 0, 0, 104);
+ x86_64_modrm(c.s, OP_STORE, R_R14, R_RDI, 0, 0, 112);
+ x86_64_modrm(c.s, OP_STORE, R_R15, R_RDI, 0, 0, 120);
+
+ // ss
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 152);
+ x86_64_opr(c.s, OP_PUSHR, R_RAX);
+ // rsp
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 32);
+ x86_64_opr(c.s, OP_PUSHR, R_RAX);
+ // flags
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 136);
+ x86_64_opr(c.s, OP_PUSHR, R_RAX);
+ // cs
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 144);
+ x86_64_opr(c.s, OP_PUSHR, R_RAX);
+ // rip
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 128);
+ x86_64_opr(c.s, OP_PUSHR, R_RAX);
+
+ // restore temporaries
+ x86_64_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 0);
+ x86_64_modrm(c.s, OP_LOAD, R_RSI, R_RSI, 0, 0, 40);
+
+ // iretq
+ x86_64_op(c.s, OP_IRETQ);
+ }
+}
+
+func x86_64_kstart(c: *assembler) {
+ var hang: *label;
+ var do_iret: *label;
+ var do_ret: *label;
+ var done: *label;
+
+ c.bits32 = 1;
+
+ hang = mklabel(c);
+ do_iret = mklabel(c);
+ do_ret = mklabel(c);
+ done = mklabel(c);
+
+ // Check for valid multiboot magic
+ x86_64_modri(c, OP_MOVI, R_RDX, 0x2badb002);
+ x86_64_modrr(c, OP_CMPRM, R_RAX, R_RDX);
+ x86_64_jmp(c, OP_JCC + CC_NE, hang);
+
+ // Setup an initial stack
+ x86_64_modri(c, OP_MOVI, R_RSP, 0x00300000); // FIXME bss
+
+ // Align stack to page
+ x86_64_modri(c, OP_ANDI, R_RSP, -0x1000);
+
+ // pt3 -> 1g
+ x86_64_modri(c, OP_SUBI, R_RSP, 0x1000);
+ x86_64_modri(c, OP_MOVI, R_RAX, 0x83);
+ x86_64_modri(c, OP_MOVI, R_RDX, 0);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
+ x86_64_modrm(c, OP_STORE, R_RDX, R_RSP, 0, 0, 4);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RSP, 0, 0, 510 * 8 + 0);
+ x86_64_modrm(c, OP_STORE, R_RDX, R_RSP, 0, 0, 510 * 8 + 4);
+
+ // pt4 -> pt3
+ x86_64_modrr(c, OP_MOVE, R_RAX, R_RSP);
+ x86_64_modri(c, OP_SUBI, R_RSP, 0x1000);
+ x86_64_modri(c, OP_ORI, R_RAX, 3);
+ x86_64_modri(c, OP_MOVI, R_RDX, 0);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
+ x86_64_modrm(c, OP_STORE, R_RDX, R_RSP, 0, 0, 4);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RSP, 0, 0, 511 * 8 + 0);
+ x86_64_modrm(c, OP_STORE, R_RDX, R_RSP, 0, 0, 511 * 8 + 4);
+
+ // Load page table pt4
+ x86_64_modrr(c, OP_WRCRR, R_CR3, R_RSP);
+
+ // Allocate space for the gdt
+ x86_64_modri(c, OP_SUBI, R_RSP, 64);
+ x86_64_modrr(c, OP_MOVE, R_RBP, R_RSP);
+
+ // Null Segment
+ x86_64_modri(c, OP_MOVI, R_RAX, 0x00000000);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 8);
+ x86_64_modri(c, OP_MOVI, R_RAX, 0x00000000);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 12);
+
+ // Kernel code segment
+ x86_64_modri(c, OP_MOVI, R_RAX, 0x00000000);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 16);
+ x86_64_modri(c, OP_MOVI, R_RAX, 0x00209800);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 20);
+
+ // Kernel data segment
+ x86_64_modri(c, OP_MOVI, R_RAX, 0x00000000);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 24);
+ x86_64_modri(c, OP_MOVI, R_RAX, 0x00009200);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 28);
+
+ // Load gdt
+ x86_64_modri(c, OP_MOVI, R_RAX, 23);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
+ x86_64_modrm(c, OP_LEA, R_RAX, R_RBP, 0, 0, 8);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 2);
+ x86_64_modm(c, OP_LGDTM, R_RBP, 0, 0, 0);
+
+ // Load null lldt
+ x86_64_modri(c, OP_MOVI, R_RAX, 0);
+ x86_64_modr(c, OP_LLDTM, R_RAX);
+
+ // Load null idt
+ x86_64_modm(c, OP_LIDTM, R_RBP, 0, 0, 8);
+
+ // Enable pae
+ x86_64_modri(c, OP_MOVI, R_RAX, 0xa0);
+ x86_64_modrr(c, OP_WRCRR, R_CR4, R_RAX);
+
+ // Enable long mode
+ x86_64_modri(c, OP_MOVI, R_RCX, (-1 << 32) + (0xc0 << 24) + 0x000080);
+ x86_64_op(c, OP_RDMSR);
+ x86_64_modri(c, OP_ORI, R_RAX, 0x100);
+ x86_64_op(c, OP_WRMSR);
+
+ // Enable paging
+ x86_64_modrr(c, OP_RDCRR, R_CR0, R_RAX);
+ x86_64_modri(c, OP_ORI, R_RAX, (-0x80000000) | 0x0001);
+ x86_64_modrr(c, OP_WRCRR, R_CR0, R_RAX);
+
+ // flags
+ x86_64_modri(c, OP_MOVI, R_RAX, 0);
+ x86_64_opr(c, OP_PUSHR, R_RAX);
+ // cs
+ x86_64_modri(c, OP_MOVI, R_RAX, 8);
+ x86_64_opr(c, OP_PUSHR, R_RAX);
+ // pointer
+ x86_64_jmp(c, OP_CALL, do_iret);
+
+ c.bits32 = 0;
+
+ // Jump to top half
+ x86_64_jmp(c, OP_CALL, do_ret);
+
+ // Reload the gdt in the top half
+ x86_64_modri(c, OP_ORI, R_RBP, -0x80000000);
+ x86_64_modri(c, OP_MOVI, R_RAX, 23);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
+ x86_64_modrm(c, OP_LEA, R_RAX, R_RBP, 0, 0, 8);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RBP, 0, 0, 2);
+ x86_64_modm(c, OP_LGDTM, R_RBP, 0, 0, 0);
+
+ // Reload segments
+ x86_64_modri(c, OP_MOVI, R_RAX, 16);
+ x86_64_modrr(c, OP_WRSR, R_ES, R_RAX);
+ x86_64_modrr(c, OP_WRSR, R_DS, R_RAX);
+ x86_64_modrr(c, OP_WRSR, R_FS, R_RAX);
+ x86_64_modrr(c, OP_WRSR, R_GS, R_RAX);
+ x86_64_modrr(c, OP_WRSR, R_SS, R_RAX);
+ x86_64_modrr(c, OP_MOVE, R_RSP, R_RSP);
+
+ // Reload stack in the top half
+ x86_64_modri(c, OP_ORI, R_RSP, -0x80000000);
+
+ // Kill the lower mapping
+ x86_64_modri(c, OP_MOVI, R_RAX, 0);
+ x86_64_modrm(c, OP_LEA, R_RDI, R_RBP, 0, 0, 64);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RDI, 0, 0, 4096);
+ x86_64_modrm(c, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
+ x86_64_modri(c, OP_ANDI, R_RDI, 0x7fffffff);
+ x86_64_modrr(c, OP_WRCRR, R_CR3, R_RDI);
+
+ // Setup a call frame for _kstart
+ x86_64_jmp(c, OP_JMP, done);
+
+ // hlt forever
+ fixup_label(c, hang);
+ x86_64_op(c, OP_CLI);
+ x86_64_op(c, OP_HLT);
+ x86_64_jmp(c, OP_JMP, hang);
+
+ // iret to long mode
+ fixup_label(c, do_iret);
+ x86_64_op(c, OP_IRET);
+
+ // ret to top half
+ fixup_label(c, do_ret);
+ x86_64_opr(c, OP_POPR, R_RAX);
+ x86_64_modri(c, OP_ORI, R_RAX, -0x80000000);
+ x86_64_opr(c, OP_PUSHR, R_RAX);
+ x86_64_op(c, OP_RET);
+
+ // Setup a call frame for _kstart
+ fixup_label(c, done);
+ x86_64_modrr(c, OP_XORRM, R_RBP, R_RBP);
+ x86_64_modrr(c, OP_MOVE, R_RDI, R_RBX);
+ x86_64_opr(c, OP_PUSHR, R_RBP);
+}
+
+func x86_64_output_ir(c: *compiler, d: *decl) {
+ var ic: *irfunc;
+
+ ic = d.func_ir;
+
+ ic.c.filename = ic.filename;
+ ic.c.lineno = ic.lineno;
+ ic.c.colno = ic.colno;
+ ic.s.filename = ic.filename;
+ ic.s.lineno = ic.lineno;
+
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+
+ if strcmp(d.name, "_start") == 0 {
+ x86_64_modrm(c.s, OP_LOAD, R_RDI, R_RSP, 0, 0, 0);
+ x86_64_modrm(c.s, OP_LEA, R_RSI, R_RSP, 0, 0, 8);
+ x86_64_modrm(c.s, OP_LEA, R_RDX, R_RSI, R_RDI, 8, 8);
+ x86_64_opr(c.s, OP_PUSHR, R_RBP);
+ } else if strcmp(d.name, "_kstart") == 0 {
+ x86_64_kstart(c.s);
+ }
+
+ //fputc(nil, '\n');
+ //fputs(nil, d.name);
+ //irshow(nil, ic.blocks[0]);
+
+ // Setup the frame
+ x86_64_opr(ic.s, OP_PUSHR, R_RBP);
+ x86_64_modrr(ic.s, OP_MOVE, R_RBP, R_RSP);
+
+ // Allocate local variables
+ x86_64_output_irvars(ic);
+
+ // Output all blocks
+ x86_64_output_irblock(ic, ic.blocks[0]);
+
+ // Clear the marks
+ irreset(ic.blocks[0]);
+}
+
+func x86_64_output_irvars(ic: *irfunc) {
+ var offset: int;
+ var size: int;
+ var i: int;
+ var v: *irvar;
+
+ // Allocate local variables
+ offset = 0;
+ i = 0;
+ loop {
+ if i == ic.vars_len {
+ break;
+ }
+
+ v = ic.vars[i];
+
+ if v.dead {
+ i = i + 1;
+ continue;
+ }
+
+ if v.t && v.t.kind != TY_VOID {
+ size = type_sizeof(ic.c, v.t);
+ } else {
+ size = sizeof(i);
+ }
+
+ size = (size + 7) & -8;
+
+ offset = offset + size;
+
+ v.offset = -offset;
+
+ i = i + 1;
+ }
+
+ // Zero initialize local variables
+ if offset != 0 {
+ x86_64_modri(ic.s, OP_SUBI, R_RSP, offset);
+
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+
+ i = 0;
+ loop {
+ if i == offset {
+ break;
+ }
+
+ i = i + 8;
+
+ x86_64_modrm(ic.s, OP_STORE, R_RAX, R_RBP, 0, 0, -i);
+ }
+ }
+
+ // Save parameters
+ i = 0;
+ loop {
+ if i == ic.arg_count {
+ break;
+ }
+
+ v = ic.vars[i];
+
+ if i == 0 {
+ x86_64_modrm(ic.s, OP_STORE, R_RDI, R_RBP, 0, 0, v.offset);
+ } else if i == 1 {
+ x86_64_modrm(ic.s, OP_STORE, R_RSI, R_RBP, 0, 0, v.offset);
+ } else if i == 2 {
+ x86_64_modrm(ic.s, OP_STORE, R_RDX, R_RBP, 0, 0, v.offset);
+ } else if i == 3 {
+ x86_64_modrm(ic.s, OP_STORE, R_RCX, R_RBP, 0, 0, v.offset);
+ } else if i == 4 {
+ x86_64_modrm(ic.s, OP_STORE, R_R8, R_RBP, 0, 0, v.offset);
+ } else if i == 5 {
+ x86_64_modrm(ic.s, OP_STORE, R_R9, R_RBP, 0, 0, v.offset);
+ } else {
+ // Stack argument
+ x86_64_modrm(ic.s, OP_LOAD, R_RAX, R_RBP, 0, 0, (i - 6 + 2) * sizeof(i));
+ x86_64_modrm(ic.s, OP_STORE, R_RAX, R_RBP, 0, 0, v.offset);
+ }
+
+ i = i + 1;
+ }
+}
+
+func x86_64_output_irblock(ic: *irfunc, b: *irblock) {
+ var op: *irop;
+ var i: int;
+
+ b.mark = 1;
+
+ if !b.done {
+ cdie(ic.c, "no return in function");
+ }
+
+ fixup_label(ic.s, b.label);
+
+ i = 0;
+ loop {
+ if i == b.ops_len {
+ break;
+ }
+
+ op = b.ops[i];
+
+ x86_64_output_irstmt(ic, b, op);
+
+ i = i + 1;
+ }
+}
+
+func x86_64_output_irstmt(ic: *irfunc, b: *irblock, o: *irop) {
+ var kind: int;
+
+ ic.c.filename = o.filename;
+ ic.c.lineno = o.lineno;
+ ic.c.colno = o.colno;
+ ic.s.filename = o.filename;
+ ic.s.lineno = o.lineno;
+
+ kind = o.kind;
+ if kind == IOP_STORE {
+ // Evaluate the address
+ if o.a.kind == IOP_LOAD {
+ x86_64_output_irexpr(ic, b, o.a.a);
+ } else if o.a.kind == IOP_VAR {
+ x86_64_modrm(ic.s, OP_LEA, R_RAX, R_RBP, 0, 0, ic.vars[o.a.n].offset);
+ } else {
+ die("invalid store");
+ }
+
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+
+ // Evaluate the value
+ x86_64_output_irexpr(ic, b, o.b);
+
+ x86_64_opr(ic.s, OP_POPR, R_RDI);
+
+ // Execute the store
+ if o.t.kind == TY_BYTE {
+ x86_64_modrm(ic.s, OP_STOREB, R_RAX, R_RDI, 0, 0, 0);
+ } else if type_isprim(o.t) {
+ x86_64_modrm(ic.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
+ } else {
+ cdie(ic.c, "invalid store");
+ }
+ } else if kind == IOP_RETVAL {
+ // Do nothing
+ } else if kind == IOP_ARG {
+ // Do nothing
+ } else if kind == IOP_CALL {
+ // Allocate some space for the arguments
+ if o.n > 6 {
+ x86_64_modri(ic.s, OP_SUBI, R_RSP, (o.n - 6) * sizeof(kind));
+ }
+
+ // Setup arguments
+ x86_64_output_irargs(ic, b, o);
+
+ // Call the function
+ if o.a.kind == IOP_FUNC {
+ x86_64_output_ircall(ic, b, o.a);
+ } else {
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_modr(ic.s, OP_ICALLM, R_RAX);
+ }
+
+ // Release space reserved for the arguments
+ if o.n > 6 {
+ x86_64_modri(ic.s, OP_ADDI, R_RSP, (o.n - 6) * sizeof(kind));
+ }
+
+ // Save the return value
+ x86_64_output_irretval(ic, b, o);
+
+ if b.out.mark {
+ x86_64_jmp(ic.s, OP_JMP, b.out.label);
+ } else {
+ x86_64_output_irblock(ic, b.out);
+ }
+ return;
+ } else if kind == IOP_JUMP {
+ if b.out.mark {
+ // Jump to an already output block
+ x86_64_jmp(ic.s, OP_JMP, b.out.label);
+ } else {
+ // Output a new block
+ x86_64_output_irblock(ic, b.out);
+ }
+ return;
+ } else if kind == IOP_BRANCH {
+ // Evaluate the condition and branch if zero
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_modrr(ic.s, OP_TESTRM, R_RAX, R_RAX);
+ x86_64_jmp(ic.s, OP_JCC + CC_E, b.alt.label);
+
+ // Then jump to the output
+ if b.out.mark {
+ x86_64_jmp(ic.s, OP_JCC + CC_NE, b.out.label);
+ } else {
+ x86_64_output_irblock(ic, b.out);
+ }
+
+ // And if we haven't already, output the alt branch
+ if !b.alt.mark {
+ x86_64_output_irblock(ic, b.alt);
+ }
+
+ return;
+ } else if kind == IOP_RETURN {
+ // Evaluate the return expression and return
+ if o.a {
+ x86_64_output_irexpr(ic, b, o.a);
+ }
+
+ x86_64_modrr(ic.s, OP_MOVE, R_RSP, R_RBP);
+ x86_64_opr(ic.s, OP_POPR, R_RBP);
+ x86_64_op(ic.s, OP_RET);
+ } else {
+ // Evaluate and discard the result
+ x86_64_output_irexpr(ic, b, o);
+ }
+}
+
+func x86_64_output_irargs(ic: *irfunc, b: *irblock, o: *irop) {
+ var i: int;
+ var op: *irop;
+
+ i = 0;
+ loop {
+ if i == b.ops_len {
+ return;
+ }
+
+ op = b.ops[i];
+ if op.kind == IOP_ARG {
+ // Compute the value
+ x86_64_output_irexpr(ic, b, op.a);
+
+ if op.n == 0 {
+ x86_64_modrr(ic.s, OP_MOVE, R_RDI, R_RAX);
+ } else if op.n == 1 {
+ x86_64_modrr(ic.s, OP_MOVE, R_RSI, R_RAX);
+ } else if op.n == 2 {
+ x86_64_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
+ } else if op.n == 3 {
+ x86_64_modrr(ic.s, OP_MOVE, R_RCX, R_RAX);
+ } else if op.n == 4 {
+ x86_64_modrr(ic.s, OP_MOVE, R_R8, R_RAX);
+ } else if op.n == 5 {
+ x86_64_modrr(ic.s, OP_MOVE, R_R9, R_RAX);
+ } else {
+ // Stack argument
+ x86_64_modrm(ic.s, OP_STORE, R_RAX, R_RSP, 0, 0, (op.n - 6) * sizeof(i));
+ }
+ }
+
+ i = i + 1;
+ }
+}
+
+func x86_64_output_irretval(ic: *irfunc, b: *irblock, o: *irop) {
+ var i: int;
+ var op: *irop;
+
+ // Find the retval place
+ op = nil;
+ i = 0;
+ loop {
+ if i == b.ops_len {
+ return;
+ }
+
+ op = b.ops[i];
+ if op.kind == IOP_RETVAL {
+ break;
+ }
+
+ i = i + 1;
+ }
+
+ // Do nothing if there was no return value
+ if op.t.kind == TY_VOID {
+ return;
+ }
+
+ // Save the value
+ x86_64_modrr(ic.s, OP_MOVE, R_RDI, R_RAX);
+
+ // Compute the address
+ if op.a.kind == IOP_LOAD {
+ x86_64_output_irexpr(ic, b, op.a.a);
+ } else if op.a.kind == IOP_VAR {
+ x86_64_modrm(ic.s, OP_LEA, R_RAX, R_RBP, 0, 0, ic.vars[op.a.n].offset);
+ } else {
+ die("invalid store");
+ }
+
+ // Execute the store
+ if op.t.kind == TY_BYTE {
+ x86_64_modrm(ic.s, OP_STOREB, R_RDI, R_RAX, 0, 0, 0);
+ } else if type_isprim(op.t) {
+ x86_64_modrm(ic.s, OP_STORE, R_RDI, R_RAX, 0, 0, 0);
+ } else {
+ cdie(ic.c, "invalid store");
+ }
+}
+
+func x86_64_output_irstr(ic: *irfunc, b: *irblock, o: *irop) {
+ var s: *label;
+
+ s = as_blob(ic.s, o.s, o.slen + 1);
+
+ reserve(ic.s, 16);
+ x86_64_modrm(ic.s, OP_LEA, R_RAX, R_RIP, 0, 0, 128);
+ addfixup(ic.s, s, FIXUP_DISP32);
+}
+
+func x86_64_output_irfuncptr(ic: *irfunc, b: *irblock, o: *irop) {
+ var d: *decl;
+
+ d = find(ic.c, o.s, nil, 0);
+
+ if !d || !d.func_defined {
+ cdie(ic.c, "no such function");
+ }
+
+ reserve(ic.s, 16);
+ x86_64_modrm(ic.s, OP_LEA, R_RAX, R_RIP, 0, 0, 128);
+ addfixup(ic.s, d.func_label, FIXUP_DISP32);
+}
+
+func x86_64_output_ircall(ic: *irfunc, b: *irblock, o: *irop) {
+ var d: *decl;
+
+ d = find(ic.c, o.s, nil, 0);
+
+ if !d || !d.func_defined {
+ cdie(ic.c, "no such function");
+ }
+
+ x86_64_jmp(ic.s, OP_CALL, d.func_label);
+}
+
+func x86_64_output_irexpr(ic: *irfunc, b: *irblock, o: *irop) {
+ var kind: int;
+
+ if !o {
+ cdie(ic.c, "no expr");
+ }
+
+ kind = o.kind;
+ if kind == IOP_VAR {
+ x86_64_modrm(ic.s, OP_LOAD, R_RAX, R_RBP, 0, 0, ic.vars[o.n].offset);
+ } else if kind == IOP_VARREF {
+ x86_64_modrm(ic.s, OP_LEA, R_RAX, R_RBP, 0, 0, ic.vars[o.n].offset);
+ } else if kind == IOP_FUNC {
+ x86_64_output_irfuncptr(ic, b, o);
+ } else if kind == IOP_CONST {
+ if o.n == 0 {
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+ } else if o.n < (-1 >> 33) && o.n >= (-1 << 31) {
+ x86_64_modri(ic.s, OP_MOVI, R_RAX, o.n);
+ } else {
+ x86_64_opri64(ic.s, OP_MOVABS, R_RAX, o.n);
+ }
+ } else if kind == IOP_STR {
+ x86_64_output_irstr(ic, b, o);
+ } else if kind == IOP_LOAD {
+ x86_64_output_irexpr(ic, b, o.a);
+ if o.t.kind == TY_BYTE {
+ x86_64_modrr(ic.s, OP_MOVE, R_RSI, R_RAX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+ x86_64_modrm(ic.s, OP_LOADB, R_RAX, R_RSI, 0, 0, 0);
+ } else if type_isprim(o.t) {
+ x86_64_modrm(ic.s, OP_LOAD, R_RAX, R_RAX, 0, 0, 0);
+ } else {
+ cdie(ic.c, "invalid load");
+ }
+ } else if kind == IOP_NEG {
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_modr(ic.s, OP_NEGM, R_RAX);
+ } else if kind == IOP_NOT {
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_modr(ic.s, OP_NOTM, R_RAX);
+ } else if kind == IOP_ADD {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_ADDRM, R_RAX, R_RCX);
+ } else if kind == IOP_AND {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_ANDRM, R_RAX, R_RCX);
+ } else if kind == IOP_OR {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_ORRM, R_RAX, R_RCX);
+ } else if kind == IOP_XOR {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RCX);
+ } else if kind == IOP_DIV {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RDX, R_RDX);
+ x86_64_modrr(ic.s, OP_TESTRM, R_RAX, R_RAX);
+ x86_64_modrr(ic.s, OP_SETCC + CC_S, 0, R_RDX);
+ x86_64_modr(ic.s, OP_NEGM, R_RDX);
+ x86_64_modr(ic.s, OP_IDIVM, R_RCX);
+ } else if kind == IOP_MOD {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RDX, R_RDX);
+ x86_64_modrr(ic.s, OP_TESTRM, R_RAX, R_RAX);
+ x86_64_modrr(ic.s, OP_SETCC + CC_S, 0, R_RDX);
+ x86_64_modr(ic.s, OP_NEGM, R_RDX);
+ x86_64_modr(ic.s, OP_IDIVM, R_RCX);
+ x86_64_modrr(ic.s, OP_MOVE, R_RAX, R_RDX);
+ } else if kind == IOP_LSH {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modr(ic.s, OP_SHLM, R_RAX);
+ } else if kind == IOP_RSH {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modr(ic.s, OP_SHRM, R_RAX);
+ } else if kind == IOP_MUL {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modr(ic.s, OP_IMULM, R_RCX);
+ } else if kind == IOP_SUB {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_SUBRM, R_RAX, R_RCX);
+ } else if kind == IOP_EQ {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+ x86_64_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
+ x86_64_modrr(ic.s, OP_SETCC + CC_E, 0, R_RAX);
+ } else if kind == IOP_NE {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+ x86_64_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
+ x86_64_modrr(ic.s, OP_SETCC + CC_NE, 0, R_RAX);
+ } else if kind == IOP_GT {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+ x86_64_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
+ x86_64_modrr(ic.s, OP_SETCC + CC_G, 0, R_RAX);
+ } else if kind == IOP_GE {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+ x86_64_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
+ x86_64_modrr(ic.s, OP_SETCC + CC_GE, 0, R_RAX);
+ } else if kind == IOP_LT {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+ x86_64_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
+ x86_64_modrr(ic.s, OP_SETCC + CC_L, 0, R_RAX);
+ } else if kind == IOP_LE {
+ x86_64_output_irexpr(ic, b, o.b);
+ x86_64_opr(ic.s, OP_PUSHR, R_RAX);
+ x86_64_output_irexpr(ic, b, o.a);
+ x86_64_opr(ic.s, OP_POPR, R_RCX);
+ x86_64_modrr(ic.s, OP_MOVE, R_RDX, R_RAX);
+ x86_64_modrr(ic.s, OP_XORRM, R_RAX, R_RAX);
+ x86_64_modrr(ic.s, OP_CMPRM, R_RDX, R_RCX);
+ x86_64_modrr(ic.s, OP_SETCC + CC_LE, 0, R_RAX);
+ } else {
+ cdie(ic.c, "invalid op");
+ }
+}