#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*/ Elf64_Syminfo;
typedef int /*<<< orphan*/ Elf64_Sym;
typedef int /*<<< orphan*/ Elf64_Rela;
typedef int /*<<< orphan*/ Elf64_Rel;
typedef int /*<<< orphan*/ Elf32_Syminfo;
typedef int /*<<< orphan*/ Elf32_Sym;
typedef int /*<<< orphan*/ Elf32_Rela;
typedef int /*<<< orphan*/ Elf32_Rel;

/* Variables and functions */
int /*<<< orphan*/ DT_FINI_ARRAY;
#define DT_FINI_ARRAYSZ 139
int /*<<< orphan*/ DT_INIT_ARRAY;
#define DT_INIT_ARRAYSZ 138
int /*<<< orphan*/ DT_JMPREL;
#define DT_PLTRELSZ 137
int /*<<< orphan*/ DT_PREINIT_ARRAY;
#define DT_PREINIT_ARRAYSZ 136
int /*<<< orphan*/ DT_REL;
int /*<<< orphan*/ DT_RELA;
#define DT_RELAENT 135
#define DT_RELASZ 134
#define DT_RELENT 133
#define DT_RELSZ 132
#define DT_STRSZ 131
int /*<<< orphan*/ DT_STRTAB;
#define DT_SYMENT 130
#define DT_SYMINENT 129
int /*<<< orphan*/ DT_SYMINFO;
#define DT_SYMINSZ 128
int /*<<< orphan*/ DT_SYMTAB;
long dynget(int /*<<< orphan*/);
int /*<<< orphan*/ getaddressoffset(long);
int getindexfromoffset(int /*<<< orphan*/);
char const *getsizestr(long, int);
int /*<<< orphan*/ iself64();
char const *strdynamicvalue(long tag, long value) {
  long offset;
  int ndx;
  switch (tag) {
  case DT_STRSZ:
    if ((offset = dynget(DT_STRTAB)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_RELSZ:
    if ((offset = dynget(DT_REL)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_RELASZ:
    if ((offset = dynget(DT_RELA)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_PLTRELSZ:
    if ((offset = dynget(DT_JMPREL)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_SYMINSZ:
    if ((offset = dynget(DT_SYMINFO)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_INIT_ARRAYSZ:
    if ((offset = dynget(DT_INIT_ARRAY)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_FINI_ARRAYSZ:
    if ((offset = dynget(DT_FINI_ARRAY)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_PREINIT_ARRAYSZ:
    if ((offset = dynget(DT_PREINIT_ARRAY)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_RELENT:
    if (value == ((int)(iself64() ? sizeof(Elf64_Rel) : sizeof(Elf32_Rel))))
      return (iself64() ? "sizeof(Elf64_"
                          "Rel"
                          ")"
                        : "sizeof(Elf32_"
                          "Rel"
                          ")");
    if ((offset = dynget(DT_REL)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_RELAENT:
    if (value == ((int)(iself64() ? sizeof(Elf64_Rela) : sizeof(Elf32_Rela))))
      return (iself64() ? "sizeof(Elf64_"
                          "Rela"
                          ")"
                        : "sizeof(Elf32_"
                          "Rela"
                          ")");
    if ((offset = dynget(DT_RELA)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_SYMENT:
    if (value == ((int)(iself64() ? sizeof(Elf64_Sym) : sizeof(Elf32_Sym))))
      return (iself64() ? "sizeof(Elf64_"
                          "Sym"
                          ")"
                        : "sizeof(Elf32_"
                          "Sym"
                          ")");
    if ((offset = dynget(DT_SYMTAB)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  case DT_SYMINENT:
    if (value ==
        ((int)(iself64() ? sizeof(Elf64_Syminfo) : sizeof(Elf32_Syminfo))))
      return (iself64() ? "sizeof(Elf64_"
                          "Syminfo"
                          ")"
                        : "sizeof(Elf32_"
                          "Syminfo"
                          ")");
    if ((offset = dynget(DT_SYMINFO)) != 0)
      if ((ndx = getindexfromoffset(getaddressoffset(offset))) >= 0)
        return getsizestr(value, ndx);
    break;
  }
  return NULL;
}


x86 assembly (clang, -O0):
<strdynamicvalue>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
add    $0xffffffffffffff80,%rax
mov    %rax,-0x30(%rbp)
sub    $0xb,%rax
ja     16ee <strdynamicvalue+0x59e>
mov    -0x30(%rbp),%rax
lea    0xe7f(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x2e67(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     11dc <strdynamicvalue+0x8c>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     11d7 <strdynamicvalue+0x87>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    11dc <strdynamicvalue+0x8c>
jmp    16ee <strdynamicvalue+0x59e>
mov    0x2e08(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     1233 <strdynamicvalue+0xe3>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     122e <strdynamicvalue+0xde>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    1233 <strdynamicvalue+0xe3>
jmp    16ee <strdynamicvalue+0x59e>
mov    0x2d81(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     128a <strdynamicvalue+0x13a>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     1285 <strdynamicvalue+0x135>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    128a <strdynamicvalue+0x13a>
jmp    16ee <strdynamicvalue+0x59e>
mov    0x2d32(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     12e1 <strdynamicvalue+0x191>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     12dc <strdynamicvalue+0x18c>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    12e1 <strdynamicvalue+0x191>
jmp    16ee <strdynamicvalue+0x59e>
mov    0x2ceb(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     1338 <strdynamicvalue+0x1e8>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     1333 <strdynamicvalue+0x1e3>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    1338 <strdynamicvalue+0x1e8>
jmp    16ee <strdynamicvalue+0x59e>
mov    0x2c64(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     138f <strdynamicvalue+0x23f>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     138a <strdynamicvalue+0x23a>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    138f <strdynamicvalue+0x23f>
jmp    16ee <strdynamicvalue+0x59e>
mov    0x2c1d(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     13e6 <strdynamicvalue+0x296>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     13e1 <strdynamicvalue+0x291>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    13e6 <strdynamicvalue+0x296>
jmp    16ee <strdynamicvalue+0x59e>
mov    0x2bae(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     143d <strdynamicvalue+0x2ed>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     1438 <strdynamicvalue+0x2e8>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    143d <strdynamicvalue+0x2ed>
jmp    16ee <strdynamicvalue+0x59e>
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    $0x0,%al
call   1040 <iself64@plt>
mov    %eax,%edx
mov    -0x38(%rbp),%rax
mov    $0x4,%ecx
cmp    $0x0,%edx
cmovne %rcx,%rcx
movslq %ecx,%rcx
cmp    %rcx,%rax
jne    1496 <strdynamicvalue+0x346>
mov    $0x0,%al
call   1040 <iself64@plt>
mov    %eax,%edx
lea    0xbc3(%rip),%rax
lea    0xbaa(%rip),%rcx
cmp    $0x0,%edx
cmovne %rcx,%rax
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
mov    0x2b53(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     14e8 <strdynamicvalue+0x398>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     14e3 <strdynamicvalue+0x393>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    14e8 <strdynamicvalue+0x398>
jmp    16ee <strdynamicvalue+0x59e>
mov    -0x18(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    $0x0,%al
call   1040 <iself64@plt>
mov    %eax,%edx
mov    -0x40(%rbp),%rax
mov    $0x4,%ecx
cmp    $0x0,%edx
cmovne %rcx,%rcx
movslq %ecx,%rcx
cmp    %rcx,%rax
jne    1541 <strdynamicvalue+0x3f1>
mov    $0x0,%al
call   1040 <iself64@plt>
mov    %eax,%edx
lea    0xb3d(%rip),%rax
lea    0xb23(%rip),%rcx
cmp    $0x0,%edx
cmovne %rcx,%rax
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
mov    0x2a78(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     1593 <strdynamicvalue+0x443>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     158e <strdynamicvalue+0x43e>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    1593 <strdynamicvalue+0x443>
jmp    16ee <strdynamicvalue+0x59e>
mov    -0x18(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    $0x0,%al
call   1040 <iself64@plt>
mov    %eax,%edx
mov    -0x48(%rbp),%rax
mov    $0x4,%ecx
cmp    $0x0,%edx
cmovne %rcx,%rcx
movslq %ecx,%rcx
cmp    %rcx,%rax
jne    15ec <strdynamicvalue+0x49c>
mov    $0x0,%al
call   1040 <iself64@plt>
mov    %eax,%edx
lea    0xab7(%rip),%rax
lea    0xa9e(%rip),%rcx
cmp    $0x0,%edx
cmovne %rcx,%rax
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
mov    0x29bd(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     163e <strdynamicvalue+0x4ee>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     1639 <strdynamicvalue+0x4e9>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    163e <strdynamicvalue+0x4ee>
jmp    16ee <strdynamicvalue+0x59e>
mov    -0x18(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    $0x0,%al
call   1040 <iself64@plt>
mov    %eax,%edx
mov    -0x50(%rbp),%rax
mov    $0x4,%ecx
cmp    $0x0,%edx
cmovne %rcx,%rcx
movslq %ecx,%rcx
cmp    %rcx,%rax
jne    1697 <strdynamicvalue+0x547>
mov    $0x0,%al
call   1040 <iself64@plt>
mov    %eax,%edx
lea    0xa34(%rip),%rax
lea    0xa17(%rip),%rcx
cmp    $0x0,%edx
cmovne %rcx,%rax
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
mov    0x293a(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
je     16e9 <strdynamicvalue+0x599>
mov    -0x20(%rbp),%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x0,%eax
jl     16e4 <strdynamicvalue+0x594>
mov    -0x18(%rbp),%rdi
mov    -0x24(%rbp),%esi
call   1050 <getsizestr@plt>
mov    %rax,-0x8(%rbp)
jmp    16f6 <strdynamicvalue+0x5a6>
jmp    16e9 <strdynamicvalue+0x599>
jmp    16ee <strdynamicvalue+0x59e>
movq   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<strdynamicvalue>:
push   %rbx
add    $0xffffffffffffff80,%rdi
cmp    $0xb,%rdi
ja     1294 <strdynamicvalue+0x144>
mov    %rsi,%rbx
lea    0xe97(%rip),%rax
movslq (%rax,%rdi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
xor    %eax,%eax
call   1040 <iself64@plt>
cmp    $0x4,%rbx
jne    119b <strdynamicvalue+0x4b>
xor    %eax,%eax
call   1040 <iself64@plt>
test   %eax,%eax
lea    0xf25(%rip),%rcx
lea    0xf08(%rip),%rax
jmp    1230 <strdynamicvalue+0xe0>
mov    0x2e36(%rip),%rax
jmp    126a <strdynamicvalue+0x11a>
xor    %eax,%eax
call   1040 <iself64@plt>
cmp    $0x4,%rbx
jne    1263 <strdynamicvalue+0x113>
xor    %eax,%eax
call   1040 <iself64@plt>
test   %eax,%eax
lea    0xec4(%rip),%rcx
lea    0xeab(%rip),%rax
jmp    1230 <strdynamicvalue+0xe0>
mov    0x2e20(%rip),%rax
jmp    126a <strdynamicvalue+0x11a>
xor    %eax,%eax
call   1040 <iself64@plt>
cmp    $0x4,%rbx
jne    1203 <strdynamicvalue+0xb3>
xor    %eax,%eax
call   1040 <iself64@plt>
test   %eax,%eax
lea    0xe48(%rip),%rcx
lea    0xe2f(%rip),%rax
jmp    1230 <strdynamicvalue+0xe0>
mov    0x2de6(%rip),%rax
jmp    126a <strdynamicvalue+0x11a>
xor    %eax,%eax
call   1040 <iself64@plt>
cmp    $0x4,%rbx
jne    1236 <strdynamicvalue+0xe6>
xor    %eax,%eax
call   1040 <iself64@plt>
test   %eax,%eax
lea    0xe3e(%rip),%rcx
lea    0xe24(%rip),%rax
cmove  %rcx,%rax
pop    %rbx
ret
mov    0x2d83(%rip),%rax
jmp    126a <strdynamicvalue+0x11a>
mov    0x2d82(%rip),%rax
jmp    126a <strdynamicvalue+0x11a>
mov    0x2d69(%rip),%rax
jmp    126a <strdynamicvalue+0x11a>
mov    0x2d48(%rip),%rax
jmp    126a <strdynamicvalue+0x11a>
mov    0x2d47(%rip),%rax
jmp    126a <strdynamicvalue+0x11a>
mov    0x2d46(%rip),%rax
mov    (%rax),%edi
call   1060 <dynget@plt>
test   %rax,%rax
je     1294 <strdynamicvalue+0x144>
mov    %rax,%rdi
call   1070 <getaddressoffset@plt>
mov    %eax,%edi
call   1030 <getindexfromoffset@plt>
test   %eax,%eax
js     1294 <strdynamicvalue+0x144>
mov    %rbx,%rdi
mov    %eax,%esi
pop    %rbx
jmp    1050 <getsizestr@plt>
xor    %eax,%eax
pop    %rbx
ret

LLVM IR (-O0):
@DT_STRTAB = global i32 0
@DT_REL = global i32 0
@DT_RELA = global i32 0
@DT_JMPREL = global i32 0
@DT_SYMINFO = global i32 0
@DT_INIT_ARRAY = global i32 0
@DT_FINI_ARRAY = global i32 0
@DT_PREINIT_ARRAY = global i32 0
@.str = [18 x i8] c"sizeof(Elf64_Rel)\00"
@.str.1 = [18 x i8] c"sizeof(Elf32_Rel)\00"
@.str.2 = [19 x i8] c"sizeof(Elf64_Rela)\00"
@.str.3 = [19 x i8] c"sizeof(Elf32_Rela)\00"
@.str.4 = [18 x i8] c"sizeof(Elf64_Sym)\00"
@.str.5 = [18 x i8] c"sizeof(Elf32_Sym)\00"
@DT_SYMTAB = global i32 0
@.str.6 = [22 x i8] c"sizeof(Elf64_Syminfo)\00"
@.str.7 = [22 x i8] c"sizeof(Elf32_Syminfo)\00"
define i8* @strdynamicvalue(i64 %0, i64 %1) {
%3 = alloca i8*
%4 = alloca i64
%5 = alloca i64
%6 = alloca i64
%7 = alloca i32
store i64 %0, i64* %4
store i64 %1, i64* %5
%8 = load i64, i64* %4
switch i64 %8, label %245 [
i64 131, label %9
i64 132, label %24
i64 134, label %39
i64 137, label %54
i64 128, label %69
i64 138, label %84
i64 139, label %99
i64 136, label %114
i64 133, label %129
i64 135, label %158
i64 130, label %187
i64 129, label %216
]
9: ; preds = %2
%10 = load i32, i32* @DT_STRTAB
%11 = call i64 @dynget(i32 %10)
store i64 %11, i64* %6
%12 = icmp ne i64 %11, 0
br i1 %12, label %13, label %23
13: ; preds = %9
%14 = load i64, i64* %6
%15 = call i32 @getaddressoffset(i64 %14)
%16 = call i32 @getindexfromoffset(i32 %15)
store i32 %16, i32* %7
%17 = icmp sge i32 %16, 0
br i1 %17, label %18, label %22
18: ; preds = %13
%19 = load i64, i64* %5
%20 = load i32, i32* %7
%21 = call i8* @getsizestr(i64 %19, i32 %20)
store i8* %21, i8** %3
br label %246
22: ; preds = %13
br label %23
23: ; preds = %22, %9
br label %245
24: ; preds = %2
%25 = load i32, i32* @DT_REL
%26 = call i64 @dynget(i32 %25)
store i64 %26, i64* %6
%27 = icmp ne i64 %26, 0
br i1 %27, label %28, label %38
28: ; preds = %24
%29 = load i64, i64* %6
%30 = call i32 @getaddressoffset(i64 %29)
%31 = call i32 @getindexfromoffset(i32 %30)
store i32 %31, i32* %7
%32 = icmp sge i32 %31, 0
br i1 %32, label %33, label %37
33: ; preds = %28
%34 = load i64, i64* %5
%35 = load i32, i32* %7
%36 = call i8* @getsizestr(i64 %34, i32 %35)
store i8* %36, i8** %3
br label %246
37: ; preds = %28
br label %38
38: ; preds = %37, %24
br label %245
39: ; preds = %2
%40 = load i32, i32* @DT_RELA
%41 = call i64 @dynget(i32 %40)
store i64 %41, i64* %6
%42 = icmp ne i64 %41, 0
br i1 %42, label %43, label %53
43: ; preds = %39
%44 = load i64, i64* %6
%45 = call i32 @getaddressoffset(i64 %44)
%46 = call i32 @getindexfromoffset(i32 %45)
store i32 %46, i32* %7
%47 = icmp sge i32 %46, 0
br i1 %47, label %48, label %52
48: ; preds = %43
%49 = load i64, i64* %5
%50 = load i32, i32* %7
%51 = call i8* @getsizestr(i64 %49, i32 %50)
store i8* %51, i8** %3
br label %246
52: ; preds = %43
br label %53
53: ; preds = %52, %39
br label %245
54: ; preds = %2
%55 = load i32, i32* @DT_JMPREL
%56 = call i64 @dynget(i32 %55)
store i64 %56, i64* %6
%57 = icmp ne i64 %56, 0
br i1 %57, label %58, label %68
58: ; preds = %54
%59 = load i64, i64* %6
%60 = call i32 @getaddressoffset(i64 %59)
%61 = call i32 @getindexfromoffset(i32 %60)
store i32 %61, i32* %7
%62 = icmp sge i32 %61, 0
br i1 %62, label %63, label %67
63: ; preds = %58
%64 = load i64, i64* %5
%65 = load i32, i32* %7
%66 = call i8* @getsizestr(i64 %64, i32 %65)
store i8* %66, i8** %3
br label %246
67: ; preds = %58
br label %68
68: ; preds = %67, %54
br label %245
69: ; preds = %2
%70 = load i32, i32* @DT_SYMINFO
%71 = call i64 @dynget(i32 %70)
store i64 %71, i64* %6
%72 = icmp ne i64 %71, 0
br i1 %72, label %73, label %83
73: ; preds = %69
%74 = load i64, i64* %6
%75 = call i32 @getaddressoffset(i64 %74)
%76 = call i32 @getindexfromoffset(i32 %75)
store i32 %76, i32* %7
%77 = icmp sge i32 %76, 0
br i1 %77, label %78, label %82
78: ; preds = %73
%79 = load i64, i64* %5
%80 = load i32, i32* %7
%81 = call i8* @getsizestr(i64 %79, i32 %80)
store i8* %81, i8** %3
br label %246
82: ; preds = %73
br label %83
83: ; preds = %82, %69
br label %245
84: ; preds = %2
%85 = load i32, i32* @DT_INIT_ARRAY
%86 = call i64 @dynget(i32 %85)
store i64 %86, i64* %6
%87 = icmp ne i64 %86, 0
br i1 %87, label %88, label %98
88: ; preds = %84
%89 = load i64, i64* %6
%90 = call i32 @getaddressoffset(i64 %89)
%91 = call i32 @getindexfromoffset(i32 %90)
store i32 %91, i32* %7
%92 = icmp sge i32 %91, 0
br i1 %92, label %93, label %97
93: ; preds = %88
%94 = load i64, i64* %5
%95 = load i32, i32* %7
%96 = call i8* @getsizestr(i64 %94, i32 %95)
store i8* %96, i8** %3
br label %246
97: ; preds = %88
br label %98
98: ; preds = %97, %84
br label %245
99: ; preds = %2
%100 = load i32, i32* @DT_FINI_ARRAY
%101 = call i64 @dynget(i32 %100)
store i64 %101, i64* %6
%102 = icmp ne i64 %101, 0
br i1 %102, label %103, label %113
103: ; preds = %99
%104 = load i64, i64* %6
%105 = call i32 @getaddressoffset(i64 %104)
%106 = call i32 @getindexfromoffset(i32 %105)
store i32 %106, i32* %7
%107 = icmp sge i32 %106, 0
br i1 %107, label %108, label %112
108: ; preds = %103
%109 = load i64, i64* %5
%110 = load i32, i32* %7
%111 = call i8* @getsizestr(i64 %109, i32 %110)
store i8* %111, i8** %3
br label %246
112: ; preds = %103
br label %113
113: ; preds = %112, %99
br label %245
114: ; preds = %2
%115 = load i32, i32* @DT_PREINIT_ARRAY
%116 = call i64 @dynget(i32 %115)
store i64 %116, i64* %6
%117 = icmp ne i64 %116, 0
br i1 %117, label %118, label %128
118: ; preds = %114
%119 = load i64, i64* %6
%120 = call i32 @getaddressoffset(i64 %119)
%121 = call i32 @getindexfromoffset(i32 %120)
store i32 %121, i32* %7
%122 = icmp sge i32 %121, 0
br i1 %122, label %123, label %127
123: ; preds = %118
%124 = load i64, i64* %5
%125 = load i32, i32* %7
%126 = call i8* @getsizestr(i64 %124, i32 %125)
store i8* %126, i8** %3
br label %246
127: ; preds = %118
br label %128
128: ; preds = %127, %114
br label %245
129: ; preds = %2
%130 = load i64, i64* %5
%131 = call i32 (...) @iself64()
%132 = icmp ne i32 %131, 0
%133 = zext i1 %132 to i64
%134 = select i1 %132, i64 4, i64 4
%135 = trunc i64 %134 to i32
%136 = sext i32 %135 to i64
%137 = icmp eq i64 %130, %136
br i1 %137, label %138, label %143
138: ; preds = %129
%139 = call i32 (...) @iself64()
%140 = icmp ne i32 %139, 0
%141 = zext i1 %140 to i64
%142 = select i1 %140, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0)
store i8* %142, i8** %3
br label %246
143: ; preds = %129
%144 = load i32, i32* @DT_REL
%145 = call i64 @dynget(i32 %144)
store i64 %145, i64* %6
%146 = icmp ne i64 %145, 0
br i1 %146, label %147, label %157
147: ; preds = %143
%148 = load i64, i64* %6
%149 = call i32 @getaddressoffset(i64 %148)
%150 = call i32 @getindexfromoffset(i32 %149)
store i32 %150, i32* %7
%151 = icmp sge i32 %150, 0
br i1 %151, label %152, label %156
152: ; preds = %147
%153 = load i64, i64* %5
%154 = load i32, i32* %7
%155 = call i8* @getsizestr(i64 %153, i32 %154)
store i8* %155, i8** %3
br label %246
156: ; preds = %147
br label %157
157: ; preds = %156, %143
br label %245
158: ; preds = %2
%159 = load i64, i64* %5
%160 = call i32 (...) @iself64()
%161 = icmp ne i32 %160, 0
%162 = zext i1 %161 to i64
%163 = select i1 %161, i64 4, i64 4
%164 = trunc i64 %163 to i32
%165 = sext i32 %164 to i64
%166 = icmp eq i64 %159, %165
br i1 %166, label %167, label %172
167: ; preds = %158
%168 = call i32 (...) @iself64()
%169 = icmp ne i32 %168, 0
%170 = zext i1 %169 to i64
%171 = select i1 %169, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0)
store i8* %171, i8** %3
br label %246
172: ; preds = %158
%173 = load i32, i32* @DT_RELA
%174 = call i64 @dynget(i32 %173)
store i64 %174, i64* %6
%175 = icmp ne i64 %174, 0
br i1 %175, label %176, label %186
176: ; preds = %172
%177 = load i64, i64* %6
%178 = call i32 @getaddressoffset(i64 %177)
%179 = call i32 @getindexfromoffset(i32 %178)
store i32 %179, i32* %7
%180 = icmp sge i32 %179, 0
br i1 %180, label %181, label %185
181: ; preds = %176
%182 = load i64, i64* %5
%183 = load i32, i32* %7
%184 = call i8* @getsizestr(i64 %182, i32 %183)
store i8* %184, i8** %3
br label %246
185: ; preds = %176
br label %186
186: ; preds = %185, %172
br label %245
187: ; preds = %2
%188 = load i64, i64* %5
%189 = call i32 (...) @iself64()
%190 = icmp ne i32 %189, 0
%191 = zext i1 %190 to i64
%192 = select i1 %190, i64 4, i64 4
%193 = trunc i64 %192 to i32
%194 = sext i32 %193 to i64
%195 = icmp eq i64 %188, %194
br i1 %195, label %196, label %201
196: ; preds = %187
%197 = call i32 (...) @iself64()
%198 = icmp ne i32 %197, 0
%199 = zext i1 %198 to i64
%200 = select i1 %198, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0)
store i8* %200, i8** %3
br label %246
201: ; preds = %187
%202 = load i32, i32* @DT_SYMTAB
%203 = call i64 @dynget(i32 %202)
store i64 %203, i64* %6
%204 = icmp ne i64 %203, 0
br i1 %204, label %205, label %215
205: ; preds = %201
%206 = load i64, i64* %6
%207 = call i32 @getaddressoffset(i64 %206)
%208 = call i32 @getindexfromoffset(i32 %207)
store i32 %208, i32* %7
%209 = icmp sge i32 %208, 0
br i1 %209, label %210, label %214
210: ; preds = %205
%211 = load i64, i64* %5
%212 = load i32, i32* %7
%213 = call i8* @getsizestr(i64 %211, i32 %212)
store i8* %213, i8** %3
br label %246
214: ; preds = %205
br label %215
215: ; preds = %214, %201
br label %245
216: ; preds = %2
%217 = load i64, i64* %5
%218 = call i32 (...) @iself64()
%219 = icmp ne i32 %218, 0
%220 = zext i1 %219 to i64
%221 = select i1 %219, i64 4, i64 4
%222 = trunc i64 %221 to i32
%223 = sext i32 %222 to i64
%224 = icmp eq i64 %217, %223
br i1 %224, label %225, label %230
225: ; preds = %216
%226 = call i32 (...) @iself64()
%227 = icmp ne i32 %226, 0
%228 = zext i1 %227 to i64
%229 = select i1 %227, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0)
store i8* %229, i8** %3
br label %246
230: ; preds = %216
%231 = load i32, i32* @DT_SYMINFO
%232 = call i64 @dynget(i32 %231)
store i64 %232, i64* %6
%233 = icmp ne i64 %232, 0
br i1 %233, label %234, label %244
234: ; preds = %230
%235 = load i64, i64* %6
%236 = call i32 @getaddressoffset(i64 %235)
%237 = call i32 @getindexfromoffset(i32 %236)
store i32 %237, i32* %7
%238 = icmp sge i32 %237, 0
br i1 %238, label %239, label %243
239: ; preds = %234
%240 = load i64, i64* %5
%241 = load i32, i32* %7
%242 = call i8* @getsizestr(i64 %240, i32 %241)
store i8* %242, i8** %3
br label %246
243: ; preds = %234
br label %244
244: ; preds = %243, %230
br label %245
245: ; preds = %2, %244, %215, %186, %157, %128, %113, %98, %83, %68, %53, %38, %23
store i8* null, i8** %3
br label %246
246: ; preds = %245, %239, %225, %210, %196, %181, %167, %152, %138, %123, %108, %93, %78, %63, %48, %33, %18
%247 = load i8*, i8** %3
ret i8* %247
}

LLVM IR (-O2):
@DT_STRTAB = global i32 0
@DT_REL = global i32 0
@DT_RELA = global i32 0
@DT_JMPREL = global i32 0
@DT_SYMINFO = global i32 0
@DT_INIT_ARRAY = global i32 0
@DT_FINI_ARRAY = global i32 0
@DT_PREINIT_ARRAY = global i32 0
@.str = [18 x i8] c"sizeof(Elf64_Rel)\00"
@.str.1 = [18 x i8] c"sizeof(Elf32_Rel)\00"
@.str.2 = [19 x i8] c"sizeof(Elf64_Rela)\00"
@.str.3 = [19 x i8] c"sizeof(Elf32_Rela)\00"
@.str.4 = [18 x i8] c"sizeof(Elf64_Sym)\00"
@.str.5 = [18 x i8] c"sizeof(Elf32_Sym)\00"
@DT_SYMTAB = global i32 0
@.str.6 = [22 x i8] c"sizeof(Elf64_Syminfo)\00"
@.str.7 = [22 x i8] c"sizeof(Elf32_Syminfo)\00"
define i8* @strdynamicvalue(i64 %0, i64 %1) {
switch i64 %0, label %151 [
i64 131, label %3
i64 132, label %13
i64 134, label %23
i64 137, label %33
i64 128, label %43
i64 138, label %53
i64 139, label %63
i64 136, label %73
i64 133, label %83
i64 135, label %100
i64 130, label %117
i64 129, label %134
]
3: ; preds = %2
%4 = load i32, i32* @DT_STRTAB
%5 = tail call i64 @dynget(i32 %4)
%6 = icmp eq i64 %5, 0
br i1 %6, label %151, label %7
7: ; preds = %3
%8 = tail call i32 @getaddressoffset(i64 %5)
%9 = tail call i32 @getindexfromoffset(i32 %8)
%10 = icmp sgt i32 %9, -1
br i1 %10, label %11, label %151
11: ; preds = %7
%12 = tail call i8* @getsizestr(i64 %1, i32 %9)
br label %151
13: ; preds = %2
%14 = load i32, i32* @DT_REL
%15 = tail call i64 @dynget(i32 %14)
%16 = icmp eq i64 %15, 0
br i1 %16, label %151, label %17
17: ; preds = %13
%18 = tail call i32 @getaddressoffset(i64 %15)
%19 = tail call i32 @getindexfromoffset(i32 %18)
%20 = icmp sgt i32 %19, -1
br i1 %20, label %21, label %151
21: ; preds = %17
%22 = tail call i8* @getsizestr(i64 %1, i32 %19)
br label %151
23: ; preds = %2
%24 = load i32, i32* @DT_RELA
%25 = tail call i64 @dynget(i32 %24)
%26 = icmp eq i64 %25, 0
br i1 %26, label %151, label %27
27: ; preds = %23
%28 = tail call i32 @getaddressoffset(i64 %25)
%29 = tail call i32 @getindexfromoffset(i32 %28)
%30 = icmp sgt i32 %29, -1
br i1 %30, label %31, label %151
31: ; preds = %27
%32 = tail call i8* @getsizestr(i64 %1, i32 %29)
br label %151
33: ; preds = %2
%34 = load i32, i32* @DT_JMPREL
%35 = tail call i64 @dynget(i32 %34)
%36 = icmp eq i64 %35, 0
br i1 %36, label %151, label %37
37: ; preds = %33
%38 = tail call i32 @getaddressoffset(i64 %35)
%39 = tail call i32 @getindexfromoffset(i32 %38)
%40 = icmp sgt i32 %39, -1
br i1 %40, label %41, label %151
41: ; preds = %37
%42 = tail call i8* @getsizestr(i64 %1, i32 %39)
br label %151
43: ; preds = %2
%44 = load i32, i32* @DT_SYMINFO
%45 = tail call i64 @dynget(i32 %44)
%46 = icmp eq i64 %45, 0
br i1 %46, label %151, label %47
47: ; preds = %43
%48 = tail call i32 @getaddressoffset(i64 %45)
%49 = tail call i32 @getindexfromoffset(i32 %48)
%50 = icmp sgt i32 %49, -1
br i1 %50, label %51, label %151
51: ; preds = %47
%52 = tail call i8* @getsizestr(i64 %1, i32 %49)
br label %151
53: ; preds = %2
%54 = load i32, i32* @DT_INIT_ARRAY
%55 = tail call i64 @dynget(i32 %54)
%56 = icmp eq i64 %55, 0
br i1 %56, label %151, label %57
57: ; preds = %53
%58 = tail call i32 @getaddressoffset(i64 %55)
%59 = tail call i32 @getindexfromoffset(i32 %58)
%60 = icmp sgt i32 %59, -1
br i1 %60, label %61, label %151
61: ; preds = %57
%62 = tail call i8* @getsizestr(i64 %1, i32 %59)
br label %151
63: ; preds = %2
%64 = load i32, i32* @DT_FINI_ARRAY
%65 = tail call i64 @dynget(i32 %64)
%66 = icmp eq i64 %65, 0
br i1 %66, label %151, label %67
67: ; preds = %63
%68 = tail call i32 @getaddressoffset(i64 %65)
%69 = tail call i32 @getindexfromoffset(i32 %68)
%70 = icmp sgt i32 %69, -1
br i1 %70, label %71, label %151
71: ; preds = %67
%72 = tail call i8* @getsizestr(i64 %1, i32 %69)
br label %151
73: ; preds = %2
%74 = load i32, i32* @DT_PREINIT_ARRAY
%75 = tail call i64 @dynget(i32 %74)
%76 = icmp eq i64 %75, 0
br i1 %76, label %151, label %77
77: ; preds = %73
%78 = tail call i32 @getaddressoffset(i64 %75)
%79 = tail call i32 @getindexfromoffset(i32 %78)
%80 = icmp sgt i32 %79, -1
br i1 %80, label %81, label %151
81: ; preds = %77
%82 = tail call i8* @getsizestr(i64 %1, i32 %79)
br label %151
83: ; preds = %2
%84 = tail call i32 (...) @iself64()
%85 = icmp eq i64 %1, 4
br i1 %85, label %86, label %90
86: ; preds = %83
%87 = tail call i32 (...) @iself64()
%88 = icmp eq i32 %87, 0
%89 = select i1 %88, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0)
br label %151
90: ; preds = %83
%91 = load i32, i32* @DT_REL
%92 = tail call i64 @dynget(i32 %91)
%93 = icmp eq i64 %92, 0
br i1 %93, label %151, label %94
94: ; preds = %90
%95 = tail call i32 @getaddressoffset(i64 %92)
%96 = tail call i32 @getindexfromoffset(i32 %95)
%97 = icmp sgt i32 %96, -1
br i1 %97, label %98, label %151
98: ; preds = %94
%99 = tail call i8* @getsizestr(i64 %1, i32 %96)
br label %151
100: ; preds = %2
%101 = tail call i32 (...) @iself64()
%102 = icmp eq i64 %1, 4
br i1 %102, label %103, label %107
103: ; preds = %100
%104 = tail call i32 (...) @iself64()
%105 = icmp eq i32 %104, 0
%106 = select i1 %105, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0)
br label %151
107: ; preds = %100
%108 = load i32, i32* @DT_RELA
%109 = tail call i64 @dynget(i32 %108)
%110 = icmp eq i64 %109, 0
br i1 %110, label %151, label %111
111: ; preds = %107
%112 = tail call i32 @getaddressoffset(i64 %109)
%113 = tail call i32 @getindexfromoffset(i32 %112)
%114 = icmp sgt i32 %113, -1
br i1 %114, label %115, label %151
115: ; preds = %111
%116 = tail call i8* @getsizestr(i64 %1, i32 %113)
br label %151
117: ; preds = %2
%118 = tail call i32 (...) @iself64()
%119 = icmp eq i64 %1, 4
br i1 %119, label %120, label %124
120: ; preds = %117
%121 = tail call i32 (...) @iself64()
%122 = icmp eq i32 %121, 0
%123 = select i1 %122, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.4, i64 0, i64 0)
br label %151
124: ; preds = %117
%125 = load i32, i32* @DT_SYMTAB
%126 = tail call i64 @dynget(i32 %125)
%127 = icmp eq i64 %126, 0
br i1 %127, label %151, label %128
128: ; preds = %124
%129 = tail call i32 @getaddressoffset(i64 %126)
%130 = tail call i32 @getindexfromoffset(i32 %129)
%131 = icmp sgt i32 %130, -1
br i1 %131, label %132, label %151
132: ; preds = %128
%133 = tail call i8* @getsizestr(i64 %1, i32 %130)
br label %151
134: ; preds = %2
%135 = tail call i32 (...) @iself64()
%136 = icmp eq i64 %1, 4
br i1 %136, label %137, label %141
137: ; preds = %134
%138 = tail call i32 (...) @iself64()
%139 = icmp eq i32 %138, 0
%140 = select i1 %139, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.6, i64 0, i64 0)
br label %151
141: ; preds = %134
%142 = load i32, i32* @DT_SYMINFO
%143 = tail call i64 @dynget(i32 %142)
%144 = icmp eq i64 %143, 0
br i1 %144, label %151, label %145
145: ; preds = %141
%146 = tail call i32 @getaddressoffset(i64 %143)
%147 = tail call i32 @getindexfromoffset(i32 %146)
%148 = icmp sgt i32 %147, -1
br i1 %148, label %149, label %151
149: ; preds = %145
%150 = tail call i8* @getsizestr(i64 %1, i32 %147)
br label %151
151: ; preds = %2, %7, %3, %17, %13, %27, %23, %37, %33, %47, %43, %57, %53, %67, %63, %77, %73, %94, %90, %111, %107, %128, %124, %145, %141, %149, %137, %132, %120, %115, %103, %98, %86, %81, %71, %61, %51, %41, %31, %21, %11
%152 = phi i8* [ %140, %137 ], [ %150, %149 ], [ %123, %120 ], [ %133, %132 ], [ %106, %103 ], [ %116, %115 ], [ %89, %86 ], [ %99, %98 ], [ %82, %81 ], [ %72, %71 ], [ %62, %61 ], [ %52, %51 ], [ %42, %41 ], [ %32, %31 ], [ %22, %21 ], [ %12, %11 ], [ null, %141 ], [ null, %145 ], [ null, %124 ], [ null, %128 ], [ null, %107 ], [ null, %111 ], [ null, %90 ], [ null, %94 ], [ null, %73 ], [ null, %77 ], [ null, %63 ], [ null, %67 ], [ null, %53 ], [ null, %57 ], [ null, %43 ], [ null, %47 ], [ null, %33 ], [ null, %37 ], [ null, %23 ], [ null, %27 ], [ null, %13 ], [ null, %17 ], [ null, %3 ], [ null, %7 ], [ null, %2 ]
ret i8* %152
}