diff options
| author | user <user@clank> | 2026-10-01 15:36:17 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-10-01 15:36:17 +0200 |
| commit | fc0a99fbe3eb3df3062fb6f02f85d18f81fcbb72 (patch) | |
| tree | 70f9b1d728a34c367ef8fb2cf4efa1c23f763aea /fw/decomp | |
| parent | record all sixteen components in the struct audit, graded by how their size i... (diff) | |
| download | amd-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')
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, |
