use min_infmachine_lltk::builder::*;
use min_infmachine_lltk::handler_builder::*;
use min_infmachine_lltk::*;
#[test]
fn test_handler_builder_longdata_safe_ldh() {
let mut builder = mi_simple_hbuilder_new_1_safe_ldh(None, Some("ma_check_fix"), None);
builder.add_longdata_handler("md", false, 1);
builder.ld_call_01("md", (&[143, 54], 0, 0), MINF_MR);
builder.i(MINF_STOP);
{
let (func1b, ret) = builder.add_routine("ma_check_fix", true);
let mut func1b = func1b.borrow_mut();
func1b.i(MINF_MR);
func1b.i(MINF_TBRF);
func1b.i(MINF_TBB);
func1b.i((MINF_TBRW1, MINF_TBRW0, ret));
}
assert_eq!(
(
vec![
MinInfInstr::new(MINF_MR, MINF_MR, 51, 51),
(MINF_MR, MINF_MR, 47, 47).into(),
(MINF_STOP, MINF_STOP, 3, 3).into(),
(MINF_MARW1, MINF_MARW1, 4, 4).into(),
(MINF_MARF, MINF_MARF, 5, 5).into(),
(MINF_MARW1, MINF_MARW1, 6, 6).into(),
(MINF_MARF, MINF_MARF, 7, 7).into(),
(MINF_MARW0, MINF_MARW0, 8, 8).into(),
(MINF_MARF, MINF_MARF, 9, 9).into(),
(MINF_MARW0, MINF_MARW0, 10, 10).into(),
(MINF_MARF, MINF_MARF, 12, 12).into(),
(MINF_MR, MINF_MR, 3, 3).into(),
(MINF_MR, MINF_MR, 44, 44).into(),
(MINF_MARW0, MINF_MARW0, 14, 14).into(),
(MINF_MARF, MINF_MARF, 15, 15).into(),
(MINF_MARW1, MINF_MARW1, 16, 16).into(),
(MINF_MARF, MINF_MARF, 17, 17).into(),
(MINF_MARW1, MINF_MARW1, 18, 18).into(),
(MINF_MARF, MINF_MARF, 19, 19).into(),
(MINF_MARW0, MINF_MARW0, 20, 20).into(),
(MINF_MARF, MINF_MARF, 22, 22).into(),
(MINF_MR, MINF_MR, 13, 13).into(),
(MINF_MR, MINF_MR, 11, 11).into(),
(MINF_MARW0, MINF_MARW0, 24, 24).into(),
(MINF_MARF, MINF_MARF, 25, 25).into(),
(MINF_MARW0, MINF_MARW0, 26, 26).into(),
(MINF_MARF, MINF_MARF, 27, 27).into(),
(MINF_MARW0, MINF_MARW0, 28, 28).into(),
(MINF_MARF, MINF_MARF, 29, 29).into(),
(MINF_MARW1, MINF_MARW1, 30, 30).into(),
(MINF_MARF, MINF_MARF, 32, 32).into(),
(MINF_MR, MINF_MR, 23, 23).into(),
(MINF_MR, MINF_MR, 46, 46).into(),
(MINF_MARW1, MINF_MARW1, 34, 34).into(),
(MINF_MARF, MINF_MARF, 35, 35).into(),
(MINF_MARW1, MINF_MARW1, 36, 36).into(),
(MINF_MARF, MINF_MARF, 37, 37).into(),
(MINF_MARW1, MINF_MARW1, 38, 38).into(),
(MINF_MARF, MINF_MARF, 39, 39).into(),
(MINF_MARW1, MINF_MARW1, 40, 40).into(),
(MINF_MARF, MINF_MARF, 42, 42).into(),
(MINF_MR, MINF_MR, 33, 33).into(),
(MINF_MR, MINF_MR, 31, 31).into(),
(MINF_MR, MINF_MR, 21, 21).into(),
(MINF_MR, MINF_MR, 48, 48).into(),
(MINF_MR, MINF_MR, 41, 41).into(),
(MINF_MR, MINF_MR, 43, 43).into(),
(MINF_MR, MINF_MR, 45, 45).into(),
(MINF_MR, MINF_MR, 2, 2).into(),
(MINF_MR, MINF_MR, 53, 53).into(),
(MINF_MR, MINF_MR, 64, 64).into(),
(MINF_MR, MINF_MR, 57, 57).into(),
(MINF_MR, MINF_MR, 1, 1).into(),
(MINF_MR, MINF_MR, 54, 54).into(),
(MINF_TBRF, MINF_TBRF, 55, 55).into(),
(MINF_TBB, MINF_TBB, 56, 56).into(),
(MINF_TBRW1, MINF_TBRW0, 50, 50).into(),
(MINF_MARW1, MINF_MARW1, 58, 58).into(),
(MINF_MARF, MINF_MARF, 59, 59).into(),
(MINF_MARW0, MINF_MARW0, 60, 60).into(),
(MINF_MARF, MINF_MARF, 61, 61).into(),
(MINF_MARW1, MINF_MARW1, 62, 62).into(),
(MINF_MARF, MINF_MARF, 63, 63).into(),
(MINF_MR, MINF_MR, 49, 49).into(),
(MINF_MR, MINF_MR, 52, 52).into(),
],
vec![
("ma_check_fix".to_string(), 53),
("ma_check_fix:md".to_string(), 57),
("ma_check_fix:md_0_putret_x_0".to_string(), 51),
("ma_check_fix:md_after_ret_0".to_string(), 1),
("ma_check_fix:md_return".to_string(), 52),
("ma_check_fix_0_putret_x_0".to_string(), 49),
("ma_check_fix_after_ret_0".to_string(), 64),
("ma_check_fix_return".to_string(), 50),
("md_chunk_368f_16_0_putret_x_0".to_string(), 47),
("md_chunk_368f_16_return".to_string(), 48),
("md_chunk_36_8_0_putret_x_0".to_string(), 43),
("md_chunk_36_8_return".to_string(), 44),
("md_chunk_3_4".to_string(), 3),
("md_chunk_3_4_0_putret_x_0".to_string(), 11),
("md_chunk_3_4_return".to_string(), 12),
("md_chunk_6_4".to_string(), 13),
("md_chunk_6_4_0_putret_x_0".to_string(), 21),
("md_chunk_6_4_return".to_string(), 22),
("md_chunk_8_4".to_string(), 23),
("md_chunk_8_4_0_putret_x_0".to_string(), 31),
("md_chunk_8_4_return".to_string(), 32),
("md_chunk_8f_8_0_putret_x_0".to_string(), 45),
("md_chunk_8f_8_return".to_string(), 46),
("md_chunk_f_4".to_string(), 33),
("md_chunk_f_4_0_putret_x_0".to_string(), 41),
("md_chunk_f_4_return".to_string(), 42),
("md_next_0".to_string(), 2),
]
),
builder.to_code()
);
let mut builder = mi_simple_hbuilder_new_1_safe_ldh(None, Some("ma_check_fix"), None);
builder.add_longdata_handler("md", false, 1);
builder.ld_call_01(
"md",
(
&[0xaa, 0xba, 0x56, 0x51, 0x84, 0xc5, 0xd3, 0xba, 0x56, 0x51],
0xc,
4,
),
MINF_MR,
);
builder.ld_call_01("md", (&[0x22, 0x33], 0, 0), MINF_MR);
builder.i(MINF_STOP);
{
let (func1b, ret) = builder.add_routine("ma_check_fix", true);
let mut func1b = func1b.borrow_mut();
func1b.i(MINF_MR);
func1b.i(MINF_TBRF);
func1b.i(MINF_TBB);
func1b.i((MINF_TBRW1, MINF_TBRW0, ret));
}
assert_eq!(
(
vec![
MinInfInstr::new(MINF_MR, MINF_MR, 217, 217),
(MINF_MR, MINF_MR, 213, 213).into(),
(MINF_MR, MINF_MR, 192, 192).into(),
(MINF_STOP, MINF_STOP, 4, 4).into(),
(MINF_MARW1, MINF_MARW1, 5, 5).into(),
(MINF_MARF, MINF_MARF, 6, 6).into(),
(MINF_MARW0, MINF_MARW0, 7, 7).into(),
(MINF_MARF, MINF_MARF, 8, 8).into(),
(MINF_MARW0, MINF_MARW0, 9, 9).into(),
(MINF_MARF, MINF_MARF, 10, 10).into(),
(MINF_MARW0, MINF_MARW0, 11, 11).into(),
(MINF_MARF, MINF_MARF, 13, 13).into(),
(MINF_MR, MINF_MR, 4, 4).into(),
(MINF_MR, MINF_MR, 74, 74).into(),
(MINF_MARW0, MINF_MARW0, 15, 15).into(),
(MINF_MARF, MINF_MARF, 16, 16).into(),
(MINF_MARW1, MINF_MARW1, 17, 17).into(),
(MINF_MARF, MINF_MARF, 18, 18).into(),
(MINF_MARW0, MINF_MARW0, 19, 19).into(),
(MINF_MARF, MINF_MARF, 20, 20).into(),
(MINF_MARW0, MINF_MARW0, 21, 21).into(),
(MINF_MARF, MINF_MARF, 26, 26).into(),
(MINF_TBRW0, MINF_TBRW0, 23, 23).into(),
(MINF_TBRF, MINF_TBRF, 14, 14).into(),
(MINF_TBRW1, MINF_TBRW1, 25, 25).into(),
(MINF_TBRF, MINF_TBRF, 14, 14).into(),
(MINF_TBB, MINF_TBB, 27, 27).into(),
(MINF_TBRW0, MINF_TBRW0, 28, 28).into(),
(MINF_MR, MINF_MR, 24, 170).into(),
(MINF_MARW1, MINF_MARW1, 30, 30).into(),
(MINF_MARF, MINF_MARF, 31, 31).into(),
(MINF_MARW1, MINF_MARW1, 32, 32).into(),
(MINF_MARF, MINF_MARF, 33, 33).into(),
(MINF_MARW0, MINF_MARW0, 34, 34).into(),
(MINF_MARF, MINF_MARF, 35, 35).into(),
(MINF_MARW0, MINF_MARW0, 36, 36).into(),
(MINF_MARF, MINF_MARF, 47, 47).into(),
(MINF_TBRW0, MINF_TBRW0, 38, 38).into(),
(MINF_TBRF, MINF_TBRF, 43, 43).into(),
(MINF_TBRW1, MINF_TBRW1, 40, 40).into(),
(MINF_TBRF, MINF_TBRF, 43, 43).into(),
(MINF_TBRW0, MINF_TBRW0, 42, 42).into(),
(MINF_TBRF, MINF_TBRF, 45, 45).into(),
(MINF_TBRW0, MINF_TBRW0, 44, 44).into(),
(MINF_TBRF, MINF_TBRF, 29, 29).into(),
(MINF_TBRW1, MINF_TBRW1, 46, 46).into(),
(MINF_TBRF, MINF_TBRF, 29, 29).into(),
(MINF_TBB, MINF_TBB, 48, 48).into(),
(MINF_TBRW0, MINF_TBRW0, 49, 49).into(),
(MINF_TBB, MINF_TBB, 50, 52).into(),
(MINF_TBRW0, MINF_TBRW0, 51, 51).into(),
(MINF_MR, MINF_MR, 167, 41).into(),
(MINF_TBRW0, MINF_TBRW0, 53, 53).into(),
(MINF_MR, MINF_MR, 172, 172).into(),
(MINF_MARW0, MINF_MARW0, 55, 55).into(),
(MINF_MARF, MINF_MARF, 56, 56).into(),
(MINF_MARW0, MINF_MARW0, 57, 57).into(),
(MINF_MARF, MINF_MARF, 58, 58).into(),
(MINF_MARW1, MINF_MARW1, 59, 59).into(),
(MINF_MARF, MINF_MARF, 60, 60).into(),
(MINF_MARW0, MINF_MARW0, 61, 61).into(),
(MINF_MARF, MINF_MARF, 63, 63).into(),
(MINF_MR, MINF_MR, 54, 54).into(),
(MINF_MR, MINF_MR, 107, 107).into(),
(MINF_MARW1, MINF_MARW1, 65, 65).into(),
(MINF_MARF, MINF_MARF, 66, 66).into(),
(MINF_MARW0, MINF_MARW0, 67, 67).into(),
(MINF_MARF, MINF_MARF, 68, 68).into(),
(MINF_MARW1, MINF_MARW1, 69, 69).into(),
(MINF_MARF, MINF_MARF, 70, 70).into(),
(MINF_MARW0, MINF_MARW0, 71, 71).into(),
(MINF_MARF, MINF_MARF, 82, 82).into(),
(MINF_TBRW0, MINF_TBRW0, 73, 73).into(),
(MINF_TBRF, MINF_TBRF, 78, 78).into(),
(MINF_TBRW1, MINF_TBRW1, 75, 75).into(),
(MINF_TBRF, MINF_TBRF, 78, 78).into(),
(MINF_TBRW0, MINF_TBRW0, 77, 77).into(),
(MINF_TBRF, MINF_TBRF, 80, 80).into(),
(MINF_TBRW0, MINF_TBRW0, 79, 79).into(),
(MINF_TBRF, MINF_TBRF, 64, 64).into(),
(MINF_TBRW1, MINF_TBRW1, 81, 81).into(),
(MINF_TBRF, MINF_TBRF, 64, 64).into(),
(MINF_TBB, MINF_TBB, 83, 83).into(),
(MINF_TBRW0, MINF_TBRW0, 84, 84).into(),
(MINF_TBB, MINF_TBB, 85, 87).into(),
(MINF_TBRW0, MINF_TBRW0, 86, 86).into(),
(MINF_MR, MINF_MR, 176, 174).into(),
(MINF_TBRW0, MINF_TBRW0, 88, 88).into(),
(MINF_MR, MINF_MR, 152, 152).into(),
(MINF_MARW0, MINF_MARW0, 90, 90).into(),
(MINF_MARF, MINF_MARF, 91, 91).into(),
(MINF_MARW1, MINF_MARW1, 92, 92).into(),
(MINF_MARF, MINF_MARF, 93, 93).into(),
(MINF_MARW1, MINF_MARW1, 94, 94).into(),
(MINF_MARF, MINF_MARF, 95, 95).into(),
(MINF_MARW0, MINF_MARW0, 96, 96).into(),
(MINF_MARF, MINF_MARF, 98, 98).into(),
(MINF_MR, MINF_MR, 89, 89).into(),
(MINF_MR, MINF_MR, 72, 72).into(),
(MINF_MARW0, MINF_MARW0, 100, 100).into(),
(MINF_MARF, MINF_MARF, 101, 101).into(),
(MINF_MARW0, MINF_MARW0, 102, 102).into(),
(MINF_MARF, MINF_MARF, 103, 103).into(),
(MINF_MARW0, MINF_MARW0, 104, 104).into(),
(MINF_MARF, MINF_MARF, 105, 105).into(),
(MINF_MARW1, MINF_MARW1, 106, 106).into(),
(MINF_MARF, MINF_MARF, 108, 108).into(),
(MINF_MR, MINF_MR, 99, 99).into(),
(MINF_MR, MINF_MR, 178, 178).into(),
(MINF_MARW0, MINF_MARW0, 110, 110).into(),
(MINF_MARF, MINF_MARF, 111, 111).into(),
(MINF_MARW1, MINF_MARW1, 112, 112).into(),
(MINF_MARF, MINF_MARF, 113, 113).into(),
(MINF_MARW0, MINF_MARW0, 114, 114).into(),
(MINF_MARF, MINF_MARF, 115, 115).into(),
(MINF_MARW1, MINF_MARW1, 116, 116).into(),
(MINF_MARF, MINF_MARF, 127, 127).into(),
(MINF_TBRW0, MINF_TBRW0, 118, 118).into(),
(MINF_TBRF, MINF_TBRF, 123, 123).into(),
(MINF_TBRW1, MINF_TBRW1, 120, 120).into(),
(MINF_TBRF, MINF_TBRF, 123, 123).into(),
(MINF_TBRW0, MINF_TBRW0, 122, 122).into(),
(MINF_TBRF, MINF_TBRF, 125, 125).into(),
(MINF_TBRW0, MINF_TBRW0, 124, 124).into(),
(MINF_TBRF, MINF_TBRF, 109, 109).into(),
(MINF_TBRW1, MINF_TBRW1, 126, 126).into(),
(MINF_TBRF, MINF_TBRF, 109, 109).into(),
(MINF_TBB, MINF_TBB, 128, 128).into(),
(MINF_TBRW0, MINF_TBRW0, 129, 129).into(),
(MINF_TBB, MINF_TBB, 130, 132).into(),
(MINF_TBRW0, MINF_TBRW0, 131, 131).into(),
(MINF_MR, MINF_MR, 119, 180).into(),
(MINF_TBRW0, MINF_TBRW0, 133, 133).into(),
(MINF_MR, MINF_MR, 142, 142).into(),
(MINF_MARW1, MINF_MARW1, 135, 135).into(),
(MINF_MARF, MINF_MARF, 136, 136).into(),
(MINF_MARW1, MINF_MARW1, 137, 137).into(),
(MINF_MARF, MINF_MARF, 138, 138).into(),
(MINF_MARW0, MINF_MARW0, 139, 139).into(),
(MINF_MARF, MINF_MARF, 140, 140).into(),
(MINF_MARW1, MINF_MARW1, 141, 141).into(),
(MINF_MARF, MINF_MARF, 143, 143).into(),
(MINF_MR, MINF_MR, 134, 134).into(),
(MINF_MR, MINF_MR, 185, 185).into(),
(MINF_MARW0, MINF_MARW0, 145, 145).into(),
(MINF_MARF, MINF_MARF, 146, 146).into(),
(MINF_MARW0, MINF_MARW0, 147, 147).into(),
(MINF_MARF, MINF_MARF, 148, 148).into(),
(MINF_MARW1, MINF_MARW1, 149, 149).into(),
(MINF_MARF, MINF_MARF, 150, 150).into(),
(MINF_MARW1, MINF_MARW1, 151, 151).into(),
(MINF_MARF, MINF_MARF, 156, 156).into(),
(MINF_TBRW0, MINF_TBRW0, 153, 153).into(),
(MINF_TBRF, MINF_TBRF, 144, 144).into(),
(MINF_TBRW1, MINF_TBRW1, 155, 155).into(),
(MINF_TBRF, MINF_TBRF, 144, 144).into(),
(MINF_TBB, MINF_TBB, 157, 157).into(),
(MINF_TBRW0, MINF_TBRW0, 158, 158).into(),
(MINF_MR, MINF_MR, 189, 208).into(),
(MINF_MARW1, MINF_MARW1, 160, 160).into(),
(MINF_MARF, MINF_MARF, 161, 161).into(),
(MINF_MARW0, MINF_MARW0, 162, 162).into(),
(MINF_MARF, MINF_MARF, 163, 163).into(),
(MINF_MARW1, MINF_MARW1, 164, 164).into(),
(MINF_MARF, MINF_MARF, 165, 165).into(),
(MINF_MARW1, MINF_MARW1, 166, 166).into(),
(MINF_MARF, MINF_MARF, 168, 168).into(),
(MINF_MR, MINF_MR, 159, 159).into(),
(MINF_MR, MINF_MR, 191, 191).into(),
(MINF_MR, MINF_MR, 22, 22).into(),
(MINF_MR, MINF_MR, 171, 171).into(),
(MINF_MR, MINF_MR, 39, 39).into(),
(MINF_MR, MINF_MR, 193, 193).into(),
(MINF_MR, MINF_MR, 12, 12).into(),
(MINF_MR, MINF_MR, 198, 198).into(),
(MINF_MR, MINF_MR, 97, 97).into(),
(MINF_MR, MINF_MR, 173, 173).into(),
(MINF_MR, MINF_MR, 62, 62).into(),
(MINF_MR, MINF_MR, 188, 188).into(),
(MINF_MR, MINF_MR, 117, 117).into(),
(MINF_MR, MINF_MR, 181, 181).into(),
(MINF_TBRW0, MINF_TBRW0, 182, 182).into(),
(MINF_TBRF, MINF_TBRF, 121, 121).into(),
(MINF_TBRW1, MINF_TBRW1, 184, 184).into(),
(MINF_TBRF, MINF_TBRF, 121, 121).into(),
(MINF_TBB, MINF_TBB, 186, 186).into(),
(MINF_TBRW0, MINF_TBRW0, 187, 187).into(),
(MINF_MR, MINF_MR, 202, 204).into(),
(MINF_MR, MINF_MR, 76, 76).into(),
(MINF_MR, MINF_MR, 206, 206).into(),
(MINF_MR, MINF_MR, 37, 37).into(),
(MINF_MR, MINF_MR, 183, 183).into(),
(MINF_MR, MINF_MR, 169, 169).into(),
(MINF_MR, MINF_MR, 3, 3).into(),
(MINF_TBRW0, MINF_TBRW0, 195, 195).into(),
(MINF_TBRF, MINF_TBRF, 175, 175).into(),
(MINF_TBRW1, MINF_TBRW1, 197, 197).into(),
(MINF_TBRF, MINF_TBRF, 175, 175).into(),
(MINF_TBB, MINF_TBB, 199, 199).into(),
(MINF_TBRW0, MINF_TBRW0, 200, 200).into(),
(MINF_MR, MINF_MR, 210, 154).into(),
(MINF_MR, MINF_MR, 179, 179).into(),
(MINF_MR, MINF_MR, 194, 194).into(),
(MINF_MR, MINF_MR, 190, 190).into(),
(MINF_MR, MINF_MR, 212, 212).into(),
(MINF_MR, MINF_MR, 177, 177).into(),
(MINF_MR, MINF_MR, 203, 203).into(),
(MINF_MR, MINF_MR, 196, 196).into(),
(MINF_MR, MINF_MR, 2, 2).into(),
(MINF_MR, MINF_MR, 201, 201).into(),
(MINF_MR, MINF_MR, 211, 211).into(),
(MINF_MR, MINF_MR, 205, 205).into(),
(MINF_MR, MINF_MR, 214, 214).into(),
(MINF_MR, MINF_MR, 209, 209).into(),
(MINF_MR, MINF_MR, 207, 207).into(),
(MINF_MR, MINF_MR, 219, 219).into(),
(MINF_MR, MINF_MR, 234, 234).into(),
(MINF_MR, MINF_MR, 223, 223).into(),
(MINF_MR, MINF_MR, 1, 1).into(),
(MINF_MR, MINF_MR, 220, 220).into(),
(MINF_TBRF, MINF_TBRF, 221, 221).into(),
(MINF_TBB, MINF_TBB, 222, 222).into(),
(MINF_TBRW1, MINF_TBRW0, 216, 216).into(),
(MINF_MARW1, MINF_MARW1, 224, 224).into(),
(MINF_MARF, MINF_MARF, 225, 225).into(),
(MINF_MARW1, MINF_MARW1, 226, 226).into(),
(MINF_MARF, MINF_MARF, 227, 227).into(),
(MINF_MARW0, MINF_MARW0, 228, 228).into(),
(MINF_MARF, MINF_MARF, 229, 229).into(),
(MINF_MARW1, MINF_MARW1, 230, 230).into(),
(MINF_MARF, MINF_MARF, 231, 231).into(),
(MINF_MARW1, MINF_MARW1, 232, 232).into(),
(MINF_MARF, MINF_MARF, 233, 233).into(),
(MINF_MR, MINF_MR, 215, 215).into(),
(MINF_MR, MINF_MR, 218, 218).into(),
],
vec![
("ma_check_fix".to_string(), 219),
("ma_check_fix:md".to_string(), 223),
("ma_check_fix:md_0_putret_x_0".to_string(), 217),
("ma_check_fix:md_after_ret_0".to_string(), 1),
("ma_check_fix:md_return".to_string(), 218),
("ma_check_fix_0_putret_x_0".to_string(), 215),
("ma_check_fix_after_ret_0".to_string(), 234),
("ma_check_fix_return".to_string(), 216),
("md_chunk_1_4".to_string(), 4),
("md_chunk_1_4_0_putret_x_0".to_string(), 12),
("md_chunk_1_4_return".to_string(), 13),
("md_chunk_22_8_0_putret_x_0".to_string(), 169),
("md_chunk_22_8_return".to_string(), 170),
("md_chunk_2_4".to_string(), 14),
("md_chunk_2_4_0_putret_x_0".to_string(), 22),
("md_chunk_2_4_0_putret_x_1".to_string(), 24),
("md_chunk_2_4_return".to_string(), 26),
("md_chunk_2_4_return_id_0_0".to_string(), 27),
("md_chunk_3322_16_0_putret_x_0".to_string(), 192),
("md_chunk_3322_16_return".to_string(), 193),
("md_chunk_33_8_0_putret_x_0".to_string(), 171),
("md_chunk_33_8_return".to_string(), 172),
("md_chunk_3_4".to_string(), 29),
("md_chunk_3_4_0_putret_1_0".to_string(), 43),
("md_chunk_3_4_0_putret_1_1".to_string(), 45),
("md_chunk_3_4_0_putret_x_0".to_string(), 37),
("md_chunk_3_4_0_putret_x_1".to_string(), 39),
("md_chunk_3_4_0_putret_x_10".to_string(), 41),
("md_chunk_3_4_return".to_string(), 47),
("md_chunk_3_4_return_id_0_0".to_string(), 48),
("md_chunk_3_4_return_id_1_0".to_string(), 50),
("md_chunk_3_4_return_id_1_1".to_string(), 52),
("md_chunk_4_4".to_string(), 54),
("md_chunk_4_4_0_putret_x_0".to_string(), 62),
("md_chunk_4_4_return".to_string(), 63),
("md_chunk_5156_16_0_putret_x_0".to_string(), 194),
("md_chunk_5156_16_0_putret_x_1".to_string(), 196),
("md_chunk_5156_16_return".to_string(), 198),
("md_chunk_5156_16_return_id_0_0".to_string(), 199),
("md_chunk_5156baaa_32_0_putret_x_0".to_string(), 209),
("md_chunk_5156baaa_32_return".to_string(), 210),
("md_chunk_51_8_0_putret_x_0".to_string(), 173),
("md_chunk_51_8_return".to_string(), 174),
("md_chunk_56_8_0_putret_x_0".to_string(), 175),
("md_chunk_56_8_return".to_string(), 176),
("md_chunk_5_4".to_string(), 64),
("md_chunk_5_4_0_putret_1_0".to_string(), 78),
("md_chunk_5_4_0_putret_1_1".to_string(), 80),
("md_chunk_5_4_0_putret_x_0".to_string(), 72),
("md_chunk_5_4_0_putret_x_1".to_string(), 74),
("md_chunk_5_4_0_putret_x_10".to_string(), 76),
("md_chunk_5_4_return".to_string(), 82),
("md_chunk_5_4_return_id_0_0".to_string(), 83),
("md_chunk_5_4_return_id_1_0".to_string(), 85),
("md_chunk_5_4_return_id_1_1".to_string(), 87),
("md_chunk_6_4".to_string(), 89),
("md_chunk_6_4_0_putret_x_0".to_string(), 97),
("md_chunk_6_4_return".to_string(), 98),
("md_chunk_84_8_0_putret_x_0".to_string(), 177),
("md_chunk_84_8_return".to_string(), 178),
("md_chunk_8_4".to_string(), 99),
("md_chunk_8_4_0_putret_x_0".to_string(), 107),
("md_chunk_8_4_return".to_string(), 108),
("md_chunk_a_4".to_string(), 109),
("md_chunk_a_4_0_putret_1_0".to_string(), 123),
("md_chunk_a_4_0_putret_1_1".to_string(), 125),
("md_chunk_a_4_0_putret_x_0".to_string(), 117),
("md_chunk_a_4_0_putret_x_1".to_string(), 119),
("md_chunk_a_4_0_putret_x_10".to_string(), 121),
("md_chunk_a_4_return".to_string(), 127),
("md_chunk_a_4_return_id_0_0".to_string(), 128),
("md_chunk_a_4_return_id_1_0".to_string(), 130),
("md_chunk_a_4_return_id_1_1".to_string(), 132),
("md_chunk_aa_8_0_putret_x_0".to_string(), 179),
("md_chunk_aa_8_return".to_string(), 180),
("md_chunk_b_4".to_string(), 134),
("md_chunk_b_4_0_putret_x_0".to_string(), 142),
("md_chunk_b_4_return".to_string(), 143),
("md_chunk_ba_8_0_putret_x_0".to_string(), 181),
("md_chunk_ba_8_0_putret_x_1".to_string(), 183),
("md_chunk_ba_8_return".to_string(), 185),
("md_chunk_ba_8_return_id_0_0".to_string(), 186),
("md_chunk_baaa_16_0_putret_x_0".to_string(), 201),
("md_chunk_baaa_16_return".to_string(), 202),
("md_chunk_bad3_16_0_putret_x_0".to_string(), 203),
("md_chunk_bad3_16_return".to_string(), 204),
("md_chunk_bad3c5845156baaa_64_0_putret_x_0".to_string(), 213),
("md_chunk_bad3c5845156baaa_64_return".to_string(), 214),
("md_chunk_bad3c584_32_0_putret_x_0".to_string(), 211),
("md_chunk_bad3c584_32_return".to_string(), 212),
("md_chunk_c5156_20_0_putret_x_0".to_string(), 207),
("md_chunk_c5156_20_return".to_string(), 208),
("md_chunk_c584_16_0_putret_x_0".to_string(), 205),
("md_chunk_c584_16_return".to_string(), 206),
("md_chunk_c5_8_0_putret_x_0".to_string(), 188),
("md_chunk_c5_8_return".to_string(), 189),
("md_chunk_c_4".to_string(), 144),
("md_chunk_c_4_0_putret_x_0".to_string(), 152),
("md_chunk_c_4_0_putret_x_1".to_string(), 154),
("md_chunk_c_4_return".to_string(), 156),
("md_chunk_c_4_return_id_0_0".to_string(), 157),
("md_chunk_d3_8_0_putret_x_0".to_string(), 190),
("md_chunk_d3_8_return".to_string(), 191),
("md_chunk_d_4".to_string(), 159),
("md_chunk_d_4_0_putret_x_0".to_string(), 167),
("md_chunk_d_4_return".to_string(), 168),
("md_next_0".to_string(), 2),
("md_next_1".to_string(), 3),
]
),
builder.to_code()
);
}
#[test]
fn test_handler_builder_longdata_safe_ldh_req_bits_checks() {
let mut builder = mi_simple_hbuilder_new_safe_ldh(None, Some(2), Some("ma_check_fix"), None);
builder.add_longdata_handler("md", false, 1);
builder.ld_call_01(
"md",
(
&[
0xab, 0xba, 0xaa, 0xbb, 0xbb, 0xba, 0xba, 0xaa, 0xbb, 0xaa, 0x1a, 0xb1,
],
0,
0,
),
MINF_MR,
);
builder.i(MINF_STOP);
{
let (func1b, ret) = builder.add_routine("ma_check_fix", true);
let mut func1b = func1b.borrow_mut();
func1b.i(MINF_MR);
func1b.i(MINF_TBRF);
func1b.i(MINF_TBB);
func1b.i((MINF_TBRW1, MINF_TBRW0, ret));
}
assert_eq!(
(
vec![
MinInfInstr::new(MINF_MR, MINF_MR, 186, 186),
(MINF_MR, MINF_MR, 175, 175).into(),
(MINF_STOP, MINF_STOP, 3, 3).into(),
(MINF_MARW1, MINF_MARW1, 4, 4).into(),
(MINF_MARF, MINF_MARF, 5, 5).into(),
(MINF_MARW0, MINF_MARW0, 6, 6).into(),
(MINF_MARF, MINF_MARF, 7, 7).into(),
(MINF_MARW0, MINF_MARW0, 8, 8).into(),
(MINF_MARF, MINF_MARF, 9, 9).into(),
(MINF_MARW0, MINF_MARW0, 10, 10).into(),
(MINF_MARF, MINF_MARF, 15, 15).into(),
(MINF_TBRW0, MINF_TBRW0, 12, 12).into(),
(MINF_TBRF, MINF_TBRF, 3, 3).into(),
(MINF_TBRW1, MINF_TBRW1, 14, 14).into(),
(MINF_TBRF, MINF_TBRF, 3, 3).into(),
(MINF_TBB, MINF_TBB, 16, 16).into(),
(MINF_TBRW0, MINF_TBRW0, 17, 17).into(),
(MINF_MR, MINF_MR, 101, 75).into(),
(MINF_MARW0, MINF_MARW0, 19, 19).into(),
(MINF_MARF, MINF_MARF, 20, 20).into(),
(MINF_MARW1, MINF_MARW1, 21, 21).into(),
(MINF_MARF, MINF_MARF, 22, 22).into(),
(MINF_MARW0, MINF_MARW0, 23, 23).into(),
(MINF_MARF, MINF_MARF, 24, 24).into(),
(MINF_MARW1, MINF_MARW1, 25, 25).into(),
(MINF_MARF, MINF_MARF, 46, 46).into(),
(MINF_TBRW0, MINF_TBRW0, 27, 27).into(),
(MINF_TBRF, MINF_TBRF, 36, 36).into(),
(MINF_TBRW1, MINF_TBRW1, 29, 29).into(),
(MINF_TBRF, MINF_TBRF, 36, 36).into(),
(MINF_TBRW0, MINF_TBRW0, 31, 31).into(),
(MINF_TBRF, MINF_TBRF, 38, 38).into(),
(MINF_TBRW1, MINF_TBRW1, 33, 33).into(),
(MINF_TBRF, MINF_TBRF, 38, 38).into(),
(MINF_TBRW0, MINF_TBRW0, 35, 35).into(),
(MINF_TBRF, MINF_TBRF, 40, 40).into(),
(MINF_TBRW0, MINF_TBRW0, 37, 37).into(),
(MINF_TBRF, MINF_TBRF, 42, 42).into(),
(MINF_TBRW1, MINF_TBRW1, 39, 39).into(),
(MINF_TBRF, MINF_TBRF, 42, 42).into(),
(MINF_TBRW0, MINF_TBRW0, 41, 41).into(),
(MINF_TBRF, MINF_TBRF, 44, 44).into(),
(MINF_TBRW0, MINF_TBRW0, 43, 43).into(),
(MINF_TBRF, MINF_TBRF, 18, 18).into(),
(MINF_TBRW1, MINF_TBRW1, 45, 45).into(),
(MINF_TBRF, MINF_TBRF, 18, 18).into(),
(MINF_TBB, MINF_TBB, 47, 47).into(),
(MINF_TBRW0, MINF_TBRW0, 48, 48).into(),
(MINF_TBB, MINF_TBB, 49, 51).into(),
(MINF_TBRW0, MINF_TBRW0, 50, 50).into(),
(MINF_TBB, MINF_TBB, 53, 55).into(),
(MINF_TBRW0, MINF_TBRW0, 52, 52).into(),
(MINF_TBB, MINF_TBB, 57, 57).into(),
(MINF_TBRW0, MINF_TBRW0, 54, 54).into(),
(MINF_MR, MINF_MR, 120, 69).into(),
(MINF_TBRW0, MINF_TBRW0, 56, 56).into(),
(MINF_MR, MINF_MR, 32, 112).into(),
(MINF_TBRW0, MINF_TBRW0, 58, 58).into(),
(MINF_MR, MINF_MR, 11, 11).into(),
(MINF_MARW1, MINF_MARW1, 60, 60).into(),
(MINF_MARF, MINF_MARF, 61, 61).into(),
(MINF_MARW1, MINF_MARW1, 62, 62).into(),
(MINF_MARF, MINF_MARF, 63, 63).into(),
(MINF_MARW0, MINF_MARW0, 64, 64).into(),
(MINF_MARF, MINF_MARF, 65, 65).into(),
(MINF_MARW1, MINF_MARW1, 66, 66).into(),
(MINF_MARF, MINF_MARF, 87, 87).into(),
(MINF_TBRW0, MINF_TBRW0, 68, 68).into(),
(MINF_TBRF, MINF_TBRF, 77, 77).into(),
(MINF_TBRW1, MINF_TBRW1, 70, 70).into(),
(MINF_TBRF, MINF_TBRF, 77, 77).into(),
(MINF_TBRW0, MINF_TBRW0, 72, 72).into(),
(MINF_TBRF, MINF_TBRF, 79, 79).into(),
(MINF_TBRW1, MINF_TBRW1, 74, 74).into(),
(MINF_TBRF, MINF_TBRF, 79, 79).into(),
(MINF_TBRW0, MINF_TBRW0, 76, 76).into(),
(MINF_TBRF, MINF_TBRF, 81, 81).into(),
(MINF_TBRW0, MINF_TBRW0, 78, 78).into(),
(MINF_TBRF, MINF_TBRF, 83, 83).into(),
(MINF_TBRW1, MINF_TBRW1, 80, 80).into(),
(MINF_TBRF, MINF_TBRF, 83, 83).into(),
(MINF_TBRW0, MINF_TBRW0, 82, 82).into(),
(MINF_TBRF, MINF_TBRF, 85, 85).into(),
(MINF_TBRW0, MINF_TBRW0, 84, 84).into(),
(MINF_TBRF, MINF_TBRF, 59, 59).into(),
(MINF_TBRW1, MINF_TBRW1, 86, 86).into(),
(MINF_TBRF, MINF_TBRF, 59, 59).into(),
(MINF_TBB, MINF_TBB, 88, 88).into(),
(MINF_TBRW0, MINF_TBRW0, 89, 89).into(),
(MINF_TBB, MINF_TBB, 90, 92).into(),
(MINF_TBRW0, MINF_TBRW0, 91, 91).into(),
(MINF_TBB, MINF_TBB, 94, 96).into(),
(MINF_TBRW0, MINF_TBRW0, 93, 93).into(),
(MINF_TBB, MINF_TBB, 98, 98).into(),
(MINF_TBRW0, MINF_TBRW0, 95, 95).into(),
(MINF_MR, MINF_MR, 26, 133).into(),
(MINF_TBRW0, MINF_TBRW0, 97, 97).into(),
(MINF_MR, MINF_MR, 73, 150).into(),
(MINF_TBRW0, MINF_TBRW0, 99, 99).into(),
(MINF_MR, MINF_MR, 122, 122).into(),
(MINF_MR, MINF_MR, 34, 34).into(),
(MINF_MR, MINF_MR, 121, 121).into(),
(MINF_TBRW0, MINF_TBRW0, 103, 103).into(),
(MINF_TBRF, MINF_TBRF, 108, 108).into(),
(MINF_TBRW1, MINF_TBRW1, 105, 105).into(),
(MINF_TBRF, MINF_TBRF, 108, 108).into(),
(MINF_TBRW0, MINF_TBRW0, 107, 107).into(),
(MINF_TBRF, MINF_TBRF, 110, 110).into(),
(MINF_TBRW0, MINF_TBRW0, 109, 109).into(),
(MINF_TBRF, MINF_TBRF, 30, 30).into(),
(MINF_TBRW1, MINF_TBRW1, 111, 111).into(),
(MINF_TBRF, MINF_TBRF, 30, 30).into(),
(MINF_TBB, MINF_TBB, 113, 113).into(),
(MINF_TBRW0, MINF_TBRW0, 114, 114).into(),
(MINF_TBB, MINF_TBB, 115, 117).into(),
(MINF_TBRW0, MINF_TBRW0, 116, 116).into(),
(MINF_MR, MINF_MR, 140, 158).into(),
(MINF_TBRW0, MINF_TBRW0, 118, 118).into(),
(MINF_MR, MINF_MR, 160, 160).into(),
(MINF_MR, MINF_MR, 67, 67).into(),
(MINF_MR, MINF_MR, 123, 123).into(),
(MINF_MR, MINF_MR, 13, 13).into(),
(MINF_MR, MINF_MR, 162, 162).into(),
(MINF_TBRW0, MINF_TBRW0, 124, 124).into(),
(MINF_TBRF, MINF_TBRF, 129, 129).into(),
(MINF_TBRW1, MINF_TBRW1, 126, 126).into(),
(MINF_TBRF, MINF_TBRF, 129, 129).into(),
(MINF_TBRW0, MINF_TBRW0, 128, 128).into(),
(MINF_TBRF, MINF_TBRF, 131, 131).into(),
(MINF_TBRW0, MINF_TBRW0, 130, 130).into(),
(MINF_TBRF, MINF_TBRF, 28, 28).into(),
(MINF_TBRW1, MINF_TBRW1, 132, 132).into(),
(MINF_TBRF, MINF_TBRF, 28, 28).into(),
(MINF_TBB, MINF_TBB, 134, 134).into(),
(MINF_TBRW0, MINF_TBRW0, 135, 135).into(),
(MINF_TBB, MINF_TBB, 136, 138).into(),
(MINF_TBRW0, MINF_TBRW0, 137, 137).into(),
(MINF_MR, MINF_MR, 164, 166).into(),
(MINF_TBRW0, MINF_TBRW0, 139, 139).into(),
(MINF_MR, MINF_MR, 104, 104).into(),
(MINF_TBRW0, MINF_TBRW0, 141, 141).into(),
(MINF_TBRF, MINF_TBRF, 146, 146).into(),
(MINF_TBRW1, MINF_TBRW1, 143, 143).into(),
(MINF_TBRF, MINF_TBRF, 146, 146).into(),
(MINF_TBRW0, MINF_TBRW0, 145, 145).into(),
(MINF_TBRF, MINF_TBRF, 148, 148).into(),
(MINF_TBRW0, MINF_TBRW0, 147, 147).into(),
(MINF_TBRF, MINF_TBRF, 71, 71).into(),
(MINF_TBRW1, MINF_TBRW1, 149, 149).into(),
(MINF_TBRF, MINF_TBRF, 71, 71).into(),
(MINF_TBB, MINF_TBB, 151, 151).into(),
(MINF_TBRW0, MINF_TBRW0, 152, 152).into(),
(MINF_TBB, MINF_TBB, 153, 155).into(),
(MINF_TBRW0, MINF_TBRW0, 154, 154).into(),
(MINF_MR, MINF_MR, 168, 125).into(),
(MINF_TBRW0, MINF_TBRW0, 156, 156).into(),
(MINF_MR, MINF_MR, 106, 106).into(),
(MINF_MR, MINF_MR, 127, 127).into(),
(MINF_MR, MINF_MR, 170, 170).into(),
(MINF_MR, MINF_MR, 144, 144).into(),
(MINF_MR, MINF_MR, 161, 161).into(),
(MINF_MR, MINF_MR, 100, 100).into(),
(MINF_MR, MINF_MR, 172, 172).into(),
(MINF_MR, MINF_MR, 119, 119).into(),
(MINF_MR, MINF_MR, 167, 167).into(),
(MINF_MR, MINF_MR, 142, 142).into(),
(MINF_MR, MINF_MR, 157, 157).into(),
(MINF_MR, MINF_MR, 102, 102).into(),
(MINF_MR, MINF_MR, 174, 174).into(),
(MINF_MR, MINF_MR, 165, 165).into(),
(MINF_MR, MINF_MR, 176, 176).into(),
(MINF_MR, MINF_MR, 159, 159).into(),
(MINF_MR, MINF_MR, 2, 2).into(),
(MINF_MR, MINF_MR, 163, 163).into(),
(MINF_MR, MINF_MR, 169, 169).into(),
(MINF_MR, MINF_MR, 173, 173).into(),
(MINF_MR, MINF_MR, 171, 171).into(),
(MINF_TBRW0, MINF_TBRW0, 178, 178).into(),
(MINF_TBRF, MINF_TBRF, 179, 179).into(),
(MINF_TBRW0, MINF_TBRW0, 180, 180).into(),
(MINF_TBRF, MINF_TBRF, 195, 195).into(),
(MINF_TBB, MINF_TBB, 182, 182).into(),
(MINF_TBRW0, MINF_TBRW0, 183, 183).into(),
(MINF_TBB, MINF_TBB, 184, 184).into(),
(MINF_TBRW0, MINF_TBRW0, 185, 185).into(),
(MINF_MR, MINF_MR, 206, 206).into(),
(MINF_TBRW0, MINF_TBRW0, 187, 187).into(),
(MINF_TBRF, MINF_TBRF, 188, 188).into(),
(MINF_TBRW0, MINF_TBRW0, 189, 189).into(),
(MINF_TBRF, MINF_TBRF, 199, 199).into(),
(MINF_TBB, MINF_TBB, 191, 191).into(),
(MINF_TBRW0, MINF_TBRW0, 192, 192).into(),
(MINF_TBB, MINF_TBB, 193, 193).into(),
(MINF_TBRW0, MINF_TBRW0, 194, 194).into(),
(MINF_MR, MINF_MR, 1, 1).into(),
(MINF_MR, MINF_MR, 196, 196).into(),
(MINF_TBRF, MINF_TBRF, 197, 197).into(),
(MINF_TBB, MINF_TBB, 198, 198).into(),
(MINF_TBRW1, MINF_TBRW0, 181, 181).into(),
(MINF_MARW1, MINF_MARW1, 200, 200).into(),
(MINF_MARF, MINF_MARF, 201, 201).into(),
(MINF_MARW1, MINF_MARW1, 202, 202).into(),
(MINF_MARF, MINF_MARF, 203, 203).into(),
(MINF_MARW1, MINF_MARW1, 204, 204).into(),
(MINF_MARF, MINF_MARF, 205, 205).into(),
(MINF_MR, MINF_MR, 177, 177).into(),
(MINF_MR, MINF_MR, 190, 190).into(),
],
vec![
("ma_check_fix".to_string(), 195),
("ma_check_fix:md".to_string(), 199),
("ma_check_fix:md_0_putret_1_0".to_string(), 188),
("ma_check_fix:md_0_putret_x_0".to_string(), 186),
("ma_check_fix:md_after_ret_0".to_string(), 1),
("ma_check_fix:md_return".to_string(), 190),
("ma_check_fix:md_return_id_0_0".to_string(), 191),
("ma_check_fix:md_return_id_1_0".to_string(), 193),
("ma_check_fix_0_putret_1_0".to_string(), 179),
("ma_check_fix_0_putret_x_0".to_string(), 177),
("ma_check_fix_after_ret_0".to_string(), 206),
("ma_check_fix_return".to_string(), 181),
("ma_check_fix_return_id_0_0".to_string(), 182),
("ma_check_fix_return_id_1_0".to_string(), 184),
("md_chunk_1_4".to_string(), 3),
("md_chunk_1_4_0_putret_x_0".to_string(), 11),
("md_chunk_1_4_0_putret_x_1".to_string(), 13),
("md_chunk_1_4_return".to_string(), 15),
("md_chunk_1_4_return_id_0_0".to_string(), 16),
("md_chunk_1a_8_0_putret_x_0".to_string(), 100),
("md_chunk_1a_8_return".to_string(), 101),
("md_chunk_a_4".to_string(), 18),
("md_chunk_a_4_0_putret_1_0".to_string(), 42),
("md_chunk_a_4_0_putret_1_1".to_string(), 44),
("md_chunk_a_4_0_putret_2_00".to_string(), 36),
("md_chunk_a_4_0_putret_2_01".to_string(), 38),
("md_chunk_a_4_0_putret_2_10".to_string(), 40),
("md_chunk_a_4_0_putret_x_0".to_string(), 26),
("md_chunk_a_4_0_putret_x_1".to_string(), 28),
("md_chunk_a_4_0_putret_x_10".to_string(), 30),
("md_chunk_a_4_0_putret_x_100".to_string(), 34),
("md_chunk_a_4_0_putret_x_11".to_string(), 32),
("md_chunk_a_4_return".to_string(), 46),
("md_chunk_a_4_return_id_0_0".to_string(), 47),
("md_chunk_a_4_return_id_1_0".to_string(), 49),
("md_chunk_a_4_return_id_1_1".to_string(), 51),
("md_chunk_a_4_return_id_2_00".to_string(), 53),
("md_chunk_a_4_return_id_2_01".to_string(), 55),
("md_chunk_a_4_return_id_2_10".to_string(), 57),
("md_chunk_aa_8_0_putret_1_0".to_string(), 108),
("md_chunk_aa_8_0_putret_1_1".to_string(), 110),
("md_chunk_aa_8_0_putret_x_0".to_string(), 102),
("md_chunk_aa_8_0_putret_x_1".to_string(), 104),
("md_chunk_aa_8_0_putret_x_10".to_string(), 106),
("md_chunk_aa_8_return".to_string(), 112),
("md_chunk_aa_8_return_id_0_0".to_string(), 113),
("md_chunk_aa_8_return_id_1_0".to_string(), 115),
("md_chunk_aa_8_return_id_1_1".to_string(), 117),
("md_chunk_aaba_16_0_putret_x_0".to_string(), 157),
("md_chunk_aaba_16_return".to_string(), 158),
("md_chunk_aabababb_32_0_putret_x_0".to_string(), 169),
("md_chunk_aabababb_32_return".to_string(), 170),
("md_chunk_aabababbbbaabaab_64_0_putret_x_0".to_string(), 175),
("md_chunk_aabababbbbaabaab_64_return".to_string(), 176),
("md_chunk_aabb_16_0_putret_x_0".to_string(), 159),
("md_chunk_aabb_16_return".to_string(), 160),
("md_chunk_ab_8_0_putret_x_0".to_string(), 119),
("md_chunk_ab_8_return".to_string(), 120),
("md_chunk_b11a_16_0_putret_x_0".to_string(), 161),
("md_chunk_b11a_16_return".to_string(), 162),
("md_chunk_b11aaabb_32_0_putret_x_0".to_string(), 171),
("md_chunk_b11aaabb_32_return".to_string(), 172),
("md_chunk_b1_8_0_putret_x_0".to_string(), 121),
("md_chunk_b1_8_return".to_string(), 122),
("md_chunk_b_4".to_string(), 59),
("md_chunk_b_4_0_putret_1_0".to_string(), 83),
("md_chunk_b_4_0_putret_1_1".to_string(), 85),
("md_chunk_b_4_0_putret_2_00".to_string(), 77),
("md_chunk_b_4_0_putret_2_01".to_string(), 79),
("md_chunk_b_4_0_putret_2_10".to_string(), 81),
("md_chunk_b_4_0_putret_x_0".to_string(), 67),
("md_chunk_b_4_0_putret_x_1".to_string(), 69),
("md_chunk_b_4_0_putret_x_10".to_string(), 71),
("md_chunk_b_4_0_putret_x_100".to_string(), 75),
("md_chunk_b_4_0_putret_x_11".to_string(), 73),
("md_chunk_b_4_return".to_string(), 87),
("md_chunk_b_4_return_id_0_0".to_string(), 88),
("md_chunk_b_4_return_id_1_0".to_string(), 90),
("md_chunk_b_4_return_id_1_1".to_string(), 92),
("md_chunk_b_4_return_id_2_00".to_string(), 94),
("md_chunk_b_4_return_id_2_01".to_string(), 96),
("md_chunk_b_4_return_id_2_10".to_string(), 98),
("md_chunk_ba_8_0_putret_1_0".to_string(), 129),
("md_chunk_ba_8_0_putret_1_1".to_string(), 131),
("md_chunk_ba_8_0_putret_x_0".to_string(), 123),
("md_chunk_ba_8_0_putret_x_1".to_string(), 125),
("md_chunk_ba_8_0_putret_x_10".to_string(), 127),
("md_chunk_ba_8_return".to_string(), 133),
("md_chunk_ba_8_return_id_0_0".to_string(), 134),
("md_chunk_ba_8_return_id_1_0".to_string(), 136),
("md_chunk_ba_8_return_id_1_1".to_string(), 138),
("md_chunk_baab_16_0_putret_x_0".to_string(), 163),
("md_chunk_baab_16_return".to_string(), 164),
("md_chunk_babb_16_0_putret_x_0".to_string(), 165),
("md_chunk_babb_16_return".to_string(), 166),
("md_chunk_bb_8_0_putret_1_0".to_string(), 146),
("md_chunk_bb_8_0_putret_1_1".to_string(), 148),
("md_chunk_bb_8_0_putret_x_0".to_string(), 140),
("md_chunk_bb_8_0_putret_x_1".to_string(), 142),
("md_chunk_bb_8_0_putret_x_10".to_string(), 144),
("md_chunk_bb_8_return".to_string(), 150),
("md_chunk_bb_8_return_id_0_0".to_string(), 151),
("md_chunk_bb_8_return_id_1_0".to_string(), 153),
("md_chunk_bb_8_return_id_1_1".to_string(), 155),
("md_chunk_bbaa_16_0_putret_x_0".to_string(), 167),
("md_chunk_bbaa_16_return".to_string(), 168),
("md_chunk_bbaabaab_32_0_putret_x_0".to_string(), 173),
("md_chunk_bbaabaab_32_return".to_string(), 174),
("md_next_0".to_string(), 2),
]
),
builder.to_code()
);
let mut builder = mi_simple_hbuilder_new_1_safe_ldh(None, None, Some("tb_check_fix"));
builder.add_longdata_handler("tb", true, 1);
builder.ld_call_01(
"tb",
(
&[0xaa, 0xba, 0x56, 0x51, 0x84, 0xc5, 0xd3, 0xba, 0x56, 0x51],
0xc,
4,
),
MINF_MR,
);
builder.ld_call_01("tb", (&[0x22, 0x33], 0, 0), MINF_MR);
builder.i(MINF_STOP);
{
let (func1b, ret) = builder.add_routine("tb_check_fix", false);
let mut func1b = func1b.borrow_mut();
func1b.i(MINF_MR);
func1b.i(MINF_TBRF);
func1b.i(MINF_TBB);
func1b.i((MINF_TBRW1, MINF_TBRW0, ret));
}
assert_eq!(
(
vec![
MinInfInstr::new(MINF_MR, MINF_MR, 217, 217),
(MINF_MR, MINF_MR, 213, 213).into(),
(MINF_MR, MINF_MR, 192, 192).into(),
(MINF_STOP, MINF_STOP, 4, 4).into(),
(MINF_TBRW1, MINF_TBRW1, 5, 5).into(),
(MINF_TBRF, MINF_TBRF, 6, 6).into(),
(MINF_TBRW0, MINF_TBRW0, 7, 7).into(),
(MINF_TBRF, MINF_TBRF, 8, 8).into(),
(MINF_TBRW0, MINF_TBRW0, 9, 9).into(),
(MINF_TBRF, MINF_TBRF, 10, 10).into(),
(MINF_TBRW0, MINF_TBRW0, 11, 11).into(),
(MINF_TBRF, MINF_TBRF, 13, 13).into(),
(MINF_MR, MINF_MR, 4, 4).into(),
(MINF_MR, MINF_MR, 74, 74).into(),
(MINF_TBRW0, MINF_TBRW0, 15, 15).into(),
(MINF_TBRF, MINF_TBRF, 16, 16).into(),
(MINF_TBRW1, MINF_TBRW1, 17, 17).into(),
(MINF_TBRF, MINF_TBRF, 18, 18).into(),
(MINF_TBRW0, MINF_TBRW0, 19, 19).into(),
(MINF_TBRF, MINF_TBRF, 20, 20).into(),
(MINF_TBRW0, MINF_TBRW0, 21, 21).into(),
(MINF_TBRF, MINF_TBRF, 26, 26).into(),
(MINF_MARW0, MINF_MARW0, 23, 23).into(),
(MINF_MARF, MINF_MARF, 14, 14).into(),
(MINF_MARW1, MINF_MARW1, 25, 25).into(),
(MINF_MARF, MINF_MARF, 14, 14).into(),
(MINF_MAB, MINF_MAB, 27, 27).into(),
(MINF_MARW0, MINF_MARW0, 28, 28).into(),
(MINF_MR, MINF_MR, 24, 170).into(),
(MINF_TBRW1, MINF_TBRW1, 30, 30).into(),
(MINF_TBRF, MINF_TBRF, 31, 31).into(),
(MINF_TBRW1, MINF_TBRW1, 32, 32).into(),
(MINF_TBRF, MINF_TBRF, 33, 33).into(),
(MINF_TBRW0, MINF_TBRW0, 34, 34).into(),
(MINF_TBRF, MINF_TBRF, 35, 35).into(),
(MINF_TBRW0, MINF_TBRW0, 36, 36).into(),
(MINF_TBRF, MINF_TBRF, 47, 47).into(),
(MINF_MARW0, MINF_MARW0, 38, 38).into(),
(MINF_MARF, MINF_MARF, 43, 43).into(),
(MINF_MARW1, MINF_MARW1, 40, 40).into(),
(MINF_MARF, MINF_MARF, 43, 43).into(),
(MINF_MARW0, MINF_MARW0, 42, 42).into(),
(MINF_MARF, MINF_MARF, 45, 45).into(),
(MINF_MARW0, MINF_MARW0, 44, 44).into(),
(MINF_MARF, MINF_MARF, 29, 29).into(),
(MINF_MARW1, MINF_MARW1, 46, 46).into(),
(MINF_MARF, MINF_MARF, 29, 29).into(),
(MINF_MAB, MINF_MAB, 48, 48).into(),
(MINF_MARW0, MINF_MARW0, 49, 49).into(),
(MINF_MAB, MINF_MAB, 50, 52).into(),
(MINF_MARW0, MINF_MARW0, 51, 51).into(),
(MINF_MR, MINF_MR, 167, 41).into(),
(MINF_MARW0, MINF_MARW0, 53, 53).into(),
(MINF_MR, MINF_MR, 172, 172).into(),
(MINF_TBRW0, MINF_TBRW0, 55, 55).into(),
(MINF_TBRF, MINF_TBRF, 56, 56).into(),
(MINF_TBRW0, MINF_TBRW0, 57, 57).into(),
(MINF_TBRF, MINF_TBRF, 58, 58).into(),
(MINF_TBRW1, MINF_TBRW1, 59, 59).into(),
(MINF_TBRF, MINF_TBRF, 60, 60).into(),
(MINF_TBRW0, MINF_TBRW0, 61, 61).into(),
(MINF_TBRF, MINF_TBRF, 63, 63).into(),
(MINF_MR, MINF_MR, 54, 54).into(),
(MINF_MR, MINF_MR, 107, 107).into(),
(MINF_TBRW1, MINF_TBRW1, 65, 65).into(),
(MINF_TBRF, MINF_TBRF, 66, 66).into(),
(MINF_TBRW0, MINF_TBRW0, 67, 67).into(),
(MINF_TBRF, MINF_TBRF, 68, 68).into(),
(MINF_TBRW1, MINF_TBRW1, 69, 69).into(),
(MINF_TBRF, MINF_TBRF, 70, 70).into(),
(MINF_TBRW0, MINF_TBRW0, 71, 71).into(),
(MINF_TBRF, MINF_TBRF, 82, 82).into(),
(MINF_MARW0, MINF_MARW0, 73, 73).into(),
(MINF_MARF, MINF_MARF, 78, 78).into(),
(MINF_MARW1, MINF_MARW1, 75, 75).into(),
(MINF_MARF, MINF_MARF, 78, 78).into(),
(MINF_MARW0, MINF_MARW0, 77, 77).into(),
(MINF_MARF, MINF_MARF, 80, 80).into(),
(MINF_MARW0, MINF_MARW0, 79, 79).into(),
(MINF_MARF, MINF_MARF, 64, 64).into(),
(MINF_MARW1, MINF_MARW1, 81, 81).into(),
(MINF_MARF, MINF_MARF, 64, 64).into(),
(MINF_MAB, MINF_MAB, 83, 83).into(),
(MINF_MARW0, MINF_MARW0, 84, 84).into(),
(MINF_MAB, MINF_MAB, 85, 87).into(),
(MINF_MARW0, MINF_MARW0, 86, 86).into(),
(MINF_MR, MINF_MR, 176, 174).into(),
(MINF_MARW0, MINF_MARW0, 88, 88).into(),
(MINF_MR, MINF_MR, 152, 152).into(),
(MINF_TBRW0, MINF_TBRW0, 90, 90).into(),
(MINF_TBRF, MINF_TBRF, 91, 91).into(),
(MINF_TBRW1, MINF_TBRW1, 92, 92).into(),
(MINF_TBRF, MINF_TBRF, 93, 93).into(),
(MINF_TBRW1, MINF_TBRW1, 94, 94).into(),
(MINF_TBRF, MINF_TBRF, 95, 95).into(),
(MINF_TBRW0, MINF_TBRW0, 96, 96).into(),
(MINF_TBRF, MINF_TBRF, 98, 98).into(),
(MINF_MR, MINF_MR, 89, 89).into(),
(MINF_MR, MINF_MR, 72, 72).into(),
(MINF_TBRW0, MINF_TBRW0, 100, 100).into(),
(MINF_TBRF, MINF_TBRF, 101, 101).into(),
(MINF_TBRW0, MINF_TBRW0, 102, 102).into(),
(MINF_TBRF, MINF_TBRF, 103, 103).into(),
(MINF_TBRW0, MINF_TBRW0, 104, 104).into(),
(MINF_TBRF, MINF_TBRF, 105, 105).into(),
(MINF_TBRW1, MINF_TBRW1, 106, 106).into(),
(MINF_TBRF, MINF_TBRF, 108, 108).into(),
(MINF_MR, MINF_MR, 99, 99).into(),
(MINF_MR, MINF_MR, 178, 178).into(),
(MINF_TBRW0, MINF_TBRW0, 110, 110).into(),
(MINF_TBRF, MINF_TBRF, 111, 111).into(),
(MINF_TBRW1, MINF_TBRW1, 112, 112).into(),
(MINF_TBRF, MINF_TBRF, 113, 113).into(),
(MINF_TBRW0, MINF_TBRW0, 114, 114).into(),
(MINF_TBRF, MINF_TBRF, 115, 115).into(),
(MINF_TBRW1, MINF_TBRW1, 116, 116).into(),
(MINF_TBRF, MINF_TBRF, 127, 127).into(),
(MINF_MARW0, MINF_MARW0, 118, 118).into(),
(MINF_MARF, MINF_MARF, 123, 123).into(),
(MINF_MARW1, MINF_MARW1, 120, 120).into(),
(MINF_MARF, MINF_MARF, 123, 123).into(),
(MINF_MARW0, MINF_MARW0, 122, 122).into(),
(MINF_MARF, MINF_MARF, 125, 125).into(),
(MINF_MARW0, MINF_MARW0, 124, 124).into(),
(MINF_MARF, MINF_MARF, 109, 109).into(),
(MINF_MARW1, MINF_MARW1, 126, 126).into(),
(MINF_MARF, MINF_MARF, 109, 109).into(),
(MINF_MAB, MINF_MAB, 128, 128).into(),
(MINF_MARW0, MINF_MARW0, 129, 129).into(),
(MINF_MAB, MINF_MAB, 130, 132).into(),
(MINF_MARW0, MINF_MARW0, 131, 131).into(),
(MINF_MR, MINF_MR, 119, 180).into(),
(MINF_MARW0, MINF_MARW0, 133, 133).into(),
(MINF_MR, MINF_MR, 142, 142).into(),
(MINF_TBRW1, MINF_TBRW1, 135, 135).into(),
(MINF_TBRF, MINF_TBRF, 136, 136).into(),
(MINF_TBRW1, MINF_TBRW1, 137, 137).into(),
(MINF_TBRF, MINF_TBRF, 138, 138).into(),
(MINF_TBRW0, MINF_TBRW0, 139, 139).into(),
(MINF_TBRF, MINF_TBRF, 140, 140).into(),
(MINF_TBRW1, MINF_TBRW1, 141, 141).into(),
(MINF_TBRF, MINF_TBRF, 143, 143).into(),
(MINF_MR, MINF_MR, 134, 134).into(),
(MINF_MR, MINF_MR, 185, 185).into(),
(MINF_TBRW0, MINF_TBRW0, 145, 145).into(),
(MINF_TBRF, MINF_TBRF, 146, 146).into(),
(MINF_TBRW0, MINF_TBRW0, 147, 147).into(),
(MINF_TBRF, MINF_TBRF, 148, 148).into(),
(MINF_TBRW1, MINF_TBRW1, 149, 149).into(),
(MINF_TBRF, MINF_TBRF, 150, 150).into(),
(MINF_TBRW1, MINF_TBRW1, 151, 151).into(),
(MINF_TBRF, MINF_TBRF, 156, 156).into(),
(MINF_MARW0, MINF_MARW0, 153, 153).into(),
(MINF_MARF, MINF_MARF, 144, 144).into(),
(MINF_MARW1, MINF_MARW1, 155, 155).into(),
(MINF_MARF, MINF_MARF, 144, 144).into(),
(MINF_MAB, MINF_MAB, 157, 157).into(),
(MINF_MARW0, MINF_MARW0, 158, 158).into(),
(MINF_MR, MINF_MR, 189, 208).into(),
(MINF_TBRW1, MINF_TBRW1, 160, 160).into(),
(MINF_TBRF, MINF_TBRF, 161, 161).into(),
(MINF_TBRW0, MINF_TBRW0, 162, 162).into(),
(MINF_TBRF, MINF_TBRF, 163, 163).into(),
(MINF_TBRW1, MINF_TBRW1, 164, 164).into(),
(MINF_TBRF, MINF_TBRF, 165, 165).into(),
(MINF_TBRW1, MINF_TBRW1, 166, 166).into(),
(MINF_TBRF, MINF_TBRF, 168, 168).into(),
(MINF_MR, MINF_MR, 159, 159).into(),
(MINF_MR, MINF_MR, 191, 191).into(),
(MINF_MR, MINF_MR, 22, 22).into(),
(MINF_MR, MINF_MR, 171, 171).into(),
(MINF_MR, MINF_MR, 39, 39).into(),
(MINF_MR, MINF_MR, 193, 193).into(),
(MINF_MR, MINF_MR, 12, 12).into(),
(MINF_MR, MINF_MR, 198, 198).into(),
(MINF_MR, MINF_MR, 97, 97).into(),
(MINF_MR, MINF_MR, 173, 173).into(),
(MINF_MR, MINF_MR, 62, 62).into(),
(MINF_MR, MINF_MR, 188, 188).into(),
(MINF_MR, MINF_MR, 117, 117).into(),
(MINF_MR, MINF_MR, 181, 181).into(),
(MINF_MARW0, MINF_MARW0, 182, 182).into(),
(MINF_MARF, MINF_MARF, 121, 121).into(),
(MINF_MARW1, MINF_MARW1, 184, 184).into(),
(MINF_MARF, MINF_MARF, 121, 121).into(),
(MINF_MAB, MINF_MAB, 186, 186).into(),
(MINF_MARW0, MINF_MARW0, 187, 187).into(),
(MINF_MR, MINF_MR, 202, 204).into(),
(MINF_MR, MINF_MR, 76, 76).into(),
(MINF_MR, MINF_MR, 206, 206).into(),
(MINF_MR, MINF_MR, 37, 37).into(),
(MINF_MR, MINF_MR, 183, 183).into(),
(MINF_MR, MINF_MR, 169, 169).into(),
(MINF_MR, MINF_MR, 3, 3).into(),
(MINF_MARW0, MINF_MARW0, 195, 195).into(),
(MINF_MARF, MINF_MARF, 175, 175).into(),
(MINF_MARW1, MINF_MARW1, 197, 197).into(),
(MINF_MARF, MINF_MARF, 175, 175).into(),
(MINF_MAB, MINF_MAB, 199, 199).into(),
(MINF_MARW0, MINF_MARW0, 200, 200).into(),
(MINF_MR, MINF_MR, 210, 154).into(),
(MINF_MR, MINF_MR, 179, 179).into(),
(MINF_MR, MINF_MR, 194, 194).into(),
(MINF_MR, MINF_MR, 190, 190).into(),
(MINF_MR, MINF_MR, 212, 212).into(),
(MINF_MR, MINF_MR, 177, 177).into(),
(MINF_MR, MINF_MR, 203, 203).into(),
(MINF_MR, MINF_MR, 196, 196).into(),
(MINF_MR, MINF_MR, 2, 2).into(),
(MINF_MR, MINF_MR, 201, 201).into(),
(MINF_MR, MINF_MR, 211, 211).into(),
(MINF_MR, MINF_MR, 205, 205).into(),
(MINF_MR, MINF_MR, 214, 214).into(),
(MINF_MR, MINF_MR, 209, 209).into(),
(MINF_MR, MINF_MR, 207, 207).into(),
(MINF_MR, MINF_MR, 219, 219).into(),
(MINF_MR, MINF_MR, 234, 234).into(),
(MINF_MR, MINF_MR, 223, 223).into(),
(MINF_MR, MINF_MR, 1, 1).into(),
(MINF_MR, MINF_MR, 220, 220).into(),
(MINF_TBRF, MINF_TBRF, 221, 221).into(),
(MINF_TBB, MINF_TBB, 222, 222).into(),
(MINF_TBRW1, MINF_TBRW0, 216, 216).into(),
(MINF_TBRW1, MINF_TBRW1, 224, 224).into(),
(MINF_TBRF, MINF_TBRF, 225, 225).into(),
(MINF_TBRW1, MINF_TBRW1, 226, 226).into(),
(MINF_TBRF, MINF_TBRF, 227, 227).into(),
(MINF_TBRW0, MINF_TBRW0, 228, 228).into(),
(MINF_TBRF, MINF_TBRF, 229, 229).into(),
(MINF_TBRW1, MINF_TBRW1, 230, 230).into(),
(MINF_TBRF, MINF_TBRF, 231, 231).into(),
(MINF_TBRW1, MINF_TBRW1, 232, 232).into(),
(MINF_TBRF, MINF_TBRF, 233, 233).into(),
(MINF_MR, MINF_MR, 215, 215).into(),
(MINF_MR, MINF_MR, 218, 218).into(),
],
vec![
("tb_check_fix".to_string(), 219),
("tb_check_fix:tb".to_string(), 223),
("tb_check_fix:tb_0_putret_x_0".to_string(), 217),
("tb_check_fix:tb_after_ret_0".to_string(), 1),
("tb_check_fix:tb_return".to_string(), 218),
("tb_check_fix_0_putret_x_0".to_string(), 215),
("tb_check_fix_after_ret_0".to_string(), 234),
("tb_check_fix_return".to_string(), 216),
("tb_chunk_1_4".to_string(), 4),
("tb_chunk_1_4_0_putret_x_0".to_string(), 12),
("tb_chunk_1_4_return".to_string(), 13),
("tb_chunk_22_8_0_putret_x_0".to_string(), 169),
("tb_chunk_22_8_return".to_string(), 170),
("tb_chunk_2_4".to_string(), 14),
("tb_chunk_2_4_0_putret_x_0".to_string(), 22),
("tb_chunk_2_4_0_putret_x_1".to_string(), 24),
("tb_chunk_2_4_return".to_string(), 26),
("tb_chunk_2_4_return_id_0_0".to_string(), 27),
("tb_chunk_3322_16_0_putret_x_0".to_string(), 192),
("tb_chunk_3322_16_return".to_string(), 193),
("tb_chunk_33_8_0_putret_x_0".to_string(), 171),
("tb_chunk_33_8_return".to_string(), 172),
("tb_chunk_3_4".to_string(), 29),
("tb_chunk_3_4_0_putret_1_0".to_string(), 43),
("tb_chunk_3_4_0_putret_1_1".to_string(), 45),
("tb_chunk_3_4_0_putret_x_0".to_string(), 37),
("tb_chunk_3_4_0_putret_x_1".to_string(), 39),
("tb_chunk_3_4_0_putret_x_10".to_string(), 41),
("tb_chunk_3_4_return".to_string(), 47),
("tb_chunk_3_4_return_id_0_0".to_string(), 48),
("tb_chunk_3_4_return_id_1_0".to_string(), 50),
("tb_chunk_3_4_return_id_1_1".to_string(), 52),
("tb_chunk_4_4".to_string(), 54),
("tb_chunk_4_4_0_putret_x_0".to_string(), 62),
("tb_chunk_4_4_return".to_string(), 63),
("tb_chunk_5156_16_0_putret_x_0".to_string(), 194),
("tb_chunk_5156_16_0_putret_x_1".to_string(), 196),
("tb_chunk_5156_16_return".to_string(), 198),
("tb_chunk_5156_16_return_id_0_0".to_string(), 199),
("tb_chunk_5156baaa_32_0_putret_x_0".to_string(), 209),
("tb_chunk_5156baaa_32_return".to_string(), 210),
("tb_chunk_51_8_0_putret_x_0".to_string(), 173),
("tb_chunk_51_8_return".to_string(), 174),
("tb_chunk_56_8_0_putret_x_0".to_string(), 175),
("tb_chunk_56_8_return".to_string(), 176),
("tb_chunk_5_4".to_string(), 64),
("tb_chunk_5_4_0_putret_1_0".to_string(), 78),
("tb_chunk_5_4_0_putret_1_1".to_string(), 80),
("tb_chunk_5_4_0_putret_x_0".to_string(), 72),
("tb_chunk_5_4_0_putret_x_1".to_string(), 74),
("tb_chunk_5_4_0_putret_x_10".to_string(), 76),
("tb_chunk_5_4_return".to_string(), 82),
("tb_chunk_5_4_return_id_0_0".to_string(), 83),
("tb_chunk_5_4_return_id_1_0".to_string(), 85),
("tb_chunk_5_4_return_id_1_1".to_string(), 87),
("tb_chunk_6_4".to_string(), 89),
("tb_chunk_6_4_0_putret_x_0".to_string(), 97),
("tb_chunk_6_4_return".to_string(), 98),
("tb_chunk_84_8_0_putret_x_0".to_string(), 177),
("tb_chunk_84_8_return".to_string(), 178),
("tb_chunk_8_4".to_string(), 99),
("tb_chunk_8_4_0_putret_x_0".to_string(), 107),
("tb_chunk_8_4_return".to_string(), 108),
("tb_chunk_a_4".to_string(), 109),
("tb_chunk_a_4_0_putret_1_0".to_string(), 123),
("tb_chunk_a_4_0_putret_1_1".to_string(), 125),
("tb_chunk_a_4_0_putret_x_0".to_string(), 117),
("tb_chunk_a_4_0_putret_x_1".to_string(), 119),
("tb_chunk_a_4_0_putret_x_10".to_string(), 121),
("tb_chunk_a_4_return".to_string(), 127),
("tb_chunk_a_4_return_id_0_0".to_string(), 128),
("tb_chunk_a_4_return_id_1_0".to_string(), 130),
("tb_chunk_a_4_return_id_1_1".to_string(), 132),
("tb_chunk_aa_8_0_putret_x_0".to_string(), 179),
("tb_chunk_aa_8_return".to_string(), 180),
("tb_chunk_b_4".to_string(), 134),
("tb_chunk_b_4_0_putret_x_0".to_string(), 142),
("tb_chunk_b_4_return".to_string(), 143),
("tb_chunk_ba_8_0_putret_x_0".to_string(), 181),
("tb_chunk_ba_8_0_putret_x_1".to_string(), 183),
("tb_chunk_ba_8_return".to_string(), 185),
("tb_chunk_ba_8_return_id_0_0".to_string(), 186),
("tb_chunk_baaa_16_0_putret_x_0".to_string(), 201),
("tb_chunk_baaa_16_return".to_string(), 202),
("tb_chunk_bad3_16_0_putret_x_0".to_string(), 203),
("tb_chunk_bad3_16_return".to_string(), 204),
("tb_chunk_bad3c5845156baaa_64_0_putret_x_0".to_string(), 213),
("tb_chunk_bad3c5845156baaa_64_return".to_string(), 214),
("tb_chunk_bad3c584_32_0_putret_x_0".to_string(), 211),
("tb_chunk_bad3c584_32_return".to_string(), 212),
("tb_chunk_c5156_20_0_putret_x_0".to_string(), 207),
("tb_chunk_c5156_20_return".to_string(), 208),
("tb_chunk_c584_16_0_putret_x_0".to_string(), 205),
("tb_chunk_c584_16_return".to_string(), 206),
("tb_chunk_c5_8_0_putret_x_0".to_string(), 188),
("tb_chunk_c5_8_return".to_string(), 189),
("tb_chunk_c_4".to_string(), 144),
("tb_chunk_c_4_0_putret_x_0".to_string(), 152),
("tb_chunk_c_4_0_putret_x_1".to_string(), 154),
("tb_chunk_c_4_return".to_string(), 156),
("tb_chunk_c_4_return_id_0_0".to_string(), 157),
("tb_chunk_d3_8_0_putret_x_0".to_string(), 190),
("tb_chunk_d3_8_return".to_string(), 191),
("tb_chunk_d_4".to_string(), 159),
("tb_chunk_d_4_0_putret_x_0".to_string(), 167),
("tb_chunk_d_4_return".to_string(), 168),
("tb_next_0".to_string(), 2),
("tb_next_1".to_string(), 3),
]
),
builder.to_code()
);
let mut builder = mi_simple_hbuilder_new_safe_ldh(Some(2), None, None, Some("tb_check_fix"));
builder.add_longdata_handler("tb", true, 1);
builder.ld_call_01(
"tb",
(
&[
0xab, 0xba, 0xaa, 0xbb, 0xbb, 0xba, 0xba, 0xaa, 0xbb, 0xaa, 0x1a, 0xb1,
],
0,
0,
),
MINF_MR,
);
builder.i(MINF_STOP);
{
let (func1b, ret) = builder.add_routine("tb_check_fix", false);
let mut func1b = func1b.borrow_mut();
func1b.i(MINF_MR);
func1b.i(MINF_TBRF);
func1b.i(MINF_TBB);
func1b.i((MINF_TBRW1, MINF_TBRW0, ret));
}
assert_eq!(
(
vec![
MinInfInstr::new(MINF_MR, MINF_MR, 186, 186),
(MINF_MR, MINF_MR, 175, 175).into(),
(MINF_STOP, MINF_STOP, 3, 3).into(),
(MINF_TBRW1, MINF_TBRW1, 4, 4).into(),
(MINF_TBRF, MINF_TBRF, 5, 5).into(),
(MINF_TBRW0, MINF_TBRW0, 6, 6).into(),
(MINF_TBRF, MINF_TBRF, 7, 7).into(),
(MINF_TBRW0, MINF_TBRW0, 8, 8).into(),
(MINF_TBRF, MINF_TBRF, 9, 9).into(),
(MINF_TBRW0, MINF_TBRW0, 10, 10).into(),
(MINF_TBRF, MINF_TBRF, 15, 15).into(),
(MINF_MARW0, MINF_MARW0, 12, 12).into(),
(MINF_MARF, MINF_MARF, 3, 3).into(),
(MINF_MARW1, MINF_MARW1, 14, 14).into(),
(MINF_MARF, MINF_MARF, 3, 3).into(),
(MINF_MAB, MINF_MAB, 16, 16).into(),
(MINF_MARW0, MINF_MARW0, 17, 17).into(),
(MINF_MR, MINF_MR, 101, 75).into(),
(MINF_TBRW0, MINF_TBRW0, 19, 19).into(),
(MINF_TBRF, MINF_TBRF, 20, 20).into(),
(MINF_TBRW1, MINF_TBRW1, 21, 21).into(),
(MINF_TBRF, MINF_TBRF, 22, 22).into(),
(MINF_TBRW0, MINF_TBRW0, 23, 23).into(),
(MINF_TBRF, MINF_TBRF, 24, 24).into(),
(MINF_TBRW1, MINF_TBRW1, 25, 25).into(),
(MINF_TBRF, MINF_TBRF, 46, 46).into(),
(MINF_MARW0, MINF_MARW0, 27, 27).into(),
(MINF_MARF, MINF_MARF, 36, 36).into(),
(MINF_MARW1, MINF_MARW1, 29, 29).into(),
(MINF_MARF, MINF_MARF, 36, 36).into(),
(MINF_MARW0, MINF_MARW0, 31, 31).into(),
(MINF_MARF, MINF_MARF, 38, 38).into(),
(MINF_MARW1, MINF_MARW1, 33, 33).into(),
(MINF_MARF, MINF_MARF, 38, 38).into(),
(MINF_MARW0, MINF_MARW0, 35, 35).into(),
(MINF_MARF, MINF_MARF, 40, 40).into(),
(MINF_MARW0, MINF_MARW0, 37, 37).into(),
(MINF_MARF, MINF_MARF, 42, 42).into(),
(MINF_MARW1, MINF_MARW1, 39, 39).into(),
(MINF_MARF, MINF_MARF, 42, 42).into(),
(MINF_MARW0, MINF_MARW0, 41, 41).into(),
(MINF_MARF, MINF_MARF, 44, 44).into(),
(MINF_MARW0, MINF_MARW0, 43, 43).into(),
(MINF_MARF, MINF_MARF, 18, 18).into(),
(MINF_MARW1, MINF_MARW1, 45, 45).into(),
(MINF_MARF, MINF_MARF, 18, 18).into(),
(MINF_MAB, MINF_MAB, 47, 47).into(),
(MINF_MARW0, MINF_MARW0, 48, 48).into(),
(MINF_MAB, MINF_MAB, 49, 51).into(),
(MINF_MARW0, MINF_MARW0, 50, 50).into(),
(MINF_MAB, MINF_MAB, 53, 55).into(),
(MINF_MARW0, MINF_MARW0, 52, 52).into(),
(MINF_MAB, MINF_MAB, 57, 57).into(),
(MINF_MARW0, MINF_MARW0, 54, 54).into(),
(MINF_MR, MINF_MR, 120, 69).into(),
(MINF_MARW0, MINF_MARW0, 56, 56).into(),
(MINF_MR, MINF_MR, 32, 112).into(),
(MINF_MARW0, MINF_MARW0, 58, 58).into(),
(MINF_MR, MINF_MR, 11, 11).into(),
(MINF_TBRW1, MINF_TBRW1, 60, 60).into(),
(MINF_TBRF, MINF_TBRF, 61, 61).into(),
(MINF_TBRW1, MINF_TBRW1, 62, 62).into(),
(MINF_TBRF, MINF_TBRF, 63, 63).into(),
(MINF_TBRW0, MINF_TBRW0, 64, 64).into(),
(MINF_TBRF, MINF_TBRF, 65, 65).into(),
(MINF_TBRW1, MINF_TBRW1, 66, 66).into(),
(MINF_TBRF, MINF_TBRF, 87, 87).into(),
(MINF_MARW0, MINF_MARW0, 68, 68).into(),
(MINF_MARF, MINF_MARF, 77, 77).into(),
(MINF_MARW1, MINF_MARW1, 70, 70).into(),
(MINF_MARF, MINF_MARF, 77, 77).into(),
(MINF_MARW0, MINF_MARW0, 72, 72).into(),
(MINF_MARF, MINF_MARF, 79, 79).into(),
(MINF_MARW1, MINF_MARW1, 74, 74).into(),
(MINF_MARF, MINF_MARF, 79, 79).into(),
(MINF_MARW0, MINF_MARW0, 76, 76).into(),
(MINF_MARF, MINF_MARF, 81, 81).into(),
(MINF_MARW0, MINF_MARW0, 78, 78).into(),
(MINF_MARF, MINF_MARF, 83, 83).into(),
(MINF_MARW1, MINF_MARW1, 80, 80).into(),
(MINF_MARF, MINF_MARF, 83, 83).into(),
(MINF_MARW0, MINF_MARW0, 82, 82).into(),
(MINF_MARF, MINF_MARF, 85, 85).into(),
(MINF_MARW0, MINF_MARW0, 84, 84).into(),
(MINF_MARF, MINF_MARF, 59, 59).into(),
(MINF_MARW1, MINF_MARW1, 86, 86).into(),
(MINF_MARF, MINF_MARF, 59, 59).into(),
(MINF_MAB, MINF_MAB, 88, 88).into(),
(MINF_MARW0, MINF_MARW0, 89, 89).into(),
(MINF_MAB, MINF_MAB, 90, 92).into(),
(MINF_MARW0, MINF_MARW0, 91, 91).into(),
(MINF_MAB, MINF_MAB, 94, 96).into(),
(MINF_MARW0, MINF_MARW0, 93, 93).into(),
(MINF_MAB, MINF_MAB, 98, 98).into(),
(MINF_MARW0, MINF_MARW0, 95, 95).into(),
(MINF_MR, MINF_MR, 26, 133).into(),
(MINF_MARW0, MINF_MARW0, 97, 97).into(),
(MINF_MR, MINF_MR, 73, 150).into(),
(MINF_MARW0, MINF_MARW0, 99, 99).into(),
(MINF_MR, MINF_MR, 122, 122).into(),
(MINF_MR, MINF_MR, 34, 34).into(),
(MINF_MR, MINF_MR, 121, 121).into(),
(MINF_MARW0, MINF_MARW0, 103, 103).into(),
(MINF_MARF, MINF_MARF, 108, 108).into(),
(MINF_MARW1, MINF_MARW1, 105, 105).into(),
(MINF_MARF, MINF_MARF, 108, 108).into(),
(MINF_MARW0, MINF_MARW0, 107, 107).into(),
(MINF_MARF, MINF_MARF, 110, 110).into(),
(MINF_MARW0, MINF_MARW0, 109, 109).into(),
(MINF_MARF, MINF_MARF, 30, 30).into(),
(MINF_MARW1, MINF_MARW1, 111, 111).into(),
(MINF_MARF, MINF_MARF, 30, 30).into(),
(MINF_MAB, MINF_MAB, 113, 113).into(),
(MINF_MARW0, MINF_MARW0, 114, 114).into(),
(MINF_MAB, MINF_MAB, 115, 117).into(),
(MINF_MARW0, MINF_MARW0, 116, 116).into(),
(MINF_MR, MINF_MR, 140, 158).into(),
(MINF_MARW0, MINF_MARW0, 118, 118).into(),
(MINF_MR, MINF_MR, 160, 160).into(),
(MINF_MR, MINF_MR, 67, 67).into(),
(MINF_MR, MINF_MR, 123, 123).into(),
(MINF_MR, MINF_MR, 13, 13).into(),
(MINF_MR, MINF_MR, 162, 162).into(),
(MINF_MARW0, MINF_MARW0, 124, 124).into(),
(MINF_MARF, MINF_MARF, 129, 129).into(),
(MINF_MARW1, MINF_MARW1, 126, 126).into(),
(MINF_MARF, MINF_MARF, 129, 129).into(),
(MINF_MARW0, MINF_MARW0, 128, 128).into(),
(MINF_MARF, MINF_MARF, 131, 131).into(),
(MINF_MARW0, MINF_MARW0, 130, 130).into(),
(MINF_MARF, MINF_MARF, 28, 28).into(),
(MINF_MARW1, MINF_MARW1, 132, 132).into(),
(MINF_MARF, MINF_MARF, 28, 28).into(),
(MINF_MAB, MINF_MAB, 134, 134).into(),
(MINF_MARW0, MINF_MARW0, 135, 135).into(),
(MINF_MAB, MINF_MAB, 136, 138).into(),
(MINF_MARW0, MINF_MARW0, 137, 137).into(),
(MINF_MR, MINF_MR, 164, 166).into(),
(MINF_MARW0, MINF_MARW0, 139, 139).into(),
(MINF_MR, MINF_MR, 104, 104).into(),
(MINF_MARW0, MINF_MARW0, 141, 141).into(),
(MINF_MARF, MINF_MARF, 146, 146).into(),
(MINF_MARW1, MINF_MARW1, 143, 143).into(),
(MINF_MARF, MINF_MARF, 146, 146).into(),
(MINF_MARW0, MINF_MARW0, 145, 145).into(),
(MINF_MARF, MINF_MARF, 148, 148).into(),
(MINF_MARW0, MINF_MARW0, 147, 147).into(),
(MINF_MARF, MINF_MARF, 71, 71).into(),
(MINF_MARW1, MINF_MARW1, 149, 149).into(),
(MINF_MARF, MINF_MARF, 71, 71).into(),
(MINF_MAB, MINF_MAB, 151, 151).into(),
(MINF_MARW0, MINF_MARW0, 152, 152).into(),
(MINF_MAB, MINF_MAB, 153, 155).into(),
(MINF_MARW0, MINF_MARW0, 154, 154).into(),
(MINF_MR, MINF_MR, 168, 125).into(),
(MINF_MARW0, MINF_MARW0, 156, 156).into(),
(MINF_MR, MINF_MR, 106, 106).into(),
(MINF_MR, MINF_MR, 127, 127).into(),
(MINF_MR, MINF_MR, 170, 170).into(),
(MINF_MR, MINF_MR, 144, 144).into(),
(MINF_MR, MINF_MR, 161, 161).into(),
(MINF_MR, MINF_MR, 100, 100).into(),
(MINF_MR, MINF_MR, 172, 172).into(),
(MINF_MR, MINF_MR, 119, 119).into(),
(MINF_MR, MINF_MR, 167, 167).into(),
(MINF_MR, MINF_MR, 142, 142).into(),
(MINF_MR, MINF_MR, 157, 157).into(),
(MINF_MR, MINF_MR, 102, 102).into(),
(MINF_MR, MINF_MR, 174, 174).into(),
(MINF_MR, MINF_MR, 165, 165).into(),
(MINF_MR, MINF_MR, 176, 176).into(),
(MINF_MR, MINF_MR, 159, 159).into(),
(MINF_MR, MINF_MR, 2, 2).into(),
(MINF_MR, MINF_MR, 163, 163).into(),
(MINF_MR, MINF_MR, 169, 169).into(),
(MINF_MR, MINF_MR, 173, 173).into(),
(MINF_MR, MINF_MR, 171, 171).into(),
(MINF_MARW0, MINF_MARW0, 178, 178).into(),
(MINF_MARF, MINF_MARF, 179, 179).into(),
(MINF_MARW0, MINF_MARW0, 180, 180).into(),
(MINF_MARF, MINF_MARF, 195, 195).into(),
(MINF_MAB, MINF_MAB, 182, 182).into(),
(MINF_MARW0, MINF_MARW0, 183, 183).into(),
(MINF_MAB, MINF_MAB, 184, 184).into(),
(MINF_MARW0, MINF_MARW0, 185, 185).into(),
(MINF_MR, MINF_MR, 206, 206).into(),
(MINF_MARW0, MINF_MARW0, 187, 187).into(),
(MINF_MARF, MINF_MARF, 188, 188).into(),
(MINF_MARW0, MINF_MARW0, 189, 189).into(),
(MINF_MARF, MINF_MARF, 199, 199).into(),
(MINF_MAB, MINF_MAB, 191, 191).into(),
(MINF_MARW0, MINF_MARW0, 192, 192).into(),
(MINF_MAB, MINF_MAB, 193, 193).into(),
(MINF_MARW0, MINF_MARW0, 194, 194).into(),
(MINF_MR, MINF_MR, 1, 1).into(),
(MINF_MR, MINF_MR, 196, 196).into(),
(MINF_TBRF, MINF_TBRF, 197, 197).into(),
(MINF_TBB, MINF_TBB, 198, 198).into(),
(MINF_TBRW1, MINF_TBRW0, 181, 181).into(),
(MINF_TBRW1, MINF_TBRW1, 200, 200).into(),
(MINF_TBRF, MINF_TBRF, 201, 201).into(),
(MINF_TBRW1, MINF_TBRW1, 202, 202).into(),
(MINF_TBRF, MINF_TBRF, 203, 203).into(),
(MINF_TBRW1, MINF_TBRW1, 204, 204).into(),
(MINF_TBRF, MINF_TBRF, 205, 205).into(),
(MINF_MR, MINF_MR, 177, 177).into(),
(MINF_MR, MINF_MR, 190, 190).into(),
],
vec![
("tb_check_fix".to_string(), 195),
("tb_check_fix:tb".to_string(), 199),
("tb_check_fix:tb_0_putret_1_0".to_string(), 188),
("tb_check_fix:tb_0_putret_x_0".to_string(), 186),
("tb_check_fix:tb_after_ret_0".to_string(), 1),
("tb_check_fix:tb_return".to_string(), 190),
("tb_check_fix:tb_return_id_0_0".to_string(), 191),
("tb_check_fix:tb_return_id_1_0".to_string(), 193),
("tb_check_fix_0_putret_1_0".to_string(), 179),
("tb_check_fix_0_putret_x_0".to_string(), 177),
("tb_check_fix_after_ret_0".to_string(), 206),
("tb_check_fix_return".to_string(), 181),
("tb_check_fix_return_id_0_0".to_string(), 182),
("tb_check_fix_return_id_1_0".to_string(), 184),
("tb_chunk_1_4".to_string(), 3),
("tb_chunk_1_4_0_putret_x_0".to_string(), 11),
("tb_chunk_1_4_0_putret_x_1".to_string(), 13),
("tb_chunk_1_4_return".to_string(), 15),
("tb_chunk_1_4_return_id_0_0".to_string(), 16),
("tb_chunk_1a_8_0_putret_x_0".to_string(), 100),
("tb_chunk_1a_8_return".to_string(), 101),
("tb_chunk_a_4".to_string(), 18),
("tb_chunk_a_4_0_putret_1_0".to_string(), 42),
("tb_chunk_a_4_0_putret_1_1".to_string(), 44),
("tb_chunk_a_4_0_putret_2_00".to_string(), 36),
("tb_chunk_a_4_0_putret_2_01".to_string(), 38),
("tb_chunk_a_4_0_putret_2_10".to_string(), 40),
("tb_chunk_a_4_0_putret_x_0".to_string(), 26),
("tb_chunk_a_4_0_putret_x_1".to_string(), 28),
("tb_chunk_a_4_0_putret_x_10".to_string(), 30),
("tb_chunk_a_4_0_putret_x_100".to_string(), 34),
("tb_chunk_a_4_0_putret_x_11".to_string(), 32),
("tb_chunk_a_4_return".to_string(), 46),
("tb_chunk_a_4_return_id_0_0".to_string(), 47),
("tb_chunk_a_4_return_id_1_0".to_string(), 49),
("tb_chunk_a_4_return_id_1_1".to_string(), 51),
("tb_chunk_a_4_return_id_2_00".to_string(), 53),
("tb_chunk_a_4_return_id_2_01".to_string(), 55),
("tb_chunk_a_4_return_id_2_10".to_string(), 57),
("tb_chunk_aa_8_0_putret_1_0".to_string(), 108),
("tb_chunk_aa_8_0_putret_1_1".to_string(), 110),
("tb_chunk_aa_8_0_putret_x_0".to_string(), 102),
("tb_chunk_aa_8_0_putret_x_1".to_string(), 104),
("tb_chunk_aa_8_0_putret_x_10".to_string(), 106),
("tb_chunk_aa_8_return".to_string(), 112),
("tb_chunk_aa_8_return_id_0_0".to_string(), 113),
("tb_chunk_aa_8_return_id_1_0".to_string(), 115),
("tb_chunk_aa_8_return_id_1_1".to_string(), 117),
("tb_chunk_aaba_16_0_putret_x_0".to_string(), 157),
("tb_chunk_aaba_16_return".to_string(), 158),
("tb_chunk_aabababb_32_0_putret_x_0".to_string(), 169),
("tb_chunk_aabababb_32_return".to_string(), 170),
("tb_chunk_aabababbbbaabaab_64_0_putret_x_0".to_string(), 175),
("tb_chunk_aabababbbbaabaab_64_return".to_string(), 176),
("tb_chunk_aabb_16_0_putret_x_0".to_string(), 159),
("tb_chunk_aabb_16_return".to_string(), 160),
("tb_chunk_ab_8_0_putret_x_0".to_string(), 119),
("tb_chunk_ab_8_return".to_string(), 120),
("tb_chunk_b11a_16_0_putret_x_0".to_string(), 161),
("tb_chunk_b11a_16_return".to_string(), 162),
("tb_chunk_b11aaabb_32_0_putret_x_0".to_string(), 171),
("tb_chunk_b11aaabb_32_return".to_string(), 172),
("tb_chunk_b1_8_0_putret_x_0".to_string(), 121),
("tb_chunk_b1_8_return".to_string(), 122),
("tb_chunk_b_4".to_string(), 59),
("tb_chunk_b_4_0_putret_1_0".to_string(), 83),
("tb_chunk_b_4_0_putret_1_1".to_string(), 85),
("tb_chunk_b_4_0_putret_2_00".to_string(), 77),
("tb_chunk_b_4_0_putret_2_01".to_string(), 79),
("tb_chunk_b_4_0_putret_2_10".to_string(), 81),
("tb_chunk_b_4_0_putret_x_0".to_string(), 67),
("tb_chunk_b_4_0_putret_x_1".to_string(), 69),
("tb_chunk_b_4_0_putret_x_10".to_string(), 71),
("tb_chunk_b_4_0_putret_x_100".to_string(), 75),
("tb_chunk_b_4_0_putret_x_11".to_string(), 73),
("tb_chunk_b_4_return".to_string(), 87),
("tb_chunk_b_4_return_id_0_0".to_string(), 88),
("tb_chunk_b_4_return_id_1_0".to_string(), 90),
("tb_chunk_b_4_return_id_1_1".to_string(), 92),
("tb_chunk_b_4_return_id_2_00".to_string(), 94),
("tb_chunk_b_4_return_id_2_01".to_string(), 96),
("tb_chunk_b_4_return_id_2_10".to_string(), 98),
("tb_chunk_ba_8_0_putret_1_0".to_string(), 129),
("tb_chunk_ba_8_0_putret_1_1".to_string(), 131),
("tb_chunk_ba_8_0_putret_x_0".to_string(), 123),
("tb_chunk_ba_8_0_putret_x_1".to_string(), 125),
("tb_chunk_ba_8_0_putret_x_10".to_string(), 127),
("tb_chunk_ba_8_return".to_string(), 133),
("tb_chunk_ba_8_return_id_0_0".to_string(), 134),
("tb_chunk_ba_8_return_id_1_0".to_string(), 136),
("tb_chunk_ba_8_return_id_1_1".to_string(), 138),
("tb_chunk_baab_16_0_putret_x_0".to_string(), 163),
("tb_chunk_baab_16_return".to_string(), 164),
("tb_chunk_babb_16_0_putret_x_0".to_string(), 165),
("tb_chunk_babb_16_return".to_string(), 166),
("tb_chunk_bb_8_0_putret_1_0".to_string(), 146),
("tb_chunk_bb_8_0_putret_1_1".to_string(), 148),
("tb_chunk_bb_8_0_putret_x_0".to_string(), 140),
("tb_chunk_bb_8_0_putret_x_1".to_string(), 142),
("tb_chunk_bb_8_0_putret_x_10".to_string(), 144),
("tb_chunk_bb_8_return".to_string(), 150),
("tb_chunk_bb_8_return_id_0_0".to_string(), 151),
("tb_chunk_bb_8_return_id_1_0".to_string(), 153),
("tb_chunk_bb_8_return_id_1_1".to_string(), 155),
("tb_chunk_bbaa_16_0_putret_x_0".to_string(), 167),
("tb_chunk_bbaa_16_return".to_string(), 168),
("tb_chunk_bbaabaab_32_0_putret_x_0".to_string(), 173),
("tb_chunk_bbaabaab_32_return".to_string(), 174),
("tb_next_0".to_string(), 2),
]
),
builder.to_code()
);
}
#[test]
fn test_handler_builder_longdata_safe_ldh_ldh_start() {
let mut builder = mi_simple_hbuilder_new_1_safe_ldh(None, Some("ma_check_fix"), None);
builder.add_longdata_handler("md", false, 1);
builder.i(MINF_MARW0);
builder.i(MINF_TBRW0);
builder.ldh_start("mystart");
builder.l("mystart");
builder.ld_call_01("md", (&[143, 54], 0, 0), MINF_MR);
builder.i(MINF_STOP);
{
let (func1b, ret) = builder.add_routine("ma_check_fix", true);
let mut func1b = func1b.borrow_mut();
func1b.i(MINF_MR);
func1b.i(MINF_TBRF);
func1b.i(MINF_TBB);
func1b.i((MINF_TBRW1, MINF_TBRW0, ret));
}
assert_eq!(
(
vec![
MinInfInstr::new(MINF_MARW0, MINF_MARW0, 1, 1).into(),
(MINF_TBRW0, MINF_TBRW0, 2, 2).into(),
(MINF_MR, MINF_MR, 53, 53).into(),
(MINF_MR, MINF_MR, 49, 49).into(),
(MINF_STOP, MINF_STOP, 5, 5).into(),
(MINF_MARW1, MINF_MARW1, 6, 6).into(),
(MINF_MARF, MINF_MARF, 7, 7).into(),
(MINF_MARW1, MINF_MARW1, 8, 8).into(),
(MINF_MARF, MINF_MARF, 9, 9).into(),
(MINF_MARW0, MINF_MARW0, 10, 10).into(),
(MINF_MARF, MINF_MARF, 11, 11).into(),
(MINF_MARW0, MINF_MARW0, 12, 12).into(),
(MINF_MARF, MINF_MARF, 14, 14).into(),
(MINF_MR, MINF_MR, 5, 5).into(),
(MINF_MR, MINF_MR, 46, 46).into(),
(MINF_MARW0, MINF_MARW0, 16, 16).into(),
(MINF_MARF, MINF_MARF, 17, 17).into(),
(MINF_MARW1, MINF_MARW1, 18, 18).into(),
(MINF_MARF, MINF_MARF, 19, 19).into(),
(MINF_MARW1, MINF_MARW1, 20, 20).into(),
(MINF_MARF, MINF_MARF, 21, 21).into(),
(MINF_MARW0, MINF_MARW0, 22, 22).into(),
(MINF_MARF, MINF_MARF, 24, 24).into(),
(MINF_MR, MINF_MR, 15, 15).into(),
(MINF_MR, MINF_MR, 13, 13).into(),
(MINF_MARW0, MINF_MARW0, 26, 26).into(),
(MINF_MARF, MINF_MARF, 27, 27).into(),
(MINF_MARW0, MINF_MARW0, 28, 28).into(),
(MINF_MARF, MINF_MARF, 29, 29).into(),
(MINF_MARW0, MINF_MARW0, 30, 30).into(),
(MINF_MARF, MINF_MARF, 31, 31).into(),
(MINF_MARW1, MINF_MARW1, 32, 32).into(),
(MINF_MARF, MINF_MARF, 34, 34).into(),
(MINF_MR, MINF_MR, 25, 25).into(),
(MINF_MR, MINF_MR, 48, 48).into(),
(MINF_MARW1, MINF_MARW1, 36, 36).into(),
(MINF_MARF, MINF_MARF, 37, 37).into(),
(MINF_MARW1, MINF_MARW1, 38, 38).into(),
(MINF_MARF, MINF_MARF, 39, 39).into(),
(MINF_MARW1, MINF_MARW1, 40, 40).into(),
(MINF_MARF, MINF_MARF, 41, 41).into(),
(MINF_MARW1, MINF_MARW1, 42, 42).into(),
(MINF_MARF, MINF_MARF, 44, 44).into(),
(MINF_MR, MINF_MR, 35, 35).into(),
(MINF_MR, MINF_MR, 33, 33).into(),
(MINF_MR, MINF_MR, 23, 23).into(),
(MINF_MR, MINF_MR, 50, 50).into(),
(MINF_MR, MINF_MR, 43, 43).into(),
(MINF_MR, MINF_MR, 45, 45).into(),
(MINF_MR, MINF_MR, 47, 47).into(),
(MINF_MR, MINF_MR, 4, 4).into(),
(MINF_MR, MINF_MR, 55, 55).into(),
(MINF_MR, MINF_MR, 66, 66).into(),
(MINF_MR, MINF_MR, 59, 59).into(),
(MINF_MR, MINF_MR, 3, 3).into(),
(MINF_MR, MINF_MR, 56, 56).into(),
(MINF_TBRF, MINF_TBRF, 57, 57).into(),
(MINF_TBB, MINF_TBB, 58, 58).into(),
(MINF_TBRW1, MINF_TBRW0, 52, 52).into(),
(MINF_MARW1, MINF_MARW1, 60, 60).into(),
(MINF_MARF, MINF_MARF, 61, 61).into(),
(MINF_MARW0, MINF_MARW0, 62, 62).into(),
(MINF_MARF, MINF_MARF, 63, 63).into(),
(MINF_MARW1, MINF_MARW1, 64, 64).into(),
(MINF_MARF, MINF_MARF, 65, 65).into(),
(MINF_MR, MINF_MR, 51, 51).into(),
(MINF_MR, MINF_MR, 54, 54).into(),
],
vec![
("ma_check_fix".to_string(), 55),
("ma_check_fix:md".to_string(), 59),
("ma_check_fix:md_0_putret_x_0".to_string(), 53),
("ma_check_fix:md_after_ret_0".to_string(), 3),
("ma_check_fix:md_return".to_string(), 54),
("ma_check_fix_0_putret_x_0".to_string(), 51),
("ma_check_fix_after_ret_0".to_string(), 66),
("ma_check_fix_return".to_string(), 52),
("md_chunk_368f_16_0_putret_x_0".to_string(), 49),
("md_chunk_368f_16_return".to_string(), 50),
("md_chunk_36_8_0_putret_x_0".to_string(), 45),
("md_chunk_36_8_return".to_string(), 46),
("md_chunk_3_4".to_string(), 5),
("md_chunk_3_4_0_putret_x_0".to_string(), 13),
("md_chunk_3_4_return".to_string(), 14),
("md_chunk_6_4".to_string(), 15),
("md_chunk_6_4_0_putret_x_0".to_string(), 23),
("md_chunk_6_4_return".to_string(), 24),
("md_chunk_8_4".to_string(), 25),
("md_chunk_8_4_0_putret_x_0".to_string(), 33),
("md_chunk_8_4_return".to_string(), 34),
("md_chunk_8f_8_0_putret_x_0".to_string(), 47),
("md_chunk_8f_8_return".to_string(), 48),
("md_chunk_f_4".to_string(), 35),
("md_chunk_f_4_0_putret_x_0".to_string(), 43),
("md_chunk_f_4_return".to_string(), 44),
("md_next_0".to_string(), 4),
("mystart".to_string(), 2),
]
),
builder.to_code()
);
}
#[test]
fn test_handler_builder_longdata_safe_ldh_in_routines() {
let mut builder = mi_simple_hbuilder_new_1_safe_ldh(None, Some("ma_check_fix"), None);
builder.add_longdata_handler("md", false, 1);
{
let (func1b, ret) = builder.add_routine("myfunc1", true);
let mut func1b = func1b.borrow_mut();
func1b.ld_call_01("md", (&[143, 54], 0, 0), MINF_MR);
func1b.i((MINF_MR, ret));
}
builder.ld_call_01("md", (&[143, 54], 0, 0), MINF_MR);
builder.call_01("myfunc1", MINF_MR);
builder.i(MINF_STOP);
{
let (func1b, ret) = builder.add_routine("ma_check_fix", true);
let mut func1b = func1b.borrow_mut();
func1b.i(MINF_MR);
func1b.i(MINF_TBRF);
func1b.i(MINF_TBB);
func1b.i((MINF_TBRW1, MINF_TBRW0, ret));
}
assert_eq!(
(
vec![
MinInfInstr::new(MINF_MR, MINF_MR, 57, 57),
(MINF_MR, MINF_MR, 50, 50).into(),
(MINF_MR, MINF_MR, 64, 64).into(),
(MINF_STOP, MINF_STOP, 4, 4).into(),
(MINF_MARW1, MINF_MARW1, 5, 5).into(),
(MINF_MARF, MINF_MARF, 6, 6).into(),
(MINF_MARW1, MINF_MARW1, 7, 7).into(),
(MINF_MARF, MINF_MARF, 8, 8).into(),
(MINF_MARW0, MINF_MARW0, 9, 9).into(),
(MINF_MARF, MINF_MARF, 10, 10).into(),
(MINF_MARW0, MINF_MARW0, 11, 11).into(),
(MINF_MARF, MINF_MARF, 13, 13).into(),
(MINF_MR, MINF_MR, 4, 4).into(),
(MINF_MR, MINF_MR, 45, 45).into(),
(MINF_MARW0, MINF_MARW0, 15, 15).into(),
(MINF_MARF, MINF_MARF, 16, 16).into(),
(MINF_MARW1, MINF_MARW1, 17, 17).into(),
(MINF_MARF, MINF_MARF, 18, 18).into(),
(MINF_MARW1, MINF_MARW1, 19, 19).into(),
(MINF_MARF, MINF_MARF, 20, 20).into(),
(MINF_MARW0, MINF_MARW0, 21, 21).into(),
(MINF_MARF, MINF_MARF, 23, 23).into(),
(MINF_MR, MINF_MR, 14, 14).into(),
(MINF_MR, MINF_MR, 12, 12).into(),
(MINF_MARW0, MINF_MARW0, 25, 25).into(),
(MINF_MARF, MINF_MARF, 26, 26).into(),
(MINF_MARW0, MINF_MARW0, 27, 27).into(),
(MINF_MARF, MINF_MARF, 28, 28).into(),
(MINF_MARW0, MINF_MARW0, 29, 29).into(),
(MINF_MARF, MINF_MARF, 30, 30).into(),
(MINF_MARW1, MINF_MARW1, 31, 31).into(),
(MINF_MARF, MINF_MARF, 33, 33).into(),
(MINF_MR, MINF_MR, 24, 24).into(),
(MINF_MR, MINF_MR, 47, 47).into(),
(MINF_MARW1, MINF_MARW1, 35, 35).into(),
(MINF_MARF, MINF_MARF, 36, 36).into(),
(MINF_MARW1, MINF_MARW1, 37, 37).into(),
(MINF_MARF, MINF_MARF, 38, 38).into(),
(MINF_MARW1, MINF_MARW1, 39, 39).into(),
(MINF_MARF, MINF_MARF, 40, 40).into(),
(MINF_MARW1, MINF_MARW1, 41, 41).into(),
(MINF_MARF, MINF_MARF, 43, 43).into(),
(MINF_MR, MINF_MR, 34, 34).into(),
(MINF_MR, MINF_MR, 32, 32).into(),
(MINF_MR, MINF_MR, 22, 22).into(),
(MINF_MR, MINF_MR, 52, 52).into(),
(MINF_MR, MINF_MR, 42, 42).into(),
(MINF_MR, MINF_MR, 44, 44).into(),
(MINF_TBRW0, MINF_TBRW0, 49, 49).into(),
(MINF_TBRF, MINF_TBRF, 46, 46).into(),
(MINF_TBRW1, MINF_TBRW1, 51, 51).into(),
(MINF_TBRF, MINF_TBRF, 46, 46).into(),
(MINF_TBB, MINF_TBB, 53, 53).into(),
(MINF_TBRW0, MINF_TBRW0, 54, 54).into(),
(MINF_MR, MINF_MR, 80, 2).into(),
(MINF_MR, MINF_MR, 66, 66).into(),
(MINF_MR, MINF_MR, 77, 77).into(),
(MINF_TBRW0, MINF_TBRW0, 58, 58).into(),
(MINF_TBRF, MINF_TBRF, 70, 70).into(),
(MINF_TBRW1, MINF_TBRW1, 60, 60).into(),
(MINF_TBRF, MINF_TBRF, 70, 70).into(),
(MINF_TBB, MINF_TBB, 62, 62).into(),
(MINF_TBRW0, MINF_TBRW0, 63, 63).into(),
(MINF_MR, MINF_MR, 1, 79).into(),
(MINF_MR, MINF_MR, 78, 78).into(),
(MINF_MR, MINF_MR, 3, 3).into(),
(MINF_MR, MINF_MR, 67, 67).into(),
(MINF_TBRF, MINF_TBRF, 68, 68).into(),
(MINF_TBB, MINF_TBB, 69, 69).into(),
(MINF_TBRW1, MINF_TBRW0, 56, 56).into(),
(MINF_MARW1, MINF_MARW1, 71, 71).into(),
(MINF_MARF, MINF_MARF, 72, 72).into(),
(MINF_MARW1, MINF_MARW1, 73, 73).into(),
(MINF_MARF, MINF_MARF, 74, 74).into(),
(MINF_MARW1, MINF_MARW1, 75, 75).into(),
(MINF_MARF, MINF_MARF, 76, 76).into(),
(MINF_MR, MINF_MR, 55, 55).into(),
(MINF_MR, MINF_MR, 61, 61).into(),
(MINF_MR, MINF_MR, 59, 59).into(),
(MINF_MR, MINF_MR, 48, 48).into(),
(MINF_MR, MINF_MR, 65, 65).into(),
],
vec![
("ma_check_fix".to_string(), 66),
("ma_check_fix:md".to_string(), 70),
("ma_check_fix:md_0_putret_x_0".to_string(), 57),
("ma_check_fix:md_0_putret_x_1".to_string(), 59),
("ma_check_fix:md_after_ret_0".to_string(), 1),
("ma_check_fix:md_after_ret_1".to_string(), 79),
("ma_check_fix:md_return".to_string(), 61),
("ma_check_fix:md_return_id_0_0".to_string(), 62),
("ma_check_fix_0_putret_x_0".to_string(), 55),
("ma_check_fix_after_ret_0".to_string(), 77),
("ma_check_fix_return".to_string(), 56),
("md_chunk_368f_16_0_putret_x_0".to_string(), 48),
("md_chunk_368f_16_0_putret_x_1".to_string(), 50),
("md_chunk_368f_16_return".to_string(), 52),
("md_chunk_368f_16_return_id_0_0".to_string(), 53),
("md_chunk_36_8_0_putret_x_0".to_string(), 44),
("md_chunk_36_8_return".to_string(), 45),
("md_chunk_3_4".to_string(), 4),
("md_chunk_3_4_0_putret_x_0".to_string(), 12),
("md_chunk_3_4_return".to_string(), 13),
("md_chunk_6_4".to_string(), 14),
("md_chunk_6_4_0_putret_x_0".to_string(), 22),
("md_chunk_6_4_return".to_string(), 23),
("md_chunk_8_4".to_string(), 24),
("md_chunk_8_4_0_putret_x_0".to_string(), 32),
("md_chunk_8_4_return".to_string(), 33),
("md_chunk_8f_8_0_putret_x_0".to_string(), 46),
("md_chunk_8f_8_return".to_string(), 47),
("md_chunk_f_4".to_string(), 34),
("md_chunk_f_4_0_putret_x_0".to_string(), 42),
("md_chunk_f_4_return".to_string(), 43),
("md_next_0".to_string(), 80),
("md_next_1".to_string(), 2),
("myfunc1".to_string(), 78),
("myfunc1_0_putret_x_0".to_string(), 64),
("myfunc1_after_ret_0".to_string(), 3),
("myfunc1_return".to_string(), 65),
]
),
builder.to_code()
);
let mut builder = mi_simple_hbuilder_new_1_safe_ldh(None, Some("ma_check_fix"), None);
builder.add_longdata_handler("md", false, 1);
{
let (func1b, ret) = builder.add_routine_with_labels_l(
"myfunc1",
["myfunc1_0", "myfunc1_1", "myfunc1_2", "myfunc1_3"],
true,
);
let mut func1b = func1b.borrow_mut();
func1b.l("myfunc1_0");
func1b.ld_call_01("md", (&[33, 57], 0, 0), MINF_MR);
func1b.i((MINF_MR, &ret));
func1b.l("myfunc1_1");
func1b.ld_call_01("md", (&[34, 58], 0, 0), MINF_MR);
func1b.i((MINF_MR, &ret));
func1b.l("myfunc1_2");
func1b.ld_call_01("md", (&[35, 59], 0, 0), MINF_MR);
func1b.i((MINF_MR, &ret));
func1b.l("myfunc1_3");
func1b.ld_call_01("md", (&[36, 60], 0, 0), MINF_MR);
func1b.i((MINF_MR, &ret));
}
builder.ld_call_01("md", (&[143, 54], 0, 0), MINF_MR);
builder.call_01("myfunc1", MINF_MR);
builder.i(MINF_STOP);
{
let (func1b, ret) = builder.add_routine("ma_check_fix", true);
let mut func1b = func1b.borrow_mut();
func1b.i(MINF_MR);
func1b.i(MINF_TBRF);
func1b.i(MINF_TBB);
func1b.i((MINF_TBRW1, MINF_TBRW0, ret));
}
assert_eq!(
(
vec![
MinInfInstr::new(MINF_MR, MINF_MR, 210, 210),
(MINF_MR, MINF_MR, 198, 198).into(),
(MINF_MR, MINF_MR, 243, 243).into(),
(MINF_STOP, MINF_STOP, 4, 4).into(),
(MINF_MARW1, MINF_MARW1, 5, 5).into(),
(MINF_MARF, MINF_MARF, 6, 6).into(),
(MINF_MARW0, MINF_MARW0, 7, 7).into(),
(MINF_MARF, MINF_MARF, 8, 8).into(),
(MINF_MARW0, MINF_MARW0, 9, 9).into(),
(MINF_MARF, MINF_MARF, 10, 10).into(),
(MINF_MARW0, MINF_MARW0, 11, 11).into(),
(MINF_MARF, MINF_MARF, 13, 13).into(),
(MINF_MR, MINF_MR, 4, 4).into(),
(MINF_MR, MINF_MR, 22, 22).into(),
(MINF_MARW0, MINF_MARW0, 15, 15).into(),
(MINF_MARF, MINF_MARF, 16, 16).into(),
(MINF_MARW1, MINF_MARW1, 17, 17).into(),
(MINF_MARF, MINF_MARF, 18, 18).into(),
(MINF_MARW0, MINF_MARW0, 19, 19).into(),
(MINF_MARF, MINF_MARF, 20, 20).into(),
(MINF_MARW0, MINF_MARW0, 21, 21).into(),
(MINF_MARF, MINF_MARF, 42, 42).into(),
(MINF_TBRW0, MINF_TBRW0, 23, 23).into(),
(MINF_TBRF, MINF_TBRF, 32, 32).into(),
(MINF_TBRW1, MINF_TBRW1, 25, 25).into(),
(MINF_TBRF, MINF_TBRF, 32, 32).into(),
(MINF_TBRW0, MINF_TBRW0, 27, 27).into(),
(MINF_TBRF, MINF_TBRF, 34, 34).into(),
(MINF_TBRW1, MINF_TBRW1, 29, 29).into(),
(MINF_TBRF, MINF_TBRF, 34, 34).into(),
(MINF_TBRW0, MINF_TBRW0, 31, 31).into(),
(MINF_TBRF, MINF_TBRF, 36, 36).into(),
(MINF_TBRW0, MINF_TBRW0, 33, 33).into(),
(MINF_TBRF, MINF_TBRF, 38, 38).into(),
(MINF_TBRW1, MINF_TBRW1, 35, 35).into(),
(MINF_TBRF, MINF_TBRF, 38, 38).into(),
(MINF_TBRW0, MINF_TBRW0, 37, 37).into(),
(MINF_TBRF, MINF_TBRF, 40, 40).into(),
(MINF_TBRW0, MINF_TBRW0, 39, 39).into(),
(MINF_TBRF, MINF_TBRF, 14, 14).into(),
(MINF_TBRW1, MINF_TBRW1, 41, 41).into(),
(MINF_TBRF, MINF_TBRF, 14, 14).into(),
(MINF_TBB, MINF_TBB, 43, 43).into(),
(MINF_TBRW0, MINF_TBRW0, 44, 44).into(),
(MINF_TBB, MINF_TBB, 45, 47).into(),
(MINF_TBRW0, MINF_TBRW0, 46, 46).into(),
(MINF_TBB, MINF_TBB, 49, 51).into(),
(MINF_TBRW0, MINF_TBRW0, 48, 48).into(),
(MINF_TBB, MINF_TBB, 53, 53).into(),
(MINF_TBRW0, MINF_TBRW0, 50, 50).into(),
(MINF_MR, MINF_MR, 179, 26).into(),
(MINF_TBRW0, MINF_TBRW0, 52, 52).into(),
(MINF_MR, MINF_MR, 181, 183).into(),
(MINF_TBRW0, MINF_TBRW0, 54, 54).into(),
(MINF_MR, MINF_MR, 185, 185).into(),
(MINF_MARW1, MINF_MARW1, 56, 56).into(),
(MINF_MARF, MINF_MARF, 57, 57).into(),
(MINF_MARW1, MINF_MARW1, 58, 58).into(),
(MINF_MARF, MINF_MARF, 59, 59).into(),
(MINF_MARW0, MINF_MARW0, 60, 60).into(),
(MINF_MARF, MINF_MARF, 61, 61).into(),
(MINF_MARW0, MINF_MARW0, 62, 62).into(),
(MINF_MARF, MINF_MARF, 85, 85).into(),
(MINF_TBRW0, MINF_TBRW0, 64, 64).into(),
(MINF_TBRF, MINF_TBRF, 75, 75).into(),
(MINF_TBRW1, MINF_TBRW1, 66, 66).into(),
(MINF_TBRF, MINF_TBRF, 75, 75).into(),
(MINF_TBRW0, MINF_TBRW0, 68, 68).into(),
(MINF_TBRF, MINF_TBRF, 77, 77).into(),
(MINF_TBRW1, MINF_TBRW1, 70, 70).into(),
(MINF_TBRF, MINF_TBRF, 77, 77).into(),
(MINF_TBRW0, MINF_TBRW0, 72, 72).into(),
(MINF_TBRF, MINF_TBRF, 79, 79).into(),
(MINF_TBRW1, MINF_TBRW1, 74, 74).into(),
(MINF_TBRF, MINF_TBRF, 79, 79).into(),
(MINF_TBRW0, MINF_TBRW0, 76, 76).into(),
(MINF_TBRF, MINF_TBRF, 81, 81).into(),
(MINF_TBRW1, MINF_TBRW1, 78, 78).into(),
(MINF_TBRF, MINF_TBRF, 81, 81).into(),
(MINF_TBRW0, MINF_TBRW0, 80, 80).into(),
(MINF_TBRF, MINF_TBRF, 83, 83).into(),
(MINF_TBRW0, MINF_TBRW0, 82, 82).into(),
(MINF_TBRF, MINF_TBRF, 55, 55).into(),
(MINF_TBRW1, MINF_TBRW1, 84, 84).into(),
(MINF_TBRF, MINF_TBRF, 55, 55).into(),
(MINF_TBB, MINF_TBB, 86, 86).into(),
(MINF_TBRW0, MINF_TBRW0, 87, 87).into(),
(MINF_TBB, MINF_TBB, 88, 90).into(),
(MINF_TBRW0, MINF_TBRW0, 89, 89).into(),
(MINF_TBB, MINF_TBB, 92, 94).into(),
(MINF_TBRW0, MINF_TBRW0, 91, 91).into(),
(MINF_TBB, MINF_TBB, 96, 96).into(),
(MINF_TBRW0, MINF_TBRW0, 93, 93).into(),
(MINF_MR, MINF_MR, 189, 191).into(),
(MINF_TBRW0, MINF_TBRW0, 95, 95).into(),
(MINF_MR, MINF_MR, 28, 193).into(),
(MINF_TBRW0, MINF_TBRW0, 97, 97).into(),
(MINF_MR, MINF_MR, 195, 187).into(),
(MINF_MARW0, MINF_MARW0, 99, 99).into(),
(MINF_MARF, MINF_MARF, 100, 100).into(),
(MINF_MARW0, MINF_MARW0, 101, 101).into(),
(MINF_MARF, MINF_MARF, 102, 102).into(),
(MINF_MARW1, MINF_MARW1, 103, 103).into(),
(MINF_MARF, MINF_MARF, 104, 104).into(),
(MINF_MARW0, MINF_MARW0, 105, 105).into(),
(MINF_MARF, MINF_MARF, 107, 107).into(),
(MINF_MR, MINF_MR, 98, 98).into(),
(MINF_MR, MINF_MR, 30, 30).into(),
(MINF_MARW0, MINF_MARW0, 109, 109).into(),
(MINF_MARF, MINF_MARF, 110, 110).into(),
(MINF_MARW1, MINF_MARW1, 111, 111).into(),
(MINF_MARF, MINF_MARF, 112, 112).into(),
(MINF_MARW1, MINF_MARW1, 113, 113).into(),
(MINF_MARF, MINF_MARF, 114, 114).into(),
(MINF_MARW0, MINF_MARW0, 115, 115).into(),
(MINF_MARF, MINF_MARF, 117, 117).into(),
(MINF_MR, MINF_MR, 108, 108).into(),
(MINF_MR, MINF_MR, 73, 73).into(),
(MINF_MARW0, MINF_MARW0, 119, 119).into(),
(MINF_MARF, MINF_MARF, 120, 120).into(),
(MINF_MARW0, MINF_MARW0, 121, 121).into(),
(MINF_MARF, MINF_MARF, 122, 122).into(),
(MINF_MARW0, MINF_MARW0, 123, 123).into(),
(MINF_MARF, MINF_MARF, 124, 124).into(),
(MINF_MARW1, MINF_MARW1, 125, 125).into(),
(MINF_MARF, MINF_MARF, 127, 127).into(),
(MINF_MR, MINF_MR, 118, 118).into(),
(MINF_MR, MINF_MR, 197, 197).into(),
(MINF_MARW1, MINF_MARW1, 129, 129).into(),
(MINF_MARF, MINF_MARF, 130, 130).into(),
(MINF_MARW0, MINF_MARW0, 131, 131).into(),
(MINF_MARF, MINF_MARF, 132, 132).into(),
(MINF_MARW0, MINF_MARW0, 133, 133).into(),
(MINF_MARF, MINF_MARF, 134, 134).into(),
(MINF_MARW1, MINF_MARW1, 135, 135).into(),
(MINF_MARF, MINF_MARF, 137, 137).into(),
(MINF_MR, MINF_MR, 128, 128).into(),
(MINF_MR, MINF_MR, 63, 63).into(),
(MINF_MARW0, MINF_MARW0, 139, 139).into(),
(MINF_MARF, MINF_MARF, 140, 140).into(),
(MINF_MARW1, MINF_MARW1, 141, 141).into(),
(MINF_MARF, MINF_MARF, 142, 142).into(),
(MINF_MARW0, MINF_MARW0, 143, 143).into(),
(MINF_MARF, MINF_MARF, 144, 144).into(),
(MINF_MARW1, MINF_MARW1, 145, 145).into(),
(MINF_MARF, MINF_MARF, 147, 147).into(),
(MINF_MR, MINF_MR, 138, 138).into(),
(MINF_MR, MINF_MR, 65, 65).into(),
(MINF_MARW1, MINF_MARW1, 149, 149).into(),
(MINF_MARF, MINF_MARF, 150, 150).into(),
(MINF_MARW1, MINF_MARW1, 151, 151).into(),
(MINF_MARF, MINF_MARF, 152, 152).into(),
(MINF_MARW0, MINF_MARW0, 153, 153).into(),
(MINF_MARF, MINF_MARF, 154, 154).into(),
(MINF_MARW1, MINF_MARW1, 155, 155).into(),
(MINF_MARF, MINF_MARF, 157, 157).into(),
(MINF_MR, MINF_MR, 148, 148).into(),
(MINF_MR, MINF_MR, 69, 69).into(),
(MINF_MARW0, MINF_MARW0, 159, 159).into(),
(MINF_MARF, MINF_MARF, 160, 160).into(),
(MINF_MARW0, MINF_MARW0, 161, 161).into(),
(MINF_MARF, MINF_MARF, 162, 162).into(),
(MINF_MARW1, MINF_MARW1, 163, 163).into(),
(MINF_MARF, MINF_MARF, 164, 164).into(),
(MINF_MARW1, MINF_MARW1, 165, 165).into(),
(MINF_MARF, MINF_MARF, 167, 167).into(),
(MINF_MR, MINF_MR, 158, 158).into(),
(MINF_MR, MINF_MR, 71, 71).into(),
(MINF_MARW1, MINF_MARW1, 169, 169).into(),
(MINF_MARF, MINF_MARF, 170, 170).into(),
(MINF_MARW1, MINF_MARW1, 171, 171).into(),
(MINF_MARF, MINF_MARF, 172, 172).into(),
(MINF_MARW1, MINF_MARW1, 173, 173).into(),
(MINF_MARF, MINF_MARF, 174, 174).into(),
(MINF_MARW1, MINF_MARW1, 175, 175).into(),
(MINF_MARF, MINF_MARF, 177, 177).into(),
(MINF_MR, MINF_MR, 168, 168).into(),
(MINF_MR, MINF_MR, 126, 126).into(),
(MINF_MR, MINF_MR, 12, 12).into(),
(MINF_MR, MINF_MR, 188, 188).into(),
(MINF_MR, MINF_MR, 24, 24).into(),
(MINF_MR, MINF_MR, 190, 190).into(),
(MINF_MR, MINF_MR, 67, 67).into(),
(MINF_MR, MINF_MR, 192, 192).into(),
(MINF_MR, MINF_MR, 106, 106).into(),
(MINF_MR, MINF_MR, 194, 194).into(),
(MINF_MR, MINF_MR, 116, 116).into(),
(MINF_MR, MINF_MR, 199, 199).into(),
(MINF_MR, MINF_MR, 136, 136).into(),
(MINF_MR, MINF_MR, 201, 201).into(),
(MINF_MR, MINF_MR, 146, 146).into(),
(MINF_MR, MINF_MR, 203, 203).into(),
(MINF_MR, MINF_MR, 156, 156).into(),
(MINF_MR, MINF_MR, 205, 205).into(),
(MINF_MR, MINF_MR, 166, 166).into(),
(MINF_MR, MINF_MR, 207, 207).into(),
(MINF_MR, MINF_MR, 176, 176).into(),
(MINF_MR, MINF_MR, 186, 186).into(),
(MINF_MR, MINF_MR, 196, 196).into(),
(MINF_MR, MINF_MR, 2, 2).into(),
(MINF_MR, MINF_MR, 178, 178).into(),
(MINF_MR, MINF_MR, 266, 266).into(),
(MINF_MR, MINF_MR, 180, 180).into(),
(MINF_MR, MINF_MR, 269, 269).into(),
(MINF_MR, MINF_MR, 182, 182).into(),
(MINF_MR, MINF_MR, 272, 272).into(),
(MINF_MR, MINF_MR, 184, 184).into(),
(MINF_MR, MINF_MR, 275, 275).into(),
(MINF_MR, MINF_MR, 248, 248).into(),
(MINF_MR, MINF_MR, 263, 263).into(),
(MINF_TBRW0, MINF_TBRW0, 211, 211).into(),
(MINF_TBRF, MINF_TBRF, 220, 220).into(),
(MINF_TBRW1, MINF_TBRW1, 213, 213).into(),
(MINF_TBRF, MINF_TBRF, 220, 220).into(),
(MINF_TBRW0, MINF_TBRW0, 215, 215).into(),
(MINF_TBRF, MINF_TBRF, 222, 222).into(),
(MINF_TBRW1, MINF_TBRW1, 217, 217).into(),
(MINF_TBRF, MINF_TBRF, 222, 222).into(),
(MINF_TBRW0, MINF_TBRW0, 219, 219).into(),
(MINF_TBRF, MINF_TBRF, 224, 224).into(),
(MINF_TBRW0, MINF_TBRW0, 221, 221).into(),
(MINF_TBRF, MINF_TBRF, 226, 226).into(),
(MINF_TBRW1, MINF_TBRW1, 223, 223).into(),
(MINF_TBRF, MINF_TBRF, 226, 226).into(),
(MINF_TBRW0, MINF_TBRW0, 225, 225).into(),
(MINF_TBRF, MINF_TBRF, 228, 228).into(),
(MINF_TBRW0, MINF_TBRW0, 227, 227).into(),
(MINF_TBRF, MINF_TBRF, 252, 252).into(),
(MINF_TBRW1, MINF_TBRW1, 229, 229).into(),
(MINF_TBRF, MINF_TBRF, 252, 252).into(),
(MINF_TBB, MINF_TBB, 231, 231).into(),
(MINF_TBRW0, MINF_TBRW0, 232, 232).into(),
(MINF_TBB, MINF_TBB, 233, 235).into(),
(MINF_TBRW0, MINF_TBRW0, 234, 234).into(),
(MINF_TBB, MINF_TBB, 237, 239).into(),
(MINF_TBRW0, MINF_TBRW0, 236, 236).into(),
(MINF_TBB, MINF_TBB, 241, 241).into(),
(MINF_TBRW0, MINF_TBRW0, 238, 238).into(),
(MINF_MR, MINF_MR, 1, 265).into(),
(MINF_TBRW0, MINF_TBRW0, 240, 240).into(),
(MINF_MR, MINF_MR, 268, 271).into(),
(MINF_TBRW0, MINF_TBRW0, 242, 242).into(),
(MINF_MR, MINF_MR, 274, 274).into(),
(MINF_MR, MINF_MR, 264, 264).into(),
(MINF_MR, MINF_MR, 267, 267).into(),
(MINF_MR, MINF_MR, 270, 270).into(),
(MINF_MR, MINF_MR, 273, 273).into(),
(MINF_MR, MINF_MR, 3, 3).into(),
(MINF_MR, MINF_MR, 249, 249).into(),
(MINF_TBRF, MINF_TBRF, 250, 250).into(),
(MINF_TBB, MINF_TBB, 251, 251).into(),
(MINF_TBRW1, MINF_TBRW0, 209, 209).into(),
(MINF_MARW1, MINF_MARW1, 253, 253).into(),
(MINF_MARF, MINF_MARF, 254, 254).into(),
(MINF_MARW1, MINF_MARW1, 255, 255).into(),
(MINF_MARF, MINF_MARF, 256, 256).into(),
(MINF_MARW0, MINF_MARW0, 257, 257).into(),
(MINF_MARF, MINF_MARF, 258, 258).into(),
(MINF_MARW1, MINF_MARW1, 259, 259).into(),
(MINF_MARF, MINF_MARF, 260, 260).into(),
(MINF_MARW1, MINF_MARW1, 261, 261).into(),
(MINF_MARF, MINF_MARF, 262, 262).into(),
(MINF_MR, MINF_MR, 208, 208).into(),
(MINF_MR, MINF_MR, 230, 230).into(),
(MINF_MR, MINF_MR, 212, 212).into(),
(MINF_MR, MINF_MR, 200, 200).into(),
(MINF_MR, MINF_MR, 247, 247).into(),
(MINF_MR, MINF_MR, 214, 214).into(),
(MINF_MR, MINF_MR, 202, 202).into(),
(MINF_MR, MINF_MR, 247, 247).into(),
(MINF_MR, MINF_MR, 216, 216).into(),
(MINF_MR, MINF_MR, 204, 204).into(),
(MINF_MR, MINF_MR, 247, 247).into(),
(MINF_MR, MINF_MR, 218, 218).into(),
(MINF_MR, MINF_MR, 206, 206).into(),
(MINF_MR, MINF_MR, 247, 247).into(),
],
vec![
("ma_check_fix".to_string(), 248),
("ma_check_fix:md".to_string(), 252),
("ma_check_fix:md_0_putret_1_0".to_string(), 226),
("ma_check_fix:md_0_putret_1_1".to_string(), 228),
("ma_check_fix:md_0_putret_2_00".to_string(), 220),
("ma_check_fix:md_0_putret_2_01".to_string(), 222),
("ma_check_fix:md_0_putret_2_10".to_string(), 224),
("ma_check_fix:md_0_putret_x_0".to_string(), 210),
("ma_check_fix:md_0_putret_x_1".to_string(), 212),
("ma_check_fix:md_0_putret_x_10".to_string(), 214),
("ma_check_fix:md_0_putret_x_100".to_string(), 218),
("ma_check_fix:md_0_putret_x_11".to_string(), 216),
("ma_check_fix:md_after_ret_0".to_string(), 1),
("ma_check_fix:md_after_ret_1".to_string(), 265),
("ma_check_fix:md_after_ret_2".to_string(), 268),
("ma_check_fix:md_after_ret_3".to_string(), 271),
("ma_check_fix:md_after_ret_4".to_string(), 274),
("ma_check_fix:md_return".to_string(), 230),
("ma_check_fix:md_return_id_0_0".to_string(), 231),
("ma_check_fix:md_return_id_1_0".to_string(), 233),
("ma_check_fix:md_return_id_1_1".to_string(), 235),
("ma_check_fix:md_return_id_2_00".to_string(), 237),
("ma_check_fix:md_return_id_2_01".to_string(), 239),
("ma_check_fix:md_return_id_2_10".to_string(), 241),
("ma_check_fix_0_putret_x_0".to_string(), 208),
("ma_check_fix_after_ret_0".to_string(), 263),
("ma_check_fix_return".to_string(), 209),
("md_chunk_1_4".to_string(), 4),
("md_chunk_1_4_0_putret_x_0".to_string(), 12),
("md_chunk_1_4_return".to_string(), 13),
("md_chunk_21_8_0_putret_x_0".to_string(), 178),
("md_chunk_21_8_return".to_string(), 179),
("md_chunk_22_8_0_putret_x_0".to_string(), 180),
("md_chunk_22_8_return".to_string(), 181),
("md_chunk_23_8_0_putret_x_0".to_string(), 182),
("md_chunk_23_8_return".to_string(), 183),
("md_chunk_24_8_0_putret_x_0".to_string(), 184),
("md_chunk_24_8_return".to_string(), 185),
("md_chunk_2_4".to_string(), 14),
("md_chunk_2_4_0_putret_1_0".to_string(), 38),
("md_chunk_2_4_0_putret_1_1".to_string(), 40),
("md_chunk_2_4_0_putret_2_00".to_string(), 32),
("md_chunk_2_4_0_putret_2_01".to_string(), 34),
("md_chunk_2_4_0_putret_2_10".to_string(), 36),
("md_chunk_2_4_0_putret_x_0".to_string(), 22),
("md_chunk_2_4_0_putret_x_1".to_string(), 24),
("md_chunk_2_4_0_putret_x_10".to_string(), 26),
("md_chunk_2_4_0_putret_x_100".to_string(), 30),
("md_chunk_2_4_0_putret_x_11".to_string(), 28),
("md_chunk_2_4_return".to_string(), 42),
("md_chunk_2_4_return_id_0_0".to_string(), 43),
("md_chunk_2_4_return_id_1_0".to_string(), 45),
("md_chunk_2_4_return_id_1_1".to_string(), 47),
("md_chunk_2_4_return_id_2_00".to_string(), 49),
("md_chunk_2_4_return_id_2_01".to_string(), 51),
("md_chunk_2_4_return_id_2_10".to_string(), 53),
("md_chunk_368f_16_0_putret_x_0".to_string(), 198),
("md_chunk_368f_16_return".to_string(), 199),
("md_chunk_36_8_0_putret_x_0".to_string(), 186),
("md_chunk_36_8_return".to_string(), 187),
("md_chunk_3921_16_0_putret_x_0".to_string(), 200),
("md_chunk_3921_16_return".to_string(), 201),
("md_chunk_39_8_0_putret_x_0".to_string(), 188),
("md_chunk_39_8_return".to_string(), 189),
("md_chunk_3_4".to_string(), 55),
("md_chunk_3_4_0_putret_1_0".to_string(), 81),
("md_chunk_3_4_0_putret_1_1".to_string(), 83),
("md_chunk_3_4_0_putret_2_00".to_string(), 75),
("md_chunk_3_4_0_putret_2_01".to_string(), 77),
("md_chunk_3_4_0_putret_2_10".to_string(), 79),
("md_chunk_3_4_0_putret_x_0".to_string(), 63),
("md_chunk_3_4_0_putret_x_1".to_string(), 65),
("md_chunk_3_4_0_putret_x_10".to_string(), 67),
("md_chunk_3_4_0_putret_x_100".to_string(), 71),
("md_chunk_3_4_0_putret_x_101".to_string(), 73),
("md_chunk_3_4_0_putret_x_11".to_string(), 69),
("md_chunk_3_4_return".to_string(), 85),
("md_chunk_3_4_return_id_0_0".to_string(), 86),
("md_chunk_3_4_return_id_1_0".to_string(), 88),
("md_chunk_3_4_return_id_1_1".to_string(), 90),
("md_chunk_3_4_return_id_2_00".to_string(), 92),
("md_chunk_3_4_return_id_2_01".to_string(), 94),
("md_chunk_3_4_return_id_2_10".to_string(), 96),
("md_chunk_3a22_16_0_putret_x_0".to_string(), 202),
("md_chunk_3a22_16_return".to_string(), 203),
("md_chunk_3a_8_0_putret_x_0".to_string(), 190),
("md_chunk_3a_8_return".to_string(), 191),
("md_chunk_3b23_16_0_putret_x_0".to_string(), 204),
("md_chunk_3b23_16_return".to_string(), 205),
("md_chunk_3b_8_0_putret_x_0".to_string(), 192),
("md_chunk_3b_8_return".to_string(), 193),
("md_chunk_3c24_16_0_putret_x_0".to_string(), 206),
("md_chunk_3c24_16_return".to_string(), 207),
("md_chunk_3c_8_0_putret_x_0".to_string(), 194),
("md_chunk_3c_8_return".to_string(), 195),
("md_chunk_4_4".to_string(), 98),
("md_chunk_4_4_0_putret_x_0".to_string(), 106),
("md_chunk_4_4_return".to_string(), 107),
("md_chunk_6_4".to_string(), 108),
("md_chunk_6_4_0_putret_x_0".to_string(), 116),
("md_chunk_6_4_return".to_string(), 117),
("md_chunk_8_4".to_string(), 118),
("md_chunk_8_4_0_putret_x_0".to_string(), 126),
("md_chunk_8_4_return".to_string(), 127),
("md_chunk_8f_8_0_putret_x_0".to_string(), 196),
("md_chunk_8f_8_return".to_string(), 197),
("md_chunk_9_4".to_string(), 128),
("md_chunk_9_4_0_putret_x_0".to_string(), 136),
("md_chunk_9_4_return".to_string(), 137),
("md_chunk_a_4".to_string(), 138),
("md_chunk_a_4_0_putret_x_0".to_string(), 146),
("md_chunk_a_4_return".to_string(), 147),
("md_chunk_b_4".to_string(), 148),
("md_chunk_b_4_0_putret_x_0".to_string(), 156),
("md_chunk_b_4_return".to_string(), 157),
("md_chunk_c_4".to_string(), 158),
("md_chunk_c_4_0_putret_x_0".to_string(), 166),
("md_chunk_c_4_return".to_string(), 167),
("md_chunk_f_4".to_string(), 168),
("md_chunk_f_4_0_putret_x_0".to_string(), 176),
("md_chunk_f_4_return".to_string(), 177),
("md_next_0".to_string(), 266),
("md_next_1".to_string(), 269),
("md_next_2".to_string(), 272),
("md_next_3".to_string(), 275),
("md_next_4".to_string(), 2),
("myfunc1".to_string(), 264),
("myfunc1_0".to_string(), 264),
("myfunc1_0_putret_x_0".to_string(), 243),
("myfunc1_1".to_string(), 267),
("myfunc1_1_putret_x_0".to_string(), 244),
("myfunc1_2".to_string(), 270),
("myfunc1_2_putret_x_0".to_string(), 245),
("myfunc1_3".to_string(), 273),
("myfunc1_3_putret_x_0".to_string(), 246),
("myfunc1_after_ret_0".to_string(), 3),
("myfunc1_return".to_string(), 247),
]
),
builder.to_code()
);
}