#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 uint16_t;

/* Variables and functions */
int /*<<< orphan*/ sprintf(char *, char *, int, int, int, int);
int /*<<< orphan*/ ssystem(char *, char *, ...);
void ifconf(char *tundev, char *ipaddr) {
  ssystem("ifconfig %s inet `hostname` up", tundev);
  ssystem("ifconfig %s add %s", tundev, ipaddr);
  {
    char lladdr[40];
    char c, *ptr = (char *)ipaddr;
    uint16_t digit, ai, a[8], cc, scc, i;
    for (ai = 0; ai < 8; ai++) {
      a[ai] = 0;
    }
    ai = 0;
    cc = scc = 0;
    while (c = *ptr++) {
      if (c == '/')
        break;
      if (c == ':') {
        if (cc)
          scc = ai;
        cc = 1;
        if (++ai > 7)
          break;
      } else {
        cc = 0;
        digit = c - '0';
        if (digit > 9)
          digit = 10 + (c & 0xdf) - 'A';
        a[ai] = (a[ai] << 4) + digit;
      }
    }
    cc = 8 - ai;
    for (i = 0; i < cc; i++) {
      if ((8 - i - cc) <= scc) {
        a[7 - i] = 0;
      } else {
        a[7 - i] = a[8 - i - cc];
        a[8 - i - cc] = 0;
      }
    }
    sprintf(lladdr, "fe80::%x:%x:%x:%x", a[1] & 0xfefd, a[2], a[3], a[7]);
    ssystem("ifconfig %s add %s/64", tundev, lladdr);
  }
  ssystem("ifconfig %s\n", tundev);
}


