/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14004df50 FUN_14004df50 * Pseudocode, not original source. */ uint * FUN_14004df50(uint *param_1,ulonglong *param_2,undefined8 param_3,undefined8 param_4) { undefined1 *puVar1; uint uVar2; undefined1 *puVar3; uint *puVar4; undefined4 uVar5; undefined1 uVar6; ulonglong uVar7; undefined8 uVar8; undefined4 uVar9; uint local_res8 [4]; undefined4 local_res18 [2]; undefined4 local_res20 [2]; undefined1 local_48; undefined4 local_47; undefined4 local_43; puVar4 = local_res8; uVar8 = 4; FUN_1400bc930(param_1,(undefined8 *)puVar4,4); uVar2 = local_res8[0]; uVar7 = (ulonglong)local_res8[0]; if (((int)local_res8[0] < 0) || (DAT_1401ac140 <= (int)local_res8[0])) { FUN_1400d9ab0(local_res8[0],puVar4,uVar8,param_4); } FUN_140051700((longlong *)param_2,(longlong)(int)uVar2); FUN_140051830(param_2); if (0 < (int)uVar2) { do { uVar8 = FUN_1400bc930(param_1,(undefined8 *)local_res8,1); uVar6 = 0; if ((char)uVar8 != '\0') { uVar6 = (undefined1)local_res8[0]; } local_48 = uVar6; uVar8 = FUN_1400bc930(param_1,(undefined8 *)local_res18,4); uVar5 = 0; if ((char)uVar8 != '\0') { uVar5 = local_res18[0]; } local_47 = uVar5; uVar8 = FUN_1400bc930(param_1,(undefined8 *)local_res20,4); puVar1 = (undefined1 *)param_2[1]; uVar9 = 0; if ((char)uVar8 != '\0') { uVar9 = local_res20[0]; } local_43 = uVar9; if ((&local_48 < puVar1) && (puVar3 = (undefined1 *)*param_2, puVar3 <= &local_48)) { if (puVar1 == (undefined1 *)param_2[2]) { FUN_140052d30((longlong *)param_2,1); } puVar1 = (undefined1 *)param_2[1]; puVar3 = (undefined1 *)(((longlong)(&local_48 + -(longlong)puVar3) / 9) * 9 + *param_2); if (puVar1 != (undefined1 *)0x0) { *puVar1 = *puVar3; *(undefined4 *)(puVar1 + 1) = *(undefined4 *)(puVar3 + 1); *(undefined4 *)(puVar1 + 5) = *(undefined4 *)(puVar3 + 5); } } else { if (puVar1 == (undefined1 *)param_2[2]) { FUN_140052d30((longlong *)param_2,1); } puVar1 = (undefined1 *)param_2[1]; if (puVar1 != (undefined1 *)0x0) { *puVar1 = uVar6; *(undefined4 *)(puVar1 + 1) = uVar5; *(undefined4 *)(puVar1 + 5) = uVar9; } } param_2[1] = param_2[1] + 9; uVar7 = uVar7 - 1; } while (uVar7 != 0); } return param_1; }