int FUN_00421a68(undefined4 param_1,char *param_2,int param_3,int param_4)
{
char cVar1;
char cVar2;
char *pcVar3;
int iVar4;
iVar4 = 0;
LAB_00421b58:
pcVar3 = param_2;
if ((param_4 <= iVar4) || (cVar2 = *pcVar3, cVar2 == '\0')) {
return iVar4;
}
param_2 = pcVar3 + 1;
if (9 < (byte)(cVar2 - 0x30U)) {
if (5 < (byte)(cVar2 + 0x9fU)) goto LAB_00421aac;
cVar2 = cVar2 + -0x57 //possible issue identified - semgrep
goto LAB_00421ac0;
}
*(byte *)(param_3 + iVar4) = cVar2 - 0x30U;
goto LAB_00421ac8;
LAB_00421aac:
if (5 < (byte)(cVar2 + 0xbfU)) goto LAB_00421b58;
cVar2 = cVar2 + -0x37 //possible issue identified - semgrep
LAB_00421ac0:
*(char *)(param_3 + iVar4) = cVar2;
LAB_00421ac8:
cVar2 = *param_2;
if (cVar2 != '\0') {
param_2 = pcVar3 + 2;
if ((byte)(cVar2 - 0x30U) < 10) {
*(char *)(param_3 + iVar4) = (cVar2 - 0x30U) + *(char *)(param_3 + iVar4) * '\x10';
}
else {
if ((byte)(cVar2 + 0x9fU) < 6) {
cVar1 = *(char *)(param_3 + iVar4) //possible issue identified - semgrep
cVar2 = cVar2 + -0x57 //possible issue identified - semgrep
}
else {
if (5 < (byte)(cVar2 + 0xbfU)) goto LAB_00421b50;
cVar1 = *(char *)(param_3 + iVar4) //possible issue identified - semgrep
cVar2 = cVar2 + -0x37 //possible issue identified - semgrep
}
*(char *)(param_3 + iVar4) = cVar2 + cVar1 * '\x10';
}
}
LAB_00421b50:
iVar4 = iVar4 + 1;
goto LAB_00421b58;
}