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

53 lines
2.3 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400e7768 FUN_1400e7768
* Pseudocode, not original source. */
undefined8 FUN_1400e7768(void *param_1,void *param_2)
{
void *_Src;
ulonglong uVar1;
void *_Dst;
void *_Dst_00;
if ((((param_1 != (void *)0x0) && (param_2 != (void *)0x0)) &&
(_Src = *(void **)((longlong)param_2 + 0x28), _Src != (void *)0x0)) &&
((*(code **)((longlong)param_2 + 0x30) != (code *)0x0 &&
(*(longlong *)((longlong)param_2 + 0x38) != 0)))) {
_Dst = (void *)(**(code **)((longlong)param_2 + 0x30))
(*(undefined8 *)((longlong)param_2 + 0x40),1,0x2548);
if (_Dst != (void *)0x0) {
_Dst_00 = (void *)0x0;
if ((*(longlong *)((longlong)_Src + 0x38) == 0) ||
(_Dst_00 = (void *)(**(code **)((longlong)param_2 + 0x30))
(*(undefined8 *)((longlong)param_2 + 0x40),
1 << ((byte)*(undefined4 *)((longlong)_Src + 0x28) & 0x1f),1)
, _Dst_00 != (void *)0x0)) {
memcpy(param_1,param_2,0x58);
memcpy(_Dst,_Src,0x2548);
uVar1 = *(ulonglong *)((longlong)_Src + 0x58);
if (((longlong)_Src + 0x548U <= uVar1) && (uVar1 <= (longlong)_Src + 0x2544U)) {
*(longlong *)((longlong)_Dst + 0x58) =
(longlong)_Dst + ((longlong)((uVar1 - (longlong)_Src) + -0x548) >> 2) * 4 + 0x548;
*(longlong *)((longlong)_Dst + 0x60) =
(longlong)_Dst +
((*(longlong *)((longlong)_Src + 0x60) - (longlong)_Src) + -0x548 >> 2) * 4 + 0x548;
}
*(longlong *)((longlong)_Dst + 0x80) =
(longlong)_Dst +
((*(longlong *)((longlong)_Src + 0x80) - (longlong)_Src) + -0x548 >> 2) * 4 + 0x548;
if (_Dst_00 != (void *)0x0) {
memcpy(_Dst_00,*(void **)((longlong)_Src + 0x38),
(ulonglong)(uint)(1 << ((byte)*(undefined4 *)((longlong)_Src + 0x28) & 0x1f)));
}
*(void **)((longlong)_Dst + 0x38) = _Dst_00;
*(void **)((longlong)param_1 + 0x28) = _Dst;
return 0;
}
(**(code **)((longlong)param_2 + 0x38))(*(undefined8 *)((longlong)param_2 + 0x40),_Dst);
}
return 0xfffffffc;
}
return 0xfffffffe;
}