#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ isxdigit(char const);
int /*<<< orphan*/ printf(char *, ...);
unsigned int sscanf(char const *, char *, unsigned int *, ...);
int /*<<< orphan*/ strlen(char const *);
int /*<<< orphan*/ strncmp(int /*<<< orphan*/, char *, int);
unsigned uInIpv6Format32(const char *cIPv6, unsigned *h1, unsigned *h2,
                         unsigned *h3, unsigned *h4, unsigned *h5, unsigned *h6,
                         unsigned *h7, unsigned *h8) {
  register int i;
  unsigned uColonCount = 0;
  unsigned uRead = 0;
  for (i = 0; cIPv6[i]; i++) {
    if (cIPv6[i] == ':')
      uColonCount++;
    if (cIPv6[i] != ':' && !isxdigit(cIPv6[i]))
      return (0);
  }
  switch (uColonCount) {
  case 0:
  case 1:
    printf("err 1\n");
    return (0);
    break;
  case 2:
    uRead = sscanf(cIPv6, "%x::%x", h1, h8);
    if (uRead != 2 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
      uRead = sscanf(cIPv6, "%x::", h1);
      if (uRead != 1) {
        printf("err 2a\n");
        return (0);
      }
    } else if (uRead != 2) {
      printf("err 2b\n");
      return (0);
    }
    break;
  case 3:
    uRead = sscanf(cIPv6, "%x::%x:%x", h1, h7, h8);
    if (uRead != 3) {
      uRead = sscanf(cIPv6, "%x:%x::%x", h1, h2, h8);
      if (uRead != 3 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
        uRead = sscanf(cIPv6, "%x:%x::", h1, h2);
        if (uRead != 2) {
          printf("err 3a\n");
          return (0);
        }
      } else if (uRead != 3) {
        printf("err 3b\n");
        return (0);
      }
    }
    break;
  case 4:
    uRead = sscanf(cIPv6, "%x::%x:%x:%x", h1, h6, h7, h8);
    if (uRead != 4) {
      uRead = sscanf(cIPv6, "%x:%x::%x:%x", h1, h2, h7, h8);
      if (uRead != 4) {
        uRead = sscanf(cIPv6, "%x:%x:%x::%x", h1, h2, h3, h8);
        if (uRead != 4 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
          uRead = sscanf(cIPv6, "%x:%x:%x::", h1, h2, h3);
          if (uRead != 3) {
            printf("err 4a\n");
            return (0);
          }
        } else if (uRead != 4) {
          printf("err 4b\n");
          return (0);
        }
      }
    }
    break;
  case 5:
    uRead = sscanf(cIPv6, "%x::%x:%x:%x:%x", h1, h5, h6, h7, h8);
    if (uRead != 5) {
      uRead = sscanf(cIPv6, "%x:%x::%x:%x:%x", h1, h2, h6, h7, h8);
      if (uRead != 5) {
        uRead = sscanf(cIPv6, "%x:%x:%x::%x:%x", h1, h2, h3, h7, h8);
        if (uRead != 5) {
          uRead = sscanf(cIPv6, "%x:%x:%x:%x::%x", h1, h2, h3, h4, h8);
          if (uRead != 5 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
            uRead = sscanf(cIPv6, "%x:%x:%x:%x::", h1, h2, h3, h4);
            if (uRead != 4) {
              printf("err 5a\n");
              return (0);
            }
          } else if (uRead != 5) {
            printf("err 5b\n");
            return (0);
          }
        }
      }
    }
    break;
  case 6:
    uRead = sscanf(cIPv6, "%x::%x:%x:%x:%x:%x", h1, h4, h5, h6, h7, h8);
    if (uRead != 6) {
      uRead = sscanf(cIPv6, "%x:%x::%x:%x:%x:%x", h1, h2, h5, h6, h7, h8);
      if (uRead != 6) {
        uRead = sscanf(cIPv6, "%x:%x:%x::%x:%x:%x", h1, h2, h3, h6, h7, h8);
        if (uRead != 6) {
          uRead = sscanf(cIPv6, "%x:%x:%x:%x::%x:%x", h1, h2, h3, h4, h7, h8);
          if (uRead != 6) {
            uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x::%x", h1, h2, h3, h4, h5, h8);
            if (uRead != 6 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
              uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x::", h1, h2, h3, h4, h5);
              if (uRead != 5) {
                printf("err 6a\n");
                return (0);
              }
            } else if (uRead != 6) {
              printf("err 6b\n");
              return (0);
            }
          }
        }
      }
    }
    break;
  case 7:
    uRead = sscanf(cIPv6, "%x::%x:%x:%x:%x:%x:%x", h1, h3, h4, h5, h6, h7, h8);
    if (uRead != 7) {
      uRead =
          sscanf(cIPv6, "%x:%x::%x:%x:%x:%x:%x", h1, h2, h4, h5, h6, h7, h8);
      if (uRead != 7) {
        uRead =
            sscanf(cIPv6, "%x:%x:%x::%x:%x:%x:%x", h1, h2, h3, h5, h6, h7, h8);
        if (uRead != 7) {
          uRead = sscanf(cIPv6, "%x:%x:%x:%x::%x:%x:%x", h1, h2, h3, h4, h6, h7,
                         h8);
          if (uRead != 7) {
            uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x::%x:%x", h1, h2, h3, h4, h5,
                           h7, h8);
            if (uRead != 7) {
              uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x:%x::%x", h1, h2, h3, h4, h5,
                             h6, h8);
              if (uRead != 7) {
                uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x:%x:%x:%x", h1, h2, h3, h4,
                               h5, h6, h7, h8);
                if (uRead != 8 &&
                    !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
                  uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x:%x::", h1, h2, h3, h4,
                                 h5, h6);
                  if (uRead != 6) {
                    printf("err 7a\n");
                    return (0);
                  }
                } else if (uRead != 8) {
                  printf("err 7b\n");
                  return (0);
                }
              }
            }
          }
        }
      }
    }
    break;
  case 8:
    uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x:%x:%x::", h1, h2, h3, h4, h5, h6, h7);
    if (uRead != 7) {
      printf("err 8\n");
      return (0);
    }
    break;
  default:
    printf("err default\n");
    return (0);
  }
  printf("uInIpv6Format32: %x:%x:%x:%x:%x:%x:%x:%x\n", *h1, *h2, *h3, *h4, *h5,
         *h6, *h7, *h8);
  return (1);
}


