/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400c8490 FUN_1400c8490 * Pseudocode, not original source. */ int FUN_1400c8490(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_1400050d0(0x80004005); } if (param_2 == (char *)0x0) { /* WARNING: Subroutine does not return */ FUN_1400050d0(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_1400c85a1; } } iVar5 = 0; goto LAB_1400c85c4; } *param_2 = cVar2; LAB_1400c85a1: 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_1400c85c4; } if (uVar6 < param_4) { *param_2 = '\0'; } LAB_1400c85c4: if (param_3 != (int *)0x0) { *param_3 = uVar6 + 1; } if (param_4 < uVar6 + 1) { iVar5 = 0; } return iVar5; }