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

46 lines
1.5 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400ccf30 FUN_1400ccf30
* Pseudocode, not original source. */
undefined8 FUN_1400ccf30(uint *param_1,int param_2,uint *param_3)
{
undefined8 uVar1;
byte bVar2;
uint uVar3;
uint uVar4;
uint *puVar5;
uint uVar6;
if ((param_1 == param_3) || (uVar1 = FUN_1400c6e70(param_1,param_3), (int)uVar1 == 0)) {
uVar4 = param_2 / 0x1c + 1U + *param_3;
if ((((int)uVar4 <= (int)param_3[1]) ||
(uVar1 = FUN_1400cce50((longlong)param_3,uVar4), (int)uVar1 == 0)) &&
((param_2 < 0x1c || (uVar1 = FUN_1400cefe0((int *)param_3,param_2 / 0x1c), (int)uVar1 == 0)))
) {
if (param_2 % 0x1c != 0) {
puVar5 = *(uint **)(param_3 + 4);
uVar4 = 0;
bVar2 = (byte)(param_2 % 0x1c);
uVar6 = uVar4;
if (0 < (int)*param_3) {
do {
uVar6 = uVar6 + 1;
uVar3 = *puVar5 >> (0x1c - bVar2 & 0x1f) & (1 << (bVar2 & 0x1f)) - 1U;
*puVar5 = (*puVar5 << (bVar2 & 0x1f) | uVar4) & 0xfffffff;
puVar5 = puVar5 + 1;
uVar4 = uVar3;
} while ((int)uVar6 < (int)*param_3);
if (uVar3 != 0) {
*(uint *)(*(longlong *)(param_3 + 4) + (longlong)(int)*param_3 * 4) = uVar3;
*param_3 = *param_3 + 1;
}
}
}
FUN_1400ccef0((int *)param_3);
uVar1 = 0;
}
}
return uVar1;
}