51 lines
1.2 KiB
C
51 lines
1.2 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14000c910 FUN_14000c910
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined1 FUN_14000c910(undefined8 *param_1,ulonglong param_2,char param_3)
|
|
|
|
{
|
|
ulonglong uVar1;
|
|
void *_Src;
|
|
code *pcVar2;
|
|
undefined1 uVar3;
|
|
ulonglong _Size;
|
|
|
|
if (param_2 == 0xffffffffffffffff) {
|
|
std::_Xlength_error("string too long");
|
|
pcVar2 = (code *)swi(3);
|
|
uVar3 = (*pcVar2)();
|
|
return uVar3;
|
|
}
|
|
uVar1 = param_1[3];
|
|
if (uVar1 < param_2) {
|
|
FUN_14000c7d0(param_1,param_2,param_1[2]);
|
|
}
|
|
else if ((param_3 == '\0') || (0xf < param_2)) {
|
|
if (param_2 == 0) {
|
|
param_1[2] = 0;
|
|
if (0xf < uVar1) {
|
|
param_1 = (undefined8 *)*param_1;
|
|
}
|
|
*(undefined1 *)param_1 = 0;
|
|
}
|
|
}
|
|
else {
|
|
_Size = param_1[2];
|
|
if (param_2 < (ulonglong)param_1[2]) {
|
|
_Size = param_2;
|
|
}
|
|
if (0xf < uVar1) {
|
|
_Src = (void *)*param_1;
|
|
if (_Size != 0) {
|
|
memcpy(param_1,_Src,_Size);
|
|
}
|
|
operator_delete(_Src);
|
|
}
|
|
param_1[2] = _Size;
|
|
param_1[3] = 0xf;
|
|
*(undefined1 *)((longlong)param_1 + _Size) = 0;
|
|
}
|
|
return param_2 != 0;
|
|
}
|
|
|