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