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

70 lines
2.1 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401f3170 FUN_1401f3170
* Pseudocode, not original source. */
void FUN_1401f3170(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
void *pvVar1;
undefined8 *puVar2;
longlong lVar3;
longlong lVar4;
longlong lVar5;
undefined8 uVar6;
undefined8 uVar7;
undefined1 uVar8;
uVar7 = 0xfffffffffffffffe;
lVar3 = param_1 + 0x10;
lVar5 = lVar3;
FUN_14016db50(lVar3);
uVar8 = 1;
if (*(longlong *)(param_1 + 0x298) != 0) {
lVar4 = *(longlong *)(param_1 + 0x298);
lVar3 = lVar5;
do {
if (*(longlong *)(param_1 + 0x2b8) == 0) {
if (*(int *)(lVar4 + 0x100) < 5) {
*(undefined4 *)(lVar4 + 0x40) = 0;
*(undefined4 *)(lVar4 + 0x100) = 5;
uVar6 = (**(code **)(*(longlong *)(*(longlong *)(lVar4 + 0x108) + 0x70) + 0x1c0))();
*(undefined8 *)(lVar4 + 0x80) = uVar6;
*(undefined1 *)(lVar4 + 0xc0) = 0;
}
}
else {
FUN_1401f30e0(lVar4);
}
if (*(int *)(lVar4 + 0x100) == 5) {
lVar5 = *(longlong *)(lVar4 + 8);
FUN_1401ed4c0(param_1,lVar4,param_3,param_4,uVar7,lVar3,uVar8);
lVar4 = *(longlong *)(lVar4 + 0x108);
if (*(longlong *)(lVar4 + 0x5d0) != 0) {
*(longlong *)(*(longlong *)(lVar4 + 0x5d0) + 8) =
*(longlong *)(*(longlong *)(lVar4 + 0x5d0) + 8) + -1;
puVar2 = (undefined8 *)0x0;
if (*(longlong *)(*(longlong *)(lVar4 + 0x5d0) + 8) == 0) {
puVar2 = *(undefined8 **)(lVar4 + 0x5d0);
}
*(undefined8 *)(lVar4 + 0x5d0) = 0;
if (puVar2 != (undefined8 *)0x0) {
pvVar1 = (void *)*puVar2;
if (pvVar1 != (void *)0x0) {
FUN_1401ebe30(pvVar1);
operator_delete(pvVar1);
}
FUN_14016d970(puVar2);
}
}
}
else {
lVar5 = *(longlong *)(lVar4 + 8);
}
lVar4 = lVar5;
} while (lVar5 != 0);
}
FUN_1401f0270(param_1);
FUN_14016dbe0(lVar3);
return;
}