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

88 lines
2.4 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401c2140 FUN_1401c2140
* Pseudocode, not original source. */
undefined8 FUN_1401c2140(longlong param_1)
{
undefined4 uVar1;
char cVar2;
longlong lVar3;
int local_res8 [2];
undefined1 *local_res10;
undefined1 local_c8 [8];
undefined1 local_c0 [8];
longlong local_b8;
int local_ac;
undefined8 local_a0;
undefined1 local_98 [144];
local_a0 = 0xfffffffffffffffe;
FUN_14016b440(local_c8);
lVar3 = *(longlong *)(param_1 + 8);
if ((lVar3 == 0) && (*(longlong *)(param_1 + 0x10) == 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
if (*(longlong *)(param_1 + 0x10) == 0) {
if (lVar3 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
if (*(int *)(lVar3 + 0x18) == 0) {
lVar3 = 0;
}
else {
lVar3 = *(longlong *)(lVar3 + 0x10);
}
}
else {
lVar3 = *(longlong *)(param_1 + 0x10);
if (lVar3 == 0) {
FUN_14016d300(local_98,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_98,(ThrowInfo *)&DAT_1403417f8);
}
}
FUN_14016b0c0(local_c8,lVar3);
if (*(longlong *)(param_1 + 8) == 0) {
if (*(longlong *)(param_1 + 0x10) == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
uVar1 = *(undefined4 *)(param_1 + 0x18);
}
else {
uVar1 = *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x18);
}
FUN_14016b5a0(local_c8,uVar1);
cVar2 = FUN_14016bba0(local_c8,local_res8);
if (cVar2 != '\0') {
if (local_res8[0] == 1) {
local_res10 = local_c0;
FUN_14016d0e0(local_c0);
if ((local_b8 != 0) && (local_ac < 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
return 1;
}
if (local_res8[0] == 2) {
local_res10 = local_c0;
FUN_14016d0e0(local_c0);
if ((local_b8 != 0) && (local_ac < 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
return 2;
}
}
local_res10 = local_c0;
FUN_14016d0e0(local_c0);
if ((local_b8 != 0) && (local_ac < 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
return 3;
}