/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14003c270 FUN_14003c270 * Pseudocode, not original source. */ void FUN_14003c270(undefined8 *param_1,longlong param_2) { longlong *plVar1; ulonglong *puVar2; ulonglong uVar3; ulonglong *puVar4; longlong lVar5; longlong *plVar6; ulonglong *puVar7; longlong *plVar8; longlong *local_48; longlong *plStack_40; FUN_14003d040((int *)(param_1 + 0xe)); if (param_1[10] == 0) { local_48 = (longlong *)0x0; } else { local_48 = (longlong *)param_1[0xc]; if (local_48 != (longlong *)0x0) { plStack_40 = (longlong *)*local_48; plVar8 = local_48; goto joined_r0x00014003c2e1; } } plStack_40 = (longlong *)0x0; plVar8 = local_48; joined_r0x00014003c2e1: while ((plStack_40 != (longlong *)0x0 && (*(longlong *)(plStack_40[2] + 8) != param_2))) { plStack_40 = (longlong *)*plStack_40; while (plStack_40 == (longlong *)0x0) { local_48 = local_48 + 1; plVar8 = local_48; plStack_40 = (longlong *)*local_48; } if (local_48 == plStack_40) { plStack_40 = (longlong *)0x0; } } printf("ApiSocket Leave [Now:%d] !!!\n"); puVar2 = (ulonglong *)plStack_40[2]; if (puVar2 != (ulonglong *)0x0) { uVar3 = param_1[1]; lVar5 = param_1[2]; while (uVar3 != 0) { if ((uVar3 <= puVar2) && (puVar2 < (uVar3 - 0x10) + lVar5)) { if (uVar3 != 0) { puVar4 = (ulonglong *)*param_1; if ((puVar4 == (ulonglong *)0x0) || (puVar2 < puVar4)) { *puVar2 = (ulonglong)puVar4; *param_1 = puVar2; } else { for (puVar7 = (ulonglong *)*puVar4; (puVar7 != (ulonglong *)0x0 && (puVar7 <= puVar2)); puVar7 = (ulonglong *)*puVar7) { puVar4 = puVar7; } *puVar2 = *puVar4; *puVar4 = (ulonglong)puVar2; } } break; } plVar1 = (longlong *)(lVar5 + -8 + uVar3); uVar3 = *(ulonglong *)(lVar5 + -0x10 + uVar3); lVar5 = *plVar1; } lVar5 = *plStack_40; while (lVar5 == 0) { plVar8 = plVar8 + 1; lVar5 = *plVar8; } param_1[10] = param_1[10] + -1; plVar1 = (longlong *)*local_48; plVar6 = local_48; while (plVar1 != plStack_40) { plVar6 = (longlong *)*plVar6; plVar1 = (longlong *)*plVar6; } *plVar6 = *plStack_40; operator_delete(plStack_40); if ((local_48 == (longlong *)param_1[0xc]) && (*local_48 == 0)) { param_1[0xc] = plVar8; } } FUN_14003d0d0((longlong)(param_1 + 0xe)); return; }