/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400d44c0 FUN_1400d44c0 * Pseudocode, not original source. */ undefined8 FUN_1400d44c0(char *param_1,uint param_2,undefined1 *param_3,uint *param_4) { undefined8 uVar1; undefined1 uVar2; uint uVar3; byte bVar4; uint uVar5; ulonglong uVar6; uint uVar7; byte *pbVar8; uint local_res8 [2]; if (((param_1 != (char *)0x0) && (param_3 != (undefined1 *)0x0)) && (param_4 != (uint *)0x0)) { uVar1 = FUN_1400d1fc0((ulonglong)param_2,(int *)local_res8); if ((int)uVar1 == 0) { if (*param_4 < local_res8[0]) { *param_4 = local_res8[0]; return 6; } uVar7 = 0; *param_3 = 3; uVar5 = 1; uVar3 = ((param_2 & 7) != 0) + 1 + (param_2 >> 3); uVar2 = (undefined1)uVar3; if (uVar3 < 0x80) { param_3[1] = uVar2; uVar5 = 2; } else if (uVar3 < 0x100) { param_3[1] = 0x81; uVar5 = 3; param_3[2] = uVar2; } else if (uVar3 < 0x10000) { param_3[1] = 0x82; uVar5 = 4; param_3[2] = (char)(uVar3 >> 8); param_3[3] = uVar2; } uVar6 = (ulonglong)(uVar5 + 1); bVar4 = 0; param_3[uVar5] = -(char)param_2 & 7; if (param_2 != 0) { pbVar8 = param_3 + (int)(uVar5 + 1); do { bVar4 = bVar4 | (*param_1 != '\0') << (7U - (char)(uVar7 & 7) & 0x1f); if ((uVar7 & 7) == 7) { *pbVar8 = bVar4; pbVar8 = pbVar8 + 1; uVar6 = (ulonglong)((int)uVar6 + 1); bVar4 = 0; } uVar7 = uVar7 + 1; param_1 = param_1 + 1; } while (uVar7 < param_2); } if ((param_2 & 7) != 0) { param_3[uVar6] = bVar4; uVar6 = (ulonglong)((int)uVar6 + 1); } *param_4 = (uint)uVar6; uVar1 = 0; } return uVar1; } return 0x10; }