#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 */
int /*<<< orphan*/ memcpy(char *, char *, int);
int strlen(char *);
void test_copy(void) {
  do {
    char a[2], b[2];
    (a[0] = 0);
    memcpy(b, a, 1);
    if ((!(0 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_44(void);
        call_not_eliminated_on_line_44();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[2], b[2];
    (a[0] = 0, a[1] = 0);
    memcpy(b, a, 2);
    if ((!(0 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_45(void);
        call_not_eliminated_on_line_45();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[2], b[2];
    (a[0] = '1', a[1] = 0);
    memcpy(b, a, 2);
    if ((!(1 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_46(void);
        call_not_eliminated_on_line_46();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[4], b[4];
    (a[0] = '1', a[1] = '2', a[2] = 0);
    memcpy(b, a, 3);
    if ((!(2 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_47(void);
        call_not_eliminated_on_line_47();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[4], b[4];
    (a[0] = '1', a[1] = 0, a[2] = 0, a[3] = 0);
    memcpy(b, a, 2);
    if ((!(1 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_50(void);
        call_not_eliminated_on_line_50();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[4], b[4];
    (a[0] = '1', a[1] = 0, a[2] = 0, a[3] = 0);
    memcpy(b, a, 4);
    if ((!(1 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_53(void);
        call_not_eliminated_on_line_53();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[4], b[4];
    (a[0] = '1', a[1] = '2', a[2] = 0, a[3] = 0);
    memcpy(b, a, 3);
    if ((!(2 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_54(void);
        call_not_eliminated_on_line_54();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[4], b[4];
    (a[0] = '1', a[1] = '2', a[2] = 0, a[3] = 0);
    memcpy(b, a, 4);
    if ((!(2 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_55(void);
        call_not_eliminated_on_line_55();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[4], b[4];
    (a[0] = '1', a[1] = '2', a[2] = '3', a[3] = 0);
    memcpy(b, a, 4);
    if ((!(3 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_56(void);
        call_not_eliminated_on_line_56();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[5], b[5];
    (a[0] = '1', a[1] = 0, a[2] = 0, a[3] = 0);
    memcpy(b, a, 4);
    if ((!(1 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_57(void);
        call_not_eliminated_on_line_57();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[5], b[5];
    (a[0] = '1', a[1] = '2', a[2] = 0, a[3] = 0);
    memcpy(b, a, 4);
    if ((!(2 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_58(void);
        call_not_eliminated_on_line_58();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[5], b[5];
    (a[0] = '1', a[1] = '2', a[2] = '3', a[3] = 0);
    memcpy(b, a, 4);
    if ((!(3 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_59(void);
        call_not_eliminated_on_line_59();
      } while (0);
    else
      (void)0;
  } while (0);
  do {
    char a[5], b[5];
    (a[0] = '1', a[1] = '2', a[2] = '3', a[3] = '4', a[4] = 0);
    memcpy(b, a, 5);
    if ((!(4 == strlen(b))))
      do {
        extern void call_not_eliminated_on_line_64(void);
        call_not_eliminated_on_line_64();
      } while (0);
    else
      (void)0;
  } while (0);
}


x86 assembly (clang, -O0):
<test_copy>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
movb   $0x0,-0x2(%rbp)
lea    -0x4(%rbp),%rdi
lea    -0x2(%rbp),%rsi
mov    $0x1,%edx
call   10a0 <memcpy@plt>
lea    -0x4(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1232 <test_copy+0x42>
jmp    1228 <test_copy+0x38>
call   1070 <call_not_eliminated_on_line_44@plt>
jmp    1237 <test_copy+0x47>
jmp    1237 <test_copy+0x47>
jmp    123c <test_copy+0x4c>
jmp    1241 <test_copy+0x51>
movb   $0x0,-0x6(%rbp)
movb   $0x0,-0x5(%rbp)
lea    -0x8(%rbp),%rdi
lea    -0x6(%rbp),%rsi
mov    $0x2,%edx
call   10a0 <memcpy@plt>
lea    -0x8(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     127f <test_copy+0x8f>
jmp    1275 <test_copy+0x85>
call   1100 <call_not_eliminated_on_line_45@plt>
jmp    1284 <test_copy+0x94>
jmp    1284 <test_copy+0x94>
jmp    1289 <test_copy+0x99>
jmp    128e <test_copy+0x9e>
movb   $0x31,-0xa(%rbp)
movb   $0x0,-0x9(%rbp)
lea    -0xc(%rbp),%rdi
lea    -0xa(%rbp),%rsi
mov    $0x2,%edx
call   10a0 <memcpy@plt>
lea    -0xc(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     12cf <test_copy+0xdf>
jmp    12c5 <test_copy+0xd5>
call   1080 <call_not_eliminated_on_line_46@plt>
jmp    12d4 <test_copy+0xe4>
jmp    12d4 <test_copy+0xe4>
jmp    12d9 <test_copy+0xe9>
jmp    12de <test_copy+0xee>
movb   $0x31,-0x10(%rbp)
movb   $0x32,-0xf(%rbp)
movb   $0x0,-0xe(%rbp)
lea    -0x14(%rbp),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x3,%edx
call   10a0 <memcpy@plt>
lea    -0x14(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x2,%eax
cmp    %ecx,%eax
je     1323 <test_copy+0x133>
jmp    1319 <test_copy+0x129>
call   1110 <call_not_eliminated_on_line_47@plt>
jmp    1328 <test_copy+0x138>
jmp    1328 <test_copy+0x138>
jmp    132d <test_copy+0x13d>
jmp    1332 <test_copy+0x142>
movb   $0x31,-0x18(%rbp)
movb   $0x0,-0x17(%rbp)
movb   $0x0,-0x16(%rbp)
movb   $0x0,-0x15(%rbp)
lea    -0x1c(%rbp),%rdi
lea    -0x18(%rbp),%rsi
mov    $0x2,%edx
call   10a0 <memcpy@plt>
lea    -0x1c(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     137b <test_copy+0x18b>
jmp    1371 <test_copy+0x181>
call   1060 <call_not_eliminated_on_line_50@plt>
jmp    1380 <test_copy+0x190>
jmp    1380 <test_copy+0x190>
jmp    1385 <test_copy+0x195>
jmp    138a <test_copy+0x19a>
movb   $0x31,-0x20(%rbp)
movb   $0x0,-0x1f(%rbp)
movb   $0x0,-0x1e(%rbp)
movb   $0x0,-0x1d(%rbp)
lea    -0x24(%rbp),%rdi
lea    -0x20(%rbp),%rsi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
lea    -0x24(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     13d3 <test_copy+0x1e3>
jmp    13c9 <test_copy+0x1d9>
call   10f0 <call_not_eliminated_on_line_53@plt>
jmp    13d8 <test_copy+0x1e8>
jmp    13d8 <test_copy+0x1e8>
jmp    13dd <test_copy+0x1ed>
jmp    13e2 <test_copy+0x1f2>
movb   $0x31,-0x28(%rbp)
movb   $0x32,-0x27(%rbp)
movb   $0x0,-0x26(%rbp)
movb   $0x0,-0x25(%rbp)
lea    -0x2c(%rbp),%rdi
lea    -0x28(%rbp),%rsi
mov    $0x3,%edx
call   10a0 <memcpy@plt>
lea    -0x2c(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x2,%eax
cmp    %ecx,%eax
je     142b <test_copy+0x23b>
jmp    1421 <test_copy+0x231>
call   1050 <call_not_eliminated_on_line_54@plt>
jmp    1430 <test_copy+0x240>
jmp    1430 <test_copy+0x240>
jmp    1435 <test_copy+0x245>
jmp    143a <test_copy+0x24a>
movb   $0x31,-0x30(%rbp)
movb   $0x32,-0x2f(%rbp)
movb   $0x0,-0x2e(%rbp)
movb   $0x0,-0x2d(%rbp)
lea    -0x34(%rbp),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
lea    -0x34(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x2,%eax
cmp    %ecx,%eax
je     1483 <test_copy+0x293>
jmp    1479 <test_copy+0x289>
call   10e0 <call_not_eliminated_on_line_55@plt>
jmp    1488 <test_copy+0x298>
jmp    1488 <test_copy+0x298>
jmp    148d <test_copy+0x29d>
jmp    1492 <test_copy+0x2a2>
movb   $0x31,-0x38(%rbp)
movb   $0x32,-0x37(%rbp)
movb   $0x33,-0x36(%rbp)
movb   $0x0,-0x35(%rbp)
lea    -0x3c(%rbp),%rdi
lea    -0x38(%rbp),%rsi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
lea    -0x3c(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x3,%eax
cmp    %ecx,%eax
je     14db <test_copy+0x2eb>
jmp    14d1 <test_copy+0x2e1>
call   1040 <call_not_eliminated_on_line_56@plt>
jmp    14e0 <test_copy+0x2f0>
jmp    14e0 <test_copy+0x2f0>
jmp    14e5 <test_copy+0x2f5>
jmp    14ea <test_copy+0x2fa>
movb   $0x31,-0x41(%rbp)
movb   $0x0,-0x40(%rbp)
movb   $0x0,-0x3f(%rbp)
movb   $0x0,-0x3e(%rbp)
lea    -0x46(%rbp),%rdi
lea    -0x41(%rbp),%rsi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
lea    -0x46(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cmp    %ecx,%eax
je     1533 <test_copy+0x343>
jmp    1529 <test_copy+0x339>
call   10d0 <call_not_eliminated_on_line_57@plt>
jmp    1538 <test_copy+0x348>
jmp    1538 <test_copy+0x348>
jmp    153d <test_copy+0x34d>
jmp    1542 <test_copy+0x352>
movb   $0x31,-0x4b(%rbp)
movb   $0x32,-0x4a(%rbp)
movb   $0x0,-0x49(%rbp)
movb   $0x0,-0x48(%rbp)
lea    -0x50(%rbp),%rdi
lea    -0x4b(%rbp),%rsi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
lea    -0x50(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x2,%eax
cmp    %ecx,%eax
je     158b <test_copy+0x39b>
jmp    1581 <test_copy+0x391>
call   1030 <call_not_eliminated_on_line_58@plt>
jmp    1590 <test_copy+0x3a0>
jmp    1590 <test_copy+0x3a0>
jmp    1595 <test_copy+0x3a5>
jmp    159a <test_copy+0x3aa>
movb   $0x31,-0x55(%rbp)
movb   $0x32,-0x54(%rbp)
movb   $0x33,-0x53(%rbp)
movb   $0x0,-0x52(%rbp)
lea    -0x5a(%rbp),%rdi
lea    -0x55(%rbp),%rsi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
lea    -0x5a(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x3,%eax
cmp    %ecx,%eax
je     15e3 <test_copy+0x3f3>
jmp    15d9 <test_copy+0x3e9>
call   10c0 <call_not_eliminated_on_line_59@plt>
jmp    15e8 <test_copy+0x3f8>
jmp    15e8 <test_copy+0x3f8>
jmp    15ed <test_copy+0x3fd>
jmp    15f2 <test_copy+0x402>
movb   $0x31,-0x5f(%rbp)
movb   $0x32,-0x5e(%rbp)
movb   $0x33,-0x5d(%rbp)
movb   $0x34,-0x5c(%rbp)
movb   $0x0,-0x5b(%rbp)
lea    -0x64(%rbp),%rdi
lea    -0x5f(%rbp),%rsi
mov    $0x5,%edx
call   10a0 <memcpy@plt>
lea    -0x64(%rbp),%rdi
call   1090 <strlen@plt>
mov    %eax,%ecx
mov    $0x4,%eax
cmp    %ecx,%eax
je     163f <test_copy+0x44f>
jmp    1635 <test_copy+0x445>
call   10b0 <call_not_eliminated_on_line_64@plt>
jmp    1644 <test_copy+0x454>
jmp    1644 <test_copy+0x454>
jmp    1649 <test_copy+0x459>
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_copy>:
push   %rbx
sub    $0x10,%rsp
movb   $0x0,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x1,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
test   %eax,%eax
je     1222 <test_copy+0x32>
call   1070 <call_not_eliminated_on_line_44@plt>
movw   $0x0,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
test   %eax,%eax
je     1251 <test_copy+0x61>
call   1100 <call_not_eliminated_on_line_45@plt>
movw   $0x31,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x1,%eax
je     1281 <test_copy+0x91>
call   1080 <call_not_eliminated_on_line_46@plt>
movw   $0x3231,0x6(%rsp)
movb   $0x0,0x8(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x2,%eax
je     12b6 <test_copy+0xc6>
call   1110 <call_not_eliminated_on_line_47@plt>
movl   $0x31,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x1,%eax
je     12e7 <test_copy+0xf7>
call   1060 <call_not_eliminated_on_line_50@plt>
movl   $0x31,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x1,%eax
je     1318 <test_copy+0x128>
call   10f0 <call_not_eliminated_on_line_53@plt>
movl   $0x3231,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x2,%eax
je     1349 <test_copy+0x159>
call   1050 <call_not_eliminated_on_line_54@plt>
movl   $0x3231,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x2,%eax
je     137a <test_copy+0x18a>
call   10e0 <call_not_eliminated_on_line_55@plt>
movl   $0x333231,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x3,%eax
je     13ab <test_copy+0x1bb>
call   1040 <call_not_eliminated_on_line_56@plt>
movl   $0x31,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x1,%eax
je     13dc <test_copy+0x1ec>
call   10d0 <call_not_eliminated_on_line_57@plt>
movl   $0x3231,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x2,%eax
je     140d <test_copy+0x21d>
call   1030 <call_not_eliminated_on_line_58@plt>
movl   $0x333231,0x6(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x3,%eax
je     143e <test_copy+0x24e>
call   10c0 <call_not_eliminated_on_line_59@plt>
movl   $0x34333231,0x6(%rsp)
34
movb   $0x0,0xa(%rsp)
lea    0xb(%rsp),%rbx
lea    0x6(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   10a0 <memcpy@plt>
mov    %rbx,%rdi
call   1090 <strlen@plt>
cmp    $0x4,%eax
je     1474 <test_copy+0x284>
call   10b0 <call_not_eliminated_on_line_64@plt>
add    $0x10,%rsp
pop    %rbx
ret

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

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