/* 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(); }