/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14000bfb0 FUN_14000bfb0 * Pseudocode, not original source. */ longlong * FUN_14000bfb0(longlong *param_1,longlong *param_2) { size_t _Size; void *_Dst; longlong lVar1; undefined8 uVar2; void *pvVar3; ulonglong uVar4; void *_Src; ulonglong uVar5; if (param_1 == param_2) { return param_1; } pvVar3 = (void *)*param_2; uVar4 = param_2[1] - (longlong)pvVar3 >> 2; if (uVar4 == 0) { pvVar3 = (void *)*param_1; if (pvVar3 != (void *)param_1[1]) { memmove(pvVar3,(void *)param_1[1],0); param_1[1] = (longlong)pvVar3; return param_1; } } else { _Dst = (void *)*param_1; uVar5 = param_1[1] - (longlong)_Dst >> 2; if (uVar4 <= uVar5) { memmove(_Dst,pvVar3,param_2[1] - (longlong)pvVar3 & 0xfffffffffffffffc); param_1[1] = *param_1 + (param_2[1] - *param_2 >> 2) * 4; return param_1; } if ((ulonglong)(param_1[2] - (longlong)_Dst >> 2) < uVar4) { if (_Dst != (void *)0x0) { operator_delete(_Dst); } uVar2 = FUN_140004cb0(param_1,param_2[1] - *param_2 >> 2); if ((char)uVar2 == '\0') { return param_1; } _Src = (void *)*param_2; pvVar3 = (void *)*param_1; lVar1 = param_2[1] - (longlong)_Src; } else { _Src = (void *)((longlong)pvVar3 + uVar5 * 4); FUN_14000bf70(pvVar3,(longlong)_Src,_Dst); pvVar3 = (void *)param_1[1]; lVar1 = param_2[1] - (longlong)_Src; } _Size = (lVar1 >> 2) * 4; pvVar3 = memmove(pvVar3,_Src,_Size); param_1[1] = (longlong)((longlong)pvVar3 + _Size); } return param_1; }