104 lines
3.5 KiB
C
104 lines
3.5 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x14009fee0 FUN_14009fee0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0001400a013d) */
|
|
|
|
void FUN_14009fee0(undefined ***param_1,wchar_t *param_2,undefined *param_3,undefined8 param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
short *psVar2;
|
|
uint uVar3;
|
|
int *piVar4;
|
|
int *piVar5;
|
|
undefined ***pppuVar6;
|
|
undefined **ppuVar7;
|
|
undefined8 uVar8;
|
|
wchar_t *pwVar9;
|
|
undefined **ppuVar10;
|
|
short *psVar11;
|
|
double dVar12;
|
|
short *local_res8;
|
|
undefined **local_70;
|
|
undefined8 local_68;
|
|
undefined8 local_60;
|
|
undefined8 local_58;
|
|
undefined8 local_50;
|
|
|
|
piVar4 = (int *)(*(code *)(*param_1)[0xb])();
|
|
FUN_14006b350(piVar4);
|
|
if (DAT_1401b42cf != '\0') {
|
|
param_2 = L"Proud::CNetServerImpl::HeartBeat_PerClient";
|
|
(*(code *)(*param_1)[0x19])(param_1);
|
|
}
|
|
pppuVar6 = param_1 + 0x23;
|
|
dVar12 = (double)(*(code *)(*pppuVar6)[1])();
|
|
ppuVar7 = (undefined **)0x0;
|
|
if (param_1[0x193] != (undefined **)0x0) {
|
|
ppuVar7 = param_1[0x191];
|
|
}
|
|
while (ppuVar10 = ppuVar7, ppuVar10 != (undefined **)0x0) {
|
|
pwVar9 = (wchar_t *)ppuVar10[1];
|
|
if (dVar12 - *(double *)(pwVar9 + 0xc0) < (double)param_1[0x46] ||
|
|
dVar12 - *(double *)(pwVar9 + 0xc0) == (double)param_1[0x46]) {
|
|
FUN_14009ece0((SIZE_T *)param_1,(uint *)pwVar9);
|
|
if (((char)pwVar9[0x380] != '\0') &&
|
|
(DAT_1401ac0f8 * 10.0 < dVar12 - *(double *)(pwVar9 + 0xcc))) {
|
|
param_3 = &DAT_1401b6110;
|
|
(*(code *)param_1[0x95][0x1a])(param_1 + 0x95,*(uint *)(pwVar9 + 0x37c));
|
|
}
|
|
FUN_140088570(param_1,(longlong *)pwVar9,dVar12,param_4);
|
|
pppuVar6 = param_1;
|
|
FUN_14008eb10((longlong *)param_1,(longlong *)pwVar9,param_3,param_4);
|
|
}
|
|
else {
|
|
if (param_1[0x2fe] != (undefined **)0x0) {
|
|
FUN_14006cb70(pppuVar6,param_2,param_3,param_4);
|
|
local_res8 = (short *)PTR_DAT_1401ac010;
|
|
uVar3 = (**(code **)(*(longlong *)pwVar9 + 0x10))(pwVar9);
|
|
FUN_140053d20((longlong *)&local_res8,
|
|
L"클라 %d로부터의 TCP 수신이 오랫동안 없어서 소켓을 닫습니다."
|
|
,(ulonglong)uVar3,param_4);
|
|
psVar2 = local_res8;
|
|
psVar11 = local_res8;
|
|
if (local_res8 == (short *)0x0) {
|
|
psVar11 = (short *)PTR_DAT_1401ac010;
|
|
}
|
|
uVar8 = 0;
|
|
ppuVar7 = param_1[0x2fe];
|
|
FUN_1400cb700((longlong)ppuVar7,0,psVar11,param_4);
|
|
if (((psVar2 != (short *)0x0) && (psVar2 != (short *)PTR_DAT_1401ac010)) &&
|
|
(psVar2 + -4 != (short *)0x0)) {
|
|
piVar5 = (int *)FUN_14006cb70(ppuVar7,uVar8,psVar11,param_4);
|
|
FUN_14006b350(piVar5);
|
|
piVar1 = (int *)(psVar2 + -2);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14006cc60(psVar2 + -4);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar5);
|
|
}
|
|
}
|
|
local_68 = 0;
|
|
local_60 = 0;
|
|
local_58 = 0;
|
|
local_50 = 0;
|
|
local_70 = Proud::ByteArray::vftable;
|
|
param_4 = 7;
|
|
param_3 = (undefined *)0xb;
|
|
FUN_14009dbc0((SIZE_T *)param_1,(uint *)pwVar9,0xb,7,(longlong)&local_70,
|
|
L"Proud::CNetServerImpl::HeartBeat_PerClient",0);
|
|
pppuVar6 = &local_70;
|
|
FUN_140078360(pppuVar6);
|
|
}
|
|
param_2 = pwVar9;
|
|
ppuVar7 = (undefined **)0x0;
|
|
if (ppuVar10 != (undefined **)0x0) {
|
|
ppuVar7 = (undefined **)ppuVar10[2];
|
|
}
|
|
}
|
|
FUN_14006b3e0((longlong)piVar4);
|
|
return;
|
|
}
|
|
|