/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14004a610 FUN_14004a610 * Pseudocode, not original source. */ undefined8 FUN_14004a610(longlong param_1,wchar_t *param_2,longlong param_3,uint *param_4,longlong *param_5) { int *piVar1; short *psVar2; int *piVar3; int *piVar4; undefined8 uVar5; longlong *plVar6; longlong lVar7; wchar_t *pwVar8; ulonglong uVar9; short *psVar10; uint *puVar11; undefined *puVar12; short *local_res8; pwVar8 = param_2; puVar11 = param_4; piVar3 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))(); FUN_14002e6e0(piVar3); plVar6 = *(longlong **)(param_1 + 0x20); if (DAT_14015bfcf != '\0') { param_3 = *plVar6; pwVar8 = L"Proud::CNetServerImpl::C2SStub::NotifyLog"; (**(code **)(param_3 + 200))(); } if (*(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0) != 0) { FUN_140030200(plVar6,pwVar8,param_3,puVar11); local_res8 = (short *)PTR_DAT_140155010; puVar12 = (undefined *)*param_5; if ((undefined *)*param_5 == (undefined *)0x0) { puVar12 = PTR_DAT_140155010; } FUN_14001b7a0((longlong *)&local_res8,L"[Client %d] %s",(ulonglong)param_2 & 0xffffffff,puVar12) ; psVar2 = local_res8; psVar10 = local_res8; if (local_res8 == (short *)0x0) { psVar10 = (short *)PTR_DAT_140155010; } uVar9 = (ulonglong)*param_4; lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0); FUN_14008f2e0(lVar7,uVar9,psVar10,puVar12); if (((psVar2 != (short *)0x0) && (psVar2 != (short *)PTR_DAT_140155010)) && (psVar2 + -4 != (short *)0x0)) { piVar4 = (int *)FUN_140030200(lVar7,uVar9,psVar10,puVar12); FUN_14002e6e0(piVar4); piVar1 = (int *)(psVar2 + -2); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_1400302f0(psVar2 + -4); } FUN_14002e770((longlong)piVar4); } } uVar5 = FUN_14002e770((longlong)piVar3); return CONCAT71((int7)((ulonglong)uVar5 >> 8),1); }