chore: block-processor decompiled (sp_*.txt); FFT plan/giants + spectral chain documented

This commit is contained in:
2026-08-16 21:35:22 +03:00
parent cbbd82136c
commit 86483ce1fa
6 changed files with 322 additions and 154 deletions
+101 -147
View File
@@ -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) {
/* WARNING: Subroutine does not return */
thunk_FUN_181ba94b0(param_2,param_3);
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();
}
/* WARNING: Subroutine does not return */
thunk_FUN_181ba94b0(param_2,(double)(float)param_3,param_1,param_4);
else {
FUN_180536f90(lVar2,param_7,param_4,lVar1,param_5);
}
############ 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);
}
/* 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) {
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(param_2,param_1,param_3);
thunk_FUN_181ba94b0(lVar2,param_7,param_5);
}
############ 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();
if ((1 < *(int *)(param_4 + 0x814)) &&
(*(char *)((longlong)(*(int *)(param_4 + 0x814) + -1) + 0x818 + param_4) == '\0')) {
FUN_18052d990(lVar4,lVar3,param_5);
}
/* WARNING: Subroutine does not return */
thunk_FUN_181ba94b0(param_2,param_1,param_3);
FUN_18052dbc0(param_2,lVar4,param_5);
}
else {
FUN_18052db50(param_2,DAT_1824c3ea4,param_5);
}
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) {
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();
thunk_FUN_181ba94b0(uVar10,uVar1,iVar5);
}
/* WARNING: Subroutine does not return */
thunk_FUN_181ba94b0(param_2,param_3,param_1,param_4);
thunk_FUN_181ba94b0(uVar3);
}
############ FUN_ 18052dd30 size=555 ############
void FUN_18052dd30(longlong param_1)
{
if ((0 < *(int *)(param_1 + 0x130)) && (*(longlong *)(param_1 + 0x128) != 0)) {
FUN_1800010c0();
}
*(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;
}
+1 -1
View File
@@ -1 +1 @@
18052da00,18052db50,18052d990,18052dbc0,180535880,180536f90,18052da70,18052dd30
180536300,180535880,180536f90,18052e260
+75
View File
@@ -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;
}
+37
View File
@@ -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);
}
+53
View File
@@ -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;
}
+49
View File
@@ -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);
}