aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruser <user@clank>2026-10-01 18:41:57 +0200
committeruser <user@clank>2026-10-01 18:41:57 +0200
commitf370384a949cfb40947bf0bed8f74b58dfd409b8 (patch)
tree7ff4b397a077098932f45f9956df923a52521b5f
parenthalf the remaining name contradictions are not contradictions: SVC thunks car... (diff)
downloadamd-psp-re-f370384a949cfb40947bf0bed8f74b58dfd409b8.tar.gz
amd-psp-re-f370384a949cfb40947bf0bed8f74b58dfd409b8.tar.xz
amd-psp-re-f370384a949cfb40947bf0bed8f74b58dfd409b8.zip
rename 54 entry_trampoline instances to ta_main_loop, which is what the body does
The last unadjudicated name contradiction. Eight modules called this function entry_trampoline while DTM, RAS, HDCP and ASD called the byte-identical function ta_main_loop, and the body settles it rather than the head count: while (1) { SVC 0xF0; v6 = *a1; switch (v6) { ... } v7(); } It is __noreturn, yields to the OS, dispatches on the request code at *a1, calls the handler and loops forever. That is a main loop. A trampoline does not loop, so entry_trampoline is the wrong word and the 54 instances under it were the outliers despite being the larger group. Fixed across xgmi, wspe, gcp, merit, opm, csu, powerplay and auc; no entry_trampoline remains in any artifact. Counts are unchanged at 19,352 named, 112 placeholders and 67.5% field share, which is correct for a rename of already-named functions -- it changes what the artifacts say, not what they cover. Cross-module name contradictions are now 32 -> 10, of which six are the SVC thunks that are correctly non-identical, two are legitimate synonym pairs (bzero_core against lib_zero_fill_words), and two are ASD's own semantic-versus-transport naming. Nothing is left that reading a body can decide.
-rw-r--r--fw/AUDIT-TA-NAMING.md12
-rw-r--r--fw/decomp/auc_16.0.0.9_9e9044cf.c80
-rw-r--r--fw/decomp/auc_16.0.0.9_9e9044cf.index.json2
-rw-r--r--fw/decomp/csu_42.0.0.0_94f19bf9.c80
-rw-r--r--fw/decomp/csu_42.0.0.0_94f19bf9.index.json2
-rw-r--r--fw/decomp/csu_42.0.0.2_40725c76.c80
-rw-r--r--fw/decomp/csu_42.0.0.2_40725c76.index.json2
-rw-r--r--fw/decomp/csu_42.0.0.6_1c874c3c.c80
-rw-r--r--fw/decomp/csu_42.0.0.6_1c874c3c.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.53_14b24632.c76
-rw-r--r--fw/decomp/gcp_22.0.0.53_14b24632.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.57_713166b8.c76
-rw-r--r--fw/decomp/gcp_22.0.0.57_713166b8.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.60_38628e32.c76
-rw-r--r--fw/decomp/gcp_22.0.0.60_38628e32.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.62_7b7e9c9b.c76
-rw-r--r--fw/decomp/gcp_22.0.0.62_7b7e9c9b.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.64_00133a50.c76
-rw-r--r--fw/decomp/gcp_22.0.0.64_00133a50.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.68_0c0fa55e.c76
-rw-r--r--fw/decomp/gcp_22.0.0.68_0c0fa55e.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.71_a4b4fff1.c76
-rw-r--r--fw/decomp/gcp_22.0.0.71_a4b4fff1.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.73_af9f39e1.c76
-rw-r--r--fw/decomp/gcp_22.0.0.73_af9f39e1.index.json2
-rw-r--r--fw/decomp/gcp_22.0.0.77_7c426e7f.c76
-rw-r--r--fw/decomp/gcp_22.0.0.77_7c426e7f.index.json2
-rw-r--r--fw/decomp/gcp_22.0.4.49_7485a4ea.c76
-rw-r--r--fw/decomp/gcp_22.0.4.49_7485a4ea.index.json2
-rw-r--r--fw/decomp/gcp_22.0.4.50_81b082b4.c76
-rw-r--r--fw/decomp/gcp_22.0.4.50_81b082b4.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.46_4d02c1b9.c80
-rw-r--r--fw/decomp/merit_24.0.0.46_4d02c1b9.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.50_1a70a0b2.c80
-rw-r--r--fw/decomp/merit_24.0.0.50_1a70a0b2.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.53_7bc0749b.c80
-rw-r--r--fw/decomp/merit_24.0.0.53_7bc0749b.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.56_ac736398.c80
-rw-r--r--fw/decomp/merit_24.0.0.56_ac736398.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.57_6ca54ade.c80
-rw-r--r--fw/decomp/merit_24.0.0.57_6ca54ade.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.61_a9100483.c80
-rw-r--r--fw/decomp/merit_24.0.0.61_a9100483.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.64_d1182c39.c80
-rw-r--r--fw/decomp/merit_24.0.0.64_d1182c39.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.66_ba6f0ef7.c80
-rw-r--r--fw/decomp/merit_24.0.0.66_ba6f0ef7.index.json2
-rw-r--r--fw/decomp/merit_24.0.0.70_5cd4afda.c80
-rw-r--r--fw/decomp/merit_24.0.0.70_5cd4afda.index.json2
-rw-r--r--fw/decomp/merit_24.0.4.42_444eceee.c80
-rw-r--r--fw/decomp/merit_24.0.4.42_444eceee.index.json2
-rw-r--r--fw/decomp/merit_24.0.4.42_bc1706f8.c80
-rw-r--r--fw/decomp/merit_24.0.4.42_bc1706f8.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.51_97f44863.c80
-rw-r--r--fw/decomp/opm_25.0.0.51_97f44863.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.57_a7ad870e.c80
-rw-r--r--fw/decomp/opm_25.0.0.57_a7ad870e.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.60_638c0601.c80
-rw-r--r--fw/decomp/opm_25.0.0.60_638c0601.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.62_10543c57.c80
-rw-r--r--fw/decomp/opm_25.0.0.62_10543c57.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.63_b42666c6.c80
-rw-r--r--fw/decomp/opm_25.0.0.63_b42666c6.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.66_0aa202d0.c80
-rw-r--r--fw/decomp/opm_25.0.0.66_0aa202d0.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.69_1b85ada0.c80
-rw-r--r--fw/decomp/opm_25.0.0.69_1b85ada0.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.71_28fa5413.c80
-rw-r--r--fw/decomp/opm_25.0.0.71_28fa5413.index.json2
-rw-r--r--fw/decomp/opm_25.0.0.81_dc596ba6.c80
-rw-r--r--fw/decomp/opm_25.0.0.81_dc596ba6.index.json2
-rw-r--r--fw/decomp/opm_25.0.4.47_f67d19b6.c80
-rw-r--r--fw/decomp/opm_25.0.4.47_f67d19b6.index.json2
-rw-r--r--fw/decomp/opm_25.0.4.48_ea9026f1.c80
-rw-r--r--fw/decomp/opm_25.0.4.48_ea9026f1.index.json2
-rw-r--r--fw/decomp/powerplay_34.0.0.12_e6329cd6.c80
-rw-r--r--fw/decomp/powerplay_34.0.0.12_e6329cd6.index.json2
-rw-r--r--fw/decomp/powerplay_34.0.0.13_b6462a1b.c80
-rw-r--r--fw/decomp/powerplay_34.0.0.13_b6462a1b.index.json2
-rw-r--r--fw/decomp/powerplay_34.0.0.15_85addaae.c80
-rw-r--r--fw/decomp/powerplay_34.0.0.15_85addaae.index.json2
-rw-r--r--fw/decomp/powerplay_34.0.0.17_82030e1b.c80
-rw-r--r--fw/decomp/powerplay_34.0.0.17_82030e1b.index.json2
-rw-r--r--fw/decomp/powerplay_34.0.0.20_e391bdbb.c80
-rw-r--r--fw/decomp/powerplay_34.0.0.20_e391bdbb.index.json2
-rw-r--r--fw/decomp/powerplay_34.0.0.9_d2742935.c80
-rw-r--r--fw/decomp/powerplay_34.0.0.9_d2742935.index.json2
-rw-r--r--fw/decomp/wspe_30.0.0.28_9c629868.c80
-rw-r--r--fw/decomp/wspe_30.0.0.28_9c629868.index.json2
-rw-r--r--fw/decomp/wspe_30.0.0.30_e87a4795.c80
-rw-r--r--fw/decomp/wspe_30.0.0.30_e87a4795.index.json2
-rw-r--r--fw/decomp/wspe_30.0.0.34_2d5b9934.c80
-rw-r--r--fw/decomp/wspe_30.0.0.34_2d5b9934.index.json2
-rw-r--r--fw/decomp/wspe_30.0.0.35_9e21cc85.c80
-rw-r--r--fw/decomp/wspe_30.0.0.35_9e21cc85.index.json2
-rw-r--r--fw/decomp/wspe_30.0.0.36_9b6d8385.c80
-rw-r--r--fw/decomp/wspe_30.0.0.36_9b6d8385.index.json2
-rw-r--r--fw/decomp/wspe_30.0.0.38_ec5dee6d.c80
-rw-r--r--fw/decomp/wspe_30.0.0.38_ec5dee6d.index.json2
-rw-r--r--fw/decomp/wspe_30.0.4.27_ba19a7f6.c80
-rw-r--r--fw/decomp/wspe_30.0.4.27_ba19a7f6.index.json2
-rw-r--r--fw/decomp/xgmi_32.0.0.13_fb920dd7.c80
-rw-r--r--fw/decomp/xgmi_32.0.0.13_fb920dd7.index.json2
-rw-r--r--fw/decomp/xgmi_32.0.0.15_3686f839.c76
-rw-r--r--fw/decomp/xgmi_32.0.0.15_3686f839.index.json2
-rw-r--r--fw/decomp/xgmi_32.0.0.20_20a3d1a4.c76
-rw-r--r--fw/decomp/xgmi_32.0.0.20_20a3d1a4.index.json2
-rw-r--r--fw/decomp/xgmi_32.0.0.2_8eaaa9eb.c80
-rw-r--r--fw/decomp/xgmi_32.0.0.2_8eaaa9eb.index.json2
-rw-r--r--fw/ta_ida.py7
110 files changed, 2207 insertions, 2188 deletions
diff --git a/fw/AUDIT-TA-NAMING.md b/fw/AUDIT-TA-NAMING.md
index a20c508..ea421b1 100644
--- a/fw/AUDIT-TA-NAMING.md
+++ b/fw/AUDIT-TA-NAMING.md
@@ -130,6 +130,18 @@ rule in this tree rests on the former.
| `memcpy` / `TA_InvokeCommandEntryPoint__h1` | mis-split; `memcpy` is right |
| `asd_rpc_200` / `TA_CreateEntryPoint__h2` | mis-split; `asd_rpc_200` is right |
| `cmd03__h28` / `aeabi_uldivmod` | mis-split; FIXED -- `fp_cmd03__h28` renamed to `fp_aeabi_uldivmod` |
+| `entry_trampoline` / `ta_main_loop` | wrong word; FIXED -- 54 instances renamed to `ta_main_loop` |
+
+`entry_trampoline` was adjudicated on the body, which is `__noreturn` and reads
+
+```c
+while (1) { __asm { SVC 0xF0 }; v6 = *a1; switch (v6) { ... } v7(); }
+```
+
+It yields to the OS, dispatches on the request code at `*a1`, calls the handler and loops
+forever. That is a main loop; a trampoline does not loop. DTM, RAS, HDCP and ASD already called
+the byte-identical function `ta_main_loop`, so the 54 instances under the other name were the
+outliers, not the majority view.
## What remains, and why sweeps will not close it
diff --git a/fw/decomp/auc_16.0.0.9_9e9044cf.c b/fw/decomp/auc_16.0.0.9_9e9044cf.c
index 2ed9331..76e256e 100644
--- a/fw/decomp/auc_16.0.0.9_9e9044cf.c
+++ b/fw/decomp/auc_16.0.0.9_9e9044cf.c
@@ -562,46 +562,6 @@ int __fastcall auc_cmd06__h1(int a1, int a2, int a3)
return auc_sysdrv_rpc_101D(a1: a3, a2: a1, a3: a2);
}
-/* ==== auc_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn auc_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_401960;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_401964;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_401968;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_40196C;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_401970;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== auc_lib_137f0289_22 [tier=EXACT size=22] ==== */
int auc_lib_137f0289_22()
{
@@ -972,6 +932,46 @@ int auc_sysdrv_rpc_E()
return 1;
}
+/* ==== auc_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn auc_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_401960;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_401964;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_401968;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_40196C;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_401970;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/auc_16.0.0.9_9e9044cf.index.json b/fw/decomp/auc_16.0.0.9_9e9044cf.index.json
index 3efe2f9..1ac61f0 100644
--- a/fw/decomp/auc_16.0.0.9_9e9044cf.index.json
+++ b/fw/decomp/auc_16.0.0.9_9e9044cf.index.json
@@ -136,7 +136,7 @@
{
"addr": "0x4018c0",
"ida_name": "sub_4018C0",
- "name": "auc_entry_trampoline",
+ "name": "auc_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/csu_42.0.0.0_94f19bf9.c b/fw/decomp/csu_42.0.0.0_94f19bf9.c
index 1e25150..20a2f74 100644
--- a/fw/decomp/csu_42.0.0.0_94f19bf9.c
+++ b/fw/decomp/csu_42.0.0.0_94f19bf9.c
@@ -70,46 +70,6 @@ int __fastcall csu_cmd02(void *ctx, struct ta_params *params)
return result;
}
-/* ==== csu_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn csu_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())off_401198;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_40119C;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_4011A0;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_4011A4;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_4011A8;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== csu_lib_zero_fill_words [tier=EXACT size=78] ==== */
_DWORD *__fastcall csu_lib_zero_fill_words(_DWORD *result, unsigned int a2)
{
@@ -175,6 +135,46 @@ _DWORD *__fastcall csu_lib_zero_fill_words(_DWORD *result, unsigned int a2)
return result;
}
+/* ==== csu_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn csu_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())off_401198;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_40119C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_4011A0;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_4011A4;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_4011A8;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/csu_42.0.0.0_94f19bf9.index.json b/fw/decomp/csu_42.0.0.0_94f19bf9.index.json
index 2c36aba..0db5e66 100644
--- a/fw/decomp/csu_42.0.0.0_94f19bf9.index.json
+++ b/fw/decomp/csu_42.0.0.0_94f19bf9.index.json
@@ -59,7 +59,7 @@
{
"addr": "0x4010f8",
"ida_name": "sub_4010F8",
- "name": "csu_entry_trampoline",
+ "name": "csu_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/csu_42.0.0.2_40725c76.c b/fw/decomp/csu_42.0.0.2_40725c76.c
index d3991dc..48c749c 100644
--- a/fw/decomp/csu_42.0.0.2_40725c76.c
+++ b/fw/decomp/csu_42.0.0.2_40725c76.c
@@ -70,46 +70,6 @@ int __fastcall csu_cmd02(void *ctx, struct ta_params *params)
return result;
}
-/* ==== csu_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn csu_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())off_401198;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_40119C;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_4011A0;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_4011A4;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_4011A8;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== csu_lib_zero_fill_words [tier=EXACT size=78] ==== */
_DWORD *__fastcall csu_lib_zero_fill_words(_DWORD *result, unsigned int a2)
{
@@ -175,6 +135,46 @@ _DWORD *__fastcall csu_lib_zero_fill_words(_DWORD *result, unsigned int a2)
return result;
}
+/* ==== csu_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn csu_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())off_401198;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_40119C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_4011A0;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_4011A4;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_4011A8;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/csu_42.0.0.2_40725c76.index.json b/fw/decomp/csu_42.0.0.2_40725c76.index.json
index 06962b1..598cd1a 100644
--- a/fw/decomp/csu_42.0.0.2_40725c76.index.json
+++ b/fw/decomp/csu_42.0.0.2_40725c76.index.json
@@ -59,7 +59,7 @@
{
"addr": "0x4010f8",
"ida_name": "sub_4010F8",
- "name": "csu_entry_trampoline",
+ "name": "csu_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/csu_42.0.0.6_1c874c3c.c b/fw/decomp/csu_42.0.0.6_1c874c3c.c
index a314536..547268c 100644
--- a/fw/decomp/csu_42.0.0.6_1c874c3c.c
+++ b/fw/decomp/csu_42.0.0.6_1c874c3c.c
@@ -121,46 +121,6 @@ int __fastcall csu_cmd03(void *ctx, struct ta_params *params)
return 7;
}
-/* ==== csu_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn csu_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())off_4011AC;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_4011B0;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_4011B4;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_4011B8;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_4011BC;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== csu_lib_zero_fill_words [tier=EXACT size=78] ==== */
_DWORD *__fastcall csu_lib_zero_fill_words(_DWORD *result, unsigned int a2)
{
@@ -226,6 +186,46 @@ _DWORD *__fastcall csu_lib_zero_fill_words(_DWORD *result, unsigned int a2)
return result;
}
+/* ==== csu_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn csu_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())off_4011AC;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_4011B0;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_4011B4;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_4011B8;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_4011BC;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/csu_42.0.0.6_1c874c3c.index.json b/fw/decomp/csu_42.0.0.6_1c874c3c.index.json
index 590ae27..75cd235 100644
--- a/fw/decomp/csu_42.0.0.6_1c874c3c.index.json
+++ b/fw/decomp/csu_42.0.0.6_1c874c3c.index.json
@@ -66,7 +66,7 @@
{
"addr": "0x40110c",
"ida_name": "sub_40110C",
- "name": "csu_entry_trampoline",
+ "name": "csu_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.53_14b24632.c b/fw/decomp/gcp_22.0.0.53_14b24632.c
index 7f68f40..20a182c 100644
--- a/fw/decomp/gcp_22.0.0.53_14b24632.c
+++ b/fw/decomp/gcp_22.0.0.53_14b24632.c
@@ -2406,44 +2406,6 @@ LABEL_25:
return v6;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_405D28(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_405D2C(result: (int)a1);
- break;
- case 3:
- loc_405D30(result: a1[3]);
- break;
- case 4:
- loc_405D34(result: a1[2]);
- break;
- case 5:
- loc_405D38(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3832,6 +3794,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_405D28(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_405D2C(result: (int)a1);
+ break;
+ case 3:
+ loc_405D30(result: a1[3]);
+ break;
+ case 4:
+ loc_405D34(result: a1[2]);
+ break;
+ case 5:
+ loc_405D38(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.53_14b24632.index.json b/fw/decomp/gcp_22.0.0.53_14b24632.index.json
index d5e6bfa..dc9a259 100644
--- a/fw/decomp/gcp_22.0.0.53_14b24632.index.json
+++ b/fw/decomp/gcp_22.0.0.53_14b24632.index.json
@@ -794,7 +794,7 @@
{
"addr": "0x405c88",
"ida_name": "sub_405C88",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.57_713166b8.c b/fw/decomp/gcp_22.0.0.57_713166b8.c
index 6398a38..476c3d6 100644
--- a/fw/decomp/gcp_22.0.0.57_713166b8.c
+++ b/fw/decomp/gcp_22.0.0.57_713166b8.c
@@ -2441,44 +2441,6 @@ LABEL_25:
return result;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_405C2C(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_405C30(result: (int)a1);
- break;
- case 3:
- loc_405C34(result: a1[3]);
- break;
- case 4:
- loc_405C38(result: a1[2]);
- break;
- case 5:
- loc_405C3C(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3867,6 +3829,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_405C2C(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_405C30(result: (int)a1);
+ break;
+ case 3:
+ loc_405C34(result: a1[3]);
+ break;
+ case 4:
+ loc_405C38(result: a1[2]);
+ break;
+ case 5:
+ loc_405C3C(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.57_713166b8.index.json b/fw/decomp/gcp_22.0.0.57_713166b8.index.json
index 5ec5b7a..a1c615b 100644
--- a/fw/decomp/gcp_22.0.0.57_713166b8.index.json
+++ b/fw/decomp/gcp_22.0.0.57_713166b8.index.json
@@ -731,7 +731,7 @@
{
"addr": "0x405b8c",
"ida_name": "sub_405B8C",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.60_38628e32.c b/fw/decomp/gcp_22.0.0.60_38628e32.c
index 2466096..b0dd81f 100644
--- a/fw/decomp/gcp_22.0.0.60_38628e32.c
+++ b/fw/decomp/gcp_22.0.0.60_38628e32.c
@@ -2444,44 +2444,6 @@ LABEL_25:
return result;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_405C48(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_405C4C(result: (int)a1);
- break;
- case 3:
- loc_405C50(result: a1[3]);
- break;
- case 4:
- loc_405C54(result: a1[2]);
- break;
- case 5:
- loc_405C58(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3870,6 +3832,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_405C48(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_405C4C(result: (int)a1);
+ break;
+ case 3:
+ loc_405C50(result: a1[3]);
+ break;
+ case 4:
+ loc_405C54(result: a1[2]);
+ break;
+ case 5:
+ loc_405C58(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.60_38628e32.index.json b/fw/decomp/gcp_22.0.0.60_38628e32.index.json
index 2f73d7f..4859f3b 100644
--- a/fw/decomp/gcp_22.0.0.60_38628e32.index.json
+++ b/fw/decomp/gcp_22.0.0.60_38628e32.index.json
@@ -731,7 +731,7 @@
{
"addr": "0x405ba8",
"ida_name": "sub_405BA8",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.62_7b7e9c9b.c b/fw/decomp/gcp_22.0.0.62_7b7e9c9b.c
index 7f2b02b..84d28e4 100644
--- a/fw/decomp/gcp_22.0.0.62_7b7e9c9b.c
+++ b/fw/decomp/gcp_22.0.0.62_7b7e9c9b.c
@@ -2125,44 +2125,6 @@ int gcp_crypto_ctx_release()
return 1;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_406120(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_406124(result: (int)a1);
- break;
- case 3:
- loc_406128(result: a1[3]);
- break;
- case 4:
- loc_40612C(result: a1[2]);
- break;
- case 5:
- loc_406130(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3540,6 +3502,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_406120(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_406124(result: (int)a1);
+ break;
+ case 3:
+ loc_406128(result: a1[3]);
+ break;
+ case 4:
+ loc_40612C(result: a1[2]);
+ break;
+ case 5:
+ loc_406130(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.62_7b7e9c9b.index.json b/fw/decomp/gcp_22.0.0.62_7b7e9c9b.index.json
index 59abed7..b028fe2 100644
--- a/fw/decomp/gcp_22.0.0.62_7b7e9c9b.index.json
+++ b/fw/decomp/gcp_22.0.0.62_7b7e9c9b.index.json
@@ -766,7 +766,7 @@
{
"addr": "0x406080",
"ida_name": "sub_406080",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.64_00133a50.c b/fw/decomp/gcp_22.0.0.64_00133a50.c
index 5d18c44..ca4793e 100644
--- a/fw/decomp/gcp_22.0.0.64_00133a50.c
+++ b/fw/decomp/gcp_22.0.0.64_00133a50.c
@@ -2125,44 +2125,6 @@ int gcp_crypto_ctx_release()
return 1;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_406120(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_406124(result: (int)a1);
- break;
- case 3:
- loc_406128(result: a1[3]);
- break;
- case 4:
- loc_40612C(result: a1[2]);
- break;
- case 5:
- loc_406130(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3535,6 +3497,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_406120(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_406124(result: (int)a1);
+ break;
+ case 3:
+ loc_406128(result: a1[3]);
+ break;
+ case 4:
+ loc_40612C(result: a1[2]);
+ break;
+ case 5:
+ loc_406130(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.64_00133a50.index.json b/fw/decomp/gcp_22.0.0.64_00133a50.index.json
index d798fc0..e5d779e 100644
--- a/fw/decomp/gcp_22.0.0.64_00133a50.index.json
+++ b/fw/decomp/gcp_22.0.0.64_00133a50.index.json
@@ -766,7 +766,7 @@
{
"addr": "0x406080",
"ida_name": "sub_406080",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.68_0c0fa55e.c b/fw/decomp/gcp_22.0.0.68_0c0fa55e.c
index 84ac702..594d68f 100644
--- a/fw/decomp/gcp_22.0.0.68_0c0fa55e.c
+++ b/fw/decomp/gcp_22.0.0.68_0c0fa55e.c
@@ -2135,44 +2135,6 @@ int gcp_crypto_ctx_release()
return 1;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_406124(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_406128(result: (int)a1);
- break;
- case 3:
- loc_40612C(result: a1[3]);
- break;
- case 4:
- loc_406130(result: a1[2]);
- break;
- case 5:
- loc_406134(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3550,6 +3512,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_406124(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_406128(result: (int)a1);
+ break;
+ case 3:
+ loc_40612C(result: a1[3]);
+ break;
+ case 4:
+ loc_406130(result: a1[2]);
+ break;
+ case 5:
+ loc_406134(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.68_0c0fa55e.index.json b/fw/decomp/gcp_22.0.0.68_0c0fa55e.index.json
index ecbc286..8d469bc 100644
--- a/fw/decomp/gcp_22.0.0.68_0c0fa55e.index.json
+++ b/fw/decomp/gcp_22.0.0.68_0c0fa55e.index.json
@@ -759,7 +759,7 @@
{
"addr": "0x406084",
"ida_name": "sub_406084",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.71_a4b4fff1.c b/fw/decomp/gcp_22.0.0.71_a4b4fff1.c
index 2674ea0..0267fd3 100644
--- a/fw/decomp/gcp_22.0.0.71_a4b4fff1.c
+++ b/fw/decomp/gcp_22.0.0.71_a4b4fff1.c
@@ -2137,44 +2137,6 @@ int gcp_crypto_ctx_release()
return 1;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_406134(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_406138(result: (int)a1);
- break;
- case 3:
- loc_40613C(result: a1[3]);
- break;
- case 4:
- loc_406140(result: a1[2]);
- break;
- case 5:
- loc_406144(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3552,6 +3514,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_406134(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_406138(result: (int)a1);
+ break;
+ case 3:
+ loc_40613C(result: a1[3]);
+ break;
+ case 4:
+ loc_406140(result: a1[2]);
+ break;
+ case 5:
+ loc_406144(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.71_a4b4fff1.index.json b/fw/decomp/gcp_22.0.0.71_a4b4fff1.index.json
index 15b882e..89638f7 100644
--- a/fw/decomp/gcp_22.0.0.71_a4b4fff1.index.json
+++ b/fw/decomp/gcp_22.0.0.71_a4b4fff1.index.json
@@ -759,7 +759,7 @@
{
"addr": "0x406094",
"ida_name": "sub_406094",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.73_af9f39e1.c b/fw/decomp/gcp_22.0.0.73_af9f39e1.c
index 0017ff0..90a2678 100644
--- a/fw/decomp/gcp_22.0.0.73_af9f39e1.c
+++ b/fw/decomp/gcp_22.0.0.73_af9f39e1.c
@@ -2139,44 +2139,6 @@ int gcp_crypto_ctx_release()
return 1;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- ((void (__fastcall *)(int))gcp_TA_CreateEntryPoint)(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- ((void (__fastcall *)(int))off_40614C)(result: (int)a1);
- break;
- case 3:
- ((void (__fastcall *)(int))off_406150)(result: a1[3]);
- break;
- case 4:
- ((void (__fastcall *)(int))off_406154)(result: a1[2]);
- break;
- case 5:
- ((void (__fastcall *)(int))off_406158)(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3554,6 +3516,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ ((void (__fastcall *)(int))gcp_TA_CreateEntryPoint)(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ ((void (__fastcall *)(int))off_40614C)(result: (int)a1);
+ break;
+ case 3:
+ ((void (__fastcall *)(int))off_406150)(result: a1[3]);
+ break;
+ case 4:
+ ((void (__fastcall *)(int))off_406154)(result: a1[2]);
+ break;
+ case 5:
+ ((void (__fastcall *)(int))off_406158)(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.73_af9f39e1.index.json b/fw/decomp/gcp_22.0.0.73_af9f39e1.index.json
index 89d9fa1..22e283a 100644
--- a/fw/decomp/gcp_22.0.0.73_af9f39e1.index.json
+++ b/fw/decomp/gcp_22.0.0.73_af9f39e1.index.json
@@ -759,7 +759,7 @@
{
"addr": "0x4060a8",
"ida_name": "sub_4060A8",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.0.77_7c426e7f.c b/fw/decomp/gcp_22.0.0.77_7c426e7f.c
index 861dd49..ac01f55 100644
--- a/fw/decomp/gcp_22.0.0.77_7c426e7f.c
+++ b/fw/decomp/gcp_22.0.0.77_7c426e7f.c
@@ -2141,44 +2141,6 @@ int gcp_crypto_ctx_release()
return 1;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_406158(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_40615C(result: (int)a1);
- break;
- case 3:
- loc_406160(result: a1[3]);
- break;
- case 4:
- gcp_TA_CloseSessionEntryPoint(result: a1[2]);
- break;
- case 5:
- ((void (__fastcall *)(int))off_406168)(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3556,6 +3518,44 @@ int gcp_sysdrv_rpc_9()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_406158(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_40615C(result: (int)a1);
+ break;
+ case 3:
+ loc_406160(result: a1[3]);
+ break;
+ case 4:
+ gcp_TA_CloseSessionEntryPoint(result: a1[2]);
+ break;
+ case 5:
+ ((void (__fastcall *)(int))off_406168)(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.0.77_7c426e7f.index.json b/fw/decomp/gcp_22.0.0.77_7c426e7f.index.json
index fef2808..22ae828 100644
--- a/fw/decomp/gcp_22.0.0.77_7c426e7f.index.json
+++ b/fw/decomp/gcp_22.0.0.77_7c426e7f.index.json
@@ -759,7 +759,7 @@
{
"addr": "0x4060b8",
"ida_name": "sub_4060B8",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.4.49_7485a4ea.c b/fw/decomp/gcp_22.0.4.49_7485a4ea.c
index 1ef0191..332460d 100644
--- a/fw/decomp/gcp_22.0.4.49_7485a4ea.c
+++ b/fw/decomp/gcp_22.0.4.49_7485a4ea.c
@@ -2526,44 +2526,6 @@ LABEL_25:
return result;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_405CEC(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_405CF0(result: (int)a1);
- break;
- case 3:
- loc_405CF4(result: a1[3]);
- break;
- case 4:
- loc_405CF8(result: a1[2]);
- break;
- case 5:
- loc_405CFC(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -3964,6 +3926,44 @@ int gcp_sysdrv_rpc_E()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_405CEC(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_405CF0(result: (int)a1);
+ break;
+ case 3:
+ loc_405CF4(result: a1[3]);
+ break;
+ case 4:
+ loc_405CF8(result: a1[2]);
+ break;
+ case 5:
+ loc_405CFC(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.4.49_7485a4ea.index.json b/fw/decomp/gcp_22.0.4.49_7485a4ea.index.json
index d8d63e0..cea739b 100644
--- a/fw/decomp/gcp_22.0.4.49_7485a4ea.index.json
+++ b/fw/decomp/gcp_22.0.4.49_7485a4ea.index.json
@@ -815,7 +815,7 @@
{
"addr": "0x405c4c",
"ida_name": "sub_405C4C",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/gcp_22.0.4.50_81b082b4.c b/fw/decomp/gcp_22.0.4.50_81b082b4.c
index ff1775b..830c460 100644
--- a/fw/decomp/gcp_22.0.4.50_81b082b4.c
+++ b/fw/decomp/gcp_22.0.4.50_81b082b4.c
@@ -2569,44 +2569,6 @@ LABEL_25:
return result;
}
-/* ==== gcp_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn gcp_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_405CF0(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_405CF4(result: (int)a1);
- break;
- case 3:
- loc_405CF8(result: a1[3]);
- break;
- case 4:
- loc_405CFC(result: a1[2]);
- break;
- case 5:
- loc_405D00(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== gcp_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall gcp_isdigit(int a1)
{
@@ -4002,6 +3964,44 @@ int gcp_sysdrv_rpc_E()
return 1;
}
+/* ==== gcp_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn gcp_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_405CF0(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_405CF4(result: (int)a1);
+ break;
+ case 3:
+ loc_405CF8(result: a1[3]);
+ break;
+ case 4:
+ loc_405CFC(result: a1[2]);
+ break;
+ case 5:
+ loc_405D00(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== gcp_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall gcp_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/gcp_22.0.4.50_81b082b4.index.json b/fw/decomp/gcp_22.0.4.50_81b082b4.index.json
index f2c1968..66445b7 100644
--- a/fw/decomp/gcp_22.0.4.50_81b082b4.index.json
+++ b/fw/decomp/gcp_22.0.4.50_81b082b4.index.json
@@ -815,7 +815,7 @@
{
"addr": "0x405c50",
"ida_name": "sub_405C50",
- "name": "gcp_entry_trampoline",
+ "name": "gcp_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.46_4d02c1b9.c b/fw/decomp/merit_24.0.0.46_4d02c1b9.c
index 800a867..ae7fb8c 100644
--- a/fw/decomp/merit_24.0.0.46_4d02c1b9.c
+++ b/fw/decomp/merit_24.0.0.46_4d02c1b9.c
@@ -436,46 +436,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402080;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402084;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402088;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_40208C;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402090;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
/* decompile failed: call analysis failed */
@@ -707,6 +667,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402080;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402084;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402088;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_40208C;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402090;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.46_4d02c1b9.index.json b/fw/decomp/merit_24.0.0.46_4d02c1b9.index.json
index bc199c0..f6ec956 100644
--- a/fw/decomp/merit_24.0.0.46_4d02c1b9.index.json
+++ b/fw/decomp/merit_24.0.0.46_4d02c1b9.index.json
@@ -220,7 +220,7 @@
{
"addr": "0x401fe0",
"ida_name": "sub_401FE0",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.50_1a70a0b2.c b/fw/decomp/merit_24.0.0.50_1a70a0b2.c
index fcd1248..78cc205 100644
--- a/fw/decomp/merit_24.0.0.50_1a70a0b2.c
+++ b/fw/decomp/merit_24.0.0.50_1a70a0b2.c
@@ -307,46 +307,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- int (*v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (int (*)())loc_402098;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (int (*)())loc_40209C;
- break;
- case 3:
- v7 = merit_TA_OpenSessionEntryPoint;
- break;
- case 4:
- v7 = (int (*)())off_4020A4;
- break;
- case 5:
- v7 = (int (*)())off_4020A8;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
void merit_lib_thunk_tailjump()
{
@@ -581,6 +541,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ int (*v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (int (*)())loc_402098;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (int (*)())loc_40209C;
+ break;
+ case 3:
+ v7 = merit_TA_OpenSessionEntryPoint;
+ break;
+ case 4:
+ v7 = (int (*)())off_4020A4;
+ break;
+ case 5:
+ v7 = (int (*)())off_4020A8;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.50_1a70a0b2.index.json b/fw/decomp/merit_24.0.0.50_1a70a0b2.index.json
index aa51a39..b0a689f 100644
--- a/fw/decomp/merit_24.0.0.50_1a70a0b2.index.json
+++ b/fw/decomp/merit_24.0.0.50_1a70a0b2.index.json
@@ -206,7 +206,7 @@
{
"addr": "0x401ff8",
"ida_name": "sub_401FF8",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.53_7bc0749b.c b/fw/decomp/merit_24.0.0.53_7bc0749b.c
index 5169a3c..5d28834 100644
--- a/fw/decomp/merit_24.0.0.53_7bc0749b.c
+++ b/fw/decomp/merit_24.0.0.53_7bc0749b.c
@@ -307,46 +307,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())merit_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_40211C;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_402120;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_402124;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_402128;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
void merit_lib_thunk_tailjump()
{
@@ -581,6 +541,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())merit_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_40211C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_402120;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_402124;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_402128;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.53_7bc0749b.index.json b/fw/decomp/merit_24.0.0.53_7bc0749b.index.json
index 0a4fd36..c4bb53b 100644
--- a/fw/decomp/merit_24.0.0.53_7bc0749b.index.json
+++ b/fw/decomp/merit_24.0.0.53_7bc0749b.index.json
@@ -206,7 +206,7 @@
{
"addr": "0x402078",
"ida_name": "sub_402078",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.56_ac736398.c b/fw/decomp/merit_24.0.0.56_ac736398.c
index 0889d80..78597d9 100644
--- a/fw/decomp/merit_24.0.0.56_ac736398.c
+++ b/fw/decomp/merit_24.0.0.56_ac736398.c
@@ -307,46 +307,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())merit_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_4021B0;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_4021B4;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_4021B8;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_4021BC;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
void merit_lib_thunk_tailjump()
{
@@ -581,6 +541,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())merit_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_4021B0;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_4021B4;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_4021B8;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_4021BC;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.56_ac736398.index.json b/fw/decomp/merit_24.0.0.56_ac736398.index.json
index be66508..9ba5ce7 100644
--- a/fw/decomp/merit_24.0.0.56_ac736398.index.json
+++ b/fw/decomp/merit_24.0.0.56_ac736398.index.json
@@ -206,7 +206,7 @@
{
"addr": "0x40210c",
"ida_name": "sub_40210C",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.57_6ca54ade.c b/fw/decomp/merit_24.0.0.57_6ca54ade.c
index e002f6c..5192794 100644
--- a/fw/decomp/merit_24.0.0.57_6ca54ade.c
+++ b/fw/decomp/merit_24.0.0.57_6ca54ade.c
@@ -307,46 +307,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- int (*v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = merit_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (int (*)())off_4021B0;
- break;
- case 3:
- v7 = (int (*)())off_4021B4;
- break;
- case 4:
- v7 = (int (*)())off_4021B8;
- break;
- case 5:
- v7 = (int (*)())off_4021BC;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
void merit_lib_thunk_tailjump()
{
@@ -581,6 +541,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ int (*v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = merit_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (int (*)())off_4021B0;
+ break;
+ case 3:
+ v7 = (int (*)())off_4021B4;
+ break;
+ case 4:
+ v7 = (int (*)())off_4021B8;
+ break;
+ case 5:
+ v7 = (int (*)())off_4021BC;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.57_6ca54ade.index.json b/fw/decomp/merit_24.0.0.57_6ca54ade.index.json
index fc038c3..0b856d5 100644
--- a/fw/decomp/merit_24.0.0.57_6ca54ade.index.json
+++ b/fw/decomp/merit_24.0.0.57_6ca54ade.index.json
@@ -206,7 +206,7 @@
{
"addr": "0x40210c",
"ida_name": "sub_40210C",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.61_a9100483.c b/fw/decomp/merit_24.0.0.61_a9100483.c
index f4b43e5..d551430 100644
--- a/fw/decomp/merit_24.0.0.61_a9100483.c
+++ b/fw/decomp/merit_24.0.0.61_a9100483.c
@@ -367,46 +367,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())merit_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_4021F0;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_4021F4;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_4021F8;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_4021FC;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_zero_fill_bytes [tier=EXACT size=68] ==== */
_BYTE *__fastcall merit_lib_zero_fill_bytes(_BYTE *result, unsigned int a2)
{
@@ -635,6 +595,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())merit_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_4021F0;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_4021F4;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_4021F8;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_4021FC;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.61_a9100483.index.json b/fw/decomp/merit_24.0.0.61_a9100483.index.json
index 97d074d..06d11a4 100644
--- a/fw/decomp/merit_24.0.0.61_a9100483.index.json
+++ b/fw/decomp/merit_24.0.0.61_a9100483.index.json
@@ -220,7 +220,7 @@
{
"addr": "0x40214c",
"ida_name": "sub_40214C",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.64_d1182c39.c b/fw/decomp/merit_24.0.0.64_d1182c39.c
index 21b83e9..0bcd26f 100644
--- a/fw/decomp/merit_24.0.0.64_d1182c39.c
+++ b/fw/decomp/merit_24.0.0.64_d1182c39.c
@@ -442,46 +442,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_40222C;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402230;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402234;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402238;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_40223C;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
/* decompile failed: call analysis failed */
@@ -713,6 +673,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_40222C;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402230;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402234;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402238;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_40223C;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.64_d1182c39.index.json b/fw/decomp/merit_24.0.0.64_d1182c39.index.json
index ace5197..702d32c 100644
--- a/fw/decomp/merit_24.0.0.64_d1182c39.index.json
+++ b/fw/decomp/merit_24.0.0.64_d1182c39.index.json
@@ -206,7 +206,7 @@
{
"addr": "0x40218c",
"ida_name": "sub_40218C",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.66_ba6f0ef7.c b/fw/decomp/merit_24.0.0.66_ba6f0ef7.c
index ebf50d8..023d94e 100644
--- a/fw/decomp/merit_24.0.0.66_ba6f0ef7.c
+++ b/fw/decomp/merit_24.0.0.66_ba6f0ef7.c
@@ -307,46 +307,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())merit_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_4022AC;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_4022B0;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_4022B4;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_4022B8;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
void merit_lib_thunk_tailjump()
{
@@ -581,6 +541,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())merit_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_4022AC;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_4022B0;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_4022B4;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_4022B8;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.66_ba6f0ef7.index.json b/fw/decomp/merit_24.0.0.66_ba6f0ef7.index.json
index 9c04fa2..0f53fcc 100644
--- a/fw/decomp/merit_24.0.0.66_ba6f0ef7.index.json
+++ b/fw/decomp/merit_24.0.0.66_ba6f0ef7.index.json
@@ -206,7 +206,7 @@
{
"addr": "0x402208",
"ida_name": "sub_402208",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.0.70_5cd4afda.c b/fw/decomp/merit_24.0.0.70_5cd4afda.c
index 0191f8b..18ca051 100644
--- a/fw/decomp/merit_24.0.0.70_5cd4afda.c
+++ b/fw/decomp/merit_24.0.0.70_5cd4afda.c
@@ -307,46 +307,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- int (*v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = merit_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (int (*)())off_4022AC;
- break;
- case 3:
- v7 = (int (*)())off_4022B0;
- break;
- case 4:
- v7 = (int (*)())off_4022B4;
- break;
- case 5:
- v7 = (int (*)())off_4022B8;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
void merit_lib_thunk_tailjump()
{
@@ -581,6 +541,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ int (*v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = merit_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (int (*)())off_4022AC;
+ break;
+ case 3:
+ v7 = (int (*)())off_4022B0;
+ break;
+ case 4:
+ v7 = (int (*)())off_4022B4;
+ break;
+ case 5:
+ v7 = (int (*)())off_4022B8;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.0.70_5cd4afda.index.json b/fw/decomp/merit_24.0.0.70_5cd4afda.index.json
index 40e4096..62fe225 100644
--- a/fw/decomp/merit_24.0.0.70_5cd4afda.index.json
+++ b/fw/decomp/merit_24.0.0.70_5cd4afda.index.json
@@ -206,7 +206,7 @@
{
"addr": "0x402208",
"ida_name": "sub_402208",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.4.42_444eceee.c b/fw/decomp/merit_24.0.4.42_444eceee.c
index 6f7d114..4dd5367 100644
--- a/fw/decomp/merit_24.0.4.42_444eceee.c
+++ b/fw/decomp/merit_24.0.4.42_444eceee.c
@@ -567,46 +567,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- int (*v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = merit_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (int (*)())off_402038;
- break;
- case 3:
- v7 = (int (*)())off_40203C;
- break;
- case 4:
- v7 = (int (*)())off_402040;
- break;
- case 5:
- v7 = (int (*)())off_402044;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
/* decompile failed: call analysis failed */
@@ -848,6 +808,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ int (*v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = merit_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (int (*)())off_402038;
+ break;
+ case 3:
+ v7 = (int (*)())off_40203C;
+ break;
+ case 4:
+ v7 = (int (*)())off_402040;
+ break;
+ case 5:
+ v7 = (int (*)())off_402044;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.4.42_444eceee.index.json b/fw/decomp/merit_24.0.4.42_444eceee.index.json
index 19e80f7..5a379f5 100644
--- a/fw/decomp/merit_24.0.4.42_444eceee.index.json
+++ b/fw/decomp/merit_24.0.4.42_444eceee.index.json
@@ -213,7 +213,7 @@
{
"addr": "0x401f94",
"ida_name": "sub_401F94",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/merit_24.0.4.42_bc1706f8.c b/fw/decomp/merit_24.0.4.42_bc1706f8.c
index cf3fd2d..d322cc1 100644
--- a/fw/decomp/merit_24.0.4.42_bc1706f8.c
+++ b/fw/decomp/merit_24.0.4.42_bc1706f8.c
@@ -567,46 +567,6 @@ int __fastcall merit_cmd06(void *ctx, struct ta_params *params)
return 0;
}
-/* ==== merit_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn merit_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (*v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (*)())loc_402044;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = nullsub_2;
- break;
- case 3:
- v7 = (void (*)())off_40204C;
- break;
- case 4:
- v7 = (void (*)())off_402050;
- break;
- case 5:
- v7 = (void (*)())off_402054;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== merit_lib_thunk_tailjump [tier=EXACT size=4] ==== */
/* decompile failed: call analysis failed */
@@ -848,6 +808,46 @@ int merit_sysdrv_rpc_E()
return 1;
}
+/* ==== merit_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn merit_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (*v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (*)())loc_402044;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = nullsub_2;
+ break;
+ case 3:
+ v7 = (void (*)())off_40204C;
+ break;
+ case 4:
+ v7 = (void (*)())off_402050;
+ break;
+ case 5:
+ v7 = (void (*)())off_402054;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== nullsub_1 [tier=IDA size=2] ==== */
void nullsub_1()
{
diff --git a/fw/decomp/merit_24.0.4.42_bc1706f8.index.json b/fw/decomp/merit_24.0.4.42_bc1706f8.index.json
index db5cdad..491f4ae 100644
--- a/fw/decomp/merit_24.0.4.42_bc1706f8.index.json
+++ b/fw/decomp/merit_24.0.4.42_bc1706f8.index.json
@@ -213,7 +213,7 @@
{
"addr": "0x401fa4",
"ida_name": "sub_401FA4",
- "name": "merit_entry_trampoline",
+ "name": "merit_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.51_97f44863.c b/fw/decomp/opm_25.0.0.51_97f44863.c
index bbaa75e..a822e40 100644
--- a/fw/decomp/opm_25.0.0.51_97f44863.c
+++ b/fw/decomp/opm_25.0.0.51_97f44863.c
@@ -1251,46 +1251,6 @@ LABEL_10:
return 259;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402F74;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402F78;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402F7C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402F80;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402F84;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_thunk_tailjump [tier=EXACT size=4] ==== */
int __fastcall opm_lib_thunk_tailjump(struct tee_fmt_state *a1, int a2, int a3)
{
@@ -1638,6 +1598,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402F74;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402F78;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402F7C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402F80;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402F84;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=MNEM size=1832] ==== */
void __fastcall __noreturn start(int a1, int a2, int a3, int a4, int a5)
{
diff --git a/fw/decomp/opm_25.0.0.51_97f44863.index.json b/fw/decomp/opm_25.0.0.51_97f44863.index.json
index c77bd65..3945c3b 100644
--- a/fw/decomp/opm_25.0.0.51_97f44863.index.json
+++ b/fw/decomp/opm_25.0.0.51_97f44863.index.json
@@ -325,7 +325,7 @@
{
"addr": "0x402ed4",
"ida_name": "sub_402ED4",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.57_a7ad870e.c b/fw/decomp/opm_25.0.0.57_a7ad870e.c
index 80fbdf9..6455ba4 100644
--- a/fw/decomp/opm_25.0.0.57_a7ad870e.c
+++ b/fw/decomp/opm_25.0.0.57_a7ad870e.c
@@ -424,46 +424,6 @@ LABEL_10:
return 259;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E38;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E3C;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E40;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E44;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E48;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_thunk_tailjump [tier=EXACT size=4] ==== */
int __fastcall opm_lib_thunk_tailjump(struct tee_fmt_state *a1)
{
@@ -801,6 +761,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E38;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E3C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E40;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E44;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E48;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=FUZZY size=1832] ==== */
void __fastcall __noreturn start(int a1, int a2, int a3, int a4, char a5)
{
diff --git a/fw/decomp/opm_25.0.0.57_a7ad870e.index.json b/fw/decomp/opm_25.0.0.57_a7ad870e.index.json
index 359d38a..3e098ea 100644
--- a/fw/decomp/opm_25.0.0.57_a7ad870e.index.json
+++ b/fw/decomp/opm_25.0.0.57_a7ad870e.index.json
@@ -248,7 +248,7 @@
{
"addr": "0x402d98",
"ida_name": "sub_402D98",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.60_638c0601.c b/fw/decomp/opm_25.0.0.60_638c0601.c
index 120b08a..56af118 100644
--- a/fw/decomp/opm_25.0.0.60_638c0601.c
+++ b/fw/decomp/opm_25.0.0.60_638c0601.c
@@ -424,46 +424,6 @@ LABEL_10:
return 259;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())opm_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_402EA0;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_402EA4;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_402EA8;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_402EAC;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_zero_fill_bytes [tier=EXACT size=68] ==== */
_BYTE *__fastcall opm_lib_zero_fill_bytes(_BYTE *result, unsigned int a2)
{
@@ -795,6 +755,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())opm_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_402EA0;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_402EA4;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_402EA8;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_402EAC;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=IDA size=14] ==== */
void __fastcall __noreturn start(int a1)
{
diff --git a/fw/decomp/opm_25.0.0.60_638c0601.index.json b/fw/decomp/opm_25.0.0.60_638c0601.index.json
index aaf9af2..a786a77 100644
--- a/fw/decomp/opm_25.0.0.60_638c0601.index.json
+++ b/fw/decomp/opm_25.0.0.60_638c0601.index.json
@@ -262,7 +262,7 @@
{
"addr": "0x402dfc",
"ida_name": "sub_402DFC",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.62_10543c57.c b/fw/decomp/opm_25.0.0.62_10543c57.c
index 81b9d4e..473aa72 100644
--- a/fw/decomp/opm_25.0.0.62_10543c57.c
+++ b/fw/decomp/opm_25.0.0.62_10543c57.c
@@ -882,46 +882,6 @@ LABEL_3:
return v4;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())opm_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())off_4032B8;
- break;
- case 3:
- v7 = (void (__cdecl *)())off_4032BC;
- break;
- case 4:
- v7 = (void (__cdecl *)())off_4032C0;
- break;
- case 5:
- v7 = (void (__cdecl *)())off_4032C4;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_zero_fill_bytes [tier=EXACT size=68] ==== */
_BYTE *__fastcall opm_lib_zero_fill_bytes(_BYTE *result, unsigned int a2)
{
@@ -1243,6 +1203,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())opm_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())off_4032B8;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())off_4032BC;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())off_4032C0;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())off_4032C4;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=IDA size=14] ==== */
void __fastcall __noreturn start(int a1)
{
diff --git a/fw/decomp/opm_25.0.0.62_10543c57.index.json b/fw/decomp/opm_25.0.0.62_10543c57.index.json
index bd44560..8cf593b 100644
--- a/fw/decomp/opm_25.0.0.62_10543c57.index.json
+++ b/fw/decomp/opm_25.0.0.62_10543c57.index.json
@@ -297,7 +297,7 @@
{
"addr": "0x403214",
"ida_name": "sub_403214",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.63_b42666c6.c b/fw/decomp/opm_25.0.0.63_b42666c6.c
index b2524b4..37fe221 100644
--- a/fw/decomp/opm_25.0.0.63_b42666c6.c
+++ b/fw/decomp/opm_25.0.0.63_b42666c6.c
@@ -874,46 +874,6 @@ LABEL_3:
return v4;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- int (*v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = opm_TA_CreateEntryPoint;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (int (*)())off_4032B8;
- break;
- case 3:
- v7 = (int (*)())off_4032BC;
- break;
- case 4:
- v7 = (int (*)())off_4032C0;
- break;
- case 5:
- v7 = (int (*)())off_4032C4;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_zero_fill_bytes [tier=EXACT size=68] ==== */
_BYTE *__fastcall opm_lib_zero_fill_bytes(_BYTE *result, unsigned int a2)
{
@@ -1235,6 +1195,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ int (*v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = opm_TA_CreateEntryPoint;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (int (*)())off_4032B8;
+ break;
+ case 3:
+ v7 = (int (*)())off_4032BC;
+ break;
+ case 4:
+ v7 = (int (*)())off_4032C0;
+ break;
+ case 5:
+ v7 = (int (*)())off_4032C4;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=IDA size=14] ==== */
void __fastcall __noreturn start(int a1)
{
diff --git a/fw/decomp/opm_25.0.0.63_b42666c6.index.json b/fw/decomp/opm_25.0.0.63_b42666c6.index.json
index 13bbfc2..cac2fb0 100644
--- a/fw/decomp/opm_25.0.0.63_b42666c6.index.json
+++ b/fw/decomp/opm_25.0.0.63_b42666c6.index.json
@@ -297,7 +297,7 @@
{
"addr": "0x403214",
"ida_name": "sub_403214",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.66_0aa202d0.c b/fw/decomp/opm_25.0.0.66_0aa202d0.c
index 43f00e7..bfb2659 100644
--- a/fw/decomp/opm_25.0.0.66_0aa202d0.c
+++ b/fw/decomp/opm_25.0.0.66_0aa202d0.c
@@ -544,46 +544,6 @@ LABEL_3:
return v4;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_40314C;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_403150;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_403154;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_403158;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_40315C;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_thunk_tailjump [tier=EXACT size=4] ==== */
// positive sp value has been detected, the output may be wrong!
void __fastcall opm_lib_thunk_tailjump(
@@ -952,6 +912,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_40314C;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_403150;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_403154;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_403158;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_40315C;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=FUZZY size=1832] ==== */
void __fastcall __noreturn start(int a1, int a2, int a3, int a4, char a5)
{
diff --git a/fw/decomp/opm_25.0.0.66_0aa202d0.index.json b/fw/decomp/opm_25.0.0.66_0aa202d0.index.json
index 4ba4dd1..0004dbd 100644
--- a/fw/decomp/opm_25.0.0.66_0aa202d0.index.json
+++ b/fw/decomp/opm_25.0.0.66_0aa202d0.index.json
@@ -290,7 +290,7 @@
{
"addr": "0x4030ac",
"ida_name": "sub_4030AC",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.69_1b85ada0.c b/fw/decomp/opm_25.0.0.69_1b85ada0.c
index 62bf89a..b14565d 100644
--- a/fw/decomp/opm_25.0.0.69_1b85ada0.c
+++ b/fw/decomp/opm_25.0.0.69_1b85ada0.c
@@ -544,46 +544,6 @@ LABEL_3:
return v4;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_403174;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_403178;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_40317C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_403180;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_403184;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_thunk_tailjump [tier=EXACT size=4] ==== */
// positive sp value has been detected, the output may be wrong!
void __fastcall opm_lib_thunk_tailjump(
@@ -952,6 +912,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_403174;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_403178;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_40317C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_403180;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_403184;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=FUZZY size=1832] ==== */
void __fastcall __noreturn start(int a1, int a2, int a3, int a4, char a5)
{
diff --git a/fw/decomp/opm_25.0.0.69_1b85ada0.index.json b/fw/decomp/opm_25.0.0.69_1b85ada0.index.json
index a771f59..57b883f 100644
--- a/fw/decomp/opm_25.0.0.69_1b85ada0.index.json
+++ b/fw/decomp/opm_25.0.0.69_1b85ada0.index.json
@@ -290,7 +290,7 @@
{
"addr": "0x4030d4",
"ida_name": "sub_4030D4",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.71_28fa5413.c b/fw/decomp/opm_25.0.0.71_28fa5413.c
index 71fe773..b07da3e 100644
--- a/fw/decomp/opm_25.0.0.71_28fa5413.c
+++ b/fw/decomp/opm_25.0.0.71_28fa5413.c
@@ -544,46 +544,6 @@ LABEL_3:
return v4;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_40318C;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_403190;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_403194;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_403198;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_40319C;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_thunk_tailjump [tier=EXACT size=4] ==== */
// positive sp value has been detected, the output may be wrong!
void __fastcall opm_lib_thunk_tailjump(
@@ -952,6 +912,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_40318C;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_403190;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_403194;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_403198;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_40319C;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=FUZZY size=1832] ==== */
void __fastcall __noreturn start(int a1, int a2, int a3, int a4, char a5)
{
diff --git a/fw/decomp/opm_25.0.0.71_28fa5413.index.json b/fw/decomp/opm_25.0.0.71_28fa5413.index.json
index 4ae84a6..2e8d194 100644
--- a/fw/decomp/opm_25.0.0.71_28fa5413.index.json
+++ b/fw/decomp/opm_25.0.0.71_28fa5413.index.json
@@ -290,7 +290,7 @@
{
"addr": "0x4030ec",
"ida_name": "sub_4030EC",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.0.81_dc596ba6.c b/fw/decomp/opm_25.0.0.81_dc596ba6.c
index 13a03f5..bb6b9b1 100644
--- a/fw/decomp/opm_25.0.0.81_dc596ba6.c
+++ b/fw/decomp/opm_25.0.0.81_dc596ba6.c
@@ -544,46 +544,6 @@ LABEL_3:
return v4;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_4031A4;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_4031A8;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_4031AC;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_4031B0;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_4031B4;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_thunk_tailjump [tier=EXACT size=4] ==== */
// positive sp value has been detected, the output may be wrong!
void __fastcall opm_lib_thunk_tailjump(
@@ -952,6 +912,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_4031A4;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_4031A8;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_4031AC;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_4031B0;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_4031B4;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=FUZZY size=1832] ==== */
void __fastcall __noreturn start(int a1, int a2, int a3, int a4, char a5)
{
diff --git a/fw/decomp/opm_25.0.0.81_dc596ba6.index.json b/fw/decomp/opm_25.0.0.81_dc596ba6.index.json
index edc2b94..049a955 100644
--- a/fw/decomp/opm_25.0.0.81_dc596ba6.index.json
+++ b/fw/decomp/opm_25.0.0.81_dc596ba6.index.json
@@ -290,7 +290,7 @@
{
"addr": "0x403104",
"ida_name": "sub_403104",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.4.47_f67d19b6.c b/fw/decomp/opm_25.0.4.47_f67d19b6.c
index d231c8f..f850832 100644
--- a/fw/decomp/opm_25.0.4.47_f67d19b6.c
+++ b/fw/decomp/opm_25.0.4.47_f67d19b6.c
@@ -1251,46 +1251,6 @@ LABEL_10:
return 259;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E08;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E0C;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E10;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E14;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E18;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_thunk_tailjump [tier=EXACT size=4] ==== */
int __fastcall opm_lib_thunk_tailjump(struct tee_fmt_state *a1, int a2, int a3)
{
@@ -1628,6 +1588,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E08;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E0C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E10;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E14;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E18;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=FUZZY size=1832] ==== */
void __fastcall __noreturn start(int a1, int a2, int a3, int a4, int a5)
{
diff --git a/fw/decomp/opm_25.0.4.47_f67d19b6.index.json b/fw/decomp/opm_25.0.4.47_f67d19b6.index.json
index 4a1e74e..8e06213 100644
--- a/fw/decomp/opm_25.0.4.47_f67d19b6.index.json
+++ b/fw/decomp/opm_25.0.4.47_f67d19b6.index.json
@@ -318,7 +318,7 @@
{
"addr": "0x402d68",
"ida_name": "sub_402D68",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/opm_25.0.4.48_ea9026f1.c b/fw/decomp/opm_25.0.4.48_ea9026f1.c
index 3b10aa6..981b32d 100644
--- a/fw/decomp/opm_25.0.4.48_ea9026f1.c
+++ b/fw/decomp/opm_25.0.4.48_ea9026f1.c
@@ -1250,46 +1250,6 @@ LABEL_10:
return 259;
}
-/* ==== opm_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn opm_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402F58;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402F5C;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402F60;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402F64;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402F68;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== opm_lib_thunk_tailjump [tier=EXACT size=4] ==== */
int __fastcall opm_lib_thunk_tailjump(struct tee_fmt_state *a1, int a2, int a3)
{
@@ -1637,6 +1597,46 @@ int opm_sysdrv_rpc_E()
return 1;
}
+/* ==== opm_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn opm_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402F58;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402F5C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402F60;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402F64;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402F68;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== start [tier=EXACT size=1832] ==== */
void __fastcall __noreturn start(int a1, int a2, int a3, int a4, int a5)
{
diff --git a/fw/decomp/opm_25.0.4.48_ea9026f1.index.json b/fw/decomp/opm_25.0.4.48_ea9026f1.index.json
index e658dbc..ba73f3b 100644
--- a/fw/decomp/opm_25.0.4.48_ea9026f1.index.json
+++ b/fw/decomp/opm_25.0.4.48_ea9026f1.index.json
@@ -318,7 +318,7 @@
{
"addr": "0x402eb8",
"ida_name": "sub_402EB8",
- "name": "opm_entry_trampoline",
+ "name": "opm_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/powerplay_34.0.0.12_e6329cd6.c b/fw/decomp/powerplay_34.0.0.12_e6329cd6.c
index 387c5a1..f595474 100644
--- a/fw/decomp/powerplay_34.0.0.12_e6329cd6.c
+++ b/fw/decomp/powerplay_34.0.0.12_e6329cd6.c
@@ -748,46 +748,6 @@ int __fastcall powerplay_cmd06(void *ctx, struct ta_params *params)
return dword_402988;
}
-/* ==== powerplay_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn powerplay_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_4061BC;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_4061C0;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_4061C4;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_4061C8;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_4061CC;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== powerplay_fptbl01 [tier=MNEM size=528] ==== */
BOOL __fastcall powerplay_fptbl01(int a1, int a2, int a3)
{
@@ -2678,6 +2638,46 @@ int powerplay_sysdrv_rpc_6003()
return 1;
}
+/* ==== powerplay_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn powerplay_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_4061BC;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_4061C0;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_4061C4;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_4061C8;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_4061CC;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== powerplay_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall powerplay_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/powerplay_34.0.0.12_e6329cd6.index.json b/fw/decomp/powerplay_34.0.0.12_e6329cd6.index.json
index 27caf09..be74872 100644
--- a/fw/decomp/powerplay_34.0.0.12_e6329cd6.index.json
+++ b/fw/decomp/powerplay_34.0.0.12_e6329cd6.index.json
@@ -689,7 +689,7 @@
{
"addr": "0x40611c",
"ida_name": "sub_40611C",
- "name": "powerplay_entry_trampoline",
+ "name": "powerplay_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/powerplay_34.0.0.13_b6462a1b.c b/fw/decomp/powerplay_34.0.0.13_b6462a1b.c
index c63f416..86b8591 100644
--- a/fw/decomp/powerplay_34.0.0.13_b6462a1b.c
+++ b/fw/decomp/powerplay_34.0.0.13_b6462a1b.c
@@ -755,46 +755,6 @@ int __fastcall powerplay_cmd06(void *ctx, struct ta_params *params)
return dword_4028EC;
}
-/* ==== powerplay_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn powerplay_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_406B54;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_406B58;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_406B5C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_406B60;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_406B64;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== powerplay_fptbl01 [tier=MNEM size=528] ==== */
BOOL __fastcall powerplay_fptbl01(int a1, int a2, int a3)
{
@@ -2975,6 +2935,46 @@ int powerplay_sysdrv_rpc_6003()
return 1;
}
+/* ==== powerplay_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn powerplay_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_406B54;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_406B58;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_406B5C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_406B60;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_406B64;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== powerplay_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall powerplay_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/powerplay_34.0.0.13_b6462a1b.index.json b/fw/decomp/powerplay_34.0.0.13_b6462a1b.index.json
index 45d90c8..03a226d 100644
--- a/fw/decomp/powerplay_34.0.0.13_b6462a1b.index.json
+++ b/fw/decomp/powerplay_34.0.0.13_b6462a1b.index.json
@@ -682,7 +682,7 @@
{
"addr": "0x406ab4",
"ida_name": "sub_406AB4",
- "name": "powerplay_entry_trampoline",
+ "name": "powerplay_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/powerplay_34.0.0.15_85addaae.c b/fw/decomp/powerplay_34.0.0.15_85addaae.c
index d5b2917..5f8d664 100644
--- a/fw/decomp/powerplay_34.0.0.15_85addaae.c
+++ b/fw/decomp/powerplay_34.0.0.15_85addaae.c
@@ -755,46 +755,6 @@ int __fastcall powerplay_cmd06(void *ctx, struct ta_params *params)
return dword_4028EC;
}
-/* ==== powerplay_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn powerplay_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_406C44;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_406C48;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_406C4C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_406C50;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_406C54;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== powerplay_fptbl00 [tier=EXACT size=106] ==== */
int powerplay_fptbl00()
{
@@ -3403,6 +3363,46 @@ int powerplay_sysdrv_rpc_6003()
return 1;
}
+/* ==== powerplay_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn powerplay_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_406C44;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_406C48;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_406C4C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_406C50;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_406C54;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== powerplay_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall powerplay_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/powerplay_34.0.0.15_85addaae.index.json b/fw/decomp/powerplay_34.0.0.15_85addaae.index.json
index 2642952..42cce5c 100644
--- a/fw/decomp/powerplay_34.0.0.15_85addaae.index.json
+++ b/fw/decomp/powerplay_34.0.0.15_85addaae.index.json
@@ -682,7 +682,7 @@
{
"addr": "0x406ba4",
"ida_name": "sub_406BA4",
- "name": "powerplay_entry_trampoline",
+ "name": "powerplay_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/powerplay_34.0.0.17_82030e1b.c b/fw/decomp/powerplay_34.0.0.17_82030e1b.c
index 667d9eb..3063dd2 100644
--- a/fw/decomp/powerplay_34.0.0.17_82030e1b.c
+++ b/fw/decomp/powerplay_34.0.0.17_82030e1b.c
@@ -755,46 +755,6 @@ int __fastcall powerplay_cmd06(void *ctx, struct ta_params *params)
return dword_4028EC;
}
-/* ==== powerplay_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn powerplay_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_406C44;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_406C48;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_406C4C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_406C50;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_406C54;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== powerplay_fptbl00 [tier=EXACT size=106] ==== */
int powerplay_fptbl00()
{
@@ -3719,6 +3679,46 @@ int powerplay_sysdrv_rpc_6003()
return 1;
}
+/* ==== powerplay_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn powerplay_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_406C44;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_406C48;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_406C4C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_406C50;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_406C54;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== powerplay_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall powerplay_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/powerplay_34.0.0.17_82030e1b.index.json b/fw/decomp/powerplay_34.0.0.17_82030e1b.index.json
index 38bbd56..372c940 100644
--- a/fw/decomp/powerplay_34.0.0.17_82030e1b.index.json
+++ b/fw/decomp/powerplay_34.0.0.17_82030e1b.index.json
@@ -682,7 +682,7 @@
{
"addr": "0x406ba4",
"ida_name": "sub_406BA4",
- "name": "powerplay_entry_trampoline",
+ "name": "powerplay_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/powerplay_34.0.0.20_e391bdbb.c b/fw/decomp/powerplay_34.0.0.20_e391bdbb.c
index f0e0b25..bf6b96b 100644
--- a/fw/decomp/powerplay_34.0.0.20_e391bdbb.c
+++ b/fw/decomp/powerplay_34.0.0.20_e391bdbb.c
@@ -755,46 +755,6 @@ int __fastcall powerplay_cmd06(void *ctx, struct ta_params *params)
return dword_4028EC;
}
-/* ==== powerplay_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn powerplay_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_406C44;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_406C48;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_406C4C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_406C50;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_406C54;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== powerplay_fptbl00 [tier=EXACT size=106] ==== */
int powerplay_fptbl00()
{
@@ -3719,6 +3679,46 @@ int powerplay_sysdrv_rpc_6003()
return 1;
}
+/* ==== powerplay_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn powerplay_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_406C44;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_406C48;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_406C4C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_406C50;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_406C54;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== powerplay_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall powerplay_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/powerplay_34.0.0.20_e391bdbb.index.json b/fw/decomp/powerplay_34.0.0.20_e391bdbb.index.json
index d2ca750..12781fa 100644
--- a/fw/decomp/powerplay_34.0.0.20_e391bdbb.index.json
+++ b/fw/decomp/powerplay_34.0.0.20_e391bdbb.index.json
@@ -682,7 +682,7 @@
{
"addr": "0x406ba4",
"ida_name": "sub_406BA4",
- "name": "powerplay_entry_trampoline",
+ "name": "powerplay_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/powerplay_34.0.0.9_d2742935.c b/fw/decomp/powerplay_34.0.0.9_d2742935.c
index 0372e27..d6da7fa 100644
--- a/fw/decomp/powerplay_34.0.0.9_d2742935.c
+++ b/fw/decomp/powerplay_34.0.0.9_d2742935.c
@@ -515,46 +515,6 @@ int __fastcall powerplay_cmd00(void *ctx, struct ta_params *params)
return 2;
}
-/* ==== powerplay_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn powerplay_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_404D08;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_404D0C;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_404D10;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_404D14;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_404D18;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== powerplay_fptbl01 [tier=MNEM size=528] ==== */
BOOL __fastcall powerplay_fptbl01(int a1, int a2, int a3)
{
@@ -1730,6 +1690,46 @@ int powerplay_sysdrv_rpc_6003()
return 1;
}
+/* ==== powerplay_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn powerplay_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_404D08;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_404D0C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_404D10;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_404D14;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_404D18;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== powerplay_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall powerplay_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/powerplay_34.0.0.9_d2742935.index.json b/fw/decomp/powerplay_34.0.0.9_d2742935.index.json
index eea70e4..7395186 100644
--- a/fw/decomp/powerplay_34.0.0.9_d2742935.index.json
+++ b/fw/decomp/powerplay_34.0.0.9_d2742935.index.json
@@ -549,7 +549,7 @@
{
"addr": "0x404c68",
"ida_name": "sub_404C68",
- "name": "powerplay_entry_trampoline",
+ "name": "powerplay_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/wspe_30.0.0.28_9c629868.c b/fw/decomp/wspe_30.0.0.28_9c629868.c
index 1bac8d0..7fca533 100644
--- a/fw/decomp/wspe_30.0.0.28_9c629868.c
+++ b/fw/decomp/wspe_30.0.0.28_9c629868.c
@@ -555,46 +555,6 @@ int __fastcall wspe_cmd05_request_active_protected_session(void *ctx, struct ta_
return dword_402400;
}
-/* ==== wspe_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn wspe_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E28;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E2C;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E30;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E34;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E38;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== wspe_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall wspe_isdigit(int a1)
{
@@ -1139,6 +1099,46 @@ int wspe_runtime_globals_field1()
return (int)wspe_runtime_globals() + 4;
}
+/* ==== wspe_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn wspe_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E28;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E2C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E30;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E34;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E38;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== wspe_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall wspe_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/wspe_30.0.0.28_9c629868.index.json b/fw/decomp/wspe_30.0.0.28_9c629868.index.json
index 6d913fa..8973563 100644
--- a/fw/decomp/wspe_30.0.0.28_9c629868.index.json
+++ b/fw/decomp/wspe_30.0.0.28_9c629868.index.json
@@ -360,7 +360,7 @@
{
"addr": "0x402d88",
"ida_name": "sub_402D88",
- "name": "wspe_entry_trampoline",
+ "name": "wspe_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/wspe_30.0.0.30_e87a4795.c b/fw/decomp/wspe_30.0.0.30_e87a4795.c
index f464f45..22181f7 100644
--- a/fw/decomp/wspe_30.0.0.30_e87a4795.c
+++ b/fw/decomp/wspe_30.0.0.30_e87a4795.c
@@ -501,46 +501,6 @@ int __fastcall wspe_cmd05_request_active_protected_session(void *ctx, struct ta_
return dword_402400;
}
-/* ==== wspe_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn wspe_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E24;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E28;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E2C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E30;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E34;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== wspe_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall wspe_isdigit(int a1)
{
@@ -1085,6 +1045,46 @@ int wspe_runtime_globals_field1()
return (int)wspe_runtime_globals() + 4;
}
+/* ==== wspe_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn wspe_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E24;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E28;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E2C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E30;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E34;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== wspe_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall wspe_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/wspe_30.0.0.30_e87a4795.index.json b/fw/decomp/wspe_30.0.0.30_e87a4795.index.json
index b19ffbc..fa6b684 100644
--- a/fw/decomp/wspe_30.0.0.30_e87a4795.index.json
+++ b/fw/decomp/wspe_30.0.0.30_e87a4795.index.json
@@ -360,7 +360,7 @@
{
"addr": "0x402d84",
"ida_name": "sub_402D84",
- "name": "wspe_entry_trampoline",
+ "name": "wspe_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/wspe_30.0.0.34_2d5b9934.c b/fw/decomp/wspe_30.0.0.34_2d5b9934.c
index 8b33018..be33356 100644
--- a/fw/decomp/wspe_30.0.0.34_2d5b9934.c
+++ b/fw/decomp/wspe_30.0.0.34_2d5b9934.c
@@ -518,46 +518,6 @@ int __fastcall wspe_cmd05_request_active_protected_session(void *ctx, struct ta_
return dword_40242C;
}
-/* ==== wspe_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn wspe_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E34;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E38;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E3C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E40;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E44;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== wspe_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall wspe_isdigit(int a1)
{
@@ -1102,6 +1062,46 @@ int wspe_runtime_globals_field1()
return (int)wspe_runtime_globals() + 4;
}
+/* ==== wspe_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn wspe_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E34;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E38;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E3C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E40;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E44;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== wspe_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall wspe_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/wspe_30.0.0.34_2d5b9934.index.json b/fw/decomp/wspe_30.0.0.34_2d5b9934.index.json
index b2ce863..5cef649 100644
--- a/fw/decomp/wspe_30.0.0.34_2d5b9934.index.json
+++ b/fw/decomp/wspe_30.0.0.34_2d5b9934.index.json
@@ -353,7 +353,7 @@
{
"addr": "0x402d94",
"ida_name": "sub_402D94",
- "name": "wspe_entry_trampoline",
+ "name": "wspe_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/wspe_30.0.0.35_9e21cc85.c b/fw/decomp/wspe_30.0.0.35_9e21cc85.c
index 8183672..2497d0d 100644
--- a/fw/decomp/wspe_30.0.0.35_9e21cc85.c
+++ b/fw/decomp/wspe_30.0.0.35_9e21cc85.c
@@ -518,46 +518,6 @@ int __fastcall wspe_cmd05_request_active_protected_session(void *ctx, struct ta_
return dword_40242C;
}
-/* ==== wspe_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn wspe_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E34;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E38;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E3C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E40;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E44;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== wspe_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall wspe_isdigit(int a1)
{
@@ -1102,6 +1062,46 @@ int wspe_runtime_globals_field1()
return (int)wspe_runtime_globals() + 4;
}
+/* ==== wspe_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn wspe_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E34;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E38;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E3C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E40;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E44;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== wspe_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall wspe_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/wspe_30.0.0.35_9e21cc85.index.json b/fw/decomp/wspe_30.0.0.35_9e21cc85.index.json
index 13ee1bd..f308a4d 100644
--- a/fw/decomp/wspe_30.0.0.35_9e21cc85.index.json
+++ b/fw/decomp/wspe_30.0.0.35_9e21cc85.index.json
@@ -353,7 +353,7 @@
{
"addr": "0x402d94",
"ida_name": "sub_402D94",
- "name": "wspe_entry_trampoline",
+ "name": "wspe_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/wspe_30.0.0.36_9b6d8385.c b/fw/decomp/wspe_30.0.0.36_9b6d8385.c
index b7c7461..667d4dd 100644
--- a/fw/decomp/wspe_30.0.0.36_9b6d8385.c
+++ b/fw/decomp/wspe_30.0.0.36_9b6d8385.c
@@ -518,46 +518,6 @@ int __fastcall wspe_cmd05_request_active_protected_session(void *ctx, struct ta_
return dword_40242C;
}
-/* ==== wspe_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn wspe_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E34;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E38;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E3C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E40;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E44;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== wspe_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall wspe_isdigit(int a1)
{
@@ -1102,6 +1062,46 @@ int *wspe_runtime_globals_field1()
return wspe_runtime_globals() + 1;
}
+/* ==== wspe_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn wspe_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E34;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E38;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E3C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E40;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E44;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== wspe_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall wspe_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/wspe_30.0.0.36_9b6d8385.index.json b/fw/decomp/wspe_30.0.0.36_9b6d8385.index.json
index 4af3f2d..1551b36 100644
--- a/fw/decomp/wspe_30.0.0.36_9b6d8385.index.json
+++ b/fw/decomp/wspe_30.0.0.36_9b6d8385.index.json
@@ -353,7 +353,7 @@
{
"addr": "0x402d94",
"ida_name": "sub_402D94",
- "name": "wspe_entry_trampoline",
+ "name": "wspe_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/wspe_30.0.0.38_ec5dee6d.c b/fw/decomp/wspe_30.0.0.38_ec5dee6d.c
index b2137a6..412ccf5 100644
--- a/fw/decomp/wspe_30.0.0.38_ec5dee6d.c
+++ b/fw/decomp/wspe_30.0.0.38_ec5dee6d.c
@@ -518,46 +518,6 @@ int __fastcall wspe_cmd05_request_active_protected_session(void *ctx, struct ta_
return dword_40242C;
}
-/* ==== wspe_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn wspe_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E34;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E38;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E3C;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E40;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E44;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== wspe_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall wspe_isdigit(int a1)
{
@@ -1102,6 +1062,46 @@ int wspe_runtime_globals_field1()
return (int)wspe_runtime_globals() + 4;
}
+/* ==== wspe_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn wspe_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E34;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E38;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E3C;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E40;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E44;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== wspe_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall wspe_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/wspe_30.0.0.38_ec5dee6d.index.json b/fw/decomp/wspe_30.0.0.38_ec5dee6d.index.json
index 607db56..e6cd970 100644
--- a/fw/decomp/wspe_30.0.0.38_ec5dee6d.index.json
+++ b/fw/decomp/wspe_30.0.0.38_ec5dee6d.index.json
@@ -353,7 +353,7 @@
{
"addr": "0x402d94",
"ida_name": "sub_402D94",
- "name": "wspe_entry_trampoline",
+ "name": "wspe_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/wspe_30.0.4.27_ba19a7f6.c b/fw/decomp/wspe_30.0.4.27_ba19a7f6.c
index f227112..90f08c9 100644
--- a/fw/decomp/wspe_30.0.4.27_ba19a7f6.c
+++ b/fw/decomp/wspe_30.0.4.27_ba19a7f6.c
@@ -555,46 +555,6 @@ int __fastcall wspe_cmd05_request_active_protected_session(void *ctx, struct ta_
return dword_402400;
}
-/* ==== wspe_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn wspe_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (__cdecl *v7)(); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (__cdecl *)())loc_402E28;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (__cdecl *)())loc_402E2C;
- break;
- case 3:
- v7 = (void (__cdecl *)())loc_402E30;
- break;
- case 4:
- v7 = (void (__cdecl *)())loc_402E34;
- break;
- case 5:
- v7 = (void (__cdecl *)())loc_402E38;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== wspe_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall wspe_isdigit(int a1)
{
@@ -1139,6 +1099,46 @@ int wspe_runtime_globals_field1()
return (int)wspe_runtime_globals() + 4;
}
+/* ==== wspe_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn wspe_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (__cdecl *v7)(); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (__cdecl *)())loc_402E28;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (__cdecl *)())loc_402E2C;
+ break;
+ case 3:
+ v7 = (void (__cdecl *)())loc_402E30;
+ break;
+ case 4:
+ v7 = (void (__cdecl *)())loc_402E34;
+ break;
+ case 5:
+ v7 = (void (__cdecl *)())loc_402E38;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== wspe_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall wspe_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/wspe_30.0.4.27_ba19a7f6.index.json b/fw/decomp/wspe_30.0.4.27_ba19a7f6.index.json
index 29bc216..3dc07e9 100644
--- a/fw/decomp/wspe_30.0.4.27_ba19a7f6.index.json
+++ b/fw/decomp/wspe_30.0.4.27_ba19a7f6.index.json
@@ -360,7 +360,7 @@
{
"addr": "0x402d88",
"ida_name": "sub_402D88",
- "name": "wspe_entry_trampoline",
+ "name": "wspe_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/xgmi_32.0.0.13_fb920dd7.c b/fw/decomp/xgmi_32.0.0.13_fb920dd7.c
index 2881fb3..c9e2ac2 100644
--- a/fw/decomp/xgmi_32.0.0.13_fb920dd7.c
+++ b/fw/decomp/xgmi_32.0.0.13_fb920dd7.c
@@ -689,46 +689,6 @@ int __fastcall xgmi_cmd0B(void *ctx, struct ta_params *params)
return 4;
}
-/* ==== xgmi_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn xgmi_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (*v7)(void); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (*)(void))sub_403248;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (*)(void))off_402C60;
- break;
- case 3:
- v7 = (void (*)(void))off_402C64;
- break;
- case 4:
- v7 = (void (*)(void))off_402C68;
- break;
- case 5:
- v7 = (void (*)(void))off_402C6C;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== xgmi_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall xgmi_isdigit(int a1)
{
@@ -1212,6 +1172,46 @@ int xgmi_sysdrv_rpc_D()
return 1;
}
+/* ==== xgmi_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn xgmi_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (*v7)(void); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (*)(void))sub_403248;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (*)(void))off_402C60;
+ break;
+ case 3:
+ v7 = (void (*)(void))off_402C64;
+ break;
+ case 4:
+ v7 = (void (*)(void))off_402C68;
+ break;
+ case 5:
+ v7 = (void (*)(void))off_402C6C;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== xgmi_udiv10 [tier=MNEM size=100] ==== */
int *__fastcall xgmi_udiv10(int *result, int *a2, unsigned int a3, int a4)
{
diff --git a/fw/decomp/xgmi_32.0.0.13_fb920dd7.index.json b/fw/decomp/xgmi_32.0.0.13_fb920dd7.index.json
index 16b0db7..5f80cc1 100644
--- a/fw/decomp/xgmi_32.0.0.13_fb920dd7.index.json
+++ b/fw/decomp/xgmi_32.0.0.13_fb920dd7.index.json
@@ -311,7 +311,7 @@
{
"addr": "0x402bbc",
"ida_name": "sub_402BBC",
- "name": "xgmi_entry_trampoline",
+ "name": "xgmi_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/xgmi_32.0.0.15_3686f839.c b/fw/decomp/xgmi_32.0.0.15_3686f839.c
index 5157ce3..0405f60 100644
--- a/fw/decomp/xgmi_32.0.0.15_3686f839.c
+++ b/fw/decomp/xgmi_32.0.0.15_3686f839.c
@@ -1315,44 +1315,6 @@ int __fastcall xgmi_cmd0B(_BYTE *a1, int a2)
return 4;
}
-/* ==== xgmi_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn xgmi_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_403C38(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_403C3C(result: (int)a1);
- break;
- case 3:
- loc_403C40(result: a1[3]);
- break;
- case 4:
- loc_403C44(result: a1[2]);
- break;
- case 5:
- loc_403C48(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== xgmi_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall xgmi_isdigit(int a1)
{
@@ -2051,6 +2013,44 @@ int xgmi_sysdrv_rpc_D()
return 1;
}
+/* ==== xgmi_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn xgmi_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_403C38(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_403C3C(result: (int)a1);
+ break;
+ case 3:
+ loc_403C40(result: a1[3]);
+ break;
+ case 4:
+ loc_403C44(result: a1[2]);
+ break;
+ case 5:
+ loc_403C48(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== xgmi_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall xgmi_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/xgmi_32.0.0.15_3686f839.index.json b/fw/decomp/xgmi_32.0.0.15_3686f839.index.json
index c985300..d5407cf 100644
--- a/fw/decomp/xgmi_32.0.0.15_3686f839.index.json
+++ b/fw/decomp/xgmi_32.0.0.15_3686f839.index.json
@@ -514,7 +514,7 @@
{
"addr": "0x403b98",
"ida_name": "sub_403B98",
- "name": "xgmi_entry_trampoline",
+ "name": "xgmi_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/xgmi_32.0.0.20_20a3d1a4.c b/fw/decomp/xgmi_32.0.0.20_20a3d1a4.c
index 03b24a5..b642935 100644
--- a/fw/decomp/xgmi_32.0.0.20_20a3d1a4.c
+++ b/fw/decomp/xgmi_32.0.0.20_20a3d1a4.c
@@ -1592,44 +1592,6 @@ int __fastcall xgmi_cmd0B(void *ctx, struct ta_params *params)
return 4;
}
-/* ==== xgmi_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn xgmi_entry_trampoline(int *a1)
-{
- int v6; // r1
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- loc_403C88(result: (int)a1);
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- loc_403C8C(result: (int)a1);
- break;
- case 3:
- loc_403C90(result: a1[3]);
- break;
- case 4:
- loc_403C94(result: a1[2]);
- break;
- case 5:
- loc_403C98(result: a1[2]);
- break;
- default:
- while ( 1 )
- ;
- }
- }
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== xgmi_isdigit [tier=EXACT size=14] ==== */
BOOL __fastcall xgmi_isdigit(int a1)
{
@@ -2338,6 +2300,44 @@ int xgmi_sysdrv_rpc_D()
return 1;
}
+/* ==== xgmi_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn xgmi_ta_main_loop(int *a1)
+{
+ int v6; // r1
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ loc_403C88(result: (int)a1);
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ loc_403C8C(result: (int)a1);
+ break;
+ case 3:
+ loc_403C90(result: a1[3]);
+ break;
+ case 4:
+ loc_403C94(result: a1[2]);
+ break;
+ case 5:
+ loc_403C98(result: a1[2]);
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== xgmi_udiv10 [tier=EXACT size=152] ==== */
unsigned __int64 __fastcall xgmi_udiv10(unsigned __int64 a1)
{
diff --git a/fw/decomp/xgmi_32.0.0.20_20a3d1a4.index.json b/fw/decomp/xgmi_32.0.0.20_20a3d1a4.index.json
index 1d12b4c..fa5d716 100644
--- a/fw/decomp/xgmi_32.0.0.20_20a3d1a4.index.json
+++ b/fw/decomp/xgmi_32.0.0.20_20a3d1a4.index.json
@@ -507,7 +507,7 @@
{
"addr": "0x403be8",
"ida_name": "sub_403BE8",
- "name": "xgmi_entry_trampoline",
+ "name": "xgmi_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/decomp/xgmi_32.0.0.2_8eaaa9eb.c b/fw/decomp/xgmi_32.0.0.2_8eaaa9eb.c
index 232f6dc..fc7bfa2 100644
--- a/fw/decomp/xgmi_32.0.0.2_8eaaa9eb.c
+++ b/fw/decomp/xgmi_32.0.0.2_8eaaa9eb.c
@@ -322,46 +322,6 @@ int __fastcall xgmi_cmd0A(void *ctx, struct ta_params *params)
return v2;
}
-/* ==== xgmi_entry_trampoline [tier=EXACT size=148] ==== */
-void __fastcall __noreturn xgmi_entry_trampoline(int *a1)
-{
- int v6; // r1
- void (*v7)(void); // r12
-
- while ( 1 )
- {
- __asm { SVC 0xF0 }
- v6 = *a1;
- if ( *a1 == 1 )
- {
- v7 = (void (*)(void))sub_4013B0;
- }
- else
- {
- switch ( v6 )
- {
- case 2:
- v7 = (void (*)(void))off_4011E0;
- break;
- case 3:
- v7 = (void (*)(void))off_4011E4;
- break;
- case 4:
- v7 = (void (*)(void))off_4011E8;
- break;
- case 5:
- v7 = (void (*)(void))off_4011EC;
- break;
- default:
- while ( 1 )
- ;
- }
- }
- v7();
- __asm { SVC 0xF1 }
- }
-}
-
/* ==== xgmi_lib_zero_fill_words [tier=EXACT size=78] ==== */
_DWORD *__fastcall xgmi_lib_zero_fill_words(_DWORD *result, unsigned int a2)
{
@@ -517,6 +477,46 @@ int xgmi_sysdrv_rpc_D()
return 1;
}
+/* ==== xgmi_ta_main_loop [tier=EXACT size=148] ==== */
+void __fastcall __noreturn xgmi_ta_main_loop(int *a1)
+{
+ int v6; // r1
+ void (*v7)(void); // r12
+
+ while ( 1 )
+ {
+ __asm { SVC 0xF0 }
+ v6 = *a1;
+ if ( *a1 == 1 )
+ {
+ v7 = (void (*)(void))sub_4013B0;
+ }
+ else
+ {
+ switch ( v6 )
+ {
+ case 2:
+ v7 = (void (*)(void))off_4011E0;
+ break;
+ case 3:
+ v7 = (void (*)(void))off_4011E4;
+ break;
+ case 4:
+ v7 = (void (*)(void))off_4011E8;
+ break;
+ case 5:
+ v7 = (void (*)(void))off_4011EC;
+ break;
+ default:
+ while ( 1 )
+ ;
+ }
+ }
+ v7();
+ __asm { SVC 0xF1 }
+ }
+}
+
/* ==== xgmi_udiv10 [tier=EXACT size=100] ==== */
int *__fastcall xgmi_udiv10(int *result, int *a2, unsigned int a3, int a4)
{
diff --git a/fw/decomp/xgmi_32.0.0.2_8eaaa9eb.index.json b/fw/decomp/xgmi_32.0.0.2_8eaaa9eb.index.json
index 6b3b5bf..c7550a3 100644
--- a/fw/decomp/xgmi_32.0.0.2_8eaaa9eb.index.json
+++ b/fw/decomp/xgmi_32.0.0.2_8eaaa9eb.index.json
@@ -31,7 +31,7 @@
{
"addr": "0x40113c",
"ida_name": "sub_40113C",
- "name": "xgmi_entry_trampoline",
+ "name": "xgmi_ta_main_loop",
"size": 148,
"tier": "EXACT"
},
diff --git a/fw/ta_ida.py b/fw/ta_ida.py
index d9aad8d..1d2335d 100644
--- a/fw/ta_ida.py
+++ b/fw/ta_ida.py
@@ -318,6 +318,13 @@ LIB_RENAME = {
# formatters and I can see they handle width/precision but not which is which;
# lib_d732abea_240 and lib_2cd87843_108 are arithmetic/format bodies whose role I would be
# guessing at. 111 instances left placeholder rather than mislabelled.
+ # entry_trampoline -> ta_main_loop. The body is __noreturn and reads
+ # while (1) { SVC 0xF0; v6 = *a1; switch (v6) { ... } v7(); }
+ # -- it yields to the OS, dispatches on the request code at *a1, calls the handler and
+ # loops forever. That is a main loop. A trampoline does not loop, so entry_trampoline is
+ # simply the wrong word for it; DTM, RAS, HDCP and ASD already call the byte-identical
+ # function ta_main_loop, and the 54 instances under the other name are the odd ones out.
+ "entry_trampoline": "ta_main_loop",
}
# PENDING, not applied. CAUSE STILL UNKNOWN -- two explanations have been offered and both were