161 lines
5 KiB
C
161 lines
5 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14006a340 FUN_14006a340
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00014006a5fd) */
|
|
|
|
void FUN_14006a340(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_14003d040(piVar4);
|
|
if (DAT_14017614f != '\0') {
|
|
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::PurgeTooOldAddMemberAckItem");
|
|
}
|
|
dVar21 = FUN_140048960((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_14006a608:
|
|
FUN_14003d0d0((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_14003def0(puVar10,puVar11,puVar17,param_4);
|
|
}
|
|
param_4 = *(longlong *)(puVar5 + 0x36);
|
|
if (DAT_14016f0a8 < 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_14003dec0();
|
|
}
|
|
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_140074a30((longlong)puVar10);
|
|
lVar6 = lVar6 + (longlong)iVar13 * 0x18;
|
|
lVar7 = FUN_140074a30((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_14004c130((longlong)puVar10,puVar15[0x38] - iVar13,uVar18,param_4);
|
|
puVar15 = puVar14;
|
|
if (local_res18 != (undefined8 *)0x0) {
|
|
puVar15 = (uint *)*local_res18;
|
|
}
|
|
uVar12 = (ulonglong)uVar2;
|
|
uVar8 = FUN_140096560((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_140069310((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_1400519b0((longlong)pvVar3,uVar12,uVar18,param_4);
|
|
FUN_14003e8b0(pvVar3);
|
|
}
|
|
FUN_14003e8b0(local_res18);
|
|
}
|
|
}
|
|
goto LAB_14006a608;
|
|
}
|
|
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_1400519b0((longlong)pvVar3,puVar11,puVar17,param_4);
|
|
FUN_14003e8b0(pvVar3);
|
|
}
|
|
FUN_14003e8b0(local_res18);
|
|
}
|
|
}
|
|
if (puVar15 == (uint *)0x0) {
|
|
puVar15 = (uint *)0x0;
|
|
}
|
|
else {
|
|
puVar15 = *(uint **)(puVar15 + 4);
|
|
}
|
|
} while( true );
|
|
}
|
|
|