/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400bea40 FUN_1400bea40 * Pseudocode, not original source. */ undefined8 FUN_1400bea40(longlong *param_1,uint *param_2,int *param_3,ulonglong param_4) { uint uVar1; longlong lVar2; int iVar3; ulonglong uVar4; int *piVar5; longlong lVar6; ulonglong *puVar7; longlong lVar8; int iVar9; int *piVar10; longlong lVar11; int local_res10 [4]; ulonglong local_res20; uint local_28 [4]; uVar1 = *param_2; piVar10 = param_3; uVar4 = FUN_1400bcfd0(param_2,(undefined8 *)local_28,param_3,param_4); if ((char)uVar4 != '\0') { puVar7 = &local_res20; uVar4 = FUN_1400bcfd0(param_2,puVar7,piVar10,param_4); if ((char)uVar4 != '\0') { iVar3 = (**(code **)(*param_1 + 0xd0))(param_1); iVar9 = (int)local_res20; if (iVar9 <= iVar3) { local_res10[0] = iVar9; FUN_1400bc4d0((longlong)param_3,puVar7,(SIZE_T)piVar10,param_4); uVar4 = local_res20 & 0xffffffff; piVar5 = param_3; FUN_1400bcb60(param_3,uVar4,(SIZE_T)piVar10,param_4); lVar11 = *(longlong *)(param_2 + 4); if (lVar11 == 0) { lVar6 = *(longlong *)(param_2 + 2); if (lVar6 == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(piVar5,uVar4,piVar10,0); } if (*(int *)(lVar6 + 0x18) != 0) { lVar11 = *(longlong *)(lVar6 + 0x10); } } lVar6 = *(longlong *)(param_3 + 4); lVar8 = (longlong)((int)(*param_2 + ((int)*param_2 >> 0x1f & 7U)) >> 3); if (lVar6 == 0) { lVar2 = *(longlong *)(param_3 + 2); if (lVar2 == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(0,lVar8,piVar10,lVar11); } if (*(int *)(lVar2 + 0x18) != 0) { lVar6 = *(longlong *)(lVar2 + 0x10); } } piVar10 = (int *)(lVar11 + lVar8); param_4 = (ulonglong)local_28[0]; uVar4 = FUN_1400f6680(lVar6,local_res10,(longlong)piVar10,local_28[0]); if (((int)uVar4 == 0) && (local_res10[0] == iVar9)) { return CONCAT71((int7)(uVar4 >> 8),1); } } } } uVar4 = FUN_1400bc600((int *)param_2, (ulonglong)(uint)((int)(((int)uVar1 >> 0x1f & 7U) + uVar1) >> 3),piVar10, param_4); return uVar4 & 0xffffffffffffff00; }