/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 FUN_004040c0(byte *param_1,int param_2)
{
byte bVar1;
byte bVar2;
byte *pbVar3;
int *piVar4;
int iVar5;
uint uVar6;
int iVar7;
iVar7 = 0;
do {
uVar6 = (uint)*param_1;
if ((*param_1 == 0) ||
(((iVar5 = uVar6 - 0x30, (*(ushort *)(___ctype_b + uVar6 * 2) & 8) == 0 &&
(iVar5 = uVar6 - 0x57, 5 < (uVar6 - 0x61 & 0xff))) &&
(iVar5 = uVar6 - 0x37, 5 < (uVar6 - 0x41 & 0xff))))) break;
bVar1 = param_1[1];
uVar6 = (uint)bVar1;
if ((*(ushort *)(___ctype_b + uVar6 * 2) & 8) == 0) {
bVar2 = bVar1 + 0xa9;
if ((5 < (uVar6 - 0x61 & 0xff)) && (bVar2 = bVar1 - 0x37, 5 < (uVar6 - 0x41 & 0xff))) break;
}
else {
bVar2 = bVar1 - 0x30;
}
pbVar3 = (byte *)(param_2 + iVar7);
iVar7 = iVar7 + 1;
*pbVar3 = (byte)(iVar5 << 4) | bVar2;
if (iVar7 == 6) {
return 1;
}
pbVar3 = param_1 + 2;
param_1 = param_1 + 3;
} while (*pbVar3 == 0x3a);
piVar4 = __errno_location();
*piVar4 = 0x16;
return 0;
}