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

106 lines
3.3 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401f4cd0 FUN_1401f4cd0
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x0001401f4ece) */
void FUN_1401f4cd0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
longlong lVar1;
ulonglong *puVar2;
char cVar3;
ulonglong uVar4;
longlong lVar5;
ulonglong uVar6;
int iVar7;
ulonglong uVar8;
undefined8 uVar9;
longlong lVar10;
undefined1 uVar11;
undefined8 local_40;
undefined **local_38;
undefined4 local_30;
undefined2 local_2c;
undefined4 local_28;
uVar9 = 0xfffffffffffffffe;
lVar1 = param_1 + 0x10;
uVar8 = 0;
while( true ) {
lVar10 = lVar1;
FUN_14016db50(lVar1);
uVar11 = 1;
lVar5 = lVar1;
if (DAT_14034c8c0 != '\0') break;
local_38 = Proud::AddrPort::vftable;
local_28 = 0;
local_40 = 0;
local_30 = DAT_140344450;
local_2c = DAT_140344454;
uVar6 = uVar8;
lVar5 = lVar10;
while (iVar7 = (int)uVar6, iVar7 != *(int *)(param_1 + 0x118)) {
if ((iVar7 < 0) || (*(int *)(param_1 + 0x118) <= iVar7)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
puVar2 = *(ulonglong **)(*(longlong *)(param_1 + 0x110) + (longlong)iVar7 * 8);
uVar6 = uVar8;
if (puVar2 != (ulonglong *)0x0) {
uVar6 = *puVar2;
}
if ((*(longlong **)(uVar6 + 0x10) != (longlong *)0x0) &&
(lVar10 = **(longlong **)(uVar6 + 0x10), lVar10 != 0)) {
cVar3 = FUN_14019c2f0(lVar10,0,&local_40,param_4,uVar9,lVar5,uVar11);
if (cVar3 != '\0') {
*(undefined1 *)(uVar6 + 0xc0) = 0;
}
uVar4 = uVar8;
if (*(ulonglong **)(uVar6 + 0x10) != (ulonglong *)0x0) {
uVar4 = **(ulonglong **)(uVar6 + 0x10);
}
cVar3 = FUN_14019c560(uVar4,0,&local_40);
if (cVar3 != '\0') {
*(undefined1 *)(uVar6 + 0x80) = 0;
}
}
if (((*(longlong **)(uVar6 + 0x10) != (longlong *)0x0) && (**(longlong **)(uVar6 + 0x10) != 0)
) && ((cVar3 = FUN_14019c8d0(), cVar3 == '\0' ||
((*(char *)(uVar6 + 0xc0) != '\0' || (*(char *)(uVar6 + 0x80) != '\0'))))))
goto LAB_1401f4ea7;
if (*(int *)(param_1 + 0x118) <= iVar7) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
uVar6 = (ulonglong)(iVar7 + 1);
}
uVar6 = uVar8;
if (*(longlong *)(param_1 + 0x70) != 0) {
uVar6 = *(ulonglong *)(param_1 + 0x60);
}
while( true ) {
uVar4 = uVar6;
if (uVar4 == 0) goto LAB_1401f4ee3;
uVar6 = uVar8;
if (*(ulonglong **)(uVar4 + 8) != (ulonglong *)0x0) {
uVar6 = **(ulonglong **)(uVar4 + 8);
}
if (((*(longlong **)(uVar6 + 0x2480) != (longlong *)0x0) &&
(**(longlong **)(uVar6 + 0x2480) != 0)) &&
((cVar3 = FUN_14019c8d0(), cVar3 == '\0' ||
((*(char *)(uVar6 + 0x2500) != '\0' || (*(char *)(uVar6 + 0x24c0) != '\0')))))) break;
uVar6 = uVar8;
if (uVar4 != 0) {
uVar6 = *(ulonglong *)(uVar4 + 0x10);
}
}
LAB_1401f4ea7:
FUN_14016dbe0(lVar5);
Sleep(10);
}
LAB_1401f4ee3:
FUN_14016dbe0(lVar5);
return;
}