- Introduced a new command 'annotate-usecode' to import USECODE IR JSON annotation hints as Ghidra comments on compiled anchors. - Added argument parsing for multiple IR JSON files, comment type selection, and a dry-run option. - Implemented logic to read annotation records from the provided IR files and set comments on the corresponding addresses in Ghidra. - Enhanced JSON schema to include response structure for the new command.
117 lines
7 KiB
Text
117 lines
7 KiB
Text
Class NPCTRIG entry=191 class_id=0x363
|
|
Slot 0x20 hint=None body=0x024F..0x03A8
|
|
End reason: unknown_opcode ops=111 sha1=2e696a6562c2a44adbd645948a442c9a55a63ba0
|
|
|
|
024F: 5A init local_bytes=0x6 raw=5a06
|
|
0251: 5C symbol_info symbol_offset=0x125 symbol=NPCTRIG trailing_zero=0x0 raw=5c20014e5043545249470000
|
|
025D: 0B push_word_immediate value_u16=0x1 raw=0b0100
|
|
0260: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006
|
|
0262: 4C push_indirect size=0x2 raw=4c02
|
|
0264: 77 set_info raw=77
|
|
0265: 74 loopscr value_u8=0x24 raw=7424
|
|
0267: 74 loopscr value_u8=0x3D raw=743d
|
|
0269: 74 loopscr value_u8=0x40 raw=7440
|
|
026B: 5B line_number line_number=0x53 raw=5b5300
|
|
026E: 0B push_word_immediate value_u16=0x1DB raw=0bdb01
|
|
0271: 74 loopscr value_u8=0x25 raw=7425
|
|
0273: 0A push_byte_immediate value_u8=0x20 value_signed=0x20 raw=0a20
|
|
0275: 0A push_byte_immediate value_u8=0x20 value_signed=0x20 raw=0a20
|
|
0277: 1E mul raw=1e
|
|
0278: 5B line_number line_number=0x54 raw=5b5400
|
|
027B: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006
|
|
027D: 4C push_indirect size=0x2 raw=4c02
|
|
027F: 70 loop current_var=0xFC string_bytes=0x6 loop_type=0x2 raw=70fc0602
|
|
0283: 51 jne relative_u16=0xB relative_signed=0xB target_offset=0x42 raw=510b00
|
|
0286: 5B line_number line_number=0x55 raw=5b5500
|
|
0289: 3F push_local_word bp_offset=0xFC target=[BP-04h] raw=3ffc
|
|
028B: 01 pop_local_word bp_offset=0xFA target=[BP-06h] raw=01fa
|
|
028D: 73 loopnext raw=73
|
|
028E: 52 jmp relative_u16=0xFFF2 relative_signed=0x-E target_offset=0x34 raw=52f2ff
|
|
0291: 6E add_sp value_u8=0xC6 raw=6ec6
|
|
0293: 5B line_number line_number=0x5A raw=5b5a00
|
|
0296: 3F push_local_word bp_offset=0xFA target=[BP-06h] raw=3ffa
|
|
0298: 51 jne relative_u16=0xD5 relative_signed=0xD5 target_offset=0x121 raw=51d500
|
|
029B: 5B line_number line_number=0x5B raw=5b5b00
|
|
029E: 0A push_byte_immediate value_u8=0x8 value_signed=0x8 raw=0a08
|
|
02A0: 3F push_local_word bp_offset=0xA target=[BP+0Ah] raw=3f0a
|
|
02A2: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
02A4: 0F call_intrinsic arg_bytes=0x8 intrinsic_ordinal=0x61 intrinsic_name_hint=Intrinsic0061() raw=0f086100
|
|
02A8: 6E add_sp value_u8=0xF8 raw=6ef8
|
|
02AA: 5B line_number line_number=0x5C raw=5b5c00
|
|
02AD: 0A push_byte_immediate value_u8=0x0 value_signed=0x0 raw=0a00
|
|
02AF: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
02B1: 0F call_intrinsic arg_bytes=0x6 intrinsic_ordinal=0x52 intrinsic_name_hint=Intrinsic0052() raw=0f065200
|
|
02B5: 6E add_sp value_u8=0xFA raw=6efa
|
|
02B7: 5B line_number line_number=0x5D raw=5b5d00
|
|
02BA: 0A push_byte_immediate value_u8=0x0 value_signed=0x0 raw=0a00
|
|
02BC: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
02BE: 0F call_intrinsic arg_bytes=0x6 intrinsic_ordinal=0x53 intrinsic_name_hint=Intrinsic00BD() raw=0f065300
|
|
02C2: 6E add_sp value_u8=0xFA raw=6efa
|
|
02C4: 5B line_number line_number=0x5E raw=5b5e00
|
|
02C7: 0A push_byte_immediate value_u8=0x0 value_signed=0x0 raw=0a00
|
|
02C9: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
02CB: 0F call_intrinsic arg_bytes=0x6 intrinsic_ordinal=0x54 intrinsic_name_hint=Intrinsic0054() raw=0f065400
|
|
02CF: 6E add_sp value_u8=0xFA raw=6efa
|
|
02D1: 5B line_number line_number=0x5F raw=5b5f00
|
|
02D4: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006
|
|
02D6: 0F call_intrinsic arg_bytes=0x4 intrinsic_ordinal=0x9 intrinsic_name_hint=Item::getZ(void) raw=0f040900
|
|
02DA: 6E add_sp value_u8=0xFC raw=6efc
|
|
02DC: 5D push_retval_byte raw=5d
|
|
02DD: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006
|
|
02DF: 0F call_intrinsic arg_bytes=0x4 intrinsic_ordinal=0x14 intrinsic_name_hint=Item::legal_create(uint16,uint16,uint16,uint16,uint16) raw=0f041400
|
|
02E3: 6E add_sp value_u8=0xFC raw=6efc
|
|
02E5: 5E push_retval_word raw=5e
|
|
02E6: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006
|
|
02E8: 0F call_intrinsic arg_bytes=0x4 intrinsic_ordinal=0x13 intrinsic_name_hint=Intrinsic0013() raw=0f041300
|
|
02EC: 6E add_sp value_u8=0xFC raw=6efc
|
|
02EE: 5E push_retval_word raw=5e
|
|
02EF: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
02F1: 0F call_intrinsic arg_bytes=0xA intrinsic_ordinal=0x20 intrinsic_name_hint=Item::setQLo(sint16) raw=0f0a2000
|
|
02F5: 6E add_sp value_u8=0xF6 raw=6ef6
|
|
02F7: 5B line_number line_number=0x61 raw=5b6100
|
|
02FA: 59 push_pid raw=59
|
|
02FB: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
02FD: 57 spawn arg_bytes=0x0 this_size=0x2 target_class_id=0xA11 target_event_slot=0x23 target_event_name_hint=None raw=570002110a2300
|
|
0304: 5E push_retval_word raw=5e
|
|
0305: 54 implies arg0=0x1 arg1=0x1 raw=540101
|
|
0308: 12 pop_temp raw=12
|
|
0309: 53 suspend raw=53
|
|
030A: 5C symbol_info symbol_offset=0x125 symbol=NPCTRIG trailing_zero=0x0 raw=5c67004e5043545249470000
|
|
0316: 5B line_number line_number=0x62 raw=5b6200
|
|
0319: 0A push_byte_immediate value_u8=0x5 value_signed=0x5 raw=0a05
|
|
031B: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
031D: 0F call_intrinsic arg_bytes=0x6 intrinsic_ordinal=0x52 intrinsic_name_hint=Intrinsic0052() raw=0f065200
|
|
0321: 6E add_sp value_u8=0xFA raw=6efa
|
|
0323: 5B line_number line_number=0x63 raw=5b6300
|
|
0326: 0A push_byte_immediate value_u8=0x5 value_signed=0x5 raw=0a05
|
|
0328: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
032A: 0F call_intrinsic arg_bytes=0x6 intrinsic_ordinal=0x53 intrinsic_name_hint=Intrinsic00BD() raw=0f065300
|
|
032E: 6E add_sp value_u8=0xFA raw=6efa
|
|
0330: 5B line_number line_number=0x64 raw=5b6400
|
|
0333: 0A push_byte_immediate value_u8=0x5 value_signed=0x5 raw=0a05
|
|
0335: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
0337: 0F call_intrinsic arg_bytes=0x6 intrinsic_ordinal=0x54 intrinsic_name_hint=Intrinsic0054() raw=0f065400
|
|
033B: 6E add_sp value_u8=0xFA raw=6efa
|
|
033D: 5B line_number line_number=0x67 raw=5b6700
|
|
0340: 5B line_number line_number=0x66 raw=5b6600
|
|
0343: 0F call_intrinsic arg_bytes=0x0 intrinsic_ordinal=0x1B intrinsic_name_hint=Item::pop(uint16,uint16,uint8) raw=0f001b00
|
|
0347: 5E push_retval_word raw=5e
|
|
0348: 0A push_byte_immediate value_u8=0x0 value_signed=0x0 raw=0a00
|
|
034A: 36 ne raw=36
|
|
034B: 51 jne relative_u16=0x13 relative_signed=0x13 target_offset=0x112 raw=511300
|
|
034E: 5B line_number line_number=0x68 raw=5b6800
|
|
0351: 0F call_intrinsic arg_bytes=0x0 intrinsic_ordinal=0x1B intrinsic_name_hint=Item::pop(uint16,uint16,uint8) raw=0f001b00
|
|
0355: 5E push_retval_word raw=5e
|
|
0356: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
0358: 0F call_intrinsic arg_bytes=0x6 intrinsic_ordinal=0xE5 intrinsic_name_hint=Item::hurl(sint16,sint16,sint16,sint16) raw=0f06e500
|
|
035C: 6E add_sp value_u8=0xFA raw=6efa
|
|
035E: 52 jmp relative_u16=0xF relative_signed=0xF target_offset=0x121 raw=520f00
|
|
0361: 5B line_number line_number=0x6C raw=5b6c00
|
|
0364: 4E push_global global_id=0x3C size=0x2 raw=4e3c0002
|
|
0368: 4B push_local_addr bp_offset=0xFE target=[BP-02h] raw=4bfe
|
|
036A: 0F call_intrinsic arg_bytes=0x6 intrinsic_ordinal=0xE5 intrinsic_name_hint=Item::hurl(sint16,sint16,sint16,sint16) raw=0f06e500
|
|
036E: 6E add_sp value_u8=0xFA raw=6efa
|
|
0370: 5B line_number line_number=0x6F raw=5b6f00
|
|
0373: 50 ret raw=50
|
|
|
|
unknown_trailing_bytes=05016900007265666572656e740000690a00747970654e7063000024fe026e000024fc026974656d000024fa026974656d32007a
|