#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
unsigned int IFF_ALLMULTI;
unsigned int IFF_AUTOMEDIA;
unsigned int IFF_BROADCAST;
unsigned int IFF_DEBUG;
unsigned int IFF_DORMANT;
unsigned int IFF_DYNAMIC;
unsigned int IFF_ECHO;
unsigned int IFF_LOOPBACK;
unsigned int IFF_LOWER_UP;
unsigned int IFF_MASTER;
unsigned int IFF_MULTICAST;
unsigned int IFF_NOARP;
unsigned int IFF_NOTRAILERS;
unsigned int IFF_POINTOPOINT;
unsigned int IFF_PORTSEL;
unsigned int IFF_PROMISC;
unsigned int IFF_RUNNING;
unsigned int IFF_SLAVE;
unsigned int IFF_UP;
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
void print_link_flags(FILE *fp, unsigned flags, unsigned mdown) {
  fprintf(fp, "<");
  if (flags & IFF_UP && !(flags & IFF_RUNNING))
    fprintf(fp, "NO-CARRIER%s", flags ? "," : "");
  flags &= ~IFF_RUNNING;
  if (flags & IFF_LOOPBACK) {
    flags &= ~IFF_LOOPBACK;
    fprintf(fp,
            "LOOPBACK"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_BROADCAST) {
    flags &= ~IFF_BROADCAST;
    fprintf(fp,
            "BROADCAST"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_POINTOPOINT) {
    flags &= ~IFF_POINTOPOINT;
    fprintf(fp,
            "POINTOPOINT"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_MULTICAST) {
    flags &= ~IFF_MULTICAST;
    fprintf(fp,
            "MULTICAST"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_NOARP) {
    flags &= ~IFF_NOARP;
    fprintf(fp,
            "NOARP"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_ALLMULTI) {
    flags &= ~IFF_ALLMULTI;
    fprintf(fp,
            "ALLMULTI"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_PROMISC) {
    flags &= ~IFF_PROMISC;
    fprintf(fp,
            "PROMISC"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_MASTER) {
    flags &= ~IFF_MASTER;
    fprintf(fp,
            "MASTER"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_SLAVE) {
    flags &= ~IFF_SLAVE;
    fprintf(fp,
            "SLAVE"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_DEBUG) {
    flags &= ~IFF_DEBUG;
    fprintf(fp,
            "DEBUG"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_DYNAMIC) {
    flags &= ~IFF_DYNAMIC;
    fprintf(fp,
            "DYNAMIC"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_AUTOMEDIA) {
    flags &= ~IFF_AUTOMEDIA;
    fprintf(fp,
            "AUTOMEDIA"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_PORTSEL) {
    flags &= ~IFF_PORTSEL;
    fprintf(fp,
            "PORTSEL"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_NOTRAILERS) {
    flags &= ~IFF_NOTRAILERS;
    fprintf(fp,
            "NOTRAILERS"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_UP) {
    flags &= ~IFF_UP;
    fprintf(fp,
            "UP"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_LOWER_UP) {
    flags &= ~IFF_LOWER_UP;
    fprintf(fp,
            "LOWER_UP"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_DORMANT) {
    flags &= ~IFF_DORMANT;
    fprintf(fp,
            "DORMANT"
            "%s",
            flags ? "," : "");
  };
  if (flags & IFF_ECHO) {
    flags &= ~IFF_ECHO;
    fprintf(fp,
            "ECHO"
            "%s",
            flags ? "," : "");
  };
  if (flags)
    fprintf(fp, "%x", flags);
  if (mdown)
    fprintf(fp, ",M-DOWN");
  fprintf(fp, "> ");
}


x86 assembly (clang, -O0):
<print_link_flags>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xed3(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2e7a(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     1188 <print_link_flags+0x78>
mov    -0xc(%rbp),%eax
mov    0x2e6d(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
jne    1188 <print_link_flags+0x78>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xf62(%rip),%rdx
lea    0xe9c(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xe81(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2e31(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    0x2e4c(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     11eb <print_link_flags+0xdb>
mov    0x2e3a(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xeff(%rip),%rdx
lea    0xe39(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xe2d(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2d83(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     123c <print_link_flags+0x12c>
mov    0x2d71(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xeae(%rip),%rdx
lea    0xde8(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xde7(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2d82(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     128d <print_link_flags+0x17d>
mov    0x2d70(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xe5d(%rip),%rdx
lea    0xd97(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xda2(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2d39(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     12de <print_link_flags+0x1ce>
mov    0x2d27(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xe0c(%rip),%rdx
lea    0xd46(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xd5f(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2cf0(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     132f <print_link_flags+0x21f>
mov    0x2cde(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xdbb(%rip),%rdx
lea    0xcf5(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xd1a(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2c4f(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     1380 <print_link_flags+0x270>
mov    0x2c3d(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xd6a(%rip),%rdx
lea    0xca4(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xcd1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2bde(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     13d1 <print_link_flags+0x2c1>
mov    0x2bcc(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xd19(%rip),%rdx
lea    0xc53(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xc8b(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2b95(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     1422 <print_link_flags+0x312>
mov    0x2b83(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xcc8(%rip),%rdx
lea    0xc02(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xc44(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2b84(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     1473 <print_link_flags+0x363>
mov    0x2b72(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xc77(%rip),%rdx
lea    0xbb1(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xbfc(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2b23(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     14c4 <print_link_flags+0x3b4>
mov    0x2b11(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xc26(%rip),%rdx
lea    0xb60(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xbb3(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2ada(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     1515 <print_link_flags+0x405>
mov    0x2ac8(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xbd5(%rip),%rdx
lea    0xb0f(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xb6a(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2a71(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     1566 <print_link_flags+0x456>
mov    0x2a5f(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xb84(%rip),%rdx
lea    0xabe(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xb23(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x29e8(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     15b7 <print_link_flags+0x4a7>
mov    0x29d6(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xb33(%rip),%rdx
lea    0xa6d(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xade(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2987(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     1608 <print_link_flags+0x4f8>
mov    0x2975(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xae2(%rip),%rdx
lea    0xa1c(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xa97(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x29a6(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     1659 <print_link_flags+0x549>
mov    0x2994(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xa91(%rip),%rdx
lea    0x9cb(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xa59(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x291d(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     16aa <print_link_flags+0x59a>
mov    0x290b(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0xa40(%rip),%rdx
lea    0x97a(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0xa02(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x2944(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     16fb <print_link_flags+0x5eb>
mov    0x2932(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0x9ef(%rip),%rdx
lea    0x929(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0x9bc(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%eax
mov    0x285b(%rip),%rcx
and    (%rcx),%eax
cmp    $0x0,%eax
je     174c <print_link_flags+0x63c>
mov    0x2849(%rip),%rax
mov    (%rax),%eax
xor    $0xffffffff,%eax
and    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%ecx
lea    0x99e(%rip),%rdx
lea    0x8d8(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0x975(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
cmpl   $0x0,-0xc(%rbp)
je     176b <print_link_flags+0x65b>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%edx
lea    0x95d(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
cmpl   $0x0,-0x10(%rbp)
je     1787 <print_link_flags+0x677>
mov    -0x8(%rbp),%rdi
lea    0x944(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x93a(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_link_flags>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %edx,%r14d
mov    %esi,%ebx
mov    %rdi,%r15
mov    $0x3c,%edi
mov    %r15,%rsi
call   1030 <fputc@plt>
mov    0x2e64(%rip),%r12
test   %ebx,(%r12)
je     118a <print_link_flags+0x5a>
mov    0x2e5f(%rip),%rax
test   %ebx,(%rax)
jne    118a <print_link_flags+0x5a>
test   %ebx,%ebx
lea    0xf5e(%rip),%rax
lea    0xe98(%rip),%rdx
cmove  %rax,%rdx
lea    0xe80(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2e2f(%rip),%rax
mov    (%rax),%ebp
not    %ebp
and    %ebx,%ebp
mov    0x2e52(%rip),%rax
mov    (%rax),%eax
test   %eax,%ebp
je     11cb <print_link_flags+0x9b>
not    %eax
and    %eax,%ebp
lea    0xf1d(%rip),%rax
lea    0xe57(%rip),%rdx
cmove  %rax,%rdx
lea    0xe4e(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2da6(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     11ff <print_link_flags+0xcf>
not    %eax
and    %eax,%ebp
lea    0xee9(%rip),%rax
lea    0xe23(%rip),%rdx
cmove  %rax,%rdx
lea    0xe25(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2dc2(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     1233 <print_link_flags+0x103>
not    %eax
and    %eax,%ebp
lea    0xeb5(%rip),%rax
lea    0xdef(%rip),%rdx
cmove  %rax,%rdx
lea    0xdfd(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2d96(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     1267 <print_link_flags+0x137>
not    %eax
and    %eax,%ebp
lea    0xe81(%rip),%rax
lea    0xdbb(%rip),%rdx
cmove  %rax,%rdx
lea    0xdd7(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2d6a(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     129b <print_link_flags+0x16b>
not    %eax
and    %eax,%ebp
lea    0xe4d(%rip),%rax
lea    0xd87(%rip),%rdx
cmove  %rax,%rdx
lea    0xdaf(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2ce6(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     12cf <print_link_flags+0x19f>
not    %eax
and    %eax,%ebp
lea    0xe19(%rip),%rax
lea    0xd53(%rip),%rdx
cmove  %rax,%rdx
lea    0xd83(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2c92(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     1303 <print_link_flags+0x1d3>
not    %eax
and    %eax,%ebp
lea    0xde5(%rip),%rax
lea    0xd1f(%rip),%rdx
cmove  %rax,%rdx
lea    0xd5a(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2c66(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     1337 <print_link_flags+0x207>
not    %eax
and    %eax,%ebp
lea    0xdb1(%rip),%rax
lea    0xceb(%rip),%rdx
cmove  %rax,%rdx
lea    0xd30(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2c72(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     136b <print_link_flags+0x23b>
not    %eax
and    %eax,%ebp
lea    0xd7d(%rip),%rax
lea    0xcb7(%rip),%rdx
cmove  %rax,%rdx
lea    0xd05(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2c2e(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     139f <print_link_flags+0x26f>
not    %eax
and    %eax,%ebp
lea    0xd49(%rip),%rax
lea    0xc83(%rip),%rdx
cmove  %rax,%rdx
lea    0xcd9(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2c02(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     13d3 <print_link_flags+0x2a3>
not    %eax
and    %eax,%ebp
lea    0xd15(%rip),%rax
lea    0xc4f(%rip),%rdx
cmove  %rax,%rdx
lea    0xcad(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2bb6(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     1407 <print_link_flags+0x2d7>
not    %eax
and    %eax,%ebp
lea    0xce1(%rip),%rax
lea    0xc1b(%rip),%rdx
cmove  %rax,%rdx
lea    0xc83(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2b4a(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     143b <print_link_flags+0x30b>
not    %eax
and    %eax,%ebp
lea    0xcad(%rip),%rax
lea    0xbe7(%rip),%rdx
cmove  %rax,%rdx
lea    0xc5b(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2b06(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     146f <print_link_flags+0x33f>
not    %eax
and    %eax,%ebp
lea    0xc79(%rip),%rax
lea    0xbb3(%rip),%rdx
cmove  %rax,%rdx
lea    0xc31(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    (%r12),%eax
test   %ebp,%eax
je     149e <print_link_flags+0x36e>
not    %eax
and    %eax,%ebp
lea    0xc4a(%rip),%rax
lea    0xb84(%rip),%rdx
cmove  %rax,%rdx
lea    0xc15(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2adb(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     14d2 <print_link_flags+0x3a2>
not    %eax
and    %eax,%ebp
lea    0xc16(%rip),%rax
lea    0xb50(%rip),%rdx
cmove  %rax,%rdx
lea    0xbdb(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2b1f(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     1506 <print_link_flags+0x3d6>
not    %eax
and    %eax,%ebp
lea    0xbe2(%rip),%rax
lea    0xb1c(%rip),%rdx
cmove  %rax,%rdx
lea    0xbb2(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
mov    0x2a53(%rip),%rax
mov    (%rax),%eax
test   %ebp,%eax
je     153a <print_link_flags+0x40a>
not    %eax
and    %eax,%ebp
lea    0xbae(%rip),%rax
lea    0xae8(%rip),%rdx
cmove  %rax,%rdx
lea    0xb88(%rip),%rsi
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <fprintf@plt>
test   %ebp,%ebp
je     1551 <print_link_flags+0x421>
lea    0xb7a(%rip),%rsi
mov    %r15,%rdi
mov    %ebp,%edx
xor    %eax,%eax
call   1040 <fprintf@plt>
test   %r14d,%r14d
je     156f <print_link_flags+0x43f>
lea    0xb65(%rip),%rdi
mov    $0x7,%esi
mov    $0x1,%edx
mov    %r15,%rcx
call   1050 <fwrite@plt>
lea    0xb54(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%edx
mov    %r15,%rcx
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
jmp    1050 <fwrite@plt>

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

LLVM IR (-O2):
@IFF_UP = global i32 0
@IFF_RUNNING = global i32 0
@.str.1 = [13 x i8] c"NO-CARRIER%s\00"
@.str.2 = [2 x i8] c",\00"
@.str.3 = [1 x i8] zeroinitializer
@IFF_LOOPBACK = global i32 0
@.str.4 = [11 x i8] c"LOOPBACK%s\00"
@IFF_BROADCAST = global i32 0
@.str.5 = [12 x i8] c"BROADCAST%s\00"
@IFF_POINTOPOINT = global i32 0
@.str.6 = [14 x i8] c"POINTOPOINT%s\00"
@IFF_MULTICAST = global i32 0
@.str.7 = [12 x i8] c"MULTICAST%s\00"
@IFF_NOARP = global i32 0
@.str.8 = [8 x i8] c"NOARP%s\00"
@IFF_ALLMULTI = global i32 0
@.str.9 = [11 x i8] c"ALLMULTI%s\00"
@IFF_PROMISC = global i32 0
@.str.10 = [10 x i8] c"PROMISC%s\00"
@IFF_MASTER = global i32 0
@.str.11 = [9 x i8] c"MASTER%s\00"
@IFF_SLAVE = global i32 0
@.str.12 = [8 x i8] c"SLAVE%s\00"
@IFF_DEBUG = global i32 0
@.str.13 = [8 x i8] c"DEBUG%s\00"
@IFF_DYNAMIC = global i32 0
@.str.14 = [10 x i8] c"DYNAMIC%s\00"
@IFF_AUTOMEDIA = global i32 0
@.str.15 = [12 x i8] c"AUTOMEDIA%s\00"
@IFF_PORTSEL = global i32 0
@.str.16 = [10 x i8] c"PORTSEL%s\00"
@IFF_NOTRAILERS = global i32 0
@.str.17 = [13 x i8] c"NOTRAILERS%s\00"
@.str.18 = [5 x i8] c"UP%s\00"
@IFF_LOWER_UP = global i32 0
@.str.19 = [11 x i8] c"LOWER_UP%s\00"
@IFF_DORMANT = global i32 0
@.str.20 = [10 x i8] c"DORMANT%s\00"
@IFF_ECHO = global i32 0
@.str.21 = [7 x i8] c"ECHO%s\00"
@.str.22 = [3 x i8] c"%x\00"
@.str.23 = [8 x i8] c",M-DOWN\00"
@.str.24 = [3 x i8] c"> \00"
define void @print_link_flags(i32* %0, i32 %1, i32 %2) {
%4 = tail call i32 @fputc(i32 60, i32* %0)
%5 = load i32, i32* @IFF_UP
%6 = and i32 %5, %1
%7 = icmp eq i32 %6, 0
br i1 %7, label %16, label %8
8: ; preds = %3
%9 = load i32, i32* @IFF_RUNNING
%10 = and i32 %9, %1
%11 = icmp eq i32 %10, 0
br i1 %11, label %12, label %16
12: ; preds = %8
%13 = icmp eq i32 %1, 0
%14 = select i1 %13, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%15 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0), i8* %14)
br label %16
16: ; preds = %12, %8, %3
%17 = load i32, i32* @IFF_RUNNING
%18 = xor i32 %17, -1
%19 = and i32 %18, %1
%20 = load i32, i32* @IFF_LOOPBACK
%21 = and i32 %19, %20
%22 = icmp eq i32 %21, 0
br i1 %22, label %29, label %23
23: ; preds = %16
%24 = xor i32 %20, -1
%25 = and i32 %19, %24
%26 = icmp eq i32 %25, 0
%27 = select i1 %26, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%28 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.4, i64 0, i64 0), i8* %27)
br label %29
29: ; preds = %23, %16
%30 = phi i32 [ %25, %23 ], [ %19, %16 ]
%31 = load i32, i32* @IFF_BROADCAST
%32 = and i32 %31, %30
%33 = icmp eq i32 %32, 0
br i1 %33, label %40, label %34
34: ; preds = %29
%35 = xor i32 %31, -1
%36 = and i32 %30, %35
%37 = icmp eq i32 %36, 0
%38 = select i1 %37, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%39 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), i8* %38)
br label %40
40: ; preds = %34, %29
%41 = phi i32 [ %36, %34 ], [ %30, %29 ]
%42 = load i32, i32* @IFF_POINTOPOINT
%43 = and i32 %42, %41
%44 = icmp eq i32 %43, 0
br i1 %44, label %51, label %45
45: ; preds = %40
%46 = xor i32 %42, -1
%47 = and i32 %41, %46
%48 = icmp eq i32 %47, 0
%49 = select i1 %48, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%50 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.6, i64 0, i64 0), i8* %49)
br label %51
51: ; preds = %45, %40
%52 = phi i32 [ %47, %45 ], [ %41, %40 ]
%53 = load i32, i32* @IFF_MULTICAST
%54 = and i32 %53, %52
%55 = icmp eq i32 %54, 0
br i1 %55, label %62, label %56
56: ; preds = %51
%57 = xor i32 %53, -1
%58 = and i32 %52, %57
%59 = icmp eq i32 %58, 0
%60 = select i1 %59, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%61 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.7, i64 0, i64 0), i8* %60)
br label %62
62: ; preds = %56, %51
%63 = phi i32 [ %58, %56 ], [ %52, %51 ]
%64 = load i32, i32* @IFF_NOARP
%65 = and i32 %64, %63
%66 = icmp eq i32 %65, 0
br i1 %66, label %73, label %67
67: ; preds = %62
%68 = xor i32 %64, -1
%69 = and i32 %63, %68
%70 = icmp eq i32 %69, 0
%71 = select i1 %70, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%72 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i8* %71)
br label %73
73: ; preds = %67, %62
%74 = phi i32 [ %69, %67 ], [ %63, %62 ]
%75 = load i32, i32* @IFF_ALLMULTI
%76 = and i32 %75, %74
%77 = icmp eq i32 %76, 0
br i1 %77, label %84, label %78
78: ; preds = %73
%79 = xor i32 %75, -1
%80 = and i32 %74, %79
%81 = icmp eq i32 %80, 0
%82 = select i1 %81, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%83 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0), i8* %82)
br label %84
84: ; preds = %78, %73
%85 = phi i32 [ %80, %78 ], [ %74, %73 ]
%86 = load i32, i32* @IFF_PROMISC
%87 = and i32 %86, %85
%88 = icmp eq i32 %87, 0
br i1 %88, label %95, label %89
89: ; preds = %84
%90 = xor i32 %86, -1
%91 = and i32 %85, %90
%92 = icmp eq i32 %91, 0
%93 = select i1 %92, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%94 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0), i8* %93)
br label %95
95: ; preds = %89, %84
%96 = phi i32 [ %91, %89 ], [ %85, %84 ]
%97 = load i32, i32* @IFF_MASTER
%98 = and i32 %97, %96
%99 = icmp eq i32 %98, 0
br i1 %99, label %106, label %100
100: ; preds = %95
%101 = xor i32 %97, -1
%102 = and i32 %96, %101
%103 = icmp eq i32 %102, 0
%104 = select i1 %103, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%105 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), i8* %104)
br label %106
106: ; preds = %100, %95
%107 = phi i32 [ %102, %100 ], [ %96, %95 ]
%108 = load i32, i32* @IFF_SLAVE
%109 = and i32 %108, %107
%110 = icmp eq i32 %109, 0
br i1 %110, label %117, label %111
111: ; preds = %106
%112 = xor i32 %108, -1
%113 = and i32 %107, %112
%114 = icmp eq i32 %113, 0
%115 = select i1 %114, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%116 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0), i8* %115)
br label %117
117: ; preds = %111, %106
%118 = phi i32 [ %113, %111 ], [ %107, %106 ]
%119 = load i32, i32* @IFF_DEBUG
%120 = and i32 %119, %118
%121 = icmp eq i32 %120, 0
br i1 %121, label %128, label %122
122: ; preds = %117
%123 = xor i32 %119, -1
%124 = and i32 %118, %123
%125 = icmp eq i32 %124, 0
%126 = select i1 %125, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%127 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.13, i64 0, i64 0), i8* %126)
br label %128
128: ; preds = %122, %117
%129 = phi i32 [ %124, %122 ], [ %118, %117 ]
%130 = load i32, i32* @IFF_DYNAMIC
%131 = and i32 %130, %129
%132 = icmp eq i32 %131, 0
br i1 %132, label %139, label %133
133: ; preds = %128
%134 = xor i32 %130, -1
%135 = and i32 %129, %134
%136 = icmp eq i32 %135, 0
%137 = select i1 %136, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%138 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.14, i64 0, i64 0), i8* %137)
br label %139
139: ; preds = %133, %128
%140 = phi i32 [ %135, %133 ], [ %129, %128 ]
%141 = load i32, i32* @IFF_AUTOMEDIA
%142 = and i32 %141, %140
%143 = icmp eq i32 %142, 0
br i1 %143, label %150, label %144
144: ; preds = %139
%145 = xor i32 %141, -1
%146 = and i32 %140, %145
%147 = icmp eq i32 %146, 0
%148 = select i1 %147, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%149 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.15, i64 0, i64 0), i8* %148)
br label %150
150: ; preds = %144, %139
%151 = phi i32 [ %146, %144 ], [ %140, %139 ]
%152 = load i32, i32* @IFF_PORTSEL
%153 = and i32 %152, %151
%154 = icmp eq i32 %153, 0
br i1 %154, label %161, label %155
155: ; preds = %150
%156 = xor i32 %152, -1
%157 = and i32 %151, %156
%158 = icmp eq i32 %157, 0
%159 = select i1 %158, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%160 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), i8* %159)
br label %161
161: ; preds = %155, %150
%162 = phi i32 [ %157, %155 ], [ %151, %150 ]
%163 = load i32, i32* @IFF_NOTRAILERS
%164 = and i32 %163, %162
%165 = icmp eq i32 %164, 0
br i1 %165, label %172, label %166
166: ; preds = %161
%167 = xor i32 %163, -1
%168 = and i32 %162, %167
%169 = icmp eq i32 %168, 0
%170 = select i1 %169, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%171 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i64 0, i64 0), i8* %170)
br label %172
172: ; preds = %166, %161
%173 = phi i32 [ %168, %166 ], [ %162, %161 ]
%174 = load i32, i32* @IFF_UP
%175 = and i32 %174, %173
%176 = icmp eq i32 %175, 0
br i1 %176, label %183, label %177
177: ; preds = %172
%178 = xor i32 %174, -1
%179 = and i32 %173, %178
%180 = icmp eq i32 %179, 0
%181 = select i1 %180, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%182 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), i8* %181)
br label %183
183: ; preds = %177, %172
%184 = phi i32 [ %179, %177 ], [ %173, %172 ]
%185 = load i32, i32* @IFF_LOWER_UP
%186 = and i32 %185, %184
%187 = icmp eq i32 %186, 0
br i1 %187, label %194, label %188
188: ; preds = %183
%189 = xor i32 %185, -1
%190 = and i32 %184, %189
%191 = icmp eq i32 %190, 0
%192 = select i1 %191, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%193 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.19, i64 0, i64 0), i8* %192)
br label %194
194: ; preds = %188, %183
%195 = phi i32 [ %190, %188 ], [ %184, %183 ]
%196 = load i32, i32* @IFF_DORMANT
%197 = and i32 %196, %195
%198 = icmp eq i32 %197, 0
br i1 %198, label %205, label %199
199: ; preds = %194
%200 = xor i32 %196, -1
%201 = and i32 %195, %200
%202 = icmp eq i32 %201, 0
%203 = select i1 %202, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%204 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0), i8* %203)
br label %205
205: ; preds = %199, %194
%206 = phi i32 [ %201, %199 ], [ %195, %194 ]
%207 = load i32, i32* @IFF_ECHO
%208 = and i32 %207, %206
%209 = icmp eq i32 %208, 0
br i1 %209, label %216, label %210
210: ; preds = %205
%211 = xor i32 %207, -1
%212 = and i32 %206, %211
%213 = icmp eq i32 %212, 0
%214 = select i1 %213, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)
%215 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.21, i64 0, i64 0), i8* %214)
br label %216
216: ; preds = %210, %205
%217 = phi i32 [ %212, %210 ], [ %206, %205 ]
%218 = icmp eq i32 %217, 0
br i1 %218, label %221, label %219
219: ; preds = %216
%220 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.22, i64 0, i64 0), i32 %217)
br label %221
221: ; preds = %219, %216
%222 = icmp eq i32 %2, 0
br i1 %222, label %225, label %223
223: ; preds = %221
%224 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.23, i64 0, i64 0), i64 7, i64 1, i32* %0)
br label %225
225: ; preds = %223, %221
%226 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0), i64 2, i64 1, i32* %0)
ret void
}