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

102 lines
4.4 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400eb9e8 FUN_1400eb9e8
* Pseudocode, not original source. */
void FUN_1400eb9e8(longlong param_1,int param_2,int param_3,uint param_4)
{
ushort uVar1;
int iVar2;
int iVar3;
byte *pbVar4;
ulonglong uVar5;
iVar2 = *(int *)(param_1 + 0x1714);
uVar5 = (ulonglong)param_4;
if (iVar2 < 0xc) {
*(ushort *)(param_1 + 0x1710) =
*(ushort *)(param_1 + 0x1710) | (short)param_2 + -0x101 << ((byte)iVar2 & 0x1f);
iVar2 = iVar2 + 5;
}
else {
uVar1 = (short)param_2 - 0x101;
*(ushort *)(param_1 + 0x1710) = *(ushort *)(param_1 + 0x1710) | uVar1 << ((byte)iVar2 & 0x1f);
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
*(undefined1 *)(param_1 + 0x1710);
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
*(undefined1 *)(param_1 + 0x1711);
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
iVar2 = *(int *)(param_1 + 0x1714) + -0xb;
*(ushort *)(param_1 + 0x1710) = uVar1 >> (0x10U - (char)*(int *)(param_1 + 0x1714) & 0x1f);
}
*(int *)(param_1 + 0x1714) = iVar2;
if (iVar2 < 0xc) {
*(ushort *)(param_1 + 0x1710) =
*(ushort *)(param_1 + 0x1710) | (short)param_3 + -1 << ((byte)iVar2 & 0x1f);
iVar2 = iVar2 + 5;
}
else {
uVar1 = (short)param_3 - 1;
*(ushort *)(param_1 + 0x1710) = *(ushort *)(param_1 + 0x1710) | uVar1 << ((byte)iVar2 & 0x1f);
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
*(undefined1 *)(param_1 + 0x1710);
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
*(undefined1 *)(param_1 + 0x1711);
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
iVar2 = *(int *)(param_1 + 0x1714) + -0xb;
*(ushort *)(param_1 + 0x1710) = uVar1 >> (0x10U - (char)*(int *)(param_1 + 0x1714) & 0x1f);
}
*(int *)(param_1 + 0x1714) = iVar2;
if (iVar2 < 0xd) {
*(ushort *)(param_1 + 0x1710) =
*(ushort *)(param_1 + 0x1710) | (short)param_4 + -4 << ((byte)iVar2 & 0x1f);
iVar2 = iVar2 + 4;
}
else {
uVar1 = (short)param_4 - 4;
*(ushort *)(param_1 + 0x1710) = *(ushort *)(param_1 + 0x1710) | uVar1 << ((byte)iVar2 & 0x1f);
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
*(undefined1 *)(param_1 + 0x1710);
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
*(undefined1 *)(param_1 + 0x1711);
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
iVar2 = *(int *)(param_1 + 0x1714) + -0xc;
*(ushort *)(param_1 + 0x1710) = uVar1 >> (0x10U - (char)*(int *)(param_1 + 0x1714) & 0x1f);
}
*(int *)(param_1 + 0x1714) = iVar2;
if (0 < (int)param_4) {
pbVar4 = &DAT_14012da90;
do {
iVar2 = *(int *)(param_1 + 0x1714);
if (iVar2 < 0xe) {
iVar3 = iVar2 + 3;
*(ushort *)(param_1 + 0x1710) =
*(ushort *)(param_1 + 0x1710) |
*(short *)(param_1 + 0xaa6 + (ulonglong)*pbVar4 * 4) << ((byte)iVar2 & 0x1f);
}
else {
uVar1 = *(ushort *)(param_1 + 0xaa6 + (ulonglong)*pbVar4 * 4);
*(ushort *)(param_1 + 0x1710) =
*(ushort *)(param_1 + 0x1710) | uVar1 << ((byte)iVar2 & 0x1f);
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
*(undefined1 *)(param_1 + 0x1710);
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
*(undefined1 *)((ulonglong)*(uint *)(param_1 + 0x28) + *(longlong *)(param_1 + 0x10)) =
*(undefined1 *)(param_1 + 0x1711);
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1;
iVar3 = *(int *)(param_1 + 0x1714) + -0xd;
*(ushort *)(param_1 + 0x1710) = uVar1 >> (0x10U - (char)*(int *)(param_1 + 0x1714) & 0x1f);
}
pbVar4 = pbVar4 + 1;
uVar5 = uVar5 - 1;
*(int *)(param_1 + 0x1714) = iVar3;
} while (uVar5 != 0);
}
FUN_1400eb488(param_1,param_1 + 0xbc,param_2 + -1);
FUN_1400eb488(param_1,param_1 + 0x9b0,param_3 + -1);
return;
}