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

62 lines
1.5 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14000aa30 FUN_14000aa30
* Pseudocode, not original source. */
longlong * FUN_14000aa30(longlong *param_1,longlong param_2)
{
longlong *plVar1;
longlong *plVar2;
longlong lVar3;
if (param_2 != 0) {
if ((longlong *)*param_1 == (longlong *)0x0) {
lVar3 = 0;
}
else {
lVar3 = *(longlong *)*param_1;
}
if (lVar3 == param_2) {
return param_1;
}
}
plVar2 = (longlong *)*param_1;
if (plVar2 != (longlong *)0x0) {
LOCK();
plVar1 = plVar2 + 2;
lVar3 = *plVar1;
*(int *)plVar1 = (int)*plVar1 + -1;
UNLOCK();
if (((int)lVar3 == 1) && (plVar2 != (longlong *)0x0)) {
if (*plVar2 != 0) {
Ordinal_6();
}
if ((void *)plVar2[1] != (void *)0x0) {
operator_delete__((void *)plVar2[1]);
}
operator_delete(plVar2);
}
*param_1 = 0;
}
plVar2 = operator_new(0x18);
if (plVar2 == (longlong *)0x0) {
plVar2 = (longlong *)0x0;
}
else {
plVar2[1] = 0;
*(undefined4 *)(plVar2 + 2) = 1;
lVar3 = Ordinal_2(param_2);
*plVar2 = lVar3;
if ((lVar3 == 0) && (param_2 != 0)) {
/* WARNING: Subroutine does not return */
FUN_140048d70(0x8007000e);
}
}
*param_1 = (longlong)plVar2;
if (plVar2 != (longlong *)0x0) {
return param_1;
}
/* WARNING: Subroutine does not return */
FUN_140048d70(0x8007000e);
}