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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
scalar_t__ calloc(int, int);
int strlen(char const *);
scalar_t__ strncmp(char const *, char const *, int);
int /*<<< orphan*/ strncpy(char *, char const *, int);
char *_conf_value(const char *buf, const char *option) {
  char *value = NULL;
  int optlen, pos = 0, pos2, pos3, len;
  if (buf == NULL || option == NULL)
    return NULL;
  optlen = strlen(option);
  do {
    while (buf[pos] == ' ' || buf[pos] == '\t' || buf[pos] == '\n')
      pos++;
    if (buf[pos] == '\0')
      return NULL;
    if (strncmp(&(buf[pos]), option, optlen) == 0 &&
        (buf[pos + optlen] == ' ' || buf[pos + optlen] == '\t' ||
         buf[pos + optlen] == '=')) {
      pos2 = pos + optlen;
      while (buf[pos2] == ' ' || buf[pos2] == '\t')
        pos2++;
      if (buf[pos2] == '=') {
        do {
          pos2++;
        } while (buf[pos2] == ' ' || buf[pos2] == '\t');
      }
      pos3 = pos2;
      while (buf[pos3] != '\n' && buf[pos3] != '\0' && buf[pos3] != '#')
        pos3++;
      do {
        pos3--;
      } while (buf[pos3] == ' ' || buf[pos3] == '\t');
      if ((len = pos3 - pos2 + 1) > 0) {
        if ((value = (char *)calloc(1, len + 1)) == NULL)
          return NULL;
        strncpy(value, &(buf[pos2]), len);
        break;
      }
      pos = pos3;
    }
    while (buf[pos] != '\n' && buf[pos] != '\0')
      pos++;
  } while (value == NULL && buf[pos] != '\0');
  return value;
}


