diff options
| author | user <user@clank> | 2026-10-01 18:41:57 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-10-01 18:41:57 +0200 |
| commit | f370384a949cfb40947bf0bed8f74b58dfd409b8 (patch) | |
| tree | 7ff4b397a077098932f45f9956df923a52521b5f | |
| parent | half the remaining name contradictions are not contradictions: SVC thunks car... (diff) | |
| download | amd-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.
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 |
