57 lines
1.7 KiB
C
57 lines
1.7 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401c62f0 FUN_1401c62f0
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1401c62f0(longlong param_1)
|
|
|
|
{
|
|
undefined8 *puVar1;
|
|
longlong *plVar2;
|
|
undefined8 uVar3;
|
|
int iVar4;
|
|
longlong lVar5;
|
|
|
|
FUN_14016db50();
|
|
if (0 < *(int *)(param_1 + 0x48)) {
|
|
FUN_14016f090(
|
|
L"CHeartbeatWorkThread must be cleaned up only after every work items are unregistered!"
|
|
);
|
|
}
|
|
*(undefined1 *)(param_1 + 0x80) = 0;
|
|
iVar4 = 0;
|
|
lVar5 = 0;
|
|
if (0 < *(int *)(param_1 + 0x68)) {
|
|
do {
|
|
if ((lVar5 < 0) || (*(int *)(param_1 + 0x68) <= iVar4)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6e0();
|
|
}
|
|
puVar1 = *(undefined8 **)(*(longlong *)(param_1 + 0x60) + lVar5 * 8);
|
|
uVar3 = 0;
|
|
if (puVar1 != (undefined8 *)0x0) {
|
|
uVar3 = *puVar1;
|
|
}
|
|
FUN_140199740(uVar3);
|
|
iVar4 = iVar4 + 1;
|
|
lVar5 = lVar5 + 1;
|
|
} while (iVar4 < *(int *)(param_1 + 0x68));
|
|
}
|
|
FUN_14016dbe0(param_1);
|
|
*(undefined ***)(param_1 + 0x50) = Proud::CFastArray<Proud::RefCount<Proud::Thread>,0>::vftable;
|
|
if (0 < *(int *)(param_1 + 0x68)) {
|
|
FUN_1401a7f40(*(undefined8 *)(param_1 + 0x60),(longlong)*(int *)(param_1 + 0x68));
|
|
}
|
|
if (*(longlong *)(param_1 + 0x60) != 0) {
|
|
plVar2 = *(longlong **)(param_1 + 0x58);
|
|
if (plVar2 == (longlong *)0x0) {
|
|
FUN_14016d970();
|
|
}
|
|
else {
|
|
(**(code **)(*plVar2 + 0x18))(plVar2,*(longlong *)(param_1 + 0x60));
|
|
}
|
|
}
|
|
FUN_1401c5f30(param_1 + 0x38);
|
|
FUN_14016dc00(param_1);
|
|
return;
|
|
}
|
|
|