/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400bcde0 FUN_1400bcde0 * Pseudocode, not original source. */ void FUN_1400bcde0(undefined8 *param_1,longlong param_2,SIZE_T param_3,longlong param_4) { int iVar1; undefined8 *puVar2; int iVar3; longlong lVar4; undefined8 *puVar5; size_t sVar6; longlong lVar7; int iVar8; longlong lVar9; exception local_b8 [72]; exception local_70 [72]; lVar4 = *(longlong *)(param_2 + 0xc80); iVar8 = 0; lVar9 = 0; if (lVar4 != 0) { lVar7 = 0; puVar5 = param_1; do { if (*(int *)(param_2 + 0xc88) <= iVar8) { return; } if (lVar4 == 0) { FUN_14006ba50(local_b8,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,param_3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1401a93e8); } if (lVar9 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } puVar2 = *(undefined8 **)(lVar4 + lVar7); iVar3 = *(int *)(lVar4 + 8 + lVar7); sVar6 = (size_t)iVar3; if (param_1[2] == 0) { lVar4 = param_1[1]; if (lVar4 == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(puVar5,puVar2,param_3,param_4); } if (iVar3 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } if (iVar3 != 0) { iVar1 = *(int *)(lVar4 + 0x18); FUN_1400146f0(lVar4,iVar1 + iVar3,param_3); if (*(int *)(lVar4 + 0x18) == 0) { lVar4 = 0; } else { lVar4 = *(longlong *)(lVar4 + 0x10); } puVar5 = (undefined8 *)(lVar4 + iVar1); goto LAB_1400bcecf; } } else { if (iVar3 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } if (iVar3 != 0) { param_4 = param_1[2]; if (param_4 == 0) { FUN_14006ba50(local_70,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0, param_3,0); /* WARNING: Subroutine does not return */ _CxxThrowException(local_70,(ThrowInfo *)&DAT_1401a93e8); } iVar1 = *(int *)(param_1 + 3); iVar3 = iVar1 + iVar3; if ((iVar3 < 0) || (*(int *)((longlong)param_1 + 0x1c) < iVar3)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } *(int *)(param_1 + 3) = iVar3; puVar5 = (undefined8 *)(iVar1 + param_4); LAB_1400bcecf: FUN_140006500(puVar5,puVar2,sVar6); param_3 = sVar6; } } lVar4 = *(longlong *)(param_2 + 0xc80); iVar8 = iVar8 + 1; lVar9 = lVar9 + 1; lVar7 = lVar7 + 0x10; } while (lVar4 != 0); } FUN_14006ba50(local_b8,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401ad9a0,param_3,param_4 ); /* WARNING: Subroutine does not return */ _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1401a93e8); }