From 86483ce1faa360a73e91f599053dfda169b33016 Mon Sep 17 00:00:00 2001 From: Matiq Date: Sun, 16 Aug 2026 21:35:22 +0300 Subject: [PATCH] chore: block-processor decompiled (sp_*.txt); FFT plan/giants + spectral chain documented --- focus_decomp.txt | 260 +++++++++++++++++++---------------------------- focus_list.txt | 2 +- sp_18052e260.txt | 75 ++++++++++++++ sp_180535880.txt | 37 +++++++ sp_180536300.txt | 53 ++++++++++ sp_180536f90.txt | 49 +++++++++ 6 files changed, 322 insertions(+), 154 deletions(-) create mode 100644 sp_18052e260.txt create mode 100644 sp_180535880.txt create mode 100644 sp_180536300.txt create mode 100644 sp_180536f90.txt diff --git a/focus_decomp.txt b/focus_decomp.txt index d163990..3e9ea0c 100644 --- a/focus_decomp.txt +++ b/focus_decomp.txt @@ -1,71 +1,53 @@ -############ FUN_ 18052da00 size=85 ############ +############ FUN_ 180536300 size=475 ############ -void FUN_18052da00(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4) +void FUN_180536300(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4, + int param_5,undefined8 param_6,longlong param_7) { - int iVar1; + longlong lVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + float fVar5; + int iVar6; + int iVar7; - iVar1 = __std_type_info_compare(0x182650db8,0x182650db8); - if (iVar1 == 0) { + iVar7 = *(int *)(param_1 + 0x240080); + lVar1 = param_7 + (longlong)(param_5 * 8) * 4; + lVar2 = lVar1 + (longlong)param_5 * 4; + fVar5 = *(float *)(param_1 + 0x24); + lVar3 = lVar2 + (longlong)(param_5 * 2) * 4; + lVar4 = lVar3 + (longlong)(param_5 * 2) * 4; + iVar6 = __std_type_info_compare(0x182650db8,0x182650db8); + FUN_18052da00(lVar1,param_3,(float)(DAT_1824c4248 / (double)((float)iVar7 * fVar5)),param_5); + if (*(char *)(param_4 + 0x810) == '\0') { + FUN_18052db50(lVar3,DAT_1824c3ea4,param_5); + FUN_18052db50(lVar4,0,param_5); + if (0 < *(int *)(param_4 + 0x814)) { + if (iVar6 == 0) { + FUN_180535880(); + } + else { + FUN_180536f90(lVar2,param_7,param_4,lVar1,param_5); + } + iVar7 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar7 == 0) { /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(param_2,param_3); + thunk_FUN_181ba94b0(); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(lVar2,param_7,param_5); + } + if ((1 < *(int *)(param_4 + 0x814)) && + (*(char *)((longlong)(*(int *)(param_4 + 0x814) + -1) + 0x818 + param_4) == '\0')) { + FUN_18052d990(lVar4,lVar3,param_5); + } + FUN_18052dbc0(param_2,lVar4,param_5); } - /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(param_2,(double)(float)param_3,param_1,param_4); -} - - - -############ FUN_ 18052db50 size=104 ############ - -void FUN_18052db50(undefined8 param_1,undefined8 param_2,undefined4 param_3) - -{ - int iVar1; - - iVar1 = __std_type_info_compare(0x182650db8,0x182650db8); - if (iVar1 == 0) { - /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(param_2); + else { + FUN_18052db50(param_2,DAT_1824c3ea4,param_5); } - /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0((double)(float)param_2,param_1,param_3); -} - - - -############ FUN_ 18052d990 size=97 ############ - -void FUN_18052d990(undefined8 param_1,undefined8 param_2,undefined4 param_3) - -{ - int iVar1; - - iVar1 = __std_type_info_compare(0x182650db8,0x182650db8); - if (iVar1 == 0) { - /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(); - } - /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(param_2,param_1,param_3); -} - - - -############ FUN_ 18052dbc0 size=97 ############ - -void FUN_18052dbc0(undefined8 param_1,undefined8 param_2,undefined4 param_3) - -{ - int iVar1; - - iVar1 = __std_type_info_compare(0x182650db8,0x182650db8); - if (iVar1 == 0) { - /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(); - } - /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(param_2,param_1,param_3); + return; } @@ -158,105 +140,77 @@ void FUN_180536f90(undefined8 param_1,undefined8 param_2,undefined8 *param_3,und -############ FUN_ 18052da70 size=78 ############ +############ FUN_ 18052e260 size=577 ############ -void FUN_18052da70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4) +undefined8 FUN_18052e260(longlong param_1,int param_2) { - int iVar1; + undefined8 uVar1; + int iVar2; + undefined4 uVar3; + int iVar4; + int iVar5; + uint uVar6; + undefined8 uVar7; + longlong lVar8; + longlong *plVar9; + undefined4 uVar10; - iVar1 = __std_type_info_compare(0x182650db8,0x182650db8); - if (iVar1 == 0) { - /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(); + iVar5 = *(int *)(param_1 + 100) / 2 + 1; + if (*(char *)(param_1 + 0x240464) != '\0') { + *(undefined1 *)(param_1 + 0x240464) = 0; + FUN_18052fbd0(param_1 + 0x3d8); } + uVar1 = *(undefined8 *)(param_1 + 0x540788); + iVar4 = *(int *)(param_1 + 0x2404d8); + if (iVar4 < 1) { + if (*(char *)(param_1 + 0x5408ad) != '\0') { + *(undefined1 *)(param_1 + 0x5408ad) = 0; + *(int *)(param_1 + 0x2404d8) = iVar5; + } + return 0; + } + iVar2 = iVar5; + if (iVar4 < iVar5) { + iVar2 = iVar4; + } + *(int *)(param_1 + 0x2404d8) = iVar2; + if (iVar2 < param_2) { + param_2 = iVar2; + } + uVar6 = 0; + if (0 < *(int *)(param_1 + 0x2404d0)) { + plVar9 = (longlong *)(param_1 + 0x5407e8); + lVar8 = 0; + do { + if (uVar6 < *(uint *)(param_1 + 0x444)) { + uVar7 = *(undefined8 *)(lVar8 + *(longlong *)(param_1 + 0x438)); + } + else { + uVar7 = 0; + } + FUN_180536300(param_1 + 0x3d8,*plVar9 + (longlong)(iVar5 - iVar2) * 4, + *(longlong *)(param_1 + 0x540758) + (longlong)(iVar5 - iVar2) * 4,uVar7,param_2) + ; + uVar6 = uVar6 + 1; + plVar9 = plVar9 + 2; + lVar8 = lVar8 + 8; + } while ((int)uVar6 < *(int *)(param_1 + 0x2404d0)); + } + *(int *)(param_1 + 0x2404d8) = *(int *)(param_1 + 0x2404d8) - param_2; + if ((*(int *)(param_1 + 0x2404d8) < 1) && (0 < *(int *)(param_1 + 0x30))) { + expf(DAT_1824c4208); + uVar3 = DAT_1824c3ea4; + uVar10 = (undefined4)DAT_1824c4140; + iVar4 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar4 != 0) { /* WARNING: Subroutine does not return */ - thunk_FUN_181ba94b0(param_2,param_3,param_1,param_4); -} - - - -############ FUN_ 18052dd30 size=555 ############ - -void FUN_18052dd30(longlong param_1) - -{ - if ((0 < *(int *)(param_1 + 0x130)) && (*(longlong *)(param_1 + 0x128) != 0)) { - FUN_1800010c0(); + thunk_FUN_181ba94b0(uVar10,uVar1,iVar5); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(uVar3); } - *(undefined8 *)(param_1 + 0x128) = 0; - *(undefined4 *)(param_1 + 0x130) = 0; - if ((0 < *(int *)(param_1 + 0x120)) && (*(longlong *)(param_1 + 0x118) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0x118) = 0; - *(undefined4 *)(param_1 + 0x120) = 0; - if ((0 < *(int *)(param_1 + 0x110)) && (*(longlong *)(param_1 + 0x108) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0x108) = 0; - *(undefined4 *)(param_1 + 0x110) = 0; - if ((0 < *(int *)(param_1 + 0x100)) && (*(longlong *)(param_1 + 0xf8) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0xf8) = 0; - *(undefined4 *)(param_1 + 0x100) = 0; - if ((0 < *(int *)(param_1 + 0xf0)) && (*(longlong *)(param_1 + 0xe8) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0xe8) = 0; - *(undefined4 *)(param_1 + 0xf0) = 0; - if ((0 < *(int *)(param_1 + 0xe0)) && (*(longlong *)(param_1 + 0xd8) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0xd8) = 0; - *(undefined4 *)(param_1 + 0xe0) = 0; - if ((0 < *(int *)(param_1 + 0xd0)) && (*(longlong *)(param_1 + 200) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 200) = 0; - *(undefined4 *)(param_1 + 0xd0) = 0; - if ((0 < *(int *)(param_1 + 0xc0)) && (*(longlong *)(param_1 + 0xb8) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0xb8) = 0; - *(undefined4 *)(param_1 + 0xc0) = 0; - if ((0 < *(int *)(param_1 + 0xb0)) && (*(longlong *)(param_1 + 0xa8) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0xa8) = 0; - *(undefined4 *)(param_1 + 0xb0) = 0; - if ((0 < *(int *)(param_1 + 0xa0)) && (*(longlong *)(param_1 + 0x98) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0x98) = 0; - *(undefined4 *)(param_1 + 0xa0) = 0; - if ((0 < *(int *)(param_1 + 0x90)) && (*(longlong *)(param_1 + 0x88) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0x88) = 0; - *(undefined4 *)(param_1 + 0x90) = 0; - if ((0 < *(int *)(param_1 + 0x80)) && (*(longlong *)(param_1 + 0x78) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0x78) = 0; - *(undefined4 *)(param_1 + 0x80) = 0; - if ((0 < *(int *)(param_1 + 0x70)) && (*(longlong *)(param_1 + 0x68) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0x68) = 0; - *(undefined4 *)(param_1 + 0x70) = 0; - if ((0 < *(int *)(param_1 + 0x60)) && (*(longlong *)(param_1 + 0x58) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0x58) = 0; - *(undefined4 *)(param_1 + 0x60) = 0; - if ((0 < *(int *)(param_1 + 0x50)) && (*(longlong *)(param_1 + 0x48) != 0)) { - FUN_1800010c0(); - } - *(undefined8 *)(param_1 + 0x48) = 0; - *(undefined4 *)(param_1 + 0x50) = 0; - return; + return 1; } diff --git a/focus_list.txt b/focus_list.txt index 8d9c4bc..37458b8 100644 --- a/focus_list.txt +++ b/focus_list.txt @@ -1 +1 @@ -18052da00,18052db50,18052d990,18052dbc0,180535880,180536f90,18052da70,18052dd30 +180536300,180535880,180536f90,18052e260 diff --git a/sp_18052e260.txt b/sp_18052e260.txt new file mode 100644 index 0000000..2ce7ad9 --- /dev/null +++ b/sp_18052e260.txt @@ -0,0 +1,75 @@ +############ FUN_ 18052e260 + +undefined8 FUN_18052e260(longlong param_1,int param_2) + +{ + undefined8 uVar1; + int iVar2; + undefined4 uVar3; + int iVar4; + int iVar5; + uint uVar6; + undefined8 uVar7; + longlong lVar8; + longlong *plVar9; + undefined4 uVar10; + + iVar5 = *(int *)(param_1 + 100) / 2 + 1; + if (*(char *)(param_1 + 0x240464) != '\0') { + *(undefined1 *)(param_1 + 0x240464) = 0; + FUN_18052fbd0(param_1 + 0x3d8); + } + uVar1 = *(undefined8 *)(param_1 + 0x540788); + iVar4 = *(int *)(param_1 + 0x2404d8); + if (iVar4 < 1) { + if (*(char *)(param_1 + 0x5408ad) != '\0') { + *(undefined1 *)(param_1 + 0x5408ad) = 0; + *(int *)(param_1 + 0x2404d8) = iVar5; + } + return 0; + } + iVar2 = iVar5; + if (iVar4 < iVar5) { + iVar2 = iVar4; + } + *(int *)(param_1 + 0x2404d8) = iVar2; + if (iVar2 < param_2) { + param_2 = iVar2; + } + uVar6 = 0; + if (0 < *(int *)(param_1 + 0x2404d0)) { + plVar9 = (longlong *)(param_1 + 0x5407e8); + lVar8 = 0; + do { + if (uVar6 < *(uint *)(param_1 + 0x444)) { + uVar7 = *(undefined8 *)(lVar8 + *(longlong *)(param_1 + 0x438)); + } + else { + uVar7 = 0; + } + FUN_180536300(param_1 + 0x3d8,*plVar9 + (longlong)(iVar5 - iVar2) * 4, + *(longlong *)(param_1 + 0x540758) + (longlong)(iVar5 - iVar2) * 4,uVar7,param_2) + ; + uVar6 = uVar6 + 1; + plVar9 = plVar9 + 2; + lVar8 = lVar8 + 8; + } while ((int)uVar6 < *(int *)(param_1 + 0x2404d0)); + } + *(int *)(param_1 + 0x2404d8) = *(int *)(param_1 + 0x2404d8) - param_2; + if ((*(int *)(param_1 + 0x2404d8) < 1) && (0 < *(int *)(param_1 + 0x30))) { + expf(DAT_1824c4208); + uVar3 = DAT_1824c3ea4; + uVar10 = (undefined4)DAT_1824c4140; + iVar4 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar4 != 0) { + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(uVar10,uVar1,iVar5); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(uVar3); + } + return 1; +} + + + diff --git a/sp_180535880.txt b/sp_180535880.txt new file mode 100644 index 0000000..a1dd0ed --- /dev/null +++ b/sp_180535880.txt @@ -0,0 +1,37 @@ +############ FUN_ 180535880 + +/* WARNING: Removing unreachable block (ram,0x000180535987) */ +/* WARNING: Removing unreachable block (ram,0x0001805359d3) */ +/* WARNING: Removing unreachable block (ram,0x00018053598d) */ + +void FUN_180535880(undefined8 param_1,undefined8 param_2,undefined8 *param_3,undefined8 param_4, + undefined4 param_5) + +{ + double *pdVar1; + double *pdVar2; + undefined1 auStack_c8 [32]; + undefined8 local_a8; + float local_a0; + float local_9c; + float local_98; + float local_90; + float local_8c; + float local_88; + ulonglong local_80; + + local_80 = DAT_182615970 ^ (ulonglong)auStack_c8; + pdVar1 = (double *)*param_3; + pdVar2 = (double *)param_3[1]; + local_8c = (float)pdVar2[1]; + local_9c = (float)pdVar1[1]; + local_88 = (float)pdVar2[2]; + local_a0 = (float)*pdVar1; + local_90 = (float)*pdVar2; + local_98 = (float)pdVar1[2]; + local_a8 = param_4; + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(local_a0,param_2,param_5); +} + + diff --git a/sp_180536300.txt b/sp_180536300.txt new file mode 100644 index 0000000..1a0142b --- /dev/null +++ b/sp_180536300.txt @@ -0,0 +1,53 @@ +############ FUN_ 180536300 + +void FUN_180536300(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4, + int param_5,undefined8 param_6,longlong param_7) + +{ + longlong lVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + float fVar5; + int iVar6; + int iVar7; + + iVar7 = *(int *)(param_1 + 0x240080); + lVar1 = param_7 + (longlong)(param_5 * 8) * 4; + lVar2 = lVar1 + (longlong)param_5 * 4; + fVar5 = *(float *)(param_1 + 0x24); + lVar3 = lVar2 + (longlong)(param_5 * 2) * 4; + lVar4 = lVar3 + (longlong)(param_5 * 2) * 4; + iVar6 = __std_type_info_compare(0x182650db8,0x182650db8); + FUN_18052da00(lVar1,param_3,(float)(DAT_1824c4248 / (double)((float)iVar7 * fVar5)),param_5); + if (*(char *)(param_4 + 0x810) == '\0') { + FUN_18052db50(lVar3,DAT_1824c3ea4,param_5); + FUN_18052db50(lVar4,0,param_5); + if (0 < *(int *)(param_4 + 0x814)) { + if (iVar6 == 0) { + FUN_180535880(); + } + else { + FUN_180536f90(lVar2,param_7,param_4,lVar1,param_5); + } + iVar7 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar7 == 0) { + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(lVar2,param_7,param_5); + } + if ((1 < *(int *)(param_4 + 0x814)) && + (*(char *)((longlong)(*(int *)(param_4 + 0x814) + -1) + 0x818 + param_4) == '\0')) { + FUN_18052d990(lVar4,lVar3,param_5); + } + FUN_18052dbc0(param_2,lVar4,param_5); + } + else { + FUN_18052db50(param_2,DAT_1824c3ea4,param_5); + } + return; +} + + diff --git a/sp_180536f90.txt b/sp_180536f90.txt new file mode 100644 index 0000000..a869e8f --- /dev/null +++ b/sp_180536f90.txt @@ -0,0 +1,49 @@ +############ FUN_ 180536f90 + +/* WARNING: Removing unreachable block (ram,0x000180537079) */ +/* WARNING: Removing unreachable block (ram,0x0001805370c8) */ +/* WARNING: Removing unreachable block (ram,0x00018053707f) */ + +void FUN_180536f90(undefined8 param_1,undefined8 param_2,undefined8 *param_3,undefined8 param_4, + undefined4 param_5) + +{ + undefined8 *puVar1; + undefined8 *puVar2; + undefined1 auStack_f8 [32]; + undefined8 local_d8; + undefined8 local_c8; + undefined8 uStack_c0; + undefined8 local_b8; + undefined4 local_b0; + undefined4 uStack_ac; + undefined4 uStack_a8; + undefined4 uStack_a4; + undefined8 local_a0; + undefined4 local_98; + undefined4 uStack_94; + undefined4 uStack_90; + undefined4 uStack_8c; + ulonglong local_88; + + local_88 = DAT_182615970 ^ (ulonglong)auStack_f8; + puVar1 = (undefined8 *)*param_3; + puVar2 = (undefined8 *)param_3[1]; + local_b0 = *(undefined4 *)(puVar1 + 1); + uStack_ac = *(undefined4 *)((longlong)puVar1 + 0xc); + uStack_a8 = *(undefined4 *)(puVar1 + 2); + uStack_a4 = *(undefined4 *)((longlong)puVar1 + 0x14); + local_98 = *(undefined4 *)(puVar2 + 1); + uStack_94 = *(undefined4 *)((longlong)puVar2 + 0xc); + uStack_90 = *(undefined4 *)(puVar2 + 2); + uStack_8c = *(undefined4 *)((longlong)puVar2 + 0x14); + local_c8 = *puVar1; + local_a0 = *puVar2; + uStack_c0 = 0; + local_d8 = param_4; + local_b8 = local_c8; + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(&local_c8,param_2,param_5); +} + +