/* 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; }