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

90 lines
2.5 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140104a30 FUN_140104a30
* Pseudocode, not original source. */
ulonglong FUN_140104a30(uint *param_1,uint *param_2,uint *param_3)
{
uint uVar1;
uint uVar2;
uint uVar3;
ulonglong uVar4;
ulonglong uVar5;
undefined8 uVar6;
uint local_48 [2];
uint local_40;
uint local_30 [2];
uint local_28;
if (*param_1 == 0) {
uVar4 = FUN_14010bb50(param_2,param_3);
return uVar4;
}
if (*param_2 == 0) {
uVar4 = FUN_14010bb50(param_1,param_3);
return uVar4;
}
uVar4 = FUN_140109cc0(local_30,param_1);
if ((int)uVar4 != 0) {
return uVar4;
}
uVar1 = FUN_140109cc0(local_48,param_2);
uVar4 = (ulonglong)uVar1;
if (uVar1 != 0) goto LAB_140104bef;
local_40 = uVar1;
local_28 = uVar1;
uVar2 = FUN_140103a70((int *)local_30);
uVar3 = FUN_140103a70((int *)local_48);
uVar1 = uVar3;
if ((int)uVar2 < (int)uVar3) {
uVar1 = uVar2;
}
if ((int)uVar1 < 1) {
LAB_140104b0f:
if (uVar2 != uVar1) {
uVar5 = FUN_140109cf0(local_30,uVar2 - uVar1,local_30,(undefined8 *)0x0);
uVar4 = uVar5 & 0xffffffff;
if ((int)uVar5 != 0) goto LAB_140104bd4;
}
if (uVar3 != uVar1) {
uVar5 = FUN_140109cf0(local_48,uVar3 - uVar1,local_48,(undefined8 *)0x0);
uVar4 = uVar5 & 0xffffffff;
if ((int)uVar5 != 0) goto LAB_140104bd4;
}
do {
if (local_48[0] == 0) {
uVar5 = FUN_140109960(local_30,uVar1,param_3);
uVar4 = uVar5 & 0xffffffff;
if ((int)uVar5 == 0) {
param_3[2] = 0;
}
break;
}
uVar6 = FUN_140109a90((int *)local_30,(int *)local_48);
if ((int)uVar6 == 1) {
FUN_14010b960((undefined8 *)local_30,(undefined8 *)local_48);
}
uVar5 = FUN_140109e70(local_48,local_30,local_48);
uVar4 = uVar5 & 0xffffffff;
if ((int)uVar5 != 0) break;
uVar2 = FUN_140103a70((int *)local_48);
uVar5 = FUN_140109cf0(local_48,uVar2,local_48,(undefined8 *)0x0);
uVar4 = uVar5 & 0xffffffff;
} while ((int)uVar5 == 0);
}
else {
uVar5 = FUN_140109cf0(local_30,uVar1,local_30,(undefined8 *)0x0);
uVar4 = uVar5 & 0xffffffff;
if ((int)uVar5 == 0) {
uVar5 = FUN_140109cf0(local_48,uVar1,local_48,(undefined8 *)0x0);
uVar4 = uVar5 & 0xffffffff;
if ((int)uVar5 == 0) goto LAB_140104b0f;
}
}
LAB_140104bd4:
FUN_1401037f0((int *)local_30);
LAB_140104bef:
FUN_1401037f0((int *)local_48);
return uVar4;
}