/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400e1680 FUN_1400e1680 * Pseudocode, not original source. */ void FUN_1400e1680(longlong param_1,longlong *param_2,wchar_t *param_3,longlong **param_4) { longlong *plVar1; int *piVar2; longlong *plVar3; int *piVar4; int *piVar5; longlong *plVar6; longlong lVar7; double dVar8; undefined8 uVar9; longlong *local_res8; piVar4 = (int *)(**(code **)(**(longlong **)(param_1 + 0x108) + 0x58))(); FUN_14006b350(piVar4); lVar7 = *(longlong *)(param_1 + 0x108); if (0.0 < *(double *)(lVar7 + 0x1648)) { dVar8 = (double)(**(code **)(*(longlong *)(lVar7 + 0x70) + 0x1c0))(); if (10.0 < dVar8 - *(double *)(lVar7 + 0x1648)) { if ((*(char *)(lVar7 + 0x1790) != '\0') || (*(int *)(lVar7 + 0x6c8) != 0)) { param_3 = L"**WARNING** CNetClient.FrameMove is not called in ten seconds. Is this your intention?"; param_2 = (longlong *)0x0; FUN_1400af0e0(lVar7,0, L"**WARNING** CNetClient.FrameMove is not called in ten seconds. Is this your intention?" ,param_4); } *(undefined8 *)(*(longlong *)(param_1 + 0x108) + 0x1648) = 0xbff0000000000000; } } lVar7 = *(longlong *)(param_1 + 0x108); plVar6 = (longlong *)(lVar7 + 0x70); dVar8 = (double)(**(code **)(*plVar6 + 0x1c0))(); dVar8 = dVar8 - *(double *)(*(longlong *)(param_1 + 0x108) + 0x18c0); if (((*(double *)(lVar7 + 0x6a8) <= dVar8 && dVar8 != *(double *)(lVar7 + 0x6a8)) && (*(longlong **)(lVar7 + 0x5d0) != (longlong *)0x0)) && (**(longlong **)(lVar7 + 0x5d0) != 0)) { if ((*(char *)(lVar7 + 0x1790) != '\0') || (*(int *)(lVar7 + 0x6c8) != 0)) { plVar6 = *(longlong **)(param_1 + 0x108); param_4 = (longlong **)plVar6[0xd5]; param_3 = (wchar_t *)&DAT_140149160; param_2 = (longlong *)0x0; FUN_1400af0e0((longlong)plVar6,0, L"default timeouttime:%lf,Client %d: 오랫동안 TCP 수신이 없어서 연결해제 모드로 전환합니다." ,param_4); } FUN_14006cb70(plVar6,param_2,param_3,param_4); local_res8 = (longlong *)PTR_DAT_1401ac010; param_4 = &local_res8; param_2 = (longlong *)0xc; param_3 = (wchar_t *)0x7; plVar6 = *(longlong **)(param_1 + 0x108); FUN_1400b9fd0(plVar6,0xc,(undefined *)0x7,param_4); plVar3 = local_res8; if (((local_res8 != (longlong *)0x0) && (local_res8 != (longlong *)PTR_DAT_1401ac010)) && (plVar1 = local_res8 + -1, plVar1 != (longlong *)0x0)) { piVar5 = (int *)FUN_14006cb70(plVar6,param_2,param_3,param_4); FUN_14006b350(piVar5); piVar2 = (int *)((longlong)plVar3 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14006cc60(plVar1); } FUN_14006b3e0((longlong)piVar5); } local_res8 = (longlong *)PTR_DAT_1401ac010; plVar6 = *(longlong **)(*(longlong *)(param_1 + 0x108) + 0x5d0); lVar7 = 0; if (plVar6 != (longlong *)0x0) { lVar7 = *plVar6; } if (*(int *)(lVar7 + 0x100) < 4) { *(undefined4 *)(lVar7 + 0x40) = 0; *(undefined4 *)(lVar7 + 0x100) = 4; uVar9 = (**(code **)(*(longlong *)(*(longlong *)(lVar7 + 0x108) + 0x70) + 0x1c0))(); *(undefined8 *)(lVar7 + 0x80) = uVar9; *(undefined1 *)(lVar7 + 0xc0) = 0; } } FUN_1400e0ab0(param_1,param_2,(undefined **)param_3,(double *)param_4); FUN_1400b0d60(*(longlong **)(param_1 + 0x108),param_2,(SIZE_T)param_3,param_4); FUN_1400ab4b0(*(longlong *)(param_1 + 0x108),param_2,(SIZE_T)param_3,param_4); FUN_1400ab7a0(*(longlong *)(param_1 + 0x108),param_2,(SIZE_T)param_3,param_4); FUN_1400aba00(*(longlong *)(param_1 + 0x108),param_2,(undefined8 *)param_3,param_4); FUN_1400bc200(*(longlong **)(param_1 + 0x108),param_2,(SIZE_T)param_3,(undefined *)param_4); FUN_1400a3680(*(longlong *)(param_1 + 0x108)); FUN_1400a37e0(*(longlong **)(param_1 + 0x108)); FUN_1400b1710(*(longlong **)(param_1 + 0x108),param_2,param_3,param_4); FUN_14006b3e0((longlong)piVar4); return; }