server-re/decomp/DBCServer_Release_x64/full/functions/0x1401c2fa0.c

65 lines
2 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401c2fa0 FUN_1401c2fa0
* Pseudocode, not original source. */
ulonglong FUN_1401c2fa0(longlong param_1,undefined8 param_2)
{
longlong lVar1;
undefined4 uVar2;
ulonglong uVar3;
longlong lVar4;
int iVar5;
undefined4 local_res18 [2];
undefined4 local_res20 [2];
undefined4 local_28;
undefined4 local_24 [3];
uVar3 = FUN_14016ba10(param_2,local_res18);
if ((char)uVar3 == '\0') {
return uVar3;
}
FUN_1401c2dc0(param_1,local_res18[0]);
uVar3 = (ulonglong)*(uint *)(param_1 + 0x18);
iVar5 = 0;
lVar4 = 0;
if (0 < (int)*(uint *)(param_1 + 0x18)) {
do {
if ((lVar4 < 0) || ((int)uVar3 <= iVar5)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
lVar1 = *(longlong *)(param_1 + 0x10);
uVar3 = FUN_14016b370(param_2,local_res18,1);
if ((char)uVar3 == '\0') goto LAB_1401c30bd;
if ((char)local_res18[0] == '\0') {
uVar3 = FUN_14016b370(param_2,local_res20,4);
if ((char)uVar3 == '\0') {
LAB_1401c30b6:
*(undefined4 *)(lVar1 + lVar4 * 8) = 0;
LAB_1401c30bd:
return uVar3 & 0xffffffffffffff00;
}
*(undefined4 *)(lVar1 + lVar4 * 8) = local_res20[0];
uVar2 = local_res20[0];
}
else {
uVar3 = FUN_14016b370(param_2,&local_28,4);
if ((char)uVar3 == '\0') goto LAB_1401c30b6;
*(undefined4 *)(lVar1 + lVar4 * 8) = local_28;
uVar3 = FUN_14016b370(param_2,local_24,4);
uVar2 = local_24[0];
if ((char)uVar3 == '\0') {
*(undefined4 *)(lVar1 + 4 + lVar4 * 8) = 0;
return uVar3 & 0xffffffffffffff00;
}
}
*(undefined4 *)(lVar1 + 4 + lVar4 * 8) = uVar2;
uVar3 = (ulonglong)*(uint *)(param_1 + 0x18);
iVar5 = iVar5 + 1;
lVar4 = lVar4 + 1;
} while (iVar5 < (int)*(uint *)(param_1 + 0x18));
}
return CONCAT71((int7)(uVar3 >> 8),1);
}