#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*/ arphrd_names;

/* Variables and functions */
#define ARPHRD_ADAPT 186
#define ARPHRD_APPLETLK 185
#define ARPHRD_ARCNET 184
#define ARPHRD_ASH 183
#define ARPHRD_ATM 182
#define ARPHRD_AX25 181
#define ARPHRD_BIF 180
#define ARPHRD_CAIF 179
#define ARPHRD_CAN 178
#define ARPHRD_CHAOS 177
#define ARPHRD_CSLIP 176
#define ARPHRD_CSLIP6 175
#define ARPHRD_DDCMP 174
#define ARPHRD_DLCI 173
#define ARPHRD_ECONET 172
#define ARPHRD_EETHER 171
#define ARPHRD_ETHER 170
#define ARPHRD_FCAL 169
#define ARPHRD_FCFABRIC 168
#define ARPHRD_FCPL 167
#define ARPHRD_FCPP 166
#define ARPHRD_FDDI 165
#define ARPHRD_FRAD 164
#define ARPHRD_HDLC 163
#define ARPHRD_HIPPI 162
#define ARPHRD_HWX25 161
#define ARPHRD_IEEE1394 160
#define ARPHRD_IEEE802 159
#define ARPHRD_IEEE80211 158
#define ARPHRD_IEEE80211_PRISM 157
#define ARPHRD_IEEE80211_RADIOTAP 156
#define ARPHRD_IEEE802154 155
#define ARPHRD_IEEE802_TR 154
#define ARPHRD_INFINIBAND 153
#define ARPHRD_IP6GRE 152
#define ARPHRD_IPDDP 151
#define ARPHRD_IPGRE 150
#define ARPHRD_IRDA 149
#define ARPHRD_LAPB 148
#define ARPHRD_LOCALTLK 147
#define ARPHRD_LOOPBACK 146
#define ARPHRD_METRICOM 145
#define ARPHRD_NONE 144
#define ARPHRD_PHONET 143
#define ARPHRD_PHONET_PIPE 142
#define ARPHRD_PIMREG 141
#define ARPHRD_PPP 140
#define ARPHRD_PRONET 139
#define ARPHRD_RAWHDLC 138
#define ARPHRD_ROSE 137
#define ARPHRD_RSRVD 136
#define ARPHRD_SIT 135
#define ARPHRD_SKIP 134
#define ARPHRD_SLIP 133
#define ARPHRD_SLIP6 132
#define ARPHRD_TUNNEL 131
#define ARPHRD_TUNNEL6 130
#define ARPHRD_VOID 129
#define ARPHRD_X25 128
int /*<<< orphan*/ snprintf(char *, int, char *, int);
const char *ll_type_n2a(int type, char *buf, int len) {
  static const struct {
    int type;
    const char *name;
  } arphrd_names[] = {
      {0, "generic"},
      {ARPHRD_ETHER, "ether"},
      {ARPHRD_EETHER, "eether"},
      {ARPHRD_AX25, "ax25"},
      {ARPHRD_PRONET, "pronet"},
      {ARPHRD_CHAOS, "chaos"},
      {ARPHRD_IEEE802, "ieee802"},
      {ARPHRD_ARCNET, "arcnet"},
      {ARPHRD_APPLETLK, "atalk"},
      {ARPHRD_DLCI, "dlci"},
      {ARPHRD_ATM, "atm"},
      {ARPHRD_METRICOM, "metricom"},
      {ARPHRD_IEEE1394, "ieee1394"},
      {ARPHRD_INFINIBAND, "infiniband"},
      {ARPHRD_SLIP, "slip"},
      {ARPHRD_CSLIP, "cslip"},
      {ARPHRD_SLIP6, "slip6"},
      {ARPHRD_CSLIP6, "cslip6"},
      {ARPHRD_RSRVD, "rsrvd"},
      {ARPHRD_ADAPT, "adapt"},
      {ARPHRD_ROSE, "rose"},
      {ARPHRD_X25, "x25"},
      {ARPHRD_HWX25, "hwx25"},
      {ARPHRD_CAN, "can"},
      {ARPHRD_PPP, "ppp"},
      {ARPHRD_HDLC, "hdlc"},
      {ARPHRD_LAPB, "lapb"},
      {ARPHRD_DDCMP, "ddcmp"},
      {ARPHRD_RAWHDLC, "rawhdlc"},
      {ARPHRD_TUNNEL, "ipip"},
      {ARPHRD_TUNNEL6, "tunnel6"},
      {ARPHRD_FRAD, "frad"},
      {ARPHRD_SKIP, "skip"},
      {ARPHRD_LOOPBACK, "loopback"},
      {ARPHRD_LOCALTLK, "ltalk"},
      {ARPHRD_FDDI, "fddi"},
      {ARPHRD_BIF, "bif"},
      {ARPHRD_SIT, "sit"},
      {ARPHRD_IPDDP, "ip/ddp"},
      {ARPHRD_IPGRE, "gre"},
      {ARPHRD_PIMREG, "pimreg"},
      {ARPHRD_HIPPI, "hippi"},
      {ARPHRD_ASH, "ash"},
      {ARPHRD_ECONET, "econet"},
      {ARPHRD_IRDA, "irda"},
      {ARPHRD_FCPP, "fcpp"},
      {ARPHRD_FCAL, "fcal"},
      {ARPHRD_FCPL, "fcpl"},
      {ARPHRD_FCFABRIC, "fcfb0"},
      {ARPHRD_FCFABRIC + 1, "fcfb1"},
      {ARPHRD_FCFABRIC + 2, "fcfb2"},
      {ARPHRD_FCFABRIC + 3, "fcfb3"},
      {ARPHRD_FCFABRIC + 4, "fcfb4"},
      {ARPHRD_FCFABRIC + 5, "fcfb5"},
      {ARPHRD_FCFABRIC + 6, "fcfb6"},
      {ARPHRD_FCFABRIC + 7, "fcfb7"},
      {ARPHRD_FCFABRIC + 8, "fcfb8"},
      {ARPHRD_FCFABRIC + 9, "fcfb9"},
      {ARPHRD_FCFABRIC + 10, "fcfb10"},
      {ARPHRD_FCFABRIC + 11, "fcfb11"},
      {ARPHRD_FCFABRIC + 12, "fcfb12"},
      {ARPHRD_IEEE802_TR, "tr"},
      {ARPHRD_IEEE80211, "ieee802.11"},
      {ARPHRD_IEEE80211_PRISM, "ieee802.11/prism"},
      {ARPHRD_IEEE80211_RADIOTAP, "ieee802.11/radiotap"},
      {ARPHRD_IEEE802154, "ieee802.15.4"},
      {ARPHRD_PHONET, "phonet"},
      {ARPHRD_PHONET_PIPE, "phonet_pipe"},
      {ARPHRD_CAIF, "caif"},
      {ARPHRD_IP6GRE, "gre6"},
      {ARPHRD_NONE, "none"},
      {ARPHRD_VOID, "void"},
  };
  int i;
  for (i = 0; i < sizeof(arphrd_names) / sizeof(arphrd_names[0]); i++) {
    if (arphrd_names[i].type == type)
      return arphrd_names[i].name;
  }
  snprintf(buf, len, "[%d]", type);
  return buf;
}


