server-re/decomp/Agent_Release_x64/full/functions/0x14005cc60.c
2026-10-14 16:45:19 -04:00

161 lines
5 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x14005cc60 FUN_14005cc60
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x00014005cf1d) */
void FUN_14005cc60(longlong *param_1,undefined8 param_2,undefined8 param_3,longlong param_4)
{
longlong *plVar1;
uint uVar2;
LPVOID pvVar3;
int *piVar4;
uint *puVar5;
longlong lVar6;
longlong lVar7;
ulonglong uVar8;
int iVar9;
uint *puVar10;
uint *puVar11;
ulonglong uVar12;
int iVar13;
uint *puVar14;
uint *puVar15;
uint uVar16;
uint *puVar17;
longlong lVar19;
longlong lVar20;
double dVar21;
undefined8 *local_res18;
ulonglong uVar18;
piVar4 = (int *)(**(code **)(*param_1 + 0x58))();
FUN_14002e6e0(piVar4);
if (DAT_14015bfcf != '\0') {
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::PurgeTooOldAddMemberAckItem");
}
dVar21 = FUN_14003a420((char *)(param_1 + 0xec));
puVar14 = (uint *)0x0;
puVar15 = puVar14;
if (param_1[0x84] != 0) {
puVar15 = (uint *)param_1[0x82];
}
do {
if (puVar15 == (uint *)0x0) {
LAB_14005cf28:
FUN_14002e770((longlong)piVar4);
return;
}
local_res18 = (undefined8 *)0x0;
puVar10 = puVar14;
puVar11 = puVar14;
puVar17 = puVar14;
if (*(longlong *)(puVar15 + 2) != 0) {
*(longlong *)(*(longlong *)(puVar15 + 2) + 8) =
*(longlong *)(*(longlong *)(puVar15 + 2) + 8) + 1;
local_res18 = *(undefined8 **)(puVar15 + 2);
}
while( true ) {
puVar5 = puVar14;
if (local_res18 != (undefined8 *)0x0) {
puVar5 = (uint *)*local_res18;
}
iVar9 = (int)puVar10;
if ((int)puVar5[0x38] <= iVar9) break;
puVar5 = puVar14;
if (local_res18 != (undefined8 *)0x0) {
puVar5 = (uint *)*local_res18;
}
if (((longlong)puVar11 < 0) || ((int)puVar5[0x38] <= iVar9)) {
/* WARNING: Subroutine does not return */
FUN_14002f5c0(puVar10,puVar11,puVar17,param_4);
}
param_4 = *(longlong *)(puVar5 + 0x36);
if (DAT_1401550a8 < dVar21 - *(double *)((longlong)puVar17 + param_4 + 0x10)) {
uVar2 = *(uint *)((longlong)puVar17 + param_4);
puVar15 = puVar14;
if (local_res18 != (undefined8 *)0x0) {
puVar15 = (uint *)*local_res18;
}
puVar10 = puVar15 + 0x32;
iVar13 = 1;
if (iVar9 < 0) {
/* WARNING: Subroutine does not return */
FUN_14002f590();
}
uVar16 = puVar15[0x38];
if ((int)(uVar16 - iVar9) < 2) {
iVar13 = uVar16 - iVar9;
}
uVar16 = (uVar16 - iVar13) - iVar9;
uVar18 = (ulonglong)uVar16;
if (0 < (int)uVar16) {
lVar20 = (longlong)(int)uVar16;
lVar19 = (longlong)puVar11 * 0x18;
do {
lVar6 = FUN_14003d690((longlong)puVar10);
lVar6 = lVar6 + (longlong)iVar13 * 0x18;
lVar7 = FUN_14003d690((longlong)puVar10);
*(undefined8 *)(lVar7 + lVar19) = *(undefined8 *)(lVar6 + lVar19);
*(undefined8 *)(lVar7 + 8 + lVar19) = *(undefined8 *)(lVar6 + 8 + lVar19);
*(undefined8 *)(lVar7 + 0x10 + lVar19) = *(undefined8 *)(lVar6 + 0x10 + lVar19);
lVar19 = lVar19 + 0x18;
lVar20 = lVar20 + -1;
} while (lVar20 != 0);
}
FUN_14003e6b0((longlong)puVar10,puVar15[0x38] - iVar13,uVar18,param_4);
puVar15 = puVar14;
if (local_res18 != (undefined8 *)0x0) {
puVar15 = (uint *)*local_res18;
}
uVar12 = (ulonglong)uVar2;
uVar8 = FUN_1400a17b0((longlong)(puVar15 + 0x32),uVar2);
if ((char)uVar8 == '\0') {
if (local_res18 != (undefined8 *)0x0) {
puVar14 = (uint *)*local_res18;
}
param_4 = 7;
uVar18 = (ulonglong)uVar2;
uVar12 = (ulonglong)*puVar14;
FUN_14005bc30((longlong)param_1,uVar12,uVar18,7);
}
if (local_res18 != (undefined8 *)0x0) {
plVar1 = local_res18 + 1;
*plVar1 = *plVar1 + -1;
if (*plVar1 == 0) {
pvVar3 = (LPVOID)*local_res18;
if (pvVar3 != (LPVOID)0x0) {
FUN_1400443d0((longlong)pvVar3,uVar12,uVar18,param_4);
FUN_1400302f0(pvVar3);
}
FUN_1400302f0(local_res18);
}
}
goto LAB_14005cf28;
}
puVar10 = (uint *)(ulonglong)(iVar9 + 1);
puVar11 = (uint *)((longlong)puVar11 + 1);
puVar17 = puVar17 + 6;
}
if (local_res18 != (undefined8 *)0x0) {
plVar1 = local_res18 + 1;
*plVar1 = *plVar1 + -1;
if (*plVar1 == 0) {
pvVar3 = (LPVOID)*local_res18;
if (pvVar3 != (LPVOID)0x0) {
FUN_1400443d0((longlong)pvVar3,puVar11,puVar17,param_4);
FUN_1400302f0(pvVar3);
}
FUN_1400302f0(local_res18);
}
}
if (puVar15 == (uint *)0x0) {
puVar15 = (uint *)0x0;
}
else {
puVar15 = *(uint **)(puVar15 + 4);
}
} while( true );
}