os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

commit da32f7462dd58617f04a6001ee47ff303b201576
parent 1b17645cb98134ebfb3125c41f2d8ca7a8401cb8
Author: erai <erai@omiltem.net>
Date:   Mon, 12 May 2025 18:44:50 -0400

add aarch64 target

Diffstat:
Aaarch64.om | 867+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Malloc.om | 1+
Mas.om | 166+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
Mbootstrap.sh | 7++++---
Mbuild.sh | 34+++++++++++++++++-----------------
Mcc0.c | 63159++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mcc1.om | 53+++++++++++++++++++++++++++++++++++++++++++++++++----
Mir.om | 1+
Mircout.om | 8++++++--
Rkernel.x86.om -> kernel.x86_64.om | 0
Asyscall.aarch64.om | 155+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msyscall.om | 8++++++++
Dsyscall.x86.om | 158-------------------------------------------------------------------------------
Asyscall.x86_64.om | 155+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest.sh | 19++++++++++---------
Dx86.om | 1873-------------------------------------------------------------------------------
Ax86_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"); + } +}