x86 assembly (clang, -O0):
<_conf_value>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
movq   $0x0,-0x20(%rbp)
movl   $0x0,-0x28(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     1175 <_conf_value+0x35>
cmpq   $0x0,-0x18(%rbp)
jne    1182 <_conf_value+0x42>
movq   $0x0,-0x8(%rbp)
jmp    14e9 <_conf_value+0x3a9>
mov    -0x18(%rbp),%rdi
call   1050 <strlen@plt>
mov    %eax,-0x24(%rbp)
jmp    1193 <_conf_value+0x53>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x35(%rbp)
je     11dc <_conf_value+0x9c>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x35(%rbp)
je     11dc <_conf_value+0x9c>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
sete   %al
mov    %al,-0x35(%rbp)
mov    -0x35(%rbp),%al
test   $0x1,%al
jne    11ec <_conf_value+0xac>
jmp    11fa <_conf_value+0xba>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1193 <_conf_value+0x53>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    121c <_conf_value+0xdc>
movq   $0x0,-0x8(%rbp)
jmp    14e9 <_conf_value+0x3a9>
mov    -0x10(%rbp),%rdi
movslq -0x28(%rbp),%rax
add    %rax,%rdi
mov    -0x18(%rbp),%rsi
mov    -0x24(%rbp),%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    145a <_conf_value+0x31a>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     128b <_conf_value+0x14b>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
je     128b <_conf_value+0x14b>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3d,%eax
jne    145a <_conf_value+0x31a>
mov    -0x28(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x36(%rbp)
je     12c3 <_conf_value+0x183>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x36(%rbp)
mov    -0x36(%rbp),%al
test   $0x1,%al
jne    12d3 <_conf_value+0x193>
jmp    12e1 <_conf_value+0x1a1>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1294 <_conf_value+0x154>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3d,%eax
jne    1343 <_conf_value+0x203>
jmp    12fb <_conf_value+0x1bb>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x37(%rbp)
je     1333 <_conf_value+0x1f3>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x37(%rbp)
mov    -0x37(%rbp),%al
test   $0x1,%al
jne    12fb <_conf_value+0x1bb>
jmp    1343 <_conf_value+0x203>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x38(%rbp)
je     1392 <_conf_value+0x252>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x38(%rbp)
je     1392 <_conf_value+0x252>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x23,%eax
setne  %al
mov    %al,-0x38(%rbp)
mov    -0x38(%rbp),%al
test   $0x1,%al
jne    13a2 <_conf_value+0x262>
jmp    13b0 <_conf_value+0x270>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1349 <_conf_value+0x209>
jmp    13b5 <_conf_value+0x275>
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x39(%rbp)
je     13ed <_conf_value+0x2ad>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
test   $0x1,%al
jne    13b5 <_conf_value+0x275>
mov    -0x30(%rbp),%eax
sub    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
cmp    $0x0,%eax
jle    1454 <_conf_value+0x314>
mov    -0x34(%rbp),%esi
add    $0x1,%esi
mov    $0x1,%edi
call   1060 <calloc@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
jne    1438 <_conf_value+0x2f8>
movq   $0x0,-0x8(%rbp)
jmp    14e9 <_conf_value+0x3a9>
mov    -0x20(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movslq -0x2c(%rbp),%rax
add    %rax,%rsi
mov    -0x34(%rbp),%edx
call   1030 <strncpy@plt>
jmp    14e1 <_conf_value+0x3a1>
mov    -0x30(%rbp),%eax
mov    %eax,-0x28(%rbp)
jmp    145f <_conf_value+0x31f>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x3a(%rbp)
je     148e <_conf_value+0x34e>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
test   $0x1,%al
jne    149e <_conf_value+0x35e>
jmp    14ac <_conf_value+0x36c>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    145f <_conf_value+0x31f>
jmp    14b1 <_conf_value+0x371>
xor    %eax,%eax
cmpq   $0x0,-0x20(%rbp)
mov    %al,-0x3b(%rbp)
jne    14d6 <_conf_value+0x396>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x3b(%rbp)
mov    -0x3b(%rbp),%al
test   $0x1,%al
jne    118e <_conf_value+0x4e>
mov    -0x20(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_conf_value>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
xor    %r15d,%r15d
test   %rdi,%rdi
je     1314 <_conf_value+0x1d4>
test   %rsi,%rsi
je     1314 <_conf_value+0x1d4>
mov    %rdi,%rbx
mov    %rsi,(%rsp)
mov    %rsi,%rdi
call   1050 <strlen@plt>
mov    %eax,%r12d
xor    %eax,%eax
movabs $0x100000000,%r14
movabs $0x800000401,%r15
movslq %eax,%r13
lea    (%r12,%r13,1),%ebp
jmp    11a7 <_conf_value+0x67>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r13
add    $0x1,%ebp
movzbl (%rbx,%r13,1),%eax
lea    -0x9(%rax),%ecx
cmp    $0x2,%cl
jb     11a0 <_conf_value+0x60>
cmp    $0x20,%al
je     11a0 <_conf_value+0x60>
test   %al,%al
je     1311 <_conf_value+0x1d1>
lea    (%rbx,%r13,1),%rdi
mov    (%rsp),%rsi
mov    %r12d,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     11dd <_conf_value+0x9d>
mov    %r12,%r8
jmp    12bd <_conf_value+0x17d>
movslq %ebp,%rax
movzbl (%rbx,%rax,1),%ecx
mov    %r12,%r8
cmp    $0x3d,%rcx
ja     12bd <_conf_value+0x17d>
movabs $0x2000000100000200,%rdx
bt     %rcx,%rdx
jae    12bd <_conf_value+0x17d>
mov    %rbp,%rdx
shl    $0x20,%rdx
jmp    121f <_conf_value+0xdf>
xchg   %ax,%ax
movzbl 0x1(%rbx,%rax,1),%ecx
add    $0x1,%rax
add    %r14,%rdx
add    $0x1,%ebp
cmp    $0x9,%cl
je     1210 <_conf_value+0xd0>
cmp    $0x20,%cl
je     1210 <_conf_value+0xd0>
cmp    $0x3d,%cl
jne    1252 <_conf_value+0x112>
movslq %ebp,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rax
movzbl (%rbx,%rax,1),%ecx
cmp    $0x20,%cl
je     1240 <_conf_value+0x100>
cmp    $0x9,%cl
je     1240 <_conf_value+0x100>
mov    %rax,%rcx
shl    $0x20,%rcx
movslq %eax,%rbp
lea    (%rbx,%rbp,1),%rdx
xor    %r12d,%r12d
jmp    127e <_conf_value+0x13e>
cs nopw 0x0(%rax,%rax,1)
nop
add    %r14,%rcx
add    $0x1,%rdx
add    $0x1,%eax
add    $0x1,%r12d
movzbl (%rdx),%esi
cmp    $0x23,%rsi
ja     1270 <_conf_value+0x130>
bt     %rsi,%r15
jae    1270 <_conf_value+0x130>
movslq %eax,%r13
add    $0xffffffffffffffff,%r13
jmp    12a8 <_conf_value+0x168>
cs nopw 0x0(%rax,%rax,1)
add    $0xffffffffffffffff,%r13
add    $0xffffffff,%r12d
movzbl (%rbx,%r13,1),%eax
cmp    $0x20,%al
je     12a0 <_conf_value+0x160>
cmp    $0x9,%al
je     12a0 <_conf_value+0x160>
mov    %r12d,%eax
add    $0xffffffff,%eax
jns    12e7 <_conf_value+0x1a7>
movslq %r13d,%rax
mov    %r8,%r12
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%rbx,%rax,1),%ecx
test   %cl,%cl
je     1311 <_conf_value+0x1d1>
cmp    $0xa,%cl
je     1188 <_conf_value+0x48>
add    $0x1,%rax
jmp    12d0 <_conf_value+0x190>
lea    0x1(%r12),%esi
mov    $0x1,%edi
call   1060 <calloc@plt>
test   %rax,%rax
je     1311 <_conf_value+0x1d1>
mov    %rax,%r15
add    %rbp,%rbx
mov    %rax,%rdi
mov    %rbx,%rsi
mov    %r12d,%edx
call   1030 <strncpy@plt>
jmp    1314 <_conf_value+0x1d4>
xor    %r15d,%r15d
mov    %r15,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i8* @_conf_value(i8* %0, i8* %1) {
%3 = icmp eq i8* %0, null
%4 = icmp eq i8* %1, null
%5 = or i1 %3, %4
br i1 %5, label %88, label %6
6: ; preds = %2
%7 = tail call i32 @strlen(i8* %1)
br label %8
8: ; preds = %82, %6
%9 = phi i64 [ 0, %6 ], [ %83, %82 ]
%10 = shl i64 %9, 32
%11 = ashr exact i64 %10, 32
br label %12
12: ; preds = %16, %8
%13 = phi i64 [ %17, %16 ], [ %11, %8 ]
%14 = getelementptr inbounds i8, i8* %0, i64 %13
%15 = load i8, i8* %14
switch i8 %15, label %18 [
i8 32, label %16
i8 9, label %16
i8 10, label %16
i8 0, label %88
]
16: ; preds = %12, %12, %12
%17 = add i64 %13, 1
br label %12
18: ; preds = %12
%19 = getelementptr inbounds i8, i8* %0, i64 %13
%20 = tail call i64 @strncmp(i8* %19, i8* %1, i32 %7)
%21 = icmp eq i64 %20, 0
br i1 %21, label %22, label %78
22: ; preds = %18
%23 = trunc i64 %13 to i32
%24 = add nsw i32 %7, %23
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds i8, i8* %0, i64 %25
%27 = load i8, i8* %26
switch i8 %27, label %78 [
i8 32, label %28
i8 9, label %28
i8 61, label %28
]
28: ; preds = %22, %22, %22
br label %29
29: ; preds = %28, %35
%30 = phi i8 [ %38, %35 ], [ %27, %28 ]
%31 = phi i64 [ %36, %35 ], [ %25, %28 ]
switch i8 %30, label %45 [
i8 32, label %35
i8 9, label %35
i8 61, label %32
]
32: ; preds = %29
%33 = shl i64 %31, 32
%34 = ashr exact i64 %33, 32
br label %39
35: ; preds = %29, %29
%36 = add i64 %31, 1
%37 = getelementptr inbounds i8, i8* %0, i64 %36
%38 = load i8, i8* %37
br label %29
39: ; preds = %44, %32
%40 = phi i64 [ %34, %32 ], [ %41, %44 ]
%41 = add nsw i64 %40, 1
%42 = getelementptr inbounds i8, i8* %0, i64 %41
%43 = load i8, i8* %42
switch i8 %43, label %45 [
i8 32, label %44
i8 9, label %44
]
44: ; preds = %39, %39
br label %39
45: ; preds = %29, %39
%46 = phi i64 [ %41, %39 ], [ %31, %29 ]
%47 = trunc i64 %46 to i32
%48 = shl i64 %46, 32
%49 = ashr exact i64 %48, 32
br label %50
50: ; preds = %54, %45
%51 = phi i64 [ %55, %54 ], [ %49, %45 ]
%52 = getelementptr inbounds i8, i8* %0, i64 %51
%53 = load i8, i8* %52
switch i8 %53, label %54 [
i8 10, label %56
i8 0, label %56
i8 35, label %56
]
54: ; preds = %50
%55 = add i64 %51, 1
br label %50
56: ; preds = %50, %50, %50
%57 = shl i64 %51, 32
%58 = ashr exact i64 %57, 32
br label %59
59: ; preds = %64, %56
%60 = phi i64 [ %58, %56 ], [ %61, %64 ]
%61 = add nsw i64 %60, -1
%62 = getelementptr inbounds i8, i8* %0, i64 %61
%63 = load i8, i8* %62
switch i8 %63, label %65 [
i8 32, label %64
i8 9, label %64
]
64: ; preds = %59, %59
br label %59
65: ; preds = %59
%66 = trunc i64 %61 to i32
%67 = sub nsw i32 %66, %47
%68 = icmp sgt i32 %67, -1
br i1 %68, label %69, label %78
69: ; preds = %65
%70 = add nuw nsw i32 %67, 2
%71 = tail call i64 @calloc(i32 1, i32 %70)
%72 = inttoptr i64 %71 to i8*
%73 = icmp eq i64 %71, 0
br i1 %73, label %88, label %74
74: ; preds = %69
%75 = add nuw nsw i32 %67, 1
%76 = getelementptr inbounds i8, i8* %0, i64 %49
%77 = tail call i32 @strncpy(i8* %72, i8* %76, i32 %75)
br label %88
78: ; preds = %65, %22, %18
%79 = phi i64 [ %13, %18 ], [ %13, %22 ], [ %61, %65 ]
%80 = shl i64 %79, 32
%81 = ashr exact i64 %80, 32
br label %82
82: ; preds = %86, %78
%83 = phi i64 [ %87, %86 ], [ %81, %78 ]
%84 = getelementptr inbounds i8, i8* %0, i64 %83
%85 = load i8, i8* %84
switch i8 %85, label %86 [
i8 0, label %88
i8 10, label %8
]
86: ; preds = %82
%87 = add i64 %83, 1
br label %82
88: ; preds = %12, %82, %74, %69, %2
%89 = phi i8* [ null, %2 ], [ null, %69 ], [ %72, %74 ], [ null, %82 ], [ null, %12 ]
ret i8* %89
}