/* WARNING: Heritage AFTER dead removal. Example location: r0x004c2220 : 0x004867f4 */
/* WARNING: Restarted to delay deadcode elimination for space: ram */

int FUN_0048669c(int param_1,undefined4 *param_2,char *param_3,int *param_4,int *param_5,int param_6
                )

{
  char cVar1;
  bool bVar2;
  bool bVar3;
  char *pcVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  char *pcVar11;
  int iVar12;
  int iVar13;
  int *piVar14;
  int *piVar15;
  int iVar16;
  char *pcVar17;
  int local_40;
  
  DAT_004c2220 = DAT_004b7820;
  DAT_004c2224 = DAT_004b7824;
  iVar10 = DAT_004b7824;
  if (*param_3 == ':') {
    iVar10 = 0;
  }
  if (param_1 < 1) {
    DAT_004c2220 = DAT_004b7820;
    DAT_004c2224 = DAT_004b7824;
    DAT_004b7828 = DAT_004c222c;
    DAT_004b859c = DAT_004c2228;
    return -1;
  }
  DAT_004c2228 = (char *)0x0;
  if (DAT_004b7820 == 0) {
    DAT_004c2220 = 1;
LAB_00486754:
    DAT_004c2240 = DAT_004c2220;
    DAT_004c2244 = DAT_004c2220;
    DAT_004c223c = (char *)0x0;
    iVar9 = FUN_00485de0("POSIXLY_CORRECT");
    DAT_004c2238 = (uint)(iVar9 != 0);
    if (*param_3 == '-') {
      DAT_004c2234 = 2;
LAB_004867ac:
      param_3 = param_3 + 1;
    }
    else {
      if (*param_3 == '+') {
        DAT_004c2234 = 0;
        goto LAB_004867ac;
      }
      if (DAT_004c2238 == 0) {
        DAT_004c2234 = 1;
      }
      else {
        DAT_004c2234 = 0;
      }
    }
    DAT_004c2230 = 1;
  }
  else if (DAT_004c2230 == 0) goto LAB_00486754;
  if ((DAT_004c223c == (char *)0x0) || (*DAT_004c223c == '\0')) {
    if (DAT_004c2220 < DAT_004c2244) {
      DAT_004c2244 = DAT_004c2220;
    }
    if (DAT_004c2220 < DAT_004c2240) {
      DAT_004c2240 = DAT_004c2220;
    }
    if (DAT_004c2234 == 1) {
      iVar9 = DAT_004c2220;
      if (DAT_004c2240 == DAT_004c2244) {
        if (DAT_004c2240 != DAT_004c2220) {
          DAT_004c2240 = DAT_004c2220;
        }
      }
      else if (DAT_004c2244 != DAT_004c2220) {
        FUN_004865c0(param_2);
        iVar9 = DAT_004c2220;
      }
      do {
        DAT_004c2220 = iVar9;
        if (param_1 <= DAT_004c2220) break;
        iVar9 = DAT_004c2220 + 1;
      } while ((*(char *)param_2[DAT_004c2220] != '-') ||
              (((char *)param_2[DAT_004c2220])[1] == '\0'));
      DAT_004c2244 = DAT_004c2220;
    }
    iVar9 = DAT_004c2220;
    iVar16 = DAT_004c2220;
    iVar7 = DAT_004c2240;
    iVar13 = DAT_004c2244;
    if ((((DAT_004c2220 != param_1) &&
         (iVar12 = FUN_00483d20(param_2[DAT_004c2220],&DAT_00497fe0), iVar16 = DAT_004c2220,
         iVar7 = DAT_004c2240, iVar13 = DAT_004c2244, iVar12 == 0)) &&
        (DAT_004c2220 = iVar9 + 1, iVar16 = param_1, iVar7 = DAT_004c2220, iVar13 = param_1,
        DAT_004c2240 != DAT_004c2244)) &&
       (iVar16 = param_1, iVar7 = DAT_004c2240, iVar13 = param_1, DAT_004c2244 != DAT_004c2220)) {
      FUN_004865c0(param_2);
      iVar16 = param_1;
      iVar7 = DAT_004c2240;
      iVar13 = param_1;
    }
    DAT_004c2244 = iVar13;
    DAT_004c2240 = iVar7;
    DAT_004c2220 = iVar16;
    if (DAT_004c2220 == param_1) {
      if (DAT_004c2240 != DAT_004c2244) {
        DAT_004b7820 = DAT_004c2240;
        DAT_004c2220 = DAT_004c2240;
        DAT_004b7828 = DAT_004c222c;
        DAT_004b859c = DAT_004c2228;
        return -1;
      }
      DAT_004b7820 = DAT_004c2220;
      DAT_004b7828 = DAT_004c222c;
      DAT_004b859c = DAT_004c2228;
      return -1;
    }
    pcVar11 = (char *)param_2[DAT_004c2220];
    if ((*pcVar11 != '-') || (pcVar11[1] == '\0')) {
      if (DAT_004c2234 != 0) {
        DAT_004b7820 = DAT_004c2220 + 1;
        DAT_004c2220 = DAT_004c2220 + 1;
        DAT_004c2228 = pcVar11;
        DAT_004b7828 = DAT_004c222c;
        DAT_004b859c = pcVar11;
        return 1;
      }
      DAT_004b7820 = DAT_004c2220;
      DAT_004b7828 = DAT_004c222c;
      DAT_004b859c = DAT_004c2228;
      return -1;
    }
    uVar6 = 0;
    if (param_4 != (int *)0x0) {
      uVar6 = (uint)(pcVar11[1] == '-');
    }
    DAT_004c223c = pcVar11 + uVar6 + 1;
  }
  iVar9 = DAT_004c2220;
  if (param_4 != (int *)0x0) {
    pcVar17 = (char *)param_2[DAT_004c2220];
    iVar16 = (int)pcVar17[1];
    pcVar11 = DAT_004c223c;
    if ((iVar16 == 0x2d) ||
       ((param_6 != 0 &&
        ((pcVar17[2] != '\0' ||
         (iVar7 = FUN_00483cf0(param_3,iVar16), pcVar11 = DAT_004c223c, iVar7 == 0)))))) {
      for (; (pcVar4 = DAT_004c223c, *pcVar11 != '\0' && (*pcVar11 != '=')); pcVar11 = pcVar11 + 1)
      {
      }
      iVar7 = (int)pcVar11 - (int)DAT_004c223c;
      iVar13 = 0;
      local_40 = -1;
      bVar3 = false;
      piVar15 = (int *)0x0;
      for (; iVar12 = *param_4, iVar12 != 0; param_4 = param_4 + 4) {
        iVar8 = FUN_00483ec0(iVar12,pcVar4,iVar7);
        piVar14 = piVar15;
        iVar5 = local_40;
        if (iVar8 == 0) {
          iVar12 = FUN_00483e50(iVar12);
          if (iVar7 == iVar12) {
            bVar2 = true;
            local_40 = iVar13;
            goto LAB_00486b34;
          }
          piVar14 = param_4;
          iVar5 = iVar13;
          if (piVar15 != (int *)0x0) {
            if (param_6 == 0) {
              if (piVar15[1] == param_4[1]) {
                if (piVar15[2] == param_4[2]) {
                  piVar14 = piVar15;
                  iVar5 = local_40;
                  if (piVar15[3] != param_4[3]) goto LAB_00486b18;
                }
                else {
                  bVar3 = true;
                  piVar14 = piVar15;
                  iVar5 = local_40;
                }
              }
              else {
                bVar3 = true;
                piVar14 = piVar15;
                iVar5 = local_40;
              }
            }
            else {
LAB_00486b18:
              bVar3 = true;
              piVar14 = piVar15;
              iVar5 = local_40;
            }
          }
        }
        local_40 = iVar5;
        iVar13 = iVar13 + 1;
        piVar15 = piVar14;
      }
      bVar2 = false;
      param_4 = piVar15;
LAB_00486b34:
      if ((!bVar3) || (bVar2)) {
        if (param_4 != (int *)0x0) {
          DAT_004c2220 = iVar9 + 1;
          if (*pcVar11 == '\0') {
            if (param_4[1] == 1) {
              if (param_1 <= DAT_004c2220) {
                if (iVar10 != 0) {
                  FUN_00480770(PTR_DAT_004b76b8,"%s: option `%s\' requires an argument\n",*param_2,
                               param_2[-(1 - DAT_004c2220)]);
                }
                pcVar11 = DAT_004c223c;
                iVar10 = FUN_00483e50(DAT_004c223c);
                DAT_004b7828 = param_4[3];
                if (*param_3 == ':') {
                  DAT_004b7820 = DAT_004c2220;
                  DAT_004c223c = pcVar11 + iVar10;
                  DAT_004b859c = DAT_004c2228;
                  DAT_004c222c = DAT_004b7828;
                  return 0x3a;
                }
                DAT_004b7820 = DAT_004c2220;
                DAT_004c223c = pcVar11 + iVar10;
                DAT_004b859c = DAT_004c2228;
                DAT_004c222c = DAT_004b7828;
                return 0x3f;
              }
              DAT_004c2228 = (char *)param_2[DAT_004c2220];
              DAT_004c2220 = iVar9 + 2;
            }
          }
          else {
            if (param_4[1] == 0) {
              if (iVar10 != 0) {
                if (((char *)param_2[-(1 - DAT_004c2220)])[1] == '-') {
                  FUN_00480770(PTR_DAT_004b76b8,"%s: option `--%s\' doesn\'t allow an argument\n",
                               *param_2,*param_4);
                }
                else {
                  FUN_00480770(PTR_DAT_004b76b8,"%s: option `%c%s\' doesn\'t allow an argument\n",
                               *param_2,(int)*(char *)param_2[-(1 - DAT_004c2220)],*param_4);
                }
              }
              pcVar11 = DAT_004c223c;
              iVar10 = FUN_00483e50(DAT_004c223c);
              DAT_004b7820 = DAT_004c2220;
              DAT_004c223c = pcVar11 + iVar10;
              DAT_004b7828 = param_4[3];
              DAT_004b859c = DAT_004c2228;
              DAT_004c222c = param_4[3];
              return 0x3f;
            }
            DAT_004c2228 = pcVar11 + 1;
          }
          iVar10 = FUN_00483e50(pcVar4);
          DAT_004c223c = pcVar4 + iVar10;
          if (param_5 != (int *)0x0) {
            *param_5 = local_40;
          }
          if ((int *)param_4[2] != (int *)0x0) {
            *(int *)param_4[2] = param_4[3];
            DAT_004b7820 = DAT_004c2220;
            DAT_004b7828 = DAT_004c222c;
            DAT_004b859c = DAT_004c2228;
            return 0;
          }
          DAT_004b7820 = DAT_004c2220;
          DAT_004b7828 = DAT_004c222c;
          DAT_004b859c = DAT_004c2228;
          return param_4[3];
        }
        if (((param_6 != 0) && (iVar16 != 0x2d)) &&
           (iVar9 = FUN_00483cf0(param_3,(int)*pcVar4), iVar9 != 0)) goto LAB_00486e60;
        if (iVar10 != 0) {
          if (iVar16 == 0x2d) {
            FUN_00480770(PTR_DAT_004b76b8,"%s: unrecognized option `--%s\'\n",*param_2,pcVar4);
          }
          else {
            FUN_00480770(PTR_DAT_004b76b8,"%s: unrecognized option `%c%s\'\n",*param_2,(int)*pcVar17
                         ,pcVar4);
          }
        }
        DAT_004c223c = "";
      }
      else {
        if (iVar10 != 0) {
          FUN_00480770(PTR_DAT_004b76b8,"%s: option `%s\' is ambiguous\n",*param_2,pcVar17);
        }
        pcVar11 = DAT_004c223c;
        iVar10 = FUN_00483e50(DAT_004c223c);
        DAT_004c223c = pcVar11 + iVar10;
      }
      DAT_004c2220 = DAT_004c2220 + 1;
      DAT_004b7820 = DAT_004c2220;
      DAT_004b7828 = 0;
      DAT_004b859c = DAT_004c2228;
      DAT_004c222c = 0;
      return 0x3f;
    }
  }
LAB_00486e60:
  pcVar11 = DAT_004c223c;
  iVar16 = (int)*DAT_004c223c;
  pcVar17 = DAT_004c223c + 1;
  DAT_004c223c = pcVar17;
  iVar9 = FUN_00483cf0(param_3,iVar16);
  if (pcVar11[1] == '\0') {
    DAT_004c2220 = DAT_004c2220 + 1;
  }
  if ((iVar9 == 0) || (iVar16 == 0x3a)) {
    if (iVar10 != 0) {
      if (DAT_004c2238 == 0) {
        pcVar11 = "%s: invalid option -- %c\n";
      }
      else {
        pcVar11 = "%s: illegal option -- %c\n";
      }
      FUN_00480770(PTR_DAT_004b76b8,pcVar11,*param_2,iVar16);
    }
    DAT_004b7820 = DAT_004c2220;
    DAT_004b7828 = iVar16;
    DAT_004b859c = DAT_004c2228;
    DAT_004c222c = iVar16;
    return 0x3f;
  }
  if (*(char *)(iVar9 + 1) != ':') {
    DAT_004b7820 = DAT_004c2220;
    DAT_004b7828 = DAT_004c222c;
    DAT_004b859c = DAT_004c2228;
    return iVar16;
  }
  cVar1 = pcVar11[1]   //possible issue identified - semgrep
  if (*(char *)(iVar9 + 2) == ':') {
    if (cVar1 == '\0') {
      DAT_004b7820 = DAT_004c2220;
      DAT_004c2228 = (char *)0x0;
      DAT_004c223c = (char *)0x0;
      DAT_004b7828 = DAT_004c222c;
      DAT_004b859c = (char *)0x0;
      return iVar16;
    }
  }
  else if (cVar1 == '\0') {
    if (DAT_004c2220 != param_1) {
      param_2 = param_2 + DAT_004c2220;
      DAT_004b7820 = DAT_004c2220 + 1;
      DAT_004c2220 = DAT_004c2220 + 1;
      DAT_004c2228 = (char *)*param_2;
      DAT_004c223c = (char *)0x0;
      DAT_004b7828 = DAT_004c222c;
      DAT_004b859c = (char *)*param_2;
      return iVar16;
    }
    if (iVar10 != 0) {
      FUN_00480770(PTR_DAT_004b76b8,"%s: option requires an argument -- %c\n",*param_2,iVar16);
    }
    if (*param_3 != ':') {
      DAT_004b7820 = DAT_004c2220;
      DAT_004c223c = (char *)0x0;
      DAT_004b7828 = iVar16;
      DAT_004b859c = DAT_004c2228;
      DAT_004c222c = iVar16;
      return 0x3f;
    }
    DAT_004b7820 = DAT_004c2220;
    DAT_004c223c = (char *)0x0;
    DAT_004b7828 = iVar16;
    DAT_004b859c = DAT_004c2228;
    DAT_004c222c = iVar16;
    return 0x3a;
  }
  DAT_004c2220 = DAT_004c2220 + 1;
  DAT_004c223c = (char *)0x0;
  DAT_004c2228 = pcVar17;
  DAT_004b7820 = DAT_004c2220;
  DAT_004b859c = pcVar17;
  DAT_004b7828 = DAT_004c222c;
  return iVar16;
}