server-re/decomp/Agent_Release_x64/full/functions/0x1400e8560.c
2026-10-14 16:45:19 -04:00

69 lines
2.1 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400e8560 Catch@1400e8560
* Pseudocode, not original source. */
undefined8
Catch_1400e8560(undefined8 param_1,longlong param_2,undefined8 param_3,undefined8 param_4)
{
longlong *plVar1;
int *piVar2;
undefined *puVar3;
longlong *plVar4;
int *piVar5;
longlong lVar6;
wchar_t *pwVar7;
undefined8 uVar8;
undefined *puVar9;
FUN_140030200(param_1,param_2,param_3,param_4);
*(undefined **)(param_2 + 0x60) = PTR_DAT_140155010;
plVar4 = FUN_14002ef50(*(longlong *)(param_2 + 0x120),(undefined8 *)(param_2 + 0x78),param_3,
param_4);
uVar8 = 0;
if ((undefined8 *)*plVar4 != (undefined8 *)0x0) {
uVar8 = *(undefined8 *)*plVar4;
}
FUN_14001b7a0((longlong *)(param_2 + 0x60),L"_com_error(%s)",uVar8,param_4);
plVar4 = *(longlong **)(param_2 + 0x78);
if (plVar4 != (longlong *)0x0) {
LOCK();
plVar1 = plVar4 + 2;
lVar6 = *plVar1;
*(int *)plVar1 = (int)*plVar1 + -1;
UNLOCK();
if (((int)lVar6 == 1) && (plVar4 != (longlong *)0x0)) {
if (*plVar4 != 0) {
Ordinal_6();
}
if ((void *)plVar4[1] != (void *)0x0) {
operator_delete__((void *)plVar4[1]);
}
operator_delete(plVar4);
}
}
puVar3 = *(undefined **)(param_2 + 0x60);
puVar9 = puVar3;
if (puVar3 == (undefined *)0x0) {
puVar9 = PTR_DAT_140155010;
}
uVar8 = 0;
pwVar7 = L"Proud::CNetThreads_S::TcpListenerProc";
lVar6 = *(longlong *)(param_2 + 0x48);
FUN_14008b960(lVar6,L"Proud::CNetThreads_S::TcpListenerProc",puVar9,0);
if (((puVar3 != (undefined *)0x0) && (puVar3 != PTR_DAT_140155010)) &&
(puVar3 + -8 != (undefined *)0x0)) {
piVar5 = (int *)FUN_140030200(lVar6,pwVar7,puVar9,uVar8);
*(int **)(param_2 + 0x140) = piVar5;
FUN_14002e6e0(piVar5);
*(undefined1 *)(param_2 + 0x148) = 1;
piVar2 = (int *)(puVar3 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_1400302f0(puVar3 + -8);
}
FUN_14002e770((longlong)piVar5);
}
return 0x14008c3f1;
}