/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_00407c18(int param_1)

{
  char cVar1;
  char cVar2;
  int iVar3;
  char *pcVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  
  if ((param_1 == 0) || (iVar3 = sobj_new(), iVar3 == 0)) {
    param_1 = 0;
  }
  else {
    for (uVar9 = 0; uVar9 < *(uint *)(param_1 + 0x10); uVar9 = uVar9 + 1) {
      pcVar4 = (char *)(*(int *)(param_1 + 0x14) + uVar9);
      iVar8 = (int)*pcVar4;
      if ((iVar8 == 0x25) && (uVar11 = uVar9 + 2, uVar11 < *(uint *)(param_1 + 0x10))) {
        cVar1 = pcVar4[1]   //possible issue identified - semgrep
        iVar6 = (int)cVar1;
        if ((*(ushort *)(___ctype_b + iVar6 * 2) & 0x10) != 0) {
          cVar2 = *(char *)(*(int *)(param_1 + 0x14) + uVar11)   //possible issue identified - semgrep
          iVar10 = (int)cVar2;
          if ((*(ushort *)(___ctype_b + iVar10 * 2) & 0x10) != 0) {
            iVar8 = iVar6 + -0x30;
            if (((9 < (byte)(cVar1 - 0x30U)) && (iVar8 = iVar6 + -0x57, 5 < (byte)(cVar1 + 0x9fU)))
               && (iVar8 = iVar6 + -0x37, 5 < (byte)(cVar1 + 0xbfU))) {
              iVar8 = 0;
            }
            iVar6 = iVar10 + -0x30;
            if (((9 < (byte)(cVar2 - 0x30U)) && (iVar6 = iVar10 + -0x57, 5 < (byte)(cVar2 + 0x9fU)))
               && (iVar6 = iVar10 + -0x37, 5 < (byte)(cVar2 + 0xbfU))) {
              iVar6 = 0;
            }
            iVar8 = (iVar6 + iVar8 * 0x10) * 0x1000000 >> 0x18;
            uVar9 = uVar11;
          }
        }
      }
      FUN_00407168(iVar3,iVar8);
    }
    FUN_00406d18(param_1);
    uVar7 = *(undefined4 *)(iVar3 + 0xc);
    uVar5 = *(undefined4 *)(iVar3 + 0x10);
    *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(iVar3 + 0x14);
    *(undefined4 *)(param_1 + 0xc) = uVar7;
    *(undefined4 *)(param_1 + 0x10) = uVar5;
    *(undefined4 *)(iVar3 + 0x14) = 0;
    *(undefined4 *)(iVar3 + 0xc) = 0;
    *(undefined4 *)(iVar3 + 0x10) = 0;
    sobj_del(iVar3);
  }
  return param_1;
}