aboutsummaryrefslogtreecommitdiffstats
path: root/fw/decomp
diff options
context:
space:
mode:
authoruser <user@clank>2026-10-01 15:36:17 +0200
committeruser <user@clank>2026-10-01 15:36:17 +0200
commitfc0a99fbe3eb3df3062fb6f02f85d18f81fcbb72 (patch)
tree70f9b1d728a34c367ef8fb2cf4efa1c23f763aea /fw/decomp
parentrecord all sixteen components in the struct audit, graded by how their size i... (diff)
downloadamd-psp-re-fc0a99fbe3eb3df3062fb6f02f85d18f81fcbb72.tar.gz
amd-psp-re-fc0a99fbe3eb3df3062fb6f02f85d18f81fcbb72.tar.xz
amd-psp-re-fc0a99fbe3eb3df3062fb6f02f85d18f81fcbb72.zip
type ASD's two internal structures, where its unreadability is concentrated
Request structures were done for every component, but ASD still held 8446 of the raw pointer-arithmetic dereferences, and typing its dispatcher had moved only a few hundred. So rather than guess where the rest lived, it was measured: of those 8446, 6314 go through a1, 86% of those sit in just 20 functions, and only 54 distinct functions touch a1 at all. The unreadability is not spread across 6781 functions; it is concentrated in a handful. A first attempt at clustering by name prefix was a dead end worth recording. The largest cluster, asd_reg_* with 145 functions, has ZERO a1 structure accesses -- they are register accessors that take an address and a value, not a context. Clustering by subsystem name says nothing about whether a context structure exists. The two families that do matter were found by offset signature instead: asd_link_cfg the link/encoder descriptor, from asd_program_link_by_signal{,_v2,_v3,_v4} and asd_encoder_enable_seq{,_v3} -- 1638 dereferences across six functions. Members are dwords throughout rather than placing a 64-bit field at the observed 0x14 qword read, which is not 8-aligned and would shift every later offset. asd_link_caps the capability/handler block, from asd_get_link_caps_full{,_v2,_v3}, asd_resolve_asic_handlers and asd_dio_read_block; offsets 0x04..0x24 contiguous. Both are internal structures reached through an argument, so unlike the eight host requests with enforced floors there is no size check anywhere; both sizes are maxima observed and say so. They are applied by rewriting only the FIRST PARAMETER of each function's live prototype, so the rest of the signature -- which came from the recorded handover prototypes -- survives instead of being replaced by an invented declaration. 9 of 11 land on the reference build. load_type_decls was only reading <TA>_DECLS, so the internal structures were declared in the table and silently never parsed; it now picks up <TA>_INTERNAL_DECLS as well. Measured across fw/decomp: ASD typed field accesses 2311 -> 3729 and raw dereferences 8446 -> 6863, taking ASD's field share from 21.5% to 35.2%. Across all modules, field accesses 3828 -> 5246 and field share 21.1% -> 29.2%. Struct-typed signatures are unchanged at 4.8%, which is expected: this change retypes arguments of already-named functions rather than adding new signatures, and is the clearest case yet of why the signature count alone is a poor measure of readability.
Diffstat (limited to 'fw/decomp')
-rw-r--r--fw/decomp/asd.summary.json6
-rw-r--r--fw/decomp/asd_33.0.0.163_18debcc4.c8
-rw-r--r--fw/decomp/asd_33.0.0.173_27402e22.anon.c238
-rw-r--r--fw/decomp/asd_33.0.0.173_27402e22.c206
-rw-r--r--fw/decomp/asd_33.0.0.181_e0b3c2e0.anon.c252
-rw-r--r--fw/decomp/asd_33.0.0.181_e0b3c2e0.c164
-rw-r--r--fw/decomp/asd_33.0.0.195_904a5e72.anon.c288
-rw-r--r--fw/decomp/asd_33.0.0.195_904a5e72.c442
-rw-r--r--fw/decomp/asd_33.0.0.239_0bcc6b23.anon.c360
-rw-r--r--fw/decomp/asd_33.0.0.239_0bcc6b23.c921
-rw-r--r--fw/decomp/asd_33.0.12.227_43f99d51.anon.c344
-rw-r--r--fw/decomp/asd_33.0.12.227_43f99d51.c919
-rw-r--r--fw/decomp/asd_33.0.16.144_aaa06ff8.c8
-rw-r--r--fw/decomp/asd_33.0.16.209_e129d135.anon.c296
-rw-r--r--fw/decomp/asd_33.0.16.209_e129d135.c727
-rw-r--r--fw/decomp/asd_33.0.24.209_356275c8.anon.c320
-rw-r--r--fw/decomp/asd_33.0.24.209_356275c8.c550
-rw-r--r--fw/decomp/asd_33.0.28.209_135c328b.anon.c320
-rw-r--r--fw/decomp/asd_33.0.28.209_135c328b.c727
-rw-r--r--fw/decomp/asd_33.0.4.153_ddc1f532.c8
-rw-r--r--fw/decomp/asd_33.0.4.222_ff8dd593.anon.c322
-rw-r--r--fw/decomp/asd_33.0.4.222_ff8dd593.c737
-rw-r--r--fw/decomp/asd_33.0.8.195_5f04c8ff.anon.c308
-rw-r--r--fw/decomp/asd_33.0.8.195_5f04c8ff.c440
-rw-r--r--fw/decomp/asd_33.0.8.222_bbc214c9.anon.c344
-rw-r--r--fw/decomp/asd_33.0.8.222_bbc214c9.c733
-rw-r--r--fw/decomp/asd_33.0.8.235_64e420e4.anon.c356
-rw-r--r--fw/decomp/asd_33.0.8.235_64e420e4.c921
-rw-r--r--fw/decomp/asd_33.0.8.235_76e58ee4.anon.c356
-rw-r--r--fw/decomp/asd_33.0.8.235_76e58ee4.c921
-rw-r--r--fw/decomp/asd_33.0.8.239_4c19d868.anon.c356
-rw-r--r--fw/decomp/asd_33.0.8.239_4c19d868.c921
-rw-r--r--fw/decomp/asd_reference_asd2.anon.c304
-rw-r--r--fw/decomp/asd_reference_asd2.c2521
-rw-r--r--fw/decomp/asd_reference_asd2.index.json2978
35 files changed, 9609 insertions, 10013 deletions
diff --git a/fw/decomp/asd.summary.json b/fw/decomp/asd.summary.json
index 444b763..abfcbe1 100644
--- a/fw/decomp/asd.summary.json
+++ b/fw/decomp/asd.summary.json
@@ -18,10 +18,10 @@
"relabelled": 0,
"types": 1,
"protos": 1434,
- "comments": 995,
- "struct_typed_sigs": 4
+ "comments": 1002,
+ "struct_typed_sigs": 3
},
- "decomp_fail": 0
+ "decomp_fail": 2
},
{
"version": "33.0.0.163",
diff --git a/fw/decomp/asd_33.0.0.163_18debcc4.c b/fw/decomp/asd_33.0.0.163_18debcc4.c
index 496383f..149064c 100644
--- a/fw/decomp/asd_33.0.0.163_18debcc4.c
+++ b/fw/decomp/asd_33.0.0.163_18debcc4.c
@@ -3539,8 +3539,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05428)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05428((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || sub_D0D508(a1: 0, a2: *((_DWORD *)off_D079F0 + 2), a3: v5) << 31 != 0 )
{
@@ -3594,7 +3593,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05428)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D05428((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D079F0;
@@ -3652,8 +3651,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05428)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05428((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
diff --git a/fw/decomp/asd_33.0.0.173_27402e22.anon.c b/fw/decomp/asd_33.0.0.173_27402e22.anon.c
index cdf11f8..f4522e5 100644
--- a/fw/decomp/asd_33.0.0.173_27402e22.anon.c
+++ b/fw/decomp/asd_33.0.0.173_27402e22.anon.c
@@ -56,13 +56,6 @@ int __fastcall j_asd_link_reset_seq_8(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -336,6 +329,13 @@ int __fastcall sub_D042C4()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13D24_cfg0(unsigned int a1, int a2, __int16 a3)
{
return asd_reg_read_13D24_cfg0(a1, a2, a3);
@@ -497,6 +497,13 @@ int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D045E8(int a1, int a2)
{
return sub_D06CEC(a1, a2);
@@ -594,6 +601,13 @@ int sub_D05864()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_train_status_11(int a1)
{
return asd_link_train_status(a1);
@@ -678,6 +692,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -734,13 +755,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D03818(int a1, int a2)
{
return sub_D06CEC(a1, a2);
@@ -1272,6 +1286,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D03D08(int a1)
{
return sub_D06A48(a1);
@@ -1384,13 +1405,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_read_pair_regs_15(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_link_read_pair_regs(a1, a2, a3);
@@ -1468,6 +1482,13 @@ int sub_D12ECE()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1726,6 +1747,13 @@ int __fastcall j_asd_link_set_reg4248C_half_11(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1817,6 +1845,13 @@ int sub_D13052()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D1303C(_DWORD *a1)
{
return sub_D13CCC(a1);
@@ -1978,13 +2013,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D02FD4()
{
return sub_D061D8();
@@ -2090,6 +2118,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2188,13 +2223,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D0429C()
{
return sub_D061D8();
@@ -2244,13 +2272,6 @@ int sub_D0281C()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2531,20 +2552,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_4(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -2594,6 +2601,13 @@ int __fastcall sub_D13056(unsigned int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2657,6 +2671,13 @@ int __fastcall j_asd_link_ready_full_check_15(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -2734,6 +2755,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2776,13 +2804,6 @@ int sub_D1295C()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
return asd_link_train_status(a1);
@@ -2832,6 +2853,13 @@ int sub_D12A52()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D048F8()
{
return sub_D06B88();
@@ -2902,6 +2930,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D02CDC()
{
return sub_D06B88();
@@ -3096,13 +3131,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D05568(int a1)
{
return sub_D06A48(a1);
@@ -3194,6 +3222,13 @@ int __fastcall sub_D04EFE(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D12EE4()
{
JUMPOUT(0xD135A8);
@@ -3278,13 +3313,6 @@ int sub_D05B9C()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3299,13 +3327,6 @@ int __fastcall sub_D058A8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05BA0()
{
return sub_D095C0();
@@ -3355,6 +3376,13 @@ BOOL __fastcall j_asd_svc_sub_2794()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_get_signal_reg_1(int a1)
{
return asd_get_signal_reg(a1);
@@ -3467,13 +3495,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D02A8C(int a1)
{
return sub_D06AC0(a1);
@@ -3655,6 +3676,13 @@ int __fastcall j_asd_reg_read_13B74_cfg2_3(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D132C8(_DWORD *a1)
{
return sub_D13CCC(a1);
@@ -3927,13 +3955,6 @@ int __fastcall j_asd_query_link_config_9(_DWORD *a1, int *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4083,13 +4104,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4335,13 +4349,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4440,13 +4447,6 @@ int sub_D12958()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
diff --git a/fw/decomp/asd_33.0.0.173_27402e22.c b/fw/decomp/asd_33.0.0.173_27402e22.c
index a74608d..34c9f1a 100644
--- a/fw/decomp/asd_33.0.0.173_27402e22.c
+++ b/fw/decomp/asd_33.0.0.173_27402e22.c
@@ -1612,11 +1612,11 @@ LABEL_42:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
- _DWORD *v6; // r7
+ int *v6; // r7
int v7; // r6
int v8; // r0
int v9; // r0
@@ -1628,42 +1628,42 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v20; // r0
int v21; // r0
int v22; // r0
- void (__fastcall *v23)(int, _DWORD, _DWORD, unsigned int); // r9
+ void (__fastcall *v23)(int, int, unsigned int, int); // r9
int v24; // r6
int v25; // r0
_DWORD *v26; // r7
- void (__fastcall *v27)(int, _DWORD, _DWORD, int); // r9
+ void (__fastcall *v27)(int, int, unsigned int, int); // r9
int v28; // r6
int v29; // r0
int v30; // r0
int v31; // r0
- int v32; // r0
+ unsigned int field40; // r0
_DWORD *v33; // r6
int v34; // r0
- unsigned int v35; // r3
+ int v35; // r3
int v36; // r1
_DWORD *v37; // r8
int v38; // r6
int v39; // r7
- unsigned int v40; // r3
+ int v40; // r3
_DWORD *v41; // r6
int v42; // r0
int v43; // r0
_DWORD *v44; // r7
int v45; // r6
int v46; // r0
- int v47; // r5
- unsigned int v48; // r3
+ unsigned int field54; // r5
+ int v48; // r3
int v49; // r1
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
- v6 = off_D07630;
+ case 0x10u:
+ v6 = (int *)off_D07630;
if ( sub_D0F72C(a1: 0, a2: *((_DWORD *)off_D07630 + 4), a3: v5) << 31 != 0 )
{
v7 = sub_D0F650(a1: v6[95], a2: HIDWORD(v5)) & 7;
@@ -1676,25 +1676,25 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D13FA4(a1: v6[97], a2: v7, a3: v10 | 1);
}
v11 = sub_D0F72C(a1: 0, a2: v6[40], a3: v5);
- sub_D1402C(a1: 0, a2: v6[40], a3: v5, a4: v11 | 1);
+ sub_D1402C(r0_0: 0, r1_0: v6[40], r2_0: v5, r3_0: v11 | 1);
sub_D0F72C(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
- sub_D1402C(a1: 0, a2: v6[59], a3: v5, a4: (dword_D07638 & HIDWORD(v5)) + 1114112);
- sub_D1402C(a1: 0, a2: v6[59], a3: v5, a4: HIDWORD(v5) | 0x10);
+ if ( a1->field40 == 3 )
+ sub_D1402C(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: (dword_D07638 & HIDWORD(v5)) + 1114112);
+ sub_D1402C(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: HIDWORD(v5) | 0x10);
__asm { SVC 0x56 ; 'V' }
- sub_D1402C(a1: 0, a2: v6[59], a3: v5, a4: HIDWORD(v5) & 0xFFFFFFEF);
+ sub_D1402C(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: HIDWORD(v5) & 0xFFFFFFEF);
break;
}
return 8;
- case 48:
+ case 0x30u:
v26 = off_D07884;
if ( sub_D0F764(a1: *((_DWORD *)off_D07884 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- v27 = (void (__fastcall *)(int, _DWORD, _DWORD, int))off_D07634;
+ v27 = (void (__fastcall *)(int, int, unsigned int, int))off_D07634;
off_D07634(a1: 2, a2: v26[75], a3: v5, a4: 16);
- v27(a1: 2, a2: v26[75], a3: v5, a4: 16);
+ v27(r0_0: 2, r1_0: v26[75], r2_0: v5, r3_0: 16);
__asm { SVC 0x56 ; 'V' }
- v27(a1: 2, a2: v26[75], a3: v5, a4: 0);
+ v27(r0_0: 2, r1_0: v26[75], r2_0: v5, r3_0: 0);
v28 = sub_D0F764(a1: v26[100], a2: HIDWORD(v5)) & 7;
v29 = sub_D0F688(a1: v26[94], a2: v28);
sub_D13FE8(a1: v26[94], a2: v28, a3: v29 | 0x80);
@@ -1705,7 +1705,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D14090(a1: v26[101], a2: v28, a3: v31 | 1);
}
break;
- case 32:
+ case 0x20u:
v17 = off_D07630;
if ( sub_D0F72C(a1: 1, a2: *((_DWORD *)off_D07630 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -1719,40 +1719,40 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D13FA4(a1: v17[98], a2: 0, a3: v21 | 1);
}
v22 = sub_D0F72C(a1: 1, a2: v17[67], a3: v5);
- v23 = (void (__fastcall *)(int, _DWORD, _DWORD, unsigned int))off_D07634;
+ v23 = (void (__fastcall *)(int, int, unsigned int, int))off_D07634;
v24 = v22;
off_D07634(a1: 1, a2: v17[67], a3: v5, a4: v22 | 0x10);
__asm { SVC 0x56 ; 'V' }
- v23(a1: 1, a2: v17[67], a3: v5, a4: v24 & 0xFFFFFFEF);
+ v23(r0_0: 1, r1_0: v17[67], r2_0: v5, r3_0: v24 & 0xFFFFFFEF);
v25 = sub_D0F72C(a1: 1, a2: v17[87], a3: v5);
- v23(a1: 1, a2: v17[87], a3: v5, a4: v25 | 0x11);
+ v23(r0_0: 1, r1_0: v17[87], r2_0: v5, r3_0: v25 | 0x11);
break;
default:
break;
}
- v32 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v32 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v33 = off_D07920;
v34 = sub_D0F72C(a1: 0, a2: *((_DWORD *)off_D07920 + 41), a3: v5);
v35 = v34 | 1;
- if ( *(_DWORD *)(a1 + 84) == 1 )
+ if ( a1->field54 == 1 )
v35 = v34 & 0xFFFFFFFE;
v36 = v33[41];
LABEL_40:
v43 = 0;
LABEL_41:
- sub_D1402C(a1: v43, a2: v36, a3: v5, a4: v35);
+ sub_D1402C(r0_0: v43, r1_0: v36, r2_0: v5, r3_0: v35);
return 7;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v41 = off_D07920;
v42 = sub_D0F72C(a1: 1, a2: *((_DWORD *)off_D07920 + 86), a3: v5);
v35 = v42 | 1;
- if ( *(_DWORD *)(a1 + 84) == 1 )
+ if ( a1->field54 == 1 )
v35 = v42 & 0xFFFFFFFE;
v36 = v41[86];
v43 = 1;
@@ -1760,34 +1760,34 @@ LABEL_41:
}
return 7;
}
- if ( v32 == 4 )
+ if ( field40 == 4 )
{
v44 = off_D07920;
v45 = sub_D0F72C(a1: 0, a2: *((_DWORD *)off_D07920 + 59), a3: v5);
v46 = sub_D0F72C(a1: 0, a2: v44[47], a3: v5);
- v47 = *(_DWORD *)(a1 + 84);
+ field54 = a1->field54;
v48 = v46 | 0x100;
- if ( v47 == 1 )
+ if ( field54 == 1 )
v48 = v46 & 0xFFFFFEFF;
- sub_D1402C(a1: 0, a2: v44[47], a3: v5, a4: v48);
+ sub_D1402C(r0_0: 0, r1_0: v44[47], r2_0: v5, r3_0: v48);
v49 = 512;
- if ( v47 == 1 )
+ if ( field54 == 1 )
v49 = 256;
v35 = (v45 & 0xFFFFFCFF) + v49;
v36 = v44[59];
goto LABEL_40;
}
- if ( v32 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v37 = off_D084D8;
v38 = sub_D0F72C(a1: 0, a2: *((_DWORD *)off_D084D8 + 59), a3: v5);
v39 = sub_D0F72C(a1: 0, a2: v37[47], a3: v5);
v40 = v38 & 0xFFFFFCFF | 0x100;
- if ( *(_DWORD *)(a1 + 84) == 2 )
+ if ( a1->field54 == 2 )
v40 = v38 | 0x300;
- sub_D1402C(a1: 0, a2: v37[59], a3: v5, a4: v40);
+ sub_D1402C(r0_0: 0, r1_0: v37[59], r2_0: v5, r3_0: v40);
v36 = v37[47];
v35 = v39 & 0xFFFFFFFE;
goto LABEL_40;
@@ -1968,7 +1968,7 @@ LABEL_9:
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=762] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -1978,10 +1978,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int v9; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -1990,26 +1990,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field08; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ unsigned int *p_field04; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field10; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
+ unsigned int *v41; // r4
unsigned int *v42; // r4
unsigned int m; // r5
unsigned int v44; // r0
@@ -2020,7 +2020,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[7]; // [sp+18h] [bp-1Ch] BYREF
bzero_core(result: v50, a2: 0x1Cu);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D092F0;
v3 = 0;
@@ -2029,20 +2029,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D092F0 + 3);
v8 = *((_QWORD *)off_D092F0 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D092F0 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D092F0 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
v9 = sub_D0F72C(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 6;
- *(_DWORD *)(v10 + 36) = v9 & 7;
- *(_DWORD *)(v10 + 32) = (v9 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = v9 & 7;
+ *((_DWORD *)v10 + 8) = (v9 & 0x1000000) != 0;
if ( v5 <= 6 )
v11 = (v9 & 0x1000000) == 0;
if ( v11 )
@@ -2050,12 +2050,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[33];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)sub_D0F72C(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field08 + v6) = ((unsigned int)sub_D0F72C(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 71) = 1;
+ *((_DWORD *)v13 + 72) = v6;
}
}
v3 += 6;
@@ -2067,7 +2067,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ *(&a1[2].field08 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -2077,7 +2077,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 116);
+ v21 = (int *)(&a1[2].field24 + 6 * v19);
while ( v19 < v20 )
{
*v21 = sub_D0F72C(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -2086,21 +2086,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 368);
+ p_field08 = (int *)&a1[9].field08;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D0F764(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D0F764(a1: v4[54], a2: j) & 7;
+ *p_field08 = sub_D0F764(a1: v4[99], a2: j) & 1;
+ p_field08[1] = sub_D0F764(a1: v4[54], a2: j) & 7;
v24 = sub_D0F79C(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field08[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field08;
+ p_field08 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 452) = 1 << (j & 0x1F);
+ *(&a1[11].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D0F70C(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -2127,22 +2127,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 376);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 456);
- v40 = (_DWORD *)(v38 + 464);
- v41 = (_DWORD *)(v38 + 460);
+ p_field10 = &a1[9].field10;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 114;
+ v40 = v38 + 116;
+ v41 = v38 + 115;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field10 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field10 += 3;
--v36;
}
}
@@ -2155,26 +2155,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 124);
+ p_field04 = &a1[3].field04;
while ( v32 != 0 )
{
--v32;
- if ( *v33 == v31 )
+ if ( *p_field04 == v31 )
{
- v33[1] = v30;
- v33[2] = v31;
- v33[3] = 1;
+ p_field04[1] = v30;
+ p_field04[2] = v31;
+ p_field04[3] = 1;
}
- v33 += 6;
+ p_field04 += 6;
}
}
}
- v42 = (unsigned int *)(a1 + 564);
+ v42 = &a1[14].field04;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D0F820(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
*v42 = v44 & 1;
v42[1] = v45;
@@ -4472,8 +4472,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C28)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05C28((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || sub_D0F72C(a1: 0, a2: *((_DWORD *)off_D08984 + 4), a3: v5) << 31 != 0 )
{
@@ -4527,7 +4526,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C28)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D05C28((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D08984;
@@ -4585,8 +4584,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C28)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05C28((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -7287,7 +7285,7 @@ int __fastcall j_sub_D07A8C_11(_DWORD *a1)
// attributes: thunk
int __fastcall j_sub_D07A8C_3(_DWORD *a1)
{
- return asd_get_link_caps_full_v2((int)a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D07D2C_1 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.0.181_e0b3c2e0.anon.c b/fw/decomp/asd_33.0.0.181_e0b3c2e0.anon.c
index dbf4e34..36dde1e 100644
--- a/fw/decomp/asd_33.0.0.181_e0b3c2e0.anon.c
+++ b/fw/decomp/asd_33.0.0.181_e0b3c2e0.anon.c
@@ -56,13 +56,6 @@ BOOL __fastcall sub_D12E20(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -301,6 +294,13 @@ int __fastcall j_asd_link_reset_seq_12(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13D24_cfg0(unsigned int a1, int a2, __int16 a3)
{
return asd_reg_read_13D24_cfg0(a1, a2, a3);
@@ -441,6 +441,13 @@ int sub_D045E8()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D05530()
{
return sub_D05F30();
@@ -525,6 +532,13 @@ int __fastcall sub_D03F88(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0557C(int a1)
{
return sub_D06BA8(a1);
@@ -623,6 +637,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -665,13 +686,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D045C0(_DWORD *a1)
{
return sub_D061F8(a1);
@@ -854,6 +868,13 @@ int __fastcall sub_D04C1E(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_14(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_0(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -1218,6 +1239,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D129FC()
{
return sub_D13870();
@@ -1337,13 +1365,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -1455,6 +1476,13 @@ int sub_D0355C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D127FC(int a1)
{
return sub_D12FDC(a1);
@@ -1693,6 +1721,13 @@ int __fastcall j_asd_link_set_reg4248C_half_11(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1777,6 +1812,13 @@ int __fastcall j_asd_reg_read_13D24_cfg0_14(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D03230()
{
return sub_D062E0();
@@ -1910,13 +1952,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D03FD0(_DWORD *a1)
{
return sub_D06D0C(a1);
@@ -2043,6 +2078,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2162,13 +2204,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D02CF0(_DWORD *a1)
{
return sub_D06D0C(a1);
@@ -2225,13 +2260,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2441,13 +2469,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D03CF0(_DWORD *a1)
{
return sub_D061F8(a1);
@@ -2455,13 +2476,6 @@ int __fastcall sub_D03CF0(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_4(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -2504,6 +2518,13 @@ int sub_D05BBC()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2594,6 +2615,13 @@ int __fastcall j_asd_clear_link_outputs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -2671,6 +2699,13 @@ int __fastcall sub_D03578(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2741,13 +2776,6 @@ int sub_D058D0()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
return asd_link_train_status(a1);
@@ -2776,6 +2804,13 @@ int __fastcall j_asd_connector_enable_5(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D058C8(int a1)
{
return sub_D06AE0(a1);
@@ -2839,6 +2874,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D12B70()
{
return sub_D13974();
@@ -3000,13 +3042,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D02CD4()
{
return sub_D06954();
@@ -3105,6 +3140,13 @@ int __fastcall j_asd_state_not_1_cfg0_4(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_train_status_4(int a1)
{
return asd_link_train_status(a1);
@@ -3175,13 +3217,6 @@ int __fastcall sub_D048D8(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D12B7A()
{
return sub_D13ABC();
@@ -3202,13 +3237,6 @@ int __fastcall sub_D12784(int a1)
}
/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
int sub_D06764()
{
return 7;
@@ -3272,6 +3300,13 @@ BOOL __fastcall j_asd_svc_sub_2794()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_get_signal_reg_1(int a1)
{
return asd_get_signal_reg(a1);
@@ -3384,13 +3419,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D037F4()
{
return sub_D062E0();
@@ -3589,6 +3617,13 @@ int sub_D03548()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D12E5E()
{
return sub_D135CC();
@@ -3812,13 +3847,6 @@ int sub_D12558()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_14(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13D24_cfg0_10(unsigned int a1, int a2, __int16 a3)
{
return asd_reg_read_13D24_cfg0(a1, a2, a3);
@@ -3917,13 +3945,6 @@ int __fastcall j_asd_query_link_config_9(_DWORD *a1, int *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4022,13 +4043,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4273,13 +4287,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D03A68(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06A68(a1, a2, a3);
@@ -4350,13 +4357,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
diff --git a/fw/decomp/asd_33.0.0.181_e0b3c2e0.c b/fw/decomp/asd_33.0.0.181_e0b3c2e0.c
index 9e057c9..2325fb4 100644
--- a/fw/decomp/asd_33.0.0.181_e0b3c2e0.c
+++ b/fw/decomp/asd_33.0.0.181_e0b3c2e0.c
@@ -1612,9 +1612,9 @@ LABEL_42:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -1637,7 +1637,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v29; // r0
int v30; // r0
int v31; // r0
- int v32; // r0
+ unsigned int field40; // r0
_DWORD *v33; // r6
int v34; // r0
int v35; // r3
@@ -1652,17 +1652,17 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
_DWORD *v44; // r7
int v45; // r6
int v46; // r0
- int v47; // r5
+ unsigned int field54; // r5
int v48; // r3
int v49; // r1
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07650;
if ( sub_D0F410(a1: 0, a2: *((_DWORD *)off_D07650 + 4), a3: v5) << 31 != 0 )
{
@@ -1678,7 +1678,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
v11 = sub_D0F410(a1: 0, a2: v6[40], a3: v5);
sub_D13F3C(r0_0: 0, r1_0: v6[40], r2_0: v5, r3_0: v11 | 1);
sub_D0F410(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
sub_D13F3C(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: (dword_D07658 & HIDWORD(v5)) + 1114112);
sub_D13F3C(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: HIDWORD(v5) | 0x10);
__asm { SVC 0x56 ; 'V' }
@@ -1686,7 +1686,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v26 = off_D078A4;
if ( sub_D0F448(a1: *((_DWORD *)off_D078A4 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -1705,7 +1705,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D13FA0(a1: v26[101], a2: v28, a3: v31 | 1);
}
break;
- case 32:
+ case 0x20u:
v17 = off_D07650;
if ( sub_D0F410(a1: 1, a2: *((_DWORD *)off_D07650 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -1730,15 +1730,15 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v32 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v32 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v33 = off_D07940;
v34 = sub_D0F410(a1: 0, a2: *((_DWORD *)off_D07940 + 41), a3: v5);
v35 = v34 | 1;
- if ( *(_DWORD *)(a1 + 84) == 1 )
+ if ( a1->field54 == 1 )
v35 = v34 & 0xFFFFFFFE;
v36 = v33[41];
LABEL_40:
@@ -1747,12 +1747,12 @@ LABEL_41:
sub_D13F3C(r0_0: v43, r1_0: v36, r2_0: v5, r3_0: v35);
return 7;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v41 = off_D07940;
v42 = sub_D0F410(a1: 1, a2: *((_DWORD *)off_D07940 + 86), a3: v5);
v35 = v42 | 1;
- if ( *(_DWORD *)(a1 + 84) == 1 )
+ if ( a1->field54 == 1 )
v35 = v42 & 0xFFFFFFFE;
v36 = v41[86];
v43 = 1;
@@ -1760,32 +1760,32 @@ LABEL_41:
}
return 7;
}
- if ( v32 == 4 )
+ if ( field40 == 4 )
{
v44 = off_D07940;
v45 = sub_D0F410(a1: 0, a2: *((_DWORD *)off_D07940 + 59), a3: v5);
v46 = sub_D0F410(a1: 0, a2: v44[47], a3: v5);
- v47 = *(_DWORD *)(a1 + 84);
+ field54 = a1->field54;
v48 = v46 | 0x100;
- if ( v47 == 1 )
+ if ( field54 == 1 )
v48 = v46 & 0xFFFFFEFF;
sub_D13F3C(r0_0: 0, r1_0: v44[47], r2_0: v5, r3_0: v48);
v49 = 512;
- if ( v47 == 1 )
+ if ( field54 == 1 )
v49 = 256;
v35 = (v45 & 0xFFFFFCFF) + v49;
v36 = v44[59];
goto LABEL_40;
}
- if ( v32 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v37 = off_D084F8;
v38 = sub_D0F410(a1: 0, a2: *((_DWORD *)off_D084F8 + 59), a3: v5);
v39 = sub_D0F410(a1: 0, a2: v37[47], a3: v5);
v40 = v38 & 0xFFFFFCFF | 0x100;
- if ( *(_DWORD *)(a1 + 84) == 2 )
+ if ( a1->field54 == 2 )
v40 = v38 | 0x300;
sub_D13F3C(r0_0: 0, r1_0: v37[59], r2_0: v5, r3_0: v40);
v36 = v37[47];
@@ -1968,7 +1968,7 @@ LABEL_9:
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=762] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -1978,10 +1978,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int v9; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -1990,26 +1990,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field08; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ unsigned int *p_field04; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field10; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
+ unsigned int *v41; // r4
unsigned int *v42; // r4
unsigned int m; // r5
unsigned int v44; // r0
@@ -2020,7 +2020,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[7]; // [sp+18h] [bp-1Ch] BYREF
bzero_core(result: v50, a2: 0x1Cu);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D09308;
v3 = 0;
@@ -2029,20 +2029,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09308 + 3);
v8 = *((_QWORD *)off_D09308 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09308 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09308 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
v9 = sub_D0F410(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 6;
- *(_DWORD *)(v10 + 36) = v9 & 7;
- *(_DWORD *)(v10 + 32) = (v9 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = v9 & 7;
+ *((_DWORD *)v10 + 8) = (v9 & 0x1000000) != 0;
if ( v5 <= 6 )
v11 = (v9 & 0x1000000) == 0;
if ( v11 )
@@ -2050,12 +2050,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[33];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)sub_D0F410(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field08 + v6) = ((unsigned int)sub_D0F410(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 71) = 1;
+ *((_DWORD *)v13 + 72) = v6;
}
}
v3 += 6;
@@ -2067,7 +2067,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ *(&a1[2].field08 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -2077,7 +2077,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 116);
+ v21 = (int *)(&a1[2].field24 + 6 * v19);
while ( v19 < v20 )
{
*v21 = sub_D0F410(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -2086,21 +2086,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 368);
+ p_field08 = (int *)&a1[9].field08;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D0F448(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D0F448(a1: v4[54], a2: j) & 7;
+ *p_field08 = sub_D0F448(a1: v4[99], a2: j) & 1;
+ p_field08[1] = sub_D0F448(a1: v4[54], a2: j) & 7;
v24 = sub_D0F480(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field08[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field08;
+ p_field08 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 452) = 1 << (j & 0x1F);
+ *(&a1[11].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D0F3F0(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -2127,22 +2127,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 376);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 456);
- v40 = (_DWORD *)(v38 + 464);
- v41 = (_DWORD *)(v38 + 460);
+ p_field10 = &a1[9].field10;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 114;
+ v40 = v38 + 116;
+ v41 = v38 + 115;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field10 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field10 += 3;
--v36;
}
}
@@ -2155,26 +2155,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 124);
+ p_field04 = &a1[3].field04;
while ( v32 != 0 )
{
--v32;
- if ( *v33 == v31 )
+ if ( *p_field04 == v31 )
{
- v33[1] = v30;
- v33[2] = v31;
- v33[3] = 1;
+ p_field04[1] = v30;
+ p_field04[2] = v31;
+ p_field04[3] = 1;
}
- v33 += 6;
+ p_field04 += 6;
}
}
}
- v42 = (unsigned int *)(a1 + 564);
+ v42 = &a1[14].field04;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D0F504(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
*v42 = v44 & 1;
v42[1] = v45;
@@ -4513,8 +4513,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C48)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05C48((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || sub_D0F410(a1: 0, a2: *((_DWORD *)off_D089A4 + 4), a3: v5) << 31 != 0 )
{
@@ -4568,7 +4567,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C48)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D05C48((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D089A4;
@@ -4626,8 +4625,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C48)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05C48((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
diff --git a/fw/decomp/asd_33.0.0.195_904a5e72.anon.c b/fw/decomp/asd_33.0.0.195_904a5e72.anon.c
index 69a6eed..d107cd0 100644
--- a/fw/decomp/asd_33.0.0.195_904a5e72.anon.c
+++ b/fw/decomp/asd_33.0.0.195_904a5e72.anon.c
@@ -77,13 +77,6 @@ int __fastcall j_asd_link_reset_seq_8(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -329,6 +322,13 @@ int __fastcall sub_D131B0(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13D24_cfg0(unsigned int a1, int a2, __int16 a3)
{
return asd_reg_read_13D24_cfg0(a1, a2, a3);
@@ -406,6 +406,13 @@ int __fastcall j_asd_clear_link_outputs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D04390(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06B2C(a1, a2, a3);
@@ -504,6 +511,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_12(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -581,6 +595,13 @@ int __fastcall j_asd_session_op57_invoke_2()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D038D8(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06B2C(a1, a2, a3);
@@ -658,6 +679,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D02DA4(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06B2C(a1, a2, a3);
@@ -735,13 +763,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D0362C(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06B2C(a1, a2, a3);
@@ -937,6 +958,13 @@ int __fastcall j_asd_link_wait_and_set_10(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1231,13 +1259,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D030A8()
{
return sub_D063A4();
@@ -1336,6 +1357,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D04CE2(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06B2C(a1, a2, a3);
@@ -1434,13 +1462,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -1518,6 +1539,13 @@ int __fastcall sub_D049B4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1770,6 +1798,13 @@ int __fastcall j_asd_link_set_reg4248C_half_11(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1861,6 +1896,13 @@ int __fastcall j_asd_reg_read_13D24_cfg0_14(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D02DAC(int a1, int a2)
{
return sub_D06C6C(a1, a2);
@@ -1994,13 +2036,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_query_link_config_6(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -2120,6 +2155,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2232,13 +2274,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_9(int a1)
{
return asd_link_train_status(a1);
@@ -2288,13 +2323,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2498,13 +2526,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2512,13 +2533,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_4(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -2568,6 +2582,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_8(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2666,6 +2687,13 @@ int sub_D05644()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D03B30()
{
return sub_D06BA4();
@@ -2771,6 +2799,13 @@ int __fastcall sub_D030C8(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2819,13 +2854,6 @@ int sub_D13184()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D1319A()
{
return sub_D13480();
@@ -2868,6 +2896,13 @@ int __fastcall j_asd_connector_enable_5(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_9(int a1)
{
return asd_program_key_regs(a1);
@@ -2924,6 +2959,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D05320(int a1)
{
return sub_D06BA4(a1);
@@ -3119,13 +3161,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D0500E(int a1)
{
return sub_D06C6C(a1);
@@ -3203,6 +3238,13 @@ int __fastcall sub_D03DB4(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_train_status_4(int a1)
{
return asd_link_train_status(a1);
@@ -3280,13 +3322,6 @@ int sub_D04064()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3301,13 +3336,6 @@ int sub_D02DA8()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D03DE0(int a1)
{
return sub_D06C6C(a1);
@@ -3350,6 +3378,13 @@ BOOL __fastcall j_asd_svc_sub_2794()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_get_signal_reg_1(int a1)
{
return asd_get_signal_reg(a1);
@@ -3454,13 +3489,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
}
/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
int sub_D140A8()
{
return 0;
@@ -3482,13 +3510,6 @@ int __fastcall sub_D03324(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_pipe_lookup_15(_DWORD *a1, int a2, __int16 a3)
{
return asd_pipe_lookup(a1, a2, a3);
@@ -3573,16 +3594,16 @@ int __fastcall j_asd_program_link_by_signal_11(int a1, int a2, int a3, int a4)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
+int __fastcall j_asd_reg_read_13B74_cfg2_3(int a1)
{
- return asd_dio_read_block(a1, a2);
+ return asd_reg_read_13B74_cfg2(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_reg_read_13B74_cfg2_3(int a1)
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
{
- return asd_reg_read_13B74_cfg2(a1);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
@@ -3859,13 +3880,6 @@ int __fastcall j_asd_query_link_config_9(_DWORD *a1, int *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -3914,6 +3928,13 @@ int sub_D06828()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_2(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -3963,13 +3984,6 @@ int __fastcall sub_D02D80(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D13030(_DWORD *a1)
{
return sub_D1387C(a1);
@@ -3998,13 +4012,6 @@ int __fastcall sub_D049C0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4250,13 +4257,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4362,13 +4362,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4523,6 +4516,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int sub_D10B00()
{
diff --git a/fw/decomp/asd_33.0.0.195_904a5e72.c b/fw/decomp/asd_33.0.0.195_904a5e72.c
index 0ec2ae9..b0fb83b 100644
--- a/fw/decomp/asd_33.0.0.195_904a5e72.c
+++ b/fw/decomp/asd_33.0.0.195_904a5e72.c
@@ -1617,27 +1617,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( off_D13E0C[2] <= a2 )
return 2;
v4 = sub_D0E270(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D13E10 + 4 * a2);
result = 0;
@@ -1645,28 +1645,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2403,9 +2403,9 @@ LABEL_42:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2428,7 +2428,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v29; // r0
int v30; // r0
int v31; // r0
- int v32; // r0
+ unsigned int field40; // r0
_DWORD *v33; // r6
int v34; // r0
int v35; // r3
@@ -2443,17 +2443,17 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
_DWORD *v44; // r7
int v45; // r6
int v46; // r0
- int v47; // r5
+ unsigned int field54; // r5
int v48; // r3
int v49; // r1
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07714;
if ( sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D07714 + 4), a3: v5) << 31 != 0 )
{
@@ -2469,7 +2469,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
v11 = sub_D0FD04(a1: 0, a2: v6[40], a3: v5);
sub_D14810(r0_0: 0, r1_0: v6[40], r2_0: v5, r3_0: v11 | 1);
sub_D0FD04(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
sub_D14810(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: (dword_D0771C & HIDWORD(v5)) + 1114112);
sub_D14810(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: HIDWORD(v5) | 0x10);
__asm { SVC 0x56 ; 'V' }
@@ -2477,7 +2477,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v26 = off_D07968;
if ( sub_D0FD3C(a1: *((_DWORD *)off_D07968 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -2496,7 +2496,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D14874(a1: v26[101], a2: v28, a3: v31 | 1);
}
break;
- case 32:
+ case 0x20u:
v17 = off_D07714;
if ( sub_D0FD04(a1: 1, a2: *((_DWORD *)off_D07714 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -2521,15 +2521,15 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v32 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v32 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v33 = off_D07A04;
v34 = sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D07A04 + 41), a3: v5);
v35 = v34 | 1;
- if ( *(_DWORD *)(a1 + 84) == 1 )
+ if ( a1->field54 == 1 )
v35 = v34 & 0xFFFFFFFE;
v36 = v33[41];
LABEL_40:
@@ -2538,12 +2538,12 @@ LABEL_41:
sub_D14810(r0_0: v43, r1_0: v36, r2_0: v5, r3_0: v35);
return 7;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v41 = off_D07A04;
v42 = sub_D0FD04(a1: 1, a2: *((_DWORD *)off_D07A04 + 86), a3: v5);
v35 = v42 | 1;
- if ( *(_DWORD *)(a1 + 84) == 1 )
+ if ( a1->field54 == 1 )
v35 = v42 & 0xFFFFFFFE;
v36 = v41[86];
v43 = 1;
@@ -2551,32 +2551,32 @@ LABEL_41:
}
return 7;
}
- if ( v32 == 4 )
+ if ( field40 == 4 )
{
v44 = off_D07A04;
v45 = sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D07A04 + 59), a3: v5);
v46 = sub_D0FD04(a1: 0, a2: v44[47], a3: v5);
- v47 = *(_DWORD *)(a1 + 84);
+ field54 = a1->field54;
v48 = v46 | 0x100;
- if ( v47 == 1 )
+ if ( field54 == 1 )
v48 = v46 & 0xFFFFFEFF;
sub_D14810(r0_0: 0, r1_0: v44[47], r2_0: v5, r3_0: v48);
v49 = 512;
- if ( v47 == 1 )
+ if ( field54 == 1 )
v49 = 256;
v35 = (v45 & 0xFFFFFCFF) + v49;
v36 = v44[59];
goto LABEL_40;
}
- if ( v32 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v37 = off_D085BC;
v38 = sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D085BC + 59), a3: v5);
v39 = sub_D0FD04(a1: 0, a2: v37[47], a3: v5);
v40 = v38 & 0xFFFFFCFF | 0x100;
- if ( *(_DWORD *)(a1 + 84) == 2 )
+ if ( a1->field54 == 2 )
v40 = v38 | 0x300;
sub_D14810(r0_0: 0, r1_0: v37[59], r2_0: v5, r3_0: v40);
v36 = v37[47];
@@ -2830,7 +2830,7 @@ LABEL_9:
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=762] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -2840,10 +2840,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int v9; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -2852,26 +2852,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field08; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ unsigned int *p_field04; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field10; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
+ unsigned int *v41; // r4
unsigned int *v42; // r4
unsigned int m; // r5
unsigned int v44; // r0
@@ -2882,7 +2882,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[7]; // [sp+18h] [bp-1Ch] BYREF
bzero_core(result: v50, a2: 0x1Cu);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D093C0;
v3 = 0;
@@ -2891,20 +2891,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D093C0 + 3);
v8 = *((_QWORD *)off_D093C0 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D093C0 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D093C0 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
v9 = sub_D0FD04(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 6;
- *(_DWORD *)(v10 + 36) = v9 & 7;
- *(_DWORD *)(v10 + 32) = (v9 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = v9 & 7;
+ *((_DWORD *)v10 + 8) = (v9 & 0x1000000) != 0;
if ( v5 <= 6 )
v11 = (v9 & 0x1000000) == 0;
if ( v11 )
@@ -2912,12 +2912,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[36];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)sub_D0FD04(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field08 + v6) = ((unsigned int)sub_D0FD04(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 71) = 1;
+ *((_DWORD *)v13 + 72) = v6;
}
}
v3 += 6;
@@ -2929,7 +2929,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ *(&a1[2].field08 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -2939,7 +2939,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 116);
+ v21 = (int *)(&a1[2].field24 + 6 * v19);
while ( v19 < v20 )
{
*v21 = sub_D0FD04(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -2948,21 +2948,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 368);
+ p_field08 = (int *)&a1[9].field08;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D0FD3C(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D0FD3C(a1: v4[54], a2: j) & 7;
+ *p_field08 = sub_D0FD3C(a1: v4[99], a2: j) & 1;
+ p_field08[1] = sub_D0FD3C(a1: v4[54], a2: j) & 7;
v24 = sub_D0FD74(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field08[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field08;
+ p_field08 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 452) = 1 << (j & 0x1F);
+ *(&a1[11].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D0FCE4(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -2989,22 +2989,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 376);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 456);
- v40 = (_DWORD *)(v38 + 464);
- v41 = (_DWORD *)(v38 + 460);
+ p_field10 = &a1[9].field10;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 114;
+ v40 = v38 + 116;
+ v41 = v38 + 115;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field10 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field10 += 3;
--v36;
}
}
@@ -3017,26 +3017,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 124);
+ p_field04 = &a1[3].field04;
while ( v32 != 0 )
{
--v32;
- if ( *v33 == v31 )
+ if ( *p_field04 == v31 )
{
- v33[1] = v30;
- v33[2] = v31;
- v33[3] = 1;
+ p_field04[1] = v30;
+ p_field04[2] = v31;
+ p_field04[3] = 1;
}
- v33 += 6;
+ p_field04 += 6;
}
}
}
- v42 = (unsigned int *)(a1 + 564);
+ v42 = &a1[14].field04;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D0FDF8(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
*v42 = v44 & 1;
v42[1] = v45;
@@ -5590,8 +5590,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05D0C)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05D0C((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D08A6C + 4), a3: v5) << 31 != 0 )
{
@@ -5645,7 +5644,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05D0C)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D05D0C((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D08A6C;
@@ -5703,8 +5702,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05D0C)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05D0C((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -5740,14 +5738,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -5755,11 +5753,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -5770,7 +5768,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -5784,21 +5782,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D08D94 + 3);
@@ -5820,7 +5818,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D08D94 + 3);
@@ -5833,9 +5831,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -5852,7 +5850,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -5873,25 +5871,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09978;
- if ( *((_DWORD *)off_D09978 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09978 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09978 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09978 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09978 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -5899,7 +5897,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05D0C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05D0C(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -5921,17 +5919,15 @@ LABEL_23:
switch ( sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D08D98 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D05FE4(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D05FE4() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -5940,12 +5936,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -5957,7 +5953,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05D0C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05D0C(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -5977,22 +5973,22 @@ LABEL_23:
if ( sub_D0FD04(a1: 1, a2: *((_DWORD *)off_D08D98 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05D0C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05D0C(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D08D98;
if ( sub_D0FD3C(a1: *((_DWORD *)off_D08D98 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D0FD3C(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -6012,28 +6008,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[38];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -6041,13 +6037,13 @@ LABEL_85:
v17 = 0;
if ( (sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D090AC + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -6055,14 +6051,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -6070,11 +6066,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -6085,7 +6081,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -6099,21 +6095,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D090C0 + 3);
@@ -6135,7 +6130,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D090C0 + 3);
@@ -6148,9 +6143,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -6167,7 +6162,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -6188,33 +6183,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D090C0;
- if ( *((_DWORD *)off_D090C0 + 1) <= v18 )
+ if ( *((_DWORD *)off_D090C0 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D090C0 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D090C0 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D090C0 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05D9C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05D9C(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -6236,17 +6231,15 @@ LABEL_23:
switch ( sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D090AC + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D05FE4(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D05FE4() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -6255,12 +6248,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -6272,7 +6265,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05D9C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05D9C(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -6292,22 +6285,22 @@ LABEL_23:
if ( sub_D0FD04(a1: 1, a2: *((_DWORD *)off_D090AC + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05D9C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05D9C(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D090AC;
if ( sub_D0FD3C(a1: *((_DWORD *)off_D090AC + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D0FD3C(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -6327,40 +6320,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D0682C(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D0682C();
if ( v17 == 0 && (sub_D0FD04(a1: 0, a2: *((_DWORD *)off_D093C4 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -9129,7 +9117,7 @@ int __fastcall j_sub_D07364_19(int a1, int a2)
// attributes: thunk
int __fastcall j_sub_D07364_20(int a1, int a2)
{
- return asd_dio_read_block(a1, a2);
+ return asd_dio_read_block((struct asd_link_caps *)a1, a2);
}
/* ==== j_sub_D07364_4 [tier=EXACT size=4] ==== */
@@ -9215,7 +9203,7 @@ int __fastcall j_sub_D07784_3(_DWORD *a1)
// attributes: thunk
int __fastcall j_sub_D07A8C_3(_DWORD *a1)
{
- return asd_get_link_caps_full_v2((int)a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D07BDC_1 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.0.239_0bcc6b23.anon.c b/fw/decomp/asd_33.0.0.239_0bcc6b23.anon.c
index 26c5145..002baaf 100644
--- a/fw/decomp/asd_33.0.0.239_0bcc6b23.anon.c
+++ b/fw/decomp/asd_33.0.0.239_0bcc6b23.anon.c
@@ -84,13 +84,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D050CA(int a1)
{
return sub_D0708C(a1);
@@ -357,6 +350,13 @@ int __fastcall j_asd_link_reset_seq_12(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_15(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -455,6 +455,13 @@ int __fastcall sub_D0440C(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -511,23 +518,23 @@ int __fastcall j_asd_dio_enable_all_0(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_1(int a1, int a2, __int16 a3)
+BOOL __fastcall sub_D1513A(unsigned int a1)
{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
+ return sub_D158A0(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-BOOL __fastcall sub_D1513A(unsigned int a1)
+int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
{
- return sub_D158A0(a1);
+ return asd_link_query_a(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
+int __fastcall j_asd_encoder_enable_seq_v3_2(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- return asd_link_query_a(a1, a2, a3);
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -553,6 +560,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_write_quad_10(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -637,6 +651,13 @@ int __fastcall j_asd_session_op57_invoke_2()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D053EC(int a1)
{
return sub_D0708C(a1);
@@ -742,6 +763,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -798,13 +826,6 @@ int __fastcall j_asd_link_reset_seq(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_connector_program_seq(unsigned int a1)
{
return asd_connector_program_seq(a1);
@@ -973,13 +994,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_10(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full(int a1)
-{
- return asd_get_link_caps_full(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_pair_D49838_3(_DWORD *a1)
{
return asd_get_pair_D49838(a1);
@@ -1043,6 +1057,13 @@ int __fastcall sub_D03E54(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1420,13 +1441,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_4(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -1504,6 +1518,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_6(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -1602,13 +1623,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_16(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -1707,6 +1721,13 @@ int __fastcall j_asd_session_op57_invoke_3()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1966,6 +1987,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -2064,6 +2092,13 @@ int __fastcall j_asd_link_program_timing_16(int a1, unsigned __int8 *a2, unsigne
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D02DB0()
{
return sub_D07880();
@@ -2203,13 +2238,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_query_link_config_6(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -2371,6 +2399,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2413,6 +2448,13 @@ int __fastcall j_asd_link_read_pair_regs_5(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_1(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_12(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -2483,13 +2525,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2553,13 +2588,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2749,13 +2777,6 @@ int sub_D02D94()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2763,13 +2784,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04D96()
{
return sub_D06EA8();
@@ -2826,6 +2840,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_8(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v4(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D15400()
{
return sub_D15E6C();
@@ -2833,6 +2854,13 @@ int sub_D15400()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2952,6 +2980,13 @@ int __fastcall j_asd_dio_current_instance_op_2(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -2986,13 +3021,6 @@ int __fastcall j_asd_link_program_timing_13(int a1, unsigned __int8 *a2, unsigne
}
/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v4(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
int sub_D06AFC()
{
return 7;
@@ -3063,6 +3091,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -3118,13 +3153,6 @@ int __fastcall sub_D0615C(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
return asd_link_train_status(a1);
@@ -3139,23 +3167,23 @@ int __fastcall j_asd_link_read_pair_regs_14(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_2(int a1, int a2, __int16 a3)
+int __fastcall j_asd_reg_read_13D24_cfg0_1(unsigned int a1, int a2, __int16 a3)
{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
+ return asd_reg_read_13D24_cfg0(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_reg_read_13D24_cfg0_1(unsigned int a1, int a2, __int16 a3)
+int __fastcall j_asd_connector_enable_5(unsigned int a1)
{
- return asd_reg_read_13D24_cfg0(a1, a2, a3);
+ return asd_connector_enable(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_connector_enable_5(unsigned int a1)
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
{
- return asd_connector_enable(a1);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
@@ -3223,6 +3251,13 @@ void sub_D152DA()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0_8(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -3405,13 +3440,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3489,6 +3517,13 @@ int sub_D14E44()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3573,13 +3608,6 @@ int __fastcall j_asd_pipe_lookup_17(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_11(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3601,13 +3629,6 @@ int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3650,6 +3671,13 @@ int sub_D02B5C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_ready_full_check_17(int a1)
{
return asd_link_ready_full_check(a1);
@@ -3755,13 +3783,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_4(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3790,13 +3811,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_write_block_paged_0(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -3923,13 +3937,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D050F6(int a1)
{
return sub_D07880(a1);
@@ -3951,6 +3958,13 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0410C()
{
return sub_D06EA8();
@@ -3972,13 +3986,6 @@ int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D13D9C()
{
return sub_D027C4();
@@ -4238,13 +4245,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4292,6 +4292,13 @@ int sub_D1621C()
}
/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
int sub_D0732C()
{
return 7;
@@ -4355,13 +4362,6 @@ int __fastcall j_asd_build_link_map_full_0(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_reset_seq_15(__int64 a1, int a2, int a3)
{
return asd_link_reset_seq(a1, a2, a3);
@@ -4383,13 +4383,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_link_caps_full_v3(int a1)
{
return asd_get_link_caps_full_v3(a1);
@@ -4663,6 +4656,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4698,13 +4698,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall sub_D152DE(unsigned int a1)
{
return sub_D158A0(a1);
@@ -4789,13 +4782,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4922,6 +4908,13 @@ int __fastcall sub_D1241A(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_8(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -4934,6 +4927,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int sub_D1623C()
{
diff --git a/fw/decomp/asd_33.0.0.239_0bcc6b23.c b/fw/decomp/asd_33.0.0.239_0bcc6b23.c
index bb0b7dc..1371ff0 100644
--- a/fw/decomp/asd_33.0.0.239_0bcc6b23.c
+++ b/fw/decomp/asd_33.0.0.239_0bcc6b23.c
@@ -2081,27 +2081,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D15D00 + 2) <= a2 )
return 2;
v4 = sub_D0FA7C(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D15D04 + 4 * a2);
result = 0;
@@ -2109,28 +2109,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2966,9 +2966,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2988,7 +2988,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2996,13 +2996,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D081C8;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D081C8 + 4), a3: v5) << 31 != 0 )
{
@@ -3018,7 +3018,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -3026,7 +3026,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D0841C;
if ( sub_D11874(a1: *((_DWORD *)off_D0841C + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -3045,7 +3045,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D16ACC(a1: v23[105], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D081C8;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D081C8 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -3069,10 +3069,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D084B8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D084B8 + 41), a3: v5);
@@ -3081,7 +3081,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D084B8;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D084B8 + 86), a3: v5);
@@ -3093,7 +3093,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D084B8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D084B8 + 59), a3: v5);
@@ -3102,9 +3102,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D090B4;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D090B4 + 59), a3: v5);
@@ -3528,7 +3528,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=MNEM size=696] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3537,46 +3537,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field18; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[9]; // [sp+8h] [bp-24h] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field20; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[9]; // [sp+8h] [bp-24h] BYREF
- bzero_core(result: v46, a2: 0x24u);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x24u);
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A660;
v3 = 0;
@@ -3585,43 +3588,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A660 + 3);
v8 = *((_QWORD *)off_D0A660 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A660 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A660 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0FE44() == 0 )
+ if ( sub_D0FE44(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0FE44() == 0 )
+ v11 = _13B74;
+ if ( sub_D0FE44(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 8;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 8;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 8 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D09D78(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D09D78();
+ if ( v17 != 0 )
{
- if ( sub_D0FE44() == 0 )
+ if ( sub_D0FE44(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 104) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0FE44() == 0 )
+ if ( sub_D0FE44(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[89] = 1;
+ v19[90] = v6;
}
}
}
@@ -3629,121 +3638,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field18 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 140);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 140);
+ while ( v26 < v27 )
{
- if ( sub_D0FEFC(a1: v21) == 0 )
+ if ( sub_D0FEFC(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0FEFC(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0FEFC(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 464);
- for ( j = 0; ; ++j )
+ p_field18 = (int *)&a1[11].field18;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0FEFC(a1: v26) == 0 )
+ if ( sub_D0FEFC(a1: v33) == 0 )
return 44;
- v27 = sub_D11874(a1: v4[103], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0FEFC(a1: v27) == 0 )
+ v34 = sub_D11874(a1: v4[103], a2: i) & 1;
+ *p_field18 = v34;
+ if ( sub_D0FEFC(a1: v34) == 0 )
return 44;
- v28 = sub_D11874(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0FEFC(a1: v28) == 0 )
+ v35 = sub_D11874(a1: v4[54], a2: i) & 7;
+ p_field18[1] = v35;
+ if ( sub_D0FEFC(a1: v35) == 0 )
return 44;
- v29 = sub_D118E4(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D118E4(a1: v4[55], a2: i) & 7;
+ p_field18[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 572) = 1 << j;
+ v37 = *p_field18;
+ p_field18 += 3;
+ if ( v37 == 1 )
+ *(&a1[14].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field20 = (unsigned int)&a1[11].field20;
+ while ( v41 != v40 )
{
- if ( sub_D0FE44() == 0 )
+ if ( sub_D0FE44(a1: p_field20, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D11CFC(a1: v4[120], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field20 = sub_D11CFC(a1: v4[120], a2: v41);
+ v39 = (unsigned int *)(p_field20 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 576);
- v42 = (_DWORD *)(v40 + 584);
- v43 = (_DWORD *)(v40 + 580);
- v44 = (_DWORD *)(a1 + 472);
- while ( v39 != 0 )
+ p_field20 = (p_field20 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field20;
+ v45 = v44 + 144;
+ v46 = v44 + 146;
+ v47 = v44 + 145;
+ v39 = &a1[11].field20;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field20 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field20 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field20;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 160);
- while ( v36 != 0 )
+ p_field20 = (p_field20 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[4];
+ while ( v39 != nullptr )
{
- --v36;
- if ( *(v37 - 3) == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)(field0C - 12) == p_field20 )
{
- *(v37 - 2) = k;
- *(v37 - 1) = v35;
- *v37 = 1;
+ *(_DWORD *)(field0C - 8) = v41;
+ *(_DWORD *)(field0C - 4) = p_field20;
+ *(_DWORD *)field0C = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=764] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3753,10 +3772,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3765,27 +3784,27 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field18; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ struct asd_link_caps *v33; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field20; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
- unsigned int *v42; // r4
+ unsigned int *v41; // r4
+ unsigned int *p_field24; // r4
unsigned int m; // r5
unsigned int v44; // r0
unsigned int v45; // r1
@@ -3795,7 +3814,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[9]; // [sp+18h] [bp-24h] BYREF
bzero_core(result: v50, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A088;
v3 = 0;
@@ -3804,20 +3823,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A088 + 3);
v8 = *((_QWORD *)off_D0A088 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A088 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A088 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 8;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 8 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3825,12 +3844,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[39];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field18 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 89) = 1;
+ *((_DWORD *)v13 + 90) = v6;
}
}
v3 += 6;
@@ -3842,7 +3861,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ *(&a1[2].field18 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3852,7 +3871,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 140);
+ v21 = (int *)(&a1[3].field14 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3861,21 +3880,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 464);
+ p_field18 = (int *)&a1[11].field18;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D11874(a1: v4[103], a2: j) & 1;
- v22[1] = sub_D11874(a1: v4[54], a2: j) & 7;
+ *p_field18 = sub_D11874(a1: v4[103], a2: j) & 1;
+ p_field18[1] = sub_D11874(a1: v4[54], a2: j) & 7;
v24 = sub_D118E4(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field18;
+ p_field18 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 572) = 1 << (j & 0x1F);
+ *(&a1[14].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D117B0(a1: v4[107]);
v47 = (v26 & 8) != 0;
@@ -3902,22 +3921,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 472);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 576);
- v40 = (_DWORD *)(v38 + 584);
- v41 = (_DWORD *)(v38 + 580);
+ p_field20 = &a1[11].field20;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 144;
+ v40 = v38 + 146;
+ v41 = v38 + 145;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field20 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field20 += 3;
--v36;
}
}
@@ -3930,31 +3949,31 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 160);
+ v33 = a1 + 4;
while ( v32 != 0 )
{
--v32;
- if ( *(v33 - 3) == v31 )
+ if ( v33[-1].field1C == v31 )
{
- *(v33 - 2) = v30;
- *(v33 - 1) = v31;
- *v33 = 1;
+ v33[-1].field20 = v30;
+ v33[-1].field24 = v31;
+ v33->unk00 = 1;
}
- v33 += 6;
+ v33 = (struct asd_link_caps *)((char *)v33 + 24);
}
}
}
- v42 = (unsigned int *)(a1 + 716);
+ p_field24 = &a1[17].field24;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D11A10(a1: v4[106], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
- *v42 = v44 & 1;
- v42[1] = v45;
- v42[2] = m;
- v42 += 3;
+ *p_field24 = v44 & 1;
+ p_field24[1] = v45;
+ p_field24[2] = m;
+ p_field24 += 3;
}
return 0;
}
@@ -7286,8 +7305,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D093D4 + 4), a3: v5) << 31 != 0 )
{
@@ -7341,7 +7359,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D093D4;
@@ -7399,8 +7417,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -7436,14 +7453,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7451,11 +7468,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7466,7 +7483,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7480,21 +7497,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D096FC + 3);
@@ -7516,7 +7533,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D096FC + 3);
@@ -7529,9 +7546,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7548,7 +7565,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7569,25 +7586,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D0A3A0;
- if ( *((_DWORD *)off_D0A3A0 + 1) <= v18 )
+ if ( *((_DWORD *)off_D0A3A0 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0A3A0 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A3A0 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A3A0 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -7595,7 +7612,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7617,17 +7634,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09700 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7636,12 +7651,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7653,7 +7668,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7673,22 +7688,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09700 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D09700;
if ( sub_D11874(a1: *((_DWORD *)off_D09700 + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D11874(a1: v40[104], a2: HIDWORD(v5)) & 7;
@@ -7708,28 +7723,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[41];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -7737,13 +7752,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A18 + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7751,14 +7766,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7766,11 +7781,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7781,7 +7796,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7795,21 +7810,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09A14 + 3);
@@ -7831,7 +7845,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09A14 + 3);
@@ -7844,9 +7858,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7863,7 +7877,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7884,33 +7898,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09A14;
- if ( *((_DWORD *)off_D09A14 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09A14 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09A14 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09A14 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09A14 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7932,17 +7946,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A18 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7951,12 +7963,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7968,7 +7980,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7988,22 +8000,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09A18 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D09A18;
if ( sub_D11874(a1: *((_DWORD *)off_D09A18 + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D11874(a1: v40[104], a2: HIDWORD(v5)) & 7;
@@ -8023,40 +8035,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D07330(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D07330();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -8064,14 +8071,14 @@ LABEL_84:
/* ==== asd_program_link_by_signal_v4 [tier=MNEM size=854] ==== */
// Fourth ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -8079,15 +8086,15 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
- unsigned int v25; // r2
- int v26; // r9
+ unsigned int field34; // r2
+ unsigned int field30; // r9
_DWORD *v28; // r7
int v29; // r6
int v30; // r0
@@ -8095,7 +8102,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
int v32; // r0
int v33; // r1
__int16 v34; // r2
- int v35; // r0
+ unsigned int v35; // r0
_DWORD *v36; // r7
int v37; // r6
int v38; // r0
@@ -8106,24 +8113,23 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
BOOL v43; // r0
int v44; // r1
__int16 v45; // r2
- int v46; // r0
- unsigned int v47; // r6
- int v48; // r0
- unsigned int v49; // r0
- int v50; // r6
+ unsigned int v46; // r0
+ unsigned int field24; // r6
+ unsigned int v48; // r0
+ int v49; // r6
+ int v50; // r0
int v51; // r0
int v52; // r0
- int v53; // r0
- int v54; // [sp+0h] [bp-8h] BYREF
- int v55; // [sp+4h] [bp-4h] BYREF
+ int v53; // [sp+0h] [bp-8h] BYREF
+ int v54; // [sp+4h] [bp-4h] BYREF
- v54 = a3;
- v55 = a4;
- if ( a1 == 0 )
+ v53 = a3;
+ v54 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D0A9BC + 3);
@@ -8145,7 +8151,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09D88 + 3);
@@ -8158,9 +8164,9 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -8177,7 +8183,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -8198,44 +8204,44 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09D88;
- if ( *((_DWORD *)off_D09D88 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09D88 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09D88 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_DWORD *)(a1 + 52);
- v26 = *(_DWORD *)(a1 + 48);
- if ( v25 == 2 )
+ field34 = a1->field34;
+ field30 = a1->field30;
+ if ( field34 == 2 )
{
- v25 = *((_DWORD *)off_D09D88 + 8);
- if ( v25 <= v22 )
+ field34 = *((_DWORD *)off_D09D88 + 8);
+ if ( field34 <= field38 )
return 2;
}
+ v53 = 255;
v54 = 255;
- v55 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 4), a3: v5) << 31 != 0 )
{
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v28 = off_D09D74;
v29 = sub_D11660(a1: *((_DWORD *)off_D09D74 + 99), a2: HIDWORD(v5)) & 7;
@@ -8251,17 +8257,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 4;
goto LABEL_71;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -8270,12 +8274,12 @@ LABEL_23:
goto LABEL_72;
case 2:
v35 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_71;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 5;
goto LABEL_71;
}
@@ -8287,11 +8291,11 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v36 = off_D09D74;
v37 = sub_D11660(a1: *((_DWORD *)off_D09D74 + 100), a2: HIDWORD(v5)) & 7;
@@ -8307,45 +8311,45 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09D74 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v35 = 3;
LABEL_71:
- *(_DWORD *)(a1 + 64) = v35;
+ a1->field40 = v35;
goto LABEL_72;
}
return 8;
}
- if ( *(_DWORD *)(a1 + 32) == 0
+ if ( a1->field20 == 0
|| (v41 = *((int (__fastcall **)(_DWORD))off_D09D88 + 42)) != nullptr && v41(a1: v5) != 0
- || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: v25) != 0 )
+ || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: field34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 4;
+ a1->field4C = 3;
+ a1->field40 = 4;
}
else
{
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v42 = off_D09D74;
- if ( sub_D11874(a1: *((_DWORD *)off_D09D74 + 103), a2: HIDWORD(v5)) << 31 == 0 || *(_DWORD *)(a1 + 32) != 0 )
+ if ( sub_D11874(a1: *((_DWORD *)off_D09D74 + 103), a2: HIDWORD(v5)) << 31 == 0 || a1->field20 != 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
- if ( v26 == 1 )
+ a1->field4C = 3;
+ a1->field40 = 5;
+ if ( field30 == 1 )
{
- v50 = sub_D11874(a1: v42[104], a2: HIDWORD(v5)) & 7;
- v51 = sub_D116D0(a1: v42[98], a2: v50);
- sub_D169A8(a1: v42[98], a2: v50, a3: v51 | 0x80);
- v52 = v42[105];
- if ( v52 != 0 )
+ v49 = sub_D11874(a1: v42[104], a2: HIDWORD(v5)) & 7;
+ v50 = sub_D116D0(a1: v42[98], a2: v49);
+ sub_D169A8(a1: v42[98], a2: v49, a3: v50 | 0x80);
+ v51 = v42[105];
+ if ( v51 != 0 )
{
- v53 = sub_D11874(a1: v52, a2: v50);
- sub_D16ACC(a1: v42[105], a2: v50, a3: v53 | 1);
+ v52 = sub_D11874(a1: v51, a2: v49);
+ sub_D16ACC(a1: v42[105], a2: v49, a3: v52 | 1);
}
}
LABEL_72:
@@ -8355,40 +8359,35 @@ LABEL_72:
v17 = v43;
v46 = 4;
LABEL_74:
- *(_DWORD *)(a1 + 68) = v46;
+ a1->field44 = v46;
return v17;
}
- v47 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- if ( v47 > 0x15 )
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFC | 2;
- *(_DWORD *)(a1 + 68) = v49;
- if ( v10 != 48 || *(_DWORD *)(a1 + 32) == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
+ v48 = a1->field44 & 0xFFFFFFFE;
+ if ( field24 > 0x15 )
+ v48 = a1->field44 & 0xFFFFFFFC | 2;
+ a1->field44 = v48;
+ if ( v10 != 48 || a1->field20 == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
return 0;
goto LABEL_89;
}
- *(_DWORD *)(a1 + 68) = 0;
- v48 = *(_DWORD *)(a1 + 32);
- if ( v48 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_connector_state_check(a1: v5, a2: v44, a3: v45) == 0 )
{
- v48 = asd_connector_state_check(a1: v5, a2: v44, a3: v45);
- if ( v48 == 0 )
- {
LABEL_89:
- *(_DWORD *)(a1 + 68) = 16;
- return 0;
- }
+ a1->field44 = 16;
+ return 0;
}
- if ( v47 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D07330(a1: v48, a2: v44);
+ v17 = sub_D07330();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A08C + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v47 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v46 = *(_DWORD *)(a1 + 68) | 2;
+ v46 = a1->field44 | 2;
goto LABEL_74;
}
return v17;
@@ -13792,7 +13791,7 @@ int __fastcall j_sub_D07D78_11(int a1, _BYTE *a2, _BYTE *a3)
{
int v3; // r3
- return asd_program_link_by_signal_v2(a1, (int)a2, (int)a3, a4: v3);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, (int)a2, (int)a3, a4: v3);
}
/* ==== j_sub_D07E10_17 [tier=EXACT size=4] ==== */
@@ -13851,7 +13850,7 @@ int __fastcall j_sub_D07F50_9(int a1, int a2)
// attributes: thunk
int __fastcall j_sub_D07F90(int a1, int a2, int a3)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D07F90_2 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.12.227_43f99d51.anon.c b/fw/decomp/asd_33.0.12.227_43f99d51.anon.c
index fc0b0a2..90c31dc 100644
--- a/fw/decomp/asd_33.0.12.227_43f99d51.anon.c
+++ b/fw/decomp/asd_33.0.12.227_43f99d51.anon.c
@@ -70,13 +70,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -371,6 +364,13 @@ int __fastcall j_asd_link_reset_seq_12(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_15(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -462,6 +462,13 @@ int __fastcall j_asd_link_write_quad_6(int a1, _DWORD *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -511,13 +518,6 @@ int __fastcall j_asd_dio_enable_all_0(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_1(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_a(a1, a2, a3);
@@ -539,6 +539,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_write_quad_10(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -623,6 +630,13 @@ int __fastcall j_asd_session_op57_invoke_2()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0500E(int a1, int a2, int a3)
{
return sub_D06C50(a1, a2, a3);
@@ -728,6 +742,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -805,13 +826,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D035FC(int a1)
{
return sub_D06A6C(a1);
@@ -944,13 +958,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_10(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full(int a1)
-{
- return asd_get_link_caps_full(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_pair_D49838_3(_DWORD *a1)
{
return asd_get_pair_D49838(a1);
@@ -993,6 +1000,13 @@ int __fastcall j_asd_link_wait_and_set_10(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1021,6 +1035,13 @@ int __fastcall sub_D0499C(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_14(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_0(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -1300,13 +1321,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_4(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -1404,6 +1418,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D030BC(int a1)
{
return sub_D07444(a1);
@@ -1488,13 +1509,6 @@ int __fastcall sub_D04FF2(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CFC()
{
return sub_D0A660();
@@ -1593,6 +1607,13 @@ int __fastcall j_asd_encoder_query(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1879,6 +1900,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1970,6 +1998,13 @@ int sub_D1418E()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_write_block_paged_5(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -2110,13 +2145,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D05358(int a1)
{
return sub_D07444(a1);
@@ -2278,6 +2306,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2334,6 +2369,13 @@ int __fastcall j_asd_link_read_pair_regs_5(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_1(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D05310(int a1)
{
return sub_D06730(a1);
@@ -2404,13 +2446,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2474,13 +2509,6 @@ int sub_D1431A()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2677,13 +2705,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2691,13 +2712,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_4(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -2754,6 +2768,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_8(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
BOOL __fastcall sub_D14624(unsigned int a1)
{
return sub_D14ED0(a1);
@@ -2879,6 +2900,13 @@ BOOL __fastcall sub_D144A4(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D06070()
{
return sub_D0A5DC();
@@ -2956,6 +2984,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2998,13 +3033,6 @@ void sub_D14102()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
return asd_link_train_status(a1);
@@ -3026,6 +3054,13 @@ int __fastcall j_asd_connector_enable_5(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0469C(int a1, int a2, int a3)
{
return sub_D06C50(a1, a2, a3);
@@ -3096,6 +3131,13 @@ int __fastcall sub_D04068(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D059A8()
{
return sub_D06DA0();
@@ -3250,13 +3292,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3313,6 +3348,13 @@ int __fastcall j_asd_write_block_paged_1(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3397,13 +3439,6 @@ int sub_D05CEC()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_11(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3425,13 +3460,6 @@ int sub_D05650()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3474,6 +3502,13 @@ BOOL __fastcall j_asd_svc_sub_2794()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D059D8()
{
return sub_D07510();
@@ -3593,13 +3628,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_4(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3621,13 +3649,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_write_block_paged_0(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -3754,13 +3775,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_3(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -3775,16 +3789,16 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_pair_2(unsigned int a1, char *a2, _BYTE *a3)
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
{
- return asd_dio_read_pair(a1, a2, a3);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
+int __fastcall j_asd_dio_read_pair_2(unsigned int a1, char *a2, _BYTE *a3)
{
- return asd_dio_read_block(a1, a2);
+ return asd_dio_read_pair(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -3978,13 +3992,6 @@ int __fastcall j_asd_dio_current_instance_op_1(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_14(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4090,13 +4097,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4153,6 +4153,13 @@ int sub_D1460E()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_2(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4209,13 +4216,6 @@ int sub_D059D4()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D038B0(int a1, int a2, int a3)
{
return sub_D06C50(a1, a2, a3);
@@ -4251,13 +4251,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4468,6 +4461,13 @@ int __fastcall sub_D04680(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4503,13 +4503,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D14754()
{
return sub_D14AE0();
@@ -4608,13 +4601,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4698,6 +4684,13 @@ int __fastcall j_asd_get_pair_D49838_7(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_8(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -4710,6 +4703,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int sub_D15874()
{
diff --git a/fw/decomp/asd_33.0.12.227_43f99d51.c b/fw/decomp/asd_33.0.12.227_43f99d51.c
index 2c5722a..5ac2c97 100644
--- a/fw/decomp/asd_33.0.12.227_43f99d51.c
+++ b/fw/decomp/asd_33.0.12.227_43f99d51.c
@@ -2081,27 +2081,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D15330 + 2) <= a2 )
return 2;
v4 = sub_D0F214(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D15334 + 4 * a2);
result = 0;
@@ -2109,28 +2109,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2956,9 +2956,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2978,7 +2978,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2986,13 +2986,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07D8C;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07D8C + 4), a3: v5) << 31 != 0 )
{
@@ -3008,7 +3008,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -3016,7 +3016,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D07FE0;
if ( sub_D10F5C(a1: *((_DWORD *)off_D07FE0 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -3035,7 +3035,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D160F8(a1: v23[101], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D07D8C;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07D8C + 85), a3: v5) << 31 == 0 )
return 8;
@@ -3059,10 +3059,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D0807C;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0807C + 41), a3: v5);
@@ -3071,7 +3071,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D0807C;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D0807C + 86), a3: v5);
@@ -3083,7 +3083,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D0807C;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0807C + 59), a3: v5);
@@ -3092,9 +3092,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D08C78;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08C78 + 59), a3: v5);
@@ -3480,7 +3480,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=MNEM size=696] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3489,46 +3489,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field18; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[9]; // [sp+8h] [bp-24h] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field20; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[9]; // [sp+8h] [bp-24h] BYREF
- bzero_core(result: v46, a2: 0x24u);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x24u);
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A224;
v3 = 0;
@@ -3537,43 +3540,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A224 + 3);
v8 = *((_QWORD *)off_D0A224 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A224 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A224 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0F5DC() == 0 )
+ if ( sub_D0F5DC(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0F5DC() == 0 )
+ v11 = _13B74;
+ if ( sub_D0F5DC(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 8;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 8;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 8 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D0993C(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D0993C();
+ if ( v17 != 0 )
{
- if ( sub_D0F5DC() == 0 )
+ if ( sub_D0F5DC(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 104) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0F5DC() == 0 )
+ if ( sub_D0F5DC(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[89] = 1;
+ v19[90] = v6;
}
}
}
@@ -3581,121 +3590,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field18 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 140);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 140);
+ while ( v26 < v27 )
{
- if ( sub_D0F694(a1: v21) == 0 )
+ if ( sub_D0F694(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0F694(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0F694(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 464);
- for ( j = 0; ; ++j )
+ p_field18 = (int *)&a1[11].field18;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0F694(a1: v26) == 0 )
+ if ( sub_D0F694(a1: v33) == 0 )
return 44;
- v27 = sub_D10F5C(a1: v4[99], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0F694(a1: v27) == 0 )
+ v34 = sub_D10F5C(a1: v4[99], a2: i) & 1;
+ *p_field18 = v34;
+ if ( sub_D0F694(a1: v34) == 0 )
return 44;
- v28 = sub_D10F5C(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0F694(a1: v28) == 0 )
+ v35 = sub_D10F5C(a1: v4[54], a2: i) & 7;
+ p_field18[1] = v35;
+ if ( sub_D0F694(a1: v35) == 0 )
return 44;
- v29 = sub_D10FCC(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D10FCC(a1: v4[55], a2: i) & 7;
+ p_field18[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 572) = 1 << j;
+ v37 = *p_field18;
+ p_field18 += 3;
+ if ( v37 == 1 )
+ *(&a1[14].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field20 = (unsigned int)&a1[11].field20;
+ while ( v41 != v40 )
{
- if ( sub_D0F5DC() == 0 )
+ if ( sub_D0F5DC(a1: p_field20, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D1136C(a1: v4[116], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field20 = sub_D1136C(a1: v4[116], a2: v41);
+ v39 = (unsigned int *)(p_field20 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 576);
- v42 = (_DWORD *)(v40 + 584);
- v43 = (_DWORD *)(v40 + 580);
- v44 = (_DWORD *)(a1 + 472);
- while ( v39 != 0 )
+ p_field20 = (p_field20 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field20;
+ v45 = v44 + 144;
+ v46 = v44 + 146;
+ v47 = v44 + 145;
+ v39 = &a1[11].field20;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field20 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field20 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field20;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 160);
- while ( v36 != 0 )
+ p_field20 = (p_field20 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[4];
+ while ( v39 != nullptr )
{
- --v36;
- if ( *(v37 - 3) == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)(field0C - 12) == p_field20 )
{
- *(v37 - 2) = k;
- *(v37 - 1) = v35;
- *v37 = 1;
+ *(_DWORD *)(field0C - 8) = v41;
+ *(_DWORD *)(field0C - 4) = p_field20;
+ *(_DWORD *)field0C = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=764] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3705,10 +3724,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3717,27 +3736,27 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field18; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ struct asd_link_caps *v33; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field20; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
- unsigned int *v42; // r4
+ unsigned int *v41; // r4
+ unsigned int *p_field24; // r4
unsigned int m; // r5
unsigned int v44; // r0
unsigned int v45; // r1
@@ -3747,7 +3766,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[9]; // [sp+18h] [bp-24h] BYREF
bzero_core(result: v50, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D09C4C;
v3 = 0;
@@ -3756,20 +3775,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09C4C + 3);
v8 = *((_QWORD *)off_D09C4C + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09C4C + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09C4C + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 8;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 8 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3777,12 +3796,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[37];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field18 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 89) = 1;
+ *((_DWORD *)v13 + 90) = v6;
}
}
v3 += 6;
@@ -3794,7 +3813,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ *(&a1[2].field18 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3804,7 +3823,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 140);
+ v21 = (int *)(&a1[3].field14 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3813,21 +3832,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 464);
+ p_field18 = (int *)&a1[11].field18;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D10F5C(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D10F5C(a1: v4[54], a2: j) & 7;
+ *p_field18 = sub_D10F5C(a1: v4[99], a2: j) & 1;
+ p_field18[1] = sub_D10F5C(a1: v4[54], a2: j) & 7;
v24 = sub_D10FCC(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field18;
+ p_field18 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 572) = 1 << (j & 0x1F);
+ *(&a1[14].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D10E98(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -3854,22 +3873,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 472);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 576);
- v40 = (_DWORD *)(v38 + 584);
- v41 = (_DWORD *)(v38 + 580);
+ p_field20 = &a1[11].field20;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 144;
+ v40 = v38 + 146;
+ v41 = v38 + 145;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field20 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field20 += 3;
--v36;
}
}
@@ -3882,31 +3901,31 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 160);
+ v33 = a1 + 4;
while ( v32 != 0 )
{
--v32;
- if ( *(v33 - 3) == v31 )
+ if ( v33[-1].field1C == v31 )
{
- *(v33 - 2) = v30;
- *(v33 - 1) = v31;
- *v33 = 1;
+ v33[-1].field20 = v30;
+ v33[-1].field24 = v31;
+ v33->unk00 = 1;
}
- v33 += 6;
+ v33 = (struct asd_link_caps *)((char *)v33 + 24);
}
}
}
- v42 = (unsigned int *)(a1 + 716);
+ p_field24 = &a1[17].field24;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D110F8(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
- *v42 = v44 & 1;
- v42[1] = v45;
- v42[2] = m;
- v42 += 3;
+ *p_field24 = v44 & 1;
+ p_field24[1] = v45;
+ p_field24[2] = m;
+ p_field24 += 3;
}
return 0;
}
@@ -7145,8 +7164,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D062EC)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D062EC((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08F98 + 4), a3: v5) << 31 != 0 )
{
@@ -7200,7 +7218,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D062EC)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D062EC((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D08F98;
@@ -7258,8 +7276,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D062EC)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D062EC((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -7295,14 +7312,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7310,11 +7327,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7325,7 +7342,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7339,21 +7356,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D092C0 + 3);
@@ -7375,7 +7392,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D092C0 + 3);
@@ -7388,9 +7405,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7407,7 +7424,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7428,25 +7445,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09F64;
- if ( *((_DWORD *)off_D09F64 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09F64 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09F64 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09F64 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09F64 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -7454,7 +7471,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062EC)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D062EC(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7476,17 +7493,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D092C4 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D066AC(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D066AC() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7495,12 +7510,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7512,7 +7527,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062EC)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D062EC(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7532,22 +7547,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D092C4 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062EC)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D062EC(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D092C4;
if ( sub_D10F5C(a1: *((_DWORD *)off_D092C4 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10F5C(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -7567,28 +7582,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[39];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -7596,13 +7611,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D095DC + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7610,14 +7625,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7625,11 +7640,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7640,7 +7655,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7654,21 +7669,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D095D8 + 3);
@@ -7690,7 +7704,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D095D8 + 3);
@@ -7703,9 +7717,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7722,7 +7736,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7743,33 +7757,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D095D8;
- if ( *((_DWORD *)off_D095D8 + 1) <= v18 )
+ if ( *((_DWORD *)off_D095D8 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D095D8 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D095D8 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D095D8 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D0637C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D0637C(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7791,17 +7805,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D095DC + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D066AC(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D066AC() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7810,12 +7822,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7827,7 +7839,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D0637C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D0637C(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7847,22 +7859,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D095DC + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D0637C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D0637C(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D095DC;
if ( sub_D10F5C(a1: *((_DWORD *)off_D095DC + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10F5C(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -7882,40 +7894,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D06EF4(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D06EF4();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09938 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7923,14 +7930,14 @@ LABEL_84:
/* ==== asd_program_link_by_signal_v4 [tier=MNEM size=854] ==== */
// Fourth ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7938,15 +7945,15 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
- unsigned int v25; // r2
- int v26; // r9
+ unsigned int field34; // r2
+ unsigned int field30; // r9
_DWORD *v28; // r7
int v29; // r6
int v30; // r0
@@ -7954,7 +7961,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
int v32; // r0
int v33; // r1
__int16 v34; // r2
- int v35; // r0
+ unsigned int v35; // r0
_DWORD *v36; // r7
int v37; // r6
int v38; // r0
@@ -7965,24 +7972,23 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
BOOL v43; // r0
int v44; // r1
__int16 v45; // r2
- int v46; // r0
- unsigned int v47; // r6
- int v48; // r0
- unsigned int v49; // r0
- int v50; // r6
+ unsigned int v46; // r0
+ unsigned int field24; // r6
+ unsigned int v48; // r0
+ int v49; // r6
+ int v50; // r0
int v51; // r0
int v52; // r0
- int v53; // r0
- int v54; // [sp+0h] [bp-8h] BYREF
- int v55; // [sp+4h] [bp-4h] BYREF
+ int v53; // [sp+0h] [bp-8h] BYREF
+ int v54; // [sp+4h] [bp-4h] BYREF
- v54 = a3;
- v55 = a4;
- if ( a1 == 0 )
+ v53 = a3;
+ v54 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D0A580 + 3);
@@ -8004,7 +8010,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D0994C + 3);
@@ -8017,9 +8023,9 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -8036,7 +8042,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -8057,44 +8063,44 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D0994C;
- if ( *((_DWORD *)off_D0994C + 1) <= v18 )
+ if ( *((_DWORD *)off_D0994C + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0994C + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_DWORD *)(a1 + 52);
- v26 = *(_DWORD *)(a1 + 48);
- if ( v25 == 2 )
+ field34 = a1->field34;
+ field30 = a1->field30;
+ if ( field34 == 2 )
{
- v25 = *((_DWORD *)off_D0994C + 8);
- if ( v25 <= v22 )
+ field34 = *((_DWORD *)off_D0994C + 8);
+ if ( field34 <= field38 )
return 2;
}
+ v53 = 255;
v54 = 255;
- v55 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062EC)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D062EC(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09938 + 4), a3: v5) << 31 != 0 )
{
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v28 = off_D09938;
v29 = sub_D10D48(a1: *((_DWORD *)off_D09938 + 95), a2: HIDWORD(v5)) & 7;
@@ -8110,17 +8116,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09938 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D066AC(a1: v5) != 0
- || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
+ if ( a1->field20 == 0 || sub_D066AC() != 0 || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 4;
goto LABEL_71;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -8129,12 +8133,12 @@ LABEL_23:
goto LABEL_72;
case 2:
v35 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_71;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 5;
goto LABEL_71;
}
@@ -8146,11 +8150,11 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062EC)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D062EC(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v36 = off_D09938;
v37 = sub_D10D48(a1: *((_DWORD *)off_D09938 + 96), a2: HIDWORD(v5)) & 7;
@@ -8166,45 +8170,45 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09938 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v35 = 3;
LABEL_71:
- *(_DWORD *)(a1 + 64) = v35;
+ a1->field40 = v35;
goto LABEL_72;
}
return 8;
}
- if ( *(_DWORD *)(a1 + 32) == 0
+ if ( a1->field20 == 0
|| (v41 = *((int (__fastcall **)(_DWORD))off_D0994C + 40)) != nullptr && v41(a1: v5) != 0
- || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: v25) != 0 )
+ || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: field34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 4;
+ a1->field4C = 3;
+ a1->field40 = 4;
}
else
{
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062EC)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D062EC(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v42 = off_D09938;
- if ( sub_D10F5C(a1: *((_DWORD *)off_D09938 + 99), a2: HIDWORD(v5)) << 31 == 0 || *(_DWORD *)(a1 + 32) != 0 )
+ if ( sub_D10F5C(a1: *((_DWORD *)off_D09938 + 99), a2: HIDWORD(v5)) << 31 == 0 || a1->field20 != 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
- if ( v26 == 1 )
+ a1->field4C = 3;
+ a1->field40 = 5;
+ if ( field30 == 1 )
{
- v50 = sub_D10F5C(a1: v42[100], a2: HIDWORD(v5)) & 7;
- v51 = sub_D10DB8(a1: v42[94], a2: v50);
- sub_D15FD4(a1: v42[94], a2: v50, a3: v51 | 0x80);
- v52 = v42[101];
- if ( v52 != 0 )
+ v49 = sub_D10F5C(a1: v42[100], a2: HIDWORD(v5)) & 7;
+ v50 = sub_D10DB8(a1: v42[94], a2: v49);
+ sub_D15FD4(a1: v42[94], a2: v49, a3: v50 | 0x80);
+ v51 = v42[101];
+ if ( v51 != 0 )
{
- v53 = sub_D10F5C(a1: v52, a2: v50);
- sub_D160F8(a1: v42[101], a2: v50, a3: v53 | 1);
+ v52 = sub_D10F5C(a1: v51, a2: v49);
+ sub_D160F8(a1: v42[101], a2: v49, a3: v52 | 1);
}
}
LABEL_72:
@@ -8214,40 +8218,35 @@ LABEL_72:
v17 = v43;
v46 = 4;
LABEL_74:
- *(_DWORD *)(a1 + 68) = v46;
+ a1->field44 = v46;
return v17;
}
- v47 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- if ( v47 > 0x15 )
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFC | 2;
- *(_DWORD *)(a1 + 68) = v49;
- if ( v10 != 48 || *(_DWORD *)(a1 + 32) == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
+ v48 = a1->field44 & 0xFFFFFFFE;
+ if ( field24 > 0x15 )
+ v48 = a1->field44 & 0xFFFFFFFC | 2;
+ a1->field44 = v48;
+ if ( v10 != 48 || a1->field20 == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
return 0;
goto LABEL_89;
}
- *(_DWORD *)(a1 + 68) = 0;
- v48 = *(_DWORD *)(a1 + 32);
- if ( v48 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_connector_state_check(a1: v5, a2: v44, a3: v45) == 0 )
{
- v48 = asd_connector_state_check(a1: v5, a2: v44, a3: v45);
- if ( v48 == 0 )
- {
LABEL_89:
- *(_DWORD *)(a1 + 68) = 16;
- return 0;
- }
+ a1->field44 = 16;
+ return 0;
}
- if ( v47 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D06EF4(a1: v48, a2: v44);
+ v17 = sub_D06EF4();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09C50 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v47 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v46 = *(_DWORD *)(a1 + 68) | 2;
+ v46 = a1->field44 | 2;
goto LABEL_74;
}
return v17;
@@ -12172,7 +12171,7 @@ int __fastcall j_sub_D09EE4_1()
// attributes: thunk
int __fastcall j_sub_D09EE4_6()
{
- int v0; // r0
+ struct asd_link_cfg *v0; // r0
int v1; // r1
int v2; // r2
int v3; // r3
diff --git a/fw/decomp/asd_33.0.16.144_aaa06ff8.c b/fw/decomp/asd_33.0.16.144_aaa06ff8.c
index 211c884..e46fcf0 100644
--- a/fw/decomp/asd_33.0.16.144_aaa06ff8.c
+++ b/fw/decomp/asd_33.0.16.144_aaa06ff8.c
@@ -2311,8 +2311,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05304)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05304((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || sub_D0D038(a1: 0, a2: *((_DWORD *)off_D0776C + 2), a3: v5) << 31 != 0 )
{
@@ -2366,7 +2365,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05304)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D05304((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D0776C;
@@ -2424,8 +2423,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05304)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05304((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
diff --git a/fw/decomp/asd_33.0.16.209_e129d135.anon.c b/fw/decomp/asd_33.0.16.209_e129d135.anon.c
index bec765c..7a0baa1 100644
--- a/fw/decomp/asd_33.0.16.209_e129d135.anon.c
+++ b/fw/decomp/asd_33.0.16.209_e129d135.anon.c
@@ -70,13 +70,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -371,6 +364,13 @@ int sub_D028BC()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_dio_current_instance_op(int a1)
{
return asd_dio_current_instance_op(a1);
@@ -490,6 +490,13 @@ int sub_D03B24()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -560,6 +567,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D03080(int a1, int a2, int a3)
{
return sub_D06880(a1, a2, a3);
@@ -658,6 +672,13 @@ int __fastcall j_asd_session_op57_invoke_2()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_train_status_11(int a1)
{
return asd_link_train_status(a1);
@@ -714,13 +735,6 @@ int __fastcall j_asd_program_link_by_signal_1(int a1, int a2, int a3, int a4)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2_0(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0_7(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -763,6 +777,13 @@ int sub_D03084()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D032CC()
{
return sub_D06798();
@@ -833,13 +854,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_4(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -952,13 +966,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_10(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full(int a1)
-{
- return asd_get_link_caps_full(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_pair_D49838_3(_DWORD *a1)
{
return asd_get_pair_D49838(a1);
@@ -1001,6 +1008,13 @@ int __fastcall j_asd_link_wait_and_set_10(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1309,13 +1323,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_4(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -1421,6 +1428,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_6(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -1511,13 +1525,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D02B04()
{
return sub_D06798();
@@ -1616,6 +1623,13 @@ int __fastcall j_asd_encoder_query(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D03ADC()
{
return sub_D06548();
@@ -1847,6 +1861,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1917,6 +1938,13 @@ int __fastcall j_asd_link_program_timing_16(int a1, unsigned __int8 *a2, unsigne
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_write_block_paged_5(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -2043,13 +2071,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_query_link_config_6(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -2197,6 +2218,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2351,13 +2379,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2547,13 +2568,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2561,13 +2575,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_4(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -2637,6 +2644,13 @@ int __fastcall sub_D05318(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2735,6 +2749,13 @@ int __fastcall j_asd_dio_current_instance_op_2(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -2867,13 +2888,6 @@ int __fastcall j_asd_encoder_enable_seq_6(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
return asd_link_train_status(a1);
@@ -2972,6 +2986,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0_8(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -3217,6 +3238,13 @@ int __fastcall j_asd_write_block_paged_1(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3335,13 +3363,6 @@ int sub_D0720C()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_11(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3356,13 +3377,6 @@ int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_5(int a1)
{
return asd_link_ready_full_check(a1);
@@ -3398,6 +3412,13 @@ int sub_D1451C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D14654()
{
return sub_D15064();
@@ -3531,13 +3552,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04680(int a1, int a2)
{
return sub_D06880(a1, a2);
@@ -3559,13 +3573,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_write_block_paged_0(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -3712,13 +3719,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_3(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -3733,23 +3733,23 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_pair_2(unsigned int a1, char *a2, _BYTE *a3)
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
{
- return asd_dio_read_pair(a1, a2, a3);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
+int __fastcall j_asd_dio_read_pair_2(unsigned int a1, char *a2, _BYTE *a3)
{
- return asd_write_block_paged(a1, a2, a3);
+ return asd_dio_read_pair(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
+int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
{
- return asd_dio_read_block(a1, a2);
+ return asd_write_block_paged(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -4062,13 +4062,6 @@ int __fastcall j_asd_query_link_config_9(_DWORD *a1, int *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4118,6 +4111,13 @@ int __fastcall j_asd_write_block_paged_13(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_2(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4153,9 +4153,9 @@ int __fastcall sub_D05988(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall j_asd_program_link_by_signal_v2_0(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
- return asd_dio_read_block(a1, a2);
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
}
/* ==== ANON size=4 ==== */
@@ -4181,13 +4181,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4432,6 +4425,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4467,13 +4467,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4579,13 +4572,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4684,6 +4670,13 @@ int __fastcall j_asd_get_pair_D49838_7(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_8(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -4703,6 +4696,13 @@ int __fastcall sub_D0501A(_DWORD *a1)
return sub_D07258(a1);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int __fastcall sub_D0F834(int a1, _DWORD *a2, unsigned int a3, unsigned int a4)
{
diff --git a/fw/decomp/asd_33.0.16.209_e129d135.c b/fw/decomp/asd_33.0.16.209_e129d135.c
index 8c32b1e..cad785f 100644
--- a/fw/decomp/asd_33.0.16.209_e129d135.c
+++ b/fw/decomp/asd_33.0.16.209_e129d135.c
@@ -1679,27 +1679,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D150BC + 2) <= a2 )
return 2;
v4 = sub_D0ED8C(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D150C0 + 4 * a2);
result = 0;
@@ -1707,28 +1707,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2554,9 +2554,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2576,7 +2576,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2584,13 +2584,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07BA0;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07BA0 + 4), a3: v5) << 31 != 0 )
{
@@ -2606,7 +2606,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -2614,7 +2614,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D07DF4;
if ( sub_D10A60(a1: *((_DWORD *)off_D07DF4 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -2633,7 +2633,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D15CC4(a1: v23[101], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D07BA0;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07BA0 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -2657,10 +2657,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D07E90;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07E90 + 41), a3: v5);
@@ -2669,7 +2669,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D07E90;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07E90 + 86), a3: v5);
@@ -2681,7 +2681,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D07E90;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07E90 + 59), a3: v5);
@@ -2690,9 +2690,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D08A48;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08A48 + 59), a3: v5);
@@ -3063,7 +3063,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=MNEM size=694] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3072,46 +3072,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field08; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[7]; // [sp+8h] [bp-1Ch] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field10; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[7]; // [sp+8h] [bp-1Ch] BYREF
- bzero_core(result: v46, a2: 0x1Cu);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x1Cu);
+ if ( a1 == nullptr )
return 2;
v2 = off_D09E04;
v3 = 0;
@@ -3120,43 +3123,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09E04 + 3);
v8 = *((_QWORD *)off_D09E04 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09E04 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09E04 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0F15C() == 0 )
+ if ( sub_D0F15C(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0F15C() == 0 )
+ v11 = _13B74;
+ if ( sub_D0F15C(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 6;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 6;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 6 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D0953C(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D0953C();
+ if ( v17 != 0 )
{
- if ( sub_D0F15C() == 0 )
+ if ( sub_D0F15C(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 88) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0F15C() == 0 )
+ if ( sub_D0F15C(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( sub_D06490(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[71] = 1;
+ v19[72] = v6;
}
}
}
@@ -3164,121 +3173,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field08 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 116);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 116);
+ while ( v26 < v27 )
{
- if ( sub_D0F214(a1: v21) == 0 )
+ if ( sub_D0F214(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0F214(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0F214(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 368);
- for ( j = 0; ; ++j )
+ p_field08 = (int *)&a1[9].field08;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0F214(a1: v26) == 0 )
+ if ( sub_D0F214(a1: v33) == 0 )
return 44;
- v27 = sub_D10A60(a1: v4[99], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0F214(a1: v27) == 0 )
+ v34 = sub_D10A60(a1: v4[99], a2: i) & 1;
+ *p_field08 = v34;
+ if ( sub_D0F214(a1: v34) == 0 )
return 44;
- v28 = sub_D10A60(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0F214(a1: v28) == 0 )
+ v35 = sub_D10A60(a1: v4[54], a2: i) & 7;
+ p_field08[1] = v35;
+ if ( sub_D0F214(a1: v35) == 0 )
return 44;
- v29 = sub_D10AD0(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D10AD0(a1: v4[55], a2: i) & 7;
+ p_field08[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 452) = 1 << j;
+ v37 = *p_field08;
+ p_field08 += 3;
+ if ( v37 == 1 )
+ *(&a1[11].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field10 = (unsigned int)&a1[9].field10;
+ while ( v41 != v40 )
{
- if ( sub_D0F15C() == 0 )
+ if ( sub_D0F15C(a1: p_field10, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D10E9C(a1: v4[116], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field10 = sub_D10E9C(a1: v4[116], a2: v41);
+ v39 = (unsigned int *)(p_field10 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 456);
- v42 = (_DWORD *)(v40 + 464);
- v43 = (_DWORD *)(v40 + 460);
- v44 = (_DWORD *)(a1 + 376);
- while ( v39 != 0 )
+ p_field10 = (p_field10 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field10;
+ v45 = v44 + 114;
+ v46 = v44 + 116;
+ v47 = v44 + 115;
+ v39 = &a1[9].field10;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field10 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field10 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field10;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 124);
- while ( v36 != 0 )
+ p_field10 = (p_field10 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[3].field04;
+ while ( v39 != nullptr )
{
- --v36;
- if ( *v37 == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)field0C == p_field10 )
{
- v37[1] = k;
- v37[2] = v35;
- v37[3] = 1;
+ *(_DWORD *)(field0C + 4) = v41;
+ *(_DWORD *)(field0C + 8) = p_field10;
+ *(_DWORD *)(field0C + 12) = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=762] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3288,10 +3307,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3300,26 +3319,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field08; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ unsigned int *p_field04; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field10; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
+ unsigned int *v41; // r4
unsigned int *v42; // r4
unsigned int m; // r5
unsigned int v44; // r0
@@ -3330,7 +3349,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[7]; // [sp+18h] [bp-1Ch] BYREF
bzero_core(result: v50, a2: 0x1Cu);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D0984C;
v3 = 0;
@@ -3339,20 +3358,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0984C + 3);
v8 = *((_QWORD *)off_D0984C + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0984C + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0984C + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 6;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 6 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3360,12 +3379,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[37];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field08 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 71) = 1;
+ *((_DWORD *)v13 + 72) = v6;
}
}
v3 += 6;
@@ -3377,7 +3396,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ *(&a1[2].field08 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3387,7 +3406,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 116);
+ v21 = (int *)(&a1[2].field24 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3396,21 +3415,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 368);
+ p_field08 = (int *)&a1[9].field08;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D10A60(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D10A60(a1: v4[54], a2: j) & 7;
+ *p_field08 = sub_D10A60(a1: v4[99], a2: j) & 1;
+ p_field08[1] = sub_D10A60(a1: v4[54], a2: j) & 7;
v24 = sub_D10AD0(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field08[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field08;
+ p_field08 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 452) = 1 << (j & 0x1F);
+ *(&a1[11].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D1099C(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -3437,22 +3456,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 376);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 456);
- v40 = (_DWORD *)(v38 + 464);
- v41 = (_DWORD *)(v38 + 460);
+ p_field10 = &a1[9].field10;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 114;
+ v40 = v38 + 116;
+ v41 = v38 + 115;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field10 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field10 += 3;
--v36;
}
}
@@ -3465,26 +3484,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 124);
+ p_field04 = &a1[3].field04;
while ( v32 != 0 )
{
--v32;
- if ( *v33 == v31 )
+ if ( *p_field04 == v31 )
{
- v33[1] = v30;
- v33[2] = v31;
- v33[3] = 1;
+ p_field04[1] = v30;
+ p_field04[2] = v31;
+ p_field04[3] = 1;
}
- v33 += 6;
+ p_field04 += 6;
}
}
}
- v42 = (unsigned int *)(a1 + 564);
+ v42 = &a1[14].field04;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D10C30(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
*v42 = v44 & 1;
v42[1] = v45;
@@ -6230,8 +6249,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06124)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06124((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08EF8 + 4), a3: v5) << 31 != 0 )
{
@@ -6285,7 +6303,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06124)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D06124((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D08EF8;
@@ -6343,8 +6361,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06124)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06124((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -6380,14 +6397,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -6395,11 +6412,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -6408,7 +6425,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v29; // r0
int v30; // r0
int v31; // r0
- int v32; // r0
+ unsigned int v32; // r0
_DWORD *v33; // r7
int v34; // r6
int v35; // r0
@@ -6421,21 +6438,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v42; // r0
BOOL v43; // r0
int v44; // r1
- int v45; // r0
- unsigned int v46; // r6
+ unsigned int v45; // r0
+ unsigned int field24; // r6
int (__fastcall *v47)(_DWORD, int); // r0
unsigned int v48; // r0
- int v49; // r0
+ unsigned int v49; // r0
int v50; // [sp+0h] [bp-8h] BYREF
int v51; // [sp+4h] [bp-4h] BYREF
v50 = a3;
v51 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09220 + 3);
@@ -6457,7 +6474,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09220 + 3);
@@ -6470,9 +6487,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -6489,7 +6506,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -6510,25 +6527,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09E04;
- if ( *((_DWORD *)off_D09E04 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09E04 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09E04 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09E04 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09E04 + 8) <= field38 )
return 2;
v50 = 255;
v51 = 255;
@@ -6536,7 +6553,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06124)(a1, a2: &v51, a3: &v50, a4: v23);
+ v17 = sub_D06124(a1, a2: &v51, a3: &v50);
if ( v17 != 0 )
return v17;
}
@@ -6558,15 +6575,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09224 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0 || sub_D064C4(a1: v5) != 0 || sub_D06044(a1: v5) != 0 )
+ if ( a1->field20 == 0 || sub_D064C4() != 0 || sub_D06044(a1: v5) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v32 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -6575,12 +6592,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v32 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v32 = 5;
goto LABEL_68;
}
@@ -6592,7 +6609,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06124)(a1, a2: &v51, a3: &v50, a4: v23);
+ v17 = sub_D06124(a1, a2: &v51, a3: &v50);
if ( v17 != 0 )
return v17;
}
@@ -6612,22 +6629,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09224 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v32 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v32;
+ a1->field40 = v32;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06124)(a1, a2: &v51, a3: &v50, a4: v23);
+ v17 = sub_D06124(a1, a2: &v51, a3: &v50);
if ( v17 != 0 )
return v17;
v38 = off_D09224;
if ( sub_D10A60(a1: *((_DWORD *)off_D09224 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v39 = sub_D10A60(a1: v38[100], a2: HIDWORD(v5)) & 7;
@@ -6647,28 +6664,28 @@ LABEL_69:
v17 = v43;
v45 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v45;
+ a1->field44 = v45;
return v17;
}
- v46 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v48 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v48;
- if ( v46 < 0x16 )
+ v48 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v48;
+ if ( field24 < 0x16 )
return 0;
v49 = v48 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v49;
+ a1->field44 = v49;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && sub_D06044(a1: v5) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && sub_D06044(a1: v5) == 0 )
{
v49 = 16;
goto LABEL_85;
}
- if ( v46 < 0xA )
+ if ( field24 < 0xA )
return 0;
v47 = (int (__fastcall *)(_DWORD, int))v19[39];
if ( v47 == nullptr || (v17 = v47(a1: v47, a2: v44)) == 0 )
@@ -6676,13 +6693,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09538 + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v46 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v45 = *(_DWORD *)(a1 + 68) | 2;
+ v45 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -6690,14 +6707,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -6705,11 +6722,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -6720,7 +6737,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -6734,21 +6751,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D0954C + 3);
@@ -6770,7 +6786,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D0954C + 3);
@@ -6783,9 +6799,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -6802,7 +6818,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -6823,33 +6839,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D0954C;
- if ( *((_DWORD *)off_D0954C + 1) <= v18 )
+ if ( *((_DWORD *)off_D0954C + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0954C + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0954C + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0954C + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061B4)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061B4(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -6871,17 +6887,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09538 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D064C4(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D064C4() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -6890,12 +6904,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -6907,7 +6921,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061B4)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061B4(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -6927,22 +6941,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09538 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061B4)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061B4(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D09538;
if ( sub_D10A60(a1: *((_DWORD *)off_D09538 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10A60(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -6962,40 +6976,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D06D08(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D06D08();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09850 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -10253,7 +10262,7 @@ int __fastcall j_sub_D0747C_7(int a1)
// attributes: thunk
int __fastcall j_sub_D074D8(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D074D8_11 [tier=EXACT size=4] ==== */
@@ -10340,7 +10349,7 @@ int __fastcall j_sub_D07D44_4(int a1, _BYTE *a2, _BYTE *a3)
// attributes: thunk
int __fastcall j_sub_D07D78_18(int a1, _BYTE *a2, _BYTE *a3)
{
- return asd_encoder_enable_seq_v3(a1, (int)a2, (__int16)a3);
+ return asd_encoder_enable_seq_v3((struct asd_link_cfg *)a1, (int)a2, (__int16)a3);
}
/* ==== j_sub_D07D78_7 [tier=EXACT size=4] ==== */
@@ -10477,7 +10486,7 @@ int __fastcall j_sub_D08138_5(int a1, _DWORD *a2)
// attributes: thunk
int __fastcall j_sub_D08138_7(int a1, _DWORD *a2)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D081CC_3 [tier=EXACT size=4] ==== */
@@ -10613,7 +10622,7 @@ int __fastcall j_sub_D09EE4_5()
// attributes: thunk
int __fastcall j_sub_D09F18_4(int a1, int a2, int a3, int a4)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_14 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.24.209_356275c8.anon.c b/fw/decomp/asd_33.0.24.209_356275c8.anon.c
index e21a15c..e3002e5 100644
--- a/fw/decomp/asd_33.0.24.209_356275c8.anon.c
+++ b/fw/decomp/asd_33.0.24.209_356275c8.anon.c
@@ -63,13 +63,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -364,6 +357,13 @@ int sub_D122F8()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_dio_current_instance_op(int a1)
{
return asd_dio_current_instance_op(a1);
@@ -441,6 +441,13 @@ int sub_D140FC()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -532,6 +539,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_write_quad_10(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -602,6 +616,13 @@ int __fastcall j_asd_signal_status_check_0(int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D13AC4()
{
JUMPOUT(0xD148F8);
@@ -700,6 +721,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -763,13 +791,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_4(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -965,6 +986,13 @@ int __fastcall j_asd_link_wait_and_set_10(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -986,6 +1014,13 @@ int __fastcall j_asd_dio_set_pair_4(unsigned int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_14(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_0(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -1336,13 +1371,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D14570()
{
return sub_D153BC();
@@ -1455,6 +1483,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0434C(_DWORD *a1)
{
return sub_D0657C(a1);
@@ -1532,13 +1567,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_read_pair_regs_15(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_link_read_pair_regs(a1, a2, a3);
@@ -1616,6 +1644,13 @@ int __fastcall j_asd_encoder_query(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1853,6 +1888,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1923,6 +1965,13 @@ int __fastcall j_asd_link_program_timing_16(int a1, unsigned __int8 *a2, unsigne
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_write_block_paged_5(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -2035,13 +2084,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D05318(int a1)
{
return sub_D06F2C(a1);
@@ -2196,6 +2238,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2336,13 +2385,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2413,13 +2455,6 @@ int sub_D05650()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2630,13 +2665,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2644,13 +2672,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_4(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -2707,6 +2728,13 @@ int __fastcall sub_D04CAA(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2819,6 +2847,13 @@ int __fastcall sub_D05638(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0467C(int a1)
{
return sub_D067D0(a1);
@@ -2917,6 +2952,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2980,13 +3022,6 @@ int sub_D05950()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CE4()
{
return sub_D06D3C();
@@ -3029,6 +3064,13 @@ int __fastcall j_asd_connector_enable_5(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_16(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3106,6 +3148,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0_8(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -3273,13 +3322,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3343,6 +3385,13 @@ int __fastcall j_asd_write_block_paged_1(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3406,13 +3455,6 @@ int __fastcall sub_D04684(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CB0()
{
return sub_D0A2B0();
@@ -3447,13 +3489,6 @@ int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3496,6 +3531,13 @@ BOOL __fastcall j_asd_svc_sub_2794()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_17(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3594,13 +3636,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D05CF4(int a1)
{
return sub_D06F2C(a1);
@@ -3629,13 +3664,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CA8()
{
return sub_D0A248();
@@ -3741,13 +3769,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D030B0(_DWORD *a1, int *a2)
{
return sub_D07290(a1, a2);
@@ -3769,23 +3790,23 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall sub_D04CD6(int a1)
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
{
- return sub_D06F2C(a1);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
+int __fastcall sub_D04CD6(int a1)
{
- return asd_write_block_paged(a1, a2, a3);
+ return sub_D06F2C(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
+int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
{
- return asd_dio_read_block(a1, a2);
+ return asd_write_block_paged(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -3951,13 +3972,6 @@ int __fastcall sub_D03068(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_14(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4063,13 +4077,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04984(_DWORD *a1)
{
return sub_D0657C(a1);
@@ -4126,6 +4133,13 @@ int sub_D02B0C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_2(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4168,13 +4182,6 @@ int __fastcall j_asd_build_link_map_full_0(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_reset_seq_15(__int64 a1, int a2, int a3)
{
return asd_link_reset_seq(a1, a2, a3);
@@ -4196,13 +4203,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4454,6 +4454,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4503,13 +4510,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4636,13 +4636,6 @@ int sub_D04364()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4780,6 +4773,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int sub_D14590()
{
diff --git a/fw/decomp/asd_33.0.24.209_356275c8.c b/fw/decomp/asd_33.0.24.209_356275c8.c
index b6b2dee..8550196 100644
--- a/fw/decomp/asd_33.0.24.209_356275c8.c
+++ b/fw/decomp/asd_33.0.24.209_356275c8.c
@@ -1679,27 +1679,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=EXACT size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D1511C + 2) <= a2 )
return 2;
v4 = sub_D0EDEC(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D15120 + 4 * a2);
result = 0;
@@ -1707,28 +1707,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2554,9 +2554,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2576,7 +2576,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2584,13 +2584,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07BD8;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07BD8 + 4), a3: v5) << 31 != 0 )
{
@@ -2606,7 +2606,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -2614,7 +2614,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D07E2C;
if ( sub_D10AC0(a1: *((_DWORD *)off_D07E2C + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -2633,7 +2633,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D15D24(a1: v23[101], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D07BD8;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07BD8 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -2657,10 +2657,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D07EC8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07EC8 + 41), a3: v5);
@@ -2669,7 +2669,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D07EC8;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07EC8 + 86), a3: v5);
@@ -2681,7 +2681,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D07EC8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07EC8 + 59), a3: v5);
@@ -2690,9 +2690,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D08A80;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08A80 + 59), a3: v5);
@@ -3063,7 +3063,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=MNEM size=694] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3072,29 +3072,29 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- int v9; // r1
+ unsigned int v9; // r1
int _13B74; // r0
__int16 v11; // r7
int v12; // r1
int v13; // r2
char v14; // r0
- int v15; // r1
+ char *v15; // r1
bool v16; // zf
int v17; // r0
unsigned int v18; // r0
- int v19; // r0
+ unsigned int *v19; // r0
int v20; // r1
- unsigned int v21; // r2
+ unsigned int field0C; // r2
unsigned int v22; // r6
int v23; // r3
int v24; // r0
unsigned int *v25; // r1
unsigned int v26; // r5
unsigned int v27; // r6
- int v28; // r0
+ char *v28; // r0
int *v29; // r7
int v30; // r0
- int *v31; // r6
+ int *p_field08; // r6
unsigned int i; // r5
unsigned int v33; // r0
int v34; // r0
@@ -3105,16 +3105,16 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int *v39; // r1
unsigned int v40; // r11
int v41; // r6
- unsigned int v42; // r0
+ unsigned int p_field10; // r0
int v43; // r7
- int v44; // r1
+ unsigned int *v44; // r1
unsigned int *v45; // r12
_DWORD *v46; // lr
_DWORD *v47; // r3
_DWORD v49[7]; // [sp+8h] [bp-1Ch] BYREF
bzero_core(result: v49, a2: 0x1Cu);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D09E60;
v3 = 0;
@@ -3123,14 +3123,14 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09E60 + 3);
v8 = *((_QWORD *)off_D09E60 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09E60 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
+ a1->unk00 = *((_DWORD *)off_D09E60 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
v9 = v2[9];
- *(_DWORD *)(a1 + 28) = v9;
+ a1->field1C = v9;
while ( v6 < v7 )
{
if ( sub_D0F1BC(a1: v7, a2: v9, a3: v8) == 0 )
@@ -3140,21 +3140,21 @@ int __fastcall asd_get_link_caps_full(int a1)
if ( sub_D0F1BC(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v15 = a1 + 8 * v6;
+ v15 = (char *)a1 + 8 * v6;
v16 = v5 == 6;
- *(_DWORD *)(v15 + 32) = (v11 & 0x800) != 0;
- *(_DWORD *)(v15 + 36) = v14 & 7;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 6 )
v16 = (v11 & 0x800) == 0;
if ( v16 )
v49[v5++] = v6;
- v17 = sub_D09574(a1: v6);
+ v17 = sub_D09574();
if ( v17 != 0 )
{
if ( sub_D0F1BC(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
- v9 = a1 + 4 * v6;
+ v9 = (unsigned int)a1 + 4 * v6;
*(_DWORD *)(v9 + 88) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
@@ -3162,10 +3162,10 @@ int __fastcall asd_get_link_caps_full(int a1)
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v19 = a1 + 4 * v3;
+ v19 = &a1->unk00 + v3;
v9 = 1;
- *(_DWORD *)(v19 + 284) = 1;
- *(_DWORD *)(v19 + 288) = v6;
+ v19[71] = 1;
+ v19[72] = v6;
}
}
}
@@ -3174,13 +3174,13 @@ int __fastcall asd_get_link_caps_full(int a1)
++v6;
}
v20 = 0;
- v21 = 1;
+ field0C = 1;
while ( v20 != v5 )
{
v22 = 0;
v23 = ~(1 << (v49[v20] & 0x1F));
while ( v22 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v22++) &= v23;
+ *(&a1[2].field08 + v22++) &= v23;
++v20;
}
v24 = v2[7];
@@ -3191,7 +3191,7 @@ int __fastcall asd_get_link_caps_full(int a1)
v27 = *v25;
if ( v24 != 0 )
v26 = 0;
- v28 = a1 + 24 * v26;
+ v28 = (char *)a1 + 24 * v26;
v29 = (int *)(v28 + 116);
while ( v26 < v27 )
{
@@ -3201,13 +3201,13 @@ int __fastcall asd_get_link_caps_full(int a1)
*v29 = v30;
if ( sub_D0F274(a1: v30) == 0 )
return 44;
- v28 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7;
- v29[1] = v28;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
v29[2] = v26;
v29 += 6;
++v26;
}
- v31 = (int *)(a1 + 368);
+ p_field08 = (int *)&a1[9].field08;
for ( i = 0; ; ++i )
{
v33 = v2[6];
@@ -3216,21 +3216,21 @@ int __fastcall asd_get_link_caps_full(int a1)
if ( sub_D0F274(a1: v33) == 0 )
return 44;
v34 = sub_D10AC0(a1: v4[99], a2: i) & 1;
- *v31 = v34;
+ *p_field08 = v34;
if ( sub_D0F274(a1: v34) == 0 )
return 44;
v35 = sub_D10AC0(a1: v4[54], a2: i) & 7;
- v31[1] = v35;
+ p_field08[1] = v35;
if ( sub_D0F274(a1: v35) == 0 )
return 44;
v36 = sub_D10B30(a1: v4[55], a2: i) & 7;
- v31[2] = v36;
- if ( v36 >= *(_DWORD *)(a1 + 12) )
+ p_field08[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v37 = *v31;
- v31 += 3;
+ v37 = *p_field08;
+ p_field08 += 3;
if ( v37 == 1 )
- *(_DWORD *)(a1 + 16 * v36 + 452) = 1 << i;
+ *(&a1[11].field0C + 4 * v36) = 1 << i;
}
v38 = 2;
v39 = (unsigned int *)v2[9];
@@ -3238,33 +3238,33 @@ int __fastcall asd_get_link_caps_full(int a1)
if ( v40 <= 5 )
{
v41 = 0;
- v42 = a1 + 376;
+ p_field10 = (unsigned int)&a1[9].field10;
while ( v41 != v40 )
{
- if ( sub_D0F1BC(a1: v42, a2: v39, a3: v21) == 0 )
+ if ( sub_D0F1BC(a1: p_field10, a2: v39, a3: field0C) == 0 )
return 44;
- v42 = sub_D10EFC(a1: v4[116], a2: v41);
- v39 = (unsigned int *)(v42 & 3);
+ p_field10 = sub_D10EFC(a1: v4[116], a2: v41);
+ v39 = (unsigned int *)(p_field10 & 3);
if ( v39 == (unsigned int *)2 )
{
- v42 = (v42 >> 8) & 7;
+ p_field10 = (p_field10 >> 8) & 7;
v43 = v2[6];
- v44 = a1 + 16 * v42;
- v45 = (unsigned int *)(v44 + 456);
- v46 = (_DWORD *)(v44 + 464);
- v47 = (_DWORD *)(v44 + 460);
- v39 = (unsigned int *)(a1 + 376);
+ v44 = &a1->unk00 + 4 * p_field10;
+ v45 = v44 + 114;
+ v46 = v44 + 116;
+ v47 = v44 + 115;
+ v39 = &a1[9].field10;
while ( v43 != 0 )
{
- v21 = *v39;
- if ( *v39 == v42 )
+ field0C = *v39;
+ if ( *v39 == p_field10 )
{
- v21 = *(_DWORD *)(a1 + 12);
- if ( v42 >= v21 )
+ field0C = a1->field0C;
+ if ( p_field10 >= field0C )
return 2;
*v46 = 2;
*v47 = v41;
- *v45 = v42;
+ *v45 = p_field10;
}
v39 += 3;
--v43;
@@ -3272,19 +3272,19 @@ int __fastcall asd_get_link_caps_full(int a1)
}
else if ( v39 == (unsigned int *)1 )
{
- v42 = (v42 >> 4) & 7;
+ p_field10 = (p_field10 >> 4) & 7;
v39 = (unsigned int *)v2[4];
- v21 = a1 + 124;
+ field0C = (unsigned int)&a1[3].field04;
while ( v39 != nullptr )
{
v39 = (unsigned int *)((char *)v39 - 1);
- if ( *(_DWORD *)v21 == v42 )
+ if ( *(_DWORD *)field0C == p_field10 )
{
- *(_DWORD *)(v21 + 4) = v41;
- *(_DWORD *)(v21 + 8) = v42;
- *(_DWORD *)(v21 + 12) = 1;
+ *(_DWORD *)(field0C + 4) = v41;
+ *(_DWORD *)(field0C + 8) = p_field10;
+ *(_DWORD *)(field0C + 12) = 1;
}
- v21 += 24;
+ field0C += 24;
}
}
++v41;
@@ -3297,7 +3297,7 @@ int __fastcall asd_get_link_caps_full(int a1)
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=762] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3307,10 +3307,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3319,26 +3319,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field08; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ unsigned int *p_field04; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field10; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
+ unsigned int *v41; // r4
unsigned int *v42; // r4
unsigned int m; // r5
unsigned int v44; // r0
@@ -3349,7 +3349,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[7]; // [sp+18h] [bp-1Ch] BYREF
bzero_core(result: v50, a2: 0x1Cu);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D09884;
v3 = 0;
@@ -3358,20 +3358,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09884 + 3);
v8 = *((_QWORD *)off_D09884 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09884 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09884 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 6;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 6 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3379,12 +3379,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[37];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field08 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 71) = 1;
+ *((_DWORD *)v13 + 72) = v6;
}
}
v3 += 6;
@@ -3396,7 +3396,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ *(&a1[2].field08 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3406,7 +3406,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 116);
+ v21 = (int *)(&a1[2].field24 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3415,21 +3415,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 368);
+ p_field08 = (int *)&a1[9].field08;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D10AC0(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D10AC0(a1: v4[54], a2: j) & 7;
+ *p_field08 = sub_D10AC0(a1: v4[99], a2: j) & 1;
+ p_field08[1] = sub_D10AC0(a1: v4[54], a2: j) & 7;
v24 = sub_D10B30(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field08[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field08;
+ p_field08 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 452) = 1 << (j & 0x1F);
+ *(&a1[11].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D109FC(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -3456,22 +3456,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 376);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 456);
- v40 = (_DWORD *)(v38 + 464);
- v41 = (_DWORD *)(v38 + 460);
+ p_field10 = &a1[9].field10;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 114;
+ v40 = v38 + 116;
+ v41 = v38 + 115;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field10 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field10 += 3;
--v36;
}
}
@@ -3484,26 +3484,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 124);
+ p_field04 = &a1[3].field04;
while ( v32 != 0 )
{
--v32;
- if ( *v33 == v31 )
+ if ( *p_field04 == v31 )
{
- v33[1] = v30;
- v33[2] = v31;
- v33[3] = 1;
+ p_field04[1] = v30;
+ p_field04[2] = v31;
+ p_field04[3] = 1;
}
- v33 += 6;
+ p_field04 += 6;
}
}
}
- v42 = (unsigned int *)(a1 + 564);
+ v42 = &a1[14].field04;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D10C90(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
*v42 = v44 & 1;
v42[1] = v45;
@@ -6536,8 +6536,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08F30 + 4), a3: v5) << 31 != 0 )
{
@@ -6591,7 +6590,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D08F30;
@@ -6649,8 +6648,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -6686,14 +6684,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -6701,11 +6699,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -6716,7 +6714,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -6730,21 +6728,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09258 + 3);
@@ -6766,7 +6764,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09258 + 3);
@@ -6779,9 +6777,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -6798,7 +6796,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -6819,25 +6817,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09E60;
- if ( *((_DWORD *)off_D09E60 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09E60 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09E60 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09E60 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09E60 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -6845,7 +6843,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -6867,17 +6865,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0925C + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D064F8(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D064F8() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -6886,12 +6882,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -6903,7 +6899,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -6923,22 +6919,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D0925C + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D0925C;
if ( sub_D10AC0(a1: *((_DWORD *)off_D0925C + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10AC0(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -6958,28 +6954,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[39];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -6987,13 +6983,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09570 + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7001,14 +6997,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7016,11 +7012,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7031,7 +7027,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7045,21 +7041,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09584 + 3);
@@ -7081,7 +7076,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09584 + 3);
@@ -7094,9 +7089,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7113,7 +7108,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7134,33 +7129,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09584;
- if ( *((_DWORD *)off_D09584 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09584 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09584 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09584 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09584 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7182,17 +7177,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09570 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D064F8(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D064F8() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7201,12 +7194,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7218,7 +7211,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7238,22 +7231,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09570 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D09570;
if ( sub_D10AC0(a1: *((_DWORD *)off_D09570 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10AC0(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -7273,40 +7266,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D06D40(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D06D40();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09888 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -10574,7 +10562,7 @@ int __fastcall j_sub_D0747C_7(int a1)
int v2; // r2
int v3; // r3
- return asd_program_link_by_signal_v2(a1, a2: v1, a3: v2, a4: v3);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, a2: v1, a3: v2, a4: v3);
}
/* ==== j_sub_D0750C_1 [tier=EXACT size=4] ==== */
@@ -10600,7 +10588,7 @@ int __fastcall j_sub_D0750C_19(_DWORD *a1)
// attributes: thunk
int __fastcall j_sub_D0750C_5(_DWORD *a1)
{
- return asd_get_link_caps_full((int)a1);
+ return asd_get_link_caps_full((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0750C_7 [tier=EXACT size=4] ==== */
@@ -10777,7 +10765,7 @@ int __fastcall j_sub_D08138_18(int a1, _DWORD *a2)
{
__int16 v2; // r2
- return asd_encoder_enable_seq_v3(a1, (int)a2, a3: v2);
+ return asd_encoder_enable_seq_v3((struct asd_link_cfg *)a1, (int)a2, a3: v2);
}
/* ==== j_sub_D08138_7 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.28.209_135c328b.anon.c b/fw/decomp/asd_33.0.28.209_135c328b.anon.c
index 5c34c37..84653a3 100644
--- a/fw/decomp/asd_33.0.28.209_135c328b.anon.c
+++ b/fw/decomp/asd_33.0.28.209_135c328b.anon.c
@@ -63,13 +63,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -364,6 +357,13 @@ int sub_D122F8()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_dio_current_instance_op(int a1)
{
return asd_dio_current_instance_op(a1);
@@ -441,6 +441,13 @@ int sub_D140FC()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -532,6 +539,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_write_quad_10(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -602,6 +616,13 @@ int __fastcall j_asd_signal_status_check_0(int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D13AC4()
{
JUMPOUT(0xD148F8);
@@ -700,6 +721,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -763,13 +791,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_4(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -965,6 +986,13 @@ int __fastcall j_asd_link_wait_and_set_10(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -986,6 +1014,13 @@ int __fastcall j_asd_dio_set_pair_4(unsigned int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_14(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_0(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -1336,13 +1371,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D14570()
{
return sub_D153BC();
@@ -1455,6 +1483,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0434C(_DWORD *a1)
{
return sub_D0657C(a1);
@@ -1532,13 +1567,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_read_pair_regs_15(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_link_read_pair_regs(a1, a2, a3);
@@ -1616,6 +1644,13 @@ int __fastcall j_asd_encoder_query(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1853,6 +1888,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1923,6 +1965,13 @@ int __fastcall j_asd_link_program_timing_16(int a1, unsigned __int8 *a2, unsigne
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_write_block_paged_5(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -2035,13 +2084,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D05318(int a1)
{
return sub_D06F2C(a1);
@@ -2196,6 +2238,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2336,13 +2385,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2413,13 +2455,6 @@ int sub_D05650()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2630,13 +2665,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2644,13 +2672,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_4(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -2707,6 +2728,13 @@ int __fastcall sub_D04CAA(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2819,6 +2847,13 @@ int __fastcall sub_D05638(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0467C(int a1)
{
return sub_D067D0(a1);
@@ -2917,6 +2952,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2980,13 +3022,6 @@ int sub_D05950()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CE4()
{
return sub_D06D3C();
@@ -3029,6 +3064,13 @@ int __fastcall j_asd_connector_enable_5(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_16(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3106,6 +3148,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0_8(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -3273,13 +3322,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3343,6 +3385,13 @@ int __fastcall j_asd_write_block_paged_1(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3406,13 +3455,6 @@ int __fastcall sub_D04684(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CB0()
{
return sub_D0A2B0();
@@ -3447,13 +3489,6 @@ int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3496,6 +3531,13 @@ BOOL __fastcall j_asd_svc_sub_2794()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_17(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3594,13 +3636,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D05CF4(int a1)
{
return sub_D06F2C(a1);
@@ -3629,13 +3664,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CA8()
{
return sub_D0A248();
@@ -3741,13 +3769,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D030B0(_DWORD *a1, int *a2)
{
return sub_D07290(a1, a2);
@@ -3769,23 +3790,23 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall sub_D04CD6(int a1)
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
{
- return sub_D06F2C(a1);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
+int __fastcall sub_D04CD6(int a1)
{
- return asd_write_block_paged(a1, a2, a3);
+ return sub_D06F2C(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
+int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
{
- return asd_dio_read_block(a1, a2);
+ return asd_write_block_paged(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -3951,13 +3972,6 @@ int __fastcall sub_D03068(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_14(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4063,13 +4077,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04984(_DWORD *a1)
{
return sub_D0657C(a1);
@@ -4126,6 +4133,13 @@ int sub_D02B0C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_2(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4168,13 +4182,6 @@ int __fastcall j_asd_build_link_map_full_0(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_reset_seq_15(__int64 a1, int a2, int a3)
{
return asd_link_reset_seq(a1, a2, a3);
@@ -4196,13 +4203,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4454,6 +4454,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4503,13 +4510,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4636,13 +4636,6 @@ int sub_D04364()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4780,6 +4773,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int sub_D14590()
{
diff --git a/fw/decomp/asd_33.0.28.209_135c328b.c b/fw/decomp/asd_33.0.28.209_135c328b.c
index 5619d63..4ffcc61 100644
--- a/fw/decomp/asd_33.0.28.209_135c328b.c
+++ b/fw/decomp/asd_33.0.28.209_135c328b.c
@@ -1679,27 +1679,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=EXACT size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D1511C + 2) <= a2 )
return 2;
v4 = sub_D0EDEC(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D15120 + 4 * a2);
result = 0;
@@ -1707,28 +1707,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2554,9 +2554,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=EXACT size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2576,7 +2576,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2584,13 +2584,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07BD8;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07BD8 + 4), a3: v5) << 31 != 0 )
{
@@ -2606,7 +2606,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -2614,7 +2614,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D07E2C;
if ( sub_D10AC0(a1: *((_DWORD *)off_D07E2C + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -2633,7 +2633,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D15D24(a1: v23[101], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D07BD8;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07BD8 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -2657,10 +2657,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D07EC8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07EC8 + 41), a3: v5);
@@ -2669,7 +2669,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D07EC8;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07EC8 + 86), a3: v5);
@@ -2681,7 +2681,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D07EC8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07EC8 + 59), a3: v5);
@@ -2690,9 +2690,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D08A80;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08A80 + 59), a3: v5);
@@ -3063,7 +3063,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=EXACT size=694] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3072,46 +3072,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field08; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[7]; // [sp+8h] [bp-1Ch] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field10; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[7]; // [sp+8h] [bp-1Ch] BYREF
- bzero_core(result: v46, a2: 0x1Cu);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x1Cu);
+ if ( a1 == nullptr )
return 2;
v2 = off_D09E60;
v3 = 0;
@@ -3120,43 +3123,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09E60 + 3);
v8 = *((_QWORD *)off_D09E60 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09E60 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09E60 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0F1BC() == 0 )
+ if ( sub_D0F1BC(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0F1BC() == 0 )
+ v11 = _13B74;
+ if ( sub_D0F1BC(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 6;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 6;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 6 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D09574(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D09574();
+ if ( v17 != 0 )
{
- if ( sub_D0F1BC() == 0 )
+ if ( sub_D0F1BC(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 88) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0F1BC() == 0 )
+ if ( sub_D0F1BC(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[71] = 1;
+ v19[72] = v6;
}
}
}
@@ -3164,121 +3173,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field08 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 116);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 116);
+ while ( v26 < v27 )
{
- if ( sub_D0F274(a1: v21) == 0 )
+ if ( sub_D0F274(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0F274(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0F274(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 368);
- for ( j = 0; ; ++j )
+ p_field08 = (int *)&a1[9].field08;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0F274(a1: v26) == 0 )
+ if ( sub_D0F274(a1: v33) == 0 )
return 44;
- v27 = sub_D10AC0(a1: v4[99], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0F274(a1: v27) == 0 )
+ v34 = sub_D10AC0(a1: v4[99], a2: i) & 1;
+ *p_field08 = v34;
+ if ( sub_D0F274(a1: v34) == 0 )
return 44;
- v28 = sub_D10AC0(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0F274(a1: v28) == 0 )
+ v35 = sub_D10AC0(a1: v4[54], a2: i) & 7;
+ p_field08[1] = v35;
+ if ( sub_D0F274(a1: v35) == 0 )
return 44;
- v29 = sub_D10B30(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D10B30(a1: v4[55], a2: i) & 7;
+ p_field08[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 452) = 1 << j;
+ v37 = *p_field08;
+ p_field08 += 3;
+ if ( v37 == 1 )
+ *(&a1[11].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field10 = (unsigned int)&a1[9].field10;
+ while ( v41 != v40 )
{
- if ( sub_D0F1BC() == 0 )
+ if ( sub_D0F1BC(a1: p_field10, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D10EFC(a1: v4[116], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field10 = sub_D10EFC(a1: v4[116], a2: v41);
+ v39 = (unsigned int *)(p_field10 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 456);
- v42 = (_DWORD *)(v40 + 464);
- v43 = (_DWORD *)(v40 + 460);
- v44 = (_DWORD *)(a1 + 376);
- while ( v39 != 0 )
+ p_field10 = (p_field10 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field10;
+ v45 = v44 + 114;
+ v46 = v44 + 116;
+ v47 = v44 + 115;
+ v39 = &a1[9].field10;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field10 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field10 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field10;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 124);
- while ( v36 != 0 )
+ p_field10 = (p_field10 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[3].field04;
+ while ( v39 != nullptr )
{
- --v36;
- if ( *v37 == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)field0C == p_field10 )
{
- v37[1] = k;
- v37[2] = v35;
- v37[3] = 1;
+ *(_DWORD *)(field0C + 4) = v41;
+ *(_DWORD *)(field0C + 8) = p_field10;
+ *(_DWORD *)(field0C + 12) = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=EXACT size=762] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3288,10 +3307,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3300,26 +3319,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field08; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ unsigned int *p_field04; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field10; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
+ unsigned int *v41; // r4
unsigned int *v42; // r4
unsigned int m; // r5
unsigned int v44; // r0
@@ -3330,7 +3349,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[7]; // [sp+18h] [bp-1Ch] BYREF
bzero_core(result: v50, a2: 0x1Cu);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D09884;
v3 = 0;
@@ -3339,20 +3358,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09884 + 3);
v8 = *((_QWORD *)off_D09884 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09884 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09884 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 6;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 6 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3360,12 +3379,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[37];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field08 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 71) = 1;
+ *((_DWORD *)v13 + 72) = v6;
}
}
v3 += 6;
@@ -3377,7 +3396,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ *(&a1[2].field08 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3387,7 +3406,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 116);
+ v21 = (int *)(&a1[2].field24 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3396,21 +3415,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 368);
+ p_field08 = (int *)&a1[9].field08;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D10AC0(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D10AC0(a1: v4[54], a2: j) & 7;
+ *p_field08 = sub_D10AC0(a1: v4[99], a2: j) & 1;
+ p_field08[1] = sub_D10AC0(a1: v4[54], a2: j) & 7;
v24 = sub_D10B30(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field08[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field08;
+ p_field08 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 452) = 1 << (j & 0x1F);
+ *(&a1[11].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D109FC(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -3437,22 +3456,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 376);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 456);
- v40 = (_DWORD *)(v38 + 464);
- v41 = (_DWORD *)(v38 + 460);
+ p_field10 = &a1[9].field10;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 114;
+ v40 = v38 + 116;
+ v41 = v38 + 115;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field10 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field10 += 3;
--v36;
}
}
@@ -3465,26 +3484,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 124);
+ p_field04 = &a1[3].field04;
while ( v32 != 0 )
{
--v32;
- if ( *v33 == v31 )
+ if ( *p_field04 == v31 )
{
- v33[1] = v30;
- v33[2] = v31;
- v33[3] = 1;
+ p_field04[1] = v30;
+ p_field04[2] = v31;
+ p_field04[3] = 1;
}
- v33 += 6;
+ p_field04 += 6;
}
}
}
- v42 = (unsigned int *)(a1 + 564);
+ v42 = &a1[14].field04;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D10C90(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
*v42 = v44 & 1;
v42[1] = v45;
@@ -6488,8 +6507,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08F30 + 4), a3: v5) << 31 != 0 )
{
@@ -6543,7 +6561,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D08F30;
@@ -6601,8 +6619,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -6638,14 +6655,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=EXACT size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -6653,11 +6670,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -6668,7 +6685,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -6682,21 +6699,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09258 + 3);
@@ -6718,7 +6735,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09258 + 3);
@@ -6731,9 +6748,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -6750,7 +6767,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -6771,25 +6788,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09E60;
- if ( *((_DWORD *)off_D09E60 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09E60 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09E60 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09E60 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09E60 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -6797,7 +6814,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -6819,17 +6836,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0925C + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D064F8(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D064F8() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -6838,12 +6853,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -6855,7 +6870,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -6875,22 +6890,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D0925C + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D0925C;
if ( sub_D10AC0(a1: *((_DWORD *)off_D0925C + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10AC0(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -6910,28 +6925,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[39];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -6939,13 +6954,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09570 + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -6953,14 +6968,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=EXACT size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -6968,11 +6983,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -6983,7 +6998,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -6997,21 +7012,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09584 + 3);
@@ -7033,7 +7047,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09584 + 3);
@@ -7046,9 +7060,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7065,7 +7079,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7086,33 +7100,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09584;
- if ( *((_DWORD *)off_D09584 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09584 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09584 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09584 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09584 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7134,17 +7148,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09570 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D064F8(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D064F8() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7153,12 +7165,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7170,7 +7182,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7190,22 +7202,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09570 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D09570;
if ( sub_D10AC0(a1: *((_DWORD *)off_D09570 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10AC0(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -7225,40 +7237,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D06D40(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D06D40();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09888 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -10568,7 +10575,7 @@ int __fastcall j_sub_D0747C_7(int a1)
int v2; // r2
int v3; // r3
- return asd_program_link_by_signal_v2(a1, a2: v1, a3: v2, a4: v3);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, a2: v1, a3: v2, a4: v3);
}
/* ==== j_sub_D0750C_1 [tier=EXACT size=4] ==== */
@@ -10594,7 +10601,7 @@ int __fastcall j_sub_D0750C_19(_DWORD *a1)
// attributes: thunk
int __fastcall j_sub_D0750C_5(_DWORD *a1)
{
- return asd_get_link_caps_full((int)a1);
+ return asd_get_link_caps_full((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0750C_7 [tier=EXACT size=4] ==== */
@@ -10771,7 +10778,7 @@ int __fastcall j_sub_D08138_18(int a1, _DWORD *a2)
{
__int16 v2; // r2
- return asd_encoder_enable_seq_v3(a1, (int)a2, a3: v2);
+ return asd_encoder_enable_seq_v3((struct asd_link_cfg *)a1, (int)a2, a3: v2);
}
/* ==== j_sub_D08138_7 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.4.153_ddc1f532.c b/fw/decomp/asd_33.0.4.153_ddc1f532.c
index 77f7d4b..5da2d15 100644
--- a/fw/decomp/asd_33.0.4.153_ddc1f532.c
+++ b/fw/decomp/asd_33.0.4.153_ddc1f532.c
@@ -2333,8 +2333,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D053F4)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D053F4((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || sub_D0D264(a1: 0, a2: *((_DWORD *)off_D07860 + 2), a3: v5) << 31 != 0 )
{
@@ -2388,7 +2387,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D053F4)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D053F4((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D07860;
@@ -2446,8 +2445,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D053F4)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D053F4((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
diff --git a/fw/decomp/asd_33.0.4.222_ff8dd593.anon.c b/fw/decomp/asd_33.0.4.222_ff8dd593.anon.c
index 12356ce..b6ac46b 100644
--- a/fw/decomp/asd_33.0.4.222_ff8dd593.anon.c
+++ b/fw/decomp/asd_33.0.4.222_ff8dd593.anon.c
@@ -63,13 +63,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -357,6 +350,13 @@ int sub_D028BC()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_dio_current_instance_op(int a1)
{
return asd_dio_current_instance_op(a1);
@@ -434,6 +434,13 @@ int __fastcall j_asd_link_write_quad_6(int a1, _DWORD *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -525,6 +532,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_write_quad_10(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -588,6 +602,13 @@ int __fastcall j_asd_signal_status_check_0(int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_train_status_11(int a1)
{
return asd_link_train_status(a1);
@@ -686,6 +707,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -749,13 +777,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_17(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -924,6 +945,13 @@ int __fastcall j_asd_link_wait_and_set_10(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -945,6 +973,13 @@ int __fastcall j_asd_dio_set_pair_4(unsigned int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_14(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_0(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -1281,13 +1316,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_4(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -1372,6 +1400,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0434C(_DWORD *a1)
{
return sub_D0657C(a1);
@@ -1449,13 +1484,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D14568()
{
return sub_D149D0();
@@ -1533,6 +1561,13 @@ int __fastcall j_asd_encoder_query(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1769,6 +1804,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1853,6 +1895,13 @@ int __fastcall j_asd_link_program_timing_16(int a1, unsigned __int8 *a2, unsigne
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_write_block_paged_5(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -1965,13 +2014,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D05318(int a1)
{
return sub_D06F2C(a1);
@@ -2133,6 +2175,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2252,13 +2301,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2329,13 +2371,6 @@ int sub_D05650()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2546,13 +2581,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2560,13 +2588,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall sub_D142B4(unsigned int a1)
{
return sub_D14CE0(a1);
@@ -2637,6 +2658,13 @@ int __fastcall sub_D04CAA(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2749,6 +2777,13 @@ int __fastcall sub_D05638(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0467C(int a1)
{
return sub_D067D0(a1);
@@ -2840,6 +2875,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2896,13 +2938,6 @@ int sub_D05950()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CE4()
{
return sub_D06D3C();
@@ -2945,6 +2980,13 @@ int __fastcall j_asd_connector_enable_5(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_16(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3022,6 +3064,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D04050(int a1)
{
return sub_D067D0(a1);
@@ -3169,13 +3218,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3246,6 +3288,13 @@ int sub_D14404()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3323,13 +3372,6 @@ int __fastcall sub_D04684(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_11(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3357,13 +3399,6 @@ int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3413,6 +3448,13 @@ BOOL __fastcall j_asd_svc_sub_2794()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_17(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3531,13 +3573,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D05CF4(int a1)
{
return sub_D06F2C(a1);
@@ -3580,13 +3615,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CA8()
{
return sub_D0A248();
@@ -3706,13 +3734,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D030B0(_DWORD *a1, int *a2)
{
return sub_D07290(a1, a2);
@@ -3734,6 +3755,13 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D04CD6(int a1)
{
return sub_D06F2C(a1);
@@ -3755,13 +3783,6 @@ int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_pipe_lookup_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_pipe_lookup(a1, a2, a3);
@@ -3936,13 +3957,6 @@ int __fastcall sub_D03068(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_14(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4048,13 +4062,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04984(_DWORD *a1)
{
return sub_D0657C(a1);
@@ -4118,6 +4125,13 @@ int sub_D02B0C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_2(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4160,13 +4174,6 @@ int __fastcall j_asd_build_link_map_full_0(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_reset_seq_15(__int64 a1, int a2, int a3)
{
return asd_link_reset_seq(a1, a2, a3);
@@ -4188,13 +4195,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4460,6 +4460,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4502,13 +4509,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4621,13 +4621,6 @@ int sub_D04364()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4759,6 +4752,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int sub_D15624()
{
diff --git a/fw/decomp/asd_33.0.4.222_ff8dd593.c b/fw/decomp/asd_33.0.4.222_ff8dd593.c
index 067041a..ef573ae 100644
--- a/fw/decomp/asd_33.0.4.222_ff8dd593.c
+++ b/fw/decomp/asd_33.0.4.222_ff8dd593.c
@@ -1760,27 +1760,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D152BC + 2) <= a2 )
return 2;
v4 = sub_D0EE08(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D152C0 + 4 * a2);
result = 0;
@@ -1788,28 +1788,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2635,9 +2635,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2657,7 +2657,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2665,13 +2665,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07BD8;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07BD8 + 4), a3: v5) << 31 != 0 )
{
@@ -2687,7 +2687,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -2695,7 +2695,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D07E2C;
if ( sub_D10B80(a1: *((_DWORD *)off_D07E2C + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -2714,7 +2714,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D15ECC(a1: v23[101], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D07BD8;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07BD8 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -2738,10 +2738,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D07EC8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07EC8 + 41), a3: v5);
@@ -2750,7 +2750,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D07EC8;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07EC8 + 86), a3: v5);
@@ -2762,7 +2762,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D07EC8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07EC8 + 59), a3: v5);
@@ -2771,9 +2771,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D08A80;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08A80 + 59), a3: v5);
@@ -3144,7 +3144,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=MNEM size=696] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3153,46 +3153,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field18; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[9]; // [sp+8h] [bp-24h] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field20; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[9]; // [sp+8h] [bp-24h] BYREF
- bzero_core(result: v46, a2: 0x24u);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x24u);
+ if ( a1 == nullptr )
return 2;
v2 = off_D09E60;
v3 = 0;
@@ -3201,43 +3204,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09E60 + 3);
v8 = *((_QWORD *)off_D09E60 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09E60 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09E60 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0F1D8() == 0 )
+ if ( sub_D0F1D8(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0F1D8() == 0 )
+ v11 = _13B74;
+ if ( sub_D0F1D8(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 8;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 8;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 8 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D09574(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D09574();
+ if ( v17 != 0 )
{
- if ( sub_D0F1D8() == 0 )
+ if ( sub_D0F1D8(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 104) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0F1D8() == 0 )
+ if ( sub_D0F1D8(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[89] = 1;
+ v19[90] = v6;
}
}
}
@@ -3245,121 +3254,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field18 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 140);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 140);
+ while ( v26 < v27 )
{
- if ( sub_D0F290(a1: v21) == 0 )
+ if ( sub_D0F290(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0F290(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0F290(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 464);
- for ( j = 0; ; ++j )
+ p_field18 = (int *)&a1[11].field18;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0F290(a1: v26) == 0 )
+ if ( sub_D0F290(a1: v33) == 0 )
return 44;
- v27 = sub_D10B80(a1: v4[99], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0F290(a1: v27) == 0 )
+ v34 = sub_D10B80(a1: v4[99], a2: i) & 1;
+ *p_field18 = v34;
+ if ( sub_D0F290(a1: v34) == 0 )
return 44;
- v28 = sub_D10B80(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0F290(a1: v28) == 0 )
+ v35 = sub_D10B80(a1: v4[54], a2: i) & 7;
+ p_field18[1] = v35;
+ if ( sub_D0F290(a1: v35) == 0 )
return 44;
- v29 = sub_D10BF0(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D10BF0(a1: v4[55], a2: i) & 7;
+ p_field18[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 572) = 1 << j;
+ v37 = *p_field18;
+ p_field18 += 3;
+ if ( v37 == 1 )
+ *(&a1[14].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field20 = (unsigned int)&a1[11].field20;
+ while ( v41 != v40 )
{
- if ( sub_D0F1D8() == 0 )
+ if ( sub_D0F1D8(a1: p_field20, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D10FBC(a1: v4[116], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field20 = sub_D10FBC(a1: v4[116], a2: v41);
+ v39 = (unsigned int *)(p_field20 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 576);
- v42 = (_DWORD *)(v40 + 584);
- v43 = (_DWORD *)(v40 + 580);
- v44 = (_DWORD *)(a1 + 472);
- while ( v39 != 0 )
+ p_field20 = (p_field20 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field20;
+ v45 = v44 + 144;
+ v46 = v44 + 146;
+ v47 = v44 + 145;
+ v39 = &a1[11].field20;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field20 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field20 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field20;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 160);
- while ( v36 != 0 )
+ p_field20 = (p_field20 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[4];
+ while ( v39 != nullptr )
{
- --v36;
- if ( *(v37 - 3) == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)(field0C - 12) == p_field20 )
{
- *(v37 - 2) = k;
- *(v37 - 1) = v35;
- *v37 = 1;
+ *(_DWORD *)(field0C - 8) = v41;
+ *(_DWORD *)(field0C - 4) = p_field20;
+ *(_DWORD *)field0C = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=764] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3369,10 +3388,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3381,27 +3400,27 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field18; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ struct asd_link_caps *v33; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field20; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
- unsigned int *v42; // r4
+ unsigned int *v41; // r4
+ unsigned int *p_field24; // r4
unsigned int m; // r5
unsigned int v44; // r0
unsigned int v45; // r1
@@ -3411,7 +3430,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[9]; // [sp+18h] [bp-24h] BYREF
bzero_core(result: v50, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D09884;
v3 = 0;
@@ -3420,20 +3439,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09884 + 3);
v8 = *((_QWORD *)off_D09884 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09884 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09884 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 8;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 8 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3441,12 +3460,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[37];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field18 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 89) = 1;
+ *((_DWORD *)v13 + 90) = v6;
}
}
v3 += 6;
@@ -3458,7 +3477,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ *(&a1[2].field18 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3468,7 +3487,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 140);
+ v21 = (int *)(&a1[3].field14 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3477,21 +3496,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 464);
+ p_field18 = (int *)&a1[11].field18;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D10B80(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D10B80(a1: v4[54], a2: j) & 7;
+ *p_field18 = sub_D10B80(a1: v4[99], a2: j) & 1;
+ p_field18[1] = sub_D10B80(a1: v4[54], a2: j) & 7;
v24 = sub_D10BF0(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field18;
+ p_field18 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 572) = 1 << (j & 0x1F);
+ *(&a1[14].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D10ABC(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -3518,22 +3537,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 472);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 576);
- v40 = (_DWORD *)(v38 + 584);
- v41 = (_DWORD *)(v38 + 580);
+ p_field20 = &a1[11].field20;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 144;
+ v40 = v38 + 146;
+ v41 = v38 + 145;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field20 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field20 += 3;
--v36;
}
}
@@ -3546,31 +3565,31 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 160);
+ v33 = a1 + 4;
while ( v32 != 0 )
{
--v32;
- if ( *(v33 - 3) == v31 )
+ if ( v33[-1].field1C == v31 )
{
- *(v33 - 2) = v30;
- *(v33 - 1) = v31;
- *v33 = 1;
+ v33[-1].field20 = v30;
+ v33[-1].field24 = v31;
+ v33->unk00 = 1;
}
- v33 += 6;
+ v33 = (struct asd_link_caps *)((char *)v33 + 24);
}
}
}
- v42 = (unsigned int *)(a1 + 716);
+ p_field24 = &a1[17].field24;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D10D50(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
- *v42 = v44 & 1;
- v42[1] = v45;
- v42[2] = m;
- v42 += 3;
+ *p_field24 = v44 & 1;
+ p_field24[1] = v45;
+ p_field24[2] = m;
+ p_field24 += 3;
}
return 0;
}
@@ -6714,8 +6733,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08F30 + 4), a3: v5) << 31 != 0 )
{
@@ -6769,7 +6787,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D08F30;
@@ -6827,8 +6845,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06140)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06140((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -6864,14 +6881,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -6879,11 +6896,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -6894,7 +6911,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -6908,21 +6925,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09258 + 3);
@@ -6944,7 +6961,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09258 + 3);
@@ -6957,9 +6974,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -6976,7 +6993,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -6997,25 +7014,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09E60;
- if ( *((_DWORD *)off_D09E60 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09E60 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09E60 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09E60 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09E60 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -7023,7 +7040,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7045,17 +7062,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0925C + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D064F8(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D064F8() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7064,12 +7079,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7081,7 +7096,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7101,22 +7116,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D0925C + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06140)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06140(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D0925C;
if ( sub_D10B80(a1: *((_DWORD *)off_D0925C + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10B80(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -7136,28 +7151,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[39];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -7165,13 +7180,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09570 + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7179,14 +7194,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7194,11 +7209,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7209,7 +7224,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7223,21 +7238,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09584 + 3);
@@ -7259,7 +7273,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09584 + 3);
@@ -7272,9 +7286,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7291,7 +7305,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7312,33 +7326,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09584;
- if ( *((_DWORD *)off_D09584 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09584 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09584 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09584 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09584 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7360,17 +7374,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09570 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D064F8(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D064F8() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7379,12 +7391,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7396,7 +7408,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7416,22 +7428,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09570 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D061D0)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D061D0(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D09570;
if ( sub_D10B80(a1: *((_DWORD *)off_D09570 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10B80(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -7451,40 +7463,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D06D40(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D06D40();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09888 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -10860,7 +10867,7 @@ int __fastcall j_sub_D0747C_7(int a1)
int v2; // r2
int v3; // r3
- return asd_program_link_by_signal_v2(a1, a2: v1, a3: v2, a4: v3);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, a2: v1, a3: v2, a4: v3);
}
/* ==== j_sub_D0750C_1 [tier=EXACT size=4] ==== */
@@ -10886,7 +10893,7 @@ int __fastcall j_sub_D0750C_19(_DWORD *a1)
// attributes: thunk
int __fastcall j_sub_D0750C_5(_DWORD *a1)
{
- return asd_get_link_caps_full((int)a1);
+ return asd_get_link_caps_full((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0750C_7 [tier=EXACT size=4] ==== */
@@ -11063,7 +11070,7 @@ int __fastcall j_sub_D08138_18(int a1, _DWORD *a2)
{
__int16 v2; // r2
- return asd_encoder_enable_seq_v3(a1, (int)a2, a3: v2);
+ return asd_encoder_enable_seq_v3((struct asd_link_cfg *)a1, (int)a2, a3: v2);
}
/* ==== j_sub_D08138_7 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.8.195_5f04c8ff.anon.c b/fw/decomp/asd_33.0.8.195_5f04c8ff.anon.c
index 2c54f8e..3d57749 100644
--- a/fw/decomp/asd_33.0.8.195_5f04c8ff.anon.c
+++ b/fw/decomp/asd_33.0.8.195_5f04c8ff.anon.c
@@ -77,13 +77,6 @@ int __fastcall sub_D03A80(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -317,6 +310,13 @@ int __fastcall j_asd_link_reset_seq_12(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_dio_current_instance_op(int a1)
{
return asd_dio_current_instance_op(a1);
@@ -401,6 +401,13 @@ int sub_D058C4()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -513,6 +520,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_12(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -597,6 +611,13 @@ int __fastcall j_asd_session_op57_invoke_2()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D05574()
{
return sub_D063F4();
@@ -701,6 +722,13 @@ int sub_D131B0()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -757,13 +785,6 @@ int __fastcall sub_D04C42(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_pair_D49838_4(_DWORD *a1)
{
return asd_get_pair_D49838(a1);
@@ -925,6 +946,13 @@ int __fastcall j_asd_link_wait_and_set_10(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1205,13 +1233,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D13050()
{
return sub_D13C64();
@@ -1303,6 +1324,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_6(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -1373,13 +1401,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -1450,6 +1471,13 @@ int __fastcall j_asd_session_op57_invoke_3()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1674,6 +1702,13 @@ int __fastcall sub_D03D48(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1779,6 +1814,13 @@ int __fastcall sub_D03A68(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D02D08()
{
return sub_D06B04();
@@ -1905,13 +1947,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_query_link_config_6(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -2003,6 +2038,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2150,13 +2192,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_9(int a1)
{
return asd_link_train_status(a1);
@@ -2213,13 +2248,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2457,13 +2485,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2471,13 +2492,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_4(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -2555,6 +2569,13 @@ int sub_D10592()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2639,6 +2660,13 @@ int __fastcall j_asd_dio_current_instance_op_2(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -2744,6 +2772,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2779,13 +2814,6 @@ void sub_D131C2()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D03274(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06A8C(a1, a2, a3);
@@ -2828,6 +2856,13 @@ int __fastcall j_asd_connector_enable_5(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D03D38(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06A8C(a1, a2, a3);
@@ -2891,6 +2926,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D045E8()
{
return sub_D06304();
@@ -3044,13 +3086,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3121,6 +3156,13 @@ int __fastcall j_asd_state_not_1_cfg0_4(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D04F46()
{
return sub_D06304();
@@ -3191,13 +3233,6 @@ int sub_D0460C()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D02870()
{
return sub_D06B04();
@@ -3212,13 +3247,6 @@ int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D1319C(_DWORD *a1)
{
return sub_D13CC4(a1);
@@ -3275,6 +3303,13 @@ int sub_D111F4()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_get_signal_reg_1(int a1)
{
return asd_get_signal_reg(a1);
@@ -3400,13 +3435,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D03840(int a1)
{
return sub_D06BCC(a1);
@@ -3428,13 +3456,6 @@ int __fastcall sub_D04C46(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D03A6C()
{
return sub_D06304();
@@ -3533,13 +3554,6 @@ int sub_D03D18()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_3(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -3561,6 +3575,13 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D02D04(int a1, _BYTE *a2, _BYTE *a3)
{
return sub_D06A8C(a1, a2, a3);
@@ -3596,13 +3617,6 @@ int sub_D02ABC()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_pipe_lookup_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_pipe_lookup(a1, a2, a3);
@@ -3889,13 +3903,6 @@ int __fastcall sub_D04F6E(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -3945,6 +3952,13 @@ int sub_D03254()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D1306A()
{
return sub_D13350();
@@ -4001,13 +4015,6 @@ int __fastcall j_asd_build_link_map_full_0(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13D24_cfg0_6(unsigned int a1, int a2, __int16 a3)
{
return asd_reg_read_13D24_cfg0(a1, a2, a3);
@@ -4022,13 +4029,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_signal_reg_2(int a1)
{
return asd_get_signal_reg(a1);
@@ -4253,6 +4253,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0359C(_DWORD *a1)
{
return sub_D06D30(a1);
@@ -4274,13 +4281,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D0525C()
{
return sub_D06304();
@@ -4385,13 +4385,6 @@ int sub_D02CE4()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D048E8(int a1)
{
return sub_D05FC8(a1);
@@ -4495,6 +4488,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int __fastcall sub_D1294C(int a1)
{
diff --git a/fw/decomp/asd_33.0.8.195_5f04c8ff.c b/fw/decomp/asd_33.0.8.195_5f04c8ff.c
index 5680101..4c00fb8 100644
--- a/fw/decomp/asd_33.0.8.195_5f04c8ff.c
+++ b/fw/decomp/asd_33.0.8.195_5f04c8ff.c
@@ -1650,27 +1650,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D13CBC + 2) <= a2 )
return 2;
v4 = sub_D0E1D0(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D13D44 + 4 * a2);
result = 0;
@@ -1678,28 +1678,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2436,9 +2436,9 @@ LABEL_42:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2461,7 +2461,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v29; // r0
int v30; // r0
int v31; // r0
- int v32; // r0
+ unsigned int field40; // r0
_DWORD *v33; // r6
int v34; // r0
int v35; // r3
@@ -2476,17 +2476,17 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
_DWORD *v44; // r7
int v45; // r6
int v46; // r0
- int v47; // r5
+ unsigned int field54; // r5
int v48; // r3
int v49; // r1
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07674;
if ( sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D07674 + 4), a3: v5) << 31 != 0 )
{
@@ -2502,7 +2502,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
v11 = sub_D0FC34(a1: 0, a2: v6[40], a3: v5);
sub_D146C8(r0_0: 0, r1_0: v6[40], r2_0: v5, r3_0: v11 | 1);
sub_D0FC34(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
sub_D146C8(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: (dword_D0767C & HIDWORD(v5)) + 1114112);
sub_D146C8(r0_0: 0, r1_0: v6[59], r2_0: v5, r3_0: HIDWORD(v5) | 0x10);
__asm { SVC 0x56 ; 'V' }
@@ -2510,7 +2510,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v26 = off_D078C8;
if ( sub_D0FC6C(a1: *((_DWORD *)off_D078C8 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -2529,7 +2529,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D1472C(a1: v26[101], a2: v28, a3: v31 | 1);
}
break;
- case 32:
+ case 0x20u:
v17 = off_D07674;
if ( sub_D0FC34(a1: 1, a2: *((_DWORD *)off_D07674 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -2554,15 +2554,15 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v32 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v32 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v33 = off_D07964;
v34 = sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D07964 + 41), a3: v5);
v35 = v34 | 1;
- if ( *(_DWORD *)(a1 + 84) == 1 )
+ if ( a1->field54 == 1 )
v35 = v34 & 0xFFFFFFFE;
v36 = v33[41];
LABEL_40:
@@ -2571,12 +2571,12 @@ LABEL_41:
sub_D146C8(r0_0: v43, r1_0: v36, r2_0: v5, r3_0: v35);
return 7;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v41 = off_D07964;
v42 = sub_D0FC34(a1: 1, a2: *((_DWORD *)off_D07964 + 86), a3: v5);
v35 = v42 | 1;
- if ( *(_DWORD *)(a1 + 84) == 1 )
+ if ( a1->field54 == 1 )
v35 = v42 & 0xFFFFFFFE;
v36 = v41[86];
v43 = 1;
@@ -2584,32 +2584,32 @@ LABEL_41:
}
return 7;
}
- if ( v32 == 4 )
+ if ( field40 == 4 )
{
v44 = off_D07964;
v45 = sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D07964 + 59), a3: v5);
v46 = sub_D0FC34(a1: 0, a2: v44[47], a3: v5);
- v47 = *(_DWORD *)(a1 + 84);
+ field54 = a1->field54;
v48 = v46 | 0x100;
- if ( v47 == 1 )
+ if ( field54 == 1 )
v48 = v46 & 0xFFFFFEFF;
sub_D146C8(r0_0: 0, r1_0: v44[47], r2_0: v5, r3_0: v48);
v49 = 512;
- if ( v47 == 1 )
+ if ( field54 == 1 )
v49 = 256;
v35 = (v45 & 0xFFFFFCFF) + v49;
v36 = v44[59];
goto LABEL_40;
}
- if ( v32 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v37 = off_D0851C;
v38 = sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D0851C + 59), a3: v5);
v39 = sub_D0FC34(a1: 0, a2: v37[47], a3: v5);
v40 = v38 & 0xFFFFFCFF | 0x100;
- if ( *(_DWORD *)(a1 + 84) == 2 )
+ if ( a1->field54 == 2 )
v40 = v38 | 0x300;
sub_D146C8(r0_0: 0, r1_0: v37[59], r2_0: v5, r3_0: v40);
v36 = v37[47];
@@ -2863,7 +2863,7 @@ LABEL_9:
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=762] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -2873,10 +2873,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int v9; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -2885,26 +2885,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field08; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ unsigned int *p_field04; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field10; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
+ unsigned int *v41; // r4
unsigned int *v42; // r4
unsigned int m; // r5
unsigned int v44; // r0
@@ -2915,7 +2915,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[7]; // [sp+18h] [bp-1Ch] BYREF
bzero_core(result: v50, a2: 0x1Cu);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D09320;
v3 = 0;
@@ -2924,20 +2924,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09320 + 3);
v8 = *((_QWORD *)off_D09320 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09320 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09320 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
v9 = sub_D0FC34(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 6;
- *(_DWORD *)(v10 + 36) = v9 & 7;
- *(_DWORD *)(v10 + 32) = (v9 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = v9 & 7;
+ *((_DWORD *)v10 + 8) = (v9 & 0x1000000) != 0;
if ( v5 <= 6 )
v11 = (v9 & 0x1000000) == 0;
if ( v11 )
@@ -2945,12 +2945,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[36];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 88) = ((unsigned int)sub_D0FC34(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field08 + v6) = ((unsigned int)sub_D0FC34(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 284) = 1;
- *(_DWORD *)(v13 + 288) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 71) = 1;
+ *((_DWORD *)v13 + 72) = v6;
}
}
v3 += 6;
@@ -2962,7 +2962,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 88 + 4 * v15++) &= v16;
+ *(&a1[2].field08 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -2972,7 +2972,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 116);
+ v21 = (int *)(&a1[2].field24 + 6 * v19);
while ( v19 < v20 )
{
*v21 = sub_D0FC34(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -2981,21 +2981,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 368);
+ p_field08 = (int *)&a1[9].field08;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D0FC6C(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D0FC6C(a1: v4[54], a2: j) & 7;
+ *p_field08 = sub_D0FC6C(a1: v4[99], a2: j) & 1;
+ p_field08[1] = sub_D0FC6C(a1: v4[54], a2: j) & 7;
v24 = sub_D0FCA4(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field08[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field08;
+ p_field08 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 452) = 1 << (j & 0x1F);
+ *(&a1[11].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D0FC14(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -3022,22 +3022,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 376);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 456);
- v40 = (_DWORD *)(v38 + 464);
- v41 = (_DWORD *)(v38 + 460);
+ p_field10 = &a1[9].field10;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 114;
+ v40 = v38 + 116;
+ v41 = v38 + 115;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field10 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field10 += 3;
--v36;
}
}
@@ -3050,26 +3050,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 124);
+ p_field04 = &a1[3].field04;
while ( v32 != 0 )
{
--v32;
- if ( *v33 == v31 )
+ if ( *p_field04 == v31 )
{
- v33[1] = v30;
- v33[2] = v31;
- v33[3] = 1;
+ p_field04[1] = v30;
+ p_field04[2] = v31;
+ p_field04[3] = 1;
}
- v33 += 6;
+ p_field04 += 6;
}
}
}
- v42 = (unsigned int *)(a1 + 564);
+ v42 = &a1[14].field04;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D0FD28(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
*v42 = v44 & 1;
v42[1] = v45;
@@ -5623,8 +5623,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C6C)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05C6C((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D089CC + 4), a3: v5) << 31 != 0 )
{
@@ -5678,7 +5677,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C6C)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D05C6C((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D089CC;
@@ -5736,8 +5735,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D05C6C)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D05C6C((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -5773,14 +5771,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -5788,11 +5786,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -5803,7 +5801,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -5817,21 +5815,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D08CF4 + 3);
@@ -5853,7 +5851,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D08CF4 + 3);
@@ -5866,9 +5864,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -5885,7 +5883,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -5906,25 +5904,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D098D8;
- if ( *((_DWORD *)off_D098D8 + 1) <= v18 )
+ if ( *((_DWORD *)off_D098D8 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D098D8 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D098D8 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D098D8 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -5932,7 +5930,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05C6C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05C6C(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -5954,17 +5952,15 @@ LABEL_23:
switch ( sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D08CF8 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D05F44(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D05F44() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -5973,12 +5969,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -5990,7 +5986,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05C6C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05C6C(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -6010,22 +6006,22 @@ LABEL_23:
if ( sub_D0FC34(a1: 1, a2: *((_DWORD *)off_D08CF8 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05C6C)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05C6C(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D08CF8;
if ( sub_D0FC6C(a1: *((_DWORD *)off_D08CF8 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D0FC6C(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -6045,28 +6041,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[38];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -6074,13 +6070,13 @@ LABEL_85:
v17 = 0;
if ( (sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D0900C + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -6088,14 +6084,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -6103,11 +6099,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -6118,7 +6114,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -6132,21 +6128,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09020 + 3);
@@ -6168,7 +6163,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09020 + 3);
@@ -6181,9 +6176,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -6200,7 +6195,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -6221,33 +6216,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09020;
- if ( *((_DWORD *)off_D09020 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09020 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09020 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09020 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09020 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05CFC)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05CFC(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -6269,17 +6264,15 @@ LABEL_23:
switch ( sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D0900C + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D05F44(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D05F44() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -6288,12 +6281,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -6305,7 +6298,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05CFC)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05CFC(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -6325,22 +6318,22 @@ LABEL_23:
if ( sub_D0FC34(a1: 1, a2: *((_DWORD *)off_D0900C + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D05CFC)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D05CFC(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D0900C;
if ( sub_D0FC6C(a1: *((_DWORD *)off_D0900C + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D0FC6C(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -6360,40 +6353,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D0678C(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D0678C();
if ( v17 == 0 && (sub_D0FC34(a1: 0, a2: *((_DWORD *)off_D09324 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -9245,7 +9233,7 @@ int __fastcall j_sub_D07784_3(_DWORD *a1)
// attributes: thunk
int __fastcall j_sub_D07A8C_3(_DWORD *a1)
{
- return asd_get_link_caps_full_v2((int)a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D07BDC_1 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.8.222_bbc214c9.anon.c b/fw/decomp/asd_33.0.8.222_bbc214c9.anon.c
index e0fda8f..26327c2 100644
--- a/fw/decomp/asd_33.0.8.222_bbc214c9.anon.c
+++ b/fw/decomp/asd_33.0.8.222_bbc214c9.anon.c
@@ -77,13 +77,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_6(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -392,6 +385,13 @@ int __fastcall j_asd_link_reset_seq_12(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_15(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -510,6 +510,13 @@ int __fastcall j_asd_link_write_quad_6(int a1, _DWORD *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -559,13 +566,6 @@ int __fastcall j_asd_dio_enable_all_0(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_1(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_a(a1, a2, a3);
@@ -587,6 +587,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_write_quad_10(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -671,6 +678,13 @@ int sub_D145DA()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D05D68()
{
return sub_D08320();
@@ -769,6 +783,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -825,13 +846,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_13(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_connector_program_seq(unsigned int a1)
{
return asd_connector_program_seq(a1);
@@ -958,13 +972,6 @@ int sub_D02D54()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full(int a1)
-{
- return asd_get_link_caps_full(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_pair_D49838_3(_DWORD *a1)
{
return asd_get_pair_D49838(a1);
@@ -1020,6 +1027,13 @@ int __fastcall j_asd_link_wait_and_set_10(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1041,6 +1055,13 @@ int __fastcall j_asd_dio_set_pair_4(unsigned int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_14(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg4248C_half_0(int a1, int a2)
{
return asd_link_set_reg4248C_half(a1, a2);
@@ -1306,13 +1327,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_4(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -1411,6 +1425,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D14714()
{
return sub_D15720();
@@ -1509,13 +1530,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D149FC()
{
return sub_D15420();
@@ -1621,6 +1635,13 @@ int __fastcall j_asd_encoder_query(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D06068()
{
return sub_D0A3C4();
@@ -1859,6 +1880,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1935,6 +1963,13 @@ int sub_D15720()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D059CC()
{
return sub_D073F0();
@@ -2082,13 +2117,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall sub_D145F0(unsigned int a1)
{
return sub_D14E9C(a1);
@@ -2228,6 +2256,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2263,6 +2298,13 @@ int __fastcall j_asd_link_read_pair_regs_5(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_1(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D04070(int a1)
{
return sub_D070D8(a1);
@@ -2333,13 +2375,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2417,13 +2452,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2606,13 +2634,6 @@ int __fastcall j_asd_link_read_pair_regs_2(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2620,13 +2641,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D05CE4()
{
return sub_D0A010();
@@ -2697,6 +2711,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_8(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2816,6 +2837,13 @@ int __fastcall j_asd_dio_current_instance_op_2(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -2886,6 +2914,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -2921,13 +2956,6 @@ int sub_D05D54()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D142CC()
{
return sub_D15420();
@@ -2970,6 +2998,13 @@ int __fastcall j_asd_connector_enable_5(unsigned int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D04058()
{
return sub_D0697C();
@@ -3054,6 +3089,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D03084(int a1)
{
return sub_D06A64(a1);
@@ -3194,13 +3236,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3271,6 +3306,13 @@ int __fastcall sub_D04CBE(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3334,13 +3376,6 @@ int __fastcall j_asd_link_program_timing_12(int a1, unsigned __int8 *a2, unsigne
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_11(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3396,13 +3431,6 @@ int sub_D059A4()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3459,6 +3487,13 @@ BOOL __fastcall j_asd_svc_sub_2794()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_ready_full_check_17(int a1)
{
return asd_link_ready_full_check(a1);
@@ -3578,13 +3613,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D035F8(int a1, int a2, int a3)
{
return sub_D06C48(a1, a2, a3);
@@ -3613,13 +3641,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_write_block_paged_0(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -3718,13 +3739,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_3(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -3746,16 +3760,16 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_pair_2(unsigned int a1, char *a2, _BYTE *a3)
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
{
- return asd_dio_read_pair(a1, a2, a3);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
+int __fastcall j_asd_dio_read_pair_2(unsigned int a1, char *a2, _BYTE *a3)
{
- return asd_dio_read_block(a1, a2);
+ return asd_dio_read_pair(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -3928,13 +3942,6 @@ int __fastcall j_asd_dio_current_instance_op_1(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_14(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4033,13 +4040,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D1415A()
{
return sub_D14E9C();
@@ -4089,6 +4089,13 @@ int __fastcall j_asd_write_block_paged_13(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
BOOL __fastcall j_asd_dio_idle_check_2(unsigned int a1)
{
return asd_dio_idle_check(a1);
@@ -4138,13 +4145,6 @@ int __fastcall j_asd_build_link_map_full_0(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_reset_seq_15(__int64 a1, int a2, int a3)
{
return asd_link_reset_seq(a1, a2, a3);
@@ -4173,13 +4173,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_link_caps_full_v3(int a1)
{
return asd_get_link_caps_full_v3(a1);
@@ -4439,6 +4432,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4481,13 +4481,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04374(int a1, int a2, int a3)
{
return sub_D06C48(a1, a2, a3);
@@ -4614,13 +4607,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4733,6 +4719,13 @@ int __fastcall j_asd_get_pair_D49838_7(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_8(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -4745,6 +4738,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int __fastcall sub_D142D8(unsigned int a1, int a2, unsigned __int8 *a3)
{
diff --git a/fw/decomp/asd_33.0.8.222_bbc214c9.c b/fw/decomp/asd_33.0.8.222_bbc214c9.c
index caf70b8..bd7e556 100644
--- a/fw/decomp/asd_33.0.8.222_bbc214c9.c
+++ b/fw/decomp/asd_33.0.8.222_bbc214c9.c
@@ -1891,27 +1891,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D15478 + 2) <= a2 )
return 2;
v4 = sub_D0EFF4(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D1547C + 4 * a2);
result = 0;
@@ -1919,28 +1919,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2766,9 +2766,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2788,7 +2788,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2796,13 +2796,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D07D84;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D07D84 + 4), a3: v5) << 31 != 0 )
{
@@ -2818,7 +2818,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -2826,7 +2826,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D07FD8;
if ( sub_D10D68(a1: *((_DWORD *)off_D07FD8 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -2845,7 +2845,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D16088(a1: v23[101], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D07D84;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D07D84 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -2869,10 +2869,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D08074;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08074 + 41), a3: v5);
@@ -2881,7 +2881,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D08074;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D08074 + 86), a3: v5);
@@ -2893,7 +2893,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D08074;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08074 + 59), a3: v5);
@@ -2902,9 +2902,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D08C2C;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08C2C + 59), a3: v5);
@@ -3290,7 +3290,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=MNEM size=696] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3299,46 +3299,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field18; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[9]; // [sp+8h] [bp-24h] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field20; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[9]; // [sp+8h] [bp-24h] BYREF
- bzero_core(result: v46, a2: 0x24u);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x24u);
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A00C;
v3 = 0;
@@ -3347,43 +3350,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A00C + 3);
v8 = *((_QWORD *)off_D0A00C + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A00C + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A00C + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0F3C4() == 0 )
+ if ( sub_D0F3C4(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0F3C4() == 0 )
+ v11 = _13B74;
+ if ( sub_D0F3C4(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 8;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 8;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 8 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D09720(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D09720();
+ if ( v17 != 0 )
{
- if ( sub_D0F3C4() == 0 )
+ if ( sub_D0F3C4(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 104) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0F3C4() == 0 )
+ if ( sub_D0F3C4(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[89] = 1;
+ v19[90] = v6;
}
}
}
@@ -3391,121 +3400,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field18 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 140);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 140);
+ while ( v26 < v27 )
{
- if ( sub_D0F47C(a1: v21) == 0 )
+ if ( sub_D0F47C(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0F47C(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0F47C(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 464);
- for ( j = 0; ; ++j )
+ p_field18 = (int *)&a1[11].field18;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0F47C(a1: v26) == 0 )
+ if ( sub_D0F47C(a1: v33) == 0 )
return 44;
- v27 = sub_D10D68(a1: v4[99], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0F47C(a1: v27) == 0 )
+ v34 = sub_D10D68(a1: v4[99], a2: i) & 1;
+ *p_field18 = v34;
+ if ( sub_D0F47C(a1: v34) == 0 )
return 44;
- v28 = sub_D10D68(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0F47C(a1: v28) == 0 )
+ v35 = sub_D10D68(a1: v4[54], a2: i) & 7;
+ p_field18[1] = v35;
+ if ( sub_D0F47C(a1: v35) == 0 )
return 44;
- v29 = sub_D10DD8(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D10DD8(a1: v4[55], a2: i) & 7;
+ p_field18[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 572) = 1 << j;
+ v37 = *p_field18;
+ p_field18 += 3;
+ if ( v37 == 1 )
+ *(&a1[14].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field20 = (unsigned int)&a1[11].field20;
+ while ( v41 != v40 )
{
- if ( sub_D0F3C4() == 0 )
+ if ( sub_D0F3C4(a1: p_field20, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D11178(a1: v4[116], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field20 = sub_D11178(a1: v4[116], a2: v41);
+ v39 = (unsigned int *)(p_field20 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 576);
- v42 = (_DWORD *)(v40 + 584);
- v43 = (_DWORD *)(v40 + 580);
- v44 = (_DWORD *)(a1 + 472);
- while ( v39 != 0 )
+ p_field20 = (p_field20 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field20;
+ v45 = v44 + 144;
+ v46 = v44 + 146;
+ v47 = v44 + 145;
+ v39 = &a1[11].field20;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field20 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field20 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field20;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 160);
- while ( v36 != 0 )
+ p_field20 = (p_field20 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[4];
+ while ( v39 != nullptr )
{
- --v36;
- if ( *(v37 - 3) == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)(field0C - 12) == p_field20 )
{
- *(v37 - 2) = k;
- *(v37 - 1) = v35;
- *v37 = 1;
+ *(_DWORD *)(field0C - 8) = v41;
+ *(_DWORD *)(field0C - 4) = p_field20;
+ *(_DWORD *)field0C = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=764] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3515,10 +3534,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3527,27 +3546,27 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field18; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ struct asd_link_caps *v33; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field20; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
- unsigned int *v42; // r4
+ unsigned int *v41; // r4
+ unsigned int *p_field24; // r4
unsigned int m; // r5
unsigned int v44; // r0
unsigned int v45; // r1
@@ -3557,7 +3576,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[9]; // [sp+18h] [bp-24h] BYREF
bzero_core(result: v50, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D09A30;
v3 = 0;
@@ -3566,20 +3585,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D09A30 + 3);
v8 = *((_QWORD *)off_D09A30 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D09A30 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D09A30 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 8;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 8 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3587,12 +3606,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[37];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field18 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 89) = 1;
+ *((_DWORD *)v13 + 90) = v6;
}
}
v3 += 6;
@@ -3604,7 +3623,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ *(&a1[2].field18 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3614,7 +3633,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 140);
+ v21 = (int *)(&a1[3].field14 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3623,21 +3642,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 464);
+ p_field18 = (int *)&a1[11].field18;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D10D68(a1: v4[99], a2: j) & 1;
- v22[1] = sub_D10D68(a1: v4[54], a2: j) & 7;
+ *p_field18 = sub_D10D68(a1: v4[99], a2: j) & 1;
+ p_field18[1] = sub_D10D68(a1: v4[54], a2: j) & 7;
v24 = sub_D10DD8(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field18;
+ p_field18 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 572) = 1 << (j & 0x1F);
+ *(&a1[14].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D10CA4(a1: v4[103]);
v47 = (v26 & 8) != 0;
@@ -3664,22 +3683,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 472);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 576);
- v40 = (_DWORD *)(v38 + 584);
- v41 = (_DWORD *)(v38 + 580);
+ p_field20 = &a1[11].field20;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 144;
+ v40 = v38 + 146;
+ v41 = v38 + 145;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field20 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field20 += 3;
--v36;
}
}
@@ -3692,31 +3711,31 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 160);
+ v33 = a1 + 4;
while ( v32 != 0 )
{
--v32;
- if ( *(v33 - 3) == v31 )
+ if ( v33[-1].field1C == v31 )
{
- *(v33 - 2) = v30;
- *(v33 - 1) = v31;
- *v33 = 1;
+ v33[-1].field20 = v30;
+ v33[-1].field24 = v31;
+ v33->unk00 = 1;
}
- v33 += 6;
+ v33 = (struct asd_link_caps *)((char *)v33 + 24);
}
}
}
- v42 = (unsigned int *)(a1 + 716);
+ p_field24 = &a1[17].field24;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D10F04(a1: v4[102], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
- *v42 = v44 & 1;
- v42[1] = v45;
- v42[2] = m;
- v42 += 3;
+ *p_field24 = v44 & 1;
+ p_field24[1] = v45;
+ p_field24[2] = m;
+ p_field24 += 3;
}
return 0;
}
@@ -6860,8 +6879,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D062E4)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D062E4((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D090DC + 4), a3: v5) << 31 != 0 )
{
@@ -6915,7 +6933,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D062E4)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D062E4((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D090DC;
@@ -6973,8 +6991,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D062E4)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D062E4((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -7010,14 +7027,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7025,11 +7042,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7040,7 +7057,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7054,21 +7071,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09404 + 3);
@@ -7090,7 +7107,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09404 + 3);
@@ -7103,9 +7120,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7122,7 +7139,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7143,25 +7160,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D0A00C;
- if ( *((_DWORD *)off_D0A00C + 1) <= v18 )
+ if ( *((_DWORD *)off_D0A00C + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0A00C + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A00C + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A00C + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -7169,7 +7186,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062E4)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D062E4(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7191,17 +7208,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09408 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D066A4(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D066A4() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7210,12 +7225,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7227,7 +7242,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062E4)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D062E4(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7247,22 +7262,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09408 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D062E4)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D062E4(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D09408;
if ( sub_D10D68(a1: *((_DWORD *)off_D09408 + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10D68(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -7282,28 +7297,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[39];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -7311,13 +7326,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0971C + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7325,14 +7340,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7340,11 +7355,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7355,7 +7370,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7369,21 +7384,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09730 + 3);
@@ -7405,7 +7419,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09730 + 3);
@@ -7418,9 +7432,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7437,7 +7451,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7458,33 +7472,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09730;
- if ( *((_DWORD *)off_D09730 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09730 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09730 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09730 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09730 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06374)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06374(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7506,17 +7520,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0971C + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D066A4(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D066A4() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7525,12 +7537,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7542,7 +7554,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06374)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06374(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7562,22 +7574,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D0971C + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06374)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06374(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D0971C;
if ( sub_D10D68(a1: *((_DWORD *)off_D0971C + 99), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D10D68(a1: v40[100], a2: HIDWORD(v5)) & 7;
@@ -7597,40 +7609,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D06EEC(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D06EEC();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A34 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -11420,7 +11427,7 @@ int __fastcall j_sub_D09D60(int a1, int a2, int a3)
{
int v3; // r3
- return asd_program_link_by_signal_v2(a1, a2, a3, a4: v3);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, a2, a3, a4: v3);
}
/* ==== j_sub_D0B560_0 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.8.235_64e420e4.anon.c b/fw/decomp/asd_33.0.8.235_64e420e4.anon.c
index 7830525..a46e850 100644
--- a/fw/decomp/asd_33.0.8.235_64e420e4.anon.c
+++ b/fw/decomp/asd_33.0.8.235_64e420e4.anon.c
@@ -84,13 +84,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D050CA(int a1)
{
return sub_D0708C(a1);
@@ -364,6 +357,13 @@ int sub_D14CA0()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_15(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -462,6 +462,13 @@ int __fastcall sub_D0440C(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -511,16 +518,16 @@ int __fastcall j_asd_dio_enable_all_0(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_1(int a1, int a2, __int16 a3)
+int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
+ return asd_link_query_a(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
+int __fastcall j_asd_encoder_enable_seq_v3_2(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- return asd_link_query_a(a1, a2, a3);
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -546,6 +553,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_write_quad_10(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -637,6 +651,13 @@ int __fastcall j_asd_session_op57_invoke_2()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D14F98()
{
return sub_D15E9C();
@@ -756,6 +777,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -805,13 +833,6 @@ int __fastcall j_asd_link_reset_seq(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_connector_program_seq(unsigned int a1)
{
return asd_connector_program_seq(a1);
@@ -980,13 +1001,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_10(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full(int a1)
-{
- return asd_get_link_caps_full(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_pair_D49838_3(_DWORD *a1)
{
return asd_get_pair_D49838(a1);
@@ -1043,6 +1057,13 @@ int __fastcall sub_D03E54(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1407,13 +1428,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_4(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -1490,6 +1504,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
}
/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
int sub_D161EC()
{
return 0;
@@ -1588,13 +1609,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_16(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -1693,6 +1707,13 @@ int __fastcall j_asd_session_op57_invoke_3()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D14E40()
{
JUMPOUT(0xD156CC);
@@ -1973,6 +1994,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -2071,6 +2099,13 @@ int __fastcall j_asd_link_program_timing_16(int a1, unsigned __int8 *a2, unsigne
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D02DB0()
{
return sub_D07880();
@@ -2217,13 +2252,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_query_link_config_6(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -2399,6 +2427,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2441,6 +2476,13 @@ int __fastcall j_asd_link_read_pair_regs_5(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_1(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D147DC()
{
JUMPOUT(0xD15614);
@@ -2525,13 +2567,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2595,13 +2630,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2791,13 +2819,6 @@ int sub_D02D94()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2805,13 +2826,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04D96()
{
return sub_D06EA8();
@@ -2874,6 +2888,20 @@ int __fastcall j_asd_reg_read_13B74_cfg3_8(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v4(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2993,6 +3021,13 @@ int __fastcall j_asd_dio_current_instance_op_2(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -3027,13 +3062,6 @@ int __fastcall j_asd_link_program_timing_13(int a1, unsigned __int8 *a2, unsigne
}
/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v4(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
int sub_D06AFC()
{
return 7;
@@ -3104,6 +3132,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -3152,13 +3187,6 @@ int sub_D1613C()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
return asd_link_train_status(a1);
@@ -3173,23 +3201,23 @@ int __fastcall j_asd_link_read_pair_regs_14(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_2(int a1, int a2, __int16 a3)
+int __fastcall j_asd_reg_read_13D24_cfg0_1(unsigned int a1, int a2, __int16 a3)
{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
+ return asd_reg_read_13D24_cfg0(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_reg_read_13D24_cfg0_1(unsigned int a1, int a2, __int16 a3)
+int __fastcall j_asd_connector_enable_5(unsigned int a1)
{
- return asd_reg_read_13D24_cfg0(a1, a2, a3);
+ return asd_connector_enable(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_connector_enable_5(unsigned int a1)
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
{
- return asd_connector_enable(a1);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
@@ -3250,6 +3278,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0_8(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -3425,13 +3460,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3516,6 +3544,13 @@ int sub_D14E14()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3593,13 +3628,6 @@ int __fastcall j_asd_pipe_lookup_17(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_11(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3621,13 +3649,6 @@ int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3677,6 +3698,13 @@ int sub_D02B5C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D152AA()
{
JUMPOUT(0xD156CC);
@@ -3810,13 +3838,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_4(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3845,13 +3866,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_write_block_paged_0(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -3971,13 +3985,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D050F6(int a1)
{
return sub_D07880(a1);
@@ -3999,6 +4006,13 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0410C()
{
return sub_D06EA8();
@@ -4020,13 +4034,6 @@ int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_pipe_lookup_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_pipe_lookup(a1, a2, a3);
@@ -4272,13 +4279,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4320,6 +4320,13 @@ int __fastcall j_asd_write_block_paged_13(int a1, int a2, int a3)
}
/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
int sub_D0732C()
{
return 7;
@@ -4376,13 +4383,6 @@ int __fastcall j_asd_build_link_map_full_0(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_reset_seq_15(__int64 a1, int a2, int a3)
{
return asd_link_reset_seq(a1, a2, a3);
@@ -4404,13 +4404,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_link_caps_full_v3(int a1)
{
return asd_get_link_caps_full_v3(a1);
@@ -4691,6 +4684,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4719,13 +4719,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4803,13 +4796,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4922,6 +4908,13 @@ int __fastcall j_asd_get_pair_D49838_7(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_8(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -4934,6 +4927,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int __fastcall sub_D104D6(int a1, _DWORD *a2, unsigned int a3, unsigned int a4)
{
diff --git a/fw/decomp/asd_33.0.8.235_64e420e4.c b/fw/decomp/asd_33.0.8.235_64e420e4.c
index e7f2137..d8d3158 100644
--- a/fw/decomp/asd_33.0.8.235_64e420e4.c
+++ b/fw/decomp/asd_33.0.8.235_64e420e4.c
@@ -2081,27 +2081,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D15CD0 + 2) <= a2 )
return 2;
v4 = sub_D0FA54(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D15CD4 + 4 * a2);
result = 0;
@@ -2109,28 +2109,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2966,9 +2966,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2988,7 +2988,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2996,13 +2996,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D081C8;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D081C8 + 4), a3: v5) << 31 != 0 )
{
@@ -3018,7 +3018,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -3026,7 +3026,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D0841C;
if ( sub_D1184C(a1: *((_DWORD *)off_D0841C + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -3045,7 +3045,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D16A90(a1: v23[105], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D081C8;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D081C8 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -3069,10 +3069,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D084B8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D084B8 + 41), a3: v5);
@@ -3081,7 +3081,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D084B8;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D084B8 + 86), a3: v5);
@@ -3093,7 +3093,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D084B8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D084B8 + 59), a3: v5);
@@ -3102,9 +3102,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D090B4;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D090B4 + 59), a3: v5);
@@ -3528,7 +3528,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=MNEM size=696] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3537,46 +3537,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field18; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[9]; // [sp+8h] [bp-24h] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field20; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[9]; // [sp+8h] [bp-24h] BYREF
- bzero_core(result: v46, a2: 0x24u);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x24u);
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A660;
v3 = 0;
@@ -3585,43 +3588,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A660 + 3);
v8 = *((_QWORD *)off_D0A660 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A660 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A660 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0FE1C() == 0 )
+ if ( sub_D0FE1C(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0FE1C() == 0 )
+ v11 = _13B74;
+ if ( sub_D0FE1C(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 8;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 8;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 8 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D09D78(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D09D78();
+ if ( v17 != 0 )
{
- if ( sub_D0FE1C() == 0 )
+ if ( sub_D0FE1C(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 104) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0FE1C() == 0 )
+ if ( sub_D0FE1C(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[89] = 1;
+ v19[90] = v6;
}
}
}
@@ -3629,121 +3638,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field18 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 140);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 140);
+ while ( v26 < v27 )
{
- if ( sub_D0FED4(a1: v21) == 0 )
+ if ( sub_D0FED4(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0FED4(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0FED4(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 464);
- for ( j = 0; ; ++j )
+ p_field18 = (int *)&a1[11].field18;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0FED4(a1: v26) == 0 )
+ if ( sub_D0FED4(a1: v33) == 0 )
return 44;
- v27 = sub_D1184C(a1: v4[103], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0FED4(a1: v27) == 0 )
+ v34 = sub_D1184C(a1: v4[103], a2: i) & 1;
+ *p_field18 = v34;
+ if ( sub_D0FED4(a1: v34) == 0 )
return 44;
- v28 = sub_D1184C(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0FED4(a1: v28) == 0 )
+ v35 = sub_D1184C(a1: v4[54], a2: i) & 7;
+ p_field18[1] = v35;
+ if ( sub_D0FED4(a1: v35) == 0 )
return 44;
- v29 = sub_D118BC(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D118BC(a1: v4[55], a2: i) & 7;
+ p_field18[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 572) = 1 << j;
+ v37 = *p_field18;
+ p_field18 += 3;
+ if ( v37 == 1 )
+ *(&a1[14].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field20 = (unsigned int)&a1[11].field20;
+ while ( v41 != v40 )
{
- if ( sub_D0FE1C() == 0 )
+ if ( sub_D0FE1C(a1: p_field20, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D11CD4(a1: v4[120], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field20 = sub_D11CD4(a1: v4[120], a2: v41);
+ v39 = (unsigned int *)(p_field20 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 576);
- v42 = (_DWORD *)(v40 + 584);
- v43 = (_DWORD *)(v40 + 580);
- v44 = (_DWORD *)(a1 + 472);
- while ( v39 != 0 )
+ p_field20 = (p_field20 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field20;
+ v45 = v44 + 144;
+ v46 = v44 + 146;
+ v47 = v44 + 145;
+ v39 = &a1[11].field20;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field20 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field20 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field20;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 160);
- while ( v36 != 0 )
+ p_field20 = (p_field20 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[4];
+ while ( v39 != nullptr )
{
- --v36;
- if ( *(v37 - 3) == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)(field0C - 12) == p_field20 )
{
- *(v37 - 2) = k;
- *(v37 - 1) = v35;
- *v37 = 1;
+ *(_DWORD *)(field0C - 8) = v41;
+ *(_DWORD *)(field0C - 4) = p_field20;
+ *(_DWORD *)field0C = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=764] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3753,10 +3772,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3765,27 +3784,27 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field18; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ struct asd_link_caps *v33; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field20; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
- unsigned int *v42; // r4
+ unsigned int *v41; // r4
+ unsigned int *p_field24; // r4
unsigned int m; // r5
unsigned int v44; // r0
unsigned int v45; // r1
@@ -3795,7 +3814,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[9]; // [sp+18h] [bp-24h] BYREF
bzero_core(result: v50, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A088;
v3 = 0;
@@ -3804,20 +3823,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A088 + 3);
v8 = *((_QWORD *)off_D0A088 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A088 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A088 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 8;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 8 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3825,12 +3844,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[39];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field18 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 89) = 1;
+ *((_DWORD *)v13 + 90) = v6;
}
}
v3 += 6;
@@ -3842,7 +3861,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ *(&a1[2].field18 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3852,7 +3871,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 140);
+ v21 = (int *)(&a1[3].field14 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3861,21 +3880,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 464);
+ p_field18 = (int *)&a1[11].field18;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D1184C(a1: v4[103], a2: j) & 1;
- v22[1] = sub_D1184C(a1: v4[54], a2: j) & 7;
+ *p_field18 = sub_D1184C(a1: v4[103], a2: j) & 1;
+ p_field18[1] = sub_D1184C(a1: v4[54], a2: j) & 7;
v24 = sub_D118BC(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field18;
+ p_field18 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 572) = 1 << (j & 0x1F);
+ *(&a1[14].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D11788(a1: v4[107]);
v47 = (v26 & 8) != 0;
@@ -3902,22 +3921,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 472);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 576);
- v40 = (_DWORD *)(v38 + 584);
- v41 = (_DWORD *)(v38 + 580);
+ p_field20 = &a1[11].field20;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 144;
+ v40 = v38 + 146;
+ v41 = v38 + 145;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field20 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field20 += 3;
--v36;
}
}
@@ -3930,31 +3949,31 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 160);
+ v33 = a1 + 4;
while ( v32 != 0 )
{
--v32;
- if ( *(v33 - 3) == v31 )
+ if ( v33[-1].field1C == v31 )
{
- *(v33 - 2) = v30;
- *(v33 - 1) = v31;
- *v33 = 1;
+ v33[-1].field20 = v30;
+ v33[-1].field24 = v31;
+ v33->unk00 = 1;
}
- v33 += 6;
+ v33 = (struct asd_link_caps *)((char *)v33 + 24);
}
}
}
- v42 = (unsigned int *)(a1 + 716);
+ p_field24 = &a1[17].field24;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D119E8(a1: v4[106], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
- *v42 = v44 & 1;
- v42[1] = v45;
- v42[2] = m;
- v42 += 3;
+ *p_field24 = v44 & 1;
+ p_field24[1] = v45;
+ p_field24[2] = m;
+ p_field24 += 3;
}
return 0;
}
@@ -7286,8 +7305,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D093D4 + 4), a3: v5) << 31 != 0 )
{
@@ -7341,7 +7359,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D093D4;
@@ -7399,8 +7417,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -7436,14 +7453,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7451,11 +7468,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7466,7 +7483,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7480,21 +7497,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D096FC + 3);
@@ -7516,7 +7533,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D096FC + 3);
@@ -7529,9 +7546,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7548,7 +7565,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7569,25 +7586,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D0A3A0;
- if ( *((_DWORD *)off_D0A3A0 + 1) <= v18 )
+ if ( *((_DWORD *)off_D0A3A0 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0A3A0 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A3A0 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A3A0 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -7595,7 +7612,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7617,17 +7634,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09700 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7636,12 +7651,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7653,7 +7668,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7673,22 +7688,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09700 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D09700;
if ( sub_D1184C(a1: *((_DWORD *)off_D09700 + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D1184C(a1: v40[104], a2: HIDWORD(v5)) & 7;
@@ -7708,28 +7723,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[41];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -7737,13 +7752,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A18 + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7751,14 +7766,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7766,11 +7781,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7781,7 +7796,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7795,21 +7810,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09A14 + 3);
@@ -7831,7 +7845,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09A14 + 3);
@@ -7844,9 +7858,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7863,7 +7877,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7884,33 +7898,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09A14;
- if ( *((_DWORD *)off_D09A14 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09A14 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09A14 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09A14 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09A14 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7932,17 +7946,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A18 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7951,12 +7963,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7968,7 +7980,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7988,22 +8000,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09A18 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D09A18;
if ( sub_D1184C(a1: *((_DWORD *)off_D09A18 + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D1184C(a1: v40[104], a2: HIDWORD(v5)) & 7;
@@ -8023,40 +8035,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D07330(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D07330();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -8064,14 +8071,14 @@ LABEL_84:
/* ==== asd_program_link_by_signal_v4 [tier=MNEM size=854] ==== */
// Fourth ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -8079,15 +8086,15 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
- unsigned int v25; // r2
- int v26; // r9
+ unsigned int field34; // r2
+ unsigned int field30; // r9
_DWORD *v28; // r7
int v29; // r6
int v30; // r0
@@ -8095,7 +8102,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
int v32; // r0
int v33; // r1
__int16 v34; // r2
- int v35; // r0
+ unsigned int v35; // r0
_DWORD *v36; // r7
int v37; // r6
int v38; // r0
@@ -8106,24 +8113,23 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
BOOL v43; // r0
int v44; // r1
__int16 v45; // r2
- int v46; // r0
- unsigned int v47; // r6
- int v48; // r0
- unsigned int v49; // r0
- int v50; // r6
+ unsigned int v46; // r0
+ unsigned int field24; // r6
+ unsigned int v48; // r0
+ int v49; // r6
+ int v50; // r0
int v51; // r0
int v52; // r0
- int v53; // r0
- int v54; // [sp+0h] [bp-8h] BYREF
- int v55; // [sp+4h] [bp-4h] BYREF
+ int v53; // [sp+0h] [bp-8h] BYREF
+ int v54; // [sp+4h] [bp-4h] BYREF
- v54 = a3;
- v55 = a4;
- if ( a1 == 0 )
+ v53 = a3;
+ v54 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D0A9BC + 3);
@@ -8145,7 +8151,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09D88 + 3);
@@ -8158,9 +8164,9 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -8177,7 +8183,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -8198,44 +8204,44 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09D88;
- if ( *((_DWORD *)off_D09D88 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09D88 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09D88 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_DWORD *)(a1 + 52);
- v26 = *(_DWORD *)(a1 + 48);
- if ( v25 == 2 )
+ field34 = a1->field34;
+ field30 = a1->field30;
+ if ( field34 == 2 )
{
- v25 = *((_DWORD *)off_D09D88 + 8);
- if ( v25 <= v22 )
+ field34 = *((_DWORD *)off_D09D88 + 8);
+ if ( field34 <= field38 )
return 2;
}
+ v53 = 255;
v54 = 255;
- v55 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 4), a3: v5) << 31 != 0 )
{
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v28 = off_D09D74;
v29 = sub_D11638(a1: *((_DWORD *)off_D09D74 + 99), a2: HIDWORD(v5)) & 7;
@@ -8251,17 +8257,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 4;
goto LABEL_71;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -8270,12 +8274,12 @@ LABEL_23:
goto LABEL_72;
case 2:
v35 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_71;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 5;
goto LABEL_71;
}
@@ -8287,11 +8291,11 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v36 = off_D09D74;
v37 = sub_D11638(a1: *((_DWORD *)off_D09D74 + 100), a2: HIDWORD(v5)) & 7;
@@ -8307,45 +8311,45 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09D74 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v35 = 3;
LABEL_71:
- *(_DWORD *)(a1 + 64) = v35;
+ a1->field40 = v35;
goto LABEL_72;
}
return 8;
}
- if ( *(_DWORD *)(a1 + 32) == 0
+ if ( a1->field20 == 0
|| (v41 = *((int (__fastcall **)(_DWORD))off_D09D88 + 42)) != nullptr && v41(a1: v5) != 0
- || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: v25) != 0 )
+ || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: field34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 4;
+ a1->field4C = 3;
+ a1->field40 = 4;
}
else
{
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v42 = off_D09D74;
- if ( sub_D1184C(a1: *((_DWORD *)off_D09D74 + 103), a2: HIDWORD(v5)) << 31 == 0 || *(_DWORD *)(a1 + 32) != 0 )
+ if ( sub_D1184C(a1: *((_DWORD *)off_D09D74 + 103), a2: HIDWORD(v5)) << 31 == 0 || a1->field20 != 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
- if ( v26 == 1 )
+ a1->field4C = 3;
+ a1->field40 = 5;
+ if ( field30 == 1 )
{
- v50 = sub_D1184C(a1: v42[104], a2: HIDWORD(v5)) & 7;
- v51 = sub_D116A8(a1: v42[98], a2: v50);
- sub_D1696C(a1: v42[98], a2: v50, a3: v51 | 0x80);
- v52 = v42[105];
- if ( v52 != 0 )
+ v49 = sub_D1184C(a1: v42[104], a2: HIDWORD(v5)) & 7;
+ v50 = sub_D116A8(a1: v42[98], a2: v49);
+ sub_D1696C(a1: v42[98], a2: v49, a3: v50 | 0x80);
+ v51 = v42[105];
+ if ( v51 != 0 )
{
- v53 = sub_D1184C(a1: v52, a2: v50);
- sub_D16A90(a1: v42[105], a2: v50, a3: v53 | 1);
+ v52 = sub_D1184C(a1: v51, a2: v49);
+ sub_D16A90(a1: v42[105], a2: v49, a3: v52 | 1);
}
}
LABEL_72:
@@ -8355,40 +8359,35 @@ LABEL_72:
v17 = v43;
v46 = 4;
LABEL_74:
- *(_DWORD *)(a1 + 68) = v46;
+ a1->field44 = v46;
return v17;
}
- v47 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- if ( v47 > 0x15 )
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFC | 2;
- *(_DWORD *)(a1 + 68) = v49;
- if ( v10 != 48 || *(_DWORD *)(a1 + 32) == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
+ v48 = a1->field44 & 0xFFFFFFFE;
+ if ( field24 > 0x15 )
+ v48 = a1->field44 & 0xFFFFFFFC | 2;
+ a1->field44 = v48;
+ if ( v10 != 48 || a1->field20 == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
return 0;
goto LABEL_89;
}
- *(_DWORD *)(a1 + 68) = 0;
- v48 = *(_DWORD *)(a1 + 32);
- if ( v48 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_connector_state_check(a1: v5, a2: v44, a3: v45) == 0 )
{
- v48 = asd_connector_state_check(a1: v5, a2: v44, a3: v45);
- if ( v48 == 0 )
- {
LABEL_89:
- *(_DWORD *)(a1 + 68) = 16;
- return 0;
- }
+ a1->field44 = 16;
+ return 0;
}
- if ( v47 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D07330(a1: v48, a2: v44);
+ v17 = sub_D07330();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A08C + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v47 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v46 = *(_DWORD *)(a1 + 68) | 2;
+ v46 = a1->field44 | 2;
goto LABEL_74;
}
return v17;
@@ -13792,7 +13791,7 @@ int __fastcall j_sub_D07D78_11(int a1, _BYTE *a2, _BYTE *a3)
{
int v3; // r3
- return asd_program_link_by_signal_v2(a1, (int)a2, (int)a3, a4: v3);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, (int)a2, (int)a3, a4: v3);
}
/* ==== j_sub_D07E10_17 [tier=EXACT size=4] ==== */
@@ -13851,7 +13850,7 @@ int __fastcall j_sub_D07F50_9(int a1, int a2)
// attributes: thunk
int __fastcall j_sub_D07F90(int a1, int a2, int a3)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D07F90_2 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.8.235_76e58ee4.anon.c b/fw/decomp/asd_33.0.8.235_76e58ee4.anon.c
index 8d95dba..fea8e1e 100644
--- a/fw/decomp/asd_33.0.8.235_76e58ee4.anon.c
+++ b/fw/decomp/asd_33.0.8.235_76e58ee4.anon.c
@@ -84,13 +84,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D050CA(int a1)
{
return sub_D0708C(a1);
@@ -371,6 +364,13 @@ int sub_D14CA0()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_15(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -469,6 +469,13 @@ int __fastcall sub_D0440C(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -518,16 +525,16 @@ int __fastcall j_asd_dio_enable_all_0(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_1(int a1, int a2, __int16 a3)
+int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
+ return asd_link_query_a(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
+int __fastcall j_asd_encoder_enable_seq_v3_2(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- return asd_link_query_a(a1, a2, a3);
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -553,6 +560,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_write_quad_10(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -644,6 +658,13 @@ int __fastcall j_asd_session_op57_invoke_2()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D14F98()
{
return sub_D15E9C();
@@ -763,6 +784,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -812,13 +840,6 @@ int __fastcall j_asd_link_reset_seq(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_connector_program_seq(unsigned int a1)
{
return asd_connector_program_seq(a1);
@@ -987,13 +1008,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_10(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full(int a1)
-{
- return asd_get_link_caps_full(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_pair_D49838_3(_DWORD *a1)
{
return asd_get_pair_D49838(a1);
@@ -1050,6 +1064,13 @@ int __fastcall sub_D03E54(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1414,13 +1435,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_4(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -1497,6 +1511,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
}
/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
int sub_D161EC()
{
return 0;
@@ -1595,13 +1616,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_16(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -1700,6 +1714,13 @@ int __fastcall j_asd_session_op57_invoke_3()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D14E40()
{
JUMPOUT(0xD156CC);
@@ -1980,6 +2001,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -2071,6 +2099,13 @@ int __fastcall j_asd_link_program_timing_16(int a1, unsigned __int8 *a2, unsigne
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D02DB0()
{
return sub_D07880();
@@ -2217,13 +2252,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_query_link_config_6(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -2399,6 +2427,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2441,6 +2476,13 @@ int __fastcall j_asd_link_read_pair_regs_5(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_1(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D147DC()
{
JUMPOUT(0xD15614);
@@ -2525,13 +2567,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2595,13 +2630,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2791,13 +2819,6 @@ int sub_D02D94()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2805,13 +2826,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04D96()
{
return sub_D06EA8();
@@ -2874,6 +2888,20 @@ int __fastcall j_asd_reg_read_13B74_cfg3_8(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v4(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2993,6 +3021,13 @@ int __fastcall j_asd_dio_current_instance_op_2(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -3027,13 +3062,6 @@ int __fastcall j_asd_link_program_timing_13(int a1, unsigned __int8 *a2, unsigne
}
/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v4(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
int sub_D06AFC()
{
return 7;
@@ -3104,6 +3132,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -3152,13 +3187,6 @@ int sub_D1613C()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
return asd_link_train_status(a1);
@@ -3173,23 +3201,23 @@ int __fastcall j_asd_link_read_pair_regs_14(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_2(int a1, int a2, __int16 a3)
+int __fastcall j_asd_reg_read_13D24_cfg0_1(unsigned int a1, int a2, __int16 a3)
{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
+ return asd_reg_read_13D24_cfg0(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_reg_read_13D24_cfg0_1(unsigned int a1, int a2, __int16 a3)
+int __fastcall j_asd_connector_enable_5(unsigned int a1)
{
- return asd_reg_read_13D24_cfg0(a1, a2, a3);
+ return asd_connector_enable(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_connector_enable_5(unsigned int a1)
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
{
- return asd_connector_enable(a1);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
@@ -3250,6 +3278,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0_8(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -3425,13 +3460,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_query_b_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_link_query_b(a1, a2, a3);
@@ -3516,6 +3544,13 @@ int sub_D14E14()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3593,13 +3628,6 @@ int __fastcall j_asd_pipe_lookup_17(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_11(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3621,13 +3649,6 @@ int __fastcall j_asd_link_query_b_2(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3677,6 +3698,13 @@ int sub_D02B5C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
void sub_D152AA()
{
JUMPOUT(0xD156CC);
@@ -3810,13 +3838,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_4(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3845,13 +3866,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_write_block_paged_0(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -3971,13 +3985,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D050F6(int a1)
{
return sub_D07880(a1);
@@ -3999,6 +4006,13 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0410C()
{
return sub_D06EA8();
@@ -4020,13 +4034,6 @@ int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_pipe_lookup_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_pipe_lookup(a1, a2, a3);
@@ -4272,13 +4279,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4320,6 +4320,13 @@ int __fastcall j_asd_write_block_paged_13(int a1, int a2, int a3)
}
/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
int sub_D0732C()
{
return 7;
@@ -4376,13 +4383,6 @@ int __fastcall j_asd_build_link_map_full_0(unsigned int *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_reset_seq_15(__int64 a1, int a2, int a3)
{
return asd_link_reset_seq(a1, a2, a3);
@@ -4404,13 +4404,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_link_caps_full_v3(int a1)
{
return asd_get_link_caps_full_v3(a1);
@@ -4691,6 +4684,13 @@ int __fastcall j_asd_pipe_enable_3(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4719,13 +4719,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4803,13 +4796,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4922,6 +4908,13 @@ int __fastcall j_asd_get_pair_D49838_7(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_8(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -4934,6 +4927,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int __fastcall sub_D104D6(int a1, _DWORD *a2, unsigned int a3, unsigned int a4)
{
diff --git a/fw/decomp/asd_33.0.8.235_76e58ee4.c b/fw/decomp/asd_33.0.8.235_76e58ee4.c
index 7a15c78..3f62836 100644
--- a/fw/decomp/asd_33.0.8.235_76e58ee4.c
+++ b/fw/decomp/asd_33.0.8.235_76e58ee4.c
@@ -2081,27 +2081,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=EXACT size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D15CD0 + 2) <= a2 )
return 2;
v4 = sub_D0FA54(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D15CD4 + 4 * a2);
result = 0;
@@ -2109,28 +2109,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2966,9 +2966,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=EXACT size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2988,7 +2988,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2996,13 +2996,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D081C8;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D081C8 + 4), a3: v5) << 31 != 0 )
{
@@ -3018,7 +3018,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -3026,7 +3026,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D0841C;
if ( sub_D1184C(a1: *((_DWORD *)off_D0841C + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -3045,7 +3045,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D16A90(a1: v23[105], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D081C8;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D081C8 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -3069,10 +3069,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D084B8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D084B8 + 41), a3: v5);
@@ -3081,7 +3081,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D084B8;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D084B8 + 86), a3: v5);
@@ -3093,7 +3093,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D084B8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D084B8 + 59), a3: v5);
@@ -3102,9 +3102,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D090B4;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D090B4 + 59), a3: v5);
@@ -3528,7 +3528,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=EXACT size=696] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3537,46 +3537,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field18; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[9]; // [sp+8h] [bp-24h] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field20; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[9]; // [sp+8h] [bp-24h] BYREF
- bzero_core(result: v46, a2: 0x24u);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x24u);
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A660;
v3 = 0;
@@ -3585,43 +3588,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A660 + 3);
v8 = *((_QWORD *)off_D0A660 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A660 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A660 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0FE1C() == 0 )
+ if ( sub_D0FE1C(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0FE1C() == 0 )
+ v11 = _13B74;
+ if ( sub_D0FE1C(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 8;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 8;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 8 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D09D78(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D09D78();
+ if ( v17 != 0 )
{
- if ( sub_D0FE1C() == 0 )
+ if ( sub_D0FE1C(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 104) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0FE1C() == 0 )
+ if ( sub_D0FE1C(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[89] = 1;
+ v19[90] = v6;
}
}
}
@@ -3629,121 +3638,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field18 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 140);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 140);
+ while ( v26 < v27 )
{
- if ( sub_D0FED4(a1: v21) == 0 )
+ if ( sub_D0FED4(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0FED4(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0FED4(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 464);
- for ( j = 0; ; ++j )
+ p_field18 = (int *)&a1[11].field18;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0FED4(a1: v26) == 0 )
+ if ( sub_D0FED4(a1: v33) == 0 )
return 44;
- v27 = sub_D1184C(a1: v4[103], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0FED4(a1: v27) == 0 )
+ v34 = sub_D1184C(a1: v4[103], a2: i) & 1;
+ *p_field18 = v34;
+ if ( sub_D0FED4(a1: v34) == 0 )
return 44;
- v28 = sub_D1184C(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0FED4(a1: v28) == 0 )
+ v35 = sub_D1184C(a1: v4[54], a2: i) & 7;
+ p_field18[1] = v35;
+ if ( sub_D0FED4(a1: v35) == 0 )
return 44;
- v29 = sub_D118BC(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D118BC(a1: v4[55], a2: i) & 7;
+ p_field18[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 572) = 1 << j;
+ v37 = *p_field18;
+ p_field18 += 3;
+ if ( v37 == 1 )
+ *(&a1[14].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field20 = (unsigned int)&a1[11].field20;
+ while ( v41 != v40 )
{
- if ( sub_D0FE1C() == 0 )
+ if ( sub_D0FE1C(a1: p_field20, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D11CD4(a1: v4[120], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field20 = sub_D11CD4(a1: v4[120], a2: v41);
+ v39 = (unsigned int *)(p_field20 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 576);
- v42 = (_DWORD *)(v40 + 584);
- v43 = (_DWORD *)(v40 + 580);
- v44 = (_DWORD *)(a1 + 472);
- while ( v39 != 0 )
+ p_field20 = (p_field20 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field20;
+ v45 = v44 + 144;
+ v46 = v44 + 146;
+ v47 = v44 + 145;
+ v39 = &a1[11].field20;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field20 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field20 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field20;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 160);
- while ( v36 != 0 )
+ p_field20 = (p_field20 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[4];
+ while ( v39 != nullptr )
{
- --v36;
- if ( *(v37 - 3) == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)(field0C - 12) == p_field20 )
{
- *(v37 - 2) = k;
- *(v37 - 1) = v35;
- *v37 = 1;
+ *(_DWORD *)(field0C - 8) = v41;
+ *(_DWORD *)(field0C - 4) = p_field20;
+ *(_DWORD *)field0C = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=EXACT size=764] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3753,10 +3772,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3765,27 +3784,27 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field18; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ struct asd_link_caps *v33; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field20; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
- unsigned int *v42; // r4
+ unsigned int *v41; // r4
+ unsigned int *p_field24; // r4
unsigned int m; // r5
unsigned int v44; // r0
unsigned int v45; // r1
@@ -3795,7 +3814,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[9]; // [sp+18h] [bp-24h] BYREF
bzero_core(result: v50, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A088;
v3 = 0;
@@ -3804,20 +3823,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A088 + 3);
v8 = *((_QWORD *)off_D0A088 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A088 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A088 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 8;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 8 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3825,12 +3844,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[39];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field18 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 89) = 1;
+ *((_DWORD *)v13 + 90) = v6;
}
}
v3 += 6;
@@ -3842,7 +3861,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ *(&a1[2].field18 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3852,7 +3871,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 140);
+ v21 = (int *)(&a1[3].field14 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3861,21 +3880,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 464);
+ p_field18 = (int *)&a1[11].field18;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D1184C(a1: v4[103], a2: j) & 1;
- v22[1] = sub_D1184C(a1: v4[54], a2: j) & 7;
+ *p_field18 = sub_D1184C(a1: v4[103], a2: j) & 1;
+ p_field18[1] = sub_D1184C(a1: v4[54], a2: j) & 7;
v24 = sub_D118BC(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field18;
+ p_field18 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 572) = 1 << (j & 0x1F);
+ *(&a1[14].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D11788(a1: v4[107]);
v47 = (v26 & 8) != 0;
@@ -3902,22 +3921,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 472);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 576);
- v40 = (_DWORD *)(v38 + 584);
- v41 = (_DWORD *)(v38 + 580);
+ p_field20 = &a1[11].field20;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 144;
+ v40 = v38 + 146;
+ v41 = v38 + 145;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field20 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field20 += 3;
--v36;
}
}
@@ -3930,31 +3949,31 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 160);
+ v33 = a1 + 4;
while ( v32 != 0 )
{
--v32;
- if ( *(v33 - 3) == v31 )
+ if ( v33[-1].field1C == v31 )
{
- *(v33 - 2) = v30;
- *(v33 - 1) = v31;
- *v33 = 1;
+ v33[-1].field20 = v30;
+ v33[-1].field24 = v31;
+ v33->unk00 = 1;
}
- v33 += 6;
+ v33 = (struct asd_link_caps *)((char *)v33 + 24);
}
}
}
- v42 = (unsigned int *)(a1 + 716);
+ p_field24 = &a1[17].field24;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D119E8(a1: v4[106], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
- *v42 = v44 & 1;
- v42[1] = v45;
- v42[2] = m;
- v42 += 3;
+ *p_field24 = v44 & 1;
+ p_field24[1] = v45;
+ p_field24[2] = m;
+ p_field24 += 3;
}
return 0;
}
@@ -7308,8 +7327,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D093D4 + 4), a3: v5) << 31 != 0 )
{
@@ -7363,7 +7381,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D093D4;
@@ -7421,8 +7439,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -7458,14 +7475,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=EXACT size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7473,11 +7490,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7488,7 +7505,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7502,21 +7519,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D096FC + 3);
@@ -7538,7 +7555,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D096FC + 3);
@@ -7551,9 +7568,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7570,7 +7587,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7591,25 +7608,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D0A3A0;
- if ( *((_DWORD *)off_D0A3A0 + 1) <= v18 )
+ if ( *((_DWORD *)off_D0A3A0 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0A3A0 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A3A0 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A3A0 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -7617,7 +7634,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7639,17 +7656,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09700 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7658,12 +7673,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7675,7 +7690,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7695,22 +7710,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09700 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D09700;
if ( sub_D1184C(a1: *((_DWORD *)off_D09700 + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D1184C(a1: v40[104], a2: HIDWORD(v5)) & 7;
@@ -7730,28 +7745,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[41];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -7759,13 +7774,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A18 + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7773,14 +7788,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=EXACT size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7788,11 +7803,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7803,7 +7818,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7817,21 +7832,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09A14 + 3);
@@ -7853,7 +7867,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09A14 + 3);
@@ -7866,9 +7880,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7885,7 +7899,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7906,33 +7920,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09A14;
- if ( *((_DWORD *)off_D09A14 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09A14 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09A14 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09A14 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09A14 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7954,17 +7968,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A18 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7973,12 +7985,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7990,7 +8002,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -8010,22 +8022,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09A18 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D09A18;
if ( sub_D1184C(a1: *((_DWORD *)off_D09A18 + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D1184C(a1: v40[104], a2: HIDWORD(v5)) & 7;
@@ -8045,40 +8057,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D07330(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D07330();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -8086,14 +8093,14 @@ LABEL_84:
/* ==== asd_program_link_by_signal_v4 [tier=EXACT size=854] ==== */
// Fourth ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -8101,15 +8108,15 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
- unsigned int v25; // r2
- int v26; // r9
+ unsigned int field34; // r2
+ unsigned int field30; // r9
_DWORD *v28; // r7
int v29; // r6
int v30; // r0
@@ -8117,7 +8124,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
int v32; // r0
int v33; // r1
__int16 v34; // r2
- int v35; // r0
+ unsigned int v35; // r0
_DWORD *v36; // r7
int v37; // r6
int v38; // r0
@@ -8128,24 +8135,23 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
BOOL v43; // r0
int v44; // r1
__int16 v45; // r2
- int v46; // r0
- unsigned int v47; // r6
- int v48; // r0
- unsigned int v49; // r0
- int v50; // r6
+ unsigned int v46; // r0
+ unsigned int field24; // r6
+ unsigned int v48; // r0
+ int v49; // r6
+ int v50; // r0
int v51; // r0
int v52; // r0
- int v53; // r0
- int v54; // [sp+0h] [bp-8h] BYREF
- int v55; // [sp+4h] [bp-4h] BYREF
+ int v53; // [sp+0h] [bp-8h] BYREF
+ int v54; // [sp+4h] [bp-4h] BYREF
- v54 = a3;
- v55 = a4;
- if ( a1 == 0 )
+ v53 = a3;
+ v54 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D0A9BC + 3);
@@ -8167,7 +8173,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09D88 + 3);
@@ -8180,9 +8186,9 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -8199,7 +8205,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -8220,44 +8226,44 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09D88;
- if ( *((_DWORD *)off_D09D88 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09D88 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09D88 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_DWORD *)(a1 + 52);
- v26 = *(_DWORD *)(a1 + 48);
- if ( v25 == 2 )
+ field34 = a1->field34;
+ field30 = a1->field30;
+ if ( field34 == 2 )
{
- v25 = *((_DWORD *)off_D09D88 + 8);
- if ( v25 <= v22 )
+ field34 = *((_DWORD *)off_D09D88 + 8);
+ if ( field34 <= field38 )
return 2;
}
+ v53 = 255;
v54 = 255;
- v55 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 4), a3: v5) << 31 != 0 )
{
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v28 = off_D09D74;
v29 = sub_D11638(a1: *((_DWORD *)off_D09D74 + 99), a2: HIDWORD(v5)) & 7;
@@ -8273,17 +8279,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 4;
goto LABEL_71;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -8292,12 +8296,12 @@ LABEL_23:
goto LABEL_72;
case 2:
v35 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_71;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 5;
goto LABEL_71;
}
@@ -8309,11 +8313,11 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v36 = off_D09D74;
v37 = sub_D11638(a1: *((_DWORD *)off_D09D74 + 100), a2: HIDWORD(v5)) & 7;
@@ -8329,45 +8333,45 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09D74 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v35 = 3;
LABEL_71:
- *(_DWORD *)(a1 + 64) = v35;
+ a1->field40 = v35;
goto LABEL_72;
}
return 8;
}
- if ( *(_DWORD *)(a1 + 32) == 0
+ if ( a1->field20 == 0
|| (v41 = *((int (__fastcall **)(_DWORD))off_D09D88 + 42)) != nullptr && v41(a1: v5) != 0
- || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: v25) != 0 )
+ || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: field34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 4;
+ a1->field4C = 3;
+ a1->field40 = 4;
}
else
{
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v42 = off_D09D74;
- if ( sub_D1184C(a1: *((_DWORD *)off_D09D74 + 103), a2: HIDWORD(v5)) << 31 == 0 || *(_DWORD *)(a1 + 32) != 0 )
+ if ( sub_D1184C(a1: *((_DWORD *)off_D09D74 + 103), a2: HIDWORD(v5)) << 31 == 0 || a1->field20 != 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
- if ( v26 == 1 )
+ a1->field4C = 3;
+ a1->field40 = 5;
+ if ( field30 == 1 )
{
- v50 = sub_D1184C(a1: v42[104], a2: HIDWORD(v5)) & 7;
- v51 = sub_D116A8(a1: v42[98], a2: v50);
- sub_D1696C(a1: v42[98], a2: v50, a3: v51 | 0x80);
- v52 = v42[105];
- if ( v52 != 0 )
+ v49 = sub_D1184C(a1: v42[104], a2: HIDWORD(v5)) & 7;
+ v50 = sub_D116A8(a1: v42[98], a2: v49);
+ sub_D1696C(a1: v42[98], a2: v49, a3: v50 | 0x80);
+ v51 = v42[105];
+ if ( v51 != 0 )
{
- v53 = sub_D1184C(a1: v52, a2: v50);
- sub_D16A90(a1: v42[105], a2: v50, a3: v53 | 1);
+ v52 = sub_D1184C(a1: v51, a2: v49);
+ sub_D16A90(a1: v42[105], a2: v49, a3: v52 | 1);
}
}
LABEL_72:
@@ -8377,40 +8381,35 @@ LABEL_72:
v17 = v43;
v46 = 4;
LABEL_74:
- *(_DWORD *)(a1 + 68) = v46;
+ a1->field44 = v46;
return v17;
}
- v47 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- if ( v47 > 0x15 )
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFC | 2;
- *(_DWORD *)(a1 + 68) = v49;
- if ( v10 != 48 || *(_DWORD *)(a1 + 32) == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
+ v48 = a1->field44 & 0xFFFFFFFE;
+ if ( field24 > 0x15 )
+ v48 = a1->field44 & 0xFFFFFFFC | 2;
+ a1->field44 = v48;
+ if ( v10 != 48 || a1->field20 == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
return 0;
goto LABEL_89;
}
- *(_DWORD *)(a1 + 68) = 0;
- v48 = *(_DWORD *)(a1 + 32);
- if ( v48 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_connector_state_check(a1: v5, a2: v44, a3: v45) == 0 )
{
- v48 = asd_connector_state_check(a1: v5, a2: v44, a3: v45);
- if ( v48 == 0 )
- {
LABEL_89:
- *(_DWORD *)(a1 + 68) = 16;
- return 0;
- }
+ a1->field44 = 16;
+ return 0;
}
- if ( v47 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D07330(a1: v48, a2: v44);
+ v17 = sub_D07330();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A08C + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v47 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v46 = *(_DWORD *)(a1 + 68) | 2;
+ v46 = a1->field44 | 2;
goto LABEL_74;
}
return v17;
@@ -13814,7 +13813,7 @@ int __fastcall j_sub_D07D78_11(int a1, _BYTE *a2, _BYTE *a3)
{
int v3; // r3
- return asd_program_link_by_signal_v2(a1, (int)a2, (int)a3, a4: v3);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, (int)a2, (int)a3, a4: v3);
}
/* ==== j_sub_D07E10_17 [tier=EXACT size=4] ==== */
@@ -13873,7 +13872,7 @@ int __fastcall j_sub_D07F50_9(int a1, int a2)
// attributes: thunk
int __fastcall j_sub_D07F90(int a1, int a2, int a3)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D07F90_2 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_33.0.8.239_4c19d868.anon.c b/fw/decomp/asd_33.0.8.239_4c19d868.anon.c
index f7fd875..70e984d 100644
--- a/fw/decomp/asd_33.0.8.239_4c19d868.anon.c
+++ b/fw/decomp/asd_33.0.8.239_4c19d868.anon.c
@@ -84,13 +84,6 @@ int __fastcall j_asd_dio_current_instance_op_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D050CA(int a1)
{
return sub_D0708C(a1);
@@ -350,6 +343,13 @@ int __fastcall j_asd_link_reset_seq_12(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_0(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_15(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -448,6 +448,13 @@ int __fastcall sub_D0440C(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -497,16 +504,16 @@ int __fastcall j_asd_dio_enable_all_0(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_1(int a1, int a2, __int16 a3)
+int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
+ return asd_link_query_a(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_link_query_a_0(_DWORD *a1, int a2, __int16 a3)
+int __fastcall j_asd_encoder_enable_seq_v3_2(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- return asd_link_query_a(a1, a2, a3);
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -532,6 +539,13 @@ int __fastcall j_asd_dio_read_block10(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_4(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D1543C()
{
return sub_D15F04();
@@ -623,6 +637,13 @@ int __fastcall j_asd_session_op57_invoke_2()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_1(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D053EC(int a1)
{
return sub_D0708C(a1);
@@ -728,6 +749,13 @@ int __fastcall j_asd_link_set_reg4248C_half_10(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_8(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_query_link_config_13(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -783,13 +811,6 @@ int __fastcall j_asd_link_reset_seq(__int64 a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_5(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_connector_program_seq(unsigned int a1)
{
return asd_connector_program_seq(a1);
@@ -951,13 +972,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_10(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full(int a1)
-{
- return asd_get_link_caps_full(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_pair_D49838_3(_DWORD *a1)
{
return asd_get_pair_D49838(a1);
@@ -1007,6 +1021,13 @@ int __fastcall sub_D03E54(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_0(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_signal_status_check_7(int a1, int a2, __int16 a3)
{
return asd_signal_status_check(a1, a2, a3);
@@ -1399,13 +1420,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_8(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_program_link_by_signal_4(int a1, int a2, int a3, int a4)
{
return asd_program_link_by_signal(a1, a2, a3, a4);
@@ -1483,6 +1497,13 @@ int __fastcall j_asd_pipe_lookup_6(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_6(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -1588,13 +1609,6 @@ int __fastcall j_asd_link_ready_full_check_7(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_1(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_16(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -1693,6 +1707,13 @@ int sub_D15000()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_3(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_13(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -1966,6 +1987,13 @@ int __fastcall j_asd_link_set_reg42468_field_12(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_5(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_5(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -2071,6 +2099,13 @@ int sub_D1515C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_0(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D02DB0()
{
return sub_D07880();
@@ -2203,13 +2238,6 @@ int __fastcall j_asd_link_read_pair_regs_0(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_0(int a1, int a2, __int16 a3)
-{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_query_link_config_6(_DWORD *a1, int *a2)
{
return asd_query_link_config(a1, a2);
@@ -2371,6 +2399,13 @@ int __fastcall j_asd_link_read_pair_regs_9(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_wait_and_set_12(int a1, int a2, int a3)
{
return asd_link_wait_and_set(a1, a2, a3);
@@ -2406,6 +2441,13 @@ int __fastcall j_asd_link_read_pair_regs_5(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3_1(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_12(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -2476,13 +2518,6 @@ int __fastcall j_asd_pipe_enable_9(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_12(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_2(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -2546,13 +2581,6 @@ int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_7(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_11(int a1)
{
return asd_link_ready_full_check(a1);
@@ -2749,13 +2777,6 @@ int sub_D02D94()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_6(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
{
return asd_dio_write_packed(a1, a2);
@@ -2763,13 +2784,6 @@ int __fastcall j_asd_dio_write_packed_0(unsigned int a1, unsigned __int8 *a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_9(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D04D96()
{
return sub_D06EA8();
@@ -2826,6 +2840,20 @@ int __fastcall j_asd_reg_read_13B74_cfg3_8(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v4(a1, a2, a3, a4);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_10(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_connector_enable_0(unsigned int a1)
{
return asd_connector_enable(a1);
@@ -2952,6 +2980,13 @@ int __fastcall j_asd_dio_current_instance_op_2(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
+{
+ return asd_encoder_enable_seq_v3(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_program_key_regs_1(int a1)
{
return asd_program_key_regs(a1);
@@ -2993,13 +3028,6 @@ int sub_D152F4()
}
/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v4(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
int sub_D06AFC()
{
return 7;
@@ -3063,6 +3091,13 @@ int __fastcall j_asd_reg_read_13B74_cfg3_1(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_12(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_program_timing_1(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
{
return asd_link_program_timing(a1, a2, a3);
@@ -3112,13 +3147,6 @@ int __fastcall sub_D0615C(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_11(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
return asd_link_train_status(a1);
@@ -3133,23 +3161,23 @@ int __fastcall j_asd_link_read_pair_regs_14(int a1, _BYTE *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq_v3_2(int a1, int a2, __int16 a3)
+int __fastcall j_asd_reg_read_13D24_cfg0_1(unsigned int a1, int a2, __int16 a3)
{
- return asd_encoder_enable_seq_v3(a1, a2, a3);
+ return asd_reg_read_13D24_cfg0(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_reg_read_13D24_cfg0_1(unsigned int a1, int a2, __int16 a3)
+int __fastcall j_asd_connector_enable_5(unsigned int a1)
{
- return asd_reg_read_13D24_cfg0(a1, a2, a3);
+ return asd_connector_enable(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_connector_enable_5(unsigned int a1)
+int __fastcall j_asd_get_link_caps_full_v2_13(struct asd_link_caps *a1)
{
- return asd_connector_enable(a1);
+ return asd_get_link_caps_full_v2(a1);
}
/* ==== ANON size=4 ==== */
@@ -3210,6 +3238,13 @@ int __fastcall j_asd_pipe_enable_11(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_11(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_state_not_1_cfg0_8(_DWORD *a1)
{
return asd_state_not_1_cfg0(a1);
@@ -3384,13 +3419,6 @@ int __fastcall j_asd_reg_read_13D24_cfg0_5(unsigned int a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_13(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
BOOL __fastcall sub_D14EAC(unsigned int a1)
{
return sub_D158D8(a1);
@@ -3468,6 +3496,13 @@ int sub_D05DBC()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_6(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_set_reg42468_field_9(int a1, int a2)
{
return asd_link_set_reg42468_field(a1, a2);
@@ -3552,13 +3587,6 @@ int __fastcall j_asd_pipe_lookup_17(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_8(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D152E8()
{
return sub_D15EA4();
@@ -3601,13 +3629,6 @@ void sub_D14EA8()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_0(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_write_quad_14(int a1, _DWORD *a2)
{
return asd_link_write_quad(a1, a2);
@@ -3650,6 +3671,13 @@ int sub_D02B5C()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_7(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_link_ready_full_check_17(int a1)
{
return asd_link_ready_full_check(a1);
@@ -3762,13 +3790,6 @@ int __fastcall j_asd_pipe_lookup_13(_DWORD *a1, int a2, __int16 a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg3_4(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_reg_read_13B74_cfg3(a1, a2, a3);
@@ -3804,13 +3825,6 @@ int __fastcall j_asd_link_set_reg42468_field_2(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D15160()
{
return sub_D155C8();
@@ -3930,13 +3944,6 @@ int __fastcall j_asd_reg_read_13B74_cfg2_14(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_0(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall sub_D050F6(int a1)
{
return sub_D07880(a1);
@@ -3958,6 +3965,13 @@ int __fastcall j_asd_get_link_reg_offsets_1(_DWORD *a1, unsigned int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full_v2_9(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full_v2(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall sub_D0410C()
{
return sub_D06EA8();
@@ -3979,13 +3993,6 @@ int __fastcall j_asd_write_block_paged_15(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block_1(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_pipe_lookup_4(_DWORD *a1, int a2, __int16 a3)
{
return asd_pipe_lookup(a1, a2, a3);
@@ -4259,13 +4266,6 @@ int __fastcall j_asd_link_set_reg42468_field_14(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_10(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_clear_link_outputs_5(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4307,6 +4307,13 @@ int __fastcall j_asd_write_block_paged_13(int a1, int a2, int a3)
}
/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
int sub_D0732C()
{
return 7;
@@ -4376,13 +4383,6 @@ int sub_D161A4()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_dio_read_block(int a1, unsigned int a2)
-{
- return asd_dio_read_block(a1, a2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_reset_seq_15(__int64 a1, int a2, int a3)
{
return asd_link_reset_seq(a1, a2, a3);
@@ -4404,13 +4404,6 @@ int __fastcall j_asd_link_set_reg4248C_half_7(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_4(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_get_link_caps_full_v3(int a1)
{
return asd_get_link_caps_full_v3(a1);
@@ -4684,6 +4677,13 @@ int sub_D13DD4()
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_dio_read_block_1(struct asd_link_caps *a1, unsigned int a2)
+{
+ return asd_dio_read_block(a1, a2);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_clear_link_outputs_11(int a1, _BYTE *a2, _BYTE *a3)
{
return asd_clear_link_outputs(a1, a2, a3);
@@ -4712,13 +4712,6 @@ int __fastcall j_asd_link_program_timing_4(int a1, unsigned __int8 *a2, unsigned
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2_3(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_link_ready_full_check_8(int a1)
{
return asd_link_ready_full_check(a1);
@@ -4803,13 +4796,6 @@ int __fastcall j_asd_link_train_status_12(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_get_link_caps_full_v2(int a1)
-{
- return asd_get_link_caps_full_v2(a1);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_set_reg425E4_mode_13(int a1, int a2, int a3)
{
return asd_set_reg425E4_mode(a1, a2, a3);
@@ -4922,6 +4908,13 @@ int __fastcall j_asd_get_pair_D49838_7(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_get_link_caps_full(struct asd_link_caps *a1)
+{
+ return asd_get_link_caps_full(a1);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_pipe_enable_8(int a1, int a2, int a3)
{
return asd_pipe_enable(a1, a2, a3);
@@ -4934,6 +4927,13 @@ int __fastcall j_asd_link_read_pair_regs_1(int a1, _BYTE *a2, _BYTE *a3)
return asd_link_read_pair_regs(a1, a2, a3);
}
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
+{
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+}
+
/* ==== ANON size=6 ==== */
int __fastcall sub_D105AA(int a1, _DWORD *a2, unsigned int a3, unsigned int a4)
{
diff --git a/fw/decomp/asd_33.0.8.239_4c19d868.c b/fw/decomp/asd_33.0.8.239_4c19d868.c
index f50e7b8..35d7675 100644
--- a/fw/decomp/asd_33.0.8.239_4c19d868.c
+++ b/fw/decomp/asd_33.0.8.239_4c19d868.c
@@ -2081,27 +2081,27 @@ BOOL __fastcall asd_dio_idle_check(unsigned int a1)
/* ==== asd_dio_read_block [tier=MNEM size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D15D38 + 2) <= a2 )
return 2;
v4 = sub_D0FA80(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D15D3C + 4 * a2);
result = 0;
@@ -2109,28 +2109,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -2966,9 +2966,9 @@ LABEL_32:
/* ==== asd_encoder_enable_seq_v3 [tier=MNEM size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
int v7; // r6
@@ -2988,7 +2988,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v26; // r0
int v27; // r0
int v28; // r0
- int v29; // r0
+ unsigned int field40; // r0
_DWORD *v30; // r6
int v31; // r1
_DWORD *v32; // r8
@@ -2996,13 +2996,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v34; // r0
_DWORD *v35; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D081C8;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D081C8 + 4), a3: v5) << 31 != 0 )
{
@@ -3018,7 +3018,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[40], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[40], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[59], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[59], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -3026,7 +3026,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v23 = off_D0841C;
if ( sub_D11878(a1: *((_DWORD *)off_D0841C + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
@@ -3045,7 +3045,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
sub_D16B04(a1: v23[105], a2: v25, a3: v28 | 1);
}
break;
- case 32:
+ case 0x20u:
v16 = (int *)off_D081C8;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D081C8 + 85), a3: v5) << 31 == 0 )
return 8;
@@ -3069,10 +3069,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v29 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v29 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v30 = off_D084B8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D084B8 + 41), a3: v5);
@@ -3081,7 +3081,7 @@ LABEL_30:
v34 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v33 = off_D084B8;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D084B8 + 86), a3: v5);
@@ -3093,7 +3093,7 @@ LABEL_31:
}
return 7;
}
- if ( v29 == 4 )
+ if ( field40 == 4 )
{
v35 = off_D084B8;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D084B8 + 59), a3: v5);
@@ -3102,9 +3102,9 @@ LABEL_31:
v31 = v35[59];
goto LABEL_30;
}
- if ( v29 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v32 = off_D090B4;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D090B4 + 59), a3: v5);
@@ -3528,7 +3528,7 @@ int __fastcall asd_get_lane_count(_DWORD *a1, int a2)
/* ==== asd_get_link_caps_full [tier=MNEM size=696] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -3537,46 +3537,49 @@ int __fastcall asd_get_link_caps_full(int a1)
unsigned int v6; // r6
unsigned int v7; // r0
__int64 v8; // r2
- __int16 _13B74; // r7
- char v10; // r0
- int v11; // r1
- bool v12; // zf
- int v13; // r0
- int i; // r1
- unsigned int v15; // r6
- int v16; // r3
+ unsigned int v9; // r1
+ int _13B74; // r0
+ __int16 v11; // r7
+ int v12; // r1
+ int v13; // r2
+ char v14; // r0
+ char *v15; // r1
+ bool v16; // zf
int v17; // r0
- unsigned int *v18; // r1
- unsigned int v19; // r5
- unsigned int v20; // r6
- int v21; // r0
- int *v22; // r7
- int v23; // r0
- int *v24; // r6
- unsigned int j; // r5
- unsigned int v26; // r0
- int v27; // r0
- int v28; // r0
- unsigned int v29; // r0
- int v30; // r1
- int v31; // r5
- unsigned int v32; // r11
- int k; // r6
- unsigned int v34; // r0
+ unsigned int v18; // r0
+ unsigned int *v19; // r0
+ int v20; // r1
+ unsigned int field0C; // r2
+ unsigned int v22; // r6
+ int v23; // r3
+ int v24; // r0
+ unsigned int *v25; // r1
+ unsigned int v26; // r5
+ unsigned int v27; // r6
+ char *v28; // r0
+ int *v29; // r7
+ int v30; // r0
+ int *p_field18; // r6
+ unsigned int i; // r5
+ unsigned int v33; // r0
+ int v34; // r0
int v35; // r0
- int v36; // r1
- _DWORD *v37; // r2
- unsigned int v38; // r0
- int v39; // r7
- int v40; // r1
- unsigned int *v41; // r12
- _DWORD *v42; // lr
- _DWORD *v43; // r3
- _DWORD *v44; // r1
- _DWORD v46[9]; // [sp+8h] [bp-24h] BYREF
+ unsigned int v36; // r0
+ int v37; // r1
+ int v38; // r5
+ unsigned int *v39; // r1
+ unsigned int v40; // r11
+ int v41; // r6
+ unsigned int p_field20; // r0
+ int v43; // r7
+ unsigned int *v44; // r1
+ unsigned int *v45; // r12
+ _DWORD *v46; // lr
+ _DWORD *v47; // r3
+ _DWORD v49[9]; // [sp+8h] [bp-24h] BYREF
- bzero_core(result: v46, a2: 0x24u);
- if ( a1 == 0 )
+ bzero_core(result: v49, a2: 0x24u);
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A660;
v3 = 0;
@@ -3585,43 +3588,49 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A660 + 3);
v8 = *((_QWORD *)off_D0A660 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A660 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A660 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ v9 = v2[9];
+ a1->field1C = v9;
while ( v6 < v7 )
{
- if ( sub_D0FE48() == 0 )
+ if ( sub_D0FE48(a1: v7, a2: v9, a3: v8) == 0 )
return 44;
_13B74 = asd_reg_read_13B74(a1: 0, a2: v4[1], a3: v6);
- if ( sub_D0FE48() == 0 )
+ v11 = _13B74;
+ if ( sub_D0FE48(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
- v10 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v11 = a1 + 8 * v6;
- v12 = v5 == 8;
- *(_DWORD *)(v11 + 32) = (_13B74 & 0x800) != 0;
- *(_DWORD *)(v11 + 36) = v10 & 7;
+ v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
+ v15 = (char *)a1 + 8 * v6;
+ v16 = v5 == 8;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 8 )
- v12 = (_13B74 & 0x800) == 0;
- if ( v12 )
- v46[v5++] = v6;
- if ( sub_D09D78(a1: v6) != 0 )
+ v16 = (v11 & 0x800) == 0;
+ if ( v16 )
+ v49[v5++] = v6;
+ v17 = sub_D09D78();
+ if ( v17 != 0 )
{
- if ( sub_D0FE48() == 0 )
+ if ( sub_D0FE48(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
+ v9 = (unsigned int)a1 + 4 * v6;
+ *(_DWORD *)(v9 + 104) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
- if ( sub_D0FE48() == 0 )
+ if ( sub_D0FE48(a1: 0, a2: v9, a3: v8) == 0 )
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v13 = a1 + 4 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v19 = &a1->unk00 + v3;
+ v9 = 1;
+ v19[89] = 1;
+ v19[90] = v6;
}
}
}
@@ -3629,121 +3638,131 @@ int __fastcall asd_get_link_caps_full(int a1)
v7 = v2[3];
++v6;
}
- for ( i = 0; i != v5; ++i )
+ v20 = 0;
+ field0C = 1;
+ while ( v20 != v5 )
{
- v15 = 0;
- v16 = ~(1 << (v46[i] & 0x1F));
- while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ v22 = 0;
+ v23 = ~(1 << (v49[v20] & 0x1F));
+ while ( v22 < v2[3] )
+ *(&a1[2].field18 + v22++) &= v23;
+ ++v20;
}
- v17 = v2[7];
- v18 = v2 + 4;
- v19 = v2[3];
- if ( v17 == 0 )
- v18 = v2 + 2;
- v20 = *v18;
- if ( v17 != 0 )
- v19 = 0;
- v21 = a1 + 24 * v19;
- v22 = (int *)(v21 + 140);
- while ( v19 < v20 )
+ v24 = v2[7];
+ v25 = v2 + 4;
+ v26 = v2[3];
+ if ( v24 == 0 )
+ v25 = v2 + 2;
+ v27 = *v25;
+ if ( v24 != 0 )
+ v26 = 0;
+ v28 = (char *)a1 + 24 * v26;
+ v29 = (int *)(v28 + 140);
+ while ( v26 < v27 )
{
- if ( sub_D0FF00(a1: v21) == 0 )
+ if ( sub_D0FF00(a1: v28) == 0 )
return 44;
- v23 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
- *v22 = v23;
- if ( sub_D0FF00(a1: v23) == 0 )
+ v30 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v26) & 1;
+ *v29 = v30;
+ if ( sub_D0FF00(a1: v30) == 0 )
return 44;
- v21 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v19) & 7;
- v22[1] = v21;
- v22[2] = v19;
- v22 += 6;
- ++v19;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 7);
+ v29[1] = (int)v28;
+ v29[2] = v26;
+ v29 += 6;
+ ++v26;
}
- v24 = (int *)(a1 + 464);
- for ( j = 0; ; ++j )
+ p_field18 = (int *)&a1[11].field18;
+ for ( i = 0; ; ++i )
{
- v26 = v2[6];
- if ( j >= v26 )
+ v33 = v2[6];
+ if ( i >= v33 )
break;
- if ( sub_D0FF00(a1: v26) == 0 )
+ if ( sub_D0FF00(a1: v33) == 0 )
return 44;
- v27 = sub_D11878(a1: v4[103], a2: j) & 1;
- *v24 = v27;
- if ( sub_D0FF00(a1: v27) == 0 )
+ v34 = sub_D11878(a1: v4[103], a2: i) & 1;
+ *p_field18 = v34;
+ if ( sub_D0FF00(a1: v34) == 0 )
return 44;
- v28 = sub_D11878(a1: v4[54], a2: j) & 7;
- v24[1] = v28;
- if ( sub_D0FF00(a1: v28) == 0 )
+ v35 = sub_D11878(a1: v4[54], a2: i) & 7;
+ p_field18[1] = v35;
+ if ( sub_D0FF00(a1: v35) == 0 )
return 44;
- v29 = sub_D118E8(a1: v4[55], a2: j) & 7;
- v24[2] = v29;
- if ( v29 >= *(_DWORD *)(a1 + 12) )
+ v36 = sub_D118E8(a1: v4[55], a2: i) & 7;
+ p_field18[2] = v36;
+ if ( v36 >= a1->field0C )
return 2;
- v30 = *v24;
- v24 += 3;
- if ( v30 == 1 )
- *(_DWORD *)(a1 + 16 * v29 + 572) = 1 << j;
+ v37 = *p_field18;
+ p_field18 += 3;
+ if ( v37 == 1 )
+ *(&a1[14].field0C + 4 * v36) = 1 << i;
}
- v31 = 2;
- v32 = v2[7] - v2[9];
- if ( v32 <= 5 )
+ v38 = 2;
+ v39 = (unsigned int *)v2[9];
+ v40 = v2[7] - (_DWORD)v39;
+ if ( v40 <= 5 )
{
- for ( k = 0; k != v32; ++k )
+ v41 = 0;
+ p_field20 = (unsigned int)&a1[11].field20;
+ while ( v41 != v40 )
{
- if ( sub_D0FE48() == 0 )
+ if ( sub_D0FE48(a1: p_field20, a2: v39, a3: field0C) == 0 )
return 44;
- v34 = sub_D11D00(a1: v4[120], a2: k);
- if ( (v34 & 3) == 2 )
+ p_field20 = sub_D11D00(a1: v4[120], a2: v41);
+ v39 = (unsigned int *)(p_field20 & 3);
+ if ( v39 == (unsigned int *)2 )
{
- v38 = (v34 >> 8) & 7;
- v39 = v2[6];
- v40 = a1 + 16 * v38;
- v41 = (unsigned int *)(v40 + 576);
- v42 = (_DWORD *)(v40 + 584);
- v43 = (_DWORD *)(v40 + 580);
- v44 = (_DWORD *)(a1 + 472);
- while ( v39 != 0 )
+ p_field20 = (p_field20 >> 8) & 7;
+ v43 = v2[6];
+ v44 = &a1->unk00 + 4 * p_field20;
+ v45 = v44 + 144;
+ v46 = v44 + 146;
+ v47 = v44 + 145;
+ v39 = &a1[11].field20;
+ while ( v43 != 0 )
{
- if ( *v44 == v38 )
+ field0C = *v39;
+ if ( *v39 == p_field20 )
{
- if ( v38 >= *(_DWORD *)(a1 + 12) )
+ field0C = a1->field0C;
+ if ( p_field20 >= field0C )
return 2;
- *v42 = 2;
- *v43 = k;
- *v41 = v38;
+ *v46 = 2;
+ *v47 = v41;
+ *v45 = p_field20;
}
- v44 += 3;
- --v39;
+ v39 += 3;
+ --v43;
}
}
- else if ( (v34 & 3) == 1 )
+ else if ( v39 == (unsigned int *)1 )
{
- v35 = (v34 >> 4) & 7;
- v36 = v2[4];
- v37 = (_DWORD *)(a1 + 160);
- while ( v36 != 0 )
+ p_field20 = (p_field20 >> 4) & 7;
+ v39 = (unsigned int *)v2[4];
+ field0C = (unsigned int)&a1[4];
+ while ( v39 != nullptr )
{
- --v36;
- if ( *(v37 - 3) == v35 )
+ v39 = (unsigned int *)((char *)v39 - 1);
+ if ( *(_DWORD *)(field0C - 12) == p_field20 )
{
- *(v37 - 2) = k;
- *(v37 - 1) = v35;
- *v37 = 1;
+ *(_DWORD *)(field0C - 8) = v41;
+ *(_DWORD *)(field0C - 4) = p_field20;
+ *(_DWORD *)field0C = 1;
}
- v37 += 6;
+ field0C += 24;
}
}
+ ++v41;
}
return 0;
}
- return v31;
+ return v38;
}
/* ==== asd_get_link_caps_full_v2 [tier=MNEM size=764] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -3753,10 +3772,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int i; // r1
unsigned int v15; // r4
int v16; // r3
@@ -3765,27 +3784,27 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v19; // r5
unsigned int v20; // r4
int *v21; // r6
- int *v22; // r4
+ int *p_field18; // r4
unsigned int j; // r5
unsigned int v24; // r0
int v25; // r1
char v26; // r0
int v27; // r11
- int k; // r9
+ unsigned int k; // r9
unsigned int v29; // r0
- int v30; // r1
+ unsigned int v30; // r1
int v31; // r0
int v32; // r2
- _DWORD *v33; // r3
- int v34; // r1
+ struct asd_link_caps *v33; // r3
+ unsigned int v34; // r1
unsigned int v35; // r0
int v36; // r5
- _DWORD *v37; // r6
- int v38; // r4
+ unsigned int *p_field20; // r6
+ unsigned int *v38; // r4
unsigned int *v39; // r12
_DWORD *v40; // r3
- _DWORD *v41; // r4
- unsigned int *v42; // r4
+ unsigned int *v41; // r4
+ unsigned int *p_field24; // r4
unsigned int m; // r5
unsigned int v44; // r0
unsigned int v45; // r1
@@ -3795,7 +3814,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v50[9]; // [sp+18h] [bp-24h] BYREF
bzero_core(result: v50, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D0A088;
v3 = 0;
@@ -3804,20 +3823,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0A088 + 3);
v8 = *((_QWORD *)off_D0A088 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0A088 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0A088 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 8;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 8 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -3825,12 +3844,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[39];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field18 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 89) = 1;
+ *((_DWORD *)v13 + 90) = v6;
}
}
v3 += 6;
@@ -3842,7 +3861,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v15 = 0;
v16 = ~(1 << (v50[i] & 0x1F));
while ( v15 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v15++) &= v16;
+ *(&a1[2].field18 + v15++) &= v16;
}
v17 = v2[7];
v18 = v2 + 4;
@@ -3852,7 +3871,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v20 = *v18;
if ( v17 != 0 )
v19 = 0;
- v21 = (int *)(a1 + 24 * v19 + 140);
+ v21 = (int *)(&a1[3].field14 + 6 * v19);
while ( v19 < v20 )
{
*v21 = asd_reg_read_13B74(a1: 1, a2: v4[83], a3: v19) & 1;
@@ -3861,21 +3880,21 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 += 6;
++v19;
}
- v22 = (int *)(a1 + 464);
+ p_field18 = (int *)&a1[11].field18;
for ( j = 0; j < v2[6]; ++j )
{
- *v22 = sub_D11878(a1: v4[103], a2: j) & 1;
- v22[1] = sub_D11878(a1: v4[54], a2: j) & 7;
+ *p_field18 = sub_D11878(a1: v4[103], a2: j) & 1;
+ p_field18[1] = sub_D11878(a1: v4[54], a2: j) & 7;
v24 = sub_D118E8(a1: v4[55], a2: j) & 7;
- v22[2] = v24;
- if ( v24 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = v24;
+ if ( v24 >= a1->field0C )
return 2;
- v25 = *v22;
- v22 += 3;
+ v25 = *p_field18;
+ p_field18 += 3;
if ( v25 == 1 )
- *(_DWORD *)(a1 + 16 * v24 + 572) = 1 << (j & 0x1F);
+ *(&a1[14].field0C + 4 * v24) = 1 << (j & 0x1F);
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
v26 = sub_D117B4(a1: v4[107]);
v47 = (v26 & 8) != 0;
@@ -3902,22 +3921,22 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v34 = k + 3;
v35 = (v29 >> 8) & 7;
v36 = v2[6];
- v37 = (_DWORD *)(a1 + 472);
- v38 = a1 + 16 * v35;
- v39 = (unsigned int *)(v38 + 576);
- v40 = (_DWORD *)(v38 + 584);
- v41 = (_DWORD *)(v38 + 580);
+ p_field20 = &a1[11].field20;
+ v38 = &a1->unk00 + 4 * v35;
+ v39 = v38 + 144;
+ v40 = v38 + 146;
+ v41 = v38 + 145;
while ( v36 != 0 )
{
- if ( *v37 == v35 )
+ if ( *p_field20 == v35 )
{
- if ( v35 >= *(_DWORD *)(a1 + 12) )
+ if ( v35 >= a1->field0C )
return 2;
*v40 = 2;
*v41 = v34;
*v39 = v35;
}
- v37 += 3;
+ p_field20 += 3;
--v36;
}
}
@@ -3930,31 +3949,31 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v30 = k + 3;
v31 = (v29 >> 4) & 7;
v32 = v2[4];
- v33 = (_DWORD *)(a1 + 160);
+ v33 = a1 + 4;
while ( v32 != 0 )
{
--v32;
- if ( *(v33 - 3) == v31 )
+ if ( v33[-1].field1C == v31 )
{
- *(v33 - 2) = v30;
- *(v33 - 1) = v31;
- *v33 = 1;
+ v33[-1].field20 = v30;
+ v33[-1].field24 = v31;
+ v33->unk00 = 1;
}
- v33 += 6;
+ v33 = (struct asd_link_caps *)((char *)v33 + 24);
}
}
}
- v42 = (unsigned int *)(a1 + 716);
+ p_field24 = &a1[17].field24;
for ( m = 0; m < v2[8]; ++m )
{
v44 = sub_D11A14(a1: v4[106], a2: m);
v45 = (v44 >> 8) & 0xF;
- if ( *(_DWORD *)(a1 + 4) < v45 )
+ if ( a1->field04 < v45 )
return 2;
- *v42 = v44 & 1;
- v42[1] = v45;
- v42[2] = m;
- v42 += 3;
+ *p_field24 = v44 & 1;
+ p_field24[1] = v45;
+ p_field24[2] = m;
+ p_field24 += 3;
}
return 0;
}
@@ -7301,8 +7320,7 @@ LABEL_23:
v52 = 255;
if ( v10 == 16 )
{
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D093D4 + 4), a3: v5) << 31 != 0 )
{
@@ -7356,7 +7374,7 @@ LABEL_23:
{
if ( v10 == 48 )
{
- result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0);
+ result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51);
if ( result != 0 )
return result;
v39 = off_D093D4;
@@ -7414,8 +7432,7 @@ LABEL_83:
}
return 8;
}
- if ( v21 == 0
- || (result = ((int (__fastcall *)(int, int *, int *, _DWORD))sub_D06728)(a1, a2: &v52, a3: &v51, a4: 0)) == 0 )
+ if ( v21 == 0 || (result = sub_D06728((_DWORD *)a1, a2: &v52, a3: &v51)) == 0 )
{
if ( (_DWORD)v25 == 1 )
{
@@ -7451,14 +7468,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=MNEM size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7466,11 +7483,11 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7481,7 +7498,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7495,21 +7512,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
+ unsigned int v48; // r0
+ unsigned int field24; // r6
int (__fastcall *v50)(_DWORD, int); // r0
unsigned int v51; // r0
- int v52; // r0
+ unsigned int v52; // r0
int v53; // [sp+0h] [bp-8h] BYREF
int v54; // [sp+4h] [bp-4h] BYREF
v53 = a3;
v54 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D096FC + 3);
@@ -7531,7 +7548,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D096FC + 3);
@@ -7544,9 +7561,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7563,7 +7580,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7584,25 +7601,25 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D0A3A0;
- if ( *((_DWORD *)off_D0A3A0 + 1) <= v18 )
+ if ( *((_DWORD *)off_D0A3A0 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0A3A0 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A3A0 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D0A3A0 + 8) <= field38 )
return 2;
v53 = 255;
v54 = 255;
@@ -7610,7 +7627,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7632,17 +7649,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09700 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7651,12 +7666,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7668,7 +7683,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
@@ -7688,22 +7703,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09700 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v40 = off_D09700;
if ( sub_D11878(a1: *((_DWORD *)off_D09700 + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D11878(a1: v40[104], a2: HIDWORD(v5)) & 7;
@@ -7723,28 +7738,28 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v51 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v51;
+ if ( field24 < 0x16 )
return 0;
v52 = v51 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v46, a3: v47) == 0 )
{
v52 = 16;
goto LABEL_85;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
v50 = (int (__fastcall *)(_DWORD, int))v19[41];
if ( v50 == nullptr || (v17 = v50(a1: v50, a2: v46)) == 0 )
@@ -7752,13 +7767,13 @@ LABEL_85:
v17 = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A18 + 8), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
v17 = 0;
}
}
- if ( v49 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -7766,14 +7781,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=MNEM size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -7781,11 +7796,11 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
__int64 v25; // kr08_8
@@ -7796,7 +7811,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
int v31; // r0
int v32; // r1
__int16 v33; // r2
- int v34; // r0
+ unsigned int v34; // r0
_DWORD *v35; // r7
int v36; // r6
int v37; // r0
@@ -7810,21 +7825,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v45; // r0
int v46; // r1
__int16 v47; // r2
- int v48; // r0
- unsigned int v49; // r6
- int _13D24_cfg0; // r0
+ unsigned int v48; // r0
+ unsigned int field24; // r6
+ unsigned int v50; // r0
unsigned int v51; // r0
- int v52; // r0
- int v53; // [sp+0h] [bp-8h] BYREF
- int v54; // [sp+4h] [bp-4h] BYREF
+ int v52; // [sp+0h] [bp-8h] BYREF
+ int v53; // [sp+4h] [bp-4h] BYREF
- v53 = a3;
- v54 = a4;
- if ( a1 == 0 )
+ v52 = a3;
+ v53 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D09A14 + 3);
@@ -7846,7 +7860,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09A14 + 3);
@@ -7859,9 +7873,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -7878,7 +7892,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -7899,33 +7913,33 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09A14;
- if ( *((_DWORD *)off_D09A14 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09A14 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09A14 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_QWORD *)(a1 + 48);
- if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09A14 + 8) <= v22 )
+ v25 = *(_QWORD *)&a1->field30;
+ if ( HIDWORD(v25) == 2 && *((_DWORD *)off_D09A14 + 8) <= field38 )
return 2;
+ v52 = 255;
v53 = 255;
- v54 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -7947,17 +7961,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09A18 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v32, a3: v33) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -7966,12 +7978,12 @@ LABEL_23:
goto LABEL_69;
case 2:
v34 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v34 = 5;
goto LABEL_68;
}
@@ -7983,7 +7995,7 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
}
@@ -8003,22 +8015,22 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09A18 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v34 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v34;
+ a1->field40 = v34;
goto LABEL_69;
}
return 8;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D067B8)(a1, a2: &v54, a3: &v53, a4: v23);
+ v17 = sub_D067B8(a1, a2: &v53, a3: &v52);
if ( v17 != 0 )
return v17;
v40 = off_D09A18;
if ( sub_D11878(a1: *((_DWORD *)off_D09A18 + 103), a2: HIDWORD(v5)) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
+ a1->field4C = 3;
+ a1->field40 = 5;
if ( (_DWORD)v25 == 1 )
{
v41 = sub_D11878(a1: v40[104], a2: HIDWORD(v5)) & 7;
@@ -8038,40 +8050,35 @@ LABEL_69:
v17 = v45;
v48 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v48;
+ a1->field44 = v48;
return v17;
}
- v49 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v51 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v51;
- if ( v49 < 0x16 )
+ v50 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v50;
+ if ( field24 < 0x16 )
return 0;
- v52 = v51 | 2;
+ v51 = v50 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v51;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- _13D24_cfg0 = *(_DWORD *)(a1 + 32);
- if ( _13D24_cfg0 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47) == 0 )
{
- _13D24_cfg0 = asd_reg_read_13D24_cfg0(a1: v5, a2: v46, a3: v47);
- if ( _13D24_cfg0 == 0 )
- {
- v52 = 16;
- goto LABEL_84;
- }
+ v51 = 16;
+ goto LABEL_84;
}
- if ( v49 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D07330(a1: _13D24_cfg0, a2: v46);
+ v17 = sub_D07330();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v49 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v48 = *(_DWORD *)(a1 + 68) | 2;
+ v48 = a1->field44 | 2;
goto LABEL_71;
}
return v17;
@@ -8079,14 +8086,14 @@ LABEL_84:
/* ==== asd_program_link_by_signal_v4 [tier=MNEM size=854] ==== */
// Fourth ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -8094,15 +8101,15 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int v17; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
- unsigned int v25; // r2
- int v26; // r9
+ unsigned int field34; // r2
+ unsigned int field30; // r9
_DWORD *v28; // r7
int v29; // r6
int v30; // r0
@@ -8110,7 +8117,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
int v32; // r0
int v33; // r1
__int16 v34; // r2
- int v35; // r0
+ unsigned int v35; // r0
_DWORD *v36; // r7
int v37; // r6
int v38; // r0
@@ -8121,24 +8128,23 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
BOOL v43; // r0
int v44; // r1
__int16 v45; // r2
- int v46; // r0
- unsigned int v47; // r6
- int v48; // r0
- unsigned int v49; // r0
- int v50; // r6
+ unsigned int v46; // r0
+ unsigned int field24; // r6
+ unsigned int v48; // r0
+ int v49; // r6
+ int v50; // r0
int v51; // r0
int v52; // r0
- int v53; // r0
- int v54; // [sp+0h] [bp-8h] BYREF
- int v55; // [sp+4h] [bp-4h] BYREF
+ int v53; // [sp+0h] [bp-8h] BYREF
+ int v54; // [sp+4h] [bp-4h] BYREF
- v54 = a3;
- v55 = a4;
- if ( a1 == 0 )
+ v53 = a3;
+ v54 = a4;
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40);
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28;
+ switch ( __ROR4__(field28, 4) )
{
case 0:
v7 = *((_DWORD *)off_D0A9BC + 3);
@@ -8160,7 +8166,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D09D88 + 3);
@@ -8173,9 +8179,9 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0;
}
@@ -8192,7 +8198,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -8213,44 +8219,44 @@ LABEL_23:
break;
}
v17 = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return v17;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return v17;
v19 = off_D09D88;
- if ( *((_DWORD *)off_D09D88 + 1) <= v18 )
+ if ( *((_DWORD *)off_D09D88 + 1) <= field0C )
return v17;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D09D88 + 7);
v17 = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return v17;
- v25 = *(_DWORD *)(a1 + 52);
- v26 = *(_DWORD *)(a1 + 48);
- if ( v25 == 2 )
+ field34 = a1->field34;
+ field30 = a1->field30;
+ if ( field34 == 2 )
{
- v25 = *((_DWORD *)off_D09D88 + 8);
- if ( v25 <= v22 )
+ field34 = *((_DWORD *)off_D09D88 + 8);
+ if ( field34 <= field38 )
return 2;
}
+ v53 = 255;
v54 = 255;
- v55 = 255;
if ( v10 == 16 )
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 4), a3: v5) << 31 != 0 )
{
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v28 = off_D09D74;
v29 = sub_D11664(a1: *((_DWORD *)off_D09D74 + 99), a2: HIDWORD(v5)) & 7;
@@ -8266,17 +8272,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09D74 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || sub_D06AE8(a1: v5) != 0
- || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
+ if ( a1->field20 == 0 || sub_D06AE8() != 0 || asd_connector_state_check(a1: v5, a2: v33, a3: v34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 4;
goto LABEL_71;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -8285,12 +8289,12 @@ LABEL_23:
goto LABEL_72;
case 2:
v35 = 1;
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_71;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v35 = 5;
goto LABEL_71;
}
@@ -8302,11 +8306,11 @@ LABEL_23:
{
if ( v21 != 0 )
{
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
}
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v36 = off_D09D74;
v37 = sub_D11664(a1: *((_DWORD *)off_D09D74 + 100), a2: HIDWORD(v5)) & 7;
@@ -8322,45 +8326,45 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09D74 + 83), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2;
+ a1->field4C = 2;
v35 = 3;
LABEL_71:
- *(_DWORD *)(a1 + 64) = v35;
+ a1->field40 = v35;
goto LABEL_72;
}
return 8;
}
- if ( *(_DWORD *)(a1 + 32) == 0
+ if ( a1->field20 == 0
|| (v41 = *((int (__fastcall **)(_DWORD))off_D09D88 + 42)) != nullptr && v41(a1: v5) != 0
- || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: v25) != 0 )
+ || asd_encoder_state_check(a1: v5, a2: (int)v41, a3: field34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 4;
+ a1->field4C = 3;
+ a1->field40 = 4;
}
else
{
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
}
- v17 = ((int (__fastcall *)(int, int *, int *, BOOL))sub_D06728)(a1, a2: &v55, a3: &v54, a4: v23);
+ v17 = sub_D06728(a1, a2: &v54, a3: &v53);
if ( v17 != 0 )
return v17;
v42 = off_D09D74;
- if ( sub_D11878(a1: *((_DWORD *)off_D09D74 + 103), a2: HIDWORD(v5)) << 31 == 0 || *(_DWORD *)(a1 + 32) != 0 )
+ if ( sub_D11878(a1: *((_DWORD *)off_D09D74 + 103), a2: HIDWORD(v5)) << 31 == 0 || a1->field20 != 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
- if ( v26 == 1 )
+ a1->field4C = 3;
+ a1->field40 = 5;
+ if ( field30 == 1 )
{
- v50 = sub_D11878(a1: v42[104], a2: HIDWORD(v5)) & 7;
- v51 = sub_D116D4(a1: v42[98], a2: v50);
- sub_D169E0(a1: v42[98], a2: v50, a3: v51 | 0x80);
- v52 = v42[105];
- if ( v52 != 0 )
+ v49 = sub_D11878(a1: v42[104], a2: HIDWORD(v5)) & 7;
+ v50 = sub_D116D4(a1: v42[98], a2: v49);
+ sub_D169E0(a1: v42[98], a2: v49, a3: v50 | 0x80);
+ v51 = v42[105];
+ if ( v51 != 0 )
{
- v53 = sub_D11878(a1: v52, a2: v50);
- sub_D16B04(a1: v42[105], a2: v50, a3: v53 | 1);
+ v52 = sub_D11878(a1: v51, a2: v49);
+ sub_D16B04(a1: v42[105], a2: v49, a3: v52 | 1);
}
}
LABEL_72:
@@ -8370,40 +8374,35 @@ LABEL_72:
v17 = v43;
v46 = 4;
LABEL_74:
- *(_DWORD *)(a1 + 68) = v46;
+ a1->field44 = v46;
return v17;
}
- v47 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- if ( v47 > 0x15 )
- v49 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFC | 2;
- *(_DWORD *)(a1 + 68) = v49;
- if ( v10 != 48 || *(_DWORD *)(a1 + 32) == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
+ v48 = a1->field44 & 0xFFFFFFFE;
+ if ( field24 > 0x15 )
+ v48 = a1->field44 & 0xFFFFFFFC | 2;
+ a1->field44 = v48;
+ if ( v10 != 48 || a1->field20 == 0 || asd_encoder_state_check(a1: v5, a2: v44, a3: v45) != 0 )
return 0;
goto LABEL_89;
}
- *(_DWORD *)(a1 + 68) = 0;
- v48 = *(_DWORD *)(a1 + 32);
- if ( v48 != 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_connector_state_check(a1: v5, a2: v44, a3: v45) == 0 )
{
- v48 = asd_connector_state_check(a1: v5, a2: v44, a3: v45);
- if ( v48 == 0 )
- {
LABEL_89:
- *(_DWORD *)(a1 + 68) = 16;
- return 0;
- }
+ a1->field44 = 16;
+ return 0;
}
- if ( v47 < 0xA )
+ if ( field24 < 0xA )
return 0;
- v17 = sub_D07330(a1: v48, a2: v44);
+ v17 = sub_D07330();
if ( v17 == 0 && (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A08C + 8), a3: v5) & 0x70000000) == 0x30000000 )
- *(_DWORD *)(a1 + 68) |= 1u;
- if ( v47 >= 0x16 )
+ a1->field44 |= 1u;
+ if ( field24 >= 0x16 )
{
- v46 = *(_DWORD *)(a1 + 68) | 2;
+ v46 = a1->field44 | 2;
goto LABEL_74;
}
return v17;
@@ -13868,7 +13867,7 @@ int __fastcall j_sub_D07D78_11(int a1, _BYTE *a2, _BYTE *a3)
{
int v3; // r3
- return asd_program_link_by_signal_v2(a1, (int)a2, (int)a3, a4: v3);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, (int)a2, (int)a3, a4: v3);
}
/* ==== j_sub_D07E10_17 [tier=EXACT size=4] ==== */
@@ -13927,7 +13926,7 @@ int __fastcall j_sub_D07F50_9(int a1, int a2)
// attributes: thunk
int __fastcall j_sub_D07F90(int a1, int a2, int a3)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D07F90_2 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_reference_asd2.anon.c b/fw/decomp/asd_reference_asd2.anon.c
index 36d7143..760104c 100644
--- a/fw/decomp/asd_reference_asd2.anon.c
+++ b/fw/decomp/asd_reference_asd2.anon.c
@@ -2,7 +2,7 @@
* generated by fw/ta_re.py -- do not edit
* reference: asd2.elf
* functions: 1551 total in build, 1440 named, 111 anonymous
- * porting tiers: {"DISPATCH": 0, "EXACT": 1439, "FUZZY": 0, "MNEM": 0, "ambiguous": 109, "cmd_protos": 0, "comments": 995, "dispatch_conflict": 0, "none": 3, "protos": 1434, "relabelled": 0, "types": 1}
+ * porting tiers: {"DISPATCH": 0, "EXACT": 1439, "FUZZY": 0, "MNEM": 0, "ambiguous": 109, "cmd_protos": 0, "comments": 1002, "dispatch_conflict": 0, "none": 3, "protos": 1434, "relabelled": 0, "types": 1}
*
* Addresses are omitted and functions are ordered by NAME so that the same
* function lines up across versions. See the .index.json sidecar for
@@ -28,19 +28,23 @@ int __fastcall j_asd_dio_disable_all(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_pipe_lookup(_DWORD *a1)
+int __fastcall j_asd_clear_link_outputs_0(int a1, _BYTE *a2, _BYTE *a3)
{
- int v1; // r1
- __int16 v2; // r2
+ return asd_clear_link_outputs(a1, a2, a3);
+}
- return asd_pipe_lookup(a1, a2: v1, a3: v2);
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_set_link_param_40(int a1, _DWORD *a2, __int16 a3)
+{
+ return asd_set_link_param_40(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_clear_link_outputs_0(int a1, _BYTE *a2, _BYTE *a3)
+int __fastcall j_asd_reg_read_13D24_cfg0(unsigned int a1, int a2, __int16 a3)
{
- return asd_clear_link_outputs(a1, a2, a3);
+ return asd_reg_read_13D24_cfg0(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -59,12 +63,9 @@ int __fastcall j_asd_link_bringup_seq_v4(_DWORD *a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_reg_read_13D24_cfg0_0(int a1)
+int __fastcall j_asd_pipe_lookup(_DWORD *a1, int a2, __int16 a3)
{
- int v1; // r1
- __int16 v2; // r2
-
- return asd_reg_read_13D24_cfg0(a1, a2: v1, a3: v2);
+ return asd_pipe_lookup(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -75,19 +76,16 @@ int sub_D097F8()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_link_ready_full_check_2(int a1)
+int __fastcall j_asd_signal_status_check(int a1, int a2, __int16 a3)
{
- return asd_link_ready_full_check(a1);
+ return asd_signal_status_check(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_reg_read_13D24_cfg1(unsigned int a1)
+int __fastcall j_asd_link_ready_full_check_2(int a1)
{
- int v1; // r1
- __int16 v2; // r2
-
- return asd_reg_read_13D24_cfg1(a1, a2: v1, a3: v2);
+ return asd_link_ready_full_check(a1);
}
/* ==== ANON size=4 ==== */
@@ -99,6 +97,13 @@ int __fastcall j_asd_link_ready_full_check_4(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_link_reset_seq(__int64 a1, int a2, int a3)
+{
+ return asd_link_reset_seq(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2_0(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -140,13 +145,6 @@ int __fastcall j_asd_link_train_status(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
-{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int sub_D06578()
{
return sub_D072F0();
@@ -174,6 +172,20 @@ int __fastcall j_asd_get_signal_reg_0(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_link_program_timing(int a1, unsigned __int8 *a2, unsigned __int8 *a3)
+{
+ return asd_link_program_timing(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_encoder_query(_DWORD *a1, int a2, __int16 a3)
+{
+ return asd_encoder_query(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int sub_D05E6C()
{
return sub_D072F0();
@@ -181,11 +193,9 @@ int sub_D05E6C()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_set_link_param_40(int a1, _DWORD *a2)
+int __fastcall j_asd_reg_read_13D24_cfg1(unsigned int a1, int a2, __int16 a3)
{
- __int16 v2; // r2
-
- return asd_set_link_param_40(a1, a2, a3: v2);
+ return asd_reg_read_13D24_cfg1(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -239,40 +249,16 @@ int __fastcall j_asd_dio_read_pair(unsigned int a1, char *a2, _BYTE *a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_link_program_timing(int a1, int a2, int a3)
-{
- return asd_link_program_timing(a1, (unsigned __int8 *)a2, (unsigned __int8 *)a3);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_encoder_query(_DWORD *a1)
-{
- int v1; // r1
- __int16 v2; // r2
-
- return asd_encoder_query(a1, a2: v1, a3: v2);
-}
-
-/* ==== ANON size=4 ==== */
-// local variable allocation has failed, the output may be wrong!
-// attributes: thunk
-int __fastcall j_asd_link_reset_seq(_DWORD *a1)
+int __fastcall j_asd_set_link_param_44(int a1, _DWORD *a2, __int16 a3)
{
- int v1; // r2
- int v2; // r3
-
- return asd_link_reset_seq(a1: *(__int64 *)&a1, a2: v1, a3: v2);
+ return asd_set_link_param_44(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_signal_status_check(int a1)
+int __fastcall j_asd_encoder_enable_seq(int a1, char *a2, char *a3)
{
- int v1; // r1
- __int16 v2; // r2
-
- return asd_signal_status_check(a1, a2: v1, a3: v2);
+ return asd_encoder_enable_seq(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -303,17 +289,6 @@ int sub_D17D1C()
}
/* ==== ANON size=4 ==== */
-// local variable allocation has failed, the output may be wrong!
-// attributes: thunk
-int __fastcall j_asd_link_reset_seq_0(_DWORD *a1)
-{
- int v1; // r2
- int v2; // r3
-
- return asd_link_reset_seq(a1: *(__int64 *)&a1, a2: v1, a3: v2);
-}
-
-/* ==== ANON size=4 ==== */
// attributes: thunk
int __fastcall j_asd_link_train_status_0(int a1)
{
@@ -321,15 +296,6 @@ int __fastcall j_asd_link_train_status_0(int a1)
}
/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_set_link_param_44(int a1, _DWORD *a2)
-{
- __int16 v2; // r2
-
- return asd_set_link_param_44(a1, a2, a3: v2);
-}
-
-/* ==== ANON size=4 ==== */
int sub_D08230()
{
return 7;
@@ -371,16 +337,6 @@ int __fastcall j_asd_link_ready_full_check_0(int a1)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_reg_read_13D24_cfg0(int a1)
-{
- int v1; // r1
- __int16 v2; // r2
-
- return asd_reg_read_13D24_cfg0(a1, a2: v1, a3: v2);
-}
-
-/* ==== ANON size=4 ==== */
-// attributes: thunk
int __fastcall j_asd_write_block_paged_1(int a1, int a2, int a3)
{
return asd_write_block_paged(a1, a2, a3);
@@ -430,9 +386,9 @@ int __fastcall j_asd_link_set_reg42468_byte(int a1, int a2)
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_encoder_enable_seq(int a1, int a2, int a3)
+int __fastcall j_asd_link_reset_seq_0(__int64 a1, int a2, int a3)
{
- return asd_encoder_enable_seq(a1, (char *)a2, (char *)a3);
+ return asd_link_reset_seq(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
@@ -444,6 +400,20 @@ int __fastcall j_asd_write_block_paged(int a1, int a2, int a3)
/* ==== ANON size=4 ==== */
// attributes: thunk
+int __fastcall j_asd_link_query_b(_DWORD *a1, int a2, __int16 a3)
+{
+ return asd_link_query_b(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
+int __fastcall j_asd_reg_read_13D24_cfg0_0(unsigned int a1, int a2, __int16 a3)
+{
+ return asd_reg_read_13D24_cfg0(a1, a2, a3);
+}
+
+/* ==== ANON size=4 ==== */
+// attributes: thunk
int __fastcall j_asd_reg_read_13B74_cfg2(int a1)
{
return asd_reg_read_13B74_cfg2(a1);
@@ -457,6 +427,9 @@ int __fastcall j_asd_get_link_caps_full_v4(int a1)
}
/* ==== ANON size=4 ==== */
+/* decompile failed: call analysis failed */
+
+/* ==== ANON size=4 ==== */
int sub_D072F0()
{
return 7;
@@ -478,53 +451,23 @@ int sub_D061DC()
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_link_ready_full_check_3(int a1)
+int __fastcall j_asd_pipe_lookup_0(_DWORD *a1, int a2, __int16 a3)
{
- return asd_link_ready_full_check(a1);
+ return asd_pipe_lookup(a1, a2, a3);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int sub_D17B6C()
+int __fastcall j_asd_link_ready_full_check_3(int a1)
{
- return sub_D18A60();
+ return asd_link_ready_full_check(a1);
}
/* ==== ANON size=4 ==== */
// attributes: thunk
-int __fastcall j_asd_pipe_lookup_0(_DWORD *a1)
-{
- int v1; // r1
- __int16 v2; // r2
-
- return asd_pipe_lookup(a1, a2: v1, a3: v2);
-}
-
-/* ==== ANON size=4 ==== */
-_BYTE *__fastcall sub_D01058(_BYTE *result, int *a2, unsigned int a3, int a4)
+int sub_D17B6C()
{
- int v4; // r5
- unsigned int v5; // r6
- int v6; // r7
- unsigned int v7; // r4
- void (__fastcall *v12)(int, int, int, int); // r5
- int v13; // r3
- int v14; // r3
- int v15; // r3
-
- v7 = asd_ddc_aux_transact(a1: *(_DWORD *)(v4 + 4), a2: *(_DWORD *)(v4 + 8), a3, a4: (unsigned int)result);
- if ( *(_DWORD *)(v6 + 4) != -1 )
- __asm { SVC 0x5F ; '_' }
- if ( v7 != 0 )
- {
- v12 = (void (__fastcall *)(int, int, int, int))off_D01914;
- off_D01914(a1: 227, a2: 1, a3: 61440);
- v12(a1: 227, a2: 1, a3: HIWORD(v7), a4: v13);
- v12(a1: 227, a2: 1, a3: (unsigned __int16)v7, a4: v14);
- if ( v5 <= 0xFFFE )
- asd_log_event(a1: 227, a2: 1, a3: (unsigned __int16)v5, a4: v15);
- }
- __asm { POP {R1-R7,PC} }
+ return sub_D18A60();
}
/* ==== ANON size=4 ==== */
@@ -549,19 +492,16 @@ int __fastcall j_asd_link_write_quad_0(int a1, _DWORD *a2)
}
/* ==== ANON size=4 ==== */
-// attributes: thunk
-int __fastcall j_asd_link_query_b(_DWORD *a1)
+int sub_D07D2C()
{
- int v1; // r1
- __int16 v2; // r2
-
- return asd_link_query_b(a1, a2: v1, a3: v2);
+ return 7;
}
/* ==== ANON size=4 ==== */
-int sub_D07D2C()
+// attributes: thunk
+int __fastcall j_asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
- return 7;
+ return asd_program_link_by_signal_v2(a1, a2, a3, a4);
}
/* ==== ANON size=10 ==== */
@@ -619,56 +559,47 @@ void *sub_D187A0()
}
/* ==== ANON size=30 ==== */
-int sub_D141BA()
-{
- __asm { SVC 0x7B ; '{' }
- return 0;
-}
-
-/* ==== ANON size=30 ==== */
-int sub_D14142()
-{
- __asm { SVC 0x7B ; '{' }
- return 0;
-}
-
-/* ==== ANON size=30 ==== */
-int __fastcall sub_D15CD0(int a1)
+int __fastcall sub_D12268(int *a1, _DWORD *a2)
{
int result; // r0
+ int v4; // r0
+ char *v5; // r2
+ int v6; // r3
+ int v7; // r4
- result = 0;
- if ( a1 == 0 )
+ result = 2;
+ if ( a1 != nullptr && a2 != nullptr )
{
- __asm { SVC 0x7B ; '{' }
+ v4 = *a1;
+ v5 = off_D12288;
+ *(_DWORD *)off_D12288 = v4;
+ v5 += 4;
+ v6 = a2[1];
+ v7 = a2[2];
+ *(_DWORD *)v5 = *a2;
+ *((_DWORD *)v5 + 1) = v6;
+ *((_DWORD *)v5 + 2) = v7;
return 0;
}
return result;
}
/* ==== ANON size=30 ==== */
-int sub_D14160()
-{
- __asm { SVC 0x7B ; '{' }
- return 0;
-}
-
-/* ==== ANON size=30 ==== */
-int sub_D14124()
+int sub_D141BA()
{
__asm { SVC 0x7B ; '{' }
return 0;
}
/* ==== ANON size=30 ==== */
-int sub_D1419C()
+int sub_D14142()
{
__asm { SVC 0x7B ; '{' }
return 0;
}
/* ==== ANON size=30 ==== */
-int __fastcall sub_D15C54(int a1)
+int __fastcall sub_D15CD0(int a1)
{
int result; // r0
@@ -682,7 +613,7 @@ int __fastcall sub_D15C54(int a1)
}
/* ==== ANON size=30 ==== */
-int __fastcall sub_D12268(_DWORD *a1, int *a2)
+int __fastcall sub_D126D8(int *a1, _DWORD *a2)
{
int result; // r0
int v4; // r0
@@ -694,8 +625,8 @@ int __fastcall sub_D12268(_DWORD *a1, int *a2)
if ( a1 != nullptr && a2 != nullptr )
{
v4 = *a1;
- v5 = off_D12288;
- *(_DWORD *)off_D12288 = v4;
+ v5 = off_D126F8;
+ *(_DWORD *)off_D126F8 = v4;
v5 += 4;
v6 = a2[1];
v7 = a2[2];
@@ -708,38 +639,47 @@ int __fastcall sub_D12268(_DWORD *a1, int *a2)
}
/* ==== ANON size=30 ==== */
-int sub_D1417E()
+int sub_D14160()
{
__asm { SVC 0x7B ; '{' }
return 0;
}
/* ==== ANON size=30 ==== */
-int __fastcall sub_D126D8(_DWORD *a1, int *a2)
+int sub_D14124()
+{
+ __asm { SVC 0x7B ; '{' }
+ return 0;
+}
+
+/* ==== ANON size=30 ==== */
+int sub_D1419C()
+{
+ __asm { SVC 0x7B ; '{' }
+ return 0;
+}
+
+/* ==== ANON size=30 ==== */
+int __fastcall sub_D15C54(int a1)
{
int result; // r0
- int v4; // r0
- char *v5; // r2
- int v6; // r3
- int v7; // r4
- result = 2;
- if ( a1 != nullptr && a2 != nullptr )
+ result = 0;
+ if ( a1 == 0 )
{
- v4 = *a1;
- v5 = off_D126F8;
- *(_DWORD *)off_D126F8 = v4;
- v5 += 4;
- v6 = a2[1];
- v7 = a2[2];
- *(_DWORD *)v5 = *a2;
- *((_DWORD *)v5 + 1) = v6;
- *((_DWORD *)v5 + 2) = v7;
+ __asm { SVC 0x7B ; '{' }
return 0;
}
return result;
}
+/* ==== ANON size=30 ==== */
+int sub_D1417E()
+{
+ __asm { SVC 0x7B ; '{' }
+ return 0;
+}
+
/* ==== ANON size=54 ==== */
int __fastcall sub_D12A58(_WORD *a1)
{
diff --git a/fw/decomp/asd_reference_asd2.c b/fw/decomp/asd_reference_asd2.c
index 432200c..bf56b1b 100644
--- a/fw/decomp/asd_reference_asd2.c
+++ b/fw/decomp/asd_reference_asd2.c
@@ -2,7 +2,7 @@
* generated by fw/ta_re.py -- do not edit
* reference: asd2.elf
* functions: 1551 total in build, 1440 named, 111 anonymous
- * porting tiers: {"DISPATCH": 0, "EXACT": 1439, "FUZZY": 0, "MNEM": 0, "ambiguous": 109, "cmd_protos": 0, "comments": 995, "dispatch_conflict": 0, "none": 3, "protos": 1434, "relabelled": 0, "types": 1}
+ * porting tiers: {"DISPATCH": 0, "EXACT": 1439, "FUZZY": 0, "MNEM": 0, "ambiguous": 109, "cmd_protos": 0, "comments": 1002, "dispatch_conflict": 0, "none": 3, "protos": 1434, "relabelled": 0, "types": 1}
*
* Addresses are omitted and functions are ordered by NAME so that the same
* function lines up across versions. See the .index.json sidecar for
@@ -215,7 +215,14 @@ int __fastcall asd_asic_family_lookup(int a1)
// register (asd_reg_read_14160) is clear.
BOOL __fastcall asd_aux_idle_check(unsigned int a1)
{
- return a1 <= 1 && asd_feature_level_check(a1: 14, a2: a1) != 0 && (sub_D14160() & 1) == 0;
+ int v2; // r0
+
+ if ( a1 > 1 || asd_feature_level_check(a1: 14, a2: a1) == 0 )
+ return false;
+ v2 = dword_D17BF8 + 768;
+ if ( a1 == 0 )
+ v2 = 132121105;
+ return (sub_D14160(a1: v2) & 1) == 0;
}
/* ==== asd_aux_op_D1891C [tier=EXACT size=48] ==== */
@@ -3684,7 +3691,7 @@ LABEL_7:
v8 = 8;
goto LABEL_9;
}
- v6 = (void *)off_D14600;
+ v6 = off_D14600;
v7 = a2;
v8 = 5;
LABEL_9:
@@ -3702,7 +3709,7 @@ LABEL_9:
// Per-instance config wrapper: loads register offsets 13552/13592/13600 and calls sub_D12268.
int __fastcall asd_cfg_D12268_a()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -3716,7 +3723,7 @@ int __fastcall asd_cfg_D12268_a()
// Per-instance config wrapper: loads register offsets 13572/13624/13632 and calls sub_D12268.
int __fastcall asd_cfg_D12268_b()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -4049,7 +4056,7 @@ int __fastcall asd_connector_program_seq(unsigned int a1)
return 5;
v2 = (int *)off_D0720C;
v4 = (void (__fastcall *)(int, unsigned int, __int16))off_D06EB8;
- off_D06EB8(a1: *((_DWORD *)off_D0720C + 129), a2: a1, a3: *(_DWORD *)&dword_D06EB4);
+ off_D06EB8(a1: *((_DWORD *)off_D0720C + 129), a2: a1, a3: dword_D06EB4);
v4(a1: v2[130], a2: a1, a3: dword_D06EBC);
v4(a1: v2[131], a2: a1, a3: dword_D06EC0);
v4(a1: v2[132], a2: a1, a3: dword_D06EC4);
@@ -4146,7 +4153,7 @@ BOOL __fastcall asd_crypto_setup_key(int a1, int *a2, int a3, int a4)
v8 = *off_D14A3C;
if ( a1 != 0 && a2 != nullptr && a3 != 0 )
{
- sub_D01058(result: v7, a2, a3: 0x10u, a4);
+ sub_D01058(a1: v7, a2, a3: 16);
if ( gp_object_allocate() == 0
&& gp_populate_transient_object() == 0
&& gp_operation_allocate() == 0
@@ -4173,19 +4180,17 @@ LABEL_12:
int __fastcall asd_ddc_aux_transact(unsigned int a1, unsigned int a2, int a3, unsigned int a4)
{
int result; // r0
- int v9; // r3
- int v10; // r8
- int v11; // r6
- unsigned int v12; // r1
- unsigned __int8 v13; // r11
- unsigned __int8 v14; // r9
+ int v9; // r8
+ int v10; // r6
+ unsigned int v11; // r1
+ unsigned __int8 v12; // r11
+ unsigned __int8 v13; // r9
+ int v14; // r0
int v15; // r0
- int v16; // r2
- int v17; // r0
- int v18; // r0
- int v19; // r1
- unsigned int v20; // [sp+4h] [bp-8h]
- int v21; // [sp+8h] [bp-4h]
+ int v16; // r0
+ int v17; // r1
+ unsigned int v18; // [sp+4h] [bp-8h]
+ int v19; // [sp+8h] [bp-4h]
if ( !asd_feature_enabled(a1: 15) )
return 8;
@@ -4196,52 +4201,50 @@ int __fastcall asd_ddc_aux_transact(unsigned int a1, unsigned int a2, int a3, un
{
if ( asd_validate_ptr(a1: a2, a2: 0x280u) != 0 && asd_validate_ptr(a1: a4, a2: 0x10u) != 0 )
{
- v10 = dword_D10108;
- v11 = 0;
- v12 = *(_DWORD *)(dword_D0F4BC + 7300);
+ v9 = dword_D10108;
+ v10 = 0;
+ v11 = *(_DWORD *)(dword_D0F4BC + 7300);
+ v12 = 0;
v13 = 0;
- v14 = 0;
- v21 = 0;
+ v19 = 0;
while ( a3 << 24 != 0 )
{
- if ( v12 << 31 == 0 )
+ if ( v11 << 31 == 0 )
{
- v20 = v12;
- sub_D01058(result: (_BYTE *)(5 * v11 + v10 + 7317), a2: (int *)(5 * v13 + a2), a3: 5u, a4: v9);
+ v18 = v11;
+ sub_D01058(a1: 5 * v10 + v9 + 7317, a2: 5 * v12 + a2, a3: 5);
--a3;
- v15 = 1 << (v14 & 0x1F);
- v16 = v10 + 4 * (unsigned __int8)v21;
- v9 = *(_DWORD *)(v16 + 7300) | v15;
- *(_DWORD *)(v16 + 7300) = v9;
- *(_DWORD *)(a4 + 4 * (unsigned __int8)v21) |= v15;
- ++*(_BYTE *)(v10 + 7316);
- *(_DWORD *)(v10 + 4 * v11 + 6788) = a1;
- v17 = v13 + 1;
- v12 = v20;
- ++v13;
- if ( (unsigned __int8)v17 != v17 )
- v13 = -1;
+ v14 = 1 << (v13 & 0x1F);
+ *(_DWORD *)(v9 + 4 * (unsigned __int8)v19 + 7300) |= v14;
+ *(_DWORD *)(a4 + 4 * (unsigned __int8)v19) |= v14;
+ ++*(_BYTE *)(v9 + 7316);
+ *(_DWORD *)(v9 + 4 * v10 + 6788) = a1;
+ v15 = v12 + 1;
+ v11 = v18;
+ ++v12;
+ if ( (unsigned __int8)v15 != v15 )
+ v12 = -1;
}
- v18 = v14 + 1;
- ++v11;
- ++v14;
- if ( (unsigned __int8)v18 != v18 )
- v14 = -1;
- if ( v11 << 27 != 0 )
+ v16 = v13 + 1;
+ ++v10;
+ ++v13;
+ if ( (unsigned __int8)v16 != v16 )
+ v13 = -1;
+ if ( v10 << 27 != 0 )
{
- v12 >>= 1;
+ v11 >>= 1;
}
else
{
- v19 = v21;
- v14 = 0;
- if ( (unsigned __int8)v21 < 3u )
- v19 = v21 + 1;
- v21 = v19;
- v12 = *(_DWORD *)(dword_D0F568 + 4 * (unsigned __int8)v19 + 7300);
+ v17 = v19;
+ v13 = 0;
+ if ( (unsigned __int8)v19 < 3u )
+ v17 = v19 + 1;
+ v19 = v17;
+ v11 = *(_DWORD *)(dword_D0F568 + 4 * (unsigned __int8)v17 + 7300);
}
result = 0;
- if ( v11 == 128 )
+ if ( v10 == 128 )
return result;
}
return 0;
@@ -4260,19 +4263,23 @@ int __fastcall asd_ddc_aux_transact(unsigned int a1, unsigned int a2, int a3, un
int __fastcall asd_dio_apply_mask(unsigned int a1, int a2)
{
int result; // r0
- unsigned int *v4; // r6
- unsigned int v5; // r0
+ unsigned int v4; // r6
+ unsigned int *v5; // r6
+ int v6; // t1
+ unsigned int v7; // r0
result = asd_feature_level_check(a1: 14, a2: a1);
if ( result != 0 )
{
- v4 = (unsigned int *)(dword_D18514 + 4 * a1 + 32);
- sub_D1417E();
- asd_reg_write_1981C(a1: *v4);
- v5 = *(v4 - 2);
- if ( v5 != 0 )
- asd_reg_write_1981C(a1: v5);
- return sub_D1417E();
+ v4 = dword_D18514 + 4 * a1;
+ v6 = *(_DWORD *)(v4 + 32);
+ v5 = (unsigned int *)(v4 + 32);
+ sub_D1417E(a1: v6);
+ asd_reg_write_1981C(a1: *v5);
+ v7 = *(v5 - 2);
+ if ( v7 != 0 )
+ asd_reg_write_1981C(a1: v7);
+ return sub_D1417E(a1: *v5);
}
return result;
}
@@ -4318,7 +4325,7 @@ int __fastcall asd_dio_desc_D330D0()
int v0; // r2
int v1; // r3
int v3[11]; // [sp+0h] [bp-100h] BYREF
- int v4[43]; // [sp+2Ch] [bp-D4h] BYREF
+ _DWORD v4[43]; // [sp+2Ch] [bp-D4h] BYREF
int v5[4]; // [sp+D8h] [bp-28h] BYREF
char v6; // [sp+E8h] [bp-18h]
int *v7; // [sp+ECh] [bp-14h]
@@ -4352,7 +4359,7 @@ int __fastcall asd_dio_desc_D330F8()
int v0; // r2
int v1; // r3
int v3[11]; // [sp+0h] [bp-100h] BYREF
- int v4[43]; // [sp+2Ch] [bp-D4h] BYREF
+ _DWORD v4[43]; // [sp+2Ch] [bp-D4h] BYREF
int v5[4]; // [sp+D8h] [bp-28h] BYREF
char v6; // [sp+E8h] [bp-18h]
int *v7; // [sp+ECh] [bp-14h]
@@ -4388,7 +4395,7 @@ int __fastcall asd_dio_desc_D33120()
int v0; // r2
int v1; // r3
int v3[11]; // [sp+0h] [bp-100h] BYREF
- int v4[43]; // [sp+2Ch] [bp-D4h] BYREF
+ _DWORD v4[43]; // [sp+2Ch] [bp-D4h] BYREF
int v5[4]; // [sp+D8h] [bp-28h] BYREF
char v6; // [sp+E8h] [bp-18h]
int v7; // [sp+ECh] [bp-14h]
@@ -4424,7 +4431,7 @@ int __fastcall asd_dio_desc_D33148()
int v0; // r2
int v1; // r3
int v3[11]; // [sp+0h] [bp-100h] BYREF
- int v4[43]; // [sp+2Ch] [bp-D4h] BYREF
+ _DWORD v4[43]; // [sp+2Ch] [bp-D4h] BYREF
int v5[4]; // [sp+D8h] [bp-28h] BYREF
char v6; // [sp+E8h] [bp-18h]
int v7; // [sp+ECh] [bp-14h]
@@ -4531,7 +4538,7 @@ int __fastcall asd_dio_desc_D33170()
int v0; // r2
int v1; // r3
int v3[11]; // [sp+0h] [bp-100h] BYREF
- int v4[43]; // [sp+2Ch] [bp-D4h] BYREF
+ _DWORD v4[43]; // [sp+2Ch] [bp-D4h] BYREF
int v5[4]; // [sp+D8h] [bp-28h] BYREF
char v6; // [sp+E8h] [bp-18h]
int v7; // [sp+ECh] [bp-14h]
@@ -4870,7 +4877,7 @@ int __fastcall asd_dio_desc_D33228()
int v3[11]; // [sp+0h] [bp-100h] BYREF
_DWORD v4[14]; // [sp+2Ch] [bp-D4h] BYREF
_DWORD v5[12]; // [sp+64h] [bp-9Ch] BYREF
- int v6[17]; // [sp+94h] [bp-6Ch] BYREF
+ _DWORD v6[17]; // [sp+94h] [bp-6Ch] BYREF
int v7[4]; // [sp+D8h] [bp-28h] BYREF
char v8; // [sp+E8h] [bp-18h]
int v9; // [sp+ECh] [bp-14h]
@@ -5086,7 +5093,9 @@ BOOL __fastcall asd_dio_entry_present(unsigned int a1)
// register's low 2 bits are clear.
BOOL __fastcall asd_dio_idle_check(unsigned int a1)
{
- return *((_DWORD *)off_D1897C + 2) > a1 && asd_feature_level_check(a1: 14, a2: a1) != 0 && (sub_D1417E() & 3) == 0;
+ return *((_DWORD *)off_D1897C + 2) > a1
+ && asd_feature_level_check(a1: 14, a2: a1) != 0
+ && (sub_D1417E(a1: *(_DWORD *)(dword_D18980 + 4 * a1)) & 3) == 0;
}
/* ==== asd_dio_program_regs [tier=EXACT size=88] ==== */
@@ -5113,27 +5122,27 @@ int __fastcall asd_dio_program_regs(unsigned int a1)
/* ==== asd_dio_read_block [tier=EXACT size=116] ==== */
// Feature-14 gated, bounds a2 < dword_D33300. Reads a block through the per-link register
// at byte_D42661[4*a2+151].
-int __fastcall asd_dio_read_block(int a1, unsigned int a2)
+int __fastcall asd_dio_read_block(struct asd_link_caps *a1, unsigned int a2)
{
int v4; // r1
int result; // r0
_DWORD *v6; // r1
unsigned int v7; // r2
- int v8; // r3
+ unsigned int v8; // r3
unsigned int v9; // r2
- int v10; // r3
+ unsigned int v10; // r3
unsigned int v11; // r2
- int v12; // r3
+ unsigned int v12; // r3
unsigned int v13; // r2
- int v14; // r3
+ unsigned int v14; // r3
unsigned int v15; // r1
- int v16; // r2
+ unsigned int v16; // r2
if ( *((_DWORD *)off_D18658 + 2) <= a2 )
return 2;
v4 = asd_feature_level_check(a1: 14, a2);
result = 2;
- if ( a1 != 0 && v4 != 0 )
+ if ( a1 != nullptr && v4 != 0 )
{
v6 = (_DWORD *)(dword_D1865C + 4 * a2);
result = 0;
@@ -5141,28 +5150,28 @@ int __fastcall asd_dio_read_block(int a1, unsigned int a2)
v8 = 4 * v7;
if ( v7 >> 30 != 0 )
v8 = 0;
- *(_DWORD *)(a1 + 4) = v8;
+ a1->field04 = v8;
v9 = v6[18];
v10 = 4 * v9;
if ( v9 >> 30 != 0 )
v10 = 0;
- *(_DWORD *)(a1 + 12) = v10;
+ a1->field0C = v10;
v11 = v6[20];
v12 = 4 * v11;
if ( v11 >> 30 != 0 )
v12 = 0;
- *(_DWORD *)(a1 + 16) = v12;
+ a1->field10 = v12;
v13 = v6[22];
v14 = 4 * v13;
if ( v13 >> 30 != 0 )
v14 = 0;
- *(_DWORD *)(a1 + 20) = v14;
+ a1->field14 = v14;
v15 = v6[24];
- *(_WORD *)a1 = 4;
+ LOWORD(a1->unk00) = 4;
v16 = 4 * v15;
if ( v15 >> 30 != 0 )
v16 = 0;
- *(_DWORD *)(a1 + 24) = v16;
+ a1->field18 = v16;
}
return result;
}
@@ -5215,40 +5224,44 @@ int __fastcall asd_dio_read_block10(_DWORD *a1, unsigned int a2)
// outputs.
int __fastcall asd_dio_read_pair(unsigned int a1, char *a2, _BYTE *a3)
{
- int v5; // r0
- int v6; // r5
- int v7; // r8
+ int v6; // r0
+ int v7; // r5
int v8; // r0
- unsigned int v9; // r0
- char v10; // r1
- unsigned int v11; // r1
+ unsigned int v9; // r7
+ int v10; // r8
+ int v11; // r0
+ unsigned int v12; // r0
+ char v13; // r1
+ unsigned int v14; // r1
if ( *((_DWORD *)off_D1897C + 2) <= a1 )
return 0;
- v5 = asd_feature_level_check(a1: 14, a2: a1);
- v6 = 0;
- if ( a3 != nullptr && a2 != nullptr && v5 != 0 )
+ v6 = asd_feature_level_check(a1: 14, a2: a1);
+ v7 = 0;
+ if ( a3 != nullptr && a2 != nullptr && v6 != 0 )
{
- v6 = 0;
+ v8 = dword_D18980;
+ v7 = 0;
*a2 = 0;
+ v9 = v8 + 4 * a1;
*a3 = 0;
- v7 = sub_D1417E();
- v8 = sub_D1417E();
- if ( v7 != v8 )
+ v10 = sub_D1417E(a1: *(_DWORD *)(v9 + 8));
+ v11 = sub_D1417E(a1: *(_DWORD *)(v9 + 16));
+ if ( v10 != v11 )
{
- v9 = v8 ^ v7;
- v10 = v9;
- if ( (_WORD)v9 != 0 )
- v10 = 1;
- *a2 = v10;
- v11 = HIWORD(v9);
- v6 = 1;
- if ( HIWORD(v9) != 0 )
- LOBYTE(v11) = 1;
- *a3 = v11;
+ v12 = v11 ^ v10;
+ v13 = v12;
+ if ( (_WORD)v12 != 0 )
+ v13 = 1;
+ *a2 = v13;
+ v14 = HIWORD(v12);
+ v7 = 1;
+ if ( HIWORD(v12) != 0 )
+ LOBYTE(v14) = 1;
+ *a3 = v14;
}
}
- return v6;
+ return v7;
}
/* ==== asd_dio_set_pair [tier=EXACT size=78] ==== */
@@ -5261,8 +5274,8 @@ int __fastcall asd_dio_set_pair(unsigned int a1, int a2, int a3)
if ( *(_DWORD *)(loc_D17EB0 + 8) <= a1 || asd_feature_level_check(a1: 14, a2: a1) == 0 )
return 2;
v4 = dword_D17D14 + 4 * a1;
- sub_D1417E();
- sub_D1417E();
+ sub_D1417E(a1: *(_DWORD *)(v4 + 8));
+ sub_D1417E(a1: *(_DWORD *)(v4 + 16));
asd_reg_write_1981C(a1: *(_DWORD *)(v4 + 16));
return 0;
}
@@ -5324,353 +5337,21 @@ int __fastcall asd_dio_write_verify(unsigned int a1, int a2, unsigned int a3)
if ( *((_DWORD *)off_D18B04 + 2) <= a3 || asd_feature_level_check(a1: 14, a2: a3) == 0 )
return 2;
- if ( sub_D1417E() << 30 != 0 )
+ if ( sub_D1417E(a1: *(_DWORD *)(dword_D18B08 + 4 * a3)) << 30 != 0 )
return 38;
asd_reg_write_1981C(a1);
- if ( sub_D1417E() == a2 )
+ if ( sub_D1417E(a1) == a2 )
return 0;
__asm { SVC 0x56 ; 'V' }
asd_reg_write_1981C(a1);
- result = sub_D1417E() - a2;
+ result = sub_D1417E(a1) - a2;
if ( result != 0 )
return 38;
return result;
}
/* ==== asd_dispatch [tier=DISPATCH size=842] ==== */
-unsigned int __fastcall asd_dispatch(struct asd_req *req, int a2, int a3, int a4)
-{
- int *v4; // r7
- int v6; // r0
- void (__fastcall *v7)(int *); // r2
- unsigned int rpc_id; // r6
- int v12; // r0
- unsigned int caps; // r0
- void (__fastcall *v15)(int, int, int, int); // r5
- int v16; // r3
- int v17; // r3
- unsigned int v18; // r4
- void (__fastcall *v19)(int, int, int, int); // r5
- int v20; // r3
- int v21; // r3
- int v22; // r3
-
- if ( req == nullptr )
- {
- v15 = (void (__fastcall *)(int, int, int, int))off_D01914;
- off_D01914(a1: 227, a2: 1, a3: 61440);
- v15(a1: 227, a2: 1, a3: 0, a4: v16);
- v15(a1: 227, a2: 1, a3: 2, a4: v17);
- goto LABEL_100;
- }
- v4 = off_D01910;
- v6 = off_D01910[1];
- v7 = (void (__fastcall *)(int *))(v6 + 1);
- if ( v6 != -1 )
- __asm { SVC 0x5E ; '^' }
- rpc_id = req->rpc_id;
- if ( req->rpc_id - 384 <= 0x40 ) // jumptable 00D014F2 default case
- {
- switch ( req->rpc_id )
- {
- case 0x180u:
- caps = asd_hdcp1_init(a1: req->arg1); // jumptable 00D01464 case 384
- goto LABEL_94;
- case 0x181u:
- caps = asd_hdcp1_write_an(a1: req->arg1, a2: LOBYTE(req->arg2));// jumptable 00D01464 case 385
- goto LABEL_94;
- case 0x182u:
- caps = asd_hdcp1_read_caps(a1: req->arg1, a2: req->arg2, a3: req->arg3);// jumptable 00D01464 case 386
- goto LABEL_94;
- case 0x183u:
- caps = asd_hdcp1_read_bksv(a1: req->arg1, a2: req->arg2, a3: req->arg3);// jumptable 00D01464 case 387
- goto LABEL_94;
- case 0x184u:
- caps = asd_hdcp1_setup(a1: req->arg1, a2: req->arg2, a3: req->arg3);// jumptable 00D01464 case 388
- goto LABEL_94;
- case 0x185u:
- caps = asd_hdcp1_compute_ri(a1: req->arg1, a2: req->arg2, a3: req->arg3);// jumptable 00D01464 case 389
- goto LABEL_94;
- case 0x186u:
- caps = asd_hdcp1_read_ri(a1: req->arg1, a2: LOWORD(req->arg2), a3: HIWORD(req->arg2));// jumptable 00D01464 case 390
- goto LABEL_94;
- case 0x187u:
- caps = asd_hdcp1_enable_encryption(a1: req->arg1);// jumptable 00D01464 case 391
- goto LABEL_94;
- case 0x188u:
- caps = asd_hdcp1_enable_stream_enc(a1: req->arg1);// jumptable 00D01464 case 392
- goto LABEL_94;
- case 0x189u:
- caps = asd_hdcp1_disable(a1: req->arg1);// jumptable 00D01464 case 393
- goto LABEL_94;
- case 0x18Au:
- caps = asd_hdcp1_write_v(a1: req->arg1);// jumptable 00D01464 case 394
- goto LABEL_94;
- case 0x18Bu:
- caps = asd_hdcp1_op_18B(a1: req->arg1); // jumptable 00D01464 case 395
- goto LABEL_94;
- case 0x18Cu:
- caps = asd_hdcp1_verify_v(a1: req->arg1, a2: req->arg2, a3: req->arg3, a4: req->arg4);// jumptable 00D01464 case 396
- goto LABEL_94;
- case 0x18Du:
- goto LABEL_89; // switch jump
- case 0x18Eu:
- JUMPOUT(0xD01702);
- default:
- abort();
- }
- }
- switch ( rpc_id )
- {
- case 0x100u:
- caps = asd_topology_update(a1: req->arg1, a2: req->arg2);// jumptable 00D014F2 case 256
- goto LABEL_94;
- case 0x101u:
- caps = asd_topology_remove(a1: req->arg1);// jumptable 00D014F2 case 257
- goto LABEL_94;
- case 0x102u:
- caps = asd_topology_op_102(a1: req->arg1, a2: (_DWORD *)req->arg2);// jumptable 00D014F2 case 258
- goto LABEL_94;
- case 0x103u:
- caps = asd_session_open(a1: req->arg1, a2: (_DWORD *)req->arg2);// jumptable 00D014F2 case 259
- goto LABEL_94;
- case 0x104u:
- case 0x105u:
- case 0x106u:
- case 0x107u:
- case 0x108u:
- case 0x109u:
- case 0x10Au:
- case 0x10Bu:
- case 0x10Cu:
- case 0x10Du:
- abort(); // switch jump
- default:
- switch ( rpc_id )
- {
- case 0x200u:
- caps = asd_svc_op_200(a1: req->arg1); // jumptable 00D0151C case 512
- goto LABEL_94;
- case 0x201u:
- caps = asd_svc_op_201(a1: (unsigned int *)req->arg1);// jumptable 00D0151C case 513
- goto LABEL_94;
- case 0x202u:
- caps = asd_svc_op_202(a1: req->arg1, a2: req->arg2, a3: req->arg3, a4: (unsigned int *)req->arg4);// jumptable 00D0151C case 514
- goto LABEL_94;
- case 0x203u:
- caps = asd_svc_op_203(a1: req->arg1, a2: (unsigned __int8 *)req->arg2, a3: req->arg3);// jumptable 00D0151C case 515
- goto LABEL_94;
- case 0x204u:
- caps = asd_svc_op_204(a1: req->arg1); // jumptable 00D0151C case 516
- goto LABEL_94;
- case 0x205u:
- v18 = asd_svc_op_205(a1: req->arg1, a2: req->arg2);// jumptable 00D0151C case 517
- if ( asd_svc_op_209() == 0 && req->arg1 == 1 )
- asd_session_op57();
- goto LABEL_95;
- case 0x206u:
- v18 = asd_svc_op_206(a1: req->arg1, a2: req->arg2);// jumptable 00D0151C case 518
- if ( asd_svc_op_209() == 0 && req->arg1 == 1 && !asd_dio_entry_present(a1: 1u) )
- asd_session_timeout_disable();
- goto LABEL_95;
- case 0x207u:
- caps = asd_svc_op_207(a1: req->arg1); // jumptable 00D0151C case 519
- goto LABEL_94;
- case 0x208u:
- caps = asd_log_event(a1: LOBYTE(req->arg1), a2: BYTE1(req->arg1), a3: HIWORD(req->arg1), a4);// jumptable 00D0151C case 520
- goto LABEL_94;
- case 0x209u:
- caps = asd_svc_op_209(); // jumptable 00D0151C case 521
- goto LABEL_94;
- case 0x20Au:
- caps = asd_svc_op_20A(a1: (int *)req->arg1, a2: req->arg2);// jumptable 00D0151C case 522
- goto LABEL_94;
- case 0x20Bu:
- caps = asd_svc_op_20B(a1: (BOOL *)req->arg1);// jumptable 00D0151C case 523
- goto LABEL_94;
- case 0x20Cu:
- case 0x20Du:
- goto LABEL_89; // switch jump
- case 0x20Eu:
- caps = asd_svc_op_20E(); // jumptable 00D0151C case 526
- goto LABEL_94;
- default:
- switch ( rpc_id )
- { // switch jump
- case 0x300u:
- caps = asd_srm_read(a1: (int *)req->arg1, a2: req->arg2, a3: (_DWORD *)req->arg3, a4: (_BYTE *)req->arg4);// jumptable 00D01546 case 768
- goto LABEL_94;
- case 0x301u:
- caps = asd_srm_op_301(a1: req->arg1, a2: req->arg2, a3: (int *)req->arg3, a4, a5: a2, a6: a3, a7: a4);// jumptable 00D01546 case 769
- goto LABEL_94;
- case 0x302u:
- caps = asd_srm_query(a1: (char *)req->arg1);// jumptable 00D01546 case 770
- goto LABEL_94;
- case 0x303u:
- caps = asd_srm_check_receiver_id(a1: (char *)req->arg1);// jumptable 00D01546 case 771
- goto LABEL_94;
- case 0x304u:
- caps = asd_op_304(a1: rpc_id - 768, a2);// jumptable 00D01546 case 772
- goto LABEL_94;
- case 0x305u:
- caps = asd_op_305(a1: req->arg1); // jumptable 00D01546 case 773
- goto LABEL_94;
- case 0x306u:
- caps = asd_op_306(); // jumptable 00D01546 case 774
- goto LABEL_94;
- case 0x307u:
- caps = asd_revocation_check_ksv(a1: req->arg1);// jumptable 00D01546 case 775
- goto LABEL_94;
- case 0x308u:
- caps = asd_srm_store(
- a1: req->arg1,
- a2: (int *)req->arg2,
- a3: (unsigned int *)req->arg3,
- a4: (_BYTE *)req->arg4); // jumptable 00D01546 case 776
- goto LABEL_94;
- case 0x309u:
- caps = asd_op_309(a1: (unsigned int *)req->arg1);// jumptable 00D01546 case 777
- goto LABEL_94;
- default:
- v12 = rpc_id + 0x10000; // switch 8 cases
- break;
- }
- break;
- }
- break;
- }
- switch ( rpc_id )
- {
- case 0xFFFF0000:
- case 0xFFFF0004:
- if ( a2 != 0 )
- goto LABEL_89; // jumptable 00D01568 cases 0,4
- __asm { SVC 0x5E ; '^' }
- goto LABEL_33;
- case 0xFFFF0001:
- if ( a2 != 0 )
- goto LABEL_89; // jumptable 00D01568 case 1
- v18 = asd_task_ctl_1(a1: v12, a2: 0, a3: v7, a4);
- __asm { SVC 0x5F ; '_' }
- goto LABEL_95;
- case 0xFFFF0002:
- if ( a2 != 0 )
- goto LABEL_89; // jumptable 00D01568 case 2
- caps = asd_task_ctl_2(a1: v12, a2: 0, a3: (int)v7, a4);
- goto LABEL_94;
- case 0xFFFF0003:
- goto LABEL_89; // switch jump
- case 0xFFFF0005:
- if ( a2 != 0 )
- goto LABEL_89; // jumptable 00D01568 case 5
- v18 = asd_task_ctl_5(a1: v12, a2: 0, a3: v7, a4);
- __asm { SVC 0x5F ; '_' }
- goto LABEL_95;
- case 0xFFFF0006:
- if ( a2 != 0 )
- goto LABEL_89; // jumptable 00D01568 case 6
- __asm { SVC 0x5E ; '^' }
- caps = asd_task_ctl_6();
- goto LABEL_94;
- case 0xFFFF0007:
- if ( a2 != 0 )
- goto LABEL_89; // jumptable 00D01568 case 7
- v18 = asd_task_ctl_7(a1: v12, a2: 0, a3: (int)v7, a4);
- __asm { SVC 0x5F ; '_' }
- goto LABEL_95;
- default:
- switch ( rpc_id )
- { // switch jump
- case 0x402u:
- __asm { SVC 0x8D; jumptable 00D01588 case 1026 }// jumptable 00D01588 case 1026
- if ( ((rpc_id - 1026) | 1) != 3 )
- goto LABEL_33; // jumptable 00D01568 default case
- caps = asd_platform_op_402(a1: LOBYTE(req->arg1));
- goto LABEL_94;
- case 0x403u:
- caps = asd_platform_op_403(
- a1: LOBYTE(req->arg1),
- a2: BYTE1(req->arg1),
- a3: (_DWORD *)req->arg2,
- a4: req->arg3,
- a5: req->arg4,
- a6: req->arg5); // jumptable 00D01588 case 1027
- goto LABEL_94;
- case 0x404u:
- caps = asd_platform_op_404(
- a1: LOBYTE(req->arg1),
- a2: BYTE1(req->arg1),
- a3: (unsigned int *)req->arg2,
- a4: &req->arg3,
- a5: &req->arg4,
- a6: req->arg5); // jumptable 00D01588 case 1028
- goto LABEL_94;
- case 0x405u:
- caps = asd_platform_op_405(); // jumptable 00D01588 case 1029
- goto LABEL_94;
- default:
- if ( rpc_id == 352 ) // jumptable 00D01588 default case
- {
- caps = asd_link_reset(a1: req->arg1, a2: req->arg2);
- }
- else if ( rpc_id == 353 )
- {
- caps = asd_get_link_status(
- a1: req->arg1,
- a2: (int *)req->arg2,
- a3: (_DWORD *)req->arg3,
- a4: (_DWORD *)req->arg4,
- a5: *(_DWORD **)&req->arg5);
- }
- else
- {
- if ( rpc_id == 2048 )
- {
-LABEL_33:
- v18 = 0;
-LABEL_95:
- if ( v4[1] != -1 )
- __asm { SVC 0x5F ; '_' }
- if ( v18 != 0 )
- {
- v19 = (void (__fastcall *)(int, int, int, int))off_D01914;
- off_D01914(a1: 227, a2: 1, a3: 61440);
- v19(a1: 227, a2: 1, a3: HIWORD(v18), a4: v20);
- v19(a1: 227, a2: 1, a3: (unsigned __int16)v18, a4: v21);
- if ( rpc_id <= 0xFFFE )
- asd_log_event(a1: 227, a2: 1, a3: (unsigned __int16)rpc_id, a4: v22);
- }
-LABEL_100:
- __asm { POP {R1-R7,PC} }
- }
- if ( rpc_id == 2049 )
- {
- if ( a2 != 0 )
- {
-LABEL_89:
- v18 = 4; // jumptable 00D01464 cases 397,400-415,427-447
- // jumptable 00D0151C cases 524,525
- // jumptable 00D01568 case 3
- goto LABEL_95;
- }
- caps = asd_op_801(a1: req->arg1, a2: req->arg2);
- }
- else
- {
- _ZF = rpc_id == 2050;
- if ( rpc_id == 2050 )
- _ZF = a2 == 0;
- if ( !_ZF )
- goto LABEL_89;
- caps = asd_op_802(a1: (_DWORD *)req->arg1);
- }
- }
-LABEL_94:
- v18 = caps;
- goto LABEL_95;
- }
- }
-}
+/* decompile failed: call analysis failed */
/* ==== asd_encoder_enable_seq [tier=EXACT size=1072] ==== */
// Per-signal-type (switch on ctx+40) display encoder bring-up sequence: DIO register
@@ -5801,7 +5482,7 @@ int __fastcall asd_encoder_enable_seq(int a1, char *a2, char *a3)
default:
break;
}
- v20 = loc_D0974C(a1, a2, a3);
+ v20 = ((int (__fastcall *)(int, char *, char *))loc_D0974C)(a1, a2, a3);
v40 = *(_DWORD *)(a1 + 64);
if ( (unsigned int)(v40 - 1) >= 3 )
{
@@ -5907,235 +5588,237 @@ LABEL_32:
int __fastcall asd_encoder_enable_seq_v2(int a1, int a2, __int16 a3)
{
int v3; // r10
- __int64 v4; // kr00_8
- int *v6; // r7
- __int16 v7; // r2
- unsigned int v8; // r6
+ int v4; // r8
+ __int64 v5; // kr00_8
+ int *v8; // r7
__int16 v9; // r2
- __int16 _139E4; // r0
+ unsigned int v10; // r6
__int16 v11; // r2
- int v12; // r0
+ __int16 _139E4; // r0
+ __int16 v13; // r2
+ int v14; // r0
__int16 _13B04; // r0
- int v18; // r6
- int *v19; // r7
- __int16 v20; // r2
- unsigned int v21; // r6
+ int v20; // r6
+ int *v21; // r7
__int16 v22; // r2
- __int16 v23; // r0
+ unsigned int v23; // r6
__int16 v24; // r2
- int v25; // r0
- __int16 v26; // r0
+ __int16 v25; // r0
+ __int16 v26; // r2
+ int v27; // r0
+ __int16 v28; // r0
int _13B74; // r0
- void (__fastcall *v28)(int, int, unsigned int); // r4
- _DWORD *v29; // r7
void (__fastcall *v30)(int, int, unsigned int); // r4
- __int16 v31; // r2
- unsigned int v32; // r6
+ _DWORD *v31; // r7
+ void (__fastcall *v32)(int, int, unsigned int); // r4
__int16 v33; // r2
- __int16 v34; // r0
+ unsigned int v34; // r6
__int16 v35; // r2
- int v36; // r0
- __int16 _13BF8; // r0
+ __int16 v36; // r0
+ __int16 v37; // r2
int v38; // r0
- _DWORD *v39; // r4
- int v40; // r1
- _DWORD *v41; // r7
- _DWORD *v42; // r4
- int v43; // r0
- _DWORD *v44; // r7
- _DWORD *v45; // r5
- unsigned int v46; // r7
- int v47; // r0
- _DWORD *v48; // r4
- _DWORD *v49; // r5
- int v50; // r0
- _DWORD *v51; // r4
- unsigned int v52; // r7
- _DWORD *v53; // r8
- int v54; // r0
- _DWORD *v55; // r5
- unsigned int v56; // r7
+ __int16 _13BF8; // r0
+ int v40; // r0
+ _DWORD *v41; // r4
+ int v42; // r1
+ _DWORD *v43; // r7
+ _DWORD *v44; // r4
+ int v45; // r0
+ _DWORD *v46; // r7
+ _DWORD *v47; // r5
+ unsigned int v48; // r7
+ int v49; // r0
+ _DWORD *v50; // r4
+ _DWORD *v51; // r5
+ int v52; // r0
+ _DWORD *v53; // r4
+ unsigned int v54; // r7
+ _DWORD *v55; // r8
+ int v56; // r0
+ _DWORD *v57; // r5
+ unsigned int v58; // r7
if ( a1 == 0 )
return 2;
v3 = *(_DWORD *)(a1 + 40);
- v4 = *(_QWORD *)(a1 + 20);
+ v4 = a3;
+ v5 = *(_QWORD *)(a1 + 20);
switch ( v3 )
{
case 16:
- v6 = (int *)off_D09B78;
- if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09B78 + 4), a3: v4) << 31 != 0 )
+ v8 = (int *)off_D09B78;
+ if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09B78 + 4), a3: v5) << 31 != 0 )
{
- v8 = asd_reg_read_13B04(a1: v6[5], a2: HIDWORD(v4), a3: v7) & 7;
- _139E4 = asd_reg_read_139E4(a1: v6[99], a2: v8, a3: v9);
- asd_reg_write_19394(a1: v6[99], a2: v8, a3: _139E4 | 0x80);
- v12 = v6[108];
- if ( v12 != 0 )
+ v10 = asd_reg_read_13B04(a1: v8[5], a2: HIDWORD(v5), a3: v9) & 7;
+ _139E4 = asd_reg_read_139E4(a1: v8[99], a2: v10, a3: v11);
+ asd_reg_write_19394(a1: v8[99], a2: v10, a3: _139E4 | 0x80);
+ v14 = v8[108];
+ if ( v14 != 0 )
{
- _13B04 = asd_reg_read_13B04(a1: v12, a2: v8, a3: v11);
- asd_reg_write_19400(a1: v6[108], a2: v8, a3: _13B04 | 1);
+ _13B04 = asd_reg_read_13B04(a1: v14, a2: v10, a3: v13);
+ asd_reg_write_19400(a1: v8[108], a2: v10, a3: _13B04 | 1);
}
- asd_reg_read_13B74(a1: 0, a2: v6[41], a3: v4);
- asd_reg_write_1946C(a1: 0, a2: v6[41], a3: v4);
- asd_reg_read_13B74(a1: 0, a2: v6[60], a3: v4);
+ asd_reg_read_13B74(a1: 0, a2: v8[41], a3: v5);
+ asd_reg_write_1946C(a1: 0, a2: v8[41], a3: v5);
+ asd_reg_read_13B74(a1: 0, a2: v8[60], a3: v5);
if ( *(_DWORD *)(a1 + 64) == 3 )
- asd_reg_write_1946C(a1: 0, a2: v6[60], a3: v4);
- asd_reg_write_1946C(a1: 0, a2: v6[60], a3: v4);
+ asd_reg_write_1946C(a1: 0, a2: v8[60], a3: v5);
+ asd_reg_write_1946C(a1: 0, a2: v8[60], a3: v5);
__asm { SVC 0x56 ; 'V' }
- asd_reg_write_1946C(a1: 0, a2: v6[60], a3: v4);
+ asd_reg_write_1946C(a1: 0, a2: v8[60], a3: v5);
break;
}
return 8;
case 48:
- v29 = off_D08FFC;
- if ( asd_reg_read_13BF8(a1: *((_DWORD *)off_D08FFC + 105), a2: HIDWORD(v4), a3) << 31 == 0 )
+ v31 = off_D08FFC;
+ if ( asd_reg_read_13BF8(a1: *((_DWORD *)off_D08FFC + 105), a2: HIDWORD(v5), a3) << 31 == 0 )
return 8;
- v30 = (void (__fastcall *)(int, int, unsigned int))off_D09000;
- off_D09000(a1: 2, a2: v29[76], a3: v4, a4: 16);
- v30(a1: 2, a2: v29[76], a3: v4);
+ v32 = (void (__fastcall *)(int, int, unsigned int))off_D09000;
+ off_D09000(a1: 2, a2: v31[76], a3: v5, a4: 16);
+ v32(a1: 2, a2: v31[76], a3: v5);
__asm { SVC 0x56 ; 'V' }
- v30(a1: 2, a2: v29[76], a3: v4);
- v32 = asd_reg_read_13BF8(a1: v29[106], a2: HIDWORD(v4), a3: v31) & 7;
- v34 = asd_reg_read_139E4(a1: v29[99], a2: v32, a3: v33);
- asd_reg_write_19394(a1: v29[99], a2: v32, a3: v34 | 0x80);
- v36 = v29[110];
- if ( v36 != 0 )
+ v32(a1: 2, a2: v31[76], a3: v5);
+ v34 = asd_reg_read_13BF8(a1: v31[106], a2: HIDWORD(v5), a3: v33) & 7;
+ v36 = asd_reg_read_139E4(a1: v31[99], a2: v34, a3: v35);
+ asd_reg_write_19394(a1: v31[99], a2: v34, a3: v36 | 0x80);
+ v38 = v31[110];
+ if ( v38 != 0 )
{
- _13BF8 = asd_reg_read_13BF8(a1: v36, a2: v32, a3: v35);
- asd_reg_write_19524(a1: v29[110], a2: v32, a3: _13BF8 | 1);
+ _13BF8 = asd_reg_read_13BF8(a1: v38, a2: v34, a3: v37);
+ asd_reg_write_19524(a1: v31[110], a2: v34, a3: _13BF8 | 1);
}
break;
case 32:
- v19 = (int *)off_D08FFC;
- if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D08FFC + 86), a3: v4) << 31 == 0 )
+ v21 = (int *)off_D08FFC;
+ if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D08FFC + 86), a3: v5) << 31 == 0 )
return 8;
- v21 = asd_reg_read_13B04(a1: v19[102], a2: HIDWORD(v4), a3: v20) & 7;
- v23 = asd_reg_read_139E4(a1: v19[99], a2: v21, a3: v22);
- asd_reg_write_19394(a1: v19[99], a2: v21, a3: v23 | 0x80);
- v25 = v19[109];
- if ( v25 != 0 )
+ v23 = asd_reg_read_13B04(a1: v21[102], a2: HIDWORD(v5), a3: v22) & 7;
+ v25 = asd_reg_read_139E4(a1: v21[99], a2: v23, a3: v24);
+ asd_reg_write_19394(a1: v21[99], a2: v23, a3: v25 | 0x80);
+ v27 = v21[109];
+ if ( v27 != 0 )
{
- v26 = asd_reg_read_13B04(a1: v25, a2: 0, a3: v24);
- asd_reg_write_19400(a1: v19[109], a2: 0, a3: v26 | 1);
+ v28 = asd_reg_read_13B04(a1: v27, a2: 0, a3: v26);
+ asd_reg_write_19400(a1: v21[109], a2: 0, a3: v28 | 1);
}
- _13B74 = asd_reg_read_13B74(a1: 1, a2: v19[68], a3: v4);
- v28 = (void (__fastcall *)(int, int, unsigned int))off_D09000;
- off_D09000(a1: 1, a2: v19[68], a3: v4, a4: _13B74 | 0x10);
+ _13B74 = asd_reg_read_13B74(a1: 1, a2: v21[68], a3: v5);
+ v30 = (void (__fastcall *)(int, int, unsigned int))off_D09000;
+ off_D09000(a1: 1, a2: v21[68], a3: v5, a4: _13B74 | 0x10);
__asm { SVC 0x56 ; 'V' }
- v28(a1: 1, a2: v19[68], a3: v4);
- asd_reg_read_13B74(a1: 1, a2: v19[88], a3: v4);
- v28(a1: 1, a2: v19[88], a3: v4);
+ v30(a1: 1, a2: v21[68], a3: v5);
+ asd_reg_read_13B74(a1: 1, a2: v21[88], a3: v5);
+ v30(a1: 1, a2: v21[88], a3: v5);
break;
default:
break;
}
- v18 = sub_D097F8();
- v38 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v38 - 1) >= 3 )
+ v20 = sub_D097F8(a1, a2, a3: v4);
+ v40 = *(_DWORD *)(a1 + 64);
+ if ( (unsigned int)(v40 - 1) >= 3 )
{
- if ( v38 == 4 )
+ if ( v40 == 4 )
{
- v44 = off_D09250;
- asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09250 + 60), a3: v4);
- asd_reg_read_13B74(a1: 0, a2: v44[48], a3: v4);
- asd_reg_write_1946C(a1: 0, a2: v44[48], a3: v4);
- v40 = v44[60];
+ v46 = off_D09250;
+ asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09250 + 60), a3: v5);
+ asd_reg_read_13B74(a1: 0, a2: v46[48], a3: v5);
+ asd_reg_write_1946C(a1: 0, a2: v46[48], a3: v5);
+ v42 = v46[60];
}
else
{
- if ( v38 != 5 )
+ if ( v40 != 5 )
return 1;
if ( v3 != 16 )
goto LABEL_32;
- v41 = off_D08FFC;
- asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08FFC + 60), a3: v4);
- asd_reg_read_13B74(a1: 0, a2: v41[48], a3: v4);
- asd_reg_write_1946C(a1: 0, a2: v41[60], a3: v4);
- v40 = v41[48];
+ v43 = off_D08FFC;
+ asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08FFC + 60), a3: v5);
+ asd_reg_read_13B74(a1: 0, a2: v43[48], a3: v5);
+ asd_reg_write_1946C(a1: 0, a2: v43[60], a3: v5);
+ v42 = v43[48];
}
goto LABEL_30;
}
if ( v3 == 16 )
{
- v39 = off_D08FFC;
- asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08FFC + 42), a3: v4);
- v40 = v39[42];
+ v41 = off_D08FFC;
+ asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08FFC + 42), a3: v5);
+ v42 = v41[42];
LABEL_30:
- v43 = 0;
+ v45 = 0;
goto LABEL_31;
}
if ( v3 == 32 )
{
- v42 = off_D09250;
- asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09250 + 87), a3: v4);
- v40 = v42[87];
- v43 = 1;
+ v44 = off_D09250;
+ asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D09250 + 87), a3: v5);
+ v42 = v44[87];
+ v45 = 1;
LABEL_31:
- asd_reg_write_1946C(a1: v43, a2: v40, a3: v4);
+ asd_reg_write_1946C(a1: v45, a2: v42, a3: v5);
}
LABEL_32:
- if ( v18 == 0 )
+ if ( v20 == 0 )
{
switch ( v3 )
{
case 16:
- v45 = off_D09250;
- v46 = 0;
- asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09250 + 60), a3: v4);
- asd_reg_write_1946C(a1: 0, a2: v45[60], a3: v4);
- v47 = asd_reg_read_13B74(a1: 0, a2: v45[60], a3: v4);
- v48 = off_D09004;
- v18 = 0;
- while ( (v47 & 0x10000000) == 0 && v48[12] > v46 )
+ v47 = off_D09250;
+ v48 = 0;
+ asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09250 + 60), a3: v5);
+ asd_reg_write_1946C(a1: 0, a2: v47[60], a3: v5);
+ v49 = asd_reg_read_13B74(a1: 0, a2: v47[60], a3: v5);
+ v50 = off_D09004;
+ v20 = 0;
+ while ( (v49 & 0x10000000) == 0 && v50[12] > v48 )
{
__asm { SVC 0x56 ; 'V' }
- v47 = asd_reg_read_13B74(a1: 0, a2: v45[60], a3: v4);
- ++v46;
+ v49 = asd_reg_read_13B74(a1: 0, a2: v47[60], a3: v5);
+ ++v48;
}
break;
case 48:
- v53 = off_D09F14;
- asd_reg_read_13B74(a1: 2, a2: *((_DWORD *)off_D09F14 + 76), a3: v4);
- asd_reg_write_1946C(a1: 2, a2: v53[76], a3: v4);
- v54 = asd_reg_read_13B74(a1: 2, a2: v53[76], a3: v4);
- v55 = off_D09004;
- v56 = 0;
- v18 = 0;
- while ( (v54 & 0x10000000) == 0 && v55[12] > v56 )
+ v55 = off_D09F14;
+ asd_reg_read_13B74(a1: 2, a2: *((_DWORD *)off_D09F14 + 76), a3: v5);
+ asd_reg_write_1946C(a1: 2, a2: v55[76], a3: v5);
+ v56 = asd_reg_read_13B74(a1: 2, a2: v55[76], a3: v5);
+ v57 = off_D09004;
+ v58 = 0;
+ v20 = 0;
+ while ( (v56 & 0x10000000) == 0 && v57[12] > v58 )
{
__asm { SVC 0x56 ; 'V' }
- v54 = asd_reg_read_13B74(a1: 2, a2: v53[76], a3: v4);
- ++v56;
+ v56 = asd_reg_read_13B74(a1: 2, a2: v55[76], a3: v5);
+ ++v58;
}
break;
case 32:
- v49 = off_D092EC;
- asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D092EC + 68), a3: v4);
- asd_reg_write_1946C(a1: 1, a2: v49[68], a3: v4);
- v50 = asd_reg_read_13B74(a1: 1, a2: v49[68], a3: v4);
- v51 = off_D09004;
- v52 = 0;
- v18 = 0;
- while ( (v50 & 0x10000000) == 0 && v51[12] > v52 )
+ v51 = off_D092EC;
+ asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D092EC + 68), a3: v5);
+ asd_reg_write_1946C(a1: 1, a2: v51[68], a3: v5);
+ v52 = asd_reg_read_13B74(a1: 1, a2: v51[68], a3: v5);
+ v53 = off_D09004;
+ v54 = 0;
+ v20 = 0;
+ while ( (v52 & 0x10000000) == 0 && v53[12] > v54 )
{
__asm { SVC 0x56 ; 'V' }
- v50 = asd_reg_read_13B74(a1: 1, a2: v49[68], a3: v4);
- ++v52;
+ v52 = asd_reg_read_13B74(a1: 1, a2: v51[68], a3: v5);
+ ++v54;
}
break;
default:
return 0;
}
}
- return v18;
+ return v20;
}
/* ==== asd_encoder_enable_seq_v3 [tier=EXACT size=796] ==== */
// Third form of the encoder bring-up sequence: per-signal-type switch resolving the lane
// via unk_D42588 and driving the unk_D42408 register group.
-int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
+int __fastcall asd_encoder_enable_seq_v3(struct asd_link_cfg *a1, int a2, __int16 a3)
{
- int v3; // r8
+ unsigned int field28; // r8
__int64 v5; // kr00_8
int *v6; // r7
__int16 v7; // r2
@@ -6164,7 +5847,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
__int16 v35; // r2
int v36; // r0
__int16 _13BF8; // r0
- int v38; // r0
+ unsigned int field40; // r0
_DWORD *v39; // r6
int v40; // r1
_DWORD *v41; // r8
@@ -6172,13 +5855,13 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
int v43; // r0
_DWORD *v44; // r7
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v3 = *(_DWORD *)(a1 + 40);
- v5 = *(_QWORD *)(a1 + 20);
- switch ( v3 )
+ field28 = a1->field28;
+ v5 = *(_QWORD *)&a1->field14;
+ switch ( field28 )
{
- case 16:
+ case 0x10u:
v6 = (int *)off_D08BC4;
if ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08BC4 + 4), a3: v5) << 31 != 0 )
{
@@ -6194,7 +5877,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_read_13B74(a1: 0, a2: v6[41], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[41], a3: v5);
asd_reg_read_13B74(a1: 0, a2: v6[60], a3: v5);
- if ( *(_DWORD *)(a1 + 64) == 3 )
+ if ( a1->field40 == 3 )
asd_reg_write_1946C(a1: 0, a2: v6[60], a3: v5);
asd_reg_write_1946C(a1: 0, a2: v6[60], a3: v5);
__asm { SVC 0x56 ; 'V' }
@@ -6202,7 +5885,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
break;
}
return 8;
- case 48:
+ case 0x30u:
v29 = off_D08BC4;
if ( asd_reg_read_13BF8(a1: *((_DWORD *)off_D08BC4 + 105), a2: HIDWORD(v5), a3) << 31 == 0 )
return 8;
@@ -6221,7 +5904,7 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
asd_reg_write_19524(a1: v29[107], a2: v32, a3: _13BF8 | 1);
}
break;
- case 32:
+ case 0x20u:
v19 = (int *)off_D08BC4;
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D08BC4 + 86), a3: v5) << 31 == 0 )
return 8;
@@ -6245,10 +5928,10 @@ int __fastcall asd_encoder_enable_seq_v3(int a1, int a2, __int16 a3)
default:
break;
}
- v38 = *(_DWORD *)(a1 + 64);
- if ( (unsigned int)(v38 - 1) < 3 )
+ field40 = a1->field40;
+ if ( field40 - 1 < 3 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v39 = off_D08BC4;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08BC4 + 42), a3: v5);
@@ -6257,7 +5940,7 @@ LABEL_30:
v43 = 0;
goto LABEL_31;
}
- if ( v3 == 32 )
+ if ( field28 == 32 )
{
v42 = off_D08BC4;
asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D08BC4 + 87), a3: v5);
@@ -6269,7 +5952,7 @@ LABEL_31:
}
return 7;
}
- if ( v38 == 4 )
+ if ( field40 == 4 )
{
v44 = off_D08BC4;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D08BC4 + 60), a3: v5);
@@ -6278,9 +5961,9 @@ LABEL_31:
v40 = v44[60];
goto LABEL_30;
}
- if ( v38 == 5 )
+ if ( field40 == 5 )
{
- if ( v3 == 16 )
+ if ( field28 == 16 )
{
v41 = off_D09964;
asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D09964 + 60), a3: v5);
@@ -6436,7 +6119,7 @@ unsigned int __fastcall asd_event_dispatch()
int v49; // [sp+28h] [bp-114h]
int v50; // [sp+2Ch] [bp-110h]
unsigned int v51; // [sp+34h] [bp-108h] BYREF
- unsigned int v52[64]; // [sp+38h] [bp-104h] BYREF
+ _DWORD v52[64]; // [sp+38h] [bp-104h] BYREF
unsigned int v53; // [sp+138h] [bp-4h] BYREF
v53 = 0;
@@ -6648,12 +6331,15 @@ LABEL_14:
// Never returns - this is the module's main message pump.
void __noreturn asd_event_loop()
{
+ int *v0; // r6
+
+ v0 = off_D12C88;
while ( 1 )
{
__asm { SVC 0x56 ; 'V' }
__asm { SVC 0x5E ; '^' }
__asm { SVC 0x5E ; '^' }
- asd_event_dispatch();
+ asd_event_dispatch(a1: *v0);
__asm { SVC 0x5F ; '_' }
__asm { SVC 0x5F ; '_' }
}
@@ -7579,7 +7265,7 @@ int __fastcall asd_get_link_caps(unsigned int a1, _DWORD *a2)
/* ==== asd_get_link_caps_full [tier=EXACT size=696] ==== */
// Fills the caller's capability struct from the unk_D42344/D4234C/qword_D42350 globals
// after zeroing a 0x24-byte scratch descriptor.
-int __fastcall asd_get_link_caps_full(int a1)
+int __fastcall asd_get_link_caps_full(struct asd_link_caps *a1)
{
_DWORD *v2; // r4
int v3; // r11
@@ -7594,25 +7280,25 @@ int __fastcall asd_get_link_caps_full(int a1)
int v12; // r1
__int16 v13; // r2
char v14; // r0
- int v15; // r1
+ char *v15; // r1
bool v16; // zf
int v17; // r0
unsigned int v18; // r0
- int v19; // r0
+ unsigned int *v19; // r0
int v20; // r1
- _DWORD *v21; // r2
+ struct asd_link_caps *field0C; // r2
unsigned int v22; // r6
int v23; // r3
int v24; // r0
unsigned int *v25; // r1
unsigned int v26; // r5
unsigned int v27; // r6
- int v28; // r0
+ char *v28; // r0
int *v29; // r7
int v30; // r0
int v31; // r1
__int16 v32; // r2
- int *v33; // r6
+ unsigned int **p_field18; // r6
unsigned int i; // r5
unsigned int v35; // r0
__int16 v36; // r2
@@ -7626,20 +7312,20 @@ int __fastcall asd_get_link_caps_full(int a1)
__int16 v44; // r2
unsigned int v45; // r0
int v46; // r5
- _DWORD *v47; // r1
+ struct asd_link_caps **v47; // r1
unsigned int v48; // r11
unsigned int v49; // r6
- unsigned int _140AC; // r0
+ unsigned int p_field20; // r0
__int16 v51; // r2
int v52; // r7
- int v53; // r1
+ unsigned int *v53; // r1
unsigned int *v54; // r12
_DWORD *v55; // lr
unsigned int *v56; // r3
_DWORD v58[9]; // [sp+8h] [bp-24h] BYREF
bzero_core(result: v58, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D0B818;
v3 = 0;
@@ -7648,14 +7334,14 @@ int __fastcall asd_get_link_caps_full(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0B818 + 3);
v8 = *((_QWORD *)off_D0B818 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0B818 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
+ a1->unk00 = *((_DWORD *)off_D0B818 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
v9 = v2[9];
- *(_DWORD *)(a1 + 28) = v9;
+ a1->field1C = v9;
while ( v6 < v7 )
{
if ( asd_reg_read_11B00(a1: v7, a2: v9, a3: v8) == 0 )
@@ -7665,10 +7351,10 @@ int __fastcall asd_get_link_caps_full(int a1)
if ( asd_reg_read_11B00(a1: _13B74, a2: v12, a3: v13) == 0 )
return 44;
v14 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v15 = a1 + 8 * v6;
+ v15 = (char *)a1 + 8 * v6;
v16 = v5 == 8;
- *(_DWORD *)(v15 + 32) = (v11 & 0x800) != 0;
- *(_DWORD *)(v15 + 36) = v14 & 7;
+ *((_DWORD *)v15 + 8) = (v11 & 0x800) != 0;
+ *((_DWORD *)v15 + 9) = v14 & 7;
if ( v5 <= 8 )
v16 = (v11 & 0x800) == 0;
if ( v16 )
@@ -7679,7 +7365,7 @@ int __fastcall asd_get_link_caps_full(int a1)
if ( asd_reg_read_11B00(a1: v17, a2: v9, a3: v8) == 0 )
return 44;
v18 = asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6);
- v9 = a1 + 4 * v6;
+ v9 = (int)a1 + 4 * v6;
*(_DWORD *)(v9 + 104) = (v18 >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 )
{
@@ -7687,10 +7373,10 @@ int __fastcall asd_get_link_caps_full(int a1)
return 44;
if ( asd_link_status_query(a1: v6) == 0 )
{
- v19 = a1 + 4 * v3;
+ v19 = &a1->unk00 + v3;
v9 = 1;
- *(_DWORD *)(v19 + 356) = 1;
- *(_DWORD *)(v19 + 360) = v6;
+ v19[89] = 1;
+ v19[90] = v6;
}
}
}
@@ -7699,13 +7385,13 @@ int __fastcall asd_get_link_caps_full(int a1)
++v6;
}
v20 = 0;
- LOWORD(v21) = 1;
+ LOWORD(field0C) = 1;
while ( v20 != v5 )
{
v22 = 0;
v23 = ~(1 << (v58[v20] & 0x1F));
while ( v22 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v22++) &= v23;
+ *(&a1[2].field18 + v22++) &= v23;
++v20;
}
v24 = v2[7];
@@ -7716,103 +7402,103 @@ int __fastcall asd_get_link_caps_full(int a1)
v27 = *v25;
if ( v24 != 0 )
v26 = 0;
- v28 = a1 + 24 * v26;
+ v28 = (char *)a1 + 24 * v26;
v29 = (int *)(v28 + 140);
while ( v26 < v27 )
{
- if ( asd_reg_read_11BE4(a1: v28, a2: (int)v25, a3: (__int16)v21) == 0 )
+ if ( asd_reg_read_11BE4(a1: (int)v28, a2: (int)v25, a3: (__int16)field0C) == 0 )
return 44;
v30 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v26) & 1;
*v29 = v30;
if ( asd_reg_read_11BE4(a1: v30, a2: v31, a3: v32) == 0 )
return 44;
- v28 = asd_reg_read_13B74(a1: 1, a2: v4[85], a3: v26) & 7;
- v29[1] = v28;
+ v28 = (char *)(asd_reg_read_13B74(a1: 1, a2: v4[85], a3: v26) & 7);
+ v29[1] = (int)v28;
v29[2] = v26;
v29 += 6;
++v26;
}
- v33 = (int *)(a1 + 464);
+ p_field18 = (unsigned int **)&a1[11].field18;
for ( i = 0; ; ++i )
{
v35 = v2[6];
if ( i >= v35 )
break;
- if ( asd_reg_read_11BE4(a1: v35, a2: (int)v25, a3: (__int16)v21) == 0 )
+ if ( asd_reg_read_11BE4(a1: v35, a2: (int)v25, a3: (__int16)field0C) == 0 )
return 44;
v37 = asd_reg_read_13BF8(a1: v4[105], a2: i, a3: v36) & 1;
- *v33 = v37;
+ *p_field18 = (unsigned int *)v37;
if ( asd_reg_read_11BE4(a1: v37, a2: v38, a3: v39) == 0 )
return 44;
v41 = asd_reg_read_13BF8(a1: v4[55], a2: i, a3: v40) & 7;
- v33[1] = v41;
+ p_field18[1] = (unsigned int *)v41;
if ( asd_reg_read_11BE4(a1: v41, a2: v42, a3: v43) == 0 )
return 44;
v45 = asd_reg_read_13C68(a1: v4[56], a2: i, a3: v44) & 7;
- v33[2] = v45;
- if ( v45 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = (unsigned int *)v45;
+ if ( v45 >= a1->field0C )
return 2;
- v25 = (unsigned int *)*v33;
- v33 += 3;
+ v25 = *p_field18;
+ p_field18 += 3;
if ( v25 == (unsigned int *)1 )
{
v25 = (unsigned int *)(1 << i);
- *(_DWORD *)(a1 + 16 * v45 + 572) = 1 << i;
+ *(&a1[14].field0C + 4 * v45) = 1 << i;
}
}
v46 = 2;
- v47 = (_DWORD *)v2[9];
+ v47 = (struct asd_link_caps **)v2[9];
v48 = v2[7] - (_DWORD)v47;
if ( v48 <= 5 )
{
v49 = 0;
- _140AC = a1 + 472;
+ p_field20 = (unsigned int)&a1[11].field20;
while ( v49 != v48 )
{
- if ( asd_reg_read_11B00(a1: _140AC, a2: (int)v47, a3: (__int16)v21) == 0 )
+ if ( asd_reg_read_11B00(a1: p_field20, a2: (int)v47, a3: (__int16)field0C) == 0 )
return 44;
- _140AC = asd_reg_read_140AC(a1: v4[127], a2: v49, a3: v51);
- v47 = (_DWORD *)(_140AC & 3);
- if ( v47 == (_DWORD *)2 )
+ p_field20 = asd_reg_read_140AC(a1: v4[127], a2: v49, a3: v51);
+ v47 = (struct asd_link_caps **)(p_field20 & 3);
+ if ( v47 == (struct asd_link_caps **)2 )
{
- _140AC = (_140AC >> 8) & 7;
+ p_field20 = (p_field20 >> 8) & 7;
v52 = v2[6];
- v53 = a1 + 16 * _140AC;
- v54 = (unsigned int *)(v53 + 576);
- v55 = (_DWORD *)(v53 + 584);
- v56 = (unsigned int *)(v53 + 580);
- v47 = (_DWORD *)(a1 + 472);
+ v53 = &a1->unk00 + 4 * p_field20;
+ v54 = v53 + 144;
+ v55 = v53 + 146;
+ v56 = v53 + 145;
+ v47 = (struct asd_link_caps **)&a1[11].field20;
while ( v52 != 0 )
{
- v21 = (_DWORD *)*v47;
- if ( *v47 == _140AC )
+ field0C = *v47;
+ if ( *v47 == (struct asd_link_caps *)p_field20 )
{
- v21 = *(_DWORD **)(a1 + 12);
- if ( _140AC >= (unsigned int)v21 )
+ field0C = (struct asd_link_caps *)a1->field0C;
+ if ( p_field20 >= (unsigned int)field0C )
return 2;
*v55 = 2;
*v56 = v49;
- *v54 = _140AC;
+ *v54 = p_field20;
}
v47 += 3;
--v52;
}
}
- else if ( v47 == (_DWORD *)1 )
+ else if ( v47 == (struct asd_link_caps **)1 )
{
- _140AC = (_140AC >> 4) & 7;
- v47 = (_DWORD *)v2[4];
- v21 = (_DWORD *)(a1 + 160);
+ p_field20 = (p_field20 >> 4) & 7;
+ v47 = (struct asd_link_caps **)v2[4];
+ field0C = a1 + 4;
while ( v47 != nullptr )
{
- v47 = (_DWORD *)((char *)v47 - 1);
- if ( *(v21 - 3) == _140AC )
+ v47 = (struct asd_link_caps **)((char *)v47 - 1);
+ if ( field0C[-1].field1C == p_field20 )
{
- *(v21 - 2) = v49;
- *(v21 - 1) = _140AC;
- *v21 = 1;
+ field0C[-1].field20 = v49;
+ field0C[-1].field24 = p_field20;
+ field0C->unk00 = 1;
}
- v21 += 6;
+ field0C = (struct asd_link_caps *)((char *)field0C + 24);
}
}
++v49;
@@ -7825,7 +7511,7 @@ int __fastcall asd_get_link_caps_full(int a1)
/* ==== asd_get_link_caps_full_v2 [tier=EXACT size=764] ==== */
// Link capability fill variant: copies unk_D42344 / unk_D4234C / qword_D42350 and the
// per-link descriptors into the caller's struct.
-int __fastcall asd_get_link_caps_full_v2(int a1)
+int __fastcall asd_get_link_caps_full_v2(struct asd_link_caps *a1)
{
_DWORD *v2; // r7
int v3; // r4
@@ -7835,12 +7521,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v7; // r0
__int64 v8; // r2
int _13B74; // r0
- int v10; // r2
+ char *v10; // r2
bool v11; // zf
int (__fastcall *v12)(unsigned int); // r1
- int v13; // r0
+ char *v13; // r0
int v14; // r1
- unsigned int v15; // r2
+ unsigned int field0C; // r2
unsigned int v16; // r4
int v17; // r3
int v18; // r0
@@ -7848,7 +7534,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int v20; // r5
unsigned int v21; // r4
int *v22; // r6
- int *v23; // r4
+ unsigned int **p_field18; // r4
unsigned int i; // r5
__int16 v25; // r2
__int16 v26; // r2
@@ -7859,16 +7545,16 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
unsigned int _140AC; // r0
unsigned int v32; // r1
int v33; // r0
- _DWORD *v34; // r3
+ struct asd_link_caps *v34; // r3
unsigned int v35; // r1
unsigned int v36; // r0
int v37; // r5
- unsigned int *v38; // r6
- int v39; // r4
+ unsigned int *p_field20; // r6
+ unsigned int *v39; // r4
unsigned int *v40; // r12
_DWORD *v41; // r3
unsigned int *v42; // r4
- unsigned int *v43; // r4
+ unsigned int *p_field24; // r4
unsigned int k; // r5
unsigned int _13D9C; // r0
unsigned int v46; // r1
@@ -7878,7 +7564,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
_DWORD v51[9]; // [sp+18h] [bp-24h] BYREF
bzero_core(result: v51, a2: 0x24u);
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
v2 = off_D0B240;
v3 = 0;
@@ -7887,20 +7573,20 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v6 = 0;
v7 = *((_DWORD *)off_D0B240 + 3);
v8 = *((_QWORD *)off_D0B240 + 2);
- *(_DWORD *)a1 = *((_DWORD *)off_D0B240 + 1);
- *(_DWORD *)(a1 + 4) = v7;
- *(_QWORD *)(a1 + 8) = v8;
- *(_DWORD *)(a1 + 16) = v2[6];
- *(_DWORD *)(a1 + 20) = v2[7];
- *(_DWORD *)(a1 + 24) = v2[8];
- *(_DWORD *)(a1 + 28) = v2[9];
+ a1->unk00 = *((_DWORD *)off_D0B240 + 1);
+ a1->field04 = v7;
+ *(_QWORD *)&a1->field08 = v8;
+ a1->field10 = v2[6];
+ a1->field14 = v2[7];
+ a1->field18 = v2[8];
+ a1->field1C = v2[9];
while ( v6 < v7 )
{
_13B74 = asd_reg_read_13B74(a1: 0, a2: *v4, a3: v6);
- v10 = a1 + 8 * v6;
+ v10 = (char *)a1 + 8 * v6;
v11 = v5 == 8;
- *(_DWORD *)(v10 + 36) = _13B74 & 7;
- *(_DWORD *)(v10 + 32) = (_13B74 & 0x1000000) != 0;
+ *((_DWORD *)v10 + 9) = _13B74 & 7;
+ *((_DWORD *)v10 + 8) = (_13B74 & 0x1000000) != 0;
if ( v5 <= 8 )
v11 = (_13B74 & 0x1000000) == 0;
if ( v11 )
@@ -7908,12 +7594,12 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v12 = (int (__fastcall *)(unsigned int))v2[41];
if ( v12 == nullptr || v12(a1: v6) != 0 )
{
- *(_DWORD *)(a1 + 4 * v6 + 104) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
+ *(&a1[2].field18 + v6) = ((unsigned int)asd_reg_read_13B74(a1: 0, a2: v4[2], a3: v6) >> 8) & 0x7F;
if ( *(unsigned __int8 *)v2 << 31 == 0 && asd_link_ready_check(a1: v6) == 0 )
{
- v13 = a1 + 2 * v3;
- *(_DWORD *)(v13 + 356) = 1;
- *(_DWORD *)(v13 + 360) = v6;
+ v13 = (char *)a1 + 2 * v3;
+ *((_DWORD *)v13 + 89) = 1;
+ *((_DWORD *)v13 + 90) = v6;
}
}
v3 += 6;
@@ -7921,13 +7607,13 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
++v6;
}
v14 = 0;
- LOWORD(v15) = 1;
+ LOWORD(field0C) = 1;
while ( v14 != v5 )
{
v16 = 0;
v17 = ~(1 << (v51[v14] & 0x1F));
while ( v16 < v2[3] )
- *(_DWORD *)(a1 + 104 + 4 * v16++) &= v17;
+ *(&a1[2].field18 + v16++) &= v17;
++v14;
}
v18 = v2[7];
@@ -7938,7 +7624,7 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v21 = *v19;
if ( v18 != 0 )
v20 = 0;
- v22 = (int *)(a1 + 24 * v20 + 140);
+ v22 = (int *)(&a1[3].field14 + 6 * v20);
while ( v20 < v21 )
{
*v22 = asd_reg_read_13B74(a1: 1, a2: v4[84], a3: v20) & 1;
@@ -7947,26 +7633,26 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v22 += 6;
++v20;
}
- v23 = (int *)(a1 + 464);
+ p_field18 = (unsigned int **)&a1[11].field18;
for ( i = 0; i < v2[6]; ++i )
{
- *v23 = asd_reg_read_13BF8(a1: v4[105], a2: i, a3: v15) & 1;
- v23[1] = asd_reg_read_13BF8(a1: v4[55], a2: i, a3: v25) & 7;
+ *p_field18 = (unsigned int *)(asd_reg_read_13BF8(a1: v4[105], a2: i, a3: field0C) & 1);
+ p_field18[1] = (unsigned int *)(asd_reg_read_13BF8(a1: v4[55], a2: i, a3: v25) & 7);
v27 = asd_reg_read_13C68(a1: v4[56], a2: i, a3: v26) & 7;
- v23[2] = v27;
- if ( v27 >= *(_DWORD *)(a1 + 12) )
+ p_field18[2] = (unsigned int *)v27;
+ if ( v27 >= a1->field0C )
return 2;
- v19 = (unsigned int *)*v23;
- v23 += 3;
+ v19 = *p_field18;
+ p_field18 += 3;
if ( v19 == (unsigned int *)1 )
{
v19 = (unsigned int *)(1 << (i & 0x1F));
- *(_DWORD *)(a1 + 16 * v27 + 572) = v19;
+ *(&a1[14].field0C + 4 * v27) = (unsigned int)v19;
}
}
- if ( *(_DWORD *)(a1 + 28) != 0 )
+ if ( a1->field1C != 0 )
{
- _13AC4 = asd_reg_read_13AC4(a1: v4[112], a2: (int)v19, a3: v15);
+ _13AC4 = asd_reg_read_13AC4(a1: v4[112], a2: (int)v19, a3: field0C);
v48 = (_13AC4 & 8) != 0;
v49 = (_13AC4 & 4) != 0;
}
@@ -7981,10 +7667,10 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
{
for ( j = 0; j != v50; ++j )
{
- _140AC = asd_reg_read_140AC(a1: v4[125], a2: j, a3: v15);
+ _140AC = asd_reg_read_140AC(a1: v4[125], a2: j, a3: field0C);
if ( (_140AC & 3) == 2 )
{
- LOWORD(v15) = j + 3;
+ LOWORD(field0C) = j + 3;
v35 = j;
if ( (j ^ 3 | !v48) == 0 )
v35 = j + 3;
@@ -7992,24 +7678,24 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
v35 = j + 3;
v36 = (_140AC >> 8) & 7;
v37 = v2[6];
- v38 = (unsigned int *)(a1 + 472);
- v39 = a1 + 16 * v36;
- v40 = (unsigned int *)(v39 + 576);
- v41 = (_DWORD *)(v39 + 584);
- v42 = (unsigned int *)(v39 + 580);
+ p_field20 = &a1[11].field20;
+ v39 = &a1->unk00 + 4 * v36;
+ v40 = v39 + 144;
+ v41 = v39 + 146;
+ v42 = v39 + 145;
while ( v37 != 0 )
{
- v15 = *v38;
- if ( *v38 == v36 )
+ field0C = *p_field20;
+ if ( *p_field20 == v36 )
{
- v15 = *(_DWORD *)(a1 + 12);
- if ( v36 >= v15 )
+ field0C = a1->field0C;
+ if ( v36 >= field0C )
return 2;
*v41 = 2;
*v42 = v35;
*v40 = v36;
}
- v38 += 3;
+ p_field20 += 3;
--v37;
}
}
@@ -8021,33 +7707,33 @@ int __fastcall asd_get_link_caps_full_v2(int a1)
if ( (j ^ 2 | !v49) == 0 )
v32 = j + 3;
v33 = (_140AC >> 4) & 7;
- v15 = v2[4];
- v34 = (_DWORD *)(a1 + 160);
- while ( v15 != 0 )
+ field0C = v2[4];
+ v34 = a1 + 4;
+ while ( field0C != 0 )
{
- --v15;
- if ( *(v34 - 3) == v33 )
+ --field0C;
+ if ( v34[-1].field1C == v33 )
{
- *(v34 - 2) = v32;
- *(v34 - 1) = v33;
- *v34 = 1;
+ v34[-1].field20 = v32;
+ v34[-1].field24 = v33;
+ v34->unk00 = 1;
}
- v34 += 6;
+ v34 = (struct asd_link_caps *)((char *)v34 + 24);
}
}
}
- v43 = (unsigned int *)(a1 + 716);
+ p_field24 = &a1[17].field24;
for ( k = 0; k < v2[8]; ++k )
{
- _13D9C = asd_reg_read_13D9C(a1: v4[111], a2: k, a3: v15);
+ _13D9C = asd_reg_read_13D9C(a1: v4[111], a2: k, a3: field0C);
v46 = (_13D9C >> 8) & 0xF;
- v15 = *(_DWORD *)(a1 + 4);
- if ( v15 < v46 )
+ field0C = a1->field04;
+ if ( field0C < v46 )
return 2;
- *v43 = _13D9C & 1;
- v43[1] = v46;
- v43[2] = k;
- v43 += 3;
+ *p_field24 = _13D9C & 1;
+ p_field24[1] = v46;
+ p_field24[2] = k;
+ p_field24 += 3;
}
return 0;
}
@@ -9073,64 +8759,62 @@ LABEL_9:
// success runs GP crypto op 0x35 and returns 16 bytes.
int __fastcall asd_get_stream_key_v2(int a1, int *a2, unsigned __int8 *a3)
{
- int v5; // r3
- int v6; // r3
- int *v7; // r7
- int v8; // r6
- int v9; // r3
- int v10; // r12
- int v11; // r5
- int v12; // r1
- int v13; // lr
- int v14; // r0
- int v15; // r2
- unsigned __int8 v16; // r4
- int v18[4]; // [sp+0h] [bp-18h] BYREF
- int v19; // [sp+14h] [bp-4h]
+ int *v5; // r7
+ int v6; // r6
+ int v7; // r3
+ int v8; // r12
+ int v9; // r5
+ int v10; // r1
+ int v11; // lr
+ int v12; // r0
+ int v13; // r2
+ unsigned __int8 v14; // r4
+ _DWORD v16[5]; // [sp+0h] [bp-18h] BYREF
+ int v17; // [sp+14h] [bp-4h]
- v19 = *loc_D13728;
- memset(v18, 0, sizeof(v18));
+ v17 = *loc_D13728;
+ memset(v16, 0, 16);
if ( a1 == 0 || *(_DWORD *)(a1 + 64) != 6 )
{
- v8 = 2;
+ v6 = 2;
goto LABEL_12;
}
if ( asd_op_304(a1: 6, a2: 0) != 0 )
{
gp_crypto_op_0x35();
- sub_D01058(result: a2, a2: v18, a3: 0x10u, a4: v6);
+ sub_D01058(a1: a2, a2: v16, a3: 16);
}
- v7 = off_D129AC;
- v8 = 1;
+ v5 = off_D129AC;
+ v6 = 1;
if ( *((_BYTE *)off_D129AC + 40) != 0 )
goto LABEL_12;
- sub_D01058(result: (_BYTE *)off_D129AC + 16, a2, a3: 0x10u, a4: v5);
- v9 = a3[5];
- v10 = a3[4];
- v11 = *a3;
- v12 = a3[1];
- v13 = a3[6];
- v14 = a3[7];
- v15 = a3[2] | (a3[3] << 8);
- v16 = 0;
- *((_BYTE *)v7 + 40) = 1;
- v7[8] = v11 | (v12 << 8) | (v15 << 16);
- v7[9] = v10 | (v9 << 8) | ((v13 | (v14 << 8)) << 16);
- while ( v7[2] > (unsigned int)v16 )
+ sub_D01058(a1: off_D129AC + 4, a2, a3: 16);
+ v7 = a3[5];
+ v8 = a3[4];
+ v9 = *a3;
+ v10 = a3[1];
+ v11 = a3[6];
+ v12 = a3[7];
+ v13 = a3[2] | (a3[3] << 8);
+ v14 = 0;
+ *((_BYTE *)v5 + 40) = 1;
+ v5[8] = v9 | (v10 << 8) | (v13 << 16);
+ v5[9] = v8 | (v7 << 8) | ((v11 | (v12 << 8)) << 16);
+ while ( v5[2] > (unsigned int)v14 )
{
- if ( *(_BYTE *)(v7[3] + 60 * v16 + 56) != 0 )
+ if ( *(_BYTE *)(v5[3] + 60 * v14 + 56) != 0 )
asd_reg_rw_15E66();
- ++v16;
+ ++v14;
}
while ( 1 )
{
- v8 = 0;
+ v6 = 0;
LABEL_12:
- if ( *loc_D13728 == v19 )
+ if ( *loc_D13728 == v17 )
break;
- ((void (__fastcall *)(int))loc_D1987C)(a1: *loc_D13728 - v19);
+ ((void (__fastcall *)(int))loc_D1987C)(a1: *loc_D13728 - v17);
}
- return v8;
+ return v6;
}
/* ==== asd_guard_sigtype1 [tier=EXACT size=18] ==== */
@@ -10235,13 +9919,12 @@ int __fastcall asd_hdcp2_msg_state(unsigned int a1, unsigned int a2, unsigned in
int __fastcall asd_hdcp2_op_1A9(unsigned int a1, _BYTE *a2)
{
int result; // r0
- int v5; // r3
- int v6; // r9
- int v7; // r4
- unsigned __int8 v8; // r8
- unsigned int v9; // r6
- int v10; // r7
- int v11; // r0
+ int v5; // r9
+ int v6; // r4
+ unsigned __int8 v7; // r8
+ unsigned int v8; // r6
+ int v9; // r7
+ int v10; // r0
if ( !asd_feature_enabled(a1: 15) )
return 8;
@@ -10250,28 +9933,28 @@ int __fastcall asd_hdcp2_op_1A9(unsigned int a1, _BYTE *a2)
{
if ( asd_validate_ptr(a1, a2: 0xA0u) != 0 && asd_validate_ptr(a1: (unsigned int)a2, a2: 1u) != 0 )
{
- v6 = dword_D0D268;
+ v5 = dword_D0D268;
+ v6 = 0;
v7 = 0;
- v8 = 0;
- v9 = *(_DWORD *)(dword_D0D268 + 6780);
- v10 = *(unsigned __int8 *)(dword_D0D268 + 6784);
+ v8 = *(_DWORD *)(dword_D0D268 + 6780);
+ v9 = *(unsigned __int8 *)(dword_D0D268 + 6784);
do
{
- if ( v10 << 24 == 0 )
+ if ( v9 << 24 == 0 )
break;
- if ( v9 << 31 != 0 )
+ if ( v8 << 31 != 0 )
{
- sub_D01058(result: (_BYTE *)(5 * v8 + a1), a2: (int *)(5 * v7 + v6 + 6332), a3: 5u, a4: v5);
- v11 = ++v8;
- if ( (unsigned __int8)v11 != v11 )
- v8 = -1;
+ sub_D01058(a1: 5 * v7 + a1, a2: 5 * v6 + v5 + 6332, a3: 5);
+ v10 = ++v7;
+ if ( (unsigned __int8)v10 != v10 )
+ v7 = -1;
}
- ++v7;
- --v10;
- v9 >>= 1;
+ ++v6;
+ --v9;
+ v8 >>= 1;
}
- while ( v7 != 32 );
- *a2 = *(_BYTE *)(v6 + 6784);
+ while ( v6 != 32 );
+ *a2 = *(_BYTE *)(v5 + 6784);
return 0;
}
else
@@ -10288,32 +9971,28 @@ int __fastcall asd_hdcp2_op_1AA(int *a1, int a2)
{
int *v2; // r7
int v5; // r5
- int v6; // r3
- int *v7; // r4
- int v8; // r1
- unsigned int v9; // r2
- int v10; // r3
- int v11; // r0
- int v12; // r5
- int v13; // r8
- int v14; // r11
- int *v15; // r7
- char v16; // r1
- int v17; // r10
- bool v18; // zf
- int *v19; // r10
- int v20; // r4
+ int *v6; // r4
+ int v7; // r1
+ unsigned int v8; // r2
+ int v9; // r3
+ int v10; // r0
+ int v11; // r5
+ int v12; // r8
+ int v13; // r11
+ char *v14; // r7
+ int v15; // r10
+ bool v16; // zf
+ int *v17; // r10
+ int v18; // r4
int result; // r0
- int v22; // r5
- int v23; // [sp+4h] [bp-B0h]
- unsigned int v24; // [sp+8h] [bp-ACh] BYREF
- int v25; // [sp+Ch] [bp-A8h]
- int v26[40]; // [sp+10h] [bp-A4h] BYREF
- int v27; // [sp+B0h] [bp-4h]
+ int v20; // r5
+ int v21; // [sp+4h] [bp-B0h]
+ int v22[40]; // [sp+10h] [bp-A4h] BYREF
+ int v23; // [sp+B0h] [bp-4h]
v2 = off_D10614;
- v27 = *off_D10614;
- bzero_core(result: v26, a2: 0xA0u);
+ v23 = *off_D10614;
+ bzero_core(result: v22, a2: 0xA0u);
if ( !asd_feature_enabled(a1: 15) )
{
result = 8;
@@ -10327,69 +10006,59 @@ int __fastcall asd_hdcp2_op_1AA(int *a1, int a2)
result = 2;
goto LABEL_20;
}
- v7 = v26;
- sub_D01058(result: v26, a2: a1, a3: 0xA0u, a4: v6);
+ v6 = v22;
+ sub_D01058(a1: v22, a2: a1, a3: 160);
if ( v5 == 0 )
goto LABEL_22;
- v11 = v5 + 1;
- v12 = 0;
- v13 = 1;
- v23 = v11;
- while ( v12 != a2 )
+ v10 = v5 + 1;
+ v11 = 0;
+ v12 = 1;
+ v21 = v10;
+ while ( v11 != a2 )
{
- v14 = v23;
- v15 = (int *)((char *)v7 + 5 * v12);
- v16 = *(_BYTE *)v15;
- BYTE1(v24) = *((_BYTE *)v15 + 1);
- LOBYTE(v24) = v16;
- BYTE2(v24) = *((_BYTE *)v15 + 2);
- v8 = 6492;
- v11 = dword_D10714 + 6492;
- v9 = *((unsigned __int8 *)v15 + 3);
- v10 = *((unsigned __int8 *)v15 + 4);
- HIBYTE(v24) = *((_BYTE *)v15 + 3);
- LOBYTE(v25) = v10;
- while ( --v14 != 0 )
+ v13 = v21;
+ v14 = (char *)v6 + 5 * v11;
+ v7 = 6492;
+ v10 = dword_D10714 + 6492;
+ v8 = (unsigned __int8)v14[3];
+ v9 = (unsigned __int8)v14[4];
+ while ( --v13 != 0 )
{
- v17 = v11 + 5;
- v18 = loc_D01000(a1: (unsigned int *)v11, a2: &v24, a3: 5u) == 0;
- v11 = v17;
- if ( v18 )
+ v15 = v10 + 5;
+ v16 = ((int (*)(void))loc_D01000)() == 0;
+ v10 = v15;
+ if ( v16 )
goto LABEL_16;
}
- if ( v13 != 0 )
+ if ( v12 != 0 )
{
- v19 = v7;
- v20 = dword_D10714;
- sub_D01058(
- result: (_BYTE *)(5 * *(unsigned __int8 *)(dword_D10714 + 6785) + dword_D10714 + 6492),
- a2: v15,
- a3: 5u,
- a4: v10);
- v11 = *(unsigned __int8 *)(v20 + 6785) + 1;
- *(_BYTE *)(v20 + 6785) = v11;
- v7 = v19;
+ v17 = v6;
+ v18 = dword_D10714;
+ sub_D01058(a1: 5 * *(unsigned __int8 *)(dword_D10714 + 6785) + dword_D10714 + 6492, a2: v14, a3: 5);
+ v10 = *(unsigned __int8 *)(v18 + 6785) + 1;
+ *(_BYTE *)(v18 + 6785) = v10;
+ v6 = v17;
goto LABEL_17;
}
LABEL_16:
- v13 = 0;
+ v12 = 0;
LABEL_17:
- ++v12;
+ ++v11;
}
while ( 1 )
{
- result = asd_hdcp2_sub_C7F0(a1: v11, a2: v8, a3: v9, a4: v10);
+ result = asd_hdcp2_sub_C7F0(a1: v10, a2: v7, a3: v8, a4: v9);
v2 = off_D10614;
LABEL_20:
- if ( *v2 == v27 )
+ if ( *v2 == v23 )
break;
- ((void (__fastcall *)(int, int))loc_D1987C)(a1: result, a2: *v2 - v27);
+ ((void (__fastcall *)(int, int))loc_D1987C)(a1: result, a2: *v2 - v23);
LABEL_22:
- v22 = dword_D10714;
- memcpy_aligned(result: (int *)(dword_D10714 + 6492), a2: v26, a3: 5 * a2, a4: v10);
- v11 = 6785;
- v8 = *(unsigned __int8 *)(v22 + 6785) + a2;
- *(_BYTE *)(v22 + 6785) = v8;
+ v20 = dword_D10714;
+ memcpy_aligned(result: (int *)(dword_D10714 + 6492), a2: v22, a3: 5 * a2, a4: v9);
+ v10 = 6785;
+ v7 = *(unsigned __int8 *)(v20 + 6785) + a2;
+ *(_BYTE *)(v20 + 6785) = v7;
}
return result;
}
@@ -10435,24 +10104,22 @@ int __fastcall asd_hdcp2_set_topology(unsigned int a1, int *a2, int a3, unsigned
int *v4; // r4
int result; // r0
int v10; // r8
- int v11; // r3
- unsigned int v12; // r11
- unsigned int v13; // r2
- int v14; // r8
- unsigned __int8 v15; // r1
- unsigned __int8 v16; // r10
- unsigned int *v17; // r4
- int *v18; // r0
- int v19; // r3
- int v20; // r0
- int v21; // r0
- unsigned __int8 v22; // [sp+4h] [bp-A8h]
- _DWORD v23[40]; // [sp+8h] [bp-A4h] BYREF
- int v24; // [sp+A8h] [bp-4h]
+ unsigned int v11; // r11
+ unsigned int v12; // r2
+ int v13; // r8
+ unsigned __int8 v14; // r1
+ unsigned __int8 v15; // r10
+ unsigned int *v16; // r4
+ int *v17; // r0
+ int v18; // r0
+ int v19; // r0
+ unsigned __int8 v20; // [sp+4h] [bp-A8h]
+ _DWORD v21[40]; // [sp+8h] [bp-A4h] BYREF
+ int v22; // [sp+A8h] [bp-4h]
v4 = off_D0FB74;
- v24 = *off_D0FB74;
- bzero_core(result: v23, a2: 0xA0u);
+ v22 = *off_D0FB74;
+ bzero_core(result: v21, a2: 0xA0u);
if ( !asd_feature_enabled(a1: 15) )
{
result = 8;
@@ -10476,11 +10143,11 @@ int __fastcall asd_hdcp2_set_topology(unsigned int a1, int *a2, int a3, unsigned
result = 2;
goto LABEL_5;
}
- v12 = *(_DWORD *)(v10 + 6780);
- sub_D01058(result: v23, a2, a3: 0xA0u, a4: v11);
+ v11 = *(_DWORD *)(v10 + 6780);
+ sub_D01058(a1: v21, a2, a3: 160);
+ v13 = 0;
v14 = 0;
v15 = 0;
- v16 = 0;
while ( 1 )
{
if ( a3 << 24 == 0 )
@@ -10488,47 +10155,47 @@ int __fastcall asd_hdcp2_set_topology(unsigned int a1, int *a2, int a3, unsigned
result = 0;
goto LABEL_5;
}
- if ( v12 << 31 == 0 )
+ if ( v11 << 31 == 0 )
break;
LABEL_19:
- v21 = v16 + 1;
- ++v14;
- v12 >>= 1;
- ++v16;
- if ( (unsigned __int8)v21 != v21 )
- v16 = -1;
+ v19 = v15 + 1;
+ ++v13;
+ v11 >>= 1;
+ ++v15;
+ if ( (unsigned __int8)v19 != v19 )
+ v15 = -1;
result = 0;
- if ( v14 == 32 )
+ if ( v13 == 32 )
goto LABEL_5;
}
- v22 = v15;
- v17 = (_DWORD *)((char *)v23 + 5 * v15);
- v18 = (int *)asd_hdcp2_sub_FB7C(a1: v17, a2: (int)v23, a3: v13, a4: 1u);
- if ( v18 == nullptr )
+ v20 = v14;
+ v16 = (_DWORD *)((char *)v21 + 5 * v14);
+ v17 = (int *)asd_hdcp2_sub_FB7C(a1: v16, a2: (int)v21, a3: v12, a4: 1u);
+ if ( v17 == nullptr )
{
a2 = (int *)dword_D0FEA8;
- sub_D01058(result: (_BYTE *)(5 * v14 + dword_D0FEA8 + 6332), a2: (int *)v17, a3: 5u, a4: v19);
- v20 = 1 << (v16 & 0x1F);
+ sub_D01058(a1: 5 * v13 + dword_D0FEA8 + 6332, a2: v16, a3: 5);
+ v18 = 1 << (v15 & 0x1F);
v4 = off_D0FB74;
--a3;
- a2[1695] |= v20;
- v13 = 6784;
+ a2[1695] |= v18;
+ v12 = 6784;
++*((_BYTE *)a2 + 6784);
- *a4 |= v20;
- a2[v14 + 1663] = a1;
- v15 = v22 + 1;
- if ( (unsigned __int8)(v22 + 1) != v22 + 1 )
- v15 = -1;
+ *a4 |= v18;
+ a2[v13 + 1663] = a1;
+ v14 = v20 + 1;
+ if ( (unsigned __int8)(v20 + 1) != v20 + 1 )
+ v14 = -1;
goto LABEL_19;
}
v4 = off_D0FB74;
- a2 = v18;
- if ( v18 != (int *)23 || (result = asd_hdcp2_teardown(a1: a4)) == 0 )
+ a2 = v17;
+ if ( v17 != (int *)23 || (result = asd_hdcp2_teardown(a1: a4)) == 0 )
result = (int)a2;
LABEL_5:
- if ( *v4 != v24 )
+ if ( *v4 != v22 )
{
- ((void (__fastcall *)(int, int))loc_D1987C)(a1: result, a2: *v4 - v24);
+ ((void (__fastcall *)(int, int))loc_D1987C)(a1: result, a2: *v4 - v22);
continue;
}
return result;
@@ -10745,7 +10412,7 @@ int __fastcall asd_hdcp2_sub_C7F0(int a1, int a2, unsigned int a3, int a4)
char v9; // r1
char v10; // r2
char v11; // r3
- unsigned int *v12; // r5
+ int v12; // r5
int v13; // r10
unsigned int v14; // r11
int v15; // r8
@@ -10758,7 +10425,7 @@ int __fastcall asd_hdcp2_sub_C7F0(int a1, int a2, unsigned int a3, int a4)
int v22; // r3
unsigned int v23; // r1
int v24; // r2
- unsigned int v26[2]; // [sp+4h] [bp-8h] BYREF
+ _DWORD v26[2]; // [sp+4h] [bp-8h] BYREF
v26[0] = a3;
v26[1] = a4;
@@ -10776,7 +10443,7 @@ int __fastcall asd_hdcp2_sub_C7F0(int a1, int a2, unsigned int a3, int a4)
v10 = v6[2];
v11 = v6[3];
LOBYTE(v26[1]) = v6[4];
- v12 = (unsigned int *)(v4 + 6332);
+ v12 = v4 + 6332;
v13 = *(unsigned __int8 *)(v4 + 6784);
v14 = *(_DWORD *)(v4 + 6780);
BYTE1(v26[0]) = v9;
@@ -10786,7 +10453,7 @@ int __fastcall asd_hdcp2_sub_C7F0(int a1, int a2, unsigned int a3, int a4)
{
if ( v14 << 31 != 0 )
{
- if ( loc_D01000(a1: v12, a2: v26, a3: 5u) == 0 )
+ if ( ((int (__fastcall *)(int, _DWORD *, int))loc_D01000)(a1: v12, a2: v26, a3: 5) == 0 )
{
v15 = v4 + 4 * v7;
v16 = *(_DWORD *)(v15 + 6652);
@@ -10829,7 +10496,7 @@ int __fastcall asd_hdcp2_sub_C7F0(int a1, int a2, unsigned int a3, int a4)
--v13;
}
++v7;
- v12 = (unsigned int *)((char *)v12 + 5);
+ v12 += 5;
v14 >>= 1;
if ( v7 == 32 )
break;
@@ -10846,7 +10513,7 @@ int __fastcall asd_hdcp2_sub_FB7C(unsigned int *a1, int a2, unsigned int a3, uns
{
unsigned int v5; // r6
_BYTE *v7; // r7
- unsigned int v8[2]; // [sp+4h] [bp-8h] BYREF
+ _DWORD v8[2]; // [sp+4h] [bp-8h] BYREF
v8[0] = a3;
v8[1] = a4;
@@ -10864,7 +10531,7 @@ int __fastcall asd_hdcp2_sub_FB7C(unsigned int *a1, int a2, unsigned int a3, uns
LOBYTE(v8[1]) = *v7;
v7 += 5;
--v5;
- if ( loc_D01000(a1, a2: v8, a3: 5u) == 0 )
+ if ( ((int (__fastcall *)(unsigned int *, _DWORD *, int))loc_D01000)(a1, a2: v8, a3: 5) == 0 )
return 23;
}
return 0;
@@ -14990,7 +14657,7 @@ int __fastcall asd_memcpy_cfg0(_BYTE *a1, int a2, int a3, int a4)
if ( a1 == nullptr )
return 2;
__asm { SVC 0x5E ; '^' }
- sub_D01058(result: a1, a2: off_D10AE0, a3: 0x18u, a4);
+ sub_D01058(a1, a2: off_D10AE0, a3: 24);
__asm { SVC 0x5F ; '_' }
return 0;
}
@@ -16267,14 +15934,14 @@ LABEL_65:
/* ==== asd_program_link_by_signal_v2 [tier=EXACT size=802] ==== */
// Second ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v2(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -16282,15 +15949,15 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int connector_ids_a; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r9
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
- unsigned int v25; // r2
- int v26; // r10
+ unsigned int field34; // r2
+ unsigned int field30; // r10
_DWORD *v28; // r7
unsigned int v29; // r6
__int16 v30; // r2
@@ -16300,7 +15967,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
__int16 _13974; // r0
int v35; // r1
__int16 v36; // r2
- int v37; // r0
+ unsigned int v37; // r0
_DWORD *v38; // r7
unsigned int v39; // r6
__int16 v40; // r2
@@ -16320,21 +15987,21 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
BOOL v54; // r0
int v55; // r1
__int16 v56; // r2
- int v57; // r0
- unsigned int v58; // r6
+ unsigned int v57; // r0
+ unsigned int field24; // r6
int (__fastcall *v59)(_DWORD, int); // r0
unsigned int v60; // r0
- int v61; // r0
+ unsigned int v61; // r0
int v62; // [sp+0h] [bp-8h] BYREF
int v63; // [sp+4h] [bp-4h] BYREF
v62 = a3;
v63 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40); // switch 4 cases
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28; // switch 4 cases
+ switch ( __ROR4__(field28, 4) )
{ // switch jump
case 0:
v7 = *((_DWORD *)off_D0A55C + 3); // jumptable 00D0A250 case 0
@@ -16356,7 +16023,7 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D0A55C + 3); // jumptable 00D0A250 case 1
@@ -16369,9 +16036,9 @@ int __fastcall asd_program_link_by_signal_v2(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0; // jumptable 00D0A250 default case
}
@@ -16388,7 +16055,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -16409,29 +16076,29 @@ LABEL_23:
break;
}
connector_ids_a = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return connector_ids_a;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return connector_ids_a;
v19 = off_D0B240;
- if ( *((_DWORD *)off_D0B240 + 1) <= v18 )
+ if ( *((_DWORD *)off_D0B240 + 1) <= field0C )
return connector_ids_a;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0B240 + 7);
connector_ids_a = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return connector_ids_a;
- v25 = *(_DWORD *)(a1 + 52);
- v26 = *(_DWORD *)(a1 + 48);
- if ( v25 == 2 )
+ field34 = a1->field34;
+ field30 = a1->field30;
+ if ( field34 == 2 )
{
- v25 = *((_DWORD *)off_D0B240 + 8);
- if ( v25 <= v22 )
+ field34 = *((_DWORD *)off_D0B240 + 8);
+ if ( field34 <= field38 )
return 2;
}
v62 = 255;
@@ -16440,16 +16107,16 @@ LABEL_23:
{
if ( v21 != 0 )
{
- connector_ids_a = asd_get_connector_ids_a((_DWORD *)a1, a2: &v63, a3: &v62);
+ connector_ids_a = asd_get_connector_ids_a(a1, a2: &v63, a3: &v62);
if ( connector_ids_a != 0 )
return connector_ids_a;
}
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A560 + 4), a3: v5) << 31 != 0 )
{
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v28 = off_D0A560;
- v29 = asd_reg_read_13974(a1: *((_DWORD *)off_D0A560 + 100), a2: HIDWORD(v5), a3: v25) & 7;
+ v29 = asd_reg_read_13974(a1: *((_DWORD *)off_D0A560 + 100), a2: HIDWORD(v5), a3: field34) & 7;
_139E4 = asd_reg_read_139E4(a1: v28[99], a2: v29, a3: v30);
asd_reg_write_19394(a1: v28[99], a2: v29, a3: _139E4 | 0x80);
v33 = v28[103];
@@ -16462,17 +16129,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A560 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || asd_opt_cb_D423E8() != 0
- || asd_reg_read_13D24_cfg1(a1: v5, a2: v35, a3: v36) != 0 )// jumptable 00D0A3A0 case 0
+ if ( a1->field20 == 0 || asd_opt_cb_D423E8() != 0 || asd_reg_read_13D24_cfg1(a1: v5, a2: v35, a3: v36) != 0 )// jumptable 00D0A3A0 case 0
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v37 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -16481,12 +16146,12 @@ LABEL_23:
goto LABEL_69; // switch 8 cases
case 2:
v37 = 1; // jumptable 00D0A3A0 case 2
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3; // jumptable 00D0A3A0 case 5
+ a1->field4C = 3; // jumptable 00D0A3A0 case 5
v37 = 5;
goto LABEL_68;
}
@@ -16498,14 +16163,14 @@ LABEL_23:
{
if ( v21 != 0 )
{
- connector_ids_a = asd_get_connector_ids_a((_DWORD *)a1, a2: &v63, a3: &v62);
+ connector_ids_a = asd_get_connector_ids_a(a1, a2: &v63, a3: &v62);
if ( connector_ids_a != 0 )
return connector_ids_a;
}
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v38 = off_D0A560;
- v39 = asd_reg_read_13974(a1: *((_DWORD *)off_D0A560 + 101), a2: HIDWORD(v5), a3: v25) & 7;
+ v39 = asd_reg_read_13974(a1: *((_DWORD *)off_D0A560 + 101), a2: HIDWORD(v5), a3: field34) & 7;
v41 = asd_reg_read_139E4(a1: v38[99], a2: v39, a3: v40);
asd_reg_write_19394(a1: v38[99], a2: v39, a3: v41 | 0x80);
v43 = v38[104];
@@ -16518,23 +16183,23 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D0A560 + 84), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2; // jumptable 00D0A3A0 case 3
+ a1->field4C = 2; // jumptable 00D0A3A0 case 3
v37 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v37;
+ a1->field40 = v37;
goto LABEL_69;
}
return 8;
}
- connector_ids_a = asd_get_connector_ids_a((_DWORD *)a1, a2: &v63, a3: &v62);
+ connector_ids_a = asd_get_connector_ids_a(a1, a2: &v63, a3: &v62);
if ( connector_ids_a != 0 )
return connector_ids_a;
v46 = (int *)off_D0A560;
if ( asd_reg_read_13BF8(a1: *((_DWORD *)off_D0A560 + 105), a2: HIDWORD(v5), a3: v45) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
- if ( v26 == 1 )
+ a1->field4C = 3;
+ a1->field40 = 5;
+ if ( field30 == 1 )
{
v48 = asd_reg_read_13BF8(a1: v46[106], a2: HIDWORD(v5), a3: v47) & 7;
v50 = asd_reg_read_139E4(a1: v46[99], a2: v48, a3: v49);
@@ -16553,28 +16218,28 @@ LABEL_69:
connector_ids_a = v54;
v57 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v57;
+ a1->field44 = v57;
return connector_ids_a;
}
- v58 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v60 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v60;
- if ( v58 < 0x16 )
+ v60 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v60;
+ if ( field24 < 0x16 )
return 0;
v61 = v60 | 2;
LABEL_85:
- *(_DWORD *)(a1 + 68) = v61;
+ a1->field44 = v61;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v55, a3: v56) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg1(a1: v5, a2: v55, a3: v56) == 0 )
{
v61 = 16;
goto LABEL_85;
}
- if ( v58 < 0xA )
+ if ( field24 < 0xA )
return 0;
v59 = (int (__fastcall *)(_DWORD, int))v19[43];
if ( v59 == nullptr || (connector_ids_a = v59(a1: v59, a2: v55)) == 0 )
@@ -16582,13 +16247,13 @@ LABEL_85:
connector_ids_a = 0;
if ( (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A878 + 9), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
connector_ids_a = 0;
}
}
- if ( v58 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v57 = *(_DWORD *)(a1 + 68) | 2;
+ v57 = a1->field44 | 2;
goto LABEL_71;
}
return connector_ids_a;
@@ -16596,14 +16261,14 @@ LABEL_85:
/* ==== asd_program_link_by_signal_v3 [tier=EXACT size=784] ==== */
// Third ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v3(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -16611,15 +16276,15 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int connector_ids_b; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
- unsigned int v25; // r2
- int v26; // r9
+ unsigned int field34; // r2
+ unsigned int field30; // r9
_DWORD *v28; // r7
unsigned int v29; // r6
__int16 v30; // r2
@@ -16629,7 +16294,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
__int16 _13974; // r0
int v35; // r1
__int16 v36; // r2
- int v37; // r0
+ unsigned int v37; // r0
_DWORD *v38; // r7
unsigned int v39; // r6
__int16 v40; // r2
@@ -16649,20 +16314,20 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
BOOL v54; // r0
int v55; // r1
__int16 v56; // r2
- int v57; // r0
- unsigned int v58; // r6
+ unsigned int v57; // r0
+ unsigned int field24; // r6
unsigned int v59; // r0
- int v60; // r0
+ unsigned int v60; // r0
int v61; // [sp+0h] [bp-8h] BYREF
int v62; // [sp+4h] [bp-4h] BYREF
v61 = a3;
v62 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40); // switch 4 cases
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28; // switch 4 cases
+ switch ( __ROR4__(field28, 4) )
{ // switch jump
case 0:
v7 = *((_DWORD *)off_D0A874 + 3); // jumptable 00D0A57C case 0
@@ -16684,7 +16349,7 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D0A874 + 3); // jumptable 00D0A57C case 1
@@ -16697,9 +16362,9 @@ int __fastcall asd_program_link_by_signal_v3(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0; // jumptable 00D0A57C default case
}
@@ -16716,7 +16381,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -16737,29 +16402,29 @@ LABEL_23:
break;
}
connector_ids_b = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return connector_ids_b;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return connector_ids_b;
v19 = off_D0A874;
- if ( *((_DWORD *)off_D0A874 + 1) <= v18 )
+ if ( *((_DWORD *)off_D0A874 + 1) <= field0C )
return connector_ids_b;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0A874 + 7);
connector_ids_b = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return connector_ids_b;
- v25 = *(_DWORD *)(a1 + 52);
- v26 = *(_DWORD *)(a1 + 48);
- if ( v25 == 2 )
+ field34 = a1->field34;
+ field30 = a1->field30;
+ if ( field34 == 2 )
{
- v25 = *((_DWORD *)off_D0A874 + 8);
- if ( v25 <= v22 )
+ field34 = *((_DWORD *)off_D0A874 + 8);
+ if ( field34 <= field38 )
return 2;
}
v61 = 255;
@@ -16768,16 +16433,16 @@ LABEL_23:
{
if ( v21 != 0 )
{
- connector_ids_b = asd_get_connector_ids_b((_DWORD *)a1, a2: &v62, a3: &v61);
+ connector_ids_b = asd_get_connector_ids_b(a1, a2: &v62, a3: &v61);
if ( connector_ids_b != 0 )
return connector_ids_b;
}
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A878 + 4), a3: v5) << 31 != 0 )
{
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v28 = off_D0A878;
- v29 = asd_reg_read_13974(a1: *((_DWORD *)off_D0A878 + 100), a2: HIDWORD(v5), a3: v25) & 7;
+ v29 = asd_reg_read_13974(a1: *((_DWORD *)off_D0A878 + 100), a2: HIDWORD(v5), a3: field34) & 7;
_139E4 = asd_reg_read_139E4(a1: v28[99], a2: v29, a3: v30);
asd_reg_write_19394(a1: v28[99], a2: v29, a3: _139E4 | 0x80);
v33 = v28[103];
@@ -16790,17 +16455,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0A878 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || asd_opt_cb_D423E8() != 0
- || asd_reg_read_13D24_cfg0(a1: v5, a2: v35, a3: v36) != 0 )// jumptable 00D0A6C2 case 0
+ if ( a1->field20 == 0 || asd_opt_cb_D423E8() != 0 || asd_reg_read_13D24_cfg0(a1: v5, a2: v35, a3: v36) != 0 )// jumptable 00D0A6C2 case 0
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v37 = 4;
goto LABEL_68;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -16809,12 +16472,12 @@ LABEL_23:
goto LABEL_69; // switch 8 cases
case 2:
v37 = 1; // jumptable 00D0A6C2 case 2
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_68;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3; // jumptable 00D0A6C2 case 5
+ a1->field4C = 3; // jumptable 00D0A6C2 case 5
v37 = 5;
goto LABEL_68;
}
@@ -16826,14 +16489,14 @@ LABEL_23:
{
if ( v21 != 0 )
{
- connector_ids_b = asd_get_connector_ids_b((_DWORD *)a1, a2: &v62, a3: &v61);
+ connector_ids_b = asd_get_connector_ids_b(a1, a2: &v62, a3: &v61);
if ( connector_ids_b != 0 )
return connector_ids_b;
}
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v38 = off_D0A878;
- v39 = asd_reg_read_13974(a1: *((_DWORD *)off_D0A878 + 101), a2: HIDWORD(v5), a3: v25) & 7;
+ v39 = asd_reg_read_13974(a1: *((_DWORD *)off_D0A878 + 101), a2: HIDWORD(v5), a3: field34) & 7;
v41 = asd_reg_read_139E4(a1: v38[99], a2: v39, a3: v40);
asd_reg_write_19394(a1: v38[99], a2: v39, a3: v41 | 0x80);
v43 = v38[104];
@@ -16846,23 +16509,23 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D0A878 + 84), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2; // jumptable 00D0A6C2 case 3
+ a1->field4C = 2; // jumptable 00D0A6C2 case 3
v37 = 3;
LABEL_68:
- *(_DWORD *)(a1 + 64) = v37;
+ a1->field40 = v37;
goto LABEL_69;
}
return 8;
}
- connector_ids_b = asd_get_connector_ids_b((_DWORD *)a1, a2: &v62, a3: &v61);
+ connector_ids_b = asd_get_connector_ids_b(a1, a2: &v62, a3: &v61);
if ( connector_ids_b != 0 )
return connector_ids_b;
v46 = (int *)off_D0A878;
if ( asd_reg_read_13BF8(a1: *((_DWORD *)off_D0A878 + 105), a2: HIDWORD(v5), a3: v45) << 31 == 0 )
return 8;
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
- if ( v26 == 1 )
+ a1->field4C = 3;
+ a1->field40 = 5;
+ if ( field30 == 1 )
{
v48 = asd_reg_read_13BF8(a1: v46[106], a2: HIDWORD(v5), a3: v47) & 7;
v50 = asd_reg_read_139E4(a1: v46[99], a2: v48, a3: v49);
@@ -16881,38 +16544,38 @@ LABEL_69:
connector_ids_b = v54;
v57 = 4;
LABEL_71:
- *(_DWORD *)(a1 + 68) = v57;
+ a1->field44 = v57;
return connector_ids_b;
}
- v58 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v59 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- *(_DWORD *)(a1 + 68) = v59;
- if ( v58 < 0x16 )
+ v59 = a1->field44 & 0xFFFFFFFE;
+ a1->field44 = v59;
+ if ( field24 < 0x16 )
return 0;
v60 = v59 | 2;
LABEL_84:
- *(_DWORD *)(a1 + 68) = v60;
+ a1->field44 = v60;
return 0;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v55, a3: v56) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_reg_read_13D24_cfg0(a1: v5, a2: v55, a3: v56) == 0 )
{
v60 = 16;
goto LABEL_84;
}
- if ( v58 < 0xA )
+ if ( field24 < 0xA )
return 0;
connector_ids_b = asd_opt_cb_D423EC();
if ( connector_ids_b == 0
&& (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0ABD8 + 9), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
}
- if ( v58 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v57 = *(_DWORD *)(a1 + 68) | 2;
+ v57 = a1->field44 | 2;
goto LABEL_71;
}
return connector_ids_b;
@@ -16920,14 +16583,14 @@ LABEL_84:
/* ==== asd_program_link_by_signal_v4 [tier=EXACT size=854] ==== */
// Fourth ASIC form of asd_program_link_by_signal.
-int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
+int __fastcall asd_program_link_by_signal_v4(struct asd_link_cfg *a1, int a2, int a3, int a4)
{
__int64 v5; // kr00_8
- int v6; // r0
+ unsigned int field28; // r0
unsigned int v7; // r0
bool v8; // cc
unsigned int v9; // r1
- int v10; // r5
+ unsigned int v10; // r5
unsigned int v11; // r1
bool v12; // cc
unsigned int v13; // r1
@@ -16935,15 +16598,15 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
unsigned int v15; // r1
bool v16; // cc
int connector_ids_a; // r7
- unsigned int v18; // r0
+ unsigned int field0C; // r0
_DWORD *v19; // r6
- unsigned int v20; // r2
+ unsigned int field2C; // r2
unsigned int v21; // r0
- unsigned int v22; // r1
+ unsigned int field38; // r1
BOOL v23; // r3
BOOL v24; // r2
- unsigned int v25; // r2
- int v26; // r9
+ unsigned int field34; // r2
+ unsigned int field30; // r9
_DWORD *v28; // r7
unsigned int v29; // r6
__int16 v30; // r2
@@ -16953,7 +16616,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
__int16 _13974; // r0
int v35; // r1
__int16 v36; // r2
- int v37; // r0
+ unsigned int v37; // r0
_DWORD *v38; // r7
unsigned int v39; // r6
__int16 v40; // r2
@@ -16968,8 +16631,8 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
BOOL v49; // r0
int v50; // r1
__int16 v51; // r2
- int v52; // r0
- unsigned int v53; // r6
+ unsigned int v52; // r0
+ unsigned int field24; // r6
unsigned int v54; // r0
unsigned int v55; // r6
__int16 v56; // r2
@@ -16982,11 +16645,11 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
v61 = a3;
v62 = a4;
- if ( a1 == 0 )
+ if ( a1 == nullptr )
return 2;
- v5 = *(_QWORD *)(a1 + 20);
- v6 = *(_DWORD *)(a1 + 40); // switch 4 cases
- switch ( __ROR4__(v6, 4) )
+ v5 = *(_QWORD *)&a1->field14;
+ field28 = a1->field28; // switch 4 cases
+ switch ( __ROR4__(field28, 4) )
{ // switch jump
case 0:
v7 = *((_DWORD *)off_D0B818 + 3); // jumptable 00D0A894 case 0
@@ -17008,7 +16671,7 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
{
v10 = 32;
}
- *(_DWORD *)(a1 + 48) = 1;
+ a1->field30 = 1;
break;
case 1:
v11 = *((_DWORD *)off_D0ABD4 + 3); // jumptable 00D0A894 case 1
@@ -17021,9 +16684,9 @@ int __fastcall asd_program_link_by_signal_v4(int a1, int a2, int a3, int a4)
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
- if ( v6 == 32 )
+ if ( field28 == 32 )
goto LABEL_16;
v10 = 0; // jumptable 00D0A894 default case
}
@@ -17040,7 +16703,7 @@ LABEL_16:
}
else
{
- if ( v6 == 48 )
+ if ( field28 == 48 )
goto LABEL_20;
v10 = 0;
}
@@ -17061,29 +16724,29 @@ LABEL_23:
break;
}
connector_ids_a = 2;
- *(_DWORD *)(a1 + 40) = v10;
+ a1->field28 = v10;
if ( v10 == 0 )
return connector_ids_a;
- v18 = *(_DWORD *)(a1 + 12);
- if ( v18 == 0 )
+ field0C = a1->field0C;
+ if ( field0C == 0 )
return connector_ids_a;
v19 = off_D0ABD4;
- if ( *((_DWORD *)off_D0ABD4 + 1) <= v18 )
+ if ( *((_DWORD *)off_D0ABD4 + 1) <= field0C )
return connector_ids_a;
- v20 = *(_DWORD *)(a1 + 44);
+ field2C = a1->field2C;
v21 = *((_DWORD *)off_D0ABD4 + 7);
connector_ids_a = 2;
- v22 = *(_DWORD *)(a1 + 56);
- v23 = v21 <= v20;
- v24 = v20 != 0;
- if ( v22 > 4 || v24 && v23 )
+ field38 = a1->field38;
+ v23 = v21 <= field2C;
+ v24 = field2C != 0;
+ if ( field38 > 4 || v24 && v23 )
return connector_ids_a;
- v25 = *(_DWORD *)(a1 + 52);
- v26 = *(_DWORD *)(a1 + 48);
- if ( v25 == 2 )
+ field34 = a1->field34;
+ field30 = a1->field30;
+ if ( field34 == 2 )
{
- v25 = *((_DWORD *)off_D0ABD4 + 8);
- if ( v25 <= v22 )
+ field34 = *((_DWORD *)off_D0ABD4 + 8);
+ if ( field34 <= field38 )
return 2;
}
v61 = 255;
@@ -17092,16 +16755,16 @@ LABEL_23:
{
if ( v21 != 0 )
{
- connector_ids_a = asd_get_connector_ids_a((_DWORD *)a1, a2: &v62, a3: &v61);
+ connector_ids_a = asd_get_connector_ids_a(a1, a2: &v62, a3: &v61);
if ( connector_ids_a != 0 )
return connector_ids_a;
}
if ( v19[4] == 0 || asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0ABD8 + 4), a3: v5) << 31 != 0 )
{
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v28 = off_D0ABD8;
- v29 = asd_reg_read_13974(a1: *((_DWORD *)off_D0ABD8 + 100), a2: HIDWORD(v5), a3: v25) & 7;
+ v29 = asd_reg_read_13974(a1: *((_DWORD *)off_D0ABD8 + 100), a2: HIDWORD(v5), a3: field34) & 7;
_139E4 = asd_reg_read_139E4(a1: v28[99], a2: v29, a3: v30);
asd_reg_write_19394(a1: v28[99], a2: v29, a3: _139E4 | 0x80);
v33 = v28[103];
@@ -17114,17 +16777,15 @@ LABEL_23:
switch ( asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0ABD8 + 3), a3: v5) & 7 )
{
case 0:
- if ( *(_DWORD *)(a1 + 32) == 0
- || asd_opt_cb_D423E8() != 0
- || asd_connector_state_check(a1: v5, a2: v35, a3: v36) != 0 )// jumptable 00D0A9DC case 0
+ if ( a1->field20 == 0 || asd_opt_cb_D423E8() != 0 || asd_connector_state_check(a1: v5, a2: v35, a3: v36) != 0 )// jumptable 00D0A9DC case 0
{
- *(_DWORD *)(a1 + 76) = 3;
+ a1->field4C = 3;
v37 = 4;
goto LABEL_71;
}
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
break;
case 1:
case 4:
@@ -17133,12 +16794,12 @@ LABEL_23:
goto LABEL_72; // switch 8 cases
case 2:
v37 = 1; // jumptable 00D0A9DC case 2
- *(_DWORD *)(a1 + 76) = 1;
+ a1->field4C = 1;
goto LABEL_71;
case 3:
goto LABEL_59;
case 5:
- *(_DWORD *)(a1 + 76) = 3; // jumptable 00D0A9DC case 5
+ a1->field4C = 3; // jumptable 00D0A9DC case 5
v37 = 5;
goto LABEL_71;
}
@@ -17150,14 +16811,14 @@ LABEL_23:
{
if ( v21 != 0 )
{
- connector_ids_a = asd_get_connector_ids_a((_DWORD *)a1, a2: &v62, a3: &v61);
+ connector_ids_a = asd_get_connector_ids_a(a1, a2: &v62, a3: &v61);
if ( connector_ids_a != 0 )
return connector_ids_a;
}
- if ( v26 == 1 )
+ if ( field30 == 1 )
{
v38 = off_D0ABD8;
- v39 = asd_reg_read_13974(a1: *((_DWORD *)off_D0ABD8 + 101), a2: HIDWORD(v5), a3: v25) & 7;
+ v39 = asd_reg_read_13974(a1: *((_DWORD *)off_D0ABD8 + 101), a2: HIDWORD(v5), a3: field34) & 7;
v41 = asd_reg_read_139E4(a1: v38[99], a2: v39, a3: v40);
asd_reg_write_19394(a1: v38[99], a2: v39, a3: v41 | 0x80);
v43 = v38[104];
@@ -17170,39 +16831,36 @@ LABEL_23:
if ( asd_reg_read_13B74(a1: 1, a2: *((_DWORD *)off_D0ABD8 + 84), a3: v5) << 31 != 0 )
{
LABEL_59:
- *(_DWORD *)(a1 + 76) = 2; // jumptable 00D0A9DC case 3
+ a1->field4C = 2; // jumptable 00D0A9DC case 3
v37 = 3;
LABEL_71:
- *(_DWORD *)(a1 + 64) = v37;
+ a1->field40 = v37;
goto LABEL_72;
}
return 8;
}
- if ( *(_DWORD *)(a1 + 32) == 0
+ if ( a1->field20 == 0
|| (v45 = *((int (__fastcall **)(_DWORD))off_D0ABD4 + 44)) != nullptr && v45(a1: v5) != 0
- || asd_encoder_state_check(a1: v5, a2: (int)v45, a3: v25) != 0 )
+ || asd_encoder_state_check(a1: v5, a2: (int)v45, a3: field34) != 0 )
{
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 4;
+ a1->field4C = 3;
+ a1->field40 = 4;
}
else
{
- *(_DWORD *)(a1 + 64) = 4;
- *(_DWORD *)(a1 + 72) = 16;
- *(_DWORD *)(a1 + 76) = 4;
+ a1->field40 = 4;
+ a1->field48 = 16;
+ a1->field4C = 4;
}
- connector_ids_a = asd_get_connector_ids_a((_DWORD *)a1, a2: &v62, a3: &v61);
+ connector_ids_a = asd_get_connector_ids_a(a1, a2: &v62, a3: &v61);
if ( connector_ids_a != 0 )
return connector_ids_a;
v47 = (int *)off_D0ABD8;
- if ( asd_reg_read_13BF8(a1: *((_DWORD *)off_D0ABD8 + 105), a2: HIDWORD(v5), a3: v46) << 31 == 0
- || *(_DWORD *)(a1 + 32) != 0 )
- {
+ if ( asd_reg_read_13BF8(a1: *((_DWORD *)off_D0ABD8 + 105), a2: HIDWORD(v5), a3: v46) << 31 == 0 || a1->field20 != 0 )
return 8;
- }
- *(_DWORD *)(a1 + 76) = 3;
- *(_DWORD *)(a1 + 64) = 5;
- if ( v26 == 1 )
+ a1->field4C = 3;
+ a1->field40 = 5;
+ if ( field30 == 1 )
{
v55 = asd_reg_read_13BF8(a1: v47[106], a2: HIDWORD(v5), a3: v48) & 7;
v57 = asd_reg_read_139E4(a1: v47[99], a2: v55, a3: v56);
@@ -17221,38 +16879,38 @@ LABEL_72:
connector_ids_a = v49;
v52 = 4;
LABEL_74:
- *(_DWORD *)(a1 + 68) = v52;
+ a1->field44 = v52;
return connector_ids_a;
}
- v53 = *(_DWORD *)(a1 + 36);
+ field24 = a1->field24;
if ( v10 != 16 )
{
- v54 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFE;
- if ( v53 > 0x15 )
- v54 = *(_DWORD *)(a1 + 68) & 0xFFFFFFFC | 2;
- *(_DWORD *)(a1 + 68) = v54;
- if ( v10 != 48 || *(_DWORD *)(a1 + 32) == 0 || asd_encoder_state_check(a1: v5, a2: v50, a3: v51) != 0 )
+ v54 = a1->field44 & 0xFFFFFFFE;
+ if ( field24 > 0x15 )
+ v54 = a1->field44 & 0xFFFFFFFC | 2;
+ a1->field44 = v54;
+ if ( v10 != 48 || a1->field20 == 0 || asd_encoder_state_check(a1: v5, a2: v50, a3: v51) != 0 )
return 0;
goto LABEL_89;
}
- *(_DWORD *)(a1 + 68) = 0;
- if ( *(_DWORD *)(a1 + 32) != 0 && asd_connector_state_check(a1: v5, a2: v50, a3: v51) == 0 )
+ a1->field44 = 0;
+ if ( a1->field20 != 0 && asd_connector_state_check(a1: v5, a2: v50, a3: v51) == 0 )
{
LABEL_89:
- *(_DWORD *)(a1 + 68) = 16;
+ a1->field44 = 16;
return 0;
}
- if ( v53 < 0xA )
+ if ( field24 < 0xA )
return 0;
connector_ids_a = asd_opt_cb_D423EC();
if ( connector_ids_a == 0
&& (asd_reg_read_13B74(a1: 0, a2: *((_DWORD *)off_D0ABD8 + 9), a3: v5) & 0x70000000) == 0x30000000 )
{
- *(_DWORD *)(a1 + 68) |= 1u;
+ a1->field44 |= 1u;
}
- if ( v53 >= 0x16 )
+ if ( field24 >= 0x16 )
{
- v52 = *(_DWORD *)(a1 + 68) | 2;
+ v52 = a1->field44 | 2;
goto LABEL_74;
}
return connector_ids_a;
@@ -18230,7 +17888,7 @@ int __fastcall asd_reg_offsets_init_198C0(int a1, int a2, int a3, int a4)
_DWORD v9[25]; // [sp+10Ch] [bp-1C4h] BYREF
_DWORD v10[9]; // [sp+170h] [bp-160h] BYREF
_DWORD v11[23]; // [sp+194h] [bp-13Ch] BYREF
- int v12[10]; // [sp+1F0h] [bp-E0h] BYREF
+ _DWORD v12[10]; // [sp+1F0h] [bp-E0h] BYREF
int v13[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v13, a2: (int *)off_D02B24, a3: 0xB4u, a4);
@@ -18319,7 +17977,7 @@ int __fastcall asd_reg_offsets_init_19978(int a1, int a2, int a3, int a4)
_DWORD v9[25]; // [sp+10Ch] [bp-1C4h] BYREF
_DWORD v10[9]; // [sp+170h] [bp-160h] BYREF
_DWORD v11[23]; // [sp+194h] [bp-13Ch] BYREF
- int v12[10]; // [sp+1F0h] [bp-E0h] BYREF
+ _DWORD v12[10]; // [sp+1F0h] [bp-E0h] BYREF
int v13[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v13, a2: (int *)off_D02D78, a3: 0xB4u, a4);
@@ -18408,7 +18066,7 @@ int __fastcall asd_reg_offsets_init_19A30(int a1, int a2, int a3, int a4)
_DWORD v9[27]; // [sp+10Ch] [bp-1C4h] BYREF
_DWORD v10[7]; // [sp+178h] [bp-158h] BYREF
_DWORD v11[26]; // [sp+194h] [bp-13Ch] BYREF
- int v12[7]; // [sp+1FCh] [bp-D4h] BYREF
+ _DWORD v12[7]; // [sp+1FCh] [bp-D4h] BYREF
int v13[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v13, a2: off_D02FE4, a3: 0xB4u, a4);
@@ -18502,7 +18160,7 @@ int __fastcall asd_reg_offsets_init_19AE8(int a1, int a2, int a3, int a4)
_DWORD v9[25]; // [sp+10Ch] [bp-1C4h] BYREF
_DWORD v10[9]; // [sp+170h] [bp-160h] BYREF
_DWORD v11[23]; // [sp+194h] [bp-13Ch] BYREF
- int v12[10]; // [sp+1F0h] [bp-E0h] BYREF
+ _DWORD v12[10]; // [sp+1F0h] [bp-E0h] BYREF
int v13[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v13, a2: off_D03304, a3: 0xB4u, a4);
@@ -18590,7 +18248,7 @@ int __fastcall asd_reg_offsets_init_19BA0(int a1, int a2, int a3, int a4)
_DWORD v8[18]; // [sp+C4h] [bp-20Ch] BYREF
_DWORD v9[34]; // [sp+10Ch] [bp-1C4h] BYREF
_DWORD v10[26]; // [sp+194h] [bp-13Ch] BYREF
- int v11[7]; // [sp+1FCh] [bp-D4h] BYREF
+ _DWORD v11[7]; // [sp+1FCh] [bp-D4h] BYREF
int v12[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v12, a2: off_D03580, a3: 0xB4u, a4);
@@ -18688,7 +18346,7 @@ int __fastcall asd_reg_offsets_init_19C58(int a1, int a2, int a3, int a4)
_DWORD v9[17]; // [sp+12Ch] [bp-1A4h] BYREF
_DWORD v10[13]; // [sp+170h] [bp-160h] BYREF
_DWORD v11[20]; // [sp+1A4h] [bp-12Ch] BYREF
- int v12[9]; // [sp+1F4h] [bp-DCh] BYREF
+ _DWORD v12[9]; // [sp+1F4h] [bp-DCh] BYREF
int v13[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v13, a2: off_D0394C, a3: 0xB4u, a4);
@@ -18795,7 +18453,7 @@ int __fastcall asd_reg_offsets_init_19D10(int a1, int a2, int a3, int a4)
_DWORD v9[25]; // [sp+10Ch] [bp-1C4h] BYREF
_DWORD v10[12]; // [sp+170h] [bp-160h] BYREF
_DWORD v11[20]; // [sp+1A0h] [bp-130h] BYREF
- int v12[10]; // [sp+1F0h] [bp-E0h] BYREF
+ _DWORD v12[10]; // [sp+1F0h] [bp-E0h] BYREF
int v13[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v13, a2: off_D03BAC, a3: 0xB4u, a4);
@@ -18887,7 +18545,7 @@ int __fastcall asd_reg_offsets_init_19DC8(int a1, int a2, int a3, int a4)
_DWORD v9[17]; // [sp+12Ch] [bp-1A4h] BYREF
_DWORD v10[13]; // [sp+170h] [bp-160h] BYREF
_DWORD v11[20]; // [sp+1A4h] [bp-12Ch] BYREF
- int v12[9]; // [sp+1F4h] [bp-DCh] BYREF
+ _DWORD v12[9]; // [sp+1F4h] [bp-DCh] BYREF
int v13[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v13, a2: off_D03E64, a3: 0xB4u, a4);
@@ -18994,7 +18652,7 @@ int __fastcall asd_reg_offsets_init_19E80(int a1, int a2, int a3, int a4)
_DWORD v9[17]; // [sp+12Ch] [bp-1A4h] BYREF
_DWORD v10[13]; // [sp+170h] [bp-160h] BYREF
_DWORD v11[20]; // [sp+1A4h] [bp-12Ch] BYREF
- int v12[9]; // [sp+1F4h] [bp-DCh] BYREF
+ _DWORD v12[9]; // [sp+1F4h] [bp-DCh] BYREF
int v13[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v13, a2: off_D0411C, a3: 0xB4u, a4);
@@ -19099,7 +18757,7 @@ int __fastcall asd_reg_offsets_init_19F38(int a1, int a2, int a3, int a4)
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[16]; // [sp+170h] [bp-160h] BYREF
_DWORD v9[18]; // [sp+1B0h] [bp-120h] BYREF
- int v10[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v10[8]; // [sp+1F8h] [bp-D8h] BYREF
int v11[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v11, a2: off_D04438, a3: 0xB4u, a4);
@@ -19223,7 +18881,7 @@ int __fastcall asd_reg_offsets_init_19FF0(int a1, int a2, int a3, int a4)
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[21]; // [sp+170h] [bp-160h] BYREF
_DWORD v9[13]; // [sp+1C4h] [bp-10Ch] BYREF
- int v10[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v10[8]; // [sp+1F8h] [bp-D8h] BYREF
int v11[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v11, a2: off_D04764, a3: 0xB4u, a4);
@@ -19351,7 +19009,7 @@ int __fastcall asd_reg_offsets_init_1A0A8(int a1, int a2, int a3, int a4)
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[20]; // [sp+170h] [bp-160h] BYREF
_DWORD v9[14]; // [sp+1C0h] [bp-110h] BYREF
- int v10[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v10[8]; // [sp+1F8h] [bp-D8h] BYREF
int v11[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v11, a2: off_D04A90, a3: 0xB4u, a4);
@@ -19478,7 +19136,7 @@ int __fastcall asd_reg_offsets_init_1A160(int a1, int a2, int a3, int a4)
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[16]; // [sp+170h] [bp-160h] BYREF
_DWORD v9[18]; // [sp+1B0h] [bp-120h] BYREF
- int v10[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v10[8]; // [sp+1F8h] [bp-D8h] BYREF
int v11[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v11, a2: off_D04DAC, a3: 0xB4u, a4);
@@ -19603,7 +19261,7 @@ int __fastcall asd_reg_offsets_init_1A218(int a1, int a2, int a3, int a4)
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[16]; // [sp+170h] [bp-160h] BYREF
_DWORD v9[18]; // [sp+1B0h] [bp-120h] BYREF
- int v10[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v10[8]; // [sp+1F8h] [bp-D8h] BYREF
int v11[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v11, a2: off_D050E0, a3: 0xB4u, a4);
@@ -19728,7 +19386,7 @@ int __fastcall asd_reg_offsets_init_1A2D0(int a1, int a2, int a3, int a4)
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[16]; // [sp+170h] [bp-160h] BYREF
_DWORD v9[18]; // [sp+1B0h] [bp-120h] BYREF
- int v10[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v10[8]; // [sp+1F8h] [bp-D8h] BYREF
int v11[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v11, a2: off_D0541C, a3: 0xB4u, a4);
@@ -19853,7 +19511,7 @@ int __fastcall asd_reg_offsets_init_1A388(int a1, int a2, int a3, int a4)
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[16]; // [sp+170h] [bp-160h] BYREF
_DWORD v9[18]; // [sp+1B0h] [bp-120h] BYREF
- int v10[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v10[8]; // [sp+1F8h] [bp-D8h] BYREF
int v11[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v11, a2: off_D05740, a3: 0xB4u, a4);
@@ -19977,7 +19635,7 @@ int __fastcall asd_reg_offsets_init_1A440(int a1, int a2, int a3, int a4)
int v5; // r3
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[34]; // [sp+170h] [bp-160h] BYREF
- int v9[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v9[8]; // [sp+1F8h] [bp-D8h] BYREF
int v10[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v10, a2: off_D05AAC, a3: 0xB4u, a4);
@@ -20113,7 +19771,7 @@ int __fastcall asd_reg_offsets_init_1A4F8(int a1, int a2, int a3, int a4)
int v4; // r2
int v5; // r3
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
- int v8[42]; // [sp+170h] [bp-160h] BYREF
+ _DWORD v8[42]; // [sp+170h] [bp-160h] BYREF
int v9[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v9, a2: off_D05E38, a3: 0xB4u, a4);
@@ -20256,7 +19914,7 @@ int __fastcall asd_reg_offsets_init_1A5B0(int a1, int a2, int a3, int a4)
int v5; // r3
int v7[92]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[34]; // [sp+170h] [bp-160h] BYREF
- int v9[8]; // [sp+1F8h] [bp-D8h] BYREF
+ _DWORD v9[8]; // [sp+1F8h] [bp-D8h] BYREF
int v10[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v10, a2: off_D061C0, a3: 0xB4u, a4);
@@ -20392,7 +20050,7 @@ int __fastcall asd_reg_offsets_init_1A668(int a1, int a2, int a3, int a4)
int v4; // r2
int v5; // r3
int v7[108]; // [sp+0h] [bp-2D0h] BYREF
- int v8[26]; // [sp+1B0h] [bp-120h] BYREF
+ _DWORD v8[26]; // [sp+1B0h] [bp-120h] BYREF
int v9[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v9, a2: off_D06544, a3: 0xB4u, a4);
@@ -20673,7 +20331,7 @@ int __fastcall asd_reg_offsets_init_1A7D8(int a1, int a2, int a3, int a4)
int v5; // r3
int v7[116]; // [sp+0h] [bp-2D0h] BYREF
_DWORD v8[12]; // [sp+1D0h] [bp-100h] BYREF
- int v9[6]; // [sp+200h] [bp-D0h] BYREF
+ _DWORD v9[6]; // [sp+200h] [bp-D0h] BYREF
int v10[46]; // [sp+218h] [bp-B8h] BYREF
memcpy_aligned(result: v10, a2: off_D06C50, a3: 0xB4u, a4);
@@ -21781,14 +21439,21 @@ int __fastcall asd_reg_read_140AC(int a1, unsigned int a2, __int16 a3)
// and tail-calls asd_reg_read_14124. One of 0 near-identical siblings.
BOOL __fastcall asd_reg_read_14124_cfg0(unsigned int a1)
{
- int v2; // r4
+ bool v2; // zf
+ int v3; // r4
+ int v4; // r0
if ( a1 > 1 )
return false;
- v2 = 4;
- if ( a1 == 0 )
- v2 = 2;
- return (sub_D14124() & v2) != 0;
+ v2 = a1 == 0;
+ v3 = 4;
+ v4 = dword_D15CCC + 384;
+ if ( v2 )
+ {
+ v3 = 2;
+ v4 = 12451973;
+ }
+ return (sub_D14124(a1: v4) & v3) != 0;
}
/* ==== asd_reg_read_14142_cfg0 [tier=EXACT size=46] ==== */
@@ -21796,14 +21461,21 @@ BOOL __fastcall asd_reg_read_14124_cfg0(unsigned int a1)
// and tail-calls asd_reg_read_14142. One of 0 near-identical siblings.
BOOL __fastcall asd_reg_read_14142_cfg0(unsigned int a1)
{
- int v2; // r4
+ bool v2; // zf
+ int v3; // r4
+ int v4; // r0
if ( a1 > 1 )
return false;
- v2 = 4;
- if ( a1 == 0 )
- v2 = 2;
- return (sub_D14142() & v2) != 0;
+ v2 = a1 == 0;
+ v3 = 4;
+ v4 = dword_D15CCC + 384;
+ if ( v2 )
+ {
+ v3 = 2;
+ v4 = 12451973;
+ }
+ return (sub_D14142(a1: v4) & v3) != 0;
}
/* ==== asd_reg_read_1419C_cfg0 [tier=EXACT size=40] ==== */
@@ -21811,10 +21483,14 @@ BOOL __fastcall asd_reg_read_14142_cfg0(unsigned int a1)
// and tail-calls asd_reg_read_1419C. One of 0 near-identical siblings.
int __fastcall asd_reg_read_1419C_cfg0(unsigned int a1)
{
- if ( a1 <= 1 )
- return sub_D1419C() & 1;
- else
+ int v2; // r1
+
+ if ( a1 > 1 )
return 0;
+ v2 = dword_D18874 + 270336;
+ if ( a1 == 0 )
+ v2 = 37761026;
+ return sub_D1419C(a1: v2) & 1;
}
/* ==== asd_reg_read_141BA_cfg0 [tier=EXACT size=34] ==== */
@@ -21822,10 +21498,14 @@ int __fastcall asd_reg_read_1419C_cfg0(unsigned int a1)
// and tail-calls asd_reg_read_141BA. One of 0 near-identical siblings.
int __fastcall asd_reg_read_141BA_cfg0(unsigned int a1)
{
+ int v2; // r0
+
if ( a1 > 1 )
return 0;
- else
- return sub_D141BA() & 1;
+ v2 = dword_D18874;
+ if ( a1 != 0 )
+ v2 = dword_D18874 + 270336;
+ return sub_D141BA(a1: v2) & 1;
}
/* ==== asd_reg_read_15C78 [tier=EXACT size=30] ==== */
@@ -22623,7 +22303,7 @@ unsigned int __fastcall asd_reg_write_1663C(int a1)
unsigned int result; // r0
int i; // r4
int j; // r6
- int v9; // [sp+4h] [bp-84h] BYREF
+ unsigned int v9; // [sp+4h] [bp-84h] BYREF
_DWORD v10[16]; // [sp+8h] [bp-80h] BYREF
_BYTE v11[64]; // [sp+48h] [bp-40h] BYREF
@@ -22631,9 +22311,9 @@ unsigned int __fastcall asd_reg_write_1663C(int a1)
v1 = 8 * (a1 == 30);
if ( a1 == 29 )
v1 = 4;
- asd_build_reg_addr_table(a1: v1, a2: (int)v11, a3: (int)v10, a4: &v9);
+ asd_build_reg_addr_table(a1: v1, a2: (int)v11, a3: (int)v10, a4: (int *)&v9);
result = v9;
- if ( v9 <= (unsigned int)dword_D166A8 )
+ if ( v9 <= dword_D166A8 )
{
for ( i = 0; i != 2 * v9; ++i )
{
@@ -23310,7 +22990,7 @@ int __fastcall asd_reset_pipe_regs(int a1)
/* ==== asd_resolve_asic_handlers [tier=EXACT size=680] ==== */
// Resolves the per-ASIC handler set for asd_hw_init: a 680-byte switch mapping the ASIC id
// to the register-access and display-parameter function pairs; default status 7.
-int __fastcall asd_resolve_asic_handlers(int a1, int a2)
+int __fastcall asd_resolve_asic_handlers(struct asd_link_caps *a1, int a2)
{
__int64 v2; // r4
void *v3; // r1
@@ -23375,22 +23055,22 @@ int __fastcall asd_resolve_asic_handlers(int a1, int a2)
HIDWORD(v2) = off_D151E0;
v28 = off_D151DC;
v25 = off_D151D4;
- *(_QWORD *)a1 = v2;
- *(_DWORD *)(a1 + 8) = v28;
- *(_DWORD *)(a1 + 12) = v27;
+ *(_QWORD *)&a1->unk00 = v2;
+ a1->field08 = (unsigned int)v28;
+ a1->field0C = (unsigned int)v27;
goto LABEL_15;
case 5:
v25 = off_D151CC; // jumptable 00D14D94 case 5
LODWORD(v2) = 0;
v26 = off_D151D0;
LABEL_14:
- *(_DWORD *)a1 = 0;
- *(_DWORD *)(a1 + 4) = 0;
- *(_DWORD *)(a1 + 8) = v26;
- *(_DWORD *)(a1 + 12) = 0;
+ a1->unk00 = 0;
+ a1->field04 = 0;
+ a1->field08 = (unsigned int)v26;
+ a1->field0C = 0;
LABEL_15:
- *(_DWORD *)(a1 + 16) = v25;
- bzero_core(result: (_DWORD *)(a1 + 20), a2: 0x14u);
+ a1->field10 = (unsigned int)v25;
+ bzero_core(result: &a1->field14, a2: 0x14u);
return v2; // jumptable 00D14D94 default case, cases 10,13,39
case 6:
case 8:
@@ -23405,12 +23085,12 @@ LABEL_15:
LODWORD(v2) = 0;
v30 = off_D15134;
HIDWORD(v2) = off_D15130;
- *(_DWORD *)a1 = off_D15138;
- *(_DWORD *)(a1 + 4) = v30;
+ a1->unk00 = (unsigned int)off_D15138;
+ a1->field04 = (unsigned int)v30;
v13 = off_D15124;
v14 = off_D15128;
- *(_DWORD *)(a1 + 8) = HIDWORD(v2);
- *(_DWORD *)(a1 + 12) = v29;
+ a1->field08 = HIDWORD(v2);
+ a1->field0C = (unsigned int)v29;
goto LABEL_35;
case 9:
case 16:
@@ -23430,17 +23110,17 @@ LABEL_15:
LODWORD(v2) = 0; // jumptable 00D14D94 case 14
v31 = off_D15108;
v32 = off_D1510C;
- *(_DWORD *)a1 = 0;
- *(_DWORD *)(a1 + 4) = 0;
- *(_DWORD *)(a1 + 8) = v32;
- *(_DWORD *)(a1 + 12) = 0;
- *(_DWORD *)(a1 + 16) = v31;
- *(_DWORD *)(a1 + 20) = 0;
+ a1->unk00 = 0;
+ a1->field04 = 0;
+ a1->field08 = (unsigned int)v32;
+ a1->field0C = 0;
+ a1->field10 = (unsigned int)v31;
+ a1->field14 = 0;
v33 = off_D15110;
- *(_DWORD *)(a1 + 24) = 0;
- *(_DWORD *)(a1 + 28) = 0;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v33;
+ a1->field18 = 0;
+ a1->field1C = 0;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v33;
return v2;
case 15:
v3 = off_D15194; // jumptable 00D14D94 case 15
@@ -23460,19 +23140,19 @@ LABEL_15:
v35 = off_D150F0;
HIDWORD(v2) = off_D150F8;
v36 = off_D15100;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v34;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v34;
v37 = off_D150EC;
v38 = off_D150F4;
v39 = off_D150FC;
- *(_DWORD *)a1 = off_D15104;
- *(_DWORD *)(a1 + 4) = v36;
- *(_DWORD *)(a1 + 8) = v39;
- *(_DWORD *)(a1 + 12) = HIDWORD(v2);
- *(_DWORD *)(a1 + 16) = v38;
- *(_DWORD *)(a1 + 20) = v35;
- *(_DWORD *)(a1 + 24) = v37;
- *(_DWORD *)(a1 + 28) = 0;
+ a1->unk00 = (unsigned int)off_D15104;
+ a1->field04 = (unsigned int)v36;
+ a1->field08 = (unsigned int)v39;
+ a1->field0C = HIDWORD(v2);
+ a1->field10 = (unsigned int)v38;
+ a1->field14 = (unsigned int)v35;
+ a1->field18 = (unsigned int)v37;
+ a1->field1C = 0;
return v2;
case 19:
v3 = off_D15194; // jumptable 00D14D94 case 19
@@ -23480,15 +23160,15 @@ LABEL_15:
v4 = off_D1519C;
v5 = off_D151A0;
LABEL_23:
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v3;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v3;
v17 = off_D15198;
HIDWORD(v2) = off_D151A4;
goto LABEL_24;
case 20:
LODWORD(v2) = 0; // jumptable 00D14D94 case 20
- *(_DWORD *)(a1 + 32) = off_D15170;
- *(_DWORD *)(a1 + 36) = 0;
+ a1->field20 = (unsigned int)off_D15170;
+ a1->field24 = 0;
v9 = off_D15188;
v7 = off_D1518C;
v8 = off_D1517C;
@@ -23501,8 +23181,8 @@ LABEL_23:
LODWORD(v2) = 0;
v4 = off_D150E0;
v5 = off_D150E4;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v16;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v16;
v17 = off_D150DC;
HIDWORD(v2) = off_D150E8;
goto LABEL_24;
@@ -23514,42 +23194,42 @@ LABEL_23:
v20 = off_D150C4;
HIDWORD(v2) = off_D150CC;
v21 = off_D150D4;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v18;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v18;
v22 = off_D150C8;
v23 = off_D150D0;
- *(_DWORD *)a1 = off_D150D8;
- *(_DWORD *)(a1 + 4) = v21;
- *(_DWORD *)(a1 + 8) = v23;
- *(_DWORD *)(a1 + 12) = HIDWORD(v2);
- *(_DWORD *)(a1 + 16) = v22;
- *(_DWORD *)(a1 + 20) = v20;
- *(_DWORD *)(a1 + 24) = 0;
- *(_DWORD *)(a1 + 28) = v19;
+ a1->unk00 = (unsigned int)off_D150D8;
+ a1->field04 = (unsigned int)v21;
+ a1->field08 = (unsigned int)v23;
+ a1->field0C = HIDWORD(v2);
+ a1->field10 = (unsigned int)v22;
+ a1->field14 = (unsigned int)v20;
+ a1->field18 = 0;
+ a1->field1C = (unsigned int)v19;
return v2;
case 23:
v40 = off_D150A8; // jumptable 00D14D94 case 23
LODWORD(v2) = 0;
v4 = off_D150B0;
v5 = off_D150B4;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v40;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v40;
v17 = off_D150AC;
HIDWORD(v2) = off_D150B8;
LABEL_24:
- *(_DWORD *)a1 = HIDWORD(v2);
- *(_DWORD *)(a1 + 4) = 0;
- *(_DWORD *)(a1 + 8) = v5;
- *(_DWORD *)(a1 + 12) = 0;
- *(_DWORD *)(a1 + 16) = v4;
- *(_DWORD *)(a1 + 20) = v17;
- *(_DWORD *)(a1 + 24) = 0;
- *(_DWORD *)(a1 + 28) = 0;
+ a1->unk00 = HIDWORD(v2);
+ a1->field04 = 0;
+ a1->field08 = (unsigned int)v5;
+ a1->field0C = 0;
+ a1->field10 = (unsigned int)v4;
+ a1->field14 = (unsigned int)v17;
+ a1->field18 = 0;
+ a1->field1C = 0;
return v2;
case 24:
LODWORD(v2) = 0; // jumptable 00D14D94 case 24
- *(_DWORD *)(a1 + 32) = off_D15158;
- *(_DWORD *)(a1 + 36) = 0;
+ a1->field20 = (unsigned int)off_D15158;
+ a1->field24 = 0;
v9 = off_D1515C;
v7 = off_D15160;
v8 = off_D15164;
@@ -23558,8 +23238,8 @@ LABEL_24:
goto LABEL_32;
case 25:
LODWORD(v2) = 0; // jumptable 00D14D94 case 25
- *(_DWORD *)(a1 + 32) = off_D15170;
- *(_DWORD *)(a1 + 36) = 0;
+ a1->field20 = (unsigned int)off_D15170;
+ a1->field24 = 0;
v9 = off_D15174;
v7 = off_D15178;
v8 = off_D1517C;
@@ -23573,8 +23253,8 @@ LABEL_24:
LODWORD(v2) = 0;
v7 = off_D15098;
v8 = off_D1509C;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v11;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v11;
v9 = off_D15070;
HIDWORD(v2) = off_D150A0;
v10 = off_D150A4;
@@ -23586,14 +23266,14 @@ LABEL_24:
v8 = off_D15144;
HIDWORD(v2) = off_D15148;
v10 = off_D15154;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = 0;
+ a1->field20 = 0;
+ a1->field24 = 0;
goto LABEL_32;
case 30:
LODWORD(v2) = 0; // jumptable 00D14D94 case 30
v9 = off_D1513C;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = 0;
+ a1->field20 = 0;
+ a1->field24 = 0;
v7 = off_D15140;
v8 = off_D15144;
HIDWORD(v2) = off_D15148;
@@ -23604,8 +23284,8 @@ LABEL_24:
LODWORD(v2) = 0;
v7 = off_D15088;
v8 = off_D1508C;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v41;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v41;
v9 = off_D15084;
HIDWORD(v2) = off_D15090;
v10 = off_D15094;
@@ -23616,8 +23296,8 @@ LABEL_24:
LODWORD(v2) = 0;
v7 = off_D15074;
v8 = off_D15078;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v24;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v24;
v9 = off_D15070;
HIDWORD(v2) = off_D1507C;
v10 = off_D15080;
@@ -23629,8 +23309,8 @@ LABEL_24:
LODWORD(v2) = 0;
v7 = off_D15060;
v8 = off_D15064;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v12;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v12;
v9 = off_D1505C;
HIDWORD(v2) = off_D15068;
v10 = off_D1506C;
@@ -23642,20 +23322,20 @@ LABEL_24:
LODWORD(v2) = 0;
v7 = off_D15048;
v8 = off_D1504C;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = v6;
+ a1->field20 = 0;
+ a1->field24 = (unsigned int)v6;
v9 = off_D15044;
HIDWORD(v2) = off_D15050;
v10 = off_D15054;
LABEL_32:
- *(_DWORD *)a1 = v10;
- *(_DWORD *)(a1 + 4) = 0;
- *(_DWORD *)(a1 + 8) = HIDWORD(v2);
- *(_DWORD *)(a1 + 12) = 0;
- *(_DWORD *)(a1 + 16) = v8;
- *(_DWORD *)(a1 + 20) = v7;
- *(_DWORD *)(a1 + 24) = 0;
- *(_DWORD *)(a1 + 28) = v9;
+ a1->unk00 = (unsigned int)v10;
+ a1->field04 = 0;
+ a1->field08 = HIDWORD(v2);
+ a1->field0C = 0;
+ a1->field10 = (unsigned int)v8;
+ a1->field14 = (unsigned int)v7;
+ a1->field18 = 0;
+ a1->field1C = (unsigned int)v9;
break;
case 38:
v13 = off_D15030; // jumptable 00D14D94 case 38
@@ -23664,17 +23344,17 @@ LABEL_32:
v15 = off_D15038;
HIDWORD(v2) = off_D1503C;
LABEL_34:
- *(_DWORD *)a1 = HIDWORD(v2);
- *(_DWORD *)(a1 + 4) = 0;
- *(_DWORD *)(a1 + 8) = v15;
- *(_DWORD *)(a1 + 12) = 0;
+ a1->unk00 = HIDWORD(v2);
+ a1->field04 = 0;
+ a1->field08 = (unsigned int)v15;
+ a1->field0C = 0;
LABEL_35:
- *(_DWORD *)(a1 + 16) = v14;
- *(_DWORD *)(a1 + 20) = v13;
- *(_DWORD *)(a1 + 24) = 0;
- *(_DWORD *)(a1 + 28) = 0;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = 0;
+ a1->field10 = (unsigned int)v14;
+ a1->field14 = (unsigned int)v13;
+ a1->field18 = 0;
+ a1->field1C = 0;
+ a1->field20 = 0;
+ a1->field24 = 0;
break;
default:
return v2; // switch jump
@@ -23880,7 +23560,7 @@ unsigned int __fastcall asd_set_D33308(unsigned int result)
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg0()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -23895,7 +23575,7 @@ int __fastcall asd_set_display_params_cfg0()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg1()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -23910,7 +23590,7 @@ int __fastcall asd_set_display_params_cfg1()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg10()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -23925,7 +23605,7 @@ int __fastcall asd_set_display_params_cfg10()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg11()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -23940,7 +23620,7 @@ int __fastcall asd_set_display_params_cfg11()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg12()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -23955,7 +23635,7 @@ int __fastcall asd_set_display_params_cfg12()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg13()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -23970,7 +23650,7 @@ int __fastcall asd_set_display_params_cfg13()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg14()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -23985,7 +23665,7 @@ int __fastcall asd_set_display_params_cfg14()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg15()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24000,7 +23680,7 @@ int __fastcall asd_set_display_params_cfg15()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg16()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24015,7 +23695,7 @@ int __fastcall asd_set_display_params_cfg16()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg17()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24030,7 +23710,7 @@ int __fastcall asd_set_display_params_cfg17()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg18()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24045,7 +23725,7 @@ int __fastcall asd_set_display_params_cfg18()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg19()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24060,7 +23740,7 @@ int __fastcall asd_set_display_params_cfg19()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg2()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24075,7 +23755,7 @@ int __fastcall asd_set_display_params_cfg2()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg20()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24090,7 +23770,7 @@ int __fastcall asd_set_display_params_cfg20()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg3()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24105,7 +23785,7 @@ int __fastcall asd_set_display_params_cfg3()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg4()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24120,7 +23800,7 @@ int __fastcall asd_set_display_params_cfg4()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg5()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24135,7 +23815,7 @@ int __fastcall asd_set_display_params_cfg5()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg6()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24150,7 +23830,7 @@ int __fastcall asd_set_display_params_cfg6()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg7()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24165,7 +23845,7 @@ int __fastcall asd_set_display_params_cfg7()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg8()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24181,7 +23861,7 @@ int __fastcall asd_set_display_params_cfg8()
// and tail-calls asd_set_display_params. One of 0 near-identical siblings.
int __fastcall asd_set_display_params_cfg9()
{
- int var4[3]; // [sp+0h] [bp-4h] BYREF
+ _DWORD var4[3]; // [sp+0h] [bp-4h] BYREF
int vars8; // [sp+Ch] [bp+8h] BYREF
vars8 = 0;
@@ -24557,35 +24237,34 @@ int __fastcall asd_set_pair_D49838_cfg9()
int __fastcall asd_set_pipe_config(int *a1, int a2, int a3, int a4)
{
int *v4; // r8
- int v5; // r3
- int v6; // r6
- int v7; // r7
+ int v5; // r6
+ int v6; // r7
unsigned int i; // r4
- int v9; // r0
- int v14; // r2
- int *v15; // r1
+ int v8; // r0
+ int v13; // r2
+ int v14; // r1
if ( a1 == nullptr )
return 2;
v4 = off_D129AC;
- sub_D01058(result: (_BYTE *)off_D129AC + 4, a2: a1, a3: 0x2Cu, a4);
+ sub_D01058(a1: off_D129AC + 1, a2: a1, a3: 44);
+ v5 = 0;
v6 = 0;
- v7 = 0;
for ( i = 0; i < v4[2]; ++i )
{
- v9 = v4[3] + v7;
- *(_BYTE *)(v9 + 56) = 0;
- *(_DWORD *)(v9 + 48) = 0;
- *(_DWORD *)(v9 + 32) = 0;
- *(_DWORD *)(v9 + 36) = 0;
- *(_DWORD *)(v9 + 40) = 0;
+ v8 = v4[3] + v6;
+ *(_BYTE *)(v8 + 56) = 0;
+ *(_DWORD *)(v8 + 48) = 0;
+ *(_DWORD *)(v8 + 32) = 0;
+ *(_DWORD *)(v8 + 36) = 0;
+ *(_DWORD *)(v8 + 40) = 0;
__asm { SVC 0x5D ; ']' }
- v14 = v4[3] + v7;
- v15 = (int *)(v4[1] + v6);
- *(_DWORD *)(v14 + 52) = v9;
- sub_D01058(result: (_BYTE *)v14, a2: v15, a3: 0x20u, a4: v5);
- v6 += 32;
- v7 += 60;
+ v13 = v4[3] + v6;
+ v14 = v4[1] + v5;
+ *(_DWORD *)(v13 + 52) = v8;
+ sub_D01058(a1: v13, a2: v14, a3: 32);
+ v5 += 32;
+ v6 += 60;
}
return 0;
}
@@ -24821,7 +24500,7 @@ int __fastcall asd_srm_header_check(int a1, int a2, unsigned __int8 *a3)
{
if ( v5 > 0x186 )
{
- v6 = loc_D13750(a1: (int)a3, a2: v5 - 379);
+ v6 = ((int (__fastcall *)(unsigned __int8 *, unsigned int))loc_D13750)(a1: a3, a2: v5 - 379);
goto LABEL_12;
}
return 26;
@@ -24850,29 +24529,28 @@ int __fastcall asd_srm_op_301(unsigned int a1, unsigned int a2, int *a3, int a4,
{
int *v7; // r7
int result; // r0
- int v12; // r3
- int v13; // r1
- int v14; // r3
- __int64 v15; // r0
- unsigned int *v16; // r2
- _BYTE *v17; // r3
- int v18[1024]; // [sp+0h] [bp-1408h] BYREF
- int v19; // [sp+1404h] [bp-4h]
+ int v12; // r1
+ int v13; // r3
+ __int64 v14; // r0
+ unsigned int *v15; // r2
+ _BYTE *v16; // r3
+ int v17[1024]; // [sp+0h] [bp-1408h] BYREF
+ int v18; // [sp+1404h] [bp-4h]
v7 = off_D134B8;
- v19 = *off_D134B8;
- bzero_core(result: v18, a2: 0x1400u);
+ v18 = *off_D134B8;
+ bzero_core(result: v17, a2: 0x1400u);
result = 2;
if ( a2 - 48 <= 0x13D0 && a3 != nullptr )
{
if ( asd_validate_ptr(a1: (unsigned int)a3, a2) != 0
&& (*((unsigned __int8 *)off_D134BC[0] + 3) | (*((unsigned __int8 *)off_D134BC[0] + 2) << 8)) < a1 )
{
- sub_D01058(result: v18, a2: a3, a3: a2, a4: v12);
- result = asd_srm_header_check(a1, a2: v13, a3: (unsigned __int8 *)v18);
+ sub_D01058(a1: v17, a2: a3, a3: a2);
+ result = asd_srm_header_check(a1, a2: v12, a3: (unsigned __int8 *)v17);
if ( result == 0 )
{
- memcpy_aligned(result: (int *)off_D134BC[0], a2: v18, a3: a2, a4: v14);
+ memcpy_aligned(result: (int *)off_D134BC[0], a2: v17, a3: a2, a4: v13);
*off_D134C0 = a2;
asd_srm_sub_12EC4();
result = 0;
@@ -24883,10 +24561,10 @@ int __fastcall asd_srm_op_301(unsigned int a1, unsigned int a2, int *a3, int a4,
result = 2;
}
}
- if ( *v7 != v19 )
+ if ( *v7 != v18 )
{
- v15 = ((__int64 (__fastcall *)(int, int))loc_D1987C)(a1: result, a2: *v7 - v19);
- return asd_srm_store(a1: v15, a2: (int *)HIDWORD(v15), a3: v16, a4: v17);
+ v14 = ((__int64 (__fastcall *)(int, int))loc_D1987C)(a1: result, a2: *v7 - v18);
+ return asd_srm_store(a1: v14, a2: (int *)HIDWORD(v14), a3: v15, a4: v16);
}
return result;
}
@@ -24910,8 +24588,7 @@ int __fastcall asd_srm_query(char *a1)
int __fastcall asd_srm_read(int *a1, unsigned int a2, _DWORD *a3, _BYTE *a4)
{
int result; // r0
- int v9; // r3
- int *v10; // r1
+ int *v9; // r1
result = 2;
if ( a1 != nullptr && a3 != nullptr )
@@ -24922,15 +24599,15 @@ int __fastcall asd_srm_read(int *a1, unsigned int a2, _DWORD *a3, _BYTE *a4)
{
return 2;
}
- v10 = off_D134C0;
+ v9 = off_D134C0;
*a1 = *((unsigned __int8 *)off_D134BC[0] + 3) | (*((unsigned __int8 *)off_D134BC[0] + 2) << 8);
- *a3 = *v10;
+ *a3 = *v9;
result = 0;
if ( a2 != 0 && a4 != nullptr )
{
- if ( *v10 > a2 )
+ if ( *v9 > a2 )
return 2;
- sub_D01058(result: a4, a2: (int *)off_D134BC[0], a3: *v10, a4: v9);
+ sub_D01058(a1: a4, a2: off_D134BC[0], a3: *v9);
return 0;
}
}
@@ -24949,14 +24626,13 @@ int __fastcall asd_srm_store(unsigned int a1, int *a2, unsigned int *a3, _BYTE *
_DWORD *v10; // r0
unsigned int v15; // r6
int v16; // r1
- int v17; // r3
- int v19; // r0
- int v20; // r3
- _QWORD v21[511]; // [sp+8h] [bp-1404h] BYREF
- int v22; // [sp+1408h] [bp-4h]
+ int v18; // r0
+ int v19; // r3
+ int v20[1022]; // [sp+8h] [bp-1404h] BYREF
+ int v21; // [sp+1408h] [bp-4h]
- v22 = 858993459;
- v10 = bzero_core(result: v21, a2: 0x1400u);
+ v21 = 858993459;
+ v10 = bzero_core(result: v20, a2: 0x1400u);
__asm { SVC 0x8D }
v15 = (unsigned int)v10;
v16 = 2;
@@ -24972,38 +24648,38 @@ int __fastcall asd_srm_store(unsigned int a1, int *a2, unsigned int *a3, _BYTE *
*a3 = 0xFFFF;
*a4 = 0;
v4 = *((unsigned __int16 *)off_D134BC[0] + 1);
- sub_D01058(result: v21, a2, a3: a1, a4: v17);
- a2 = (int *)v21[0];
- v5 = v21[0] >> 24;
- a1 = (v5 & 0xFF0000 | HIBYTE(HIDWORD(v21[0]))) + ((HIDWORD(v21[0]) >> 8) & 0xFF00);
+ sub_D01058(a1: v20, a2, a3: a1);
+ a2 = (int *)v20[0];
+ v5 = *(__int64 *)v20 >> 24;
+ a1 = (v5 & 0xFF0000 | HIBYTE(v20[1])) + (((unsigned int)v20[1] >> 8) & 0xFF00);
if ( a1 < 0x13FC )
a1 += 5;
- if ( (v21[0] & 0xF0) == 0x80 && v15 <= 0x14 && ((1 << v15) & 0x10000C) != 0 )
+ if ( (v20[0] & 0xF0) == 0x80 && v15 <= 0x14 && ((1 << v15) & 0x10000C) != 0 )
asd_srm_sub_1A54();
while ( 1 )
{
a2 = (int *)((((unsigned int)a2 >> 8) & 0xFF00) + (unsigned __int8)v5);
- v19 = asd_srm_header_check(a1: (int)a2, a2: (unsigned __int8)v5, a3: (unsigned __int8 *)v21);
- v16 = v19;
+ v18 = asd_srm_header_check(a1: (int)a2, a2: (unsigned __int8)v5, a3: (unsigned __int8 *)v20);
+ v16 = v18;
if ( bswap32(v4 << 16) >= (unsigned int)a2 )
{
- if ( v19 == 0 )
+ if ( v18 == 0 )
*a4 = 1;
}
else
{
- if ( v19 != 0 )
+ if ( v18 != 0 )
goto LABEL_14;
*a3 = (unsigned int)a2;
*a4 = 1;
- memcpy_aligned(result: (int *)off_D134BC[0], a2: (int *)v21, a3: a1, a4: v20);
+ memcpy_aligned(result: (int *)off_D134BC[0], a2: v20, a3: a1, a4: v19);
*off_D134C0 = a1;
}
v16 = 0;
LABEL_14:
- if ( v22 == 858993459 )
+ if ( v21 == 858993459 )
return v16;
- ((void (__fastcall *)(int, int))loc_D1987C)(a1: 858993459 - v22, a2: v16);
+ ((void (__fastcall *)(int, int))loc_D1987C)(a1: 858993459 - v21, a2: v16);
}
}
@@ -25027,7 +24703,7 @@ int __fastcall asd_srm_sub_12D4C(unsigned int *a1)
char *v4; // r8
unsigned int v5; // r9
unsigned int v6; // r7
- unsigned int *v7; // r5
+ int v7; // r5
int v8; // r10
int i; // r6
@@ -25042,7 +24718,7 @@ int __fastcall asd_srm_sub_12D4C(unsigned int *a1)
LABEL_6:
if ( v5 <= v6 )
return 0;
- v7 = (unsigned int *)&v4[v6 + 9];
+ v7 = (int)&v4[v6 + 9];
v8 = v4[v6 + 8] & 0x7F;
for ( i = v8; ; --i )
{
@@ -25051,9 +24727,9 @@ LABEL_6:
v6 += 5 * v8 + 1;
goto LABEL_6;
}
- if ( loc_D01000(a1: v7, a2: a1, a3: 5u) == 0 )
+ if ( ((int (__fastcall *)(int, unsigned int *, int))loc_D01000)(a1: v7, a2: a1, a3: 5) == 0 )
break;
- v7 = (unsigned int *)((char *)v7 + 5);
+ v7 += 5;
}
return 13;
}
@@ -25064,19 +24740,19 @@ LABEL_6:
// Behaviour not individually identified.
int __fastcall asd_srm_sub_12DB0(unsigned int *a1)
{
- unsigned int *v2; // r5
+ char *v2; // r5
int i; // r6
if ( a1 == nullptr )
return 2;
if ( asd_srm_sub_10B30() != 0 )
{
- v2 = (unsigned int *)(off_D12DE8 + 12);
+ v2 = off_D12DE8 + 12;
for ( i = *((unsigned __int16 *)off_D12DE8 + 4) >> 6; i != 0; --i )
{
- if ( loc_D01000(a1: v2, a2: a1, a3: 5u) == 0 )
+ if ( ((int (__fastcall *)(char *, unsigned int *, int))loc_D01000)(a1: v2, a2: a1, a3: 5) == 0 )
return 23;
- v2 = (unsigned int *)((char *)v2 + 5);
+ v2 += 5;
}
}
return 0;
@@ -25503,7 +25179,7 @@ int __fastcall asd_store_link_config(int *a1, int *a2, int a3, int a4)
if ( a1 == nullptr || a2 == nullptr )
return 2;
v5 = off_D1881C;
- sub_D01058(result: (_BYTE *)off_D1881C + 4, a2: a1, a3: 0x28u, a4);
+ sub_D01058(a1: (char *)off_D1881C + 4, a2: a1, a3: 40);
memcpy_aligned(result: (int *)dword_D18820, a2, a3: 0xD8u, a4: v6);
result = 2 * (v5[9] == 0);
if ( v5[8] == 0 )
@@ -25778,12 +25454,11 @@ unsigned int __fastcall asd_svc_op_202(unsigned int a1, unsigned int a2, unsigne
{
int *v4; // r9
int v7; // r8
- int v9; // r3
- int v10[4]; // [sp+18h] [bp-14h] BYREF
- int v11; // [sp+28h] [bp-4h]
+ _BYTE v9[16]; // [sp+18h] [bp-14h] BYREF
+ int v10; // [sp+28h] [bp-4h]
v4 = off_D14A3C;
- v11 = *off_D14A3C;
+ v10 = *off_D14A3C;
if ( asd_validate_ptr(a1, a2) == 0
|| asd_validate_ptr(a1: (unsigned int)a4, a2: 4u) == 0
|| asd_validate_ptr(a1: a3, a2: *a4) == 0 )
@@ -25800,16 +25475,16 @@ LABEL_13:
LABEL_14:
a3 = 1;
LABEL_7:
- while ( *v4 != v11 )
+ while ( *v4 != v10 )
{
- ((void (__fastcall *)(int))loc_D1987C)(a1: *v4 - v11);
+ ((void (__fastcall *)(int))loc_D1987C)(a1: *v4 - v10);
LABEL_10:
if ( gp_populate_transient_object() != 0 || gp_operation_allocate() != 0 || gp_set_operation_key() != 0 )
goto LABEL_13;
gp_operation_set_key();
if ( gp_cipher_update() != 0 )
goto LABEL_14;
- sub_D01058(result: (_BYTE *)(a3 + 16), a2: v10, a3: 0x10u, a4: v9);
+ sub_D01058(a1: a3 + 16, a2: v9, a3: 16);
a3 = 0;
}
return a3;
@@ -25857,12 +25532,12 @@ int __fastcall asd_svc_op_203(unsigned int a1, unsigned __int8 *a2, int a3)
if ( v10 >= 2u )
{
if ( v6 != 0 )
- sub_D01058(result: a2, a2: (int *)off_D157D8 + 5 * a1 + 1, a3: 0x10u, a4: v10);
+ sub_D01058(a1: a2, a2: (char *)off_D157D8 + 20 * a1 + 4, a3: 16);
return 0;
}
if ( v10 == 1 )
{
- sub_D01058(result: (_BYTE *)off_D157D8 + 20 * a1 + 4, (int *)a2, a3: 0x10u, a4: 1);
+ sub_D01058(a1: (char *)off_D157D8 + 20 * a1 + 4, a2, a3: 16);
if ( asd_svc_sub_110EC(a1, a2, a3: 0x10u, a4: off_D157AC) != 0 )
return 27;
v13 = *((_DWORD *)off_D158A8 + 19) - 20;
@@ -25967,7 +25642,7 @@ int __fastcall asd_svc_op_20A(int *a1, int a2)
int i; // r1
unsigned int v6; // r2
int v7; // r2
- int v8; // r3
+ unsigned __int8 v8; // r3
int v9; // r1
char v10; // r6
int *v11; // r1
@@ -25994,20 +25669,20 @@ int __fastcall asd_svc_op_20A(int *a1, int a2)
v10 = v9 & v7;
if ( (v9 & v7) != 0 )
v10 = 1;
- v8 += ((unsigned __int8)v8 != 255) & (unsigned __int8)v10;
+ v8 += (v8 != 255) & v10;
v7 *= 2;
}
- if ( (unsigned __int8)v8 >= 2u )
+ if ( v8 >= 2u )
{
if ( v4 == 0 )
return 0;
v11 = (int *)(off_D158A8 + 20);
v12 = a1;
LABEL_18:
- sub_D01058(result: v12, a2: v11, a3: 0x10u, a4: v8);
+ sub_D01058(a1: v12, a2: v11, a3: 16);
return 0;
}
- if ( (unsigned __int8)v8 == 1 )
+ if ( v8 == 1 )
{
v11 = a1;
v12 = (int *)(off_D158A8 + 20);
@@ -26340,7 +26015,7 @@ int __fastcall asd_table_find(_DWORD *a1, int a2, int a3)
++v9;
v5 = a1[1];
}
- sub_D01058(result: (_BYTE *)(v15 - 32), a2: (int *)(v8 - 16), a3: 0x20u, a4: v6);
+ sub_D01058(a1: v15 - 32, a2: v8 - 16, a3: 32);
if ( v14 == 0 )
return 6;
v16 = *(_QWORD *)(v8 - 12);
@@ -26460,48 +26135,50 @@ int __fastcall asd_task_ctl_1(int a1, int a2, void (__fastcall *a3)(int *), int
int __fastcall asd_task_ctl_2(int a1, int a2, int a3, int a4)
{
int started; // r4
- void *v5; // r0
- void *v6; // r0
- void (__fastcall *v8)(int *); // r2
- int v9; // [sp+0h] [bp-8h] BYREF
- int var4[2]; // [sp+4h] [bp-4h] BYREF
+ int v5; // r0
+ int v6; // r0
+ int v7; // r0
+ int v8; // r0
+ void (__fastcall *v10)(int *); // r2
+ int v11; // [sp+0h] [bp-8h] BYREF
+ int v12; // [sp+4h] [bp-4h] BYREF
- v9 = a3;
- var4[0] = a4;
- HIBYTE(var4[0]) = 1;
+ v11 = a3;
+ v12 = a4;
+ HIBYTE(v12) = 1;
started = asd_alloc_handles(a1: 1);
if ( started == 0 )
{
started = asd_start_link_task();
if ( started == 0 )
{
- started = asd_get_platform_info(a1: &v9, a2: (_BYTE *)var4 + 3, a3: v8);
+ started = asd_get_platform_info(a1: &v11, a2: (_BYTE *)&v12 + 3, a3: v10);
if ( started == 0 )
- started = asd_feature_block_init(a1: v9);
+ started = asd_feature_block_init(a1: v11);
}
- if ( HIBYTE(var4[0]) != 0 )
+ if ( HIBYTE(v12) != 0 )
{
if ( started != 0 )
goto LABEL_2;
- started = asd_link_ops_init(a1: v9);
+ started = asd_link_ops_init(a1: v11);
if ( started != 0 )
goto LABEL_2;
- started = asd_aux_ops_init(a1: v9);
+ started = asd_aux_ops_init(a1: v11);
if ( started != 0 )
goto LABEL_2;
started = asd_set_feature_levels();
}
if ( started == 0 )
{
- started = asd_hw_init(a1: v9, a2: HIBYTE(var4[0]));
+ started = asd_hw_init(a1: v11, a2: HIBYTE(v12));
if ( started == 0 )
{
- started = asd_sysdrv_feature_mask_get_cfg0(a1: v9);
+ started = asd_sysdrv_feature_mask_get_cfg0(a1: v11);
if ( started == 0 )
{
- started = asd_read_caps_blob(a1: v9);
+ started = asd_read_caps_blob(a1: v11);
if ( (unsigned int)(started - 7) <= 0x1D && ((1 << (started - 7)) & dword_D025EC) != 0 || started == 0 )
- started = asd_hw_ops_init(a1: v9);
+ started = asd_hw_ops_init(a1: v11);
if ( started == 0 )
started = asd_opt_cb_D330CC();
}
@@ -26513,15 +26190,15 @@ LABEL_2:
{
if ( asd_query_opt_D49820() == 0 )
{
- sub_D12154();
- v5 = sub_D12A34();
- j_sub_D02794(a1: (int)v5);
+ v5 = sub_D12154();
+ v6 = sub_D12A34(a1: v5);
+ j_sub_D02794(a1: v6);
}
if ( asd_query_opt_D4981C() == 0 )
{
- sub_D12154();
- v6 = sub_D187A0();
- j_sub_D02794(a1: (int)v6);
+ v7 = sub_D12154();
+ v8 = sub_D187A0(a1: v7);
+ j_sub_D02794(a1: v8);
}
}
return started;
@@ -31231,7 +30908,7 @@ int __fastcall j_sub_D088A8(int a1)
int v1; // r1
__int16 v2; // r2
- return asd_encoder_enable_seq_v3(a1, a2: v1, a3: v2);
+ return asd_encoder_enable_seq_v3((struct asd_link_cfg *)a1, a2: v1, a3: v2);
}
/* ==== j_sub_D088A8_0 [tier=EXACT size=4] ==== */
@@ -31241,7 +30918,7 @@ int __fastcall j_sub_D088A8_0(int a1)
int v1; // r1
__int16 v2; // r2
- return asd_encoder_enable_seq_v3(a1, a2: v1, a3: v2);
+ return asd_encoder_enable_seq_v3((struct asd_link_cfg *)a1, a2: v1, a3: v2);
}
/* ==== j_sub_D088A8_1 [tier=EXACT size=4] ==== */
@@ -31251,7 +30928,7 @@ int __fastcall j_sub_D088A8_1(int a1)
int v1; // r1
__int16 v2; // r2
- return asd_encoder_enable_seq_v3(a1, a2: v1, a3: v2);
+ return asd_encoder_enable_seq_v3((struct asd_link_cfg *)a1, a2: v1, a3: v2);
}
/* ==== j_sub_D088A8_2 [tier=EXACT size=4] ==== */
@@ -31261,7 +30938,7 @@ int __fastcall j_sub_D088A8_2(int a1)
int v1; // r1
__int16 v2; // r2
- return asd_encoder_enable_seq_v3(a1, a2: v1, a3: v2);
+ return asd_encoder_enable_seq_v3((struct asd_link_cfg *)a1, a2: v1, a3: v2);
}
/* ==== j_sub_D08BD0 [tier=EXACT size=4] ==== */
@@ -32322,21 +31999,21 @@ int __fastcall j_sub_D09F18_9(int a1, int a2, int a3, int a4)
// attributes: thunk
int __fastcall j_sub_D0A238(int a1, int a2, int a3, int a4)
{
- return asd_program_link_by_signal_v2(a1, a2, a3, a4);
+ return asd_program_link_by_signal_v2((struct asd_link_cfg *)a1, a2, a3, a4);
}
/* ==== j_sub_D0A564 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0A564(int a1, int a2, int a3, int a4)
{
- return asd_program_link_by_signal_v3(a1, a2, a3, a4);
+ return asd_program_link_by_signal_v3((struct asd_link_cfg *)a1, a2, a3, a4);
}
/* ==== j_sub_D0A87C [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0A87C(int a1, int a2, int a3, int a4)
{
- return asd_program_link_by_signal_v4(a1, a2, a3, a4);
+ return asd_program_link_by_signal_v4((struct asd_link_cfg *)a1, a2, a3, a4);
}
/* ==== j_sub_D0ABDC [tier=EXACT size=4] ==== */
@@ -32357,112 +32034,112 @@ int __fastcall j_sub_D0ABDC_0(int a1, int a2, int a3, int a4)
// attributes: thunk
int __fastcall j_sub_D0AF44(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_0 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_0(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_1 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_1(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_10 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_10(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_11 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_11(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_12 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_12(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_13 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_13(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_14 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_14(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_2 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_2(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_3 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_3(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_4 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_4(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_5 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_5(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_6 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_6(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_7 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_7(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_8 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_8(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0AF44_9 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0AF44_9(int a1)
{
- return asd_get_link_caps_full_v2(a1);
+ return asd_get_link_caps_full_v2((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0B248 [tier=EXACT size=4] ==== */
@@ -32483,14 +32160,14 @@ int __fastcall j_sub_D0B248_0(int a1)
// attributes: thunk
int __fastcall j_sub_D0B560(int a1)
{
- return asd_get_link_caps_full(a1);
+ return asd_get_link_caps_full((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0B560_0 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D0B560_0(int a1)
{
- return asd_get_link_caps_full(a1);
+ return asd_get_link_caps_full((struct asd_link_caps *)a1);
}
/* ==== j_sub_D0BB14 [tier=EXACT size=4] ==== */
@@ -33112,21 +32789,21 @@ int __fastcall j_sub_D18334_1(_DWORD *a1, unsigned int a2)
// attributes: thunk
int __fastcall j_sub_D18404(int a1, unsigned int a2)
{
- return asd_dio_read_block(a1, a2);
+ return asd_dio_read_block((struct asd_link_caps *)a1, a2);
}
/* ==== j_sub_D18404_0 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D18404_0(int a1, unsigned int a2)
{
- return asd_dio_read_block(a1, a2);
+ return asd_dio_read_block((struct asd_link_caps *)a1, a2);
}
/* ==== j_sub_D18404_1 [tier=EXACT size=4] ==== */
// attributes: thunk
int __fastcall j_sub_D18404_1(int a1, unsigned int a2)
{
- return asd_dio_read_block(a1, a2);
+ return asd_dio_read_block((struct asd_link_caps *)a1, a2);
}
/* ==== j_sub_D18478 [tier=EXACT size=4] ==== */
diff --git a/fw/decomp/asd_reference_asd2.index.json b/fw/decomp/asd_reference_asd2.index.json
index 2e97704..727e85f 100644
--- a/fw/decomp/asd_reference_asd2.index.json
+++ b/fw/decomp/asd_reference_asd2.index.json
@@ -16,28 +16,28 @@
},
{
"addr": "0xd010e0",
- "ida_name": "memcpy_aligned",
+ "ida_name": "sub_D010E0",
"name": "memcpy_aligned",
"size": 100,
"tier": "EXACT"
},
{
"addr": "0xd01144",
- "ida_name": "asd_hdcp1_sub_1144",
+ "ida_name": "sub_D01144",
"name": "asd_hdcp1_sub_1144",
"size": 68,
"tier": "EXACT"
},
{
"addr": "0xd01188",
- "ida_name": "bzero_core",
+ "ida_name": "sub_D01188",
"name": "bzero_core",
"size": 78,
"tier": "EXACT"
},
{
"addr": "0xd01360",
- "ida_name": "asd_check_fw_version",
+ "ida_name": "sub_D01360",
"name": "asd_check_fw_version",
"size": 82,
"tier": "EXACT"
@@ -51,245 +51,245 @@
},
{
"addr": "0xd01918",
- "ida_name": "sysdrv_rpc_1002_a",
+ "ida_name": "sub_D01918",
"name": "sysdrv_rpc_1002_a",
"size": 100,
"tier": "EXACT"
},
{
"addr": "0xd0197c",
- "ida_name": "sysdrv_rpc_1002_b",
+ "ida_name": "sub_D0197C",
"name": "sysdrv_rpc_1002_b",
"size": 100,
"tier": "EXACT"
},
{
"addr": "0xd019e4",
- "ida_name": "sysdrv_feature_mask_get",
+ "ida_name": "sub_D019E4",
"name": "sysdrv_feature_mask_get",
"size": 52,
"tier": "EXACT"
},
{
"addr": "0xd01a18",
- "ida_name": "sysdrv_rpc_1021",
+ "ida_name": "sub_D01A18",
"name": "sysdrv_rpc_1021",
"size": 60,
"tier": "EXACT"
},
{
"addr": "0xd01a54",
- "ida_name": "asd_srm_sub_1A54",
+ "ida_name": "sub_D01A54",
"name": "asd_srm_sub_1A54",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd01a80",
- "ida_name": "sysdrv_get_chip_id_pair",
+ "ida_name": "sub_D01A80",
"name": "sysdrv_get_chip_id_pair",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd01aac",
- "ida_name": "asd_bzero_core_cfg0",
+ "ida_name": "sub_D01AAC",
"name": "asd_bzero_core_cfg0",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd01ad8",
- "ida_name": "asd_bzero_core_cfg1",
+ "ida_name": "sub_D01AD8",
"name": "asd_bzero_core_cfg1",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd01b0a",
- "ida_name": "sysdrv_dram_window_describe",
+ "ida_name": "sub_D01B0A",
"name": "sysdrv_dram_window_describe",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd01b40",
- "ida_name": "asd_plat_sub_1B40",
+ "ida_name": "sub_D01B40",
"name": "asd_plat_sub_1B40",
"size": 46,
"tier": "EXACT"
},
{
"addr": "0xd01b6e",
- "ida_name": "sysdrv_feature_commit",
+ "ida_name": "sub_D01B6E",
"name": "sysdrv_feature_commit",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd01ba6",
- "ida_name": "asd_bzero_core_cfg2",
+ "ida_name": "sub_D01BA6",
"name": "asd_bzero_core_cfg2",
"size": 40,
"tier": "EXACT"
},
{
"addr": "0xd01bd0",
- "ida_name": "asd_bzero_core_cfg3",
+ "ida_name": "sub_D01BD0",
"name": "asd_bzero_core_cfg3",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd01c0c",
- "ida_name": "gp_operation_allocate",
+ "ida_name": "sub_D01C0C",
"name": "gp_operation_allocate",
"size": 60,
"tier": "EXACT"
},
{
"addr": "0xd01c48",
- "ida_name": "gp_object_allocate",
+ "ida_name": "sub_D01C48",
"name": "gp_object_allocate",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd01c7a",
- "ida_name": "gp_asym_verify",
+ "ida_name": "sub_D01C7A",
"name": "gp_asym_verify",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd01cb4",
- "ida_name": "gp_cipher_update",
+ "ida_name": "sub_D01CB4",
"name": "gp_cipher_update",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd01ce6",
- "ida_name": "gp_operation_set_key",
+ "ida_name": "sub_D01CE6",
"name": "gp_operation_set_key",
"size": 46,
"tier": "EXACT"
},
{
"addr": "0xd01d14",
- "ida_name": "gp_digest_do_final",
+ "ida_name": "sub_D01D14",
"name": "gp_digest_do_final",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd01d46",
- "ida_name": "gp_mac_compute_final",
+ "ida_name": "sub_D01D46",
"name": "gp_mac_compute_final",
"size": 46,
"tier": "EXACT"
},
{
"addr": "0xd01d74",
- "ida_name": "gp_operation_free",
+ "ida_name": "sub_D01D74",
"name": "gp_operation_free",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd01d98",
- "ida_name": "gp_object_free",
+ "ida_name": "sub_D01D98",
"name": "gp_object_free",
"size": 38,
"tier": "EXACT"
},
{
"addr": "0xd01dbe",
- "ida_name": "gp_crypto_op_0x35",
+ "ida_name": "sub_D01DBE",
"name": "gp_crypto_op_0x35",
"size": 42,
"tier": "EXACT"
},
{
"addr": "0xd01de8",
- "ida_name": "gp_populate_transient_object",
+ "ida_name": "sub_D01DE8",
"name": "gp_populate_transient_object",
"size": 52,
"tier": "EXACT"
},
{
"addr": "0xd01e1c",
- "ida_name": "gp_set_operation_key",
+ "ida_name": "sub_D01E1C",
"name": "gp_set_operation_key",
"size": 42,
"tier": "EXACT"
},
{
"addr": "0xd01e48",
- "ida_name": "asd_build_hw_ops",
+ "ida_name": "sub_D01E48",
"name": "asd_build_hw_ops",
"size": 732,
"tier": "EXACT"
},
{
"addr": "0xd022b4",
- "ida_name": "asd_hw_ops_init",
+ "ida_name": "sub_D022B4",
"name": "asd_hw_ops_init",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd022d4",
- "ida_name": "asd_platform_op_404",
+ "ida_name": "sub_D022D4",
"name": "asd_platform_op_404",
"size": 244,
"tier": "EXACT"
},
{
"addr": "0xd023c8",
- "ida_name": "asd_platform_op_403",
+ "ida_name": "sub_D023C8",
"name": "asd_platform_op_403",
"size": 268,
"tier": "EXACT"
},
{
"addr": "0xd024dc",
- "ida_name": "asd_alloc_handles",
+ "ida_name": "sub_D024DC",
"name": "asd_alloc_handles",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd02518",
- "ida_name": "asd_task_ctl_2",
+ "ida_name": "sub_D02518",
"name": "asd_task_ctl_2",
"size": 212,
"tier": "EXACT"
},
{
"addr": "0xd025f0",
- "ida_name": "asd_task_ctl_1",
+ "ida_name": "sub_D025F0",
"name": "asd_task_ctl_1",
"size": 52,
"tier": "EXACT"
},
{
"addr": "0xd02624",
- "ida_name": "asd_task_ctl_5",
+ "ida_name": "sub_D02624",
"name": "asd_task_ctl_5",
"size": 52,
"tier": "EXACT"
},
{
"addr": "0xd02658",
- "ida_name": "asd_task_ctl_6",
+ "ida_name": "sub_D02658",
"name": "asd_task_ctl_6",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd02660",
- "ida_name": "asd_task_ctl_7",
+ "ida_name": "sub_D02660",
"name": "asd_task_ctl_7",
"size": 92,
"tier": "EXACT"
@@ -303,35 +303,35 @@
},
{
"addr": "0xd02700",
- "ida_name": "asd_hwop_078_v0",
+ "ida_name": "sub_D02700",
"name": "asd_hwop_078_v0",
"size": 40,
"tier": "EXACT"
},
{
"addr": "0xd02730",
- "ida_name": "asd_test_bit",
+ "ida_name": "sub_D02730",
"name": "asd_test_bit",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd0273e",
- "ida_name": "asd_svc_sub_273E",
+ "ida_name": "sub_D0273E",
"name": "asd_svc_sub_273E",
"size": 84,
"tier": "EXACT"
},
{
"addr": "0xd02794",
- "ida_name": "asd_svc_sub_2794",
+ "ida_name": "sub_D02794",
"name": "asd_svc_sub_2794",
"size": 34,
"tier": "EXACT"
},
{
"addr": "0xd027c0",
- "ida_name": "asd_sysdrv_feature_mask_get_cfg0",
+ "ida_name": "sub_D027C0",
"name": "asd_sysdrv_feature_mask_get_cfg0",
"size": 40,
"tier": "EXACT"
@@ -345,21 +345,21 @@
},
{
"addr": "0xd02864",
- "ida_name": "asd_reg_read_13B74_cfg0",
+ "ida_name": "sub_D02864",
"name": "asd_reg_read_13B74_cfg0",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd02898",
- "ida_name": "j_sub_D06C60",
+ "ida_name": "sub_D02898",
"name": "j_sub_D06C60",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0289c",
- "ida_name": "j_sub_D06CE4",
+ "ida_name": "sub_D0289C",
"name": "j_sub_D06CE4",
"size": 4,
"tier": "EXACT"
@@ -373,707 +373,707 @@
},
{
"addr": "0xd028e4",
- "ida_name": "j_sub_D06FF4",
+ "ida_name": "sub_D028E4",
"name": "j_sub_D06FF4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd028e8",
- "ida_name": "j_sub_D072F4",
+ "ida_name": "sub_D028E8",
"name": "j_sub_D072F4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd028ec",
- "ida_name": "j_sub_D07364",
+ "ida_name": "sub_D028EC",
"name": "j_sub_D07364",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd028f0",
- "ida_name": "j_sub_D073A0",
+ "ida_name": "sub_D028F0",
"name": "j_sub_D073A0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd028f4",
- "ida_name": "j_sub_D0747C",
+ "ida_name": "sub_D028F4",
"name": "j_sub_D0747C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd028f8",
- "ida_name": "j_sub_D074D8",
+ "ida_name": "sub_D028F8",
"name": "j_sub_D074D8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd028fc",
- "ida_name": "j_sub_D0750C",
+ "ida_name": "sub_D028FC",
"name": "j_sub_D0750C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02900",
- "ida_name": "j_sub_D075B4",
+ "ida_name": "sub_D02900",
"name": "j_sub_D075B4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02904",
- "ida_name": "j_sub_D07784",
+ "ida_name": "sub_D02904",
"name": "j_sub_D07784",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02908",
- "ida_name": "j_sub_D07A8C",
+ "ida_name": "sub_D02908",
"name": "j_sub_D07A8C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0290c",
- "ida_name": "j_sub_D07D44",
+ "ida_name": "sub_D0290C",
"name": "j_sub_D07D44",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02910",
- "ida_name": "j_sub_D07D78",
+ "ida_name": "sub_D02910",
"name": "j_sub_D07D78",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02914",
- "ida_name": "j_sub_D07E10",
+ "ida_name": "sub_D02914",
"name": "j_sub_D07E10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02918",
- "ida_name": "j_sub_D07F18",
+ "ida_name": "sub_D02918",
"name": "j_sub_D07F18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0291c",
- "ida_name": "j_asd_link_set_reg4248C_half",
+ "ida_name": "sub_D0291C",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd02920",
- "ida_name": "j_sub_D07F90",
+ "ida_name": "sub_D02920",
"name": "j_sub_D07F90",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02924",
- "ida_name": "j_sub_D0802C",
+ "ida_name": "sub_D02924",
"name": "j_sub_D0802C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02928",
- "ida_name": "j_sub_D08090",
+ "ida_name": "sub_D02928",
"name": "j_sub_D08090",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0292c",
- "ida_name": "j_sub_D08138",
+ "ida_name": "sub_D0292C",
"name": "j_sub_D08138",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02930",
- "ida_name": "j_sub_D081CC",
+ "ida_name": "sub_D02930",
"name": "j_sub_D081CC",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02934",
- "ida_name": "j_sub_D0827C",
+ "ida_name": "sub_D02934",
"name": "j_sub_D0827C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02938",
- "ida_name": "j_asd_get_signal_reg",
+ "ida_name": "sub_D02938",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd0293c",
- "ida_name": "j_sub_D0846C",
+ "ida_name": "sub_D0293C",
"name": "j_sub_D0846C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02940",
- "ida_name": "j_sub_D09008",
+ "ida_name": "sub_D02940",
"name": "j_sub_D09008",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02944",
- "ida_name": "j_sub_D097FC",
+ "ida_name": "sub_D02944",
"name": "j_sub_D097FC",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02948",
- "ida_name": "j_sub_D098B0",
+ "ida_name": "sub_D02948",
"name": "j_sub_D098B0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0294c",
- "ida_name": "j_sub_D09CA0",
+ "ida_name": "sub_D0294C",
"name": "j_sub_D09CA0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02950",
- "ida_name": "j_sub_D09E24",
+ "ida_name": "sub_D02950",
"name": "j_sub_D09E24",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02954",
- "ida_name": "asd_reg_offsets_init_198C0",
+ "ida_name": "sub_D02954",
"name": "asd_reg_offsets_init_198C0",
"size": 464,
"tier": "EXACT"
},
{
"addr": "0xd02b28",
- "ida_name": "j_sub_D09F18",
+ "ida_name": "sub_D02B28",
"name": "j_sub_D09F18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b2c",
- "ida_name": "j_sub_D0AF44",
+ "ida_name": "sub_D02B2C",
"name": "j_sub_D0AF44",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b30",
- "ida_name": "j_sub_D06C60_0",
+ "ida_name": "sub_D02B30",
"name": "j_sub_D06C60_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b34",
- "ida_name": "j_sub_D06CE4_0",
+ "ida_name": "sub_D02B34",
"name": "j_sub_D06CE4_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b38",
- "ida_name": "j_sub_D06FF4_0",
+ "ida_name": "sub_D02B38",
"name": "j_sub_D06FF4_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b3c",
- "ida_name": "j_sub_D072F4_0",
+ "ida_name": "sub_D02B3C",
"name": "j_sub_D072F4_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b40",
- "ida_name": "j_sub_D07364_0",
+ "ida_name": "sub_D02B40",
"name": "j_sub_D07364_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b44",
- "ida_name": "j_sub_D073A0_0",
+ "ida_name": "sub_D02B44",
"name": "j_sub_D073A0_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b48",
- "ida_name": "j_sub_D0747C_0",
+ "ida_name": "sub_D02B48",
"name": "j_sub_D0747C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b4c",
- "ida_name": "j_sub_D074D8_0",
+ "ida_name": "sub_D02B4C",
"name": "j_sub_D074D8_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b50",
- "ida_name": "j_sub_D0750C_0",
+ "ida_name": "sub_D02B50",
"name": "j_sub_D0750C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b54",
- "ida_name": "j_asd_link_wait_ready_a",
+ "ida_name": "sub_D02B54",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd02b58",
- "ida_name": "j_sub_D07784_0",
+ "ida_name": "sub_D02B58",
"name": "j_sub_D07784_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b5c",
- "ida_name": "j_sub_D07A8C_0",
+ "ida_name": "sub_D02B5C",
"name": "j_sub_D07A8C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b60",
- "ida_name": "j_sub_D07D44_0",
+ "ida_name": "sub_D02B60",
"name": "j_sub_D07D44_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b64",
- "ida_name": "j_sub_D07D78_0",
+ "ida_name": "sub_D02B64",
"name": "j_sub_D07D78_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b68",
- "ida_name": "j_sub_D07E10_0",
+ "ida_name": "sub_D02B68",
"name": "j_sub_D07E10_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b6c",
- "ida_name": "j_sub_D07F18_0",
+ "ida_name": "sub_D02B6C",
"name": "j_sub_D07F18_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b70",
- "ida_name": "j_sub_D07F50_0",
+ "ida_name": "sub_D02B70",
"name": "j_sub_D07F50_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b74",
- "ida_name": "j_sub_D07F90_0",
+ "ida_name": "sub_D02B74",
"name": "j_sub_D07F90_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b78",
- "ida_name": "j_sub_D0802C_0",
+ "ida_name": "sub_D02B78",
"name": "j_sub_D0802C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b7c",
- "ida_name": "j_sub_D08090_0",
+ "ida_name": "sub_D02B7C",
"name": "j_sub_D08090_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b80",
- "ida_name": "j_sub_D08138_0",
+ "ida_name": "sub_D02B80",
"name": "j_sub_D08138_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b84",
- "ida_name": "j_sub_D081CC_0",
+ "ida_name": "sub_D02B84",
"name": "j_sub_D081CC_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b88",
- "ida_name": "j_sub_D0827C_0",
+ "ida_name": "sub_D02B88",
"name": "j_sub_D0827C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b8c",
- "ida_name": "j_sub_D08414_0",
+ "ida_name": "sub_D02B8C",
"name": "j_sub_D08414_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b90",
- "ida_name": "j_sub_D0846C_0",
+ "ida_name": "sub_D02B90",
"name": "j_sub_D0846C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b94",
- "ida_name": "j_sub_D09008_0",
+ "ida_name": "sub_D02B94",
"name": "j_sub_D09008_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b98",
- "ida_name": "j_sub_D097FC_0",
+ "ida_name": "sub_D02B98",
"name": "j_sub_D097FC_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02b9c",
- "ida_name": "j_sub_D098B0_0",
+ "ida_name": "sub_D02B9C",
"name": "j_sub_D098B0_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02ba0",
- "ida_name": "j_sub_D09CA0_0",
+ "ida_name": "sub_D02BA0",
"name": "j_sub_D09CA0_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02ba4",
- "ida_name": "j_sub_D09E24_0",
+ "ida_name": "sub_D02BA4",
"name": "j_sub_D09E24_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02ba8",
- "ida_name": "asd_reg_offsets_init_19978",
+ "ida_name": "sub_D02BA8",
"name": "asd_reg_offsets_init_19978",
"size": 464,
"tier": "EXACT"
},
{
"addr": "0xd02d7c",
- "ida_name": "j_sub_D09F18_0",
+ "ida_name": "sub_D02D7C",
"name": "j_sub_D09F18_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02d80",
- "ida_name": "j_sub_D0AF44_0",
+ "ida_name": "sub_D02D80",
"name": "j_sub_D0AF44_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02d84",
- "ida_name": "j_sub_D06C60_1",
+ "ida_name": "sub_D02D84",
"name": "j_sub_D06C60_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02d88",
- "ida_name": "j_sub_D06CE4_1",
+ "ida_name": "sub_D02D88",
"name": "j_sub_D06CE4_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02d8c",
- "ida_name": "j_sub_D06FF4_1",
+ "ida_name": "sub_D02D8C",
"name": "j_sub_D06FF4_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02d90",
- "ida_name": "j_sub_D072F4_1",
+ "ida_name": "sub_D02D90",
"name": "j_sub_D072F4_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02d94",
- "ida_name": "j_sub_D07364_1",
+ "ida_name": "sub_D02D94",
"name": "j_sub_D07364_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02d98",
- "ida_name": "j_sub_D073A0_1",
+ "ida_name": "sub_D02D98",
"name": "j_sub_D073A0_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02d9c",
- "ida_name": "j_sub_D0747C_1",
+ "ida_name": "sub_D02D9C",
"name": "j_sub_D0747C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02da0",
- "ida_name": "j_asd_reg_read_13B74_cfg2",
+ "ida_name": "sub_D02DA0",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd02da4",
- "ida_name": "j_sub_D0750C_1",
+ "ida_name": "sub_D02DA4",
"name": "j_sub_D0750C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02da8",
- "ida_name": "j_sub_D075B4_1",
+ "ida_name": "sub_D02DA8",
"name": "j_sub_D075B4_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dac",
- "ida_name": "j_sub_D07784_1",
+ "ida_name": "sub_D02DAC",
"name": "j_sub_D07784_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02db0",
- "ida_name": "j_sub_D07A8C_1",
+ "ida_name": "sub_D02DB0",
"name": "j_sub_D07A8C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02db4",
- "ida_name": "j_sub_D07D44_1",
+ "ida_name": "sub_D02DB4",
"name": "j_sub_D07D44_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02db8",
- "ida_name": "j_sub_D07D78_1",
+ "ida_name": "sub_D02DB8",
"name": "j_sub_D07D78_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dbc",
- "ida_name": "j_sub_D07E10_1",
+ "ida_name": "sub_D02DBC",
"name": "j_sub_D07E10_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dc0",
- "ida_name": "j_sub_D07F18_1",
+ "ida_name": "sub_D02DC0",
"name": "j_sub_D07F18_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dc4",
- "ida_name": "j_sub_D07F50_1",
+ "ida_name": "sub_D02DC4",
"name": "j_sub_D07F50_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dc8",
- "ida_name": "j_sub_D07F90_1",
+ "ida_name": "sub_D02DC8",
"name": "j_sub_D07F90_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dcc",
- "ida_name": "j_sub_D0802C_1",
+ "ida_name": "sub_D02DCC",
"name": "j_sub_D0802C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dd0",
- "ida_name": "j_sub_D08090_1",
+ "ida_name": "sub_D02DD0",
"name": "j_sub_D08090_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dd4",
- "ida_name": "j_sub_D08138_1",
+ "ida_name": "sub_D02DD4",
"name": "j_sub_D08138_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dd8",
- "ida_name": "j_sub_D081CC_1",
+ "ida_name": "sub_D02DD8",
"name": "j_sub_D081CC_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02ddc",
- "ida_name": "j_sub_D0827C_1",
+ "ida_name": "sub_D02DDC",
"name": "j_sub_D0827C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02de0",
- "ida_name": "j_asd_get_signal_reg_0",
+ "ida_name": "sub_D02DE0",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd02de4",
- "ida_name": "j_sub_D0846C_1",
+ "ida_name": "sub_D02DE4",
"name": "j_sub_D0846C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02de8",
- "ida_name": "j_sub_D09008_1",
+ "ida_name": "sub_D02DE8",
"name": "j_sub_D09008_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dec",
- "ida_name": "j_sub_D097FC_1",
+ "ida_name": "sub_D02DEC",
"name": "j_sub_D097FC_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02df0",
- "ida_name": "j_sub_D098B0_1",
+ "ida_name": "sub_D02DF0",
"name": "j_sub_D098B0_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02df4",
- "ida_name": "j_sub_D09CA0_1",
+ "ida_name": "sub_D02DF4",
"name": "j_sub_D09CA0_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02df8",
- "ida_name": "j_sub_D09E24_1",
+ "ida_name": "sub_D02DF8",
"name": "j_sub_D09E24_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02dfc",
- "ida_name": "asd_reg_offsets_init_19A30",
+ "ida_name": "sub_D02DFC",
"name": "asd_reg_offsets_init_19A30",
"size": 486,
"tier": "EXACT"
},
{
"addr": "0xd02fe8",
- "ida_name": "j_sub_D09F18_1",
+ "ida_name": "sub_D02FE8",
"name": "j_sub_D09F18_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02fec",
- "ida_name": "j_sub_D0AF44_1",
+ "ida_name": "sub_D02FEC",
"name": "j_sub_D0AF44_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd02ff0",
- "ida_name": "asd_reg_read_BE08_asic5592",
+ "ida_name": "sub_D02FF0",
"name": "asd_reg_read_BE08_asic5592",
"size": 62,
"tier": "EXACT"
},
{
"addr": "0xd0302e",
- "ida_name": "asd_asic5592_call_D0BE70",
+ "ida_name": "sub_D0302E",
"name": "asd_asic5592_call_D0BE70",
"size": 74,
"tier": "EXACT"
},
{
"addr": "0xd03078",
- "ida_name": "j_sub_D06C60_2",
+ "ida_name": "sub_D03078",
"name": "j_sub_D06C60_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0307c",
- "ida_name": "j_sub_D06CE4_2",
+ "ida_name": "sub_D0307C",
"name": "j_sub_D06CE4_2",
"size": 4,
"tier": "EXACT"
@@ -1087,490 +1087,490 @@
},
{
"addr": "0xd030c4",
- "ida_name": "j_sub_D06FF4_2",
+ "ida_name": "sub_D030C4",
"name": "j_sub_D06FF4_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030c8",
- "ida_name": "j_sub_D072F4_2",
+ "ida_name": "sub_D030C8",
"name": "j_sub_D072F4_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030cc",
- "ida_name": "j_sub_D07364_2",
+ "ida_name": "sub_D030CC",
"name": "j_sub_D07364_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030d0",
- "ida_name": "j_sub_D073A0_2",
+ "ida_name": "sub_D030D0",
"name": "j_sub_D073A0_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030d4",
- "ida_name": "j_sub_D0747C_2",
+ "ida_name": "sub_D030D4",
"name": "j_sub_D0747C_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030d8",
- "ida_name": "j_sub_D074D8_2",
+ "ida_name": "sub_D030D8",
"name": "j_sub_D074D8_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030dc",
- "ida_name": "j_sub_D0750C_2",
+ "ida_name": "sub_D030DC",
"name": "j_sub_D0750C_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030e0",
- "ida_name": "j_sub_D075B4_2",
+ "ida_name": "sub_D030E0",
"name": "j_sub_D075B4_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030e4",
- "ida_name": "j_sub_D07784_2",
+ "ida_name": "sub_D030E4",
"name": "j_sub_D07784_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030e8",
- "ida_name": "j_asd_link_bringup_seq_v4",
+ "ida_name": "sub_D030E8",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd030ec",
- "ida_name": "j_sub_D07D44_2",
+ "ida_name": "sub_D030EC",
"name": "j_sub_D07D44_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030f0",
- "ida_name": "j_sub_D07D78_2",
+ "ida_name": "sub_D030F0",
"name": "j_sub_D07D78_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030f4",
- "ida_name": "j_sub_D07E10_2",
+ "ida_name": "sub_D030F4",
"name": "j_sub_D07E10_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030f8",
- "ida_name": "j_sub_D07F18_2",
+ "ida_name": "sub_D030F8",
"name": "j_sub_D07F18_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd030fc",
- "ida_name": "j_sub_D07F50_2",
+ "ida_name": "sub_D030FC",
"name": "j_sub_D07F50_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03100",
- "ida_name": "j_sub_D07F90_2",
+ "ida_name": "sub_D03100",
"name": "j_sub_D07F90_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03104",
- "ida_name": "j_sub_D0802C_2",
+ "ida_name": "sub_D03104",
"name": "j_sub_D0802C_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03108",
- "ida_name": "j_sub_D08090_2",
+ "ida_name": "sub_D03108",
"name": "j_sub_D08090_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0310c",
- "ida_name": "j_sub_D08138_2",
+ "ida_name": "sub_D0310C",
"name": "j_sub_D08138_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03110",
- "ida_name": "j_sub_D081CC_2",
+ "ida_name": "sub_D03110",
"name": "j_sub_D081CC_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03114",
- "ida_name": "j_sub_D0827C_2",
+ "ida_name": "sub_D03114",
"name": "j_sub_D0827C_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03118",
- "ida_name": "j_sub_D08414_2",
+ "ida_name": "sub_D03118",
"name": "j_sub_D08414_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0311c",
- "ida_name": "j_asd_encoder_enable_seq",
+ "ida_name": "sub_D0311C",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd03120",
- "ida_name": "j_sub_D09008_2",
+ "ida_name": "sub_D03120",
"name": "j_sub_D09008_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03124",
- "ida_name": "j_sub_D097FC_2",
+ "ida_name": "sub_D03124",
"name": "j_sub_D097FC_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03128",
- "ida_name": "j_sub_D098B0_2",
+ "ida_name": "sub_D03128",
"name": "j_sub_D098B0_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0312c",
- "ida_name": "j_sub_D09CA0_2",
+ "ida_name": "sub_D0312C",
"name": "j_sub_D09CA0_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03130",
- "ida_name": "j_sub_D09E24_2",
+ "ida_name": "sub_D03130",
"name": "j_sub_D09E24_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03134",
- "ida_name": "asd_reg_offsets_init_19AE8",
+ "ida_name": "sub_D03134",
"name": "asd_reg_offsets_init_19AE8",
"size": 464,
"tier": "EXACT"
},
{
"addr": "0xd03308",
- "ida_name": "j_sub_D09F18_2",
+ "ida_name": "sub_D03308",
"name": "j_sub_D09F18_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0330c",
- "ida_name": "j_sub_D0AF44_2",
+ "ida_name": "sub_D0330C",
"name": "j_sub_D0AF44_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03310",
- "ida_name": "j_sub_D06C60_3",
+ "ida_name": "sub_D03310",
"name": "j_sub_D06C60_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03314",
- "ida_name": "j_sub_D06CE4_3",
+ "ida_name": "sub_D03314",
"name": "j_sub_D06CE4_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03318",
- "ida_name": "j_sub_D06FF4_3",
+ "ida_name": "sub_D03318",
"name": "j_sub_D06FF4_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0331c",
- "ida_name": "j_sub_D072F4_3",
+ "ida_name": "sub_D0331C",
"name": "j_sub_D072F4_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03320",
- "ida_name": "j_sub_D07364_3",
+ "ida_name": "sub_D03320",
"name": "j_sub_D07364_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03324",
- "ida_name": "j_sub_D073A0_3",
+ "ida_name": "sub_D03324",
"name": "j_sub_D073A0_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03328",
- "ida_name": "j_sub_D0747C_3",
+ "ida_name": "sub_D03328",
"name": "j_sub_D0747C_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0332c",
- "ida_name": "j_sub_D074D8_3",
+ "ida_name": "sub_D0332C",
"name": "j_sub_D074D8_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03330",
- "ida_name": "j_sub_D0750C_3",
+ "ida_name": "sub_D03330",
"name": "j_sub_D0750C_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03334",
- "ida_name": "j_sub_D075B4_3",
+ "ida_name": "sub_D03334",
"name": "j_sub_D075B4_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03338",
- "ida_name": "j_sub_D07784_3",
+ "ida_name": "sub_D03338",
"name": "j_sub_D07784_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0333c",
- "ida_name": "j_sub_D07A8C_3",
+ "ida_name": "sub_D0333C",
"name": "j_sub_D07A8C_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03340",
- "ida_name": "j_sub_D07D44_3",
+ "ida_name": "sub_D03340",
"name": "j_sub_D07D44_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03344",
- "ida_name": "j_sub_D07D78_3",
+ "ida_name": "sub_D03344",
"name": "j_sub_D07D78_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03348",
- "ida_name": "j_sub_D07E10_3",
+ "ida_name": "sub_D03348",
"name": "j_sub_D07E10_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0334c",
- "ida_name": "j_sub_D07F18_3",
+ "ida_name": "sub_D0334C",
"name": "j_sub_D07F18_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03350",
- "ida_name": "j_sub_D07F50_3",
+ "ida_name": "sub_D03350",
"name": "j_sub_D07F50_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03354",
- "ida_name": "j_sub_D07F90_3",
+ "ida_name": "sub_D03354",
"name": "j_sub_D07F90_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03358",
- "ida_name": "j_sub_D0802C_3",
+ "ida_name": "sub_D03358",
"name": "j_sub_D0802C_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0335c",
- "ida_name": "j_sub_D08090_3",
+ "ida_name": "sub_D0335C",
"name": "j_sub_D08090_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03360",
- "ida_name": "j_sub_D08138_3",
+ "ida_name": "sub_D03360",
"name": "j_sub_D08138_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03364",
- "ida_name": "j_sub_D081CC_3",
+ "ida_name": "sub_D03364",
"name": "j_sub_D081CC_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03368",
- "ida_name": "j_sub_D0827C_3",
+ "ida_name": "sub_D03368",
"name": "j_sub_D0827C_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0336c",
- "ida_name": "j_sub_D08414_3",
+ "ida_name": "sub_D0336C",
"name": "j_sub_D08414_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03370",
- "ida_name": "j_sub_D0846C_3",
+ "ida_name": "sub_D03370",
"name": "j_sub_D0846C_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03374",
- "ida_name": "j_sub_D09008_3",
+ "ida_name": "sub_D03374",
"name": "j_sub_D09008_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03378",
- "ida_name": "j_sub_D097FC_3",
+ "ida_name": "sub_D03378",
"name": "j_sub_D097FC_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0337c",
- "ida_name": "j_sub_D098B0_3",
+ "ida_name": "sub_D0337C",
"name": "j_sub_D098B0_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03380",
- "ida_name": "j_sub_D09CA0_3",
+ "ida_name": "sub_D03380",
"name": "j_sub_D09CA0_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03384",
- "ida_name": "j_sub_D09E24_3",
+ "ida_name": "sub_D03384",
"name": "j_sub_D09E24_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03388",
- "ida_name": "asd_reg_offsets_init_19BA0",
+ "ida_name": "sub_D03388",
"name": "asd_reg_offsets_init_19BA0",
"size": 502,
"tier": "EXACT"
},
{
"addr": "0xd03584",
- "ida_name": "j_sub_D09F18_3",
+ "ida_name": "sub_D03584",
"name": "j_sub_D09F18_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03588",
- "ida_name": "j_sub_D0AF44_3",
+ "ida_name": "sub_D03588",
"name": "j_sub_D0AF44_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0358c",
- "ida_name": "asd_guarded_reg_read_BE08",
+ "ida_name": "sub_D0358C",
"name": "asd_guarded_reg_read_BE08",
"size": 42,
"tier": "EXACT"
},
{
"addr": "0xd035b6",
- "ida_name": "asd_guarded_call_D0BE70",
+ "ida_name": "sub_D035B6",
"name": "asd_guarded_call_D0BE70",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd035e8",
- "ida_name": "asd_guarded_call_D0BEC4",
+ "ida_name": "sub_D035E8",
"name": "asd_guarded_call_D0BEC4",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd0361e",
- "ida_name": "asd_guarded_call_D0BF28",
+ "ida_name": "sub_D0361E",
"name": "asd_guarded_call_D0BF28",
"size": 62,
"tier": "EXACT"
},
{
"addr": "0xd0365c",
- "ida_name": "j_sub_D06C60_4",
+ "ida_name": "sub_D0365C",
"name": "j_sub_D06C60_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03660",
- "ida_name": "j_sub_D06CE4_4",
+ "ida_name": "sub_D03660",
"name": "j_sub_D06CE4_4",
"size": 4,
"tier": "EXACT"
@@ -1584,2597 +1584,2597 @@
},
{
"addr": "0xd036a8",
- "ida_name": "j_sub_D06FF4_4",
+ "ida_name": "sub_D036A8",
"name": "j_sub_D06FF4_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036ac",
- "ida_name": "j_asd_link_ready_full_check",
+ "ida_name": "sub_D036AC",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd036b0",
- "ida_name": "j_sub_D07364_4",
+ "ida_name": "sub_D036B0",
"name": "j_sub_D07364_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036b4",
- "ida_name": "j_sub_D073A0_4",
+ "ida_name": "sub_D036B4",
"name": "j_sub_D073A0_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036b8",
- "ida_name": "j_sub_D0747C_4",
+ "ida_name": "sub_D036B8",
"name": "j_sub_D0747C_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036bc",
- "ida_name": "j_sub_D074D8_4",
+ "ida_name": "sub_D036BC",
"name": "j_sub_D074D8_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036c0",
- "ida_name": "j_sub_D0750C_4",
+ "ida_name": "sub_D036C0",
"name": "j_sub_D0750C_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036c4",
- "ida_name": "j_sub_D075B4_4",
+ "ida_name": "sub_D036C4",
"name": "j_sub_D075B4_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036c8",
- "ida_name": "j_sub_D07784_4",
+ "ida_name": "sub_D036C8",
"name": "j_sub_D07784_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036cc",
- "ida_name": "j_sub_D07A8C_4",
+ "ida_name": "sub_D036CC",
"name": "j_sub_D07A8C_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036d0",
- "ida_name": "j_sub_D07D44_4",
+ "ida_name": "sub_D036D0",
"name": "j_sub_D07D44_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036d4",
- "ida_name": "j_sub_D07D78_4",
+ "ida_name": "sub_D036D4",
"name": "j_sub_D07D78_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036d8",
- "ida_name": "j_asd_clear_link_outputs",
+ "ida_name": "sub_D036D8",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd036dc",
- "ida_name": "j_sub_D07F18_4",
+ "ida_name": "sub_D036DC",
"name": "j_sub_D07F18_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036e0",
- "ida_name": "j_sub_D07F50_4",
+ "ida_name": "sub_D036E0",
"name": "j_sub_D07F50_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036e4",
- "ida_name": "j_sub_D07F90_4",
+ "ida_name": "sub_D036E4",
"name": "j_sub_D07F90_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036e8",
- "ida_name": "j_sub_D0802C_4",
+ "ida_name": "sub_D036E8",
"name": "j_sub_D0802C_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036ec",
- "ida_name": "j_asd_write_block_paged",
+ "ida_name": "sub_D036EC",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd036f0",
- "ida_name": "j_sub_D08138_4",
+ "ida_name": "sub_D036F0",
"name": "j_sub_D08138_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036f4",
- "ida_name": "j_sub_D081CC_4",
+ "ida_name": "sub_D036F4",
"name": "j_sub_D081CC_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036f8",
- "ida_name": "j_sub_D0827C_4",
+ "ida_name": "sub_D036F8",
"name": "j_sub_D0827C_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd036fc",
- "ida_name": "j_sub_D08414_4",
+ "ida_name": "sub_D036FC",
"name": "j_sub_D08414_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03700",
- "ida_name": "j_sub_D0846C_4",
+ "ida_name": "sub_D03700",
"name": "j_sub_D0846C_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03704",
- "ida_name": "j_sub_D09008_4",
+ "ida_name": "sub_D03704",
"name": "j_sub_D09008_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03708",
- "ida_name": "j_sub_D097FC_4",
+ "ida_name": "sub_D03708",
"name": "j_sub_D097FC_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0370c",
- "ida_name": "j_sub_D098B0_4",
+ "ida_name": "sub_D0370C",
"name": "j_sub_D098B0_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03710",
- "ida_name": "j_sub_D09CA0_4",
+ "ida_name": "sub_D03710",
"name": "j_sub_D09CA0_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03714",
- "ida_name": "j_sub_D09E24_4",
+ "ida_name": "sub_D03714",
"name": "j_sub_D09E24_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03718",
- "ida_name": "asd_reg_offsets_init_19C58",
+ "ida_name": "sub_D03718",
"name": "asd_reg_offsets_init_19C58",
"size": 564,
"tier": "EXACT"
},
{
"addr": "0xd03950",
- "ida_name": "j_sub_D09F18_4",
+ "ida_name": "sub_D03950",
"name": "j_sub_D09F18_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03954",
- "ida_name": "j_sub_D0AF44_4",
+ "ida_name": "sub_D03954",
"name": "j_sub_D0AF44_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03958",
- "ida_name": "j_sub_D06C60_5",
+ "ida_name": "sub_D03958",
"name": "j_sub_D06C60_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0395c",
- "ida_name": "j_sub_D06CE4_5",
+ "ida_name": "sub_D0395C",
"name": "j_sub_D06CE4_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03960",
- "ida_name": "j_sub_D06FF4_5",
+ "ida_name": "sub_D03960",
"name": "j_sub_D06FF4_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03964",
- "ida_name": "j_sub_D072F4_5",
+ "ida_name": "sub_D03964",
"name": "j_sub_D072F4_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03968",
- "ida_name": "j_sub_D07364_5",
+ "ida_name": "sub_D03968",
"name": "j_sub_D07364_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0396c",
- "ida_name": "j_sub_D073A0_5",
+ "ida_name": "sub_D0396C",
"name": "j_sub_D073A0_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03970",
- "ida_name": "j_sub_D0747C_5",
+ "ida_name": "sub_D03970",
"name": "j_sub_D0747C_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03974",
- "ida_name": "j_sub_D074D8_5",
+ "ida_name": "sub_D03974",
"name": "j_sub_D074D8_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03978",
- "ida_name": "j_sub_D0750C_5",
+ "ida_name": "sub_D03978",
"name": "j_sub_D0750C_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0397c",
- "ida_name": "j_sub_D075B4_5",
+ "ida_name": "sub_D0397C",
"name": "j_sub_D075B4_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03980",
- "ida_name": "j_sub_D07784_5",
+ "ida_name": "sub_D03980",
"name": "j_sub_D07784_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03984",
- "ida_name": "j_sub_D07A8C_5",
+ "ida_name": "sub_D03984",
"name": "j_sub_D07A8C_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03988",
- "ida_name": "j_sub_D07D44_5",
+ "ida_name": "sub_D03988",
"name": "j_sub_D07D44_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0398c",
- "ida_name": "j_sub_D07D78_5",
+ "ida_name": "sub_D0398C",
"name": "j_sub_D07D78_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03990",
- "ida_name": "j_sub_D07E10_5",
+ "ida_name": "sub_D03990",
"name": "j_sub_D07E10_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03994",
- "ida_name": "j_sub_D07F18_5",
+ "ida_name": "sub_D03994",
"name": "j_sub_D07F18_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03998",
- "ida_name": "j_sub_D07F50_5",
+ "ida_name": "sub_D03998",
"name": "j_sub_D07F50_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0399c",
- "ida_name": "j_sub_D07F90_5",
+ "ida_name": "sub_D0399C",
"name": "j_sub_D07F90_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039a0",
- "ida_name": "j_sub_D0802C_5",
+ "ida_name": "sub_D039A0",
"name": "j_sub_D0802C_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039a4",
- "ida_name": "j_sub_D08090_5",
+ "ida_name": "sub_D039A4",
"name": "j_sub_D08090_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039a8",
- "ida_name": "j_sub_D08138_5",
+ "ida_name": "sub_D039A8",
"name": "j_sub_D08138_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039ac",
- "ida_name": "j_sub_D081CC_5",
+ "ida_name": "sub_D039AC",
"name": "j_sub_D081CC_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039b0",
- "ida_name": "j_sub_D0827C_5",
+ "ida_name": "sub_D039B0",
"name": "j_sub_D0827C_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039b4",
- "ida_name": "j_asd_get_signal_reg_1",
+ "ida_name": "sub_D039B4",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd039b8",
- "ida_name": "j_sub_D0846C_5",
+ "ida_name": "sub_D039B8",
"name": "j_sub_D0846C_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039bc",
- "ida_name": "j_sub_D09008_5",
+ "ida_name": "sub_D039BC",
"name": "j_sub_D09008_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039c0",
- "ida_name": "j_sub_D097FC_5",
+ "ida_name": "sub_D039C0",
"name": "j_sub_D097FC_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039c4",
- "ida_name": "j_sub_D098B0_5",
+ "ida_name": "sub_D039C4",
"name": "j_sub_D098B0_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039c8",
- "ida_name": "j_sub_D09CA0_5",
+ "ida_name": "sub_D039C8",
"name": "j_sub_D09CA0_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039cc",
- "ida_name": "j_sub_D09E24_5",
+ "ida_name": "sub_D039CC",
"name": "j_sub_D09E24_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd039d0",
- "ida_name": "asd_reg_offsets_init_19D10",
+ "ida_name": "sub_D039D0",
"name": "asd_reg_offsets_init_19D10",
"size": 474,
"tier": "EXACT"
},
{
"addr": "0xd03bb0",
- "ida_name": "j_sub_D09F18_5",
+ "ida_name": "sub_D03BB0",
"name": "j_sub_D09F18_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bb4",
- "ida_name": "j_sub_D0AF44_5",
+ "ida_name": "sub_D03BB4",
"name": "j_sub_D0AF44_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bb8",
- "ida_name": "j_asd_reg_read_13D24_cfg0",
+ "ida_name": "sub_D03BB8",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd03bbc",
- "ida_name": "j_sub_D06CE4_6",
+ "ida_name": "sub_D03BBC",
"name": "j_sub_D06CE4_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bc0",
- "ida_name": "j_sub_D06FF4_6",
+ "ida_name": "sub_D03BC0",
"name": "j_sub_D06FF4_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bc4",
- "ida_name": "j_sub_D072F4_6",
+ "ida_name": "sub_D03BC4",
"name": "j_sub_D072F4_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bc8",
- "ida_name": "j_sub_D07364_6",
+ "ida_name": "sub_D03BC8",
"name": "j_sub_D07364_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bcc",
- "ida_name": "j_sub_D073A0_6",
+ "ida_name": "sub_D03BCC",
"name": "j_sub_D073A0_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bd0",
- "ida_name": "j_sub_D0747C_6",
+ "ida_name": "sub_D03BD0",
"name": "j_sub_D0747C_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bd4",
- "ida_name": "j_sub_D074D8_6",
+ "ida_name": "sub_D03BD4",
"name": "j_sub_D074D8_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bd8",
- "ida_name": "j_sub_D0750C_6",
+ "ida_name": "sub_D03BD8",
"name": "j_sub_D0750C_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bdc",
- "ida_name": "j_sub_D075B4_6",
+ "ida_name": "sub_D03BDC",
"name": "j_sub_D075B4_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03be0",
- "ida_name": "j_sub_D07784_6",
+ "ida_name": "sub_D03BE0",
"name": "j_sub_D07784_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03be4",
- "ida_name": "j_sub_D07A8C_6",
+ "ida_name": "sub_D03BE4",
"name": "j_sub_D07A8C_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03be8",
- "ida_name": "j_sub_D07D44_6",
+ "ida_name": "sub_D03BE8",
"name": "j_sub_D07D44_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bec",
- "ida_name": "j_sub_D07D78_6",
+ "ida_name": "sub_D03BEC",
"name": "j_sub_D07D78_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bf0",
- "ida_name": "j_sub_D07E10_6",
+ "ida_name": "sub_D03BF0",
"name": "j_sub_D07E10_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bf4",
- "ida_name": "j_sub_D07F18_6",
+ "ida_name": "sub_D03BF4",
"name": "j_sub_D07F18_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bf8",
- "ida_name": "j_sub_D07F50_6",
+ "ida_name": "sub_D03BF8",
"name": "j_sub_D07F50_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03bfc",
- "ida_name": "j_sub_D07F90_6",
+ "ida_name": "sub_D03BFC",
"name": "j_sub_D07F90_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c00",
- "ida_name": "j_sub_D0802C_6",
+ "ida_name": "sub_D03C00",
"name": "j_sub_D0802C_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c04",
- "ida_name": "j_sub_D08090_6",
+ "ida_name": "sub_D03C04",
"name": "j_sub_D08090_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c08",
- "ida_name": "j_sub_D08138_6",
+ "ida_name": "sub_D03C08",
"name": "j_sub_D08138_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c0c",
- "ida_name": "j_sub_D081CC_6",
+ "ida_name": "sub_D03C0C",
"name": "j_sub_D081CC_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c10",
- "ida_name": "j_sub_D0827C_6",
+ "ida_name": "sub_D03C10",
"name": "j_sub_D0827C_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c14",
- "ida_name": "j_sub_D08414_6",
+ "ida_name": "sub_D03C14",
"name": "j_sub_D08414_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c18",
- "ida_name": "j_sub_D0846C_6",
+ "ida_name": "sub_D03C18",
"name": "j_sub_D0846C_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c1c",
- "ida_name": "j_sub_D09008_6",
+ "ida_name": "sub_D03C1C",
"name": "j_sub_D09008_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c20",
- "ida_name": "j_sub_D097FC_6",
+ "ida_name": "sub_D03C20",
"name": "j_sub_D097FC_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c24",
- "ida_name": "j_sub_D098B0_6",
+ "ida_name": "sub_D03C24",
"name": "j_sub_D098B0_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c28",
- "ida_name": "j_sub_D09CA0_6",
+ "ida_name": "sub_D03C28",
"name": "j_sub_D09CA0_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c2c",
- "ida_name": "j_sub_D09E24_6",
+ "ida_name": "sub_D03C2C",
"name": "j_sub_D09E24_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03c30",
- "ida_name": "asd_reg_offsets_init_19DC8",
+ "ida_name": "sub_D03C30",
"name": "asd_reg_offsets_init_19DC8",
"size": 564,
"tier": "EXACT"
},
{
"addr": "0xd03e68",
- "ida_name": "j_sub_D09F18_6",
+ "ida_name": "sub_D03E68",
"name": "j_sub_D09F18_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e6c",
- "ida_name": "j_sub_D0AF44_6",
+ "ida_name": "sub_D03E6C",
"name": "j_sub_D0AF44_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e70",
- "ida_name": "j_sub_D06C60_7",
+ "ida_name": "sub_D03E70",
"name": "j_sub_D06C60_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e74",
- "ida_name": "j_sub_D06CE4_7",
+ "ida_name": "sub_D03E74",
"name": "j_sub_D06CE4_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e78",
- "ida_name": "j_sub_D06FF4_7",
+ "ida_name": "sub_D03E78",
"name": "j_sub_D06FF4_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e7c",
- "ida_name": "j_sub_D072F4_7",
+ "ida_name": "sub_D03E7C",
"name": "j_sub_D072F4_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e80",
- "ida_name": "j_sub_D07364_7",
+ "ida_name": "sub_D03E80",
"name": "j_sub_D07364_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e84",
- "ida_name": "j_sub_D073A0_7",
+ "ida_name": "sub_D03E84",
"name": "j_sub_D073A0_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e88",
- "ida_name": "j_sub_D0747C_7",
+ "ida_name": "sub_D03E88",
"name": "j_sub_D0747C_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e8c",
- "ida_name": "j_asd_reg_read_13B74_cfg2_0",
+ "ida_name": "sub_D03E8C",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd03e90",
- "ida_name": "j_sub_D0750C_7",
+ "ida_name": "sub_D03E90",
"name": "j_sub_D0750C_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e94",
- "ida_name": "j_sub_D075B4_7",
+ "ida_name": "sub_D03E94",
"name": "j_sub_D075B4_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e98",
- "ida_name": "j_sub_D07784_7",
+ "ida_name": "sub_D03E98",
"name": "j_sub_D07784_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03e9c",
- "ida_name": "j_sub_D07A8C_7",
+ "ida_name": "sub_D03E9C",
"name": "j_sub_D07A8C_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ea0",
- "ida_name": "j_sub_D07D44_7",
+ "ida_name": "sub_D03EA0",
"name": "j_sub_D07D44_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ea4",
- "ida_name": "j_sub_D07D78_7",
+ "ida_name": "sub_D03EA4",
"name": "j_sub_D07D78_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ea8",
- "ida_name": "j_sub_D07E10_7",
+ "ida_name": "sub_D03EA8",
"name": "j_sub_D07E10_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03eac",
- "ida_name": "j_asd_link_set_reg42468_byte",
+ "ida_name": "sub_D03EAC",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd03eb0",
- "ida_name": "j_sub_D07F50_7",
+ "ida_name": "sub_D03EB0",
"name": "j_sub_D07F50_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03eb4",
- "ida_name": "j_sub_D07F90_7",
+ "ida_name": "sub_D03EB4",
"name": "j_sub_D07F90_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03eb8",
- "ida_name": "j_sub_D0802C_7",
+ "ida_name": "sub_D03EB8",
"name": "j_sub_D0802C_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ebc",
- "ida_name": "j_sub_D08090_7",
+ "ida_name": "sub_D03EBC",
"name": "j_sub_D08090_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ec0",
- "ida_name": "j_sub_D08138_7",
+ "ida_name": "sub_D03EC0",
"name": "j_sub_D08138_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ec4",
- "ida_name": "j_sub_D081CC_7",
+ "ida_name": "sub_D03EC4",
"name": "j_sub_D081CC_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ec8",
- "ida_name": "j_sub_D0827C_7",
+ "ida_name": "sub_D03EC8",
"name": "j_sub_D0827C_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ecc",
- "ida_name": "j_sub_D08414_7",
+ "ida_name": "sub_D03ECC",
"name": "j_sub_D08414_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ed0",
- "ida_name": "j_sub_D0846C_7",
+ "ida_name": "sub_D03ED0",
"name": "j_sub_D0846C_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ed4",
- "ida_name": "j_sub_D09008_7",
+ "ida_name": "sub_D03ED4",
"name": "j_sub_D09008_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ed8",
- "ida_name": "j_sub_D097FC_7",
+ "ida_name": "sub_D03ED8",
"name": "j_sub_D097FC_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03edc",
- "ida_name": "j_asd_pipe_lookup",
+ "ida_name": "sub_D03EDC",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd03ee0",
- "ida_name": "j_sub_D09CA0_7",
+ "ida_name": "sub_D03EE0",
"name": "j_sub_D09CA0_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ee4",
- "ida_name": "j_sub_D09E24_7",
+ "ida_name": "sub_D03EE4",
"name": "j_sub_D09E24_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd03ee8",
- "ida_name": "asd_reg_offsets_init_19E80",
+ "ida_name": "sub_D03EE8",
"name": "asd_reg_offsets_init_19E80",
"size": 564,
"tier": "EXACT"
},
{
"addr": "0xd04120",
- "ida_name": "j_sub_D09F18_7",
+ "ida_name": "sub_D04120",
"name": "j_sub_D09F18_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04124",
- "ida_name": "j_sub_D0AF44_7",
+ "ida_name": "sub_D04124",
"name": "j_sub_D0AF44_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04128",
- "ida_name": "j_sub_D06C60_8",
+ "ida_name": "sub_D04128",
"name": "j_sub_D06C60_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0412c",
- "ida_name": "j_sub_D06CE4_8",
+ "ida_name": "sub_D0412C",
"name": "j_sub_D06CE4_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04130",
- "ida_name": "j_sub_D06FF4_8",
+ "ida_name": "sub_D04130",
"name": "j_sub_D06FF4_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04134",
- "ida_name": "j_sub_D072F4_8",
+ "ida_name": "sub_D04134",
"name": "j_sub_D072F4_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04138",
- "ida_name": "j_sub_D07364_8",
+ "ida_name": "sub_D04138",
"name": "j_sub_D07364_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0413c",
- "ida_name": "j_sub_D073A0_8",
+ "ida_name": "sub_D0413C",
"name": "j_sub_D073A0_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04140",
- "ida_name": "j_asd_link_train_status",
+ "ida_name": "sub_D04140",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04144",
- "ida_name": "j_sub_D074D8_8",
+ "ida_name": "sub_D04144",
"name": "j_sub_D074D8_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04148",
- "ida_name": "j_sub_D0750C_8",
+ "ida_name": "sub_D04148",
"name": "j_sub_D0750C_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0414c",
- "ida_name": "j_sub_D075B4_8",
+ "ida_name": "sub_D0414C",
"name": "j_sub_D075B4_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04150",
- "ida_name": "j_sub_D07784_8",
+ "ida_name": "sub_D04150",
"name": "j_sub_D07784_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04154",
- "ida_name": "j_sub_D07A8C_8",
+ "ida_name": "sub_D04154",
"name": "j_sub_D07A8C_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04158",
- "ida_name": "j_sub_D07D44_8",
+ "ida_name": "sub_D04158",
"name": "j_sub_D07D44_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0415c",
- "ida_name": "j_sub_D07D78_8",
+ "ida_name": "sub_D0415C",
"name": "j_sub_D07D78_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04160",
- "ida_name": "j_sub_D07E10_8",
+ "ida_name": "sub_D04160",
"name": "j_sub_D07E10_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04164",
- "ida_name": "j_sub_D07F18_8",
+ "ida_name": "sub_D04164",
"name": "j_sub_D07F18_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04168",
- "ida_name": "j_sub_D07F50_8",
+ "ida_name": "sub_D04168",
"name": "j_sub_D07F50_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0416c",
- "ida_name": "j_sub_D07F90_8",
+ "ida_name": "sub_D0416C",
"name": "j_sub_D07F90_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04170",
- "ida_name": "j_sub_D0802C_8",
+ "ida_name": "sub_D04170",
"name": "j_sub_D0802C_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04174",
- "ida_name": "j_sub_D08090_8",
+ "ida_name": "sub_D04174",
"name": "j_sub_D08090_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04178",
- "ida_name": "j_sub_D08138_8",
+ "ida_name": "sub_D04178",
"name": "j_sub_D08138_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0417c",
- "ida_name": "j_sub_D081CC_8",
+ "ida_name": "sub_D0417C",
"name": "j_sub_D081CC_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04180",
- "ida_name": "j_sub_D0827C_8",
+ "ida_name": "sub_D04180",
"name": "j_sub_D0827C_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04184",
- "ida_name": "j_sub_D08414_8",
+ "ida_name": "sub_D04184",
"name": "j_sub_D08414_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04188",
- "ida_name": "j_sub_D0846C_8",
+ "ida_name": "sub_D04188",
"name": "j_sub_D0846C_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0418c",
- "ida_name": "j_sub_D09008_8",
+ "ida_name": "sub_D0418C",
"name": "j_sub_D09008_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04190",
- "ida_name": "j_sub_D097FC_8",
+ "ida_name": "sub_D04190",
"name": "j_sub_D097FC_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04194",
- "ida_name": "j_sub_D098B0_8",
+ "ida_name": "sub_D04194",
"name": "j_sub_D098B0_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04198",
- "ida_name": "j_asd_pipe_enable",
+ "ida_name": "sub_D04198",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd0419c",
- "ida_name": "j_sub_D09E24_8",
+ "ida_name": "sub_D0419C",
"name": "j_sub_D09E24_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd041a0",
- "ida_name": "asd_reg_offsets_init_19F38",
+ "ida_name": "sub_D041A0",
"name": "asd_reg_offsets_init_19F38",
"size": 662,
"tier": "EXACT"
},
{
"addr": "0xd0443c",
- "ida_name": "j_asd_program_link_by_signal",
+ "ida_name": "sub_D0443C",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04440",
- "ida_name": "j_sub_D0AF44_8",
+ "ida_name": "sub_D04440",
"name": "j_sub_D0AF44_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04444",
- "ida_name": "j_sub_D06C60_9",
+ "ida_name": "sub_D04444",
"name": "j_sub_D06C60_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04448",
- "ida_name": "j_sub_D06CE4_9",
+ "ida_name": "sub_D04448",
"name": "j_sub_D06CE4_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0444c",
- "ida_name": "j_sub_D06FF4_9",
+ "ida_name": "sub_D0444C",
"name": "j_sub_D06FF4_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04450",
- "ida_name": "j_sub_D072F4_9",
+ "ida_name": "sub_D04450",
"name": "j_sub_D072F4_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04454",
- "ida_name": "j_sub_D07364_9",
+ "ida_name": "sub_D04454",
"name": "j_sub_D07364_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04458",
- "ida_name": "j_sub_D073A0_9",
+ "ida_name": "sub_D04458",
"name": "j_sub_D073A0_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0445c",
- "ida_name": "j_sub_D0747C_9",
+ "ida_name": "sub_D0445C",
"name": "j_sub_D0747C_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04460",
- "ida_name": "j_sub_D074D8_9",
+ "ida_name": "sub_D04460",
"name": "j_sub_D074D8_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04464",
- "ida_name": "j_asd_link_reset_seq",
+ "ida_name": "sub_D04464",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04468",
- "ida_name": "j_sub_D075B4_9",
+ "ida_name": "sub_D04468",
"name": "j_sub_D075B4_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0446c",
- "ida_name": "j_sub_D07784_9",
+ "ida_name": "sub_D0446C",
"name": "j_sub_D07784_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04470",
- "ida_name": "j_sub_D07A8C_9",
+ "ida_name": "sub_D04470",
"name": "j_sub_D07A8C_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04474",
- "ida_name": "j_sub_D07D44_9",
+ "ida_name": "sub_D04474",
"name": "j_sub_D07D44_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04478",
- "ida_name": "j_sub_D07D78_9",
+ "ida_name": "sub_D04478",
"name": "j_sub_D07D78_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0447c",
- "ida_name": "j_sub_D07E10_9",
+ "ida_name": "sub_D0447C",
"name": "j_sub_D07E10_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04480",
- "ida_name": "j_sub_D07F18_9",
+ "ida_name": "sub_D04480",
"name": "j_sub_D07F18_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04484",
- "ida_name": "j_sub_D07F50_9",
+ "ida_name": "sub_D04484",
"name": "j_sub_D07F50_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04488",
- "ida_name": "j_sub_D07F90_9",
+ "ida_name": "sub_D04488",
"name": "j_sub_D07F90_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0448c",
- "ida_name": "j_sub_D0802C_9",
+ "ida_name": "sub_D0448C",
"name": "j_sub_D0802C_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04490",
- "ida_name": "j_sub_D08090_9",
+ "ida_name": "sub_D04490",
"name": "j_sub_D08090_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04494",
- "ida_name": "j_sub_D08138_9",
+ "ida_name": "sub_D04494",
"name": "j_sub_D08138_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04498",
- "ida_name": "j_sub_D081CC_9",
+ "ida_name": "sub_D04498",
"name": "j_sub_D081CC_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0449c",
- "ida_name": "j_sub_D0827C_9",
+ "ida_name": "sub_D0449C",
"name": "j_sub_D0827C_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd044a0",
- "ida_name": "j_sub_D08414_9",
+ "ida_name": "sub_D044A0",
"name": "j_sub_D08414_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd044a4",
- "ida_name": "j_sub_D0846C_9",
+ "ida_name": "sub_D044A4",
"name": "j_sub_D0846C_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd044a8",
- "ida_name": "j_sub_D09008_9",
+ "ida_name": "sub_D044A8",
"name": "j_sub_D09008_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd044ac",
- "ida_name": "j_asd_signal_status_check",
+ "ida_name": "sub_D044AC",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd044b0",
- "ida_name": "j_sub_D098B0_9",
+ "ida_name": "sub_D044B0",
"name": "j_sub_D098B0_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd044b4",
- "ida_name": "j_sub_D09CA0_9",
+ "ida_name": "sub_D044B4",
"name": "j_sub_D09CA0_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd044b8",
- "ida_name": "j_sub_D09E24_9",
+ "ida_name": "sub_D044B8",
"name": "j_sub_D09E24_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd044bc",
- "ida_name": "asd_reg_offsets_init_19FF0",
+ "ida_name": "sub_D044BC",
"name": "asd_reg_offsets_init_19FF0",
"size": 680,
"tier": "EXACT"
},
{
"addr": "0xd04768",
- "ida_name": "j_sub_D09F18_9",
+ "ida_name": "sub_D04768",
"name": "j_sub_D09F18_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0476c",
- "ida_name": "j_sub_D0AF44_9",
+ "ida_name": "sub_D0476C",
"name": "j_sub_D0AF44_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04770",
- "ida_name": "j_sub_D06C60_10",
+ "ida_name": "sub_D04770",
"name": "j_sub_D06C60_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04774",
- "ida_name": "j_sub_D06CE4_10",
+ "ida_name": "sub_D04774",
"name": "j_sub_D06CE4_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04778",
- "ida_name": "j_sub_D06FF4_10",
+ "ida_name": "sub_D04778",
"name": "j_sub_D06FF4_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0477c",
- "ida_name": "j_sub_D072F4_10",
+ "ida_name": "sub_D0477C",
"name": "j_sub_D072F4_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04780",
- "ida_name": "j_sub_D07364_10",
+ "ida_name": "sub_D04780",
"name": "j_sub_D07364_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04784",
- "ida_name": "j_asd_link_wait_and_set",
+ "ida_name": "sub_D04784",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04788",
- "ida_name": "j_sub_D0747C_10",
+ "ida_name": "sub_D04788",
"name": "j_sub_D0747C_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0478c",
- "ida_name": "j_sub_D074D8_10",
+ "ida_name": "sub_D0478C",
"name": "j_sub_D074D8_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04790",
- "ida_name": "j_sub_D0750C_10",
+ "ida_name": "sub_D04790",
"name": "j_sub_D0750C_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04794",
- "ida_name": "j_sub_D075B4_10",
+ "ida_name": "sub_D04794",
"name": "j_sub_D075B4_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04798",
- "ida_name": "j_sub_D07784_10",
+ "ida_name": "sub_D04798",
"name": "j_sub_D07784_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0479c",
- "ida_name": "j_sub_D07A8C_10",
+ "ida_name": "sub_D0479C",
"name": "j_sub_D07A8C_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047a0",
- "ida_name": "j_sub_D07D44_10",
+ "ida_name": "sub_D047A0",
"name": "j_sub_D07D44_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047a4",
- "ida_name": "j_sub_D07D78_10",
+ "ida_name": "sub_D047A4",
"name": "j_sub_D07D78_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047a8",
- "ida_name": "j_asd_clear_link_outputs_0",
+ "ida_name": "sub_D047A8",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd047ac",
- "ida_name": "j_sub_D07F18_10",
+ "ida_name": "sub_D047AC",
"name": "j_sub_D07F18_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047b0",
- "ida_name": "j_sub_D07F50_10",
+ "ida_name": "sub_D047B0",
"name": "j_sub_D07F50_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047b4",
- "ida_name": "j_sub_D07F90_10",
+ "ida_name": "sub_D047B4",
"name": "j_sub_D07F90_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047b8",
- "ida_name": "j_sub_D0802C_10",
+ "ida_name": "sub_D047B8",
"name": "j_sub_D0802C_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047bc",
- "ida_name": "j_sub_D08090_10",
+ "ida_name": "sub_D047BC",
"name": "j_sub_D08090_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047c0",
- "ida_name": "j_sub_D08138_10",
+ "ida_name": "sub_D047C0",
"name": "j_sub_D08138_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047c4",
- "ida_name": "j_sub_D081CC_10",
+ "ida_name": "sub_D047C4",
"name": "j_sub_D081CC_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047c8",
- "ida_name": "j_sub_D0827C_10",
+ "ida_name": "sub_D047C8",
"name": "j_sub_D0827C_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047cc",
- "ida_name": "j_asd_get_signal_reg_2",
+ "ida_name": "sub_D047CC",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd047d0",
- "ida_name": "j_sub_D0846C_10",
+ "ida_name": "sub_D047D0",
"name": "j_sub_D0846C_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047d4",
- "ida_name": "j_sub_D09008_10",
+ "ida_name": "sub_D047D4",
"name": "j_sub_D09008_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047d8",
- "ida_name": "j_sub_D097FC_10",
+ "ida_name": "sub_D047D8",
"name": "j_sub_D097FC_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047dc",
- "ida_name": "j_sub_D098B0_10",
+ "ida_name": "sub_D047DC",
"name": "j_sub_D098B0_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047e0",
- "ida_name": "j_sub_D09CA0_10",
+ "ida_name": "sub_D047E0",
"name": "j_sub_D09CA0_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047e4",
- "ida_name": "j_sub_D09E24_10",
+ "ida_name": "sub_D047E4",
"name": "j_sub_D09E24_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047e8",
- "ida_name": "j_sub_D09EE4",
+ "ida_name": "sub_D047E8",
"name": "j_sub_D09EE4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd047ec",
- "ida_name": "asd_reg_offsets_init_1A0A8",
+ "ida_name": "sub_D047EC",
"name": "asd_reg_offsets_init_1A0A8",
"size": 674,
"tier": "EXACT"
},
{
"addr": "0xd04a94",
- "ida_name": "j_sub_D09F18_10",
+ "ida_name": "sub_D04A94",
"name": "j_sub_D09F18_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04a98",
- "ida_name": "j_sub_D0AF44_10",
+ "ida_name": "sub_D04A98",
"name": "j_sub_D0AF44_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04a9c",
- "ida_name": "j_sub_D06C60_11",
+ "ida_name": "sub_D04A9C",
"name": "j_sub_D06C60_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04aa0",
- "ida_name": "j_sub_D06CE4_11",
+ "ida_name": "sub_D04AA0",
"name": "j_sub_D06CE4_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04aa4",
- "ida_name": "j_asd_link_query_b",
+ "ida_name": "sub_D04AA4",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04aa8",
- "ida_name": "j_sub_D072F4_11",
+ "ida_name": "sub_D04AA8",
"name": "j_sub_D072F4_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04aac",
- "ida_name": "j_sub_D07364_11",
+ "ida_name": "sub_D04AAC",
"name": "j_sub_D07364_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ab0",
- "ida_name": "j_asd_link_wait_and_set_0",
+ "ida_name": "sub_D04AB0",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04ab4",
- "ida_name": "j_sub_D0747C_11",
+ "ida_name": "sub_D04AB4",
"name": "j_sub_D0747C_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ab8",
- "ida_name": "j_sub_D074D8_11",
+ "ida_name": "sub_D04AB8",
"name": "j_sub_D074D8_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04abc",
- "ida_name": "j_sub_D0750C_11",
+ "ida_name": "sub_D04ABC",
"name": "j_sub_D0750C_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ac0",
- "ida_name": "j_sub_D075B4_11",
+ "ida_name": "sub_D04AC0",
"name": "j_sub_D075B4_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ac4",
- "ida_name": "j_asd_link_bringup_seq",
+ "ida_name": "sub_D04AC4",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04ac8",
- "ida_name": "j_sub_D07A8C_11",
+ "ida_name": "sub_D04AC8",
"name": "j_sub_D07A8C_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04acc",
- "ida_name": "j_sub_D07D44_11",
+ "ida_name": "sub_D04ACC",
"name": "j_sub_D07D44_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ad0",
- "ida_name": "j_sub_D07D78_11",
+ "ida_name": "sub_D04AD0",
"name": "j_sub_D07D78_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ad4",
- "ida_name": "j_asd_clear_link_outputs_1",
+ "ida_name": "sub_D04AD4",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04ad8",
- "ida_name": "j_sub_D07F18_11",
+ "ida_name": "sub_D04AD8",
"name": "j_sub_D07F18_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04adc",
- "ida_name": "j_sub_D07F50_11",
+ "ida_name": "sub_D04ADC",
"name": "j_sub_D07F50_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ae0",
- "ida_name": "j_sub_D07F90_11",
+ "ida_name": "sub_D04AE0",
"name": "j_sub_D07F90_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ae4",
- "ida_name": "j_sub_D0802C_11",
+ "ida_name": "sub_D04AE4",
"name": "j_sub_D0802C_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04ae8",
- "ida_name": "j_sub_D08090_11",
+ "ida_name": "sub_D04AE8",
"name": "j_sub_D08090_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04aec",
- "ida_name": "j_asd_link_write_quad",
+ "ida_name": "sub_D04AEC",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd04af0",
- "ida_name": "j_sub_D081CC_11",
+ "ida_name": "sub_D04AF0",
"name": "j_sub_D081CC_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04af4",
- "ida_name": "j_sub_D0827C_11",
+ "ida_name": "sub_D04AF4",
"name": "j_sub_D0827C_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04af8",
- "ida_name": "j_sub_D08414_11",
+ "ida_name": "sub_D04AF8",
"name": "j_sub_D08414_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04afc",
- "ida_name": "j_sub_D0846C_11",
+ "ida_name": "sub_D04AFC",
"name": "j_sub_D0846C_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04b00",
- "ida_name": "j_sub_D09008_11",
+ "ida_name": "sub_D04B00",
"name": "j_sub_D09008_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04b04",
- "ida_name": "j_sub_D097FC_11",
+ "ida_name": "sub_D04B04",
"name": "j_sub_D097FC_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04b08",
- "ida_name": "j_sub_D098B0_11",
+ "ida_name": "sub_D04B08",
"name": "j_sub_D098B0_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04b0c",
- "ida_name": "j_sub_D09CA0_11",
+ "ida_name": "sub_D04B0C",
"name": "j_sub_D09CA0_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04b10",
- "ida_name": "j_sub_D09E24_11",
+ "ida_name": "sub_D04B10",
"name": "j_sub_D09E24_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04b14",
- "ida_name": "asd_reg_offsets_init_1A160",
+ "ida_name": "sub_D04B14",
"name": "asd_reg_offsets_init_1A160",
"size": 662,
"tier": "EXACT"
},
{
"addr": "0xd04db0",
- "ida_name": "asd_guard_sigtype1",
+ "ida_name": "sub_D04DB0",
"name": "asd_guard_sigtype1",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd04dc2",
- "ida_name": "asd_is_not_sigtype1",
+ "ida_name": "sub_D04DC2",
"name": "asd_is_not_sigtype1",
"size": 8,
"tier": "EXACT"
},
{
"addr": "0xd04dca",
- "ida_name": "j_sub_D0AF44_11",
+ "ida_name": "sub_D04DCA",
"name": "j_sub_D0AF44_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dce",
- "ida_name": "j_sub_D06C60_12",
+ "ida_name": "sub_D04DCE",
"name": "j_sub_D06C60_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dd2",
- "ida_name": "j_sub_D06CE4_12",
+ "ida_name": "sub_D04DD2",
"name": "j_sub_D06CE4_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dd6",
- "ida_name": "j_sub_D06FF4_12",
+ "ida_name": "sub_D04DD6",
"name": "j_sub_D06FF4_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dda",
- "ida_name": "j_sub_D072F4_12",
+ "ida_name": "sub_D04DDA",
"name": "j_sub_D072F4_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dde",
- "ida_name": "j_sub_D07364_12",
+ "ida_name": "sub_D04DDE",
"name": "j_sub_D07364_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04de2",
- "ida_name": "j_sub_D073A0_12",
+ "ida_name": "sub_D04DE2",
"name": "j_sub_D073A0_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04de6",
- "ida_name": "j_sub_D0747C_12",
+ "ida_name": "sub_D04DE6",
"name": "j_sub_D0747C_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dea",
- "ida_name": "j_sub_D074D8_12",
+ "ida_name": "sub_D04DEA",
"name": "j_sub_D074D8_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dee",
- "ida_name": "j_sub_D0750C_12",
+ "ida_name": "sub_D04DEE",
"name": "j_sub_D0750C_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04df2",
- "ida_name": "j_sub_D075B4_12",
+ "ida_name": "sub_D04DF2",
"name": "j_sub_D075B4_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04df6",
- "ida_name": "j_sub_D07784_12",
+ "ida_name": "sub_D04DF6",
"name": "j_sub_D07784_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dfa",
- "ida_name": "j_sub_D07A8C_12",
+ "ida_name": "sub_D04DFA",
"name": "j_sub_D07A8C_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04dfe",
- "ida_name": "j_sub_D07D44_12",
+ "ida_name": "sub_D04DFE",
"name": "j_sub_D07D44_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e02",
- "ida_name": "j_sub_D07D78_12",
+ "ida_name": "sub_D04E02",
"name": "j_sub_D07D78_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e06",
- "ida_name": "j_sub_D07E10_12",
+ "ida_name": "sub_D04E06",
"name": "j_sub_D07E10_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e0a",
- "ida_name": "j_sub_D07F18_12",
+ "ida_name": "sub_D04E0A",
"name": "j_sub_D07F18_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e0e",
- "ida_name": "j_sub_D07F50_12",
+ "ida_name": "sub_D04E0E",
"name": "j_sub_D07F50_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e12",
- "ida_name": "j_sub_D07F90_12",
+ "ida_name": "sub_D04E12",
"name": "j_sub_D07F90_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e16",
- "ida_name": "j_sub_D0802C_12",
+ "ida_name": "sub_D04E16",
"name": "j_sub_D0802C_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e1a",
- "ida_name": "j_sub_D08090_12",
+ "ida_name": "sub_D04E1A",
"name": "j_sub_D08090_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e1e",
- "ida_name": "j_sub_D08138_12",
+ "ida_name": "sub_D04E1E",
"name": "j_sub_D08138_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e22",
- "ida_name": "j_sub_D081CC_12",
+ "ida_name": "sub_D04E22",
"name": "j_sub_D081CC_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e26",
- "ida_name": "j_sub_D0827C_12",
+ "ida_name": "sub_D04E26",
"name": "j_sub_D0827C_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e2a",
- "ida_name": "j_sub_D08414_12",
+ "ida_name": "sub_D04E2A",
"name": "j_sub_D08414_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e2e",
- "ida_name": "j_sub_D0846C_12",
+ "ida_name": "sub_D04E2E",
"name": "j_sub_D0846C_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e32",
- "ida_name": "j_sub_D09008_12",
+ "ida_name": "sub_D04E32",
"name": "j_sub_D09008_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e36",
- "ida_name": "j_sub_D097FC_12",
+ "ida_name": "sub_D04E36",
"name": "j_sub_D097FC_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e3a",
- "ida_name": "j_sub_D098B0_12",
+ "ida_name": "sub_D04E3A",
"name": "j_sub_D098B0_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e3e",
- "ida_name": "j_sub_D09CA0_12",
+ "ida_name": "sub_D04E3E",
"name": "j_sub_D09CA0_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e42",
- "ida_name": "j_sub_D09E24_12",
+ "ida_name": "sub_D04E42",
"name": "j_sub_D09E24_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd04e48",
- "ida_name": "asd_reg_offsets_init_1A218",
+ "ida_name": "sub_D04E48",
"name": "asd_reg_offsets_init_1A218",
"size": 662,
"tier": "EXACT"
},
{
"addr": "0xd050e4",
- "ida_name": "asd_guard_sigtype3",
+ "ida_name": "sub_D050E4",
"name": "asd_guard_sigtype3",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd050f6",
- "ida_name": "asd_is_not_sigtype3",
+ "ida_name": "sub_D050F6",
"name": "asd_is_not_sigtype3",
"size": 8,
"tier": "EXACT"
},
{
"addr": "0xd050fe",
- "ida_name": "j_sub_D0AF44_12",
+ "ida_name": "sub_D050FE",
"name": "j_sub_D0AF44_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05102",
- "ida_name": "j_sub_D06C60_13",
+ "ida_name": "sub_D05102",
"name": "j_sub_D06C60_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05106",
- "ida_name": "j_sub_D06CE4_13",
+ "ida_name": "sub_D05106",
"name": "j_sub_D06CE4_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0510a",
- "ida_name": "j_sub_D06FF4_13",
+ "ida_name": "sub_D0510A",
"name": "j_sub_D06FF4_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0510e",
- "ida_name": "j_sub_D072F4_13",
+ "ida_name": "sub_D0510E",
"name": "j_sub_D072F4_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05112",
- "ida_name": "j_sub_D07364_13",
+ "ida_name": "sub_D05112",
"name": "j_sub_D07364_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05116",
- "ida_name": "j_sub_D073A0_13",
+ "ida_name": "sub_D05116",
"name": "j_sub_D073A0_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0511a",
- "ida_name": "j_sub_D0747C_13",
+ "ida_name": "sub_D0511A",
"name": "j_sub_D0747C_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0511e",
- "ida_name": "j_sub_D074D8_13",
+ "ida_name": "sub_D0511E",
"name": "j_sub_D074D8_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05122",
- "ida_name": "j_sub_D0750C_13",
+ "ida_name": "sub_D05122",
"name": "j_sub_D0750C_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05126",
- "ida_name": "j_sub_D075B4_13",
+ "ida_name": "sub_D05126",
"name": "j_sub_D075B4_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0512a",
- "ida_name": "j_sub_D07784_13",
+ "ida_name": "sub_D0512A",
"name": "j_sub_D07784_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0512e",
- "ida_name": "j_sub_D07A8C_13",
+ "ida_name": "sub_D0512E",
"name": "j_sub_D07A8C_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05132",
- "ida_name": "j_sub_D07D44_13",
+ "ida_name": "sub_D05132",
"name": "j_sub_D07D44_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05136",
- "ida_name": "j_sub_D07D78_13",
+ "ida_name": "sub_D05136",
"name": "j_sub_D07D78_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0513a",
- "ida_name": "j_sub_D07E10_13",
+ "ida_name": "sub_D0513A",
"name": "j_sub_D07E10_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0513e",
- "ida_name": "j_sub_D07F18_13",
+ "ida_name": "sub_D0513E",
"name": "j_sub_D07F18_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05142",
- "ida_name": "j_sub_D07F50_13",
+ "ida_name": "sub_D05142",
"name": "j_sub_D07F50_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05146",
- "ida_name": "j_sub_D07F90_13",
+ "ida_name": "sub_D05146",
"name": "j_sub_D07F90_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0514a",
- "ida_name": "j_sub_D0802C_13",
+ "ida_name": "sub_D0514A",
"name": "j_sub_D0802C_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0514e",
- "ida_name": "j_sub_D08090_13",
+ "ida_name": "sub_D0514E",
"name": "j_sub_D08090_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05152",
- "ida_name": "j_sub_D08138_13",
+ "ida_name": "sub_D05152",
"name": "j_sub_D08138_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05156",
- "ida_name": "j_sub_D081CC_13",
+ "ida_name": "sub_D05156",
"name": "j_sub_D081CC_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0515a",
- "ida_name": "j_sub_D0827C_13",
+ "ida_name": "sub_D0515A",
"name": "j_sub_D0827C_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0515e",
- "ida_name": "j_sub_D08414_13",
+ "ida_name": "sub_D0515E",
"name": "j_sub_D08414_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05162",
- "ida_name": "j_sub_D0846C_13",
+ "ida_name": "sub_D05162",
"name": "j_sub_D0846C_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05166",
- "ida_name": "j_sub_D09008_13",
+ "ida_name": "sub_D05166",
"name": "j_sub_D09008_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0516a",
- "ida_name": "j_sub_D092F0",
+ "ida_name": "sub_D0516A",
"name": "j_sub_D092F0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0516e",
- "ida_name": "j_sub_D097FC_13",
+ "ida_name": "sub_D0516E",
"name": "j_sub_D097FC_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05172",
- "ida_name": "j_sub_D098B0_13",
+ "ida_name": "sub_D05172",
"name": "j_sub_D098B0_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05176",
- "ida_name": "j_sub_D09CA0_13",
+ "ida_name": "sub_D05176",
"name": "j_sub_D09CA0_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0517a",
- "ida_name": "j_sub_D09E24_13",
+ "ida_name": "sub_D0517A",
"name": "j_sub_D09E24_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0517e",
- "ida_name": "j_sub_D09EE4_0",
+ "ida_name": "sub_D0517E",
"name": "j_sub_D09EE4_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05184",
- "ida_name": "asd_reg_offsets_init_1A2D0",
+ "ida_name": "sub_D05184",
"name": "asd_reg_offsets_init_1A2D0",
"size": 662,
"tier": "EXACT"
},
{
"addr": "0xd05420",
- "ida_name": "j_sub_D09F18_11",
+ "ida_name": "sub_D05420",
"name": "j_sub_D09F18_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05424",
- "ida_name": "j_sub_D0AF44_13",
+ "ida_name": "sub_D05424",
"name": "j_sub_D0AF44_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05428",
- "ida_name": "j_sub_D06C60_14",
+ "ida_name": "sub_D05428",
"name": "j_sub_D06C60_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0542c",
- "ida_name": "j_sub_D06CE4_14",
+ "ida_name": "sub_D0542C",
"name": "j_sub_D06CE4_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05430",
- "ida_name": "j_sub_D06FF4_14",
+ "ida_name": "sub_D05430",
"name": "j_sub_D06FF4_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05434",
- "ida_name": "j_sub_D072F4_14",
+ "ida_name": "sub_D05434",
"name": "j_sub_D072F4_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05438",
- "ida_name": "j_sub_D07364_14",
+ "ida_name": "sub_D05438",
"name": "j_sub_D07364_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0543c",
- "ida_name": "j_sub_D073A0_14",
+ "ida_name": "sub_D0543C",
"name": "j_sub_D073A0_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05440",
- "ida_name": "j_sub_D0747C_14",
+ "ida_name": "sub_D05440",
"name": "j_sub_D0747C_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05444",
- "ida_name": "j_sub_D074D8_14",
+ "ida_name": "sub_D05444",
"name": "j_sub_D074D8_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05448",
- "ida_name": "j_sub_D0750C_14",
+ "ida_name": "sub_D05448",
"name": "j_sub_D0750C_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0544c",
- "ida_name": "j_sub_D075B4_14",
+ "ida_name": "sub_D0544C",
"name": "j_sub_D075B4_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05450",
- "ida_name": "j_sub_D07784_14",
+ "ida_name": "sub_D05450",
"name": "j_sub_D07784_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05454",
- "ida_name": "j_sub_D07A8C_14",
+ "ida_name": "sub_D05454",
"name": "j_sub_D07A8C_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05458",
- "ida_name": "j_sub_D07D44_14",
+ "ida_name": "sub_D05458",
"name": "j_sub_D07D44_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0545c",
- "ida_name": "j_sub_D07D78_14",
+ "ida_name": "sub_D0545C",
"name": "j_sub_D07D78_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05460",
- "ida_name": "j_sub_D07E10_14",
+ "ida_name": "sub_D05460",
"name": "j_sub_D07E10_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05464",
- "ida_name": "j_sub_D07F18_14",
+ "ida_name": "sub_D05464",
"name": "j_sub_D07F18_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05468",
- "ida_name": "j_sub_D07F50_14",
+ "ida_name": "sub_D05468",
"name": "j_sub_D07F50_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0546c",
- "ida_name": "j_sub_D07F90_14",
+ "ida_name": "sub_D0546C",
"name": "j_sub_D07F90_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05470",
- "ida_name": "j_sub_D0802C_14",
+ "ida_name": "sub_D05470",
"name": "j_sub_D0802C_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05474",
- "ida_name": "j_asd_write_block_paged_0",
+ "ida_name": "sub_D05474",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05478",
- "ida_name": "j_asd_link_write_quad_0",
+ "ida_name": "sub_D05478",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd0547c",
- "ida_name": "j_sub_D081CC_14",
+ "ida_name": "sub_D0547C",
"name": "j_sub_D081CC_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05480",
- "ida_name": "j_sub_D0827C_14",
+ "ida_name": "sub_D05480",
"name": "j_sub_D0827C_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05484",
- "ida_name": "j_sub_D08414_14",
+ "ida_name": "sub_D05484",
"name": "j_sub_D08414_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05488",
- "ida_name": "j_sub_D0846C_14",
+ "ida_name": "sub_D05488",
"name": "j_sub_D0846C_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0548c",
- "ida_name": "j_sub_D09008_14",
+ "ida_name": "sub_D0548C",
"name": "j_sub_D09008_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05490",
- "ida_name": "j_sub_D092F0_0",
+ "ida_name": "sub_D05490",
"name": "j_sub_D092F0_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05494",
- "ida_name": "j_sub_D097FC_14",
+ "ida_name": "sub_D05494",
"name": "j_sub_D097FC_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05498",
- "ida_name": "j_sub_D098B0_14",
+ "ida_name": "sub_D05498",
"name": "j_sub_D098B0_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0549c",
- "ida_name": "j_sub_D09CA0_14",
+ "ida_name": "sub_D0549C",
"name": "j_sub_D09CA0_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd054a0",
- "ida_name": "j_sub_D09E24_14",
+ "ida_name": "sub_D054A0",
"name": "j_sub_D09E24_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd054a4",
- "ida_name": "j_sub_D09EE4_1",
+ "ida_name": "sub_D054A4",
"name": "j_sub_D09EE4_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd054a8",
- "ida_name": "asd_reg_offsets_init_1A388",
+ "ida_name": "sub_D054A8",
"name": "asd_reg_offsets_init_1A388",
"size": 662,
"tier": "EXACT"
},
{
"addr": "0xd05744",
- "ida_name": "j_sub_D09F18_12",
+ "ida_name": "sub_D05744",
"name": "j_sub_D09F18_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05748",
- "ida_name": "j_sub_D0AF44_14",
+ "ida_name": "sub_D05748",
"name": "j_sub_D0AF44_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0574c",
- "ida_name": "j_sub_D06C7C",
+ "ida_name": "sub_D0574C",
"name": "j_sub_D06C7C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05750",
- "ida_name": "j_sub_D06D18",
+ "ida_name": "sub_D05750",
"name": "j_sub_D06D18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05754",
- "ida_name": "j_sub_D070A4",
+ "ida_name": "sub_D05754",
"name": "j_sub_D070A4",
"size": 4,
"tier": "EXACT"
@@ -4188,252 +4188,252 @@
},
{
"addr": "0xd0575c",
- "ida_name": "j_asd_link_ready_full_check_0",
+ "ida_name": "sub_D0575C",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05760",
- "ida_name": "j_sub_D07364_15",
+ "ida_name": "sub_D05760",
"name": "j_sub_D07364_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05764",
- "ida_name": "j_sub_D073A0_15",
+ "ida_name": "sub_D05764",
"name": "j_sub_D073A0_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05768",
- "ida_name": "j_sub_D0747C_15",
+ "ida_name": "sub_D05768",
"name": "j_sub_D0747C_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0576c",
- "ida_name": "j_sub_D074D8_15",
+ "ida_name": "sub_D0576C",
"name": "j_sub_D074D8_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05770",
- "ida_name": "j_sub_D0750C_15",
+ "ida_name": "sub_D05770",
"name": "j_sub_D0750C_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05774",
- "ida_name": "j_sub_D075B4_15",
+ "ida_name": "sub_D05774",
"name": "j_sub_D075B4_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05778",
- "ida_name": "j_sub_D07878",
+ "ida_name": "sub_D05778",
"name": "j_sub_D07878",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0577c",
- "ida_name": "j_sub_D07BDC",
+ "ida_name": "sub_D0577C",
"name": "j_sub_D07BDC",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05780",
- "ida_name": "j_sub_D07D2C",
+ "ida_name": "sub_D05780",
"name": "j_sub_D07D2C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05784",
- "ida_name": "j_sub_D07D44_15",
+ "ida_name": "sub_D05784",
"name": "j_sub_D07D44_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05788",
- "ida_name": "j_sub_D07D78_15",
+ "ida_name": "sub_D05788",
"name": "j_sub_D07D78_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0578c",
- "ida_name": "j_sub_D07E10_15",
+ "ida_name": "sub_D0578C",
"name": "j_sub_D07E10_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05790",
- "ida_name": "j_sub_D07F18_15",
+ "ida_name": "sub_D05790",
"name": "j_sub_D07F18_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05794",
- "ida_name": "j_sub_D07F50_15",
+ "ida_name": "sub_D05794",
"name": "j_sub_D07F50_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05798",
- "ida_name": "j_sub_D07F90_15",
+ "ida_name": "sub_D05798",
"name": "j_sub_D07F90_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0579c",
- "ida_name": "j_sub_D0802C_15",
+ "ida_name": "sub_D0579C",
"name": "j_sub_D0802C_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057a0",
- "ida_name": "j_asd_write_block_paged_1",
+ "ida_name": "sub_D057A0",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd057a4",
- "ida_name": "j_sub_D08138_15",
+ "ida_name": "sub_D057A4",
"name": "j_sub_D08138_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057a8",
- "ida_name": "j_sub_D08230",
+ "ida_name": "sub_D057A8",
"name": "j_sub_D08230",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057ac",
- "ida_name": "j_sub_D08348",
+ "ida_name": "sub_D057AC",
"name": "j_sub_D08348",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057b0",
- "ida_name": "j_sub_D08414_15",
+ "ida_name": "sub_D057B0",
"name": "j_sub_D08414_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057b4",
- "ida_name": "j_sub_D088A8",
+ "ida_name": "sub_D057B4",
"name": "j_sub_D088A8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057b8",
- "ida_name": "j_sub_D09008_15",
+ "ida_name": "sub_D057B8",
"name": "j_sub_D09008_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057bc",
- "ida_name": "j_sub_D097FC_15",
+ "ida_name": "sub_D057BC",
"name": "j_sub_D097FC_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057c0",
- "ida_name": "j_sub_D098B0_15",
+ "ida_name": "sub_D057C0",
"name": "j_sub_D098B0_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057c4",
- "ida_name": "j_sub_D09CA0_15",
+ "ida_name": "sub_D057C4",
"name": "j_sub_D09CA0_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057c8",
- "ida_name": "j_sub_D09E24_15",
+ "ida_name": "sub_D057C8",
"name": "j_sub_D09E24_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057cc",
- "ida_name": "j_sub_D09EE4_2",
+ "ida_name": "sub_D057CC",
"name": "j_sub_D09EE4_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd057d0",
- "ida_name": "asd_reg_offsets_init_1A440",
+ "ida_name": "sub_D057D0",
"name": "asd_reg_offsets_init_1A440",
"size": 730,
"tier": "EXACT"
},
{
"addr": "0xd05ab4",
- "ida_name": "j_sub_D0A238",
+ "ida_name": "sub_D05AB4",
"name": "j_sub_D0A238",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ab8",
- "ida_name": "j_sub_D0B248",
+ "ida_name": "sub_D05AB8",
"name": "j_sub_D0B248",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05abc",
- "ida_name": "j_sub_D06CB0",
+ "ida_name": "sub_D05ABC",
"name": "j_sub_D06CB0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ac0",
- "ida_name": "j_sub_D06D94",
+ "ida_name": "sub_D05AC0",
"name": "j_sub_D06D94",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ac4",
- "ida_name": "j_sub_D06E28",
+ "ida_name": "sub_D05AC4",
"name": "j_sub_D06E28",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ac8",
- "ida_name": "j_asd_encoder_query",
+ "ida_name": "sub_D05AC8",
"name": null,
"size": 4,
"tier": "none"
@@ -4447,280 +4447,280 @@
},
{
"addr": "0xd05ad0",
- "ida_name": "j_asd_link_ready_full_check_1",
+ "ida_name": "sub_D05AD0",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05ad4",
- "ida_name": "j_sub_D07364_16",
+ "ida_name": "sub_D05AD4",
"name": "j_sub_D07364_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ad8",
- "ida_name": "j_sub_D073A0_16",
+ "ida_name": "sub_D05AD8",
"name": "j_sub_D073A0_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05adc",
- "ida_name": "j_sub_D0747C_16",
+ "ida_name": "sub_D05ADC",
"name": "j_sub_D0747C_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ae0",
- "ida_name": "j_sub_D074D8_16",
+ "ida_name": "sub_D05AE0",
"name": "j_sub_D074D8_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ae4",
- "ida_name": "j_sub_D0750C_16",
+ "ida_name": "sub_D05AE4",
"name": "j_sub_D0750C_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ae8",
- "ida_name": "j_sub_D075B4_16",
+ "ida_name": "sub_D05AE8",
"name": "j_sub_D075B4_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05aec",
- "ida_name": "j_sub_D07878_0",
+ "ida_name": "sub_D05AEC",
"name": "j_sub_D07878_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05af0",
- "ida_name": "j_sub_D07BDC_0",
+ "ida_name": "sub_D05AF0",
"name": "j_sub_D07BDC_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05af4",
- "ida_name": "j_sub_D07D2C_0",
+ "ida_name": "sub_D05AF4",
"name": "j_sub_D07D2C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05af8",
- "ida_name": "j_sub_D07D44_16",
+ "ida_name": "sub_D05AF8",
"name": "j_sub_D07D44_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05afc",
- "ida_name": "j_sub_D07D78_16",
+ "ida_name": "sub_D05AFC",
"name": "j_sub_D07D78_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b00",
- "ida_name": "j_sub_D07E10_16",
+ "ida_name": "sub_D05B00",
"name": "j_sub_D07E10_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b04",
- "ida_name": "j_sub_D07F18_16",
+ "ida_name": "sub_D05B04",
"name": "j_sub_D07F18_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b08",
- "ida_name": "j_sub_D07F50_16",
+ "ida_name": "sub_D05B08",
"name": "j_sub_D07F50_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b0c",
- "ida_name": "j_sub_D07F90_16",
+ "ida_name": "sub_D05B0C",
"name": "j_sub_D07F90_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b10",
- "ida_name": "j_sub_D0802C_16",
+ "ida_name": "sub_D05B10",
"name": "j_sub_D0802C_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b14",
- "ida_name": "j_sub_D08090_16",
+ "ida_name": "sub_D05B14",
"name": "j_sub_D08090_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b18",
- "ida_name": "j_sub_D08138_16",
+ "ida_name": "sub_D05B18",
"name": "j_sub_D08138_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b1c",
- "ida_name": "j_sub_D08230_0",
+ "ida_name": "sub_D05B1C",
"name": "j_sub_D08230_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b20",
- "ida_name": "j_sub_D08348_0",
+ "ida_name": "sub_D05B20",
"name": "j_sub_D08348_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b24",
- "ida_name": "j_asd_get_signal_reg_3",
+ "ida_name": "sub_D05B24",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05b28",
- "ida_name": "j_sub_D088A8_0",
+ "ida_name": "sub_D05B28",
"name": "j_sub_D088A8_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b2c",
- "ida_name": "j_sub_D09008_16",
+ "ida_name": "sub_D05B2C",
"name": "j_sub_D09008_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b30",
- "ida_name": "j_sub_D097FC_16",
+ "ida_name": "sub_D05B30",
"name": "j_sub_D097FC_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b34",
- "ida_name": "j_sub_D098B0_16",
+ "ida_name": "sub_D05B34",
"name": "j_sub_D098B0_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b38",
- "ida_name": "j_sub_D09CA0_16",
+ "ida_name": "sub_D05B38",
"name": "j_sub_D09CA0_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b3c",
- "ida_name": "j_sub_D09E24_16",
+ "ida_name": "sub_D05B3C",
"name": "j_sub_D09E24_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b40",
- "ida_name": "j_sub_D09EE4_3",
+ "ida_name": "sub_D05B40",
"name": "j_sub_D09EE4_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05b44",
- "ida_name": "asd_reg_offsets_init_1A4F8",
+ "ida_name": "sub_D05B44",
"name": "asd_reg_offsets_init_1A4F8",
"size": 754,
"tier": "EXACT"
},
{
"addr": "0xd05e44",
- "ida_name": "j_sub_D0A87C",
+ "ida_name": "sub_D05E44",
"name": "j_sub_D0A87C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e48",
- "ida_name": "j_asd_get_link_caps_full_v4",
+ "ida_name": "sub_D05E48",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05e4c",
- "ida_name": "j_sub_D0BFB8",
+ "ida_name": "sub_D05E4C",
"name": "j_sub_D0BFB8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e50",
- "ida_name": "j_sub_D0BFE8",
+ "ida_name": "sub_D05E50",
"name": "j_sub_D0BFE8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e54",
- "ida_name": "j_sub_D0C018",
+ "ida_name": "sub_D05E54",
"name": "j_sub_D0C018",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e58",
- "ida_name": "j_sub_D0C03C",
+ "ida_name": "sub_D05E58",
"name": "j_sub_D0C03C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e5c",
- "ida_name": "j_sub_D0C06C",
+ "ida_name": "sub_D05E5C",
"name": "j_sub_D0C06C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e60",
- "ida_name": "j_asd_reg_read_13D24_cfg1",
+ "ida_name": "sub_D05E60",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05e64",
- "ida_name": "j_sub_D06D18_0",
+ "ida_name": "sub_D05E64",
"name": "j_sub_D06D18_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e68",
- "ida_name": "j_sub_D070A4_0",
+ "ida_name": "sub_D05E68",
"name": "j_sub_D070A4_0",
"size": 4,
"tier": "EXACT"
@@ -4734,238 +4734,238 @@
},
{
"addr": "0xd05e70",
- "ida_name": "j_asd_link_ready_full_check_2",
+ "ida_name": "sub_D05E70",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05e74",
- "ida_name": "j_sub_D07364_17",
+ "ida_name": "sub_D05E74",
"name": "j_sub_D07364_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e78",
- "ida_name": "j_sub_D073A0_17",
+ "ida_name": "sub_D05E78",
"name": "j_sub_D073A0_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e7c",
- "ida_name": "j_sub_D0747C_17",
+ "ida_name": "sub_D05E7C",
"name": "j_sub_D0747C_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e80",
- "ida_name": "j_sub_D074D8_17",
+ "ida_name": "sub_D05E80",
"name": "j_sub_D074D8_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e84",
- "ida_name": "j_asd_link_reset_seq_0",
+ "ida_name": "sub_D05E84",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05e88",
- "ida_name": "j_sub_D075B4_17",
+ "ida_name": "sub_D05E88",
"name": "j_sub_D075B4_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e8c",
- "ida_name": "j_sub_D07878_1",
+ "ida_name": "sub_D05E8C",
"name": "j_sub_D07878_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e90",
- "ida_name": "j_sub_D07BDC_1",
+ "ida_name": "sub_D05E90",
"name": "j_sub_D07BDC_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e94",
- "ida_name": "j_sub_D07D2C_1",
+ "ida_name": "sub_D05E94",
"name": "j_sub_D07D2C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e98",
- "ida_name": "j_sub_D07D44_17",
+ "ida_name": "sub_D05E98",
"name": "j_sub_D07D44_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05e9c",
- "ida_name": "j_sub_D07D78_17",
+ "ida_name": "sub_D05E9C",
"name": "j_sub_D07D78_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ea0",
- "ida_name": "j_sub_D07E10_17",
+ "ida_name": "sub_D05EA0",
"name": "j_sub_D07E10_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ea4",
- "ida_name": "j_sub_D07F18_17",
+ "ida_name": "sub_D05EA4",
"name": "j_sub_D07F18_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ea8",
- "ida_name": "j_sub_D07F50_17",
+ "ida_name": "sub_D05EA8",
"name": "j_sub_D07F50_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05eac",
- "ida_name": "j_sub_D07F90_17",
+ "ida_name": "sub_D05EAC",
"name": "j_sub_D07F90_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05eb0",
- "ida_name": "j_sub_D0802C_17",
+ "ida_name": "sub_D05EB0",
"name": "j_sub_D0802C_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05eb4",
- "ida_name": "j_sub_D08090_17",
+ "ida_name": "sub_D05EB4",
"name": "j_sub_D08090_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05eb8",
- "ida_name": "j_sub_D08138_17",
+ "ida_name": "sub_D05EB8",
"name": "j_sub_D08138_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ebc",
- "ida_name": "j_sub_D08230_1",
+ "ida_name": "sub_D05EBC",
"name": "j_sub_D08230_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ec0",
- "ida_name": "j_sub_D08348_1",
+ "ida_name": "sub_D05EC0",
"name": "j_sub_D08348_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ec4",
- "ida_name": "j_asd_get_signal_reg_4",
+ "ida_name": "sub_D05EC4",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd05ec8",
- "ida_name": "j_sub_D088A8_1",
+ "ida_name": "sub_D05EC8",
"name": "j_sub_D088A8_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ecc",
- "ida_name": "j_sub_D09008_17",
+ "ida_name": "sub_D05ECC",
"name": "j_sub_D09008_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ed0",
- "ida_name": "j_sub_D097FC_17",
+ "ida_name": "sub_D05ED0",
"name": "j_sub_D097FC_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ed4",
- "ida_name": "j_sub_D098B0_17",
+ "ida_name": "sub_D05ED4",
"name": "j_sub_D098B0_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ed8",
- "ida_name": "j_sub_D09CA0_17",
+ "ida_name": "sub_D05ED8",
"name": "j_sub_D09CA0_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05edc",
- "ida_name": "j_sub_D09E24_17",
+ "ida_name": "sub_D05EDC",
"name": "j_sub_D09E24_17",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ee0",
- "ida_name": "j_sub_D09EE4_4",
+ "ida_name": "sub_D05EE0",
"name": "j_sub_D09EE4_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd05ee4",
- "ida_name": "asd_reg_offsets_init_1A5B0",
+ "ida_name": "sub_D05EE4",
"name": "asd_reg_offsets_init_1A5B0",
"size": 730,
"tier": "EXACT"
},
{
"addr": "0xd061cc",
- "ida_name": "j_asd_program_link_by_signal_v2",
+ "ida_name": "sub_D061CC",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd061d0",
- "ida_name": "j_sub_D0B248_0",
+ "ida_name": "sub_D061D0",
"name": "j_sub_D0B248_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd061d4",
- "ida_name": "j_asd_reg_read_13D24_cfg0_0",
+ "ida_name": "sub_D061D4",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd061d8",
- "ida_name": "j_sub_D070A4_1",
+ "ida_name": "sub_D061D8",
"name": "j_sub_D070A4_1",
"size": 4,
"tier": "EXACT"
@@ -4979,287 +4979,287 @@
},
{
"addr": "0xd061e0",
- "ida_name": "j_asd_link_ready_full_check_3",
+ "ida_name": "sub_D061E0",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd061e4",
- "ida_name": "j_sub_D07364_18",
+ "ida_name": "sub_D061E4",
"name": "j_sub_D07364_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd061e8",
- "ida_name": "j_sub_D073A0_18",
+ "ida_name": "sub_D061E8",
"name": "j_sub_D073A0_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd061ec",
- "ida_name": "j_sub_D0747C_18",
+ "ida_name": "sub_D061EC",
"name": "j_sub_D0747C_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd061f0",
- "ida_name": "j_sub_D074D8_18",
+ "ida_name": "sub_D061F0",
"name": "j_sub_D074D8_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd061f4",
- "ida_name": "j_sub_D0750C_18",
+ "ida_name": "sub_D061F4",
"name": "j_sub_D0750C_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd061f8",
- "ida_name": "j_sub_D075B4_18",
+ "ida_name": "sub_D061F8",
"name": "j_sub_D075B4_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd061fc",
- "ida_name": "j_sub_D07878_2",
+ "ida_name": "sub_D061FC",
"name": "j_sub_D07878_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06200",
- "ida_name": "j_sub_D07BDC_2",
+ "ida_name": "sub_D06200",
"name": "j_sub_D07BDC_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06204",
- "ida_name": "j_sub_D07D2C_2",
+ "ida_name": "sub_D06204",
"name": "j_sub_D07D2C_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06208",
- "ida_name": "j_sub_D07D44_18",
+ "ida_name": "sub_D06208",
"name": "j_sub_D07D44_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0620c",
- "ida_name": "j_sub_D07D78_18",
+ "ida_name": "sub_D0620C",
"name": "j_sub_D07D78_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06210",
- "ida_name": "j_sub_D07E10_18",
+ "ida_name": "sub_D06210",
"name": "j_sub_D07E10_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06214",
- "ida_name": "j_sub_D07F18_18",
+ "ida_name": "sub_D06214",
"name": "j_sub_D07F18_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06218",
- "ida_name": "j_sub_D07F50_18",
+ "ida_name": "sub_D06218",
"name": "j_sub_D07F50_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0621c",
- "ida_name": "j_sub_D07F90_18",
+ "ida_name": "sub_D0621C",
"name": "j_sub_D07F90_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06220",
- "ida_name": "j_sub_D0802C_18",
+ "ida_name": "sub_D06220",
"name": "j_sub_D0802C_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06224",
- "ida_name": "j_sub_D08090_18",
+ "ida_name": "sub_D06224",
"name": "j_sub_D08090_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06228",
- "ida_name": "j_sub_D08138_18",
+ "ida_name": "sub_D06228",
"name": "j_sub_D08138_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0622c",
- "ida_name": "j_sub_D08230_2",
+ "ida_name": "sub_D0622C",
"name": "j_sub_D08230_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06230",
- "ida_name": "j_sub_D08348_2",
+ "ida_name": "sub_D06230",
"name": "j_sub_D08348_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06234",
- "ida_name": "j_sub_D08414_18",
+ "ida_name": "sub_D06234",
"name": "j_sub_D08414_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06238",
- "ida_name": "j_sub_D088A8_2",
+ "ida_name": "sub_D06238",
"name": "j_sub_D088A8_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0623c",
- "ida_name": "j_sub_D09008_18",
+ "ida_name": "sub_D0623C",
"name": "j_sub_D09008_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06240",
- "ida_name": "j_sub_D09598",
+ "ida_name": "sub_D06240",
"name": "j_sub_D09598",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06244",
- "ida_name": "j_sub_D097FC_18",
+ "ida_name": "sub_D06244",
"name": "j_sub_D097FC_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06248",
- "ida_name": "j_asd_pipe_lookup_0",
+ "ida_name": "sub_D06248",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd0624c",
- "ida_name": "j_sub_D09CA0_18",
+ "ida_name": "sub_D0624C",
"name": "j_sub_D09CA0_18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06250",
- "ida_name": "j_sub_D09EA0",
+ "ida_name": "sub_D06250",
"name": "j_sub_D09EA0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06254",
- "ida_name": "j_sub_D09EE4_5",
+ "ida_name": "sub_D06254",
"name": "j_sub_D09EE4_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06258",
- "ida_name": "asd_reg_offsets_init_1A668",
+ "ida_name": "sub_D06258",
"name": "asd_reg_offsets_init_1A668",
"size": 746,
"tier": "EXACT"
},
{
"addr": "0xd06550",
- "ida_name": "j_sub_D0A564",
+ "ida_name": "sub_D06550",
"name": "j_sub_D0A564",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06554",
- "ida_name": "j_sub_D0B560",
+ "ida_name": "sub_D06554",
"name": "j_sub_D0B560",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06558",
- "ida_name": "j_sub_D0BFB8_0",
+ "ida_name": "sub_D06558",
"name": "j_sub_D0BFB8_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0655c",
- "ida_name": "j_sub_D0BFE8_0",
+ "ida_name": "sub_D0655C",
"name": "j_sub_D0BFE8_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06560",
- "ida_name": "j_asd_set_link_param_40",
+ "ida_name": "sub_D06560",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd06564",
- "ida_name": "j_asd_set_link_param_44",
+ "ida_name": "sub_D06564",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd06568",
- "ida_name": "j_sub_D06CB0_0",
+ "ida_name": "sub_D06568",
"name": "j_sub_D06CB0_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0656c",
- "ida_name": "j_sub_D06D94_0",
+ "ida_name": "sub_D0656C",
"name": "j_sub_D06D94_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06570",
- "ida_name": "j_sub_D06E28_0",
+ "ida_name": "sub_D06570",
"name": "j_sub_D06E28_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06574",
- "ida_name": "j_sub_D07150_0",
+ "ida_name": "sub_D06574",
"name": "j_sub_D07150_0",
"size": 4,
"tier": "EXACT"
@@ -5273,266 +5273,266 @@
},
{
"addr": "0xd0657c",
- "ida_name": "j_asd_link_ready_full_check_4",
+ "ida_name": "sub_D0657C",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd06580",
- "ida_name": "j_sub_D07364_19",
+ "ida_name": "sub_D06580",
"name": "j_sub_D07364_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06584",
- "ida_name": "j_asd_link_wait_and_set_1",
+ "ida_name": "sub_D06584",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd06588",
- "ida_name": "j_asd_link_train_status_0",
+ "ida_name": "sub_D06588",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd0658c",
- "ida_name": "j_sub_D074D8_19",
+ "ida_name": "sub_D0658C",
"name": "j_sub_D074D8_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06590",
- "ida_name": "j_sub_D0750C_19",
+ "ida_name": "sub_D06590",
"name": "j_sub_D0750C_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06594",
- "ida_name": "j_sub_D0769C",
+ "ida_name": "sub_D06594",
"name": "j_sub_D0769C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06598",
- "ida_name": "j_sub_D07878_3",
+ "ida_name": "sub_D06598",
"name": "j_sub_D07878_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0659c",
- "ida_name": "j_asd_link_bringup_seq_v5",
+ "ida_name": "sub_D0659C",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd065a0",
- "ida_name": "j_sub_D07D2C_3",
+ "ida_name": "sub_D065A0",
"name": "j_sub_D07D2C_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065a4",
- "ida_name": "j_sub_D07D44_19",
+ "ida_name": "sub_D065A4",
"name": "j_sub_D07D44_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065a8",
- "ida_name": "j_sub_D07D78_19",
+ "ida_name": "sub_D065A8",
"name": "j_sub_D07D78_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065ac",
- "ida_name": "j_sub_D07E10_19",
+ "ida_name": "sub_D065AC",
"name": "j_sub_D07E10_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065b0",
- "ida_name": "j_sub_D07F18_19",
+ "ida_name": "sub_D065B0",
"name": "j_sub_D07F18_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065b4",
- "ida_name": "j_sub_D07F50_19",
+ "ida_name": "sub_D065B4",
"name": "j_sub_D07F50_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065b8",
- "ida_name": "j_sub_D07F90_19",
+ "ida_name": "sub_D065B8",
"name": "j_sub_D07F90_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065bc",
- "ida_name": "j_sub_D0802C_19",
+ "ida_name": "sub_D065BC",
"name": "j_sub_D0802C_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065c0",
- "ida_name": "j_sub_D08090_19",
+ "ida_name": "sub_D065C0",
"name": "j_sub_D08090_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065c4",
- "ida_name": "j_sub_D08138_19",
+ "ida_name": "sub_D065C4",
"name": "j_sub_D08138_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065c8",
- "ida_name": "j_sub_D08230_3",
+ "ida_name": "sub_D065C8",
"name": "j_sub_D08230_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065cc",
- "ida_name": "j_sub_D08348_3",
+ "ida_name": "sub_D065CC",
"name": "j_sub_D08348_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065d0",
- "ida_name": "j_sub_D08414_19",
+ "ida_name": "sub_D065D0",
"name": "j_sub_D08414_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065d4",
- "ida_name": "j_sub_D08BD0",
+ "ida_name": "sub_D065D4",
"name": "j_sub_D08BD0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065d8",
- "ida_name": "j_sub_D09008_19",
+ "ida_name": "sub_D065D8",
"name": "j_sub_D09008_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065dc",
- "ida_name": "j_sub_D097FC_19",
+ "ida_name": "sub_D065DC",
"name": "j_sub_D097FC_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065e0",
- "ida_name": "j_sub_D098B0_19",
+ "ida_name": "sub_D065E0",
"name": "j_sub_D098B0_19",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065e4",
- "ida_name": "j_sub_D09D60",
+ "ida_name": "sub_D065E4",
"name": "j_sub_D09D60",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065e8",
- "ida_name": "j_sub_D09EA0_0",
+ "ida_name": "sub_D065E8",
"name": "j_sub_D09EA0_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065ec",
- "ida_name": "j_sub_D09EE4_6",
+ "ida_name": "sub_D065EC",
"name": "j_sub_D09EE4_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd065f0",
- "ida_name": "asd_reg_offsets_init_1A720",
+ "ida_name": "sub_D065F0",
"name": "asd_reg_offsets_init_1A720",
"size": 754,
"tier": "EXACT"
},
{
"addr": "0xd068f0",
- "ida_name": "j_sub_D0ABDC",
+ "ida_name": "sub_D068F0",
"name": "j_sub_D0ABDC",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd068f4",
- "ida_name": "j_sub_D0BB14",
+ "ida_name": "sub_D068F4",
"name": "j_sub_D0BB14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd068f8",
- "ida_name": "j_sub_D0BFB8_1",
+ "ida_name": "sub_D068F8",
"name": "j_sub_D0BFB8_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd068fc",
- "ida_name": "j_sub_D0BFE8_1",
+ "ida_name": "sub_D068FC",
"name": "j_sub_D0BFE8_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06900",
- "ida_name": "j_sub_D0C018_0",
+ "ida_name": "sub_D06900",
"name": "j_sub_D0C018_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06904",
- "ida_name": "j_sub_D0C03C_1",
+ "ida_name": "sub_D06904",
"name": "j_sub_D0C03C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06908",
- "ida_name": "j_sub_D0C06C_1",
+ "ida_name": "sub_D06908",
"name": "j_sub_D0C06C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0690c",
- "ida_name": "j_sub_D07150_1",
+ "ida_name": "sub_D0690C",
"name": "j_sub_D07150_1",
"size": 4,
"tier": "EXACT"
@@ -5546,350 +5546,350 @@
},
{
"addr": "0xd06914",
- "ida_name": "j_asd_link_ready_full_check_5",
+ "ida_name": "sub_D06914",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd06918",
- "ida_name": "j_sub_D07364_20",
+ "ida_name": "sub_D06918",
"name": "j_sub_D07364_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0691c",
- "ida_name": "j_sub_D073A0_20",
+ "ida_name": "sub_D0691C",
"name": "j_sub_D073A0_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06920",
- "ida_name": "j_sub_D0747C_20",
+ "ida_name": "sub_D06920",
"name": "j_sub_D0747C_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06924",
- "ida_name": "j_sub_D074D8_20",
+ "ida_name": "sub_D06924",
"name": "j_sub_D074D8_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06928",
- "ida_name": "j_sub_D0750C_20",
+ "ida_name": "sub_D06928",
"name": "j_sub_D0750C_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0692c",
- "ida_name": "j_sub_D0769C_0",
+ "ida_name": "sub_D0692C",
"name": "j_sub_D0769C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06930",
- "ida_name": "j_sub_D07878_4",
+ "ida_name": "sub_D06930",
"name": "j_sub_D07878_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06934",
- "ida_name": "j_sub_D07968",
+ "ida_name": "sub_D06934",
"name": "j_sub_D07968",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06938",
- "ida_name": "j_sub_D07D2C_4",
+ "ida_name": "sub_D06938",
"name": "j_sub_D07D2C_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0693c",
- "ida_name": "j_sub_D07D44_20",
+ "ida_name": "sub_D0693C",
"name": "j_sub_D07D44_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06940",
- "ida_name": "j_sub_D07D78_20",
+ "ida_name": "sub_D06940",
"name": "j_sub_D07D78_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06944",
- "ida_name": "j_sub_D07E10_20",
+ "ida_name": "sub_D06944",
"name": "j_sub_D07E10_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06948",
- "ida_name": "j_sub_D07F18_20",
+ "ida_name": "sub_D06948",
"name": "j_sub_D07F18_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0694c",
- "ida_name": "j_sub_D07F50_20",
+ "ida_name": "sub_D0694C",
"name": "j_sub_D07F50_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06950",
- "ida_name": "j_asd_link_program_timing",
+ "ida_name": "sub_D06950",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd06954",
- "ida_name": "j_sub_D0802C_20",
+ "ida_name": "sub_D06954",
"name": "j_sub_D0802C_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06958",
- "ida_name": "j_sub_D08090_20",
+ "ida_name": "sub_D06958",
"name": "j_sub_D08090_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0695c",
- "ida_name": "j_sub_D08138_20",
+ "ida_name": "sub_D0695C",
"name": "j_sub_D08138_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06960",
- "ida_name": "j_sub_D08230_4",
+ "ida_name": "sub_D06960",
"name": "j_sub_D08230_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06964",
- "ida_name": "j_sub_D08348_4",
+ "ida_name": "sub_D06964",
"name": "j_sub_D08348_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06968",
- "ida_name": "j_sub_D08414_20",
+ "ida_name": "sub_D06968",
"name": "j_sub_D08414_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0696c",
- "ida_name": "j_sub_D08BD0_0",
+ "ida_name": "sub_D0696C",
"name": "j_sub_D08BD0_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06970",
- "ida_name": "j_sub_D09008_20",
+ "ida_name": "sub_D06970",
"name": "j_sub_D09008_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06974",
- "ida_name": "j_sub_D097FC_20",
+ "ida_name": "sub_D06974",
"name": "j_sub_D097FC_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06978",
- "ida_name": "j_sub_D098B0_20",
+ "ida_name": "sub_D06978",
"name": "j_sub_D098B0_20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd0697c",
- "ida_name": "j_sub_D09D60_0",
+ "ida_name": "sub_D0697C",
"name": "j_sub_D09D60_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06980",
- "ida_name": "j_sub_D09EA0_1",
+ "ida_name": "sub_D06980",
"name": "j_sub_D09EA0_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06984",
- "ida_name": "j_sub_D09EE4_7",
+ "ida_name": "sub_D06984",
"name": "j_sub_D09EE4_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06988",
- "ida_name": "asd_reg_offsets_init_1A7D8",
+ "ida_name": "sub_D06988",
"name": "asd_reg_offsets_init_1A7D8",
"size": 710,
"tier": "EXACT"
},
{
"addr": "0xd06c58",
- "ida_name": "j_sub_D0ABDC_0",
+ "ida_name": "sub_D06C58",
"name": "j_sub_D0ABDC_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06c5c",
- "ida_name": "j_sub_D0B560_0",
+ "ida_name": "sub_D06C5C",
"name": "j_sub_D0B560_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd06c60",
- "ida_name": "asd_reg_read_13D24_cfg0",
+ "ida_name": "sub_D06C60",
"name": "asd_reg_read_13D24_cfg0",
"size": 26,
"tier": "EXACT"
},
{
"addr": "0xd06c7c",
- "ida_name": "asd_reg_read_13D24_cfg1",
+ "ida_name": "sub_D06C7C",
"name": "asd_reg_read_13D24_cfg1",
"size": 52,
"tier": "EXACT"
},
{
"addr": "0xd06cb0",
- "ida_name": "asd_connector_state_check",
+ "ida_name": "sub_D06CB0",
"name": "asd_connector_state_check",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd06ce4",
- "ida_name": "asd_connector_enable",
+ "ida_name": "sub_D06CE4",
"name": "asd_connector_enable",
"size": 52,
"tier": "EXACT"
},
{
"addr": "0xd06d18",
- "ida_name": "asd_connector_enable_wait",
+ "ida_name": "sub_D06D18",
"name": "asd_connector_enable_wait",
"size": 118,
"tier": "EXACT"
},
{
"addr": "0xd06d94",
- "ida_name": "asd_connector_enable_v2",
+ "ida_name": "sub_D06D94",
"name": "asd_connector_enable_v2",
"size": 100,
"tier": "EXACT"
},
{
"addr": "0xd06df8",
- "ida_name": "asd_encoder_state_check",
+ "ida_name": "sub_D06DF8",
"name": "asd_encoder_state_check",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd06e28",
- "ida_name": "asd_connector_program_seq",
+ "ida_name": "sub_D06E28",
"name": "asd_connector_program_seq",
"size": 140,
"tier": "EXACT"
},
{
"addr": "0xd06ecc",
- "ida_name": "asd_get_connector_ids_a",
+ "ida_name": "sub_D06ECC",
"name": "asd_get_connector_ids_a",
"size": 144,
"tier": "EXACT"
},
{
"addr": "0xd06f5c",
- "ida_name": "asd_get_connector_ids_b",
+ "ida_name": "sub_D06F5C",
"name": "asd_get_connector_ids_b",
"size": 144,
"tier": "EXACT"
},
{
"addr": "0xd06ff4",
- "ida_name": "asd_link_query_b",
+ "ida_name": "sub_D06FF4",
"name": "asd_link_query_b",
"size": 170,
"tier": "EXACT"
},
{
"addr": "0xd070a4",
- "ida_name": "asd_link_query_a",
+ "ida_name": "sub_D070A4",
"name": "asd_link_query_a",
"size": 168,
"tier": "EXACT"
},
{
"addr": "0xd07150",
- "ida_name": "asd_encoder_query",
+ "ida_name": "sub_D07150",
"name": "asd_encoder_query",
"size": 186,
"tier": "EXACT"
},
{
"addr": "0xd07210",
- "ida_name": "asd_link_ready_check",
+ "ida_name": "sub_D07210",
"name": "asd_link_ready_check",
"size": 46,
"tier": "EXACT"
},
{
"addr": "0xd07240",
- "ida_name": "asd_link_status_query",
+ "ida_name": "sub_D07240",
"name": "asd_link_status_query",
"size": 70,
"tier": "EXACT"
},
{
"addr": "0xd0728c",
- "ida_name": "asd_reg_read_13B74_cfg1",
+ "ida_name": "sub_D0728C",
"name": "asd_reg_read_13B74_cfg1",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd072cc",
- "ida_name": "asd_opt_cb_D423E8",
+ "ida_name": "sub_D072CC",
"name": "asd_opt_cb_D423E8",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd072dc",
- "ida_name": "asd_opt_cb_D423F0",
+ "ida_name": "sub_D072DC",
"name": "asd_opt_cb_D423F0",
"size": 14,
"tier": "EXACT"
@@ -5903,91 +5903,91 @@
},
{
"addr": "0xd072f4",
- "ida_name": "asd_link_ready_full_check",
+ "ida_name": "sub_D072F4",
"name": "asd_link_ready_full_check",
"size": 108,
"tier": "EXACT"
},
{
"addr": "0xd07364",
- "ida_name": "asd_link_set_reg42440_byte",
+ "ida_name": "sub_D07364",
"name": "asd_link_set_reg42440_byte",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd073a0",
- "ida_name": "asd_link_wait_and_set",
+ "ida_name": "sub_D073A0",
"name": "asd_link_wait_and_set",
"size": 210,
"tier": "EXACT"
},
{
"addr": "0xd0747c",
- "ida_name": "asd_link_train_status",
+ "ida_name": "sub_D0747C",
"name": "asd_link_train_status",
"size": 88,
"tier": "EXACT"
},
{
"addr": "0xd074d8",
- "ida_name": "asd_reg_read_13B74_cfg2",
+ "ida_name": "sub_D074D8",
"name": "asd_reg_read_13B74_cfg2",
"size": 42,
"tier": "EXACT"
},
{
"addr": "0xd0750c",
- "ida_name": "asd_link_reset_seq",
+ "ida_name": "sub_D0750C",
"name": "asd_link_reset_seq",
"size": 164,
"tier": "EXACT"
},
{
"addr": "0xd075b4",
- "ida_name": "asd_link_wait_ready_a",
+ "ida_name": "sub_D075B4",
"name": "asd_link_wait_ready_a",
"size": 222,
"tier": "EXACT"
},
{
"addr": "0xd0769c",
- "ida_name": "asd_link_wait_ready_b",
+ "ida_name": "sub_D0769C",
"name": "asd_link_wait_ready_b",
"size": 222,
"tier": "EXACT"
},
{
"addr": "0xd07784",
- "ida_name": "asd_link_bringup_seq",
+ "ida_name": "sub_D07784",
"name": "asd_link_bringup_seq",
"size": 232,
"tier": "EXACT"
},
{
"addr": "0xd07878",
- "ida_name": "asd_link_bringup_seq_v2",
+ "ida_name": "sub_D07878",
"name": "asd_link_bringup_seq_v2",
"size": 232,
"tier": "EXACT"
},
{
"addr": "0xd07968",
- "ida_name": "asd_link_bringup_seq_v3",
+ "ida_name": "sub_D07968",
"name": "asd_link_bringup_seq_v3",
"size": 284,
"tier": "EXACT"
},
{
"addr": "0xd07a8c",
- "ida_name": "asd_link_bringup_seq_v4",
+ "ida_name": "sub_D07A8C",
"name": "asd_link_bringup_seq_v4",
"size": 328,
"tier": "EXACT"
},
{
"addr": "0xd07bdc",
- "ida_name": "asd_link_bringup_seq_v5",
+ "ida_name": "sub_D07BDC",
"name": "asd_link_bringup_seq_v5",
"size": 328,
"tier": "EXACT"
@@ -6001,77 +6001,77 @@
},
{
"addr": "0xd07d30",
- "ida_name": "asd_opt_cb_D423EC",
+ "ida_name": "sub_D07D30",
"name": "asd_opt_cb_D423EC",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd07d44",
- "ida_name": "asd_reg_read_13B74_cfg3",
+ "ida_name": "sub_D07D44",
"name": "asd_reg_read_13B74_cfg3",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd07d78",
- "ida_name": "asd_link_read_pair_regs",
+ "ida_name": "sub_D07D78",
"name": "asd_link_read_pair_regs",
"size": 148,
"tier": "EXACT"
},
{
"addr": "0xd07e10",
- "ida_name": "asd_clear_link_outputs",
+ "ida_name": "sub_D07E10",
"name": "asd_clear_link_outputs",
"size": 262,
"tier": "EXACT"
},
{
"addr": "0xd07f18",
- "ida_name": "asd_link_set_reg42468_byte",
+ "ida_name": "sub_D07F18",
"name": "asd_link_set_reg42468_byte",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd07f50",
- "ida_name": "asd_link_set_reg4248C_half",
+ "ida_name": "sub_D07F50",
"name": "asd_link_set_reg4248C_half",
"size": 60,
"tier": "EXACT"
},
{
"addr": "0xd07f90",
- "ida_name": "asd_link_program_timing",
+ "ida_name": "sub_D07F90",
"name": "asd_link_program_timing",
"size": 154,
"tier": "EXACT"
},
{
"addr": "0xd0802c",
- "ida_name": "asd_link_set_reg42468_field",
+ "ida_name": "sub_D0802C",
"name": "asd_link_set_reg42468_field",
"size": 90,
"tier": "EXACT"
},
{
"addr": "0xd08090",
- "ida_name": "asd_write_block_paged",
+ "ida_name": "sub_D08090",
"name": "asd_write_block_paged",
"size": 158,
"tier": "EXACT"
},
{
"addr": "0xd08138",
- "ida_name": "asd_link_write_quad",
+ "ida_name": "sub_D08138",
"name": "asd_link_write_quad",
"size": 130,
"tier": "EXACT"
},
{
"addr": "0xd081cc",
- "ida_name": "asd_program_key_regs",
+ "ida_name": "sub_D081CC",
"name": "asd_program_key_regs",
"size": 100,
"tier": "EXACT"
@@ -6085,84 +6085,84 @@
},
{
"addr": "0xd08234",
- "ida_name": "asd_write_key_regs",
+ "ida_name": "sub_D08234",
"name": "asd_write_key_regs",
"size": 70,
"tier": "EXACT"
},
{
"addr": "0xd0827c",
- "ida_name": "asd_link_status_by_signal",
+ "ida_name": "sub_D0827C",
"name": "asd_link_status_by_signal",
"size": 196,
"tier": "EXACT"
},
{
"addr": "0xd08348",
- "ida_name": "asd_link_status_by_signal_v2",
+ "ida_name": "sub_D08348",
"name": "asd_link_status_by_signal_v2",
"size": 196,
"tier": "EXACT"
},
{
"addr": "0xd08414",
- "ida_name": "asd_get_signal_reg",
+ "ida_name": "sub_D08414",
"name": "asd_get_signal_reg",
"size": 84,
"tier": "EXACT"
},
{
"addr": "0xd0846c",
- "ida_name": "asd_encoder_enable_seq",
+ "ida_name": "sub_D0846C",
"name": "asd_encoder_enable_seq",
"size": 1072,
"tier": "EXACT"
},
{
"addr": "0xd088a8",
- "ida_name": "asd_encoder_enable_seq_v3",
+ "ida_name": "sub_D088A8",
"name": "asd_encoder_enable_seq_v3",
"size": 796,
"tier": "EXACT"
},
{
"addr": "0xd08bd0",
- "ida_name": "asd_encoder_enable_seq_v2",
+ "ida_name": "sub_D08BD0",
"name": "asd_encoder_enable_seq_v2",
"size": 1068,
"tier": "EXACT"
},
{
"addr": "0xd09008",
- "ida_name": "asd_query_link_config",
+ "ida_name": "sub_D09008",
"name": "asd_query_link_config",
"size": 582,
"tier": "EXACT"
},
{
"addr": "0xd09254",
- "ida_name": "asd_get_key_words",
+ "ida_name": "sub_D09254",
"name": "asd_get_key_words",
"size": 152,
"tier": "EXACT"
},
{
"addr": "0xd092f0",
- "ida_name": "asd_build_link_map_full",
+ "ida_name": "sub_D092F0",
"name": "asd_build_link_map_full",
"size": 674,
"tier": "EXACT"
},
{
"addr": "0xd09598",
- "ida_name": "asd_build_link_map",
+ "ida_name": "sub_D09598",
"name": "asd_build_link_map",
"size": 322,
"tier": "EXACT"
},
{
"addr": "0xd096e0",
- "ida_name": "asd_wait_signal16_idle",
+ "ida_name": "sub_D096E0",
"name": "asd_wait_signal16_idle",
"size": 102,
"tier": "EXACT"
@@ -6176,721 +6176,721 @@
},
{
"addr": "0xd097fc",
- "ida_name": "asd_signal_status_check",
+ "ida_name": "sub_D097FC",
"name": "asd_signal_status_check",
"size": 178,
"tier": "EXACT"
},
{
"addr": "0xd098b0",
- "ida_name": "asd_pipe_lookup",
+ "ida_name": "sub_D098B0",
"name": "asd_pipe_lookup",
"size": 180,
"tier": "EXACT"
},
{
"addr": "0xd09968",
- "ida_name": "asd_reg_offsets_init_19600",
+ "ida_name": "sub_D09968",
"name": "asd_reg_offsets_init_19600",
"size": 358,
"tier": "EXACT"
},
{
"addr": "0xd09ad8",
- "ida_name": "asd_find_active_pipe",
+ "ida_name": "sub_D09AD8",
"name": "asd_find_active_pipe",
"size": 160,
"tier": "EXACT"
},
{
"addr": "0xd09b80",
- "ida_name": "asd_scan_pipe_regs",
+ "ida_name": "sub_D09B80",
"name": "asd_scan_pipe_regs",
"size": 278,
"tier": "EXACT"
},
{
"addr": "0xd09ca0",
- "ida_name": "asd_pipe_enable",
+ "ida_name": "sub_D09CA0",
"name": "asd_pipe_enable",
"size": 190,
"tier": "EXACT"
},
{
"addr": "0xd09d60",
- "ida_name": "asd_pipe_enable_48",
+ "ida_name": "sub_D09D60",
"name": "asd_pipe_enable_48",
"size": 196,
"tier": "EXACT"
},
{
"addr": "0xd09e24",
- "ida_name": "asd_set_reg425E4_mode",
+ "ida_name": "sub_D09E24",
"name": "asd_set_reg425E4_mode",
"size": 118,
"tier": "EXACT"
},
{
"addr": "0xd09ea0",
- "ida_name": "asd_set_reg42570_field",
+ "ida_name": "sub_D09EA0",
"name": "asd_set_reg42570_field",
"size": 68,
"tier": "EXACT"
},
{
"addr": "0xd09ee4",
- "ida_name": "asd_session_op57_invoke",
+ "ida_name": "sub_D09EE4",
"name": "asd_session_op57_invoke",
"size": 10,
"tier": "EXACT"
},
{
"addr": "0xd09ef0",
- "ida_name": "asd_set_key_blobs",
+ "ida_name": "sub_D09EF0",
"name": "asd_set_key_blobs",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd09f18",
- "ida_name": "asd_program_link_by_signal",
+ "ida_name": "sub_D09F18",
"name": "asd_program_link_by_signal",
"size": 790,
"tier": "EXACT"
},
{
"addr": "0xd0a238",
- "ida_name": "asd_program_link_by_signal_v2",
+ "ida_name": "sub_D0A238",
"name": "asd_program_link_by_signal_v2",
"size": 802,
"tier": "EXACT"
},
{
"addr": "0xd0a564",
- "ida_name": "asd_program_link_by_signal_v3",
+ "ida_name": "sub_D0A564",
"name": "asd_program_link_by_signal_v3",
"size": 784,
"tier": "EXACT"
},
{
"addr": "0xd0a87c",
- "ida_name": "asd_program_link_by_signal_v4",
+ "ida_name": "sub_D0A87C",
"name": "asd_program_link_by_signal_v4",
"size": 854,
"tier": "EXACT"
},
{
"addr": "0xd0abdc",
- "ida_name": "asd_program_link_by_signal_v5",
+ "ida_name": "sub_D0ABDC",
"name": "asd_program_link_by_signal_v5",
"size": 848,
"tier": "EXACT"
},
{
"addr": "0xd0af30",
- "ida_name": "asd_opt_cb_D423E4",
+ "ida_name": "sub_D0AF30",
"name": "asd_opt_cb_D423E4",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd0af44",
- "ida_name": "asd_get_link_caps_full_v2",
+ "ida_name": "sub_D0AF44",
"name": "asd_get_link_caps_full_v2",
"size": 764,
"tier": "EXACT"
},
{
"addr": "0xd0b248",
- "ida_name": "asd_get_link_caps_full_v3",
+ "ida_name": "sub_D0B248",
"name": "asd_get_link_caps_full_v3",
"size": 784,
"tier": "EXACT"
},
{
"addr": "0xd0b560",
- "ida_name": "asd_get_link_caps_full",
+ "ida_name": "sub_D0B560",
"name": "asd_get_link_caps_full",
"size": 696,
"tier": "EXACT"
},
{
"addr": "0xd0b81c",
- "ida_name": "asd_get_link_caps_full_v4",
+ "ida_name": "sub_D0B81C",
"name": "asd_get_link_caps_full_v4",
"size": 754,
"tier": "EXACT"
},
{
"addr": "0xd0bb14",
- "ida_name": "asd_get_link_caps_full_v5",
+ "ida_name": "sub_D0BB14",
"name": "asd_get_link_caps_full_v5",
"size": 754,
"tier": "EXACT"
},
{
"addr": "0xd0be08",
- "ida_name": "asd_reg_read_BE08",
+ "ida_name": "sub_D0BE08",
"name": "asd_reg_read_BE08",
"size": 100,
"tier": "EXACT"
},
{
"addr": "0xd0be70",
- "ida_name": "asd_read_link_pair",
+ "ida_name": "sub_D0BE70",
"name": "asd_read_link_pair",
"size": 82,
"tier": "EXACT"
},
{
"addr": "0xd0bec4",
- "ida_name": "asd_read_link_pair_idx",
+ "ida_name": "sub_D0BEC4",
"name": "asd_read_link_pair_idx",
"size": 96,
"tier": "EXACT"
},
{
"addr": "0xd0bf28",
- "ida_name": "asd_read_link_multi",
+ "ida_name": "sub_D0BF28",
"name": "asd_read_link_multi",
"size": 138,
"tier": "EXACT"
},
{
"addr": "0xd0bfb8",
- "ida_name": "asd_set_link_param_48",
+ "ida_name": "sub_D0BFB8",
"name": "asd_set_link_param_48",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd0bfe8",
- "ida_name": "asd_set_link_param_4C",
+ "ida_name": "sub_D0BFE8",
"name": "asd_set_link_param_4C",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd0c018",
- "ida_name": "asd_set_link_flag",
+ "ida_name": "sub_D0C018",
"name": "asd_set_link_flag",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd0c03c",
- "ida_name": "asd_set_link_param_40",
+ "ida_name": "sub_D0C03C",
"name": "asd_set_link_param_40",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd0c06c",
- "ida_name": "asd_set_link_param_44",
+ "ida_name": "sub_D0C06C",
"name": "asd_set_link_param_44",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd0c520",
- "ida_name": "asd_hwop_080_v1",
+ "ida_name": "sub_D0C520",
"name": "asd_hwop_080_v1",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd0c560",
- "ida_name": "asd_hwop_080_v3",
+ "ida_name": "sub_D0C560",
"name": "asd_hwop_080_v3",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd0c5a0",
- "ida_name": "asd_hwop_080_v0",
+ "ida_name": "sub_D0C5A0",
"name": "asd_hwop_080_v0",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd0c5e0",
- "ida_name": "asd_hwop_080_v2",
+ "ida_name": "sub_D0C5E0",
"name": "asd_hwop_080_v2",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd0c620",
- "ida_name": "asd_reg_read_C620",
+ "ida_name": "sub_D0C620",
"name": "asd_reg_read_C620",
"size": 220,
"tier": "EXACT"
},
{
"addr": "0xd0c704",
- "ida_name": "asd_reg_read_C704",
+ "ida_name": "sub_D0C704",
"name": "asd_reg_read_C704",
"size": 90,
"tier": "EXACT"
},
{
"addr": "0xd0c768",
- "ida_name": "asd_count_bits_below",
+ "ida_name": "sub_D0C768",
"name": "asd_count_bits_below",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd0c794",
- "ida_name": "asd_session_timeout_disable",
+ "ida_name": "sub_D0C794",
"name": "asd_session_timeout_disable",
"size": 10,
"tier": "EXACT"
},
{
"addr": "0xd0c7a4",
- "ida_name": "asd_op_1C0",
+ "ida_name": "sub_D0C7A4",
"name": "asd_op_1C0",
"size": 74,
"tier": "EXACT"
},
{
"addr": "0xd0c7f0",
- "ida_name": "asd_hdcp2_sub_C7F0",
+ "ida_name": "sub_D0C7F0",
"name": "asd_hdcp2_sub_C7F0",
"size": 314,
"tier": "EXACT"
},
{
"addr": "0xd0c930",
- "ida_name": "asd_link_sub_C930",
+ "ida_name": "sub_D0C930",
"name": "asd_link_sub_C930",
"size": 1926,
"tier": "EXACT"
},
{
"addr": "0xd0d0bc",
- "ida_name": "asd_topology_remove",
+ "ida_name": "sub_D0D0BC",
"name": "asd_topology_remove",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd0d0f4",
- "ida_name": "asd_validated_feature_enabled",
+ "ida_name": "sub_D0D0F4",
"name": "asd_validated_feature_enabled",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd0d114",
- "ida_name": "asd_validated_call_D111C8",
+ "ida_name": "sub_D0D114",
"name": "asd_validated_call_D111C8",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd0d134",
- "ida_name": "asd_topology_op_102",
+ "ida_name": "sub_D0D134",
"name": "asd_topology_op_102",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd0d154",
- "ida_name": "asd_validated_link_check",
+ "ida_name": "sub_D0D154",
"name": "asd_validated_link_check",
"size": 26,
"tier": "EXACT"
},
{
"addr": "0xd0d170",
- "ida_name": "asd_get_link_info",
+ "ida_name": "sub_D0D170",
"name": "asd_get_link_info",
"size": 72,
"tier": "EXACT"
},
{
"addr": "0xd0d1b8",
- "ida_name": "asd_hdcp2_op_1A9",
+ "ida_name": "sub_D0D1B8",
"name": "asd_hdcp2_op_1A9",
"size": 176,
"tier": "EXACT"
},
{
"addr": "0xd0d26c",
- "ida_name": "asd_session_open",
+ "ida_name": "sub_D0D26C",
"name": "asd_session_open",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd0d28c",
- "ida_name": "asd_validated_call_D11348",
+ "ida_name": "sub_D0D28C",
"name": "asd_validated_call_D11348",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd0d2ac",
- "ida_name": "asd_build_link_ops",
+ "ida_name": "sub_D0D2AC",
"name": "asd_build_link_ops",
"size": 6950,
"tier": "EXACT"
},
{
"addr": "0xd0f114",
- "ida_name": "asd_ddc_aux_transact",
+ "ida_name": "sub_D0F114",
"name": "asd_ddc_aux_transact",
"size": 328,
"tier": "EXACT"
},
{
"addr": "0xd0f25c",
- "ida_name": "asd_hdcp1_op_18B",
+ "ida_name": "sub_D0F25C",
"name": "asd_hdcp1_op_18B",
"size": 80,
"tier": "EXACT"
},
{
"addr": "0xd0f2ac",
- "ida_name": "asd_hdcp1_read_ri",
+ "ida_name": "sub_D0F2AC",
"name": "asd_hdcp1_read_ri",
"size": 88,
"tier": "EXACT"
},
{
"addr": "0xd0f304",
- "ida_name": "asd_hdcp1_disable",
+ "ida_name": "sub_D0F304",
"name": "asd_hdcp1_disable",
"size": 276,
"tier": "EXACT"
},
{
"addr": "0xd0f418",
- "ida_name": "asd_hdcp1_enable_encryption",
+ "ida_name": "sub_D0F418",
"name": "asd_hdcp1_enable_encryption",
"size": 164,
"tier": "EXACT"
},
{
"addr": "0xd0f4c0",
- "ida_name": "asd_hdcp1_enable_stream_enc",
+ "ida_name": "sub_D0F4C0",
"name": "asd_hdcp1_enable_stream_enc",
"size": 166,
"tier": "EXACT"
},
{
"addr": "0xd0f56c",
- "ida_name": "asd_hdcp1_init",
+ "ida_name": "sub_D0F56C",
"name": "asd_hdcp1_init",
"size": 216,
"tier": "EXACT"
},
{
"addr": "0xd0f648",
- "ida_name": "asd_hdcp1_read_caps",
+ "ida_name": "sub_D0F648",
"name": "asd_hdcp1_read_caps",
"size": 90,
"tier": "EXACT"
},
{
"addr": "0xd0f6a8",
- "ida_name": "asd_hdcp1_setup",
+ "ida_name": "sub_D0F6A8",
"name": "asd_hdcp1_setup",
"size": 90,
"tier": "EXACT"
},
{
"addr": "0xd0f704",
- "ida_name": "asd_hdcp1_read_bksv",
+ "ida_name": "sub_D0F704",
"name": "asd_hdcp1_read_bksv",
"size": 90,
"tier": "EXACT"
},
{
"addr": "0xd0f764",
- "ida_name": "asd_hdcp1_teardown",
+ "ida_name": "sub_D0F764",
"name": "asd_hdcp1_teardown",
"size": 220,
"tier": "EXACT"
},
{
"addr": "0xd0f840",
- "ida_name": "asd_hdcp1_write_an",
+ "ida_name": "sub_D0F840",
"name": "asd_hdcp1_write_an",
"size": 100,
"tier": "EXACT"
},
{
"addr": "0xd0f8a8",
- "ida_name": "asd_hdcp1_compute_ri",
+ "ida_name": "sub_D0F8A8",
"name": "asd_hdcp1_compute_ri",
"size": 90,
"tier": "EXACT"
},
{
"addr": "0xd0f904",
- "ida_name": "asd_hdcp1_write_v",
+ "ida_name": "sub_D0F904",
"name": "asd_hdcp1_write_v",
"size": 86,
"tier": "EXACT"
},
{
"addr": "0xd0f960",
- "ida_name": "asd_hdcp1_verify_v",
+ "ida_name": "sub_D0F960",
"name": "asd_hdcp1_verify_v",
"size": 182,
"tier": "EXACT"
},
{
"addr": "0xd0fa1c",
- "ida_name": "asd_hdcp2_set_topology",
+ "ida_name": "sub_D0FA1C",
"name": "asd_hdcp2_set_topology",
"size": 344,
"tier": "EXACT"
},
{
"addr": "0xd0fb7c",
- "ida_name": "asd_hdcp2_sub_FB7C",
+ "ida_name": "sub_D0FB7C",
"name": "asd_hdcp2_sub_FB7C",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd0fbec",
- "ida_name": "asd_hdcp2_disable",
+ "ida_name": "sub_D0FBEC",
"name": "asd_hdcp2_disable",
"size": 304,
"tier": "EXACT"
},
{
"addr": "0xd0fd1c",
- "ida_name": "asd_hdcp2_msg_state",
+ "ida_name": "sub_D0FD1C",
"name": "asd_hdcp2_msg_state",
"size": 246,
"tier": "EXACT"
},
{
"addr": "0xd0fe14",
- "ida_name": "asd_hdcp2_enable_stream_enc",
+ "ida_name": "sub_D0FE14",
"name": "asd_hdcp2_enable_stream_enc",
"size": 148,
"tier": "EXACT"
},
{
"addr": "0xd0feac",
- "ida_name": "asd_hdcp2_stream_manage",
+ "ida_name": "sub_D0FEAC",
"name": "asd_hdcp2_stream_manage",
"size": 136,
"tier": "EXACT"
},
{
"addr": "0xd0ff34",
- "ida_name": "asd_feature15_query_D44134",
+ "ida_name": "sub_D0FF34",
"name": "asd_feature15_query_D44134",
"size": 66,
"tier": "EXACT"
},
{
"addr": "0xd0ff7c",
- "ida_name": "asd_hdcp2_init",
+ "ida_name": "sub_D0FF7C",
"name": "asd_hdcp2_init",
"size": 176,
"tier": "EXACT"
},
{
"addr": "0xd1002c",
- "ida_name": "asd_hdcp2_teardown",
+ "ida_name": "sub_D1002C",
"name": "asd_hdcp2_teardown",
"size": 124,
"tier": "EXACT"
},
{
"addr": "0xd100a8",
- "ida_name": "asd_hdcp2_set_caps",
+ "ida_name": "sub_D100A8",
"name": "asd_hdcp2_set_caps",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd100d8",
- "ida_name": "asd_hdcp2_set_receiver_id",
+ "ida_name": "sub_D100D8",
"name": "asd_hdcp2_set_receiver_id",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd1010c",
- "ida_name": "asd_query_type_6_7",
+ "ida_name": "sub_D1010C",
"name": "asd_query_type_6_7",
"size": 70,
"tier": "EXACT"
},
{
"addr": "0xd10154",
- "ida_name": "asd_hdcp2_sub_10154",
+ "ida_name": "sub_D10154",
"name": "asd_hdcp2_sub_10154",
"size": 222,
"tier": "EXACT"
},
{
"addr": "0xd10234",
- "ida_name": "asd_get_link_status",
+ "ida_name": "sub_D10234",
"name": "asd_get_link_status",
"size": 78,
"tier": "EXACT"
},
{
"addr": "0xd10284",
- "ida_name": "asd_link_reset",
+ "ida_name": "sub_D10284",
"name": "asd_link_reset",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd102b8",
- "ida_name": "asd_link_ops_init",
+ "ida_name": "sub_D102B8",
"name": "asd_link_ops_init",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd102f4",
- "ida_name": "asd_feature15_call_D44124",
+ "ida_name": "sub_D102F4",
"name": "asd_feature15_call_D44124",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd10334",
- "ida_name": "asd_feature15_query2",
+ "ida_name": "sub_D10334",
"name": "asd_feature15_query2",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd103a0",
- "ida_name": "asd_feature15_query3",
+ "ida_name": "sub_D103A0",
"name": "asd_feature15_query3",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd10414",
- "ida_name": "asd_feature15_query4",
+ "ida_name": "sub_D10414",
"name": "asd_feature15_query4",
"size": 134,
"tier": "EXACT"
},
{
"addr": "0xd104a0",
- "ida_name": "asd_foreach_link_active",
+ "ida_name": "sub_D104A0",
"name": "asd_foreach_link_active",
"size": 66,
"tier": "EXACT"
},
{
"addr": "0xd104e8",
- "ida_name": "asd_hdcp2_op_1AA",
+ "ida_name": "sub_D104E8",
"name": "asd_hdcp2_op_1AA",
"size": 300,
"tier": "EXACT"
},
{
"addr": "0xd1061c",
- "ida_name": "asd_topology_update",
+ "ida_name": "sub_D1061C",
"name": "asd_topology_update",
"size": 248,
"tier": "EXACT"
},
{
"addr": "0xd10718",
- "ida_name": "asd_session_op57",
+ "ida_name": "sub_D10718",
"name": "asd_session_op57",
"size": 16,
"tier": "EXACT"
},
{
"addr": "0xd10730",
- "ida_name": "j_sub_D10800",
+ "ida_name": "sub_D10730",
"name": "j_sub_D10800",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd10734",
- "ida_name": "asd_set_unk_D33328_cfg0",
+ "ida_name": "sub_D10734",
"name": "asd_set_unk_D33328_cfg0",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd10744",
- "ida_name": "asd_reg_read_10744",
+ "ida_name": "sub_D10744",
"name": "asd_reg_read_10744",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd10778",
- "ida_name": "asd_hwop_090_v0",
+ "ida_name": "sub_D10778",
"name": "asd_hwop_090_v0",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd107b8",
- "ida_name": "j_sub_D10800_0",
+ "ida_name": "sub_D107B8",
"name": "j_sub_D10800_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd107bc",
- "ida_name": "asd_set_unk_D33328_cfg1",
+ "ida_name": "sub_D107BC",
"name": "asd_set_unk_D33328_cfg1",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd107d0",
- "ida_name": "j_sub_D10800_1",
+ "ida_name": "sub_D107D0",
"name": "j_sub_D10800_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd107d4",
- "ida_name": "asd_set_unk_D33328_cfg2",
+ "ida_name": "sub_D107D4",
"name": "asd_set_unk_D33328_cfg2",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd107e8",
- "ida_name": "j_sub_D10800_2",
+ "ida_name": "sub_D107E8",
"name": "j_sub_D10800_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd107ec",
- "ida_name": "asd_set_unk_D33328_cfg3",
+ "ida_name": "sub_D107EC",
"name": "asd_set_unk_D33328_cfg3",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd10800",
- "ida_name": "asd_reg_read_10800",
+ "ida_name": "sub_D10800",
"name": "asd_reg_read_10800",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd10834",
- "ida_name": "asd_set_unk_D33328",
+ "ida_name": "sub_D10834",
"name": "asd_set_unk_D33328",
"size": 16,
"tier": "EXACT"
@@ -6911,308 +6911,308 @@
},
{
"addr": "0xd108d0",
- "ida_name": "asd_hwop_070_v1",
+ "ida_name": "sub_D108D0",
"name": "asd_hwop_070_v1",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd10910",
- "ida_name": "asd_hwop_070_v0",
+ "ida_name": "sub_D10910",
"name": "asd_hwop_070_v0",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd10958",
- "ida_name": "asd_tbl_get_D423CC",
+ "ida_name": "sub_D10958",
"name": "asd_tbl_get_D423CC",
"size": 24,
"tier": "EXACT"
},
{
"addr": "0xd10970",
- "ida_name": "asd_tbl_get_D423C8",
+ "ida_name": "sub_D10970",
"name": "asd_tbl_get_D423C8",
"size": 24,
"tier": "EXACT"
},
{
"addr": "0xd10988",
- "ida_name": "asd_tbl_get_D4238C",
+ "ida_name": "sub_D10988",
"name": "asd_tbl_get_D4238C",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd109a0",
- "ida_name": "asd_tbl_get_D423D8",
+ "ida_name": "sub_D109A0",
"name": "asd_tbl_get_D423D8",
"size": 24,
"tier": "EXACT"
},
{
"addr": "0xd109b8",
- "ida_name": "asd_tbl_get_D423DC",
+ "ida_name": "sub_D109B8",
"name": "asd_tbl_get_D423DC",
"size": 24,
"tier": "EXACT"
},
{
"addr": "0xd109d0",
- "ida_name": "asd_tbl_get_D423E0",
+ "ida_name": "sub_D109D0",
"name": "asd_tbl_get_D423E0",
"size": 24,
"tier": "EXACT"
},
{
"addr": "0xd109e8",
- "ida_name": "asd_tbl_get_D423D0",
+ "ida_name": "sub_D109E8",
"name": "asd_tbl_get_D423D0",
"size": 24,
"tier": "EXACT"
},
{
"addr": "0xd10a00",
- "ida_name": "asd_tbl_get_D423A8",
+ "ida_name": "sub_D10A00",
"name": "asd_tbl_get_D423A8",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd10a18",
- "ida_name": "asd_tbl_get_D423AC",
+ "ida_name": "sub_D10A18",
"name": "asd_tbl_get_D423AC",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd10a30",
- "ida_name": "asd_tbl_get_D423B8",
+ "ida_name": "sub_D10A30",
"name": "asd_tbl_get_D423B8",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd10a48",
- "ida_name": "asd_tbl_get_D423B4",
+ "ida_name": "sub_D10A48",
"name": "asd_tbl_get_D423B4",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd10a60",
- "ida_name": "asd_tbl_get_D423BC",
+ "ida_name": "sub_D10A60",
"name": "asd_tbl_get_D423BC",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd10a78",
- "ida_name": "asd_lookup_by_class",
+ "ida_name": "sub_D10A78",
"name": "asd_lookup_by_class",
"size": 62,
"tier": "EXACT"
},
{
"addr": "0xd10ab8",
- "ida_name": "asd_memcpy_cfg0",
+ "ida_name": "sub_D10AB8",
"name": "asd_memcpy_cfg0",
"size": 34,
"tier": "EXACT"
},
{
"addr": "0xd10ae4",
- "ida_name": "asd_tbl_get_D423C0",
+ "ida_name": "sub_D10AE4",
"name": "asd_tbl_get_D423C0",
"size": 24,
"tier": "EXACT"
},
{
"addr": "0xd10afc",
- "ida_name": "asd_tbl_get_D423C4",
+ "ida_name": "sub_D10AFC",
"name": "asd_tbl_get_D423C4",
"size": 24,
"tier": "EXACT"
},
{
"addr": "0xd10b14",
- "ida_name": "asd_tbl_get_D423B0",
+ "ida_name": "sub_D10B14",
"name": "asd_tbl_get_D423B0",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd10b30",
- "ida_name": "asd_srm_sub_10B30",
+ "ida_name": "sub_D10B30",
"name": "asd_srm_sub_10B30",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd10b48",
- "ida_name": "asd_build_reg_addr_table_v2",
+ "ida_name": "sub_D10B48",
"name": "asd_build_reg_addr_table_v2",
"size": 346,
"tier": "EXACT"
},
{
"addr": "0xd10d08",
- "ida_name": "asd_build_reg_addr_table",
+ "ida_name": "sub_D10D08",
"name": "asd_build_reg_addr_table",
"size": 236,
"tier": "EXACT"
},
{
"addr": "0xd10e34",
- "ida_name": "asd_table_find",
+ "ida_name": "sub_D10E34",
"name": "asd_table_find",
"size": 316,
"tier": "EXACT"
},
{
"addr": "0xd11068",
- "ida_name": "asd_hwop_07C_v1",
+ "ida_name": "sub_D11068",
"name": "asd_hwop_07C_v1",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd110a8",
- "ida_name": "asd_hwop_07C_v0",
+ "ida_name": "sub_D110A8",
"name": "asd_hwop_07C_v0",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd110e8",
- "ida_name": "j_sub_D02794",
+ "ida_name": "sub_D110E8",
"name": "j_sub_D02794",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd110ec",
- "ida_name": "asd_svc_sub_110EC",
+ "ida_name": "sub_D110EC",
"name": "asd_svc_sub_110EC",
"size": 88,
"tier": "EXACT"
},
{
"addr": "0xd1114c",
- "ida_name": "asd_link_op_if_supported",
+ "ida_name": "sub_D1114C",
"name": "asd_link_op_if_supported",
"size": 50,
"tier": "EXACT"
},
{
"addr": "0xd11188",
- "ida_name": "asd_feature_enabled_cfg0",
+ "ida_name": "sub_D11188",
"name": "asd_feature_enabled_cfg0",
"size": 64,
"tier": "EXACT"
},
{
"addr": "0xd111c8",
- "ida_name": "asd_resolve_link_parent",
+ "ida_name": "sub_D111C8",
"name": "asd_resolve_link_parent",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd11238",
- "ida_name": "asd_topo_sub_11238",
+ "ida_name": "sub_D11238",
"name": "asd_topo_sub_11238",
"size": 98,
"tier": "EXACT"
},
{
"addr": "0xd1129c",
- "ida_name": "asd_link_check_C930",
+ "ida_name": "sub_D1129C",
"name": "asd_link_check_C930",
"size": 72,
"tier": "EXACT"
},
{
"addr": "0xd112e4",
- "ida_name": "asd_get_link_caps",
+ "ida_name": "sub_D112E4",
"name": "asd_get_link_caps",
"size": 98,
"tier": "EXACT"
},
{
"addr": "0xd11348",
- "ida_name": "asd_get_link_state",
+ "ida_name": "sub_D11348",
"name": "asd_get_link_state",
"size": 84,
"tier": "EXACT"
},
{
"addr": "0xd113a0",
- "ida_name": "asd_link_sub_113A0",
+ "ida_name": "sub_D113A0",
"name": "asd_link_sub_113A0",
"size": 576,
"tier": "EXACT"
},
{
"addr": "0xd115e4",
- "ida_name": "asd_feature_provider_select",
+ "ida_name": "sub_D115E4",
"name": "asd_feature_provider_select",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd11670",
- "ida_name": "asd_feature_block_init",
+ "ida_name": "sub_D11670",
"name": "asd_feature_block_init",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd116ac",
- "ida_name": "asd_feature_enabled",
+ "ida_name": "sub_D116AC",
"name": "asd_feature_enabled",
"size": 64,
"tier": "EXACT"
},
{
"addr": "0xd116ec",
- "ida_name": "asd_feature_level_check",
+ "ida_name": "sub_D116EC",
"name": "asd_feature_level_check",
"size": 66,
"tier": "EXACT"
},
{
"addr": "0xd11734",
- "ida_name": "asd_align_map_range",
+ "ida_name": "sub_D11734",
"name": "asd_align_map_range",
"size": 204,
"tier": "EXACT"
},
{
"addr": "0xd11804",
- "ida_name": "asd_compute_dram_window",
+ "ida_name": "sub_D11804",
"name": "asd_compute_dram_window",
"size": 748,
"tier": "EXACT"
},
{
"addr": "0xd11b00",
- "ida_name": "asd_reg_read_11B00",
+ "ida_name": "sub_D11B00",
"name": "asd_reg_read_11B00",
"size": 228,
"tier": "EXACT"
},
{
"addr": "0xd11be4",
- "ida_name": "asd_reg_read_11BE4",
+ "ida_name": "sub_D11BE4",
"name": "asd_reg_read_11BE4",
"size": 228,
"tier": "EXACT"
},
{
"addr": "0xd11ccc",
- "ida_name": "asd_is_supported_asic",
+ "ida_name": "sub_D11CCC",
"name": "asd_is_supported_asic",
"size": 86,
"tier": "EXACT"
@@ -7233,28 +7233,28 @@
},
{
"addr": "0xd11d44",
- "ida_name": "asd_hwop_074_v1",
+ "ida_name": "sub_D11D44",
"name": "asd_hwop_074_v1",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd11d84",
- "ida_name": "asd_hwop_074_v0",
+ "ida_name": "sub_D11D84",
"name": "asd_hwop_074_v0",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd11dcc",
- "ida_name": "j_sub_D12128",
+ "ida_name": "sub_D11DCC",
"name": "j_sub_D12128",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd11dd0",
- "ida_name": "asd_set_pair_D49838_cfg0",
+ "ida_name": "sub_D11DD0",
"name": "asd_set_pair_D49838_cfg0",
"size": 18,
"tier": "EXACT"
@@ -7268,14 +7268,14 @@
},
{
"addr": "0xd11e28",
- "ida_name": "j_sub_D12128_0",
+ "ida_name": "sub_D11E28",
"name": "j_sub_D12128_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd11e2c",
- "ida_name": "asd_set_pair_D49838_cfg1",
+ "ida_name": "sub_D11E2C",
"name": "asd_set_pair_D49838_cfg1",
"size": 18,
"tier": "EXACT"
@@ -7317,245 +7317,245 @@
},
{
"addr": "0xd11f84",
- "ida_name": "j_sub_D12128_1",
+ "ida_name": "sub_D11F84",
"name": "j_sub_D12128_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd11f88",
- "ida_name": "asd_set_pair_D49838_cfg2",
+ "ida_name": "sub_D11F88",
"name": "asd_set_pair_D49838_cfg2",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd11f9c",
- "ida_name": "j_sub_D12128_2",
+ "ida_name": "sub_D11F9C",
"name": "j_sub_D12128_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd11fa0",
- "ida_name": "asd_set_pair_D49838_cfg3",
+ "ida_name": "sub_D11FA0",
"name": "asd_set_pair_D49838_cfg3",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd11fb4",
- "ida_name": "j_sub_D12128_3",
+ "ida_name": "sub_D11FB4",
"name": "j_sub_D12128_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd11fb8",
- "ida_name": "asd_set_pair_D49838_cfg4",
+ "ida_name": "sub_D11FB8",
"name": "asd_set_pair_D49838_cfg4",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd11fcc",
- "ida_name": "j_sub_D12128_4",
+ "ida_name": "sub_D11FCC",
"name": "j_sub_D12128_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd11fd0",
- "ida_name": "asd_mmio_32000C4_rmw",
+ "ida_name": "sub_D11FD0",
"name": "asd_mmio_32000C4_rmw",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd11fe8",
- "ida_name": "asd_set_pair_D49838_cfg5",
+ "ida_name": "sub_D11FE8",
"name": "asd_set_pair_D49838_cfg5",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd11ffc",
- "ida_name": "j_sub_D12128_5",
+ "ida_name": "sub_D11FFC",
"name": "j_sub_D12128_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd12000",
- "ida_name": "asd_set_pair_D49838_cfg6",
+ "ida_name": "sub_D12000",
"name": "asd_set_pair_D49838_cfg6",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd12014",
- "ida_name": "j_sub_D12128_6",
+ "ida_name": "sub_D12014",
"name": "j_sub_D12128_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd12018",
- "ida_name": "asd_set_pair_D49838_cfg7",
+ "ida_name": "sub_D12018",
"name": "asd_set_pair_D49838_cfg7",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd1202c",
- "ida_name": "j_sub_D12128_7",
+ "ida_name": "sub_D1202C",
"name": "j_sub_D12128_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd12030",
- "ida_name": "asd_set_pair_D49838_cfg8",
+ "ida_name": "sub_D12030",
"name": "asd_set_pair_D49838_cfg8",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd12044",
- "ida_name": "j_sub_D12128_8",
+ "ida_name": "sub_D12044",
"name": "j_sub_D12128_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd12048",
- "ida_name": "asd_set_pair_D49838_cfg9",
+ "ida_name": "sub_D12048",
"name": "asd_set_pair_D49838_cfg9",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd1205c",
- "ida_name": "j_sub_D12128_9",
+ "ida_name": "sub_D1205C",
"name": "j_sub_D12128_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd12060",
- "ida_name": "asd_set_pair_D49838_cfg10",
+ "ida_name": "sub_D12060",
"name": "asd_set_pair_D49838_cfg10",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd12074",
- "ida_name": "j_sub_D12128_10",
+ "ida_name": "sub_D12074",
"name": "j_sub_D12128_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd12078",
- "ida_name": "asd_set_pair_D49838_cfg11",
+ "ida_name": "sub_D12078",
"name": "asd_set_pair_D49838_cfg11",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd1208c",
- "ida_name": "j_sub_D12128_11",
+ "ida_name": "sub_D1208C",
"name": "j_sub_D12128_11",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd12090",
- "ida_name": "asd_set_pair_D49838_cfg12",
+ "ida_name": "sub_D12090",
"name": "asd_set_pair_D49838_cfg12",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd120a4",
- "ida_name": "j_sub_D12128_12",
+ "ida_name": "sub_D120A4",
"name": "j_sub_D12128_12",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd120a8",
- "ida_name": "asd_set_pair_D49838_cfg13",
+ "ida_name": "sub_D120A8",
"name": "asd_set_pair_D49838_cfg13",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd120c0",
- "ida_name": "j_sub_D12128_13",
+ "ida_name": "sub_D120C0",
"name": "j_sub_D12128_13",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd120c4",
- "ida_name": "asd_set_pair_D49838_cfg14",
+ "ida_name": "sub_D120C4",
"name": "asd_set_pair_D49838_cfg14",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd120d8",
- "ida_name": "j_sub_D12128_14",
+ "ida_name": "sub_D120D8",
"name": "j_sub_D12128_14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd120dc",
- "ida_name": "asd_set_pair_D49838_cfg15",
+ "ida_name": "sub_D120DC",
"name": "asd_set_pair_D49838_cfg15",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd120f0",
- "ida_name": "j_sub_D12128_15",
+ "ida_name": "sub_D120F0",
"name": "j_sub_D12128_15",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd120f4",
- "ida_name": "asd_set_pair_D49838_cfg16",
+ "ida_name": "sub_D120F4",
"name": "asd_set_pair_D49838_cfg16",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd1210c",
- "ida_name": "j_sub_D12128_16",
+ "ida_name": "sub_D1210C",
"name": "j_sub_D12128_16",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd12110",
- "ida_name": "asd_set_pair_D49838_cfg17",
+ "ida_name": "sub_D12110",
"name": "asd_set_pair_D49838_cfg17",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd12128",
- "ida_name": "asd_get_pair_D49838",
+ "ida_name": "sub_D12128",
"name": "asd_get_pair_D49838",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd1213c",
- "ida_name": "asd_set_pair_D49838",
+ "ida_name": "sub_D1213C",
"name": "asd_set_pair_D49838",
"size": 20,
"tier": "EXACT"
@@ -7569,35 +7569,35 @@
},
{
"addr": "0xd12178",
- "ida_name": "asd_reg_read_12218_cfg0",
+ "ida_name": "sub_D12178",
"name": "asd_reg_read_12218_cfg0",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd1217e",
- "ida_name": "asd_reg_read_1217E",
+ "ida_name": "sub_D1217E",
"name": "asd_reg_read_1217E",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd1218a",
- "ida_name": "asd_cfg_D12268_a",
+ "ida_name": "sub_D1218A",
"name": "asd_cfg_D12268_a",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd121ae",
- "ida_name": "asd_reg_read_12218_cfg1",
+ "ida_name": "sub_D121AE",
"name": "asd_reg_read_12218_cfg1",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd121b4",
- "ida_name": "asd_reg_read_121B4",
+ "ida_name": "sub_D121B4",
"name": "asd_reg_read_121B4",
"size": 38,
"tier": "EXACT"
@@ -7611,14 +7611,14 @@
},
{
"addr": "0xd121f4",
- "ida_name": "asd_cfg_D12268_b",
+ "ida_name": "sub_D121F4",
"name": "asd_cfg_D12268_b",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd12218",
- "ida_name": "asd_reg_read_12218",
+ "ida_name": "sub_D12218",
"name": "asd_reg_read_12218",
"size": 78,
"tier": "EXACT"
@@ -7632,315 +7632,315 @@
},
{
"addr": "0xd1228c",
- "ida_name": "asd_reg_read_12688_cfg0",
+ "ida_name": "sub_D1228C",
"name": "asd_reg_read_12688_cfg0",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12292",
- "ida_name": "asd_set_display_params_cfg0",
+ "ida_name": "sub_D12292",
"name": "asd_set_display_params_cfg0",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd122b6",
- "ida_name": "asd_reg_read_12688_cfg1",
+ "ida_name": "sub_D122B6",
"name": "asd_reg_read_12688_cfg1",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd122bc",
- "ida_name": "asd_set_display_params_cfg1",
+ "ida_name": "sub_D122BC",
"name": "asd_set_display_params_cfg1",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd122e0",
- "ida_name": "asd_reg_read_12688_cfg2",
+ "ida_name": "sub_D122E0",
"name": "asd_reg_read_12688_cfg2",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd122e6",
- "ida_name": "asd_set_display_params_cfg2",
+ "ida_name": "sub_D122E6",
"name": "asd_set_display_params_cfg2",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd1230a",
- "ida_name": "asd_reg_read_12688_cfg3",
+ "ida_name": "sub_D1230A",
"name": "asd_reg_read_12688_cfg3",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12310",
- "ida_name": "asd_set_display_params_cfg3",
+ "ida_name": "sub_D12310",
"name": "asd_set_display_params_cfg3",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd12334",
- "ida_name": "asd_reg_read_12688_cfg4",
+ "ida_name": "sub_D12334",
"name": "asd_reg_read_12688_cfg4",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd1233a",
- "ida_name": "asd_set_display_params_cfg4",
+ "ida_name": "sub_D1233A",
"name": "asd_set_display_params_cfg4",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd1235e",
- "ida_name": "asd_reg_read_12688_cfg5",
+ "ida_name": "sub_D1235E",
"name": "asd_reg_read_12688_cfg5",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12364",
- "ida_name": "asd_set_display_params_cfg5",
+ "ida_name": "sub_D12364",
"name": "asd_set_display_params_cfg5",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd12388",
- "ida_name": "asd_reg_read_12688_cfg6",
+ "ida_name": "sub_D12388",
"name": "asd_reg_read_12688_cfg6",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd1238e",
- "ida_name": "asd_set_display_params_cfg6",
+ "ida_name": "sub_D1238E",
"name": "asd_set_display_params_cfg6",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd123b2",
- "ida_name": "asd_reg_read_12688_cfg7",
+ "ida_name": "sub_D123B2",
"name": "asd_reg_read_12688_cfg7",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd123b8",
- "ida_name": "asd_set_display_params_cfg7",
+ "ida_name": "sub_D123B8",
"name": "asd_set_display_params_cfg7",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd123dc",
- "ida_name": "asd_reg_read_12688_cfg8",
+ "ida_name": "sub_D123DC",
"name": "asd_reg_read_12688_cfg8",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd123e2",
- "ida_name": "asd_set_display_params_cfg8",
+ "ida_name": "sub_D123E2",
"name": "asd_set_display_params_cfg8",
"size": 46,
"tier": "EXACT"
},
{
"addr": "0xd12410",
- "ida_name": "asd_reg_read_12688_cfg9",
+ "ida_name": "sub_D12410",
"name": "asd_reg_read_12688_cfg9",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12416",
- "ida_name": "asd_set_display_params_cfg9",
+ "ida_name": "sub_D12416",
"name": "asd_set_display_params_cfg9",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd1243a",
- "ida_name": "asd_reg_read_12688_cfg10",
+ "ida_name": "sub_D1243A",
"name": "asd_reg_read_12688_cfg10",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12440",
- "ida_name": "asd_set_display_params_cfg10",
+ "ida_name": "sub_D12440",
"name": "asd_set_display_params_cfg10",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd12460",
- "ida_name": "asd_reg_read_12688_cfg11",
+ "ida_name": "sub_D12460",
"name": "asd_reg_read_12688_cfg11",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12468",
- "ida_name": "asd_set_display_params_cfg11",
+ "ida_name": "sub_D12468",
"name": "asd_set_display_params_cfg11",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd12488",
- "ida_name": "asd_reg_read_12688_cfg12",
+ "ida_name": "sub_D12488",
"name": "asd_reg_read_12688_cfg12",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12490",
- "ida_name": "asd_set_display_params_cfg12",
+ "ida_name": "sub_D12490",
"name": "asd_set_display_params_cfg12",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd124b0",
- "ida_name": "asd_reg_read_12688_cfg13",
+ "ida_name": "sub_D124B0",
"name": "asd_reg_read_12688_cfg13",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd124b8",
- "ida_name": "asd_set_display_params_cfg13",
+ "ida_name": "sub_D124B8",
"name": "asd_set_display_params_cfg13",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd124d8",
- "ida_name": "asd_reg_read_12688_cfg14",
+ "ida_name": "sub_D124D8",
"name": "asd_reg_read_12688_cfg14",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd124de",
- "ida_name": "asd_set_display_params_cfg14",
+ "ida_name": "sub_D124DE",
"name": "asd_set_display_params_cfg14",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd12502",
- "ida_name": "asd_reg_read_12688_cfg15",
+ "ida_name": "sub_D12502",
"name": "asd_reg_read_12688_cfg15",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12508",
- "ida_name": "asd_set_display_params_cfg15",
+ "ida_name": "sub_D12508",
"name": "asd_set_display_params_cfg15",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd12528",
- "ida_name": "asd_reg_read_12688_cfg16",
+ "ida_name": "sub_D12528",
"name": "asd_reg_read_12688_cfg16",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12530",
- "ida_name": "asd_set_display_params_cfg16",
+ "ida_name": "sub_D12530",
"name": "asd_set_display_params_cfg16",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd12554",
- "ida_name": "asd_hwop_084_v1",
+ "ida_name": "sub_D12554",
"name": "asd_hwop_084_v1",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd1259c",
- "ida_name": "asd_reg_read_12688_cfg17",
+ "ida_name": "sub_D1259C",
"name": "asd_reg_read_12688_cfg17",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd125a2",
- "ida_name": "asd_set_display_params_cfg17",
+ "ida_name": "sub_D125A2",
"name": "asd_set_display_params_cfg17",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd125c8",
- "ida_name": "asd_hwop_084_v0",
+ "ida_name": "sub_D125C8",
"name": "asd_hwop_084_v0",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd12608",
- "ida_name": "asd_reg_read_12688_cfg18",
+ "ida_name": "sub_D12608",
"name": "asd_reg_read_12688_cfg18",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12610",
- "ida_name": "asd_set_display_params_cfg18",
+ "ida_name": "sub_D12610",
"name": "asd_set_display_params_cfg18",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd12630",
- "ida_name": "asd_reg_read_12688_cfg19",
+ "ida_name": "sub_D12630",
"name": "asd_reg_read_12688_cfg19",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12638",
- "ida_name": "asd_set_display_params_cfg19",
+ "ida_name": "sub_D12638",
"name": "asd_set_display_params_cfg19",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd1265c",
- "ida_name": "asd_reg_read_12688_cfg20",
+ "ida_name": "sub_D1265C",
"name": "asd_reg_read_12688_cfg20",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd12662",
- "ida_name": "asd_set_display_params_cfg20",
+ "ida_name": "sub_D12662",
"name": "asd_set_display_params_cfg20",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd12688",
- "ida_name": "asd_reg_read_12688",
+ "ida_name": "sub_D12688",
"name": "asd_reg_read_12688",
"size": 80,
"tier": "EXACT"
@@ -7954,56 +7954,56 @@
},
{
"addr": "0xd126fc",
- "ida_name": "asd_hwop_098_v0",
+ "ida_name": "sub_D126FC",
"name": "asd_hwop_098_v0",
"size": 8,
"tier": "EXACT"
},
{
"addr": "0xd12704",
- "ida_name": "asd_get_pipe_count",
+ "ida_name": "sub_D12704",
"name": "asd_get_pipe_count",
"size": 166,
"tier": "EXACT"
},
{
"addr": "0xd127ac",
- "ida_name": "asd_pipe_scan",
+ "ida_name": "sub_D127AC",
"name": "asd_pipe_scan",
"size": 124,
"tier": "EXACT"
},
{
"addr": "0xd12828",
- "ida_name": "asd_reset_pipe_regs",
+ "ida_name": "sub_D12828",
"name": "asd_reset_pipe_regs",
"size": 68,
"tier": "EXACT"
},
{
"addr": "0xd1286c",
- "ida_name": "asd_get_stream_key_v2",
+ "ida_name": "sub_D1286C",
"name": "asd_get_stream_key_v2",
"size": 216,
"tier": "EXACT"
},
{
"addr": "0xd12948",
- "ida_name": "asd_set_pipe_config",
+ "ida_name": "sub_D12948",
"name": "asd_set_pipe_config",
"size": 98,
"tier": "EXACT"
},
{
"addr": "0xd129d4",
- "ida_name": "asd_reg_read_129D4",
+ "ida_name": "sub_D129D4",
"name": "asd_reg_read_129D4",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd12a14",
- "ida_name": "asd_irq_task_D42790",
+ "ida_name": "sub_D12A14",
"name": "asd_irq_task_D42790",
"size": 28,
"tier": "EXACT"
@@ -8031,329 +8031,329 @@
},
{
"addr": "0xd12ad8",
- "ida_name": "asd_reg_write_12C28_cfg0",
+ "ida_name": "sub_D12AD8",
"name": "asd_reg_write_12C28_cfg0",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd12b08",
- "ida_name": "asd_reg_write_12C28_cfg1",
+ "ida_name": "sub_D12B08",
"name": "asd_reg_write_12C28_cfg1",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd12b38",
- "ida_name": "asd_reg_write_12C28_cfg2",
+ "ida_name": "sub_D12B38",
"name": "asd_reg_write_12C28_cfg2",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd12b68",
- "ida_name": "asd_reg_write_12C28_cfg3",
+ "ida_name": "sub_D12B68",
"name": "asd_reg_write_12C28_cfg3",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd12b98",
- "ida_name": "asd_reg_write_12C28_cfg4",
+ "ida_name": "sub_D12B98",
"name": "asd_reg_write_12C28_cfg4",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd12bc8",
- "ida_name": "asd_reg_write_12C28_cfg5",
+ "ida_name": "sub_D12BC8",
"name": "asd_reg_write_12C28_cfg5",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd12bf8",
- "ida_name": "asd_reg_write_12C28_cfg6",
+ "ida_name": "sub_D12BF8",
"name": "asd_reg_write_12C28_cfg6",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd12c28",
- "ida_name": "asd_reg_write_12C28",
+ "ida_name": "sub_D12C28",
"name": "asd_reg_write_12C28",
"size": 34,
"tier": "EXACT"
},
{
"addr": "0xd12c4c",
- "ida_name": "asd_get_reg_read_fn",
+ "ida_name": "sub_D12C4C",
"name": "asd_get_reg_read_fn",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd12c60",
- "ida_name": "asd_event_loop",
+ "ida_name": "sub_D12C60",
"name": "asd_event_loop",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd12c8c",
- "ida_name": "asd_op_304",
+ "ida_name": "sub_D12C8C",
"name": "asd_op_304",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd12cac",
- "ida_name": "asd_op_306",
+ "ida_name": "sub_D12CAC",
"name": "asd_op_306",
"size": 34,
"tier": "EXACT"
},
{
"addr": "0xd12cd0",
- "ida_name": "asd_op_305",
+ "ida_name": "sub_D12CD0",
"name": "asd_op_305",
"size": 64,
"tier": "EXACT"
},
{
"addr": "0xd12d10",
- "ida_name": "asd_op_309",
+ "ida_name": "sub_D12D10",
"name": "asd_op_309",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd12d4c",
- "ida_name": "asd_srm_sub_12D4C",
+ "ida_name": "sub_D12D4C",
"name": "asd_srm_sub_12D4C",
"size": 100,
"tier": "EXACT"
},
{
"addr": "0xd12db0",
- "ida_name": "asd_srm_sub_12DB0",
+ "ida_name": "sub_D12DB0",
"name": "asd_srm_sub_12DB0",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd12e78",
- "ida_name": "asd_set_feature_levels",
+ "ida_name": "sub_D12E78",
"name": "asd_set_feature_levels",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd12e90",
- "ida_name": "asd_validate_ptr",
+ "ida_name": "sub_D12E90",
"name": "asd_validate_ptr",
"size": 52,
"tier": "EXACT"
},
{
"addr": "0xd12ec4",
- "ida_name": "asd_srm_sub_12EC4",
+ "ida_name": "sub_D12EC4",
"name": "asd_srm_sub_12EC4",
"size": 656,
"tier": "EXACT"
},
{
"addr": "0xd13158",
- "ida_name": "asd_srm_query",
+ "ida_name": "sub_D13158",
"name": "asd_srm_query",
"size": 28,
"tier": "EXACT"
},
{
"addr": "0xd13174",
- "ida_name": "asd_srm_sub_13174",
+ "ida_name": "sub_D13174",
"name": "asd_srm_sub_13174",
"size": 102,
"tier": "EXACT"
},
{
"addr": "0xd131dc",
- "ida_name": "asd_srm_check_receiver_id",
+ "ida_name": "sub_D131DC",
"name": "asd_srm_check_receiver_id",
"size": 28,
"tier": "EXACT"
},
{
"addr": "0xd131f8",
- "ida_name": "asd_srm_sub_131F8",
+ "ida_name": "sub_D131F8",
"name": "asd_srm_sub_131F8",
"size": 78,
"tier": "EXACT"
},
{
"addr": "0xd13248",
- "ida_name": "asd_srm_read",
+ "ida_name": "sub_D13248",
"name": "asd_srm_read",
"size": 96,
"tier": "EXACT"
},
{
"addr": "0xd132a8",
- "ida_name": "asd_srm_op_301",
+ "ida_name": "sub_D132A8",
"name": "asd_srm_op_301",
"size": 152,
"tier": "EXACT"
},
{
"addr": "0xd13340",
- "ida_name": "asd_srm_store",
+ "ida_name": "sub_D13340",
"name": "asd_srm_store",
"size": 374,
"tier": "EXACT"
},
{
"addr": "0xd134c4",
- "ida_name": "asd_srm_header_check",
+ "ida_name": "sub_D134C4",
"name": "asd_srm_header_check",
"size": 178,
"tier": "EXACT"
},
{
"addr": "0xd1357c",
- "ida_name": "asd_revocation_check_ksv",
+ "ida_name": "sub_D1357C",
"name": "asd_revocation_check_ksv",
"size": 70,
"tier": "EXACT"
},
{
"addr": "0xd13960",
- "ida_name": "asd_platform_op_405",
+ "ida_name": "sub_D13960",
"name": "asd_platform_op_405",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd13974",
- "ida_name": "asd_reg_read_13974",
+ "ida_name": "sub_D13974",
"name": "asd_reg_read_13974",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd139e4",
- "ida_name": "asd_reg_read_139E4",
+ "ida_name": "sub_D139E4",
"name": "asd_reg_read_139E4",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd13a54",
- "ida_name": "asd_reg_read_13A54",
+ "ida_name": "sub_D13A54",
"name": "asd_reg_read_13A54",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd13ac4",
- "ida_name": "asd_reg_read_13AC4",
+ "ida_name": "sub_D13AC4",
"name": "asd_reg_read_13AC4",
"size": 62,
"tier": "EXACT"
},
{
"addr": "0xd13b04",
- "ida_name": "asd_reg_read_13B04",
+ "ida_name": "sub_D13B04",
"name": "asd_reg_read_13B04",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd13b74",
- "ida_name": "asd_reg_read_13B74",
+ "ida_name": "sub_D13B74",
"name": "asd_reg_read_13B74",
"size": 130,
"tier": "EXACT"
},
{
"addr": "0xd13bf8",
- "ida_name": "asd_reg_read_13BF8",
+ "ida_name": "sub_D13BF8",
"name": "asd_reg_read_13BF8",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd13c68",
- "ida_name": "asd_reg_read_13C68",
+ "ida_name": "sub_D13C68",
"name": "asd_reg_read_13C68",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd13cdc",
- "ida_name": "asd_reg_read_13CDC",
+ "ida_name": "sub_D13CDC",
"name": "asd_reg_read_13CDC",
"size": 66,
"tier": "EXACT"
},
{
"addr": "0xd13d24",
- "ida_name": "asd_reg_read_13D24",
+ "ida_name": "sub_D13D24",
"name": "asd_reg_read_13D24",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd13d9c",
- "ida_name": "asd_reg_read_13D9C",
+ "ida_name": "sub_D13D9C",
"name": "asd_reg_read_13D9C",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd13e14",
- "ida_name": "asd_reg_read_13E14",
+ "ida_name": "sub_D13E14",
"name": "asd_reg_read_13E14",
"size": 110,
"tier": "EXACT"
},
{
"addr": "0xd13e8c",
- "ida_name": "asd_reg_read_13E8C",
+ "ida_name": "sub_D13E8C",
"name": "asd_reg_read_13E8C",
"size": 62,
"tier": "EXACT"
},
{
"addr": "0xd13ed0",
- "ida_name": "asd_reg_read_13ED0",
+ "ida_name": "sub_D13ED0",
"name": "asd_reg_read_13ED0",
"size": 112,
"tier": "EXACT"
},
{
"addr": "0xd13f48",
- "ida_name": "asd_reg_read_13F48",
+ "ida_name": "sub_D13F48",
"name": "asd_reg_read_13F48",
"size": 136,
"tier": "EXACT"
},
{
"addr": "0xd13fd4",
- "ida_name": "asd_reg_read_13FD4",
+ "ida_name": "sub_D13FD4",
"name": "asd_reg_read_13FD4",
"size": 78,
"tier": "EXACT"
},
{
"addr": "0xd14028",
- "ida_name": "asd_reg_read_14028",
+ "ida_name": "sub_D14028",
"name": "asd_reg_read_14028",
"size": 128,
"tier": "EXACT"
},
{
"addr": "0xd140ac",
- "ida_name": "asd_reg_read_140AC",
+ "ida_name": "sub_D140AC",
"name": "asd_reg_read_140AC",
"size": 110,
"tier": "EXACT"
@@ -8402,7 +8402,7 @@
},
{
"addr": "0xd141d8",
- "ida_name": "asd_mmio_30106AC_rmw",
+ "ida_name": "sub_D141D8",
"name": "asd_mmio_30106AC_rmw",
"size": 34,
"tier": "EXACT"
@@ -8416,21 +8416,21 @@
},
{
"addr": "0xd14240",
- "ida_name": "asd_foreach_dio_entry_v3",
+ "ida_name": "sub_D14240",
"name": "asd_foreach_dio_entry_v3",
"size": 112,
"tier": "EXACT"
},
{
"addr": "0xd142bc",
- "ida_name": "asd_reset_hdcp_link_state",
+ "ida_name": "sub_D142BC",
"name": "asd_reset_hdcp_link_state",
"size": 40,
"tier": "EXACT"
},
{
"addr": "0xd142e8",
- "ida_name": "asd_hwop_06C_v0",
+ "ida_name": "sub_D142E8",
"name": "asd_hwop_06C_v0",
"size": 88,
"tier": "EXACT"
@@ -8444,7 +8444,7 @@
},
{
"addr": "0xd1438c",
- "ida_name": "asd_hwop_06C_v1",
+ "ida_name": "sub_D1438C",
"name": "asd_hwop_06C_v1",
"size": 354,
"tier": "EXACT"
@@ -8458,420 +8458,420 @@
},
{
"addr": "0xd14554",
- "ida_name": "asd_query_link_state",
+ "ida_name": "sub_D14554",
"name": "asd_query_link_state",
"size": 34,
"tier": "EXACT"
},
{
"addr": "0xd14578",
- "ida_name": "asd_state_not_1",
+ "ida_name": "sub_D14578",
"name": "asd_state_not_1",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd14584",
- "ida_name": "asd_copy_dword_list",
+ "ida_name": "sub_D14584",
"name": "asd_copy_dword_list",
"size": 46,
"tier": "EXACT"
},
{
"addr": "0xd145b4",
- "ida_name": "asd_cfg_132byte_blob",
+ "ida_name": "sub_D145B4",
"name": "asd_cfg_132byte_blob",
"size": 76,
"tier": "EXACT"
},
{
"addr": "0xd14608",
- "ida_name": "asd_start_link_task",
+ "ida_name": "sub_D14608",
"name": "asd_start_link_task",
"size": 60,
"tier": "EXACT"
},
{
"addr": "0xd1464c",
- "ida_name": "asd_full_reset",
+ "ida_name": "sub_D1464C",
"name": "asd_full_reset",
"size": 20,
"tier": "EXACT"
},
{
"addr": "0xd14660",
- "ida_name": "asd_read_caps_blob",
+ "ida_name": "sub_D14660",
"name": "asd_read_caps_blob",
"size": 136,
"tier": "EXACT"
},
{
"addr": "0xd146e8",
- "ida_name": "asd_sync_link_state",
+ "ida_name": "sub_D146E8",
"name": "asd_sync_link_state",
"size": 46,
"tier": "EXACT"
},
{
"addr": "0xd14718",
- "ida_name": "asd_probe_power_state",
+ "ida_name": "sub_D14718",
"name": "asd_probe_power_state",
"size": 42,
"tier": "EXACT"
},
{
"addr": "0xd14744",
- "ida_name": "asd_link_state_poll",
+ "ida_name": "sub_D14744",
"name": "asd_link_state_poll",
"size": 124,
"tier": "EXACT"
},
{
"addr": "0xd147c8",
- "ida_name": "asd_svc_op_20B",
+ "ida_name": "sub_D147C8",
"name": "asd_svc_op_20B",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd147d6",
- "ida_name": "j_sub_D18B14",
+ "ida_name": "sub_D147D6",
"name": "j_sub_D18B14",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd147dc",
- "ida_name": "asd_svc_op_205",
+ "ida_name": "sub_D147DC",
"name": "asd_svc_op_205",
"size": 74,
"tier": "EXACT"
},
{
"addr": "0xd14828",
- "ida_name": "asd_opt_cb_D330C0",
+ "ida_name": "sub_D14828",
"name": "asd_opt_cb_D330C0",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd14834",
- "ida_name": "asd_svc_op_206",
+ "ida_name": "sub_D14834",
"name": "asd_svc_op_206",
"size": 76,
"tier": "EXACT"
},
{
"addr": "0xd14880",
- "ida_name": "asd_crypto_setup_key",
+ "ida_name": "sub_D14880",
"name": "asd_crypto_setup_key",
"size": 198,
"tier": "EXACT"
},
{
"addr": "0xd14948",
- "ida_name": "asd_svc_op_202",
+ "ida_name": "sub_D14948",
"name": "asd_svc_op_202",
"size": 242,
"tier": "EXACT"
},
{
"addr": "0xd14a4c",
- "ida_name": "asd_link_notify_D49810",
+ "ida_name": "sub_D14A4C",
"name": "asd_link_notify_D49810",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd14a88",
- "ida_name": "asd_srm_sub_14A88",
+ "ida_name": "sub_D14A88",
"name": "asd_srm_sub_14A88",
"size": 26,
"tier": "EXACT"
},
{
"addr": "0xd14aa4",
- "ida_name": "asd_get_platform_info",
+ "ida_name": "sub_D14AA4",
"name": "asd_get_platform_info",
"size": 236,
"tier": "EXACT"
},
{
"addr": "0xd14b90",
- "ida_name": "asd_svc_op_207",
+ "ida_name": "sub_D14B90",
"name": "asd_svc_op_207",
"size": 34,
"tier": "EXACT"
},
{
"addr": "0xd14bb8",
- "ida_name": "asd_svc_op_200",
+ "ida_name": "sub_D14BB8",
"name": "asd_svc_op_200",
"size": 26,
"tier": "EXACT"
},
{
"addr": "0xd14bd4",
- "ida_name": "asd_svc_sub_14BD4",
+ "ida_name": "sub_D14BD4",
"name": "asd_svc_sub_14BD4",
"size": 146,
"tier": "EXACT"
},
{
"addr": "0xd14c68",
- "ida_name": "asd_svc_op_204",
+ "ida_name": "sub_D14C68",
"name": "asd_svc_op_204",
"size": 26,
"tier": "EXACT"
},
{
"addr": "0xd14c84",
- "ida_name": "asd_asic_family_lookup",
+ "ida_name": "sub_D14C84",
"name": "asd_asic_family_lookup",
"size": 74,
"tier": "EXACT"
},
{
"addr": "0xd14cd0",
- "ida_name": "asd_logged_entry",
+ "ida_name": "sub_D14CD0",
"name": "asd_logged_entry",
"size": 148,
"tier": "EXACT"
},
{
"addr": "0xd14d70",
- "ida_name": "asd_query_opt_D49820",
+ "ida_name": "sub_D14D70",
"name": "asd_query_opt_D49820",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd14d7c",
- "ida_name": "asd_query_opt_D4981C",
+ "ida_name": "sub_D14D7C",
"name": "asd_query_opt_D4981C",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd14d88",
- "ida_name": "asd_resolve_asic_handlers",
+ "ida_name": "sub_D14D88",
"name": "asd_resolve_asic_handlers",
"size": 680,
"tier": "EXACT"
},
{
"addr": "0xd151e4",
- "ida_name": "asd_cfg_type_2_3",
+ "ida_name": "sub_D151E4",
"name": "asd_cfg_type_2_3",
"size": 72,
"tier": "EXACT"
},
{
"addr": "0xd1522c",
- "ida_name": "asd_hdcp_version_select",
+ "ida_name": "sub_D1522C",
"name": "asd_hdcp_version_select",
"size": 62,
"tier": "EXACT"
},
{
"addr": "0xd1526c",
- "ida_name": "asd_build_caps_blob",
+ "ida_name": "sub_D1526C",
"name": "asd_build_caps_blob",
"size": 88,
"tier": "EXACT"
},
{
"addr": "0xd152c4",
- "ida_name": "asd_opt_cb_D330CC",
+ "ida_name": "sub_D152C4",
"name": "asd_opt_cb_D330CC",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd152d0",
- "ida_name": "asd_hw_init",
+ "ida_name": "sub_D152D0",
"name": "asd_hw_init",
"size": 86,
"tier": "EXACT"
},
{
"addr": "0xd15328",
- "ida_name": "asd_op_801",
+ "ida_name": "sub_D15328",
"name": "asd_op_801",
"size": 112,
"tier": "EXACT"
},
{
"addr": "0xd1539c",
- "ida_name": "asd_mmio_3250000_rmw",
+ "ida_name": "sub_D1539C",
"name": "asd_mmio_3250000_rmw",
"size": 74,
"tier": "EXACT"
},
{
"addr": "0xd153e8",
- "ida_name": "asd_foreach_link_D15412",
+ "ida_name": "sub_D153E8",
"name": "asd_foreach_link_D15412",
"size": 42,
"tier": "EXACT"
},
{
"addr": "0xd15412",
- "ida_name": "asd_link_call_D49810_D49814",
+ "ida_name": "sub_D15412",
"name": "asd_link_call_D49810_D49814",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd1547c",
- "ida_name": "asd_svc_op_203",
+ "ida_name": "sub_D1547C",
"name": "asd_svc_op_203",
"size": 194,
"tier": "EXACT"
},
{
"addr": "0xd1554c",
- "ida_name": "asd_svc_op_20A",
+ "ida_name": "sub_D1554C",
"name": "asd_svc_op_20A",
"size": 120,
"tier": "EXACT"
},
{
"addr": "0xd155c8",
- "ida_name": "asd_link_query_D49800",
+ "ida_name": "sub_D155C8",
"name": "asd_link_query_D49800",
"size": 88,
"tier": "EXACT"
},
{
"addr": "0xd15628",
- "ida_name": "asd_foreach_link_D15650",
+ "ida_name": "sub_D15628",
"name": "asd_foreach_link_D15650",
"size": 38,
"tier": "EXACT"
},
{
"addr": "0xd15650",
- "ida_name": "asd_link_call_D49818",
+ "ida_name": "sub_D15650",
"name": "asd_link_call_D49818",
"size": 78,
"tier": "EXACT"
},
{
"addr": "0xd156a4",
- "ida_name": "asd_dio_entry_present",
+ "ida_name": "sub_D156A4",
"name": "asd_dio_entry_present",
"size": 26,
"tier": "EXACT"
},
{
"addr": "0xd156c0",
- "ida_name": "asd_opt_cb_D4980C_bounded",
+ "ida_name": "sub_D156C0",
"name": "asd_opt_cb_D4980C_bounded",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd156cc",
- "ida_name": "j_sub_D191F8",
+ "ida_name": "sub_D156CC",
"name": "j_sub_D191F8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd156d0",
- "ida_name": "asd_link_callback_ok",
+ "ida_name": "sub_D156D0",
"name": "asd_link_callback_ok",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd156f8",
- "ida_name": "asd_svc_op_209",
+ "ida_name": "sub_D156F8",
"name": "asd_svc_op_209",
"size": 20,
"tier": "EXACT"
},
{
"addr": "0xd15714",
- "ida_name": "asd_foreach_dio_entry",
+ "ida_name": "sub_D15714",
"name": "asd_foreach_dio_entry",
"size": 60,
"tier": "EXACT"
},
{
"addr": "0xd15754",
- "ida_name": "asd_foreach_dio_entry_v2",
+ "ida_name": "sub_D15754",
"name": "asd_foreach_dio_entry_v2",
"size": 88,
"tier": "EXACT"
},
{
"addr": "0xd157bc",
- "ida_name": "asd_link_call_D49818_guarded",
+ "ida_name": "sub_D157BC",
"name": "asd_link_call_D49818_guarded",
"size": 28,
"tier": "EXACT"
},
{
"addr": "0xd157dc",
- "ida_name": "asd_hdcp_reset_all",
+ "ida_name": "sub_D157DC",
"name": "asd_hdcp_reset_all",
"size": 204,
"tier": "EXACT"
},
{
"addr": "0xd158ac",
- "ida_name": "asd_log_event",
+ "ida_name": "sub_D158AC",
"name": "asd_log_event",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd158c4",
- "ida_name": "asd_event_dispatch",
+ "ida_name": "sub_D158C4",
"name": "asd_event_dispatch",
"size": 550,
"tier": "EXACT"
},
{
"addr": "0xd15af8",
- "ida_name": "asd_svc_op_201",
+ "ida_name": "sub_D15AF8",
"name": "asd_svc_op_201",
"size": 200,
"tier": "EXACT"
},
{
"addr": "0xd15bcc",
- "ida_name": "asd_op_802",
+ "ida_name": "sub_D15BCC",
"name": "asd_op_802",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd15bdc",
- "ida_name": "asd_foreach_link_cb_D49824",
+ "ida_name": "sub_D15BDC",
"name": "asd_foreach_link_cb_D49824",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd15c0c",
- "ida_name": "asd_bounded_dispatch_D1922C",
+ "ida_name": "sub_D15C0C",
"name": "asd_bounded_dispatch_D1922C",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd15c1a",
- "ida_name": "asd_svc_op_20E",
+ "ida_name": "sub_D15C1A",
"name": "asd_svc_op_20E",
"size": 8,
"tier": "EXACT"
},
{
"addr": "0xd15c24",
- "ida_name": "asd_reg_read_14124_cfg0",
+ "ida_name": "sub_D15C24",
"name": "asd_reg_read_14124_cfg0",
"size": 46,
"tier": "EXACT"
@@ -8885,14 +8885,14 @@
},
{
"addr": "0xd15c78",
- "ida_name": "asd_reg_read_15C78",
+ "ida_name": "sub_D15C78",
"name": "asd_reg_read_15C78",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd15c9c",
- "ida_name": "asd_reg_read_14142_cfg0",
+ "ida_name": "sub_D15C9C",
"name": "asd_reg_read_14142_cfg0",
"size": 46,
"tier": "EXACT"
@@ -8906,238 +8906,238 @@
},
{
"addr": "0xd15cf4",
- "ida_name": "asd_reg_read_15CF4",
+ "ida_name": "sub_D15CF4",
"name": "asd_reg_read_15CF4",
"size": 42,
"tier": "EXACT"
},
{
"addr": "0xd15d24",
- "ida_name": "asd_reg_read_15D24",
+ "ida_name": "sub_D15D24",
"name": "asd_reg_read_15D24",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd15d48",
- "ida_name": "asd_reg_read_15D48",
+ "ida_name": "sub_D15D48",
"name": "asd_reg_read_15D48",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd15d68",
- "ida_name": "asd_reg_read_15D68",
+ "ida_name": "sub_D15D68",
"name": "asd_reg_read_15D68",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd15d8c",
- "ida_name": "asd_hwop_0AC_v0_0",
+ "ida_name": "sub_D15D8C",
"name": "asd_hwop_0AC_v0_0",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd15dac",
- "ida_name": "asd_hwop_0AC_v0",
+ "ida_name": "sub_D15DAC",
"name": "asd_hwop_0AC_v0",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd15dcc",
- "ida_name": "asd_hwop_0AC_v1",
+ "ida_name": "sub_D15DCC",
"name": "asd_hwop_0AC_v1",
"size": 32,
"tier": "EXACT"
},
{
"addr": "0xd15df0",
- "ida_name": "asd_reg_read_15DF0",
+ "ida_name": "sub_D15DF0",
"name": "asd_reg_read_15DF0",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd15e02",
- "ida_name": "asd_reg_read_15E02",
+ "ida_name": "sub_D15E02",
"name": "asd_reg_read_15E02",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd15e14",
- "ida_name": "asd_reg_rw_15E14",
+ "ida_name": "sub_D15E14",
"name": "asd_reg_rw_15E14",
"size": 82,
"tier": "EXACT"
},
{
"addr": "0xd15e66",
- "ida_name": "asd_reg_rw_15E66",
+ "ida_name": "sub_D15E66",
"name": "asd_reg_rw_15E66",
"size": 38,
"tier": "EXACT"
},
{
"addr": "0xd15e8c",
- "ida_name": "asd_check_link_budget",
+ "ida_name": "sub_D15E8C",
"name": "asd_check_link_budget",
"size": 84,
"tier": "EXACT"
},
{
"addr": "0xd15ee4",
- "ida_name": "asd_build_caps_blob_24",
+ "ida_name": "sub_D15EE4",
"name": "asd_build_caps_blob_24",
"size": 120,
"tier": "EXACT"
},
{
"addr": "0xd15f6c",
- "ida_name": "asd_get_lane_count",
+ "ida_name": "sub_D15F6C",
"name": "asd_get_lane_count",
"size": 88,
"tier": "EXACT"
},
{
"addr": "0xd15fc4",
- "ida_name": "asd_reg_read_15FC4",
+ "ida_name": "sub_D15FC4",
"name": "asd_reg_read_15FC4",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd15fd8",
- "ida_name": "asd_reg_read_15FD8",
+ "ida_name": "sub_D15FD8",
"name": "asd_reg_read_15FD8",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd15ff0",
- "ida_name": "asd_reg_rw_15FF0",
+ "ida_name": "sub_D15FF0",
"name": "asd_reg_rw_15FF0",
"size": 178,
"tier": "EXACT"
},
{
"addr": "0xd160a4",
- "ida_name": "asd_reg_rw_160A4",
+ "ida_name": "sub_D160A4",
"name": "asd_reg_rw_160A4",
"size": 90,
"tier": "EXACT"
},
{
"addr": "0xd16100",
- "ida_name": "asd_reg_rw_16100",
+ "ida_name": "sub_D16100",
"name": "asd_reg_rw_16100",
"size": 178,
"tier": "EXACT"
},
{
"addr": "0xd161bc",
- "ida_name": "asd_reg_rw_161BC",
+ "ida_name": "sub_D161BC",
"name": "asd_reg_rw_161BC",
"size": 178,
"tier": "EXACT"
},
{
"addr": "0xd16290",
- "ida_name": "asd_reg_read_16290",
+ "ida_name": "sub_D16290",
"name": "asd_reg_read_16290",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd162c0",
- "ida_name": "asd_reg_read_162C0",
+ "ida_name": "sub_D162C0",
"name": "asd_reg_read_162C0",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd162f0",
- "ida_name": "asd_reg_read_162F0",
+ "ida_name": "sub_D162F0",
"name": "asd_reg_read_162F0",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd16330",
- "ida_name": "asd_reg_write_16330",
+ "ida_name": "sub_D16330",
"name": "asd_reg_write_16330",
"size": 66,
"tier": "EXACT"
},
{
"addr": "0xd16384",
- "ida_name": "asd_reg_write_16384",
+ "ida_name": "sub_D16384",
"name": "asd_reg_write_16384",
"size": 54,
"tier": "EXACT"
},
{
"addr": "0xd163c4",
- "ida_name": "j_sub_D027F0",
+ "ida_name": "sub_D163C4",
"name": "j_sub_D027F0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd163c8",
- "ida_name": "asd_reg_write_163C8",
+ "ida_name": "sub_D163C8",
"name": "asd_reg_write_163C8",
"size": 202,
"tier": "EXACT"
},
{
"addr": "0xd164b4",
- "ida_name": "asd_reg_write_164B4",
+ "ida_name": "sub_D164B4",
"name": "asd_reg_write_164B4",
"size": 126,
"tier": "EXACT"
},
{
"addr": "0xd16554",
- "ida_name": "asd_reg_write_16554",
+ "ida_name": "sub_D16554",
"name": "asd_reg_write_16554",
"size": 100,
"tier": "EXACT"
},
{
"addr": "0xd165bc",
- "ida_name": "asd_reg_write_165BC",
+ "ida_name": "sub_D165BC",
"name": "asd_reg_write_165BC",
"size": 126,
"tier": "EXACT"
},
{
"addr": "0xd1663c",
- "ida_name": "asd_reg_write_1663C",
+ "ida_name": "sub_D1663C",
"name": "asd_reg_write_1663C",
"size": 108,
"tier": "EXACT"
},
{
"addr": "0xd166ac",
- "ida_name": "asd_reg_write_166AC",
+ "ida_name": "sub_D166AC",
"name": "asd_reg_write_166AC",
"size": 202,
"tier": "EXACT"
},
{
"addr": "0xd16788",
- "ida_name": "asd_reg_write_16788",
+ "ida_name": "sub_D16788",
"name": "asd_reg_write_16788",
"size": 162,
"tier": "EXACT"
},
{
"addr": "0xd1683c",
- "ida_name": "asd_reg_write_1683C",
+ "ida_name": "sub_D1683C",
"name": "asd_reg_write_1683C",
"size": 126,
"tier": "EXACT"
@@ -9151,56 +9151,56 @@
},
{
"addr": "0xd16948",
- "ida_name": "asd_platform_op_402",
+ "ida_name": "sub_D16948",
"name": "asd_platform_op_402",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd169bc",
- "ida_name": "asd_session_op57_1",
+ "ida_name": "sub_D169BC",
"name": "asd_session_op57_1",
"size": 16,
"tier": "EXACT"
},
{
"addr": "0xd169d4",
- "ida_name": "asd_reg_clr_bit1_wait",
+ "ida_name": "sub_D169D4",
"name": "asd_reg_clr_bit1_wait",
"size": 72,
"tier": "EXACT"
},
{
"addr": "0xd16a1c",
- "ida_name": "asd_reg_clr_bit2_wait",
+ "ida_name": "sub_D16A1C",
"name": "asd_reg_clr_bit2_wait",
"size": 66,
"tier": "EXACT"
},
{
"addr": "0xd16a60",
- "ida_name": "asd_reg_set_bit1_wait",
+ "ida_name": "sub_D16A60",
"name": "asd_reg_set_bit1_wait",
"size": 66,
"tier": "EXACT"
},
{
"addr": "0xd16aa4",
- "ida_name": "asd_reg_set_bit2_wait",
+ "ida_name": "sub_D16AA4",
"name": "asd_reg_set_bit2_wait",
"size": 66,
"tier": "EXACT"
},
{
"addr": "0xd16aec",
- "ida_name": "asd_load_le32",
+ "ida_name": "sub_D16AEC",
"name": "asd_load_le32",
"size": 22,
"tier": "EXACT"
},
{
"addr": "0xd16b04",
- "ida_name": "asd_hwop_068_v4_0",
+ "ida_name": "sub_D16B04",
"name": "asd_hwop_068_v4_0",
"size": 56,
"tier": "EXACT"
@@ -9214,21 +9214,21 @@
},
{
"addr": "0xd16b84",
- "ida_name": "asd_hwop_068_v2",
+ "ida_name": "sub_D16B84",
"name": "asd_hwop_068_v2",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd16bc0",
- "ida_name": "asd_hwop_0D4_v1",
+ "ida_name": "sub_D16BC0",
"name": "asd_hwop_0D4_v1",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd16c04",
- "ida_name": "asd_hwop_068_v3",
+ "ida_name": "sub_D16C04",
"name": "asd_hwop_068_v3",
"size": 58,
"tier": "EXACT"
@@ -9242,7 +9242,7 @@
},
{
"addr": "0xd16c88",
- "ida_name": "asd_hwop_068_v0",
+ "ida_name": "sub_D16C88",
"name": "asd_hwop_068_v0",
"size": 56,
"tier": "EXACT"
@@ -9256,7 +9256,7 @@
},
{
"addr": "0xd16d08",
- "ida_name": "asd_hwop_068_v1",
+ "ida_name": "sub_D16D08",
"name": "asd_hwop_068_v1",
"size": 56,
"tier": "EXACT"
@@ -9270,280 +9270,280 @@
},
{
"addr": "0xd16d88",
- "ida_name": "asd_hwop_068_v4",
+ "ida_name": "sub_D16D88",
"name": "asd_hwop_068_v4",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd16dc4",
- "ida_name": "asd_hwop_0D4_v2",
+ "ida_name": "sub_D16DC4",
"name": "asd_hwop_0D4_v2",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd16e08",
- "ida_name": "asd_checksum_verify",
+ "ida_name": "sub_D16E08",
"name": "asd_checksum_verify",
"size": 40,
"tier": "EXACT"
},
{
"addr": "0xd16e30",
- "ida_name": "j_sub_D17C48",
+ "ida_name": "sub_D16E30",
"name": "j_sub_D17C48",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd16e34",
- "ida_name": "j_sub_D17D20",
+ "ida_name": "sub_D16E34",
"name": "j_sub_D17D20",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd16e38",
- "ida_name": "asd_stream_enable_toggle_cfg0",
+ "ida_name": "sub_D16E38",
"name": "asd_stream_enable_toggle_cfg0",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd16e3e",
- "ida_name": "j_sub_D17DFC",
+ "ida_name": "sub_D16E3E",
"name": "j_sub_D17DFC",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd16e44",
- "ida_name": "asd_dio_desc_D330D0",
+ "ida_name": "sub_D16E44",
"name": "asd_dio_desc_D330D0",
"size": 90,
"tier": "EXACT"
},
{
"addr": "0xd16ea4",
- "ida_name": "j_sub_D18518",
+ "ida_name": "sub_D16EA4",
"name": "j_sub_D18518",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd16ea8",
- "ida_name": "asd_hwop_0DC_v0",
+ "ida_name": "sub_D16EA8",
"name": "asd_hwop_0DC_v0",
"size": 58,
"tier": "EXACT"
},
{
"addr": "0xd16eec",
- "ida_name": "j_sub_D17C48_0",
+ "ida_name": "sub_D16EEC",
"name": "j_sub_D17C48_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd16ef0",
- "ida_name": "j_sub_D17D20_0",
+ "ida_name": "sub_D16EF0",
"name": "j_sub_D17D20_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd16ef4",
- "ida_name": "asd_stream_enable_toggle_cfg1",
+ "ida_name": "sub_D16EF4",
"name": "asd_stream_enable_toggle_cfg1",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd16efa",
- "ida_name": "asd_fw_version_gated_stream_op",
+ "ida_name": "sub_D16EFA",
"name": "asd_fw_version_gated_stream_op",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd16f18",
- "ida_name": "asd_dio_desc_D330F8",
+ "ida_name": "sub_D16F18",
"name": "asd_dio_desc_D330F8",
"size": 98,
"tier": "EXACT"
},
{
"addr": "0xd16f80",
- "ida_name": "j_sub_D18518_0",
+ "ida_name": "sub_D16F80",
"name": "j_sub_D18518_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd16f84",
- "ida_name": "asd_hwop_0DC_v1",
+ "ida_name": "sub_D16F84",
"name": "asd_hwop_0DC_v1",
"size": 78,
"tier": "EXACT"
},
{
"addr": "0xd16fdc",
- "ida_name": "asd_asic26_dio_disable",
+ "ida_name": "sub_D16FDC",
"name": "asd_asic26_dio_disable",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd16fee",
- "ida_name": "j_sub_D17D20_1",
+ "ida_name": "sub_D16FEE",
"name": "j_sub_D17D20_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd16ff2",
- "ida_name": "asd_stream_enable_toggle_cfg2",
+ "ida_name": "sub_D16FF2",
"name": "asd_stream_enable_toggle_cfg2",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd16ff8",
- "ida_name": "asd_asic26_stream_op",
+ "ida_name": "sub_D16FF8",
"name": "asd_asic26_stream_op",
"size": 18,
"tier": "EXACT"
},
{
"addr": "0xd1700c",
- "ida_name": "asd_dio_desc_D33120",
+ "ida_name": "sub_D1700C",
"name": "asd_dio_desc_D33120",
"size": 98,
"tier": "EXACT"
},
{
"addr": "0xd17074",
- "ida_name": "j_sub_D18518_1",
+ "ida_name": "sub_D17074",
"name": "j_sub_D18518_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17078",
- "ida_name": "j_asd_dio_disable_all",
+ "ida_name": "sub_D17078",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd1707c",
- "ida_name": "j_sub_D17D20_2",
+ "ida_name": "sub_D1707C",
"name": "j_sub_D17D20_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17080",
- "ida_name": "asd_stream_enable_toggle_cfg3",
+ "ida_name": "sub_D17080",
"name": "asd_stream_enable_toggle_cfg3",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd17086",
- "ida_name": "j_sub_D17DFC_0",
+ "ida_name": "sub_D17086",
"name": "j_sub_D17DFC_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1708c",
- "ida_name": "asd_dio_desc_D33148",
+ "ida_name": "sub_D1708C",
"name": "asd_dio_desc_D33148",
"size": 98,
"tier": "EXACT"
},
{
"addr": "0xd170f4",
- "ida_name": "j_sub_D18518_2",
+ "ida_name": "sub_D170F4",
"name": "j_sub_D18518_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd170f8",
- "ida_name": "j_sub_D17C48_2",
+ "ida_name": "sub_D170F8",
"name": "j_sub_D17C48_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd170fc",
- "ida_name": "j_sub_D17D20_3",
+ "ida_name": "sub_D170FC",
"name": "j_sub_D17D20_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17100",
- "ida_name": "asd_stream_enable_toggle_cfg4",
+ "ida_name": "sub_D17100",
"name": "asd_stream_enable_toggle_cfg4",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd17106",
- "ida_name": "j_sub_D17DFC_1",
+ "ida_name": "sub_D17106",
"name": "j_sub_D17DFC_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1710c",
- "ida_name": "asd_dio_desc_D33170",
+ "ida_name": "sub_D1710C",
"name": "asd_dio_desc_D33170",
"size": 98,
"tier": "EXACT"
},
{
"addr": "0xd17174",
- "ida_name": "j_sub_D18518_3",
+ "ida_name": "sub_D17174",
"name": "j_sub_D18518_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17178",
- "ida_name": "j_sub_D17B74",
+ "ida_name": "sub_D17178",
"name": "j_sub_D17B74",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1717c",
- "ida_name": "j_sub_D17C38",
+ "ida_name": "sub_D1717C",
"name": "j_sub_D17C38",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17180",
- "ida_name": "j_sub_D17C94",
+ "ida_name": "sub_D17180",
"name": "j_sub_D17C94",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17184",
- "ida_name": "j_sub_D17D50",
+ "ida_name": "sub_D17184",
"name": "j_sub_D17D50",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17188",
- "ida_name": "asd_stream_enable_toggle_cfg5",
+ "ida_name": "sub_D17188",
"name": "asd_stream_enable_toggle_cfg5",
"size": 6,
"tier": "EXACT"
@@ -9557,119 +9557,119 @@
},
{
"addr": "0xd17192",
- "ida_name": "j_sub_D1819C",
+ "ida_name": "sub_D17192",
"name": "j_sub_D1819C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17196",
- "ida_name": "j_sub_D18334",
+ "ida_name": "sub_D17196",
"name": "j_sub_D18334",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1719a",
- "ida_name": "j_sub_D18404",
+ "ida_name": "sub_D1719A",
"name": "j_sub_D18404",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1719e",
- "ida_name": "j_sub_D18478",
+ "ida_name": "sub_D1719E",
"name": "j_sub_D18478",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd171a4",
- "ida_name": "asd_dio_desc_D33158",
+ "ida_name": "sub_D171A4",
"name": "asd_dio_desc_D33158",
"size": 326,
"tier": "EXACT"
},
{
"addr": "0xd172f8",
- "ida_name": "j_sub_D18518_4",
+ "ida_name": "sub_D172F8",
"name": "j_sub_D18518_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd172fc",
- "ida_name": "j_sub_D185B8",
+ "ida_name": "sub_D172FC",
"name": "j_sub_D185B8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17300",
- "ida_name": "j_sub_D185EC",
+ "ida_name": "sub_D17300",
"name": "j_sub_D185EC",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17304",
- "ida_name": "j_sub_D187C4",
+ "ida_name": "sub_D17304",
"name": "j_sub_D187C4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17308",
- "ida_name": "j_sub_D188E8",
+ "ida_name": "sub_D17308",
"name": "j_sub_D188E8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1730c",
- "ida_name": "asd_aux_transfer_block_cfg0",
+ "ida_name": "sub_D1730C",
"name": "asd_aux_transfer_block_cfg0",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd17312",
- "ida_name": "j_sub_D18A64",
+ "ida_name": "sub_D17312",
"name": "j_sub_D18A64",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17316",
- "ida_name": "j_sub_D17B74_0",
+ "ida_name": "sub_D17316",
"name": "j_sub_D17B74_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1731a",
- "ida_name": "j_sub_D17C38_0",
+ "ida_name": "sub_D1731A",
"name": "j_sub_D17C38_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1731e",
- "ida_name": "j_sub_D17C94_0",
+ "ida_name": "sub_D1731E",
"name": "j_sub_D17C94_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17322",
- "ida_name": "j_sub_D17D50_0",
+ "ida_name": "sub_D17322",
"name": "j_sub_D17D50_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17326",
- "ida_name": "asd_stream_enable_toggle_cfg6",
+ "ida_name": "sub_D17326",
"name": "asd_stream_enable_toggle_cfg6",
"size": 6,
"tier": "EXACT"
@@ -9683,98 +9683,98 @@
},
{
"addr": "0xd17330",
- "ida_name": "j_sub_D1819C_0",
+ "ida_name": "sub_D17330",
"name": "j_sub_D1819C_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17334",
- "ida_name": "asd_dio_desc_D33174",
+ "ida_name": "sub_D17334",
"name": "asd_dio_desc_D33174",
"size": 304,
"tier": "EXACT"
},
{
"addr": "0xd17468",
- "ida_name": "j_sub_D18518_5",
+ "ida_name": "sub_D17468",
"name": "j_sub_D18518_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1746c",
- "ida_name": "j_sub_D185B8_0",
+ "ida_name": "sub_D1746C",
"name": "j_sub_D185B8_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17470",
- "ida_name": "j_sub_D185EC_0",
+ "ida_name": "sub_D17470",
"name": "j_sub_D185EC_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17474",
- "ida_name": "j_sub_D187C4_0",
+ "ida_name": "sub_D17474",
"name": "j_sub_D187C4_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17478",
- "ida_name": "j_sub_D188E8_0",
+ "ida_name": "sub_D17478",
"name": "j_sub_D188E8_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1747c",
- "ida_name": "asd_aux_transfer_block_cfg1",
+ "ida_name": "sub_D1747C",
"name": "asd_aux_transfer_block_cfg1",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd17482",
- "ida_name": "j_sub_D18A64_0",
+ "ida_name": "sub_D17482",
"name": "j_sub_D18A64_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17486",
- "ida_name": "j_sub_D17B74_1",
+ "ida_name": "sub_D17486",
"name": "j_sub_D17B74_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1748a",
- "ida_name": "j_sub_D17C38_1",
+ "ida_name": "sub_D1748A",
"name": "j_sub_D17C38_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1748e",
- "ida_name": "j_sub_D17C94_1",
+ "ida_name": "sub_D1748E",
"name": "j_sub_D17C94_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17492",
- "ida_name": "j_sub_D17D50_1",
+ "ida_name": "sub_D17492",
"name": "j_sub_D17D50_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17496",
- "ida_name": "asd_stream_enable_toggle_cfg7",
+ "ida_name": "sub_D17496",
"name": "asd_stream_enable_toggle_cfg7",
"size": 6,
"tier": "EXACT"
@@ -9788,119 +9788,119 @@
},
{
"addr": "0xd174a0",
- "ida_name": "j_sub_D1819C_1",
+ "ida_name": "sub_D174A0",
"name": "j_sub_D1819C_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd174a4",
- "ida_name": "j_sub_D18334_0",
+ "ida_name": "sub_D174A4",
"name": "j_sub_D18334_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd174a8",
- "ida_name": "j_sub_D18404_0",
+ "ida_name": "sub_D174A8",
"name": "j_sub_D18404_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd174ac",
- "ida_name": "j_sub_D18478_0",
+ "ida_name": "sub_D174AC",
"name": "j_sub_D18478_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd174b0",
- "ida_name": "asd_dio_desc_D3319C",
+ "ida_name": "sub_D174B0",
"name": "asd_dio_desc_D3319C",
"size": 304,
"tier": "EXACT"
},
{
"addr": "0xd175e4",
- "ida_name": "j_sub_D18518_6",
+ "ida_name": "sub_D175E4",
"name": "j_sub_D18518_6",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd175e8",
- "ida_name": "j_sub_D185B8_1",
+ "ida_name": "sub_D175E8",
"name": "j_sub_D185B8_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd175ec",
- "ida_name": "j_sub_D185EC_1",
+ "ida_name": "sub_D175EC",
"name": "j_sub_D185EC_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd175f0",
- "ida_name": "j_sub_D187C4_1",
+ "ida_name": "sub_D175F0",
"name": "j_sub_D187C4_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd175f4",
- "ida_name": "j_sub_D188E8_1",
+ "ida_name": "sub_D175F4",
"name": "j_sub_D188E8_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd175f8",
- "ida_name": "asd_aux_transfer_block_cfg2",
+ "ida_name": "sub_D175F8",
"name": "asd_aux_transfer_block_cfg2",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd175fe",
- "ida_name": "j_sub_D18A64_1",
+ "ida_name": "sub_D175FE",
"name": "j_sub_D18A64_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17602",
- "ida_name": "j_sub_D17B74_2",
+ "ida_name": "sub_D17602",
"name": "j_sub_D17B74_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17606",
- "ida_name": "j_sub_D17C38_2",
+ "ida_name": "sub_D17606",
"name": "j_sub_D17C38_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1760a",
- "ida_name": "j_sub_D17D18",
+ "ida_name": "sub_D1760A",
"name": "j_sub_D17D18",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1760e",
- "ida_name": "j_sub_D17D50_2",
+ "ida_name": "sub_D1760E",
"name": "j_sub_D17D50_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17612",
- "ida_name": "asd_stream_enable_toggle_cfg8",
+ "ida_name": "sub_D17612",
"name": "asd_stream_enable_toggle_cfg8",
"size": 6,
"tier": "EXACT"
@@ -9914,98 +9914,98 @@
},
{
"addr": "0xd1761c",
- "ida_name": "j_sub_D1819C_2",
+ "ida_name": "sub_D1761C",
"name": "j_sub_D1819C_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17620",
- "ida_name": "asd_dio_desc_D331B4",
+ "ida_name": "sub_D17620",
"name": "asd_dio_desc_D331B4",
"size": 256,
"tier": "EXACT"
},
{
"addr": "0xd17728",
- "ida_name": "j_sub_D18518_7",
+ "ida_name": "sub_D17728",
"name": "j_sub_D18518_7",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1772c",
- "ida_name": "j_sub_D185B8_2",
+ "ida_name": "sub_D1772C",
"name": "j_sub_D185B8_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17730",
- "ida_name": "j_sub_D185EC_2",
+ "ida_name": "sub_D17730",
"name": "j_sub_D185EC_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17734",
- "ida_name": "j_sub_D187C4_2",
+ "ida_name": "sub_D17734",
"name": "j_sub_D187C4_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17738",
- "ida_name": "j_sub_D188E8_2",
+ "ida_name": "sub_D17738",
"name": "j_sub_D188E8_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1773c",
- "ida_name": "j_sub_D18A60",
+ "ida_name": "sub_D1773C",
"name": "j_sub_D18A60",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17740",
- "ida_name": "j_sub_D18B10",
+ "ida_name": "sub_D17740",
"name": "j_sub_D18B10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17744",
- "ida_name": "j_sub_D17B74_3",
+ "ida_name": "sub_D17744",
"name": "j_sub_D17B74_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17748",
- "ida_name": "j_sub_D17C38_3",
+ "ida_name": "sub_D17748",
"name": "j_sub_D17C38_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1774c",
- "ida_name": "j_sub_D17D18_0",
+ "ida_name": "sub_D1774C",
"name": "j_sub_D17D18_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17750",
- "ida_name": "j_sub_D17D50_3",
+ "ida_name": "sub_D17750",
"name": "j_sub_D17D50_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17754",
- "ida_name": "asd_stream_enable_toggle_cfg9",
+ "ida_name": "sub_D17754",
"name": "asd_stream_enable_toggle_cfg9",
"size": 6,
"tier": "EXACT"
@@ -10019,98 +10019,98 @@
},
{
"addr": "0xd1775e",
- "ida_name": "j_sub_D1819C_3",
+ "ida_name": "sub_D1775E",
"name": "j_sub_D1819C_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17764",
- "ida_name": "asd_dio_desc_D331DC",
+ "ida_name": "sub_D17764",
"name": "asd_dio_desc_D331DC",
"size": 334,
"tier": "EXACT"
},
{
"addr": "0xd178c8",
- "ida_name": "j_sub_D18518_8",
+ "ida_name": "sub_D178C8",
"name": "j_sub_D18518_8",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178cc",
- "ida_name": "j_sub_D185B8_3",
+ "ida_name": "sub_D178CC",
"name": "j_sub_D185B8_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178d0",
- "ida_name": "j_sub_D185EC_3",
+ "ida_name": "sub_D178D0",
"name": "j_sub_D185EC_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178d4",
- "ida_name": "j_sub_D187C4_3",
+ "ida_name": "sub_D178D4",
"name": "j_sub_D187C4_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178d8",
- "ida_name": "j_sub_D188E8_3",
+ "ida_name": "sub_D178D8",
"name": "j_sub_D188E8_3",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178dc",
- "ida_name": "j_sub_D18A60_0",
+ "ida_name": "sub_D178DC",
"name": "j_sub_D18A60_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178e0",
- "ida_name": "j_sub_D18B10_0",
+ "ida_name": "sub_D178E0",
"name": "j_sub_D18B10_0",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178e4",
- "ida_name": "j_sub_D17B74_4",
+ "ida_name": "sub_D178E4",
"name": "j_sub_D17B74_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178e8",
- "ida_name": "j_sub_D17C38_4",
+ "ida_name": "sub_D178E8",
"name": "j_sub_D17C38_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178ec",
- "ida_name": "j_sub_D17C94_2",
+ "ida_name": "sub_D178EC",
"name": "j_sub_D17C94_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178f0",
- "ida_name": "j_sub_D17D50_4",
+ "ida_name": "sub_D178F0",
"name": "j_sub_D17D50_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd178f4",
- "ida_name": "asd_stream_enable_toggle_cfg10",
+ "ida_name": "sub_D178F4",
"name": "asd_stream_enable_toggle_cfg10",
"size": 6,
"tier": "EXACT"
@@ -10124,175 +10124,175 @@
},
{
"addr": "0xd178fe",
- "ida_name": "j_sub_D1819C_4",
+ "ida_name": "sub_D178FE",
"name": "j_sub_D1819C_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17902",
- "ida_name": "j_sub_D18334_1",
+ "ida_name": "sub_D17902",
"name": "j_sub_D18334_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17906",
- "ida_name": "j_sub_D18404_1",
+ "ida_name": "sub_D17906",
"name": "j_sub_D18404_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd1790a",
- "ida_name": "j_sub_D18478_1",
+ "ida_name": "sub_D1790A",
"name": "j_sub_D18478_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17910",
- "ida_name": "asd_dio_desc_D33228",
+ "ida_name": "sub_D17910",
"name": "asd_dio_desc_D33228",
"size": 254,
"tier": "EXACT"
},
{
"addr": "0xd17a14",
- "ida_name": "j_sub_D18518_9",
+ "ida_name": "sub_D17A14",
"name": "j_sub_D18518_9",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a18",
- "ida_name": "j_sub_D185B8_4",
+ "ida_name": "sub_D17A18",
"name": "j_sub_D185B8_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a1c",
- "ida_name": "j_asd_dio_read_pair",
+ "ida_name": "sub_D17A1C",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd17a20",
- "ida_name": "j_sub_D187C4_4",
+ "ida_name": "sub_D17A20",
"name": "j_sub_D187C4_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a24",
- "ida_name": "j_sub_D188E8_4",
+ "ida_name": "sub_D17A24",
"name": "j_sub_D188E8_4",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a28",
- "ida_name": "asd_aux_transfer_block_cfg3",
+ "ida_name": "sub_D17A28",
"name": "asd_aux_transfer_block_cfg3",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd17a2e",
- "ida_name": "j_sub_D18A64_2",
+ "ida_name": "sub_D17A2E",
"name": "j_sub_D18A64_2",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a32",
- "ida_name": "j_sub_D17B74_5",
+ "ida_name": "sub_D17A32",
"name": "j_sub_D17B74_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a36",
- "ida_name": "j_sub_D17C38_5",
+ "ida_name": "sub_D17A36",
"name": "j_sub_D17C38_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a3a",
- "ida_name": "j_sub_D17D1C",
+ "ida_name": "sub_D17A3A",
"name": "j_sub_D17D1C",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a3e",
- "ida_name": "j_sub_D17D50_5",
+ "ida_name": "sub_D17A3E",
"name": "j_sub_D17D50_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a42",
- "ida_name": "asd_stream_op_D17DD0_on",
+ "ida_name": "sub_D17A42",
"name": "asd_stream_op_D17DD0_on",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd17a48",
- "ida_name": "j_sub_D17FFC",
+ "ida_name": "sub_D17A48",
"name": "j_sub_D17FFC",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a4c",
- "ida_name": "j_sub_D18200",
+ "ida_name": "sub_D17A4C",
"name": "j_sub_D18200",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17a50",
- "ida_name": "asd_dio_desc_D33250",
+ "ida_name": "sub_D17A50",
"name": "asd_dio_desc_D33250",
"size": 256,
"tier": "EXACT"
},
{
"addr": "0xd17b58",
- "ida_name": "j_sub_D18518_10",
+ "ida_name": "sub_D17B58",
"name": "j_sub_D18518_10",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17b5c",
- "ida_name": "j_sub_D185B8_5",
+ "ida_name": "sub_D17B5C",
"name": "j_sub_D185B8_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17b60",
- "ida_name": "j_asd_dio_read_pair_0",
+ "ida_name": "sub_D17B60",
"name": null,
"size": 4,
"tier": "none"
},
{
"addr": "0xd17b64",
- "ida_name": "j_sub_D187C4_5",
+ "ida_name": "sub_D17B64",
"name": "j_sub_D187C4_5",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17b68",
- "ida_name": "j_sub_D188E8_5",
+ "ida_name": "sub_D17B68",
"name": "j_sub_D188E8_5",
"size": 4,
"tier": "EXACT"
@@ -10306,56 +10306,56 @@
},
{
"addr": "0xd17b70",
- "ida_name": "j_sub_D18B10_1",
+ "ida_name": "sub_D17B70",
"name": "j_sub_D18B10_1",
"size": 4,
"tier": "EXACT"
},
{
"addr": "0xd17b74",
- "ida_name": "asd_dio_set_pair",
+ "ida_name": "sub_D17B74",
"name": "asd_dio_set_pair",
"size": 78,
"tier": "EXACT"
},
{
"addr": "0xd17bc4",
- "ida_name": "asd_aux_idle_check",
+ "ida_name": "sub_D17BC4",
"name": "asd_aux_idle_check",
"size": 52,
"tier": "EXACT"
},
{
"addr": "0xd17bfc",
- "ida_name": "asd_call_D17BC4_if_zero",
+ "ida_name": "sub_D17BFC",
"name": "asd_call_D17BC4_if_zero",
"size": 14,
"tier": "EXACT"
},
{
"addr": "0xd17c0c",
- "ida_name": "asd_reg_read_17C0C",
+ "ida_name": "sub_D17C0C",
"name": "asd_reg_read_17C0C",
"size": 38,
"tier": "EXACT"
},
{
"addr": "0xd17c38",
- "ida_name": "asd_get_off_D17FF8_field8",
+ "ida_name": "sub_D17C38",
"name": "asd_get_off_D17FF8_field8",
"size": 16,
"tier": "EXACT"
},
{
"addr": "0xd17c48",
- "ida_name": "asd_dio_disable_all",
+ "ida_name": "sub_D17C48",
"name": "asd_dio_disable_all",
"size": 74,
"tier": "EXACT"
},
{
"addr": "0xd17c94",
- "ida_name": "asd_dio_enable_all",
+ "ida_name": "sub_D17C94",
"name": "asd_dio_enable_all",
"size": 128,
"tier": "EXACT"
@@ -10376,133 +10376,133 @@
},
{
"addr": "0xd17d20",
- "ida_name": "asd_stream_reset",
+ "ida_name": "sub_D17D20",
"name": "asd_stream_reset",
"size": 46,
"tier": "EXACT"
},
{
"addr": "0xd17d50",
- "ida_name": "asd_dio_current_instance_op",
+ "ida_name": "sub_D17D50",
"name": "asd_dio_current_instance_op",
"size": 82,
"tier": "EXACT"
},
{
"addr": "0xd17da4",
- "ida_name": "asd_stream_enable_toggle",
+ "ida_name": "sub_D17DA4",
"name": "asd_stream_enable_toggle",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd17dd0",
- "ida_name": "asd_stream_enable_toggle_v2",
+ "ida_name": "sub_D17DD0",
"name": "asd_stream_enable_toggle_v2",
"size": 44,
"tier": "EXACT"
},
{
"addr": "0xd18148",
- "ida_name": "asd_dio_apply_mask",
+ "ida_name": "sub_D18148",
"name": "asd_dio_apply_mask",
"size": 78,
"tier": "EXACT"
},
{
"addr": "0xd1819c",
- "ida_name": "asd_link_enable_aux",
+ "ida_name": "sub_D1819C",
"name": "asd_link_enable_aux",
"size": 94,
"tier": "EXACT"
},
{
"addr": "0xd18200",
- "ida_name": "asd_link_enable_aux_v2",
+ "ida_name": "sub_D18200",
"name": "asd_link_enable_aux_v2",
"size": 94,
"tier": "EXACT"
},
{
"addr": "0xd18264",
- "ida_name": "asd_aux_write_block",
+ "ida_name": "sub_D18264",
"name": "asd_aux_write_block",
"size": 206,
"tier": "EXACT"
},
{
"addr": "0xd18334",
- "ida_name": "asd_dio_read_block10",
+ "ida_name": "sub_D18334",
"name": "asd_dio_read_block10",
"size": 124,
"tier": "EXACT"
},
{
"addr": "0xd183b0",
- "ida_name": "asd_dio_write_clear_seq",
+ "ida_name": "sub_D183B0",
"name": "asd_dio_write_clear_seq",
"size": 74,
"tier": "EXACT"
},
{
"addr": "0xd18404",
- "ida_name": "asd_dio_read_block",
+ "ida_name": "sub_D18404",
"name": "asd_dio_read_block",
"size": 116,
"tier": "EXACT"
},
{
"addr": "0xd18478",
- "ida_name": "asd_get_link_reg_offsets",
+ "ida_name": "sub_D18478",
"name": "asd_get_link_reg_offsets",
"size": 76,
"tier": "EXACT"
},
{
"addr": "0xd184c4",
- "ida_name": "asd_store_link_config",
+ "ida_name": "sub_D184C4",
"name": "asd_store_link_config",
"size": 74,
"tier": "EXACT"
},
{
"addr": "0xd18518",
- "ida_name": "asd_state_not_1_cfg0",
+ "ida_name": "sub_D18518",
"name": "asd_state_not_1_cfg0",
"size": 34,
"tier": "EXACT"
},
{
"addr": "0xd1853c",
- "ida_name": "asd_stream_slot_update",
+ "ida_name": "sub_D1853C",
"name": "asd_stream_slot_update",
"size": 124,
"tier": "EXACT"
},
{
"addr": "0xd185b8",
- "ida_name": "asd_dio_idle_check",
+ "ida_name": "sub_D185B8",
"name": "asd_dio_idle_check",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd185ec",
- "ida_name": "asd_dio_read_pair",
+ "ida_name": "sub_D185EC",
"name": "asd_dio_read_pair",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd18660",
- "ida_name": "asd_link_trace_loop",
+ "ida_name": "sub_D18660",
"name": "asd_link_trace_loop",
"size": 280,
"tier": "EXACT"
},
{
"addr": "0xd18780",
- "ida_name": "asd_irq_task_D42794",
+ "ida_name": "sub_D18780",
"name": "asd_irq_task_D42794",
"size": 28,
"tier": "EXACT"
@@ -10516,70 +10516,70 @@
},
{
"addr": "0xd187c4",
- "ida_name": "asd_dio_program_regs",
+ "ida_name": "sub_D187C4",
"name": "asd_dio_program_regs",
"size": 88,
"tier": "EXACT"
},
{
"addr": "0xd18828",
- "ida_name": "asd_reg_read_1419C_cfg0",
+ "ida_name": "sub_D18828",
"name": "asd_reg_read_1419C_cfg0",
"size": 40,
"tier": "EXACT"
},
{
"addr": "0xd18850",
- "ida_name": "asd_reg_read_141BA_cfg0",
+ "ida_name": "sub_D18850",
"name": "asd_reg_read_141BA_cfg0",
"size": 34,
"tier": "EXACT"
},
{
"addr": "0xd18878",
- "ida_name": "asd_reg_read_18878",
+ "ida_name": "sub_D18878",
"name": "asd_reg_read_18878",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd18898",
- "ida_name": "asd_reg_read_18898",
+ "ida_name": "sub_D18898",
"name": "asd_reg_read_18898",
"size": 36,
"tier": "EXACT"
},
{
"addr": "0xd188bc",
- "ida_name": "asd_reg_read_188BC",
+ "ida_name": "sub_D188BC",
"name": "asd_reg_read_188BC",
"size": 30,
"tier": "EXACT"
},
{
"addr": "0xd188e0",
- "ida_name": "asd_set_D33308",
+ "ida_name": "sub_D188E0",
"name": "asd_set_D33308",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd188e8",
- "ida_name": "asd_aux_op_D1891C",
+ "ida_name": "sub_D188E8",
"name": "asd_aux_op_D1891C",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd1891c",
- "ida_name": "asd_dio_write_verify",
+ "ida_name": "sub_D1891C",
"name": "asd_dio_write_verify",
"size": 96,
"tier": "EXACT"
},
{
"addr": "0xd18984",
- "ida_name": "asd_aux_transfer_block",
+ "ida_name": "sub_D18984",
"name": "asd_aux_transfer_block",
"size": 218,
"tier": "EXACT"
@@ -10593,7 +10593,7 @@
},
{
"addr": "0xd18a64",
- "ida_name": "asd_dio_write_packed",
+ "ida_name": "sub_D18A64",
"name": "asd_dio_write_packed",
"size": 158,
"tier": "EXACT"
@@ -10607,252 +10607,252 @@
},
{
"addr": "0xd18b14",
- "ida_name": "asd_opt_cb_D49834",
+ "ida_name": "sub_D18B14",
"name": "asd_opt_cb_D49834",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd18b20",
- "ida_name": "asd_get_D49800",
+ "ida_name": "sub_D18B20",
"name": "asd_get_D49800",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd18b28",
- "ida_name": "asd_get_D49810",
+ "ida_name": "sub_D18B28",
"name": "asd_get_D49810",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd18b30",
- "ida_name": "asd_get_D49814",
+ "ida_name": "sub_D18B30",
"name": "asd_get_D49814",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd18b38",
- "ida_name": "asd_get_D49818",
+ "ida_name": "sub_D18B38",
"name": "asd_get_D49818",
"size": 6,
"tier": "EXACT"
},
{
"addr": "0xd18b64",
- "ida_name": "asd_build_aux_ops",
+ "ida_name": "sub_D18B64",
"name": "asd_build_aux_ops",
"size": 884,
"tier": "EXACT"
},
{
"addr": "0xd19154",
- "ida_name": "asd_opt_cb_D497F8",
+ "ida_name": "sub_D19154",
"name": "asd_opt_cb_D497F8",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd19160",
- "ida_name": "asd_opt_cb_D497F4",
+ "ida_name": "sub_D19160",
"name": "asd_opt_cb_D497F4",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd1916c",
- "ida_name": "asd_opt_cb_D497F0",
+ "ida_name": "sub_D1916C",
"name": "asd_opt_cb_D497F0",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd19178",
- "ida_name": "asd_hdcp2_sub_19178",
+ "ida_name": "sub_D19178",
"name": "asd_hdcp2_sub_19178",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd19184",
- "ida_name": "asd_opt_cb_D497FC",
+ "ida_name": "sub_D19184",
"name": "asd_opt_cb_D497FC",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd19190",
- "ida_name": "asd_opt_cb_D49828",
+ "ida_name": "sub_D19190",
"name": "asd_opt_cb_D49828",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd1919c",
- "ida_name": "asd_opt_cb_D4982C",
+ "ida_name": "sub_D1919C",
"name": "asd_opt_cb_D4982C",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd191a8",
- "ida_name": "asd_aux_ops_init",
+ "ida_name": "sub_D191A8",
"name": "asd_aux_ops_init",
"size": 56,
"tier": "EXACT"
},
{
"addr": "0xd191e0",
- "ida_name": "asd_topo_sub_191E0",
+ "ida_name": "sub_D191E0",
"name": "asd_topo_sub_191E0",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd191f8",
- "ida_name": "asd_opt_cb_D49830",
+ "ida_name": "sub_D191F8",
"name": "asd_opt_cb_D49830",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd19204",
- "ida_name": "asd_link_sub_19204",
+ "ida_name": "sub_D19204",
"name": "asd_link_sub_19204",
"size": 38,
"tier": "EXACT"
},
{
"addr": "0xd1922c",
- "ida_name": "asd_opt_cb_D49824",
+ "ida_name": "sub_D1922C",
"name": "asd_opt_cb_D49824",
"size": 12,
"tier": "EXACT"
},
{
"addr": "0xd1923c",
- "ida_name": "asd_reg_poll_seq",
+ "ida_name": "sub_D1923C",
"name": "asd_reg_poll_seq",
"size": 136,
"tier": "EXACT"
},
{
"addr": "0xd192c4",
- "ida_name": "asd_verify_reg_triplet",
+ "ida_name": "sub_D192C4",
"name": "asd_verify_reg_triplet",
"size": 98,
"tier": "EXACT"
},
{
"addr": "0xd19328",
- "ida_name": "asd_reg_write_19328",
+ "ida_name": "sub_D19328",
"name": "asd_reg_write_19328",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd19394",
- "ida_name": "asd_reg_write_19394",
+ "ida_name": "sub_D19394",
"name": "asd_reg_write_19394",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd19400",
- "ida_name": "asd_reg_write_19400",
+ "ida_name": "sub_D19400",
"name": "asd_reg_write_19400",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd1946c",
- "ida_name": "asd_reg_write_1946C",
+ "ida_name": "sub_D1946C",
"name": "asd_reg_write_1946C",
"size": 136,
"tier": "EXACT"
},
{
"addr": "0xd194f4",
- "ida_name": "asd_reg_write_1946C_cfg0",
+ "ida_name": "sub_D194F4",
"name": "asd_reg_write_1946C_cfg0",
"size": 48,
"tier": "EXACT"
},
{
"addr": "0xd19524",
- "ida_name": "asd_reg_write_19524",
+ "ida_name": "sub_D19524",
"name": "asd_reg_write_19524",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd19594",
- "ida_name": "asd_reg_write_19594",
+ "ida_name": "sub_D19594",
"name": "asd_reg_write_19594",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd19600",
- "ida_name": "asd_reg_write_19600",
+ "ida_name": "sub_D19600",
"name": "asd_reg_write_19600",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd19670",
- "ida_name": "asd_reg_write_19670",
+ "ida_name": "sub_D19670",
"name": "asd_reg_write_19670",
"size": 106,
"tier": "EXACT"
},
{
"addr": "0xd196e4",
- "ida_name": "asd_reg_write_196E4",
+ "ida_name": "sub_D196E4",
"name": "asd_reg_write_196E4",
"size": 60,
"tier": "EXACT"
},
{
"addr": "0xd19724",
- "ida_name": "asd_reg_write_19724",
+ "ida_name": "sub_D19724",
"name": "asd_reg_write_19724",
"size": 108,
"tier": "EXACT"
},
{
"addr": "0xd19798",
- "ida_name": "asd_reg_rw_19798",
+ "ida_name": "sub_D19798",
"name": "asd_reg_rw_19798",
"size": 124,
"tier": "EXACT"
},
{
"addr": "0xd1981c",
- "ida_name": "asd_reg_write_1981C",
+ "ida_name": "sub_D1981C",
"name": "asd_reg_write_1981C",
"size": 20,
"tier": "EXACT"
},
{
"addr": "0xd19830",
- "ida_name": "asd_hwop_094_v1",
+ "ida_name": "sub_D19830",
"name": "asd_hwop_094_v1",
"size": 10,
"tier": "EXACT"
},
{
"addr": "0xd1983a",
- "ida_name": "asd_hwop_094_v0",
+ "ida_name": "sub_D1983A",
"name": "asd_hwop_094_v0",
"size": 8,
"tier": "EXACT"
},
{
"addr": "0xd19844",
- "ida_name": "udiv32",
+ "ida_name": "sub_D19844",
"name": "udiv32",
"size": 36,
"tier": "EXACT"
@@ -10866,7 +10866,7 @@
"MNEM": 0,
"ambiguous": 109,
"cmd_protos": 0,
- "comments": 995,
+ "comments": 1002,
"dispatch_conflict": 0,
"none": 3,
"protos": 1434,