/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14010f440 FUN_14010f440 * Pseudocode, not original source. */ ulonglong FUN_14010f440(uint param_1,longlong param_2,undefined4 param_3,undefined1 *param_4, int param_5) { uint uVar1; int iVar2; uint uVar3; ulonglong uVar4; undefined1 *_Memory; undefined1 *_Memory_00; longlong lVar5; undefined1 *puVar6; longlong lVar7; int iVar8; if ((param_2 == 0) || (param_4 == (undefined1 *)0x0)) { return 0x10; } uVar4 = FUN_140109370(param_1); if ((int)uVar4 != 0) { return uVar4; } lVar7 = (longlong)(int)param_1 * 0x80; uVar1 = *(uint *)(&DAT_1401b817c + lVar7); _Memory = malloc(0x70); _Memory_00 = malloc((ulonglong)uVar1); if (_Memory == (undefined1 *)0x0) { _Memory = _Memory_00; if (_Memory_00 == (undefined1 *)0x0) { return 0xd; } } else if (_Memory_00 != (undefined1 *)0x0) { iVar2 = 0; while (param_5 != 0) { _Memory_00[3] = (char)iVar2; *_Memory_00 = (char)((uint)iVar2 >> 0x18); _Memory_00[1] = (char)((uint)iVar2 >> 0x10); iVar8 = iVar2 + 1; _Memory_00[2] = (char)((uint)iVar2 >> 8); uVar3 = (**(code **)(lVar7 + 0x1401b81c8))(_Memory); uVar4 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_14010f5ac; uVar3 = (**(code **)(lVar7 + 0x1401b81d0))(_Memory,param_2,param_3); uVar4 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_14010f5ac; uVar3 = (**(code **)(lVar7 + 0x1401b81d0))(_Memory,_Memory_00,4); uVar4 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_14010f5ac; uVar3 = (**(code **)(lVar7 + 0x1401b81d8))(_Memory,_Memory_00); uVar4 = (ulonglong)uVar3; if (uVar3 != 0) goto LAB_14010f5ac; uVar3 = 0; iVar2 = iVar8; if (uVar1 != 0) { lVar5 = (longlong)_Memory_00 - (longlong)param_4; puVar6 = param_4; do { if (param_5 == 0) goto LAB_14010f5aa; uVar3 = uVar3 + 1; param_4 = puVar6 + 1; *puVar6 = puVar6[lVar5]; param_5 = param_5 + -1; puVar6 = param_4; } while (uVar3 < uVar1); } } LAB_14010f5aa: uVar4 = 0; LAB_14010f5ac: free(_Memory_00); free(_Memory); return uVar4; } free(_Memory); return 0xd; }