server-re/decomp/AgentManager_Release_x64/full/functions/0x14008b230.c
2026-10-15 09:58:24 -04:00

77 lines
2.4 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14008b230 FUN_14008b230
* Pseudocode, not original source. */
void FUN_14008b230(longlong param_1,uint param_2,undefined8 param_3,undefined8 param_4)
{
longlong lVar1;
LPVOID pvVar2;
double dVar3;
int *piVar4;
uint *puVar5;
longlong **pplVar6;
uint *puVar7;
ulonglong uVar8;
double dVar9;
longlong *local_res8;
piVar4 = (int *)(**(code **)(**(longlong **)(param_1 + 0x238) + 0x58))();
FUN_14003d040(piVar4);
if (DAT_14017614f != '\0') {
(**(code **)(**(longlong **)(param_1 + 0x238) + 200))
(*(longlong **)(param_1 + 0x238),L"Proud::CRemoteClient_S::GetP2PGroupTotalRecentPing"
);
}
uVar8 = (ulonglong)param_2;
pplVar6 = &local_res8;
FUN_140064860(*(longlong *)(param_1 + 0x238),(longlong *)pplVar6,param_2);
if ((local_res8 != (longlong *)0x0) && (lVar1 = *local_res8, lVar1 != 0)) {
dVar3 = 0.0;
puVar7 = (uint *)0x0;
if (*(longlong *)(lVar1 + 0x28) != 0) {
puVar7 = *(uint **)(lVar1 + 0x18);
}
while( true ) {
puVar5 = (uint *)0x0;
if (local_res8 != (longlong *)0x0) {
puVar5 = (uint *)*local_res8;
}
if (puVar7 == (uint *)0x0) break;
pplVar6 = (longlong **)(ulonglong)*puVar7;
dVar9 = (double)(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x238) + 0xa8) + 0xd0))();
if (0.0 <= dVar9) {
dVar3 = dVar3 + 1.0;
}
puVar7 = *(uint **)(puVar7 + 6);
}
if ((uint *)(lVar1 + 8) != puVar5 + 2) {
/* WARNING: Subroutine does not return */
FUN_1400050d0(0x80004005);
}
if (0.0 < dVar3) {
if ((local_res8 != (longlong *)0x0) &&
(local_res8[1] = local_res8[1] + -1, local_res8[1] == 0)) {
pvVar2 = (LPVOID)*local_res8;
if (pvVar2 != (LPVOID)0x0) {
FUN_1400519b0((longlong)pvVar2,pplVar6,uVar8,param_4);
FUN_14003e8b0(pvVar2);
}
FUN_14003e8b0(local_res8);
}
FUN_14003d0d0((longlong)piVar4);
return;
}
}
if ((local_res8 != (longlong *)0x0) && (local_res8[1] = local_res8[1] + -1, local_res8[1] == 0)) {
pvVar2 = (LPVOID)*local_res8;
if (pvVar2 != (LPVOID)0x0) {
FUN_1400519b0((longlong)pvVar2,pplVar6,uVar8,param_4);
FUN_14003e8b0(pvVar2);
}
FUN_14003e8b0(local_res8);
}
FUN_14003d0d0((longlong)piVar4);
return;
}