/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14007cb60 FUN_14007cb60 * Pseudocode, not original source. */ void FUN_14007cb60(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4) { longlong lVar1; int iVar2; int iVar3; longlong lVar4; int iVar5; ulonglong uVar6; ulonglong uVar7; ulonglong uVar8; ulonglong uVar9; exception local_58 [80]; if (*(longlong *)(param_2 + 0xc80) == 0) { FUN_14006ba50(local_58,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,param_3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } iVar2 = *(int *)(param_2 + 0xc88); if (*(longlong *)(param_1 + 0xc80) == 0) { FUN_14006ba50(local_58,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,param_3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } iVar3 = *(int *)(param_1 + 0xc88); iVar5 = iVar3 + iVar2; if (*(longlong *)(param_1 + 0xc80) == 0) { FUN_14006ba50(local_58,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,param_3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } if ((-1 < iVar5) && (iVar5 <= *(int *)(param_1 + 0xc8c))) { *(int *)(param_1 + 0xc88) = iVar5; if (*(longlong *)(param_1 + 0xc80) == 0) { FUN_14006ba50(local_58,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,param_3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } if (*(longlong *)(param_2 + 0xc80) == 0) { FUN_14006ba50(local_58,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,param_3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } uVar6 = 0; if (0 < iVar2) { lVar1 = *(longlong *)(param_1 + 0xc80) + (longlong)iVar3 * 0x10; uVar7 = uVar6; uVar8 = uVar6; do { lVar4 = *(longlong *)(param_2 + 0xc80); if (lVar4 == 0) { FUN_14006ba50(local_58,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,uVar6, uVar7); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } if (((longlong)uVar7 < 0) || (*(int *)(param_2 + 0xc88) <= (int)uVar6)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } uVar7 = uVar7 + 1; uVar9 = uVar8 + 0x10; *(undefined8 *)(lVar1 + -0x10 + uVar9) = *(undefined8 *)(uVar8 + lVar4); uVar6 = (ulonglong)((int)uVar6 + 1); *(undefined8 *)(lVar1 + -8 + uVar9) = *(undefined8 *)(uVar8 + 8 + lVar4); uVar8 = uVar9; } while ((longlong)uVar7 < (longlong)iVar2); } return; } /* WARNING: Subroutine does not return */ FUN_14006be00(); }