#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 scalar_t__ u_int;
typedef scalar_t__ u_char;

/* Variables and functions */
void *memset(void *dst0, int c0, size_t length) {
  size_t t;
  u_int c;
  u_char *dst;
  dst = dst0;
  if (length < 3 * sizeof(u_int)) {
    while (length != 0) {
      *dst++ = c0;
      --length;
    }
    return (dst0);
  }
  if ((c = (u_char)c0) != 0) {
    c = (c << 8) | c;
  }
  if ((t = (long)dst & (sizeof(u_int) - 1)) != 0) {
    t = sizeof(u_int) - t;
    length -= t;
    do {
      *dst++ = c0;
    } while (--t != 0);
  }
  t = length / sizeof(u_int);
  do {
    *(u_int *)dst = c;
    dst += sizeof(u_int);
  } while (--t != 0);
  t = length & (sizeof(u_int) - 1);
  if (t != 0)
    do {
      *dst++ = c0;
    } while (--t != 0);
  return (dst0);
}


x86 assembly (clang, -O0):
<memset>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
cmpq   $0x18,-0x20(%rbp)
jae    1166 <memset+0x66>
jmp    1127 <memset+0x27>
cmpq   $0x0,-0x20(%rbp)
je     1159 <memset+0x59>
movslq -0x14(%rbp),%rcx
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x8,%rdx
mov    %rdx,-0x38(%rbp)
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x20(%rbp)
jmp    1127 <memset+0x27>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1279 <memset+0x179>
movslq -0x14(%rbp),%rax
mov    %rax,-0x30(%rbp)
cmp    $0x0,%rax
je     1188 <memset+0x88>
mov    -0x30(%rbp),%rax
shl    $0x8,%rax
or     -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
and    $0x7,%rax
mov    %rax,-0x28(%rbp)
cmp    $0x0,%rax
je     11eb <memset+0xeb>
mov    $0x8,%eax
sub    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rcx
mov    -0x20(%rbp),%rax
sub    %rcx,%rax
mov    %rax,-0x20(%rbp)
movslq -0x14(%rbp),%rcx
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x8,%rdx
mov    %rdx,-0x38(%rbp)
mov    %rcx,(%rax)
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
cmp    $0x0,%rax
jne    11ba <memset+0xba>
jmp    11eb <memset+0xeb>
mov    -0x20(%rbp),%rax
shr    $0x3,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%rcx
mov    -0x38(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x38(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
cmp    $0x0,%rax
jne    11f7 <memset+0xf7>
mov    -0x20(%rbp),%rax
and    $0x7,%rax
mov    %rax,-0x28(%rbp)
cmpq   $0x0,-0x28(%rbp)
je     1271 <memset+0x171>
jmp    1240 <memset+0x140>
movslq -0x14(%rbp),%rcx
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x8,%rdx
mov    %rdx,-0x38(%rbp)
mov    %rcx,(%rax)
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
cmp    $0x0,%rax
jne    1240 <memset+0x140>
jmp    1271 <memset+0x171>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<memset>:
mov    %rdi,%rax
cmp    $0x17,%rdx
ja     1123 <memset+0x23>
test   %rdx,%rdx
je     123d <memset+0x13d>
movslq %esi,%rcx
cmp    $0x1,%rdx
jne    1164 <memset+0x64>
mov    %rax,%rsi
jmp    122a <memset+0x12a>
movslq %esi,%r8
mov    %r8,%rcx
shl    $0x8,%rcx
or     %r8,%rcx
xor    %r11d,%r11d
test   %r8d,%r8d
cmovne %rcx,%r11
mov    %rax,%rdi
and    $0x7,%rdi
je     115c <memset+0x5c>
mov    %rax,%rcx
or     $0xfffffffffffffff8,%rcx
mov    %r8,(%rax)
cmp    $0x7,%rdi
jne    1194 <memset+0x94>
lea    0x8(%rax),%rdi
jmp    1286 <memset+0x186>
mov    %rax,%rdi
jmp    1289 <memset+0x189>
mov    %rdx,%r8
and    $0xfffffffffffffffe,%r8
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
lea    -0x2(%r8),%rsi
mov    %rsi,%rdi
shr    %rdi
add    $0x1,%rdi
mov    %edi,%r9d
and    $0x7,%r9d
cmp    $0xe,%rsi
jae    11ab <memset+0xab>
xor    %esi,%esi
jmp    11f9 <memset+0xf9>
mov    %r8,0x8(%rax)
cmp    $0x6,%rdi
jne    123e <memset+0x13e>
lea    0x10(%rax),%rdi
jmp    1286 <memset+0x186>
and    $0xfffffffffffffff8,%rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movdqu %xmm0,(%rax,%rsi,8)
movdqu %xmm0,0x10(%rax,%rsi,8)
movdqu %xmm0,0x20(%rax,%rsi,8)
movdqu %xmm0,0x30(%rax,%rsi,8)
movdqu %xmm0,0x40(%rax,%rsi,8)
movdqu %xmm0,0x50(%rax,%rsi,8)
movdqu %xmm0,0x60(%rax,%rsi,8)
movdqu %xmm0,0x70(%rax,%rsi,8)
add    $0x10,%rsi
add    $0xfffffffffffffff8,%rdi
jne    11c0 <memset+0xc0>
test   %r9,%r9
je     121e <memset+0x11e>
lea    (%rax,%rsi,8),%rsi
shl    $0x4,%r9
xor    %edi,%edi
nopl   0x0(%rax,%rax,1)
movdqu %xmm0,(%rsi,%rdi,1)
add    $0x10,%rdi
cmp    %rdi,%r9
jne    1210 <memset+0x110>
cmp    %rdx,%r8
je     123d <memset+0x13d>
and    $0x1,%edx
lea    (%rax,%r8,8),%rsi
xor    %edi,%edi
nopl   0x0(%rax)
mov    %rcx,(%rsi,%rdi,8)
add    $0x1,%rdi
cmp    %rdi,%rdx
jne    1230 <memset+0x130>
ret
mov    %r8,0x10(%rax)
cmp    $0x5,%rdi
jne    124e <memset+0x14e>
lea    0x18(%rax),%rdi
jmp    1286 <memset+0x186>
mov    %r8,0x18(%rax)
cmp    $0x4,%rdi
jne    125e <memset+0x15e>
lea    0x20(%rax),%rdi
jmp    1286 <memset+0x186>
mov    %r8,0x20(%rax)
cmp    $0x3,%rdi
jne    126e <memset+0x16e>
lea    0x28(%rax),%rdi
jmp    1286 <memset+0x186>
mov    %r8,0x28(%rax)
cmp    $0x2,%rdi
jne    127e <memset+0x17e>
lea    0x30(%rax),%rdi
jmp    1286 <memset+0x186>
lea    0x38(%rax),%rdi
mov    %r8,0x30(%rax)
add    %rcx,%rdx
mov    %rdx,%rcx
shr    $0x3,%rcx
lea    -0x1(%rcx),%r9
mov    %rcx,%r10
and    $0x7,%r10
je     12b3 <memset+0x1b3>
xor    %esi,%esi
nop
mov    %r11,(%rdi)
add    $0x40,%rdi
add    $0x1,%rsi
cmp    %rsi,%r10
jne    12a0 <memset+0x1a0>
sub    %rsi,%rcx
cmp    $0x7,%r9
jb     12fe <memset+0x1fe>
nopl   0x0(%rax)
mov    %r11,(%rdi)
mov    %r11,0x40(%rdi)
mov    %r11,0x80(%rdi)
mov    %r11,0xc0(%rdi)
mov    %r11,0x100(%rdi)
mov    %r11,0x140(%rdi)
mov    %r11,0x180(%rdi)
mov    %r11,0x1c0(%rdi)
add    $0x200,%rdi
add    $0xfffffffffffffff8,%rcx
jne    12c0 <memset+0x1c0>
and    $0x7,%rdx
je     123d <memset+0x13d>
mov    %r8,(%rdi)
cmp    $0x1,%rdx
je     123d <memset+0x13d>
mov    %r8,0x8(%rdi)
cmp    $0x2,%rdx
je     123d <memset+0x13d>
mov    %r8,0x10(%rdi)
cmp    $0x3,%rdx
je     123d <memset+0x13d>
mov    %r8,0x18(%rdi)
cmp    $0x4,%rdx
je     123d <memset+0x13d>
mov    %r8,0x20(%rdi)
cmp    $0x5,%rdx
je     123d <memset+0x13d>
mov    %r8,0x28(%rdi)
cmp    $0x6,%rdx
je     123d <memset+0x13d>
mov    %r8,0x30(%rdi)
ret

LLVM IR (-O0):
define i8* @memset(i8* %0, i32 %1, i64 %2) {
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca i64*
store i8* %0, i8** %5
store i32 %1, i32* %6
store i64 %2, i64* %7
%11 = load i8*, i8** %5
%12 = bitcast i8* %11 to i64*
store i64* %12, i64** %10
%13 = load i64, i64* %7
%14 = icmp ult i64 %13, 24
br i1 %14, label %15, label %28
15: ; preds = %3
br label %16
16: ; preds = %19, %15
%17 = load i64, i64* %7
%18 = icmp ne i64 %17, 0
br i1 %18, label %19, label %26
19: ; preds = %16
%20 = load i32, i32* %6
%21 = sext i32 %20 to i64
%22 = load i64*, i64** %10
%23 = getelementptr inbounds i64, i64* %22, i32 1
store i64* %23, i64** %10
store i64 %21, i64* %22
%24 = load i64, i64* %7
%25 = add i64 %24, -1
store i64 %25, i64* %7
br label %16
26: ; preds = %16
%27 = load i8*, i8** %5
store i8* %27, i8** %4
br label %88
28: ; preds = %3
%29 = load i32, i32* %6
%30 = sext i32 %29 to i64
store i64 %30, i64* %9
%31 = icmp ne i64 %30, 0
br i1 %31, label %32, label %37
32: ; preds = %28
%33 = load i64, i64* %9
%34 = shl i64 %33, 8
%35 = load i64, i64* %9
%36 = or i64 %34, %35
store i64 %36, i64* %9
br label %37
37: ; preds = %32, %28
%38 = load i64*, i64** %10
%39 = ptrtoint i64* %38 to i64
%40 = and i64 %39, 7
store i64 %40, i64* %8
%41 = icmp ne i64 %40, 0
br i1 %41, label %42, label %58
42: ; preds = %37
%43 = load i64, i64* %8
%44 = sub i64 8, %43
store i64 %44, i64* %8
%45 = load i64, i64* %8
%46 = load i64, i64* %7
%47 = sub i64 %46, %45
store i64 %47, i64* %7
br label %48
48: ; preds = %53, %42
%49 = load i32, i32* %6
%50 = sext i32 %49 to i64
%51 = load i64*, i64** %10
%52 = getelementptr inbounds i64, i64* %51, i32 1
store i64* %52, i64** %10
store i64 %50, i64* %51
br label %53
53: ; preds = %48
%54 = load i64, i64* %8
%55 = add i64 %54, -1
store i64 %55, i64* %8
%56 = icmp ne i64 %55, 0
br i1 %56, label %48, label %57
57: ; preds = %53
br label %58
58: ; preds = %57, %37
%59 = load i64, i64* %7
%60 = udiv i64 %59, 8
store i64 %60, i64* %8
br label %61
61: ; preds = %66, %58
%62 = load i64, i64* %9
%63 = load i64*, i64** %10
store i64 %62, i64* %63
%64 = load i64*, i64** %10
%65 = getelementptr inbounds i64, i64* %64, i64 8
store i64* %65, i64** %10
br label %66
66: ; preds = %61
%67 = load i64, i64* %8
%68 = add i64 %67, -1
store i64 %68, i64* %8
%69 = icmp ne i64 %68, 0
br i1 %69, label %61, label %70
70: ; preds = %66
%71 = load i64, i64* %7
%72 = and i64 %71, 7
store i64 %72, i64* %8
%73 = load i64, i64* %8
%74 = icmp ne i64 %73, 0
br i1 %74, label %75, label %86
75: ; preds = %70
br label %76
76: ; preds = %81, %75
%77 = load i32, i32* %6
%78 = sext i32 %77 to i64
%79 = load i64*, i64** %10
%80 = getelementptr inbounds i64, i64* %79, i32 1
store i64* %80, i64** %10
store i64 %78, i64* %79
br label %81
81: ; preds = %76
%82 = load i64, i64* %8
%83 = add i64 %82, -1
store i64 %83, i64* %8
%84 = icmp ne i64 %83, 0
br i1 %84, label %76, label %85
85: ; preds = %81
br label %86
86: ; preds = %85, %70
%87 = load i8*, i8** %5
store i8* %87, i8** %4
br label %88
88: ; preds = %86, %26
%89 = load i8*, i8** %4
ret i8* %89
}

LLVM IR (-O2):
define i8* @memset(i8* returned %0, i32 %1, i64 %2) {
%4 = bitcast i8* %0 to i64*
%5 = icmp ult i64 %2, 24
br i1 %5, label %6, label %75
6: ; preds = %3
%7 = icmp eq i64 %2, 0
br i1 %7, label %171, label %8
8: ; preds = %6
%9 = sext i32 %1 to i64
%10 = icmp eq i64 %2, 1
br i1 %10, label %66, label %11
11: ; preds = %8
%12 = and i64 %2, -2
%13 = getelementptr i64, i64* %4, i64 %12
%14 = and i64 %2, 1
%15 = insertelement <2 x i64> poison, i64 %9, i64 0
%16 = shufflevector <2 x i64> %15, <2 x i64> poison, <2 x i32> zeroinitializer
%17 = add i64 %12, -2
%18 = lshr exact i64 %17, 1
%19 = add nuw i64 %18, 1
%20 = and i64 %19, 7
%21 = icmp ult i64 %17, 14
br i1 %21, label %53, label %22
22: ; preds = %11
%23 = and i64 %19, -8
br label %24
24: ; preds = %24, %22
%25 = phi i64 [ 0, %22 ], [ %50, %24 ]
%26 = phi i64 [ 0, %22 ], [ %51, %24 ]
%27 = getelementptr i64, i64* %4, i64 %25
%28 = bitcast i64* %27 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %28
%29 = or i64 %25, 2
%30 = getelementptr i64, i64* %4, i64 %29
%31 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %31
%32 = or i64 %25, 4
%33 = getelementptr i64, i64* %4, i64 %32
%34 = bitcast i64* %33 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %34
%35 = or i64 %25, 6
%36 = getelementptr i64, i64* %4, i64 %35
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %37
%38 = or i64 %25, 8
%39 = getelementptr i64, i64* %4, i64 %38
%40 = bitcast i64* %39 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %40
%41 = or i64 %25, 10
%42 = getelementptr i64, i64* %4, i64 %41
%43 = bitcast i64* %42 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %43
%44 = or i64 %25, 12
%45 = getelementptr i64, i64* %4, i64 %44
%46 = bitcast i64* %45 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %46
%47 = or i64 %25, 14
%48 = getelementptr i64, i64* %4, i64 %47
%49 = bitcast i64* %48 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %49
%50 = add nuw i64 %25, 16
%51 = add i64 %26, 8
%52 = icmp eq i64 %51, %23
br i1 %52, label %53, label %24
53: ; preds = %24, %11
%54 = phi i64 [ 0, %11 ], [ %50, %24 ]
%55 = icmp eq i64 %20, 0
br i1 %55, label %64, label %56
56: ; preds = %53, %56
%57 = phi i64 [ %61, %56 ], [ %54, %53 ]
%58 = phi i64 [ %62, %56 ], [ 0, %53 ]
%59 = getelementptr i64, i64* %4, i64 %57
%60 = bitcast i64* %59 to <2 x i64>*
store <2 x i64> %16, <2 x i64>* %60
%61 = add nuw i64 %57, 2
%62 = add i64 %58, 1
%63 = icmp eq i64 %62, %20
br i1 %63, label %64, label %56
64: ; preds = %56, %53
%65 = icmp eq i64 %12, %2
br i1 %65, label %171, label %66
66: ; preds = %8, %64
%67 = phi i64* [ %4, %8 ], [ %13, %64 ]
%68 = phi i64 [ %2, %8 ], [ %14, %64 ]
br label %69
69: ; preds = %66, %69
%70 = phi i64* [ %72, %69 ], [ %67, %66 ]
%71 = phi i64 [ %73, %69 ], [ %68, %66 ]
%72 = getelementptr inbounds i64, i64* %70, i64 1
store i64 %9, i64* %70
%73 = add i64 %71, -1
%74 = icmp eq i64 %73, 0
br i1 %74, label %171, label %69
75: ; preds = %3
%76 = sext i32 %1 to i64
%77 = icmp eq i32 %1, 0
%78 = shl nsw i64 %76, 8
%79 = or i64 %78, %76
%80 = select i1 %77, i64 0, i64 %79
%81 = ptrtoint i8* %0 to i64
%82 = and i64 %81, 7
%83 = icmp eq i64 %82, 0
br i1 %83, label %115, label %84
84: ; preds = %75
%85 = or i64 %81, -8
%86 = getelementptr inbounds i8, i8* %0, i64 8
%87 = bitcast i8* %86 to i64*
store i64 %76, i64* %4
%88 = icmp eq i64 %82, 7
br i1 %88, label %112, label %89
89: ; preds = %84
%90 = getelementptr inbounds i8, i8* %0, i64 16
%91 = bitcast i8* %90 to i64*
store i64 %76, i64* %87
%92 = icmp eq i64 %82, 6
br i1 %92, label %112, label %93
93: ; preds = %89
%94 = getelementptr inbounds i8, i8* %0, i64 24
%95 = bitcast i8* %94 to i64*
store i64 %76, i64* %91
%96 = icmp eq i64 %82, 5
br i1 %96, label %112, label %97
97: ; preds = %93
%98 = getelementptr inbounds i8, i8* %0, i64 32
%99 = bitcast i8* %98 to i64*
store i64 %76, i64* %95
%100 = icmp eq i64 %82, 4
br i1 %100, label %112, label %101
101: ; preds = %97
%102 = getelementptr inbounds i8, i8* %0, i64 40
%103 = bitcast i8* %102 to i64*
store i64 %76, i64* %99
%104 = icmp eq i64 %82, 3
br i1 %104, label %112, label %105
105: ; preds = %101
%106 = getelementptr inbounds i8, i8* %0, i64 48
%107 = bitcast i8* %106 to i64*
store i64 %76, i64* %103
%108 = icmp eq i64 %82, 2
br i1 %108, label %112, label %109
109: ; preds = %105
%110 = getelementptr inbounds i8, i8* %0, i64 56
%111 = bitcast i8* %110 to i64*
store i64 %76, i64* %107
br label %112
112: ; preds = %109, %105, %101, %97, %93, %89, %84
%113 = phi i64* [ %87, %84 ], [ %91, %89 ], [ %95, %93 ], [ %99, %97 ], [ %103, %101 ], [ %107, %105 ], [ %111, %109 ]
%114 = add i64 %85, %2
br label %115
115: ; preds = %112, %75
%116 = phi i64 [ %2, %75 ], [ %114, %112 ]
%117 = phi i64* [ %4, %75 ], [ %113, %112 ]
%118 = lshr i64 %116, 3
%119 = add nsw i64 %118, -1
%120 = and i64 %118, 7
%121 = icmp eq i64 %120, 0
br i1 %121, label %130, label %122
122: ; preds = %115, %122
%123 = phi i64 [ %127, %122 ], [ %118, %115 ]
%124 = phi i64* [ %126, %122 ], [ %117, %115 ]
%125 = phi i64 [ %128, %122 ], [ 0, %115 ]
store i64 %80, i64* %124
%126 = getelementptr inbounds i64, i64* %124, i64 8
%127 = add i64 %123, -1
%128 = add i64 %125, 1
%129 = icmp eq i64 %128, %120
br i1 %129, label %130, label %122
130: ; preds = %122, %115
%131 = phi i64* [ undef, %115 ], [ %126, %122 ]
%132 = phi i64 [ %118, %115 ], [ %127, %122 ]
%133 = phi i64* [ %117, %115 ], [ %126, %122 ]
%134 = icmp ult i64 %119, 7
br i1 %134, label %148, label %135
135: ; preds = %130, %135
%136 = phi i64 [ %146, %135 ], [ %132, %130 ]
%137 = phi i64* [ %145, %135 ], [ %133, %130 ]
store i64 %80, i64* %137
%138 = getelementptr inbounds i64, i64* %137, i64 8
store i64 %80, i64* %138
%139 = getelementptr inbounds i64, i64* %137, i64 16
store i64 %80, i64* %139
%140 = getelementptr inbounds i64, i64* %137, i64 24
store i64 %80, i64* %140
%141 = getelementptr inbounds i64, i64* %137, i64 32
store i64 %80, i64* %141
%142 = getelementptr inbounds i64, i64* %137, i64 40
store i64 %80, i64* %142
%143 = getelementptr inbounds i64, i64* %137, i64 48
store i64 %80, i64* %143
%144 = getelementptr inbounds i64, i64* %137, i64 56
store i64 %80, i64* %144
%145 = getelementptr inbounds i64, i64* %137, i64 64
%146 = add i64 %136, -8
%147 = icmp eq i64 %146, 0
br i1 %147, label %148, label %135
148: ; preds = %135, %130
%149 = phi i64* [ %131, %130 ], [ %145, %135 ]
%150 = and i64 %116, 7
%151 = icmp eq i64 %150, 0
br i1 %151, label %171, label %152
152: ; preds = %148
store i64 %76, i64* %149
%153 = icmp eq i64 %150, 1
br i1 %153, label %171, label %154
154: ; preds = %152
%155 = getelementptr inbounds i64, i64* %149, i64 1
store i64 %76, i64* %155
%156 = icmp eq i64 %150, 2
br i1 %156, label %171, label %157
157: ; preds = %154
%158 = getelementptr inbounds i64, i64* %149, i64 2
store i64 %76, i64* %158
%159 = icmp eq i64 %150, 3
br i1 %159, label %171, label %160
160: ; preds = %157
%161 = getelementptr inbounds i64, i64* %149, i64 3
store i64 %76, i64* %161
%162 = icmp eq i64 %150, 4
br i1 %162, label %171, label %163
163: ; preds = %160
%164 = getelementptr inbounds i64, i64* %149, i64 4
store i64 %76, i64* %164
%165 = icmp eq i64 %150, 5
br i1 %165, label %171, label %166
166: ; preds = %163
%167 = getelementptr inbounds i64, i64* %149, i64 5
store i64 %76, i64* %167
%168 = icmp eq i64 %150, 6
br i1 %168, label %171, label %169
169: ; preds = %166
%170 = getelementptr inbounds i64, i64* %149, i64 6
store i64 %76, i64* %170
br label %171
171: ; preds = %152, %154, %157, %160, %163, %166, %169, %69, %64, %6, %148
ret i8* %0
}