#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*/ printf(char *, unsigned int);
int /*<<< orphan*/ uInCIDR6Format32(char const *, unsigned int *,
                                    unsigned int *, unsigned int *,
                                    unsigned int *, unsigned int *,
                                    unsigned int *, unsigned int *,
                                    unsigned int *, unsigned int *);
int /*<<< orphan*/ uInIpv6Format32(char const *, unsigned int *, unsigned int *,
                                   unsigned int *, unsigned int *,
                                   unsigned int *, unsigned int *,
                                   unsigned int *, unsigned int *);
unsigned uIpv6InCIDR632(const char *cIPv6, const char *cCIDR6) {
  unsigned a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0, a8 = 0,
           uCIDR = 0;
  unsigned b1 = 0, b2 = 0, b3 = 0, b4 = 0, b5 = 0, b6 = 0, b7 = 0, b8 = 0;
  uInIpv6Format32(cIPv6, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8);
  uInCIDR6Format32(cCIDR6, &b1, &b2, &b3, &b4, &b5, &b6, &b7, &b8, &uCIDR);
  unsigned uMask = 0;
  if (uCIDR < 128 && uCIDR > 112) {
    uMask = 128 - uCIDR;
    uMask = ~uMask;
    a8 = (a8 & uMask);
    b8 = (b8 & uMask);
    uCIDR = 128;
  } else if (uCIDR < 112 && uCIDR > 96) {
    uMask = 112 - uCIDR;
    uMask = ~uMask;
    a7 = (a7 & uMask);
    b7 = (b7 & uMask);
    uCIDR = 112;
  } else if (uCIDR < 96 && uCIDR > 80) {
    uMask = 96 - uCIDR;
    uMask = ~uMask;
    a6 = (a6 & uMask);
    b6 = (b6 & uMask);
    uCIDR = 96;
  } else if (uCIDR < 80 && uCIDR > 64) {
    uMask = 80 - uCIDR;
    uMask = ~uMask;
    a5 = (a5 & uMask);
    b5 = (b5 & uMask);
    uCIDR = 80;
  } else if (uCIDR < 64 && uCIDR > 48) {
    uMask = 64 - uCIDR;
    uMask = ~uMask;
    a4 = (a4 & uMask);
    b4 = (b4 & uMask);
    uCIDR = 64;
  } else if (uCIDR < 48 && uCIDR > 32) {
    uMask = 48 - uCIDR;
    uMask = ~uMask;
    a3 = (a3 & uMask);
    b3 = (b3 & uMask);
    uCIDR = 48;
  } else if (uCIDR < 32 && uCIDR > 16) {
    uMask = 32 - uCIDR;
    uMask = ~uMask;
    a2 = (a2 & uMask);
    b2 = (b2 & uMask);
    uCIDR = 32;
  } else if (uCIDR < 16 && uCIDR > 0) {
    uMask = 16 - uCIDR;
    uMask = ~uMask;
    a1 = (a1 & uMask);
    b1 = (b1 & uMask);
    uCIDR = 16;
  } else if (uCIDR == 0) {
    return (1);
  }
  if (uMask)
    printf("~uMask=%4.4x\n", uMask);
  switch (uCIDR) {
  case 128:
    if (a1 == b1 && a2 == b2 && a3 == b3 && a4 == b4 && a5 == b5 && a6 == b6 &&
        a7 == b7 && a8 == b8)
      return (1);
    break;
  case 112:
    if (a1 == b1 && a2 == b2 && a3 == b3 && a4 == b4 && a5 == b5 && a6 == b6 &&
        a7 == b7)
      return (1);
    break;
  case 96:
    if (a1 == b1 && a2 == b2 && a3 == b3 && a4 == b4 && a5 == b5 && a6 == b6)
      return (1);
    break;
  case 80:
    if (a1 == b1 && a2 == b2 && a3 == b3 && a4 == b4 && a5 == b5)
      return (1);
    break;
  case 64:
    if (a1 == b1 && a2 == b2 && a3 == b3 && a4 == b4)
      return (1);
    break;
  case 48:
    if (a1 == b1 && a2 == b2 && a3 == b3)
      return (1);
    break;
  case 32:
    if (a1 == b1 && a2 == b2)
      return (1);
    break;
  case 16:
    if (a1 == b1)
      return (1);
  }
  return (0);
}