x86 assembly (clang, -O0):
<ll_type_n2a>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0xc(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
movslq -0x20(%rbp),%rax
cmp    $0x48,%rax
jae    1186 <ll_type_n2a+0x76>
movslq -0x20(%rbp),%rcx
lea    0x285e(%rip),%rax
shl    $0x4,%rcx
add    %rcx,%rax
mov    (%rax),%eax
cmp    -0xc(%rbp),%eax
jne    1173 <ll_type_n2a+0x63>
movslq -0x20(%rbp),%rcx
lea    0x2841(%rip),%rax
shl    $0x4,%rcx
add    %rcx,%rax
mov    0x8(%rax),%rax
mov    %rax,-0x8(%rbp)
jmp    11a4 <ll_type_n2a+0x94>
jmp    1178 <ll_type_n2a+0x68>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1129 <ll_type_n2a+0x19>
mov    -0x18(%rbp),%rdi
mov    -0x1c(%rbp),%esi
mov    -0xc(%rbp),%ecx
lea    0x1026(%rip),%rdx
call   1030 <snprintf@plt>
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ll_type_n2a>:
push   %rbx
mov    %rsi,%rbx
mov    %edi,%ecx
lea    0x28b3(%rip),%rsi
xor    %eax,%eax
nop
cmp    %ecx,-0x30(%rsi)
je     1167 <ll_type_n2a+0x57>
cmp    %ecx,-0x20(%rsi)
je     1157 <ll_type_n2a+0x47>
cmp    %ecx,-0x10(%rsi)
je     115d <ll_type_n2a+0x4d>
cmp    %ecx,(%rsi)
je     1163 <ll_type_n2a+0x53>
add    $0x4,%rax
add    $0x40,%rsi
cmp    $0x48,%rax
jne    1120 <ll_type_n2a+0x10>
lea    0x1075(%rip),%rax
mov    %rbx,%rdi
mov    %edx,%esi
mov    %rax,%rdx
call   1030 <snprintf@plt>
jmp    1179 <ll_type_n2a+0x69>
add    $0x1,%rax
jmp    1167 <ll_type_n2a+0x57>
add    $0x2,%rax
jmp    1167 <ll_type_n2a+0x57>
add    $0x3,%rax
mov    %eax,%eax
shl    $0x4,%rax
lea    0x282c(%rip),%rcx
mov    0x8(%rax,%rcx,1),%rbx
mov    %rbx,%rax
pop    %rbx
ret

LLVM IR (-O0):
%struct.anon = type { i32, i8* }
@ll_type_n2a.arphrd_names = internal constant [72 x %struct.anon] [%struct.anon { i32 0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0) }, %struct.anon { i32 170, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0) }, %struct.anon { i32 171, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i32 0, i32 0) }, %struct.anon { i32 181, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i32 0, i32 0) }, %struct.anon { i32 139, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i32 0, i32 0) }, %struct.anon { i32 177, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0) }, %struct.anon { i32 159, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i32 0, i32 0) }, %struct.anon { i32 184, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i32 0, i32 0) }, %struct.anon { i32 185, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i32 0, i32 0) }, %struct.anon { i32 173, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i32 0, i32 0) }, %struct.anon { i32 182, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i32 0, i32 0) }, %struct.anon { i32 145, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i32 0, i32 0) }, %struct.anon { i32 160, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i32 0, i32 0) }, %struct.anon { i32 153, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i32 0, i32 0) }, %struct.anon { i32 133, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i32 0, i32 0) }, %struct.anon { i32 176, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i32 0, i32 0) }, %struct.anon { i32 132, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i32 0, i32 0) }, %struct.anon { i32 175, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i32 0, i32 0) }, %struct.anon { i32 136, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i32 0, i32 0) }, %struct.anon { i32 186, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i32 0, i32 0) }, %struct.anon { i32 137, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i32 0, i32 0) }, %struct.anon { i32 128, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i32 0, i32 0) }, %struct.anon { i32 161, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i32 0, i32 0) }, %struct.anon { i32 178, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i32 0, i32 0) }, %struct.anon { i32 140, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i32 0, i32 0) }, %struct.anon { i32 163, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i32 0, i32 0) }, %struct.anon { i32 148, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i32 0, i32 0) }, %struct.anon { i32 174, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i32 0, i32 0) }, %struct.anon { i32 138, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i32 0, i32 0) }, %struct.anon { i32 131, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.29, i32 0, i32 0) }, %struct.anon { i32 130, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i32 0, i32 0) }, %struct.anon { i32 164, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.31, i32 0, i32 0) }, %struct.anon { i32 134, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i32 0, i32 0) }, %struct.anon { i32 146, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.33, i32 0, i32 0) }, %struct.anon { i32 147, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i32 0, i32 0) }, %struct.anon { i32 165, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.35, i32 0, i32 0) }, %struct.anon { i32 180, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.36, i32 0, i32 0) }, %struct.anon { i32 135, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i32 0, i32 0) }, %struct.anon { i32 151, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i32 0, i32 0) }, %struct.anon { i32 150, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.39, i32 0, i32 0) }, %struct.anon { i32 141, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.40, i32 0, i32 0) }, %struct.anon { i32 162, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.41, i32 0, i32 0) }, %struct.anon { i32 183, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.42, i32 0, i32 0) }, %struct.anon { i32 172, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.43, i32 0, i32 0) }, %struct.anon { i32 149, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i32 0, i32 0) }, %struct.anon { i32 166, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.45, i32 0, i32 0) }, %struct.anon { i32 169, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.46, i32 0, i32 0) }, %struct.anon { i32 167, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.47, i32 0, i32 0) }, %struct.anon { i32 168, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.48, i32 0, i32 0) }, %struct.anon { i32 169, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.49, i32 0, i32 0) }, %struct.anon { i32 170, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.50, i32 0, i32 0) }, %struct.anon { i32 171, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.51, i32 0, i32 0) }, %struct.anon { i32 172, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.52, i32 0, i32 0) }, %struct.anon { i32 173, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.53, i32 0, i32 0) }, %struct.anon { i32 174, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.54, i32 0, i32 0) }, %struct.anon { i32 175, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.55, i32 0, i32 0) }, %struct.anon { i32 176, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.56, i32 0, i32 0) }, %struct.anon { i32 177, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.57, i32 0, i32 0) }, %struct.anon { i32 178, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.58, i32 0, i32 0) }, %struct.anon { i32 179, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.59, i32 0, i32 0) }, %struct.anon { i32 180, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.60, i32 0, i32 0) }, %struct.anon { i32 154, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.61, i32 0, i32 0) }, %struct.anon { i32 158, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.62, i32 0, i32 0) }, %struct.anon { i32 157, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.63, i32 0, i32 0) }, %struct.anon { i32 156, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.64, i32 0, i32 0) }, %struct.anon { i32 155, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.65, i32 0, i32 0) }, %struct.anon { i32 143, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.66, i32 0, i32 0) }, %struct.anon { i32 142, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.67, i32 0, i32 0) }, %struct.anon { i32 179, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i32 0, i32 0) }, %struct.anon { i32 152, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.69, i32 0, i32 0) }, %struct.anon { i32 144, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.70, i32 0, i32 0) }, %struct.anon { i32 129, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.71, i32 0, i32 0) }]
@.str = [8 x i8] c"generic\00"
@.str.1 = [6 x i8] c"ether\00"
@.str.2 = [7 x i8] c"eether\00"
@.str.3 = [5 x i8] c"ax25\00"
@.str.4 = [7 x i8] c"pronet\00"
@.str.5 = [6 x i8] c"chaos\00"
@.str.6 = [8 x i8] c"ieee802\00"
@.str.7 = [7 x i8] c"arcnet\00"
@.str.8 = [6 x i8] c"atalk\00"
@.str.9 = [5 x i8] c"dlci\00"
@.str.10 = [4 x i8] c"atm\00"
@.str.11 = [9 x i8] c"metricom\00"
@.str.12 = [9 x i8] c"ieee1394\00"
@.str.13 = [11 x i8] c"infiniband\00"
@.str.14 = [5 x i8] c"slip\00"
@.str.15 = [6 x i8] c"cslip\00"
@.str.16 = [6 x i8] c"slip6\00"
@.str.17 = [7 x i8] c"cslip6\00"
@.str.18 = [6 x i8] c"rsrvd\00"
@.str.19 = [6 x i8] c"adapt\00"
@.str.20 = [5 x i8] c"rose\00"
@.str.21 = [4 x i8] c"x25\00"
@.str.22 = [6 x i8] c"hwx25\00"
@.str.23 = [4 x i8] c"can\00"
@.str.24 = [4 x i8] c"ppp\00"
@.str.25 = [5 x i8] c"hdlc\00"
@.str.26 = [5 x i8] c"lapb\00"
@.str.27 = [6 x i8] c"ddcmp\00"
@.str.28 = [8 x i8] c"rawhdlc\00"
@.str.29 = [5 x i8] c"ipip\00"
@.str.30 = [8 x i8] c"tunnel6\00"
@.str.31 = [5 x i8] c"frad\00"
@.str.32 = [5 x i8] c"skip\00"
@.str.33 = [9 x i8] c"loopback\00"
@.str.34 = [6 x i8] c"ltalk\00"
@.str.35 = [5 x i8] c"fddi\00"
@.str.36 = [4 x i8] c"bif\00"
@.str.37 = [4 x i8] c"sit\00"
@.str.38 = [7 x i8] c"ip/ddp\00"
@.str.39 = [4 x i8] c"gre\00"
@.str.40 = [7 x i8] c"pimreg\00"
@.str.41 = [6 x i8] c"hippi\00"
@.str.42 = [4 x i8] c"ash\00"
@.str.43 = [7 x i8] c"econet\00"
@.str.44 = [5 x i8] c"irda\00"
@.str.45 = [5 x i8] c"fcpp\00"
@.str.46 = [5 x i8] c"fcal\00"
@.str.47 = [5 x i8] c"fcpl\00"
@.str.48 = [6 x i8] c"fcfb0\00"
@.str.49 = [6 x i8] c"fcfb1\00"
@.str.50 = [6 x i8] c"fcfb2\00"
@.str.51 = [6 x i8] c"fcfb3\00"
@.str.52 = [6 x i8] c"fcfb4\00"
@.str.53 = [6 x i8] c"fcfb5\00"
@.str.54 = [6 x i8] c"fcfb6\00"
@.str.55 = [6 x i8] c"fcfb7\00"
@.str.56 = [6 x i8] c"fcfb8\00"
@.str.57 = [6 x i8] c"fcfb9\00"
@.str.58 = [7 x i8] c"fcfb10\00"
@.str.59 = [7 x i8] c"fcfb11\00"
@.str.60 = [7 x i8] c"fcfb12\00"
@.str.61 = [3 x i8] c"tr\00"
@.str.62 = [11 x i8] c"ieee802.11\00"
@.str.63 = [17 x i8] c"ieee802.11/prism\00"
@.str.64 = [20 x i8] c"ieee802.11/radiotap\00"
@.str.65 = [13 x i8] c"ieee802.15.4\00"
@.str.66 = [7 x i8] c"phonet\00"
@.str.67 = [12 x i8] c"phonet_pipe\00"
@.str.68 = [5 x i8] c"caif\00"
@.str.69 = [5 x i8] c"gre6\00"
@.str.70 = [5 x i8] c"none\00"
@.str.71 = [5 x i8] c"void\00"
@.str.72 = [5 x i8] c"[%d]\00"
define i8* @ll_type_n2a(i32 %0, i8* %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
store i32 %0, i32* %5
store i8* %1, i8** %6
store i32 %2, i32* %7
store i32 0, i32* %8
br label %9
9: ; preds = %28, %3
%10 = load i32, i32* %8
%11 = sext i32 %10 to i64
%12 = icmp ult i64 %11, 72
br i1 %12, label %13, label %31
13: ; preds = %9
%14 = load i32, i32* %8
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds [72 x %struct.anon], [72 x %struct.anon]* @ll_type_n2a.arphrd_names, i64 0, i64 %15
%17 = getelementptr inbounds %struct.anon, %struct.anon* %16, i32 0, i32 0
%18 = load i32, i32* %17
%19 = load i32, i32* %5
%20 = icmp eq i32 %18, %19
br i1 %20, label %21, label %27
21: ; preds = %13
%22 = load i32, i32* %8
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [72 x %struct.anon], [72 x %struct.anon]* @ll_type_n2a.arphrd_names, i64 0, i64 %23
%25 = getelementptr inbounds %struct.anon, %struct.anon* %24, i32 0, i32 1
%26 = load i8*, i8** %25
store i8* %26, i8** %4
br label %37
27: ; preds = %13
br label %28
28: ; preds = %27
%29 = load i32, i32* %8
%30 = add nsw i32 %29, 1
store i32 %30, i32* %8
br label %9
31: ; preds = %9
%32 = load i8*, i8** %6
%33 = load i32, i32* %7
%34 = load i32, i32* %5
%35 = call i32 @snprintf(i8* %32, i32 %33, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.72, i64 0, i64 0), i32 %34)
%36 = load i8*, i8** %6
store i8* %36, i8** %4
br label %37
37: ; preds = %31, %21
%38 = load i8*, i8** %4
ret i8* %38
}

