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

70 lines
1.7 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400cbaa0 FUN_1400cbaa0
* Pseudocode, not original source. */
ulonglong FUN_1400cbaa0(char *param_1,uint param_2,int param_3,undefined4 param_4,undefined8 param_5
)
{
int iVar1;
void *_Memory;
ulonglong uVar2;
undefined8 *puVar3;
uint uVar4;
ulonglong uVar5;
undefined8 *puVar6;
undefined8 uVar7;
if (param_1 == (char *)0x0) {
return 0x10;
}
uVar5 = 0;
uVar4 = 0;
uVar2 = uVar5;
if (param_3 != 0) {
puVar3 = &param_5;
iVar1 = param_3;
do {
if (0xe < iVar1 - 1U) {
return 0x10;
}
iVar1 = *(int *)(puVar3 + 1);
uVar2 = (ulonglong)((int)uVar2 + 1);
puVar3 = puVar3 + 3;
} while (iVar1 != 0);
}
if ((int)uVar2 == 0) {
return 2;
}
_Memory = calloc(0x38,uVar2);
if (_Memory == (void *)0x0) {
return 0xd;
}
puVar3 = &param_5;
if (param_3 != 0) {
puVar6 = (undefined8 *)((longlong)_Memory + 8);
uVar7 = param_5;
do {
if (0xe < param_3 - 1U) {
uVar2 = 0x10;
goto LAB_1400cbbba;
}
*(int *)(puVar6 + -1) = param_3;
*(undefined4 *)(puVar6 + 1) = param_4;
*puVar6 = uVar7;
param_3 = *(int *)(puVar3 + 1);
param_4 = *(undefined4 *)(puVar3 + 2);
uVar7 = puVar3[3];
puVar3 = puVar3 + 3;
uVar4 = (int)uVar5 + 1;
uVar5 = (ulonglong)uVar4;
puVar6 = puVar6 + 7;
} while (param_3 != 0);
}
uVar2 = FUN_1400cbbe0(param_1,param_2,(longlong)_Memory,uVar4,1);
uVar2 = uVar2 & 0xffffffff;
LAB_1400cbbba:
free(_Memory);
return uVar2;
}