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

96 lines
3 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400bf1a0 FUN_1400bf1a0
* Pseudocode, not original source. */
void FUN_1400bf1a0(longlong *param_1,longlong *param_2,undefined8 param_3,longlong param_4)
{
short sVar1;
ushort uVar2;
ushort uVar3;
longlong lVar4;
longlong lVar5;
longlong *plVar6;
longlong *plVar7;
int iVar8;
ushort uVar9;
ushort uVar10;
ushort uVar11;
longlong lVar12;
int iVar13;
longlong lVar14;
exception local_78 [80];
iVar13 = 0;
lVar14 = 0;
plVar6 = param_1;
plVar7 = param_2;
if (0 < (int)param_1[9]) {
do {
if ((lVar14 < 0) || ((int)param_1[9] <= iVar13)) {
/* WARNING: Subroutine does not return */
FUN_14006be30(plVar6,plVar7,param_3,param_4);
}
plVar6 = *(longlong **)(param_1[8] + lVar14 * 8);
sVar1 = (**(code **)(*param_2 + 8))(param_2);
uVar11 = sVar1 + 1;
uVar2 = (**(code **)*param_2)(param_2);
sVar1 = (**(code **)(*plVar6 + 8))(plVar6);
plVar7 = (longlong *)*plVar6;
uVar9 = sVar1 + 1;
uVar3 = (*(code *)*plVar7)();
uVar10 = uVar9;
if (uVar9 < uVar3) {
uVar10 = uVar3;
uVar3 = uVar9;
}
uVar9 = uVar11;
if (uVar11 < uVar2) {
uVar9 = uVar2;
uVar2 = uVar11;
}
if (uVar3 < uVar2) {
LAB_1400bf24d:
if ((uVar9 <= uVar10) || ((uVar2 <= uVar10 && (uVar10 <= uVar9)))) goto LAB_1400bf322;
if (uVar2 <= uVar3) goto LAB_1400bf26a;
}
else {
if (uVar10 <= uVar9) goto LAB_1400bf322;
if (uVar3 <= uVar2) goto LAB_1400bf24d;
LAB_1400bf26a:
if ((uVar3 <= uVar9) && (uVar9 <= uVar10)) {
LAB_1400bf322:
FUN_14006ba50(local_78,(wchar_t *)PTR_u_Duplicated_RMI_ID_is_found__Revi_1401ad798,param_3
,param_4);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_78,(ThrowInfo *)&DAT_1401a93e8);
}
}
iVar13 = iVar13 + 1;
lVar14 = lVar14 + 1;
} while (iVar13 < (int)param_1[9]);
}
param_2[2] = (longlong)param_1;
iVar13 = (int)param_1[9];
if (-1 < iVar13) {
lVar14 = param_1[9];
FUN_1400cc980((longlong)(param_1 + 6),(int)lVar14 + 1,param_3,param_4);
iVar8 = (int)lVar14 - iVar13;
if ((0 < iVar8) && (iVar8 = iVar8 + -1, lVar14 = (longlong)iVar8, -1 < iVar8)) {
lVar12 = (lVar14 + iVar13) * 8 + 8;
do {
lVar4 = FUN_14007a110((longlong)(param_1 + 6));
lVar5 = FUN_14007a110((longlong)(param_1 + 6));
*(undefined8 *)(lVar5 + lVar12) = *(undefined8 *)(lVar4 + -8 + lVar12);
lVar12 = lVar12 + -8;
lVar14 = lVar14 + -1;
} while (-1 < lVar14);
}
lVar14 = FUN_14007a110((longlong)(param_1 + 6));
*(longlong **)(lVar14 + (longlong)iVar13 * 8) = param_2;
return;
}
/* WARNING: Subroutine does not return */
FUN_14006be00();
}