/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401db2b0 FUN_1401db2b0 * Pseudocode, not original source. */ void FUN_1401db2b0(longlong param_1) { undefined8 *puVar1; void *pvVar2; longlong *plVar3; uint uVar4; ulonglong uVar5; longlong lVar6; longlong lVar7; float fVar8; float fVar9; *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + 1; FUN_1401720a0(); lVar6 = *(longlong *)(param_1 + 0x10); while (lVar6 != 0) { lVar7 = *(longlong *)(lVar6 + 0x10); if ((*(longlong *)(lVar6 + 8) != 0) && (*(longlong *)(*(longlong *)(lVar6 + 8) + 8) = *(longlong *)(*(longlong *)(lVar6 + 8) + 8) + -1, *(longlong *)(*(longlong *)(lVar6 + 8) + 8) == 0)) { puVar1 = *(undefined8 **)(lVar6 + 8); pvVar2 = (void *)*puVar1; if (pvVar2 != (void *)0x0) { FUN_1401c9600((longlong)pvVar2 + 8); operator_delete(pvVar2); } FUN_14016d970(puVar1); } plVar3 = *(longlong **)(param_1 + 0x50); if (plVar3 == (longlong *)0x0) { FUN_14016d970(lVar6); } else { (**(code **)(*plVar3 + 0x18))(plVar3,lVar6); } *(longlong *)(param_1 + 0x20) = *(longlong *)(param_1 + 0x20) + -1; lVar6 = lVar7; } FUN_14016d970(*(undefined8 *)(param_1 + 8)); *(undefined8 *)(param_1 + 8) = 0; *(undefined8 *)(param_1 + 0x20) = 0; *(undefined8 *)(param_1 + 0x10) = 0; *(undefined8 *)(param_1 + 0x18) = 0; FUN_1401720a0(param_1); if (*(int *)(param_1 + 0x48) == 0) { uVar4 = FUN_1401c6a30(param_1,*(undefined8 *)(param_1 + 0x20)); if (*(longlong *)(param_1 + 8) != 0) { FUN_14016d970(); *(undefined8 *)(param_1 + 8) = 0; } lVar6 = 0; *(uint *)(param_1 + 0x28) = uVar4; fVar9 = (float)uVar4 * *(float *)(param_1 + 0x34); if ((9.223372e+18 < fVar9) && (fVar9 = fVar9 - 9.223372e+18, fVar9 < 9.223372e+18)) { lVar6 = -0x8000000000000000; } fVar8 = (float)uVar4 * *(float *)(param_1 + 0x30); lVar7 = 0; *(longlong *)(param_1 + 0x38) = (longlong)fVar9 + lVar6; if ((9.223372e+18 < fVar8) && (fVar8 = fVar8 - 9.223372e+18, fVar8 < 9.223372e+18)) { lVar7 = -0x8000000000000000; } uVar5 = (longlong)fVar8 + lVar7; if ((ulonglong)((longlong)fVar8 + lVar7) < 0x11) { uVar5 = 0; } *(ulonglong *)(param_1 + 0x40) = uVar5; } FUN_1401720a0(param_1); *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + -1; return; }