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;
}