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

74 lines
2.3 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400a2d90 FUN_1400a2d90
* Pseudocode, not original source. */
ulonglong FUN_1400a2d90(uint *param_1,uint *param_2,longlong param_3,undefined8 param_4)
{
longlong lVar1;
undefined4 uVar2;
ulonglong uVar3;
uint *puVar4;
undefined8 *puVar5;
longlong lVar6;
int iVar7;
uint local_res18 [2];
undefined4 local_res20 [2];
undefined4 local_28;
undefined4 local_24 [3];
uVar3 = FUN_140080ca0(param_2,(undefined8 *)local_res18,param_3,param_4);
if ((char)uVar3 == '\0') {
return uVar3;
}
puVar5 = (undefined8 *)(ulonglong)local_res18[0];
puVar4 = param_1;
FUN_1400976d0((longlong)param_1,local_res18[0],param_3);
uVar3 = (ulonglong)param_1[6];
iVar7 = 0;
lVar6 = 0;
if (0 < (int)param_1[6]) {
do {
if ((lVar6 < 0) || ((int)uVar3 <= iVar7)) {
/* WARNING: Subroutine does not return */
FUN_14002f5c0(puVar4,puVar5,param_3,param_4);
}
lVar1 = *(longlong *)(param_1 + 4);
uVar3 = FUN_140080600(param_2,(undefined8 *)local_res18,1);
if ((char)uVar3 == '\0') goto LAB_1400a2ead;
param_3 = 4;
puVar4 = param_2;
if ((char)local_res18[0] == '\0') {
puVar5 = (undefined8 *)local_res20;
uVar3 = FUN_140080600(param_2,puVar5,4);
if ((char)uVar3 == '\0') {
LAB_1400a2ea6:
*(undefined4 *)(lVar1 + lVar6 * 8) = 0;
LAB_1400a2ead:
return uVar3 & 0xffffffffffffff00;
}
*(undefined4 *)(lVar1 + lVar6 * 8) = local_res20[0];
uVar2 = local_res20[0];
}
else {
uVar3 = FUN_140080600(param_2,(undefined8 *)&local_28,4);
if ((char)uVar3 == '\0') goto LAB_1400a2ea6;
puVar5 = (undefined8 *)local_24;
param_3 = 4;
*(undefined4 *)(lVar1 + lVar6 * 8) = local_28;
uVar3 = FUN_140080600(param_2,puVar5,4);
uVar2 = local_24[0];
if ((char)uVar3 == '\0') {
*(undefined4 *)(lVar1 + 4 + lVar6 * 8) = 0;
return uVar3 & 0xffffffffffffff00;
}
}
*(undefined4 *)(lVar1 + 4 + lVar6 * 8) = uVar2;
uVar3 = (ulonglong)param_1[6];
iVar7 = iVar7 + 1;
lVar6 = lVar6 + 1;
} while (iVar7 < (int)param_1[6]);
}
return CONCAT71((int7)(uVar3 >> 8),1);
}