114 lines
3.3 KiB
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;
|
|
}
|
|
|