diff --git a/core/rexcode/isa/riscv/tablegen/cpp-compiler/cpp-gen.odin b/core/rexcode/isa/riscv/tablegen/cpp-compiler/cpp-gen.odin index 7f3362a9b..3aba6c12b 100644 --- a/core/rexcode/isa/riscv/tablegen/cpp-compiler/cpp-gen.odin +++ b/core/rexcode/isa/riscv/tablegen/cpp-compiler/cpp-gen.odin @@ -294,7 +294,7 @@ main :: proc() { return found ? *found : PM_INVALID; } - PseudoAlias pseudo_alias(PseudoMnemonic pm) { + PseudoAlias pseudo_alias(u16 pm) { PseudoAlias *pa = (PseudoAlias *)raw_pseudo_aliases; return pa[pm]; } @@ -409,7 +409,7 @@ main :: proc() { strings.write_string(&sb, "\n") strings.write_string(&sb, "\tStringMap mnemonic_map;\n") strings.write_string(&sb, "\tStringMap register_map;\n") - strings.write_string(&sb, "\tStringMap pseudo_register_map;\n") + strings.write_string(&sb, "\tStringMap pseudo_mnemonic_map;\n") strings.write_string(&sb, """ diff --git a/core/rexcode/isa/x86/tablegen/cpp-compiler/cpp-gen.odin b/core/rexcode/isa/x86/tablegen/cpp-compiler/cpp-gen.odin index 45f07ed9b..56f505d4b 100644 --- a/core/rexcode/isa/x86/tablegen/cpp-compiler/cpp-gen.odin +++ b/core/rexcode/isa/x86/tablegen/cpp-compiler/cpp-gen.odin @@ -340,8 +340,16 @@ main :: proc() { strings.write_string(&sb, "\n"); strings.write_string(&sb, "\n"); strings.write_string(&sb, """ + enum AliasSrc : u8 { + AliasSrc_NONE, // slot unused + }; + struct PseudoAlias { - Mnemonic target; + Mnemonic target; // real instruction emitted + AliasSrc src[4]; // how to fill target's four operand slots + i16 lit; // immediate when a src slot is AliasSrc_LIT + u16 csr; // CSR address when a src slot is AliasSrc_CSR_LIT + u8 nargs; // operands the user supplies (ARG0..>4u)&((1u<<3)-1)); } }; #pragma pack(pop) - GB_STATIC_ASSERT(gb_size_of(Encoding) == 20); + GB_STATIC_ASSERT(gb_size_of(Encoding) == 21); // Companion run index: ENCODE_RUNS[mnemonic] -> contiguous run in ENCODE_FORMS. @@ -313,12 +374,14 @@ struct Asm_riscv { }; - static EncodeRun const raw_encode_runs [199]; - static u8 const raw_encode_forms [3960]; - static u8 const raw_clobber_forms[1782]; + static EncodeRun const raw_encode_runs [282]; + static u8 const raw_encode_forms [5943]; + static u8 const raw_clobber_forms [2547]; + static u8 const raw_pseudo_aliases[696]; StringMap mnemonic_map; StringMap register_map; + StringMap pseudo_mnemonic_map; u16 XLEN; u16 FLEN; @@ -331,6 +394,12 @@ struct Asm_riscv { for (u16 m = M_INVALID+1; m < MNEMONIC_COUNT; m++) { string_map_set(&mnemonic_map, mnemonic_strings[m], cast(Mnemonic)m); } + + string_map_init(&mnemonic_map, PSEUDO_MNEMONIC_COUNT*2); + for (u16 m = PM_INVALID+1; m < PSEUDO_MNEMONIC_COUNT; m++) { + string_map_set(&pseudo_mnemonic_map, pseudo_mnemonic_strings[m], cast(PseudoMnemonic)m); + } + string_map_init(®ister_map, REG_COUNT*2); for (u16 r = REG_INVALID+1; r < REG_COUNT; r++) { string_map_set(®ister_map, register_strings[r], cast(Register)r); @@ -495,8 +564,8 @@ struct Asm_riscv { case OP_FPR_C: return FLEN; - // Memory -> access size (like OP_M*). Base OP_MEM's size comes from the - // opcode, so it's sizeless like x86 OP_M. Compressed forms name the size. + // Memory -> access size (like OP_M*). Base OP_MEM's size comes from the opcode. + // Compressed forms name the size. case OP_MEM: return 0; case OP_MEM_C_W: @@ -506,7 +575,7 @@ struct Asm_riscv { case OP_MEM_C_SP_D: return 64; - // Immediates -> value width (unchanged; matches x86 OP_IMM*). + // Immediates -> value width case OP_IMM12: case OP_IMM12U: case OP_CSR: @@ -532,7 +601,7 @@ struct Asm_riscv { case OP_IMM_C18S: return 18; - // Rels -> displacement value width (unchanged; matches x86 OP_REL*). + // Rels -> displacement value width case OP_REL13: return 13; case OP_REL21: @@ -589,7 +658,12 @@ String const Asm_riscv::mnemonic_strings[Asm_riscv::MNEMONIC_COUNT] { str_lit("flt_d"), str_lit("fle_d"), str_lit("fclass_d"), str_lit("fcvt_w_d"), str_lit("fcvt_wu_d"), str_lit("fcvt_d_w"), str_lit("fcvt_d_wu"), str_lit("fcvt_l_d"), str_lit("fcvt_lu_d"), str_lit("fcvt_d_l"), str_lit("fcvt_d_lu"), str_lit("fmv_x_d"), str_lit("fmv_d_x"), str_lit("c_nop"), str_lit("c_ebreak"), str_lit("c_addi4spn"), str_lit("c_lw"), str_lit("c_ld"), str_lit("c_sw"), str_lit("c_sd"), str_lit("c_flw"), str_lit("c_fsw"), str_lit("c_fld"), str_lit("c_fsd"), str_lit("c_addi"), str_lit("c_addiw"), str_lit("c_li"), str_lit("c_lui"), str_lit("c_addi16sp"), str_lit("c_srli"), str_lit("c_srai"), str_lit("c_andi"), str_lit("c_sub"), str_lit("c_xor"), str_lit("c_or"), str_lit("c_and"), str_lit("c_subw"), str_lit("c_addw"), str_lit("c_j"), str_lit("c_jal"), str_lit("c_beqz"), str_lit("c_bnez"), str_lit("c_slli"), str_lit("c_lwsp"), str_lit("c_ldsp"), str_lit("c_swsp"), str_lit("c_sdsp"), str_lit("c_fldsp"), - str_lit("c_fsdsp"), str_lit("c_jr"), str_lit("c_jalr"), str_lit("c_mv"), str_lit("c_add"), str_lit("c_flwsp"), str_lit("c_fswsp"), + str_lit("c_fsdsp"), str_lit("c_jr"), str_lit("c_jalr"), str_lit("c_mv"), str_lit("c_add"), str_lit("c_flwsp"), str_lit("c_fswsp"), str_lit("sh1add"), str_lit("sh2add"), str_lit("sh3add"), str_lit("add_uw"), str_lit("sh1add_uw"), str_lit("sh2add_uw"), str_lit("sh3add_uw"), str_lit("slli_uw"), str_lit("andn"), + str_lit("orn"), str_lit("xnor"), str_lit("clz"), str_lit("ctz"), str_lit("cpop"), str_lit("sext_b"), str_lit("sext_h"), str_lit("zext_h"), str_lit("min"), str_lit("minu"), str_lit("max"), str_lit("maxu"), str_lit("rol"), str_lit("ror"), str_lit("rori"), str_lit("orc_b"), + str_lit("rev8"), str_lit("clzw"), str_lit("ctzw"), str_lit("cpopw"), str_lit("rolw"), str_lit("rorw"), str_lit("roriw"), str_lit("clmul"), str_lit("clmulh"), str_lit("clmulr"), str_lit("bclr"), str_lit("bclri"), str_lit("bext"), str_lit("bexti"), str_lit("binv"), str_lit("binvi"), + str_lit("bset"), str_lit("bseti"), str_lit("czero_eqz"), str_lit("czero_nez"), str_lit("flh"), str_lit("fsh"), str_lit("fmadd_h"), str_lit("fmsub_h"), str_lit("fnmsub_h"), str_lit("fnmadd_h"), str_lit("fadd_h"), str_lit("fsub_h"), str_lit("fmul_h"), str_lit("fdiv_h"), str_lit("fsqrt_h"), str_lit("fsgnj_h"), + str_lit("fsgnjn_h"), str_lit("fsgnjx_h"), str_lit("fmin_h"), str_lit("fmax_h"), str_lit("fcvt_w_h"), str_lit("fcvt_wu_h"), str_lit("fcvt_l_h"), str_lit("fcvt_lu_h"), str_lit("fcvt_h_w"), str_lit("fcvt_h_wu"), str_lit("fcvt_h_l"), str_lit("fcvt_h_lu"), str_lit("fcvt_s_h"), str_lit("fcvt_h_s"), str_lit("fcvt_d_h"), str_lit("fcvt_h_d"), + str_lit("fmv_x_h"), str_lit("fmv_h_x"), str_lit("fclass_h"), str_lit("feq_h"), str_lit("flt_h"), str_lit("fle_h"), str_lit("mret"), str_lit("sret"), str_lit("wfi"), str_lit("sfence_vma"), }; u16 const Asm_riscv::register_codes[Asm_riscv::REG_COUNT] { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, @@ -605,7 +679,17 @@ String const Asm_riscv::register_strings[Asm_riscv::REG_COUNT] { str_lit("fa5"), str_lit("fa6"), str_lit("fa7"), str_lit("fs2"), str_lit("fs3"), str_lit("fs4"), str_lit("fs5"), str_lit("fs6"), str_lit("fs7"), str_lit("fs8"), str_lit("fs9"), str_lit("fs10"), str_lit("fs11"), str_lit("ft8"), str_lit("ft9"), str_lit("ft10"), str_lit("ft11"), }; -Asm_riscv::EncodeRun const Asm_riscv::raw_encode_runs[199] = { +String const Asm_riscv::pseudo_mnemonic_strings[Asm_riscv::PSEUDO_MNEMONIC_COUNT] { + str_lit(""), str_lit("nop"), str_lit("mv"), str_lit("not"), str_lit("neg"), str_lit("negw"), str_lit("sext_w"), str_lit("zext_b"), + str_lit("seqz"), str_lit("snez"), str_lit("sltz"), str_lit("sgtz"), str_lit("beqz"), str_lit("bnez"), str_lit("blez"), str_lit("bgez"), + str_lit("bltz"), str_lit("bgtz"), str_lit("bgt"), str_lit("ble"), str_lit("bgtu"), str_lit("bleu"), str_lit("j"), str_lit("jal_ra"), + str_lit("jr"), str_lit("jalr_ra"), str_lit("ret"), str_lit("csrr"), str_lit("csrw"), str_lit("csrs"), str_lit("csrc"), str_lit("csrwi"), + str_lit("csrsi"), str_lit("csrci"), str_lit("rdcycle"), str_lit("rdtime"), str_lit("rdinstret"), str_lit("rdcycleh"), str_lit("rdtimeh"), str_lit("rdinstreth"), + str_lit("frcsr"), str_lit("fscsr"), str_lit("frrm"), str_lit("fsrm"), str_lit("frflags"), str_lit("fsflags"), str_lit("fsrmi"), str_lit("fsflagsi"), + str_lit("fmv_s"), str_lit("fabs_s"), str_lit("fneg_s"), str_lit("fmv_d"), str_lit("fabs_d"), str_lit("fneg_d"), str_lit("fmv_h"), str_lit("fabs_h"), + str_lit("fneg_h"), str_lit("fence_all"), +}; +Asm_riscv::EncodeRun const Asm_riscv::raw_encode_runs[282] = { { 0, 0}, { 0, 1}, { 1, 1}, { 2, 1}, { 3, 1}, { 4, 1}, { 5, 1}, { 6, 1}, { 7, 1}, { 8, 1}, { 9, 1}, { 10, 1}, { 11, 1}, { 12, 1}, { 13, 1}, { 14, 1}, { 15, 1}, { 16, 1}, { 17, 1}, { 18, 1}, { 19, 1}, { 20, 1}, { 21, 1}, { 22, 1}, { 23, 1}, { 24, 1}, { 25, 1}, { 26, 1}, { 27, 1}, { 28, 1}, { 29, 1}, { 30, 1}, { 31, 1}, { 32, 1}, { 33, 1}, { 34, 1}, { 35, 1}, { 36, 1}, { 37, 1}, { 38, 1}, { 39, 1}, { 40, 1}, { 41, 1}, { 42, 1}, { 43, 1}, { 44, 1}, { 45, 1}, { 46, 1}, @@ -618,73 +702,109 @@ Asm_riscv::EncodeRun const Asm_riscv::raw_encode_runs[199] = { { 143, 1}, { 144, 1}, { 145, 1}, { 146, 1}, { 147, 1}, { 148, 1}, { 149, 1}, { 150, 1}, { 151, 1}, { 152, 1}, { 153, 1}, { 154, 1}, { 155, 1}, { 156, 1}, { 157, 1}, { 158, 1}, { 159, 1}, { 160, 1}, { 161, 1}, { 162, 1}, { 163, 1}, { 164, 1}, { 165, 1}, { 166, 1}, { 167, 1}, { 168, 1}, { 169, 1}, { 170, 1}, { 171, 1}, { 172, 1}, { 173, 1}, { 174, 1}, { 175, 1}, { 176, 1}, { 177, 1}, { 178, 1}, { 179, 1}, { 180, 1}, { 181, 1}, { 182, 1}, { 183, 1}, { 184, 1}, { 185, 1}, { 186, 1}, { 187, 1}, { 188, 1}, { 189, 1}, { 190, 1}, - { 191, 1}, { 192, 1}, { 193, 1}, { 194, 1}, { 195, 1}, { 196, 1}, { 197, 1}, + { 191, 1}, { 192, 1}, { 193, 1}, { 194, 1}, { 195, 1}, { 196, 1}, { 197, 1}, { 198, 1}, { 199, 1}, { 200, 1}, { 201, 1}, { 202, 1}, { 203, 1}, { 204, 1}, { 205, 1}, { 206, 1}, + { 207, 1}, { 208, 1}, { 209, 1}, { 210, 1}, { 211, 1}, { 212, 1}, { 213, 1}, { 214, 2}, { 216, 1}, { 217, 1}, { 218, 1}, { 219, 1}, { 220, 1}, { 221, 1}, { 222, 1}, { 223, 1}, + { 224, 2}, { 226, 1}, { 227, 1}, { 228, 1}, { 229, 1}, { 230, 1}, { 231, 1}, { 232, 1}, { 233, 1}, { 234, 1}, { 235, 1}, { 236, 1}, { 237, 1}, { 238, 1}, { 239, 1}, { 240, 1}, + { 241, 1}, { 242, 1}, { 243, 1}, { 244, 1}, { 245, 1}, { 246, 1}, { 247, 1}, { 248, 1}, { 249, 1}, { 250, 1}, { 251, 1}, { 252, 1}, { 253, 1}, { 254, 1}, { 255, 1}, { 256, 1}, + { 257, 1}, { 258, 1}, { 259, 1}, { 260, 1}, { 261, 1}, { 262, 1}, { 263, 1}, { 264, 1}, { 265, 1}, { 266, 1}, { 267, 1}, { 268, 1}, { 269, 1}, { 270, 1}, { 271, 1}, { 272, 1}, + { 273, 1}, { 274, 1}, { 275, 1}, { 276, 1}, { 277, 1}, { 278, 1}, { 279, 1}, { 280, 1}, { 281, 1}, { 282, 1}, }; -u8 const Asm_riscv::raw_encode_forms[3960] = { - 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x09, 0x00, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x01, 0x01, - 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x67, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, - 0x09, 0x00, 0x63, 0x40, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x60, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x70, - 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x04, 0x0b, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0x7f, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x40, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x23, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x60, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x02, 0x14, 0x00, 0x01, 0x0a, - 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x02, 0x15, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x23, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x02, 0x16, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, - 0x07, 0x00, 0x13, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x40, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x60, - 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x70, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x1d, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x50, 0x00, 0x00, 0x7f, 0x70, - 0x00, 0xfc, 0x00, 0x00, 0x1e, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x50, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x1f, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x01, 0x05, 0x00, 0x01, 0x02, 0x05, 0x00, 0x1b, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x02, - 0x21, 0x00, 0x01, 0x01, 0x05, 0x00, 0x01, 0x02, 0x05, 0x00, 0x1b, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x02, 0x22, 0x00, 0x01, 0x01, 0x05, 0x00, 0x01, 0x02, 0x05, 0x00, 0x1b, 0x50, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x02, 0x23, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x24, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x00, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x25, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x26, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x27, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, - 0x03, 0x00, 0x33, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x28, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x40, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x29, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x2a, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, - 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x2b, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x60, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x2c, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x70, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x2d, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x7f, 0x70, - 0x00, 0xfe, 0x00, 0x02, 0x2e, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x02, 0x2f, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x02, 0x30, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x02, - 0x31, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x50, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x02, 0x32, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x11, 0x12, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x10, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x04, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x04, 0x36, 0x00, 0x01, 0x0b, 0x01, 0x00, 0x01, 0x0f, 0x02, 0x00, 0x73, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x37, 0x00, 0x01, 0x0b, 0x01, 0x00, 0x01, 0x0f, - 0x02, 0x00, 0x73, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x38, 0x00, 0x01, 0x0b, 0x01, 0x00, 0x01, 0x0f, 0x02, 0x00, 0x73, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x39, 0x00, 0x01, 0x0b, 0x0e, 0x00, 0x01, 0x0f, 0x10, 0x00, 0x73, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x01, 0x0b, 0x0e, 0x00, 0x01, 0x0f, 0x10, 0x00, 0x73, 0x60, - 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x01, 0x0b, 0x0e, 0x00, 0x01, 0x0f, 0x10, 0x00, 0x73, 0x70, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x3c, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x00, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x3d, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, 0x00, 0x02, 0x7f, 0x70, - 0x00, 0xfe, 0x01, 0x00, 0x3e, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x20, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x3f, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x30, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x40, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x40, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, - 0x41, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x42, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x60, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x43, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x70, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x44, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x02, 0x45, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x40, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x02, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x50, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x02, 0x47, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, - 0x03, 0x00, 0x3b, 0x60, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x02, 0x48, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x70, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x02, 0x49, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x2f, 0x20, 0x00, 0x10, 0x7f, 0x70, 0xf0, 0xf9, 0x02, 0x00, 0x4a, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, - 0x00, 0x18, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x4b, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x08, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x4c, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x4d, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x20, 0x7f, 0x70, - 0x00, 0xf8, 0x02, 0x00, 0x4e, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x4f, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x50, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x80, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, - 0x51, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x52, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0xc0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x53, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0xe0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x54, 0x00, 0x01, 0x0a, - 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x2f, 0x30, 0x00, 0x10, 0x7f, 0x70, 0xf0, 0xf9, 0x02, 0x02, 0x55, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x18, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x56, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x08, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x57, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, - 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x58, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x59, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x5a, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, - 0x00, 0x40, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x5b, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x80, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x5c, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x5d, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0xc0, 0x7f, 0x70, - 0x00, 0xf8, 0x02, 0x02, 0x5e, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0xe0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x02, 0x5f, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x03, 0x00, 0x60, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x27, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x03, 0x00, - 0x61, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x43, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x06, 0x03, 0x08, 0x62, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x47, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x06, 0x03, 0x08, 0x63, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4b, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x06, 0x03, 0x08, 0x64, 0x00, 0x02, 0x02, - 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x06, 0x03, 0x08, 0x65, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xfe, 0x03, 0x08, 0x66, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x08, 0x7f, 0x00, 0x00, 0xfe, 0x03, 0x08, 0x67, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, - 0x03, 0x00, 0x53, 0x00, 0x00, 0x10, 0x7f, 0x00, 0x00, 0xfe, 0x03, 0x08, 0x68, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x18, 0x7f, 0x00, 0x00, 0xfe, 0x03, 0x08, 0x69, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0x58, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x08, 0x6a, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, - 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x6b, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x6c, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x6d, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x28, 0x7f, 0x70, - 0x00, 0xfe, 0x03, 0x00, 0x6e, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x28, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x6f, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x08, 0x70, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x08, - 0x71, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xe0, 0x7f, 0x70, 0xf0, 0xff, 0x03, 0x00, 0x72, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x73, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x74, 0x00, 0x01, 0x02, - 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x75, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x10, 0x00, 0xe0, 0x7f, 0x70, 0xf0, 0xff, 0x03, 0x00, 0x76, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xd0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x08, 0x77, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, - 0x00, 0x00, 0x53, 0x00, 0x10, 0xd0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x08, 0x78, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xf0, 0x7f, 0x70, 0xf0, 0xff, 0x03, 0x00, 0x79, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x0a, 0x7a, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, - 0x30, 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x0a, 0x7b, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0xd0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x0a, 0x7c, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x30, 0xd0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x0a, 0x7d, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x07, 0x30, 0x00, 0x00, 0x7f, 0x70, - 0x00, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x27, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x43, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x06, 0x04, 0x08, 0x80, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x47, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x06, 0x04, 0x08, - 0x81, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4b, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x06, 0x04, 0x08, 0x82, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4f, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x06, 0x04, 0x08, 0x83, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0xfe, 0x04, 0x08, 0x84, 0x00, 0x02, 0x02, - 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x0a, 0x7f, 0x00, 0x00, 0xfe, 0x04, 0x08, 0x85, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x12, 0x7f, 0x00, 0x00, 0xfe, 0x04, 0x08, 0x86, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x1a, 0x7f, 0x00, 0x00, 0xfe, 0x04, 0x08, 0x87, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, - 0x00, 0x00, 0x53, 0x00, 0x00, 0x5a, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x08, 0x88, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x22, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x89, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x22, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x8a, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, - 0x00, 0x22, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x8b, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x2a, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x8c, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x2a, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x8d, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0x40, 0x7f, 0x00, - 0xf0, 0xff, 0x04, 0x08, 0x8e, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0x42, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x08, 0x8f, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0xa2, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x90, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0xa2, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, - 0x91, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0xa2, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x92, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x10, 0x00, 0xe2, 0x7f, 0x70, 0xf0, 0xff, 0x04, 0x00, 0x93, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xc2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x08, 0x94, 0x00, 0x01, 0x02, - 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xc2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x08, 0x95, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xd2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x08, 0x96, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xd2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x08, 0x97, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, - 0x00, 0x00, 0x53, 0x00, 0x20, 0xc2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x0a, 0x98, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x30, 0xc2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x0a, 0x99, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0xd2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x0a, 0x9a, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, - 0x30, 0xd2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x0a, 0x9b, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xe2, 0x7f, 0x70, 0xf0, 0xff, 0x04, 0x02, 0x9c, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xf2, 0x7f, 0x70, 0xf0, 0xff, 0x04, 0x02, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x00, 0x07, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x90, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x07, 0x00, 0x9f, 0x00, 0x0f, 0x10, 0x15, 0x00, 0x17, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0xa0, 0x00, 0x0f, 0x1a, 0x00, 0x00, 0x17, 0x26, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, - 0xa1, 0x00, 0x0f, 0x1b, 0x00, 0x00, 0x17, 0x27, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x02, 0xa2, 0x00, 0x0f, 0x1a, 0x00, 0x00, 0x19, 0x26, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0xa3, 0x00, 0x0f, 0x1b, 0x00, 0x00, 0x19, 0x27, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x02, 0xa4, 0x00, 0x12, 0x1a, - 0x00, 0x00, 0x17, 0x26, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x03, 0x01, 0xa5, 0x00, 0x12, 0x1a, 0x00, 0x00, 0x19, 0x26, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x03, 0x01, 0xa6, 0x00, 0x12, 0x1b, 0x00, 0x00, 0x17, 0x27, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x04, 0x00, 0xa7, 0x00, 0x12, 0x1b, 0x00, 0x00, 0x19, 0x27, - 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x11, 0x13, 0x00, 0x00, 0x15, 0x1b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0xa9, 0x00, 0x11, 0x13, 0x00, 0x00, 0x15, 0x1b, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x02, 0xaa, 0x00, 0x11, 0x13, 0x00, 0x00, 0x15, 0x1b, 0x00, 0x00, 0x01, 0x40, - 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0xab, 0x00, 0x11, 0x17, 0x00, 0x00, 0x15, 0x1e, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0xac, 0x00, 0x10, 0x16, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x83, 0xef, 0x00, 0x00, 0x07, 0x00, 0xad, 0x00, 0x0f, 0x14, 0x00, 0x00, 0x1a, 0x1c, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0xec, - 0x00, 0x00, 0x07, 0x00, 0xae, 0x00, 0x0f, 0x14, 0x00, 0x00, 0x1a, 0x1c, 0x00, 0x00, 0x01, 0x84, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00, 0x07, 0x00, 0xaf, 0x00, 0x0f, 0x13, 0x00, 0x00, 0x1a, 0x1b, 0x00, 0x00, 0x01, 0x88, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00, 0x07, 0x00, 0xb0, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x01, 0x8c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x00, - 0xb1, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x21, 0x8c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x00, 0xb2, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x41, 0x8c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x00, 0xb3, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x61, 0x8c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x00, 0xb4, 0x00, 0x0f, 0x0f, - 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x01, 0x9c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x02, 0xb5, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x21, 0x9c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x02, 0xb6, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x04, 0xb7, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, - 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x05, 0xb8, 0x00, 0x0f, 0x18, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x04, 0xb9, 0x00, 0x0f, 0x18, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x04, 0xba, 0x00, 0x11, 0x14, 0x00, 0x00, 0x15, 0x1c, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0xbb, 0x00, 0x11, 0x1c, 0x00, 0x00, 0x15, 0x28, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0xbc, 0x00, 0x11, 0x1d, 0x00, 0x00, 0x15, 0x29, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x02, 0xbd, 0x00, 0x01, 0x1c, 0x00, 0x00, 0x16, 0x20, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x03, 0xe0, - 0x00, 0x00, 0x07, 0x00, 0xbe, 0x00, 0x01, 0x1d, 0x00, 0x00, 0x16, 0x21, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x02, 0xbf, 0x00, 0x02, 0x1d, 0x00, 0x00, 0x15, 0x29, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x04, 0x00, 0xc0, 0x00, 0x02, 0x1d, 0x00, 0x00, 0x16, 0x21, 0x00, 0x00, 0x02, 0xa0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x04, 0x00, - 0xc1, 0x00, 0x11, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x07, 0x04, 0xc2, 0x00, 0x11, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x90, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x07, 0x04, 0xc3, 0x00, 0x11, 0x11, 0x00, 0x00, 0x15, 0x16, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x07, 0x00, 0xc4, 0x00, 0x11, 0x11, - 0x00, 0x00, 0x15, 0x16, 0x00, 0x00, 0x02, 0x90, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x07, 0x00, 0xc5, 0x00, 0x02, 0x1c, 0x00, 0x00, 0x15, 0x28, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x03, 0x01, 0xc6, 0x00, 0x02, 0x1c, 0x00, 0x00, 0x16, 0x20, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x03, 0x01, +u8 const Asm_riscv::raw_encode_forms[5943] = { + 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x01, 0x09, 0x00, 0x00, 0x01, 0x0b, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x04, + 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x67, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x34, 0x05, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x34, 0x06, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x34, 0x07, 0x00, + 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x40, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x34, 0x08, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x34, 0x09, 0x00, 0x01, 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x60, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x34, 0x0a, 0x00, 0x01, + 0x01, 0x08, 0x00, 0x02, 0x03, 0x09, 0x00, 0x63, 0x70, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x34, 0x0b, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0d, 0x00, 0x01, 0x0a, + 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0e, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x40, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0f, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x01, 0x0a, 0x00, + 0x00, 0x03, 0x0d, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x12, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x23, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x13, 0x00, 0x01, 0x0a, 0x00, 0x00, + 0x01, 0x0c, 0x00, 0x00, 0x03, 0x60, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x22, 0x14, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x22, 0x15, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x23, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x22, 0x16, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, + 0x02, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x17, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x19, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, + 0x07, 0x00, 0x13, 0x40, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1a, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x60, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1b, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, 0x13, 0x70, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, + 0x00, 0x13, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x30, 0x1d, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x30, 0x1e, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x50, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x30, 0x1f, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x02, 0x07, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x32, 0x20, 0x00, 0x01, 0x01, 0x05, 0x00, 0x01, 0x02, 0x05, 0x00, 0x1b, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x32, 0x21, 0x00, 0x01, 0x01, 0x05, 0x00, 0x01, 0x02, 0x05, 0x00, 0x1b, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x32, 0x22, 0x00, 0x01, 0x01, 0x05, 0x00, 0x01, 0x02, 0x05, 0x00, 0x1b, + 0x50, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x32, 0x23, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x24, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x00, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x25, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, + 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x26, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x27, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x28, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x40, 0x00, + 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x29, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x2a, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x2b, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x60, 0x00, 0x00, + 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x2c, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x70, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x30, 0x2d, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x32, 0x2e, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x40, 0x7f, + 0x70, 0x00, 0xfe, 0x00, 0x00, 0x32, 0x2f, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x32, 0x30, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x32, 0x31, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x50, 0x00, 0x40, 0x7f, 0x70, + 0x00, 0xfe, 0x00, 0x00, 0x32, 0x32, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x11, 0x12, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x10, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x04, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x36, 0x00, 0x01, 0x0b, 0x01, 0x00, 0x01, 0x0f, 0x02, 0x00, 0x73, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x30, 0x37, 0x00, 0x01, 0x0b, 0x01, 0x00, 0x01, 0x0f, 0x02, 0x00, 0x73, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, + 0x05, 0x00, 0x30, 0x38, 0x00, 0x01, 0x0b, 0x01, 0x00, 0x01, 0x0f, 0x02, 0x00, 0x73, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x30, 0x39, 0x00, 0x01, 0x0b, 0x0e, 0x00, 0x01, 0x0f, 0x10, 0x00, 0x73, 0x50, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x30, 0x3a, 0x00, 0x01, 0x0b, 0x0e, 0x00, 0x01, 0x0f, 0x10, 0x00, 0x73, 0x60, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, + 0x00, 0x30, 0x3b, 0x00, 0x01, 0x0b, 0x0e, 0x00, 0x01, 0x0f, 0x10, 0x00, 0x73, 0x70, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x05, 0x00, 0x30, 0x3c, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x00, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x30, 0x3d, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, + 0x30, 0x3e, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x20, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x30, 0x3f, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x30, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x30, 0x40, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x40, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x30, + 0x41, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x30, 0x42, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x60, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x30, 0x43, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x70, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x30, 0x44, + 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x32, 0x45, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x40, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x32, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x50, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x32, 0x47, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x60, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x32, 0x48, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x70, 0x00, 0x02, 0x7f, 0x70, 0x00, 0xfe, 0x01, 0x00, 0x32, 0x49, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x2f, 0x20, 0x00, 0x10, 0x7f, 0x70, 0xf0, 0xf9, 0x02, 0x00, 0x20, 0x4a, 0x00, 0x01, + 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x18, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x4b, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x08, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x4c, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x4d, 0x00, 0x01, 0x01, + 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x4e, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x4f, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x50, 0x00, 0x01, 0x01, 0x0a, + 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0x80, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x51, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x52, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0xc0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x53, 0x00, 0x01, 0x01, 0x0a, 0x00, + 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x20, 0x00, 0xe0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x30, 0x54, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x2f, 0x30, 0x00, 0x10, 0x7f, 0x70, 0xf0, 0xf9, 0x02, 0x00, 0x22, 0x55, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x18, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x56, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, + 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x08, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x57, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x58, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x59, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, + 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x5a, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x5b, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0x80, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x5c, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, + 0x00, 0x2f, 0x30, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x5d, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0xc0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x5e, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x0e, 0x00, 0x2f, 0x30, 0x00, 0xe0, 0x7f, 0x70, 0x00, 0xf8, 0x02, 0x00, 0x32, 0x5f, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, + 0x07, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x03, 0x00, 0x20, 0x60, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x27, 0x20, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x03, 0x00, 0x20, 0x61, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x43, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x06, 0x03, 0x00, 0x48, 0x62, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x47, + 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x06, 0x03, 0x00, 0x48, 0x63, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4b, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x06, 0x03, 0x00, 0x48, 0x64, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x06, 0x03, 0x00, 0x48, 0x65, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, + 0x00, 0x00, 0x7f, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x38, 0x66, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x08, 0x7f, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x38, 0x67, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x10, 0x7f, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x38, 0x68, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, + 0x18, 0x7f, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x38, 0x69, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0x58, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x28, 0x6a, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x30, 0x6b, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x20, + 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x30, 0x6c, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x30, 0x6d, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x28, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x30, 0x6e, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x28, 0x7f, + 0x70, 0x00, 0xfe, 0x03, 0x00, 0x30, 0x6f, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x28, 0x70, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x28, 0x71, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xe0, 0x7f, 0x70, + 0xf0, 0xff, 0x03, 0x00, 0x20, 0x72, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x30, 0x73, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0xa0, 0x7f, 0x70, 0x00, 0xfe, 0x03, 0x00, 0x30, 0x74, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0xa0, 0x7f, 0x70, 0x00, + 0xfe, 0x03, 0x00, 0x30, 0x75, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x10, 0x00, 0xe0, 0x7f, 0x70, 0xf0, 0xff, 0x03, 0x00, 0x20, 0x76, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xd0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x28, 0x77, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xd0, 0x7f, 0x00, 0xf0, 0xff, + 0x03, 0x00, 0x28, 0x78, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xf0, 0x7f, 0x70, 0xf0, 0xff, 0x03, 0x00, 0x20, 0x79, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x2a, 0x7a, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x30, 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x03, + 0x00, 0x2a, 0x7b, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0xd0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x2a, 0x7c, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x30, 0xd0, 0x7f, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x2a, 0x7d, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x07, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x04, 0x00, + 0x20, 0x7e, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x27, 0x30, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x04, 0x00, 0x20, 0x7f, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x43, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x06, 0x04, 0x00, 0x48, 0x80, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x47, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x06, 0x04, 0x00, 0x48, + 0x81, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4b, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x06, 0x04, 0x00, 0x48, 0x82, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4f, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x06, 0x04, 0x00, 0x48, 0x83, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0xfe, 0x04, 0x00, 0x38, 0x84, + 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x0a, 0x7f, 0x00, 0x00, 0xfe, 0x04, 0x00, 0x38, 0x85, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x12, 0x7f, 0x00, 0x00, 0xfe, 0x04, 0x00, 0x38, 0x86, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x1a, 0x7f, 0x00, 0x00, 0xfe, 0x04, 0x00, 0x38, 0x87, 0x00, + 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0x5a, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x28, 0x88, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x22, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x30, 0x89, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x22, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x30, 0x8a, 0x00, 0x02, + 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0x22, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x30, 0x8b, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x2a, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x30, 0x8c, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x2a, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x30, 0x8d, 0x00, 0x02, 0x02, + 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0x40, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x28, 0x8e, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0x42, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x28, 0x8f, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0xa2, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x30, 0x90, 0x00, 0x01, 0x02, 0x02, + 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0xa2, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x30, 0x91, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0xa2, 0x7f, 0x70, 0x00, 0xfe, 0x04, 0x00, 0x30, 0x92, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x10, 0x00, 0xe2, 0x7f, 0x70, 0xf0, 0xff, 0x04, 0x00, 0x20, 0x93, 0x00, 0x01, 0x02, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xc2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x28, 0x94, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xc2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x28, 0x95, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xd2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x28, 0x96, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xd2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x28, 0x97, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0xc2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x2a, 0x98, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x30, 0xc2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x2a, 0x99, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, + 0x00, 0x00, 0x53, 0x00, 0x20, 0xd2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x2a, 0x9a, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x30, 0xd2, 0x7f, 0x00, 0xf0, 0xff, 0x04, 0x00, 0x2a, 0x9b, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xe2, 0x7f, 0x70, 0xf0, 0xff, 0x04, 0x00, 0x22, 0x9c, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, + 0x00, 0x53, 0x00, 0x00, 0xf2, 0x7f, 0x70, 0xf0, 0xff, 0x04, 0x00, 0x22, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x07, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x90, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x07, 0x00, 0x00, 0x9f, 0x00, 0x0f, 0x10, 0x15, 0x00, 0x17, 0x00, 0x1d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0xa0, 0xa0, 0x00, 0x0f, 0x1a, 0x00, 0x00, 0x17, 0x26, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x20, 0xa1, 0x00, 0x0f, 0x1b, 0x00, 0x00, 0x17, 0x27, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x22, 0xa2, 0x00, 0x0f, 0x1a, 0x00, 0x00, 0x19, 0x26, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x20, 0xa3, 0x00, 0x0f, 0x1b, 0x00, 0x00, 0x19, 0x27, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x22, 0xa4, 0x00, 0x12, 0x1a, 0x00, 0x00, 0x17, 0x26, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x03, 0x00, 0x21, 0xa5, 0x00, 0x12, 0x1a, 0x00, 0x00, 0x19, 0x26, 0x00, 0x00, 0x00, 0xe0, + 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x03, 0x00, 0x21, 0xa6, 0x00, 0x12, 0x1b, 0x00, 0x00, 0x17, 0x27, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x04, 0x00, 0x20, 0xa7, 0x00, 0x12, 0x1b, 0x00, 0x00, 0x19, 0x27, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x04, 0x00, 0x20, 0xa8, 0x00, 0x11, 0x13, 0x00, 0x00, 0x15, 0x1b, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x20, 0xa9, 0x00, 0x11, 0x13, 0x00, 0x00, 0x15, 0x1b, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x22, 0xaa, 0x00, 0x11, 0x13, 0x00, 0x00, 0x15, 0x1b, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x20, 0xab, 0x00, 0x11, 0x17, 0x00, 0x00, 0x15, 0x1e, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, + 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x20, 0xac, 0x00, 0x10, 0x16, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x83, 0xef, 0x00, 0x00, 0x07, 0x00, 0x90, 0xad, 0x00, 0x0f, 0x14, 0x00, 0x00, 0x1a, 0x1c, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00, 0x07, 0x00, 0x20, 0xae, 0x00, 0x0f, 0x14, 0x00, 0x00, 0x1a, 0x1c, 0x00, 0x00, 0x01, 0x84, 0x00, 0x00, 0x03, + 0xec, 0x00, 0x00, 0x07, 0x00, 0x20, 0xaf, 0x00, 0x0f, 0x13, 0x00, 0x00, 0x1a, 0x1b, 0x00, 0x00, 0x01, 0x88, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00, 0x07, 0x00, 0x20, 0xb0, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x01, 0x8c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x00, 0x20, 0xb1, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x21, 0x8c, 0x00, 0x00, 0x63, 0xfc, + 0x00, 0x00, 0x07, 0x00, 0x20, 0xb2, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x41, 0x8c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x00, 0x20, 0xb3, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x61, 0x8c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x00, 0x20, 0xb4, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x01, 0x9c, 0x00, 0x00, 0x63, 0xfc, 0x00, + 0x00, 0x07, 0x00, 0x22, 0xb5, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x21, 0x9c, 0x00, 0x00, 0x63, 0xfc, 0x00, 0x00, 0x07, 0x00, 0x22, 0xb6, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x14, 0xb7, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, + 0x07, 0x00, 0x15, 0xb8, 0x00, 0x0f, 0x18, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x24, 0xb9, 0x00, 0x0f, 0x18, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x24, 0xba, 0x00, 0x11, 0x14, 0x00, 0x00, 0x15, 0x1c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, + 0x00, 0x20, 0xbb, 0x00, 0x11, 0x1c, 0x00, 0x00, 0x15, 0x28, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x20, 0xbc, 0x00, 0x11, 0x1d, 0x00, 0x00, 0x15, 0x29, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x22, 0xbd, 0x00, 0x01, 0x1c, 0x00, 0x00, 0x16, 0x20, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, + 0x20, 0xbe, 0x00, 0x01, 0x1d, 0x00, 0x00, 0x16, 0x21, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x22, 0xbf, 0x00, 0x02, 0x1d, 0x00, 0x00, 0x15, 0x29, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x04, 0x00, 0x20, 0xc0, 0x00, 0x02, 0x1d, 0x00, 0x00, 0x16, 0x21, 0x00, 0x00, 0x02, 0xa0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x04, 0x00, 0x20, + 0xc1, 0x00, 0x11, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x07, 0x00, 0x14, 0xc2, 0x00, 0x11, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x90, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x07, 0x00, 0x14, 0xc3, 0x00, 0x11, 0x11, 0x00, 0x00, 0x15, 0x16, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x07, 0x00, 0x20, 0xc4, + 0x00, 0x11, 0x11, 0x00, 0x00, 0x15, 0x16, 0x00, 0x00, 0x02, 0x90, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x07, 0x00, 0x20, 0xc5, 0x00, 0x02, 0x1c, 0x00, 0x00, 0x15, 0x28, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x03, 0x00, 0x21, 0xc6, 0x00, 0x02, 0x1c, 0x00, 0x00, 0x16, 0x20, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x03, 0x00, 0x21, 0xc7, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x20, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x08, 0x00, 0x30, 0xc8, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x40, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x08, 0x00, 0x30, 0xc9, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x60, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x08, 0x00, 0x30, 0xca, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x08, 0x7f, 0x70, 0x00, 0xfe, 0x08, 0x00, 0x32, 0xcb, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x20, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x08, 0x00, 0x32, 0xcc, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x40, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x08, 0x00, 0x32, 0xcd, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x60, 0x00, 0x20, 0x7f, 0x70, 0x00, 0xfe, 0x08, 0x00, 0x32, 0xce, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x1b, 0x10, 0x00, 0x08, 0x7f, 0x70, 0x00, 0xfc, 0x08, 0x00, 0x32, 0xcf, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x70, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xd0, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x60, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xd1, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x40, 0x00, 0x40, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xd2, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x13, 0x10, 0x00, 0x60, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x20, 0xd3, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x13, 0x10, 0x10, 0x60, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x20, 0xd4, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x13, 0x10, 0x20, 0x60, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x20, 0xd5, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x13, 0x10, 0x40, 0x60, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x20, 0xd6, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x13, 0x10, 0x50, 0x60, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x20, 0xd7, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x33, 0x40, 0x00, 0x08, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x21, 0xd7, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x3b, 0x40, 0x00, 0x08, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x22, 0xd8, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, + 0x03, 0x00, 0x33, 0x40, 0x00, 0x0a, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xd9, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x0a, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xda, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x60, 0x00, 0x0a, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xdb, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, + 0x00, 0x33, 0x70, 0x00, 0x0a, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xdc, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xdd, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x30, 0xde, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, + 0x13, 0x50, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xfc, 0x09, 0x00, 0x30, 0xdf, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x13, 0x50, 0x70, 0x28, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x20, 0xe0, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x13, 0x50, 0x80, 0x69, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x21, 0xe0, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x13, + 0x50, 0x80, 0x6b, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x22, 0xe1, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x1b, 0x10, 0x00, 0x60, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x22, 0xe2, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x1b, 0x10, 0x10, 0x60, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x22, 0xe3, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x1b, 0x10, + 0x20, 0x60, 0x7f, 0x70, 0xf0, 0xff, 0x09, 0x00, 0x22, 0xe4, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x10, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x32, 0xe5, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x3b, 0x50, 0x00, 0x60, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x32, 0xe6, 0x00, 0x01, 0x01, 0x05, 0x00, 0x01, 0x02, 0x05, 0x00, 0x1b, 0x50, 0x00, + 0x60, 0x7f, 0x70, 0x00, 0xfe, 0x09, 0x00, 0x32, 0xe7, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, 0x00, 0x0a, 0x7f, 0x70, 0x00, 0xfe, 0x0a, 0x00, 0x30, 0xe8, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x30, 0x00, 0x0a, 0x7f, 0x70, 0x00, 0xfe, 0x0a, 0x00, 0x30, 0xe9, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x20, 0x00, 0x0a, + 0x7f, 0x70, 0x00, 0xfe, 0x0a, 0x00, 0x30, 0xea, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, 0x00, 0x48, 0x7f, 0x70, 0x00, 0xfe, 0x0b, 0x00, 0x30, 0xeb, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x10, 0x00, 0x48, 0x7f, 0x70, 0x00, 0xfc, 0x0b, 0x00, 0x30, 0xec, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x48, 0x7f, + 0x70, 0x00, 0xfe, 0x0b, 0x00, 0x30, 0xed, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x50, 0x00, 0x48, 0x7f, 0x70, 0x00, 0xfc, 0x0b, 0x00, 0x30, 0xee, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, 0x00, 0x68, 0x7f, 0x70, 0x00, 0xfe, 0x0b, 0x00, 0x30, 0xef, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x10, 0x00, 0x68, 0x7f, 0x70, + 0x00, 0xfc, 0x0b, 0x00, 0x30, 0xf0, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x10, 0x00, 0x28, 0x7f, 0x70, 0x00, 0xfe, 0x0b, 0x00, 0x30, 0xf1, 0x00, 0x01, 0x01, 0x06, 0x00, 0x01, 0x02, 0x06, 0x00, 0x13, 0x10, 0x00, 0x28, 0x7f, 0x70, 0x00, 0xfc, 0x0b, 0x00, 0x30, 0xf2, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x50, 0x00, 0x0e, 0x7f, 0x70, 0x00, + 0xfe, 0x0c, 0x00, 0x30, 0xf3, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03, 0x00, 0x33, 0x70, 0x00, 0x0e, 0x7f, 0x70, 0x00, 0xfe, 0x0c, 0x00, 0x30, 0xf4, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, 0x0d, 0x00, 0x20, 0xf5, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0x7f, 0x70, 0x00, 0x00, + 0x0d, 0x00, 0x20, 0xf6, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x43, 0x00, 0x00, 0x04, 0x7f, 0x00, 0x00, 0x06, 0x0d, 0x00, 0x48, 0xf7, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x47, 0x00, 0x00, 0x04, 0x7f, 0x00, 0x00, 0x06, 0x0d, 0x00, 0x48, 0xf8, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4b, 0x00, 0x00, 0x04, 0x7f, 0x00, 0x00, 0x06, 0x0d, + 0x00, 0x48, 0xf9, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x4f, 0x00, 0x00, 0x04, 0x7f, 0x00, 0x00, 0x06, 0x0d, 0x00, 0x48, 0xfa, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x04, 0x7f, 0x00, 0x00, 0xfe, 0x0d, 0x00, 0x38, 0xfb, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x0c, 0x7f, 0x00, 0x00, 0xfe, 0x0d, 0x00, + 0x38, 0xfc, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x14, 0x7f, 0x00, 0x00, 0xfe, 0x0d, 0x00, 0x38, 0xfd, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x1c, 0x7f, 0x00, 0x00, 0xfe, 0x0d, 0x00, 0x38, 0xfe, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0x5c, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, + 0xff, 0x00, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x24, 0x7f, 0x70, 0x00, 0xfe, 0x0d, 0x00, 0x30, 0x00, 0x01, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x24, 0x7f, 0x70, 0x00, 0xfe, 0x0d, 0x00, 0x30, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0x24, 0x7f, 0x70, 0x00, 0xfe, 0x0d, 0x00, 0x30, 0x02, + 0x01, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0x2c, 0x7f, 0x70, 0x00, 0xfe, 0x0d, 0x00, 0x30, 0x03, 0x01, 0x02, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0x2c, 0x7f, 0x70, 0x00, 0xfe, 0x0d, 0x00, 0x30, 0x04, 0x01, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xc4, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, 0x05, 0x01, + 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xc4, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, 0x06, 0x01, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0xc4, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x2a, 0x07, 0x01, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x30, 0xc4, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x2a, 0x08, 0x01, 0x02, + 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xd4, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, 0x09, 0x01, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0xd4, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, 0x0a, 0x01, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0xd4, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x2a, 0x0b, 0x01, 0x02, 0x01, + 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x30, 0xd4, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x2a, 0x0c, 0x01, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0x40, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, 0x0d, 0x01, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0x44, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, 0x0e, 0x01, 0x02, 0x02, 0x00, + 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x20, 0x42, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, 0x0f, 0x01, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x10, 0x44, 0x7f, 0x00, 0xf0, 0xff, 0x0d, 0x00, 0x28, 0x10, 0x01, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xe4, 0x7f, 0x70, 0xf0, 0xff, 0x0d, 0x00, 0x20, 0x11, 0x01, 0x02, 0x01, 0x00, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x53, 0x00, 0x00, 0xf4, 0x7f, 0x70, 0xf0, 0xff, 0x0d, 0x00, 0x20, 0x12, 0x01, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x53, 0x10, 0x00, 0xe4, 0x7f, 0x70, 0xf0, 0xff, 0x0d, 0x00, 0x20, 0x13, 0x01, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x20, 0x00, 0xa4, 0x7f, 0x70, 0x00, 0xfe, 0x0d, 0x00, 0x30, 0x14, 0x01, 0x01, 0x02, 0x02, 0x00, 0x01, + 0x02, 0x03, 0x00, 0x53, 0x10, 0x00, 0xa4, 0x7f, 0x70, 0x00, 0xfe, 0x0d, 0x00, 0x30, 0x15, 0x01, 0x01, 0x02, 0x02, 0x00, 0x01, 0x02, 0x03, 0x00, 0x53, 0x00, 0x00, 0xa4, 0x7f, 0x70, 0x00, 0xfe, 0x0d, 0x00, 0x30, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x20, 0x30, 0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x04, 0x17, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x73, 0x00, 0x20, 0x10, 0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x04, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x50, 0x10, 0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x19, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x73, 0x00, 0x00, 0x12, 0xff, 0x7f, 0x00, 0xfe, 0x0e, 0x00, 0x20, }; -u8 const Asm_riscv::raw_clobber_forms[1782] = { +u8 const Asm_riscv::raw_clobber_forms[2547] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, @@ -712,5 +832,30 @@ u8 const Asm_riscv::raw_clobber_forms[1782] = { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x0e, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, +}; +u8 const Asm_riscv::raw_pseudo_aliases[696] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x04, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x01, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x19, 0x00, 0x01, 0x02, 0x06, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x24, 0x00, 0x01, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2e, 0x00, 0x01, 0x04, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x01, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1b, 0x00, 0x01, 0x02, 0x06, 0x00, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x18, 0x00, 0x01, 0x02, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x27, 0x00, 0x01, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x26, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x26, 0x00, 0x01, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x01, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x01, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x07, 0x00, 0x01, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x02, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x05, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x36, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x37, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x39, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3b, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x37, 0x00, 0x01, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x37, 0x00, 0x01, 0x07, 0x04, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x01, 0x00, 0x37, 0x00, 0x01, 0x07, 0x04, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x01, 0x00, 0x37, 0x00, 0x01, 0x07, + 0x04, 0x00, 0x00, 0x00, 0x80, 0x0c, 0x01, 0x01, 0x37, 0x00, 0x01, 0x07, 0x04, 0x00, 0x00, 0x00, 0x81, 0x0c, 0x01, 0x01, 0x37, 0x00, 0x01, 0x07, 0x04, 0x00, 0x00, 0x00, 0x82, 0x0c, 0x01, 0x01, 0x37, 0x00, 0x01, 0x07, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x36, 0x00, 0x01, 0x07, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x37, 0x00, 0x01, 0x07, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x36, 0x00, 0x01, 0x07, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x37, 0x00, 0x01, 0x07, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x36, 0x00, 0x01, 0x07, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x39, 0x00, 0x01, 0x07, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x39, 0x00, 0x01, 0x07, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x6a, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x88, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x89, 0x00, 0x01, 0x02, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x32, 0x00, 0x06, 0x06, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/src/check_asm.cpp b/src/check_asm.cpp index e7f4b6e75..27cc5a34f 100644 --- a/src/check_asm.cpp +++ b/src/check_asm.cpp @@ -844,6 +844,7 @@ gb_internal bool check_register(AsmCtx *asm_ctx, Operand *operand, AstAsmRegiste enum CheckMnemomicResult { CheckMnemomic_Invalid, CheckMnemomic_Mnemonic, + CheckMnemomic_PseudoMnemonic, CheckMnemomic_Prefix, }; @@ -862,6 +863,12 @@ gb_internal CheckMnemomicResult check_mnemonic_name(AsmCtx *asm_ctx, AstAsmInstr if (mnemonic_) *mnemonic_ = cast(u16)m; return CheckMnemomic_Mnemonic; } + auto pm = asm_ctx->pseudo_mnemonic_lookup(name); + if (pm) { + if (mnemonic_) *mnemonic_ = pm; + return CheckMnemomic_PseudoMnemonic; + } + ERROR_BLOCK(); if (instr->operands.count == 0) { @@ -913,13 +920,18 @@ struct AsmMnemonicAccumulator { template gb_internal void check_mnemonic(AsmCtx *asm_ctx, CheckerContext *ctx, Entity *tmpl_entity, AstAsmInstruction *instr, - u16 mnemonic, Slice const &operands, + u16 mnemonic, u16 pseudo_mnemonic, Slice const &operands, u8 previous_prefix, Ast *previous_prefix_instr, AsmMnemonicAccumulator *asm_acc) { GB_ASSERT(mnemonic > 0); auto forms = asm_ctx->encoding_forms(mnemonic); String name = asm_ctx->mnemonic_strings[mnemonic]; + auto alias = asm_ctx->pseudo_alias(cast(u16)pseudo_mnemonic); + if (pseudo_mnemonic) { + name = asm_ctx->pseudo_mnemonic_strings[pseudo_mnemonic]; + } + int min_count = I32_MAX; int max_count = -1; @@ -931,6 +943,14 @@ gb_internal void check_mnemonic(AsmCtx *asm_ctx, CheckerContext *ctx, Entity *tm min_count = gb_max(min_count, 0); max_count = gb_max(max_count, 0); + if (pseudo_mnemonic) { + int alias_count = alias.nargs; + GB_ASSERT_MSG(alias_count <= min_count, "%d <= %d", alias_count, min_count); + GB_ASSERT_MSG(alias_count <= max_count, "%d <= %d", alias_count, max_count); + min_count = gb_min(min_count, alias_count); + max_count = gb_min(max_count, alias_count); + } + // A prefix that none of this mnemonic's forms can take is unconditionally wrong, // independent of whether the operands match — catch it even on a match failure. if (previous_prefix > 0) { @@ -1862,7 +1882,19 @@ gb_internal void check_asm_template(AsmCtx *asm_ctx, CheckerContext *ctx, Entity previous_prefix = cast(u8)mnemonic; previous_prefix_instr = instruction_; } else if (res == CheckMnemomic_Mnemonic) { - check_mnemonic(asm_ctx, ctx, entity, instr, mnemonic, slice_from_array(operands), + check_mnemonic(asm_ctx, ctx, entity, instr, mnemonic, 0, slice_from_array(operands), + previous_prefix, previous_prefix_instr, + &asm_acc); + + asm_acc.saw_any_instructions = true; + + previous_prefix = 0; + previous_prefix_instr = nullptr; + } else if (res == CheckMnemomic_PseudoMnemonic) { + u16 pseudo_mnemonic = cast(u16)mnemonic; + auto alias = asm_ctx->pseudo_alias(cast(u16)pseudo_mnemonic); + u16 target_mnemonic = cast(u16)alias.target; + check_mnemonic(asm_ctx, ctx, entity, instr, target_mnemonic, pseudo_mnemonic, slice_from_array(operands), previous_prefix, previous_prefix_instr, &asm_acc); diff --git a/src/llvm_backend_asm.cpp b/src/llvm_backend_asm.cpp index 83f98f28f..cb58b3cfd 100644 --- a/src/llvm_backend_asm.cpp +++ b/src/llvm_backend_asm.cpp @@ -185,10 +185,6 @@ struct lbAsmGenerate { } virtual char instruction_size_suffix(AstAsmInstruction *instr) = 0; - // Some AT&T mnemonics encode BOTH operand widths and so cannot be spelled as a name plus one - // suffix: `movsx` from i8 to i32 is `movsbl`. Returns the complete mnemonic, or {} when the - // name-plus-suffix spelling is the right one - virtual String instruction_att_mnemonic(AstAsmInstruction *instr) = 0; virtual char size_suffix_for_operand(Ast *op) = 0; virtual gbString write_memory_operand(gbString asm_string, Slice const &op_number, AstAsmMemoryOperand *mem_op, u32 flags) = 0; virtual lbValue emit_call(lbProcedure *p, Array const &args) = 0; @@ -225,10 +221,14 @@ struct lbAsmGenerate_amd64 : lbAsmGenerate { } + // Some AT&T mnemonics encode BOTH operand widths and so cannot be spelled as a name plus one + // suffix: `movsx` from i8 to i32 is `movsbl`. Returns the complete mnemonic, or {} when the + // name-plus-suffix spelling is the right one + // // The sign/zero-extend family is the only one whose two operands differ in width. Its AT&T // mnemonic names both: `movsx` i8 -> i32 is `movsbl`, never `movsx` plus a suffix. `movsxd` is // the same rule, movs + l + q - String instruction_att_mnemonic(AstAsmInstruction *instr) override { + String instruction_att_mnemonic(AstAsmInstruction *instr) { bool sign_extend; switch (instr->mnemonic) { case Asm_amd64::M_MOVSX: @@ -826,7 +826,7 @@ gb_internal lbValue lb_emit_asm_template_call(lbProcedure *p, Entity *entity, Ar if (build_context.metrics.arch == TargetArch_amd64) { generator = &generator_amd64; } else { - compiler_error("Architecture does not support asm templates"); + compiler_error("Architecture does not support asm templates, yet"); } GB_ASSERT(generator != nullptr); generator->init(entity); diff --git a/src/parser.cpp b/src/parser.cpp index f9605cd47..572c638a2 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -2805,8 +2805,11 @@ gb_internal Ast *parse_asm_template(AstFile *f) { asm_instructions = slice_from_array(instructions); } - if (build_context.metrics.arch != TargetArch_amd64) { - syntax_error(token, "asm templates are currently only supported on -target:amd64"); + if (build_context.metrics.arch == TargetArch_amd64 || + build_context.metrics.arch == TargetArch_riscv64) { + // okay + } else { + syntax_error(token, "asm templates are currently only supported on -target:*_amd64 or -target:*_riscv64"); } Ast *asm_template = alloc_ast_node(f, Ast_AsmTemplate);