LLVM IR (-O2):
%struct.anon = type { i32, i8* }
@ll_type_n2a.arphrd_names = internal unnamed_addr constant [72 x %struct.anon] [%struct.anon { i32 0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0) }, %struct.anon { i32 170, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0) }, %struct.anon { i32 171, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i32 0, i32 0) }, %struct.anon { i32 181, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i32 0, i32 0) }, %struct.anon { i32 139, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i32 0, i32 0) }, %struct.anon { i32 177, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0) }, %struct.anon { i32 159, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i32 0, i32 0) }, %struct.anon { i32 184, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i32 0, i32 0) }, %struct.anon { i32 185, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i32 0, i32 0) }, %struct.anon { i32 173, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i32 0, i32 0) }, %struct.anon { i32 182, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i32 0, i32 0) }, %struct.anon { i32 145, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i32 0, i32 0) }, %struct.anon { i32 160, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i32 0, i32 0) }, %struct.anon { i32 153, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i32 0, i32 0) }, %struct.anon { i32 133, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i32 0, i32 0) }, %struct.anon { i32 176, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i32 0, i32 0) }, %struct.anon { i32 132, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i32 0, i32 0) }, %struct.anon { i32 175, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i32 0, i32 0) }, %struct.anon { i32 136, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i32 0, i32 0) }, %struct.anon { i32 186, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i32 0, i32 0) }, %struct.anon { i32 137, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i32 0, i32 0) }, %struct.anon { i32 128, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i32 0, i32 0) }, %struct.anon { i32 161, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i32 0, i32 0) }, %struct.anon { i32 178, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i32 0, i32 0) }, %struct.anon { i32 140, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i32 0, i32 0) }, %struct.anon { i32 163, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i32 0, i32 0) }, %struct.anon { i32 148, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i32 0, i32 0) }, %struct.anon { i32 174, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i32 0, i32 0) }, %struct.anon { i32 138, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i32 0, i32 0) }, %struct.anon { i32 131, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.29, i32 0, i32 0) }, %struct.anon { i32 130, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i32 0, i32 0) }, %struct.anon { i32 164, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.31, i32 0, i32 0) }, %struct.anon { i32 134, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i32 0, i32 0) }, %struct.anon { i32 146, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.33, i32 0, i32 0) }, %struct.anon { i32 147, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i32 0, i32 0) }, %struct.anon { i32 165, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.35, i32 0, i32 0) }, %struct.anon { i32 180, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.36, i32 0, i32 0) }, %struct.anon { i32 135, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i32 0, i32 0) }, %struct.anon { i32 151, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i32 0, i32 0) }, %struct.anon { i32 150, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.39, i32 0, i32 0) }, %struct.anon { i32 141, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.40, i32 0, i32 0) }, %struct.anon { i32 162, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.41, i32 0, i32 0) }, %struct.anon { i32 183, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.42, i32 0, i32 0) }, %struct.anon { i32 172, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.43, i32 0, i32 0) }, %struct.anon { i32 149, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i32 0, i32 0) }, %struct.anon { i32 166, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.45, i32 0, i32 0) }, %struct.anon { i32 169, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.46, i32 0, i32 0) }, %struct.anon { i32 167, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.47, i32 0, i32 0) }, %struct.anon { i32 168, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.48, i32 0, i32 0) }, %struct.anon { i32 169, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.49, i32 0, i32 0) }, %struct.anon { i32 170, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.50, i32 0, i32 0) }, %struct.anon { i32 171, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.51, i32 0, i32 0) }, %struct.anon { i32 172, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.52, i32 0, i32 0) }, %struct.anon { i32 173, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.53, i32 0, i32 0) }, %struct.anon { i32 174, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.54, i32 0, i32 0) }, %struct.anon { i32 175, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.55, i32 0, i32 0) }, %struct.anon { i32 176, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.56, i32 0, i32 0) }, %struct.anon { i32 177, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.57, i32 0, i32 0) }, %struct.anon { i32 178, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.58, i32 0, i32 0) }, %struct.anon { i32 179, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.59, i32 0, i32 0) }, %struct.anon { i32 180, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.60, i32 0, i32 0) }, %struct.anon { i32 154, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.61, i32 0, i32 0) }, %struct.anon { i32 158, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.62, i32 0, i32 0) }, %struct.anon { i32 157, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.63, i32 0, i32 0) }, %struct.anon { i32 156, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.64, i32 0, i32 0) }, %struct.anon { i32 155, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.65, i32 0, i32 0) }, %struct.anon { i32 143, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.66, i32 0, i32 0) }, %struct.anon { i32 142, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.67, i32 0, i32 0) }, %struct.anon { i32 179, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i32 0, i32 0) }, %struct.anon { i32 152, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.69, i32 0, i32 0) }, %struct.anon { i32 144, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.70, i32 0, i32 0) }, %struct.anon { i32 129, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.71, i32 0, i32 0) }]
@.str = [8 x i8] c"generic\00"
@.str.1 = [6 x i8] c"ether\00"
@.str.2 = [7 x i8] c"eether\00"
@.str.3 = [5 x i8] c"ax25\00"
@.str.4 = [7 x i8] c"pronet\00"
@.str.5 = [6 x i8] c"chaos\00"
@.str.6 = [8 x i8] c"ieee802\00"
@.str.7 = [7 x i8] c"arcnet\00"
@.str.8 = [6 x i8] c"atalk\00"
@.str.9 = [5 x i8] c"dlci\00"
@.str.10 = [4 x i8] c"atm\00"
@.str.11 = [9 x i8] c"metricom\00"
@.str.12 = [9 x i8] c"ieee1394\00"
@.str.13 = [11 x i8] c"infiniband\00"
@.str.14 = [5 x i8] c"slip\00"
@.str.15 = [6 x i8] c"cslip\00"
@.str.16 = [6 x i8] c"slip6\00"
@.str.17 = [7 x i8] c"cslip6\00"
@.str.18 = [6 x i8] c"rsrvd\00"
@.str.19 = [6 x i8] c"adapt\00"
@.str.20 = [5 x i8] c"rose\00"
@.str.21 = [4 x i8] c"x25\00"
@.str.22 = [6 x i8] c"hwx25\00"
@.str.23 = [4 x i8] c"can\00"
@.str.24 = [4 x i8] c"ppp\00"
@.str.25 = [5 x i8] c"hdlc\00"
@.str.26 = [5 x i8] c"lapb\00"
@.str.27 = [6 x i8] c"ddcmp\00"
@.str.28 = [8 x i8] c"rawhdlc\00"
@.str.29 = [5 x i8] c"ipip\00"
@.str.30 = [8 x i8] c"tunnel6\00"
@.str.31 = [5 x i8] c"frad\00"
@.str.32 = [5 x i8] c"skip\00"
@.str.33 = [9 x i8] c"loopback\00"
@.str.34 = [6 x i8] c"ltalk\00"
@.str.35 = [5 x i8] c"fddi\00"
@.str.36 = [4 x i8] c"bif\00"
@.str.37 = [4 x i8] c"sit\00"
@.str.38 = [7 x i8] c"ip/ddp\00"
@.str.39 = [4 x i8] c"gre\00"
@.str.40 = [7 x i8] c"pimreg\00"
@.str.41 = [6 x i8] c"hippi\00"
@.str.42 = [4 x i8] c"ash\00"
@.str.43 = [7 x i8] c"econet\00"
@.str.44 = [5 x i8] c"irda\00"
@.str.45 = [5 x i8] c"fcpp\00"
@.str.46 = [5 x i8] c"fcal\00"
@.str.47 = [5 x i8] c"fcpl\00"
@.str.48 = [6 x i8] c"fcfb0\00"
@.str.49 = [6 x i8] c"fcfb1\00"
@.str.50 = [6 x i8] c"fcfb2\00"
@.str.51 = [6 x i8] c"fcfb3\00"
@.str.52 = [6 x i8] c"fcfb4\00"
@.str.53 = [6 x i8] c"fcfb5\00"
@.str.54 = [6 x i8] c"fcfb6\00"
@.str.55 = [6 x i8] c"fcfb7\00"
@.str.56 = [6 x i8] c"fcfb8\00"
@.str.57 = [6 x i8] c"fcfb9\00"
@.str.58 = [7 x i8] c"fcfb10\00"
@.str.59 = [7 x i8] c"fcfb11\00"
@.str.60 = [7 x i8] c"fcfb12\00"
@.str.61 = [3 x i8] c"tr\00"
@.str.62 = [11 x i8] c"ieee802.11\00"
@.str.63 = [17 x i8] c"ieee802.11/prism\00"
@.str.64 = [20 x i8] c"ieee802.11/radiotap\00"
@.str.65 = [13 x i8] c"ieee802.15.4\00"
@.str.66 = [7 x i8] c"phonet\00"
@.str.67 = [12 x i8] c"phonet_pipe\00"
@.str.68 = [5 x i8] c"caif\00"
@.str.69 = [5 x i8] c"gre6\00"
@.str.70 = [5 x i8] c"none\00"
@.str.71 = [5 x i8] c"void\00"
@.str.72 = [5 x i8] c"[%d]\00"
define i8* @ll_type_n2a(i32 %0, i8* %1, i32 %2) {
br label %4
4: ; preds = %29, %3
%5 = phi i64 [ 0, %3 ], [ %30, %29 ]
%6 = getelementptr inbounds [72 x %struct.anon], [72 x %struct.anon]* @ll_type_n2a.arphrd_names, i64 0, i64 %5, i32 0
%7 = load i32, i32* %6
%8 = icmp eq i32 %7, %0
br i1 %8, label %9, label %14
9: ; preds = %24, %19, %14, %4
%10 = phi i64 [ %5, %4 ], [ %15, %14 ], [ %20, %19 ], [ %25, %24 ]
%11 = and i64 %10, 4294967295
%12 = getelementptr inbounds [72 x %struct.anon], [72 x %struct.anon]* @ll_type_n2a.arphrd_names, i64 0, i64 %11, i32 1
%13 = load i8*, i8** %12
br label %34
14: ; preds = %4
%15 = or i64 %5, 1
%16 = getelementptr inbounds [72 x %struct.anon], [72 x %struct.anon]* @ll_type_n2a.arphrd_names, i64 0, i64 %15, i32 0
%17 = load i32, i32* %16
%18 = icmp eq i32 %17, %0
br i1 %18, label %9, label %19
19: ; preds = %14
%20 = or i64 %5, 2
%21 = getelementptr inbounds [72 x %struct.anon], [72 x %struct.anon]* @ll_type_n2a.arphrd_names, i64 0, i64 %20, i32 0
%22 = load i32, i32* %21
%23 = icmp eq i32 %22, %0
br i1 %23, label %9, label %24
24: ; preds = %19
%25 = or i64 %5, 3
%26 = getelementptr inbounds [72 x %struct.anon], [72 x %struct.anon]* @ll_type_n2a.arphrd_names, i64 0, i64 %25, i32 0
%27 = load i32, i32* %26
%28 = icmp eq i32 %27, %0
br i1 %28, label %9, label %29
29: ; preds = %24
%30 = add nuw nsw i64 %5, 4
%31 = icmp eq i64 %30, 72
br i1 %31, label %32, label %4
32: ; preds = %29
%33 = tail call i32 @snprintf(i8* %1, i32 %2, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.72, i64 0, i64 0), i32 %0)
br label %34
34: ; preds = %32, %9
%35 = phi i8* [ %13, %9 ], [ %1, %32 ]
ret i8* %35
}