/* WARNING: Removing unreachable block (ram,0x004098a0) */
/* WARNING: Removing unreachable block (ram,0x00409930) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 ipv6ip_main(int param_1,char **param_2)

{
  char *pcVar1;
  int iVar2;
  byte *pbVar3;
  byte *pbVar4;
  char *pcVar5;
  uint uVar6;
  byte *pbVar7;
  char *pcVar8;
  uint uVar9;
  uint uVar10;
  code *pcVar11;
  int iVar12;
  byte local_a8 [16];
  byte local_98 [16];
  byte local_88 [16];
  byte local_78 [16];
  byte local_68 [16];
  char acStack_58 [48];
  
  if (param_1 == 7) {
    uVar10 = 0;
    do {
      while( true ) {
        iVar2 = getopt(7,param_2,"n:l:h:")   //possible issue identified - semgrep
        if (iVar2 < 1) {
          uVar9 = 0;
          iVar2 = 0;
          uVar6 = uVar10;
          do {
            if ((int)uVar6 < 8) {
              if ((uVar6 & 7) == 0) {
                if ((int)uVar6 < 1) {
                  uVar9 = 0;
                  uVar6 = 0;
                }
              }
              else {
                iVar12 = (int)uVar6 % 8;
                uVar6 = uVar6 - iVar12;
                uVar9 = -(1 << (8U - iVar12 & 0x1f)) & 0xff;
              }
            }
            else {
              uVar6 = uVar6 - 8;
              uVar9 = 0xff;
            }
            pbVar3 = local_a8 + iVar2;
            pbVar4 = local_88 + iVar2;
            iVar2 = iVar2 + 1;
            *pbVar4 = (byte)uVar9 & *pbVar3;
          } while (iVar2 != 0x10);
          iVar2 = 0;
          do {
            if ((int)uVar10 < 8) {
              if ((uVar10 & 7) == 0) {
                if ((int)uVar10 < 1) {
                  uVar9 = 0xff;
                  uVar10 = 0;
                }
              }
              else {
                iVar12 = (int)uVar10 % 8;
                uVar10 = uVar10 - iVar12;
                uVar9 = (1 << (8U - iVar12 & 0x1f)) - 1U & 0xff;
              }
            }
            else {
              uVar10 = uVar10 - 8;
              uVar9 = 0;
            }
            pbVar3 = local_98 + iVar2;
            pbVar4 = local_78 + iVar2;
            iVar2 = iVar2 + 1;
            *pbVar4 = (byte)uVar9 & *pbVar3;
          } while (iVar2 != 0x10);
          iVar2 = 0;
          do {
            pbVar3 = local_78 + iVar2;
            pbVar4 = local_88 + iVar2;
            pbVar7 = local_68 + iVar2;
            iVar2 = iVar2 + 1;
            *pbVar7 = *pbVar3 | *pbVar4;
          } while (iVar2 != 0x10);
          memset(acStack_58,0,0x2e)   //possible issue identified - semgrep
          inet_ntop(10,local_68,acStack_58,0x2e)   //possible issue identified - semgrep
          puts(acStack_58);
          return 0;
        }
        if (iVar2 == 0x6c) break;
        if (iVar2 == 0x6e) {
          iVar2 = inet_pton(10,_optarg,local_a8)   //possible issue identified - semgrep
          if (iVar2 < 1) {
            pcVar5 = "Invalid Network ID.\n";
            goto LAB_004096c0;
          }
        }
        else {
          if (iVar2 != 0x68) goto LAB_004096d8;
          memset(acStack_58,0,0x2e)   //possible issue identified - semgrep
          pcVar5 = _optarg;
          pcVar1 = (char *)strlen(_optarg);
          if ((char *)0x2d < pcVar1) {
            pcVar1 = (char *)0x2e;
          }
          iVar2 = strncmp(pcVar5,"::",2);
          if (iVar2 == 0) {
            pcVar11 = memcpy;
            pcVar8 = pcVar5;
            pcVar5 = pcVar1;
          }
          else {
            pcVar11 = sprintf;
            if (*pcVar5 == ':') {
              pcVar8 = ":%s";
            }
            else {
              pcVar8 = "::%s";
            }
          }
          (*pcVar11)(acStack_58,pcVar8,pcVar5);
          iVar2 = inet_pton(10,acStack_58,local_98)   //possible issue identified - semgrep
          if (iVar2 < 1) {
            pcVar5 = "Invalid Host ID.\n";
            goto LAB_004096c0;
          }
        }
      }
      uVar10 = atoi(_optarg);
    } while (uVar10 < 0x80);
    pcVar5 = "Invalid Prefix Length.\n";
LAB_004096c0:
    fputs(pcVar5,_stderr);
  }
LAB_004096d8:
  fprintf(_stderr,"%s\n",s_Usage__ipv6ip__n__network_id___l_004221c0);
  return 0xffffffff;
}