/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400cc3e0 FUN_1400cc3e0 * Pseudocode, not original source. */ undefined8 FUN_1400cc3e0(void *param_1,uint param_2,int param_3,uint param_4,undefined8 param_5,uint param_6, undefined1 *param_7,uint *param_8) { uint uVar1; int iVar2; undefined8 uVar3; char *pcVar4; uint uVar5; uint uVar6; ulonglong uVar7; char *_Dst; uint uVar8; if (param_3 != 1) { if (param_3 != 2) { return 0x18; } uVar3 = FUN_1400c6ac0(param_6); if ((int)uVar3 != 0) { return uVar3; } } uVar3 = 0; uVar8 = (uint)((param_4 & 7) != 0) + (param_4 >> 3); if (uVar8 < param_2 + 0xb) { return 0x16; } if (*param_8 < uVar8) { *param_8 = uVar8; uVar3 = 6; } else { _Dst = param_7 + 2; uVar5 = uVar8 - param_2; uVar6 = uVar5 - 3; if (param_3 == 2) { uVar1 = (**(code **)(&DAT_14015f498 + (longlong)(int)param_6 * 0x50))(_Dst,uVar6,param_5); if (uVar1 != uVar6) { return 9; } uVar7 = 0; pcVar4 = _Dst; if (uVar6 != 0) { do { if (*pcVar4 == '\0') { do { iVar2 = (**(code **)(&DAT_14015f498 + (longlong)(int)param_6 * 0x50)) (_Dst + uVar7,1,param_5); if (iVar2 != 1) { return 9; } } while (*pcVar4 == '\0'); } uVar1 = (int)uVar7 + 1; uVar7 = (ulonglong)uVar1; pcVar4 = pcVar4 + 1; } while (uVar1 < uVar6); } } else { memset(_Dst,0xff,(ulonglong)uVar6); } *param_7 = 0; param_7[1] = (char)param_3; param_7[uVar5 - 1] = 0; memcpy(param_7 + uVar5,param_1,(ulonglong)param_2); *param_8 = uVar8; } return uVar3; }