/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400bec50 FUN_1400bec50 * Pseudocode, not original source. */ void FUN_1400bec50(longlong *param_1,longlong param_2,undefined8 param_3,longlong param_4) { char cVar1; int iVar2; longlong lVar3; longlong lVar4; int iVar5; ulonglong uVar6; longlong lVar7; longlong *plVar8; uint uVar9; longlong lVar10; int iVar11; exception local_68 [80]; cVar1 = (**(code **)(*param_1 + 0x90))(); if (cVar1 != '\0') { FUN_14006ba50(local_68,(wchar_t *)PTR_u_Already_async_callback_may_occur_1401ad7a8,param_3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_68,(ThrowInfo *)&DAT_1401a93e8); } uVar9 = *(uint *)(param_1 + 4); uVar6 = 0; lVar7 = 0; if (0 < (int)uVar9) { plVar8 = param_1 + 1; while( true ) { if ((lVar7 < 0) || (iVar5 = (int)uVar6, (int)param_1[4] <= iVar5)) { /* WARNING: Subroutine does not return */ FUN_14006be30(uVar6,lVar7,(ulonglong)uVar9,param_4); } if (*(longlong *)(param_1[3] + lVar7 * 8) == param_2) break; uVar6 = (ulonglong)(iVar5 + 1U); lVar7 = lVar7 + 1; if ((int)uVar9 <= (int)(iVar5 + 1U)) { return; } } if (iVar5 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } iVar2 = (int)param_1[4] - iVar5; iVar11 = 1; if (iVar2 < 2) { iVar11 = iVar2; } uVar9 = ((int)param_1[4] - iVar11) - iVar5; uVar6 = (ulonglong)uVar9; if (0 < (int)uVar9) { lVar10 = (longlong)(int)uVar9; lVar7 = lVar7 * 8; do { lVar3 = FUN_14007a110((longlong)plVar8); lVar4 = FUN_14007a110((longlong)plVar8); *(undefined8 *)(lVar4 + lVar7) = *(undefined8 *)((longlong)iVar11 * 8 + lVar3 + lVar7); lVar7 = lVar7 + 8; lVar10 = lVar10 + -1; } while (lVar10 != 0); } FUN_1400cc980((longlong)plVar8,(int)param_1[4] - iVar11,uVar6,param_4); *(undefined8 *)(param_2 + 8) = 0; } return; }