/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x140110a30 FUN_140110a30 * Pseudocode, not original source. */ undefined8 FUN_140110a30(byte *param_1,uint param_2,undefined1 *param_3,uint *param_4) { undefined1 uVar1; undefined4 uVar2; undefined8 uVar3; longlong lVar4; undefined1 uVar5; ulonglong uVar6; uint uVar7; undefined1 *puVar8; uint local_res8 [2]; uVar6 = (ulonglong)param_2; if (((param_1 != (byte *)0x0) && (param_3 != (undefined1 *)0x0)) && (param_4 != (uint *)0x0)) { uVar3 = FUN_14010e410(param_1,param_2,(int *)local_res8); if ((int)uVar3 == 0) { if (*param_4 < local_res8[0]) { *param_4 = local_res8[0]; return 6; } *param_3 = 0x16; uVar5 = (undefined1)param_2; if (param_2 < 0x80) { param_3[1] = uVar5; uVar7 = 2; } else if (param_2 < 0x100) { param_3[1] = 0x81; uVar7 = 3; param_3[2] = uVar5; } else { uVar1 = (undefined1)(param_2 >> 8); if (param_2 < 0x10000) { param_3[1] = 0x82; uVar7 = 4; param_3[2] = uVar1; param_3[3] = uVar5; } else { if (0xffffff < param_2) { return 0x10; } param_3[1] = 0x83; uVar7 = 5; param_3[2] = (char)(param_2 >> 0x10); param_3[3] = uVar1; param_3[4] = uVar5; } } lVar4 = (longlong)(int)uVar7; if (param_2 != 0) { uVar7 = uVar7 + param_2; puVar8 = param_3 + lVar4; do { uVar2 = FUN_14010e3a0((uint)*param_1); param_1 = param_1 + 1; uVar6 = uVar6 - 1; *puVar8 = (char)uVar2; puVar8 = puVar8 + 1; } while (uVar6 != 0); } *param_4 = uVar7; uVar3 = 0; } return uVar3; } return 0x10; }