x86 assembly (clang, -O0):
<uInIpv6Format32>:
push   %rbp
mov    %rsp,%rbp
push   %rbx
sub    $0xa8,%rsp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    %r8,-0x38(%rbp)
mov    %r9,-0x40(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
je     1213 <uInIpv6Format32+0xc3>
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3a,%eax
jne    11c5 <uInIpv6Format32+0x75>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3a,%eax
je     1200 <uInIpv6Format32+0xb0>
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1070 <isxdigit@plt>
cmp    $0x0,%eax
jne    1200 <uInIpv6Format32+0xb0>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    1205 <uInIpv6Format32+0xb5>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1195 <uInIpv6Format32+0x45>
mov    -0x48(%rbp),%eax
mov    %rax,-0x58(%rbp)
sub    $0x8,%rax
ja     1c95 <uInIpv6Format32+0xb45>
mov    -0x58(%rbp),%rax
lea    0xdd1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xde5(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    0x20(%rbp),%rcx
lea    0xe93(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x2,-0x4c(%rbp)
je     12f8 <uInIpv6Format32+0x1a8>
mov    -0x18(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x18(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
add    $0xfffffffffffffffe,%rax
mov    %eax,%edi
lea    0xe98(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    12f8 <uInIpv6Format32+0x1a8>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0xe74(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x1,-0x4c(%rbp)
je     12f3 <uInIpv6Format32+0x1a3>
lea    0xd4b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    1321 <uInIpv6Format32+0x1d1>
cmpl   $0x2,-0x4c(%rbp)
je     131c <uInIpv6Format32+0x1cc>
lea    0xd2a(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    1321 <uInIpv6Format32+0x1d1>
jmp    1caf <uInIpv6Format32+0xb5f>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    0x20(%rbp),%r8
lea    0xda2(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x3,-0x4c(%rbp)
je     142d <uInIpv6Format32+0x2dd>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    0x20(%rbp),%r8
lea    0xd8d(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x3,-0x4c(%rbp)
je     13ff <uInIpv6Format32+0x2af>
mov    -0x18(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x18(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,%ecx
mov    -0x68(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
add    $0xfffffffffffffffe,%rax
mov    %eax,%edi
lea    0xd95(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    13ff <uInIpv6Format32+0x2af>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
lea    0xd6a(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x2,-0x4c(%rbp)
je     13fa <uInIpv6Format32+0x2aa>
lea    0xc54(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    1428 <uInIpv6Format32+0x2d8>
cmpl   $0x3,-0x4c(%rbp)
je     1423 <uInIpv6Format32+0x2d3>
lea    0xc33(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    1428 <uInIpv6Format32+0x2d8>
jmp    142d <uInIpv6Format32+0x2dd>
jmp    1caf <uInIpv6Format32+0xb5f>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    0x10(%rbp),%rcx
mov    0x18(%rbp),%r8
mov    0x20(%rbp),%r9
lea    0xc79(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x4,-0x4c(%rbp)
je     1579 <uInIpv6Format32+0x429>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    0x18(%rbp),%r8
mov    0x20(%rbp),%r9
lea    0xc60(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x4,-0x4c(%rbp)
je     1574 <uInIpv6Format32+0x424>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    0x20(%rbp),%r9
lea    0xc47(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x4,-0x4c(%rbp)
je     1546 <uInIpv6Format32+0x3f6>
mov    -0x18(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x18(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,%ecx
mov    -0x70(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
add    $0xfffffffffffffffe,%rax
mov    %eax,%edi
lea    0xc52(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1546 <uInIpv6Format32+0x3f6>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
lea    0xc20(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x3,-0x4c(%rbp)
je     1541 <uInIpv6Format32+0x3f1>
lea    0xb1d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    156f <uInIpv6Format32+0x41f>
cmpl   $0x4,-0x4c(%rbp)
je     156a <uInIpv6Format32+0x41a>
lea    0xafc(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    156f <uInIpv6Format32+0x41f>
jmp    1574 <uInIpv6Format32+0x424>
jmp    1579 <uInIpv6Format32+0x429>
jmp    1caf <uInIpv6Format32+0xb5f>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x40(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x18(%rbp),%r9
mov    0x20(%rbp),%rax
lea    0xb10(%rip),%rsi
mov    %rax,(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x5,-0x4c(%rbp)
je     171d <uInIpv6Format32+0x5cd>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x18(%rbp),%r9
mov    0x20(%rbp),%rax
lea    0xaef(%rip),%rsi
mov    %rax,(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x5,-0x4c(%rbp)
je     1718 <uInIpv6Format32+0x5c8>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    0x18(%rbp),%r9
mov    0x20(%rbp),%rax
lea    0xace(%rip),%rsi
mov    %rax,(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x5,-0x4c(%rbp)
je     1713 <uInIpv6Format32+0x5c3>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    0x20(%rbp),%rax
lea    0xaad(%rip),%rsi
mov    %rax,(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x5,-0x4c(%rbp)
je     16e5 <uInIpv6Format32+0x595>
mov    -0x18(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x18(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,%ecx
mov    -0x78(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
add    $0xfffffffffffffffe,%rax
mov    %eax,%edi
lea    0xab7(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    16e5 <uInIpv6Format32+0x595>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
lea    0xa7e(%rip),%rsi
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x4,-0x4c(%rbp)
je     16e0 <uInIpv6Format32+0x590>
lea    0x98e(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    170e <uInIpv6Format32+0x5be>
cmpl   $0x5,-0x4c(%rbp)
je     1709 <uInIpv6Format32+0x5b9>
lea    0x96d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    170e <uInIpv6Format32+0x5be>
jmp    1713 <uInIpv6Format32+0x5c3>
jmp    1718 <uInIpv6Format32+0x5c8>
jmp    171d <uInIpv6Format32+0x5cd>
jmp    1caf <uInIpv6Format32+0xb5f>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x38(%rbp),%rcx
mov    -0x40(%rbp),%r8
mov    0x10(%rbp),%r9
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x94f(%rip),%rsi
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x6,-0x4c(%rbp)
je     1932 <uInIpv6Format32+0x7e2>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x40(%rbp),%r8
mov    0x10(%rbp),%r9
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x925(%rip),%rsi
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x6,-0x4c(%rbp)
je     192d <uInIpv6Format32+0x7dd>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    0x10(%rbp),%r9
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x8fb(%rip),%rsi
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x6,-0x4c(%rbp)
je     1928 <uInIpv6Format32+0x7d8>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x8d1(%rip),%rsi
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x6,-0x4c(%rbp)
je     1923 <uInIpv6Format32+0x7d3>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    -0x40(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x8a7(%rip),%rsi
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x6,-0x4c(%rbp)
je     18f5 <uInIpv6Format32+0x7a5>
mov    -0x18(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x18(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,%ecx
mov    -0x80(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
add    $0xfffffffffffffffe,%rax
mov    %eax,%edi
lea    0x8af(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    18f5 <uInIpv6Format32+0x7a5>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    -0x40(%rbp),%rax
lea    0x86f(%rip),%rsi
mov    %rax,(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x5,-0x4c(%rbp)
je     18f0 <uInIpv6Format32+0x7a0>
lea    0x78e(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    191e <uInIpv6Format32+0x7ce>
cmpl   $0x6,-0x4c(%rbp)
je     1919 <uInIpv6Format32+0x7c9>
lea    0x76d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    191e <uInIpv6Format32+0x7ce>
jmp    1923 <uInIpv6Format32+0x7d3>
jmp    1928 <uInIpv6Format32+0x7d8>
jmp    192d <uInIpv6Format32+0x7dd>
jmp    1932 <uInIpv6Format32+0x7e2>
jmp    1caf <uInIpv6Format32+0xb5f>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x30(%rbp),%rcx
mov    -0x38(%rbp),%r8
mov    -0x40(%rbp),%r9
mov    0x10(%rbp),%r11
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x71d(%rip),%rsi
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x7,-0x4c(%rbp)
je     1c28 <uInIpv6Format32+0xad8>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x38(%rbp),%r8
mov    -0x40(%rbp),%r9
mov    0x10(%rbp),%r11
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x6ea(%rip),%rsi
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x7,-0x4c(%rbp)
je     1c23 <uInIpv6Format32+0xad3>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x40(%rbp),%r9
mov    0x10(%rbp),%r11
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x6b7(%rip),%rsi
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x7,-0x4c(%rbp)
je     1c1e <uInIpv6Format32+0xace>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    0x10(%rbp),%r11
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x684(%rip),%rsi
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x7,-0x4c(%rbp)
je     1c19 <uInIpv6Format32+0xac9>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    -0x40(%rbp),%r11
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x651(%rip),%rsi
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x7,-0x4c(%rbp)
je     1c14 <uInIpv6Format32+0xac4>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    -0x40(%rbp),%r11
mov    0x10(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x61e(%rip),%rsi
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x7,-0x4c(%rbp)
je     1c0f <uInIpv6Format32+0xabf>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    -0x40(%rbp),%rbx
mov    0x10(%rbp),%r11
mov    0x18(%rbp),%r10
mov    0x20(%rbp),%rax
lea    0x5e7(%rip),%rsi
mov    %rbx,(%rsp)
mov    %r11,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x8,-0x4c(%rbp)
je     1be1 <uInIpv6Format32+0xa91>
mov    -0x18(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x18(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
add    $0xfffffffffffffffe,%rax
mov    %eax,%edi
lea    0x5cc(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1be1 <uInIpv6Format32+0xa91>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    -0x40(%rbp),%r10
mov    0x10(%rbp),%rax
lea    0x585(%rip),%rsi
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x6,-0x4c(%rbp)
je     1bdc <uInIpv6Format32+0xa8c>
lea    0x54e(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    1c0a <uInIpv6Format32+0xaba>
cmpl   $0x8,-0x4c(%rbp)
je     1c05 <uInIpv6Format32+0xab5>
lea    0x52d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    1c0a <uInIpv6Format32+0xaba>
jmp    1c0f <uInIpv6Format32+0xabf>
jmp    1c14 <uInIpv6Format32+0xac4>
jmp    1c19 <uInIpv6Format32+0xac9>
jmp    1c1e <uInIpv6Format32+0xace>
jmp    1c23 <uInIpv6Format32+0xad3>
jmp    1c28 <uInIpv6Format32+0xad8>
jmp    1caf <uInIpv6Format32+0xb5f>
mov    -0x18(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
mov    -0x40(%rbp),%r11
mov    0x10(%rbp),%r10
mov    0x18(%rbp),%rax
lea    0x4d3(%rip),%rsi
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1060 <sscanf@plt>
mov    %eax,-0x4c(%rbp)
cmpl   $0x7,-0x4c(%rbp)
je     1c90 <uInIpv6Format32+0xb40>
lea    0x4c1(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
jmp    1caf <uInIpv6Format32+0xb5f>
lea    0x4a9(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0xc(%rbp)
jmp    1d05 <uInIpv6Format32+0xbb5>
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    -0x28(%rbp),%rax
mov    (%rax),%edx
mov    -0x30(%rbp),%rax
mov    (%rax),%ecx
mov    -0x38(%rbp),%rax
mov    (%rax),%r8d
mov    -0x40(%rbp),%rax
mov    (%rax),%r9d
mov    0x10(%rbp),%rax
mov    (%rax),%r11d
mov    0x18(%rbp),%rax
mov    (%rax),%r10d
mov    0x20(%rbp),%rax
mov    (%rax),%eax
lea    0x468(%rip),%rdi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    $0xa8,%rsp
pop    %rbx
pop    %rbp
ret

x86 assembly (clang, -O2):
<uInIpv6Format32>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %r9,%r15
mov    %r8,%r14
mov    %rcx,0x8(%rsp)
mov    %rdx,0x18(%rsp)
mov    %rsi,%r13
xor    %ebx,%ebx
mov    %rdi,%r12
mov    %rdi,%rbp
jmp    1197 <uInIpv6Format32+0x37>
nopl   0x0(%rax,%rax,1)
add    $0x1,%ebx
add    $0x1,%rbp
movzbl 0x0(%rbp),%eax
cmp    $0x3a,%al
je     1190 <uInIpv6Format32+0x30>
test   %al,%al
je     11b7 <uInIpv6Format32+0x57>
movsbl %al,%edi
call   1080 <isxdigit@plt>
test   %eax,%eax
jne    1193 <uInIpv6Format32+0x33>
xor    %r15d,%r15d
jmp    19f0 <uInIpv6Format32+0x890>
cmp    $0x8,%ebx
ja     11da <uInIpv6Format32+0x7a>
mov    %ebx,%eax
lea    0xe3b(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xf86(%rip),%rdi
jmp    16e5 <uInIpv6Format32+0x585>
lea    0xf80(%rip),%rdi
jmp    16e5 <uInIpv6Format32+0x585>
mov    %r15,0x10(%rsp)
lea    0xeaf(%rip),%rsi
mov    %r12,%rdi
mov    %r13,%rdx
mov    0x70(%rsp),%rbp
mov    %rbp,%rcx
xor    %eax,%eax
call   1070 <sscanf@plt>
cmp    $0x2,%eax
mov    %r14,(%rsp)
mov    %rbp,%r14
mov    0x18(%rsp),%rcx
mov    %r13,%rdx
mov    0x68(%rsp),%rbx
mov    0x60(%rsp),%rbp
je     19ad <uInIpv6Format32+0x84d>
mov    %rdx,%rbp
mov    %rcx,%r13
mov    %r12,%rdi
call   1050 <strlen@plt>
lea    (%r12,%rax,1),%edi
add    $0xfffffffe,%edi
lea    0xe8f(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1a10 <uInIpv6Format32+0x8b0>
lea    0xeef(%rip),%rdi
jmp    16e5 <uInIpv6Format32+0x585>
mov    %r15,0x10(%rsp)
lea    0xe19(%rip),%rsi
mov    %r12,%rdi
mov    %r13,%rdx
mov    0x68(%rsp),%rcx
mov    0x70(%rsp),%rbp
mov    %rcx,%rbx
mov    %rbp,%r8
xor    %eax,%eax
call   1070 <sscanf@plt>
cmp    $0x3,%eax
mov    %r14,(%rsp)
mov    %rbp,%r14
mov    0x18(%rsp),%rcx
mov    %r13,%rdx
mov    0x60(%rsp),%rbp
je     19ad <uInIpv6Format32+0x84d>
lea    0xdee(%rip),%rsi
mov    %r12,%rdi
mov    %rdx,%r13
mov    0x18(%rsp),%rcx
mov    %r14,%r8
xor    %eax,%eax
call   1070 <sscanf@plt>
mov    0x60(%rsp),%rbp
mov    %r13,%rdx
mov    0x18(%rsp),%rcx
mov    0x68(%rsp),%rbx
cmp    $0x3,%eax
je     19ad <uInIpv6Format32+0x84d>
mov    %r12,%rdi
call   1050 <strlen@plt>
lea    (%r12,%rax,1),%edi
add    $0xfffffffe,%edi
lea    0xdde(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1a49 <uInIpv6Format32+0x8e9>
lea    0xe30(%rip),%rdi
jmp    16e5 <uInIpv6Format32+0x585>
mov    %r15,0x10(%rsp)
lea    0xd4f(%rip),%rsi
mov    %r12,%rdi
mov    %r13,%rdx
mov    0x60(%rsp),%r15
mov    %r15,%rcx
mov    0x68(%rsp),%r8
mov    0x70(%rsp),%rbp
mov    %r8,%rbx
mov    %rbp,%r9
xor    %eax,%eax
call   1070 <sscanf@plt>
cmp    $0x4,%eax
mov    %r14,(%rsp)
mov    %rbp,%r14
mov    %r15,%rbp
mov    0x18(%rsp),%rcx
mov    %r13,%rdx
je     19ad <uInIpv6Format32+0x84d>
lea    0xd1e(%rip),%rsi
mov    %r12,%rdi
mov    %rdx,0x20(%rsp)
mov    0x20(%rsp),%rdx
mov    %rcx,%r13
mov    %rbx,%r8
mov    %r14,%r9
xor    %eax,%eax
call   1070 <sscanf@plt>
mov    0x60(%rsp),%rbp
mov    0x20(%rsp),%rdx
mov    %r13,%rcx
mov    0x68(%rsp),%rbx
cmp    $0x4,%eax
je     19ad <uInIpv6Format32+0x84d>
lea    0xcf5(%rip),%rsi
mov    %r12,%rdi
mov    0x20(%rsp),%rdx
mov    %r13,%rcx
mov    0x8(%rsp),%r8
mov    %r14,%r9
xor    %eax,%eax
call   1070 <sscanf@plt>
mov    0x60(%rsp),%rbp
mov    0x20(%rsp),%rdx
mov    %r13,%rcx
mov    0x68(%rsp),%rbx
cmp    $0x4,%eax
je     19ad <uInIpv6Format32+0x84d>
mov    %r12,%rdi
call   1050 <strlen@plt>
lea    (%r12,%rax,1),%edi
add    $0xfffffffe,%edi
lea    0xce3(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1a92 <uInIpv6Format32+0x932>
lea    0xd27(%rip),%rdi
jmp    16e5 <uInIpv6Format32+0x585>
sub    $0x8,%rsp
lea    0xc3c(%rip),%rsi
mov    %r12,%rdi
mov    %r13,%rbp
mov    %r13,%rdx
mov    %r15,0x18(%rsp)
mov    %r15,%rcx
mov    0x68(%rsp),%r15
mov    %r15,%r8
mov    0x70(%rsp),%rbx
mov    %rbx,%r9
xor    %eax,%eax
mov    0x78(%rsp),%r13
push   %r13
call   1070 <sscanf@plt>
add    $0x10,%rsp
cmp    $0x5,%eax
mov    %r14,(%rsp)
mov    %r13,%r14
mov    0x18(%rsp),%rcx
mov    %rbp,%rdx
mov    %r15,%rbp
je     19ad <uInIpv6Format32+0x84d>
mov    %r12,%r15
sub    $0x8,%rsp
lea    0xbf6(%rip),%rsi
mov    %r12,%rdi
mov    %rdx,%r13
mov    %rcx,%r12
mov    %rbp,%r8
mov    %rbx,%r9
xor    %eax,%eax
push   %r14
call   1070 <sscanf@plt>
mov    0x70(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x78(%rsp),%rbx
add    $0x10,%rsp
cmp    $0x5,%eax
je     19ad <uInIpv6Format32+0x84d>
sub    $0x8,%rsp
lea    0xbcc(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x10(%rsp),%r8
mov    %rbx,%r9
xor    %eax,%eax
push   %r14
call   1070 <sscanf@plt>
mov    0x70(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x78(%rsp),%rbx
add    $0x10,%rsp
cmp    $0x5,%eax
je     19ad <uInIpv6Format32+0x84d>
sub    $0x8,%rsp
lea    0xba0(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x10(%rsp),%r8
mov    0x8(%rsp),%r9
xor    %eax,%eax
push   %r14
call   1070 <sscanf@plt>
mov    0x70(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x78(%rsp),%rbx
add    $0x10,%rsp
cmp    $0x5,%eax
je     19ad <uInIpv6Format32+0x84d>
mov    %r15,%rdi
call   1050 <strlen@plt>
lea    (%r15,%rax,1),%edi
add    $0xfffffffe,%edi
lea    0xb8d(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1ae0 <uInIpv6Format32+0x980>
lea    0xbc3(%rip),%rdi
jmp    16e5 <uInIpv6Format32+0x585>
lea    0xad1(%rip),%rsi
mov    %r12,%rdi
mov    %r13,%rdx
mov    %r14,(%rsp)
mov    %r14,%rcx
mov    %r15,0x10(%rsp)
mov    %r15,%r8
mov    %r12,%r15
mov    0x60(%rsp),%r9
xor    %eax,%eax
mov    0x70(%rsp),%r14
mov    %r9,%rbp
push   %r14
mov    0x70(%rsp),%rbx
push   %rbx
call   1070 <sscanf@plt>
add    $0x10,%rsp
cmp    $0x6,%eax
mov    0x18(%rsp),%rcx
mov    %r13,%rdx
je     19ad <uInIpv6Format32+0x84d>
lea    0xa97(%rip),%rsi
mov    %r15,%rdi
mov    %rdx,%r13
mov    %rcx,%r12
mov    0x10(%rsp),%r8
mov    %rbp,%r9
xor    %eax,%eax
push   %r14
push   %rbx
call   1070 <sscanf@plt>
mov    0x70(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x78(%rsp),%rbx
add    $0x10,%rsp
cmp    $0x6,%eax
je     19ad <uInIpv6Format32+0x84d>
lea    0xa6e(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x8(%rsp),%r8
mov    %rbp,%r9
xor    %eax,%eax
push   %r14
push   %rbx
call   1070 <sscanf@plt>
mov    0x70(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x78(%rsp),%rbx
add    $0x10,%rsp
cmp    $0x6,%eax
je     19ad <uInIpv6Format32+0x84d>
lea    0xa45(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x8(%rsp),%r8
mov    (%rsp),%r9
xor    %eax,%eax
push   %r14
push   %rbx
call   1070 <sscanf@plt>
mov    0x70(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x78(%rsp),%rbx
add    $0x10,%rsp
cmp    $0x6,%eax
je     19ad <uInIpv6Format32+0x84d>
lea    0xa1b(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x8(%rsp),%r8
mov    (%rsp),%r9
xor    %eax,%eax
push   %r14
push   0x18(%rsp)
call   1070 <sscanf@plt>
mov    0x70(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x78(%rsp),%rbx
add    $0x10,%rsp
cmp    $0x6,%eax
je     19ad <uInIpv6Format32+0x84d>
mov    %r15,%rdi
call   1050 <strlen@plt>
lea    (%r15,%rax,1),%edi
add    $0xfffffffe,%edi
lea    0xa08(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1b2d <uInIpv6Format32+0x9cd>
lea    0xa30(%rip),%rdi
call   1040 <puts@plt>
xor    %r15d,%r15d
jmp    19f0 <uInIpv6Format32+0x890>
sub    $0x8,%rsp
lea    0x927(%rip),%rsi
mov    %r12,%rdi
mov    %r13,%rdx
mov    0x10(%rsp),%rcx
mov    %r14,0x8(%rsp)
mov    %r14,%r8
mov    %r15,0x18(%rsp)
mov    %r15,%r9
mov    %r12,%r15
xor    %eax,%eax
mov    0x78(%rsp),%r14
push   %r14
mov    0x78(%rsp),%rbx
push   %rbx
mov    0x78(%rsp),%rbp
push   %rbp
call   1070 <sscanf@plt>
add    $0x20,%rsp
cmp    $0x7,%eax
mov    0x18(%rsp),%rcx
mov    %r13,%rdx
je     19ad <uInIpv6Format32+0x84d>
sub    $0x8,%rsp
lea    0x8e5(%rip),%rsi
mov    %r15,%rdi
mov    %rdx,%r13
mov    %rcx,%r12
mov    0x8(%rsp),%r8
mov    0x18(%rsp),%r9
xor    %eax,%eax
push   %r14
push   %rbx
push   %rbp
call   1070 <sscanf@plt>
mov    0x80(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x88(%rsp),%rbx
add    $0x20,%rsp
cmp    $0x7,%eax
je     19ad <uInIpv6Format32+0x84d>
sub    $0x8,%rsp
lea    0x8af(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x10(%rsp),%r8
mov    0x18(%rsp),%r9
xor    %eax,%eax
push   %r14
push   %rbx
push   %rbp
call   1070 <sscanf@plt>
mov    0x80(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x88(%rsp),%rbx
add    $0x20,%rsp
cmp    $0x7,%eax
je     19ad <uInIpv6Format32+0x84d>
sub    $0x8,%rsp
lea    0x879(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x10(%rsp),%r8
mov    0x8(%rsp),%r9
xor    %eax,%eax
push   %r14
push   %rbx
push   %rbp
call   1070 <sscanf@plt>
mov    0x80(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x88(%rsp),%rbx
add    $0x20,%rsp
cmp    $0x7,%eax
je     19ad <uInIpv6Format32+0x84d>
sub    $0x8,%rsp
lea    0x843(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x10(%rsp),%r8
mov    0x8(%rsp),%r9
xor    %eax,%eax
push   %r14
push   %rbx
push   0x28(%rsp)
call   1070 <sscanf@plt>
mov    0x80(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x88(%rsp),%rbx
add    $0x20,%rsp
cmp    $0x7,%eax
je     19ad <uInIpv6Format32+0x84d>
sub    $0x8,%rsp
lea    0x80a(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x10(%rsp),%r8
mov    0x8(%rsp),%r9
xor    %eax,%eax
push   %r14
push   %rbp
push   0x28(%rsp)
call   1070 <sscanf@plt>
mov    0x80(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x88(%rsp),%rbx
add    $0x20,%rsp
cmp    $0x7,%eax
je     19ad <uInIpv6Format32+0x84d>
lea    0x7d5(%rip),%rsi
mov    %r15,%rdi
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x8(%rsp),%r8
mov    (%rsp),%r9
xor    %eax,%eax
push   %r14
push   %rbx
push   %rbp
push   0x28(%rsp)
call   1070 <sscanf@plt>
mov    0x80(%rsp),%rbp
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x88(%rsp),%rbx
add    $0x20,%rsp
cmp    $0x8,%eax
je     19ad <uInIpv6Format32+0x84d>
mov    %r15,%rdi
call   1050 <strlen@plt>
lea    (%r15,%rax,1),%edi
add    $0xfffffffe,%edi
lea    0x7a7(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1b87 <uInIpv6Format32+0xa27>
lea    0x7c1(%rip),%rdi
jmp    16e5 <uInIpv6Format32+0x585>
sub    $0x8,%rsp
lea    0x76a(%rip),%rsi
mov    %r15,%rbx
xor    %r15d,%r15d
mov    %r12,%rdi
mov    %r13,%r12
mov    %r13,%rdx
mov    0x20(%rsp),%rcx
mov    0x10(%rsp),%r8
mov    %r14,%r9
mov    %r14,0x8(%rsp)
mov    %rcx,%r14
xor    %eax,%eax
mov    0x70(%rsp),%r13
push   %r13
mov    0x70(%rsp),%rbp
push   %rbp
mov    %rbx,0x28(%rsp)
push   %rbx
call   1070 <sscanf@plt>
mov    %r12,%rdx
mov    %r14,%rcx
add    $0x20,%rsp
cmp    $0x7,%eax
mov    0x70(%rsp),%r14
mov    0x68(%rsp),%rbx
jne    1a02 <uInIpv6Format32+0x8a2>
mov    (%rdx),%esi
mov    (%rcx),%edx
mov    0x8(%rsp),%rax
mov    (%rax),%ecx
mov    (%rsp),%rax
mov    (%rax),%r8d
mov    0x10(%rsp),%rax
mov    (%rax),%r9d
mov    0x0(%rbp),%r10d
mov    (%rbx),%ebx
mov    (%r14),%ebp
sub    $0x8,%rsp
lea    0x6fc(%rip),%rdi
xor    %eax,%eax
push   %rbp
push   %rbx
push   %r10
call   1060 <printf@plt>
add    $0x20,%rsp
mov    $0x1,%r15d
mov    %r15d,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x6f8(%rip),%rdi
call   1040 <puts@plt>
jmp    19f0 <uInIpv6Format32+0x890>
lea    0x6bb(%rip),%rsi
xor    %r15d,%r15d
mov    %r12,%rdi
mov    %rbp,%rdx
xor    %eax,%eax
call   1070 <sscanf@plt>
mov    %rbp,%rdx
cmp    $0x1,%eax
mov    %r13,%rcx
mov    0x60(%rsp),%rbp
je     19ad <uInIpv6Format32+0x84d>
lea    0x712(%rip),%rdi
call   1040 <puts@plt>
jmp    19f0 <uInIpv6Format32+0x890>
lea    0x67f(%rip),%rsi
xor    %r15d,%r15d
mov    %r12,%rdi
mov    %r13,%rdx
mov    0x18(%rsp),%rbp
mov    %rbp,%rcx
xor    %eax,%eax
call   1070 <sscanf@plt>
mov    %r13,%rdx
mov    %rbp,%rcx
cmp    $0x2,%eax
mov    0x68(%rsp),%rbx
mov    0x60(%rsp),%rbp
je     19ad <uInIpv6Format32+0x84d>
lea    0x6be(%rip),%rdi
call   1040 <puts@plt>
jmp    19f0 <uInIpv6Format32+0x890>
lea    0x633(%rip),%rsi
xor    %r15d,%r15d
mov    %r12,%rdi
mov    0x20(%rsp),%rbp
mov    %rbp,%rdx
mov    %r13,%rcx
mov    0x8(%rsp),%r8
xor    %eax,%eax
call   1070 <sscanf@plt>
mov    %rbp,%rdx
mov    %r13,%rcx
cmp    $0x3,%eax
mov    0x68(%rsp),%rbx
mov    0x60(%rsp),%rbp
je     19ad <uInIpv6Format32+0x84d>
lea    0x662(%rip),%rdi
call   1040 <puts@plt>
jmp    19f0 <uInIpv6Format32+0x890>
lea    0x5e2(%rip),%rsi
mov    %r15,%rdi
xor    %r15d,%r15d
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x8(%rsp),%r8
mov    (%rsp),%r9
xor    %eax,%eax
call   1070 <sscanf@plt>
mov    %r13,%rdx
mov    %r12,%rcx
cmp    $0x4,%eax
mov    0x68(%rsp),%rbx
mov    0x60(%rsp),%rbp
je     19ad <uInIpv6Format32+0x84d>
lea    0x607(%rip),%rdi
call   1040 <puts@plt>
jmp    19f0 <uInIpv6Format32+0x890>
sub    $0x8,%rsp
lea    0x58e(%rip),%rsi
mov    %r15,%rdi
xor    %r15d,%r15d
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x10(%rsp),%r8
mov    0x8(%rsp),%r9
xor    %eax,%eax
push   0x18(%rsp)
call   1070 <sscanf@plt>
mov    %r13,%rdx
mov    %r12,%rcx
add    $0x10,%rsp
cmp    $0x5,%eax
mov    0x68(%rsp),%rbx
mov    0x60(%rsp),%rbp
je     19ad <uInIpv6Format32+0x84d>
lea    0x59f(%rip),%rdi
call   1040 <puts@plt>
jmp    19f0 <uInIpv6Format32+0x890>
lea    0x535(%rip),%rsi
mov    %r15,%rdi
xor    %r15d,%r15d
mov    %r13,%rdx
mov    %r12,%rcx
mov    0x8(%rsp),%r8
mov    (%rsp),%r9
xor    %eax,%eax
mov    0x60(%rsp),%rbp
push   %rbp
push   0x18(%rsp)
call   1070 <sscanf@plt>
mov    %r13,%rdx
mov    %r12,%rcx
add    $0x10,%rsp
cmp    $0x6,%eax
mov    0x68(%rsp),%rbx
je     19ad <uInIpv6Format32+0x84d>
lea    0x53b(%rip),%rdi
call   1040 <puts@plt>
jmp    19f0 <uInIpv6Format32+0x890>

LLVM IR (-O0):
@.str = [7 x i8] c"err 1\0A\00"
@.str.1 = [7 x i8] c"%x::%x\00"
@.str.2 = [3 x i8] c"::\00"
@.str.3 = [5 x i8] c"%x::\00"
@.str.4 = [8 x i8] c"err 2a\0A\00"
@.str.5 = [8 x i8] c"err 2b\0A\00"
@.str.6 = [10 x i8] c"%x::%x:%x\00"
@.str.7 = [10 x i8] c"%x:%x::%x\00"
@.str.8 = [8 x i8] c"%x:%x::\00"
@.str.9 = [8 x i8] c"err 3a\0A\00"
@.str.10 = [8 x i8] c"err 3b\0A\00"
@.str.11 = [13 x i8] c"%x::%x:%x:%x\00"
@.str.12 = [13 x i8] c"%x:%x::%x:%x\00"
@.str.13 = [13 x i8] c"%x:%x:%x::%x\00"
@.str.14 = [11 x i8] c"%x:%x:%x::\00"
@.str.15 = [8 x i8] c"err 4a\0A\00"
@.str.16 = [8 x i8] c"err 4b\0A\00"
@.str.17 = [16 x i8] c"%x::%x:%x:%x:%x\00"
@.str.18 = [16 x i8] c"%x:%x::%x:%x:%x\00"
@.str.19 = [16 x i8] c"%x:%x:%x::%x:%x\00"
@.str.20 = [16 x i8] c"%x:%x:%x:%x::%x\00"
@.str.21 = [14 x i8] c"%x:%x:%x:%x::\00"
@.str.22 = [8 x i8] c"err 5a\0A\00"
@.str.23 = [8 x i8] c"err 5b\0A\00"
@.str.24 = [19 x i8] c"%x::%x:%x:%x:%x:%x\00"
@.str.25 = [19 x i8] c"%x:%x::%x:%x:%x:%x\00"
@.str.26 = [19 x i8] c"%x:%x:%x::%x:%x:%x\00"
@.str.27 = [19 x i8] c"%x:%x:%x:%x::%x:%x\00"
@.str.28 = [19 x i8] c"%x:%x:%x:%x:%x::%x\00"
@.str.29 = [17 x i8] c"%x:%x:%x:%x:%x::\00"
@.str.30 = [8 x i8] c"err 6a\0A\00"
@.str.31 = [8 x i8] c"err 6b\0A\00"
@.str.32 = [22 x i8] c"%x::%x:%x:%x:%x:%x:%x\00"
@.str.33 = [22 x i8] c"%x:%x::%x:%x:%x:%x:%x\00"
@.str.34 = [22 x i8] c"%x:%x:%x::%x:%x:%x:%x\00"
@.str.35 = [22 x i8] c"%x:%x:%x:%x::%x:%x:%x\00"
@.str.36 = [22 x i8] c"%x:%x:%x:%x:%x::%x:%x\00"
@.str.37 = [22 x i8] c"%x:%x:%x:%x:%x:%x::%x\00"
@.str.38 = [24 x i8] c"%x:%x:%x:%x:%x:%x:%x:%x\00"
@.str.39 = [20 x i8] c"%x:%x:%x:%x:%x:%x::\00"
@.str.40 = [8 x i8] c"err 7a\0A\00"
@.str.41 = [8 x i8] c"err 7b\0A\00"
@.str.42 = [23 x i8] c"%x:%x:%x:%x:%x:%x:%x::\00"
@.str.43 = [7 x i8] c"err 8\0A\00"
@.str.44 = [13 x i8] c"err default\0A\00"
@.str.45 = [42 x i8] c"uInIpv6Format32: %x:%x:%x:%x:%x:%x:%x:%x\0A\00"
define i32 @uInIpv6Format32(i8* %0, i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %6, i32* %7, i32* %8) {
%10 = alloca i32
%11 = alloca i8*
%12 = alloca i32*
%13 = alloca i32*
%14 = alloca i32*
%15 = alloca i32*
%16 = alloca i32*
%17 = alloca i32*
%18 = alloca i32*
%19 = alloca i32*
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
store i8* %0, i8** %11
store i32* %1, i32** %12
store i32* %2, i32** %13
store i32* %3, i32** %14
store i32* %4, i32** %15
store i32* %5, i32** %16
store i32* %6, i32** %17
store i32* %7, i32** %18
store i32* %8, i32** %19
store i32 0, i32* %21
store i32 0, i32* %22
store i32 0, i32* %20
br label %23
23: ; preds = %59, %9
%24 = load i8*, i8** %11
%25 = load i32, i32* %20
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds i8, i8* %24, i64 %26
%28 = load i8, i8* %27
%29 = icmp ne i8 %28, 0
br i1 %29, label %30, label %62
30: ; preds = %23
%31 = load i8*, i8** %11
%32 = load i32, i32* %20
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds i8, i8* %31, i64 %33
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = icmp eq i32 %36, 58
br i1 %37, label %38, label %41
38: ; preds = %30
%39 = load i32, i32* %21
%40 = add i32 %39, 1
store i32 %40, i32* %21
br label %41
41: ; preds = %38, %30
%42 = load i8*, i8** %11
%43 = load i32, i32* %20
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds i8, i8* %42, i64 %44
%46 = load i8, i8* %45
%47 = sext i8 %46 to i32
%48 = icmp ne i32 %47, 58
br i1 %48, label %49, label %58
49: ; preds = %41
%50 = load i8*, i8** %11
%51 = load i32, i32* %20
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds i8, i8* %50, i64 %52
%54 = load i8, i8* %53
%55 = call i32 @isxdigit(i8 signext %54)
%56 = icmp ne i32 %55, 0
br i1 %56, label %58, label %57
57: ; preds = %49
store i32 0, i32* %10
br label %518
58: ; preds = %49, %41
br label %59
59: ; preds = %58
%60 = load i32, i32* %20
%61 = add nsw i32 %60, 1
store i32 %61, i32* %20
br label %23
62: ; preds = %23
%63 = load i32, i32* %21
switch i32 %63, label %498 [
i32 0, label %64
i32 1, label %64
i32 2, label %66
i32 3, label %99
i32 4, label %143
i32 5, label %200
i32 6, label %272
i32 7, label %361
i32 8, label %483
]
64: ; preds = %62, %62
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %10
br label %518
66: ; preds = %62
%67 = load i8*, i8** %11
%68 = load i32*, i32** %12
%69 = load i32*, i32** %19
%70 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %67, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32* %68, i32* %69)
store i32 %70, i32* %22
%71 = load i32, i32* %22
%72 = icmp ne i32 %71, 2
br i1 %72, label %73, label %92
73: ; preds = %66
%74 = load i8*, i8** %11
%75 = load i8*, i8** %11
%76 = call i32 @strlen(i8* %75)
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds i8, i8* %74, i64 %77
%79 = getelementptr inbounds i8, i8* %78, i64 -2
%80 = ptrtoint i8* %79 to i32
%81 = call i32 @strncmp(i32 %80, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%82 = icmp ne i32 %81, 0
br i1 %82, label %92, label %83
83: ; preds = %73
%84 = load i8*, i8** %11
%85 = load i32*, i32** %12
%86 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %84, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32* %85)
store i32 %86, i32* %22
%87 = load i32, i32* %22
%88 = icmp ne i32 %87, 1
br i1 %88, label %89, label %91
89: ; preds = %83
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
store i32 0, i32* %10
br label %518
91: ; preds = %83
br label %98
92: ; preds = %73, %66
%93 = load i32, i32* %22
%94 = icmp ne i32 %93, 2
br i1 %94, label %95, label %97
95: ; preds = %92
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
store i32 0, i32* %10
br label %518
97: ; preds = %92
br label %98
98: ; preds = %97, %91
br label %500
99: ; preds = %62
%100 = load i8*, i8** %11
%101 = load i32*, i32** %12
%102 = load i32*, i32** %18
%103 = load i32*, i32** %19
%104 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %100, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0), i32* %101, i32* %102, i32* %103)
store i32 %104, i32* %22
%105 = load i32, i32* %22
%106 = icmp ne i32 %105, 3
br i1 %106, label %107, label %142
107: ; preds = %99
%108 = load i8*, i8** %11
%109 = load i32*, i32** %12
%110 = load i32*, i32** %13
%111 = load i32*, i32** %19
%112 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %108, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i64 0, i64 0), i32* %109, i32* %110, i32* %111)
store i32 %112, i32* %22
%113 = load i32, i32* %22
%114 = icmp ne i32 %113, 3
br i1 %114, label %115, label %135
115: ; preds = %107
%116 = load i8*, i8** %11
%117 = load i8*, i8** %11
%118 = call i32 @strlen(i8* %117)
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i8, i8* %116, i64 %119
%121 = getelementptr inbounds i8, i8* %120, i64 -2
%122 = ptrtoint i8* %121 to i32
%123 = call i32 @strncmp(i32 %122, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%124 = icmp ne i32 %123, 0
br i1 %124, label %135, label %125
125: ; preds = %115
%126 = load i8*, i8** %11
%127 = load i32*, i32** %12
%128 = load i32*, i32** %13
%129 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %126, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32* %127, i32* %128)
store i32 %129, i32* %22
%130 = load i32, i32* %22
%131 = icmp ne i32 %130, 2
br i1 %131, label %132, label %134
132: ; preds = %125
%133 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
store i32 0, i32* %10
br label %518
134: ; preds = %125
br label %141
135: ; preds = %115, %107
%136 = load i32, i32* %22
%137 = icmp ne i32 %136, 3
br i1 %137, label %138, label %140
138: ; preds = %135
%139 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
store i32 0, i32* %10
br label %518
140: ; preds = %135
br label %141
141: ; preds = %140, %134
br label %142
142: ; preds = %141, %99
br label %500
143: ; preds = %62
%144 = load i8*, i8** %11
%145 = load i32*, i32** %12
%146 = load i32*, i32** %17
%147 = load i32*, i32** %18
%148 = load i32*, i32** %19
%149 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %144, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i32* %145, i32* %146, i32* %147, i32* %148)
store i32 %149, i32* %22
%150 = load i32, i32* %22
%151 = icmp ne i32 %150, 4
br i1 %151, label %152, label %199
152: ; preds = %143
%153 = load i8*, i8** %11
%154 = load i32*, i32** %12
%155 = load i32*, i32** %13
%156 = load i32*, i32** %18
%157 = load i32*, i32** %19
%158 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %153, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i64 0, i64 0), i32* %154, i32* %155, i32* %156, i32* %157)
store i32 %158, i32* %22
%159 = load i32, i32* %22
%160 = icmp ne i32 %159, 4
br i1 %160, label %161, label %198
161: ; preds = %152
%162 = load i8*, i8** %11
%163 = load i32*, i32** %12
%164 = load i32*, i32** %13
%165 = load i32*, i32** %14
%166 = load i32*, i32** %19
%167 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %162, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i64 0, i64 0), i32* %163, i32* %164, i32* %165, i32* %166)
store i32 %167, i32* %22
%168 = load i32, i32* %22
%169 = icmp ne i32 %168, 4
br i1 %169, label %170, label %191
170: ; preds = %161
%171 = load i8*, i8** %11
%172 = load i8*, i8** %11
%173 = call i32 @strlen(i8* %172)
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds i8, i8* %171, i64 %174
%176 = getelementptr inbounds i8, i8* %175, i64 -2
%177 = ptrtoint i8* %176 to i32
%178 = call i32 @strncmp(i32 %177, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%179 = icmp ne i32 %178, 0
br i1 %179, label %191, label %180
180: ; preds = %170
%181 = load i8*, i8** %11
%182 = load i32*, i32** %12
%183 = load i32*, i32** %13
%184 = load i32*, i32** %14
%185 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %181, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.14, i64 0, i64 0), i32* %182, i32* %183, i32* %184)
store i32 %185, i32* %22
%186 = load i32, i32* %22
%187 = icmp ne i32 %186, 3
br i1 %187, label %188, label %190
188: ; preds = %180
%189 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
store i32 0, i32* %10
br label %518
190: ; preds = %180
br label %197
191: ; preds = %170, %161
%192 = load i32, i32* %22
%193 = icmp ne i32 %192, 4
br i1 %193, label %194, label %196
194: ; preds = %191
%195 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0))
store i32 0, i32* %10
br label %518
196: ; preds = %191
br label %197
197: ; preds = %196, %190
br label %198
198: ; preds = %197, %152
br label %199
199: ; preds = %198, %143
br label %500
200: ; preds = %62
%201 = load i8*, i8** %11
%202 = load i32*, i32** %12
%203 = load i32*, i32** %16
%204 = load i32*, i32** %17
%205 = load i32*, i32** %18
%206 = load i32*, i32** %19
%207 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %201, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i64 0, i64 0), i32* %202, i32* %203, i32* %204, i32* %205, i32* %206)
store i32 %207, i32* %22
%208 = load i32, i32* %22
%209 = icmp ne i32 %208, 5
br i1 %209, label %210, label %271
210: ; preds = %200
%211 = load i8*, i8** %11
%212 = load i32*, i32** %12
%213 = load i32*, i32** %13
%214 = load i32*, i32** %17
%215 = load i32*, i32** %18
%216 = load i32*, i32** %19
%217 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %211, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.18, i64 0, i64 0), i32* %212, i32* %213, i32* %214, i32* %215, i32* %216)
store i32 %217, i32* %22
%218 = load i32, i32* %22
%219 = icmp ne i32 %218, 5
br i1 %219, label %220, label %270
220: ; preds = %210
%221 = load i8*, i8** %11
%222 = load i32*, i32** %12
%223 = load i32*, i32** %13
%224 = load i32*, i32** %14
%225 = load i32*, i32** %18
%226 = load i32*, i32** %19
%227 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %221, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.19, i64 0, i64 0), i32* %222, i32* %223, i32* %224, i32* %225, i32* %226)
store i32 %227, i32* %22
%228 = load i32, i32* %22
%229 = icmp ne i32 %228, 5
br i1 %229, label %230, label %269
230: ; preds = %220
%231 = load i8*, i8** %11
%232 = load i32*, i32** %12
%233 = load i32*, i32** %13
%234 = load i32*, i32** %14
%235 = load i32*, i32** %15
%236 = load i32*, i32** %19
%237 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %231, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0), i32* %232, i32* %233, i32* %234, i32* %235, i32* %236)
store i32 %237, i32* %22
%238 = load i32, i32* %22
%239 = icmp ne i32 %238, 5
br i1 %239, label %240, label %262
240: ; preds = %230
%241 = load i8*, i8** %11
%242 = load i8*, i8** %11
%243 = call i32 @strlen(i8* %242)
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds i8, i8* %241, i64 %244
%246 = getelementptr inbounds i8, i8* %245, i64 -2
%247 = ptrtoint i8* %246 to i32
%248 = call i32 @strncmp(i32 %247, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%249 = icmp ne i32 %248, 0
br i1 %249, label %262, label %250
250: ; preds = %240
%251 = load i8*, i8** %11
%252 = load i32*, i32** %12
%253 = load i32*, i32** %13
%254 = load i32*, i32** %14
%255 = load i32*, i32** %15
%256 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %251, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i64 0, i64 0), i32* %252, i32* %253, i32* %254, i32* %255)
store i32 %256, i32* %22
%257 = load i32, i32* %22
%258 = icmp ne i32 %257, 4
br i1 %258, label %259, label %261
259: ; preds = %250
%260 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.22, i64 0, i64 0))
store i32 0, i32* %10
br label %518
261: ; preds = %250
br label %268
262: ; preds = %240, %230
%263 = load i32, i32* %22
%264 = icmp ne i32 %263, 5
br i1 %264, label %265, label %267
265: ; preds = %262
%266 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.23, i64 0, i64 0))
store i32 0, i32* %10
br label %518
267: ; preds = %262
br label %268
268: ; preds = %267, %261
br label %269
269: ; preds = %268, %220
br label %270
270: ; preds = %269, %210
br label %271
271: ; preds = %270, %200
br label %500
272: ; preds = %62
%273 = load i8*, i8** %11
%274 = load i32*, i32** %12
%275 = load i32*, i32** %15
%276 = load i32*, i32** %16
%277 = load i32*, i32** %17
%278 = load i32*, i32** %18
%279 = load i32*, i32** %19
%280 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %273, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.24, i64 0, i64 0), i32* %274, i32* %275, i32* %276, i32* %277, i32* %278, i32* %279)
store i32 %280, i32* %22
%281 = load i32, i32* %22
%282 = icmp ne i32 %281, 6
br i1 %282, label %283, label %360
283: ; preds = %272
%284 = load i8*, i8** %11
%285 = load i32*, i32** %12
%286 = load i32*, i32** %13
%287 = load i32*, i32** %16
%288 = load i32*, i32** %17
%289 = load i32*, i32** %18
%290 = load i32*, i32** %19
%291 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %284, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.25, i64 0, i64 0), i32* %285, i32* %286, i32* %287, i32* %288, i32* %289, i32* %290)
store i32 %291, i32* %22
%292 = load i32, i32* %22
%293 = icmp ne i32 %292, 6
br i1 %293, label %294, label %359
294: ; preds = %283
%295 = load i8*, i8** %11
%296 = load i32*, i32** %12
%297 = load i32*, i32** %13
%298 = load i32*, i32** %14
%299 = load i32*, i32** %17
%300 = load i32*, i32** %18
%301 = load i32*, i32** %19
%302 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %295, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.26, i64 0, i64 0), i32* %296, i32* %297, i32* %298, i32* %299, i32* %300, i32* %301)
store i32 %302, i32* %22
%303 = load i32, i32* %22
%304 = icmp ne i32 %303, 6
br i1 %304, label %305, label %358
305: ; preds = %294
%306 = load i8*, i8** %11
%307 = load i32*, i32** %12
%308 = load i32*, i32** %13
%309 = load i32*, i32** %14
%310 = load i32*, i32** %15
%311 = load i32*, i32** %18
%312 = load i32*, i32** %19
%313 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %306, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.27, i64 0, i64 0), i32* %307, i32* %308, i32* %309, i32* %310, i32* %311, i32* %312)
store i32 %313, i32* %22
%314 = load i32, i32* %22
%315 = icmp ne i32 %314, 6
br i1 %315, label %316, label %357
316: ; preds = %305
%317 = load i8*, i8** %11
%318 = load i32*, i32** %12
%319 = load i32*, i32** %13
%320 = load i32*, i32** %14
%321 = load i32*, i32** %15
%322 = load i32*, i32** %16
%323 = load i32*, i32** %19
%324 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %317, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.28, i64 0, i64 0), i32* %318, i32* %319, i32* %320, i32* %321, i32* %322, i32* %323)
store i32 %324, i32* %22
%325 = load i32, i32* %22
%326 = icmp ne i32 %325, 6
br i1 %326, label %327, label %350
327: ; preds = %316
%328 = load i8*, i8** %11
%329 = load i8*, i8** %11
%330 = call i32 @strlen(i8* %329)
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds i8, i8* %328, i64 %331
%333 = getelementptr inbounds i8, i8* %332, i64 -2
%334 = ptrtoint i8* %333 to i32
%335 = call i32 @strncmp(i32 %334, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%336 = icmp ne i32 %335, 0
br i1 %336, label %350, label %337
337: ; preds = %327
%338 = load i8*, i8** %11
%339 = load i32*, i32** %12
%340 = load i32*, i32** %13
%341 = load i32*, i32** %14
%342 = load i32*, i32** %15
%343 = load i32*, i32** %16
%344 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %338, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.29, i64 0, i64 0), i32* %339, i32* %340, i32* %341, i32* %342, i32* %343)
store i32 %344, i32* %22
%345 = load i32, i32* %22
%346 = icmp ne i32 %345, 5
br i1 %346, label %347, label %349
347: ; preds = %337
%348 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i64 0, i64 0))
store i32 0, i32* %10
br label %518
349: ; preds = %337
br label %356
350: ; preds = %327, %316
%351 = load i32, i32* %22
%352 = icmp ne i32 %351, 6
br i1 %352, label %353, label %355
353: ; preds = %350
%354 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.31, i64 0, i64 0))
store i32 0, i32* %10
br label %518
355: ; preds = %350
br label %356
356: ; preds = %355, %349
br label %357
357: ; preds = %356, %305
br label %358
358: ; preds = %357, %294
br label %359
359: ; preds = %358, %283
br label %360
360: ; preds = %359, %272
br label %500
361: ; preds = %62
%362 = load i8*, i8** %11
%363 = load i32*, i32** %12
%364 = load i32*, i32** %14
%365 = load i32*, i32** %15
%366 = load i32*, i32** %16
%367 = load i32*, i32** %17
%368 = load i32*, i32** %18
%369 = load i32*, i32** %19
%370 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %362, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0), i32* %363, i32* %364, i32* %365, i32* %366, i32* %367, i32* %368, i32* %369)
store i32 %370, i32* %22
%371 = load i32, i32* %22
%372 = icmp ne i32 %371, 7
br i1 %372, label %373, label %482
373: ; preds = %361
%374 = load i8*, i8** %11
%375 = load i32*, i32** %12
%376 = load i32*, i32** %13
%377 = load i32*, i32** %15
%378 = load i32*, i32** %16
%379 = load i32*, i32** %17
%380 = load i32*, i32** %18
%381 = load i32*, i32** %19
%382 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %374, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.33, i64 0, i64 0), i32* %375, i32* %376, i32* %377, i32* %378, i32* %379, i32* %380, i32* %381)
store i32 %382, i32* %22
%383 = load i32, i32* %22
%384 = icmp ne i32 %383, 7
br i1 %384, label %385, label %481
385: ; preds = %373
%386 = load i8*, i8** %11
%387 = load i32*, i32** %12
%388 = load i32*, i32** %13
%389 = load i32*, i32** %14
%390 = load i32*, i32** %16
%391 = load i32*, i32** %17
%392 = load i32*, i32** %18
%393 = load i32*, i32** %19
%394 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %386, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.34, i64 0, i64 0), i32* %387, i32* %388, i32* %389, i32* %390, i32* %391, i32* %392, i32* %393)
store i32 %394, i32* %22
%395 = load i32, i32* %22
%396 = icmp ne i32 %395, 7
br i1 %396, label %397, label %480
397: ; preds = %385
%398 = load i8*, i8** %11
%399 = load i32*, i32** %12
%400 = load i32*, i32** %13
%401 = load i32*, i32** %14
%402 = load i32*, i32** %15
%403 = load i32*, i32** %17
%404 = load i32*, i32** %18
%405 = load i32*, i32** %19
%406 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %398, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.35, i64 0, i64 0), i32* %399, i32* %400, i32* %401, i32* %402, i32* %403, i32* %404, i32* %405)
store i32 %406, i32* %22
%407 = load i32, i32* %22
%408 = icmp ne i32 %407, 7
br i1 %408, label %409, label %479
409: ; preds = %397
%410 = load i8*, i8** %11
%411 = load i32*, i32** %12
%412 = load i32*, i32** %13
%413 = load i32*, i32** %14
%414 = load i32*, i32** %15
%415 = load i32*, i32** %16
%416 = load i32*, i32** %18
%417 = load i32*, i32** %19
%418 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %410, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.36, i64 0, i64 0), i32* %411, i32* %412, i32* %413, i32* %414, i32* %415, i32* %416, i32* %417)
store i32 %418, i32* %22
%419 = load i32, i32* %22
%420 = icmp ne i32 %419, 7
br i1 %420, label %421, label %478
421: ; preds = %409
%422 = load i8*, i8** %11
%423 = load i32*, i32** %12
%424 = load i32*, i32** %13
%425 = load i32*, i32** %14
%426 = load i32*, i32** %15
%427 = load i32*, i32** %16
%428 = load i32*, i32** %17
%429 = load i32*, i32** %19
%430 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %422, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0), i32* %423, i32* %424, i32* %425, i32* %426, i32* %427, i32* %428, i32* %429)
store i32 %430, i32* %22
%431 = load i32, i32* %22
%432 = icmp ne i32 %431, 7
br i1 %432, label %433, label %477
433: ; preds = %421
%434 = load i8*, i8** %11
%435 = load i32*, i32** %12
%436 = load i32*, i32** %13
%437 = load i32*, i32** %14
%438 = load i32*, i32** %15
%439 = load i32*, i32** %16
%440 = load i32*, i32** %17
%441 = load i32*, i32** %18
%442 = load i32*, i32** %19
%443 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %434, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0), i32* %435, i32* %436, i32* %437, i32* %438, i32* %439, i32* %440, i32* %441, i32* %442)
store i32 %443, i32* %22
%444 = load i32, i32* %22
%445 = icmp ne i32 %444, 8
br i1 %445, label %446, label %470
446: ; preds = %433
%447 = load i8*, i8** %11
%448 = load i8*, i8** %11
%449 = call i32 @strlen(i8* %448)
%450 = sext i32 %449 to i64
%451 = getelementptr inbounds i8, i8* %447, i64 %450
%452 = getelementptr inbounds i8, i8* %451, i64 -2
%453 = ptrtoint i8* %452 to i32
%454 = call i32 @strncmp(i32 %453, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%455 = icmp ne i32 %454, 0
br i1 %455, label %470, label %456
456: ; preds = %446
%457 = load i8*, i8** %11
%458 = load i32*, i32** %12
%459 = load i32*, i32** %13
%460 = load i32*, i32** %14
%461 = load i32*, i32** %15
%462 = load i32*, i32** %16
%463 = load i32*, i32** %17
%464 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %457, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.39, i64 0, i64 0), i32* %458, i32* %459, i32* %460, i32* %461, i32* %462, i32* %463)
store i32 %464, i32* %22
%465 = load i32, i32* %22
%466 = icmp ne i32 %465, 6
br i1 %466, label %467, label %469
467: ; preds = %456
%468 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.40, i64 0, i64 0))
store i32 0, i32* %10
br label %518
469: ; preds = %456
br label %476
470: ; preds = %446, %433
%471 = load i32, i32* %22
%472 = icmp ne i32 %471, 8
br i1 %472, label %473, label %475
473: ; preds = %470
%474 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.41, i64 0, i64 0))
store i32 0, i32* %10
br label %518
475: ; preds = %470
br label %476
476: ; preds = %475, %469
br label %477
477: ; preds = %476, %421
br label %478
478: ; preds = %477, %409
br label %479
479: ; preds = %478, %397
br label %480
480: ; preds = %479, %385
br label %481
481: ; preds = %480, %373
br label %482
482: ; preds = %481, %361
br label %500
483: ; preds = %62
%484 = load i8*, i8** %11
%485 = load i32*, i32** %12
%486 = load i32*, i32** %13
%487 = load i32*, i32** %14
%488 = load i32*, i32** %15
%489 = load i32*, i32** %16
%490 = load i32*, i32** %17
%491 = load i32*, i32** %18
%492 = call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %484, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.42, i64 0, i64 0), i32* %485, i32* %486, i32* %487, i32* %488, i32* %489, i32* %490, i32* %491)
store i32 %492, i32* %22
%493 = load i32, i32* %22
%494 = icmp ne i32 %493, 7
br i1 %494, label %495, label %497
495: ; preds = %483
%496 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.43, i64 0, i64 0))
store i32 0, i32* %10
br label %518
497: ; preds = %483
br label %500
498: ; preds = %62
%499 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.44, i64 0, i64 0))
store i32 0, i32* %10
br label %518
500: ; preds = %497, %482, %360, %271, %199, %142, %98
%501 = load i32*, i32** %12
%502 = load i32, i32* %501
%503 = load i32*, i32** %13
%504 = load i32, i32* %503
%505 = load i32*, i32** %14
%506 = load i32, i32* %505
%507 = load i32*, i32** %15
%508 = load i32, i32* %507
%509 = load i32*, i32** %16
%510 = load i32, i32* %509
%511 = load i32*, i32** %17
%512 = load i32, i32* %511
%513 = load i32*, i32** %18
%514 = load i32, i32* %513
%515 = load i32*, i32** %19
%516 = load i32, i32* %515
%517 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.45, i64 0, i64 0), i32 %502, i32 %504, i32 %506, i32 %508, i32 %510, i32 %512, i32 %514, i32 %516)
store i32 1, i32* %10
br label %518
518: ; preds = %500, %498, %495, %473, %467, %353, %347, %265, %259, %194, %188, %138, %132, %95, %89, %64, %57
%519 = load i32, i32* %10
ret i32 %519
}

LLVM IR (-O2):
@.str.1 = [7 x i8] c"%x::%x\00"
@.str.2 = [3 x i8] c"::\00"
@.str.3 = [5 x i8] c"%x::\00"
@.str.6 = [10 x i8] c"%x::%x:%x\00"
@.str.7 = [10 x i8] c"%x:%x::%x\00"
@.str.8 = [8 x i8] c"%x:%x::\00"
@.str.11 = [13 x i8] c"%x::%x:%x:%x\00"
@.str.12 = [13 x i8] c"%x:%x::%x:%x\00"
@.str.13 = [13 x i8] c"%x:%x:%x::%x\00"
@.str.14 = [11 x i8] c"%x:%x:%x::\00"
@.str.17 = [16 x i8] c"%x::%x:%x:%x:%x\00"
@.str.18 = [16 x i8] c"%x:%x::%x:%x:%x\00"
@.str.19 = [16 x i8] c"%x:%x:%x::%x:%x\00"
@.str.20 = [16 x i8] c"%x:%x:%x:%x::%x\00"
@.str.21 = [14 x i8] c"%x:%x:%x:%x::\00"
@.str.24 = [19 x i8] c"%x::%x:%x:%x:%x:%x\00"
@.str.25 = [19 x i8] c"%x:%x::%x:%x:%x:%x\00"
@.str.26 = [19 x i8] c"%x:%x:%x::%x:%x:%x\00"
@.str.27 = [19 x i8] c"%x:%x:%x:%x::%x:%x\00"
@.str.28 = [19 x i8] c"%x:%x:%x:%x:%x::%x\00"
@.str.29 = [17 x i8] c"%x:%x:%x:%x:%x::\00"
@.str.32 = [22 x i8] c"%x::%x:%x:%x:%x:%x:%x\00"
@.str.33 = [22 x i8] c"%x:%x::%x:%x:%x:%x:%x\00"
@.str.34 = [22 x i8] c"%x:%x:%x::%x:%x:%x:%x\00"
@.str.35 = [22 x i8] c"%x:%x:%x:%x::%x:%x:%x\00"
@.str.36 = [22 x i8] c"%x:%x:%x:%x:%x::%x:%x\00"
@.str.37 = [22 x i8] c"%x:%x:%x:%x:%x:%x::%x\00"
@.str.38 = [24 x i8] c"%x:%x:%x:%x:%x:%x:%x:%x\00"
@.str.39 = [20 x i8] c"%x:%x:%x:%x:%x:%x::\00"
@.str.42 = [23 x i8] c"%x:%x:%x:%x:%x:%x:%x::\00"
@.str.45 = [42 x i8] c"uInIpv6Format32: %x:%x:%x:%x:%x:%x:%x:%x\0A\00"
@str = [6 x i8] c"err 8\00"
@str.46 = [7 x i8] c"err 7b\00"
@str.47 = [7 x i8] c"err 7a\00"
@str.48 = [7 x i8] c"err 6b\00"
@str.49 = [7 x i8] c"err 6a\00"
@str.50 = [7 x i8] c"err 5b\00"
@str.51 = [7 x i8] c"err 5a\00"
@str.52 = [7 x i8] c"err 4b\00"
@str.53 = [7 x i8] c"err 4a\00"
@str.54 = [7 x i8] c"err 3b\00"
@str.55 = [7 x i8] c"err 3a\00"
@str.56 = [7 x i8] c"err 2b\00"
@str.57 = [7 x i8] c"err 2a\00"
@str.58 = [6 x i8] c"err 1\00"
@str.59 = [12 x i8] c"err default\00"
define i32 @uInIpv6Format32(i8* %0, i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %6, i32* %7, i32* %8) {
br label %10
10: ; preds = %20, %9
%11 = phi i64 [ %22, %20 ], [ 0, %9 ]
%12 = phi i32 [ %21, %20 ], [ 0, %9 ]
%13 = getelementptr inbounds i8, i8* %0, i64 %11
%14 = load i8, i8* %13
switch i8 %14, label %17 [
i8 0, label %23
i8 58, label %15
]
15: ; preds = %10
%16 = add i32 %12, 1
br label %20
17: ; preds = %10
%18 = tail call i32 @isxdigit(i8 signext %14)
%19 = icmp eq i32 %18, 0
br i1 %19, label %205, label %20
20: ; preds = %15, %17
%21 = phi i32 [ %16, %15 ], [ %12, %17 ]
%22 = add nuw i64 %11, 1
br label %10
23: ; preds = %10
switch i32 %12, label %193 [
i32 0, label %24
i32 1, label %24
i32 2, label %26
i32 3, label %45
i32 4, label %67
i32 5, label %92
i32 6, label %120
i32 7, label %151
i32 8, label %188
]
24: ; preds = %23, %23
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @str.58, i64 0, i64 0))
br label %205
26: ; preds = %23
%27 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32* %1, i32* %8)
%28 = icmp eq i32 %27, 2
br i1 %28, label %195, label %29
29: ; preds = %26
%30 = tail call i32 @strlen(i8* %0)
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds i8, i8* %0, i64 %31
%33 = getelementptr inbounds i8, i8* %32, i64 -2
%34 = ptrtoint i8* %33 to i64
%35 = trunc i64 %34 to i32
%36 = tail call i32 @strncmp(i32 %35, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%37 = icmp eq i32 %36, 0
br i1 %37, label %38, label %43
38: ; preds = %29
%39 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32* %1)
%40 = icmp eq i32 %39, 1
br i1 %40, label %195, label %41
41: ; preds = %38
%42 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.57, i64 0, i64 0))
br label %205
43: ; preds = %29
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.56, i64 0, i64 0))
br label %205
45: ; preds = %23
%46 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0), i32* %1, i32* %7, i32* %8)
%47 = icmp eq i32 %46, 3
br i1 %47, label %195, label %48
48: ; preds = %45
%49 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i64 0, i64 0), i32* %1, i32* %2, i32* %8)
%50 = icmp eq i32 %49, 3
br i1 %50, label %195, label %51
51: ; preds = %48
%52 = tail call i32 @strlen(i8* %0)
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds i8, i8* %0, i64 %53
%55 = getelementptr inbounds i8, i8* %54, i64 -2
%56 = ptrtoint i8* %55 to i64
%57 = trunc i64 %56 to i32
%58 = tail call i32 @strncmp(i32 %57, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %65
60: ; preds = %51
%61 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32* %1, i32* %2)
%62 = icmp eq i32 %61, 2
br i1 %62, label %195, label %63
63: ; preds = %60
%64 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.55, i64 0, i64 0))
br label %205
65: ; preds = %51
%66 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.54, i64 0, i64 0))
br label %205
67: ; preds = %23
%68 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i32* %1, i32* %6, i32* %7, i32* %8)
%69 = icmp eq i32 %68, 4
br i1 %69, label %195, label %70
70: ; preds = %67
%71 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i64 0, i64 0), i32* %1, i32* %2, i32* %7, i32* %8)
%72 = icmp eq i32 %71, 4
br i1 %72, label %195, label %73
73: ; preds = %70
%74 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %8)
%75 = icmp eq i32 %74, 4
br i1 %75, label %195, label %76
76: ; preds = %73
%77 = tail call i32 @strlen(i8* %0)
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds i8, i8* %0, i64 %78
%80 = getelementptr inbounds i8, i8* %79, i64 -2
%81 = ptrtoint i8* %80 to i64
%82 = trunc i64 %81 to i32
%83 = tail call i32 @strncmp(i32 %82, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%84 = icmp eq i32 %83, 0
br i1 %84, label %85, label %90
85: ; preds = %76
%86 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.14, i64 0, i64 0), i32* %1, i32* %2, i32* %3)
%87 = icmp eq i32 %86, 3
br i1 %87, label %195, label %88
88: ; preds = %85
%89 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.53, i64 0, i64 0))
br label %205
90: ; preds = %76
%91 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.52, i64 0, i64 0))
br label %205
92: ; preds = %23
%93 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i64 0, i64 0), i32* %1, i32* %5, i32* %6, i32* %7, i32* %8)
%94 = icmp eq i32 %93, 5
br i1 %94, label %195, label %95
95: ; preds = %92
%96 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.18, i64 0, i64 0), i32* %1, i32* %2, i32* %6, i32* %7, i32* %8)
%97 = icmp eq i32 %96, 5
br i1 %97, label %195, label %98
98: ; preds = %95
%99 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.19, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %7, i32* %8)
%100 = icmp eq i32 %99, 5
br i1 %100, label %195, label %101
101: ; preds = %98
%102 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %8)
%103 = icmp eq i32 %102, 5
br i1 %103, label %195, label %104
104: ; preds = %101
%105 = tail call i32 @strlen(i8* %0)
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds i8, i8* %0, i64 %106
%108 = getelementptr inbounds i8, i8* %107, i64 -2
%109 = ptrtoint i8* %108 to i64
%110 = trunc i64 %109 to i32
%111 = tail call i32 @strncmp(i32 %110, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%112 = icmp eq i32 %111, 0
br i1 %112, label %113, label %118
113: ; preds = %104
%114 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4)
%115 = icmp eq i32 %114, 4
br i1 %115, label %195, label %116
116: ; preds = %113
%117 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.51, i64 0, i64 0))
br label %205
118: ; preds = %104
%119 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.50, i64 0, i64 0))
br label %205
120: ; preds = %23
%121 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.24, i64 0, i64 0), i32* %1, i32* %4, i32* %5, i32* %6, i32* %7, i32* %8)
%122 = icmp eq i32 %121, 6
br i1 %122, label %195, label %123
123: ; preds = %120
%124 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.25, i64 0, i64 0), i32* %1, i32* %2, i32* %5, i32* %6, i32* %7, i32* %8)
%125 = icmp eq i32 %124, 6
br i1 %125, label %195, label %126
126: ; preds = %123
%127 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.26, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %6, i32* %7, i32* %8)
%128 = icmp eq i32 %127, 6
br i1 %128, label %195, label %129
129: ; preds = %126
%130 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.27, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %7, i32* %8)
%131 = icmp eq i32 %130, 6
br i1 %131, label %195, label %132
132: ; preds = %129
%133 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.28, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %8)
%134 = icmp eq i32 %133, 6
br i1 %134, label %195, label %135
135: ; preds = %132
%136 = tail call i32 @strlen(i8* %0)
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds i8, i8* %0, i64 %137
%139 = getelementptr inbounds i8, i8* %138, i64 -2
%140 = ptrtoint i8* %139 to i64
%141 = trunc i64 %140 to i32
%142 = tail call i32 @strncmp(i32 %141, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%143 = icmp eq i32 %142, 0
br i1 %143, label %144, label %149
144: ; preds = %135
%145 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.29, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %5)
%146 = icmp eq i32 %145, 5
br i1 %146, label %195, label %147
147: ; preds = %144
%148 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.49, i64 0, i64 0))
br label %205
149: ; preds = %135
%150 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.48, i64 0, i64 0))
br label %205
151: ; preds = %23
%152 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0), i32* %1, i32* %3, i32* %4, i32* %5, i32* %6, i32* %7, i32* %8)
%153 = icmp eq i32 %152, 7
br i1 %153, label %195, label %154
154: ; preds = %151
%155 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.33, i64 0, i64 0), i32* %1, i32* %2, i32* %4, i32* %5, i32* %6, i32* %7, i32* %8)
%156 = icmp eq i32 %155, 7
br i1 %156, label %195, label %157
157: ; preds = %154
%158 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.34, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %5, i32* %6, i32* %7, i32* %8)
%159 = icmp eq i32 %158, 7
br i1 %159, label %195, label %160
160: ; preds = %157
%161 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.35, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %6, i32* %7, i32* %8)
%162 = icmp eq i32 %161, 7
br i1 %162, label %195, label %163
163: ; preds = %160
%164 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.36, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %7, i32* %8)
%165 = icmp eq i32 %164, 7
br i1 %165, label %195, label %166
166: ; preds = %163
%167 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %6, i32* %8)
%168 = icmp eq i32 %167, 7
br i1 %168, label %195, label %169
169: ; preds = %166
%170 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %6, i32* %7, i32* %8)
%171 = icmp eq i32 %170, 8
br i1 %171, label %195, label %172
172: ; preds = %169
%173 = tail call i32 @strlen(i8* %0)
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds i8, i8* %0, i64 %174
%176 = getelementptr inbounds i8, i8* %175, i64 -2
%177 = ptrtoint i8* %176 to i64
%178 = trunc i64 %177 to i32
%179 = tail call i32 @strncmp(i32 %178, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%180 = icmp eq i32 %179, 0
br i1 %180, label %181, label %186
181: ; preds = %172
%182 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.39, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %6)
%183 = icmp eq i32 %182, 6
br i1 %183, label %195, label %184
184: ; preds = %181
%185 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.47, i64 0, i64 0))
br label %205
186: ; preds = %172
%187 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.46, i64 0, i64 0))
br label %205
188: ; preds = %23
%189 = tail call i32 (i8*, i8*, i32*, ...) @sscanf(i8* %0, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.42, i64 0, i64 0), i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %6, i32* %7)
%190 = icmp eq i32 %189, 7
br i1 %190, label %195, label %191
191: ; preds = %188
%192 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @str, i64 0, i64 0))
br label %205
193: ; preds = %23
%194 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.59, i64 0, i64 0))
br label %205
195: ; preds = %169, %132, %101, %73, %48, %26, %188, %151, %157, %163, %181, %166, %160, %154, %120, %126, %144, %129, %123, %92, %98, %113, %95, %67, %85, %70, %45, %60, %38
%196 = load i32, i32* %1
%197 = load i32, i32* %2
%198 = load i32, i32* %3
%199 = load i32, i32* %4
%200 = load i32, i32* %5
%201 = load i32, i32* %6
%202 = load i32, i32* %7
%203 = load i32, i32* %8
%204 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.45, i64 0, i64 0), i32 %196, i32 %197, i32 %198, i32 %199, i32 %200, i32 %201, i32 %202, i32 %203)
br label %205
205: ; preds = %17, %195, %193, %191, %186, %184, %149, %147, %118, %116, %90, %88, %65, %63, %43, %41, %24
%206 = phi i32 [ 0, %193 ], [ 0, %191 ], [ 1, %195 ], [ 0, %186 ], [ 0, %184 ], [ 0, %149 ], [ 0, %147 ], [ 0, %118 ], [ 0, %116 ], [ 0, %90 ], [ 0, %88 ], [ 0, %65 ], [ 0, %63 ], [ 0, %43 ], [ 0, %41 ], [ 0, %24 ], [ 0, %17 ]
ret i32 %206
}