x86 assembly (clang, -O0):
<ifconf>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xec2(%rip),%rdi
mov    $0x0,%al
call   1030 <ssystem@plt>
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
lea    0xecb(%rip),%rdi
mov    $0x0,%al
call   1030 <ssystem@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x50(%rbp)
movl   $0x0,-0x58(%rbp)
cmpl   $0x8,-0x58(%rbp)
jge    118e <ifconf+0x6e>
movslq -0x58(%rbp),%rax
movl   $0x0,-0x80(%rbp,%rax,4)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    116a <ifconf+0x4a>
movl   $0x0,-0x58(%rbp)
movl   $0x0,-0x88(%rbp)
movl   $0x0,-0x84(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x50(%rbp)
mov    (%rax),%al
mov    %al,-0x41(%rbp)
cmp    $0x0,%al
je     126b <ifconf+0x14b>
movsbl -0x41(%rbp),%eax
cmp    $0x2f,%eax
jne    11d7 <ifconf+0xb7>
jmp    126b <ifconf+0x14b>
movsbl -0x41(%rbp),%eax
cmp    $0x3a,%eax
jne    1220 <ifconf+0x100>
cmpl   $0x0,-0x84(%rbp)
je     11fa <ifconf+0xda>
mov    -0x58(%rbp),%eax
mov    %eax,-0x88(%rbp)
movl   $0x1,-0x84(%rbp)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
cmp    $0x7,%eax
jle    121b <ifconf+0xfb>
jmp    126b <ifconf+0x14b>
jmp    1266 <ifconf+0x146>
movl   $0x0,-0x84(%rbp)
movsbl -0x41(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x54(%rbp)
cmpl   $0x9,-0x54(%rbp)
jle    1250 <ifconf+0x130>
movsbl -0x41(%rbp),%eax
and    $0xdf,%eax
add    $0xa,%eax
sub    $0x41,%eax
mov    %eax,-0x54(%rbp)
movslq -0x58(%rbp),%rax
mov    -0x80(%rbp,%rax,4),%ecx
shl    $0x4,%ecx
add    -0x54(%rbp),%ecx
movslq -0x58(%rbp),%rax
mov    %ecx,-0x80(%rbp,%rax,4)
jmp    11a9 <ifconf+0x89>
mov    $0x8,%eax
sub    -0x58(%rbp),%eax
mov    %eax,-0x84(%rbp)
movl   $0x0,-0x8c(%rbp)
mov    -0x8c(%rbp),%eax
cmp    -0x84(%rbp),%eax
jge    1328 <ifconf+0x208>
mov    $0x8,%eax
sub    -0x8c(%rbp),%eax
sub    -0x84(%rbp),%eax
cmp    -0x88(%rbp),%eax
jg     12cc <ifconf+0x1ac>
mov    $0x7,%eax
sub    -0x8c(%rbp),%eax
cltq
movl   $0x0,-0x80(%rbp,%rax,4)
jmp    130f <ifconf+0x1ef>
mov    $0x8,%eax
sub    -0x8c(%rbp),%eax
sub    -0x84(%rbp),%eax
cltq
mov    -0x80(%rbp,%rax,4),%ecx
mov    $0x7,%eax
sub    -0x8c(%rbp),%eax
cltq
mov    %ecx,-0x80(%rbp,%rax,4)
mov    $0x8,%eax
sub    -0x8c(%rbp),%eax
sub    -0x84(%rbp),%eax
cltq
movl   $0x0,-0x80(%rbp,%rax,4)
jmp    1314 <ifconf+0x1f4>
mov    -0x8c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8c(%rbp)
jmp    1283 <ifconf+0x163>
lea    -0x40(%rbp),%rdi
mov    -0x7c(%rbp),%edx
and    $0xfefd,%edx
mov    -0x78(%rbp),%ecx
mov    -0x74(%rbp),%r8d
mov    -0x64(%rbp),%r9d
lea    0xceb(%rip),%rsi
call   1040 <sprintf@plt>
mov    -0x8(%rbp),%rsi
lea    -0x40(%rbp),%rdx
lea    0xce9(%rip),%rdi
mov    $0x0,%al
call   1030 <ssystem@plt>
mov    -0x8(%rbp),%rsi
lea    0xced(%rip),%rdi
mov    $0x0,%al
call   1030 <ssystem@plt>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ifconf>:
push   %r14
push   %rbx
sub    $0x48,%rsp
mov    %rsi,%rbx
mov    %rdi,%r14
lea    0xecc(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1030 <ssystem@plt>
lea    0xeda(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1030 <ssystem@plt>
xorps  %xmm0,%xmm0
movaps %xmm0,(%rsp)
movaps %xmm0,0x10(%rsp)
mov    (%rsp),%eax
add    $0x7,%rbx
cs nopw 0x0(%rax,%rax,1)
nop
movsbl -0x7(%rbx),%ecx
test   %ecx,%ecx
je     11a4 <ifconf+0x84>
cmp    $0x2f,%cl
je     11a4 <ifconf+0x84>
cmp    $0x3a,%cl
je     11aa <ifconf+0x8a>
lea    -0x30(%rcx),%edx
mov    %ecx,%esi
and    $0xdf,%esi
add    $0xffffffc9,%esi
cmp    $0x3a,%cl
cmovl  %edx,%esi
shl    $0x4,%eax
add    %esi,%eax
mov    %eax,(%rsp)
add    $0x1,%rbx
jmp    1170 <ifconf+0x50>
xor    %esi,%esi
xor    %ecx,%ecx
jmp    1202 <ifconf+0xe2>
mov    $0x1,%edx
mov    0x4(%rsp),%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsbl -0x6(%rbx),%ecx
test   %ecx,%ecx
je     11fb <ifconf+0xdb>
cmp    $0x2f,%cl
je     11fb <ifconf+0xdb>
cmp    $0x3a,%cl
je     12aa <ifconf+0x18a>
lea    -0x30(%rcx),%edx
mov    %ecx,%esi
and    $0xdf,%esi
add    $0xffffffc9,%esi
cmp    $0x3a,%cl
cmovl  %edx,%esi
shl    $0x4,%eax
add    %esi,%eax
mov    %eax,0x4(%rsp)
add    $0x1,%rbx
xor    %edx,%edx
jmp    11c0 <ifconf+0xa0>
xor    %esi,%esi
mov    $0x1,%ecx
xor    %eax,%eax
mov    $0x8,%edi
sub    %ecx,%edi
cmp    $0x2,%edi
mov    $0x1,%edx
cmovge %edi,%edx
cmp    %eax,%ecx
jle    1229 <ifconf+0x109>
mov    %ecx,%ebx
lea    (%rsp,%rbx,4),%rdi
mov    (%rsp,%rbx,4),%ebx
mov    %ebx,0x1c(%rsp)
jmp    122e <ifconf+0x10e>
lea    0x1c(%rsp),%rdi
movl   $0x0,(%rdi)
test   %sil,%sil
jne    1496 <ifconf+0x376>
lea    -0x1(%rcx),%esi
cmp    %eax,%esi
jle    1254 <ifconf+0x134>
movslq %esi,%rdi
lea    (%rsp,%rdi,4),%rsi
mov    (%rsp,%rdi,4),%edi
mov    %edi,0x18(%rsp)
jmp    1259 <ifconf+0x139>
lea    0x18(%rsp),%rsi
movl   $0x0,(%rsi)
cmp    $0x2,%edx
je     1496 <ifconf+0x376>
lea    -0x2(%rcx),%esi
cmp    %eax,%esi
jle    127f <ifconf+0x15f>
movslq %esi,%rdi
lea    (%rsp,%rdi,4),%rsi
mov    (%rsp,%rdi,4),%edi
mov    %edi,0x14(%rsp)
jmp    1284 <ifconf+0x164>
lea    0x14(%rsp),%rsi
movl   $0x0,(%rsi)
cmp    $0x3,%edx
je     1496 <ifconf+0x376>
lea    -0x3(%rcx),%esi
cmp    %eax,%esi
jle    12f9 <ifconf+0x1d9>
movslq %esi,%rdi
lea    (%rsp,%rdi,4),%rsi
mov    (%rsp,%rdi,4),%edi
mov    %edi,0x10(%rsp)
jmp    12fe <ifconf+0x1de>
mov    $0x2,%eax
nop
movsbl -0x5(%rbx),%ecx
test   %ecx,%ecx
je     12eb <ifconf+0x1cb>
cmp    $0x2f,%cl
je     12eb <ifconf+0x1cb>
cmp    $0x3a,%cl
je     1324 <ifconf+0x204>
lea    -0x30(%rcx),%eax
mov    %ecx,%esi
and    $0xdf,%esi
add    $0xffffffc9,%esi
cmp    $0x3a,%cl
cmovl  %eax,%esi
mov    0x8(%rsp),%eax
shl    $0x4,%eax
add    %esi,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%rbx
mov    %edx,%eax
jmp    12b0 <ifconf+0x190>
mov    $0x2,%ecx
xor    %esi,%esi
mov    %edx,%eax
jmp    1204 <ifconf+0xe4>
lea    0x10(%rsp),%rsi
movl   $0x0,(%rsi)
cmp    $0x4,%edx
je     1496 <ifconf+0x376>
lea    -0x4(%rcx),%esi
cmp    %eax,%esi
jle    136f <ifconf+0x24f>
movslq %esi,%rdi
lea    (%rsp,%rdi,4),%rsi
mov    (%rsp,%rdi,4),%edi
mov    %edi,0xc(%rsp)
jmp    1374 <ifconf+0x254>
mov    $0x3,%edx
nopl   0x0(%rax)
movsbl -0x4(%rbx),%ecx
test   %ecx,%ecx
je     139a <ifconf+0x27a>
cmp    $0x2f,%cl
je     139a <ifconf+0x27a>
cmp    $0x3a,%cl
je     13d1 <ifconf+0x2b1>
lea    -0x30(%rcx),%edx
mov    %ecx,%esi
and    $0xdf,%esi
add    $0xffffffc9,%esi
cmp    $0x3a,%cl
cmovl  %edx,%esi
mov    0xc(%rsp),%ecx
shl    $0x4,%ecx
add    %esi,%ecx
mov    %ecx,0xc(%rsp)
add    $0x1,%rbx
mov    %eax,%edx
jmp    1330 <ifconf+0x210>
lea    0xc(%rsp),%rsi
movl   $0x0,(%rsi)
cmp    $0x5,%edx
je     1496 <ifconf+0x376>
lea    -0x5(%rcx),%esi
cmp    %eax,%esi
jle    13a6 <ifconf+0x286>
movslq %esi,%rdi
lea    (%rsp,%rdi,4),%rsi
mov    (%rsp,%rdi,4),%edi
mov    %edi,0x8(%rsp)
jmp    13ab <ifconf+0x28b>
mov    $0x3,%ecx
xor    %esi,%esi
jmp    1204 <ifconf+0xe4>
lea    0x8(%rsp),%rsi
movl   $0x0,(%rsi)
cmp    $0x6,%edx
je     1496 <ifconf+0x376>
lea    -0x6(%rcx),%esi
cmp    %eax,%esi
jle    141b <ifconf+0x2fb>
movslq %esi,%rdi
lea    (%rsp,%rdi,4),%rsi
mov    (%rsp,%rdi,4),%edi
mov    %edi,0x4(%rsp)
jmp    1420 <ifconf+0x300>
mov    $0x4,%eax
movsbl -0x3(%rbx),%ecx
test   %ecx,%ecx
je     1411 <ifconf+0x2f1>
cmp    $0x2f,%cl
je     1411 <ifconf+0x2f1>
cmp    $0x3a,%cl
je     1441 <ifconf+0x321>
lea    -0x30(%rcx),%eax
mov    %ecx,%esi
and    $0xdf,%esi
add    $0xffffffc9,%esi
cmp    $0x3a,%cl
cmovl  %eax,%esi
mov    0x10(%rsp),%eax
shl    $0x4,%eax
add    %esi,%eax
mov    %eax,0x10(%rsp)
add    $0x1,%rbx
mov    %edx,%eax
jmp    13d6 <ifconf+0x2b6>
mov    $0x4,%ecx
jmp    12f0 <ifconf+0x1d0>
lea    0x4(%rsp),%rsi
movl   $0x0,(%rsi)
cmp    $0x7,%edx
je     1496 <ifconf+0x376>
add    $0xfffffff9,%ecx
cmp    %eax,%ecx
jle    148d <ifconf+0x36d>
movslq %ecx,%rcx
lea    (%rsp,%rcx,4),%rax
mov    (%rsp,%rcx,4),%ecx
mov    %ecx,(%rsp)
jmp    1490 <ifconf+0x370>
mov    $0x5,%edx
movsbl -0x2(%rbx),%ecx
test   %ecx,%ecx
je     14ee <ifconf+0x3ce>
cmp    $0x2f,%cl
je     14ee <ifconf+0x3ce>
cmp    $0x3a,%cl
je     14fa <ifconf+0x3da>
lea    -0x30(%rcx),%edx
mov    %ecx,%esi
and    $0xdf,%esi
add    $0xffffffc9,%esi
cmp    $0x3a,%cl
cmovl  %edx,%esi
mov    0x14(%rsp),%ecx
shl    $0x4,%ecx
add    %esi,%ecx
mov    %ecx,0x14(%rsp)
add    $0x1,%rbx
mov    %eax,%edx
jmp    1446 <ifconf+0x326>
mov    %rsp,%rax
movl   $0x0,(%rax)
mov    $0xfefd,%edx
and    0x4(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0xc(%rsp),%r8d
mov    0x1c(%rsp),%r9d
lea    0xb7e(%rip),%rsi
lea    0x20(%rsp),%rbx
mov    %rbx,%rdi
call   1040 <sprintf@plt>
lea    0xb7c(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1030 <ssystem@plt>
lea    0xb7e(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1030 <ssystem@plt>
add    $0x48,%rsp
pop    %rbx
pop    %r14
ret
mov    $0x5,%ecx
xor    %esi,%esi
jmp    1204 <ifconf+0xe4>
mov    $0x6,%eax
movsbl -0x1(%rbx),%ecx
test   %ecx,%ecx
je     1581 <ifconf+0x461>
cmp    $0x2f,%cl
je     1581 <ifconf+0x461>
cmp    $0x3a,%cl
je     156d <ifconf+0x44d>
lea    -0x30(%rcx),%eax
mov    %ecx,%esi
and    $0xdf,%esi
add    $0xffffffc9,%esi
cmp    $0x3a,%cl
cmovl  %eax,%esi
mov    0x18(%rsp),%eax
shl    $0x4,%eax
add    %esi,%eax
mov    %eax,0x18(%rsp)
add    $0x1,%rbx
mov    %edx,%eax
jmp    14ff <ifconf+0x3df>
cmp    $0x2f,%cl
je     1574 <ifconf+0x454>
cmp    $0x3a,%cl
je     1496 <ifconf+0x376>
add    $0x1,%rbx
lea    -0x30(%rcx),%edx
mov    %ecx,%esi
and    $0xdf,%esi
add    $0xffffffc9,%esi
cmp    $0x3a,%cl
cmovl  %edx,%esi
mov    0x1c(%rsp),%ecx
shl    $0x4,%ecx
add    %esi,%ecx
mov    %ecx,0x1c(%rsp)
movsbl (%rbx),%ecx
test   %ecx,%ecx
jne    153a <ifconf+0x41a>
mov    $0x7,%ecx
mov    $0x1,%sil
jmp    1204 <ifconf+0xe4>
mov    $0x6,%ecx
jmp    12f0 <ifconf+0x1d0>

LLVM IR (-O0):
@.str = [31 x i8] c"ifconfig %s inet `hostname` up\00"
@.str.1 = [19 x i8] c"ifconfig %s add %s\00"
@.str.2 = [18 x i8] c"fe80::%x:%x:%x:%x\00"
@.str.3 = [22 x i8] c"ifconfig %s add %s/64\00"
@.str.4 = [13 x i8] c"ifconfig %s\0A\00"
define void @ifconf(i8* %0, i8* %1) {
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca [40 x i8]
%6 = alloca i8
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i32
%10 = alloca [8 x i32]
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
store i8* %0, i8** %3
store i8* %1, i8** %4
%14 = load i8*, i8** %3
%15 = call i32 (i8*, i8*, ...) @ssystem(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0), i8* %14)
%16 = load i8*, i8** %3
%17 = load i8*, i8** %4
%18 = call i32 (i8*, i8*, ...) @ssystem(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0), i8* %16, i8* %17)
%19 = load i8*, i8** %4
store i8* %19, i8** %7
store i32 0, i32* %9
br label %20
20: ; preds = %27, %2
%21 = load i32, i32* %9
%22 = icmp slt i32 %21, 8
br i1 %22, label %23, label %30
23: ; preds = %20
%24 = load i32, i32* %9
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 %25
store i32 0, i32* %26
br label %27
27: ; preds = %23
%28 = load i32, i32* %9
%29 = add nsw i32 %28, 1
store i32 %29, i32* %9
br label %20
30: ; preds = %20
store i32 0, i32* %9
store i32 0, i32* %12
store i32 0, i32* %11
br label %31
31: ; preds = %79, %30
%32 = load i8*, i8** %7
%33 = getelementptr inbounds i8, i8* %32, i32 1
store i8* %33, i8** %7
%34 = load i8, i8* %32
store i8 %34, i8* %6
%35 = icmp ne i8 %34, 0
br i1 %35, label %36, label %80
36: ; preds = %31
%37 = load i8, i8* %6
%38 = sext i8 %37 to i32
%39 = icmp eq i32 %38, 47
br i1 %39, label %40, label %41
40: ; preds = %36
br label %80
41: ; preds = %36
%42 = load i8, i8* %6
%43 = sext i8 %42 to i32
%44 = icmp eq i32 %43, 58
br i1 %44, label %45, label %56
45: ; preds = %41
%46 = load i32, i32* %11
%47 = icmp ne i32 %46, 0
br i1 %47, label %48, label %50
48: ; preds = %45
%49 = load i32, i32* %9
store i32 %49, i32* %12
br label %50
50: ; preds = %48, %45
store i32 1, i32* %11
%51 = load i32, i32* %9
%52 = add nsw i32 %51, 1
store i32 %52, i32* %9
%53 = icmp sgt i32 %52, 7
br i1 %53, label %54, label %55
54: ; preds = %50
br label %80
55: ; preds = %50
br label %79
56: ; preds = %41
store i32 0, i32* %11
%57 = load i8, i8* %6
%58 = sext i8 %57 to i32
%59 = sub nsw i32 %58, 48
store i32 %59, i32* %8
%60 = load i32, i32* %8
%61 = icmp sgt i32 %60, 9
br i1 %61, label %62, label %68
62: ; preds = %56
%63 = load i8, i8* %6
%64 = sext i8 %63 to i32
%65 = and i32 %64, 223
%66 = add nsw i32 10, %65
%67 = sub nsw i32 %66, 65
store i32 %67, i32* %8
br label %68
68: ; preds = %62, %56
%69 = load i32, i32* %9
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 %70
%72 = load i32, i32* %71
%73 = shl i32 %72, 4
%74 = load i32, i32* %8
%75 = add nsw i32 %73, %74
%76 = load i32, i32* %9
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 %77
store i32 %75, i32* %78
br label %79
79: ; preds = %68, %55
br label %31
80: ; preds = %54, %40, %31
%81 = load i32, i32* %9
%82 = sub nsw i32 8, %81
store i32 %82, i32* %11
store i32 0, i32* %13
br label %83
83: ; preds = %118, %80
%84 = load i32, i32* %13
%85 = load i32, i32* %11
%86 = icmp slt i32 %84, %85
br i1 %86, label %87, label %121
87: ; preds = %83
%88 = load i32, i32* %13
%89 = sub nsw i32 8, %88
%90 = load i32, i32* %11
%91 = sub nsw i32 %89, %90
%92 = load i32, i32* %12
%93 = icmp sle i32 %91, %92
br i1 %93, label %94, label %99
94: ; preds = %87
%95 = load i32, i32* %13
%96 = sub nsw i32 7, %95
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 %97
store i32 0, i32* %98
br label %117
99: ; preds = %87
%100 = load i32, i32* %13
%101 = sub nsw i32 8, %100
%102 = load i32, i32* %11
%103 = sub nsw i32 %101, %102
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 %104
%106 = load i32, i32* %105
%107 = load i32, i32* %13
%108 = sub nsw i32 7, %107
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 %109
store i32 %106, i32* %110
%111 = load i32, i32* %13
%112 = sub nsw i32 8, %111
%113 = load i32, i32* %11
%114 = sub nsw i32 %112, %113
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 %115
store i32 0, i32* %116
br label %117
117: ; preds = %99, %94
br label %118
118: ; preds = %117
%119 = load i32, i32* %13
%120 = add nsw i32 %119, 1
store i32 %120, i32* %13
br label %83
121: ; preds = %83
%122 = getelementptr inbounds [40 x i8], [40 x i8]* %5, i64 0, i64 0
%123 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 1
%124 = load i32, i32* %123
%125 = and i32 %124, 65277
%126 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 2
%127 = load i32, i32* %126
%128 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 3
%129 = load i32, i32* %128
%130 = getelementptr inbounds [8 x i32], [8 x i32]* %10, i64 0, i64 7
%131 = load i32, i32* %130
%132 = call i32 @sprintf(i8* %122, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.2, i64 0, i64 0), i32 %125, i32 %127, i32 %129, i32 %131)
%133 = load i8*, i8** %3
%134 = getelementptr inbounds [40 x i8], [40 x i8]* %5, i64 0, i64 0
%135 = call i32 (i8*, i8*, ...) @ssystem(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.3, i64 0, i64 0), i8* %133, i8* %134)
%136 = load i8*, i8** %3
%137 = call i32 (i8*, i8*, ...) @ssystem(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), i8* %136)
ret void
}

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