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

114 lines
3.3 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401f2360 FUN_1401f2360
* Pseudocode, not original source. */
undefined8 FUN_1401f2360(longlong param_1)
{
longlong *plVar1;
longlong lVar2;
undefined8 uVar3;
undefined8 uVar4;
undefined4 *puVar5;
undefined8 *puVar6;
undefined4 local_b8;
undefined4 local_b4;
longlong local_b0;
longlong local_a8;
undefined4 local_a0;
int local_9c;
undefined1 local_98;
undefined4 local_90;
undefined **local_88;
undefined4 local_80;
undefined2 local_7c;
undefined1 local_78;
undefined8 local_68;
undefined1 local_60;
undefined1 local_58 [8];
undefined1 local_50 [8];
longlong local_48;
int local_3c;
undefined8 local_30;
local_30 = 0xfffffffffffffffe;
uVar4 = (**(code **)(**(longlong **)(param_1 + 0x108) + 0x58))();
local_68 = uVar4;
FUN_14016db50(uVar4);
local_60 = 1;
if (*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x1548) == 0) {
FUN_14016dbe0(uVar4);
uVar4 = 0;
}
else {
FUN_14016b440(&local_b8);
local_88 = Proud::AddrPort::vftable;
local_78 = 0;
local_80 = DAT_140344450;
local_7c = DAT_140344454;
local_90 = *(undefined4 *)(*(longlong *)(param_1 + 0x108) + 0x1578);
puVar5 = (undefined4 *)FUN_1401ee9c0(*(longlong *)(param_1 + 0x108) + 0x1530,local_58);
local_b8 = *puVar5;
local_b4 = puVar5[1];
if (*(longlong *)(puVar5 + 2) == local_b0) {
local_9c = puVar5[7];
local_a8 = *(longlong *)(puVar5 + 4);
local_a0 = puVar5[6];
}
else {
FUN_14016d0e0(&local_b0);
if (*(longlong *)(puVar5 + 2) != 0) {
plVar1 = (longlong *)(*(longlong *)(puVar5 + 2) + 0x28);
*plVar1 = *plVar1 + 1;
local_b0 = *(longlong *)(puVar5 + 2);
}
}
local_98 = *(undefined1 *)(puVar5 + 8);
FUN_14016d0e0(local_50);
if ((local_48 != 0) && (local_3c < 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
FUN_14016b040(&local_b8,0);
lVar2 = *(longlong *)(param_1 + 0x108);
uVar3 = *(undefined8 *)(lVar2 + 0x6f0);
plVar1 = *(longlong **)(lVar2 + 0x6e0);
if (plVar1 == (longlong *)0x0) {
puVar6 = (undefined8 *)FUN_14016d940(0x58);
}
else {
puVar6 = (undefined8 *)(**(code **)(*plVar1 + 8))(plVar1,0x58);
}
if (puVar6 != (undefined8 *)0x0) {
FUN_14016b470(puVar6 + 2,&local_b8);
*(undefined4 *)(puVar6 + 7) = local_90;
puVar6[8] = Proud::AddrPort::vftable;
*(undefined4 *)(puVar6 + 9) = local_80;
*(undefined2 *)((longlong)puVar6 + 0x4c) = local_7c;
*(undefined1 *)(puVar6 + 10) = local_78;
}
puVar6[1] = uVar3;
*puVar6 = 0;
*(longlong *)(lVar2 + 0x6f8) = *(longlong *)(lVar2 + 0x6f8) + 1;
if (*(undefined8 **)(lVar2 + 0x6f0) == (undefined8 *)0x0) {
*(undefined8 **)(lVar2 + 0x6e8) = puVar6;
}
else {
**(undefined8 **)(lVar2 + 0x6f0) = puVar6;
}
*(undefined8 **)(lVar2 + 0x6f0) = puVar6;
FUN_1401f1e50(param_1,0);
FUN_14016d0e0(&local_b0);
if (local_a8 != 0) {
if (local_9c < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
local_a0 = 0;
}
FUN_14016dbe0(uVar4);
uVar4 = 1;
}
return uVar4;
}