/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400de5d0 FUN_1400de5d0 * Pseudocode, not original source. */ int FUN_1400de5d0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { longlong lVar1; int *piVar2; longlong lVar3; uint uVar4; longlong lVar6; uint uVar7; ulonglong uVar9; uint uVar10; exception local_58 [80]; ulonglong uVar5; ulonglong uVar8; lVar1 = *(longlong *)(param_1 + 0xc80); uVar5 = 0; uVar10 = 0; if (lVar1 == 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); } lVar6 = (longlong)*(int *)(param_1 + 0xc88); uVar9 = uVar5; uVar7 = uVar10; uVar4 = uVar10; if (1 < lVar6) { piVar2 = (int *)(lVar1 + 0x18); lVar3 = (lVar6 - 2U >> 1) + 1; uVar9 = lVar3 * 2; uVar8 = uVar5; do { uVar4 = (int)uVar5 + piVar2[-4]; uVar5 = (ulonglong)uVar4; uVar7 = (int)uVar8 + *piVar2; uVar8 = (ulonglong)uVar7; piVar2 = piVar2 + 8; lVar3 = lVar3 + -1; } while (lVar3 != 0); } if ((longlong)uVar9 < lVar6) { uVar10 = *(uint *)(lVar1 + 8 + uVar9 * 0x10); } return uVar7 + uVar4 + uVar10; }