server-re/decomp/Agent_Release_x64/full/functions/0x1400d6928.c
2026-10-14 16:45:19 -04:00

67 lines
1.9 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400d6928 FUN_1400d6928
* Pseudocode, not original source. */
undefined8 FUN_1400d6928(longlong *param_1)
{
int *piVar1;
undefined8 uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
undefined4 uVar6;
undefined4 uVar7;
byte *pbVar8;
byte local_res8 [8];
if ((param_1 == (longlong *)0x0) || (piVar1 = (int *)param_1[5], piVar1 == (int *)0x0)) {
uVar2 = 0xfffffffe;
}
else if (((int)param_1[1] == 0) && ((uint)piVar1[0x11] < 8)) {
uVar2 = 0xfffffffb;
}
else {
if (*piVar1 != 0x1d) {
uVar5 = 0;
*piVar1 = 0x1d;
uVar3 = piVar1[0x11] & 7;
piVar1[0x10] = piVar1[0x10] << (sbyte)uVar3;
uVar3 = piVar1[0x11] - uVar3;
piVar1[0x11] = uVar3;
if (7 < uVar3) {
uVar4 = piVar1[0x10];
pbVar8 = local_res8;
do {
uVar3 = uVar3 - 8;
uVar4 = uVar4 >> 8;
*pbVar8 = *(byte *)(piVar1 + 0x10);
pbVar8 = pbVar8 + 1;
uVar5 = uVar5 + 1;
piVar1[0x10] = uVar4;
piVar1[0x11] = uVar3;
} while (7 < uVar3);
}
piVar1[0x1f] = 0;
FUN_1400d68c8((uint *)(piVar1 + 0x1f),local_res8,uVar5);
}
uVar3 = FUN_1400d68c8((uint *)(piVar1 + 0x1f),(byte *)*param_1,*(uint *)(param_1 + 1));
*(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + uVar3;
*(uint *)(param_1 + 1) = (int)param_1[1] - uVar3;
uVar7 = *(undefined4 *)((longlong)param_1 + 0xc);
*param_1 = *param_1 + (ulonglong)uVar3;
if (piVar1[0x1f] == 4) {
uVar6 = *(undefined4 *)((longlong)param_1 + 0x1c);
FUN_1400d4ec8((longlong)param_1);
*(undefined4 *)((longlong)param_1 + 0xc) = uVar7;
*(undefined4 *)((longlong)param_1 + 0x1c) = uVar6;
*piVar1 = 0xb;
uVar2 = 0;
}
else {
uVar2 = 0xfffffffd;
}
}
return uVar2;
}