/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14007f220 FUN_14007f220 * Pseudocode, not original source. */ void FUN_14007f220(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4) { longlong *plVar1; undefined8 *puVar2; longlong *plVar3; ulonglong uVar4; int iVar5; int iVar6; longlong *plVar7; ulonglong uVar8; uint uVar9; ulonglong uVar10; longlong lVar11; longlong lVar12; exception local_c8 [144]; lVar12 = (longlong)param_2; if (param_2 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } iVar6 = *(int *)(param_1 + 0x18); if (param_2 != iVar6) { if (*(int *)(param_1 + 0x1c) < param_2) { iVar6 = FUN_14008c010(param_1,param_2); lVar11 = (longlong)iVar6; plVar3 = *(longlong **)(param_1 + 8); if (*(int *)(param_1 + 0x1c) == 0) { if (plVar3 == (longlong *)0x0) { puVar2 = (undefined8 *)FUN_14003e840(lVar11 << 3); } else { puVar2 = (undefined8 *)(**(code **)(*plVar3 + 8))(plVar3,lVar11 << 3); } *(undefined8 **)(param_1 + 0x10) = puVar2; if (0 < param_2) { do { if (puVar2 != (undefined8 *)0x0) { *puVar2 = 0; } puVar2 = puVar2 + 1; lVar12 = lVar12 + -1; } while (lVar12 != 0); } } else { plVar1 = *(longlong **)(param_1 + 0x10); if (plVar3 == (longlong *)0x0) { plVar3 = (longlong *)FUN_14003e840(lVar11 << 3); } else { plVar3 = (longlong *)(**(code **)(*plVar3 + 8))(plVar3,lVar11 << 3); } iVar5 = *(int *)(param_1 + 0x18); uVar8 = 0; uVar4 = uVar8; uVar10 = uVar8; plVar7 = plVar3; if (0 < (longlong)iVar5) { do { if (plVar7 != (longlong *)0x0) { *plVar7 = 0; FUN_14007b440(plVar7,plVar1 + uVar4); } uVar9 = (int)uVar10 + 1; uVar4 = (longlong)(int)uVar9; uVar10 = (ulonglong)uVar9; plVar7 = plVar7 + 1; } while ((longlong)(int)uVar9 < (longlong)iVar5); } iVar5 = param_2 - *(int *)(param_1 + 0x18); plVar7 = plVar3 + *(int *)(param_1 + 0x18); if (0 < iVar5) { do { if (plVar7 != (longlong *)0x0) { *plVar7 = 0; } uVar9 = (int)uVar8 + 1; uVar8 = (ulonglong)uVar9; plVar7 = plVar7 + 1; } while ((longlong)(int)uVar9 < (longlong)iVar5); } if (plVar3 == (longlong *)0x0) { FUN_14003db10(local_c8,L"Memory allocation failure!",(longlong)iVar5,param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_c8,(ThrowInfo *)&DAT_14016c210); } FUN_14005cbc0(plVar1,(longlong)*(int *)(param_1 + 0x18)); plVar7 = *(longlong **)(param_1 + 8); if (plVar7 == (longlong *)0x0) { FUN_14003e8b0(plVar1); } else { (**(code **)(*plVar7 + 0x18))(plVar7,plVar1); } *(longlong **)(param_1 + 0x10) = plVar3; } *(int *)(param_1 + 0x1c) = iVar6; } else if (iVar6 - param_2 < 1) { iVar5 = param_2 - iVar6; if (0 < iVar5) { puVar2 = (undefined8 *)(*(longlong *)(param_1 + 0x10) + (longlong)iVar6 * 8); iVar6 = 0; if (0 < iVar5) { do { if (puVar2 != (undefined8 *)0x0) { *puVar2 = 0; } iVar6 = iVar6 + 1; puVar2 = puVar2 + 1; } while (iVar6 < iVar5); } } } else { FUN_14005cbc0((longlong *)(*(longlong *)(param_1 + 0x10) + lVar12 * 8), (longlong)(iVar6 - param_2)); } *(int *)(param_1 + 0x18) = param_2; } return; }