pub const W1: usize = 64;
pub const K_INIT: usize = 0;
pub const K_EVAL: usize = 1;
pub const K_RET: usize = 2;
pub const K_AUX: usize = 3;
pub const K_AXW: usize = 4;
pub const K_HDA: usize = 5;
pub const K_HDB: usize = 6;
pub const K_EQD: usize = 7;
pub const K_PERM: usize = 8;
pub const K_PAD: usize = 9;
pub const KINDS: usize = 10;
pub const MACHINE: [usize; 7] = [K_EVAL, K_RET, K_AUX, K_AXW, K_HDA, K_HDB, K_EQD];
pub const OBJ: usize = 10;
pub const X: usize = 11;
pub const K: usize = 12;
pub const D: usize = 13;
pub const CYC: usize = 14;
pub const ALLOC: usize = 15;
pub const FLAG0: usize = 16;
pub const FLAGS: usize = 16;
pub const OPS: [(usize, u64, u64); 15] = [
(0, 0, 1), (1, 1, 1), (2, 2, 1), (3, 3, 1), (4, 4, 1), (5, 5, 1), (6, 6, 1), (7, 7, 1), (8, 8, 64), (9, 9, 1), (10, 15, 25), (11, 10, 64), (13, 13, 32), (14, 16, 1), (15, 17, 1), ];
pub const OP_AXIS: usize = FLAG0;
pub const OP_QUOTE: usize = FLAG0 + 1;
pub const OP_COMPOSE: usize = FLAG0 + 2;
pub const OP_CONS: usize = FLAG0 + 3;
pub const OP_BRANCH: usize = FLAG0 + 4;
pub const OP_ADD: usize = FLAG0 + 5;
pub const OP_SUB: usize = FLAG0 + 6;
pub const OP_MUL: usize = FLAG0 + 7;
pub const OP_INV: usize = FLAG0 + 8;
pub const OP_EQ: usize = FLAG0 + 9;
pub const OP_HASH: usize = FLAG0 + 10;
pub const OP_LT: usize = FLAG0 + 11;
pub const OP_WORD: usize = FLAG0 + 12;
pub const OP_NOT: usize = FLAG0 + 13;
pub const OP_CALL: usize = FLAG0 + 14;
pub const OP_LOOK: usize = FLAG0 + 15;
pub const WORD_TAGS: [u64; 3] = [11, 12, 14];
pub const WORD_COST: u64 = 32;
pub const T_LT: u64 = 10;
pub const T_XOR: u64 = 11;
pub const T_AND: u64 = 12;
pub const T_NOT: u64 = 13;
pub const T_SHL: u64 = 14;
pub const T_EQ: u64 = 9;
pub const T_LOOK: u64 = 17;
pub const F_CONS1: usize = FLAG0;
pub const F_CONS2: usize = FLAG0 + 1;
pub const F_COMP1: usize = FLAG0 + 2;
pub const F_COMP2: usize = FLAG0 + 3;
pub const F_BR: usize = FLAG0 + 4;
pub const F_B1: usize = FLAG0 + 5;
pub const F_B2AR: usize = FLAG0 + 6;
pub const F_B2EQ: usize = FLAG0 + 7;
pub const F_UHASH: usize = FLAG0 + 8;
pub const F_UINV: usize = FLAG0 + 9;
pub const F_TERM: usize = FLAG0 + 10;
pub const F_B2W: usize = FLAG0 + 11;
pub const F_CALL1: usize = FLAG0 + 12;
pub const F_CALL2: usize = FLAG0 + 13;
pub const F_B2LOOK: usize = FLAG0 + 14;
pub const RET_FLAGS: usize = 15;
pub const SLOT0: usize = 32;
pub const SLOTS: usize = 4;
pub const SLOT_W: usize = 6;
pub const fn slot(s: usize, field: usize) -> usize {
SLOT0 + s * SLOT_W + field
}
pub const KEY: usize = 0;
pub const P0: usize = 1;
pub const M: usize = 5;
pub const WIT: usize = 56;
pub const E_DINV: usize = WIT; pub const E_A0INV: usize = WIT + 1; pub const E_A1INV: usize = WIT + 2; pub const E_IS0: usize = WIT + 3;
pub const E_IS1: usize = WIT + 4;
pub const R_TINV: usize = WIT; pub const R_Z: usize = WIT + 1;
pub const R_SADD: usize = WIT;
pub const R_SSUB: usize = WIT + 1;
pub const R_SMUL: usize = WIT + 2;
pub const R_OP: usize = WIT + 7;
pub const R_OPY: usize = WIT + 6;
pub const B1_OPS: [u64; 9] = [5, 6, 7, 9, 10, 11, 12, 14, 17];
pub const Q_KA: usize = WIT; pub const Q_KB: usize = WIT + 1;
pub const Q_EINV: usize = WIT + 2; pub const Q_ISEQ: usize = WIT + 3;
pub const Q_DW: usize = WIT + 4; pub const A_BIT: usize = WIT;
pub const A_CNT: usize = WIT + 1;
pub const A_C63: usize = WIT + 2; pub const A_PH: usize = WIT + 3; pub const A_AH: usize = WIT + 4; pub const A_OL: usize = WIT + 5; pub const A_E30: usize = WIT + 6; pub const A_I30: usize = WIT + 7;
pub const A_E62: usize = FLAG0; pub const A_I62: usize = FLAG0 + 1;
pub const AXIS_LEVELS: u64 = 63;
pub const S_LOOK: usize = FLAG0;
pub const S_WATOM: usize = FLAG0 + 1;
pub const S_WPAIR: usize = FLAG0 + 2;
pub const S_WJOIN: usize = FLAG0 + 3;
pub const S_WBIT: usize = FLAG0 + 4;
pub const SUBKINDS: [usize; 5] = [S_LOOK, S_WATOM, S_WPAIR, S_WJOIN, S_WBIT];
pub const W_SP: usize = FLAG0 + 15;
pub const B_XOR: usize = FLAG0 + 5;
pub const B_AND: usize = FLAG0 + 6;
pub const B_NOT: usize = FLAG0 + 7;
pub const B_SHL: usize = FLAG0 + 8;
pub const B_LT: usize = FLAG0 + 9;
pub const WOPS: [(usize, u64); 5] = [
(B_XOR, T_XOR),
(B_AND, T_AND),
(B_NOT, T_NOT),
(B_SHL, T_SHL),
(B_LT, T_LT),
];
pub const B_CNT: usize = FLAG0 + 10;
pub const B_LINV: usize = FLAG0 + 11; pub const B_LAST: usize = FLAG0 + 12;
pub const B_FINV: usize = FLAG0 + 13; pub const B_FIRST: usize = FLAG0 + 14;
pub const fn wg(i: usize) -> usize {
SLOT0 + i
}
pub const G_R0: usize = wg(0);
pub const G_R1: usize = wg(1);
pub const G_R2: usize = wg(2);
pub const G_R3: usize = wg(3);
pub const G_B0: usize = wg(4);
pub const G_B1: usize = wg(5);
pub const G_B2: usize = wg(6);
pub const G_B3: usize = wg(7);
pub const G_P: usize = wg(8); pub const G_Q: usize = wg(9); pub const G_I5: usize = wg(10); pub const G_V5: usize = wg(11);
pub const G_Z: usize = wg(12); pub const G_ZI: usize = wg(13);
pub const G_CI: usize = wg(14); pub const G_HI: usize = wg(15); pub const G_NA: usize = wg(8);
pub const G_OA: usize = wg(9);
pub const G_NB: usize = wg(10);
pub const G_OB: usize = wg(11);
pub const G_NA2: usize = wg(12);
pub const G_OA2: usize = wg(13);
pub const G_NB2: usize = wg(14);
pub const G_OB2: usize = wg(15);
pub const G_LL: usize = wg(16);
pub const G_LH: usize = wg(17);
pub const G_EH: usize = wg(18);
pub const G_LL2: usize = wg(19);
pub const G_LH2: usize = wg(20);
pub const G_EH2: usize = wg(21);
pub const JOB_ID: usize = OBJ;
pub const STATE: usize = X; pub const PINV: usize = 27;
pub const J_PAIR: usize = 28;
pub const J_ATOM1: usize = 29;
pub const J_ATOM2: usize = 30;
pub const J_HOP: usize = 31;
pub const B_LO: usize = 11;
pub const B_HL: usize = 12;
pub const B_HT: usize = 13;
pub const B_MINV: usize = 14;
pub const B_MAX: usize = 15;
pub const B_LOC: usize = 16;
pub const B_BITS: usize = 32;
pub const BLOCK: usize = 32;
pub const PH_BITS0: usize = 0;
pub const PH_BITS1: usize = 1;
pub const PH_MDS: usize = 2;
pub const PH_ROUND0: usize = 3; pub const PH_OUT: usize = 27;
pub const TAG_ATOM: u64 = 1;
pub const TAG_PAIR: u64 = 2;
pub const TAG_DIG: u64 = 3;
pub const TAG_HOP: u64 = 4;
pub const TAG_ABASE: u64 = 5;
pub const TAG_STATE: u64 = 6;
pub const TAG_SCELL: u64 = 7;
pub const TAG_CONS1: u64 = 16;
pub const TAG_CONS2: u64 = 17;
pub const TAG_COMP1: u64 = 18;
pub const TAG_COMP2: u64 = 19;
pub const TAG_BR: u64 = 20;
pub const TAG_UHASH: u64 = 29;
pub const TAG_UINV: u64 = 30;
pub const TAG_CALL1: u64 = 31;
pub const TAG_CALL2: u64 = 32;
pub const TAG_B1: u64 = 64;
pub const TAG_B2: u64 = 96;
pub const FRAME_TAGS: [(usize, u64); 11] = [
(F_CONS1, TAG_CONS1),
(F_CONS2, TAG_CONS2),
(F_COMP1, TAG_COMP1),
(F_COMP2, TAG_COMP2),
(F_BR, TAG_BR),
(F_UHASH, TAG_UHASH),
(F_UINV, TAG_UINV),
(F_CALL1, TAG_CALL1),
(F_CALL2, TAG_CALL2),
(F_B2EQ, TAG_B2 + T_EQ),
(F_B2LOOK, TAG_B2 + T_LOOK),
];
pub const MAX_DEPTH: u64 = 1000;
pub const W2: usize = 15;
pub const H0: usize = 0;
pub const SUM: usize = 12;