/* 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 ); }