#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 */
struct t_config_section {
  int dummy;
};
struct t_config_option {
  int dummy;
};
struct t_config_file {
  int dummy;
};

/* Variables and functions */
struct t_config_file *config_file_search(char *);
struct t_config_option *config_file_search_option(struct t_config_file *,
                                                  struct t_config_section *,
                                                  char *);
struct t_config_section *config_file_search_section(struct t_config_file *,
                                                    char *);
int /*<<< orphan*/ free(char *);
char *strchr(char const *, char);
char *string_strndup(char const *, int);
void config_file_search_with_string(const char *option_name,
                                    struct t_config_file **config_file,
                                    struct t_config_section **section,
                                    struct t_config_option **option,
                                    char **pos_option_name) {
  struct t_config_file *ptr_config;
  struct t_config_section *ptr_section;
  struct t_config_option *ptr_option;
  char *file_name, *pos_section, *section_name, *pos_option;
  if (config_file)
    *config_file = NULL;
  if (section)
    *section = NULL;
  if (option)
    *option = NULL;
  if (pos_option_name)
    *pos_option_name = NULL;
  ptr_config = NULL;
  ptr_section = NULL;
  ptr_option = NULL;
  file_name = NULL;
  section_name = NULL;
  pos_option = NULL;
  pos_section = strchr(option_name, '.');
  pos_option = (pos_section) ? strchr(pos_section + 1, '.') : NULL;
  if (pos_section && pos_option) {
    file_name = string_strndup(option_name, pos_section - option_name);
    section_name =
        string_strndup(pos_section + 1, pos_option - pos_section - 1);
    pos_option++;
  }
  if (file_name && section_name && pos_option) {
    if (pos_option_name)
      *pos_option_name = pos_option;
    ptr_config = config_file_search(file_name);
    if (ptr_config) {
      ptr_section = config_file_search_section(ptr_config, section_name);
      if (ptr_section) {
        ptr_option =
            config_file_search_option(ptr_config, ptr_section, pos_option);
      }
    }
  }
  if (file_name)
    free(file_name);
  if (section_name)
    free(section_name);
  if (config_file)
    *config_file = ptr_config;
  if (section)
    *section = ptr_section;
  if (option)
    *option = ptr_option;
}


