133 lines
4.6 KiB
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;
|
|
}
|
|
|