/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400df7e0 FUN_1400df7e0 * Pseudocode, not original source. */ void FUN_1400df7e0(longlong param_1,longlong param_2,size_t param_3,undefined8 param_4) { uint uVar1; longlong lVar2; longlong lVar3; void *_Src; int iVar4; longlong lVar5; int iVar6; ulonglong uVar7; int iVar8; longlong lVar9; undefined4 uStackX_c; _Src = (void *)0x0; lVar3 = param_2; FUN_14007b600(param_2,0,param_3); iVar6 = *(int *)(param_1 + 0x18); iVar8 = 0; lVar9 = 0; if (0 < iVar6) { do { if ((lVar9 < 0) || (iVar6 <= iVar8)) { /* WARNING: Subroutine does not return */ FUN_14006be30(lVar3,_Src,param_3,param_4); } uVar7 = *(ulonglong *)(*(longlong *)(param_1 + 0x10) + lVar9 * 8); uStackX_c = (int)(uVar7 >> 0x20); uVar7 = uVar7 & 0xffffffff; while( true ) { iVar6 = *(int *)(param_2 + 0x18); lVar5 = (longlong)iVar6; if (iVar6 < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } iVar4 = *(int *)(param_2 + 0x18); uVar1 = iVar4 + 1; _Src = (void *)(ulonglong)uVar1; FUN_14007b600(param_2,uVar1,param_3); iVar4 = iVar4 - iVar6; if (0 < iVar4) { if (*(int *)(param_2 + 0x18) == 0) { lVar3 = 0; lVar2 = 0; } else { lVar3 = *(longlong *)(param_2 + 0x10); lVar2 = *(longlong *)(param_2 + 0x10); } _Src = (void *)(lVar3 + lVar5 * 4); param_3 = (longlong)iVar4 << 2; memmove((void *)(lVar2 + 4 + lVar5 * 4),_Src,param_3); } if (*(int *)(param_2 + 0x18) == 0) { lVar3 = 0; } else { lVar3 = *(longlong *)(param_2 + 0x10); } iVar6 = (int)uVar7; *(int *)(lVar3 + lVar5 * 4) = iVar6; if (iVar6 == uStackX_c) break; uVar7 = (ulonglong)(iVar6 + 1); } iVar6 = *(int *)(param_1 + 0x18); iVar8 = iVar8 + 1; lVar9 = lVar9 + 1; } while (iVar8 < iVar6); } return; }