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

148 lines
5.3 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401e50d0 FUN_1401e50d0
* Pseudocode, not original source. */
ulonglong FUN_1401e50d0(undefined8 param_1,undefined4 param_2,int param_3,uint param_4,
undefined4 *param_5)
{
undefined8 *puVar1;
undefined8 *puVar2;
uint uVar3;
int iVar4;
ulonglong uVar5;
undefined8 *puVar6;
undefined8 *puVar7;
undefined8 uVar8;
undefined8 local_58;
undefined8 local_50;
undefined8 local_48;
undefined8 local_40;
undefined8 local_38 [2];
if (DAT_14039d260 == 0) {
return 0x10;
}
if (param_5 == (undefined4 *)0x0) {
return 0x10;
}
if (0x180 < param_3 - 0x80U) {
return 3;
}
if ((int)param_4 < 3) {
return 0x10;
}
if ((param_4 & 1) == 0) {
return 0x10;
}
uVar5 = FUN_140200b40(param_2);
if ((int)uVar5 != 0) {
return uVar5;
}
uVar5 = FUN_140205a40(&local_48,&local_40,&local_58,&local_50,local_38,0);
if ((int)uVar5 != 0) {
return uVar5;
}
uVar3 = (*DAT_14039d298)(local_38[0],param_4);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
do {
uVar3 = FUN_140206300(local_48,param_3 / 2,param_1,param_2);
uVar5 = (ulonglong)uVar3;
if (uVar3 != 0) goto LAB_1401e5402;
uVar3 = (*DAT_14039d320)(local_48,1,local_58);
uVar5 = (ulonglong)uVar3;
if (uVar3 != 0) goto LAB_1401e5402;
uVar3 = (*DAT_14039d358)(local_58,local_38[0],local_50);
uVar5 = (ulonglong)uVar3;
if (uVar3 != 0) goto LAB_1401e5402;
iVar4 = (*DAT_14039d2c0)(local_50,1);
} while (iVar4 != 0);
do {
uVar3 = FUN_140206300(local_40,param_3 / 2,param_1,param_2);
uVar5 = (ulonglong)uVar3;
if (uVar3 != 0) goto LAB_1401e5402;
uVar3 = (*DAT_14039d320)(local_40,1,local_58);
uVar5 = (ulonglong)uVar3;
if (uVar3 != 0) goto LAB_1401e5402;
uVar3 = (*DAT_14039d358)(local_58,local_38[0],local_50);
uVar5 = (ulonglong)uVar3;
if (uVar3 != 0) goto LAB_1401e5402;
iVar4 = (*DAT_14039d2c0)(local_50,1);
} while (iVar4 != 0);
uVar3 = (*DAT_14039d320)(local_48,1,local_50);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d360)(local_58,local_50,local_58);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar8 = 0;
puVar1 = (undefined8 *)(param_5 + 10);
puVar2 = (undefined8 *)(param_5 + 8);
puVar6 = puVar2;
puVar7 = puVar1;
uVar3 = FUN_140205a40(param_5 + 2,param_5 + 4,param_5 + 6,param_5 + 0x10,param_5 + 0xe,
param_5 + 0xc,puVar2,puVar1,0);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d298)(*(undefined8 *)(param_5 + 2),param_4);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d378)(*(undefined8 *)(param_5 + 2),local_58,
*(undefined8 *)(param_5 + 4));
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d328)(local_48,local_40,*(undefined8 *)(param_5 + 6));
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d320)(local_48,1,local_58);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d320)(local_40,1,local_50);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d340)(*(undefined8 *)(param_5 + 4),local_58,0,
*(undefined8 *)(param_5 + 0xe));
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d340)(*(undefined8 *)(param_5 + 4),local_50,0,
*(undefined8 *)(param_5 + 0x10));
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d378)(local_40,local_48,*(undefined8 *)(param_5 + 0xc));
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d290)(local_48,*puVar2);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
uVar3 = (*DAT_14039d290)(local_40,*puVar1);
uVar5 = (ulonglong)uVar3;
if (uVar3 == 0) {
*param_5 = 1;
goto LAB_1401e5444;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
LAB_1401e5402:
puVar7 = *(undefined8 **)(param_5 + 10);
uVar8 = 0;
puVar6 = *(undefined8 **)(param_5 + 8);
FUN_140205ad0(*(undefined8 *)(param_5 + 4),*(undefined8 *)(param_5 + 2),
*(undefined8 *)(param_5 + 6),*(undefined8 *)(param_5 + 0x10),
*(undefined8 *)(param_5 + 0xe),*(undefined8 *)(param_5 + 0xc),puVar6,puVar7,0);
LAB_1401e5444:
FUN_140205ad0(local_38[0],local_50,local_58,local_48,local_40,0,puVar6,puVar7,uVar8);
return uVar5;
}