/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14008eb10 FUN_14008eb10 * Pseudocode, not original source. */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_14008eb10(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4) { undefined *puVar1; int *piVar2; int iVar3; undefined *puVar4; uint uVar5; longlong *plVar6; undefined **ppuVar7; undefined ***pppuVar8; ulonglong uVar9; longlong lVar10; double dVar11; undefined *local_res8; longlong local_res10; undefined **local_60; undefined4 local_58; undefined2 local_54; undefined **local_50; undefined8 local_48; undefined8 local_40; undefined8 local_38; undefined8 local_30; iVar3 = *(int *)(param_2[0xe9] + 0x7c); pppuVar8 = (undefined ***)param_2[0xe8]; uVar9 = 0; if (((pppuVar8 != (undefined ***)0x0) && (uVar9 = 0, *pppuVar8 != (undefined **)0x0)) && ((char)param_2[0xe0] != '\0')) { local_60 = Proud::AddrPort::vftable; local_58 = (undefined4)param_2[0xe2]; local_54 = *(undefined2 *)((longlong)param_2 + 0x714); ppuVar7 = *pppuVar8; pppuVar8 = &local_60; uVar5 = FUN_1400d4140((longlong)ppuVar7[0x2d],(longlong)pppuVar8); uVar9 = (ulonglong)uVar5; } *(int *)(param_2 + 0x3d) = (int)uVar9 + iVar3; plVar6 = param_1 + 0x23; dVar11 = (double)(**(code **)(*plVar6 + 8))(); if ((double)param_2[0x44] == 0.0) { if (DAT_1401ac194 < (int)param_2[0x3d]) { param_2[0x44] = (longlong)dVar11; } } else if (DAT_1401ac194 < (int)param_2[0x3d]) { if (_DAT_1401ac1b0 < dVar11 - (double)param_2[0x44]) { FUN_14006cb70(plVar6,pppuVar8,uVar9,param_4); local_res8 = PTR_DAT_1401ac010; FUN_140053d20((longlong *)&local_res8,L"sendQueue %dBytes", (ulonglong)*(uint *)(param_2 + 0x3d),param_4); local_48 = 0; local_40 = 0; local_38 = 0; local_30 = 0; local_50 = Proud::ByteArray::vftable; uVar5 = (**(code **)(*param_2 + 0x10))(param_2); ppuVar7 = &local_res8; plVar6 = FUN_140078c10(&local_res10,0x25,(ulonglong)uVar5,(longlong *)ppuVar7, (longlong)&local_50); lVar10 = *param_1; (**(code **)(lVar10 + 0x88))(param_1); pppuVar8 = &local_50; FUN_140078360(pppuVar8); puVar4 = local_res8; param_2[0x44] = (longlong)dVar11; if (((local_res8 != (undefined *)0x0) && (local_res8 != PTR_DAT_1401ac010)) && (puVar1 = local_res8 + -8, puVar1 != (undefined *)0x0)) { ppuVar7 = (undefined **)FUN_14006cb70(pppuVar8,plVar6,lVar10,ppuVar7); local_60 = ppuVar7; FUN_14006b350((int *)ppuVar7); local_58 = CONCAT31(local_58._1_3_,1); piVar2 = (int *)(puVar4 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14006cc60(puVar1); } FUN_14006b3e0((longlong)ppuVar7); } } } else { param_2[0x44] = 0; } return; }