├── .github
├── ISSUE_TEMPLATE
│ ├── BUG-REPORT.yml
│ └── config.yml
└── workflows
│ └── build.yml
├── .gitignore
├── Cargo.lock
├── Cargo.toml
├── LICENSE-APACHE
├── LICENSE-MIT
├── README.md
├── assets
├── diagram.svg
├── diagram_dark.svg
├── diagram_light.svg
├── ldscript.lcf
├── ldscript_partial.lcf
├── macros.inc
├── signatures
│ ├── ClearArena.yml
│ ├── DBInit.yml
│ ├── DMAErrorHandler.yml
│ ├── DVDGetDriveStatus.yml
│ ├── DVDInit.yml
│ ├── DVDLowReset.yml
│ ├── DVDLowStopMotor.yml
│ ├── DVDLowWaitCoverClose.yml
│ ├── DVDReadDiskID.yml
│ ├── DVDReset.yml
│ ├── DVDSetAutoFatalMessaging.yml
│ ├── DecrementerExceptionCallback.yml
│ ├── DecrementerExceptionHandler.yml
│ ├── ESP_GetTitleId.yml
│ ├── EXIGetID.yml
│ ├── EXIInit.yml
│ ├── GXInit.yml
│ ├── IOS_Open.yml
│ ├── IPCCltInit.yml
│ ├── IPCiProfQueueReq.yml
│ ├── ISFS_OpenAsync.yml
│ ├── ISFS_OpenLib.yml
│ ├── InitMetroTRK.yml
│ ├── InitMetroTRKCommTable.yml
│ ├── NANDInit.yml
│ ├── NANDLoggingAddMessageAsync.yml
│ ├── NANDPrivateOpenAsync.yml
│ ├── NANDSetAutoErrorMessaging.yml
│ ├── OSDefaultExceptionHandler.yml
│ ├── OSDisableScheduler.yml
│ ├── OSExceptionInit.yml
│ ├── OSExceptionVector.yml
│ ├── OSInit.yml
│ ├── OSInitAlarm.yml
│ ├── OSRegisterResetFunction.yml
│ ├── OSRegisterShutdownFunction.yml
│ ├── OSReport.yml
│ ├── OSResetSystem.yml
│ ├── OSReturnToMenu.yml
│ ├── OSSetArenaHi.yml
│ ├── OSSetArenaLo.yml
│ ├── OSSetMEM1ArenaHi.yml
│ ├── OSSetMEM1ArenaLo.yml
│ ├── OSSetMEM2ArenaHi.yml
│ ├── OSSetMEM2ArenaLo.yml
│ ├── OSSwitchFPUContext.yml
│ ├── RSOStaticLocateObject.yml
│ ├── ReportOSInfo.yml
│ ├── SCInit.yml
│ ├── SCReloadConfFileAsync.yml
│ ├── SIGetType.yml
│ ├── SIInit.yml
│ ├── SISetSamplingRate.yml
│ ├── SISetXY.yml
│ ├── TRKEXICallBack.yml
│ ├── TRKExceptionHandler.yml
│ ├── TRKInitializeIntDrivenUART.yml
│ ├── TRKInitializeNub.yml
│ ├── TRKInterruptHandler.yml
│ ├── TRKInterruptHandlerEnableInterrupts.yml
│ ├── TRKLoadContext.yml
│ ├── TRKNubMainLoop.yml
│ ├── TRKNubWelcome.yml
│ ├── TRKRestoreExtended1Block.yml
│ ├── TRKSaveExtended1Block.yml
│ ├── TRKSwapAndGo.yml
│ ├── TRKTargetContinue.yml
│ ├── TRK_main.yml
│ ├── VIGetTvFormat.yml
│ ├── _ExitProcess.yml
│ ├── __DVDCheckDevice.yml
│ ├── __DVDClearWaitingQueue.yml
│ ├── __DVDFSInit.yml
│ ├── __DVDInitWA.yml
│ ├── __DVDLowSetWAType.yml
│ ├── __DVDStoreErrorCode.yml
│ ├── __FileWrite.yml
│ ├── __NANDPrintErrorMessage.yml
│ ├── __OSCacheInit.yml
│ ├── __OSContextInit.yml
│ ├── __OSDBIntegrator.yml
│ ├── __OSDBJump.yml
│ ├── __OSFPRInit.yml
│ ├── __OSGetExceptionHandler.yml
│ ├── __OSInitAlarm.yml
│ ├── __OSInitAudioSystem.yml
│ ├── __OSInitIPCBuffer.yml
│ ├── __OSInitMemoryProtection.yml
│ ├── __OSInitNet.yml
│ ├── __OSInitPlayTime.yml
│ ├── __OSInitSTM.yml
│ ├── __OSInitSram.yml
│ ├── __OSInitSystemCall.yml
│ ├── __OSInterruptInit.yml
│ ├── __OSPSInit.yml
│ ├── __OSReschedule.yml
│ ├── __OSReturnToMenu.yml
│ ├── __OSShutdownDevices.yml
│ ├── __OSStartPlayRecord.yml
│ ├── __OSSyncSram.yml
│ ├── __OSThreadInit.yml
│ ├── __OSUnhandledException.yml
│ ├── __StringWrite.yml
│ ├── __check_pad3.yml
│ ├── __destroy_global_chain.yml
│ ├── __fini_cpp.yml
│ ├── __fini_cpp_exceptions.yml
│ ├── __fstLoad.yml
│ ├── __fwrite.yml
│ ├── __init_cpp.yml
│ ├── __init_cpp_exceptions.yml
│ ├── __init_data.yml
│ ├── __init_hardware.yml
│ ├── __init_registers.yml
│ ├── __ios_Ipc2.yml
│ ├── __mod2u.yml
│ ├── __msl_runtime_constraint_violation_s.yml
│ ├── __pformatter.yml
│ ├── __register_atexit.yml
│ ├── __register_fragment.yml
│ ├── __register_global_object.yml
│ ├── __set_debug_bba.yml
│ ├── __start.yml
│ ├── __stdio_atexit.yml
│ ├── __unregister_fragment.yml
│ ├── exit.yml
│ ├── fwrite.yml
│ ├── longlong2str.yml
│ ├── memset.yml
│ ├── nandConvertErrorCode.yml
│ ├── nandGenerateAbsPath.yml
│ ├── nandGetHeadToken.yml
│ ├── nandIsInitialized.yml
│ ├── nandOpen.yml
│ ├── printf.yml
│ ├── sprintf.yml
│ ├── stateReady.yml
│ ├── vprintf.yml
│ ├── vsnprintf.yml
│ └── vsprintf.yml
└── syntax
│ ├── README
│ ├── default.themedump
│ └── default_newlines.packdump
├── build.rs
├── deny.toml
├── docs
├── other_approaches.md
├── readme.md
└── terminology.md
├── rustfmt.toml
└── src
├── analysis
├── cfa.rs
├── executor.rs
├── mod.rs
├── objects.rs
├── pass.rs
├── signatures.rs
├── slices.rs
├── tracker.rs
└── vm.rs
├── argp_version.rs
├── cmd
├── alf.rs
├── ar.rs
├── demangle.rs
├── disc.rs
├── dol.rs
├── dwarf.rs
├── elf.rs
├── elf2dol.rs
├── extab.rs
├── map.rs
├── mod.rs
├── nlzss.rs
├── rarc.rs
├── rel.rs
├── rso.rs
├── shasum.rs
├── u8_arc.rs
├── vfs.rs
├── wad.rs
├── yay0.rs
└── yaz0.rs
├── main.rs
├── obj
├── addresses.rs
├── mod.rs
├── relocations.rs
├── sections.rs
├── splits.rs
└── symbols.rs
├── util
├── alf.rs
├── asm.rs
├── bin2c.rs
├── comment.rs
├── config.rs
├── dep.rs
├── diff.rs
├── dol.rs
├── dwarf.rs
├── elf.rs
├── extab.rs
├── file.rs
├── lcf.rs
├── map.rs
├── mod.rs
├── ncompress.rs
├── nested.rs
├── nlzss.rs
├── path.rs
├── rarc.rs
├── read.rs
├── reader.rs
├── rel.rs
├── rso.rs
├── signatures.rs
├── split.rs
├── take_seek.rs
├── toposort.rs
├── u8_arc.rs
└── wad.rs
└── vfs
├── common.rs
├── disc.rs
├── mod.rs
├── rarc.rs
├── std_fs.rs
├── u8_arc.rs
└── wad.rs
/.github/ISSUE_TEMPLATE/BUG-REPORT.yml:
--------------------------------------------------------------------------------
1 | name: 🐞 Bug
2 | description: Create a new ticket for a bug.
3 | title: "[BUG]
"
4 | labels:
5 | - bug
6 | body:
7 | - type: input
8 | id: repo-url
9 | attributes:
10 | label: Repository URL
11 | description: |
12 | The URL of the repository where this bug can be reproduced.
13 |
14 | If you're working with dtk-template locally, **please** consider pushing your configuration to a repository for easier reproduction.
15 | In return, this also allows contributing configuration fixes back to your repository.
16 | placeholder: ex. https://github.com/USERNAME/REPO-NAME
17 | - type: input
18 | id: game-name
19 | attributes:
20 | label: Game Name
21 | description: The name of the game that is impacted by this bug.
22 | placeholder: ex. Metroid Prime
23 | - type: input
24 | id: game-version
25 | attributes:
26 | label: Game Version
27 | description: The version of the game that is impacted by this bug.
28 | placeholder: ex. USA v0
29 | - type: textarea
30 | id: description
31 | attributes:
32 | label: Description
33 | description: Please describe the issue including full error messages if applicable.
34 | placeholder: "ex. When I try to split the game, I get the following error: ..."
35 | validations:
36 | required: true
37 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /.idea
3 |
--------------------------------------------------------------------------------
/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "decomp-toolkit"
3 | description = "Yet another GameCube/Wii decompilation toolkit."
4 | authors = ["Luke Street "]
5 | license = "MIT OR Apache-2.0"
6 | version = "1.6.1"
7 | edition = "2021"
8 | publish = false
9 | repository = "https://github.com/encounter/decomp-toolkit"
10 | readme = "README.md"
11 | categories = ["command-line-utilities"]
12 | rust-version = "1.81"
13 |
14 | [[bin]]
15 | name = "dtk"
16 | path = "src/main.rs"
17 |
18 | [profile.release]
19 | panic = "abort"
20 |
21 | [profile.release-lto]
22 | inherits = "release"
23 | lto = "fat"
24 | strip = "debuginfo"
25 | codegen-units = 1
26 |
27 | [dependencies]
28 | encoding_rs = "0.8"
29 | aes = "0.8"
30 | anyhow = { version = "1.0", features = ["backtrace"] }
31 | ar = { git = "https://github.com/bjorn3/rust-ar.git", branch = "write_symbol_table" }
32 | argp = "0.3"
33 | base16ct = "0.2"
34 | base64 = "0.22"
35 | byteorder = "1.5"
36 | typed-path = "0.9"
37 | cbc = "0.1"
38 | crossterm = "0.28"
39 | cwdemangle = "1.0"
40 | cwextab = "1.1"
41 | dyn-clone = "1.0"
42 | enable-ansi-support = "0.2"
43 | filetime = "0.2"
44 | fixedbitset = "0.5"
45 | flagset = { version = "0.4", features = ["serde"] }
46 | glob = "0.3"
47 | hex = "0.4"
48 | indent = "0.1"
49 | indexmap = "2.6"
50 | itertools = "0.13"
51 | log = "0.4"
52 | memchr = "2.7"
53 | memmap2 = "0.9"
54 | multimap = "0.10"
55 | nodtool = "1.4"
56 | #nodtool = { path = "../nod-rs/nodtool" }
57 | num_enum = "0.7"
58 | objdiff-core = { version = "2.2", features = ["ppc"] }
59 | #objdiff-core = { path = "../objdiff/objdiff-core", features = ["ppc"] }
60 | object = { version = "0.36", features = ["read_core", "std", "elf", "write_std"], default-features = false }
61 | once_cell = "1.20"
62 | orthrus-ncompress = "0.2"
63 | owo-colors = { version = "4.1", features = ["supports-colors"] }
64 | ppc750cl = "0.3"
65 | rayon = "1.10"
66 | regex = "1.11"
67 | rustc-hash = "2.0"
68 | sanitise-file-name = "1.0"
69 | serde = "1.0"
70 | serde_json = "1.0"
71 | serde_repr = "0.1"
72 | serde_yaml = "0.9"
73 | sha-1 = "0.10"
74 | size = "0.4"
75 | supports-color = "3.0"
76 | syntect = { version = "5.2", features = ["parsing", "regex-fancy", "dump-load"], default-features = false }
77 | tracing = "0.1"
78 | tracing-attributes = "0.1"
79 | tracing-subscriber = { version = "0.3", features = ["env-filter"] }
80 | unicode-width = "0.2"
81 | xxhash-rust = { version = "0.8", features = ["xxh3"] }
82 | zerocopy = { version = "0.8", features = ["derive"] }
83 |
84 | [target.'cfg(target_env = "musl")'.dependencies]
85 | mimalloc = "0.1"
86 |
--------------------------------------------------------------------------------
/LICENSE-MIT:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright 2021 Luke Street.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/assets/ldscript.lcf:
--------------------------------------------------------------------------------
1 | MEMORY
2 | {
3 | text : origin = $ORIGIN
4 | }
5 |
6 | SECTIONS
7 | {
8 | GROUP:
9 | {
10 | $SECTIONS
11 | .stack ALIGN(0x100):{}
12 | } > text
13 |
14 | _stack_end = $LAST_SECTION_SYMBOL + SIZEOF($LAST_SECTION_NAME);
15 | _stack_addr = (_stack_end + $STACKSIZE + 0x7) & ~0x7;
16 | _db_stack_addr = (_stack_addr + 0x2000);
17 | _db_stack_end = _stack_addr;
18 | __ArenaLo = (_db_stack_addr + 0x1f) & ~0x1f;
19 | __ArenaHi = $ARENAHI;
20 | }
21 |
22 | FORCEACTIVE
23 | {
24 | $FORCEACTIVE
25 | }
26 |
--------------------------------------------------------------------------------
/assets/ldscript_partial.lcf:
--------------------------------------------------------------------------------
1 | SECTIONS
2 | {
3 | GROUP:
4 | {
5 | $SECTIONS
6 | }
7 | }
8 |
9 | FORCEACTIVE
10 | {
11 | $FORCEACTIVE
12 | }
13 |
--------------------------------------------------------------------------------
/assets/macros.inc:
--------------------------------------------------------------------------------
1 | # General Purpose Registers (GPRs)
2 | .set r0, 0
3 | .set r1, 1
4 | .set r2, 2
5 | .set r3, 3
6 | .set r4, 4
7 | .set r5, 5
8 | .set r6, 6
9 | .set r7, 7
10 | .set r8, 8
11 | .set r9, 9
12 | .set r10, 10
13 | .set r11, 11
14 | .set r12, 12
15 | .set r13, 13
16 | .set r14, 14
17 | .set r15, 15
18 | .set r16, 16
19 | .set r17, 17
20 | .set r18, 18
21 | .set r19, 19
22 | .set r20, 20
23 | .set r21, 21
24 | .set r22, 22
25 | .set r23, 23
26 | .set r24, 24
27 | .set r25, 25
28 | .set r26, 26
29 | .set r27, 27
30 | .set r28, 28
31 | .set r29, 29
32 | .set r30, 30
33 | .set r31, 31
34 |
35 | # Floating Point Registers (FPRs)
36 | .set f0, 0
37 | .set f1, 1
38 | .set f2, 2
39 | .set f3, 3
40 | .set f4, 4
41 | .set f5, 5
42 | .set f6, 6
43 | .set f7, 7
44 | .set f8, 8
45 | .set f9, 9
46 | .set f10, 10
47 | .set f11, 11
48 | .set f12, 12
49 | .set f13, 13
50 | .set f14, 14
51 | .set f15, 15
52 | .set f16, 16
53 | .set f17, 17
54 | .set f18, 18
55 | .set f19, 19
56 | .set f20, 20
57 | .set f21, 21
58 | .set f22, 22
59 | .set f23, 23
60 | .set f24, 24
61 | .set f25, 25
62 | .set f26, 26
63 | .set f27, 27
64 | .set f28, 28
65 | .set f29, 29
66 | .set f30, 30
67 | .set f31, 31
68 |
69 | # Graphics Quantization Registers (GQRs)
70 | .set qr0, 0
71 | .set qr1, 1
72 | .set qr2, 2
73 | .set qr3, 3
74 | .set qr4, 4
75 | .set qr5, 5
76 | .set qr6, 6
77 | .set qr7, 7
78 |
79 | # Special Purpose Registers (SPRs)
80 | .set XER, 1
81 | .set LR, 8
82 | .set CTR, 9
83 | .set DSISR, 18
84 | .set DAR, 19
85 | .set DEC, 22
86 | .set SDR1, 25
87 | .set SRR0, 26
88 | .set SRR1, 27
89 | .set SPRG0, 272
90 | .set SPRG1, 273
91 | .set SPRG2, 274
92 | .set SPRG3, 275
93 | .set EAR, 282
94 | .set PVR, 287
95 | .set IBAT0U, 528
96 | .set IBAT0L, 529
97 | .set IBAT1U, 530
98 | .set IBAT1L, 531
99 | .set IBAT2U, 532
100 | .set IBAT2L, 533
101 | .set IBAT3U, 534
102 | .set IBAT3L, 535
103 | .set DBAT0U, 536
104 | .set DBAT0L, 537
105 | .set DBAT1U, 538
106 | .set DBAT1L, 539
107 | .set DBAT2U, 540
108 | .set DBAT2L, 541
109 | .set DBAT3U, 542
110 | .set DBAT3L, 543
111 | .set GQR0, 912
112 | .set GQR1, 913
113 | .set GQR2, 914
114 | .set GQR3, 915
115 | .set GQR4, 916
116 | .set GQR5, 917
117 | .set GQR6, 918
118 | .set GQR7, 919
119 | .set HID2, 920
120 | .set WPAR, 921
121 | .set DMA_U, 922
122 | .set DMA_L, 923
123 | .set UMMCR0, 936
124 | .set UPMC1, 937
125 | .set UPMC2, 938
126 | .set USIA, 939
127 | .set UMMCR1, 940
128 | .set UPMC3, 941
129 | .set UPMC4, 942
130 | .set USDA, 943
131 | .set MMCR0, 952
132 | .set PMC1, 953
133 | .set PMC2, 954
134 | .set SIA, 955
135 | .set MMCR1, 956
136 | .set PMC3, 957
137 | .set PMC4, 958
138 | .set SDA, 959
139 | .set HID0, 1008
140 | .set HID1, 1009
141 | .set IABR, 1010
142 | .set DABR, 1013
143 | .set L2CR, 1017
144 | .set ICTC, 1019
145 | .set THRM1, 1020
146 | .set THRM2, 1021
147 | .set THRM3, 1022
148 |
149 | # Condition Register (CR) bits
150 | .set cr0lt, 0
151 | .set cr0gt, 1
152 | .set cr0eq, 2
153 | .set cr0un, 3
154 | .set cr1lt, 4
155 | .set cr1gt, 5
156 | .set cr1eq, 6
157 | .set cr1un, 7
158 | .set cr2lt, 8
159 | .set cr2gt, 9
160 | .set cr2eq, 10
161 | .set cr2un, 11
162 | .set cr3lt, 12
163 | .set cr3gt, 13
164 | .set cr3eq, 14
165 | .set cr3un, 15
166 | .set cr4lt, 16
167 | .set cr4gt, 17
168 | .set cr4eq, 18
169 | .set cr4un, 19
170 | .set cr5lt, 20
171 | .set cr5gt, 21
172 | .set cr5eq, 22
173 | .set cr5un, 23
174 | .set cr6lt, 24
175 | .set cr6gt, 25
176 | .set cr6eq, 26
177 | .set cr6un, 27
178 | .set cr7lt, 28
179 | .set cr7gt, 29
180 | .set cr7eq, 30
181 | .set cr7un, 31
182 |
183 | # Defines a sized symbol with function type.
184 | # Usage:
185 | # .fn my_function, local
186 | # /* asm here */
187 | # .endfn my_function
188 | .macro .fn name, visibility=global
189 | .\visibility "\name"
190 | .type "\name", @function
191 | "\name":
192 | .endm
193 |
194 | .macro .endfn name
195 | .size "\name", . - "\name"
196 | .endm
197 |
198 | # Defines a sized symbol with object type.
199 | # Usage:
200 | # .obj my_object, local
201 | # /* data here */
202 | # .endobj my_object
203 | .macro .obj name, visibility=global
204 | .\visibility "\name"
205 | .type "\name", @object
206 | "\name":
207 | .endm
208 |
209 | .macro .endobj name
210 | .size "\name", . - "\name"
211 | .endm
212 |
213 | # Defines a sized symbol without a type.
214 | # Usage:
215 | # .sym my_sym, local
216 | # /* anything here */
217 | # .endsym my_sym
218 | .macro .sym name, visibility=global
219 | .\visibility "\name"
220 | "\name":
221 | .endm
222 |
223 | .macro .endsym name
224 | .size "\name", . - "\name"
225 | .endm
226 |
227 | # Generates a relative relocation against a symbol.
228 | # Usage:
229 | # .rel my_function, .L_label
230 | .macro .rel name, label
231 | .4byte "\name" + ("\label" - "\name")
232 | .endm
233 |
--------------------------------------------------------------------------------
/assets/signatures/DVDLowWaitCoverClose.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: a2f2555c70cdf306d3c910de993f0cbb2be63823
3 | signature: kGAAAP/gAAA4AAAB/////5AAAAD/4AAAOAAAAP////+QAAAA/+AAADgAAAL/////PIDMAP////+QBGAE/////zhgAAH/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: DVDLowWaitCoverClose
7 | size: 40
8 | flags: 5
9 | section: .text
10 | - kind: Object
11 | name: Callback
12 | size: 4
13 | flags: 2
14 | section: .sbss
15 | - kind: Object
16 | name: WaitingCoverClose
17 | size: 4
18 | flags: 2
19 | section: .sbss
20 | - kind: Object
21 | name: StopAtNextInt
22 | size: 4
23 | flags: 2
24 | section: .sbss
25 | relocations:
26 | - offset: 0
27 | kind: PpcEmbSda21
28 | symbol: 1
29 | addend: 0
30 | - offset: 8
31 | kind: PpcEmbSda21
32 | symbol: 2
33 | addend: 0
34 | - offset: 16
35 | kind: PpcEmbSda21
36 | symbol: 3
37 | addend: 0
38 | - symbol: 0
39 | hash: fefe82e79bdcbcb64edd89f1c87f30ab3f4e94ff
40 | signature: OAAAAf////+QYAAA/+AAADxgzAD/////kAAAAP/gAAA4AAAA/////ziDYAD/////kAAAAP/gAAA4AAAC/////zhgAAH/////kAQABP////9OgAAg/////w==
41 | symbols:
42 | - kind: Function
43 | name: DVDLowWaitCoverClose
44 | size: 44
45 | flags: 1
46 | section: .text
47 | - kind: Object
48 | name: Callback
49 | size: 4
50 | flags: 2
51 | section: .sbss
52 | - kind: Object
53 | name: WaitingCoverClose
54 | size: 4
55 | flags: 2
56 | section: .sbss
57 | - kind: Object
58 | name: StopAtNextInt
59 | size: 4
60 | flags: 2
61 | section: .sbss
62 | relocations:
63 | - offset: 4
64 | kind: PpcEmbSda21
65 | symbol: 1
66 | addend: 0
67 | - offset: 12
68 | kind: PpcEmbSda21
69 | symbol: 2
70 | addend: 0
71 | - offset: 24
72 | kind: PpcEmbSda21
73 | symbol: 3
74 | addend: 0
75 |
--------------------------------------------------------------------------------
/assets/signatures/DVDReset.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: ac491161099273428cf0376b1a9477680808e332
3 | signature: fAgCpv////+QAQAE/////5Qh//j/////SAAAAfwAAAM8YMwA/////zgAACr/////kANgAP////84g2AA/////zgAAAD/////gGNgBP////+QZAAE/////5AAAAD/4AAAkAAAAP/gAACAAQAM/////zghAAj/////fAgDpv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: DVDReset
7 | size: 68
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: DVDLowReset
12 | size: 0
13 | flags: 1
14 | section: .text
15 | - kind: Object
16 | name: ResetRequired
17 | size: 4
18 | flags: 2
19 | section: .sbss
20 | - kind: Object
21 | name: ResumeFromHere
22 | size: 4
23 | flags: 2
24 | section: .sbss
25 | relocations:
26 | - offset: 12
27 | kind: PpcRel24
28 | symbol: 1
29 | addend: 0
30 | - offset: 44
31 | kind: PpcEmbSda21
32 | symbol: 2
33 | addend: 0
34 | - offset: 48
35 | kind: PpcEmbSda21
36 | symbol: 3
37 | addend: 0
38 | - symbol: 0
39 | hash: fb707bf800f0c87d16e6d0a3161023d8ae500dd6
40 | signature: fAgCpv////+QAQAE/////5Qh//j/////SAAAAfwAAAM4AAAq/////zxgzAD/////kANgAP////88YMwA/////4ADYAT/////PGDMAP////+QA2AE/////zgAAAD/////kAAAAP/gAAA4AAAA/////5AAAAD/4AAAgAEADP////84IQAI/////3wIA6b/////ToAAIP////8=
41 | symbols:
42 | - kind: Function
43 | name: DVDReset
44 | size: 76
45 | flags: 1
46 | section: .text
47 | - kind: Function
48 | name: DVDLowReset
49 | size: 0
50 | flags: 5
51 | section: .text
52 | - kind: Object
53 | name: ResetRequired
54 | size: 4
55 | flags: 2
56 | section: .sbss
57 | - kind: Object
58 | name: ResumeFromHere
59 | size: 4
60 | flags: 2
61 | section: .sbss
62 | relocations:
63 | - offset: 12
64 | kind: PpcRel24
65 | symbol: 1
66 | addend: 0
67 | - offset: 48
68 | kind: PpcEmbSda21
69 | symbol: 2
70 | addend: 0
71 | - offset: 56
72 | kind: PpcEmbSda21
73 | symbol: 3
74 | addend: 0
75 |
--------------------------------------------------------------------------------
/assets/signatures/DecrementerExceptionHandler.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 6c977557abdae5d2f6839f329a69540fb67dd446
3 | signature: kAQAAP////+QJAAE/////5BEAAj/////vMQAGP////98EeKm/////5AEAaj/////fBLipv////+QBAGs/////3wT4qb/////kAQBsP////98FOKm/////5AEAbT/////fBXipv////+QBAG4/////3wW4qb/////kAQBvP////98F+Km/////5AEAcD/////SAAAAPwAAAM=
4 | symbols:
5 | - kind: Function
6 | name: DecrementerExceptionHandler
7 | size: 76
8 | flags: 2
9 | section: .text
10 | - kind: Function
11 | name: DecrementerExceptionCallback
12 | size: 0
13 | flags: 2
14 | section: .text
15 | relocations:
16 | - offset: 72
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: e4dc0b95d3d525555dd48d098822461b33b5b1a8
22 | signature: kAQAAP////+QJAAE/////5BEAAj/////vMQAGP////98EeKm/////5AEAaj/////fBLipv////+QBAGs/////3wT4qb/////kAQBsP////98FOKm/////5AEAbT/////fBXipv////+QBAG4/////3wW4qb/////kAQBvP////98F+Km/////5AEAcD/////lCH/+P////9IAAAA/AAAAw==
23 | symbols:
24 | - kind: Function
25 | name: DecrementerExceptionHandler
26 | size: 80
27 | flags: 2
28 | section: .text
29 | - kind: Function
30 | name: DecrementerExceptionCallback
31 | size: 0
32 | flags: 2
33 | section: .text
34 | relocations:
35 | - offset: 76
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 |
--------------------------------------------------------------------------------
/assets/signatures/ESP_GetTitleId.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 29176266331eb4f8704bc71665c4ca1b90eea2c1
3 | signature: VCsG/v////98LAt4/////yFr/sD/////fCFZbv////98CAKm/////5AMAAT/////OOEA8P////+T7P/8/////3x/G3j/////gIAAAP/gAAAsBAAA/////0GAABD/////OAAAAP////98AwBA/////0CCAAz/////OGD8B/////9IAABA/////zhhACD/////OAAACP////+QYQDw/////3yDI3j/////OIAAIP////84oAAA/////5ABAPT/////OMAAAf////9IAAAB/AAAAywDAAD/////QIIAFP////+AAQAg/////4CBACT/////kJ8ABP////+QHwAA/////4FBAAD/////gAoABP////+D6v/8/////3wIA6b/////fUFTeP////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: ESP_GetTitleId
7 | size: 152
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: __esFd
12 | size: 4
13 | flags: 2
14 | section: .sdata
15 | - kind: Function
16 | name: IOS_Ioctlv
17 | size: 0
18 | flags: 1
19 | section: .text
20 | relocations:
21 | - offset: 36
22 | kind: PpcEmbSda21
23 | symbol: 1
24 | addend: 0
25 | - offset: 100
26 | kind: PpcRel24
27 | symbol: 2
28 | addend: 0
29 | - symbol: 0
30 | hash: 04597748a872826b93bedaff192420160e9d09f7
31 | signature: VCsG/v////8ha/7A/////3wsC3j/////fCFZbv////98CAKm/////5AMAAT/////k+z//P////+TzP/4/////5Os//T/////fH0beP////87wAAA/////zvhAPD/////gAAAAP/gAAAsAAAA/////0GAABD/////OAAAAP////98HQBA/////0CCAAz/////O8D8B/////9IAABI/////zgBACD/////kB8AAP////84AAAI/////5AfAAT/////gGAAAP/gAAA4gAAg/////zigAAD/////OMAAAf////9/5/t4/////0gAAAH8AAADfH4beP////8sHgAA/////0CCABT/////gAEAIP////+AYQAk/////5B9AAT/////kB0AAP////9/w/N4/////4FBAAD/////g+r//P////+Dyv/4/////4Oq//T/////gAoABP////98CAOm/////31BU3j/////ToAAIP////8=
32 | symbols:
33 | - kind: Function
34 | name: ESP_GetTitleId
35 | size: 184
36 | flags: 1
37 | section: .text
38 | - kind: Object
39 | name: __esFd
40 | size: 4
41 | flags: 2
42 | section: .sdata
43 | - kind: Function
44 | name: IOS_Ioctlv
45 | size: 0
46 | flags: 1
47 | section: .text
48 | relocations:
49 | - offset: 48
50 | kind: PpcEmbSda21
51 | symbol: 1
52 | addend: 0
53 | - offset: 96
54 | kind: PpcEmbSda21
55 | symbol: 1
56 | addend: 0
57 | - offset: 116
58 | kind: PpcRel24
59 | symbol: 2
60 | addend: 0
61 |
--------------------------------------------------------------------------------
/assets/signatures/IOS_Open.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 6023916e799ae851d6b0821b68c83ae1e758fe85
3 | signature: lCH/4P////98CAKm/////5ABACT/////k+EAHP////+QYQAI/////5CBAAz/////O+AAAP////84YAAA/////ziAAAH/////OKAAAP////84wAAA/////zjhABD/////SAAAAfwAAAN8fxt4/////ywfAAD/////QIIAMP////+AYQAQ/////4CBAAj/////gKEADP////9IAAAB/AAAA3x/G3j/////LB8AAP////9AggAU/////4BhABD/////OIAAAP////9IAAAB/AAAA3x/G3j/////f+P7eP////+D4QAc/////4ABACT/////fAgDpv////84IQAg/////06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: IOS_Open
7 | size: 132
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: __ios_Ipc1
12 | size: 0
13 | flags: 2
14 | section: .text
15 | - kind: Function
16 | name: __ios_Open
17 | size: 0
18 | flags: 2
19 | section: .text
20 | - kind: Function
21 | name: __ios_Ipc2
22 | size: 0
23 | flags: 2
24 | section: .text
25 | relocations:
26 | - offset: 48
27 | kind: PpcRel24
28 | symbol: 1
29 | addend: 0
30 | - offset: 76
31 | kind: PpcRel24
32 | symbol: 2
33 | addend: 0
34 | - offset: 100
35 | kind: PpcRel24
36 | symbol: 3
37 | addend: 0
38 | - symbol: 0
39 | hash: dbc519205df008731e1195cae0ab139600b07598
40 | signature: lCH/4P////98CAKm/////5ABACT/////NAEACP////+T4QAc/////5PBABj/////O8AAAP////+ToQAU/////3ydI3j/////k4EAEP////98fBt4/////0CCAAz/////O8D//P////9IAABM/////4BgAAD/4AAAOIAAQP////84oAAg/////0gAAAH8AAADLAMAAP////+QYQAI/////0CCAAz/////O8D/6v////9IAAAo/////zigAAD/////OAAAAf////+QowAg/////4CBAAj/////kKQAJP////+AgQAI/////5CkACj/////kAMAAP////+QowAI/////yweAAD/////QIIAeP////+D4QAI/////zvAAAD/////LB8AAP////9AggAM/////zvA//z/////SAAASP////9/g+N4/////ziAAED/////SAAACP////84YwAB/////4gDAAD/////LAAAAP////9BggAQ/////ywEAAD/////OIT///////9Agv/o/////3ycGFD/////f4PjeP////84hAAB/////0gAAAH8AAADPByAAP////+QHwAM/////5O/ABD/////LB4AAP////9AggAU/////4BhAAj/////OIAAAP////9IAAAB/AAAA3x+G3j/////f8PzeP////+D4QAc/////4PBABj/////g6EAFP////+DgQAQ/////4ABACT/////fAgDpv////84IQAg/////06AACD/////
41 | symbols:
42 | - kind: Function
43 | name: IOS_Open
44 | size: 288
45 | flags: 1
46 | section: .text
47 | - kind: Object
48 | name: hid
49 | size: 4
50 | flags: 2
51 | section: .sdata
52 | - kind: Function
53 | name: iosAllocAligned
54 | size: 0
55 | flags: 1
56 | section: .text
57 | - kind: Function
58 | name: DCFlushRange
59 | size: 0
60 | flags: 1
61 | section: .text
62 | - kind: Function
63 | name: __ios_Ipc2
64 | size: 0
65 | flags: 2
66 | section: .text
67 | relocations:
68 | - offset: 56
69 | kind: PpcEmbSda21
70 | symbol: 1
71 | addend: 0
72 | - offset: 68
73 | kind: PpcRel24
74 | symbol: 2
75 | addend: 0
76 | - offset: 212
77 | kind: PpcRel24
78 | symbol: 3
79 | addend: 0
80 | - offset: 244
81 | kind: PpcRel24
82 | symbol: 4
83 | addend: 0
84 | - symbol: 0
85 | hash: 364b5f41a5e0b21e8c9592bddf46d689a4a14d22
86 | signature: lCH/4P////98CAKm/////5ABACT/////NAEACP////+T4QAc/////5PBABj/////O8AAAP////+ToQAU/////3ydI3j/////k4EAEP////98fBt4/////0CCAAz/////O8D//P////9IAABM/////4BgAAD/4AAAOIAAQP////84oAAg/////0gAAAH8AAADLAMAAP////+QYQAI/////0CCAAz/////O8D/6v////9IAAAo/////zigAAD/////kKMAIP////84AAAB/////4CBAAj/////kKQAJP////+AgQAI/////5CkACj/////kAMAAP////+QowAI/////yweAAD/////QIIAfP////+D4QAI/////zvAAAD/////LB8AAP////9AggAM/////zvA//z/////SAAATP////9/g+N4/////ziAAED/////SAAADP////9gAAAA/////zhjAAH/////iAMAAP////8sAAAA/////0GCABD/////LAQAAP////84hP///////0CC/+j/////fJwYUP////9/g+N4/////ziEAAH/////SAAAAfwAAAM8HIAA/////5AfAAz/////k78AEP////8sHgAA/////0CCABT/////gGEACP////84gAAA/////0gAAAH8AAADfH4beP////9/w/N4/////4PhABz/////g8EAGP////+DoQAU/////4OBABD/////gAEAJP////98CAOm/////zghACD/////ToAAIP////8=
87 | symbols:
88 | - kind: Function
89 | name: IOS_Open
90 | size: 292
91 | flags: 1
92 | section: .text
93 | - kind: Object
94 | name: hid
95 | size: 4
96 | flags: 2
97 | section: .sdata
98 | - kind: Function
99 | name: iosAllocAligned
100 | size: 0
101 | flags: 1
102 | section: .text
103 | - kind: Function
104 | name: DCFlushRange
105 | size: 0
106 | flags: 1
107 | section: .text
108 | - kind: Function
109 | name: __ios_Ipc2
110 | size: 0
111 | flags: 2
112 | section: .text
113 | relocations:
114 | - offset: 56
115 | kind: PpcEmbSda21
116 | symbol: 1
117 | addend: 0
118 | - offset: 68
119 | kind: PpcRel24
120 | symbol: 2
121 | addend: 0
122 | - offset: 216
123 | kind: PpcRel24
124 | symbol: 3
125 | addend: 0
126 | - offset: 248
127 | kind: PpcRel24
128 | symbol: 4
129 | addend: 0
130 |
--------------------------------------------------------------------------------
/assets/signatures/InitMetroTRK.yml:
--------------------------------------------------------------------------------
1 | # If this is in a separate section, it's .dbgtext
2 | # Otherwise .text
3 | - symbol: 0
4 | hash: 208efe0e06985ffb4916ba3ac472dd2d8144f108
5 | signature: OCH//P////+QYQAA/////zxgAAD//wAAYGMAAP//AAC8AwAA/////4CBAAD/////OCEABP////+QIwAE/////5CDAAz/////fIgCpv////+QgwCE/////5CDAID/////fIAAJv////+QgwCI/////3yAAKb/////YIOAAP////9oY4AA/////3xgAST/////fJsDpv////9IAAAB/AAAAzxgAAD//wAAYGMAAP//AAC4AwAA/////zgAAAD/////fBL7pv////98Ffum/////zwgAAD//wAAYCEAAP//AAB8oyt4/////0gAAAH8AAADLAMAAf////9AggAU/////4CDAIT/////fIgDpv////+4AwAA/////06AACD/////SAAAAPwAAAM=
6 | symbols:
7 | - kind: Function
8 | name: InitMetroTRK
9 | size: 148
10 | flags: 1
11 | section: .dbgtext
12 | - kind: Object
13 | name: gTRKCPUState
14 | size: 1072
15 | flags: 1
16 | section: .bss
17 | - kind: Function
18 | name: TRKSaveExtended1Block
19 | size: 0
20 | flags: 1
21 | section: .dbgtext
22 | - kind: Unknown
23 | name: _db_stack_addr
24 | size: 0
25 | flags: 1
26 | section: null
27 | - kind: Function
28 | name: InitMetroTRKCommTable
29 | size: 0
30 | flags: 1
31 | section: .dbgtext
32 | - kind: Function
33 | name: TRK_main
34 | size: 0
35 | flags: 1
36 | section: .dbgtext
37 | relocations:
38 | - offset: 8
39 | kind: PpcAddr16Hi
40 | symbol: 1
41 | addend: 0
42 | - offset: 12
43 | kind: PpcAddr16Lo
44 | symbol: 1
45 | addend: 0
46 | - offset: 76
47 | kind: PpcRel24
48 | symbol: 2
49 | addend: 0
50 | - offset: 80
51 | kind: PpcAddr16Hi
52 | symbol: 1
53 | addend: 0
54 | - offset: 84
55 | kind: PpcAddr16Lo
56 | symbol: 1
57 | addend: 0
58 | - offset: 104
59 | kind: PpcAddr16Hi
60 | symbol: 3
61 | addend: 0
62 | - offset: 108
63 | kind: PpcAddr16Lo
64 | symbol: 3
65 | addend: 0
66 | - offset: 116
67 | kind: PpcRel24
68 | symbol: 4
69 | addend: 0
70 | - offset: 144
71 | kind: PpcRel24
72 | symbol: 5
73 | addend: 0
74 | - symbol: 0
75 | hash: 23fc7c31e89a118810ba6c673e78695dc1cb1de9
76 | signature: OCH//P////+QYQAA/////zxgAAD//wAAYGMAAP//AAC8AwAA/////4CBAAD/////OCEABP////+QIwAE/////5CDAAz/////fIgCpv////+QgwCE/////5CDAID/////fIAAJv////+QgwCI/////3yAAKb/////YIOAAP////9oY4AA/////3xgAST/////fJsDpv////9IAAAB/AAAAzxgAAD//wAAYGMAAP//AAC4AwAA/////zgAAAD/////fBL7pv////98Ffum/////zwgAAD//wAAYCEAAP//AAB8oyt4/////0gAAAH8AAADLAMAAf////9AggAU/////4CDAIT/////fIgDpv////+4AwAA/////06AACD/////SAAAAPwAAANOgAAg/////w==
77 | symbols:
78 | - kind: Function
79 | name: InitMetroTRK
80 | size: 152
81 | flags: 1
82 | section: .dbgtext
83 | - kind: Object
84 | name: gTRKCPUState
85 | size: 1072
86 | flags: 1
87 | section: .bss
88 | - kind: Function
89 | name: TRKSaveExtended1Block
90 | size: 0
91 | flags: 1
92 | section: .dbgtext
93 | - kind: Unknown
94 | name: _db_stack_addr
95 | size: 0
96 | flags: 1
97 | section: null
98 | - kind: Function
99 | name: InitMetroTRKCommTable
100 | size: 0
101 | flags: 1
102 | section: .dbgtext
103 | - kind: Function
104 | name: TRK_main
105 | size: 0
106 | flags: 1
107 | section: .dbgtext
108 | relocations:
109 | - offset: 8
110 | kind: PpcAddr16Hi
111 | symbol: 1
112 | addend: 0
113 | - offset: 12
114 | kind: PpcAddr16Lo
115 | symbol: 1
116 | addend: 0
117 | - offset: 76
118 | kind: PpcRel24
119 | symbol: 2
120 | addend: 0
121 | - offset: 80
122 | kind: PpcAddr16Hi
123 | symbol: 1
124 | addend: 0
125 | - offset: 84
126 | kind: PpcAddr16Lo
127 | symbol: 1
128 | addend: 0
129 | - offset: 104
130 | kind: PpcAddr16Hi
131 | symbol: 3
132 | addend: 0
133 | - offset: 108
134 | kind: PpcAddr16Lo
135 | symbol: 3
136 | addend: 0
137 | - offset: 116
138 | kind: PpcRel24
139 | symbol: 4
140 | addend: 0
141 | - offset: 144
142 | kind: PpcRel24
143 | symbol: 5
144 | addend: 0
145 |
--------------------------------------------------------------------------------
/assets/signatures/NANDSetAutoErrorMessaging.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 4a3dea7febf021321ed40143f2f8f98045ed0d34
3 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////98fxt4/////0gAAAH8AAADgKAAAP/gAAAsHwAA/////ziAAAD/////fAUA0P////98ACt4/////1QfD/7/////QYIADP////88gAAA//8AADiEAAD//wAAkIAAAP/gAABIAAAB/AAAA3/j+3j/////g+EADP////+AAQAU/////3wIA6b/////OCEAEP////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: NANDSetAutoErrorMessaging
7 | size: 92
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: OSDisableInterrupts
12 | size: 0
13 | flags: 1
14 | section: .text
15 | - kind: Object
16 | name: NANDErrorFunc
17 | size: 4
18 | flags: 2
19 | section: .sbss
20 | - kind: Function
21 | name: __NANDShowErrorMessage
22 | size: 0
23 | flags: 2
24 | section: .text
25 | - kind: Function
26 | name: OSRestoreInterrupts
27 | size: 0
28 | flags: 1
29 | section: .text
30 | relocations:
31 | - offset: 20
32 | kind: PpcRel24
33 | symbol: 1
34 | addend: 0
35 | - offset: 24
36 | kind: PpcEmbSda21
37 | symbol: 2
38 | addend: 0
39 | - offset: 52
40 | kind: PpcAddr16Ha
41 | symbol: 3
42 | addend: 0
43 | - offset: 56
44 | kind: PpcAddr16Lo
45 | symbol: 3
46 | addend: 0
47 | - offset: 60
48 | kind: PpcEmbSda21
49 | symbol: 2
50 | addend: 0
51 | - offset: 64
52 | kind: PpcRel24
53 | symbol: 4
54 | addend: 0
55 | - symbol: 0
56 | hash: 36341f6ac94fe65cf46272a6cc8531246d067277
57 | signature: lCH/4P////98CAKm/////5ABACT/////k+EAHP////+TwQAY/////5OhABT/////k4EAEP////+QYQAI/////0gAAAH8AAADfH8beP////+AAAAA/+AAACwAAAD/////QYIADP////87oAAB/////0gAAAj/////O6AAAP////9/vut4/////4ABAAj/////LAAAAP////9BggAQ/////zxgAAD//wAAO4MAAP//AABIAAAI/////zuAAAD/////k4AAAP/gAAB/4/t4/////0gAAAH8AAADf8PzeP////+D4QAc/////4PBABj/////g6EAFP////+DgQAQ/////4ABACT/////fAgDpv////84IQAg/////06AACD/////
58 | symbols:
59 | - kind: Function
60 | name: NANDSetAutoErrorMessaging
61 | size: 144
62 | flags: 1
63 | section: .text
64 | - kind: Function
65 | name: OSDisableInterrupts
66 | size: 0
67 | flags: 1
68 | section: .text
69 | - kind: Object
70 | name: NANDErrorFunc
71 | size: 4
72 | flags: 2
73 | section: .sbss
74 | - kind: Function
75 | name: __NANDShowErrorMessage
76 | size: 0
77 | flags: 2
78 | section: .text
79 | - kind: Function
80 | name: OSRestoreInterrupts
81 | size: 0
82 | flags: 1
83 | section: .text
84 | relocations:
85 | - offset: 32
86 | kind: PpcRel24
87 | symbol: 1
88 | addend: 0
89 | - offset: 40
90 | kind: PpcEmbSda21
91 | symbol: 2
92 | addend: 0
93 | - offset: 80
94 | kind: PpcAddr16Ha
95 | symbol: 3
96 | addend: 0
97 | - offset: 84
98 | kind: PpcAddr16Lo
99 | symbol: 3
100 | addend: 0
101 | - offset: 96
102 | kind: PpcEmbSda21
103 | symbol: 2
104 | addend: 0
105 | - offset: 104
106 | kind: PpcRel24
107 | symbol: 4
108 | addend: 0
109 |
--------------------------------------------------------------------------------
/assets/signatures/OSDefaultExceptionHandler.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 1f40a0e9104d8a3d93a7d76126d0214d7f4f1a9c
3 | signature: kAQAAP////+QJAAE/////5BEAAj/////vMQAGP////98EeKm/////5AEAaj/////fBLipv////+QBAGs/////3wT4qb/////kAQBsP////98FOKm/////5AEAbT/////fBXipv////+QBAG4/////3wW4qb/////kAQBvP////98F+Km/////5AEAcD/////fLICpv////980wKm/////0gAAAD8AAAD
4 | symbols:
5 | - kind: Function
6 | name: OSDefaultExceptionHandler
7 | size: 84
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: __OSUnhandledException
12 | size: 0
13 | flags: 1
14 | section: .text
15 | relocations:
16 | - offset: 80
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: 9d37c8031b331d5e70bf7c323ab01cc75101dc04
22 | signature: kAQAAP////+QJAAE/////5BEAAj/////vMQAGP////98EeKm/////5AEAaj/////fBLipv////+QBAGs/////3wT4qb/////kAQBsP////98FOKm/////5AEAbT/////fBXipv////+QBAG4/////3wW4qb/////kAQBvP////98F+Km/////5AEAcD/////fLICpv////980wKm/////5Qh//j/////SAAAAPwAAAM=
23 | symbols:
24 | - kind: Function
25 | name: OSDefaultExceptionHandler
26 | size: 88
27 | flags: 1
28 | section: .text
29 | - kind: Function
30 | name: __OSUnhandledException
31 | size: 0
32 | flags: 1
33 | section: .text
34 | relocations:
35 | - offset: 84
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 |
--------------------------------------------------------------------------------
/assets/signatures/OSExceptionVector.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 3d7b32329cadb2fdefaf64fc81291e03178f6e7d
3 | signature: fJBDpv////+AgADA/////5BkAAz/////fHBCpv////+QZAAQ/////5CkABT/////oGQBov////9gYwAC/////7BkAaL/////fGAAJv////+QZACA/////3xoAqb/////kGQAhP////98aQKm/////5BkAIj/////fGECpv////+QZACM/////3x6Aqb/////kGQBmP////98ewKm/////5BkAZz/////fGUbeP////9gAAAA/////3xgAKb/////YGMAMP////98ewOm/////zhgAAD/////gIAA1P////9UpQe9/////0CCABT/////PKAAAP//AAA4pQAA//8AAHy6A6b/////TAAAZP////9UZRW6/////4ClMAD/////fLoDpv////9MAABk/////2AAAAD/////
4 | symbols:
5 | - kind: Function
6 | name: OSExceptionVector
7 | size: 156
8 | flags: 2
9 | section: .text
10 | - kind: Function
11 | name: OSDefaultExceptionHandler
12 | size: 0
13 | flags: 1
14 | section: .text
15 | relocations:
16 | - offset: 120
17 | kind: PpcAddr16Ha
18 | symbol: 1
19 | addend: 0
20 | - offset: 124
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 |
--------------------------------------------------------------------------------
/assets/signatures/OSReport.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: ee4785a7d0280ffb2f4b901bd30203d43c5b67ef
3 | signature: lCH/kP////9AhgAk/////9ghACj/////2EEAMP/////YYQA4/////9iBAED/////2KEASP/////YwQBQ/////9jhAFj/////2QEAYP////+QYQAI/////5CBAAz/////kKEAEP////+QwQAU/////5DhABj/////kQEAHP////+RIQAg/////5FBACT/////OCEAcP////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: OSReport
7 | size: 80
8 | flags: 1
9 | section: .text
10 | relocations: []
11 | - symbol: 0
12 | hash: f27f3e1be708a93a1e3e68f1248444597bbeb53d
13 | signature: fAgCpv////+QAQAE/////5Qh/4j/////QIYAJP/////YIQAo/////9hBADD/////2GEAOP/////YgQBA/////9ihAEj/////2MEAUP/////Y4QBY/////9kBAGD/////kGEACP////88AAEA/////5CBAAz/////OIEAbP////+QoQAQ/////5DBABT/////kOEAGP////+RAQAc/////5EhACD/////kUEAJP////+QAQBs/////zgBAID/////kAEAcP////84AQAI/////5ABAHT/////SAAAAfwAAAOAAQB8/////zghAHj/////fAgDpv////9OgAAg/////w==
14 | symbols:
15 | - kind: Function
16 | name: OSReport
17 | size: 128
18 | flags: 1
19 | section: .text
20 | - kind: Function
21 | name: vprintf
22 | size: 0
23 | flags: 1
24 | section: .text
25 | relocations:
26 | - offset: 108
27 | kind: PpcRel24
28 | symbol: 1
29 | addend: 0
30 | - symbol: 0
31 | hash: 12c85922a2fe4b7b5064d98e5121c48505900b2f
32 | signature: lCH/gP////98CAKm/////5ABAIT/////QIYAJP/////YIQAo/////9hBADD/////2GEAOP/////YgQBA/////9ihAEj/////2MEAUP/////Y4QBY/////9kBAGD/////OWEAiP////84AQAI/////z2AAQD/////kIEADP////84gQBo/////5BhAAj/////kKEAEP////+QwQAU/////5DhABj/////kQEAHP////+RIQAg/////5FBACT/////kYEAaP////+RYQBs/////5ABAHD/////SAAAAfwAAAOAAQCE/////3wIA6b/////OCEAgP////9OgAAg/////w==
33 | symbols:
34 | - kind: Function
35 | name: OSReport
36 | size: 128
37 | flags: 5
38 | section: .text
39 | - kind: Function
40 | name: vprintf
41 | size: 0
42 | flags: 1
43 | section: .text
44 | relocations:
45 | - offset: 108
46 | kind: PpcRel24
47 | symbol: 1
48 | addend: 0
49 | - symbol: 0
50 | hash: fb8b066032761e2ed53ef1949c2c3fd5cc773f4e
51 | signature: lCH/gP////98CAKm/////5ABAIT/////k+EAfP////9AhgAk/////9ghACj/////2EEAMP/////YYQA4/////9iBAED/////2KEASP/////YwQBQ/////9jhAFj/////2QEAYP////85YQCI/////zgBAAj/////PYABAP////+QYQAI/////zvhAGj/////kIEADP////9/5Pt4/////5ChABD/////kMEAFP////+Q4QAY/////5EBABz/////kSEAIP////+RQQAk/////5GBAGj/////kWEAbP////+QAQBw/////0gAAAH8AAADgAEAhP////+D4QB8/////3wIA6b/////OCEAgP////9OgAAg/////w==
52 | symbols:
53 | - kind: Function
54 | name: OSReport
55 | size: 140
56 | flags: 5
57 | section: .text
58 | - kind: Function
59 | name: vprintf
60 | size: 0
61 | flags: 1
62 | section: .text
63 | relocations:
64 | - offset: 116
65 | kind: PpcRel24
66 | symbol: 1
67 | addend: 0
68 | - symbol: 0
69 | hash: 8b4d03324cf93acdedafe4612efa769177cd224d
70 | signature: fAgCpv////+QAQAE/////5Qh/4D/////k+EAfP////9AhgAk/////9ghACj/////2EEAMP/////YYQA4/////9iBAED/////2KEASP/////YwQBQ/////9jhAFj/////2QEAYP////+QYQAI/////5CBAAz/////kKEAEP////+QwQAU/////5DhABj/////kQEAHP////+RIQAg/////5FBACT/////fH8beP////88AAEA/////5ABAGz/////OAEAiP////+QAQBw/////zgBAAj/////kAEAdP////84fwAA/////ziBAGz/////SAAAAfwAAAOAAQCE/////4PhAHz/////OCEAgP////98CAOm/////06AACD/////
71 | symbols:
72 | - kind: Function
73 | name: OSReport
74 | size: 144
75 | flags: 5
76 | section: .text
77 | - kind: Function
78 | name: vprintf
79 | size: 0
80 | flags: 1
81 | section: .text
82 | relocations:
83 | - offset: 120
84 | kind: PpcRel24
85 | symbol: 1
86 | addend: 0
87 | - symbol: 0
88 | hash: ab61e2a35076809d04b903f4bf9ca4b8c80de491
89 | signature: lCH/gP////98CAKm/////5ABAIT/////k+EAfP////98fxt4/////0CGACT/////2CEAKP/////YQQAw/////9hhADj/////2IEAQP/////YoQBI/////9jBAFD/////2OEAWP/////ZAQBg/////5BhAAj/////kIEADP////+QoQAQ/////5DBABT/////kOEAGP////+RAQAc/////5EhACD/////kUEAJP////84YQBo/////zwAAQD/////kAMAAP////84AQCI/////5ADAAT/////OAEACP////+QAwAI/////3/j+3j/////OIEAaP////9IAAAB/AAAA4PhAHz/////gAEAhP////98CAOm/////zghAID/////ToAAIP////8=
90 | symbols:
91 | - kind: Function
92 | name: OSReport
93 | size: 148
94 | flags: 5
95 | section: .text
96 | - kind: Function
97 | name: vprintf
98 | size: 0
99 | flags: 1
100 | section: .text
101 | relocations:
102 | - offset: 124
103 | kind: PpcRel24
104 | symbol: 1
105 | addend: 0
--------------------------------------------------------------------------------
/assets/signatures/OSSetArenaHi.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 4ad80274e02f917e972ea9c1eff1247e22bc4803
3 | signature: kGAAAP/gAABOgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: OSSetArenaHi
7 | size: 8
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: __OSArenaHi
12 | size: 4
13 | flags: 2
14 | section: .sbss
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: 23860b6bb06db3b2406b4046270c6fae85b8eed4
22 | signature: lCH/8P////98CAKm/////5ABABT/////kGEACP////+AYQAI/////0gAAAH8AAADgAEAFP////98CAOm/////zghABD/////ToAAIP////8=
23 | symbols:
24 | - kind: Function
25 | name: OSSetArenaHi
26 | size: 40
27 | flags: 1
28 | section: .text
29 | - kind: Function
30 | name: OSSetMEM1ArenaHi
31 | size: 0
32 | flags: 1
33 | section: .text
34 | relocations:
35 | - offset: 20
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 |
--------------------------------------------------------------------------------
/assets/signatures/OSSetArenaLo.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 4ad80274e02f917e972ea9c1eff1247e22bc4803
3 | signature: kGAAAP/gAABOgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: OSSetArenaLo
7 | size: 8
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: __OSArenaLo
12 | size: 4
13 | flags: 2
14 | section: .sdata
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: 23860b6bb06db3b2406b4046270c6fae85b8eed4
22 | signature: lCH/8P////98CAKm/////5ABABT/////kGEACP////+AYQAI/////0gAAAH8AAADgAEAFP////98CAOm/////zghABD/////ToAAIP////8=
23 | symbols:
24 | - kind: Function
25 | name: OSSetArenaLo
26 | size: 40
27 | flags: 1
28 | section: .text
29 | - kind: Function
30 | name: OSSetMEM1ArenaLo
31 | size: 0
32 | flags: 1
33 | section: .text
34 | relocations:
35 | - offset: 20
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 |
--------------------------------------------------------------------------------
/assets/signatures/OSSetMEM1ArenaHi.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 4ad80274e02f917e972ea9c1eff1247e22bc4803
3 | signature: kGAAAP/gAABOgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: OSSetMEM1ArenaHi
7 | size: 8
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: __OSArenaHi
12 | size: 4
13 | flags: 2
14 | section: .sbss
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 |
--------------------------------------------------------------------------------
/assets/signatures/OSSetMEM1ArenaLo.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 4ad80274e02f917e972ea9c1eff1247e22bc4803
3 | signature: kGAAAP/gAABOgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: OSSetMEM1ArenaLo
7 | size: 8
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: __OSArenaLo
12 | size: 4
13 | flags: 2
14 | section: .sdata
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 |
--------------------------------------------------------------------------------
/assets/signatures/OSSetMEM2ArenaHi.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 4ad80274e02f917e972ea9c1eff1247e22bc4803
3 | signature: kGAAAP/gAABOgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: OSSetMEM2ArenaHi
7 | size: 8
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: s_mem2ArenaHi
12 | size: 4
13 | flags: 2
14 | section: .sbss
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 |
--------------------------------------------------------------------------------
/assets/signatures/OSSetMEM2ArenaLo.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 4ad80274e02f917e972ea9c1eff1247e22bc4803
3 | signature: kGAAAP/gAABOgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: OSSetMEM2ArenaLo
7 | size: 8
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: s_mem2ArenaLo
12 | size: 4
13 | flags: 2
14 | section: .sdata
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 |
--------------------------------------------------------------------------------
/assets/signatures/OSSwitchFPUContext.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: d2bf04a5bce72b989d106a6c6c23c7c3966a5f83
3 | signature: fKAApv////9gpSAA/////3ygAST/////TAABLP////+ApAGc/////2ClIAD/////fLsDpv////88YIAA/////4CjANj/////kIMA2P////98BSAA/////0GCABT/////LAUAAP////9BggAI/////0gAAAH8AAADSAAAAfwAAAOAZACA/////3xv8SD/////gGQAhP////98aAOm/////4BkAZj/////fHoDpv////+AZACI/////3xpA6b/////gGQAjP////98YQOm/////6BkAaL/////VGMH+v////+wZAGi/////4CkABT/////gGQADP////+AhAAQ/////0wAAGT/////
4 | symbols:
5 | - kind: Function
6 | name: OSSwitchFPUContext
7 | size: 132
8 | flags: 2
9 | section: .text
10 | - kind: Function
11 | name: __OSSaveFPUContext
12 | size: 0
13 | flags: 2
14 | section: .text
15 | - kind: Function
16 | name: __OSLoadFPUContext
17 | size: 0
18 | flags: 2
19 | section: .text
20 | relocations:
21 | - offset: 56
22 | kind: PpcRel24
23 | symbol: 1
24 | addend: 0
25 | - offset: 60
26 | kind: PpcRel24
27 | symbol: 2
28 | addend: 0
29 |
--------------------------------------------------------------------------------
/assets/signatures/TRKEXICallBack.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: adc2603b85fc094a88704359450171b0524bd6f1
3 | signature: fAgCpv////+QAQAE/////5Qh//D/////k+EADP////98nyN4/////0gAAAH8AAADf+P7eP////84gAUA/////0gAAAH8AAADg+EADP////84IQAQ/////4ABAAT/////fAgDpv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: TRKEXICallBack
7 | size: 56
8 | flags: 1
9 | section: null
10 | - kind: Function
11 | name: OSEnableScheduler
12 | size: 0
13 | flags: 1
14 | section: .text
15 | - kind: Function
16 | name: TRKLoadContext
17 | size: 0
18 | flags: 1
19 | section: null
20 | relocations:
21 | - offset: 20
22 | kind: PpcRel24
23 | symbol: 1
24 | addend: 0
25 | - offset: 32
26 | kind: PpcRel24
27 | symbol: 2
28 | addend: 0
29 | - symbol: 0
30 | hash: 275dee48926851e503006205088214bed1847031
31 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////98nyN4/////0gAAAH8AAADf+P7eP////84gAUA/////0gAAAH8AAADgAEAFP////+D4QAM/////3wIA6b/////OCEAEP////9OgAAg/////w==
32 | symbols:
33 | - kind: Function
34 | name: TRKEXICallBack
35 | size: 56
36 | flags: 1
37 | section: null
38 | - kind: Function
39 | name: OSEnableScheduler
40 | size: 0
41 | flags: 1
42 | section: .text
43 | - kind: Function
44 | name: TRKLoadContext
45 | size: 0
46 | flags: 1
47 | section: null
48 | relocations:
49 | - offset: 20
50 | kind: PpcRel24
51 | symbol: 1
52 | addend: 0
53 | - offset: 32
54 | kind: PpcRel24
55 | symbol: 2
56 | addend: 0
57 |
--------------------------------------------------------------------------------
/assets/signatures/TRKExceptionHandler.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: ab3e7b03efa016969a69a81f64e665638cd3cfc4
3 | signature: PEAAAP//AABgQgAA//8AALBiAAj/////fHoCpv////+QYgAA/////6BiAAj/////LAMCAP////9BggBQ/////ywDAwD/////QYIASP////8sAwQA/////0GCAED/////LAMGAP////9BggA4/////ywDBwD/////QYIAMP////8sAwgA/////0GCACj/////LAMQAP////9BggAg/////ywDEQD/////QYIAGP////8sAxIA/////0GCABD/////LAMTAP////9BggAI/////0gAABD/////fHoCpv////84YwAE/////3x6A6b/////PEAAAP//AABgQgAA//8AADhgAAH/////mGIADf////98c0Km/////3xv8SD/////fFFCpv////98ckKm/////0wAAGT/////
4 | symbols:
5 | - kind: Function
6 | name: TRKExceptionHandler
7 | size: 156
8 | flags: 1
9 | section: null
10 | - kind: Object
11 | name: gTRKExceptionStatus
12 | size: 16
13 | flags: 2
14 | section: .data
15 | relocations:
16 | - offset: 0
17 | kind: PpcAddr16Hi
18 | symbol: 1
19 | addend: 0
20 | - offset: 4
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 | - offset: 120
25 | kind: PpcAddr16Hi
26 | symbol: 1
27 | addend: 0
28 | - offset: 124
29 | kind: PpcAddr16Lo
30 | symbol: 1
31 | addend: 0
32 |
--------------------------------------------------------------------------------
/assets/signatures/TRKInterruptHandler.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 940bb7f21ab18bce281eaa10d24739d5325075b7
3 | signature: fFoDpv////98mwOm/////3yTQqb/////fEAAJv////98U0Om/////zxAAAD//wAAYEIAAP//AACAQgCM/////2BCgAL/////aEKAAv////98AASs/////3xAAST/////fAAErP////88QAAA//8AAGBCAAD//wAAsGIAAP////8sAwUA/////0CCAIT/////PEAAAP//AABgQgAA//8AAHxoAqb/////kGIELP////9IAAAB/AAAAzxAAAD//wAAYEIAAP//AACAYgQs/////3xoA6b/////PEAAAP//AABgQgAA//8AAIBCAKD/////iEIAAP////8sAgAA/////0GCACz/////PEAAAP//AABgQgAA//8AAIhCAAz/////LAIAAf////9BggAY/////zxAAAD//wAAYEIAAP//AAA4YAAB/////5hiAJz/////SAAAIP////88QAAA//8AAGBCAAD//wAAgGIAiP////98b/Eg/////4BiAAz/////gEIACP////9MAABk/////zxAAAD//wAAYEIAAP//AACgYgAA/////zxAAAD//wAAYEIAAP//AACIQgAM/////ywCAAD/////QIIAAP//AAM8QAAA//8AAGBCAAD//wAAkAIAAP////+QIgAE/////3wRQqb/////kAIACP////+wYgL4/////7BiAvr/////fBJCpv////+QAgAM/////7yCABD/////f3oCpv////9/iAKm/////3+zQqb/////f8kCpv////9/4QKm/////79iAID/////SAAAAfwAAAM8QAAA//8AAGBCAAD//wAAOGAAAf////+YYgAM/////zxAAAD//wAAYEIAAP//AACAAgCM/////3wABKz/////fAABJP////98AASs/////4ACAID/////fAgDpv////+AAgCE/////3wJA6b/////gAIAiP////98AQOm/////4ACAJT/////fBIDpv////+AAgCQ/////3wTA6b/////uGIADP////+AAgAA/////4AiAAT/////gEIACP////9IAAAA/AAAAw==
4 | symbols:
5 | - kind: Function
6 | name: TRKInterruptHandler
7 | size: 404
8 | flags: 1
9 | section: null
10 | - kind: Object
11 | name: gTRKState
12 | size: 164
13 | flags: 1
14 | section: .bss
15 | - kind: Object
16 | name: TRK_saved_exceptionID
17 | size: 2
18 | flags: 2
19 | section: null
20 | - kind: Object
21 | name: gTRKCPUState
22 | size: 1072
23 | flags: 1
24 | section: .bss
25 | - kind: Function
26 | name: TRKUARTInterruptHandler
27 | size: 0
28 | flags: 1
29 | section: null
30 | - kind: Object
31 | name: gTRKExceptionStatus
32 | size: 16
33 | flags: 2
34 | section: .data
35 | - kind: Object
36 | name: gTRKSaveState
37 | size: 148
38 | flags: 1
39 | section: .bss
40 | - kind: Function
41 | name: TRKExceptionHandler
42 | size: 0
43 | flags: 1
44 | section: null
45 | - kind: Function
46 | name: TRKSaveExtended1Block
47 | size: 0
48 | flags: 1
49 | section: null
50 | - kind: Function
51 | name: TRKPostInterruptEvent
52 | size: 0
53 | flags: 1
54 | section: null
55 | relocations:
56 | - offset: 20
57 | kind: PpcAddr16Hi
58 | symbol: 1
59 | addend: 0
60 | - offset: 24
61 | kind: PpcAddr16Lo
62 | symbol: 1
63 | addend: 0
64 | - offset: 52
65 | kind: PpcAddr16Hi
66 | symbol: 2
67 | addend: 0
68 | - offset: 56
69 | kind: PpcAddr16Lo
70 | symbol: 2
71 | addend: 0
72 | - offset: 72
73 | kind: PpcAddr16Hi
74 | symbol: 3
75 | addend: 0
76 | - offset: 76
77 | kind: PpcAddr16Lo
78 | symbol: 3
79 | addend: 0
80 | - offset: 88
81 | kind: PpcRel24
82 | symbol: 4
83 | addend: 0
84 | - offset: 92
85 | kind: PpcAddr16Hi
86 | symbol: 3
87 | addend: 0
88 | - offset: 96
89 | kind: PpcAddr16Lo
90 | symbol: 3
91 | addend: 0
92 | - offset: 108
93 | kind: PpcAddr16Hi
94 | symbol: 1
95 | addend: 0
96 | - offset: 112
97 | kind: PpcAddr16Lo
98 | symbol: 1
99 | addend: 0
100 | - offset: 132
101 | kind: PpcAddr16Hi
102 | symbol: 5
103 | addend: 0
104 | - offset: 136
105 | kind: PpcAddr16Lo
106 | symbol: 5
107 | addend: 0
108 | - offset: 152
109 | kind: PpcAddr16Hi
110 | symbol: 1
111 | addend: 0
112 | - offset: 156
113 | kind: PpcAddr16Lo
114 | symbol: 1
115 | addend: 0
116 | - offset: 172
117 | kind: PpcAddr16Hi
118 | symbol: 6
119 | addend: 0
120 | - offset: 176
121 | kind: PpcAddr16Lo
122 | symbol: 6
123 | addend: 0
124 | - offset: 200
125 | kind: PpcAddr16Hi
126 | symbol: 2
127 | addend: 0
128 | - offset: 204
129 | kind: PpcAddr16Lo
130 | symbol: 2
131 | addend: 0
132 | - offset: 212
133 | kind: PpcAddr16Hi
134 | symbol: 5
135 | addend: 0
136 | - offset: 216
137 | kind: PpcAddr16Lo
138 | symbol: 5
139 | addend: 0
140 | - offset: 228
141 | kind: PpcRel14
142 | symbol: 7
143 | addend: 0
144 | - offset: 232
145 | kind: PpcAddr16Hi
146 | symbol: 3
147 | addend: 0
148 | - offset: 236
149 | kind: PpcAddr16Lo
150 | symbol: 3
151 | addend: 0
152 | - offset: 300
153 | kind: PpcRel24
154 | symbol: 8
155 | addend: 0
156 | - offset: 304
157 | kind: PpcAddr16Hi
158 | symbol: 5
159 | addend: 0
160 | - offset: 308
161 | kind: PpcAddr16Lo
162 | symbol: 5
163 | addend: 0
164 | - offset: 320
165 | kind: PpcAddr16Hi
166 | symbol: 1
167 | addend: 0
168 | - offset: 324
169 | kind: PpcAddr16Lo
170 | symbol: 1
171 | addend: 0
172 | - offset: 400
173 | kind: PpcRel24
174 | symbol: 9
175 | addend: 0
176 |
--------------------------------------------------------------------------------
/assets/signatures/TRKInterruptHandlerEnableInterrupts.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: ad1e363a52dd88252a4e726dce6f01c658f34869
3 | signature: PEAAAP//AABgQgAA//8AAIACAIz/////fAAErP////98AAEk/////3wABKz/////gAIAgP////98CAOm/////4ACAIT/////fAkDpv////+AAgCI/////3wBA6b/////gAIAlP////98EgOm/////4ACAJD/////fBMDpv////+4YgAM/////4ACAAD/////gCIABP////+AQgAI/////0gAAAD8AAAD
4 | symbols:
5 | - kind: Function
6 | name: TRKInterruptHandlerEnableInterrupts
7 | size: 84
8 | flags: 1
9 | section: null
10 | - kind: Object
11 | name: gTRKState
12 | size: 164
13 | flags: 1
14 | section: .bss
15 | - kind: Function
16 | name: TRKPostInterruptEvent
17 | size: 0
18 | flags: 1
19 | section: null
20 | relocations:
21 | - offset: 0
22 | kind: PpcAddr16Hi
23 | symbol: 1
24 | addend: 0
25 | - offset: 4
26 | kind: PpcAddr16Lo
27 | symbol: 1
28 | addend: 0
29 | - offset: 80
30 | kind: PpcRel24
31 | symbol: 2
32 | addend: 0
33 |
--------------------------------------------------------------------------------
/assets/signatures/TRKLoadContext.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 39c774370cd691f26d7a4369050c34e1c0520adc
3 | signature: gAMAAP////+AIwAE/////4BDAAj/////oKMBov////9Upge9/////0GCABT/////VKUH+v////+wowGi/////7ijABT/////SAAACP////+5owA0/////3x/G3j/////fIMjeP////+AnwCA/////3yP8SD/////gJ8AhP////98iAOm/////4CfAIj/////fIkDpv////+AnwCM/////3yBA6b/////fIAApv////9UhARe/////1SEB/r/////fIABJP////98UUOm/////4CfAAz/////fJJDpv////+AnwAQ/////3yTQ6b/////gF8BmP////+AnwGc/////4P/AHz/////SAAAAPwAAAM=
4 | symbols:
5 | - kind: Function
6 | name: TRKLoadContext
7 | size: 136
8 | flags: 1
9 | section: null
10 | - kind: Function
11 | name: TRKInterruptHandler
12 | size: 0
13 | flags: 1
14 | section: null
15 | relocations:
16 | - offset: 132
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 0
20 |
--------------------------------------------------------------------------------
/assets/signatures/TRKNubWelcome.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 1096e8412ac1a6bc148db28304770dce50786182
3 | signature: PGAAAP//AAA4YwAA//8AAEgAAAD8AAAD
4 | symbols:
5 | - kind: Function
6 | name: TRKNubWelcome
7 | size: 12
8 | flags: 1
9 | section: null
10 | - kind: Object
11 | name: '@stringBase0'
12 | size: 29
13 | flags: 2
14 | section: .data
15 | - kind: Function
16 | name: TRK_board_display
17 | size: 0
18 | flags: 1
19 | section: null
20 | relocations:
21 | - offset: 0
22 | kind: PpcAddr16Ha
23 | symbol: 1
24 | addend: 0
25 | - offset: 4
26 | kind: PpcAddr16Lo
27 | symbol: 1
28 | addend: 0
29 | - offset: 8
30 | kind: PpcRel24
31 | symbol: 2
32 | addend: 0
33 | - symbol: 0
34 | hash: bf1d250aadb41b687ba7d98a7f1a9e3feb36a805
35 | signature: lCH/8P////98CAKm/////zxgAAD//wAAkAEAFP////84YwAA//8AAEgAAAH8AAADgAEAFP////98CAOm/////zghABD/////ToAAIP////8=
36 | symbols:
37 | - kind: Function
38 | name: TRKNubWelcome
39 | size: 40
40 | flags: 1
41 | section: null
42 | - kind: Object
43 | name: '@62'
44 | size: 27
45 | flags: 2
46 | section: .rodata
47 | - kind: Function
48 | name: TRK_board_display
49 | size: 0
50 | flags: 1
51 | section: null
52 | relocations:
53 | - offset: 8
54 | kind: PpcAddr16Ha
55 | symbol: 1
56 | addend: 0
57 | - offset: 16
58 | kind: PpcAddr16Lo
59 | symbol: 1
60 | addend: 0
61 | - offset: 20
62 | kind: PpcRel24
63 | symbol: 2
64 | addend: 0
65 | - symbol: 0
66 | hash: d3a8cc933a90410913d19aa2c6aa838d0e140218
67 | signature: fAgCpv////88YAAA//8AAJABAAT/////OGMAAP//AACUIf/4/////0gAAAH8AAADOCEACP////+AAQAE/////3wIA6b/////ToAAIP////8=
68 | symbols:
69 | - kind: Function
70 | name: TRKNubWelcome
71 | size: 40
72 | flags: 1
73 | section: null
74 | - kind: Object
75 | name: '@40'
76 | size: 26
77 | flags: 2
78 | section: .rodata
79 | - kind: Function
80 | name: TRK_board_display
81 | size: 0
82 | flags: 1
83 | section: null
84 | relocations:
85 | - offset: 4
86 | kind: PpcAddr16Ha
87 | symbol: 1
88 | addend: 0
89 | - offset: 12
90 | kind: PpcAddr16Lo
91 | symbol: 1
92 | addend: 0
93 | - offset: 20
94 | kind: PpcRel24
95 | symbol: 2
96 | addend: 0
97 |
--------------------------------------------------------------------------------
/assets/signatures/TRKRestoreExtended1Block.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 188f59e23dc0ef4c474149b14f299ba5a3d2abd4
3 | signature: PEAAAP//AABgQgAA//8AADygAAD//wAAYKUAAP//AACIZQAA/////4jFAAH/////OAAAAP////+YBQAA/////5gFAAH/////LAMAAP////9BggAU/////4MCAej/////gyIB7P////9/HEOm/////389Q6b/////uoIC/P////9+kOOm/////36x46b/////ftLjpv////9+8+Om/////38U46b/////fzXjpv////9/VuOm/////39346b/////f5jjpv////9/2uOm/////3/746b/////SAAABP////+6YgKE/////351+6b/////fpnrpv////9+uuum/////37d66b/////fv7rpv////9/G+um/////38466b/////f1zrpv////9/2/um/////3/5+6b/////SAAABP////+6AgGo/////34AAaT/////fiEBpP////9+QgGk/////35jAaT/////foQBpP////9+pQGk/////37GAaT/////fucBpP////9/CAGk/////38pAaT/////f0oBpP////9/awGk/////3+MAaT/////f60BpP////9/zgGk/////3/vAaT/////uYIB8P////99kPum/////32x+6b/////fdsDpv////99/0Om/////34Qg6b/////fjGDpv////9+UoOm/////35zg6b/////fpSDpv////9+tYOm/////37Wg6b/////fveDpv////9/GIOm/////385g6b/////f1qDpv////9/e4Om/////3+cg6b/////f72Dpv////9/3oOm/////3//g6b/////usICXP////9+2QOm/////37zA6b/////fxIDpv////9/MEOm/////39RQ6b/////f3JDpv////9/k0Om/////3/S+6b/////f/pDpv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: TRKRestoreExtended1Block
7 | size: 356
8 | flags: 1
9 | section: null
10 | - kind: Object
11 | name: gTRKCPUState
12 | size: 1072
13 | flags: 1
14 | section: .bss
15 | - kind: Object
16 | name: gTRKRestoreFlags
17 | size: 9
18 | flags: 1
19 | section: .bss
20 | relocations:
21 | - offset: 0
22 | kind: PpcAddr16Hi
23 | symbol: 1
24 | addend: 0
25 | - offset: 4
26 | kind: PpcAddr16Lo
27 | symbol: 1
28 | addend: 0
29 | - offset: 8
30 | kind: PpcAddr16Hi
31 | symbol: 2
32 | addend: 0
33 | - offset: 12
34 | kind: PpcAddr16Lo
35 | symbol: 2
36 | addend: 0
37 | - symbol: 0
38 | hash: 993dfd86ff97aa08c6ad8934c69d8d6029fbe63b
39 | signature: PEAAAP//AABgQgAA//8AADygAAD//wAAYKUAAP//AACIZQAA/////4jFAAH/////OAAAAP////+YBQAA/////5gFAAH/////LAMAAP////9BggAU/////4MCAej/////gyIB7P////9/HEOm/////389Q6b/////uoIC/P////9+kOOm/////36x46b/////ftLjpv////9+8+Om/////38U46b/////fzXjpv////9/VuOm/////39346b/////f5jjpv////9/2uOm/////3/746b/////SAAAHP////+7QgLg/////39Q66b/////f3frpv////9/tvum/////3/X+6b/////f//7pv////+6YgKE/////351+6b/////fpnrpv////9+uuum/////37d66b/////fv7rpv////9/G+um/////38466b/////f1zrpv////9/fPum/////3+d+6b/////f777pv////9/2/um/////3/5+6b/////SAAANP////8sBgAA/////0GCAAz/////g0ICeP////9/VgOm/////7siAkD/////fzDzpv////9/UfOm/////39y86b/////f5Pzpv////9/tPOm/////3/V86b/////f/bzpv////+6AgGo/////34AAaT/////fiEBpP////9+QgGk/////35jAaT/////foQBpP////9+pQGk/////37GAaT/////fucBpP////9/CAGk/////38pAaT/////f0oBpP////9/awGk/////3+MAaT/////f60BpP////9/zgGk/////3/vAaT/////uYIB8P////99kPum/////32x+6b/////fdsDpv////99/0Om/////34Qg6b/////fjGDpv////9+UoOm/////35zg6b/////fpSDpv////9+tYOm/////37Wg6b/////fveDpv////9/GIOm/////385g6b/////f1qDpv////9/e4Om/////3+cg6b/////f72Dpv////9/3oOm/////3//g6b/////usICXP////9+2QOm/////37zA6b/////fxIDpv////9/MEOm/////39RQ6b/////f3JDpv////9/k0Om/////3/S+6b/////f/pDpv////9OgAAg/////w==
40 | symbols:
41 | - kind: Function
42 | name: TRKRestoreExtended1Block
43 | size: 440
44 | flags: 1
45 | section: null
46 | - kind: Object
47 | name: gTRKCPUState
48 | size: 1072
49 | flags: 1
50 | section: .bss
51 | - kind: Object
52 | name: gTRKRestoreFlags
53 | size: 9
54 | flags: 1
55 | section: .data
56 | relocations:
57 | - offset: 0
58 | kind: PpcAddr16Hi
59 | symbol: 1
60 | addend: 0
61 | - offset: 4
62 | kind: PpcAddr16Lo
63 | symbol: 1
64 | addend: 0
65 | - offset: 8
66 | kind: PpcAddr16Hi
67 | symbol: 2
68 | addend: 0
69 | - offset: 12
70 | kind: PpcAddr16Lo
71 | symbol: 2
72 | addend: 0
73 |
--------------------------------------------------------------------------------
/assets/signatures/TRKSaveExtended1Block.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 282e360f42e342726fa4befd6ac32896cc39dc1d
3 | signature: PEAAAP//AABgQgAA//8AAH4ABKb/////fiEEpv////9+QgSm/////35jBKb/////foQEpv////9+pQSm/////37GBKb/////fucEpv////9/CASm/////38pBKb/////f0oEpv////9/awSm/////3+MBKb/////f60Epv////9/zgSm/////3/vBKb/////vgIBqP////99TELm/////31tQub/////fZD6pv////99sfqm/////33bAqb/////ff9Cpv////9+EIKm/////34xgqb/////flKCpv////9+c4Km/////36Ugqb/////frWCpv////9+1oKm/////373gqb/////fxiCpv////9/OYKm/////39agqb/////f3uCpv////9/nIKm/////3+9gqb/////f96Cpv////9//4Km/////71CAej/////ftkCpv////9+8wKm/////38SAqb/////fzBCpv////9/UUKm/////39yQqb/////f5NCpv////87oAAA/////3/S+qb/////f/pCpv////++wgJc/////36Q4qb/////frHipv////9+0uKm/////37z4qb/////fxTipv////9/NeKm/////39W4qb/////f3fipv////9/mOKm/////3+54qb/////f9ripv////9/++Km/////76CAvz/////SAAASP////9+AOqm/////34n6qb/////fkjqpv////9+aeqm/////36K6qb/////fqvqpv////9+zOqm/////37t6qb/////fw7qpv////9/L+qm/////39Q6qb/////f3fqpv////9/n+qm/////3+2+qb/////f9f6pv////9///qm/////74CArj/////fnX6pv////9+meqm/////3666qb/////ft3qpv////9+/uqm/////38b6qb/////fzjqpv////9/XOqm/////398+qb/////f536pv////9/vvqm/////3/b+qb/////f/n6pv////++YgKE/////06AACD/////fzDypv////9/UfKm/////39y8qb/////f5Pypv////9/tPKm/////3/V8qb/////f/bypv////+/IgJA/////3/2Aqb/////k+ICeP////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: TRKSaveExtended1Block
7 | size: 440
8 | flags: 1
9 | section: null
10 | - kind: Object
11 | name: gTRKCPUState
12 | size: 1072
13 | flags: 1
14 | section: .bss
15 | relocations:
16 | - offset: 0
17 | kind: PpcAddr16Hi
18 | symbol: 1
19 | addend: 0
20 | - offset: 4
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 | - symbol: 0
25 | hash: 422b55c69624b98ec476f3d104a5042a4a402dbc
26 | signature: PEAAAP//AABgQgAA//8AAH4ABKb/////fiEEpv////9+QgSm/////35jBKb/////foQEpv////9+pQSm/////37GBKb/////fucEpv////9/CASm/////38pBKb/////f0oEpv////9/awSm/////3+MBKb/////f60Epv////9/zgSm/////3/vBKb/////vgIBqP////99TELm/////31tQub/////fZD6pv////99sfqm/////33bAqb/////ff9Cpv////9+EIKm/////34xgqb/////flKCpv////9+c4Km/////36Ugqb/////frWCpv////9+1oKm/////373gqb/////fxiCpv////9/OYKm/////39agqb/////f3uCpv////9/nIKm/////3+9gqb/////f96Cpv////9//4Km/////71CAej/////ftkCpv////9+8wKm/////38SAqb/////fzBCpv////9/UUKm/////39yQqb/////f5NCpv////87oAAA/////3/S+qb/////f/pCpv////++wgJc/////36Q4qb/////frHipv////9+0uKm/////37z4qb/////fxTipv////9/NeKm/////39W4qb/////f3fipv////9/mOKm/////3+54qb/////f9ripv////9/++Km/////76CAvz/////SAAASP////9+AOqm/////34n6qb/////fkjqpv////9+aeqm/////36K6qb/////fqvqpv////9+zOqm/////37t6qb/////fw7qpv////9/L+qm/////39Q6qb/////f3fqpv////9/n+qm/////3+2+qb/////f9f6pv////9///qm/////74CArj/////fnX6pv////9+meqm/////3666qb/////ft3qpv////9+/uqm/////38b6qb/////fzjqpv////9/XOqm/////398+qb/////f536pv////9/vvqm/////3/b+qb/////f/n6pv////++YgKE/////0gAACz/////fzDypv////9/UfKm/////39y8qb/////f5Pypv////9/tPKm/////3/V8qb/////f/bypv////+/IgJA/////3/2Aqb/////k+ICeP////9OgAAg/////w==
27 | symbols:
28 | - kind: Function
29 | name: TRKSaveExtended1Block
30 | size: 440
31 | flags: 1
32 | section: null
33 | - kind: Object
34 | name: gTRKCPUState
35 | size: 1072
36 | flags: 1
37 | section: .bss
38 | relocations:
39 | - offset: 0
40 | kind: PpcAddr16Hi
41 | symbol: 1
42 | addend: 0
43 | - offset: 4
44 | kind: PpcAddr16Lo
45 | symbol: 1
46 | addend: 0
47 | - symbol: 0
48 | hash: a08ded918d6b4378c360f017a04cce78823c2adf
49 | signature: PEAAAP//AABgQgAA//8AAH4ABKb/////fiEEpv////9+QgSm/////35jBKb/////foQEpv////9+pQSm/////37GBKb/////fucEpv////9/CASm/////38pBKb/////f0oEpv////9/awSm/////3+MBKb/////f60Epv////9/zgSm/////3/vBKb/////vgIBqP////9/bELm/////3+NQub/////f7D6pv////9/0fqm/////3/7Aqb/////v2IB6P////99/0Km/////34Qgqb/////fjGCpv////9+UoKm/////35zgqb/////fpSCpv////9+tYKm/////37Wgqb/////fveCpv////9/GIKm/////385gqb/////f1qCpv////9/e4Km/////3+cgqb/////f72Cpv////9/3oKm/////3//gqb/////veIB/P////9/EIqm/////38xiqb/////f1KKpv////9/c4qm/////3+Uiqb/////f7WKpv////9/1oqm/////3/3iqb/////vwICQP////9+2QKm/////37zAqb/////fxICpv////9/MEKm/////39RQqb/////f3JCpv////9/k0Km/////3+2Aqb/////f9L6pv////9/+kKm/////77CAlz/////fxX6pv////9/Oeqm/////39a6qb/////f33qpv////9/nuqm/////3+76qb/////f9jqpv////9//Oqm/////78CAoT/////f7eKpv////9/2Iqm/////3/5iqb/////v6ICpP////9/2/qm/////3/5+qb/////v8ICsP////9+GgKm/////5ICArj/////fjqKpv////+SIgK8/////38o6qb/////f0nqpv////9/auqm/////3+L6qb/////f6zqpv////9/zeqm/////3/u6qb/////vyICwP////9/O4qm/////39ciqb/////f32Kpv////9/noqm/////3+/iqb/////f9jipv////9/8/qm/////78iAtz/////fpDipv////9+seKm/////37S4qb/////fvPipv////9/FOKm/////3814qb/////f1bipv////9/d+Km/////3+Y4qb/////f7nipv////9/2uKm/////3/74qb/////voIC/P////9OgAAg/////w==
50 | symbols:
51 | - kind: Function
52 | name: TRKSaveExtended1Block
53 | size: 452
54 | flags: 1
55 | section: null
56 | - kind: Object
57 | name: gTRKCPUState
58 | size: 1072
59 | flags: 1
60 | section: .bss
61 | relocations:
62 | - offset: 0
63 | kind: PpcAddr16Hi
64 | symbol: 1
65 | addend: 0
66 | - offset: 4
67 | kind: PpcAddr16Lo
68 | symbol: 1
69 | addend: 0
70 |
--------------------------------------------------------------------------------
/assets/signatures/TRKSwapAndGo.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 062032c22dec5fa721b11e6e1010fb9a9d97a406
3 | signature: PGAAAP//AABgYwAA//8AALwDAAD/////fAAApv////+QAwCM/////3wIAqb/////kAMAgP////98CQKm/////5ADAIT/////fAECpv////+QAwCI/////3wSAqb/////kAMAlP////98EwKm/////5ADAJD/////OCCAAv////98IQj4/////3xgAKb/////fGMIOP////98YAEk/////zxAAAD//wAAYEIAAP//AACAQgCg/////4hCAAD/////LAIAAP////9BggAY/////zxAAAD//wAAYEIAAP//AAA4YAAB/////5hiAJz/////SAAAAPwAAAM8QAAA//8AAGBCAAD//wAAOGAAAP////+YYgAM/////0gAAAH8AAADPEAAAP//AABgQgAA//8AALtiAID/////f3oDpv////9/iAOm/////3+v8SD/////f8kDpv////9/4QOm/////7hiAAz/////gAIAAP////+AIgAE/////4BCAAj/////TAAAZP////8=
4 | symbols:
5 | - kind: Function
6 | name: TRKSwapAndGo
7 | size: 196
8 | flags: 1
9 | section: null
10 | - kind: Object
11 | name: gTRKState
12 | size: 164
13 | flags: 1
14 | section: .bss
15 | - kind: Function
16 | name: TRKInterruptHandlerEnableInterrupts
17 | size: 0
18 | flags: 1
19 | section: null
20 | - kind: Object
21 | name: gTRKExceptionStatus
22 | size: 16
23 | flags: 2
24 | section: .data
25 | - kind: Function
26 | name: TRKRestoreExtended1Block
27 | size: 0
28 | flags: 1
29 | section: null
30 | - kind: Object
31 | name: gTRKCPUState
32 | size: 1072
33 | flags: 1
34 | section: .bss
35 | relocations:
36 | - offset: 0
37 | kind: PpcAddr16Hi
38 | symbol: 1
39 | addend: 0
40 | - offset: 4
41 | kind: PpcAddr16Lo
42 | symbol: 1
43 | addend: 0
44 | - offset: 80
45 | kind: PpcAddr16Hi
46 | symbol: 1
47 | addend: 0
48 | - offset: 84
49 | kind: PpcAddr16Lo
50 | symbol: 1
51 | addend: 0
52 | - offset: 104
53 | kind: PpcAddr16Hi
54 | symbol: 1
55 | addend: 0
56 | - offset: 108
57 | kind: PpcAddr16Lo
58 | symbol: 1
59 | addend: 0
60 | - offset: 120
61 | kind: PpcRel24
62 | symbol: 2
63 | addend: 0
64 | - offset: 124
65 | kind: PpcAddr16Hi
66 | symbol: 3
67 | addend: 0
68 | - offset: 128
69 | kind: PpcAddr16Lo
70 | symbol: 3
71 | addend: 0
72 | - offset: 140
73 | kind: PpcRel24
74 | symbol: 4
75 | addend: 0
76 | - offset: 144
77 | kind: PpcAddr16Hi
78 | symbol: 5
79 | addend: 0
80 | - offset: 148
81 | kind: PpcAddr16Lo
82 | symbol: 5
83 | addend: 0
84 |
--------------------------------------------------------------------------------
/assets/signatures/TRKTargetContinue.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 642f55af2878d23c75243dbcc9a63ff1bf3fe552
3 | signature: fAgCpv////84YAAA/////5ABAAT/////lCH/+P////9IAAAB/AAAA0gAAAH8AAADSAAAAfwAAANIAAAB/AAAAzhgAAD/////OCEACP////+AAQAE/////3wIA6b/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: TRKTargetContinue
7 | size: 52
8 | flags: 1
9 | section: null
10 | - kind: Function
11 | name: TRKTargetSetStopped
12 | size: 0
13 | flags: 1
14 | section: null
15 | - kind: Function
16 | name: UnreserveEXI2Port
17 | size: 0
18 | flags: 1
19 | section: null
20 | - kind: Function
21 | name: TRKSwapAndGo
22 | size: 0
23 | flags: 1
24 | section: null
25 | - kind: Function
26 | name: ReserveEXI2Port
27 | size: 0
28 | flags: 1
29 | section: null
30 | relocations:
31 | - offset: 16
32 | kind: PpcRel24
33 | symbol: 1
34 | addend: 0
35 | - offset: 20
36 | kind: PpcRel24
37 | symbol: 2
38 | addend: 0
39 | - offset: 24
40 | kind: PpcRel24
41 | symbol: 3
42 | addend: 0
43 | - offset: 28
44 | kind: PpcRel24
45 | symbol: 4
46 | addend: 0
47 | - symbol: 0
48 | hash: 25c012dcebb107cca87399fe5836bb3152931ad6
49 | signature: lCH/8P////98CAKm/////5ABABT/////OGAAAP////9IAAAB/AAAA0gAAAH8AAADSAAAAfwAAANIAAAB/AAAAzhgAAD/////gAEAFP////98CAOm/////zghABD/////ToAAIP////8=
50 | symbols:
51 | - kind: Function
52 | name: TRKTargetContinue
53 | size: 52
54 | flags: 1
55 | section: null
56 | - kind: Function
57 | name: TRKTargetSetStopped
58 | size: 0
59 | flags: 1
60 | section: null
61 | - kind: Function
62 | name: UnreserveEXI2Port
63 | size: 0
64 | flags: 1
65 | section: null
66 | - kind: Function
67 | name: TRKSwapAndGo
68 | size: 0
69 | flags: 1
70 | section: null
71 | - kind: Function
72 | name: ReserveEXI2Port
73 | size: 0
74 | flags: 1
75 | section: null
76 | relocations:
77 | - offset: 16
78 | kind: PpcRel24
79 | symbol: 1
80 | addend: 0
81 | - offset: 20
82 | kind: PpcRel24
83 | symbol: 2
84 | addend: 0
85 | - offset: 24
86 | kind: PpcRel24
87 | symbol: 3
88 | addend: 0
89 | - offset: 28
90 | kind: PpcRel24
91 | symbol: 4
92 | addend: 0
93 | - symbol: 0
94 | hash: c5ceb6c0acf128cbb6c089d79fb0c41eb8688748
95 | signature: lCH/8P////98CAKm/////zhgAAD/////kAEAFP////9IAAAB/AAAA0gAAAH8AAADSAAAAfwAAANIAAAB/AAAA4ABABT/////OGAAAP////98CAOm/////zghABD/////ToAAIP////8=
96 | symbols:
97 | - kind: Function
98 | name: TRKTargetContinue
99 | size: 52
100 | flags: 1
101 | section: null
102 | - kind: Function
103 | name: TRKTargetSetStopped
104 | size: 0
105 | flags: 1
106 | section: null
107 | - kind: Function
108 | name: UnreserveEXI2Port
109 | size: 0
110 | flags: 1
111 | section: null
112 | - kind: Function
113 | name: TRKSwapAndGo
114 | size: 0
115 | flags: 1
116 | section: null
117 | - kind: Function
118 | name: ReserveEXI2Port
119 | size: 0
120 | flags: 1
121 | section: null
122 | relocations:
123 | - offset: 16
124 | kind: PpcRel24
125 | symbol: 1
126 | addend: 0
127 | - offset: 20
128 | kind: PpcRel24
129 | symbol: 2
130 | addend: 0
131 | - offset: 24
132 | kind: PpcRel24
133 | symbol: 3
134 | addend: 0
135 | - offset: 28
136 | kind: PpcRel24
137 | symbol: 4
138 | addend: 0
139 |
--------------------------------------------------------------------------------
/assets/signatures/_ExitProcess.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 9cb15dc0c16f52de5d46476e7226810c7cad1fc4
3 | signature: fAgCpv////+QAQAE/////5Qh//j/////SAAAAfwAAAOAAQAM/////zghAAj/////fAgDpv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: _ExitProcess
7 | size: 32
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: PPCHalt
12 | size: 0
13 | flags: 5
14 | section: .text
15 | relocations:
16 | - offset: 12
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: 82d08ce341917ff7f79c945a5cd98f598ad04ee6
22 | signature: lCH/8P////98CAKm/////5ABABT/////SAAAAfwAAAOAAQAU/////3wIA6b/////OCEAEP////9OgAAg/////w==
23 | symbols:
24 | - kind: Function
25 | name: _ExitProcess
26 | size: 32
27 | flags: 1
28 | section: .text
29 | - kind: Function
30 | name: PPCHalt
31 | size: 0
32 | flags: 5
33 | section: .text
34 | relocations:
35 | - offset: 12
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 |
--------------------------------------------------------------------------------
/assets/signatures/__DVDClearWaitingQueue.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: bd48f655dc42b87dc741aa4b19512f10d3d7643a
3 | signature: PMAAAP//AAA4xgAA//8AADimAAj/////kMYAAP////84hgAQ/////zhmABj/////kMYABP////+QpgAI/////5CmAAz/////kIYAEP////+QhgAU/////5BmABj/////kGYAHP////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: __DVDClearWaitingQueue
7 | size: 56
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: WaitingQueue
12 | size: 32
13 | flags: 2
14 | section: .bss
15 | relocations:
16 | - offset: 0
17 | kind: PpcAddr16Ha
18 | symbol: 1
19 | addend: 0
20 | - offset: 4
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 | - symbol: 0
25 | hash: f534174f0af041aa45324839acb2a3c80d4bfa69
26 | signature: PMAAAP//AAA4xgAA//8AAJDGAAD/////OKYACP////84hgAQ/////zhmABj/////kMYABP////+QpQAA/////5ClAAT/////kIQAAP////+QhAAE/////5BjAAD/////kGMABP////9OgAAg/////w==
27 | symbols:
28 | - kind: Function
29 | name: __DVDClearWaitingQueue
30 | size: 56
31 | flags: 1
32 | section: .text
33 | - kind: Object
34 | name: WaitingQueue
35 | size: 32
36 | flags: 2
37 | section: .bss
38 | relocations:
39 | - offset: 0
40 | kind: PpcAddr16Ha
41 | symbol: 1
42 | addend: 0
43 | - offset: 4
44 | kind: PpcAddr16Lo
45 | symbol: 1
46 | addend: 0
47 | - symbol: 0
48 | hash: 47aa68f54b90ec7a94b163fe6b46173b2a10f3e2
49 | signature: PGAAAP//AAA4YwAA//8AAJBjAAD/////OKMACP////84gwAQ/////5BjAAT/////OGMAGP////+QpQAA/////5ClAAT/////kIQAAP////+QhAAE/////5BjAAD/////kGMABP////9OgAAg/////w==
50 | symbols:
51 | - kind: Function
52 | name: __DVDClearWaitingQueue
53 | size: 56
54 | flags: 1
55 | section: .text
56 | - kind: Object
57 | name: WaitingQueue
58 | size: 32
59 | flags: 2
60 | section: .bss
61 | relocations:
62 | - offset: 0
63 | kind: PpcAddr16Ha
64 | symbol: 1
65 | addend: 0
66 | - offset: 4
67 | kind: PpcAddr16Lo
68 | symbol: 1
69 | addend: 0
70 | - symbol: 0
71 | hash: 0894f45ca5499ebb63edf1cb27afc09872021bef
72 | signature: lCH/8P////+/wQAI/////zvAAAD/////SAAAIP////9XxBg4/////zxgAAD//wAAOAMAAP//AAB/4CIU/////5P/AAD/////k/8ABP////873gAB/////ygeAAT/////QYD/4P////+7wQAI/////zghABD/////ToAAIP////8=
73 | symbols:
74 | - kind: Function
75 | name: __DVDClearWaitingQueue
76 | size: 64
77 | flags: 1
78 | section: .text
79 | - kind: Object
80 | name: WaitingQueue
81 | size: 32
82 | flags: 2
83 | section: .bss
84 | relocations:
85 | - offset: 20
86 | kind: PpcAddr16Ha
87 | symbol: 1
88 | addend: 0
89 | - offset: 24
90 | kind: PpcAddr16Lo
91 | symbol: 1
92 | addend: 0
93 | - symbol: 0
94 | hash: a8762d7ac69d76b8b49606cca201d493908db962
95 | signature: lCH/8P////+T4QAM/////5PBAAj/////O8AAAP////9IAAAg/////1fEGDj/////PGAAAP//AAA4AwAA//8AAH/gIhT/////k/8AAP////+T/wAE/////zveAAH/////KB4ABP////9BgP/g/////4PhAAz/////g8EACP////84IQAQ/////06AACD/////
96 | symbols:
97 | - kind: Function
98 | name: __DVDClearWaitingQueue
99 | size: 72
100 | flags: 1
101 | section: .text
102 | - kind: Object
103 | name: WaitingQueue
104 | size: 32
105 | flags: 2
106 | section: .bss
107 | relocations:
108 | - offset: 24
109 | kind: PpcAddr16Ha
110 | symbol: 1
111 | addend: 0
112 | - offset: 28
113 | kind: PpcAddr16Lo
114 | symbol: 1
115 | addend: 0
116 | - symbol: 0
117 | hash: fbfc5459db5330544113db2527b99c54028ee40c
118 | signature: lCH/4P////+T4QAc/////5PBABj/////k6EAFP////98Pwt4/////zugAAD/////SAAAIP////9XpBg4/////zxgAAD//wAAOAMAAP//AAB/wCIU/////5PeAAD/////k94ABP////87vQAB/////ygdAAT/////QYD/4P////9/6vt4/////4PqABz/////g8oAGP////+DqgAU/////4AhAAD/////ToAAIP////8=
119 | symbols:
120 | - kind: Function
121 | name: __DVDClearWaitingQueue
122 | size: 88
123 | flags: 1
124 | section: .text
125 | - kind: Object
126 | name: WaitingQueue
127 | size: 32
128 | flags: 2
129 | section: .bss
130 | relocations:
131 | - offset: 32
132 | kind: PpcAddr16Ha
133 | symbol: 1
134 | addend: 0
135 | - offset: 36
136 | kind: PpcAddr16Lo
137 | symbol: 1
138 | addend: 0
139 |
--------------------------------------------------------------------------------
/assets/signatures/__DVDInitWA.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 4e87b8bb854c6281090223cb9aa6e16780496ea7
3 | signature: fAgCpv////88YAAA//8AAJABAAT/////OAAAAP////84gAAA/////5Qh//j/////kAAAAP/gAAA4AP///////5ADAAD//wAAOGAAAP////9IAAAB/AAAA0gAAAH8AAADgAEADP////84IQAI/////3wIA6b/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __DVDInitWA
7 | size: 64
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: CommandList
12 | size: 60
13 | flags: 2
14 | section: .bss
15 | - kind: Object
16 | name: NextCommandNumber
17 | size: 4
18 | flags: 2
19 | section: .sbss
20 | - kind: Function
21 | name: __DVDLowSetWAType
22 | size: 0
23 | flags: 1
24 | section: .text
25 | - kind: Function
26 | name: OSInitAlarm
27 | size: 0
28 | flags: 1
29 | section: .text
30 | relocations:
31 | - offset: 4
32 | kind: PpcAddr16Ha
33 | symbol: 1
34 | addend: 0
35 | - offset: 24
36 | kind: PpcEmbSda21
37 | symbol: 2
38 | addend: 0
39 | - offset: 32
40 | kind: PpcAddr16Lo
41 | symbol: 1
42 | addend: 0
43 | - offset: 40
44 | kind: PpcRel24
45 | symbol: 3
46 | addend: 0
47 | - offset: 44
48 | kind: PpcRel24
49 | symbol: 4
50 | addend: 0
51 | - symbol: 0
52 | hash: 53f35fb3e90b7fdfb54ba4ee75c820ff8eadb31f
53 | signature: fAgCpv////+QAQAE/////5Qh//j/////OAAAAP////+QAAAA/+AAADgA////////PGAAAP//AACQAwAA//8AADhgAAD/////OIAAAP////9IAAAB/AAAA0gAAAH8AAADgAEADP////84IQAI/////3wIA6b/////ToAAIP////8=
54 | symbols:
55 | - kind: Function
56 | name: __DVDInitWA
57 | size: 64
58 | flags: 5
59 | section: .text
60 | - kind: Object
61 | name: NextCommandNumber
62 | size: 4
63 | flags: 2
64 | section: .sbss
65 | - kind: Object
66 | name: CommandList
67 | size: 60
68 | flags: 2
69 | section: .bss
70 | - kind: Function
71 | name: __DVDLowSetWAType
72 | size: 0
73 | flags: 5
74 | section: .text
75 | - kind: Function
76 | name: OSInitAlarm
77 | size: 0
78 | flags: 1
79 | section: .text
80 | relocations:
81 | - offset: 16
82 | kind: PpcEmbSda21
83 | symbol: 1
84 | addend: 0
85 | - offset: 24
86 | kind: PpcAddr16Ha
87 | symbol: 2
88 | addend: 0
89 | - offset: 28
90 | kind: PpcAddr16Lo
91 | symbol: 2
92 | addend: 0
93 | - offset: 40
94 | kind: PpcRel24
95 | symbol: 3
96 | addend: 0
97 | - offset: 44
98 | kind: PpcRel24
99 | symbol: 4
100 | addend: 0
101 |
--------------------------------------------------------------------------------
/assets/signatures/__FileWrite.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 34422147b751d78b7794dfe983eb8d440f7ec77c
3 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////98vyt4/////5PBAAj/////fH4beP////98gyN4/////ziAAAH/////f8bzeP////9IAAAB/AAAA3wfGED/////QIIACP////9IAAAI/////zvAAAD/////f8PzeP////+D4QAM/////4PBAAj/////gAEAFP////98CAOm/////zghABD/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __FileWrite
7 | size: 88
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: __fwrite
12 | size: 0
13 | flags: 1
14 | section: .text
15 | relocations:
16 | - offset: 40
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: 77884d217ce414025994f5f4d7e0b9215f11fdab
22 | signature: fAgCpv////+QAQAE/////5Qh/+D/////k+EAHP////875QAA/////5PBABj/////O8MAAP////84ZAAA/////zjeAAD/////OIAAAf////9IAAAB/AAAA3wfGED/////QIIADP////9/w/N4/////0gAAAj/////OGAAAP////+AAQAk/////4PhABz/////g8EAGP////98CAOm/////zghACD/////ToAAIP////8=
23 | symbols:
24 | - kind: Function
25 | name: __FileWrite
26 | size: 88
27 | flags: 1
28 | section: .text
29 | - kind: Function
30 | name: fwrite
31 | size: 0
32 | flags: 1
33 | section: .text
34 | relocations:
35 | - offset: 40
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 | - symbol: 0
40 | hash: 1ac63a780d24250392eb7c4df3c629b47c8d131e
41 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////98vyt4/////5PBAAj/////fH4beP////98gyN4/////ziAAAH/////f8bzeP////9IAAAB/AAAA3wfGED/////QIIADP////9/w/N4/////0gAAAj/////OGAAAP////+AAQAU/////4PhAAz/////g8EACP////98CAOm/////zghABD/////ToAAIP////8=
42 | symbols:
43 | - kind: Function
44 | name: __FileWrite
45 | size: 88
46 | flags: 1
47 | section: .text
48 | - kind: Function
49 | name: fwrite
50 | size: 0
51 | flags: 1
52 | section: .text
53 | relocations:
54 | - offset: 40
55 | kind: PpcRel24
56 | symbol: 1
57 | addend: 0
58 | - symbol: 0
59 | hash: 0ceeabe5efdc8527601c657daf2cd2d8178f219b
60 | signature: lCH/4P////98CAKm/////5ABACT/////k+EAHP////+TwQAY/////3y+K3j/////kIEACP////84gAAB/////5OhABT/////fH0beP////+AYQAI/////3+m63j/////SAAAAfwAAAN8HhhA/////0CCAAz/////f7/reP////9IAAAI/////zvgAAD/////gAEAJP////9/4/t4/////4PhABz/////g8EAGP////+DoQAU/////3wIA6b/////OCEAIP////9OgAAg/////w==
61 | symbols:
62 | - kind: Function
63 | name: __FileWrite
64 | size: 104
65 | flags: 1
66 | section: .text
67 | - kind: Function
68 | name: fwrite
69 | size: 0
70 | flags: 1
71 | section: .text
72 | relocations:
73 | - offset: 48
74 | kind: PpcRel24
75 | symbol: 1
76 | addend: 0
77 |
--------------------------------------------------------------------------------
/assets/signatures/__NANDPrintErrorMessage.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 9d8737e8fff8fd6d4fdc283b21a9fefce07f432d
3 | signature: gYAAAP/gAAAsDAAA/////02CACD/////fYkDpv////9OgAQg/////06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __NANDPrintErrorMessage
7 | size: 24
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: NANDErrorFunc
12 | size: 4
13 | flags: 2
14 | section: .sbss
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: 0273343b6f26a6e4eb239320408ace8404320669
22 | signature: lCH/8P////98CAKm/////5ABABT/////kGEACP////+AAAAA/+AAACwAAAD/////QYIAFP////+AYQAI/////4GAAAD/4AAAfYkDpv////9OgAQh/////4ABABT/////fAgDpv////84IQAQ/////06AACD/////
23 | symbols:
24 | - kind: Function
25 | name: __NANDPrintErrorMessage
26 | size: 60
27 | flags: 1
28 | section: .text
29 | - kind: Object
30 | name: NANDErrorFunc
31 | size: 4
32 | flags: 2
33 | section: .sbss
34 | relocations:
35 | - offset: 16
36 | kind: PpcEmbSda21
37 | symbol: 1
38 | addend: 0
39 | - offset: 32
40 | kind: PpcEmbSda21
41 | symbol: 1
42 | addend: 0
43 |
--------------------------------------------------------------------------------
/assets/signatures/__OSDBIntegrator.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 153c56c0abc7e47a38f4ad0d1c737cdf72cb22e4
3 | signature: OKAAQP////98aAKm/////5BlAAz/////gGUACP////9kY4AA/////3xoA6b/////OGAAMP////98YAEk/////06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __OSDBIntegrator
7 | size: 36
8 | flags: 2
9 | section: .text
10 | relocations: []
11 |
--------------------------------------------------------------------------------
/assets/signatures/__OSDBJump.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 57e7d1fd933a625ca18aa499f0be6a544bbc332a
3 | signature: SAAAAfwAAAM=
4 | symbols:
5 | - kind: Function
6 | name: __OSDBJump
7 | size: 4
8 | flags: 2
9 | section: .text
10 | - kind: Function
11 | name: OSExceptionVector
12 | size: 0
13 | flags: 2
14 | section: .text
15 | relocations:
16 | - offset: 0
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 56
20 | - symbol: 0
21 | hash: 65c54e72bb9d42abe0d44d496d5422fb5ba55e80
22 | signature: SAAAY/////8=
23 | symbols:
24 | - kind: Function
25 | name: __OSDBJump
26 | size: 4
27 | flags: 2
28 | section: .text
29 | relocations: []
30 |
--------------------------------------------------------------------------------
/assets/signatures/__OSFPRInit.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: f5a0f1ba3c8b103b556d9459e61c029a3a5dc629
3 | signature: fGAApv////9gYyAA/////3xgAST/////fHjipv////9UYx///////0GCAIz/////PGAAAP//AAA4YwAA//8AAOADAAD/////ECAAkP////8QQACQ/////xBgAJD/////EIAAkP////8QoACQ/////xDAAJD/////EOAAkP////8RAACQ/////xEgAJD/////EUAAkP////8RYACQ/////xGAAJD/////EaAAkP////8RwACQ/////xHgAJD/////EgAAkP////8SIACQ/////xJAAJD/////EmAAkP////8SgACQ/////xKgAJD/////EsAAkP////8S4ACQ/////xMAAJD/////EyAAkP////8TQACQ/////xNgAJD/////E4AAkP////8ToACQ/////xPAAJD/////E+AAkP/////IAAAA/+AAAPwgAJD//////EAAkP/////8YACQ//////yAAJD//////KAAkP/////8wACQ//////zgAJD//////QAAkP/////9IACQ//////1AAJD//////WAAkP/////9gACQ//////2gAJD//////cAAkP/////94ACQ//////4AAJD//////iAAkP/////+QACQ//////5gAJD//////oAAkP/////+oACQ//////7AAJD//////uAAkP//////AACQ//////8gAJD//////0AAkP//////YACQ//////+AAJD//////6AAkP//////wACQ///////gAJD//////f4Fjv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: __OSFPRInit
7 | size: 296
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: ZeroPS
12 | size: 8
13 | flags: 2
14 | section: .sbss
15 | - kind: Object
16 | name: ZeroF
17 | size: 8
18 | flags: 2
19 | section: .sbss
20 | relocations:
21 | - offset: 24
22 | kind: PpcAddr16Ha
23 | symbol: 1
24 | addend: 0
25 | - offset: 28
26 | kind: PpcAddr16Lo
27 | symbol: 1
28 | addend: 0
29 | - offset: 160
30 | kind: PpcEmbSda21
31 | symbol: 2
32 | addend: 0
33 |
--------------------------------------------------------------------------------
/assets/signatures/__OSInitIPCBuffer.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: aed531882f5a52115e7ce8b9dd6b6ae5bc32a34b
3 | signature: PGCAAP////+AAzEw/////5AAAAD/4AAAgAMxNP////+QAAAA/+AAAE6AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __OSInitIPCBuffer
7 | size: 24
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: IpcBufferLo
12 | size: 4
13 | flags: 2
14 | section: .sdata
15 | - kind: Object
16 | name: IpcBufferHi
17 | size: 4
18 | flags: 2
19 | section: .sbss
20 | relocations:
21 | - offset: 8
22 | kind: PpcEmbSda21
23 | symbol: 1
24 | addend: 0
25 | - offset: 16
26 | kind: PpcEmbSda21
27 | symbol: 2
28 | addend: 0
29 | - symbol: 0
30 | hash: 9c4e92b0a1a061160248af91e7dd0841b29c2431
31 | signature: lCH/8P////98CAKm/////5ABABT/////OGAxMP////9IAAAB/AAAA4ADAAD/////kAAAAP/gAAA4YDE0/////0gAAAH8AAADgAMAAP////+QAAAA/+AAAIABABT/////fAgDpv////84IQAQ/////06AACD/////
32 | symbols:
33 | - kind: Function
34 | name: __OSInitIPCBuffer
35 | size: 60
36 | flags: 1
37 | section: .text
38 | - kind: Function
39 | name: OSPhysicalToCached
40 | size: 0
41 | flags: 1
42 | section: .text
43 | - kind: Object
44 | name: IpcBufferLo
45 | size: 4
46 | flags: 2
47 | section: .sdata
48 | - kind: Object
49 | name: IpcBufferHi
50 | size: 4
51 | flags: 2
52 | section: .sbss
53 | relocations:
54 | - offset: 16
55 | kind: PpcRel24
56 | symbol: 1
57 | addend: 0
58 | - offset: 24
59 | kind: PpcEmbSda21
60 | symbol: 2
61 | addend: 0
62 | - offset: 32
63 | kind: PpcRel24
64 | symbol: 1
65 | addend: 0
66 | - offset: 40
67 | kind: PpcEmbSda21
68 | symbol: 3
69 | addend: 0
70 |
--------------------------------------------------------------------------------
/assets/signatures/__OSPSInit.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 55501e7ff9d0ab23b2a372b677851bb22407f77e
3 | signature: fAgCpv////+QAQAE/////5Qh//j/////SAAAAfwAAANkY6AA/////0gAAAH8AAADSAAAAfwAAAN8AASs/////zhgAAD/////fHDjpv////+AAQAM/////zghAAj/////fAgDpv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: __OSPSInit
7 | size: 56
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: PPCMfhid2
12 | size: 0
13 | flags: 1
14 | section: .text
15 | - kind: Function
16 | name: PPCMthid2
17 | size: 0
18 | flags: 1
19 | section: .text
20 | - kind: Function
21 | name: ICFlashInvalidate
22 | size: 0
23 | flags: 1
24 | section: .text
25 | relocations:
26 | - offset: 12
27 | kind: PpcRel24
28 | symbol: 1
29 | addend: 0
30 | - offset: 20
31 | kind: PpcRel24
32 | symbol: 2
33 | addend: 0
34 | - offset: 24
35 | kind: PpcRel24
36 | symbol: 3
37 | addend: 0
38 | - symbol: 0
39 | hash: 1d636c81969d879287e983398ea76012331f22c5
40 | signature: lCH/8P////98CAKm/////5ABABT/////SAAAAfwAAANkY6AA/////0gAAAH8AAADSAAAAfwAAAN8AASs/////zhgAAD/////fHDjpv////98ceOm/////3xy46b/////fHPjpv////98dOOm/////3x146b/////fHbjpv////98d+Om/////4ABABT/////fAgDpv////84IQAQ/////06AACD/////
41 | symbols:
42 | - kind: Function
43 | name: __OSPSInit
44 | size: 84
45 | flags: 1
46 | section: .text
47 | - kind: Function
48 | name: PPCMfhid2
49 | size: 0
50 | flags: 1
51 | section: .text
52 | - kind: Function
53 | name: PPCMthid2
54 | size: 0
55 | flags: 1
56 | section: .text
57 | - kind: Function
58 | name: ICFlashInvalidate
59 | size: 0
60 | flags: 1
61 | section: .text
62 | relocations:
63 | - offset: 12
64 | kind: PpcRel24
65 | symbol: 1
66 | addend: 0
67 | - offset: 20
68 | kind: PpcRel24
69 | symbol: 2
70 | addend: 0
71 | - offset: 24
72 | kind: PpcRel24
73 | symbol: 3
74 | addend: 0
75 | - symbol: 0
76 | hash: 526401573cbdad808b82874ea2bdd5c2c2836e8b
77 | signature: fAgCpv////+QAQAE/////5Qh//j/////SAAAAfwAAANkY6AA/////0gAAAH8AAADSAAAAfwAAAN8AASs/////zhgAAD/////fHDjpv////98ceOm/////3xy46b/////fHPjpv////98dOOm/////3x146b/////fHbjpv////98d+Om/////4ABAAz/////OCEACP////98CAOm/////06AACD/////
78 | symbols:
79 | - kind: Function
80 | name: __OSPSInit
81 | size: 84
82 | flags: 1
83 | section: .text
84 | - kind: Function
85 | name: PPCMfhid2
86 | size: 0
87 | flags: 1
88 | section: .text
89 | - kind: Function
90 | name: PPCMthid2
91 | size: 0
92 | flags: 1
93 | section: .text
94 | - kind: Function
95 | name: ICFlashInvalidate
96 | size: 0
97 | flags: 1
98 | section: .text
99 | relocations:
100 | - offset: 12
101 | kind: PpcRel24
102 | symbol: 1
103 | addend: 0
104 | - offset: 20
105 | kind: PpcRel24
106 | symbol: 2
107 | addend: 0
108 | - offset: 24
109 | kind: PpcRel24
110 | symbol: 3
111 | addend: 0
112 | - symbol: 0
113 | hash: cfcffaaa029dfc85862f38fe65012d1d218d6845
114 | signature: fAgCpv////+QAQAE/////5Qh//j/////SAAAAfwAAANkYIAA/////2QDIAD/////SAAAAfwAAANIAAAB/AAAA3wABKz/////OGAAAP////98cOOm/////3xx46b/////fHLjpv////98c+Om/////3x046b/////fHXjpv////98duOm/////3x346b/////gAEADP////84IQAI/////3wIA6b/////ToAAIP////8=
115 | symbols:
116 | - kind: Function
117 | name: __OSPSInit
118 | size: 88
119 | flags: 1
120 | section: .text
121 | - kind: Function
122 | name: PPCMfhid2
123 | size: 0
124 | flags: 1
125 | section: .text
126 | - kind: Function
127 | name: PPCMthid2
128 | size: 0
129 | flags: 1
130 | section: .text
131 | - kind: Function
132 | name: ICFlashInvalidate
133 | size: 0
134 | flags: 1
135 | section: .text
136 | relocations:
137 | - offset: 12
138 | kind: PpcRel24
139 | symbol: 1
140 | addend: 0
141 | - offset: 24
142 | kind: PpcRel24
143 | symbol: 2
144 | addend: 0
145 | - offset: 28
146 | kind: PpcRel24
147 | symbol: 3
148 | addend: 0
149 | - symbol: 0
150 | hash: 3cfdf51ef44901013e3981d5088f69ea9403b64e
151 | signature: lCH/8P////98CAKm/////5ABABT/////SAAAAfwAAANkYIAA/////2QDIAD/////SAAAAfwAAANIAAAB/AAAA3wABKz/////OGAAAP////98cOOm/////3xx46b/////fHLjpv////98c+Om/////3x046b/////fHXjpv////98duOm/////3x346b/////gAEAFP////98CAOm/////zghABD/////ToAAIP////8=
152 | symbols:
153 | - kind: Function
154 | name: __OSPSInit
155 | size: 88
156 | flags: 1
157 | section: .text
158 | - kind: Function
159 | name: PPCMfhid2
160 | size: 0
161 | flags: 1
162 | section: .text
163 | - kind: Function
164 | name: PPCMthid2
165 | size: 0
166 | flags: 1
167 | section: .text
168 | - kind: Function
169 | name: ICFlashInvalidate
170 | size: 0
171 | flags: 1
172 | section: .text
173 | relocations:
174 | - offset: 12
175 | kind: PpcRel24
176 | symbol: 1
177 | addend: 0
178 | - offset: 24
179 | kind: PpcRel24
180 | symbol: 2
181 | addend: 0
182 | - offset: 28
183 | kind: PpcRel24
184 | symbol: 3
185 | addend: 0
186 |
--------------------------------------------------------------------------------
/assets/signatures/__OSReschedule.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 0e23b284aec948d801a821d8918052620b10b63c
3 | signature: gAAAAP/gAAAsAAAA/////02CACD/////OGAAAP////9IAAAA/AAAA06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __OSReschedule
7 | size: 24
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: RunQueueHint
12 | size: 4
13 | flags: 2
14 | section: .sbss
15 | - kind: Function
16 | name: SelectThread
17 | size: 0
18 | flags: 2
19 | section: .text
20 | relocations:
21 | - offset: 0
22 | kind: PpcEmbSda21
23 | symbol: 1
24 | addend: 0
25 | - offset: 16
26 | kind: PpcRel24
27 | symbol: 2
28 | addend: 0
29 | - symbol: 0
30 | hash: 2824f6f5b353ffc54ee222baec41d7c5af03f6cc
31 | signature: lCH/8P////98CAKm/////5ABABT/////gAAAAP/gAAAsAAAA/////0GCAAz/////OGAAAP////9IAAAB/AAAA4ABABT/////fAgDpv////84IQAQ/////06AACD/////
32 | symbols:
33 | - kind: Function
34 | name: __OSReschedule
35 | size: 48
36 | flags: 1
37 | section: .text
38 | - kind: Object
39 | name: RunQueueHint
40 | size: 4
41 | flags: 2
42 | section: .sbss
43 | - kind: Function
44 | name: SelectThread
45 | size: 0
46 | flags: 2
47 | section: .text
48 | relocations:
49 | - offset: 12
50 | kind: PpcEmbSda21
51 | symbol: 1
52 | addend: 0
53 | - offset: 28
54 | kind: PpcRel24
55 | symbol: 2
56 | addend: 0
57 | - symbol: 0
58 | hash: f94a9ec41cceda6b7df6708228349e6b69057288
59 | signature: fAgCpv////+QAQAE/////5Qh//j/////gAAAAP/gAAAsAAAA/////0GCAAz/////OGAAAP////9IAAAB/AAAA4ABAAz/////OCEACP////98CAOm/////06AACD/////
60 | symbols:
61 | - kind: Function
62 | name: __OSReschedule
63 | size: 48
64 | flags: 1
65 | section: .text
66 | - kind: Object
67 | name: RunQueueHint
68 | size: 4
69 | flags: 2
70 | section: .sbss
71 | - kind: Function
72 | name: SelectThread
73 | size: 0
74 | flags: 2
75 | section: .text
76 | relocations:
77 | - offset: 12
78 | kind: PpcEmbSda21
79 | symbol: 1
80 | addend: 0
81 | - offset: 28
82 | kind: PpcRel24
83 | symbol: 2
84 | addend: 0
85 |
--------------------------------------------------------------------------------
/assets/signatures/__OSSyncSram.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 07f36a5bf4a942f32b49d5a1ab42709d0e58b6dc
3 | signature: PGAAAP//AAA4YwAA//8AAIBjAEz/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __OSSyncSram
7 | size: 16
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: Scb
12 | size: 84
13 | flags: 2
14 | section: .bss
15 | relocations:
16 | - offset: 0
17 | kind: PpcAddr16Ha
18 | symbol: 1
19 | addend: 0
20 | - offset: 4
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 |
--------------------------------------------------------------------------------
/assets/signatures/__StringWrite.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: fd8573d0360049de5abb67c8769f04edfe84d892
3 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////+TwQAI/////3x+G3j/////gGMACP////+A3gAE/////3wDKhT/////fAAwQP////9/4zBQ/////0GBAAj/////fL8reP////+AHgAA/////3/l+3j/////fGAaFP////9IAAAB/AAAA4AeAAj/////OGAAAf////98APoU/////5AeAAj/////g+EADP////+DwQAI/////4ABABT/////fAgDpv////84IQAQ/////06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __StringWrite
7 | size: 108
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: memcpy
12 | size: 0
13 | flags: 1
14 | section: null
15 | relocations:
16 | - offset: 64
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: aa97d90a13076812a88fc64f1a14c6cfcfd6ee5f
22 | signature: fAgCpv////+QAQAE/////5Qh/+D/////k+EAHP////+TwQAY/////3x+G3j/////gGMACP////+A3gAE/////3wDKhT/////fAAwQP////9BgQAM/////3y/K3j/////SAAACP////9/4zBQ/////4AeAAD/////OL8AAP////98YBoU/////0gAAAH8AAADgB4ACP////98APoU/////5AeAAj/////gAEAJP////+D4QAc/////4PBABj/////fAgDpv////84IQAg/////06AACD/////
23 | symbols:
24 | - kind: Function
25 | name: __StringWrite
26 | size: 108
27 | flags: 1
28 | section: .text
29 | - kind: Function
30 | name: memcpy
31 | size: 0
32 | flags: 1
33 | section: null
34 | relocations:
35 | - offset: 68
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 | - symbol: 0
40 | hash: 72eb8198fc92efdbce86b4fce4892df09fe3c4cd
41 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////+TwQAI/////3x+G3j/////gMMACP////+A4wAE/////3wGKhT/////fAA4QP////9/5jhQ/////0GBAAj/////fL8reP////+AAwAA/////3/l+3j/////fGAyFP////9IAAAB/AAAA4AeAAj/////OGAAAf////98APoU/////5AeAAj/////g+EADP////+DwQAI/////4ABABT/////fAgDpv////84IQAQ/////06AACD/////
42 | symbols:
43 | - kind: Function
44 | name: __StringWrite
45 | size: 108
46 | flags: 1
47 | section: .text
48 | - kind: Function
49 | name: memcpy
50 | size: 0
51 | flags: 1
52 | section: null
53 | relocations:
54 | - offset: 64
55 | kind: PpcRel24
56 | symbol: 1
57 | addend: 0
58 | - symbol: 0
59 | hash: 433b639615c59c549da93877493f251072c1330f
60 | signature: lCH/0P////98CAKm/////5ABADT/////k+EALP////+TwQAo/////5OhACT/////kGEACP////+TgQAg/////3y8K3j/////g+EACP////+QgQAM/////4B/AAj/////gB8ABP////98Y+IU/////3wDAED/////QYEADP////9/neN4/////0gAABD/////gH8ACP////+AHwAE/////3+jAFD/////gH8AAP////9/vut4/////4AfAAj/////f8XzeP////+AgQAM/////3xjAhT/////SAAAAfwAAAOAHwAI/////5BhABD/////OGAAAf////98APIU/////5AfAAj/////gAEANP////+D4QAs/////4PBACj/////g6EAJP////+DgQAg/////3wIA6b/////OCEAMP////9OgAAg/////w==
61 | symbols:
62 | - kind: Function
63 | name: __StringWrite
64 | size: 164
65 | flags: 1
66 | section: .text
67 | - kind: Function
68 | name: memcpy
69 | size: 0
70 | flags: 1
71 | section: null
72 | relocations:
73 | - offset: 108
74 | kind: PpcRel24
75 | symbol: 1
76 | addend: 0
77 |
--------------------------------------------------------------------------------
/assets/signatures/__check_pad3.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 83ea1a2986a06003ca4462e41a1f833a167b3fc6
3 | signature: PGCAAP////+gAzDk/////3AADu//////LAAO7/////9MggAg/////zhgAAD/////OIAAAP////84oAAA/////0gAAAD8AAADToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __check_pad3
7 | size: 40
8 | flags: 2
9 | section: .init
10 | - kind: Function
11 | name: OSResetSystem
12 | size: 0
13 | flags: 1
14 | section: .text
15 | relocations:
16 | - offset: 32
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: bee3fc50a8504050f518240f52eb977dbb1540f8
22 | signature: fAgCpv////+QAQAE/////5Qh//j/////PGCAAP////+gAzDk/////3AADu//////LAAO7/////9AggAU/////zhgAAD/////OIAAAP////84oAAA/////0gAAAH8AAADgAEADP////84IQAI/////3wIA6b/////ToAAIP////8=
23 | symbols:
24 | - kind: Function
25 | name: __check_pad3
26 | size: 64
27 | flags: 2
28 | section: .init
29 | - kind: Function
30 | name: OSResetSystem
31 | size: 0
32 | flags: 1
33 | section: .text
34 | relocations:
35 | - offset: 44
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 | - symbol: 0
40 | hash: 956fc3157a2e2a27f31b046e9b9841b2a321a08c
41 | signature: fAgCpv////88YIAA/////5ABAAT/////lCH/+P////+gAzDk/////3AADu//////LAAO7/////9AggAU/////zhgAAD/////OIAAAP////84oAAA/////0gAAAH8AAADgAEADP////84IQAI/////3wIA6b/////ToAAIP////8=
42 | symbols:
43 | - kind: Function
44 | name: __check_pad3
45 | size: 64
46 | flags: 2
47 | section: .init
48 | - kind: Function
49 | name: OSResetSystem
50 | size: 0
51 | flags: 1
52 | section: .text
53 | relocations:
54 | - offset: 44
55 | kind: PpcRel24
56 | symbol: 1
57 | addend: 0
58 | - symbol: 0
59 | hash: f431fd9f820cdf74ce3549f31b18c5fd32d934b7
60 | signature: lCH/8P////98CAKm/////5ABABT/////PGCAAP////+gAzDk/////3AADu//////LAAO7/////9AggAU/////zhgAAD/////OIAAAP////84oAAA/////0gAAAH8AAADgAEAFP////98CAOm/////zghABD/////ToAAIP////8=
61 | symbols:
62 | - kind: Function
63 | name: __check_pad3
64 | size: 64
65 | flags: 2
66 | section: .init
67 | - kind: Function
68 | name: OSResetSystem
69 | size: 0
70 | flags: 1
71 | section: .text
72 | relocations:
73 | - offset: 44
74 | kind: PpcRel24
75 | symbol: 1
76 | addend: 0
77 |
--------------------------------------------------------------------------------
/assets/signatures/__fini_cpp.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 734078ce2ac4f80b15cf23707c7151557348f30d
3 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////88YAAA//8AADvjAAD//wAASAAAFP////+BnwAA/////32JA6b/////ToAEIf////87/wAE/////4AfAAD/////LAAAAP////9Agv/o/////4PhAAz/////gAEAFP////98CAOm/////zghABD/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __fini_cpp
7 | size: 76
8 | flags: 2
9 | section: .text
10 | - kind: Unknown
11 | name: _dtors
12 | size: 0
13 | flags: 1
14 | section: .dtors
15 | relocations:
16 | - offset: 16
17 | kind: PpcAddr16Ha
18 | symbol: 1
19 | addend: 0
20 | - offset: 20
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 |
--------------------------------------------------------------------------------
/assets/signatures/__fini_cpp_exceptions.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: aa319246ce3e68bc50ec5ab978571665c68e92b9
3 | signature: fAgCpv////+QAQAE/////5Qh//j/////gGAAAP/gAAAsA//+/////0GCABD/////SAAAAfwAAAM4AP/+/////5AAAAD/4AAAgAEADP////84IQAI/////3wIA6b/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __fini_cpp_exceptions
7 | size: 52
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: fragmentID
12 | size: 4
13 | flags: 2
14 | section: .sdata
15 | - kind: Function
16 | name: __unregister_fragment
17 | size: 0
18 | flags: 1
19 | section: .text
20 | relocations:
21 | - offset: 12
22 | kind: PpcEmbSda21
23 | symbol: 1
24 | addend: 0
25 | - offset: 24
26 | kind: PpcRel24
27 | symbol: 2
28 | addend: 0
29 | - offset: 32
30 | kind: PpcEmbSda21
31 | symbol: 1
32 | addend: 0
33 | - symbol: 0
34 | hash: ba270ea9cddc44daa54826c05efd14480ef99b21
35 | signature: lCH/8P////98CAKm/////5ABABT/////gGAAAP/gAAAsA//+/////0GCABD/////SAAAAfwAAAM4AP/+/////5AAAAD/4AAAgAEAFP////98CAOm/////zghABD/////ToAAIP////8=
36 | symbols:
37 | - kind: Function
38 | name: __fini_cpp_exceptions
39 | size: 52
40 | flags: 1
41 | section: .text
42 | - kind: Object
43 | name: fragmentID
44 | size: 4
45 | flags: 2
46 | section: .sdata
47 | - kind: Function
48 | name: __unregister_fragment
49 | size: 0
50 | flags: 1
51 | section: .text
52 | relocations:
53 | - offset: 12
54 | kind: PpcEmbSda21
55 | symbol: 1
56 | addend: 0
57 | - offset: 24
58 | kind: PpcRel24
59 | symbol: 2
60 | addend: 0
61 | - offset: 32
62 | kind: PpcEmbSda21
63 | symbol: 1
64 | addend: 0
65 |
--------------------------------------------------------------------------------
/assets/signatures/__init_cpp.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: a180ba4902d4056df79eb3aac8ad17c5524c7b32
3 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////8/4AAA//8AADv/AAD//wAASAAAEP////99iQOm/////06ABCH/////O/8ABP////+BnwAA/////ywMAAD/////QIL/7P////+AAQAU/////4PhAAz/////fAgDpv////84IQAQ/////06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __init_cpp
7 | size: 72
8 | flags: 2
9 | section: .text
10 | - kind: Unknown
11 | name: _ctors
12 | size: 0
13 | flags: 1
14 | section: .ctors
15 | relocations:
16 | - offset: 16
17 | kind: PpcAddr16Ha
18 | symbol: 1
19 | addend: 0
20 | - offset: 20
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 | - symbol: 0
25 | hash: a5bf12574100ae1828f2021e343aa0c53fe1f64d
26 | signature: fAgCpv////+QAQAE/////5Qh//D/////k+EADP////88YAAA//8AADvjAAD//wAASAAAFP////+BnwAA/////32IA6b/////ToAAIf////87/wAE/////4AfAAD/////KAAAAP////9Agv/o/////4ABABT/////g+EADP////84IQAQ/////3wIA6b/////ToAAIP////8=
27 | symbols:
28 | - kind: Function
29 | name: __init_cpp
30 | size: 76
31 | flags: 2
32 | section: .text
33 | - kind: Unknown
34 | name: _ctors
35 | size: 0
36 | flags: 1
37 | section: .ctors
38 | relocations:
39 | - offset: 16
40 | kind: PpcAddr16Ha
41 | symbol: 1
42 | addend: 0
43 | - offset: 20
44 | kind: PpcAddr16Lo
45 | symbol: 1
46 | addend: 0
47 | - symbol: 0
48 | hash: 4b6997d96250556e37ba550d38659e5f541e537f
49 | signature: lCH/8P////98CAKm/////zxgAAD//wAAkAEAFP////84AwAA//8AAJPhAAz/////fB8DeP////9IAAAQ/////32JA6b/////ToAEIf////87/wAE/////4GfAAD/////KAwAAP////9Agv/s/////4ABABT/////g+EADP////98CAOm/////zghABD/////ToAAIP////8=
50 | symbols:
51 | - kind: Function
52 | name: __init_cpp
53 | size: 76
54 | flags: 2
55 | section: .text
56 | - kind: Unknown
57 | name: _ctors
58 | size: 0
59 | flags: 1
60 | section: .ctors
61 | relocations:
62 | - offset: 8
63 | kind: PpcAddr16Ha
64 | symbol: 1
65 | addend: 0
66 | - offset: 16
67 | kind: PpcAddr16Lo
68 | symbol: 1
69 | addend: 0
70 | - symbol: 0
71 | hash: 734078ce2ac4f80b15cf23707c7151557348f30d
72 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////88YAAA//8AADvjAAD//wAASAAAFP////+BnwAA/////32JA6b/////ToAEIf////87/wAE/////4AfAAD/////LAAAAP////9Agv/o/////4PhAAz/////gAEAFP////98CAOm/////zghABD/////ToAAIP////8=
73 | symbols:
74 | - kind: Function
75 | name: __init_cpp
76 | size: 76
77 | flags: 2
78 | section: .text
79 | - kind: Unknown
80 | name: _ctors
81 | size: 0
82 | flags: 1
83 | section: .ctors
84 | relocations:
85 | - offset: 16
86 | kind: PpcAddr16Ha
87 | symbol: 1
88 | addend: 0
89 | - offset: 20
90 | kind: PpcAddr16Lo
91 | symbol: 1
92 | addend: 0
93 | - symbol: 0
94 | hash: 23d69d6b1dd0108a818e2dc49f2190954498b869
95 | signature: fAgCpv////88YAAA//8AAJABAAT/////OAMAAP//AACUIf/w/////5PhAAz/////fB8DeP////9IAAAQ/////32IA6b/////ToAAIf////87/wAE/////4GfAAD/////KAwAAP////9Agv/s/////4ABABT/////g+EADP////84IQAQ/////3wIA6b/////ToAAIP////8=
96 | symbols:
97 | - kind: Function
98 | name: __init_cpp
99 | size: 76
100 | flags: 1
101 | section: .text
102 | - kind: Unknown
103 | name: _ctors
104 | size: 0
105 | flags: 1
106 | section: .ctors
107 | relocations:
108 | - offset: 4
109 | kind: PpcAddr16Ha
110 | symbol: 1
111 | addend: 0
112 | - offset: 12
113 | kind: PpcAddr16Lo
114 | symbol: 1
115 | addend: 0
116 | - symbol: 0
117 | hash: 453bde659bf1659cbd9016b432f9fb40cb1ed4a4
118 | signature: fAgCpv////+QAQAE/////5Qh//D/////k+EADP////88YAAA//8AADgDAAD//wAAfB8DeP////9IAAAE/////0gAAAT/////SAAAEP////99iAOm/////06AACH/////O/8ABP////+BnwAA/////ygMAAD/////QIL/7P////+AAQAU/////4PhAAz/////OCEAEP////98CAOm/////06AACD/////
119 | symbols:
120 | - kind: Function
121 | name: __init_cpp
122 | size: 84
123 | flags: 2
124 | section: .text
125 | - kind: Unknown
126 | name: _ctors
127 | size: 0
128 | flags: 1
129 | section: .ctors
130 | relocations:
131 | - offset: 16
132 | kind: PpcAddr16Ha
133 | symbol: 1
134 | addend: 0
135 | - offset: 20
136 | kind: PpcAddr16Lo
137 | symbol: 1
138 | addend: 0
139 | - symbol: 0
140 | hash: c3f4c58ea391f80ce8ddc250fda91a66f2defb33
141 | signature: lCH/8P////98CAKm/////5ABABT/////k+EADP////88YAAA//8AADvjAAD//wAASAAAHP////8oHwAA/////0GCABD/////gZ8AAP////99iQOm/////06ABCH/////O/8ABP////+AHwAA/////ygAAAD/////QIL/4P////+D4QAM/////4ABABT/////fAgDpv////84IQAQ/////06AACD/////
142 | symbols:
143 | - kind: Function
144 | name: __init_cpp
145 | size: 84
146 | flags: 2
147 | section: .text
148 | - kind: Unknown
149 | name: _ctors
150 | size: 0
151 | flags: 1
152 | section: .ctors
153 | relocations:
154 | - offset: 16
155 | kind: PpcAddr16Ha
156 | symbol: 1
157 | addend: 0
158 | - offset: 20
159 | kind: PpcAddr16Lo
160 | symbol: 1
161 | addend: 0
162 |
--------------------------------------------------------------------------------
/assets/signatures/__init_cpp_exceptions.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 32811594987a3c813878178e497723a6061b5a34
3 | signature: lCH/8P////98CAKm/////5ABABT/////gAAAAP/gAAAsAP/+/////0CCABj/////PGAAAP//AAB8RBN4/////zhjAAD//wAASAAAAfwAAAOQYAAA/+AAAIABABT/////fAgDpv////84IQAQ/////06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __init_cpp_exceptions
7 | size: 60
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: fragmentID
12 | size: 4
13 | flags: 2
14 | section: .sdata
15 | - kind: Object
16 | name: _eti_init_info
17 | size: 0
18 | flags: 1
19 | section: extabindex
20 | - kind: Function
21 | name: __register_fragment
22 | size: 0
23 | flags: 1
24 | section: .text
25 | relocations:
26 | - offset: 12
27 | kind: PpcEmbSda21
28 | symbol: 1
29 | addend: 0
30 | - offset: 24
31 | kind: PpcAddr16Ha
32 | symbol: 2
33 | addend: 0
34 | - offset: 32
35 | kind: PpcAddr16Lo
36 | symbol: 2
37 | addend: 0
38 | - offset: 36
39 | kind: PpcRel24
40 | symbol: 3
41 | addend: 0
42 | - offset: 40
43 | kind: PpcEmbSda21
44 | symbol: 1
45 | addend: 0
46 | - symbol: 0
47 | hash: 8dab18ebf1c6b105f1337147795a5b941c6449a9
48 | signature: fAgCpv////+QAQAE/////5Qh//j/////gAAAAP/gAAAsAP/+/////0CCABz/////SAAAAfwAAAM8oAAA//8AAHxkG3j/////OGUAAP//AABIAAAB/AAAA5BgAAD/4AAAgAEADP////84IQAI/////3wIA6b/////ToAAIP////8=
49 | symbols:
50 | - kind: Function
51 | name: __init_cpp_exceptions
52 | size: 64
53 | flags: 1
54 | section: .text
55 | - kind: Object
56 | name: fragmentID
57 | size: 4
58 | flags: 2
59 | section: .sdata
60 | - kind: Function
61 | name: GetR2__Fv
62 | size: 0
63 | flags: 2
64 | section: .text
65 | - kind: Object
66 | name: _eti_init_info
67 | size: 0
68 | flags: 1
69 | section: extabindex
70 | - kind: Function
71 | name: __register_fragment
72 | size: 0
73 | flags: 1
74 | section: .text
75 | relocations:
76 | - offset: 12
77 | kind: PpcEmbSda21
78 | symbol: 1
79 | addend: 0
80 | - offset: 24
81 | kind: PpcRel24
82 | symbol: 2
83 | addend: 0
84 | - offset: 28
85 | kind: PpcAddr16Ha
86 | symbol: 3
87 | addend: 0
88 | - offset: 36
89 | kind: PpcAddr16Lo
90 | symbol: 3
91 | addend: 0
92 | - offset: 40
93 | kind: PpcRel24
94 | symbol: 4
95 | addend: 0
96 | - offset: 44
97 | kind: PpcEmbSda21
98 | symbol: 1
99 | addend: 0
100 | - symbol: 0
101 | hash: 732ff119307c8e04731f6be4218a43fb4f2de023
102 | signature: lCH/8P////98CAKm/////5ABABT/////gAAAAP/gAAAsAP/+/////0CCABz/////SAAAAfwAAAM8oAAA//8AAHxkG3j/////OGUAAP//AABIAAAB/AAAA5BgAAD/4AAAgAEAFP////98CAOm/////zghABD/////ToAAIP////8=
103 | symbols:
104 | - kind: Function
105 | name: __init_cpp_exceptions
106 | size: 64
107 | flags: 1
108 | section: .text
109 | - kind: Object
110 | name: fragmentID
111 | size: 4
112 | flags: 2
113 | section: .sdata
114 | - kind: Function
115 | name: GetR2__Fv
116 | size: 0
117 | flags: 2
118 | section: .text
119 | - kind: Object
120 | name: _eti_init_info
121 | size: 0
122 | flags: 1
123 | section: extabindex
124 | - kind: Function
125 | name: __register_fragment
126 | size: 0
127 | flags: 1
128 | section: .text
129 | relocations:
130 | - offset: 12
131 | kind: PpcEmbSda21
132 | symbol: 1
133 | addend: 0
134 | - offset: 24
135 | kind: PpcRel24
136 | symbol: 2
137 | addend: 0
138 | - offset: 28
139 | kind: PpcAddr16Ha
140 | symbol: 3
141 | addend: 0
142 | - offset: 36
143 | kind: PpcAddr16Lo
144 | symbol: 3
145 | addend: 0
146 | - offset: 40
147 | kind: PpcRel24
148 | symbol: 4
149 | addend: 0
150 | - offset: 44
151 | kind: PpcEmbSda21
152 | symbol: 1
153 | addend: 0
154 |
--------------------------------------------------------------------------------
/assets/signatures/__init_hardware.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 580e1014d29d5d2a34f6a7da1ea99fbf29edc89c
3 | signature: fAAApv////9gACAA/////3wAAST/////f+gCpv////9IAAAB/AAAA0gAAAH8AAADf+gDpv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: __init_hardware
7 | size: 32
8 | flags: 1
9 | section: .init
10 | - kind: Function
11 | name: __OSPSInit
12 | size: 0
13 | flags: 1
14 | section: .text
15 | - kind: Function
16 | name: __OSCacheInit
17 | size: 0
18 | flags: 1
19 | section: .text
20 | relocations:
21 | - offset: 16
22 | kind: PpcRel24
23 | symbol: 1
24 | addend: 0
25 | - offset: 20
26 | kind: PpcRel24
27 | symbol: 2
28 | addend: 0
29 | - symbol: 0
30 | hash: ad769b173a1a17656958bd4dafa7dafde73e6c55
31 | signature: fAAApv////9gACAA/////3wAAST/////f+gCpv////9IAAAB/AAAA0gAAAH8AAADSAAAAfwAAAN/6AOm/////06AACD/////
32 | symbols:
33 | - kind: Function
34 | name: __init_hardware
35 | size: 36
36 | flags: 1
37 | section: .init
38 | - kind: Function
39 | name: __OSPSInit
40 | size: 0
41 | flags: 1
42 | section: .text
43 | - kind: Function
44 | name: __OSFPRInit
45 | size: 0
46 | flags: 1
47 | section: .text
48 | - kind: Function
49 | name: __OSCacheInit
50 | size: 0
51 | flags: 1
52 | section: .text
53 | relocations:
54 | - offset: 16
55 | kind: PpcRel24
56 | symbol: 1
57 | addend: 0
58 | - offset: 20
59 | kind: PpcRel24
60 | symbol: 2
61 | addend: 0
62 | - offset: 24
63 | kind: PpcRel24
64 | symbol: 3
65 | addend: 0
66 |
--------------------------------------------------------------------------------
/assets/signatures/__init_registers.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 35e0aecb1159eba2e658821a16f289874cd0979b
3 | signature: PCAAAP//AABgIQAA//8AADxAAAD//wAAYEIAAP//AAA9oAAA//8AAGGtAAD//wAAToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __init_registers
7 | size: 28
8 | flags: 2
9 | section: .init
10 | - kind: Unknown
11 | name: _stack_addr
12 | size: 0
13 | flags: 1
14 | section: null
15 | - kind: Unknown
16 | name: _SDA2_BASE_
17 | size: 0
18 | flags: 1
19 | section: null
20 | - kind: Unknown
21 | name: _SDA_BASE_
22 | size: 0
23 | flags: 1
24 | section: null
25 | relocations:
26 | - offset: 0
27 | kind: PpcAddr16Hi
28 | symbol: 1
29 | addend: 0
30 | - offset: 4
31 | kind: PpcAddr16Lo
32 | symbol: 1
33 | addend: 0
34 | - offset: 8
35 | kind: PpcAddr16Hi
36 | symbol: 2
37 | addend: 0
38 | - offset: 12
39 | kind: PpcAddr16Lo
40 | symbol: 2
41 | addend: 0
42 | - offset: 16
43 | kind: PpcAddr16Hi
44 | symbol: 3
45 | addend: 0
46 | - offset: 20
47 | kind: PpcAddr16Lo
48 | symbol: 3
49 | addend: 0
50 | - symbol: 0
51 | hash: 003c9e22ad7c98eab8a91efe4bd20f74310e1fd7
52 | signature: OAAAAP////84YAAA/////ziAAAD/////OKAAAP////84wAAA/////zjgAAD/////OQAAAP////85IAAA/////zlAAAD/////OWAAAP////85gAAA/////znAAAD/////OeAAAP////86AAAA/////zogAAD/////OkAAAP////86YAAA/////zqAAAD/////OqAAAP////86wAAA/////zrgAAD/////OwAAAP////87IAAA/////ztAAAD/////O2AAAP////87gAAA/////zugAAD/////O8AAAP////874AAA/////zwgAAD//wAAYCEAAP//AAA8QAAA//8AAGBCAAD//wAAPaAAAP//AABhrQAA//8AAE6AACD/////
53 | symbols:
54 | - kind: Function
55 | name: __init_registers
56 | size: 144
57 | flags: 2
58 | section: .init
59 | - kind: Unknown
60 | name: _stack_addr
61 | size: 0
62 | flags: 1
63 | section: null
64 | - kind: Unknown
65 | name: _SDA2_BASE_
66 | size: 0
67 | flags: 1
68 | section: null
69 | - kind: Unknown
70 | name: _SDA_BASE_
71 | size: 0
72 | flags: 1
73 | section: null
74 | relocations:
75 | - offset: 116
76 | kind: PpcAddr16Hi
77 | symbol: 1
78 | addend: 0
79 | - offset: 120
80 | kind: PpcAddr16Lo
81 | symbol: 1
82 | addend: 0
83 | - offset: 124
84 | kind: PpcAddr16Hi
85 | symbol: 2
86 | addend: 0
87 | - offset: 128
88 | kind: PpcAddr16Lo
89 | symbol: 2
90 | addend: 0
91 | - offset: 132
92 | kind: PpcAddr16Hi
93 | symbol: 3
94 | addend: 0
95 | - offset: 136
96 | kind: PpcAddr16Lo
97 | symbol: 3
98 | addend: 0
99 |
--------------------------------------------------------------------------------
/assets/signatures/__mod2u.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: d2e017b521692678e61981afaaecfe91456aa1c1
3 | signature: LAMAAP////98YAA0/////3yJADT/////QIIACP////84CQAg/////ywFAAD/////fKkANP////98ygA0/////0CCAAj/////OSoAIP////98AEgA/////yFAAED/////QYEAsP////85KQAB/////yEpAED/////fABKFP////99KVBQ/////30pA6b/////LAkAIP////846f/g/////0GAABD/////fGg8MP////844AAA/////0gAABj/////fIhMMP////8g6QAg/////3xnODD/////fQg7eP////98Z0ww/////ywAACD/////MSD/4P////9BgAAQ/////3yDSDD/////OIAAAP////9IAAAY/////3xjADD/////ISAAIP////98iUww/////3xjS3j/////fIQAMP////85QP///////zDnAAD/////fIQhFP////98YxkU/////30IQRT/////fOc5FP////98BkAQ/////30lORH/////QYAAEP////98CAN4/////30nS3j/////MAoAAf////9CAP/Y/////30EQ3j/////fOM7eP////9OgAAg/////06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __mod2u
7 | size: 228
8 | flags: 1
9 | section: .text
10 | relocations: []
11 | - symbol: 0
12 | hash: 8dfd849a47b6db30906fce7e5ec87a7dba8cbc37
13 | signature: LAMAAP////98YAA0/////3yJADT/////QIIACP////84CQAg/////ywFAAD/////fKkANP////98ygA0/////0CCAAj/////OSoAIP////98AEgA/////yFAAED/////TYEAIP////85KQAB/////yEpAED/////fABKFP////99KVBQ/////30pA6b/////LAkAIP////846f/g/////0GAABD/////fGg8MP////844AAA/////0gAABj/////fIhMMP////8g6QAg/////3xnODD/////fQg7eP////98Z0ww/////ywAACD/////MSD/4P////9BgAAQ/////3yDSDD/////OIAAAP////9IAAAY/////3xjADD/////ISAAIP////98iUww/////3xjS3j/////fIQAMP////85QP///////zDnAAD/////fIQhFP////98YxkU/////30IQRT/////fOc5FP////98BkAQ/////30lORH/////QYAAEP////98CAN4/////30nS3j/////MAoAAf////9CAP/Y/////30EQ3j/////fOM7eP////9OgAAg/////06AACD/////
14 | symbols:
15 | - kind: Function
16 | name: __mod2u
17 | size: 228
18 | flags: 1
19 | section: .text
20 | relocations: []
21 |
--------------------------------------------------------------------------------
/assets/signatures/__msl_runtime_constraint_violation_s.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 9d8737e8fff8fd6d4fdc283b21a9fefce07f432d
3 | signature: gYAAAP/gAAAsDAAA/////02CACD/////fYkDpv////9OgAQg/////06AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __msl_runtime_constraint_violation_s
7 | size: 24
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: __msl_constraint_handler
12 | size: 4
13 | flags: 2
14 | section: .sbss
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 |
--------------------------------------------------------------------------------
/assets/signatures/__register_fragment.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 20cc2c335b1df2d92f0c8e3d39063f4e864cff0e
3 | signature: PKAAAP//AAA4pQAA//8AAIAFAAj/////LAAAAP////9AggAc/////5BlAAD/////OAAAAf////84YAAA/////5CFAAT/////kAUACP////9OgAAg/////zhg////////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __register_fragment
7 | size: 52
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: fragmentinfo
12 | size: 12
13 | flags: 2
14 | section: .bss
15 | relocations:
16 | - offset: 0
17 | kind: PpcAddr16Ha
18 | symbol: 1
19 | addend: 0
20 | - offset: 4
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 | - symbol: 0
25 | hash: 2656e9aa9864995db04839bae9bff4955f4eb881
26 | signature: PKAAAP//AAA4pQAA//8AAEgAAAT/////SAAABP////+ABQAI/////ywAAAD/////QIIAHP////+QZQAA/////zgAAAH/////OGAAAP////+QhQAE/////5AFAAj/////SAAACP////84YP///////06AACD/////
27 | symbols:
28 | - kind: Function
29 | name: __register_fragment
30 | size: 60
31 | flags: 1
32 | section: .text
33 | - kind: Object
34 | name: fragmentinfo
35 | size: 12
36 | flags: 2
37 | section: .bss
38 | relocations:
39 | - offset: 0
40 | kind: PpcAddr16Ha
41 | symbol: 1
42 | addend: 0
43 | - offset: 4
44 | kind: PpcAddr16Lo
45 | symbol: 1
46 | addend: 0
47 | - symbol: 0
48 | hash: 7a7b517c57b230978a35628147683bf87839916c
49 | signature: PKAAAP//AAA4AAAg/////zilAAD//wAAOMAAAP////98CQOm/////4AFAAj/////LAAAAP////9AggAc/////5BlAAD/////OAAAAf////98wzN4/////5CFAAT/////kAUACP////9OgAAg/////zjGAAH/////OKUADP////9CAP/U/////zhg////////ToAAIP////8=
50 | symbols:
51 | - kind: Function
52 | name: __register_fragment
53 | size: 76
54 | flags: 1
55 | section: .text
56 | - kind: Object
57 | name: fragmentinfo
58 | size: 384
59 | flags: 2
60 | section: .bss
61 | relocations:
62 | - offset: 0
63 | kind: PpcAddr16Ha
64 | symbol: 1
65 | addend: 0
66 | - offset: 8
67 | kind: PpcAddr16Lo
68 | symbol: 1
69 | addend: 0
70 |
--------------------------------------------------------------------------------
/assets/signatures/__register_global_object.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 9ae42f2a8ca1c619848ba7c2ec54f348044470e4
3 | signature: gAAAAP/gAACQBQAA/////5CFAAT/////kGUACP////+QoAAA/+AAAE6AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __register_global_object
7 | size: 24
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: __global_destructor_chain
12 | size: 4
13 | flags: 1
14 | section: .sbss
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 | - offset: 16
21 | kind: PpcEmbSda21
22 | symbol: 1
23 | addend: 0
24 | - symbol: 0
25 | hash: 22cb1f474182a4b5e07e63e09b574fae0bf8e672
26 | signature: PMAAAP//AACABgAA//8AAJAFAAD/////kIUABP////+QZQAI/////5CmAAD//wAAToAAIP////8=
27 | symbols:
28 | - kind: Function
29 | name: __register_global_object
30 | size: 28
31 | flags: 1
32 | section: .text
33 | - kind: Object
34 | name: __global_destructor_chain
35 | size: 4
36 | flags: 1
37 | section: .bss
38 | relocations:
39 | - offset: 0
40 | kind: PpcAddr16Ha
41 | symbol: 1
42 | addend: 0
43 | - offset: 4
44 | kind: PpcAddr16Lo
45 | symbol: 1
46 | addend: 0
47 | - offset: 20
48 | kind: PpcAddr16Lo
49 | symbol: 1
50 | addend: 0
51 | - symbol: 0
52 | hash: 6f0f3d0bb4895d84ee43877da689301e8fc9f844
53 | signature: PMAAAP////+ABgAA/////5AFAAD/////kIUABP////+QZQAI/////5CmAAD/////ToAAIP////8=
54 | symbols:
55 | - kind: Function
56 | name: __register_global_object
57 | size: 28
58 | flags: 1
59 | section: .text
60 | relocations: []
61 | - symbol: 0
62 | hash: a6c9fe066ab0621a02049267cb648a2aab4f722e
63 | signature: PMAAAP//AACEBgAA//8AAJAFAAD/////kIUABP////+QZQAI/////5CmAAD/////ToAAIP////8=
64 | symbols:
65 | - kind: Function
66 | name: __register_global_object
67 | size: 28
68 | flags: 1
69 | section: .text
70 | - kind: Object
71 | name: __global_destructor_chain
72 | size: 4
73 | flags: 1
74 | section: .bss
75 | relocations:
76 | - offset: 0
77 | kind: PpcAddr16Ha
78 | symbol: 1
79 | addend: 0
80 | - offset: 4
81 | kind: PpcAddr16Lo
82 | symbol: 1
83 | addend: 0
84 | - symbol: 0
85 | hash: c174aed044d0767ee4cf6a7270fbd9c46bb45938
86 | signature: PMAAAP//AACABgAA//8AAJAFAAD/////kIUABP////+QZQAI/////zzAAAD//wAAkKYAAP//AABOgAAg/////w==
87 | symbols:
88 | - kind: Function
89 | name: __register_global_object
90 | size: 32
91 | flags: 1
92 | section: .text
93 | - kind: Object
94 | name: __global_destructor_chain
95 | size: 4
96 | flags: 1
97 | section: .bss
98 | relocations:
99 | - offset: 0
100 | kind: PpcAddr16Ha
101 | symbol: 1
102 | addend: 0
103 | - offset: 4
104 | kind: PpcAddr16Lo
105 | symbol: 1
106 | addend: 0
107 | - offset: 20
108 | kind: PpcAddr16Ha
109 | symbol: 1
110 | addend: 0
111 | - offset: 24
112 | kind: PpcAddr16Lo
113 | symbol: 1
114 | addend: 0
115 |
--------------------------------------------------------------------------------
/assets/signatures/__set_debug_bba.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: a34eda2a630deec55eb36b098f554d192ef184aa
3 | signature: OAAAAf////+YAAAA/+AAAE6AACD/////
4 | symbols:
5 | - kind: Function
6 | name: __set_debug_bba
7 | size: 12
8 | flags: 2
9 | section: .init
10 | - kind: Object
11 | name: Debug_BBA
12 | size: 1
13 | flags: 2
14 | section: .sbss
15 | relocations:
16 | - offset: 4
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 |
--------------------------------------------------------------------------------
/assets/signatures/__stdio_atexit.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: c33febb49422cf93193217b85050688499bba101
3 | signature: ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __stdio_atexit
7 | size: 4
8 | flags: 1
9 | section: .text
10 | relocations: []
11 | - symbol: 0
12 | hash: fa600b3dbea6e43098448e26ae05503d7d26ce45
13 | signature: PGAAAP//AAA4YwAA//8AAJBgAAD/4AAAToAAIP////8=
14 | symbols:
15 | - kind: Function
16 | name: __stdio_atexit
17 | size: 16
18 | flags: 1
19 | section: .text
20 | - kind: Function
21 | name: __close_all
22 | size: 0
23 | flags: 1
24 | section: .text
25 | - kind: Object
26 | name: __stdio_exit
27 | size: 4
28 | flags: 1
29 | section: .sbss
30 | relocations:
31 | - offset: 0
32 | kind: PpcAddr16Ha
33 | symbol: 1
34 | addend: 0
35 | - offset: 4
36 | kind: PpcAddr16Lo
37 | symbol: 1
38 | addend: 0
39 | - offset: 8
40 | kind: PpcEmbSda21
41 | symbol: 2
42 | addend: 0
43 | - symbol: 0
44 | hash: 5379a24e31fc4aa0bbcd90a4d8a2ca3309dfaf43
45 | signature: PGAAAP//AAA4AwAA//8AAJAAAAD/4AAAToAAIP////8=
46 | symbols:
47 | - kind: Function
48 | name: __stdio_atexit
49 | size: 16
50 | flags: 1
51 | section: .text
52 | - kind: Function
53 | name: __close_all
54 | size: 0
55 | flags: 1
56 | section: .text
57 | - kind: Object
58 | name: __stdio_exit
59 | size: 4
60 | flags: 1
61 | section: .sbss
62 | relocations:
63 | - offset: 0
64 | kind: PpcAddr16Ha
65 | symbol: 1
66 | addend: 0
67 | - offset: 4
68 | kind: PpcAddr16Lo
69 | symbol: 1
70 | addend: 0
71 | - offset: 8
72 | kind: PpcEmbSda21
73 | symbol: 2
74 | addend: 0
75 |
--------------------------------------------------------------------------------
/assets/signatures/__unregister_fragment.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 7f011cf08af89b18fb76bcb1f7d104da62a785d6
3 | signature: LAMAAP////9MggAg/////xyDAAz/////PGAAAP//AAA4AAAA/////zhjAAD//wAAfAMhbv////+QAwAE/////5ADAAj/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: __unregister_fragment
7 | size: 40
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: fragmentinfo
12 | size: 12
13 | flags: 2
14 | section: .bss
15 | relocations:
16 | - offset: 12
17 | kind: PpcAddr16Ha
18 | symbol: 1
19 | addend: 0
20 | - offset: 20
21 | kind: PpcAddr16Lo
22 | symbol: 1
23 | addend: 0
24 | - symbol: 0
25 | hash: 63cfddab648b8040ba0fc548d9c6058245107cf5
26 | signature: KAMAH/////9NgQAg/////xyDAAz/////PGAAAP//AAA4AAAA/////zhjAAD//wAAfAMhbv////+QAwAE/////5ADAAj/////ToAAIP////8=
27 | symbols:
28 | - kind: Function
29 | name: __unregister_fragment
30 | size: 40
31 | flags: 1
32 | section: .text
33 | - kind: Object
34 | name: fragmentinfo
35 | size: 384
36 | flags: 2
37 | section: .bss
38 | relocations:
39 | - offset: 12
40 | kind: PpcAddr16Ha
41 | symbol: 1
42 | addend: 0
43 | - offset: 20
44 | kind: PpcAddr16Lo
45 | symbol: 1
46 | addend: 0
47 | - symbol: 0
48 | hash: 1c7fef6e356049ca092911ef494021318eeb8013
49 | signature: LAMAAP////9NgAAg/////ywDAAH/////TIAAIP////8cgwAM/////zxgAAD//wAAOAAAAP////84YwAA//8AAHwDIW7/////kAMABP////+QAwAI/////06AACD/////
50 | symbols:
51 | - kind: Function
52 | name: __unregister_fragment
53 | size: 48
54 | flags: 1
55 | section: .text
56 | - kind: Object
57 | name: fragmentinfo
58 | size: 12
59 | flags: 2
60 | section: .bss
61 | relocations:
62 | - offset: 20
63 | kind: PpcAddr16Ha
64 | symbol: 1
65 | addend: 0
66 | - offset: 28
67 | kind: PpcAddr16Lo
68 | symbol: 1
69 | addend: 0
70 | - symbol: 0
71 | hash: 0dba621b6fe389afcf2ab53bdb76db9d9dc8d54e
72 | signature: LAMAAP////9NgAAg/////ywDAAH/////TIAAIP////8cgwAM/////zxgAAD//wAAOAAAAP////84YwAA//8AAHxjIhT/////kAMAAP////+QAwAE/////5ADAAj/////ToAAIP////8=
73 | symbols:
74 | - kind: Function
75 | name: __unregister_fragment
76 | size: 52
77 | flags: 1
78 | section: .text
79 | - kind: Object
80 | name: fragmentinfo
81 | size: 12
82 | flags: 2
83 | section: .bss
84 | relocations:
85 | - offset: 20
86 | kind: PpcAddr16Ha
87 | symbol: 1
88 | addend: 0
89 | - offset: 28
90 | kind: PpcAddr16Lo
91 | symbol: 1
92 | addend: 0
93 | - symbol: 0
94 | hash: 8a6d162b7c2bade6367615664b53c6fa684930bd
95 | signature: LAMAAP////9BgAAs/////ywDAAH/////QIAAJP////8cgwAM/////zxgAAD//wAAOAMAAP//AAB8YCIU/////zgAAAD/////kAMAAP////+QAwAE/////5ADAAj/////ToAAIP////8=
96 | symbols:
97 | - kind: Function
98 | name: __unregister_fragment
99 | size: 52
100 | flags: 1
101 | section: .text
102 | - kind: Object
103 | name: fragmentinfo
104 | size: 12
105 | flags: 2
106 | section: .bss
107 | relocations:
108 | - offset: 20
109 | kind: PpcAddr16Ha
110 | symbol: 1
111 | addend: 0
112 | - offset: 24
113 | kind: PpcAddr16Lo
114 | symbol: 1
115 | addend: 0
116 |
--------------------------------------------------------------------------------
/assets/signatures/nandIsInitialized.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: f817c1799784a6f7f1dadfff8b09e273cbce09f8
3 | signature: gGAAAP/gAAA4A//+/////3wAADT/////VAPZfv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: nandIsInitialized
7 | size: 20
8 | flags: 1
9 | section: .text
10 | - kind: Object
11 | name: s_libState
12 | size: 4
13 | flags: 2
14 | section: .sbss
15 | relocations:
16 | - offset: 0
17 | kind: PpcEmbSda21
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: 75990b74647c490ee769808824dd3bb9f9265b94
22 | signature: gAAAAP/gAAAsAAAC/////0CCAAz/////OGAAAf////9IAAAI/////zhgAAD/////ToAAIP////8=
23 | symbols:
24 | - kind: Function
25 | name: nandIsInitialized
26 | size: 28
27 | flags: 1
28 | section: .text
29 | - kind: Object
30 | name: s_libState
31 | size: 4
32 | flags: 2
33 | section: .sbss
34 | relocations:
35 | - offset: 0
36 | kind: PpcEmbSda21
37 | symbol: 1
38 | addend: 0
39 |
--------------------------------------------------------------------------------
/assets/signatures/vsnprintf.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: fa9f4305375ff4c38deda8008893305d166f1bc6
3 | signature: fAgCpv////+QAQAE/////zgAAAD/////lCH/0P////+T4QAs/////zvkAAD/////OIEAGP////+TwQAo/////3x+G3j/////PGAAAP//AACTwQAY/////zhjAAD//wAAk+EAHP////+QAQAg/////0gAAAH8AAADfAP4QP////9AgAAM/////3xkG3j/////SAAACP////84n////////zgAAAD/////fB4hrv////+AAQA0/////4PhACz/////g8EAKP////98CAOm/////zghADD/////ToAAIP////8=
4 | symbols:
5 | - kind: Function
6 | name: vsnprintf
7 | size: 112
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: __StringWrite
12 | size: 0
13 | flags: 1
14 | section: .text
15 | - kind: Function
16 | name: __pformatter
17 | size: 0
18 | flags: 2
19 | section: .text
20 | relocations:
21 | - offset: 36
22 | kind: PpcAddr16Ha
23 | symbol: 1
24 | addend: 0
25 | - offset: 44
26 | kind: PpcAddr16Lo
27 | symbol: 1
28 | addend: 0
29 | - offset: 56
30 | kind: PpcRel24
31 | symbol: 2
32 | addend: 0
33 | - symbol: 0
34 | hash: 5c158d8dc03137ede7b68e26eae7ea8e20f4cb70
35 | signature: lCH/4P////98CAKm/////5ABACT/////OAAAAP////+T4QAc/////3yfI3j/////OIEACP////+TwQAY/////3x+G3j/////PGAAAP//AACTwQAI/////zhjAAD//wAAk+EADP////+QAQAQ/////0gAAAH8AAADKB4AAP////9BggAc/////3wD+ED/////OJ////////9AgAAI/////3xkG3j/////OAAAAP////98HiGu/////4ABACT/////g+EAHP////+DwQAY/////3wIA6b/////OCEAIP////9OgAAg/////w==
36 | symbols:
37 | - kind: Function
38 | name: vsnprintf
39 | size: 116
40 | flags: 1
41 | section: .text
42 | - kind: Function
43 | name: __StringWrite
44 | size: 0
45 | flags: 1
46 | section: .text
47 | - kind: Function
48 | name: __pformatter
49 | size: 0
50 | flags: 2
51 | section: .text
52 | relocations:
53 | - offset: 36
54 | kind: PpcAddr16Ha
55 | symbol: 1
56 | addend: 0
57 | - offset: 44
58 | kind: PpcAddr16Lo
59 | symbol: 1
60 | addend: 0
61 | - offset: 56
62 | kind: PpcRel24
63 | symbol: 2
64 | addend: 0
65 | - symbol: 0
66 | hash: dae7c6adc471f7148006db699fa19d4d2d417161
67 | signature: lCH/0P////98CAKm/////zzgAAD//wAAkAEANP////+T4QAs/////zvgAAD/////k8EAKP////98niN4/////5OhACT/////fH0beP////+QYQAI/////zhnAAD//wAAkIEADP////84gQAI/////5PhABD/////SAAAAfwAAAMsHQAA/////0GCACT/////fAPwQP////9AgAAM/////3/9Ga7/////SAAAFP////8sHgAA/////0GCAAz/////fJ3yFP////+b5P///////4ABADT/////g+EALP////+DwQAo/////4OhACT/////fAgDpv////84IQAw/////06AACD/////
68 | symbols:
69 | - kind: Function
70 | name: vsnprintf
71 | size: 132
72 | flags: 1
73 | section: .text
74 | - kind: Function
75 | name: __StringWrite
76 | size: 0
77 | flags: 1
78 | section: .text
79 | - kind: Function
80 | name: __pformatter
81 | size: 0
82 | flags: 2
83 | section: .text
84 | relocations:
85 | - offset: 8
86 | kind: PpcAddr16Ha
87 | symbol: 1
88 | addend: 0
89 | - offset: 44
90 | kind: PpcAddr16Lo
91 | symbol: 1
92 | addend: 0
93 | - offset: 60
94 | kind: PpcRel24
95 | symbol: 2
96 | addend: 0
97 | - symbol: 0
98 | hash: 085881ea5beae3a4b56d9ce3c3886a1818c3b144
99 | signature: lCH/0P////98CAKm/////zzgAAD//wAAkAEANP////+T4QAs/////zvgAAD/////k8EAKP////98niN4/////5OhACT/////fH0beP////+QYQAI/////zhnAAD//wAAOOAAAP////+QgQAM/////ziBAAj/////k+EAEP////9IAAAB/AAAAywdAAD/////QYIAJP////98A/BA/////0CAAAz/////f/0Zrv////9IAAAU/////yweAAD/////QYIADP////98nfIU/////5vk////////gAEANP////+D4QAs/////4PBACj/////g6EAJP////98CAOm/////zghADD/////ToAAIP////8=
100 | symbols:
101 | - kind: Function
102 | name: vsnprintf
103 | size: 136
104 | flags: 1
105 | section: .text
106 | - kind: Function
107 | name: __StringWrite
108 | size: 0
109 | flags: 1
110 | section: .text
111 | - kind: Function
112 | name: __pformatter
113 | size: 0
114 | flags: 2
115 | section: .text
116 | relocations:
117 | - offset: 8
118 | kind: PpcAddr16Ha
119 | symbol: 1
120 | addend: 0
121 | - offset: 44
122 | kind: PpcAddr16Lo
123 | symbol: 1
124 | addend: 0
125 | - offset: 64
126 | kind: PpcRel24
127 | symbol: 2
128 | addend: 0
129 | - symbol: 0
130 | hash: 658726a44dbb17153ed490c2ec3a577cfad693d0
131 | signature: lCH/0P////98CAKm/////5ABADT/////OAAAAP////+T4QAs/////5PBACj/////k6EAJP////98fRt4/////zxgAAD//wAAk4EAIP////98nCN4/////zhjAAD//wAAOIEAEP////+QoQAI/////5DBAAz/////gKEACP////+ToQAQ/////4DBAAz/////k4EAFP////+QAQAY/////0gAAAH8AAADKB0AAP////98fxt4/////0GCACD/////fB/gQP////9AgAAM/////3/++3j/////SAAACP////873P///////zgAAAD/////fB3xrv////+AAQA0/////3/j+3j/////g+EALP////+DwQAo/////4OhACT/////g4EAIP////98CAOm/////zghADD/////ToAAIP////8=
132 | symbols:
133 | - kind: Function
134 | name: vsnprintf
135 | size: 160
136 | flags: 1
137 | section: .text
138 | - kind: Function
139 | name: __StringWrite
140 | size: 0
141 | flags: 1
142 | section: .text
143 | - kind: Function
144 | name: __pformatter
145 | size: 0
146 | flags: 2
147 | section: .text
148 | relocations:
149 | - offset: 32
150 | kind: PpcAddr16Ha
151 | symbol: 1
152 | addend: 0
153 | - offset: 44
154 | kind: PpcAddr16Lo
155 | symbol: 1
156 | addend: 0
157 | - offset: 80
158 | kind: PpcRel24
159 | symbol: 2
160 | addend: 0
--------------------------------------------------------------------------------
/assets/signatures/vsprintf.yml:
--------------------------------------------------------------------------------
1 | - symbol: 0
2 | hash: 0a86ea00beea7cea63ce37b5216063b5346c1c0b
3 | signature: fAgCpv////84xQAA/////5ABAAT/////OKQAAP////88gAAQ/////5Qh//j/////SAAAAfwAAAOAAQAM/////zghAAj/////fAgDpv////9OgAAg/////w==
4 | symbols:
5 | - kind: Function
6 | name: vsprintf
7 | size: 44
8 | flags: 1
9 | section: .text
10 | - kind: Function
11 | name: vsnprintf
12 | size: 0
13 | flags: 1
14 | section: .text
15 | relocations:
16 | - offset: 24
17 | kind: PpcRel24
18 | symbol: 1
19 | addend: 0
20 | - symbol: 0
21 | hash: 13170c969386c2018d768adfbab78de7aa63105d
22 | signature: lCH/4P////98CAKm/////5BhAAj/////kIEADP////84gP///////4BhAAj/////kKEAEP////+AoQAM/////5ABACT/////gMEAEP////9IAAAB/AAAA4ABACT/////fAgDpv////84IQAg/////06AACD/////
23 | symbols:
24 | - kind: Function
25 | name: vsprintf
26 | size: 60
27 | flags: 1
28 | section: .text
29 | - kind: Function
30 | name: vsnprintf
31 | size: 0
32 | flags: 1
33 | section: .text
34 | relocations:
35 | - offset: 40
36 | kind: PpcRel24
37 | symbol: 1
38 | addend: 0
39 | - symbol: 0
40 | hash: 5885efac2a796a2c1b4ff274c694aa4835b02bcd
41 | signature: fAgCpv////84xQAA/////5ABAAT/////OAAAAP////84pAAA/////5Qh/9j/////k+EAJP////874P///////ziBABT/////k8EAIP////98fht4/////zxgAAD//wAAk8EAFP////84YwAA//8AAJPhABj/////kAEAHP////9IAAAB/AAAA3wD+ED/////QIAADP////98ZBt4/////0gAAAj/////OID//v////84AAAA/////3weIa7/////gAEALP////+D4QAk/////4PBACD/////fAgDpv////84IQAo/////06AACD/////
42 | symbols:
43 | - kind: Function
44 | name: vsprintf
45 | size: 120
46 | flags: 1
47 | section: .text
48 | - kind: Function
49 | name: __StringWrite
50 | size: 0
51 | flags: 1
52 | section: .text
53 | - kind: Function
54 | name: __pformatter
55 | size: 0
56 | flags: 2
57 | section: .text
58 | relocations:
59 | - offset: 44
60 | kind: PpcAddr16Ha
61 | symbol: 1
62 | addend: 0
63 | - offset: 52
64 | kind: PpcAddr16Lo
65 | symbol: 1
66 | addend: 0
67 | - offset: 64
68 | kind: PpcRel24
69 | symbol: 2
70 | addend: 0
71 | - symbol: 0
72 | hash: cd553648d654529f91590b8f8f23051d871b875e
73 | signature: lCH/4P////98CAKm/////3ymK3j/////fIUjeP////+QAQAk/////zjg////////OAAAAP////84gQAI/////5PhABz/////fH8beP////88YAAA//8AAJPhAAj/////OGMAAP//AACQ4QAM/////5ABABD/////SAAAAfwAAAMoHwAA/////0GCACD/////OAD///////84gP/+/////3wDAED/////QIAACP////98ZBt4/////zgAAAD/////fB8hrv////+AAQAk/////4PhABz/////fAgDpv////84IQAg/////06AACD/////
74 | symbols:
75 | - kind: Function
76 | name: vsprintf
77 | size: 120
78 | flags: 1
79 | section: .text
80 | - kind: Function
81 | name: __StringWrite
82 | size: 0
83 | flags: 1
84 | section: .text
85 | - kind: Function
86 | name: __pformatter
87 | size: 0
88 | flags: 2
89 | section: .text
90 | relocations:
91 | - offset: 40
92 | kind: PpcAddr16Ha
93 | symbol: 1
94 | addend: 0
95 | - offset: 48
96 | kind: PpcAddr16Lo
97 | symbol: 1
98 | addend: 0
99 | - offset: 60
100 | kind: PpcRel24
101 | symbol: 2
102 | addend: 0
103 | - symbol: 0
104 | hash: 0ce7109467aa4020642bb441a6f6cc163c2acbf8
105 | signature: lCH/0P////98CAKm/////3ymK3j/////fIUjeP////+QAQA0/////zzgAAD//wAAOIEACP////+T4QAs/////zvgAAD/////k8EAKP////87wP///////5OhACT/////fH0beP////+QYQAI/////zhnAAD//wAAk8EADP////+T4QAQ/////0gAAAH8AAADLB0AAP////9BggAY/////3wD8ED/////QIAADP////9//Rmu/////0gAAAj/////m/3//v////+AAQA0/////4PhACz/////g8EAKP////+DoQAk/////3wIA6b/////OCEAMP////9OgAAg/////w==
106 | symbols:
107 | - kind: Function
108 | name: vsprintf
109 | size: 128
110 | flags: 1
111 | section: .text
112 | - kind: Function
113 | name: __StringWrite
114 | size: 0
115 | flags: 1
116 | section: .text
117 | - kind: Function
118 | name: __pformatter
119 | size: 0
120 | flags: 2
121 | section: .text
122 | relocations:
123 | - offset: 20
124 | kind: PpcAddr16Ha
125 | symbol: 1
126 | addend: 0
127 | - offset: 56
128 | kind: PpcAddr16Lo
129 | symbol: 1
130 | addend: 0
131 | - offset: 68
132 | kind: PpcRel24
133 | symbol: 2
134 | addend: 0
135 | - symbol: 0
136 | hash: 9027cdd7c152d7b4df6db6ff732d2e01fd7a2bd5
137 | signature: lCH/0P////98CAKm/////3ymK3j/////fIUjeP////+QAQA0/////zzgAAD//wAAOIEACP////+T4QAs/////zvgAAD/////k8EAKP////87wP///////5OhACT/////fH0beP////+QYQAI/////zhnAAD//wAAOOAAAP////+TwQAM/////5PhABD/////SAAAAfwAAAMsHQAA/////0GCABj/////fAPwQP////9AgAAM/////3/9Ga7/////SAAACP////+b/f/+/////4ABADT/////g+EALP////+DwQAo/////4OhACT/////fAgDpv////84IQAw/////06AACD/////
138 | symbols:
139 | - kind: Function
140 | name: vsprintf
141 | size: 132
142 | flags: 1
143 | section: .text
144 | - kind: Function
145 | name: __StringWrite
146 | size: 0
147 | flags: 1
148 | section: .text
149 | - kind: Function
150 | name: __pformatter
151 | size: 0
152 | flags: 2
153 | section: .text
154 | relocations:
155 | - offset: 20
156 | kind: PpcAddr16Ha
157 | symbol: 1
158 | addend: 0
159 | - offset: 56
160 | kind: PpcAddr16Lo
161 | symbol: 1
162 | addend: 0
163 | - offset: 72
164 | kind: PpcRel24
165 | symbol: 2
166 | addend: 0
167 |
--------------------------------------------------------------------------------
/assets/syntax/README:
--------------------------------------------------------------------------------
1 | syntect packs generated from:
2 | https://github.com/braver/Solarized/blob/87e01090cf5fb821a234265b3138426ae84900e7/Solarized%20(dark).tmTheme
3 | https://github.com/sublimehq/Packages/tree/fa6b8629c95041bf262d4c1dab95c456a0530122/C%2B%2B
4 |
5 | // let mut theme_set = ThemeSet::load_from_folder("../Solarized")?;
6 | // syntect::dumps::dump_to_file(&theme_set, "assets/syntax/default.themedump")?;
7 | //
8 | // let mut builder = SyntaxSetBuilder::new();
9 | // builder.add_from_folder("../sublimehq-Packages/C++", true)?;
10 | // let syntax_set = builder.build();
11 | // syntect::dumps::dump_to_file(&syntax_set, "assets/syntax/default_newlines.packdump")?;
12 |
--------------------------------------------------------------------------------
/assets/syntax/default.themedump:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/encounter/decomp-toolkit/f4a67ee61929ab2b6b5c1b0433439f00730558be/assets/syntax/default.themedump
--------------------------------------------------------------------------------
/assets/syntax/default_newlines.packdump:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/encounter/decomp-toolkit/f4a67ee61929ab2b6b5c1b0433439f00730558be/assets/syntax/default_newlines.packdump
--------------------------------------------------------------------------------
/build.rs:
--------------------------------------------------------------------------------
1 | fn main() {
2 | let output = std::process::Command::new("git")
3 | .args(["rev-parse", "HEAD"])
4 | .output()
5 | .expect("Failed to execute git");
6 | let rev = String::from_utf8(output.stdout).expect("Failed to parse git output");
7 | println!("cargo:rustc-env=GIT_COMMIT_SHA={rev}");
8 | println!("cargo:rustc-rerun-if-changed=.git/HEAD");
9 | }
10 |
--------------------------------------------------------------------------------
/docs/other_approaches.md:
--------------------------------------------------------------------------------
1 | # Other approaches
2 |
3 | ## Manual assembly
4 |
5 | With existing GameCube/Wii decompilation tooling, the setup process is very tedious and error-prone.
6 | The general process is:
7 |
8 | - Begin by disassembling the original binary with a tool like
9 | [doldisasm.py](https://gist.github.com/camthesaxman/a36f610dbf4cc53a874322ef146c4123). This produces one giant
10 | assembly file per section.
11 | - Manually comb through the assembly files and fix many issues, like incorrect or missing relocations, incorrect or
12 | missing symbols, and more.
13 | - Manually find-and-replace the auto-generated symbol names based on other sources, like other decompilation projects
14 | or a map file. (If you're lucky enough to have one)
15 | - Manually determine data types and sizes, and convert them accordingly. (For example, `.4byte` -> `.float`, strings,
16 | etc)
17 | - Manually split the assembly files into individual objects. This is a very tedious process, as it requires identifying
18 | the boundaries of each function, determining whether adjacent functions are related, finding associated
19 | data from each data section, and cut-and-pasting all of this into a new file.
20 |
21 | Other downsides of this approach:
22 |
23 | - Manually editing the assembly means that the result is not reproducible. You can't run the script again to
24 | make any updates, because your changes will be overwritten. This also means that the assembly files must be
25 | stored in version control, which is not ideal.
26 | - Incorrectly splitting objects is very easy to do, and can be difficult to detect. For example, a `.ctors` entry _must_
27 | be located in the same object as the function it references, otherwise the linker will not generate the correct
28 | `.ctors` entry. `extab` and `extabindex` entries _must also_ be located in the same object as the function they
29 | reference, have a label and have the correct size, and have a direct relocation rather than a section-relative
30 | relocation. Otherwise, the linker will crash with a cryptic error message.
31 | - Relying on assembly means that you need an assembler. For GameCube/Wii, this means devkitPro, which is a
32 | large dependency and an obstacle for new contributors. The assembler also has some quirks that don't interact well
33 | with `mwldeppc`, which means that the object files must be manually post-processed to fix these issues. (See the
34 | [elf fixup](/README.md#elf-fixup) command)
35 |
36 | With decomp-toolkit:
37 |
38 | - Many analysis steps are automated and highly accurate. Many DOL files can be analyzed and split into re-linkable
39 | objects with no configuration.
40 | - Signature analysis automatically labels common functions and objects, and allows for more accurate relocation
41 | rebuilding.
42 | - Any manual adjustments are stored in configuration files, which are stored in version control.
43 | - Splitting is simplified by updating a configuration file. The analyzer will check for common issues, like
44 | incorrectly split `.ctors`/`.dtors`/`extab`/`extabindex` entries. If the user hasn't configured a split for these,
45 | the analyzer will automatically split them along with their associated functions to ensure that the linker will
46 | generate everything correctly. This means that matching code can be written without worrying about splitting all
47 | sections up front.
48 | - The splitter generates object files directly, with no assembler required. This means that we can avoid the devkitPro
49 | requirement. (Although we can still generate assembly files for viewing, editing, and compatibility with other tools)
50 |
51 | ## dadosod
52 |
53 | [dadosod](https://github.com/InusualZ/dadosod) is a newer replacement for `doldisasm.py`. It has more accurate function
54 | and relocation analysis than `doldisasm.py`, as well as support for renaming symbols based on a map file. However, since
55 | it operates as a one-shot assembly generator, it still suffers from many of the same issues described above.
56 |
57 | ## ppcdis
58 |
59 | [ppcdis](https://github.com/SeekyCt/ppcdis) is one of the tools that inspired decomp-toolkit. It has more accurate
60 | analysis than doldisasm.py, and has similar goals to decomp-toolkit. It's been used successfully in several
61 | decompilation projects.
62 |
63 | However, decomp-toolkit has a few advantages:
64 |
65 | - Faster and more accurate analysis. (See [Analyzer features](/README.md#analyzer-features))
66 | - Emits object files directly, with no assembler required.
67 | - More robust handling of features like common BSS, `.ctors`/`.dtors`/`extab`/`extabindex`, and more.
68 | - Requires very little configuration to start.
69 | - Automatically labels common functions and objects with signature analysis.
70 |
71 | ## Honorable mentions
72 |
73 | [splat](https://github.com/ethteck/splat) is a binary splitting tool for N64 and PSX. Some ideas from splat inspired
74 | decomp-toolkit, like the symbol configuration format.
75 |
--------------------------------------------------------------------------------
/docs/readme.md:
--------------------------------------------------------------------------------
1 | ### Visit the [dtk-template](https://github.com/encounter/dtk-template) repository for additional documentation, including a guide.
2 |
--------------------------------------------------------------------------------
/docs/terminology.md:
--------------------------------------------------------------------------------
1 | # Terminology
2 |
3 | ## DOL
4 |
5 | A [DOL file](https://wiki.tockdom.com/wiki/DOL_(File_Format)) is the executable format used by GameCube and Wii games.
6 | It's essentially a raw binary with a header that contains information about the code and data sections, as well as the
7 | entry point.
8 |
9 | ## ELF
10 |
11 | An [ELF file](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format) is the executable format used by most
12 | Unix-like operating systems. There are two common types of ELF files: **relocatable** and **executable**.
13 |
14 | A relocatable ELF (`.o`, also called "object file") contains machine code and relocation information, and is used as
15 | input to the linker. Each object file is compiled from a single source file (`.c`, `.cpp`).
16 |
17 | An executable ELF (`.elf`) contains the final machine code that can be loaded and executed. It *can* include
18 | information about symbols, debug information (DWARF), and sometimes information about the original relocations, but it
19 | is often missing some or all of these (referred to as "stripped").
20 |
21 | ## Symbol
22 |
23 | A symbol is a name that is assigned to a memory address. Symbols can be functions, variables, or other data.
24 |
25 | **Local** symbols are only visible within the object file they are defined in.
26 | These are usually defined as `static` in C/C++ or are compiler-generated.
27 |
28 | **Global** symbols are visible to all object files, and their names must be unique.
29 |
30 | **Weak** symbols are similar to global symbols, but can be replaced by a global symbol with the same name.
31 | For example: the SDK defines a weak `OSReport` function, which can be replaced by a game-specific implementation.
32 | Weak symbols are also used for functions generated by the compiler or as a result of C++ features, since they can exist
33 | in multiple object files. The linker will deduplicate these functions, keeping only the first copy.
34 |
35 | ## Relocation
36 |
37 | A relocation is essentially a pointer to a symbol. At compile time, the final address of a symbol is
38 | not known yet, therefore a relocation is needed.
39 | At link time, each symbol is assigned a final address, and the linker will use the relocations to update the machine
40 | code with the final addresses of the symbol.
41 |
42 | Before:
43 |
44 | ```asm
45 | # Unrelocated, instructions point to address 0 (unknown)
46 | lis r3, 0
47 | ori r3, r3, 0
48 | ```
49 |
50 | After:
51 |
52 | ```asm
53 | # Relocated, instructions point to 0x80001234
54 | lis r3, 0x8000
55 | ori r3, r3, 0x1234
56 | ```
57 |
58 | Once the linker performs the relocation with the final address, the relocation is no longer needed. Still, sometimes the
59 | final ELF will still contain the relocation information, but the conversion to DOL will **always** remove it.
60 |
61 | When we analyze a file, we attempt to rebuild the relocations. This is useful for several reasons:
62 |
63 | - It allows us to split the file into relocatable objects. Each object can then be replaced with a decompiled version,
64 | as matching code is written.
65 | - It allows us to modify or add code and data to the game and have all machine code still to point to the correct
66 | symbols, which may now be in a different location.
67 | - It allows us to view the machine code in a disassembler and show symbol names instead of raw addresses.
68 |
--------------------------------------------------------------------------------
/rustfmt.toml:
--------------------------------------------------------------------------------
1 | fn_single_line = true
2 | group_imports = "StdExternalCrate"
3 | imports_granularity = "Crate"
4 | overflow_delimited_expr = true
5 | reorder_impl_items = true
6 | use_field_init_shorthand = true
7 | use_small_heuristics = "Max"
8 | where_single_line = true
9 |
--------------------------------------------------------------------------------
/src/argp_version.rs:
--------------------------------------------------------------------------------
1 | // Originally from https://gist.github.com/suluke/e0c672492126be0a4f3b4f0e1115d77c
2 | //! Extend `argp` to be better integrated with the `cargo` ecosystem
3 | //!
4 | //! For now, this only adds a --version/-V option which causes early-exit.
5 | use std::ffi::OsStr;
6 |
7 | use argp::{parser::ParseGlobalOptions, EarlyExit, FromArgs, TopLevelCommand};
8 |
9 | struct ArgsOrVersion(T)
10 | where T: FromArgs;
11 |
12 | impl TopLevelCommand for ArgsOrVersion where T: FromArgs {}
13 |
14 | impl FromArgs for ArgsOrVersion
15 | where T: FromArgs
16 | {
17 | fn _from_args(
18 | command_name: &[&str],
19 | args: &[&OsStr],
20 | parent: Option<&mut dyn ParseGlobalOptions>,
21 | ) -> Result {
22 | /// Also use argp for catching `--version`-only invocations
23 | #[derive(FromArgs)]
24 | struct Version {
25 | /// Print version information and exit.
26 | #[argp(switch, short = 'V')]
27 | pub version: bool,
28 | }
29 |
30 | match Version::from_args(command_name, args) {
31 | Ok(v) => {
32 | if v.version {
33 | println!(
34 | "{} {} {}",
35 | command_name.first().unwrap_or(&""),
36 | env!("CARGO_PKG_VERSION"),
37 | env!("GIT_COMMIT_SHA"),
38 | );
39 | std::process::exit(0);
40 | } else {
41 | // Pass through empty arguments
42 | T::_from_args(command_name, args, parent).map(Self)
43 | }
44 | }
45 | Err(exit) => match exit {
46 | EarlyExit::Help(_help) => {
47 | // TODO: Chain help info from Version
48 | // For now, we just put the switch on T as well
49 | T::from_args(command_name, &["--help"]).map(Self)
50 | }
51 | EarlyExit::Err(_) => T::_from_args(command_name, args, parent).map(Self),
52 | },
53 | }
54 | }
55 | }
56 |
57 | /// Create a `FromArgs` type from the current process’s `env::args`.
58 | ///
59 | /// This function will exit early from the current process if argument parsing was unsuccessful or if information like `--help` was requested.
60 | /// Error messages will be printed to stderr, and `--help` output to stdout.
61 | pub fn from_env() -> T
62 | where T: TopLevelCommand {
63 | argp::parse_args_or_exit::>(argp::DEFAULT).0
64 | }
65 |
--------------------------------------------------------------------------------
/src/cmd/alf.rs:
--------------------------------------------------------------------------------
1 | use std::io::{stdout, Write};
2 |
3 | use anyhow::Result;
4 | use argp::FromArgs;
5 | use typed_path::Utf8NativePathBuf;
6 |
7 | use crate::{
8 | cmd,
9 | util::{
10 | alf::AlfFile,
11 | file::buf_writer,
12 | path::native_path,
13 | reader::{Endian, FromReader},
14 | },
15 | vfs::open_file,
16 | };
17 |
18 | #[derive(FromArgs, PartialEq, Debug)]
19 | /// Commands for processing NVIDIA Shield TV alf files.
20 | #[argp(subcommand, name = "alf")]
21 | pub struct Args {
22 | #[argp(subcommand)]
23 | command: SubCommand,
24 | }
25 |
26 | #[derive(FromArgs, PartialEq, Debug)]
27 | #[argp(subcommand)]
28 | enum SubCommand {
29 | Info(InfoArgs),
30 | Hashes(HashesArgs),
31 | }
32 |
33 | #[derive(FromArgs, PartialEq, Debug)]
34 | /// Prints information about an alf file. (Same as `dol info`)
35 | #[argp(subcommand, name = "info")]
36 | pub struct InfoArgs {
37 | #[argp(positional, from_str_fn(native_path))]
38 | /// alf file
39 | file: Utf8NativePathBuf,
40 | }
41 |
42 | #[derive(FromArgs, PartialEq, Debug)]
43 | /// Extracts symbol hashes from an alf file.
44 | #[argp(subcommand, name = "hashes")]
45 | pub struct HashesArgs {
46 | #[argp(positional, from_str_fn(native_path))]
47 | /// alf file
48 | alf_file: Utf8NativePathBuf,
49 | #[argp(positional, from_str_fn(native_path))]
50 | /// output file
51 | output: Option,
52 | }
53 |
54 | pub fn run(args: Args) -> Result<()> {
55 | match args.command {
56 | SubCommand::Info(c_args) => info(c_args),
57 | SubCommand::Hashes(c_args) => hashes(c_args),
58 | }
59 | }
60 |
61 | fn hashes(args: HashesArgs) -> Result<()> {
62 | let alf_file = {
63 | let mut file = open_file(&args.alf_file, true)?;
64 | AlfFile::from_reader(file.as_mut(), Endian::Little)?
65 | };
66 | let mut w: Box = if let Some(output) = &args.output {
67 | Box::new(buf_writer(output)?)
68 | } else {
69 | Box::new(stdout())
70 | };
71 | let mut symbols = alf_file.symbols.clone();
72 | symbols.sort_by_key(|s| s.address);
73 | for symbol in symbols {
74 | writeln!(
75 | w,
76 | "{:#010X} | {} | {:?} | {} | {} | {:#X}",
77 | symbol.address,
78 | symbol.section,
79 | symbol.kind,
80 | symbol.name,
81 | symbol.demangled_name,
82 | symbol.size
83 | )?;
84 | }
85 | w.flush()?;
86 | Ok(())
87 | }
88 |
89 | fn info(args: InfoArgs) -> Result<()> {
90 | cmd::dol::info(cmd::dol::InfoArgs { dol_file: args.file, selfile: None })
91 | }
92 |
--------------------------------------------------------------------------------
/src/cmd/demangle.rs:
--------------------------------------------------------------------------------
1 | use anyhow::{anyhow, Result};
2 | use argp::FromArgs;
3 | use cwdemangle::{demangle, DemangleOptions};
4 |
5 | #[derive(FromArgs, PartialEq, Eq, Debug)]
6 | /// Demangle a CodeWarrior C++ symbol.
7 | #[argp(subcommand, name = "demangle")]
8 | pub struct Args {
9 | #[argp(positional)]
10 | /// symbol to demangle
11 | symbol: String,
12 | #[argp(switch)]
13 | /// disable replacing `(void)` with `()`
14 | keep_void: bool,
15 | /// enable Metrowerks extensions
16 | #[argp(switch)]
17 | mw_extensions: bool,
18 | }
19 |
20 | pub fn run(args: Args) -> Result<()> {
21 | let options = DemangleOptions {
22 | omit_empty_parameters: !args.keep_void,
23 | mw_extensions: args.mw_extensions,
24 | };
25 | match demangle(args.symbol.as_str(), &options) {
26 | Some(symbol) => {
27 | println!("{symbol}");
28 | Ok(())
29 | }
30 | None => Err(anyhow!("Failed to demangle symbol")),
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/cmd/disc.rs:
--------------------------------------------------------------------------------
1 | use anyhow::{Error, Result};
2 | use argp::FromArgs;
3 | use nodtool::SubCommand;
4 |
5 | #[derive(FromArgs, Debug)]
6 | /// Commands for processing disc images.
7 | #[argp(subcommand, name = "disc")]
8 | pub struct Args {
9 | #[argp(subcommand)]
10 | command: SubCommand,
11 | }
12 |
13 | pub fn run(args: Args) -> Result<()> { nodtool::run(args.command).map_err(Error::new) }
14 |
--------------------------------------------------------------------------------
/src/cmd/extab.rs:
--------------------------------------------------------------------------------
1 | use std::io::Write;
2 |
3 | use anyhow::{Context, Result};
4 | use argp::FromArgs;
5 | use typed_path::Utf8NativePathBuf;
6 |
7 | use crate::{
8 | util,
9 | util::{
10 | dol::{process_dol, write_dol},
11 | elf::{is_elf_file, process_elf, write_elf},
12 | file::buf_writer,
13 | path::native_path,
14 | },
15 | vfs::open_file,
16 | };
17 |
18 | #[derive(FromArgs, PartialEq, Debug)]
19 | /// Commands for processing extab (exception table) data.
20 | #[argp(subcommand, name = "extab")]
21 | pub struct Args {
22 | #[argp(subcommand)]
23 | command: SubCommand,
24 | }
25 |
26 | #[derive(FromArgs, PartialEq, Debug)]
27 | #[argp(subcommand)]
28 | enum SubCommand {
29 | Clean(CleanArgs),
30 | }
31 |
32 | #[derive(FromArgs, PartialEq, Eq, Debug)]
33 | /// Rewrites extab data in a DOL or ELF file, replacing any uninitialized padding bytes.
34 | #[argp(subcommand, name = "clean")]
35 | pub struct CleanArgs {
36 | #[argp(positional, from_str_fn(native_path))]
37 | /// Path to input file
38 | input: Utf8NativePathBuf,
39 | #[argp(positional, from_str_fn(native_path))]
40 | /// Path to output file
41 | output: Utf8NativePathBuf,
42 | #[argp(option, short = 'p')]
43 | /// Data to replace padding bytes with, encoded as a hexadecimal string. If not specified, padding bytes will be zeroed instead.
44 | padding: Option,
45 | }
46 |
47 | pub fn run(args: Args) -> Result<()> {
48 | match args.command {
49 | SubCommand::Clean(clean_args) => clean_extab(clean_args),
50 | }
51 | }
52 |
53 | fn clean_extab(args: CleanArgs) -> Result<()> {
54 | let is_elf = is_elf_file(&args.input)?;
55 | let mut obj = if is_elf {
56 | process_elf(&args.input)?
57 | } else {
58 | let mut file = open_file(&args.input, true)?;
59 | let name = args.input.file_stem().unwrap_or_default();
60 | process_dol(file.map()?, name)?
61 | };
62 | let padding: Vec = match args.padding {
63 | None => Vec::new(),
64 | Some(padding_str) => {
65 | hex::decode(padding_str).context("Failed to decode padding bytes from hex")?
66 | }
67 | };
68 | let num_cleaned = util::extab::clean_extab(&mut obj, padding.iter().copied())?;
69 | tracing::debug!("Cleaned {num_cleaned} extab symbols");
70 | let mut out = buf_writer(&args.output)?;
71 | if is_elf {
72 | let data = write_elf(&obj, false)?;
73 | out.write_all(&data).context("Failed to write ELF")?;
74 | } else {
75 | write_dol(&obj, &mut out).context("Failed to write DOL")?;
76 | }
77 | Ok(())
78 | }
79 |
--------------------------------------------------------------------------------
/src/cmd/mod.rs:
--------------------------------------------------------------------------------
1 | pub mod alf;
2 | pub mod ar;
3 | pub mod demangle;
4 | pub mod disc;
5 | pub mod dol;
6 | pub mod dwarf;
7 | pub mod elf;
8 | pub mod elf2dol;
9 | pub mod extab;
10 | pub mod map;
11 | pub mod nlzss;
12 | pub mod rarc;
13 | pub mod rel;
14 | pub mod rso;
15 | pub mod shasum;
16 | pub mod u8_arc;
17 | pub mod vfs;
18 | pub mod wad;
19 | pub mod yay0;
20 | pub mod yaz0;
21 |
--------------------------------------------------------------------------------
/src/cmd/nlzss.rs:
--------------------------------------------------------------------------------
1 | use std::fs;
2 |
3 | use anyhow::{anyhow, Context, Result};
4 | use argp::FromArgs;
5 | use typed_path::Utf8NativePathBuf;
6 |
7 | use crate::{
8 | util::{file::process_rsp, nlzss, path::native_path, IntoCow, ToCow},
9 | vfs::open_file,
10 | };
11 |
12 | #[derive(FromArgs, PartialEq, Debug)]
13 | /// Commands for processing NLZSS-compressed files.
14 | #[argp(subcommand, name = "nlzss")]
15 | pub struct Args {
16 | #[argp(subcommand)]
17 | command: SubCommand,
18 | }
19 |
20 | #[derive(FromArgs, PartialEq, Debug)]
21 | #[argp(subcommand)]
22 | enum SubCommand {
23 | Decompress(DecompressArgs),
24 | }
25 |
26 | #[derive(FromArgs, PartialEq, Eq, Debug)]
27 | /// Decompresses NLZSS-compressed files.
28 | #[argp(subcommand, name = "decompress")]
29 | pub struct DecompressArgs {
30 | #[argp(positional, from_str_fn(native_path))]
31 | /// NLZSS-compressed file(s)
32 | files: Vec,
33 | #[argp(option, short = 'o', from_str_fn(native_path))]
34 | /// Output file (or directory, if multiple files are specified).
35 | /// If not specified, decompresses in-place.
36 | output: Option,
37 | }
38 |
39 | pub fn run(args: Args) -> Result<()> {
40 | match args.command {
41 | SubCommand::Decompress(args) => decompress(args),
42 | }
43 | }
44 |
45 | fn decompress(args: DecompressArgs) -> Result<()> {
46 | let files = process_rsp(&args.files)?;
47 | let single_file = files.len() == 1;
48 | for path in files {
49 | let mut file = open_file(&path, false)?;
50 | let data = nlzss::decompress(file.as_mut())
51 | .map_err(|e| anyhow!("Failed to decompress '{}' with NLZSS: {}", path, e))?;
52 | let out_path = if let Some(output) = &args.output {
53 | if single_file {
54 | output.as_path().to_cow()
55 | } else {
56 | output.join(path.file_name().unwrap()).into_cow()
57 | }
58 | } else {
59 | path.as_path().to_cow()
60 | };
61 | fs::write(out_path.as_ref(), data)
62 | .with_context(|| format!("Failed to write '{out_path}'"))?;
63 | }
64 | Ok(())
65 | }
66 |
--------------------------------------------------------------------------------
/src/cmd/rarc.rs:
--------------------------------------------------------------------------------
1 | use anyhow::Result;
2 | use argp::FromArgs;
3 | use typed_path::Utf8NativePathBuf;
4 |
5 | use super::vfs;
6 | use crate::util::path::native_path;
7 |
8 | #[derive(FromArgs, PartialEq, Debug)]
9 | /// Commands for processing RSO files.
10 | #[argp(subcommand, name = "rarc")]
11 | pub struct Args {
12 | #[argp(subcommand)]
13 | command: SubCommand,
14 | }
15 |
16 | #[derive(FromArgs, PartialEq, Debug)]
17 | #[argp(subcommand)]
18 | enum SubCommand {
19 | List(ListArgs),
20 | Extract(ExtractArgs),
21 | }
22 |
23 | #[derive(FromArgs, PartialEq, Eq, Debug)]
24 | /// Views RARC file information.
25 | #[argp(subcommand, name = "list")]
26 | pub struct ListArgs {
27 | #[argp(positional, from_str_fn(native_path))]
28 | /// RARC file
29 | file: Utf8NativePathBuf,
30 | #[argp(switch, short = 's')]
31 | /// Only print filenames.
32 | short: bool,
33 | }
34 |
35 | #[derive(FromArgs, PartialEq, Eq, Debug)]
36 | /// Extracts RARC file contents.
37 | #[argp(subcommand, name = "extract")]
38 | pub struct ExtractArgs {
39 | #[argp(positional, from_str_fn(native_path))]
40 | /// RARC file
41 | file: Utf8NativePathBuf,
42 | #[argp(option, short = 'o', from_str_fn(native_path))]
43 | /// output directory
44 | output: Option,
45 | #[argp(switch)]
46 | /// Do not decompress files when copying.
47 | no_decompress: bool,
48 | #[argp(switch, short = 'q')]
49 | /// Quiet output. Don't print anything except errors.
50 | quiet: bool,
51 | }
52 |
53 | pub fn run(args: Args) -> Result<()> {
54 | match args.command {
55 | SubCommand::List(c_args) => list(c_args),
56 | SubCommand::Extract(c_args) => extract(c_args),
57 | }
58 | }
59 |
60 | fn list(args: ListArgs) -> Result<()> {
61 | let path = Utf8NativePathBuf::from(format!("{}:", args.file));
62 | vfs::ls(vfs::LsArgs { path, short: args.short, recursive: true })
63 | }
64 |
65 | fn extract(args: ExtractArgs) -> Result<()> {
66 | let path = Utf8NativePathBuf::from(format!("{}:", args.file));
67 | let output = args.output.unwrap_or_else(|| Utf8NativePathBuf::from("."));
68 | vfs::cp(vfs::CpArgs {
69 | paths: vec![path, output],
70 | no_decompress: args.no_decompress,
71 | quiet: args.quiet,
72 | })
73 | }
74 |
--------------------------------------------------------------------------------
/src/cmd/u8_arc.rs:
--------------------------------------------------------------------------------
1 | use anyhow::Result;
2 | use argp::FromArgs;
3 | use typed_path::Utf8NativePathBuf;
4 |
5 | use super::vfs;
6 | use crate::util::path::native_path;
7 |
8 | #[derive(FromArgs, PartialEq, Debug)]
9 | /// Commands for processing U8 (arc) files.
10 | #[argp(subcommand, name = "u8")]
11 | pub struct Args {
12 | #[argp(subcommand)]
13 | command: SubCommand,
14 | }
15 |
16 | #[derive(FromArgs, PartialEq, Debug)]
17 | #[argp(subcommand)]
18 | enum SubCommand {
19 | List(ListArgs),
20 | Extract(ExtractArgs),
21 | }
22 |
23 | #[derive(FromArgs, PartialEq, Eq, Debug)]
24 | /// Views U8 (arc) file information.
25 | #[argp(subcommand, name = "list")]
26 | pub struct ListArgs {
27 | #[argp(positional, from_str_fn(native_path))]
28 | /// U8 (arc) file
29 | file: Utf8NativePathBuf,
30 | #[argp(switch, short = 's')]
31 | /// Only print filenames.
32 | short: bool,
33 | }
34 |
35 | #[derive(FromArgs, PartialEq, Eq, Debug)]
36 | /// Extracts U8 (arc) file contents.
37 | #[argp(subcommand, name = "extract")]
38 | pub struct ExtractArgs {
39 | #[argp(positional, from_str_fn(native_path))]
40 | /// U8 (arc) file
41 | file: Utf8NativePathBuf,
42 | #[argp(option, short = 'o', from_str_fn(native_path))]
43 | /// output directory
44 | output: Option,
45 | #[argp(switch)]
46 | /// Do not decompress files when copying.
47 | no_decompress: bool,
48 | #[argp(switch, short = 'q')]
49 | /// Quiet output. Don't print anything except errors.
50 | quiet: bool,
51 | }
52 |
53 | pub fn run(args: Args) -> Result<()> {
54 | match args.command {
55 | SubCommand::List(c_args) => list(c_args),
56 | SubCommand::Extract(c_args) => extract(c_args),
57 | }
58 | }
59 |
60 | fn list(args: ListArgs) -> Result<()> {
61 | let path = Utf8NativePathBuf::from(format!("{}:", args.file));
62 | vfs::ls(vfs::LsArgs { path, short: args.short, recursive: true })
63 | }
64 |
65 | fn extract(args: ExtractArgs) -> Result<()> {
66 | let path = Utf8NativePathBuf::from(format!("{}:", args.file));
67 | let output = args.output.unwrap_or_else(|| Utf8NativePathBuf::from("."));
68 | vfs::cp(vfs::CpArgs {
69 | paths: vec![path, output],
70 | no_decompress: args.no_decompress,
71 | quiet: args.quiet,
72 | })
73 | }
74 |
--------------------------------------------------------------------------------
/src/cmd/wad.rs:
--------------------------------------------------------------------------------
1 | use anyhow::Result;
2 | use argp::FromArgs;
3 | use size::Size;
4 | use typed_path::Utf8NativePathBuf;
5 |
6 | use crate::{
7 | cmd::vfs,
8 | util::{
9 | path::native_path,
10 | wad::{process_wad, verify_wad},
11 | },
12 | vfs::open_file,
13 | };
14 |
15 | #[derive(FromArgs, PartialEq, Debug)]
16 | /// Commands for processing Wii WAD files.
17 | #[argp(subcommand, name = "wad")]
18 | pub struct Args {
19 | #[argp(subcommand)]
20 | command: SubCommand,
21 | }
22 |
23 | #[derive(FromArgs, PartialEq, Debug)]
24 | #[argp(subcommand)]
25 | enum SubCommand {
26 | Extract(ExtractArgs),
27 | Info(InfoArgs),
28 | Verify(VerifyArgs),
29 | }
30 |
31 | #[derive(FromArgs, PartialEq, Eq, Debug)]
32 | /// Extracts WAD file contents.
33 | #[argp(subcommand, name = "extract")]
34 | pub struct ExtractArgs {
35 | #[argp(positional, from_str_fn(native_path))]
36 | /// WAD file
37 | file: Utf8NativePathBuf,
38 | #[argp(option, short = 'o', from_str_fn(native_path))]
39 | /// output directory
40 | output: Option,
41 | #[argp(switch)]
42 | /// Do not decompress files when copying.
43 | no_decompress: bool,
44 | #[argp(switch, short = 'q')]
45 | /// Quiet output. Don't print anything except errors.
46 | quiet: bool,
47 | }
48 |
49 | #[derive(FromArgs, PartialEq, Eq, Debug)]
50 | /// Views WAD file information.
51 | #[argp(subcommand, name = "info")]
52 | pub struct InfoArgs {
53 | #[argp(positional, from_str_fn(native_path))]
54 | /// WAD file
55 | file: Utf8NativePathBuf,
56 | }
57 |
58 | #[derive(FromArgs, PartialEq, Eq, Debug)]
59 | /// Verifies WAD file integrity.
60 | #[argp(subcommand, name = "verify")]
61 | pub struct VerifyArgs {
62 | #[argp(positional, from_str_fn(native_path))]
63 | /// WAD file
64 | file: Utf8NativePathBuf,
65 | }
66 |
67 | pub fn run(args: Args) -> Result<()> {
68 | match args.command {
69 | SubCommand::Info(c_args) => info(c_args),
70 | SubCommand::Verify(c_args) => verify(c_args),
71 | SubCommand::Extract(c_args) => extract(c_args),
72 | }
73 | }
74 |
75 | fn info(args: InfoArgs) -> Result<()> {
76 | let mut file = open_file(&args.file, true)?;
77 | let wad = process_wad(file.as_mut())?;
78 | println!("Title ID: {}", hex::encode(wad.ticket().title_id));
79 | println!("Title key: {}", hex::encode(wad.title_key));
80 | println!("Fake signed: {}", wad.fake_signed);
81 | for content in wad.contents() {
82 | println!(
83 | "Content {:08x}: Offset {:#X}, size {}",
84 | content.content_index.get(),
85 | wad.content_offset(content.content_index.get()),
86 | Size::from_bytes(content.size.get())
87 | );
88 | }
89 | Ok(())
90 | }
91 |
92 | fn verify(args: VerifyArgs) -> Result<()> {
93 | let mut file = open_file(&args.file, true)?;
94 | let wad = process_wad(file.as_mut())?;
95 | verify_wad(&wad, file.as_mut())?;
96 | println!("Verification successful");
97 | Ok(())
98 | }
99 |
100 | fn extract(args: ExtractArgs) -> Result<()> {
101 | let path = Utf8NativePathBuf::from(format!("{}:", args.file));
102 | let output = args.output.unwrap_or_else(|| Utf8NativePathBuf::from("."));
103 | vfs::cp(vfs::CpArgs {
104 | paths: vec![path, output],
105 | no_decompress: args.no_decompress,
106 | quiet: args.quiet,
107 | })
108 | }
109 |
--------------------------------------------------------------------------------
/src/cmd/yay0.rs:
--------------------------------------------------------------------------------
1 | use std::fs;
2 |
3 | use anyhow::{Context, Result};
4 | use argp::FromArgs;
5 | use typed_path::Utf8NativePathBuf;
6 |
7 | use crate::{
8 | util::{
9 | file::process_rsp,
10 | ncompress::{compress_yay0, decompress_yay0},
11 | path::native_path,
12 | IntoCow, ToCow,
13 | },
14 | vfs::open_file,
15 | };
16 |
17 | #[derive(FromArgs, PartialEq, Debug)]
18 | /// Commands for processing YAY0-compressed files.
19 | #[argp(subcommand, name = "yay0")]
20 | pub struct Args {
21 | #[argp(subcommand)]
22 | command: SubCommand,
23 | }
24 |
25 | #[derive(FromArgs, PartialEq, Debug)]
26 | #[argp(subcommand)]
27 | enum SubCommand {
28 | Compress(CompressArgs),
29 | Decompress(DecompressArgs),
30 | }
31 |
32 | #[derive(FromArgs, PartialEq, Eq, Debug)]
33 | /// Compresses files using YAY0.
34 | #[argp(subcommand, name = "compress")]
35 | pub struct CompressArgs {
36 | #[argp(positional, from_str_fn(native_path))]
37 | /// Files to compress
38 | files: Vec,
39 | #[argp(option, short = 'o', from_str_fn(native_path))]
40 | /// Output file (or directory, if multiple files are specified).
41 | /// If not specified, compresses in-place.
42 | output: Option,
43 | }
44 |
45 | #[derive(FromArgs, PartialEq, Eq, Debug)]
46 | /// Decompresses YAY0-compressed files.
47 | #[argp(subcommand, name = "decompress")]
48 | pub struct DecompressArgs {
49 | #[argp(positional, from_str_fn(native_path))]
50 | /// YAY0-compressed files
51 | files: Vec,
52 | #[argp(option, short = 'o', from_str_fn(native_path))]
53 | /// Output file (or directory, if multiple files are specified).
54 | /// If not specified, decompresses in-place.
55 | output: Option,
56 | }
57 |
58 | pub fn run(args: Args) -> Result<()> {
59 | match args.command {
60 | SubCommand::Compress(args) => compress(args),
61 | SubCommand::Decompress(args) => decompress(args),
62 | }
63 | }
64 |
65 | fn compress(args: CompressArgs) -> Result<()> {
66 | let files = process_rsp(&args.files)?;
67 | let single_file = files.len() == 1;
68 | for path in files {
69 | let data = {
70 | let mut file = open_file(&path, false)?;
71 | compress_yay0(file.map()?)
72 | };
73 | let out_path = if let Some(output) = &args.output {
74 | if single_file {
75 | output.as_path().to_cow()
76 | } else {
77 | output.join(path.file_name().unwrap()).into_cow()
78 | }
79 | } else {
80 | path.as_path().to_cow()
81 | };
82 | fs::write(out_path.as_ref(), data)
83 | .with_context(|| format!("Failed to write '{out_path}'"))?;
84 | }
85 | Ok(())
86 | }
87 |
88 | fn decompress(args: DecompressArgs) -> Result<()> {
89 | let files = process_rsp(&args.files)?;
90 | let single_file = files.len() == 1;
91 | for path in files {
92 | let data = {
93 | let mut file = open_file(&path, true)?;
94 | decompress_yay0(file.map()?)
95 | .with_context(|| format!("Failed to decompress '{path}' using Yay0"))?
96 | };
97 | let out_path = if let Some(output) = &args.output {
98 | if single_file {
99 | output.as_path().to_cow()
100 | } else {
101 | output.join(path.file_name().unwrap()).into_cow()
102 | }
103 | } else {
104 | path.as_path().to_cow()
105 | };
106 | fs::write(out_path.as_ref(), data)
107 | .with_context(|| format!("Failed to write '{out_path}'"))?;
108 | }
109 | Ok(())
110 | }
111 |
--------------------------------------------------------------------------------
/src/cmd/yaz0.rs:
--------------------------------------------------------------------------------
1 | use std::fs;
2 |
3 | use anyhow::{Context, Result};
4 | use argp::FromArgs;
5 | use typed_path::Utf8NativePathBuf;
6 |
7 | use crate::{
8 | util::{
9 | file::process_rsp,
10 | ncompress::{compress_yaz0, decompress_yaz0},
11 | path::native_path,
12 | IntoCow, ToCow,
13 | },
14 | vfs::open_file,
15 | };
16 |
17 | #[derive(FromArgs, PartialEq, Debug)]
18 | /// Commands for processing YAZ0-compressed files.
19 | #[argp(subcommand, name = "yaz0")]
20 | pub struct Args {
21 | #[argp(subcommand)]
22 | command: SubCommand,
23 | }
24 |
25 | #[derive(FromArgs, PartialEq, Debug)]
26 | #[argp(subcommand)]
27 | enum SubCommand {
28 | Compress(CompressArgs),
29 | Decompress(DecompressArgs),
30 | }
31 |
32 | #[derive(FromArgs, PartialEq, Eq, Debug)]
33 | /// Compresses files using YAZ0.
34 | #[argp(subcommand, name = "compress")]
35 | pub struct CompressArgs {
36 | #[argp(positional, from_str_fn(native_path))]
37 | /// Files to compress
38 | files: Vec,
39 | #[argp(option, short = 'o', from_str_fn(native_path))]
40 | /// Output file (or directory, if multiple files are specified).
41 | /// If not specified, compresses in-place.
42 | output: Option,
43 | }
44 |
45 | #[derive(FromArgs, PartialEq, Eq, Debug)]
46 | /// Decompresses YAZ0-compressed files.
47 | #[argp(subcommand, name = "decompress")]
48 | pub struct DecompressArgs {
49 | #[argp(positional, from_str_fn(native_path))]
50 | /// YAZ0-compressed files
51 | files: Vec,
52 | #[argp(option, short = 'o', from_str_fn(native_path))]
53 | /// Output file (or directory, if multiple files are specified).
54 | /// If not specified, decompresses in-place.
55 | output: Option,
56 | }
57 |
58 | pub fn run(args: Args) -> Result<()> {
59 | match args.command {
60 | SubCommand::Compress(args) => compress(args),
61 | SubCommand::Decompress(args) => decompress(args),
62 | }
63 | }
64 |
65 | fn compress(args: CompressArgs) -> Result<()> {
66 | let files = process_rsp(&args.files)?;
67 | let single_file = files.len() == 1;
68 | for path in files {
69 | let data = {
70 | let mut file = open_file(&path, false)?;
71 | compress_yaz0(file.map()?)
72 | };
73 | let out_path = if let Some(output) = &args.output {
74 | if single_file {
75 | output.as_path().to_cow()
76 | } else {
77 | output.join(path.file_name().unwrap()).into_cow()
78 | }
79 | } else {
80 | path.as_path().to_cow()
81 | };
82 | fs::write(out_path.as_ref(), data)
83 | .with_context(|| format!("Failed to write '{out_path}'"))?;
84 | }
85 | Ok(())
86 | }
87 |
88 | fn decompress(args: DecompressArgs) -> Result<()> {
89 | let files = process_rsp(&args.files)?;
90 | let single_file = files.len() == 1;
91 | for path in files {
92 | let data = {
93 | let mut file = open_file(&path, false)?;
94 | decompress_yaz0(file.map()?)
95 | .with_context(|| format!("Failed to decompress '{path}' using Yaz0"))?
96 | };
97 | let out_path = if let Some(output) = &args.output {
98 | if single_file {
99 | output.as_path().to_cow()
100 | } else {
101 | output.join(path.file_name().unwrap()).into_cow()
102 | }
103 | } else {
104 | path.as_path().to_cow()
105 | };
106 | fs::write(out_path.as_ref(), data)
107 | .with_context(|| format!("Failed to write '{out_path}'"))?;
108 | }
109 | Ok(())
110 | }
111 |
--------------------------------------------------------------------------------
/src/obj/addresses.rs:
--------------------------------------------------------------------------------
1 | use crate::analysis::cfa::SectionAddress;
2 |
3 | /// A collection of address ranges.
4 | /// Slow to insert, but fast to check if an address is contained in any of the ranges.
5 | #[derive(Debug, Clone)]
6 | pub struct AddressRanges {
7 | /// (start, end) pairs of addresses.
8 | inner: Vec<(SectionAddress, u32)>,
9 | }
10 |
11 | impl Default for AddressRanges {
12 | fn default() -> Self { Self::new() }
13 | }
14 |
15 | impl AddressRanges {
16 | #[inline]
17 | pub fn new() -> Self { Self { inner: vec![] } }
18 |
19 | pub fn insert(&mut self, start: SectionAddress, end: SectionAddress) {
20 | debug_assert_eq!(
21 | start.section, end.section,
22 | "AddressIntervals::insert: start and end must be in the same section"
23 | );
24 | // TODO: Handle overlapping ranges?
25 | match self.inner.binary_search_by_key(&start, |&(start, _)| start) {
26 | Ok(pos) => {
27 | let (_, end_ref) = &mut self.inner[pos];
28 | *end_ref = end.address.max(*end_ref);
29 | }
30 | Err(pos) => self.inner.insert(pos, (start, end.address)),
31 | }
32 | }
33 |
34 | pub fn contains(&self, address: SectionAddress) -> bool {
35 | let pos = match self.inner.binary_search_by_key(&address, |&(start, _)| start) {
36 | Ok(_) => return true,
37 | Err(pos) => pos,
38 | };
39 | if pos == 0 {
40 | return false;
41 | }
42 | let (start, end) = &self.inner[pos - 1];
43 | start.section == address.section
44 | && address.address >= start.address
45 | && address.address < *end
46 | }
47 | }
48 |
49 | #[cfg(test)]
50 | mod tests {
51 | use super::*;
52 |
53 | #[test]
54 | fn test_contains() {
55 | let mut intervals = AddressRanges::new();
56 | intervals.insert(SectionAddress { section: 0, address: 0x80000000 }, SectionAddress {
57 | section: 0,
58 | address: 0x80000004,
59 | });
60 | intervals.insert(SectionAddress { section: 0, address: 0x80000008 }, SectionAddress {
61 | section: 0,
62 | address: 0x8000000C,
63 | });
64 | intervals.insert(SectionAddress { section: 12, address: 0x80004000 }, SectionAddress {
65 | section: 12,
66 | address: 0x80004004,
67 | });
68 | intervals.insert(SectionAddress { section: 12, address: 0x80004008 }, SectionAddress {
69 | section: 12,
70 | address: 0x8000400C,
71 | });
72 |
73 | assert!(intervals.contains(SectionAddress { section: 0, address: 0x80000000 }));
74 | assert!(intervals.contains(SectionAddress { section: 0, address: 0x80000001 }));
75 | assert!(intervals.contains(SectionAddress { section: 0, address: 0x80000002 }));
76 | assert!(intervals.contains(SectionAddress { section: 0, address: 0x80000003 }));
77 | assert!(!intervals.contains(SectionAddress { section: 0, address: 0x80000004 }));
78 | assert!(!intervals.contains(SectionAddress { section: 0, address: 0x80000005 }));
79 | assert!(!intervals.contains(SectionAddress { section: 0, address: 0x80000006 }));
80 | assert!(!intervals.contains(SectionAddress { section: 0, address: 0x80000007 }));
81 | assert!(intervals.contains(SectionAddress { section: 0, address: 0x80000008 }));
82 | assert!(intervals.contains(SectionAddress { section: 0, address: 0x80000009 }));
83 | assert!(intervals.contains(SectionAddress { section: 0, address: 0x8000000A }));
84 | assert!(intervals.contains(SectionAddress { section: 0, address: 0x8000000B }));
85 |
86 | assert!(intervals.contains(SectionAddress { section: 12, address: 0x80004000 }));
87 | assert!(intervals.contains(SectionAddress { section: 12, address: 0x80004001 }));
88 | assert!(intervals.contains(SectionAddress { section: 12, address: 0x80004002 }));
89 | assert!(intervals.contains(SectionAddress { section: 12, address: 0x80004003 }));
90 | assert!(!intervals.contains(SectionAddress { section: 12, address: 0x80004004 }));
91 | assert!(!intervals.contains(SectionAddress { section: 12, address: 0x80004005 }));
92 | assert!(!intervals.contains(SectionAddress { section: 12, address: 0x80004006 }));
93 | assert!(!intervals.contains(SectionAddress { section: 12, address: 0x80004007 }));
94 | assert!(intervals.contains(SectionAddress { section: 12, address: 0x80004008 }));
95 | assert!(intervals.contains(SectionAddress { section: 12, address: 0x80004009 }));
96 | assert!(intervals.contains(SectionAddress { section: 12, address: 0x8000400A }));
97 | assert!(intervals.contains(SectionAddress { section: 12, address: 0x8000400B }));
98 | assert!(!intervals.contains(SectionAddress { section: 12, address: 0x8000400C }));
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/src/obj/splits.rs:
--------------------------------------------------------------------------------
1 | use std::{cmp::max, collections::BTreeMap, ops::RangeBounds};
2 |
3 | use anyhow::{anyhow, Result};
4 | use itertools::Itertools;
5 |
6 | use crate::{
7 | obj::{ObjInfo, ObjSection, SectionIndex},
8 | util::split::default_section_align,
9 | };
10 |
11 | /// Marks a split point within a section.
12 | #[derive(Debug, Clone, Eq, PartialEq)]
13 | pub struct ObjSplit {
14 | pub unit: String,
15 | pub end: u32,
16 | pub align: Option,
17 | /// Whether this is a part of common BSS.
18 | pub common: bool,
19 | /// Generated, replaceable by user.
20 | pub autogenerated: bool,
21 | /// Skip when emitting the split object.
22 | pub skip: bool,
23 | /// Override the section name in the split object. (e.g. `.ctors$10`)
24 | pub rename: Option,
25 | }
26 |
27 | impl ObjSplit {
28 | pub fn alignment(
29 | &self,
30 | obj: &ObjInfo,
31 | section_index: SectionIndex,
32 | section: &ObjSection,
33 | split_addr: u32,
34 | ) -> u32 {
35 | self.align.unwrap_or_else(|| {
36 | let default_align = default_section_align(section) as u32;
37 | max(
38 | // Maximum alignment of any symbol in this split
39 | obj.symbols
40 | .for_section_range(section_index, split_addr..self.end)
41 | .filter(|&(_, s)| s.size_known && s.size > 0)
42 | .filter_map(|(_, s)| s.align)
43 | .max()
44 | .unwrap_or(default_align),
45 | default_align,
46 | )
47 | })
48 | }
49 | }
50 |
51 | /// Splits within a section.
52 | #[derive(Debug, Clone, Default)]
53 | pub struct ObjSplits {
54 | splits: BTreeMap>,
55 | }
56 |
57 | impl ObjSplits {
58 | pub fn iter(&self) -> impl DoubleEndedIterator- {
59 | self.splits.iter().flat_map(|(addr, v)| v.iter().map(move |u| (*addr, u)))
60 | }
61 |
62 | pub fn iter_mut(&mut self) -> impl DoubleEndedIterator
- {
63 | self.splits.iter_mut().flat_map(|(addr, v)| v.iter_mut().map(move |u| (*addr, u)))
64 | }
65 |
66 | pub fn has_split_at(&self, address: u32) -> bool { self.splits.contains_key(&address) }
67 |
68 | /// Locate an existing split for the given address.
69 | pub fn for_address(&self, address: u32) -> Option<(u32, &ObjSplit)> {
70 | match self.for_range(..=address).next_back() {
71 | Some((addr, split)) if split.end == 0 || split.end > address => Some((addr, split)),
72 | _ => None,
73 | }
74 | }
75 |
76 | pub fn at_mut(&mut self, address: u32) -> Option<&mut ObjSplit> {
77 | match self.for_range_mut(..=address).next_back() {
78 | Some((_, split)) if split.end == 0 || split.end > address => Some(split),
79 | _ => None,
80 | }
81 | }
82 |
83 | /// Locate existing splits within the given address range.
84 | pub fn for_range(&self, range: R) -> impl DoubleEndedIterator
-
85 | where R: RangeBounds {
86 | self.splits.range(range).flat_map(|(addr, v)| v.iter().map(move |u| (*addr, u)))
87 | }
88 |
89 | /// Locate existing splits within the given address range.
90 | pub fn for_range_mut(
91 | &mut self,
92 | range: R,
93 | ) -> impl DoubleEndedIterator
-
94 | where
95 | R: RangeBounds,
96 | {
97 | self.splits.range_mut(range).flat_map(|(addr, v)| v.iter_mut().map(move |u| (*addr, u)))
98 | }
99 |
100 | pub fn for_unit(&self, unit: &str) -> Result