/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400b1710 FUN_1400b1710 * Pseudocode, not original source. */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_1400b1710(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { undefined *puVar1; int *piVar2; undefined *puVar3; int iVar4; longlong *plVar5; undefined **ppuVar6; undefined **ppuVar7; undefined ***pppuVar8; uint uVar9; longlong lVar10; double dVar11; undefined *local_res8; longlong local_res10; undefined **local_50; undefined4 local_48; undefined2 local_44; undefined **local_40; undefined8 local_38; undefined8 local_30; undefined8 local_28; undefined8 local_20; dVar11 = (double)(**(code **)(param_1[0xe] + 0x1c0))(); if (((((longlong *)param_1[699] != (longlong *)0x0) && (lVar10 = *(longlong *)param_1[699], lVar10 != 0)) && (lVar10 != 0x40)) && (_DAT_1401ac1b8 < dVar11 - (double)param_1[0x2f4])) { ppuVar7 = (undefined **)0x0; ppuVar6 = ppuVar7; if (lVar10 != 0) { ppuVar6 = (undefined **)(lVar10 + -0x40); } uVar9 = *(uint *)((longlong)ppuVar6 + 0x1a4); pppuVar8 = (undefined ***)param_1[0x2a4]; if (((pppuVar8 != (undefined ***)0x0) && (*pppuVar8 != (undefined **)0x0)) && (*pppuVar8 != (undefined **)0x40)) { ppuVar6 = ppuVar7; if ((longlong *)param_1[0x2ae] != (longlong *)0x0) { ppuVar6 = *(undefined ***)param_1[0x2ae]; } local_50 = Proud::AddrPort::vftable; local_48 = *(undefined4 *)(ppuVar6 + 0x1a); local_44 = *(undefined2 *)((longlong)ppuVar6 + 0xd4); if (*pppuVar8 != (undefined **)0x0) { ppuVar7 = *pppuVar8 + -8; } pppuVar8 = &local_50; ppuVar6 = (undefined **)ppuVar7[0x21]; iVar4 = FUN_1400d4140((longlong)ppuVar6,(longlong)pppuVar8); uVar9 = uVar9 + iVar4; } if ((double)param_1[0x2f5] == 0.0) { if (DAT_1401ac194 < (int)uVar9) { param_1[0x2f5] = (longlong)dVar11; } } else if (DAT_1401ac194 < (int)uVar9) { if (_DAT_1401ac1b0 < dVar11 - (double)param_1[0x2f5]) { param_1[0x2f5] = (longlong)dVar11; FUN_14006cb70(ppuVar6,pppuVar8,param_3,param_4); local_res8 = PTR_DAT_1401ac010; FUN_140053d20((longlong *)&local_res8,L"%d bytes in send queue",(ulonglong)uVar9,param_4); local_38 = 0; local_30 = 0; local_28 = 0; local_20 = 0; local_40 = Proud::ByteArray::vftable; ppuVar6 = &local_res8; plVar5 = FUN_140078c10(&local_res10,0x25,1,(longlong *)ppuVar6,(longlong)&local_40); lVar10 = *param_1; (**(code **)(lVar10 + 0x88))(param_1); pppuVar8 = &local_40; FUN_140078360(pppuVar8); puVar3 = local_res8; if (((local_res8 != (undefined *)0x0) && (local_res8 != PTR_DAT_1401ac010)) && (puVar1 = local_res8 + -8, puVar1 != (undefined *)0x0)) { ppuVar6 = (undefined **)FUN_14006cb70(pppuVar8,plVar5,lVar10,ppuVar6); local_50 = ppuVar6; FUN_14006b350((int *)ppuVar6); local_48 = CONCAT31(local_48._1_3_,1); piVar2 = (int *)(puVar3 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14006cc60(puVar1); } FUN_14006b3e0((longlong)ppuVar6); } } } else { param_1[0x2f5] = 0; } param_1[0x2f4] = (longlong)dVar11; } return; }