50 lines
1.4 KiB
C
50 lines
1.4 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14001e2c0 FUN_14001e2c0
|
|
* Pseudocode, not original source. */
|
|
|
|
longlong * FUN_14001e2c0(longlong *param_1,void *param_2,size_t param_3)
|
|
|
|
{
|
|
ulonglong uVar1;
|
|
void *pvVar2;
|
|
undefined8 *puVar3;
|
|
undefined1 auVar4 [16];
|
|
__uint64 _Var5;
|
|
size_t *psVar6;
|
|
size_t *local_28;
|
|
|
|
uVar1 = *(ulonglong *)(*param_1 + 8);
|
|
if ((uVar1 < param_3) || (param_3 * 3 + 0x18 < uVar1)) {
|
|
if (param_3 == 0) {
|
|
psVar6 = &DAT_14017ce88;
|
|
}
|
|
else {
|
|
auVar4._8_8_ = 0;
|
|
auVar4._0_8_ = param_3 + 0x1b >> 2;
|
|
_Var5 = SUB168(ZEXT816(4) * auVar4,0);
|
|
if (SUB168(ZEXT816(4) * auVar4,8) != 0) {
|
|
_Var5 = 0xffffffffffffffff;
|
|
}
|
|
psVar6 = operator_new(_Var5);
|
|
*psVar6 = param_3;
|
|
*(undefined1 *)((longlong)psVar6 + param_3 + 0x10) = 0;
|
|
psVar6[1] = param_3;
|
|
local_28 = psVar6;
|
|
}
|
|
memcpy(psVar6 + 2,param_2,param_3);
|
|
pvVar2 = (void *)param_1[1];
|
|
puVar3 = (undefined8 *)*param_1;
|
|
*param_1 = (longlong)psVar6;
|
|
param_1[1] = (longlong)local_28;
|
|
if (puVar3 != &DAT_14017ce88) {
|
|
operator_delete__(pvVar2);
|
|
}
|
|
}
|
|
else {
|
|
memmove((void *)(*param_1 + 0x10),param_2,param_3);
|
|
*(size_t *)*param_1 = param_3;
|
|
*(undefined1 *)(*param_1 + 0x10 + param_3) = 0;
|
|
}
|
|
return param_1;
|
|
}
|
|
|