void FUN_000278f0(byte *param_1,char *param_2,int param_3)

{
  byte bVar1;
  char cVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  
  do {
    if (param_3 == 0) {
      return;
    }
    uVar5 = (uint)*param_1;
    uVar4 = uVar5 - 0x30 & 0xff;
    if (9 < uVar4) {
      if ((uVar5 - 0x41 & 0xff) < 6) {
        uVar5 = uVar5 - 0x37;
      }
      else {
        uVar4 = 0xff;
        if (5 < (uVar5 - 0x61 & 0xff)) goto LAB_00027888;
        uVar5 = uVar5 - 0x57;
      }
      uVar4 = uVar5 & 0xff;
    }
LAB_00027888:
    cVar2 = (char)(uVar4 << 4)   //possible issue identified - semgrep
    *param_2 = cVar2;
    bVar1 = param_1[1];
    bVar3 = bVar1 - 0x30;
    if (9 < bVar3) {
      if ((byte)(bVar1 + 0xbf) < 6) {
        bVar3 = bVar1 - 0x37;
      }
      else {
        bVar3 = 0xff;
        if ((byte)(bVar1 + 0x9f) < 6) {
          bVar3 = bVar1 + 0xa9;
        }
      }
    }
    *param_2 = bVar3 + cVar2;
    param_1 = param_1 + 2;
    param_2 = param_2 + 1;
    param_3 = param_3 + -1;
  } while( true );
}