/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401f6560 FUN_1401f6560 * Pseudocode, not original source. */ void FUN_1401f6560(longlong param_1) { longlong *plVar1; uint uVar2; ulonglong uVar3; longlong lVar4; longlong lVar5; float fVar6; float fVar7; *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + 1; FUN_1401720a0(); lVar4 = *(longlong *)(param_1 + 0x10); while (lVar4 != 0) { lVar5 = *(longlong *)(lVar4 + 0x10); FUN_14004eb70(lVar4); plVar1 = *(longlong **)(param_1 + 0x50); if (plVar1 == (longlong *)0x0) { FUN_14016d970(lVar4); } else { (**(code **)(*plVar1 + 0x18))(plVar1,lVar4); } *(longlong *)(param_1 + 0x20) = *(longlong *)(param_1 + 0x20) + -1; lVar4 = lVar5; } 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) { uVar2 = FUN_1401c6a30(param_1,*(undefined8 *)(param_1 + 0x20)); if (*(longlong *)(param_1 + 8) != 0) { FUN_14016d970(); *(undefined8 *)(param_1 + 8) = 0; } lVar4 = 0; *(uint *)(param_1 + 0x28) = uVar2; fVar7 = (float)uVar2 * *(float *)(param_1 + 0x34); if ((9.223372e+18 < fVar7) && (fVar7 = fVar7 - 9.223372e+18, fVar7 < 9.223372e+18)) { lVar4 = -0x8000000000000000; } fVar6 = (float)uVar2 * *(float *)(param_1 + 0x30); lVar5 = 0; *(longlong *)(param_1 + 0x38) = (longlong)fVar7 + lVar4; if ((9.223372e+18 < fVar6) && (fVar6 = fVar6 - 9.223372e+18, fVar6 < 9.223372e+18)) { lVar5 = -0x8000000000000000; } uVar3 = (longlong)fVar6 + lVar5; if ((ulonglong)((longlong)fVar6 + lVar5) < 0x11) { uVar3 = 0; } *(ulonglong *)(param_1 + 0x40) = uVar3; } FUN_1401720a0(param_1); *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + -1; return; }