x86 assembly (clang, -O0):
<config_file_search_with_string>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     1192 <config_file_search_with_string+0x32>
mov    -0x10(%rbp),%rax
movq   $0x0,(%rax)
cmpq   $0x0,-0x18(%rbp)
je     11a8 <config_file_search_with_string+0x48>
mov    -0x18(%rbp),%rax
movq   $0x0,(%rax)
cmpq   $0x0,-0x20(%rbp)
je     11be <config_file_search_with_string+0x5e>
mov    -0x20(%rbp),%rax
movq   $0x0,(%rax)
cmpq   $0x0,-0x28(%rbp)
je     11d4 <config_file_search_with_string+0x74>
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
movq   $0x0,-0x30(%rbp)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x48(%rbp)
movq   $0x0,-0x58(%rbp)
movq   $0x0,-0x60(%rbp)
mov    -0x8(%rbp),%rdi
mov    $0x2e,%esi
call   1060 <strchr@plt>
mov    %rax,-0x50(%rbp)
cmpq   $0x0,-0x50(%rbp)
je     123c <config_file_search_with_string+0xdc>
mov    -0x50(%rbp),%rdi
add    $0x1,%rdi
mov    $0x2e,%esi
call   1060 <strchr@plt>
mov    %rax,-0x68(%rbp)
jmp    1247 <config_file_search_with_string+0xe7>
xor    %eax,%eax
mov    %rax,-0x68(%rbp)
jmp    1247 <config_file_search_with_string+0xe7>
mov    -0x68(%rbp),%rax
mov    %rax,-0x60(%rbp)
cmpq   $0x0,-0x50(%rbp)
je     12ad <config_file_search_with_string+0x14d>
cmpq   $0x0,-0x60(%rbp)
je     12ad <config_file_search_with_string+0x14d>
mov    -0x8(%rbp),%rdi
mov    -0x50(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%esi
call   1080 <string_strndup@plt>
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rdi
add    $0x1,%rdi
mov    -0x60(%rbp),%rax
mov    -0x50(%rbp),%rcx
sub    %rcx,%rax
sub    $0x1,%rax
mov    %eax,%esi
call   1080 <string_strndup@plt>
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
cmpq   $0x0,-0x48(%rbp)
je     1337 <config_file_search_with_string+0x1d7>
cmpq   $0x0,-0x58(%rbp)
je     1337 <config_file_search_with_string+0x1d7>
cmpq   $0x0,-0x60(%rbp)
je     1337 <config_file_search_with_string+0x1d7>
cmpq   $0x0,-0x28(%rbp)
je     12e4 <config_file_search_with_string+0x184>
mov    -0x60(%rbp),%rcx
mov    -0x28(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x48(%rbp),%rdi
call   1050 <config_file_search@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x0,-0x30(%rbp)
je     1332 <config_file_search_with_string+0x1d2>
mov    -0x30(%rbp),%rdi
mov    -0x58(%rbp),%rsi
call   1070 <config_file_search_section@plt>
mov    %rax,-0x38(%rbp)
cmpq   $0x0,-0x38(%rbp)
je     132d <config_file_search_with_string+0x1cd>
mov    -0x30(%rbp),%rdi
mov    -0x38(%rbp),%rsi
mov    -0x60(%rbp),%rdx
call   1040 <config_file_search_option@plt>
mov    %rax,-0x40(%rbp)
jmp    1332 <config_file_search_with_string+0x1d2>
jmp    1337 <config_file_search_with_string+0x1d7>
cmpq   $0x0,-0x48(%rbp)
je     134b <config_file_search_with_string+0x1eb>
mov    -0x48(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x58(%rbp)
je     135f <config_file_search_with_string+0x1ff>
mov    -0x58(%rbp),%rdi
call   1030 <free@plt>
cmpq   $0x0,-0x10(%rbp)
je     1375 <config_file_search_with_string+0x215>
mov    -0x30(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
cmpq   $0x0,-0x18(%rbp)
je     138b <config_file_search_with_string+0x22b>
mov    -0x38(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,(%rax)
cmpq   $0x0,-0x20(%rbp)
je     13a1 <config_file_search_with_string+0x241>
mov    -0x40(%rbp),%rcx
mov    -0x20(%rbp),%rax
mov    %rcx,(%rax)
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<config_file_search_with_string>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %r8,%r12
mov    %rcx,%rbp
mov    %rdx,%rbx
mov    %rdi,%r13
test   %rsi,%rsi
je     1186 <config_file_search_with_string+0x26>
movq   $0x0,(%rsi)
test   %rbx,%rbx
je     1192 <config_file_search_with_string+0x32>
movq   $0x0,(%rbx)
test   %rbp,%rbp
je     119f <config_file_search_with_string+0x3f>
movq   $0x0,0x0(%rbp)
mov    %rsi,0x10(%rsp)
test   %r12,%r12
je     11b1 <config_file_search_with_string+0x51>
movq   $0x0,(%r12)
mov    %r13,%rdi
mov    $0x2e,%esi
call   1060 <strchr@plt>
test   %rax,%rax
je     126e <config_file_search_with_string+0x10e>
mov    %rax,%r14
mov    %rbx,0x8(%rsp)
lea    0x1(%rax),%r15
mov    %r15,%rdi
mov    $0x2e,%esi
call   1060 <strchr@plt>
test   %rax,%rax
je     1279 <config_file_search_with_string+0x119>
mov    %rax,%rbx
mov    %r14d,%esi
sub    %r13d,%esi
mov    %r13,%rdi
call   1080 <string_strndup@plt>
not    %r14d
add    %ebx,%r14d
mov    %r15,%rdi
mov    %rax,%r15
mov    %r14d,%esi
call   1080 <string_strndup@plt>
mov    %rax,%r13
xor    %r14d,%r14d
test   %r15,%r15
je     128c <config_file_search_with_string+0x12c>
test   %r13,%r13
je     128c <config_file_search_with_string+0x12c>
add    $0x1,%rbx
test   %r12,%r12
je     122b <config_file_search_with_string+0xcb>
mov    %rbx,(%r12)
mov    %r15,%rdi
call   1050 <config_file_search@plt>
test   %rax,%rax
je     1289 <config_file_search_with_string+0x129>
mov    %rax,%r14
mov    %rax,%rdi
mov    %r13,%rsi
call   1070 <config_file_search_section@plt>
test   %rax,%rax
je     128c <config_file_search_with_string+0x12c>
mov    %rax,%r12
mov    %r14,%rdi
mov    %rax,%rsi
mov    %rbx,%rdx
call   1040 <config_file_search_option@plt>
mov    %r15,%rdi
mov    %rax,%r15
call   1030 <free@plt>
mov    0x8(%rsp),%rbx
jmp    12ac <config_file_search_with_string+0x14c>
xor    %r12d,%r12d
xor    %r15d,%r15d
xor    %r14d,%r14d
jmp    12b4 <config_file_search_with_string+0x154>
xor    %r12d,%r12d
xor    %r15d,%r15d
xor    %r14d,%r14d
mov    0x8(%rsp),%rbx
jmp    12b4 <config_file_search_with_string+0x154>
xor    %r14d,%r14d
test   %r15,%r15
je     1299 <config_file_search_with_string+0x139>
mov    %r15,%rdi
call   1030 <free@plt>
xor    %r12d,%r12d
mov    $0x0,%r15d
test   %r13,%r13
mov    0x8(%rsp),%rbx
je     12b4 <config_file_search_with_string+0x154>
mov    %r13,%rdi
call   1030 <free@plt>
mov    0x10(%rsp),%rax
test   %rax,%rax
je     12c1 <config_file_search_with_string+0x161>
mov    %r14,(%rax)
test   %rbx,%rbx
je     12c9 <config_file_search_with_string+0x169>
mov    %r12,(%rbx)
test   %rbp,%rbp
je     12d2 <config_file_search_with_string+0x172>
mov    %r15,0x0(%rbp)
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.t_config_file = type { i32 }
%struct.t_config_section = type { i32 }
%struct.t_config_option = type { i32 }
define void @config_file_search_with_string(i8* %0, %struct.t_config_file** %1, %struct.t_config_section** %2, %struct.t_config_option** %3, i8** %4) {
%6 = alloca i8*
%7 = alloca %struct.t_config_file**
%8 = alloca %struct.t_config_section**
%9 = alloca %struct.t_config_option**
%10 = alloca i8**
%11 = alloca %struct.t_config_file*
%12 = alloca %struct.t_config_section*
%13 = alloca %struct.t_config_option*
%14 = alloca i8*
%15 = alloca i8*
%16 = alloca i8*
%17 = alloca i8*
store i8* %0, i8** %6
store %struct.t_config_file** %1, %struct.t_config_file*** %7
store %struct.t_config_section** %2, %struct.t_config_section*** %8
store %struct.t_config_option** %3, %struct.t_config_option*** %9
store i8** %4, i8*** %10
%18 = load %struct.t_config_file**, %struct.t_config_file*** %7
%19 = icmp ne %struct.t_config_file** %18, null
br i1 %19, label %20, label %22
20: ; preds = %5
%21 = load %struct.t_config_file**, %struct.t_config_file*** %7
store %struct.t_config_file* null, %struct.t_config_file** %21
br label %22
22: ; preds = %20, %5
%23 = load %struct.t_config_section**, %struct.t_config_section*** %8
%24 = icmp ne %struct.t_config_section** %23, null
br i1 %24, label %25, label %27
25: ; preds = %22
%26 = load %struct.t_config_section**, %struct.t_config_section*** %8
store %struct.t_config_section* null, %struct.t_config_section** %26
br label %27
27: ; preds = %25, %22
%28 = load %struct.t_config_option**, %struct.t_config_option*** %9
%29 = icmp ne %struct.t_config_option** %28, null
br i1 %29, label %30, label %32
30: ; preds = %27
%31 = load %struct.t_config_option**, %struct.t_config_option*** %9
store %struct.t_config_option* null, %struct.t_config_option** %31
br label %32
32: ; preds = %30, %27
%33 = load i8**, i8*** %10
%34 = icmp ne i8** %33, null
br i1 %34, label %35, label %37
35: ; preds = %32
%36 = load i8**, i8*** %10
store i8* null, i8** %36
br label %37
37: ; preds = %35, %32
store %struct.t_config_file* null, %struct.t_config_file** %11
store %struct.t_config_section* null, %struct.t_config_section** %12
store %struct.t_config_option* null, %struct.t_config_option** %13
store i8* null, i8** %14
store i8* null, i8** %16
store i8* null, i8** %17
%38 = load i8*, i8** %6
%39 = call i8* @strchr(i8* %38, i8 signext 46)
store i8* %39, i8** %15
%40 = load i8*, i8** %15
%41 = icmp ne i8* %40, null
br i1 %41, label %42, label %46
42: ; preds = %37
%43 = load i8*, i8** %15
%44 = getelementptr inbounds i8, i8* %43, i64 1
%45 = call i8* @strchr(i8* %44, i8 signext 46)
br label %47
46: ; preds = %37
br label %47
47: ; preds = %46, %42
%48 = phi i8* [ %45, %42 ], [ null, %46 ]
store i8* %48, i8** %17
%49 = load i8*, i8** %15
%50 = icmp ne i8* %49, null
br i1 %50, label %51, label %75
51: ; preds = %47
%52 = load i8*, i8** %17
%53 = icmp ne i8* %52, null
br i1 %53, label %54, label %75
54: ; preds = %51
%55 = load i8*, i8** %6
%56 = load i8*, i8** %15
%57 = load i8*, i8** %6
%58 = ptrtoint i8* %56 to i64
%59 = ptrtoint i8* %57 to i64
%60 = sub i64 %58, %59
%61 = trunc i64 %60 to i32
%62 = call i8* @string_strndup(i8* %55, i32 %61)
store i8* %62, i8** %14
%63 = load i8*, i8** %15
%64 = getelementptr inbounds i8, i8* %63, i64 1
%65 = load i8*, i8** %17
%66 = load i8*, i8** %15
%67 = ptrtoint i8* %65 to i64
%68 = ptrtoint i8* %66 to i64
%69 = sub i64 %67, %68
%70 = sub nsw i64 %69, 1
%71 = trunc i64 %70 to i32
%72 = call i8* @string_strndup(i8* %64, i32 %71)
store i8* %72, i8** %16
%73 = load i8*, i8** %17
%74 = getelementptr inbounds i8, i8* %73, i32 1
store i8* %74, i8** %17
br label %75
75: ; preds = %54, %51, %47
%76 = load i8*, i8** %14
%77 = icmp ne i8* %76, null
br i1 %77, label %78, label %108
78: ; preds = %75
%79 = load i8*, i8** %16
%80 = icmp ne i8* %79, null
br i1 %80, label %81, label %108
81: ; preds = %78
%82 = load i8*, i8** %17
%83 = icmp ne i8* %82, null
br i1 %83, label %84, label %108
84: ; preds = %81
%85 = load i8**, i8*** %10
%86 = icmp ne i8** %85, null
br i1 %86, label %87, label %90
87: ; preds = %84
%88 = load i8*, i8** %17
%89 = load i8**, i8*** %10
store i8* %88, i8** %89
br label %90
90: ; preds = %87, %84
%91 = load i8*, i8** %14
%92 = call %struct.t_config_file* @config_file_search(i8* %91)
store %struct.t_config_file* %92, %struct.t_config_file** %11
%93 = load %struct.t_config_file*, %struct.t_config_file** %11
%94 = icmp ne %struct.t_config_file* %93, null
br i1 %94, label %95, label %107
95: ; preds = %90
%96 = load %struct.t_config_file*, %struct.t_config_file** %11
%97 = load i8*, i8** %16
%98 = call %struct.t_config_section* @config_file_search_section(%struct.t_config_file* %96, i8* %97)
store %struct.t_config_section* %98, %struct.t_config_section** %12
%99 = load %struct.t_config_section*, %struct.t_config_section** %12
%100 = icmp ne %struct.t_config_section* %99, null
br i1 %100, label %101, label %106
101: ; preds = %95
%102 = load %struct.t_config_file*, %struct.t_config_file** %11
%103 = load %struct.t_config_section*, %struct.t_config_section** %12
%104 = load i8*, i8** %17
%105 = call %struct.t_config_option* @config_file_search_option(%struct.t_config_file* %102, %struct.t_config_section* %103, i8* %104)
store %struct.t_config_option* %105, %struct.t_config_option** %13
br label %106
106: ; preds = %101, %95
br label %107
107: ; preds = %106, %90
br label %108
108: ; preds = %107, %81, %78, %75
%109 = load i8*, i8** %14
%110 = icmp ne i8* %109, null
br i1 %110, label %111, label %114
111: ; preds = %108
%112 = load i8*, i8** %14
%113 = call i32 @free(i8* %112)
br label %114
114: ; preds = %111, %108
%115 = load i8*, i8** %16
%116 = icmp ne i8* %115, null
br i1 %116, label %117, label %120
117: ; preds = %114
%118 = load i8*, i8** %16
%119 = call i32 @free(i8* %118)
br label %120
120: ; preds = %117, %114
%121 = load %struct.t_config_file**, %struct.t_config_file*** %7
%122 = icmp ne %struct.t_config_file** %121, null
br i1 %122, label %123, label %126
123: ; preds = %120
%124 = load %struct.t_config_file*, %struct.t_config_file** %11
%125 = load %struct.t_config_file**, %struct.t_config_file*** %7
store %struct.t_config_file* %124, %struct.t_config_file** %125
br label %126
126: ; preds = %123, %120
%127 = load %struct.t_config_section**, %struct.t_config_section*** %8
%128 = icmp ne %struct.t_config_section** %127, null
br i1 %128, label %129, label %132
129: ; preds = %126
%130 = load %struct.t_config_section*, %struct.t_config_section** %12
%131 = load %struct.t_config_section**, %struct.t_config_section*** %8
store %struct.t_config_section* %130, %struct.t_config_section** %131
br label %132
132: ; preds = %129, %126
%133 = load %struct.t_config_option**, %struct.t_config_option*** %9
%134 = icmp ne %struct.t_config_option** %133, null
br i1 %134, label %135, label %138
135: ; preds = %132
%136 = load %struct.t_config_option*, %struct.t_config_option** %13
%137 = load %struct.t_config_option**, %struct.t_config_option*** %9
store %struct.t_config_option* %136, %struct.t_config_option** %137
br label %138
138: ; preds = %135, %132
ret void
}

LLVM IR (-O2):
%struct.t_config_file = type { i32 }
%struct.t_config_section = type { i32 }
%struct.t_config_option = type { i32 }
define void @config_file_search_with_string(i8* %0, %struct.t_config_file** writeonly %1, %struct.t_config_section** writeonly %2, %struct.t_config_option** writeonly %3, i8** writeonly %4) {
%6 = icmp eq %struct.t_config_file** %1, null
br i1 %6, label %8, label %7
7: ; preds = %5
store %struct.t_config_file* null, %struct.t_config_file** %1
br label %8
8: ; preds = %7, %5
%9 = icmp eq %struct.t_config_section** %2, null
br i1 %9, label %11, label %10
10: ; preds = %8
store %struct.t_config_section* null, %struct.t_config_section** %2
br label %11
11: ; preds = %10, %8
%12 = icmp eq %struct.t_config_option** %3, null
br i1 %12, label %14, label %13
13: ; preds = %11
store %struct.t_config_option* null, %struct.t_config_option** %3
br label %14
14: ; preds = %13, %11
%15 = icmp eq i8** %4, null
br i1 %15, label %17, label %16
16: ; preds = %14
store i8* null, i8** %4
br label %17
17: ; preds = %16, %14
%18 = tail call i8* @strchr(i8* dereferenceable(1) %0, i8 signext 46)
%19 = icmp eq i8* %18, null
br i1 %19, label %60, label %20
20: ; preds = %17
%21 = getelementptr inbounds i8, i8* %18, i64 1
%22 = tail call i8* @strchr(i8* %21, i8 signext 46)
%23 = icmp eq i8* %22, null
br i1 %23, label %60, label %24
24: ; preds = %20
%25 = ptrtoint i8* %18 to i64
%26 = ptrtoint i8* %0 to i64
%27 = sub i64 %25, %26
%28 = trunc i64 %27 to i32
%29 = tail call i8* @string_strndup(i8* %0, i32 %28)
%30 = ptrtoint i8* %22 to i64
%31 = xor i64 %25, -1
%32 = add i64 %30, %31
%33 = trunc i64 %32 to i32
%34 = tail call i8* @string_strndup(i8* %21, i32 %33)
%35 = getelementptr inbounds i8, i8* %22, i64 1
%36 = icmp ne i8* %29, null
%37 = icmp ne i8* %34, null
%38 = select i1 %36, i1 %37, i1 false
br i1 %38, label %39, label %50
39: ; preds = %24
br i1 %15, label %41, label %40
40: ; preds = %39
store i8* %35, i8** %4
br label %41
41: ; preds = %40, %39
%42 = tail call %struct.t_config_file* @config_file_search(i8* %29)
%43 = icmp eq %struct.t_config_file* %42, null
br i1 %43, label %50, label %44
44: ; preds = %41
%45 = tail call %struct.t_config_section* @config_file_search_section(%struct.t_config_file* %42, i8* %34)
%46 = icmp eq %struct.t_config_section* %45, null
br i1 %46, label %50, label %47
47: ; preds = %44
%48 = tail call %struct.t_config_option* @config_file_search_option(%struct.t_config_file* %42, %struct.t_config_section* %45, i8* %35)
%49 = tail call i32 @free(i8* %29)
br label %55
50: ; preds = %41, %44, %24
%51 = phi %struct.t_config_file* [ %42, %44 ], [ null, %41 ], [ null, %24 ]
br i1 %36, label %52, label %54
52: ; preds = %50
%53 = tail call i32 @free(i8* %29)
br i1 %37, label %55, label %60
54: ; preds = %50
br i1 %37, label %55, label %60
55: ; preds = %47, %52, %54
%56 = phi %struct.t_config_section* [ null, %52 ], [ null, %54 ], [ %45, %47 ]
%57 = phi %struct.t_config_option* [ null, %52 ], [ null, %54 ], [ %48, %47 ]
%58 = phi %struct.t_config_file* [ %51, %52 ], [ %51, %54 ], [ %42, %47 ]
%59 = tail call i32 @free(i8* %34)
br label %60
60: ; preds = %17, %20, %52, %55, %54
%61 = phi %struct.t_config_section* [ %56, %55 ], [ null, %54 ], [ null, %52 ], [ null, %20 ], [ null, %17 ]
%62 = phi %struct.t_config_option* [ %57, %55 ], [ null, %54 ], [ null, %52 ], [ null, %20 ], [ null, %17 ]
%63 = phi %struct.t_config_file* [ %58, %55 ], [ %51, %54 ], [ %51, %52 ], [ null, %20 ], [ null, %17 ]
br i1 %6, label %65, label %64
64: ; preds = %60
store %struct.t_config_file* %63, %struct.t_config_file** %1
br label %65
65: ; preds = %64, %60
br i1 %9, label %67, label %66
66: ; preds = %65
store %struct.t_config_section* %61, %struct.t_config_section** %2
br label %67
67: ; preds = %66, %65
br i1 %12, label %69, label %68
68: ; preds = %67
store %struct.t_config_option* %62, %struct.t_config_option** %3
br label %69
69: ; preds = %68, %67
ret void
}