/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401eff00 FUN_1401eff00 * Pseudocode, not original source. */ void FUN_1401eff00(undefined8 *param_1) { longlong *plVar1; void *pvVar2; undefined8 *puVar3; longlong lVar4; undefined8 uVar5; *param_1 = Proud::CNetClientManager::vftable; param_1[1] = Proud::CNetClientManager::vftable; if (param_1[0x56] != 0) { FUN_1401f4bb0(); FUN_1401f4cd0(param_1[0x56]); } plVar1 = (longlong *)param_1[0x52]; if ((plVar1 != (longlong *)0x0) && (*plVar1 != 0)) { if (plVar1 == (longlong *)0x0) { lVar4 = 0; } else { lVar4 = *plVar1; } FUN_140206f90(lVar4); uVar5 = 0; if ((undefined8 *)param_1[0x52] != (undefined8 *)0x0) { uVar5 = *(undefined8 *)param_1[0x52]; } FUN_140207780(uVar5); } *(undefined1 *)(param_1 + 0x10) = 1; if ((undefined8 *)param_1[0xf] == (undefined8 *)0x0) { uVar5 = 0; } else { uVar5 = *(undefined8 *)param_1[0xf]; } FUN_140199740(uVar5); pvVar2 = (void *)param_1[0x57]; if (pvVar2 != (void *)0x0) { FUN_1401a31c0(pvVar2); operator_delete(pvVar2); } param_1[0x57] = 0; timeKillEvent(*(UINT *)(param_1 + 0x4c)); pvVar2 = (void *)param_1[0x56]; if (pvVar2 != (void *)0x0) { FUN_1401f78c0(pvVar2); operator_delete(pvVar2); } param_1[0x56] = 0; FUN_1401d3ed0(param_1 + 0x45); pvVar2 = (void *)param_1[0x57]; if (pvVar2 != (void *)0x0) { FUN_1401a31c0(pvVar2); operator_delete(pvVar2); } param_1[0x57] = 0; pvVar2 = (void *)param_1[0x56]; if (pvVar2 != (void *)0x0) { FUN_1401f78c0(pvVar2); operator_delete(pvVar2); } FUN_1401eae80(param_1 + 0x53); if ((param_1[0x52] != 0) && (*(longlong *)(param_1[0x52] + 8) = *(longlong *)(param_1[0x52] + 8) + -1, *(longlong *)(param_1[0x52] + 8) == 0)) { plVar1 = (longlong *)param_1[0x52]; puVar3 = (undefined8 *)*plVar1; if (puVar3 != (undefined8 *)0x0) { (**(code **)*puVar3)(puVar3,1); } FUN_14016d970(plVar1); } FUN_1401d3ed0(param_1 + 0x45); puVar3 = (undefined8 *)param_1[0x45]; if (puVar3 != (undefined8 *)0x0) { (**(code **)*puVar3)(puVar3,1); } FUN_1401bf2d0(param_1 + 0x41); FUN_14016dc00(param_1 + 0x39); FUN_14016dc00(param_1 + 0x11); if ((param_1[0xf] != 0) && (*(longlong *)(param_1[0xf] + 8) = *(longlong *)(param_1[0xf] + 8) + -1, *(longlong *)(param_1[0xf] + 8) == 0)) { puVar3 = (undefined8 *)param_1[0xf]; pvVar2 = (void *)*puVar3; if (pvVar2 != (void *)0x0) { FUN_1401997c0(pvVar2); operator_delete(pvVar2); } FUN_14016d970(puVar3); } FUN_14016dc00(param_1 + 2); param_1[1] = Proud::ISendSpeedMeasurerDg::vftable; *param_1 = Proud::ICompletionPortEventSink::vftable; return; }