server-re/decomp/DBCServer_Release_x64/full/functions/0x1401f5eb0.c

88 lines
2.6 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401f5eb0 FUN_1401f5eb0
* Pseudocode, not original source. */
void FUN_1401f5eb0(longlong param_1)
{
ulonglong *puVar1;
longlong lVar2;
longlong lVar3;
undefined8 *puVar4;
ulonglong uVar5;
ulonglong uVar6;
longlong lVar7;
ulonglong uVar8;
int iVar9;
double dVar10;
ulonglong *local_res8;
FUN_14016db50(param_1 + 0x10);
dVar10 = (double)FUN_1401eac50(*(undefined8 *)(param_1 + 8));
if (600.0 < dVar10 - *(double *)(param_1 + 0x128)) {
uVar8 = 0;
uVar5 = uVar8;
while (iVar9 = (int)uVar5, iVar9 != *(int *)(param_1 + 0x118)) {
if ((iVar9 < 0) || (*(int *)(param_1 + 0x118) <= iVar9)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
lVar7 = (longlong)iVar9;
lVar2 = *(longlong *)(param_1 + 0x110);
local_res8 = (ulonglong *)0x0;
lVar3 = *(longlong *)(lVar2 + lVar7 * 8);
if (lVar3 != 0) {
*(longlong *)(*(longlong *)(lVar2 + lVar7 * 8) + 8) = *(longlong *)(lVar3 + 8) + 1;
local_res8 = *(ulonglong **)(lVar2 + lVar7 * 8);
}
uVar5 = uVar8;
if (local_res8 != (ulonglong *)0x0) {
uVar5 = *local_res8;
}
if ((*(longlong **)(uVar5 + 0x10) != (longlong *)0x0) && (**(longlong **)(uVar5 + 0x10) != 0))
{
uVar5 = uVar8;
if (local_res8 != (ulonglong *)0x0) {
uVar5 = *local_res8;
}
uVar6 = uVar8;
if (*(ulonglong **)(uVar5 + 0x10) != (ulonglong *)0x0) {
uVar6 = **(ulonglong **)(uVar5 + 0x10);
}
FUN_14019c630(uVar6);
}
if (local_res8 != (ulonglong *)0x0) {
puVar1 = local_res8 + 1;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
puVar4 = (undefined8 *)*local_res8;
if (puVar4 != (undefined8 *)0x0) {
(**(code **)*puVar4)(puVar4,1);
}
FUN_14016d970(local_res8);
}
}
if (*(int *)(param_1 + 0x118) <= iVar9) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
uVar5 = (ulonglong)(iVar9 + 1);
}
uVar5 = uVar8;
if (*(longlong *)(param_1 + 0x70) != 0) {
uVar5 = *(ulonglong *)(param_1 + 0x60);
}
for (; uVar5 != 0; uVar5 = *(ulonglong *)(uVar5 + 0x10)) {
uVar6 = uVar8;
if (*(ulonglong **)(uVar5 + 8) != (ulonglong *)0x0) {
uVar6 = **(ulonglong **)(uVar5 + 8);
}
if (*(int *)(uVar6 + 0x2490) < 4) {
*(undefined8 *)(uVar6 + 0x2490) = 4;
}
}
}
FUN_14016dbe0(param_1 + 0x10);
return;
}