51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x140064d80 FUN_140064d80
|
|
* Pseudocode, not original source. */
|
|
|
|
longlong * FUN_140064d80(longlong *param_1,longlong *param_2)
|
|
|
|
{
|
|
void *_Src;
|
|
void *_Dst;
|
|
void *pvVar1;
|
|
undefined8 uVar2;
|
|
ulonglong uVar3;
|
|
size_t _Size;
|
|
ulonglong uVar4;
|
|
|
|
if (param_1 != param_2) {
|
|
pvVar1 = (void *)*param_2;
|
|
uVar3 = param_2[1] - (longlong)pvVar1 >> 2;
|
|
if (uVar3 == 0) {
|
|
FUN_140064c70(param_1);
|
|
return param_1;
|
|
}
|
|
_Dst = (void *)*param_1;
|
|
uVar4 = param_1[1] - (longlong)_Dst >> 2;
|
|
if (uVar3 <= uVar4) {
|
|
memmove(_Dst,pvVar1,param_2[1] - (longlong)pvVar1 & 0xfffffffffffffffc);
|
|
param_1[1] = *param_1 + (param_2[1] - *param_2 >> 2) * 4;
|
|
return param_1;
|
|
}
|
|
if ((ulonglong)(param_1[2] - (longlong)_Dst >> 2) < uVar3) {
|
|
if (_Dst != (void *)0x0) {
|
|
operator_delete(_Dst);
|
|
}
|
|
uVar2 = FUN_140064d10(param_1,param_2[1] - *param_2 >> 2);
|
|
if ((char)uVar2 == '\0') {
|
|
return param_1;
|
|
}
|
|
_Size = (param_2[1] - *param_2 >> 2) * 4;
|
|
pvVar1 = memmove((void *)*param_1,(void *)*param_2,_Size);
|
|
}
|
|
else {
|
|
_Src = (void *)((longlong)pvVar1 + uVar4 * 4);
|
|
FUN_140064cd0(pvVar1,(longlong)_Src,_Dst);
|
|
_Size = (param_2[1] - (longlong)_Src >> 2) * 4;
|
|
pvVar1 = memmove((void *)param_1[1],_Src,_Size);
|
|
}
|
|
param_1[1] = (longlong)pvVar1 + _Size;
|
|
}
|
|
return param_1;
|
|
}
|
|
|