/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400ac940 FUN_1400ac940 * Pseudocode, not original source. */ int FUN_1400ac940(char *param_1,char *param_2,int *param_3,uint param_4) { byte bVar1; char cVar2; short sVar3; short sVar4; int iVar5; uint uVar6; if (param_1 == (char *)0x0) { /* WARNING: Subroutine does not return */ FUN_14000b450(0x80004005); } if (param_2 == (char *)0x0) { /* WARNING: Subroutine does not return */ FUN_14000b450(0x80004005); } cVar2 = *param_1; uVar6 = 0; iVar5 = 1; if (cVar2 != '\0') { do { if (uVar6 == param_4) { iVar5 = 0; } else if (iVar5 != 0) { if (cVar2 == '%') { if ((param_1[1] != '\0') && (param_1[2] != '\0')) { bVar1 = param_1[1]; if ((byte)(bVar1 - 0x30) < 10) { sVar4 = bVar1 - 0x30; } else if ((byte)(bVar1 + 0xbf) < 6) { sVar4 = bVar1 - 0x37; } else if ((byte)(bVar1 + 0x9f) < 6) { sVar4 = bVar1 - 0x57; } else { sVar4 = -1; } bVar1 = param_1[2]; param_1 = param_1 + 2; if ((byte)(bVar1 - 0x30) < 10) { sVar3 = bVar1 - 0x30; } else if ((byte)(bVar1 + 0xbf) < 6) { sVar3 = bVar1 - 0x37; } else if ((byte)(bVar1 + 0x9f) < 6) { sVar3 = bVar1 - 0x57; } else { sVar3 = -1; } if ((-1 < sVar4) && (-1 < sVar3)) { *param_2 = (char)sVar4 * '\x10' + (char)sVar3; goto LAB_1400aca51; } } iVar5 = 0; goto LAB_1400aca74; } *param_2 = cVar2; LAB_1400aca51: param_2 = param_2 + 1; } cVar2 = param_1[1]; param_1 = param_1 + 1; uVar6 = uVar6 + 1; } while (cVar2 != '\0'); if (iVar5 == 0) goto LAB_1400aca74; } if (uVar6 < param_4) { *param_2 = '\0'; } LAB_1400aca74: if (param_3 != (int *)0x0) { *param_3 = uVar6 + 1; } if (param_4 < uVar6 + 1) { iVar5 = 0; } return iVar5; }