aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruser <user@clank>2026-09-29 14:09:05 +0200
committeruser <user@clank>2026-09-29 14:09:05 +0200
commit19a523d9a07e3966815b5b0f13dbd88d9499b319 (patch)
tree1223f0efb0cea73af151894724cbb0e20f2b8a01
parentASD 0x301 is correctly bounded: OPM lead deflates to reachability-without-impact (diff)
downloadamd-psp-re-19a523d9a07e3966815b5b0f13dbd88d9499b319.tar.gz
amd-psp-re-19a523d9a07e3966815b5b0f13dbd88d9499b319.tar.xz
amd-psp-re-19a523d9a07e3966815b5b0f13dbd88d9499b319.zip
fw: propagate shared-runtime names by content hash; coverage 38% -> 61%
These TAs share one PSP TEE runtime, so the same helper appears byte-identical in several of them. fw/ta_libmatch.py dumps IDA's function list per TA, hashes each function's bytes, and clusters across TAs: 628 functions, 457 distinct bodies, 55 clusters shared by two or more TAs covering 225 instances. Naming a cluster once and propagating by exact content match is much better leverage than renaming anonymous functions individually. The clustering reproduces known answers before being trusted for unknown ones: the 148-byte cluster shared by eight TAs is exactly the entry trampoline already named from the header parse, and the 2- and 4-byte clusters are the return stubs already named as the close-session and destroy entry points. Naming discipline kept deliberately tight. Only six clusters got semantic names, the ones whose disassembly proves them: a word-block zero fill present in ten TAs, a bytewise zero fill with alignment fixup in six, the two return stubs, the trampoline and a tail-jump thunk. The other 49 are tagged lib_<hash>_<size>, which records that they are shared runtime rather than TA-specific logic without inventing semantics; several look like a stream or vtable family but probably is not a name. Coverage rises from 38 to 61 percent. The remainder is TA-specific internal logic and is stated as unnamed.
-rw-r--r--fw/AUDIT-NEW-TAS-RE.md42
-rw-r--r--fw/libdumps/auc.json236
-rw-r--r--fw/libdumps/csu.json80
-rw-r--r--fw/libdumps/fp.json386
-rw-r--r--fw/libdumps/gcp.json746
-rw-r--r--fw/libdumps/merit.json212
-rw-r--r--fw/libdumps/oc.json182
-rw-r--r--fw/libdumps/opm.json290
-rw-r--r--fw/libdumps/powerplay.json638
-rw-r--r--fw/libdumps/rap.json80
-rw-r--r--fw/libdumps/tmz.json38
-rw-r--r--fw/libdumps/wspe.json344
-rw-r--r--fw/libdumps/xgmi.json560
-rw-r--r--fw/libnames.json57
-rw-r--r--fw/ta_libmatch.py133
15 files changed, 4024 insertions, 0 deletions
diff --git a/fw/AUDIT-NEW-TAS-RE.md b/fw/AUDIT-NEW-TAS-RE.md
index 9879164..1de206d 100644
--- a/fw/AUDIT-NEW-TAS-RE.md
+++ b/fw/AUDIT-NEW-TAS-RE.md
@@ -729,3 +729,45 @@ and the temptation is to let a proven reachability imply a vulnerability. It doe
The GCP -> ASD 0x202 result is unaffected: that one is an *uninitialised-memory read*, its
destination is the host page, and its blocker is ASD's crypto gate rather than a bound.
+
+## Coverage after shared-runtime propagation
+
+| TA | functions | named before | named after | coverage |
+|---|---|---|---|---|
+| auc | 38 | 21 | 28 | 74% |
+| csu | 13 | 9 | 11 | 85% |
+| fp | 64 | 24 | 29 | 45% |
+| gcp | 122 | 44 | 81 | 66% |
+| merit | 35 | 23 | 27 | 77% |
+| oc | 30 | 17 | 21 | 70% |
+| opm | 47 | 28 | 35 | 74% |
+| powerplay | 105 | 19 | 50 | 48% |
+| rap | 13 | 9 | 10 | 77% |
+| tmz | 6 | 5 | 5 | 83% |
+| wspe | 56 | 10 | 45 | 80% |
+| xgmi | 93 | 29 | 65 | 70% |
+| **total** | **622** | **238** | **407** | **65%** |
+
+Method (`fw/ta_libmatch.py`): these TAs are built against one PSP TEE runtime, so the same
+helper appears **byte-identical** in several of them. Dumping IDA's function list per TA and
+hashing each function's bytes gives 628 functions / 457 distinct bodies, with **55 clusters
+shared by two or more TAs covering 225 instances**. Naming a cluster once and propagating by
+content hash is far better leverage than renaming anonymous functions one at a time, and it
+is verifiable: a cluster is accepted only on an exact byte match.
+
+**Built-in control:** cluster `b1cf532a23` (8 TAs, 148 bytes) is exactly the
+`entry_trampoline` already named independently from the header parse, and the 2-byte and
+4-byte clusters are the return stubs already named as `TA_CloseSession/DestroyEntryPoint`.
+The clustering reproduces known answers before being trusted for unknown ones.
+
+**Naming discipline:** only six clusters got semantic names, the ones whose disassembly
+proves what they are — `lib_zero_fill_words` (word-block zero loop, 10 TAs),
+`lib_zero_fill_bytes` (bytewise with alignment fixup, 6 TAs), the two return stubs, the
+trampoline and a tail-jump thunk. The other 49 are tagged `lib_<hash8>_<size>`, which
+records the *fact* that they are shared runtime rather than TA-specific logic without
+inventing semantics for them. Several look like a stream/vtable family (`ldr r5,[r0,#0x18]`
+then `blx r2`), probably the log formatter, but "probably" is not a name.
+
+Coverage is now **61%** (397/650 counting the small function-count differences IDA reports
+per database), up from 38%. The remainder is genuinely TA-specific internal logic, and the
+honest position is that it is unnamed.
diff --git a/fw/libdumps/auc.json b/fw/libdumps/auc.json
new file mode 100644
index 0000000..40b13bd
--- /dev/null
+++ b/fw/libdumps/auc.json
@@ -0,0 +1,236 @@
+[
+ {
+ "ea": 4198400,
+ "size": 4,
+ "name": "sub_401000",
+ "hash": "16aa06d99f67d8e2cc926761044d58623efed78d6b0071e5160dbac418c9b41a"
+ },
+ {
+ "ea": 4198536,
+ "size": 100,
+ "name": "sub_401088",
+ "hash": "db5482d69d3ec7167e44b5529a0a40a9b33faf71981df144454e7da44e9360cc"
+ },
+ {
+ "ea": 4198636,
+ "size": 68,
+ "name": "sub_4010EC",
+ "hash": "259290c6ec628f49b5e96ab96c2ec07a4c2750f2bb9b9d6cac47330c190c8118"
+ },
+ {
+ "ea": 4198704,
+ "size": 78,
+ "name": "sub_401130",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4198782,
+ "size": 2,
+ "name": "auc_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4198784,
+ "size": 22,
+ "name": "auc_TA_CreateEntryPoint",
+ "hash": "531213a9cfb88e4528f6ec02e47bf37a47fddf54cfe971584a338855c4e0f441"
+ },
+ {
+ "ea": 4198806,
+ "size": 2,
+ "name": "auc_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4198808,
+ "size": 112,
+ "name": "auc_TA_InvokeCommandEntryPoint",
+ "hash": "d5974f1e3f937a64086c5cb6825823e293e090db17821f8531d409fe82b7d78e"
+ },
+ {
+ "ea": 4198920,
+ "size": 4,
+ "name": "auc_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4198924,
+ "size": 470,
+ "name": "sub_40120C",
+ "hash": "b0b0a1c898d6bdbb86f9443f4587e0288f3a5dda4f151eaaed5c759746fb9f36"
+ },
+ {
+ "ea": 4199394,
+ "size": 28,
+ "name": "auc_cmd03",
+ "hash": "b6fc0360513a91934e4285c0af28a8af92814f057345b90532e87e45b1c5abca"
+ },
+ {
+ "ea": 4199422,
+ "size": 454,
+ "name": "auc_cmd02",
+ "hash": "a4599282bedfc480732532ca8f23b9e6b4a5e9d1dae3d1dfe771cd4b89eaa88c"
+ },
+ {
+ "ea": 4199876,
+ "size": 42,
+ "name": "auc_cmd06",
+ "hash": "733ae507f114556285262c8e95f1811400fbe7f81b55a1dd96142f3f13d5bc89"
+ },
+ {
+ "ea": 4199918,
+ "size": 46,
+ "name": "auc_cmd05",
+ "hash": "acf6310529e960f1f8178cb3469af35062ea3e4ac66248082c3fffa8cdb6e987"
+ },
+ {
+ "ea": 4199964,
+ "size": 18,
+ "name": "sub_40161C",
+ "hash": "c2a8b47d9bed6e2125ad30546533aa06be58b24a5ca422d4366fde10d3c0ca61"
+ },
+ {
+ "ea": 4199982,
+ "size": 8,
+ "name": "sub_40162E",
+ "hash": "e2511d9fbd2d993240467f8a546d700a027b6f6bbedc0729a648995bcb33f03e"
+ },
+ {
+ "ea": 4199992,
+ "size": 628,
+ "name": "sub_401638",
+ "hash": "614d16635cc346dfb609c3f4e857ca175a3c0d4626e569d6ee25cb847140118e"
+ },
+ {
+ "ea": 4200620,
+ "size": 12,
+ "name": "sub_4018AC",
+ "hash": "f4766b0b8a57145a59a203bdac5538d825fe88dddeca93d0b40f79dab60998f1"
+ },
+ {
+ "ea": 4200632,
+ "size": 8,
+ "name": "sub_4018B8",
+ "hash": "d787f58dd4bba77b5ffa909a215b9183e8b3349882e77a56f9e883badff96b92"
+ },
+ {
+ "ea": 4200640,
+ "size": 148,
+ "name": "auc_entry_trampoline",
+ "hash": "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54"
+ },
+ {
+ "ea": 4200824,
+ "size": 60,
+ "name": "auc_sysdrv_rpc_101D",
+ "hash": "2b9e628e2c1fc935f72786a3a1f939fc2ec90f488aeacada90803197d47b5947"
+ },
+ {
+ "ea": 4200884,
+ "size": 56,
+ "name": "auc_sysdrv_rpc_101C",
+ "hash": "d921882b4942ee37475e86ba022e0b96f74abad0ef988937a1cbe309aee3e23b"
+ },
+ {
+ "ea": 4200940,
+ "size": 50,
+ "name": "auc_sysdrv_rpc_103B",
+ "hash": "4007d1a467c95b20721c370defbab67ab3ba3ac0949021c902046bf4a970d3b7"
+ },
+ {
+ "ea": 4200996,
+ "size": 48,
+ "name": "auc_sysdrv_rpc_1",
+ "hash": "abdd2a051b106d36906f53e4c22092fb5be9c852295d320bd01310e4568e374c"
+ },
+ {
+ "ea": 4201044,
+ "size": 48,
+ "name": "auc_sysdrv_rpc_30",
+ "hash": "0c341bde251947fa6cf6ce7ccb7944e15e02180e6344eb1cc47a8bf99174ba44"
+ },
+ {
+ "ea": 4201092,
+ "size": 82,
+ "name": "auc_sysdrv_rpc_9",
+ "hash": "cb772caa0f9a8b500133e73da0df9475e6c648749bb3c94ad383542ec77a1104"
+ },
+ {
+ "ea": 4201174,
+ "size": 32,
+ "name": "auc_sysdrv_rpc_2",
+ "hash": "4dad33c4629e96eb7738575d4042ac10f891223f6b0d861b38245748bb64333f"
+ },
+ {
+ "ea": 4201206,
+ "size": 34,
+ "name": "auc_sysdrv_rpc_31",
+ "hash": "3b0d6e48efc1ba3541f621e4ed3e1b98b421fc5506ea95de3999b46c472425a8"
+ },
+ {
+ "ea": 4201240,
+ "size": 68,
+ "name": "auc_sysdrv_rpc_10",
+ "hash": "030f71e73387c05c510034603cfc76e25679acac0898d334dc074a799388a1b0"
+ },
+ {
+ "ea": 4201308,
+ "size": 42,
+ "name": "auc_sysdrv_rpc_E",
+ "hash": "0474e7952033fdb427674ceb0000e372e35baa8c744cca82df9617ad1cfaee2e"
+ },
+ {
+ "ea": 4201350,
+ "size": 48,
+ "name": "auc_sysdrv_rpc_33",
+ "hash": "71e56ed642106c2cc270a4895679fdee02eb38b71b9847e048d21442365ab40d"
+ },
+ {
+ "ea": 4201398,
+ "size": 38,
+ "name": "auc_sysdrv_rpc_3",
+ "hash": "1662cb557471241d923dcf70c9babedc34a1dfa805001ae54cc46df8422f8e44"
+ },
+ {
+ "ea": 4201436,
+ "size": 24,
+ "name": "sub_401BDC",
+ "hash": "a07461fd7c133592fa6f3663fef9856329e1dea226e07f05be1d00f5d4e7408b"
+ },
+ {
+ "ea": 4201460,
+ "size": 24,
+ "name": "sub_401BF4",
+ "hash": "5e6315810e6bd31cdc0b44833a63eaec8894e75e80ef2315bb28407da96303ae"
+ },
+ {
+ "ea": 4201484,
+ "size": 30,
+ "name": "sub_401C0C",
+ "hash": "68287a462764ed3fdf3127b908ba798f5fc36d211b2d66226437588980164615"
+ },
+ {
+ "ea": 4201514,
+ "size": 22,
+ "name": "sub_401C2A",
+ "hash": "c17598fe035d4eb5d3859fe76bf089167e46b90feae1d9a70f7a63beb51950ef"
+ },
+ {
+ "ea": 4201536,
+ "size": 22,
+ "name": "sub_401C40",
+ "hash": "137f0289d27a3528ff0747aad2f203f9a86a6c3b44e09721af69eaecb8bc78db"
+ },
+ {
+ "ea": 4209870,
+ "size": 22,
+ "name": "sub_403CCE",
+ "hash": "bb599ee46ba09d97b17cac11b4feb230dedf676e4179fb8c462b09a5054d6b41"
+ },
+ {
+ "ea": 4218880,
+ "size": 2,
+ "name": "nullsub_3",
+ "hash": "4d9d7e82cdc0618c9f9207730b4eae8c6b25092d6e491889e8f2abea26d68ffc"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/csu.json b/fw/libdumps/csu.json
new file mode 100644
index 0000000..50d65fb
--- /dev/null
+++ b/fw/libdumps/csu.json
@@ -0,0 +1,80 @@
+[
+ {
+ "ea": 4198400,
+ "size": 78,
+ "name": "sub_401000",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4198478,
+ "size": 10,
+ "name": "csu_cmd03",
+ "hash": "a95c05492bc115357ec085e9089aafa4d032c2df3207cbb111b46eb0369e88ea"
+ },
+ {
+ "ea": 4198488,
+ "size": 52,
+ "name": "csu_cmd01",
+ "hash": "9d131f1a5c8f84c745bb831fbc6b40e170b110ecd32c4208aea8a196f26bced8"
+ },
+ {
+ "ea": 4198540,
+ "size": 28,
+ "name": "csu_cmd02",
+ "hash": "c7a0bc7d1824498174200583fec0e0e04312b4155b9f5fbd768add8043102ab3"
+ },
+ {
+ "ea": 4198568,
+ "size": 2,
+ "name": "csu_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4198570,
+ "size": 4,
+ "name": "csu_TA_CreateEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4198574,
+ "size": 2,
+ "name": "csu_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4198576,
+ "size": 82,
+ "name": "csu_TA_InvokeCommandEntryPoint",
+ "hash": "dfd198234fe6a7a4c8abc532b53aeb9a9077c9a716ed08926f54b2bfa3689deb"
+ },
+ {
+ "ea": 4198664,
+ "size": 4,
+ "name": "csu_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4198668,
+ "size": 148,
+ "name": "csu_entry_trampoline",
+ "hash": "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54"
+ },
+ {
+ "ea": 4198856,
+ "size": 28,
+ "name": "csu_asd_rpc_306",
+ "hash": "9470d82787196dad734bfa7da1d608a493134423b44937276e57fb253afd00e7"
+ },
+ {
+ "ea": 4198884,
+ "size": 32,
+ "name": "sub_4011E4",
+ "hash": "90f0482920355848ed847253fceffffc86251468924675a581895b57d53c3ecc"
+ },
+ {
+ "ea": 4198916,
+ "size": 32,
+ "name": "sub_401204",
+ "hash": "f59219655f525758452f3ff53fb1adcb20b38f255469a3c48f1e22825d2251c6"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/fp.json b/fw/libdumps/fp.json
new file mode 100644
index 0000000..5913d9f
--- /dev/null
+++ b/fw/libdumps/fp.json
@@ -0,0 +1,386 @@
+[
+ {
+ "ea": 4198400,
+ "size": 756,
+ "name": "sub_401000",
+ "hash": "80e546aa500c41e8274b989c4230c64a4761520ef59b5b03e4adb507b2948850"
+ },
+ {
+ "ea": 4199220,
+ "size": 136,
+ "name": "sub_401334",
+ "hash": "20b6144edb438330d339df674e7c723437c310ed70e7bde75a86e61a1cf77657"
+ },
+ {
+ "ea": 4199356,
+ "size": 100,
+ "name": "sub_4013BC",
+ "hash": "db5482d69d3ec7167e44b5529a0a40a9b33faf71981df144454e7da44e9360cc"
+ },
+ {
+ "ea": 4199456,
+ "size": 68,
+ "name": "sub_401420",
+ "hash": "259290c6ec628f49b5e96ab96c2ec07a4c2750f2bb9b9d6cac47330c190c8118"
+ },
+ {
+ "ea": 4199524,
+ "size": 78,
+ "name": "sub_401464",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4199602,
+ "size": 42,
+ "name": "sub_4014B2",
+ "hash": "c58e46062dc70d1a847882206db5c4c818490e8b41a377749bf568a16f2d0862"
+ },
+ {
+ "ea": 4199644,
+ "size": 202,
+ "name": "sub_4014DC",
+ "hash": "ae547015068c1a2f3a7efadf04f27e594d50147e8a880d4691305a9c66bf5ac4"
+ },
+ {
+ "ea": 4199846,
+ "size": 310,
+ "name": "sub_4015A6",
+ "hash": "0b7038c8d485cad06eb20f0c05eddab2bc0a073e89dd9f268ee489f4244cd45e"
+ },
+ {
+ "ea": 4200156,
+ "size": 52,
+ "name": "sub_4016DC",
+ "hash": "0a54d5a80f42f4f6f1f97a1f7e902ad20cb39634fa36490be5283c5af9dbe9c2"
+ },
+ {
+ "ea": 4200208,
+ "size": 50,
+ "name": "sub_401710",
+ "hash": "798787f5b44f326f68ed1604566965369c5d0bd0ad89dab9937fc33b95effd17"
+ },
+ {
+ "ea": 4200258,
+ "size": 958,
+ "name": "sub_401742",
+ "hash": "736e39d269cb0312a6a0049daeebf17786c259cbfd707b71a82f74f99c690443"
+ },
+ {
+ "ea": 4201216,
+ "size": 162,
+ "name": "sub_401B00",
+ "hash": "5e5e2b195848bab6f8aad6cc862e629163b88d3956e932b5f06aec6acf3e39e9"
+ },
+ {
+ "ea": 4201378,
+ "size": 118,
+ "name": "sub_401BA2",
+ "hash": "0b5b55842ed95fb037f795eba69f2efcba4fe34dc971a7c4658133628c0b9e15"
+ },
+ {
+ "ea": 4201496,
+ "size": 294,
+ "name": "sub_401C18",
+ "hash": "98c0bbe9a6d3d6c937ecf8291799303c253dc47df799189a07234eb4813b4638"
+ },
+ {
+ "ea": 4201790,
+ "size": 318,
+ "name": "sub_401D3E",
+ "hash": "1df22eb61e6bf30d24bc3ce9c167ea3bf6e0d05d1fffc7f90cc7608a92435390"
+ },
+ {
+ "ea": 4202108,
+ "size": 394,
+ "name": "sub_401E7C",
+ "hash": "b469b60a7c2fb21a58882f89041c4e769889fbbb0fc9d14c65b74f97880cc44e"
+ },
+ {
+ "ea": 4202502,
+ "size": 108,
+ "name": "sub_402006",
+ "hash": "d5a5ce505b454328414fbdd4fb8b35b44e121cbab866020cc76805708b21e5cb"
+ },
+ {
+ "ea": 4202610,
+ "size": 172,
+ "name": "sub_402072",
+ "hash": "72dca51ea7ce202cd750a8c8be133c52ae0b133631ff2a7f6851b8ece6e4a12b"
+ },
+ {
+ "ea": 4202782,
+ "size": 172,
+ "name": "sub_40211E",
+ "hash": "1764bb0ea33f8ffd8fdd9fb13a560d10845abdf7e0c8ae9e41ac6c034ac0e16b"
+ },
+ {
+ "ea": 4202954,
+ "size": 110,
+ "name": "sub_4021CA",
+ "hash": "4e77e1202aa18658dea4cf8760365e14051895515ac20306c5246c05d0b2664f"
+ },
+ {
+ "ea": 4203064,
+ "size": 68,
+ "name": "sub_402238",
+ "hash": "91172e0586a69a53bbf9bb95199ee1cca1e6f0f99799ef0723939b91ac4d78d3"
+ },
+ {
+ "ea": 4203132,
+ "size": 392,
+ "name": "sub_40227C",
+ "hash": "8e527c7475069315a337c69ae312338507039a27779ee77008b294fe1fc25124"
+ },
+ {
+ "ea": 4203524,
+ "size": 176,
+ "name": "sub_402404",
+ "hash": "c8e3dd9fbb44501e613c4d8162b7de9bd507b32585f95b41b013e55da2478b65"
+ },
+ {
+ "ea": 4203700,
+ "size": 28,
+ "name": "sub_4024B4",
+ "hash": "3e01dfe6b1141b1237cbe0ee9f15b9d863b611075816b784745c5ed21a83665f"
+ },
+ {
+ "ea": 4203728,
+ "size": 202,
+ "name": "sub_4024D0",
+ "hash": "9c03ce8c1d622a803fa586b4f2b11499c1b87ea1c8f91c5e84a365bf1f93acb0"
+ },
+ {
+ "ea": 4203930,
+ "size": 2,
+ "name": "fp_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4203932,
+ "size": 20,
+ "name": "fp_TA_CreateEntryPoint",
+ "hash": "cf7c235015ec44570147935ff32471f3009f4eb3e780e5659f232c1c2c49f6dc"
+ },
+ {
+ "ea": 4203952,
+ "size": 2,
+ "name": "fp_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4203956,
+ "size": 128,
+ "name": "fp_TA_InvokeCommandEntryPoint",
+ "hash": "74261a6bcdbb5b8cce92f13772fffaf5fa1ddd770b3f36e5a4949ee415ce4b06"
+ },
+ {
+ "ea": 4204084,
+ "size": 4,
+ "name": "fp_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4204088,
+ "size": 192,
+ "name": "sub_402638",
+ "hash": "e859382ccdbe35fced98384a5949f3c3a2ec375aa434575115786c265a70e881"
+ },
+ {
+ "ea": 4204280,
+ "size": 90,
+ "name": "sub_4026F8",
+ "hash": "9e2e87167eef0ce8d7af8b1c47ea5b224b9b424cf7bfdd9df51a87444d9dfaf6"
+ },
+ {
+ "ea": 4204370,
+ "size": 242,
+ "name": "sub_402752",
+ "hash": "64eb6ad3f7c9f9828517b0eb0258df2fbf4032a9bab2480359a641dc00680f72"
+ },
+ {
+ "ea": 4204612,
+ "size": 246,
+ "name": "sub_402844",
+ "hash": "d3aafafc66e35586a93b3896c2b25b32bdd88735dc445cefa2f1e13f3f573839"
+ },
+ {
+ "ea": 4204858,
+ "size": 78,
+ "name": "fp_cmd01",
+ "hash": "bbe86decfe330bf0c0e8edf4ef293ee9fb9e4de887e09e8307899e341692ad17"
+ },
+ {
+ "ea": 4204936,
+ "size": 56,
+ "name": "fp_cmd06",
+ "hash": "43c5fe1cd16f5597be48e49f28ce2f061c64b6b02466ff2c23d6839287087711"
+ },
+ {
+ "ea": 4204992,
+ "size": 176,
+ "name": "fp_cmd05",
+ "hash": "3bf20fbf80010d0a66a3e0c79c04ced7c4e0872a5cbaaaf7c698af6441a1071c"
+ },
+ {
+ "ea": 4205168,
+ "size": 104,
+ "name": "fp_cmd03",
+ "hash": "7c00fa50707c245a2b86b0a35fc110df5e303fbf54047accbcd2065843a53b25"
+ },
+ {
+ "ea": 4205272,
+ "size": 30,
+ "name": "fp_cmd02",
+ "hash": "e1dd5c4f2bf2973b50527dda1ec469460294537ea701779fce8efbad31c87779"
+ },
+ {
+ "ea": 4205302,
+ "size": 86,
+ "name": "fp_cmd07",
+ "hash": "972b0fd9a8f3532470e391c61505e1801b9b643bc27f16eab2b016266199c621"
+ },
+ {
+ "ea": 4205388,
+ "size": 138,
+ "name": "fp_cmd04",
+ "hash": "22475e56946b5dffe82dd578b8db0a21dbc00b8e636e2ea4e3302277441ef919"
+ },
+ {
+ "ea": 4205526,
+ "size": 134,
+ "name": "sub_402BD6",
+ "hash": "9ea2ee2e5d69ce50ae16be75c28980730668f4b66b4b1a5a331aad15bd577fda"
+ },
+ {
+ "ea": 4205660,
+ "size": 108,
+ "name": "sub_402C5C",
+ "hash": "b013b1ce62203199710052cea9dff2a2ffc244bb75b061faa27e6405e3152275"
+ },
+ {
+ "ea": 4205768,
+ "size": 182,
+ "name": "sub_402CC8",
+ "hash": "2ea2b5c98369645e89c0c82c1f7106c3fc1ddf8d62450267bc8b53c3718ebcab"
+ },
+ {
+ "ea": 4205952,
+ "size": 188,
+ "name": "sub_402D80",
+ "hash": "a40b62e110cd84f8a58d8efaae9bec67cccbbf84eea0a2edffccfa79bf1df285"
+ },
+ {
+ "ea": 4206140,
+ "size": 364,
+ "name": "sub_402E3C",
+ "hash": "38c9f5a0e7b1ba1bed30a682a68277f00a0b01d2e4d080f4460868336fe2088f"
+ },
+ {
+ "ea": 4206504,
+ "size": 12,
+ "name": "sub_402FA8",
+ "hash": "9ba8a27bb1c9703ea0fb65ea7e32b5a9248b049d1b71553827bda3a281524a60"
+ },
+ {
+ "ea": 4206516,
+ "size": 10,
+ "name": "sub_402FB4",
+ "hash": "fb040b2720f8a75fb7a5fba2e8d47cf24c74b73fc445f12fe49809721a670177"
+ },
+ {
+ "ea": 4206712,
+ "size": 60,
+ "name": "fp_sysdrv_rpc_101D",
+ "hash": "c8f6f28fe6c7dd1937dfd2d683b64bffc989153f244d64e326d62991184aab05"
+ },
+ {
+ "ea": 4206772,
+ "size": 56,
+ "name": "fp_sysdrv_rpc_101C",
+ "hash": "2d29f5c16d5fd525ee27467bc8503822b3f3f7f690dc5be300cbd44ac3d130e2"
+ },
+ {
+ "ea": 4206828,
+ "size": 50,
+ "name": "fp_sysdrv_rpc_103B",
+ "hash": "b0602d4113b82247c807406b752eca6ce4e867c2f49ccad4a5d0774c0ff9b14c"
+ },
+ {
+ "ea": 4206884,
+ "size": 48,
+ "name": "fp_sysdrv_rpc_1",
+ "hash": "273fdc7d8e2a5abbaad488b9fea793e5c7ec4e5a04dc7aa8cceb37eb7886dc8c"
+ },
+ {
+ "ea": 4206932,
+ "size": 48,
+ "name": "fp_sysdrv_rpc_30",
+ "hash": "a06e029e1e1df2566e290de573fd050a33704393751e8029aa214aba9a7719e6"
+ },
+ {
+ "ea": 4206980,
+ "size": 64,
+ "name": "fp_sysdrv_rpc_7",
+ "hash": "4c59cf2a97cd71d731e53b606e308b5153ba423d0e199ba7b74cfce4878eea0a"
+ },
+ {
+ "ea": 4207044,
+ "size": 42,
+ "name": "fp_sysdrv_rpc_5",
+ "hash": "1435932e8ac9a381d1acffdfb32ffdf59529dc3f1599b0b0e556826bcc806a68"
+ },
+ {
+ "ea": 4207086,
+ "size": 32,
+ "name": "fp_sysdrv_rpc_2",
+ "hash": "9e9f7d801352d77926b2f9831196588a260d76b65b5f90854833c228d459e23d"
+ },
+ {
+ "ea": 4207118,
+ "size": 34,
+ "name": "fp_sysdrv_rpc_31",
+ "hash": "6f1f883729d53367b464cc34ddee3f72b213c814ae0e11c5eae4ab3f671da304"
+ },
+ {
+ "ea": 4207152,
+ "size": 38,
+ "name": "fp_sysdrv_rpc_35",
+ "hash": "1a763b23151c3f8643f2bddd55c70ef18c53e4d1da209bb7a8a82cf0f269edd1"
+ },
+ {
+ "ea": 4207190,
+ "size": 48,
+ "name": "fp_sysdrv_rpc_33",
+ "hash": "de2262e5fb9a3e9855429736d469940c31f176f70f137739840716a8862ac4cc"
+ },
+ {
+ "ea": 4207238,
+ "size": 38,
+ "name": "fp_sysdrv_rpc_3",
+ "hash": "c8998d7c9afacf23ec601886f7e92e13174475a95ed96b12c22d1c7ed7970f52"
+ },
+ {
+ "ea": 4207276,
+ "size": 22,
+ "name": "sub_4032AC",
+ "hash": "c17598fe035d4eb5d3859fe76bf089167e46b90feae1d9a70f7a63beb51950ef"
+ },
+ {
+ "ea": 4207298,
+ "size": 64,
+ "name": "sub_4032C2",
+ "hash": "f1c1dec85db65b2fd87baafbb1a45152e046d1943db8d33662f164899d122582"
+ },
+ {
+ "ea": 4207362,
+ "size": 22,
+ "name": "sub_403302",
+ "hash": "137f0289d27a3528ff0747aad2f203f9a86a6c3b44e09721af69eaecb8bc78db"
+ },
+ {
+ "ea": 4207384,
+ "size": 24,
+ "name": "sub_403318",
+ "hash": "62f61dd32451090644981eb2c8f162c473a178d069355f582aacd2dfbfb48272"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/gcp.json b/fw/libdumps/gcp.json
new file mode 100644
index 0000000..3eaaaa2
--- /dev/null
+++ b/fw/libdumps/gcp.json
@@ -0,0 +1,746 @@
+[
+ {
+ "ea": 4194560,
+ "size": 2016,
+ "name": "start",
+ "hash": "795048c2b5ad5d186b6b3ea8b2f253877f8ee5141bfa421d6f1082abf79cec89"
+ },
+ {
+ "ea": 4198400,
+ "size": 144,
+ "name": "sub_401000",
+ "hash": "846b4491ad3a9a2425729f5ab697a8e17d4f4d7a06e4432e3cb21dd7fa4cbb81"
+ },
+ {
+ "ea": 4198544,
+ "size": 48,
+ "name": "sub_401090",
+ "hash": "8aaaa5f97d6e11e5f1dfd1f0ab158e4d4ad7e9e3dfed76b72bca89b4d2d60066"
+ },
+ {
+ "ea": 4198596,
+ "size": 88,
+ "name": "sub_4010C4",
+ "hash": "52b900d8b8c078c6622ad2fdc3aa6595c57c44fee736e2e7adb86f24bbe15d69"
+ },
+ {
+ "ea": 4198684,
+ "size": 4,
+ "name": "sub_40111C",
+ "hash": "16aa06d99f67d8e2cc926761044d58623efed78d6b0071e5160dbac418c9b41a"
+ },
+ {
+ "ea": 4198820,
+ "size": 100,
+ "name": "sub_4011A4",
+ "hash": "db5482d69d3ec7167e44b5529a0a40a9b33faf71981df144454e7da44e9360cc"
+ },
+ {
+ "ea": 4198920,
+ "size": 68,
+ "name": "sub_401208",
+ "hash": "259290c6ec628f49b5e96ab96c2ec07a4c2750f2bb9b9d6cac47330c190c8118"
+ },
+ {
+ "ea": 4198988,
+ "size": 78,
+ "name": "sub_40124C",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4199068,
+ "size": 392,
+ "name": "sub_40129C",
+ "hash": "b56825b48befbc0678f72d65a630d44b1904bdffc30b5d91f4e5f9a946d7a406"
+ },
+ {
+ "ea": 4199460,
+ "size": 44,
+ "name": "sub_401424",
+ "hash": "3853955a021a13b485fc22bd1b84670e2ff95ae8ad9d74a2d4e2212c0666c93d"
+ },
+ {
+ "ea": 4199504,
+ "size": 34,
+ "name": "sub_401450",
+ "hash": "836f1b0217fe4f25f7dc98c92a839d561b2dcb7c4143e9c0c2498ff3e89f85bb"
+ },
+ {
+ "ea": 4199538,
+ "size": 18,
+ "name": "sub_401472",
+ "hash": "5f016438f075aa23d3fc07316a4ac552503bbe2e267a4b8090b4189679c8dcaa"
+ },
+ {
+ "ea": 4199556,
+ "size": 18,
+ "name": "sub_401484",
+ "hash": "3cf46bff2aaba4c22833b6d11fe9eaf3b965faef9bee986b5292fdd487ed6634"
+ },
+ {
+ "ea": 4199574,
+ "size": 82,
+ "name": "sub_401496",
+ "hash": "7fca7c43246efe935ead5531c52a8056a741129ba843acfcd4ba13a4b5234053"
+ },
+ {
+ "ea": 4199656,
+ "size": 96,
+ "name": "sub_4014E8",
+ "hash": "2b02e37bfdaf6917f9f92049688ec789b8f1813c0aa06b53076a78ff1fb979a2"
+ },
+ {
+ "ea": 4199808,
+ "size": 10,
+ "name": "sub_401580",
+ "hash": "3f07c814dbdcfd26473df43452c69e4b770f0437de75db36cc37796498b9714e"
+ },
+ {
+ "ea": 4199818,
+ "size": 32,
+ "name": "sub_40158A",
+ "hash": "e53fbaaa91c8c1d619fdf964aa5688811d4bc836d42d8276c82ef40863b0c0a7"
+ },
+ {
+ "ea": 4199856,
+ "size": 10,
+ "name": "sub_4015B0",
+ "hash": "672a63239992c561e7ed97727a7876ac47e2654d081efb9640920a6a8346c54c"
+ },
+ {
+ "ea": 4199866,
+ "size": 16,
+ "name": "sub_4015BA",
+ "hash": "852e460a54cc23652953d8c2bdbb7715df1868b604fce3e7c9f9ee34d83e133b"
+ },
+ {
+ "ea": 4199884,
+ "size": 182,
+ "name": "sub_4015CC",
+ "hash": "5043c19105420e2b86777325676a835ad637535362c1cb1878be7ed4b58194f2"
+ },
+ {
+ "ea": 4200072,
+ "size": 108,
+ "name": "sub_401688",
+ "hash": "2cd8784313a50c2dce77f010467e226badfea198fab9f3a41e83dfe939da47ad"
+ },
+ {
+ "ea": 4200264,
+ "size": 24,
+ "name": "sub_401748",
+ "hash": "f6e388c198c32f5a61201235d46f83804b35fb3f7cad11bce078305927d9277f"
+ },
+ {
+ "ea": 4200394,
+ "size": 28,
+ "name": "sub_4017CA",
+ "hash": "918f1510322ca3035a785bb82e2bc2f5f324db4ad87964c4c580f247342b859e"
+ },
+ {
+ "ea": 4200456,
+ "size": 388,
+ "name": "sub_401808",
+ "hash": "95017fe0d8ed4e2c89b5f302424002fdd5ae5328b9fc9bc8edec88f06267e370"
+ },
+ {
+ "ea": 4200848,
+ "size": 152,
+ "name": "sub_401990",
+ "hash": "d83c24bf66dd5e4434ec78f8dfa2d7e87be894ffaf0bc141a979667e7a16a135"
+ },
+ {
+ "ea": 4201000,
+ "size": 178,
+ "name": "sub_401A28",
+ "hash": "1586a244f85cda2f2172bc99f8b5ab35f4ec238fcf3a968f5c4bc62bfca1ecd4"
+ },
+ {
+ "ea": 4201178,
+ "size": 434,
+ "name": "sub_401ADA",
+ "hash": "a9c8252cb4f44901fed6cd9513b064377c2e005e6d94c940a4aaaeb76d4fce0a"
+ },
+ {
+ "ea": 4201612,
+ "size": 606,
+ "name": "sub_401C8C",
+ "hash": "17ee17728d856cb413772c1c4f12d8521ad3c62d8e7ae510cc3c2d8ef47c1460"
+ },
+ {
+ "ea": 4202220,
+ "size": 758,
+ "name": "sub_401EEC",
+ "hash": "a75696881794fb619c6eeb79e4f1d354cc5ad257687cffb24bf0cce97d0b1b8e"
+ },
+ {
+ "ea": 4202988,
+ "size": 20,
+ "name": "sub_4021EC",
+ "hash": "32ea0f7a416ece76a2d387c38755737083b8fca1833f679aac109d9a122b1569"
+ },
+ {
+ "ea": 4203032,
+ "size": 20,
+ "name": "sub_402218",
+ "hash": "78974a434f73381d42d804dc7940c79b3e532fc9e63729c25d45c618fe008a74"
+ },
+ {
+ "ea": 4203076,
+ "size": 72,
+ "name": "sub_402244",
+ "hash": "a7faaa9b2050fdc0d9c2c07b5dc391f58f364719feccf801a0ca39b1fc4561a4"
+ },
+ {
+ "ea": 4203148,
+ "size": 44,
+ "name": "sub_40228C",
+ "hash": "d3aec19497c02c5348f9ed7837bcb3510145360bf499ab56669408d524bb4de1"
+ },
+ {
+ "ea": 4203192,
+ "size": 10,
+ "name": "sub_4022B8",
+ "hash": "a1b8c8fb1fa17c505ccb575ed48c48f6a5fee25b20690c27bab8a0199ad7ac8e"
+ },
+ {
+ "ea": 4203208,
+ "size": 4,
+ "name": "sub_4022C8",
+ "hash": "06936d0536d64e86c623270163a043c1b484bbc978af8fbf56cd1650cbfb6587"
+ },
+ {
+ "ea": 4203216,
+ "size": 112,
+ "name": "sub_4022D0",
+ "hash": "3c12ddd2d863babc984d72a52c4e03ba841b00e608ed5b22df35d102c42f220e"
+ },
+ {
+ "ea": 4203328,
+ "size": 16,
+ "name": "sub_402340",
+ "hash": "33b2ae336f550de0e98744de11fac68f962e98270357b7a28fd39fe8ed96d79a"
+ },
+ {
+ "ea": 4203344,
+ "size": 218,
+ "name": "sub_402350",
+ "hash": "2b5ce3c68f3d5a08b6b9e6f349512b8541dc8b5536bcacc39efa3fab7222cd47"
+ },
+ {
+ "ea": 4203568,
+ "size": 72,
+ "name": "sub_402430",
+ "hash": "18cd5c37e872782b79ab2ec6ebe65b0070d83a62cbe40b2c903ae623b91379a7"
+ },
+ {
+ "ea": 4203760,
+ "size": 48,
+ "name": "sub_4024F0",
+ "hash": "897f4febf19622474628e3d699f62c5cb98ba9be5a9d2d0487fa03a0032604e4"
+ },
+ {
+ "ea": 4204312,
+ "size": 130,
+ "name": "gcp_cmd01_AllocateDRMSession",
+ "hash": "04370e5446ce6d8948c89026723ff568abf0444e4392818e39ef8f639175e47f"
+ },
+ {
+ "ea": 4204576,
+ "size": 50,
+ "name": "sub_402820",
+ "hash": "6752914eae96457b021787497e1e1865154ce787839629af638c121fa856ed56"
+ },
+ {
+ "ea": 4204628,
+ "size": 30,
+ "name": "sub_402854",
+ "hash": "c457fbe280a04e9e9173d8f2b84cd0a9d5f5cfe84ed23f877cf8ba09b9201789"
+ },
+ {
+ "ea": 4204664,
+ "size": 132,
+ "name": "gcp_cmd05_CloseDRMSession",
+ "hash": "4b0a7f2ba00ce6e7ba8cb377fd33f25a411553198b90fa63f6f9cf116c3187d4"
+ },
+ {
+ "ea": 4204936,
+ "size": 364,
+ "name": "gcp_cmdFE09",
+ "hash": "167addd622815a8f81d6d70e7193a8c66a3ff700b262b972454dec7fb115f8d1"
+ },
+ {
+ "ea": 4205300,
+ "size": 8,
+ "name": "sub_402AF4",
+ "hash": "706e04cf81ca6cdd322b9e42dc5b8678931c8ace27012410f56f65a97c6420e7"
+ },
+ {
+ "ea": 4205432,
+ "size": 308,
+ "name": "sub_402B78",
+ "hash": "905ee4e4d1da86e3002fe51d8c4636672a03ac29fde1c8d287633f0324b35227"
+ },
+ {
+ "ea": 4205864,
+ "size": 276,
+ "name": "sub_402D28",
+ "hash": "c2bfaf604ae8a7c9dbe0d100c09caacd1cbbe8ced4aa0661c0aa69f036e6fa3c"
+ },
+ {
+ "ea": 4206228,
+ "size": 142,
+ "name": "gcp_cmdFE03_CreateAuthenticatedSession",
+ "hash": "d97ac65e3712440c78b2580dde76027beee36f67595a66e3992cde05e0ea3bf6"
+ },
+ {
+ "ea": 4206480,
+ "size": 144,
+ "name": "gcp_cmdFE0C_CreateAuthenticatedSession",
+ "hash": "a0e6e48b94cdbacfa2a31ff3726357a4ef8ab41bde669d565d90ac220739d330"
+ },
+ {
+ "ea": 4206756,
+ "size": 106,
+ "name": "gcp_cmdFE0B_DestroyAuthenticatedSession",
+ "hash": "e0d9687833c3acea72a36aea61f7da4f2046326d5cf4bb925dff1dd44b79b8a7"
+ },
+ {
+ "ea": 4206960,
+ "size": 100,
+ "name": "gcp_cmdFE0D_DestroyAuthenticatedSession",
+ "hash": "ba330a2ab9d33ba7f1ed86b12348dade46b3889c5b52105b9ab173ce5ae22592"
+ },
+ {
+ "ea": 4207140,
+ "size": 108,
+ "name": "gcp_sysdrv_rpc_109D",
+ "hash": "f6ff744f2fc75ce985bec3df58e3d7754a88e2fa60cd4ec3b1d768fa8b2b9391"
+ },
+ {
+ "ea": 4207248,
+ "size": 66,
+ "name": "gcp_sysdrv_rpc_109C",
+ "hash": "5e16201ddd14ddf0c8a44e45d7fe2ecc9b71bf8b8798a28c5bd55860e94eb9e8"
+ },
+ {
+ "ea": 4207314,
+ "size": 2,
+ "name": "nullsub_1",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4207316,
+ "size": 124,
+ "name": "gcp_cmdFE11_FinishKeyRefreshCryptoSession",
+ "hash": "3f7b6248b479a6652c49ff4f0383f1e244b809b6e8b49edcb4282cbe4f287a71"
+ },
+ {
+ "ea": 4207556,
+ "size": 488,
+ "name": "sub_4033C4",
+ "hash": "a2ccf7331987c5f5cc25d62aa70aadf655a4e9505b7c04fe1c51bde519dc142f"
+ },
+ {
+ "ea": 4208064,
+ "size": 182,
+ "name": "sub_4035C0",
+ "hash": "af0128b0a74d28e7e49a58e6273d89b8e46968c4737ffc0915038bba50ab82be"
+ },
+ {
+ "ea": 4208248,
+ "size": 72,
+ "name": "sub_403678",
+ "hash": "3ebf01ff29cb5fa2ec92201240a89e6d358a5d15f564f4864d2359951821a435"
+ },
+ {
+ "ea": 4208388,
+ "size": 332,
+ "name": "gcp_cmd04_GetContentKey",
+ "hash": "32799c92b7c2d337d107df478b7f0065d4af72cc2b315ff6e2a57dee79823012"
+ },
+ {
+ "ea": 4208848,
+ "size": 106,
+ "name": "sub_4038D0",
+ "hash": "6ad1b660cbe7983f3663b39f2f3ee7736e499d21360f55b2b7141e2f5e7dbd8b"
+ },
+ {
+ "ea": 4209068,
+ "size": 106,
+ "name": "sub_4039AC",
+ "hash": "6667ae849124e839e10c70390730d97183223a5b81c6939df838aad9cc62d8f9"
+ },
+ {
+ "ea": 4209288,
+ "size": 82,
+ "name": "gcp_cmdFE0F_GetCryptoSessionByDecodeHandle",
+ "hash": "3ddc77c89335c26e96d5553b06204d0657669763fc2be647ac65fe07cdb78b8d"
+ },
+ {
+ "ea": 4209484,
+ "size": 370,
+ "name": "gcp_cmdFE02_GetObfKeyCryptoSession",
+ "hash": "8164b478a87526d0a42121316d84f874d05aaf5e361a6f7365500d6a15acee77"
+ },
+ {
+ "ea": 4209980,
+ "size": 56,
+ "name": "gcp_sysdrv_rpc_103B",
+ "hash": "30e46fe19926f56c597a8c873bcb4d4b4f34751b0c2f0000af8c165fb4cd7fe1"
+ },
+ {
+ "ea": 4210040,
+ "size": 46,
+ "name": "sub_403D78",
+ "hash": "fea2cfc711dcb5429b7cdd2a34911b71c33ee754dba7307952332aa83bd754bd"
+ },
+ {
+ "ea": 4210088,
+ "size": 144,
+ "name": "sub_403DA8",
+ "hash": "ed4610b3b0eafaa227178e2dd8939073eb495a1c51ddae58f93dc6fd3c29ea9c"
+ },
+ {
+ "ea": 4210268,
+ "size": 228,
+ "name": "sub_403E5C",
+ "hash": "047b6ac247f805649b75100d02b28070e04b1857a804e5a7bc8352507801a238"
+ },
+ {
+ "ea": 4210592,
+ "size": 34,
+ "name": "sub_403FA0",
+ "hash": "ffa331c24f53534d493afc3a46e203b9c6cb086dbbbd589ba6bad73e5a12759d"
+ },
+ {
+ "ea": 4210632,
+ "size": 274,
+ "name": "gcp_dispatch",
+ "hash": "3b1053bd961e21411ac0138feda459189089149d705d92c2fe564b70a19ee446"
+ },
+ {
+ "ea": 4210912,
+ "size": 180,
+ "name": "gcp_cmdFE08_KeyExchangeAuthenticatedSession",
+ "hash": "e6463ff0d2b29646556d5729650c9e4b5eb8b9a9db2ed562d5ab5ed865edd030"
+ },
+ {
+ "ea": 4211188,
+ "size": 176,
+ "name": "sub_4041F4",
+ "hash": "5fce3baa032c0722766476a63fa614364f7d7af065a1721b662ef5e347bc9e4a"
+ },
+ {
+ "ea": 4211492,
+ "size": 152,
+ "name": "sub_404324",
+ "hash": "94fef414b08210c5a2377c812cb2dd3503efd89b414ff490b157fd0eaf375790"
+ },
+ {
+ "ea": 4211744,
+ "size": 422,
+ "name": "gcp_cmdFE0A_QueryAccessibilityAttributes",
+ "hash": "e83f7c6f51667fa76ecf59ace35c9a6716a1ec4060047f531b5d75f148a5ccce"
+ },
+ {
+ "ea": 4212288,
+ "size": 116,
+ "name": "sub_404640",
+ "hash": "d9cb95e4d55d477134fd2286685d687ea31688314e51cc2ecd1b59d2cfd9c42d"
+ },
+ {
+ "ea": 4212524,
+ "size": 168,
+ "name": "sub_40472C",
+ "hash": "18e323d00ec759eac96812d6cf22bf8537556a8d143db4c14d7ca16a3dda2c10"
+ },
+ {
+ "ea": 4212800,
+ "size": 226,
+ "name": "sub_404840",
+ "hash": "5b9c78f085c3505de76963709b36314c2c81b50640010c8d6731b3dc91ace554"
+ },
+ {
+ "ea": 4213136,
+ "size": 134,
+ "name": "sub_404990",
+ "hash": "8d63a040dce7a80e577f3f52c673a8c395670f356d4a11b824100e8e3a5842ea"
+ },
+ {
+ "ea": 4213412,
+ "size": 188,
+ "name": "sub_404AA4",
+ "hash": "1806d37bf1f020e486d486537b201e7355ce06fdb063aeb92c0dab1cf5668080"
+ },
+ {
+ "ea": 4213668,
+ "size": 96,
+ "name": "sub_404BA4",
+ "hash": "235242e611b3b4e22367bf2d070774a26728240732f892eb8a133bb1af2d9e1b"
+ },
+ {
+ "ea": 4213844,
+ "size": 90,
+ "name": "gcp_cmd02_SendDRMCertificate",
+ "hash": "1021476897225d21b877f1f1f793374601dbee69dd58664b0eac3cad49330787"
+ },
+ {
+ "ea": 4214036,
+ "size": 256,
+ "name": "sub_404D14",
+ "hash": "8529d8b2abc81b7d90e121b4ab3be136fa158df0b14d5068dbebe73567cd62b9"
+ },
+ {
+ "ea": 4214312,
+ "size": 110,
+ "name": "gcp_cmdFE10_StartKeyRefreshCryptoSession",
+ "hash": "ccb48f10bbc90b055c32f5208775c324c7bf885d75169c155b54c98092405f57"
+ },
+ {
+ "ea": 4214532,
+ "size": 22,
+ "name": "gcp_TA_CloseSessionEntryPoint",
+ "hash": "c52b1017ba341216403a8a5274ac7dcaa1e8a65aab8a8c758652725c5ba1479e"
+ },
+ {
+ "ea": 4214554,
+ "size": 4,
+ "name": "gcp_TA_CreateEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4214558,
+ "size": 2,
+ "name": "gcp_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4214560,
+ "size": 44,
+ "name": "gcp_TA_InvokeCommandEntryPoint",
+ "hash": "7110a69f463e327f67fa9c4ecb0890bf431017523c40c0048d426140221c3bc0"
+ },
+ {
+ "ea": 4214608,
+ "size": 30,
+ "name": "gcp_TA_OpenSessionEntryPoint",
+ "hash": "01f0b43fef5139983a8ba0605c4a15de256e97b4d611533532b9cdde05be2e30"
+ },
+ {
+ "ea": 4214644,
+ "size": 60,
+ "name": "gcp_sysdrv_rpc_1",
+ "hash": "3fa5211365c4da2e825ef7d0a268b03ccda68a266ba3afafcb27a06d0aed07ed"
+ },
+ {
+ "ea": 4214704,
+ "size": 50,
+ "name": "gcp_sysdrv_rpc_30",
+ "hash": "609fcb759ef495d5507b5928c40f989220dfc4bd4b976280ed898bdef1276295"
+ },
+ {
+ "ea": 4214754,
+ "size": 64,
+ "name": "gcp_sysdrv_rpc_9",
+ "hash": "922cdbd26d4069e61b85a813edd59c340858568e9b8038a2dbc887a95dcff440"
+ },
+ {
+ "ea": 4214818,
+ "size": 50,
+ "name": "gcp_sysdrv_rpc_7",
+ "hash": "79f0d4f1ae7b06f6f61760e523da1bb2393ad8bae0fc20e79be29f969d402e98"
+ },
+ {
+ "ea": 4214868,
+ "size": 46,
+ "name": "gcp_sysdrv_rpc_5",
+ "hash": "dd9438665c0358c350cd0d5ed71ee3cce9cb2ec3aa37ad4d2daf7f092bbbe1f2"
+ },
+ {
+ "ea": 4214916,
+ "size": 150,
+ "name": "sub_405084",
+ "hash": "921c69eebc3380f20f6dfaf7f6596eaf6c189988a426d9bf2a99b04753dca5bf"
+ },
+ {
+ "ea": 4215066,
+ "size": 36,
+ "name": "sub_40511A",
+ "hash": "76f4a4c64563188ceca0ce96d088ce0b0582df3ac3de89cf10cf6b0111eb82ac"
+ },
+ {
+ "ea": 4215102,
+ "size": 38,
+ "name": "gcp_sysdrv_rpc_31",
+ "hash": "6d0f25346cde552d4809f5933bf8234fd353a2ebd6c6fcfe1d70f5870d5d7d67"
+ },
+ {
+ "ea": 4215140,
+ "size": 42,
+ "name": "gcp_sysdrv_rpc_35",
+ "hash": "1dcfb80836450b0c7ed06b3dfc409df4975926e5ddc12c97f10483b2b73c49a8"
+ },
+ {
+ "ea": 4215182,
+ "size": 52,
+ "name": "gcp_sysdrv_rpc_10",
+ "hash": "426f2ac9878ad9878d7557107d400053ec2ece9c18572dbbcbd4c9acce5d4a67"
+ },
+ {
+ "ea": 4215234,
+ "size": 46,
+ "name": "gcp_sysdrv_rpc_E",
+ "hash": "745747c221ebef92d4c407021856c435134635cdfe29fa2a22b1125889027e19"
+ },
+ {
+ "ea": 4215280,
+ "size": 88,
+ "name": "sub_4051F0",
+ "hash": "1bb503566825881cc788789f2a7023742227deffe248f0829f50a4323099ef94"
+ },
+ {
+ "ea": 4215372,
+ "size": 52,
+ "name": "gcp_sysdrv_rpc_33",
+ "hash": "972925f404272081f1216f703abb80bf1a44dc91221b018d273d1fbe8e3b4907"
+ },
+ {
+ "ea": 4215424,
+ "size": 42,
+ "name": "gcp_sysdrv_rpc_3",
+ "hash": "9093efdbd7e5dc8644f6416988bdec7c9460ad4d0d43a9b4efc43956c1675eda"
+ },
+ {
+ "ea": 4215468,
+ "size": 128,
+ "name": "sub_4052AC",
+ "hash": "d0e3462af1fa2a4f6c2c184436b01d79e3d6330190e573f989442e816e2bcf63"
+ },
+ {
+ "ea": 4215732,
+ "size": 28,
+ "name": "gcp_asd_rpc_108",
+ "hash": "e0848134dd9bd01f684cc96d888d252e647389b4fce632b5cf6b3e4211f0db75"
+ },
+ {
+ "ea": 4215760,
+ "size": 30,
+ "name": "gcp_asd_rpc_109",
+ "hash": "a6037670917f9295e3177ddd827b9fa95b2d5a490e598e40dfab89356db1448a"
+ },
+ {
+ "ea": 4215790,
+ "size": 28,
+ "name": "gcp_asd_rpc_107",
+ "hash": "a9e20b9388460c396c5673395c7ae54f0e2273d279cdfd389db2c9ad7160a4ba"
+ },
+ {
+ "ea": 4215818,
+ "size": 30,
+ "name": "gcp_asd_rpc_304",
+ "hash": "15372268c30625b85d8a058e722f5f9b58846265c21f3019238ecf0d2fceb4ab"
+ },
+ {
+ "ea": 4215848,
+ "size": 30,
+ "name": "gcp_asd_rpc_305",
+ "hash": "fe551e1ceecc34d3088beac4c2a78b80264d1bc452873393a7c5dd94ca345117"
+ },
+ {
+ "ea": 4215878,
+ "size": 30,
+ "name": "gcp_asd_rpc_202",
+ "hash": "8a228c0f91efb562ff200991116bb00de24f456151d8a46a57d39c9f78a0d355"
+ },
+ {
+ "ea": 4215908,
+ "size": 30,
+ "name": "gcp_asd_rpc_200",
+ "hash": "78b55a6d5b794f6e3717051bf9be810ba755b330765feafdb3a8169316dc8891"
+ },
+ {
+ "ea": 4215938,
+ "size": 30,
+ "name": "gcp_asd_rpc_204",
+ "hash": "565080f7a97b6b14bf27ee3c0fca8ae79fcc255557080e92b0a1fdbe8ae6ab2e"
+ },
+ {
+ "ea": 4215968,
+ "size": 30,
+ "name": "gcp_asd_rpc_201",
+ "hash": "10a06412980e790b4d775670c93cf9f0c78b59714ed51ba59e3d98f0a1d8aa2a"
+ },
+ {
+ "ea": 4215998,
+ "size": 228,
+ "name": "sub_4054BE",
+ "hash": "a446f54e238f46687268376de04d14937c87d3579954501b6b7ff33ba1622415"
+ },
+ {
+ "ea": 4216226,
+ "size": 696,
+ "name": "sub_4055A2",
+ "hash": "5487ced78e12d5ea5e74f1ed8ea15f8b58d852826ff021f65bcc554732ae9d4b"
+ },
+ {
+ "ea": 4217050,
+ "size": 220,
+ "name": "sub_4058DA",
+ "hash": "5da1e11f1ffd7a8dfbae9ddc692f2b2e69e690e48cb717c586d5aba85cc046ad"
+ },
+ {
+ "ea": 4217270,
+ "size": 42,
+ "name": "sub_4059B6",
+ "hash": "eeee582adad29334197751dd2e40716dcb1bd6123e51ba09bb73141af049e083"
+ },
+ {
+ "ea": 4217312,
+ "size": 42,
+ "name": "sub_4059E0",
+ "hash": "e2ae1a4834fe4226ac9274680874c07ef1d952f8a9f0a3194f50d72756ae361a"
+ },
+ {
+ "ea": 4217354,
+ "size": 580,
+ "name": "sub_405A0A",
+ "hash": "db876c77ddb08681827d9fb19b88c23c6e83822e527bba0ffa9566f6e9bb2c1b"
+ },
+ {
+ "ea": 4217936,
+ "size": 148,
+ "name": "gcp_entry_trampoline",
+ "hash": "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54"
+ },
+ {
+ "ea": 4218120,
+ "size": 48,
+ "name": "sub_405D08",
+ "hash": "bcf5b30812f72c63f3030a9564c2494ef6edb064f8d4b98e417d0315b9d40d1c"
+ },
+ {
+ "ea": 4218168,
+ "size": 14,
+ "name": "sub_405D38",
+ "hash": "cede31a886c13f00e258cab9ff4597ba5470a85061ef3e7bccb8b794b52ec07b"
+ },
+ {
+ "ea": 4218184,
+ "size": 34,
+ "name": "sub_405D48",
+ "hash": "f5f3a6617321119e20f40d5ad0224f1b2bbbcae3de4125e4d38c3231d2cdef2b"
+ },
+ {
+ "ea": 4218228,
+ "size": 34,
+ "name": "sub_405D74",
+ "hash": "d45844c0f7553166dc500b284d191dd6aa94371318eeb64182f971237693bec4"
+ },
+ {
+ "ea": 4256386,
+ "size": 2,
+ "name": "nullsub_3",
+ "hash": "7b0ab17208b4f6ab43828edfafcbd2caffeae9d1396aecb438011ea02266951d"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/merit.json b/fw/libdumps/merit.json
new file mode 100644
index 0000000..2a0e138
--- /dev/null
+++ b/fw/libdumps/merit.json
@@ -0,0 +1,212 @@
+[
+ {
+ "ea": 4198400,
+ "size": 88,
+ "name": "sub_401000",
+ "hash": "52b900d8b8c078c6622ad2fdc3aa6595c57c44fee736e2e7adb86f24bbe15d69"
+ },
+ {
+ "ea": 4198488,
+ "size": 4,
+ "name": "sub_401058",
+ "hash": "16aa06d99f67d8e2cc926761044d58623efed78d6b0071e5160dbac418c9b41a"
+ },
+ {
+ "ea": 4198624,
+ "size": 68,
+ "name": "sub_4010E0",
+ "hash": "259290c6ec628f49b5e96ab96c2ec07a4c2750f2bb9b9d6cac47330c190c8118"
+ },
+ {
+ "ea": 4198692,
+ "size": 78,
+ "name": "sub_401124",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4199076,
+ "size": 148,
+ "name": "sub_4012A4",
+ "hash": "7c52098392b5a5df9b26ea5ba19056fb3415ed809e14d57aceb8900b744bc464"
+ },
+ {
+ "ea": 4199224,
+ "size": 248,
+ "name": "sub_401338",
+ "hash": "903a293825122168283e8022058f96ec42b5bfce6d1a49ebd8b063fbc4ad66a7"
+ },
+ {
+ "ea": 4199484,
+ "size": 152,
+ "name": "sub_40143C",
+ "hash": "e402f4700bbc657cd2acac0111569f04a58e67ecd8bc174c88f92d37a6f0ce28"
+ },
+ {
+ "ea": 4200704,
+ "size": 44,
+ "name": "merit_cmd01",
+ "hash": "7eea919f9a71d02b1516df397a7386c4e8c892896be0282bb6ef52fe3a43a5a2"
+ },
+ {
+ "ea": 4200752,
+ "size": 44,
+ "name": "merit_cmd06",
+ "hash": "80dc91d82df0e9696d1a033878a705e172554a7b55751f0418a80c9ad05b60f9"
+ },
+ {
+ "ea": 4200796,
+ "size": 186,
+ "name": "merit_cmd04",
+ "hash": "a5f7b078db4cc7e3ed5a1b8eabe9d2aeb17d16051c4b4ebdc54c849ab121532a"
+ },
+ {
+ "ea": 4200984,
+ "size": 120,
+ "name": "merit_cmd02",
+ "hash": "faf766490f02b0382fb4f710829c85a3b53a9cfa54a420430ffb3642266e5ba3"
+ },
+ {
+ "ea": 4201104,
+ "size": 326,
+ "name": "merit_cmd05",
+ "hash": "47747db179ac15cc94e3b8ab0a63869567b6e55c85ac7e1703c42c53bf5ea6b1"
+ },
+ {
+ "ea": 4201448,
+ "size": 208,
+ "name": "merit_cmd03",
+ "hash": "8bb73694a465055c94e33fe81e0cdeac02236e37d3fb153c8c290e141bd367d1"
+ },
+ {
+ "ea": 4201676,
+ "size": 2,
+ "name": "merit_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4201680,
+ "size": 16,
+ "name": "merit_TA_CreateEntryPoint",
+ "hash": "3ba917f51a42417ffeddb580038e374f78fc55276d5b2d0ab836cbee70b63fb5"
+ },
+ {
+ "ea": 4201700,
+ "size": 2,
+ "name": "merit_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4201704,
+ "size": 130,
+ "name": "merit_TA_InvokeCommandEntryPoint",
+ "hash": "19351ac996acae9087c013514140f31ce919c3bd215340865772d0a9252061f1"
+ },
+ {
+ "ea": 4201840,
+ "size": 4,
+ "name": "merit_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4201844,
+ "size": 60,
+ "name": "merit_sysdrv_rpc_1",
+ "hash": "a1a4a7462ac2ded098c4b6466522fffbcb665ecca935f969fd61ac67ba95b083"
+ },
+ {
+ "ea": 4201904,
+ "size": 50,
+ "name": "merit_sysdrv_rpc_30",
+ "hash": "e29be85ea6ec6252be1c29a3f60a45fe6c57283c9d7c26590e4569c098ff0282"
+ },
+ {
+ "ea": 4201954,
+ "size": 64,
+ "name": "merit_sysdrv_rpc_9",
+ "hash": "922cdbd26d4069e61b85a813edd59c340858568e9b8038a2dbc887a95dcff440"
+ },
+ {
+ "ea": 4202018,
+ "size": 36,
+ "name": "sub_401E22",
+ "hash": "f73552dab3e9d971104977b2baa5d312aae3aab4776bf1c118fc6f9e2f7ae1c7"
+ },
+ {
+ "ea": 4202054,
+ "size": 38,
+ "name": "merit_sysdrv_rpc_31",
+ "hash": "06081cdbeb352a8ce2e941cb8e2398f87379e233011c4849da22dc7a9d36942c"
+ },
+ {
+ "ea": 4202092,
+ "size": 42,
+ "name": "merit_sysdrv_rpc_35",
+ "hash": "2c258f8f823218c5fcaea0d8a544aa50d08a73d6512372bc5d5177c256a2c50a"
+ },
+ {
+ "ea": 4202134,
+ "size": 52,
+ "name": "merit_sysdrv_rpc_10",
+ "hash": "426f2ac9878ad9878d7557107d400053ec2ece9c18572dbbcbd4c9acce5d4a67"
+ },
+ {
+ "ea": 4202186,
+ "size": 46,
+ "name": "merit_sysdrv_rpc_E",
+ "hash": "0ee98142a53769154d6f776f59d2b701ca7733f8ceaa0a5c3e3ee6b81b530027"
+ },
+ {
+ "ea": 4202232,
+ "size": 52,
+ "name": "merit_sysdrv_rpc_33",
+ "hash": "add2782dfdfe0173d2fa0e3b957f205a9334627a82f332f21cd5934acb03092a"
+ },
+ {
+ "ea": 4202284,
+ "size": 42,
+ "name": "merit_sysdrv_rpc_3",
+ "hash": "88a5f37ed81d206a7d55651a3c3baa14b45bd280a49632780c755ea2d40454eb"
+ },
+ {
+ "ea": 4202326,
+ "size": 30,
+ "name": "merit_asd_rpc_200",
+ "hash": "78b55a6d5b794f6e3717051bf9be810ba755b330765feafdb3a8169316dc8891"
+ },
+ {
+ "ea": 4202356,
+ "size": 30,
+ "name": "merit_asd_rpc_201",
+ "hash": "10a06412980e790b4d775670c93cf9f0c78b59714ed51ba59e3d98f0a1d8aa2a"
+ },
+ {
+ "ea": 4202388,
+ "size": 148,
+ "name": "merit_entry_trampoline",
+ "hash": "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54"
+ },
+ {
+ "ea": 4235662,
+ "size": 30,
+ "name": "sub_40A18E",
+ "hash": "a570954195f2aeb77f5958903a427c9facc3ee7ce3a735a093dd099659c0800c"
+ },
+ {
+ "ea": 4245002,
+ "size": 36,
+ "name": "sub_40C60A",
+ "hash": "c41c81ae24cfca6dae6664fbaae0193dc2c21a8ac8a63882c1d77a27ea916d30"
+ },
+ {
+ "ea": 4245806,
+ "size": 16,
+ "name": "sub_40C92E",
+ "hash": "35b35e77a517fdee1d80bcad7cf5a2a4c01b20611132dcee3424774ffa9f76a9"
+ },
+ {
+ "ea": 4253758,
+ "size": 2,
+ "name": "nullsub_3",
+ "hash": "abd49ec8111be1f55319f91a44d26daaf5abd7567c169a61abf6c0b031d4b31c"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/oc.json b/fw/libdumps/oc.json
new file mode 100644
index 0000000..bfeca47
--- /dev/null
+++ b/fw/libdumps/oc.json
@@ -0,0 +1,182 @@
+[
+ {
+ "ea": 4194560,
+ "size": 1840,
+ "name": "start",
+ "hash": "03627823444dcbb7c0fa2289116f66f02d9dcba9ed214eb2c25519d232bb18d3"
+ },
+ {
+ "ea": 4198400,
+ "size": 4,
+ "name": "sub_401000",
+ "hash": "16aa06d99f67d8e2cc926761044d58623efed78d6b0071e5160dbac418c9b41a"
+ },
+ {
+ "ea": 4198536,
+ "size": 68,
+ "name": "sub_401088",
+ "hash": "259290c6ec628f49b5e96ab96c2ec07a4c2750f2bb9b9d6cac47330c190c8118"
+ },
+ {
+ "ea": 4198604,
+ "size": 78,
+ "name": "sub_4010CC",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4198784,
+ "size": 30,
+ "name": "sub_401180",
+ "hash": "c457fbe280a04e9e9173d8f2b84cd0a9d5f5cfe84ed23f877cf8ba09b9201789"
+ },
+ {
+ "ea": 4198820,
+ "size": 26,
+ "name": "sub_4011A4",
+ "hash": "78920d3a6edd87515d1efa2378564fb69b197461418107a8a3ad1ff9066a611f"
+ },
+ {
+ "ea": 4198846,
+ "size": 46,
+ "name": "oc_sysdrv_rpc_3158",
+ "hash": "c8f3a0511a12126965c1bd878aea86587fd317c584a27d36f9316bef5332b6ac"
+ },
+ {
+ "ea": 4198892,
+ "size": 58,
+ "name": "sub_4011EC",
+ "hash": "b951119a279d01d1a57b58ddd40a1c42465fa1f804b8f7a621a35b4ca0052c7d"
+ },
+ {
+ "ea": 4198950,
+ "size": 44,
+ "name": "oc_sysdrv_rpc_109B",
+ "hash": "fa172ac73ddf1027324315caa74ee42aa4006425a797371e05668eed3badb4cf"
+ },
+ {
+ "ea": 4198994,
+ "size": 46,
+ "name": "sub_401252",
+ "hash": "0739cf0812058bb0cc418ef424e093e289558295e5b2c8f4818f29122f859cc3"
+ },
+ {
+ "ea": 4199040,
+ "size": 182,
+ "name": "sub_401280",
+ "hash": "d661902a8c2593f81e8f40cb55226c0b80c2aa24cc879708e7ad09fa1fdc1b23"
+ },
+ {
+ "ea": 4199336,
+ "size": 2,
+ "name": "oc_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4199338,
+ "size": 4,
+ "name": "oc_TA_CreateEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4199342,
+ "size": 2,
+ "name": "oc_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4199344,
+ "size": 92,
+ "name": "oc_TA_InvokeCommandEntryPoint",
+ "hash": "03c09e221e8f820a470f642a5ca8838920b6f93d9a67287ed0085876f19f2495"
+ },
+ {
+ "ea": 4199440,
+ "size": 4,
+ "name": "oc_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4199444,
+ "size": 60,
+ "name": "oc_sysdrv_rpc_1",
+ "hash": "0ef2a2928cbeaced6801bbe745c97ff6ebe33b35446f20c2ffe19a64d17fd212"
+ },
+ {
+ "ea": 4199504,
+ "size": 50,
+ "name": "oc_sysdrv_rpc_30",
+ "hash": "52cd099cb103a30e99f45ccc3327359703ae5d0258af0584697cf1b1158025e4"
+ },
+ {
+ "ea": 4199554,
+ "size": 38,
+ "name": "sub_401482",
+ "hash": "37fa8abcec890c5f0b825b9d4843f0f044298b42eb4312ea08f537c11e696916"
+ },
+ {
+ "ea": 4199592,
+ "size": 36,
+ "name": "sub_4014A8",
+ "hash": "c8d26b54b70173b582b00db4a4cce6b70decfd3b1eb87bc0eb6acf5010152a8b"
+ },
+ {
+ "ea": 4199628,
+ "size": 38,
+ "name": "oc_sysdrv_rpc_31",
+ "hash": "a424508fb5ddec852a5c7d10552f93fd786b8b4f9a40a3a82154a01c3c95ec29"
+ },
+ {
+ "ea": 4199666,
+ "size": 42,
+ "name": "oc_sysdrv_rpc_35",
+ "hash": "548a225648e636960d7fa76c59e750745a264a02e4a4a12942fb8f1be5efd151"
+ },
+ {
+ "ea": 4199708,
+ "size": 52,
+ "name": "oc_sysdrv_rpc_10",
+ "hash": "426f2ac9878ad9878d7557107d400053ec2ece9c18572dbbcbd4c9acce5d4a67"
+ },
+ {
+ "ea": 4199760,
+ "size": 46,
+ "name": "oc_sysdrv_rpc_E",
+ "hash": "871f50f82f4df4a4b7494d6cbbbc27499886feeda5230b8365792fd58c7c0606"
+ },
+ {
+ "ea": 4199808,
+ "size": 88,
+ "name": "sub_401580",
+ "hash": "7fd932d90148e92602b5712604d8e20cd1d5ecef271d7579035e0b4a9192e879"
+ },
+ {
+ "ea": 4199900,
+ "size": 52,
+ "name": "oc_sysdrv_rpc_33",
+ "hash": "82972087baf4deab2e886c2a460358e7eb8f8a2a877221d2fed256e5d9c1330d"
+ },
+ {
+ "ea": 4199952,
+ "size": 42,
+ "name": "oc_sysdrv_rpc_3",
+ "hash": "29c918efd7e635cf7bf208dbe6d5097228e14faf71cb6447095413f65b2cbdf5"
+ },
+ {
+ "ea": 4199996,
+ "size": 276,
+ "name": "sub_40163C",
+ "hash": "561e57d0adbe972c4ca76a123bf61b9aac3cd99cc1346225f2e06f65fa52ce40"
+ },
+ {
+ "ea": 4200272,
+ "size": 22,
+ "name": "oc_cmd02",
+ "hash": "66242e6b5cc9cf021b1795928ed338e99635bf139d9c99f7b718bfc73720bd3b"
+ },
+ {
+ "ea": 4200296,
+ "size": 178,
+ "name": "oc_cmd01",
+ "hash": "39e93f395a97004775f94d3e94a32822bca38484e555cf31f3e20c3be23987b0"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/opm.json b/fw/libdumps/opm.json
new file mode 100644
index 0000000..bd65adc
--- /dev/null
+++ b/fw/libdumps/opm.json
@@ -0,0 +1,290 @@
+[
+ {
+ "ea": 4194560,
+ "size": 1832,
+ "name": "start",
+ "hash": "69ee386db660de6fc416f3a46cb58265e1b3641fed51c124abd94d4c5c273328"
+ },
+ {
+ "ea": 4198400,
+ "size": 88,
+ "name": "sub_401000",
+ "hash": "52b900d8b8c078c6622ad2fdc3aa6595c57c44fee736e2e7adb86f24bbe15d69"
+ },
+ {
+ "ea": 4198488,
+ "size": 4,
+ "name": "sub_401058",
+ "hash": "16aa06d99f67d8e2cc926761044d58623efed78d6b0071e5160dbac418c9b41a"
+ },
+ {
+ "ea": 4198624,
+ "size": 100,
+ "name": "sub_4010E0",
+ "hash": "db5482d69d3ec7167e44b5529a0a40a9b33faf71981df144454e7da44e9360cc"
+ },
+ {
+ "ea": 4198724,
+ "size": 68,
+ "name": "sub_401144",
+ "hash": "259290c6ec628f49b5e96ab96c2ec07a4c2750f2bb9b9d6cac47330c190c8118"
+ },
+ {
+ "ea": 4198792,
+ "size": 78,
+ "name": "sub_401188",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4199104,
+ "size": 1030,
+ "name": "opm_asd301_path",
+ "hash": "f29fde9b90a4afbb2650fda039926c8ca7ca5f950a7a3db1f15b956b9bd51ee1"
+ },
+ {
+ "ea": 4200194,
+ "size": 96,
+ "name": "sub_401702",
+ "hash": "d5b2c3ff7aee19322e926a82a0ce84f032b11419b2acdb575465f28e2bf56766"
+ },
+ {
+ "ea": 4200296,
+ "size": 108,
+ "name": "opm_cmd09",
+ "hash": "d5c8357716e3a83f2b06a4a633f0158ea1de0338068fdc67e720ea788ac43c25"
+ },
+ {
+ "ea": 4200412,
+ "size": 194,
+ "name": "opm_cmd03",
+ "hash": "7892df5d20f09a47aad66d2f761703bcc626cc3acc6d63fccd62ab59bb560b44"
+ },
+ {
+ "ea": 4200720,
+ "size": 1126,
+ "name": "sub_401910",
+ "hash": "5f158ada9748bdd505e57bb1c2eb3bb45e589cb41f8ab654eb523e37614135f2"
+ },
+ {
+ "ea": 4201940,
+ "size": 158,
+ "name": "sub_401DD4",
+ "hash": "8fa7e4f896947dbd7849591e42684140d708d7c53d487c53fbbb17c0bd16c127"
+ },
+ {
+ "ea": 4202104,
+ "size": 218,
+ "name": "sub_401E78",
+ "hash": "89223a49bed2ed08e87039a3eeae12f6a1646c1b2ae60841933172820e6ccaaa"
+ },
+ {
+ "ea": 4202328,
+ "size": 508,
+ "name": "sub_401F58",
+ "hash": "a966456d4cde134a51e4ed004626bc54e22a352a3716bd4518c0ea89407a8da3"
+ },
+ {
+ "ea": 4202852,
+ "size": 98,
+ "name": "sub_402164",
+ "hash": "61a8e5baa6b9df6d958841fea89fb2857bc025b2c910a6cebcc335d2e1193bd6"
+ },
+ {
+ "ea": 4202956,
+ "size": 226,
+ "name": "sub_4021CC",
+ "hash": "45abd9eb9d4c59d9f0cce36f3260e8ca59b013aba822dfd975ac1360e1bca5ea"
+ },
+ {
+ "ea": 4203188,
+ "size": 72,
+ "name": "opm_cmd04",
+ "hash": "e087cf6410e76c204e09e4248d660f8f3dcfe26b2f8ed5d77025499360d3cd41"
+ },
+ {
+ "ea": 4203264,
+ "size": 222,
+ "name": "sub_402300",
+ "hash": "c2a51fafe97677c9488272dbbf1c6cc26ebbd29f01f8125aeb69ae950f86f5dc"
+ },
+ {
+ "ea": 4203500,
+ "size": 1290,
+ "name": "sub_4023EC",
+ "hash": "48b3faf0561c68648c0e17cf83b053f0c2688808a5bc678a2efadf04f17d8e15"
+ },
+ {
+ "ea": 4205012,
+ "size": 26,
+ "name": "sub_4029D4",
+ "hash": "b39f29a7afe93fb889164e4983815af44bd491184f01f81f84c5f1d7c691ac96"
+ },
+ {
+ "ea": 4205040,
+ "size": 182,
+ "name": "opm_cmd05",
+ "hash": "30897fbd0286afb1d957f2052324621cbd4e4957d94eaa91629769c50c4378d9"
+ },
+ {
+ "ea": 4205232,
+ "size": 2,
+ "name": "opm_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4205236,
+ "size": 38,
+ "name": "opm_TA_CreateEntryPoint",
+ "hash": "5a2515fbfcd772f7dcdb1235bfa676deb1bce8780850593d420e2c481ee67e92"
+ },
+ {
+ "ea": 4205280,
+ "size": 2,
+ "name": "opm_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4205284,
+ "size": 184,
+ "name": "opm_TA_InvokeCommandEntryPoint",
+ "hash": "1ea9be9305d3594828ed2916053c7735ee482f8687cd07440696eb2e58663c73"
+ },
+ {
+ "ea": 4205480,
+ "size": 4,
+ "name": "opm_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4205484,
+ "size": 60,
+ "name": "opm_sysdrv_rpc_1",
+ "hash": "19fc80dc3d05013040bff2f660569154e0cb28b77168332963c6fc9ebc9be1e3"
+ },
+ {
+ "ea": 4205544,
+ "size": 50,
+ "name": "opm_sysdrv_rpc_30",
+ "hash": "142d8cbcd209a58bc67775a01ed4ca0cde5524abbe253ebb092a9eb1f48ae26d"
+ },
+ {
+ "ea": 4205594,
+ "size": 64,
+ "name": "opm_sysdrv_rpc_9",
+ "hash": "922cdbd26d4069e61b85a813edd59c340858568e9b8038a2dbc887a95dcff440"
+ },
+ {
+ "ea": 4205658,
+ "size": 36,
+ "name": "sub_402C5A",
+ "hash": "0e2bd28a884bed83e7ea6c6ba40bc9ac2c4b4c1356e9ab724d1c26259469ff18"
+ },
+ {
+ "ea": 4205694,
+ "size": 38,
+ "name": "opm_sysdrv_rpc_31",
+ "hash": "653be36a711f4b57615e19a09a7adac4855f94e8a4c67930112d9d993f856eab"
+ },
+ {
+ "ea": 4205732,
+ "size": 42,
+ "name": "opm_sysdrv_rpc_35",
+ "hash": "a440ee009b44a43be17915fa769f5c1b862939d81a8542a5f62f87f025b64b4a"
+ },
+ {
+ "ea": 4205774,
+ "size": 52,
+ "name": "opm_sysdrv_rpc_10",
+ "hash": "426f2ac9878ad9878d7557107d400053ec2ece9c18572dbbcbd4c9acce5d4a67"
+ },
+ {
+ "ea": 4205826,
+ "size": 46,
+ "name": "opm_sysdrv_rpc_E",
+ "hash": "54ff1480508d0aa342b176dbc5a7043b8acace7378b3b001e649c457778d0c72"
+ },
+ {
+ "ea": 4205872,
+ "size": 52,
+ "name": "opm_sysdrv_rpc_33",
+ "hash": "2ad66c5019bfc64d1614c17008147bbd894dd7e8da26749a3940c70712eef705"
+ },
+ {
+ "ea": 4205924,
+ "size": 42,
+ "name": "opm_sysdrv_rpc_3",
+ "hash": "6c31cf4214a284e40830dc487d519a880c748e3ed94768971999c14f9bd9dd50"
+ },
+ {
+ "ea": 4205966,
+ "size": 28,
+ "name": "opm_asd_rpc_105",
+ "hash": "f63c4eab092a69c55cb18845270e45509355c8cd95750a074d220c525cefb369"
+ },
+ {
+ "ea": 4205994,
+ "size": 28,
+ "name": "opm_asd_rpc_102",
+ "hash": "d69f6ab157f1153d1481bdbed13f78cace1d85e6f61212930f837e010151f3de"
+ },
+ {
+ "ea": 4206022,
+ "size": 28,
+ "name": "opm_asd_rpc_107",
+ "hash": "a9e20b9388460c396c5673395c7ae54f0e2273d279cdfd389db2c9ad7160a4ba"
+ },
+ {
+ "ea": 4206050,
+ "size": 34,
+ "name": "opm_asd_rpc_161",
+ "hash": "9d5a0c811559ed02accbba70112f1b7558cad9d993c1c91b9ea2ccfe3fd1e295"
+ },
+ {
+ "ea": 4206084,
+ "size": 30,
+ "name": "opm_asd_rpc_304",
+ "hash": "98a9ade357ba2bc902524c32ccfb782cc61cd62749e43deb5004edbdf72d22d1"
+ },
+ {
+ "ea": 4206114,
+ "size": 30,
+ "name": "opm_asd_rpc_305",
+ "hash": "fe551e1ceecc34d3088beac4c2a78b80264d1bc452873393a7c5dd94ca345117"
+ },
+ {
+ "ea": 4206144,
+ "size": 30,
+ "name": "opm_asd_rpc_300",
+ "hash": "e3761142ccbab14dd49b0f71745921aab7609a67e4414f2012e51d936dde26cc"
+ },
+ {
+ "ea": 4206174,
+ "size": 30,
+ "name": "opm_asd_rpc_301",
+ "hash": "5e8fa8557132b74aa032d2767c0a84aa77442e17acff37394f6e99820fbaff26"
+ },
+ {
+ "ea": 4206204,
+ "size": 30,
+ "name": "opm_asd_rpc_200",
+ "hash": "78b55a6d5b794f6e3717051bf9be810ba755b330765feafdb3a8169316dc8891"
+ },
+ {
+ "ea": 4206234,
+ "size": 30,
+ "name": "opm_asd_rpc_201",
+ "hash": "10a06412980e790b4d775670c93cf9f0c78b59714ed51ba59e3d98f0a1d8aa2a"
+ },
+ {
+ "ea": 4206264,
+ "size": 148,
+ "name": "opm_entry_trampoline",
+ "hash": "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54"
+ },
+ {
+ "ea": 4222160,
+ "size": 8,
+ "name": "sub_406CD0",
+ "hash": "848fc1daae77402f90d83d99367c8eaeeec3644486d774c2a3f5197cf8968e00"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/powerplay.json b/fw/libdumps/powerplay.json
new file mode 100644
index 0000000..3482fb5
--- /dev/null
+++ b/fw/libdumps/powerplay.json
@@ -0,0 +1,638 @@
+[
+ {
+ "ea": 4194560,
+ "size": 1836,
+ "name": "start",
+ "hash": "e091aac11a6cb6a79610679847f7289a4a4298549b4d35b5b1f07c740e06e62b"
+ },
+ {
+ "ea": 4198400,
+ "size": 144,
+ "name": "sub_401000",
+ "hash": "5ab3a36eba3b3212aed4ca306d66dad31151348b4f42807638e464eb26a52c68"
+ },
+ {
+ "ea": 4198544,
+ "size": 48,
+ "name": "sub_401090",
+ "hash": "dbddfec1f567d689316a6f955aca9b19113e01bb016cbce6340ed986397afe5f"
+ },
+ {
+ "ea": 4198596,
+ "size": 4,
+ "name": "sub_4010C4",
+ "hash": "16aa06d99f67d8e2cc926761044d58623efed78d6b0071e5160dbac418c9b41a"
+ },
+ {
+ "ea": 4198732,
+ "size": 78,
+ "name": "sub_40114C",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4198812,
+ "size": 392,
+ "name": "sub_40119C",
+ "hash": "b56825b48befbc0678f72d65a630d44b1904bdffc30b5d91f4e5f9a946d7a406"
+ },
+ {
+ "ea": 4199204,
+ "size": 44,
+ "name": "sub_401324",
+ "hash": "3853955a021a13b485fc22bd1b84670e2ff95ae8ad9d74a2d4e2212c0666c93d"
+ },
+ {
+ "ea": 4199248,
+ "size": 34,
+ "name": "sub_401350",
+ "hash": "836f1b0217fe4f25f7dc98c92a839d561b2dcb7c4143e9c0c2498ff3e89f85bb"
+ },
+ {
+ "ea": 4199282,
+ "size": 18,
+ "name": "sub_401372",
+ "hash": "5f016438f075aa23d3fc07316a4ac552503bbe2e267a4b8090b4189679c8dcaa"
+ },
+ {
+ "ea": 4199300,
+ "size": 18,
+ "name": "sub_401384",
+ "hash": "3cf46bff2aaba4c22833b6d11fe9eaf3b965faef9bee986b5292fdd487ed6634"
+ },
+ {
+ "ea": 4199318,
+ "size": 82,
+ "name": "sub_401396",
+ "hash": "7fca7c43246efe935ead5531c52a8056a741129ba843acfcd4ba13a4b5234053"
+ },
+ {
+ "ea": 4199400,
+ "size": 96,
+ "name": "sub_4013E8",
+ "hash": "77b70240d6537c583ff30448c816927920e25c9506a57f53870fa6ccb8f6a926"
+ },
+ {
+ "ea": 4199552,
+ "size": 10,
+ "name": "sub_401480",
+ "hash": "3f07c814dbdcfd26473df43452c69e4b770f0437de75db36cc37796498b9714e"
+ },
+ {
+ "ea": 4199562,
+ "size": 32,
+ "name": "sub_40148A",
+ "hash": "e53fbaaa91c8c1d619fdf964aa5688811d4bc836d42d8276c82ef40863b0c0a7"
+ },
+ {
+ "ea": 4199600,
+ "size": 10,
+ "name": "sub_4014B0",
+ "hash": "672a63239992c561e7ed97727a7876ac47e2654d081efb9640920a6a8346c54c"
+ },
+ {
+ "ea": 4199610,
+ "size": 16,
+ "name": "sub_4014BA",
+ "hash": "852e460a54cc23652953d8c2bdbb7715df1868b604fce3e7c9f9ee34d83e133b"
+ },
+ {
+ "ea": 4199628,
+ "size": 182,
+ "name": "sub_4014CC",
+ "hash": "e8ec7dc2a51fd0a77239826c894e2548209c2246910b219017edc6f8ce3527a1"
+ },
+ {
+ "ea": 4199816,
+ "size": 108,
+ "name": "sub_401588",
+ "hash": "5cafa94c9b7143c299e8a75f9369c9485c0a7fc859b507677ac89cf3433a9370"
+ },
+ {
+ "ea": 4200008,
+ "size": 24,
+ "name": "sub_401648",
+ "hash": "f6e388c198c32f5a61201235d46f83804b35fb3f7cad11bce078305927d9277f"
+ },
+ {
+ "ea": 4200138,
+ "size": 28,
+ "name": "sub_4016CA",
+ "hash": "918f1510322ca3035a785bb82e2bc2f5f324db4ad87964c4c580f247342b859e"
+ },
+ {
+ "ea": 4200200,
+ "size": 388,
+ "name": "sub_401708",
+ "hash": "43ad0ffdd3f27f8584858512e2c84b449800257f3d1cccb49938fd19d58bc068"
+ },
+ {
+ "ea": 4200692,
+ "size": 152,
+ "name": "sub_4018F4",
+ "hash": "d83c24bf66dd5e4434ec78f8dfa2d7e87be894ffaf0bc141a979667e7a16a135"
+ },
+ {
+ "ea": 4200844,
+ "size": 178,
+ "name": "sub_40198C",
+ "hash": "c2be825f2f1415933eb09391f314ba57ddb96eb8a5cd86a8fd385a1904f95bd8"
+ },
+ {
+ "ea": 4201022,
+ "size": 434,
+ "name": "sub_401A3E",
+ "hash": "31d0ea2c5071795459cf917941d5aa81d68e3cfb1f8bbe4b6ac33bbddf6b5c5e"
+ },
+ {
+ "ea": 4201456,
+ "size": 606,
+ "name": "sub_401BF0",
+ "hash": "588578861752251cf55848e0660b8be4cb1db39eccb8990e23542648d7223915"
+ },
+ {
+ "ea": 4202064,
+ "size": 758,
+ "name": "sub_401E50",
+ "hash": "abedefbeeda0bea1fab5a19723bc5698e3b38dd8bac14fc535b0dab1f40848e9"
+ },
+ {
+ "ea": 4202832,
+ "size": 20,
+ "name": "sub_402150",
+ "hash": "24979c85aee02f2ab1fb7929b3e5bc857b0c826be235290ca60bf60e6b24a266"
+ },
+ {
+ "ea": 4202876,
+ "size": 20,
+ "name": "sub_40217C",
+ "hash": "c0b7ee18110f3ca2275af45160a04719c1c1125e7db80504aafd6715f6d37522"
+ },
+ {
+ "ea": 4202920,
+ "size": 72,
+ "name": "sub_4021A8",
+ "hash": "a7faaa9b2050fdc0d9c2c07b5dc391f58f364719feccf801a0ca39b1fc4561a4"
+ },
+ {
+ "ea": 4202992,
+ "size": 44,
+ "name": "sub_4021F0",
+ "hash": "d3aec19497c02c5348f9ed7837bcb3510145360bf499ab56669408d524bb4de1"
+ },
+ {
+ "ea": 4203036,
+ "size": 10,
+ "name": "sub_40221C",
+ "hash": "a1b8c8fb1fa17c505ccb575ed48c48f6a5fee25b20690c27bab8a0199ad7ac8e"
+ },
+ {
+ "ea": 4203052,
+ "size": 4,
+ "name": "sub_40222C",
+ "hash": "06936d0536d64e86c623270163a043c1b484bbc978af8fbf56cd1650cbfb6587"
+ },
+ {
+ "ea": 4203060,
+ "size": 112,
+ "name": "sub_402234",
+ "hash": "b1a18d118c239da05431d51eb8f3b399653f94e5e2345a34bad2bdf17a36505b"
+ },
+ {
+ "ea": 4203172,
+ "size": 16,
+ "name": "sub_4022A4",
+ "hash": "33b2ae336f550de0e98744de11fac68f962e98270357b7a28fd39fe8ed96d79a"
+ },
+ {
+ "ea": 4203188,
+ "size": 218,
+ "name": "sub_4022B4",
+ "hash": "a5e353b1660301bcee3ff09126c6d0cefa49d24eaa3cb31b2b4cf9085b6679a3"
+ },
+ {
+ "ea": 4203412,
+ "size": 72,
+ "name": "sub_402394",
+ "hash": "18cd5c37e872782b79ab2ec6ebe65b0070d83a62cbe40b2c903ae623b91379a7"
+ },
+ {
+ "ea": 4203604,
+ "size": 48,
+ "name": "sub_402454",
+ "hash": "897f4febf19622474628e3d699f62c5cb98ba9be5a9d2d0487fa03a0032604e4"
+ },
+ {
+ "ea": 4203656,
+ "size": 30,
+ "name": "sub_402488",
+ "hash": "c457fbe280a04e9e9173d8f2b84cd0a9d5f5cfe84ed23f877cf8ba09b9201789"
+ },
+ {
+ "ea": 4203692,
+ "size": 54,
+ "name": "powerplay_sysdrv_rpc_6003",
+ "hash": "6401fc521168e81373deb8291174ab6932e0953483f932a19012372162563770"
+ },
+ {
+ "ea": 4203746,
+ "size": 52,
+ "name": "powerplay_sysdrv_rpc_109A",
+ "hash": "1ed91389f57d753c86d48ca8cb7cead143f5cba7f0d2e5102efb4ed1a727db48"
+ },
+ {
+ "ea": 4203798,
+ "size": 44,
+ "name": "powerplay_sysdrv_rpc_6001",
+ "hash": "4b3efccc998ccd2eeb604c627167ed1e605da209a115248bf68da116325efdd3"
+ },
+ {
+ "ea": 4203842,
+ "size": 44,
+ "name": "powerplay_sysdrv_rpc_6002",
+ "hash": "0a844539f3b722652c207e56360490b91fc30d411f7e535396373802c9756fb6"
+ },
+ {
+ "ea": 4203886,
+ "size": 2,
+ "name": "powerplay_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4203888,
+ "size": 206,
+ "name": "powerplay_TA_CreateEntryPoint",
+ "hash": "465c89bb755f767fb445be3f9e3f1e41544bf93e540a86d6c0a2ebbfa409e247"
+ },
+ {
+ "ea": 4204300,
+ "size": 14,
+ "name": "powerplay_TA_DestroyEntryPoint",
+ "hash": "a17a23de469097aad0072476541a40b541bef7d7b516cf630fa02b1d366d0e1e"
+ },
+ {
+ "ea": 4204316,
+ "size": 160,
+ "name": "powerplay_TA_InvokeCommandEntryPoint",
+ "hash": "11fc913d1f5199e004bfea903ba9da0a201c9b613d354cf3f5b5bf3d0e969b97"
+ },
+ {
+ "ea": 4204512,
+ "size": 4,
+ "name": "powerplay_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4204516,
+ "size": 112,
+ "name": "sub_4027E4",
+ "hash": "03d8eb05d7b20fa66b0b6caf20bdef06ac14ef4f3e2713966e5bb4221556da3c"
+ },
+ {
+ "ea": 4204632,
+ "size": 46,
+ "name": "sub_402858",
+ "hash": "7358999164ba8a3f906ceb85dc65462e1f4017327e94cfd7ba94eabb16bf0bd0"
+ },
+ {
+ "ea": 4204678,
+ "size": 38,
+ "name": "powerplay_sysdrv_rpc_41",
+ "hash": "cf3768071b4c3d2371e3d0177c3171d28ea83435badf15cff5f8130ad028dca8"
+ },
+ {
+ "ea": 4204716,
+ "size": 12,
+ "name": "sub_4028AC",
+ "hash": "fcea1eee338ff888a8e17e0b2d5867b3f0a0d65baea0c5c80ace787b94930402"
+ },
+ {
+ "ea": 4204728,
+ "size": 12,
+ "name": "powerplay_cmd06",
+ "hash": "2bbc7043c139d90d591104f8a381261a29ee725d409d83374c218b40fc9a0185"
+ },
+ {
+ "ea": 4204740,
+ "size": 12,
+ "name": "powerplay_cmd00",
+ "hash": "28460ce6a9ce8bb7467fab31708b42eed16d9882ff9684b30260b49eb1b1a899"
+ },
+ {
+ "ea": 4204752,
+ "size": 12,
+ "name": "powerplay_cmd05",
+ "hash": "99a0e7e19f20ef55fa8b29c91c0b0dadf4a597cfb5e0dd336bb8b7e5b2796fa2"
+ },
+ {
+ "ea": 4204764,
+ "size": 12,
+ "name": "powerplay_cmd02",
+ "hash": "4ea2f75768a65c237437478bbd745126a5b64867f1f6363829c70d8713fa9001"
+ },
+ {
+ "ea": 4204784,
+ "size": 776,
+ "name": "sub_4028F0",
+ "hash": "9a590304432974ece893f17e96006db2afed2ed8175c4b17a0fee1f5584f5416"
+ },
+ {
+ "ea": 4205604,
+ "size": 764,
+ "name": "sub_402C24",
+ "hash": "17bb145ae53696115dfde36d67125d5d5d7bc06487d58682c3e7a8cbd26017e1"
+ },
+ {
+ "ea": 4206412,
+ "size": 726,
+ "name": "sub_402F4C",
+ "hash": "86ad6030d44b2cae11da3987ff321f3f6e7c443ca8fde5ed4412e764d6aeee8c"
+ },
+ {
+ "ea": 4207172,
+ "size": 162,
+ "name": "sub_403244",
+ "hash": "00f6d227a7cb5dae89f1d7d63fed7c4ddead7b4deffbd282e80375acac500676"
+ },
+ {
+ "ea": 4207340,
+ "size": 698,
+ "name": "sub_4032EC",
+ "hash": "71e18dc1fa7b62ed2afaa454b7e7d5e011d915270aee8aedf8bfd85c768325d1"
+ },
+ {
+ "ea": 4208064,
+ "size": 692,
+ "name": "sub_4035C0",
+ "hash": "87b57370a323fce430ac63d57019fc4b3b62b1ce8061935a611945d6d2c7fade"
+ },
+ {
+ "ea": 4208808,
+ "size": 570,
+ "name": "sub_4038A8",
+ "hash": "1c9a55013ae121a6c90fb0697d086032060b6c895e0e8770196b9b9b26b70236"
+ },
+ {
+ "ea": 4209456,
+ "size": 642,
+ "name": "sub_403B30",
+ "hash": "7fbf29de09725a3189a6a11d2848b99333f557bdd36109404437d594bbf7d3d9"
+ },
+ {
+ "ea": 4210100,
+ "size": 132,
+ "name": "sub_403DB4",
+ "hash": "870757c15741231eb5a6709894194a478f049f7f9fd9f4cb9b8ddec0ee20aa68"
+ },
+ {
+ "ea": 4210232,
+ "size": 132,
+ "name": "sub_403E38",
+ "hash": "c79b598a81e82d6240a4555365ca31b8670ef6769dea43225400ccfcb5207706"
+ },
+ {
+ "ea": 4210372,
+ "size": 444,
+ "name": "sub_403EC4",
+ "hash": "1e761f280af1647dc7da1eda7268d655c730d19413aebde2cfe968097da05435"
+ },
+ {
+ "ea": 4210828,
+ "size": 692,
+ "name": "sub_40408C",
+ "hash": "1f55b3ede54e127ae17eba39ced8dfd7b872b4ddfc4ccfbd15b6528d0a3b8682"
+ },
+ {
+ "ea": 4211540,
+ "size": 144,
+ "name": "sub_404354",
+ "hash": "c0da8dc4f0364387bb01dd73aec6952b97bd57635b702fe312a8594cc4f17103"
+ },
+ {
+ "ea": 4211692,
+ "size": 580,
+ "name": "sub_4043EC",
+ "hash": "8ed00ee468057dcaf3bf5d3e4e2f499cd0f7b8dda56f1689f87ddea10e41c6de"
+ },
+ {
+ "ea": 4212276,
+ "size": 134,
+ "name": "sub_404634",
+ "hash": "dfa8ec4e221fc8d9613757f8c6fb02d3c544df6709208faac0970067135ba6fb"
+ },
+ {
+ "ea": 4212420,
+ "size": 670,
+ "name": "sub_4046C4",
+ "hash": "b9497c54a18bc59de5da59b5863cf7e84fcd267782f2fc6c37bfce2ca8ffc927"
+ },
+ {
+ "ea": 4213132,
+ "size": 664,
+ "name": "sub_40498C",
+ "hash": "84d248211fbaf4265f787ed9a99ec58e3b51a3fb018b4db5ccf855e7e37a870f"
+ },
+ {
+ "ea": 4213844,
+ "size": 528,
+ "name": "sub_404C54",
+ "hash": "f3b7aeec7d03a3e0e8fb83b6ff071fb7c602408319c392b8147e804f3c38a03c"
+ },
+ {
+ "ea": 4214500,
+ "size": 646,
+ "name": "sub_404EE4",
+ "hash": "7c66d5b99f95c3f07d03c5cdcf4650c9600016a4d13d1fb67c3b22e371d9e54b"
+ },
+ {
+ "ea": 4215148,
+ "size": 116,
+ "name": "sub_40516C",
+ "hash": "478b561d0ae77ed57859afdfe5b3542b33aa9ba4a2e71a79d2c8b7b98efa544b"
+ },
+ {
+ "ea": 4215268,
+ "size": 132,
+ "name": "sub_4051E4",
+ "hash": "c79b598a81e82d6240a4555365ca31b8670ef6769dea43225400ccfcb5207706"
+ },
+ {
+ "ea": 4215408,
+ "size": 372,
+ "name": "sub_405270",
+ "hash": "d1971294871e87d69b1dc8f206b75783bed1bf479e4c5bbbf3f17f419fe07ce6"
+ },
+ {
+ "ea": 4215784,
+ "size": 590,
+ "name": "sub_4053E8",
+ "hash": "b9345bd9d542cdf497e461085731ae26089fe6e7b5d8f6f637b0626b6de7d868"
+ },
+ {
+ "ea": 4216400,
+ "size": 162,
+ "name": "sub_405650",
+ "hash": "6c467982d4d19886cda5a9916a136d971b3e2284aa208215e0148adffad2011e"
+ },
+ {
+ "ea": 4216572,
+ "size": 576,
+ "name": "sub_4056FC",
+ "hash": "f12723608677d81b69e4f6c14f6a580109e7a964e45f80ba35a0bba5faa293d3"
+ },
+ {
+ "ea": 4217156,
+ "size": 106,
+ "name": "sub_405944",
+ "hash": "05867d190eb0baed47549e3f7434bf444a650e2209fb63648f18cbab6cdb0f63"
+ },
+ {
+ "ea": 4217268,
+ "size": 528,
+ "name": "sub_4059B4",
+ "hash": "2d7bfab0d29095b994ea32640c8dcca223e23bbab68a80b7c9a946192f5752b8"
+ },
+ {
+ "ea": 4217864,
+ "size": 84,
+ "name": "sub_405C08",
+ "hash": "6f3ca48ff7711e7b25b256b6532f7e13738f54044cf969698798042f52856781"
+ },
+ {
+ "ea": 4217952,
+ "size": 106,
+ "name": "sub_405C60",
+ "hash": "5e75ed3445f895cc820b0f45c10d731f49e566160b1ac625066efa065d62adf0"
+ },
+ {
+ "ea": 4218068,
+ "size": 528,
+ "name": "sub_405CD4",
+ "hash": "d611afc6d2e8abdf9814df00111d77ba2692c9e7b8b228d6ef6c3a945ad49494"
+ },
+ {
+ "ea": 4218664,
+ "size": 84,
+ "name": "sub_405F28",
+ "hash": "9dfc7c559de9f381d4febe98d76e86bdabf234bec29d4d50d852afb0c5990073"
+ },
+ {
+ "ea": 4218752,
+ "size": 106,
+ "name": "sub_405F80",
+ "hash": "4b3a7f37c6a3c0bbfbc8245b1c2644d2bed76440ab5c3deff0b362edc8a77e1c"
+ },
+ {
+ "ea": 4218868,
+ "size": 834,
+ "name": "sub_405FF4",
+ "hash": "a461af20f72b6e9e3994978e033f85b2c4985e77afd38e45d386a26ef036baec"
+ },
+ {
+ "ea": 4219768,
+ "size": 84,
+ "name": "sub_406378",
+ "hash": "8cf9d5bcb96a13ff9c420b69d12101408bfa2ad3023c71a39d5ca48529a93271"
+ },
+ {
+ "ea": 4219856,
+ "size": 12,
+ "name": "powerplay_cmd04",
+ "hash": "fc182ff1fac04ad07ae94692a144730a2e4bc806c3f323e855a619485010af6e"
+ },
+ {
+ "ea": 4219868,
+ "size": 12,
+ "name": "powerplay_cmd03",
+ "hash": "da91b8a714c75f0cd1781950f2fee1ae1da3edf4ce7b874323945eb5dae4a23c"
+ },
+ {
+ "ea": 4219888,
+ "size": 36,
+ "name": "sub_4063F0",
+ "hash": "cf0dcdd9d1fe14057012807c673127de9a4240f870e7f1ae8c58d978e6632003"
+ },
+ {
+ "ea": 4219924,
+ "size": 228,
+ "name": "sub_406414",
+ "hash": "a446f54e238f46687268376de04d14937c87d3579954501b6b7ff33ba1622415"
+ },
+ {
+ "ea": 4220152,
+ "size": 696,
+ "name": "sub_4064F8",
+ "hash": "5487ced78e12d5ea5e74f1ed8ea15f8b58d852826ff021f65bcc554732ae9d4b"
+ },
+ {
+ "ea": 4220976,
+ "size": 220,
+ "name": "sub_406830",
+ "hash": "5da1e11f1ffd7a8dfbae9ddc692f2b2e69e690e48cb717c586d5aba85cc046ad"
+ },
+ {
+ "ea": 4221196,
+ "size": 42,
+ "name": "sub_40690C",
+ "hash": "eeee582adad29334197751dd2e40716dcb1bd6123e51ba09bb73141af049e083"
+ },
+ {
+ "ea": 4221238,
+ "size": 42,
+ "name": "sub_406936",
+ "hash": "e2ae1a4834fe4226ac9274680874c07ef1d952f8a9f0a3194f50d72756ae361a"
+ },
+ {
+ "ea": 4221280,
+ "size": 580,
+ "name": "sub_406960",
+ "hash": "db876c77ddb08681827d9fb19b88c23c6e83822e527bba0ffa9566f6e9bb2c1b"
+ },
+ {
+ "ea": 4221860,
+ "size": 148,
+ "name": "powerplay_entry_trampoline",
+ "hash": "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54"
+ },
+ {
+ "ea": 4222044,
+ "size": 48,
+ "name": "sub_406C5C",
+ "hash": "bcf5b30812f72c63f3030a9564c2494ef6edb064f8d4b98e417d0315b9d40d1c"
+ },
+ {
+ "ea": 4222092,
+ "size": 14,
+ "name": "sub_406C8C",
+ "hash": "cede31a886c13f00e258cab9ff4597ba5470a85061ef3e7bccb8b794b52ec07b"
+ },
+ {
+ "ea": 4222106,
+ "size": 72,
+ "name": "powerplay_asd_rpc_404",
+ "hash": "edf210a64264be75d91276ad66ab5ea45e4e39fdca0aab8a1931864e9d00f577"
+ },
+ {
+ "ea": 4222178,
+ "size": 54,
+ "name": "powerplay_asd_rpc_403",
+ "hash": "9a7295e0cdf5151fd8fe87390825b92dcb8f850fcc2ef9fc70aaacce288ba0c5"
+ },
+ {
+ "ea": 4222232,
+ "size": 32,
+ "name": "sub_406D18",
+ "hash": "753081808ac8892388b78b15b06dc020d54a201eea2887356f43cb52f0fbaec9"
+ },
+ {
+ "ea": 4222264,
+ "size": 34,
+ "name": "sub_406D38",
+ "hash": "57642ad1b3e551782e5291ea0856ef6b76c655921893d53e1a522a3a7985620a"
+ },
+ {
+ "ea": 4222308,
+ "size": 34,
+ "name": "sub_406D64",
+ "hash": "9be4bcf21a708a995d413a8c3234bafb81e26d148943ef16839640298a70634d"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/rap.json b/fw/libdumps/rap.json
new file mode 100644
index 0000000..6fd1824
--- /dev/null
+++ b/fw/libdumps/rap.json
@@ -0,0 +1,80 @@
+[
+ {
+ "ea": 4194560,
+ "size": 3918,
+ "name": "start",
+ "hash": "ed2420ee57f360a80c022eb7605442adff2b82a1524f4f52c4ca6b782fd6a1fc"
+ },
+ {
+ "ea": 4198478,
+ "size": 50,
+ "name": "rap_sysdrv_rpc_1077",
+ "hash": "93d89d76c4259560eea2eb89d7a3857dea941a3fc27c728fb4f1f111d93f285a"
+ },
+ {
+ "ea": 4198528,
+ "size": 44,
+ "name": "rap_sysdrv_rpc_107B",
+ "hash": "750a8a155c80a7be176b729797bd34835b14e497f23caf0231f2fa6fa2a0198a"
+ },
+ {
+ "ea": 4198572,
+ "size": 44,
+ "name": "rap_sysdrv_rpc_1076",
+ "hash": "a33670dfb9d16d32d5c55b4c52f0a20b01e36d3ffbb43da958f51881f6117fb2"
+ },
+ {
+ "ea": 4198616,
+ "size": 2,
+ "name": "rap_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4198618,
+ "size": 4,
+ "name": "rap_TA_CreateEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4198622,
+ "size": 4,
+ "name": "rap_TA_DestroyEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4198628,
+ "size": 72,
+ "name": "rap_TA_InvokeCommandEntryPoint",
+ "hash": "9e41173408844d5866f246d8723ff2aeb2554788c44a05b66edb2808b4abb47e"
+ },
+ {
+ "ea": 4198704,
+ "size": 4,
+ "name": "rap_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4198708,
+ "size": 510,
+ "name": "rap_dispatch",
+ "hash": "f6ce9a3301d5ab7799909018b4e7faba5afbd711fe6663683bdb7e2ab3e5697c"
+ },
+ {
+ "ea": 4199232,
+ "size": 430,
+ "name": "sub_401340",
+ "hash": "db77a002147b6fd415f29be78cc8fdf943d2bad411c7cbd5ccc868bf39d698ed"
+ },
+ {
+ "ea": 4199872,
+ "size": 68,
+ "name": "sub_4015C0",
+ "hash": "e73f4645af08ae494c8505238b26adcb22b83f7e2e70ebc48113fd1319ba0435"
+ },
+ {
+ "ea": 4199948,
+ "size": 232,
+ "name": "rap_cmd02",
+ "hash": "bac7ba1d0714ab8f15b9afd91b03f2995810fe630c8f6a0a83562f8c5eeb2d55"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/tmz.json b/fw/libdumps/tmz.json
new file mode 100644
index 0000000..66ad74f
--- /dev/null
+++ b/fw/libdumps/tmz.json
@@ -0,0 +1,38 @@
+[
+ {
+ "ea": 4194560,
+ "size": 1832,
+ "name": "start",
+ "hash": "c4c40366362e826b96762cadf7a92fb1c8848c353be777b0e0fef3fcaae36c09"
+ },
+ {
+ "ea": 4198584,
+ "size": 2,
+ "name": "tmz_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4198586,
+ "size": 4,
+ "name": "tmz_TA_CreateEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4198590,
+ "size": 2,
+ "name": "tmz_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4198592,
+ "size": 4,
+ "name": "tmz_TA_InvokeCommandEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4198596,
+ "size": 4,
+ "name": "tmz_TA_OpenSessionEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/wspe.json b/fw/libdumps/wspe.json
new file mode 100644
index 0000000..f3606c4
--- /dev/null
+++ b/fw/libdumps/wspe.json
@@ -0,0 +1,344 @@
+[
+ {
+ "ea": 4198400,
+ "size": 144,
+ "name": "sub_401000",
+ "hash": "5a21f0efa577d45ef593e1377c755b9e75fdc595bb66f3fe63923c523a166676"
+ },
+ {
+ "ea": 4198544,
+ "size": 48,
+ "name": "sub_401090",
+ "hash": "d985aa65fad9f97c8fae62831980f98050236abe5dab2ca823a44cf638408b25"
+ },
+ {
+ "ea": 4198596,
+ "size": 78,
+ "name": "sub_4010C4",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4198674,
+ "size": 44,
+ "name": "sub_401112",
+ "hash": "3853955a021a13b485fc22bd1b84670e2ff95ae8ad9d74a2d4e2212c0666c93d"
+ },
+ {
+ "ea": 4198718,
+ "size": 34,
+ "name": "sub_40113E",
+ "hash": "836f1b0217fe4f25f7dc98c92a839d561b2dcb7c4143e9c0c2498ff3e89f85bb"
+ },
+ {
+ "ea": 4198752,
+ "size": 18,
+ "name": "sub_401160",
+ "hash": "5f016438f075aa23d3fc07316a4ac552503bbe2e267a4b8090b4189679c8dcaa"
+ },
+ {
+ "ea": 4198770,
+ "size": 18,
+ "name": "sub_401172",
+ "hash": "3cf46bff2aaba4c22833b6d11fe9eaf3b965faef9bee986b5292fdd487ed6634"
+ },
+ {
+ "ea": 4198788,
+ "size": 82,
+ "name": "sub_401184",
+ "hash": "7fca7c43246efe935ead5531c52a8056a741129ba843acfcd4ba13a4b5234053"
+ },
+ {
+ "ea": 4198872,
+ "size": 96,
+ "name": "sub_4011D8",
+ "hash": "e4cd8bbc1b336ff3be36594417bf80952a402341a139c50c2ba8c576d2cf7b2d"
+ },
+ {
+ "ea": 4199024,
+ "size": 10,
+ "name": "sub_401270",
+ "hash": "3f07c814dbdcfd26473df43452c69e4b770f0437de75db36cc37796498b9714e"
+ },
+ {
+ "ea": 4199034,
+ "size": 32,
+ "name": "sub_40127A",
+ "hash": "e53fbaaa91c8c1d619fdf964aa5688811d4bc836d42d8276c82ef40863b0c0a7"
+ },
+ {
+ "ea": 4199072,
+ "size": 10,
+ "name": "sub_4012A0",
+ "hash": "672a63239992c561e7ed97727a7876ac47e2654d081efb9640920a6a8346c54c"
+ },
+ {
+ "ea": 4199082,
+ "size": 16,
+ "name": "sub_4012AA",
+ "hash": "852e460a54cc23652953d8c2bdbb7715df1868b604fce3e7c9f9ee34d83e133b"
+ },
+ {
+ "ea": 4199100,
+ "size": 182,
+ "name": "sub_4012BC",
+ "hash": "6e8fb1dbdb600e22db6a6efa7e8a56e056e7cb496378f416743769c6553d5585"
+ },
+ {
+ "ea": 4199288,
+ "size": 108,
+ "name": "sub_401378",
+ "hash": "2cd8784313a50c2dce77f010467e226badfea198fab9f3a41e83dfe939da47ad"
+ },
+ {
+ "ea": 4199480,
+ "size": 24,
+ "name": "sub_401438",
+ "hash": "e6824d52a285d8817fd261bb9470689c0540196624006bc3f55f6abc796c6a49"
+ },
+ {
+ "ea": 4199610,
+ "size": 28,
+ "name": "sub_4014BA",
+ "hash": "1bc4925367c80cc9fb19db3b575332e1bb924329a6086f7ea07aa48eb1395880"
+ },
+ {
+ "ea": 4199672,
+ "size": 388,
+ "name": "sub_4014F8",
+ "hash": "532bc9d6ddcddb1e191e0b9b9f57aa3252fa0e77ccd76d3662e38eaf8a60747e"
+ },
+ {
+ "ea": 4200064,
+ "size": 152,
+ "name": "sub_401680",
+ "hash": "d83c24bf66dd5e4434ec78f8dfa2d7e87be894ffaf0bc141a979667e7a16a135"
+ },
+ {
+ "ea": 4200216,
+ "size": 178,
+ "name": "sub_401718",
+ "hash": "366a1cebd6f1e481f5d77fc1def8b3d27f74055d3f55cc0ab56e23e3f979657b"
+ },
+ {
+ "ea": 4200394,
+ "size": 434,
+ "name": "sub_4017CA",
+ "hash": "341ef0d61d2712aa4b4a221fd4183fb0de380e0d690c329077ba52de2bb21c8f"
+ },
+ {
+ "ea": 4200828,
+ "size": 606,
+ "name": "sub_40197C",
+ "hash": "ed273118d5c311006e4b233bbc292cd2be97d0983243b02e2df6dc30af2764e5"
+ },
+ {
+ "ea": 4201436,
+ "size": 758,
+ "name": "sub_401BDC",
+ "hash": "bbda50c694155d759dc7ece6fa839266a390f148505fa9787e61111698081fdd"
+ },
+ {
+ "ea": 4202204,
+ "size": 20,
+ "name": "sub_401EDC",
+ "hash": "71f661028497c818aac050aa228c6f9e92d753b82d91e2604d145a70676a6f89"
+ },
+ {
+ "ea": 4202248,
+ "size": 20,
+ "name": "sub_401F08",
+ "hash": "78974a434f73381d42d804dc7940c79b3e532fc9e63729c25d45c618fe008a74"
+ },
+ {
+ "ea": 4202292,
+ "size": 72,
+ "name": "sub_401F34",
+ "hash": "a7faaa9b2050fdc0d9c2c07b5dc391f58f364719feccf801a0ca39b1fc4561a4"
+ },
+ {
+ "ea": 4202364,
+ "size": 44,
+ "name": "sub_401F7C",
+ "hash": "d3aec19497c02c5348f9ed7837bcb3510145360bf499ab56669408d524bb4de1"
+ },
+ {
+ "ea": 4202408,
+ "size": 10,
+ "name": "sub_401FA8",
+ "hash": "a1b8c8fb1fa17c505ccb575ed48c48f6a5fee25b20690c27bab8a0199ad7ac8e"
+ },
+ {
+ "ea": 4202424,
+ "size": 4,
+ "name": "sub_401FB8",
+ "hash": "06936d0536d64e86c623270163a043c1b484bbc978af8fbf56cd1650cbfb6587"
+ },
+ {
+ "ea": 4202432,
+ "size": 112,
+ "name": "sub_401FC0",
+ "hash": "8680f995484160494ff3f5e6c7dade75cd60ae86bea8c00e6c43087a6512a9f9"
+ },
+ {
+ "ea": 4202544,
+ "size": 16,
+ "name": "sub_402030",
+ "hash": "33b2ae336f550de0e98744de11fac68f962e98270357b7a28fd39fe8ed96d79a"
+ },
+ {
+ "ea": 4202560,
+ "size": 218,
+ "name": "sub_402040",
+ "hash": "1eca1764617db098e9ccedb910bfb233b5a1b28ffb213663b4714ad133ded758"
+ },
+ {
+ "ea": 4202784,
+ "size": 392,
+ "name": "sub_402120",
+ "hash": "b56825b48befbc0678f72d65a630d44b1904bdffc30b5d91f4e5f9a946d7a406"
+ },
+ {
+ "ea": 4203176,
+ "size": 240,
+ "name": "sub_4022A8",
+ "hash": "d732abeab845b0dd330615e1c6446eb3f6981c68939c5963986de14c2b1efa9c"
+ },
+ {
+ "ea": 4203420,
+ "size": 38,
+ "name": "sub_40239C",
+ "hash": "a742cb170e76eb1f78f24f0b88925b1ff4e7af75f2938be7f72c5c6776b628f2"
+ },
+ {
+ "ea": 4203464,
+ "size": 32,
+ "name": "wspe_cmd04_request_dopp_active",
+ "hash": "294ed7409c88f883159120b67f6bc1b8a2e8260d7f8f80abdaed0f60ce2288ed"
+ },
+ {
+ "ea": 4203496,
+ "size": 22,
+ "name": "wspe_cmd05_request_active_protected_session",
+ "hash": "75fd87e9cdcc43979ef3be8e138d74b8e52b5fab50e717a62cfab5260b7fbe66"
+ },
+ {
+ "ea": 4203524,
+ "size": 2,
+ "name": "wspe_TA_CloseSessionEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4203526,
+ "size": 4,
+ "name": "wspe_TA_CreateEntryPoint",
+ "hash": "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4"
+ },
+ {
+ "ea": 4203530,
+ "size": 2,
+ "name": "wspe_TA_DestroyEntryPoint",
+ "hash": "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8"
+ },
+ {
+ "ea": 4203532,
+ "size": 114,
+ "name": "wspe_TA_InvokeCommandEntryPoint",
+ "hash": "1ddd29a048cc6b1ff04c0163eb9e989b281b29fd1d61c6e511229142712018d5"
+ },
+ {
+ "ea": 4203788,
+ "size": 18,
+ "name": "wspe_TA_OpenSessionEntryPoint",
+ "hash": "7872c36632aefd0d693f9962f189da5d3de06ed86a7ea94aec3435bea3ce5a25"
+ },
+ {
+ "ea": 4203832,
+ "size": 112,
+ "name": "sub_402538",
+ "hash": "482ad605337dc75dcbba5bae533a2a55585d9cff2add7e8bdba26ffe41ff7a36"
+ },
+ {
+ "ea": 4203948,
+ "size": 10,
+ "name": "sub_4025AC",
+ "hash": "d88cb4a94fb28d08e0dd51c0911fcfe3c5d613c63c095f008ea5c1c5aa7d563b"
+ },
+ {
+ "ea": 4203964,
+ "size": 30,
+ "name": "wspe_asd_rpc_306",
+ "hash": "67a0a3405240b72c6235c21f21cc530d6cd931708776296cb78a46bba54ae143"
+ },
+ {
+ "ea": 4203994,
+ "size": 30,
+ "name": "wspe_asd_rpc_305",
+ "hash": "fe551e1ceecc34d3088beac4c2a78b80264d1bc452873393a7c5dd94ca345117"
+ },
+ {
+ "ea": 4204024,
+ "size": 228,
+ "name": "sub_4025F8",
+ "hash": "a446f54e238f46687268376de04d14937c87d3579954501b6b7ff33ba1622415"
+ },
+ {
+ "ea": 4204252,
+ "size": 696,
+ "name": "sub_4026DC",
+ "hash": "5487ced78e12d5ea5e74f1ed8ea15f8b58d852826ff021f65bcc554732ae9d4b"
+ },
+ {
+ "ea": 4205076,
+ "size": 220,
+ "name": "sub_402A14",
+ "hash": "5da1e11f1ffd7a8dfbae9ddc692f2b2e69e690e48cb717c586d5aba85cc046ad"
+ },
+ {
+ "ea": 4205296,
+ "size": 42,
+ "name": "sub_402AF0",
+ "hash": "eeee582adad29334197751dd2e40716dcb1bd6123e51ba09bb73141af049e083"
+ },
+ {
+ "ea": 4205338,
+ "size": 42,
+ "name": "sub_402B1A",
+ "hash": "e2ae1a4834fe4226ac9274680874c07ef1d952f8a9f0a3194f50d72756ae361a"
+ },
+ {
+ "ea": 4205380,
+ "size": 580,
+ "name": "sub_402B44",
+ "hash": "db876c77ddb08681827d9fb19b88c23c6e83822e527bba0ffa9566f6e9bb2c1b"
+ },
+ {
+ "ea": 4205960,
+ "size": 148,
+ "name": "wspe_entry_trampoline",
+ "hash": "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54"
+ },
+ {
+ "ea": 4206144,
+ "size": 48,
+ "name": "sub_402E40",
+ "hash": "bcf5b30812f72c63f3030a9564c2494ef6edb064f8d4b98e417d0315b9d40d1c"
+ },
+ {
+ "ea": 4206192,
+ "size": 14,
+ "name": "sub_402E70",
+ "hash": "cede31a886c13f00e258cab9ff4597ba5470a85061ef3e7bccb8b794b52ec07b"
+ },
+ {
+ "ea": 4206208,
+ "size": 34,
+ "name": "sub_402E80",
+ "hash": "cbb70871a34209a75c95fb086edb300c59b7075ec4438859d9dfffc8965cf9f2"
+ },
+ {
+ "ea": 4206252,
+ "size": 34,
+ "name": "sub_402EAC",
+ "hash": "e79020adc4257108eb39154542924ea7239448c0812787a6913c64e68de97435"
+ }
+] \ No newline at end of file
diff --git a/fw/libdumps/xgmi.json b/fw/libdumps/xgmi.json
new file mode 100644
index 0000000..155b68b
--- /dev/null
+++ b/fw/libdumps/xgmi.json
@@ -0,0 +1,560 @@
+[
+ {
+ "ea": 4194560,
+ "size": 1830,
+ "name": "start",
+ "hash": "9aa85d670ba81efc739b0ffe68d53efb10c29c865c9db2a6b19b5b869b2e2a51"
+ },
+ {
+ "ea": 4198400,
+ "size": 144,
+ "name": "sub_401000",
+ "hash": "c784eeaa106d4c2ccd72dce499fb1ea6b271592eefce987c70212b230d47017f"
+ },
+ {
+ "ea": 4198544,
+ "size": 48,
+ "name": "sub_401090",
+ "hash": "45eba454dd5b353515b4bf69edb644df7f9a6482e440cf542225d5dd511b1f40"
+ },
+ {
+ "ea": 4198596,
+ "size": 236,
+ "name": "sub_4010C4",
+ "hash": "a68ca2a564e3a538aacccc9d6f715b6b658607b006a786da985f3acd12812c8d"
+ },
+ {
+ "ea": 4198832,
+ "size": 78,
+ "name": "sub_4011B0",
+ "hash": "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9"
+ },
+ {
+ "ea": 4198910,
+ "size": 44,
+ "name": "sub_4011FE",
+ "hash": "3853955a021a13b485fc22bd1b84670e2ff95ae8ad9d74a2d4e2212c0666c93d"
+ },
+ {
+ "ea": 4198954,
+ "size": 34,
+ "name": "sub_40122A",
+ "hash": "836f1b0217fe4f25f7dc98c92a839d561b2dcb7c4143e9c0c2498ff3e89f85bb"
+ },
+ {
+ "ea": 4198988,
+ "size": 18,
+ "name": "sub_40124C",
+ "hash": "5f016438f075aa23d3fc07316a4ac552503bbe2e267a4b8090b4189679c8dcaa"
+ },
+ {
+ "ea": 4199006,
+ "size": 18,
+ "name": "sub_40125E",
+ "hash": "3cf46bff2aaba4c22833b6d11fe9eaf3b965faef9bee986b5292fdd487ed6634"
+ },
+ {
+ "ea": 4199024,
+ "size": 82,
+ "name": "sub_401270",
+ "hash": "7fca7c43246efe935ead5531c52a8056a741129ba843acfcd4ba13a4b5234053"
+ },
+ {
+ "ea": 4199108,
+ "size": 96,
+ "name": "sub_4012C4",
+ "hash": "e4cd8bbc1b336ff3be36594417bf80952a402341a139c50c2ba8c576d2cf7b2d"
+ },
+ {
+ "ea": 4199260,
+ "size": 10,
+ "name": "sub_40135C",
+ "hash": "3f07c814dbdcfd26473df43452c69e4b770f0437de75db36cc37796498b9714e"
+ },
+ {
+ "ea": 4199270,
+ "size": 32,
+ "name": "sub_401366",
+ "hash": "e53fbaaa91c8c1d619fdf964aa5688811d4bc836d42d8276c82ef40863b0c0a7"
+ },
+ {
+ "ea": 4199308,
+ "size": 10,
+ "name": "sub_40138C",
+ "hash": "672a63239992c561e7ed97727a7876ac47e2654d081efb9640920a6a8346c54c"
+ },
+ {
+ "ea": 4199318,
+ "size": 16,
+ "name": "sub_401396",
+ "hash": "852e460a54cc23652953d8c2bdbb7715df1868b604fce3e7c9f9ee34d83e133b"
+ },
+ {
+ "ea": 4199336,
+ "size": 182,
+ "name": "sub_4013A8",
+ "hash": "6e8fb1dbdb600e22db6a6efa7e8a56e056e7cb496378f416743769c6553d5585"
+ },
+ {
+ "ea": 4199524,
+ "size": 108,
+ "name": "sub_401464",
+ "hash": "2cd8784313a50c2dce77f010467e226badfea198fab9f3a41e83dfe939da47ad"
+ },
+ {
+ "ea": 4199716,
+ "size": 24,
+ "name": "sub_401524",
+ "hash": "e6824d52a285d8817fd261bb9470689c0540196624006bc3f55f6abc796c6a49"
+ },
+ {
+ "ea": 4199846,
+ "size": 28,
+ "name": "sub_4015A6",
+ "hash": "1bc4925367c80cc9fb19db3b575332e1bb924329a6086f7ea07aa48eb1395880"
+ },
+ {
+ "ea": 4199908,
+ "size": 388,
+ "name": "sub_4015E4",
+ "hash": "d5a46a938e11362552c8c26af17cdac4056a39340fa2cf4d31728ac3c9c6f437"
+ },
+ {
+ "ea": 4200300,
+ "size": 152,
+ "name": "sub_40176C",
+ "hash": "d83c24bf66dd5e4434ec78f8dfa2d7e87be894ffaf0bc141a979667e7a16a135"
+ },
+ {
+ "ea": 4200452,
+ "size": 178,
+ "name": "sub_401804",
+ "hash": "366a1cebd6f1e481f5d77fc1def8b3d27f74055d3f55cc0ab56e23e3f979657b"
+ },
+ {
+ "ea": 4200630,
+ "size": 434,
+ "name": "sub_4018B6",
+ "hash": "2f6aaa9c4dd425e9bababfdc4f85749154c2b6b7e04b085dee7fbe740cebf6be"
+ },
+ {
+ "ea": 4201064,
+ "size": 606,
+ "name": "sub_401A68",
+ "hash": "48bf03bbe283fab777412eef2347b9afee6d65716c6d9793c97103ef252b9a23"
+ },
+ {
+ "ea": 4201672,
+ "size": 758,
+ "name": "sub_401CC8",
+ "hash": "6fb04c92b0956dee0db36202b57ca397da04ba02845c3fc0775424ede9940ed9"
+ },
+ {
+ "ea": 4202440,
+ "size": 20,
+ "name": "sub_401FC8",
+ "hash": "71f661028497c818aac050aa228c6f9e92d753b82d91e2604d145a70676a6f89"
+ },
+ {
+ "ea": 4202484,
+ "size": 20,
+ "name": "sub_401FF4",
+ "hash": "78974a434f73381d42d804dc7940c79b3e532fc9e63729c25d45c618fe008a74"
+ },
+ {
+ "ea": 4202528,
+ "size": 72,
+ "name": "sub_402020",
+ "hash": "a7faaa9b2050fdc0d9c2c07b5dc391f58f364719feccf801a0ca39b1fc4561a4"
+ },
+ {
+ "ea": 4202600,
+ "size": 44,
+ "name": "sub_402068",
+ "hash": "d3aec19497c02c5348f9ed7837bcb3510145360bf499ab56669408d524bb4de1"
+ },
+ {
+ "ea": 4202644,
+ "size": 10,
+ "name": "sub_402094",
+ "hash": "a1b8c8fb1fa17c505ccb575ed48c48f6a5fee25b20690c27bab8a0199ad7ac8e"
+ },
+ {
+ "ea": 4202660,
+ "size": 4,
+ "name": "sub_4020A4",
+ "hash": "06936d0536d64e86c623270163a043c1b484bbc978af8fbf56cd1650cbfb6587"
+ },
+ {
+ "ea": 4202668,
+ "size": 112,
+ "name": "sub_4020AC",
+ "hash": "8680f995484160494ff3f5e6c7dade75cd60ae86bea8c00e6c43087a6512a9f9"
+ },
+ {
+ "ea": 4202780,
+ "size": 16,
+ "name": "sub_40211C",
+ "hash": "33b2ae336f550de0e98744de11fac68f962e98270357b7a28fd39fe8ed96d79a"
+ },
+ {
+ "ea": 4202796,
+ "size": 218,
+ "name": "sub_40212C",
+ "hash": "96063e3c8bb11cd57784832979d25715afc7bad0569ca6d7884c2e333e5de88a"
+ },
+ {
+ "ea": 4203020,
+ "size": 392,
+ "name": "sub_40220C",
+ "hash": "b56825b48befbc0678f72d65a630d44b1904bdffc30b5d91f4e5f9a946d7a406"
+ },
+ {
+ "ea": 4203412,
+ "size": 240,
+ "name": "sub_402394",
+ "hash": "d732abeab845b0dd330615e1c6446eb3f6981c68939c5963986de14c2b1efa9c"
+ },
+ {
+ "ea": 4203656,
+ "size": 240,
+ "name": "sub_402488",
+ "hash": "24c0888aeaae2e3f6c6db8ddbae5cf44c99c207a7f708fba008883c6a616d8c8"
+ },
+ {
+ "ea": 4203920,
+ "size": 148,
+ "name": "sub_402590",
+ "hash": "29a39c7d53d56e5bd97c0a35875198b440855e340b5525ecae8ffc7133e56b40"
+ },
+ {
+ "ea": 4204124,
+ "size": 228,
+ "name": "sub_40265C",
+ "hash": "0d943f1f9a14746b7104ab0881c8fdc2154ec080f4d4954021cf9dd7681d7254"
+ },
+ {
+ "ea": 4204352,
+ "size": 262,
+ "name": "sub_402740",
+ "hash": "aedaceb492e91589f2fcd1d118055bee3ce137f364e02045bee7226146b2e748"
+ },
+ {
+ "ea": 4204614,
+ "size": 70,
+ "name": "sub_402846",
+ "hash": "900da4aadfb640db87a511db18e33c5c07ccf0be1c531045885e30dfd115578f"
+ },
+ {
+ "ea": 4204944,
+ "size": 10,
+ "name": "xgmi_TA_CloseSessionEntryPoint",
+ "hash": "05bf64ddd7ea57ef8fa41e9afe892c829177a6ad07049bb1e780e574ad3a130e"
+ },
+ {
+ "ea": 4204954,
+ "size": 64,
+ "name": "xgmi_TA_CreateEntryPoint",
+ "hash": "91e7bb30e770d7bb4f50f2435a1a470ad9df078286620dc1041b029d156bbfe0"
+ },
+ {
+ "ea": 4205018,
+ "size": 64,
+ "name": "xgmi_TA_DestroyEntryPoint",
+ "hash": "6e3607dee52f0e6b8ac6968cba1bb0e0ad92d5b59b11d2c063a715596f043509"
+ },
+ {
+ "ea": 4205084,
+ "size": 388,
+ "name": "xgmi_TA_InvokeCommandEntryPoint",
+ "hash": "ef4c702eee4acae457e405085383cd03ecd53d4ac67549ca5a846d6bd75b9288"
+ },
+ {
+ "ea": 4205472,
+ "size": 30,
+ "name": "xgmi_TA_OpenSessionEntryPoint",
+ "hash": "517cbb53ac541d5eaac7bbf3d34ad57e8bfeae74f67a777ef5b08f3d218b2224"
+ },
+ {
+ "ea": 4205502,
+ "size": 74,
+ "name": "sub_402BBE",
+ "hash": "ad3c2851699739c54c7173d3b5117fefe9b476d8f195b87a4943e8be8c74d8de"
+ },
+ {
+ "ea": 4205576,
+ "size": 156,
+ "name": "sub_402C08",
+ "hash": "58e29af1f9032bf7536ca91b94de040e4cdcb34fecbd811dcac25ce6d0487b34"
+ },
+ {
+ "ea": 4205732,
+ "size": 200,
+ "name": "sub_402CA4",
+ "hash": "6c7ce3f7bcbda6c4bb27ebd3beb365c71e713a3ba62364e112ab6705cf770d6f"
+ },
+ {
+ "ea": 4205948,
+ "size": 130,
+ "name": "sub_402D7C",
+ "hash": "6cd0dd4017ef1d63bcf755152416260225b5805f9d2b23a6e712009e59963e7f"
+ },
+ {
+ "ea": 4206096,
+ "size": 16,
+ "name": "sub_402E10",
+ "hash": "a6d203bb10f64527605dddc11ad03ee8a81bd81545060d305cd4b28c558dd7c7"
+ },
+ {
+ "ea": 4206112,
+ "size": 178,
+ "name": "sub_402E20",
+ "hash": "4d3f5cbbbe13ad7f0224d3581cf2ce3e812d98dcffa46f069685312adeee2ce3"
+ },
+ {
+ "ea": 4206290,
+ "size": 44,
+ "name": "sub_402ED2",
+ "hash": "c9c437fff12fec11400caa8dfcf4e7a90b1ff3aa4c89551a8b55ae4d40696658"
+ },
+ {
+ "ea": 4206334,
+ "size": 102,
+ "name": "sub_402EFE",
+ "hash": "a8347ec7240609f10d9b68ea4cc72a99767547a20fe1f3a54adc1d0c62339c1c"
+ },
+ {
+ "ea": 4206436,
+ "size": 190,
+ "name": "sub_402F64",
+ "hash": "6c4a0f87d45497322fbd48308b98f8a1d58ef2368945e1ba15c489bde43d7715"
+ },
+ {
+ "ea": 4206644,
+ "size": 36,
+ "name": "xgmi_cmd0B",
+ "hash": "6ac2ad3840f78ba37300a2f9bfb5d7b43cf6ed97e11edc8b7edc512799e898f4"
+ },
+ {
+ "ea": 4206680,
+ "size": 64,
+ "name": "xgmi_cmd01",
+ "hash": "64e3a0ca43520e89c7a000f1aecee1d842c77f5cbb7f8ea20295b5967304bb84"
+ },
+ {
+ "ea": 4206760,
+ "size": 114,
+ "name": "xgmi_cmd05",
+ "hash": "4face86b71f1dd29952be4fb158ec884cc404e1368338ed02f611d055728525d"
+ },
+ {
+ "ea": 4206874,
+ "size": 40,
+ "name": "xgmi_cmd03",
+ "hash": "e0025fd14297d60ed6a5445e8d67d0771807d7b73473a78dcd0d6d4b25318e28"
+ },
+ {
+ "ea": 4206916,
+ "size": 226,
+ "name": "xgmi_cmd00",
+ "hash": "667c68b7cfbc087459e0979ca20c1afdbe45ce4daa866edcf359615167f1b1ee"
+ },
+ {
+ "ea": 4207160,
+ "size": 300,
+ "name": "xgmi_cmd06",
+ "hash": "8c7adc3ba0bb24e28d98cbfb3c97091fe28be648f069380473e5090742a3bd57"
+ },
+ {
+ "ea": 4207460,
+ "size": 68,
+ "name": "xgmi_cmd08",
+ "hash": "512252438559c1d8766584ecdcc726340e20526de252a171f80205b259ce2137"
+ },
+ {
+ "ea": 4207528,
+ "size": 48,
+ "name": "xgmi_cmd09",
+ "hash": "0de3c4cc5b2959d5f1e6e182d153795d975dc33a7b0b45039fc20fdbec99be56"
+ },
+ {
+ "ea": 4207576,
+ "size": 36,
+ "name": "xgmi_cmd04",
+ "hash": "912e9dd7faee2d88346c71dccd22eb7ab67e4b278b350c3f4dbaa863dd2431b0"
+ },
+ {
+ "ea": 4207612,
+ "size": 42,
+ "name": "xgmi_cmd07",
+ "hash": "deeb4f87448c4973646219e2332eba6ef573b3c0d3c0ca2955a3be843801f440"
+ },
+ {
+ "ea": 4207654,
+ "size": 48,
+ "name": "xgmi_cmd0A",
+ "hash": "7acd7b4baa221929e9a0640d357655b3492beed809b3a413cc8bf4fabdf160ed"
+ },
+ {
+ "ea": 4207702,
+ "size": 228,
+ "name": "sub_403456",
+ "hash": "a446f54e238f46687268376de04d14937c87d3579954501b6b7ff33ba1622415"
+ },
+ {
+ "ea": 4207930,
+ "size": 696,
+ "name": "sub_40353A",
+ "hash": "5487ced78e12d5ea5e74f1ed8ea15f8b58d852826ff021f65bcc554732ae9d4b"
+ },
+ {
+ "ea": 4208754,
+ "size": 220,
+ "name": "sub_403872",
+ "hash": "5da1e11f1ffd7a8dfbae9ddc692f2b2e69e690e48cb717c586d5aba85cc046ad"
+ },
+ {
+ "ea": 4208974,
+ "size": 42,
+ "name": "sub_40394E",
+ "hash": "eeee582adad29334197751dd2e40716dcb1bd6123e51ba09bb73141af049e083"
+ },
+ {
+ "ea": 4209016,
+ "size": 42,
+ "name": "sub_403978",
+ "hash": "e2ae1a4834fe4226ac9274680874c07ef1d952f8a9f0a3194f50d72756ae361a"
+ },
+ {
+ "ea": 4209058,
+ "size": 580,
+ "name": "sub_4039A2",
+ "hash": "db876c77ddb08681827d9fb19b88c23c6e83822e527bba0ffa9566f6e9bb2c1b"
+ },
+ {
+ "ea": 4209640,
+ "size": 148,
+ "name": "xgmi_entry_trampoline",
+ "hash": "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54"
+ },
+ {
+ "ea": 4209824,
+ "size": 32,
+ "name": "sub_403CA0",
+ "hash": "84c0604ad922a120da7ebec4a57af6233759a52e5e2e87fa59181fd1681733a9"
+ },
+ {
+ "ea": 4209860,
+ "size": 42,
+ "name": "xgmi_sysdrv_rpc_1067",
+ "hash": "d0f8e9b59ec8c33b0ceb286a23e78421ca787cb7739ea654e4181830038d1418"
+ },
+ {
+ "ea": 4209902,
+ "size": 42,
+ "name": "xgmi_sysdrv_rpc_1048",
+ "hash": "003a0320a126ff9cdaeced0b2190f3c57f5347165b7e3b54de8d47f5a8565022"
+ },
+ {
+ "ea": 4209944,
+ "size": 42,
+ "name": "xgmi_sysdrv_rpc_1049",
+ "hash": "db29de09237315e437cc8cf16d52b5ae53810dfd61ed9231731911968208a0e3"
+ },
+ {
+ "ea": 4209986,
+ "size": 42,
+ "name": "xgmi_sysdrv_rpc_104B",
+ "hash": "e9897d964eaeae0b15f6025fbf905313283c15af1f09f2b44c1d9d8a168e7463"
+ },
+ {
+ "ea": 4210028,
+ "size": 46,
+ "name": "xgmi_sysdrv_rpc_1052",
+ "hash": "ccddffc174a87a70f47a310956c36517a7947ffaf5a17b58aaa7151e00e56026"
+ },
+ {
+ "ea": 4210074,
+ "size": 56,
+ "name": "xgmi_sysdrv_rpc_1061",
+ "hash": "c362b5f08885d583ebbb5fd7d3e3103ee0c0d2712c2646038f45b077b5d0aefc"
+ },
+ {
+ "ea": 4210130,
+ "size": 40,
+ "name": "xgmi_sysdrv_rpc_104A",
+ "hash": "c80131e73b40092d1fcd09ff7b34fc1a031b21acdb0b8ce6c7bf91adf30be0de"
+ },
+ {
+ "ea": 4210170,
+ "size": 40,
+ "name": "xgmi_sysdrv_rpc_1053",
+ "hash": "4e6ae3bfdee9d861bd0c8c770f7ad7571752d20260621c287c668b7618bcf66e"
+ },
+ {
+ "ea": 4210210,
+ "size": 46,
+ "name": "xgmi_sysdrv_rpc_1062",
+ "hash": "f0fc0f1f3dba9212fb824e741aaee498dacba2c691297d3a1d7b92982e79e1b7"
+ },
+ {
+ "ea": 4210256,
+ "size": 48,
+ "name": "xgmi_sysdrv_rpc_1",
+ "hash": "e3d5ac692d6f6b3377c9fd51684ab091437a11b90ed1ed9f7694bb5fd0423e0a"
+ },
+ {
+ "ea": 4210304,
+ "size": 90,
+ "name": "xgmi_sysdrv_rpc_53",
+ "hash": "018bf5c513a8d5ec647512cd461299067ed1ff0894fc75a27df394cd5a8f00fb"
+ },
+ {
+ "ea": 4210400,
+ "size": 64,
+ "name": "xgmi_sysdrv_rpc_D",
+ "hash": "226c7ca6a9d6c05097b4f75064392cb9eb92c5e5e1a0c68498e5060dadfc3fbd"
+ },
+ {
+ "ea": 4210464,
+ "size": 34,
+ "name": "sub_403F20",
+ "hash": "ad01cbaeb8cd8000f2e850f5ba847b89cb1eff1c7f04a09f73c6974bec1cf8cf"
+ },
+ {
+ "ea": 4210498,
+ "size": 32,
+ "name": "xgmi_sysdrv_rpc_2",
+ "hash": "6c73951a2907a9dbd3ec1ca751c59b05eba957b7f670cfbdc06254a7ca1d35e1"
+ },
+ {
+ "ea": 4210532,
+ "size": 72,
+ "name": "sub_403F64",
+ "hash": "1a956f7560054dfc2bea64047b778ddb73200959b4eb0dcee50ce3c3c79ddd04"
+ },
+ {
+ "ea": 4210608,
+ "size": 48,
+ "name": "sub_403FB0",
+ "hash": "bcf5b30812f72c63f3030a9564c2494ef6edb064f8d4b98e417d0315b9d40d1c"
+ },
+ {
+ "ea": 4210656,
+ "size": 14,
+ "name": "sub_403FE0",
+ "hash": "cede31a886c13f00e258cab9ff4597ba5470a85061ef3e7bccb8b794b52ec07b"
+ },
+ {
+ "ea": 4210672,
+ "size": 34,
+ "name": "sub_403FF0",
+ "hash": "4a2e39e6706c0064018d03e1ad49a2b401f6102b47824ddb19c4febc0349adba"
+ },
+ {
+ "ea": 4210716,
+ "size": 34,
+ "name": "sub_40401C",
+ "hash": "70689d0cc5feb6649c8089d85cf7d6e6ce55ef2675496a132a45bab36b583eac"
+ }
+] \ No newline at end of file
diff --git a/fw/libnames.json b/fw/libnames.json
new file mode 100644
index 0000000..a05c92a
--- /dev/null
+++ b/fw/libnames.json
@@ -0,0 +1,57 @@
+{
+ "a80dedbaf7c5a73d59c71b771e348e7607e5b7fca998cf9dcf153421a2eaceb9": "lib_zero_fill_words",
+ "3853955a021a13b485fc22bd1b84670e2ff95ae8ad9d74a2d4e2212c0666c93d": "lib_3853955a_44",
+ "836f1b0217fe4f25f7dc98c92a839d561b2dcb7c4143e9c0c2498ff3e89f85bb": "lib_836f1b02_34",
+ "5f016438f075aa23d3fc07316a4ac552503bbe2e267a4b8090b4189679c8dcaa": "lib_5f016438_18",
+ "3cf46bff2aaba4c22833b6d11fe9eaf3b965faef9bee986b5292fdd487ed6634": "lib_3cf46bff_18",
+ "7fca7c43246efe935ead5531c52a8056a741129ba843acfcd4ba13a4b5234053": "lib_7fca7c43_82",
+ "e4cd8bbc1b336ff3be36594417bf80952a402341a139c50c2ba8c576d2cf7b2d": "lib_e4cd8bbc_96",
+ "3f07c814dbdcfd26473df43452c69e4b770f0437de75db36cc37796498b9714e": "lib_3f07c814_10",
+ "e53fbaaa91c8c1d619fdf964aa5688811d4bc836d42d8276c82ef40863b0c0a7": "lib_e53fbaaa_32",
+ "672a63239992c561e7ed97727a7876ac47e2654d081efb9640920a6a8346c54c": "lib_672a6323_10",
+ "852e460a54cc23652953d8c2bdbb7715df1868b604fce3e7c9f9ee34d83e133b": "lib_852e460a_16",
+ "6e8fb1dbdb600e22db6a6efa7e8a56e056e7cb496378f416743769c6553d5585": "lib_6e8fb1db_182",
+ "2cd8784313a50c2dce77f010467e226badfea198fab9f3a41e83dfe939da47ad": "lib_2cd87843_108",
+ "e6824d52a285d8817fd261bb9470689c0540196624006bc3f55f6abc796c6a49": "lib_e6824d52_24",
+ "1bc4925367c80cc9fb19db3b575332e1bb924329a6086f7ea07aa48eb1395880": "lib_1bc49253_28",
+ "d83c24bf66dd5e4434ec78f8dfa2d7e87be894ffaf0bc141a979667e7a16a135": "lib_d83c24bf_152",
+ "366a1cebd6f1e481f5d77fc1def8b3d27f74055d3f55cc0ab56e23e3f979657b": "lib_366a1ceb_178",
+ "71f661028497c818aac050aa228c6f9e92d753b82d91e2604d145a70676a6f89": "lib_71f66102_20",
+ "78974a434f73381d42d804dc7940c79b3e532fc9e63729c25d45c618fe008a74": "lib_78974a43_20",
+ "a7faaa9b2050fdc0d9c2c07b5dc391f58f364719feccf801a0ca39b1fc4561a4": "lib_a7faaa9b_72",
+ "d3aec19497c02c5348f9ed7837bcb3510145360bf499ab56669408d524bb4de1": "lib_d3aec194_44",
+ "a1b8c8fb1fa17c505ccb575ed48c48f6a5fee25b20690c27bab8a0199ad7ac8e": "lib_a1b8c8fb_10",
+ "06936d0536d64e86c623270163a043c1b484bbc978af8fbf56cd1650cbfb6587": "lib_06936d05_4",
+ "8680f995484160494ff3f5e6c7dade75cd60ae86bea8c00e6c43087a6512a9f9": "lib_8680f995_112",
+ "33b2ae336f550de0e98744de11fac68f962e98270357b7a28fd39fe8ed96d79a": "lib_33b2ae33_16",
+ "b56825b48befbc0678f72d65a630d44b1904bdffc30b5d91f4e5f9a946d7a406": "lib_b56825b4_392",
+ "d732abeab845b0dd330615e1c6446eb3f6981c68939c5963986de14c2b1efa9c": "lib_d732abea_240",
+ "a446f54e238f46687268376de04d14937c87d3579954501b6b7ff33ba1622415": "lib_a446f54e_228",
+ "5487ced78e12d5ea5e74f1ed8ea15f8b58d852826ff021f65bcc554732ae9d4b": "lib_5487ced7_696",
+ "5da1e11f1ffd7a8dfbae9ddc692f2b2e69e690e48cb717c586d5aba85cc046ad": "lib_5da1e11f_220",
+ "eeee582adad29334197751dd2e40716dcb1bd6123e51ba09bb73141af049e083": "lib_eeee582a_42",
+ "e2ae1a4834fe4226ac9274680874c07ef1d952f8a9f0a3194f50d72756ae361a": "lib_e2ae1a48_42",
+ "db876c77ddb08681827d9fb19b88c23c6e83822e527bba0ffa9566f6e9bb2c1b": "lib_db876c77_580",
+ "b1cf532a2394e21e461bf5a531c14053a2bcbc447d21c4c65c627b4141957d54": "lib_entry_trampoline",
+ "bcf5b30812f72c63f3030a9564c2494ef6edb064f8d4b98e417d0315b9d40d1c": "lib_bcf5b308_48",
+ "cede31a886c13f00e258cab9ff4597ba5470a85061ef3e7bccb8b794b52ec07b": "lib_cede31a8_14",
+ "db5482d69d3ec7167e44b5529a0a40a9b33faf71981df144454e7da44e9360cc": "lib_db5482d6_100",
+ "259290c6ec628f49b5e96ab96c2ec07a4c2750f2bb9b9d6cac47330c190c8118": "lib_zero_fill_bytes",
+ "c7dfbb7d02759eacb64dbc916c1bb6f21eabaff1c1032ea5c9176abf7fd28df8": "lib_stub_ret",
+ "a7ddd513d149ea16fdd4db3f82267f83087aeaddd06b5dde5468adb704205fc4": "lib_stub_ret0",
+ "c17598fe035d4eb5d3859fe76bf089167e46b90feae1d9a70f7a63beb51950ef": "lib_c17598fe_22",
+ "137f0289d27a3528ff0747aad2f203f9a86a6c3b44e09721af69eaecb8bc78db": "lib_137f0289_22",
+ "16aa06d99f67d8e2cc926761044d58623efed78d6b0071e5160dbac418c9b41a": "lib_thunk_tailjump",
+ "f6e388c198c32f5a61201235d46f83804b35fb3f7cad11bce078305927d9277f": "lib_f6e388c1_24",
+ "918f1510322ca3035a785bb82e2bc2f5f324db4ad87964c4c580f247342b859e": "lib_918f1510_28",
+ "18cd5c37e872782b79ab2ec6ebe65b0070d83a62cbe40b2c903ae623b91379a7": "lib_18cd5c37_72",
+ "897f4febf19622474628e3d699f62c5cb98ba9be5a9d2d0487fa03a0032604e4": "lib_897f4feb_48",
+ "c457fbe280a04e9e9173d8f2b84cd0a9d5f5cfe84ed23f877cf8ba09b9201789": "lib_c457fbe2_30",
+ "426f2ac9878ad9878d7557107d400053ec2ece9c18572dbbcbd4c9acce5d4a67": "lib_426f2ac9_52",
+ "52b900d8b8c078c6622ad2fdc3aa6595c57c44fee736e2e7adb86f24bbe15d69": "lib_52b900d8_88",
+ "922cdbd26d4069e61b85a813edd59c340858568e9b8038a2dbc887a95dcff440": "lib_922cdbd2_64",
+ "a9e20b9388460c396c5673395c7ae54f0e2273d279cdfd389db2c9ad7160a4ba": "lib_a9e20b93_28",
+ "fe551e1ceecc34d3088beac4c2a78b80264d1bc452873393a7c5dd94ca345117": "lib_fe551e1c_30",
+ "78b55a6d5b794f6e3717051bf9be810ba755b330765feafdb3a8169316dc8891": "lib_78b55a6d_30",
+ "10a06412980e790b4d775670c93cf9f0c78b59714ed51ba59e3d98f0a1d8aa2a": "lib_10a06412_30"
+} \ No newline at end of file
diff --git a/fw/ta_libmatch.py b/fw/ta_libmatch.py
new file mode 100644
index 0000000..940bae1
--- /dev/null
+++ b/fw/ta_libmatch.py
@@ -0,0 +1,133 @@
+#!/usr/bin/env python3
+"""Identify shared runtime routines across the TAs and propagate one name to all of them.
+
+These twelve TAs are built against the same PSP TEE runtime, so the same helper appears
+byte-identical in many of them. Naming such a routine once and propagating it by content
+hash is far better leverage than renaming 384 anonymous functions one at a time, and it is
+verifiable: a cluster is only accepted when the bytes match exactly.
+
+Two modes:
+ dump --prefix X --body B : record IDA's function list + per-function content hash
+ report : cluster across all dumps, rank by how many TAs share it
+ apply --prefix X : rename that TA's members of every named cluster
+
+Cluster names live in fw/libnames.json ({hash: name}), filled in from inspection, so the
+mapping is auditable rather than implicit.
+
+usage: IDATUI_RPC_SOCK=... ta_libmatch.py dump --prefix gcp --body <body.bin>
+ ta_libmatch.py report
+ IDATUI_RPC_SOCK=... ta_libmatch.py apply --prefix gcp
+"""
+import argparse
+import glob
+import hashlib
+import json
+import os
+import sys
+import tempfile
+
+CWD = os.path.expanduser('~/dev/ida-tui-maybe')
+sys.path.insert(0, CWD)
+from idatui.rpcclient import RpcClient # noqa: E402
+
+REPO = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+DUMPS = os.path.join(REPO, 'fw', 'libdumps')
+NAMES = os.path.join(REPO, 'fw', 'libnames.json')
+BASE = 0x400100
+
+
+def connect():
+ return RpcClient(os.environ['IDATUI_RPC_SOCK'], timeout=60)
+
+
+def cmd_dump(a):
+ c = connect()
+ c.connect()
+ fs = c.call('functions', filter='', limit=2000)
+ body = open(a.body, 'rb').read()
+ out = []
+ for f in fs:
+ ea, sz, nm = f.get('ea'), f.get('size') or 0, f.get('name')
+ off = ea - BASE
+ if off < 0 or sz <= 0 or off + sz > len(body):
+ continue
+ h = hashlib.sha256(body[off:off + sz]).hexdigest()
+ out.append(dict(ea=ea, size=sz, name=nm, hash=h))
+ os.makedirs(DUMPS, exist_ok=True)
+ json.dump(out, open(os.path.join(DUMPS, '%s.json' % a.prefix), 'w'), indent=1)
+ print('%s: %d functions dumped (%d hashable)' % (a.prefix, len(fs), len(out)))
+ return 0
+
+
+def load_dumps():
+ d = {}
+ for p in glob.glob(os.path.join(DUMPS, '*.json')):
+ d[os.path.basename(p)[:-5]] = json.load(open(p))
+ return d
+
+
+def cmd_report(a):
+ dumps = load_dumps()
+ clusters = {}
+ for ta, fns in dumps.items():
+ for f in fns:
+ clusters.setdefault(f['hash'], []).append((ta, f))
+ shared = {h: v for h, v in clusters.items() if len({x[0] for x in v}) >= 2}
+ print('TAs dumped: %d ; functions: %d ; distinct bodies: %d ; shared across >=2 TAs: %d'
+ % (len(dumps), sum(len(v) for v in dumps.values()), len(clusters), len(shared)))
+ named = json.load(open(NAMES)) if os.path.exists(NAMES) else {}
+ rows = sorted(shared.items(), key=lambda kv: -len({x[0] for x in kv[1]}))
+ print('\n%-12s %-5s %-5s %-8s %s' % ('hash', 'TAs', 'size', 'named?', 'example names'))
+ for h, v in rows[:40]:
+ tas = sorted({x[0] for x in v})
+ ex = sorted({x[1]['name'] for x in v})[:3]
+ print('%-12s %-5d %-5d %-8s %s'
+ % (h[:10], len(tas), v[0][1]['size'],
+ named.get(h, '-')[:8], ', '.join(ex)[:58]))
+ unnamed = [h for h, v in rows if h not in named]
+ print('\nshared clusters still unnamed: %d (covering %d function instances)'
+ % (len(unnamed), sum(len(clusters[h]) for h in unnamed)))
+ return 0
+
+
+def cmd_apply(a):
+ names = json.load(open(NAMES))
+ dumps = load_dumps()
+ fns = dumps.get(a.prefix, [])
+ syms = [dict(addr=f['ea'], name='%s_%s' % (a.prefix, names[f['hash']]))
+ for f in fns if f['hash'] in names and f['name'].startswith('sub_')]
+ if not syms:
+ print('%s: nothing to apply' % a.prefix)
+ return 0
+ c = connect()
+ c.connect()
+ with tempfile.NamedTemporaryFile('w', suffix='.json', delete=False) as fh:
+ json.dump(syms, fh)
+ p = fh.name
+ r = c.call('rename_many', file=p) or {}
+ m = r.get('rename_many', r)
+ os.unlink(p)
+ c.call('save')
+ print('%s: applied %s/%s shared-library names' % (a.prefix, m.get('ok'),
+ m.get('requested')))
+ return 0
+
+
+def main():
+ ap = argparse.ArgumentParser()
+ sub = ap.add_subparsers(dest='mode', required=True)
+ d = sub.add_parser('dump')
+ d.add_argument('--prefix', required=True)
+ d.add_argument('--body', required=True)
+ d.set_defaults(fn=cmd_dump)
+ r = sub.add_parser('report')
+ r.set_defaults(fn=cmd_report)
+ p = sub.add_parser('apply')
+ p.add_argument('--prefix', required=True)
+ p.set_defaults(fn=cmd_apply)
+ a = ap.parse_args()
+ return a.fn(a)
+
+
+if __name__ == '__main__':
+ raise SystemExit(main())