/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400a6c00 FUN_1400a6c00 * Pseudocode, not original source. */ void FUN_1400a6c00(longlong param_1,undefined8 *param_2,undefined8 param_3,longlong param_4) { undefined8 *_Dst; ulonglong uVar1; undefined8 uVar2; undefined8 *puVar3; int iVar4; size_t _Size; ulonglong uVar5; undefined *puVar6; longlong lVar7; undefined ***pppuVar8; undefined *local_58; undefined4 local_50; undefined4 local_4c; undefined **local_48; longlong *local_40; undefined8 *local_38; undefined8 local_30; undefined8 local_28; iVar4 = (int)param_3; if (*(longlong *)(param_1 + 0x58) != 0) { local_48 = Proud::CFastArray::vftable; local_40 = (longlong *)0x0; local_38 = (undefined8 *)0x0; local_30 = 0; local_28 = 0; lVar7 = param_4; FUN_140038010((longlong)&local_48,iVar4,param_3,param_4); _Dst = local_38; if ((int)local_30 == 0) { _Dst = (undefined8 *)0x0; } _Size = (longlong)iVar4 << 2; if (_Size < 0x21) { uVar1 = (ulonglong)((uint)_Size & 7); puVar3 = param_2; for (uVar5 = ((longlong)iVar4 & 0x3fffffffffffffffU) >> 1; uVar5 != 0; uVar5 = uVar5 - 1) { *_Dst = *puVar3; _Dst = _Dst + 1; puVar3 = puVar3 + 1; } param_2 = (undefined8 *)0x0; _Size = 0; if (uVar1 != 0) { _Dst = (undefined8 *)((longlong)_Dst - (longlong)puVar3); do { *(undefined1 *)((longlong)_Dst + (longlong)puVar3) = *(undefined1 *)puVar3; puVar3 = (undefined8 *)((longlong)puVar3 + 1); uVar1 = uVar1 - 1; } while (uVar1 != 0); param_2 = (undefined8 *)0x0; } } else { memcpy(_Dst,param_2,_Size); } FUN_14003e7c0(_Dst,param_2,_Size,lVar7); local_58 = PTR_DAT_14016f010; FUN_140005dd0((longlong *)&local_58,*(short **)(param_4 + 8),_Size,lVar7); local_50 = *(undefined4 *)(param_4 + 0x10); local_4c = *(undefined4 *)(param_4 + 0x14); pppuVar8 = &local_48; puVar6 = &DAT_140177f90; uVar2 = 1; (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x58) + 0x68) + 0x40))(); FUN_140002190((longlong *)&local_58,uVar2,puVar6,pppuVar8); local_48 = Proud::CFastArray::vftable; if (local_38 != (undefined8 *)0x0) { if (local_40 == (longlong *)0x0) { FUN_14003e8b0(local_38); } else { (**(code **)(*local_40 + 0x18))(); } } } return; }