62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
/* 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;
|
|
}
|
|
|