server-re/decomp/AgentManager_Release_x64/full/functions/0x1400e74b8.c
2026-10-15 09:58:24 -04:00

50 lines
1.3 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400e74b8 FUN_1400e74b8
* Pseudocode, not original source. */
undefined8 FUN_1400e74b8(longlong param_1,byte *param_2,uint param_3)
{
int *piVar1;
ulonglong _Size;
uint uVar2;
undefined8 uVar3;
_Size = (ulonglong)param_3;
if ((param_1 == 0) || (piVar1 = *(int **)(param_1 + 0x28), piVar1 == (int *)0x0)) {
return 0xfffffffe;
}
if (piVar1[2] == 0) {
if (*piVar1 != 10) goto LAB_1400e7532;
}
else if (*piVar1 != 10) {
return 0xfffffffe;
}
uVar2 = FUN_1400ea49c(0,(byte *)0x0,0);
uVar2 = FUN_1400ea49c(uVar2,param_2,param_3);
if (uVar2 != piVar1[6]) {
return 0xfffffffd;
}
LAB_1400e7532:
uVar3 = FUN_1400e5dd8(param_1,*(int *)(param_1 + 0x18));
if ((int)uVar3 == 0) {
if ((uint)piVar1[0xb] < param_3) {
memcpy(*(void **)(piVar1 + 0xe),param_2 + (_Size - (uint)piVar1[0xb]),
(ulonglong)(uint)piVar1[0xb]);
piVar1[0xc] = piVar1[0xb];
}
else {
memcpy((void *)((longlong)*(void **)(piVar1 + 0xe) + ((uint)piVar1[0xb] - _Size)),param_2,
_Size);
piVar1[0xc] = param_3;
}
piVar1[3] = 1;
uVar3 = 0;
}
else {
*piVar1 = 0x1c;
uVar3 = 0xfffffffc;
}
return uVar3;
}