x86 assembly (clang, -O0):
<uIpv6InCIDR632>:
push   %rbp
mov    %rsp,%rbp
push   %rbx
sub    $0x88,%rsp
mov    %rdi,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
movl   $0x0,-0x38(%rbp)
movl   $0x0,-0x3c(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
movl   $0x0,-0x58(%rbp)
movl   $0x0,-0x5c(%rbp)
movl   $0x0,-0x60(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0x18(%rbp),%rdi
lea    -0x24(%rbp),%rsi
lea    -0x28(%rbp),%rdx
lea    -0x2c(%rbp),%rcx
lea    -0x30(%rbp),%r8
lea    -0x34(%rbp),%r9
lea    -0x38(%rbp),%r11
lea    -0x3c(%rbp),%r10
lea    -0x40(%rbp),%rax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
call   1040 <uInIpv6Format32@plt>
mov    -0x20(%rbp),%rdi
lea    -0x48(%rbp),%rsi
lea    -0x4c(%rbp),%rdx
lea    -0x50(%rbp),%rcx
lea    -0x54(%rbp),%r8
lea    -0x58(%rbp),%r9
lea    -0x5c(%rbp),%rbx
lea    -0x60(%rbp),%r11
lea    -0x64(%rbp),%r10
lea    -0x44(%rbp),%rax
mov    %rbx,(%rsp)
mov    %r11,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
call   1050 <uInCIDR6Format32@plt>
movl   $0x0,-0x68(%rbp)
cmpl   $0x80,-0x44(%rbp)
jae    1282 <uIpv6InCIDR632+0x152>
cmpl   $0x70,-0x44(%rbp)
jbe    1282 <uIpv6InCIDR632+0x152>
mov    $0x80,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
xor    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x40(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x64(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x64(%rbp)
movl   $0x80,-0x44(%rbp)
jmp    14aa <uIpv6InCIDR632+0x37a>
cmpl   $0x70,-0x44(%rbp)
jae    12c8 <uIpv6InCIDR632+0x198>
cmpl   $0x60,-0x44(%rbp)
jbe    12c8 <uIpv6InCIDR632+0x198>
mov    $0x70,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
xor    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x3c(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x60(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x60(%rbp)
movl   $0x70,-0x44(%rbp)
jmp    14a5 <uIpv6InCIDR632+0x375>
cmpl   $0x60,-0x44(%rbp)
jae    130e <uIpv6InCIDR632+0x1de>
cmpl   $0x50,-0x44(%rbp)
jbe    130e <uIpv6InCIDR632+0x1de>
mov    $0x60,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
xor    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x38(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x5c(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x5c(%rbp)
movl   $0x60,-0x44(%rbp)
jmp    14a0 <uIpv6InCIDR632+0x370>
cmpl   $0x50,-0x44(%rbp)
jae    1354 <uIpv6InCIDR632+0x224>
cmpl   $0x40,-0x44(%rbp)
jbe    1354 <uIpv6InCIDR632+0x224>
mov    $0x50,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
xor    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x34(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x58(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x58(%rbp)
movl   $0x50,-0x44(%rbp)
jmp    149b <uIpv6InCIDR632+0x36b>
cmpl   $0x40,-0x44(%rbp)
jae    139a <uIpv6InCIDR632+0x26a>
cmpl   $0x30,-0x44(%rbp)
jbe    139a <uIpv6InCIDR632+0x26a>
mov    $0x40,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
xor    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x30(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x54(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x54(%rbp)
movl   $0x40,-0x44(%rbp)
jmp    1496 <uIpv6InCIDR632+0x366>
cmpl   $0x30,-0x44(%rbp)
jae    13e0 <uIpv6InCIDR632+0x2b0>
cmpl   $0x20,-0x44(%rbp)
jbe    13e0 <uIpv6InCIDR632+0x2b0>
mov    $0x30,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
xor    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x2c(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x50(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x50(%rbp)
movl   $0x30,-0x44(%rbp)
jmp    1491 <uIpv6InCIDR632+0x361>
cmpl   $0x20,-0x44(%rbp)
jae    1426 <uIpv6InCIDR632+0x2f6>
cmpl   $0x10,-0x44(%rbp)
jbe    1426 <uIpv6InCIDR632+0x2f6>
mov    $0x20,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
xor    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x28(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x4c(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x4c(%rbp)
movl   $0x20,-0x44(%rbp)
jmp    148c <uIpv6InCIDR632+0x35c>
cmpl   $0x10,-0x44(%rbp)
jae    146c <uIpv6InCIDR632+0x33c>
cmpl   $0x0,-0x44(%rbp)
jbe    146c <uIpv6InCIDR632+0x33c>
mov    $0x10,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
xor    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x24(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x48(%rbp),%eax
and    -0x68(%rbp),%eax
mov    %eax,-0x48(%rbp)
movl   $0x10,-0x44(%rbp)
jmp    1487 <uIpv6InCIDR632+0x357>
cmpl   $0x0,-0x44(%rbp)
jne    1482 <uIpv6InCIDR632+0x352>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1487 <uIpv6InCIDR632+0x357>
jmp    148c <uIpv6InCIDR632+0x35c>
jmp    1491 <uIpv6InCIDR632+0x361>
jmp    1496 <uIpv6InCIDR632+0x366>
jmp    149b <uIpv6InCIDR632+0x36b>
jmp    14a0 <uIpv6InCIDR632+0x370>
jmp    14a5 <uIpv6InCIDR632+0x375>
jmp    14aa <uIpv6InCIDR632+0x37a>
cmpl   $0x0,-0x68(%rbp)
je     14c3 <uIpv6InCIDR632+0x393>
mov    -0x68(%rbp),%esi
lea    0xb42(%rip),%rdi
call   1030 <printf@plt>
mov    -0x44(%rbp),%eax
mov    %eax,-0x6c(%rbp)
sub    $0x10,%eax
je     176b <uIpv6InCIDR632+0x63b>
jmp    14d7 <uIpv6InCIDR632+0x3a7>
mov    -0x6c(%rbp),%eax
sub    $0x20,%eax
je     1742 <uIpv6InCIDR632+0x612>
jmp    14e8 <uIpv6InCIDR632+0x3b8>
mov    -0x6c(%rbp),%eax
sub    $0x30,%eax
je     170d <uIpv6InCIDR632+0x5dd>
jmp    14f9 <uIpv6InCIDR632+0x3c9>
mov    -0x6c(%rbp),%eax
sub    $0x40,%eax
je     16cc <uIpv6InCIDR632+0x59c>
jmp    150a <uIpv6InCIDR632+0x3da>
mov    -0x6c(%rbp),%eax
sub    $0x50,%eax
je     167f <uIpv6InCIDR632+0x54f>
jmp    151b <uIpv6InCIDR632+0x3eb>
mov    -0x6c(%rbp),%eax
sub    $0x60,%eax
je     1626 <uIpv6InCIDR632+0x4f6>
jmp    152c <uIpv6InCIDR632+0x3fc>
mov    -0x6c(%rbp),%eax
sub    $0x70,%eax
je     15c1 <uIpv6InCIDR632+0x491>
jmp    153d <uIpv6InCIDR632+0x40d>
mov    -0x6c(%rbp),%eax
sub    $0x80,%eax
jne    1788 <uIpv6InCIDR632+0x658>
jmp    1550 <uIpv6InCIDR632+0x420>
mov    -0x24(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    15bc <uIpv6InCIDR632+0x48c>
mov    -0x28(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jne    15bc <uIpv6InCIDR632+0x48c>
mov    -0x2c(%rbp),%eax
cmp    -0x50(%rbp),%eax
jne    15bc <uIpv6InCIDR632+0x48c>
mov    -0x30(%rbp),%eax
cmp    -0x54(%rbp),%eax
jne    15bc <uIpv6InCIDR632+0x48c>
mov    -0x34(%rbp),%eax
cmp    -0x58(%rbp),%eax
jne    15bc <uIpv6InCIDR632+0x48c>
mov    -0x38(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jne    15bc <uIpv6InCIDR632+0x48c>
mov    -0x3c(%rbp),%eax
cmp    -0x60(%rbp),%eax
jne    15bc <uIpv6InCIDR632+0x48c>
mov    -0x40(%rbp),%eax
cmp    -0x64(%rbp),%eax
jne    15bc <uIpv6InCIDR632+0x48c>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1788 <uIpv6InCIDR632+0x658>
mov    -0x24(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    1621 <uIpv6InCIDR632+0x4f1>
mov    -0x28(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jne    1621 <uIpv6InCIDR632+0x4f1>
mov    -0x2c(%rbp),%eax
cmp    -0x50(%rbp),%eax
jne    1621 <uIpv6InCIDR632+0x4f1>
mov    -0x30(%rbp),%eax
cmp    -0x54(%rbp),%eax
jne    1621 <uIpv6InCIDR632+0x4f1>
mov    -0x34(%rbp),%eax
cmp    -0x58(%rbp),%eax
jne    1621 <uIpv6InCIDR632+0x4f1>
mov    -0x38(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jne    1621 <uIpv6InCIDR632+0x4f1>
mov    -0x3c(%rbp),%eax
cmp    -0x60(%rbp),%eax
jne    1621 <uIpv6InCIDR632+0x4f1>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1788 <uIpv6InCIDR632+0x658>
mov    -0x24(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    167a <uIpv6InCIDR632+0x54a>
mov    -0x28(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jne    167a <uIpv6InCIDR632+0x54a>
mov    -0x2c(%rbp),%eax
cmp    -0x50(%rbp),%eax
jne    167a <uIpv6InCIDR632+0x54a>
mov    -0x30(%rbp),%eax
cmp    -0x54(%rbp),%eax
jne    167a <uIpv6InCIDR632+0x54a>
mov    -0x34(%rbp),%eax
cmp    -0x58(%rbp),%eax
jne    167a <uIpv6InCIDR632+0x54a>
mov    -0x38(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jne    167a <uIpv6InCIDR632+0x54a>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1788 <uIpv6InCIDR632+0x658>
mov    -0x24(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    16c7 <uIpv6InCIDR632+0x597>
mov    -0x28(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jne    16c7 <uIpv6InCIDR632+0x597>
mov    -0x2c(%rbp),%eax
cmp    -0x50(%rbp),%eax
jne    16c7 <uIpv6InCIDR632+0x597>
mov    -0x30(%rbp),%eax
cmp    -0x54(%rbp),%eax
jne    16c7 <uIpv6InCIDR632+0x597>
mov    -0x34(%rbp),%eax
cmp    -0x58(%rbp),%eax
jne    16c7 <uIpv6InCIDR632+0x597>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1788 <uIpv6InCIDR632+0x658>
mov    -0x24(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    1708 <uIpv6InCIDR632+0x5d8>
mov    -0x28(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jne    1708 <uIpv6InCIDR632+0x5d8>
mov    -0x2c(%rbp),%eax
cmp    -0x50(%rbp),%eax
jne    1708 <uIpv6InCIDR632+0x5d8>
mov    -0x30(%rbp),%eax
cmp    -0x54(%rbp),%eax
jne    1708 <uIpv6InCIDR632+0x5d8>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1788 <uIpv6InCIDR632+0x658>
mov    -0x24(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    173d <uIpv6InCIDR632+0x60d>
mov    -0x28(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jne    173d <uIpv6InCIDR632+0x60d>
mov    -0x2c(%rbp),%eax
cmp    -0x50(%rbp),%eax
jne    173d <uIpv6InCIDR632+0x60d>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1788 <uIpv6InCIDR632+0x658>
mov    -0x24(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    1766 <uIpv6InCIDR632+0x636>
mov    -0x28(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jne    1766 <uIpv6InCIDR632+0x636>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1788 <uIpv6InCIDR632+0x658>
mov    -0x24(%rbp),%eax
cmp    -0x48(%rbp),%eax
jne    1783 <uIpv6InCIDR632+0x653>
movl   $0x1,-0xc(%rbp)
jmp    178f <uIpv6InCIDR632+0x65f>
jmp    1788 <uIpv6InCIDR632+0x658>
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    $0x88,%rsp
pop    %rbx
pop    %rbp
ret

x86 assembly (clang, -O2):
<uIpv6InCIDR632>:
push   %r14
push   %rbx
sub    $0x48,%rsp
mov    %rsi,%rbx
movl   $0x0,0xc(%rsp)
movl   $0x0,0x14(%rsp)
movl   $0x0,0x1c(%rsp)
movl   $0x0,0x24(%rsp)
movl   $0x0,0x2c(%rsp)
movl   $0x0,0x34(%rsp)
movl   $0x0,0x3c(%rsp)
movl   $0x0,0x44(%rsp)
movl   $0x0,0x4(%rsp)
movl   $0x0,0x8(%rsp)
movl   $0x0,0x10(%rsp)
movl   $0x0,0x18(%rsp)
movl   $0x0,0x20(%rsp)
movl   $0x0,0x28(%rsp)
movl   $0x0,0x30(%rsp)
movl   $0x0,0x38(%rsp)
movl   $0x0,0x40(%rsp)
sub    $0x8,%rsp
lea    0x4c(%rsp),%rax
lea    0x44(%rsp),%r10
lea    0x3c(%rsp),%r11
lea    0x14(%rsp),%rsi
lea    0x1c(%rsp),%rdx
lea    0x24(%rsp),%rcx
lea    0x2c(%rsp),%r8
lea    0x34(%rsp),%r9
push   %rax
push   %r10
push   %r11
call   1040 <uInIpv6Format32@plt>
add    $0x20,%rsp
lea    0x4(%rsp),%rax
lea    0x40(%rsp),%r10
lea    0x38(%rsp),%r11
lea    0x30(%rsp),%r14
lea    0x8(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0x18(%rsp),%rcx
lea    0x20(%rsp),%r8
lea    0x28(%rsp),%r9
mov    %rbx,%rdi
push   %rax
push   %r10
push   %r11
push   %r14
call   1050 <uInCIDR6Format32@plt>
add    $0x20,%rsp
mov    0x4(%rsp),%eax
lea    -0x71(%rax),%esi
cmp    $0xe,%esi
ja     1264 <uIpv6InCIDR632+0x134>
add    $0xffffff7f,%eax
and    %eax,0x44(%rsp)
and    %eax,0x40(%rsp)
movl   $0x80,0x4(%rsp)
mov    %eax,%esi
jmp    1328 <uIpv6InCIDR632+0x1f8>
lea    -0x61(%rax),%ecx
cmp    $0xe,%ecx
ja     1281 <uIpv6InCIDR632+0x151>
and    %esi,0x3c(%rsp)
and    %esi,0x38(%rsp)
movl   $0x70,0x4(%rsp)
jmp    1328 <uIpv6InCIDR632+0x1f8>
lea    -0x51(%rax),%esi
cmp    $0xe,%esi
ja     12a0 <uIpv6InCIDR632+0x170>
and    %ecx,0x34(%rsp)
and    %ecx,0x30(%rsp)
movl   $0x60,0x4(%rsp)
mov    %ecx,%esi
jmp    1328 <uIpv6InCIDR632+0x1f8>
lea    -0x41(%rax),%ecx
cmp    $0xe,%ecx
ja     12ba <uIpv6InCIDR632+0x18a>
and    %esi,0x2c(%rsp)
and    %esi,0x28(%rsp)
movl   $0x50,0x4(%rsp)
jmp    1328 <uIpv6InCIDR632+0x1f8>
lea    -0x31(%rax),%esi
cmp    $0xe,%esi
ja     12d6 <uIpv6InCIDR632+0x1a6>
and    %ecx,0x24(%rsp)
and    %ecx,0x20(%rsp)
movl   $0x40,0x4(%rsp)
mov    %ecx,%esi
jmp    1328 <uIpv6InCIDR632+0x1f8>
lea    -0x21(%rax),%ecx
cmp    $0xe,%ecx
ja     12f0 <uIpv6InCIDR632+0x1c0>
and    %esi,0x1c(%rsp)
and    %esi,0x18(%rsp)
movl   $0x30,0x4(%rsp)
jmp    1328 <uIpv6InCIDR632+0x1f8>
lea    -0x11(%rax),%esi
cmp    $0xe,%esi
ja     130c <uIpv6InCIDR632+0x1dc>
and    %ecx,0x14(%rsp)
and    %ecx,0x10(%rsp)
movl   $0x20,0x4(%rsp)
mov    %ecx,%esi
jmp    1328 <uIpv6InCIDR632+0x1f8>
lea    -0x1(%rax),%ecx
cmp    $0xe,%ecx
ja     1571 <uIpv6InCIDR632+0x441>
and    %esi,0xc(%rsp)
and    %esi,0x8(%rsp)
movl   $0x10,0x4(%rsp)
lea    0xcf1(%rip),%rdi
call   1030 <printf@plt>
mov    0x4(%rsp),%eax
add    $0xfffffff0,%eax
rol    $0x1c,%eax
cmp    $0x7,%eax
ja     1567 <uIpv6InCIDR632+0x437>
lea    0xcb2(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0xc(%rsp),%ecx
mov    $0x1,%eax
cmp    0x8(%rsp),%ecx
jne    1567 <uIpv6InCIDR632+0x437>
jmp    1569 <uIpv6InCIDR632+0x439>
mov    0xc(%rsp),%eax
cmp    0x8(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x1c(%rsp),%ecx
mov    $0x1,%eax
cmp    0x18(%rsp),%ecx
jne    1567 <uIpv6InCIDR632+0x437>
jmp    1569 <uIpv6InCIDR632+0x439>
mov    0xc(%rsp),%eax
cmp    0x8(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x1c(%rsp),%eax
cmp    0x18(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x24(%rsp),%ecx
mov    $0x1,%eax
cmp    0x20(%rsp),%ecx
jne    1567 <uIpv6InCIDR632+0x437>
jmp    1569 <uIpv6InCIDR632+0x439>
mov    0xc(%rsp),%eax
cmp    0x8(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x1c(%rsp),%eax
cmp    0x18(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x24(%rsp),%eax
cmp    0x20(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x2c(%rsp),%ecx
mov    $0x1,%eax
cmp    0x28(%rsp),%ecx
jne    1567 <uIpv6InCIDR632+0x437>
jmp    1569 <uIpv6InCIDR632+0x439>
mov    0xc(%rsp),%eax
cmp    0x8(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x14(%rsp),%ecx
mov    $0x1,%eax
cmp    0x10(%rsp),%ecx
jne    1567 <uIpv6InCIDR632+0x437>
jmp    1569 <uIpv6InCIDR632+0x439>
mov    0xc(%rsp),%eax
cmp    0x8(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x1c(%rsp),%eax
cmp    0x18(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x24(%rsp),%eax
cmp    0x20(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x2c(%rsp),%eax
cmp    0x28(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x34(%rsp),%ecx
mov    $0x1,%eax
cmp    0x30(%rsp),%ecx
jne    1567 <uIpv6InCIDR632+0x437>
jmp    1569 <uIpv6InCIDR632+0x439>
mov    0xc(%rsp),%eax
cmp    0x8(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x1c(%rsp),%eax
cmp    0x18(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x24(%rsp),%eax
cmp    0x20(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x2c(%rsp),%eax
cmp    0x28(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x34(%rsp),%eax
cmp    0x30(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x3c(%rsp),%ecx
mov    $0x1,%eax
cmp    0x38(%rsp),%ecx
jne    1567 <uIpv6InCIDR632+0x437>
jmp    1569 <uIpv6InCIDR632+0x439>
mov    0xc(%rsp),%eax
cmp    0x8(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x1c(%rsp),%eax
cmp    0x18(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x24(%rsp),%eax
cmp    0x20(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x2c(%rsp),%eax
cmp    0x28(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x34(%rsp),%eax
cmp    0x30(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x3c(%rsp),%eax
cmp    0x38(%rsp),%eax
jne    1567 <uIpv6InCIDR632+0x437>
mov    0x44(%rsp),%ecx
mov    $0x1,%eax
cmp    0x40(%rsp),%ecx
je     1569 <uIpv6InCIDR632+0x439>
xor    %eax,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r14
ret
test   %eax,%eax
jne    1338 <uIpv6InCIDR632+0x208>
mov    $0x1,%eax
jmp    1569 <uIpv6InCIDR632+0x439>

LLVM IR (-O0):
@.str = [14 x i8] c"~uMask=%4.4x\0A\00"
define i32 @uIpv6InCIDR632(i8* %0, i8* %1) {
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%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
%23 = alloca i32
store i8* %0, i8** %4
store i8* %1, i8** %5
store i32 0, i32* %6
store i32 0, i32* %7
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %10
store i32 0, i32* %11
store i32 0, i32* %12
store i32 0, i32* %13
store i32 0, i32* %14
store i32 0, i32* %15
store i32 0, i32* %16
store i32 0, i32* %17
store i32 0, i32* %18
store i32 0, i32* %19
store i32 0, i32* %20
store i32 0, i32* %21
store i32 0, i32* %22
%24 = load i8*, i8** %4
%25 = call i32 @uInIpv6Format32(i8* %24, i32* %6, i32* %7, i32* %8, i32* %9, i32* %10, i32* %11, i32* %12, i32* %13)
%26 = load i8*, i8** %5
%27 = call i32 @uInCIDR6Format32(i8* %26, i32* %15, i32* %16, i32* %17, i32* %18, i32* %19, i32* %20, i32* %21, i32* %22, i32* %14)
store i32 0, i32* %23
%28 = load i32, i32* %14
%29 = icmp ult i32 %28, 128
br i1 %29, label %30, label %44
30: ; preds = %2
%31 = load i32, i32* %14
%32 = icmp ugt i32 %31, 112
br i1 %32, label %33, label %44
33: ; preds = %30
%34 = load i32, i32* %14
%35 = sub i32 128, %34
store i32 %35, i32* %23
%36 = load i32, i32* %23
%37 = xor i32 %36, -1
store i32 %37, i32* %23
%38 = load i32, i32* %13
%39 = load i32, i32* %23
%40 = and i32 %38, %39
store i32 %40, i32* %13
%41 = load i32, i32* %22
%42 = load i32, i32* %23
%43 = and i32 %41, %42
store i32 %43, i32* %22
store i32 128, i32* %14
br label %175
44: ; preds = %30, %2
%45 = load i32, i32* %14
%46 = icmp ult i32 %45, 112
br i1 %46, label %47, label %61
47: ; preds = %44
%48 = load i32, i32* %14
%49 = icmp ugt i32 %48, 96
br i1 %49, label %50, label %61
50: ; preds = %47
%51 = load i32, i32* %14
%52 = sub i32 112, %51
store i32 %52, i32* %23
%53 = load i32, i32* %23
%54 = xor i32 %53, -1
store i32 %54, i32* %23
%55 = load i32, i32* %12
%56 = load i32, i32* %23
%57 = and i32 %55, %56
store i32 %57, i32* %12
%58 = load i32, i32* %21
%59 = load i32, i32* %23
%60 = and i32 %58, %59
store i32 %60, i32* %21
store i32 112, i32* %14
br label %174
61: ; preds = %47, %44
%62 = load i32, i32* %14
%63 = icmp ult i32 %62, 96
br i1 %63, label %64, label %78
64: ; preds = %61
%65 = load i32, i32* %14
%66 = icmp ugt i32 %65, 80
br i1 %66, label %67, label %78
67: ; preds = %64
%68 = load i32, i32* %14
%69 = sub i32 96, %68
store i32 %69, i32* %23
%70 = load i32, i32* %23
%71 = xor i32 %70, -1
store i32 %71, i32* %23
%72 = load i32, i32* %11
%73 = load i32, i32* %23
%74 = and i32 %72, %73
store i32 %74, i32* %11
%75 = load i32, i32* %20
%76 = load i32, i32* %23
%77 = and i32 %75, %76
store i32 %77, i32* %20
store i32 96, i32* %14
br label %173
78: ; preds = %64, %61
%79 = load i32, i32* %14
%80 = icmp ult i32 %79, 80
br i1 %80, label %81, label %95
81: ; preds = %78
%82 = load i32, i32* %14
%83 = icmp ugt i32 %82, 64
br i1 %83, label %84, label %95
84: ; preds = %81
%85 = load i32, i32* %14
%86 = sub i32 80, %85
store i32 %86, i32* %23
%87 = load i32, i32* %23
%88 = xor i32 %87, -1
store i32 %88, i32* %23
%89 = load i32, i32* %10
%90 = load i32, i32* %23
%91 = and i32 %89, %90
store i32 %91, i32* %10
%92 = load i32, i32* %19
%93 = load i32, i32* %23
%94 = and i32 %92, %93
store i32 %94, i32* %19
store i32 80, i32* %14
br label %172
95: ; preds = %81, %78
%96 = load i32, i32* %14
%97 = icmp ult i32 %96, 64
br i1 %97, label %98, label %112
98: ; preds = %95
%99 = load i32, i32* %14
%100 = icmp ugt i32 %99, 48
br i1 %100, label %101, label %112
101: ; preds = %98
%102 = load i32, i32* %14
%103 = sub i32 64, %102
store i32 %103, i32* %23
%104 = load i32, i32* %23
%105 = xor i32 %104, -1
store i32 %105, i32* %23
%106 = load i32, i32* %9
%107 = load i32, i32* %23
%108 = and i32 %106, %107
store i32 %108, i32* %9
%109 = load i32, i32* %18
%110 = load i32, i32* %23
%111 = and i32 %109, %110
store i32 %111, i32* %18
store i32 64, i32* %14
br label %171
112: ; preds = %98, %95
%113 = load i32, i32* %14
%114 = icmp ult i32 %113, 48
br i1 %114, label %115, label %129
115: ; preds = %112
%116 = load i32, i32* %14
%117 = icmp ugt i32 %116, 32
br i1 %117, label %118, label %129
118: ; preds = %115
%119 = load i32, i32* %14
%120 = sub i32 48, %119
store i32 %120, i32* %23
%121 = load i32, i32* %23
%122 = xor i32 %121, -1
store i32 %122, i32* %23
%123 = load i32, i32* %8
%124 = load i32, i32* %23
%125 = and i32 %123, %124
store i32 %125, i32* %8
%126 = load i32, i32* %17
%127 = load i32, i32* %23
%128 = and i32 %126, %127
store i32 %128, i32* %17
store i32 48, i32* %14
br label %170
129: ; preds = %115, %112
%130 = load i32, i32* %14
%131 = icmp ult i32 %130, 32
br i1 %131, label %132, label %146
132: ; preds = %129
%133 = load i32, i32* %14
%134 = icmp ugt i32 %133, 16
br i1 %134, label %135, label %146
135: ; preds = %132
%136 = load i32, i32* %14
%137 = sub i32 32, %136
store i32 %137, i32* %23
%138 = load i32, i32* %23
%139 = xor i32 %138, -1
store i32 %139, i32* %23
%140 = load i32, i32* %7
%141 = load i32, i32* %23
%142 = and i32 %140, %141
store i32 %142, i32* %7
%143 = load i32, i32* %16
%144 = load i32, i32* %23
%145 = and i32 %143, %144
store i32 %145, i32* %16
store i32 32, i32* %14
br label %169
146: ; preds = %132, %129
%147 = load i32, i32* %14
%148 = icmp ult i32 %147, 16
br i1 %148, label %149, label %163
149: ; preds = %146
%150 = load i32, i32* %14
%151 = icmp ugt i32 %150, 0
br i1 %151, label %152, label %163
152: ; preds = %149
%153 = load i32, i32* %14
%154 = sub i32 16, %153
store i32 %154, i32* %23
%155 = load i32, i32* %23
%156 = xor i32 %155, -1
store i32 %156, i32* %23
%157 = load i32, i32* %6
%158 = load i32, i32* %23
%159 = and i32 %157, %158
store i32 %159, i32* %6
%160 = load i32, i32* %15
%161 = load i32, i32* %23
%162 = and i32 %160, %161
store i32 %162, i32* %15
store i32 16, i32* %14
br label %168
163: ; preds = %149, %146
%164 = load i32, i32* %14
%165 = icmp eq i32 %164, 0
br i1 %165, label %166, label %167
166: ; preds = %163
store i32 1, i32* %3
br label %344
167: ; preds = %163
br label %168
168: ; preds = %167, %152
br label %169
169: ; preds = %168, %135
br label %170
170: ; preds = %169, %118
br label %171
171: ; preds = %170, %101
br label %172
172: ; preds = %171, %84
br label %173
173: ; preds = %172, %67
br label %174
174: ; preds = %173, %50
br label %175
175: ; preds = %174, %33
%176 = load i32, i32* %23
%177 = icmp ne i32 %176, 0
br i1 %177, label %178, label %181
178: ; preds = %175
%179 = load i32, i32* %23
%180 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0), i32 %179)
br label %181
181: ; preds = %178, %175
%182 = load i32, i32* %14
switch i32 %182, label %343 [
i32 128, label %183
i32 112, label %217
i32 96, label %247
i32 80, label %273
i32 64, label %295
i32 48, label %313
i32 32, label %327
i32 16, label %337
]
183: ; preds = %181
%184 = load i32, i32* %6
%185 = load i32, i32* %15
%186 = icmp eq i32 %184, %185
br i1 %186, label %187, label %216
187: ; preds = %183
%188 = load i32, i32* %7
%189 = load i32, i32* %16
%190 = icmp eq i32 %188, %189
br i1 %190, label %191, label %216
191: ; preds = %187
%192 = load i32, i32* %8
%193 = load i32, i32* %17
%194 = icmp eq i32 %192, %193
br i1 %194, label %195, label %216
195: ; preds = %191
%196 = load i32, i32* %9
%197 = load i32, i32* %18
%198 = icmp eq i32 %196, %197
br i1 %198, label %199, label %216
199: ; preds = %195
%200 = load i32, i32* %10
%201 = load i32, i32* %19
%202 = icmp eq i32 %200, %201
br i1 %202, label %203, label %216
203: ; preds = %199
%204 = load i32, i32* %11
%205 = load i32, i32* %20
%206 = icmp eq i32 %204, %205
br i1 %206, label %207, label %216
207: ; preds = %203
%208 = load i32, i32* %12
%209 = load i32, i32* %21
%210 = icmp eq i32 %208, %209
br i1 %210, label %211, label %216
211: ; preds = %207
%212 = load i32, i32* %13
%213 = load i32, i32* %22
%214 = icmp eq i32 %212, %213
br i1 %214, label %215, label %216
215: ; preds = %211
store i32 1, i32* %3
br label %344
216: ; preds = %211, %207, %203, %199, %195, %191, %187, %183
br label %343
217: ; preds = %181
%218 = load i32, i32* %6
%219 = load i32, i32* %15
%220 = icmp eq i32 %218, %219
br i1 %220, label %221, label %246
221: ; preds = %217
%222 = load i32, i32* %7
%223 = load i32, i32* %16
%224 = icmp eq i32 %222, %223
br i1 %224, label %225, label %246
225: ; preds = %221
%226 = load i32, i32* %8
%227 = load i32, i32* %17
%228 = icmp eq i32 %226, %227
br i1 %228, label %229, label %246
229: ; preds = %225
%230 = load i32, i32* %9
%231 = load i32, i32* %18
%232 = icmp eq i32 %230, %231
br i1 %232, label %233, label %246
233: ; preds = %229
%234 = load i32, i32* %10
%235 = load i32, i32* %19
%236 = icmp eq i32 %234, %235
br i1 %236, label %237, label %246
237: ; preds = %233
%238 = load i32, i32* %11
%239 = load i32, i32* %20
%240 = icmp eq i32 %238, %239
br i1 %240, label %241, label %246
241: ; preds = %237
%242 = load i32, i32* %12
%243 = load i32, i32* %21
%244 = icmp eq i32 %242, %243
br i1 %244, label %245, label %246
245: ; preds = %241
store i32 1, i32* %3
br label %344
246: ; preds = %241, %237, %233, %229, %225, %221, %217
br label %343
247: ; preds = %181
%248 = load i32, i32* %6
%249 = load i32, i32* %15
%250 = icmp eq i32 %248, %249
br i1 %250, label %251, label %272
251: ; preds = %247
%252 = load i32, i32* %7
%253 = load i32, i32* %16
%254 = icmp eq i32 %252, %253
br i1 %254, label %255, label %272
255: ; preds = %251
%256 = load i32, i32* %8
%257 = load i32, i32* %17
%258 = icmp eq i32 %256, %257
br i1 %258, label %259, label %272
259: ; preds = %255
%260 = load i32, i32* %9
%261 = load i32, i32* %18
%262 = icmp eq i32 %260, %261
br i1 %262, label %263, label %272
263: ; preds = %259
%264 = load i32, i32* %10
%265 = load i32, i32* %19
%266 = icmp eq i32 %264, %265
br i1 %266, label %267, label %272
267: ; preds = %263
%268 = load i32, i32* %11
%269 = load i32, i32* %20
%270 = icmp eq i32 %268, %269
br i1 %270, label %271, label %272
271: ; preds = %267
store i32 1, i32* %3
br label %344
272: ; preds = %267, %263, %259, %255, %251, %247
br label %343
273: ; preds = %181
%274 = load i32, i32* %6
%275 = load i32, i32* %15
%276 = icmp eq i32 %274, %275
br i1 %276, label %277, label %294
277: ; preds = %273
%278 = load i32, i32* %7
%279 = load i32, i32* %16
%280 = icmp eq i32 %278, %279
br i1 %280, label %281, label %294
281: ; preds = %277
%282 = load i32, i32* %8
%283 = load i32, i32* %17
%284 = icmp eq i32 %282, %283
br i1 %284, label %285, label %294
285: ; preds = %281
%286 = load i32, i32* %9
%287 = load i32, i32* %18
%288 = icmp eq i32 %286, %287
br i1 %288, label %289, label %294
289: ; preds = %285
%290 = load i32, i32* %10
%291 = load i32, i32* %19
%292 = icmp eq i32 %290, %291
br i1 %292, label %293, label %294
293: ; preds = %289
store i32 1, i32* %3
br label %344
294: ; preds = %289, %285, %281, %277, %273
br label %343
295: ; preds = %181
%296 = load i32, i32* %6
%297 = load i32, i32* %15
%298 = icmp eq i32 %296, %297
br i1 %298, label %299, label %312
299: ; preds = %295
%300 = load i32, i32* %7
%301 = load i32, i32* %16
%302 = icmp eq i32 %300, %301
br i1 %302, label %303, label %312
303: ; preds = %299
%304 = load i32, i32* %8
%305 = load i32, i32* %17
%306 = icmp eq i32 %304, %305
br i1 %306, label %307, label %312
307: ; preds = %303
%308 = load i32, i32* %9
%309 = load i32, i32* %18
%310 = icmp eq i32 %308, %309
br i1 %310, label %311, label %312
311: ; preds = %307
store i32 1, i32* %3
br label %344
312: ; preds = %307, %303, %299, %295
br label %343
313: ; preds = %181
%314 = load i32, i32* %6
%315 = load i32, i32* %15
%316 = icmp eq i32 %314, %315
br i1 %316, label %317, label %326
317: ; preds = %313
%318 = load i32, i32* %7
%319 = load i32, i32* %16
%320 = icmp eq i32 %318, %319
br i1 %320, label %321, label %326
321: ; preds = %317
%322 = load i32, i32* %8
%323 = load i32, i32* %17
%324 = icmp eq i32 %322, %323
br i1 %324, label %325, label %326
325: ; preds = %321
store i32 1, i32* %3
br label %344
326: ; preds = %321, %317, %313
br label %343
327: ; preds = %181
%328 = load i32, i32* %6
%329 = load i32, i32* %15
%330 = icmp eq i32 %328, %329
br i1 %330, label %331, label %336
331: ; preds = %327
%332 = load i32, i32* %7
%333 = load i32, i32* %16
%334 = icmp eq i32 %332, %333
br i1 %334, label %335, label %336
335: ; preds = %331
store i32 1, i32* %3
br label %344
336: ; preds = %331, %327
br label %343
337: ; preds = %181
%338 = load i32, i32* %6
%339 = load i32, i32* %15
%340 = icmp eq i32 %338, %339
br i1 %340, label %341, label %342
341: ; preds = %337
store i32 1, i32* %3
br label %344
342: ; preds = %337
br label %343
343: ; preds = %342, %181, %336, %326, %312, %294, %272, %246, %216
store i32 0, i32* %3
br label %344
344: ; preds = %343, %341, %335, %325, %311, %293, %271, %245, %215, %166
%345 = load i32, i32* %3
ret i32 %345
}

LLVM IR (-O2):
@.str = [14 x i8] c"~uMask=%4.4x\0A\00"
define i32 @uIpv6InCIDR632(i8* %0, i8* %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%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 = bitcast i32* %3 to i8*
store i32 0, i32* %3
%21 = bitcast i32* %4 to i8*
store i32 0, i32* %4
%22 = bitcast i32* %5 to i8*
store i32 0, i32* %5
%23 = bitcast i32* %6 to i8*
store i32 0, i32* %6
%24 = bitcast i32* %7 to i8*
store i32 0, i32* %7
%25 = bitcast i32* %8 to i8*
store i32 0, i32* %8
%26 = bitcast i32* %9 to i8*
store i32 0, i32* %9
%27 = bitcast i32* %10 to i8*
store i32 0, i32* %10
%28 = bitcast i32* %11 to i8*
store i32 0, i32* %11
%29 = bitcast i32* %12 to i8*
store i32 0, i32* %12
%30 = bitcast i32* %13 to i8*
store i32 0, i32* %13
%31 = bitcast i32* %14 to i8*
store i32 0, i32* %14
%32 = bitcast i32* %15 to i8*
store i32 0, i32* %15
%33 = bitcast i32* %16 to i8*
store i32 0, i32* %16
%34 = bitcast i32* %17 to i8*
store i32 0, i32* %17
%35 = bitcast i32* %18 to i8*
store i32 0, i32* %18
%36 = bitcast i32* %19 to i8*
store i32 0, i32* %19
%37 = call i32 @uInIpv6Format32(i8* %0, i32* %3, i32* %4, i32* %5, i32* %6, i32* %7, i32* %8, i32* %9, i32* %10)
%38 = call i32 @uInCIDR6Format32(i8* %1, i32* %12, i32* %13, i32* %14, i32* %15, i32* %16, i32* %17, i32* %18, i32* %19, i32* %11)
%39 = load i32, i32* %11
%40 = add i32 %39, -113
%41 = icmp ult i32 %40, 15
br i1 %41, label %42, label %48
42: ; preds = %2
%43 = add nuw nsw i32 %39, -129
%44 = load i32, i32* %10
%45 = and i32 %44, %43
store i32 %45, i32* %10
%46 = load i32, i32* %19
%47 = and i32 %46, %43
store i32 %47, i32* %19
store i32 128, i32* %11
br label %106
48: ; preds = %2
%49 = add i32 %39, -97
%50 = icmp ult i32 %49, 15
br i1 %50, label %51, label %56
51: ; preds = %48
%52 = load i32, i32* %9
%53 = and i32 %52, %40
store i32 %53, i32* %9
%54 = load i32, i32* %18
%55 = and i32 %54, %40
store i32 %55, i32* %18
store i32 112, i32* %11
br label %106
56: ; preds = %48
%57 = add i32 %39, -81
%58 = icmp ult i32 %57, 15
br i1 %58, label %59, label %64
59: ; preds = %56
%60 = load i32, i32* %8
%61 = and i32 %60, %49
store i32 %61, i32* %8
%62 = load i32, i32* %17
%63 = and i32 %62, %49
store i32 %63, i32* %17
store i32 96, i32* %11
br label %106
64: ; preds = %56
%65 = add i32 %39, -65
%66 = icmp ult i32 %65, 15
br i1 %66, label %67, label %72
67: ; preds = %64
%68 = load i32, i32* %7
%69 = and i32 %68, %57
store i32 %69, i32* %7
%70 = load i32, i32* %16
%71 = and i32 %70, %57
store i32 %71, i32* %16
store i32 80, i32* %11
br label %106
72: ; preds = %64
%73 = add i32 %39, -49
%74 = icmp ult i32 %73, 15
br i1 %74, label %75, label %80
75: ; preds = %72
%76 = load i32, i32* %6
%77 = and i32 %76, %65
store i32 %77, i32* %6
%78 = load i32, i32* %15
%79 = and i32 %78, %65
store i32 %79, i32* %15
store i32 64, i32* %11
br label %106
80: ; preds = %72
%81 = add i32 %39, -33
%82 = icmp ult i32 %81, 15
br i1 %82, label %83, label %88
83: ; preds = %80
%84 = load i32, i32* %5
%85 = and i32 %84, %73
store i32 %85, i32* %5
%86 = load i32, i32* %14
%87 = and i32 %86, %73
store i32 %87, i32* %14
store i32 48, i32* %11
br label %106
88: ; preds = %80
%89 = add i32 %39, -17
%90 = icmp ult i32 %89, 15
br i1 %90, label %91, label %96
91: ; preds = %88
%92 = load i32, i32* %4
%93 = and i32 %92, %81
store i32 %93, i32* %4
%94 = load i32, i32* %13
%95 = and i32 %94, %81
store i32 %95, i32* %13
store i32 32, i32* %11
br label %106
96: ; preds = %88
%97 = add i32 %39, -1
%98 = icmp ult i32 %97, 15
br i1 %98, label %99, label %104
99: ; preds = %96
%100 = load i32, i32* %3
%101 = and i32 %100, %89
store i32 %101, i32* %3
%102 = load i32, i32* %12
%103 = and i32 %102, %89
store i32 %103, i32* %12
store i32 16, i32* %11
br label %106
104: ; preds = %96
%105 = icmp eq i32 %39, 0
br i1 %105, label %259, label %110
106: ; preds = %59, %75, %91, %99, %83, %67, %51, %42
%107 = phi i32 [ %40, %51 ], [ %43, %42 ], [ %49, %59 ], [ %57, %67 ], [ %65, %75 ], [ %73, %83 ], [ %81, %91 ], [ %89, %99 ]
%108 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0), i32 %107)
%109 = load i32, i32* %11
br label %110
110: ; preds = %104, %106
%111 = phi i32 [ %39, %104 ], [ %109, %106 ]
%112 = add i32 %111, -16
%113 = call i32 @llvm.fshl.i32(i32 %112, i32 %112, i32 28)
switch i32 %113, label %258 [
i32 7, label %114
i32 6, label %146
i32 5, label %174
i32 4, label %198
i32 3, label %218
i32 2, label %234
i32 1, label %246
i32 0, label %254
]
114: ; preds = %110
%115 = load i32, i32* %3
%116 = load i32, i32* %12
%117 = icmp eq i32 %115, %116
br i1 %117, label %118, label %258
118: ; preds = %114
%119 = load i32, i32* %4
%120 = load i32, i32* %13
%121 = icmp eq i32 %119, %120
br i1 %121, label %122, label %258
122: ; preds = %118
%123 = load i32, i32* %5
%124 = load i32, i32* %14
%125 = icmp eq i32 %123, %124
br i1 %125, label %126, label %258
126: ; preds = %122
%127 = load i32, i32* %6
%128 = load i32, i32* %15
%129 = icmp eq i32 %127, %128
br i1 %129, label %130, label %258
130: ; preds = %126
%131 = load i32, i32* %7
%132 = load i32, i32* %16
%133 = icmp eq i32 %131, %132
br i1 %133, label %134, label %258
134: ; preds = %130
%135 = load i32, i32* %8
%136 = load i32, i32* %17
%137 = icmp eq i32 %135, %136
br i1 %137, label %138, label %258
138: ; preds = %134
%139 = load i32, i32* %9
%140 = load i32, i32* %18
%141 = icmp eq i32 %139, %140
br i1 %141, label %142, label %258
142: ; preds = %138
%143 = load i32, i32* %10
%144 = load i32, i32* %19
%145 = icmp eq i32 %143, %144
br i1 %145, label %259, label %258
146: ; preds = %110
%147 = load i32, i32* %3
%148 = load i32, i32* %12
%149 = icmp eq i32 %147, %148
br i1 %149, label %150, label %258
150: ; preds = %146
%151 = load i32, i32* %4
%152 = load i32, i32* %13
%153 = icmp eq i32 %151, %152
br i1 %153, label %154, label %258
154: ; preds = %150
%155 = load i32, i32* %5
%156 = load i32, i32* %14
%157 = icmp eq i32 %155, %156
br i1 %157, label %158, label %258
158: ; preds = %154
%159 = load i32, i32* %6
%160 = load i32, i32* %15
%161 = icmp eq i32 %159, %160
br i1 %161, label %162, label %258
162: ; preds = %158
%163 = load i32, i32* %7
%164 = load i32, i32* %16
%165 = icmp eq i32 %163, %164
br i1 %165, label %166, label %258
166: ; preds = %162
%167 = load i32, i32* %8
%168 = load i32, i32* %17
%169 = icmp eq i32 %167, %168
br i1 %169, label %170, label %258
170: ; preds = %166
%171 = load i32, i32* %9
%172 = load i32, i32* %18
%173 = icmp eq i32 %171, %172
br i1 %173, label %259, label %258
174: ; preds = %110
%175 = load i32, i32* %3
%176 = load i32, i32* %12
%177 = icmp eq i32 %175, %176
br i1 %177, label %178, label %258
178: ; preds = %174
%179 = load i32, i32* %4
%180 = load i32, i32* %13
%181 = icmp eq i32 %179, %180
br i1 %181, label %182, label %258
182: ; preds = %178
%183 = load i32, i32* %5
%184 = load i32, i32* %14
%185 = icmp eq i32 %183, %184
br i1 %185, label %186, label %258
186: ; preds = %182
%187 = load i32, i32* %6
%188 = load i32, i32* %15
%189 = icmp eq i32 %187, %188
br i1 %189, label %190, label %258
190: ; preds = %186
%191 = load i32, i32* %7
%192 = load i32, i32* %16
%193 = icmp eq i32 %191, %192
br i1 %193, label %194, label %258
194: ; preds = %190
%195 = load i32, i32* %8
%196 = load i32, i32* %17
%197 = icmp eq i32 %195, %196
br i1 %197, label %259, label %258
198: ; preds = %110
%199 = load i32, i32* %3
%200 = load i32, i32* %12
%201 = icmp eq i32 %199, %200
br i1 %201, label %202, label %258
202: ; preds = %198
%203 = load i32, i32* %4
%204 = load i32, i32* %13
%205 = icmp eq i32 %203, %204
br i1 %205, label %206, label %258
206: ; preds = %202
%207 = load i32, i32* %5
%208 = load i32, i32* %14
%209 = icmp eq i32 %207, %208
br i1 %209, label %210, label %258
210: ; preds = %206
%211 = load i32, i32* %6
%212 = load i32, i32* %15
%213 = icmp eq i32 %211, %212
br i1 %213, label %214, label %258
214: ; preds = %210
%215 = load i32, i32* %7
%216 = load i32, i32* %16
%217 = icmp eq i32 %215, %216
br i1 %217, label %259, label %258
218: ; preds = %110
%219 = load i32, i32* %3
%220 = load i32, i32* %12
%221 = icmp eq i32 %219, %220
br i1 %221, label %222, label %258
222: ; preds = %218
%223 = load i32, i32* %4
%224 = load i32, i32* %13
%225 = icmp eq i32 %223, %224
br i1 %225, label %226, label %258
226: ; preds = %222
%227 = load i32, i32* %5
%228 = load i32, i32* %14
%229 = icmp eq i32 %227, %228
br i1 %229, label %230, label %258
230: ; preds = %226
%231 = load i32, i32* %6
%232 = load i32, i32* %15
%233 = icmp eq i32 %231, %232
br i1 %233, label %259, label %258
234: ; preds = %110
%235 = load i32, i32* %3
%236 = load i32, i32* %12
%237 = icmp eq i32 %235, %236
br i1 %237, label %238, label %258
238: ; preds = %234
%239 = load i32, i32* %4
%240 = load i32, i32* %13
%241 = icmp eq i32 %239, %240
br i1 %241, label %242, label %258
242: ; preds = %238
%243 = load i32, i32* %5
%244 = load i32, i32* %14
%245 = icmp eq i32 %243, %244
br i1 %245, label %259, label %258
246: ; preds = %110
%247 = load i32, i32* %3
%248 = load i32, i32* %12
%249 = icmp eq i32 %247, %248
br i1 %249, label %250, label %258
250: ; preds = %246
%251 = load i32, i32* %4
%252 = load i32, i32* %13
%253 = icmp eq i32 %251, %252
br i1 %253, label %259, label %258
254: ; preds = %110
%255 = load i32, i32* %3
%256 = load i32, i32* %12
%257 = icmp eq i32 %255, %256
br i1 %257, label %259, label %258
258: ; preds = %254, %246, %250, %234, %238, %242, %218, %222, %226, %230, %198, %202, %206, %210, %214, %174, %178, %182, %186, %190, %194, %146, %150, %154, %158, %162, %166, %170, %114, %118, %122, %126, %130, %134, %138, %142, %110
br label %259
259: ; preds = %254, %250, %242, %230, %214, %194, %170, %142, %104, %258
%260 = phi i32 [ 0, %258 ], [ 1, %104 ], [ 1, %142 ], [ 1, %170 ], [ 1, %194 ], [ 1, %214 ], [ 1, %230 ], [ 1, %242 ], [ 1, %250 ], [ 1, %254 ]
ret i32 %260
}