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