server-re/decomp/MessageServer_Release_x64/full/functions/0x1400fbf80.c

133 lines
4.6 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400fbf80 FUN_1400fbf80
* Pseudocode, not original source. */
ulonglong FUN_1400fbf80(undefined8 param_1,uint param_2,int param_3,uint param_4,undefined4 *param_5
)
{
uint uVar1;
int iVar2;
ulonglong uVar3;
ulonglong uVar4;
undefined8 local_58;
undefined8 local_50;
longlong local_48;
longlong local_40;
longlong local_38;
if (DAT_1401bd600 == 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;
}
uVar3 = FUN_1401034e0(param_2);
if ((int)uVar3 != 0) {
return uVar3;
}
uVar3 = FUN_1401083f0(&local_48);
if ((int)uVar3 != 0) {
return uVar3;
}
uVar1 = (*DAT_1401bd638)(local_38,param_4);
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
do {
uVar4 = FUN_140108cb0(local_48,param_3 / 2,param_1,param_2);
uVar3 = uVar4 & 0xffffffff;
if ((int)uVar4 != 0) goto LAB_1400fc2b2;
uVar1 = (*DAT_1401bd6c0)(local_48,1,local_58);
uVar3 = (ulonglong)uVar1;
if (uVar1 != 0) goto LAB_1400fc2b2;
uVar1 = (*DAT_1401bd6f8)(local_58,local_38,local_50);
uVar3 = (ulonglong)uVar1;
if (uVar1 != 0) goto LAB_1400fc2b2;
iVar2 = (*DAT_1401bd660)(local_50,1);
} while (iVar2 != 0);
do {
uVar4 = FUN_140108cb0(local_40,param_3 / 2,param_1,param_2);
uVar3 = uVar4 & 0xffffffff;
if ((int)uVar4 != 0) goto LAB_1400fc2b2;
uVar1 = (*DAT_1401bd6c0)(local_40,1,local_58);
uVar3 = (ulonglong)uVar1;
if (uVar1 != 0) goto LAB_1400fc2b2;
uVar1 = (*DAT_1401bd6f8)(local_58,local_38,local_50);
uVar3 = (ulonglong)uVar1;
if (uVar1 != 0) goto LAB_1400fc2b2;
iVar2 = (*DAT_1401bd660)(local_50,1);
} while (iVar2 != 0);
uVar1 = (*DAT_1401bd6c0)(local_48,1,local_50);
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd700)(local_58,local_50,local_58);
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar4 = FUN_1401083f0((undefined8 *)(param_5 + 2));
uVar3 = uVar4 & 0xffffffff;
if ((int)uVar4 == 0) {
uVar1 = (*DAT_1401bd638)(*(undefined8 *)(param_5 + 2),param_4);
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd718)(*(undefined8 *)(param_5 + 2),local_58,
*(undefined8 *)(param_5 + 4));
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd6c8)(local_48,local_40,*(undefined8 *)(param_5 + 6));
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd6c0)(local_48,1,local_58);
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd6c0)(local_40,1,local_50);
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd6e0)(*(undefined8 *)(param_5 + 4),local_58,0,
*(undefined8 *)(param_5 + 0xe));
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd6e0)(*(undefined8 *)(param_5 + 4),local_50,0,
*(undefined8 *)(param_5 + 0x10));
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd718)(local_40,local_48,*(undefined8 *)(param_5 + 0xc));
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd630)(local_48,*(undefined8 *)(param_5 + 8));
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
uVar1 = (*DAT_1401bd630)(local_40,*(undefined8 *)(param_5 + 10));
uVar3 = (ulonglong)uVar1;
if (uVar1 == 0) {
*param_5 = 1;
goto LAB_1400fc2f4;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
LAB_1400fc2b2:
FUN_140108480(*(longlong *)(param_5 + 4));
LAB_1400fc2f4:
FUN_140108480(local_38);
return uVar3;
}