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