#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 */
size_t strlen(char *);
void bin_append(const int arg, const int length, char *binary) {
  int i;
  int start;
  size_t posn = strlen(binary);
  start = 0x01 << (length - 1);
  for (i = 0; i < length; i++) {
    binary[posn + i] = '0';
    if (arg & (start >> i)) {
      binary[posn + i] = '1';
    }
  }
  binary[posn + length] = '\0';
  return;
}


x86 assembly (clang, -O0):
<bin_append>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    11a3 <bin_append+0x93>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0x14(%rbp),%rdx
add    %rdx,%rcx
movb   $0x30,(%rax,%rcx,1)
mov    -0x4(%rbp),%eax
mov    -0x18(%rbp),%edx
mov    -0x14(%rbp),%ecx
sar    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1190 <bin_append+0x80>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0x14(%rbp),%rdx
add    %rdx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    1195 <bin_append+0x85>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1146 <bin_append+0x36>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0x8(%rbp),%rdx
add    %rdx,%rcx
movb   $0x0,(%rax,%rcx,1)
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<bin_append>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %rdx,%r14
mov    %esi,%r15d
mov    %edi,%r12d
mov    %rdx,%rdi
call   1030 <strlen@plt>
lea    -0x1(%r15),%ecx
mov    $0x1,%esi
shl    %cl,%esi
test   %r15d,%r15d
jle    168b <bin_append+0x57b>
mov    %r15d,%r9d
cmp    $0x10,%r15d
jae    114d <bin_append+0x3d>
xor    %ecx,%ecx
jmp    165f <bin_append+0x54f>
mov    %r9d,%ecx
and    $0xfffffff0,%ecx
movd   %esi,%xmm0
pshufd $0x0,%xmm0,%xmm8
movd   %r12d,%xmm0
pshufd $0x0,%xmm0,%xmm12
lea    -0x10(%rcx),%rdi
mov    %rdi,%r8
shr    $0x4,%r8
add    $0x1,%r8
test   %rdi,%rdi
je     169f <bin_append+0x58f>
mov    %r8,%rbx
and    $0xfffffffffffffffe,%rbx
lea    (%rax,%r14,1),%rbp
add    $0x10,%rbp
movdqa 0xe68(%rip),%xmm13
movdqa 0xe6f(%rip),%xmm14
movdqa 0xe76(%rip),%xmm15
movdqa 0xe7e(%rip),%xmm5
xor    %edi,%edi
pxor   %xmm11,%xmm11
movdqa 0xe9e(%rip),%xmm10
movdqa 0xe75(%rip),%xmm9
nopl   0x0(%rax,%rax,1)
pshuflw $0xfe,%xmm5,%xmm0
movdqa %xmm8,%xmm2
psrad  %xmm0,%xmm2
pshuflw $0x54,%xmm5,%xmm0
movdqa %xmm8,%xmm1
psrad  %xmm0,%xmm1
punpcklqdq %xmm2,%xmm1
pshufd $0xee,%xmm5,%xmm0
pshuflw $0xfe,%xmm0,%xmm2
movdqa %xmm8,%xmm3
psrad  %xmm2,%xmm3
pshuflw $0x54,%xmm0,%xmm0
movdqa %xmm8,%xmm2
psrad  %xmm0,%xmm2
punpckhqdq %xmm3,%xmm2
shufps $0xcc,%xmm2,%xmm1
pshuflw $0xfe,%xmm15,%xmm0
movdqa %xmm8,%xmm3
psrad  %xmm0,%xmm3
pshuflw $0x54,%xmm15,%xmm0
movdqa %xmm8,%xmm2
psrad  %xmm0,%xmm2
punpcklqdq %xmm3,%xmm2
pshufd $0xee,%xmm15,%xmm0
pshuflw $0xfe,%xmm0,%xmm3
movdqa %xmm8,%xmm6
psrad  %xmm3,%xmm6
pshuflw $0x54,%xmm0,%xmm0
movdqa %xmm8,%xmm3
psrad  %xmm0,%xmm3
punpckhqdq %xmm6,%xmm3
shufps $0xcc,%xmm3,%xmm2
pshuflw $0xfe,%xmm14,%xmm0
movdqa %xmm8,%xmm3
psrad  %xmm0,%xmm3
pshuflw $0x54,%xmm14,%xmm0
movdqa %xmm8,%xmm6
psrad  %xmm0,%xmm6
punpcklqdq %xmm3,%xmm6
pshufd $0xee,%xmm14,%xmm0
pshuflw $0xfe,%xmm0,%xmm3
movdqa %xmm8,%xmm4
psrad  %xmm3,%xmm4
pshuflw $0x54,%xmm0,%xmm0
movdqa %xmm8,%xmm3
psrad  %xmm0,%xmm3
punpckhqdq %xmm4,%xmm3
shufps $0xcc,%xmm3,%xmm6
pshuflw $0xfe,%xmm13,%xmm0
movdqa %xmm8,%xmm3
psrad  %xmm0,%xmm3
pshuflw $0x54,%xmm13,%xmm4
movdqa %xmm8,%xmm0
psrad  %xmm4,%xmm0
punpcklqdq %xmm3,%xmm0
pshufd $0xee,%xmm13,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm8,%xmm7
psrad  %xmm4,%xmm7
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm8,%xmm4
psrad  %xmm3,%xmm4
punpckhqdq %xmm7,%xmm4
shufps $0xcc,%xmm4,%xmm0
andps  %xmm12,%xmm0
andps  %xmm12,%xmm6
andps  %xmm12,%xmm2
andps  %xmm12,%xmm1
pcmpeqd %xmm11,%xmm1
pcmpeqd %xmm11,%xmm2
packssdw %xmm2,%xmm1
pcmpeqd %xmm11,%xmm6
pcmpeqd %xmm11,%xmm0
packssdw %xmm0,%xmm6
packsswb %xmm6,%xmm1
paddb  %xmm9,%xmm1
movdqu %xmm1,-0x10(%rbp,%rdi,1)
movdqa %xmm13,%xmm2
movdqa 0xd0b(%rip),%xmm1
paddd  %xmm1,%xmm2
movdqa %xmm14,%xmm3
paddd  %xmm1,%xmm3
movdqa %xmm15,%xmm0
paddd  %xmm1,%xmm0
movdqa %xmm5,%xmm4
paddd  %xmm1,%xmm4
pshuflw $0xfe,%xmm4,%xmm1
movdqa %xmm8,%xmm6
psrad  %xmm1,%xmm6
pshuflw $0x54,%xmm4,%xmm7
movdqa %xmm8,%xmm1
psrad  %xmm7,%xmm1
punpcklqdq %xmm6,%xmm1
pshufd $0xee,%xmm4,%xmm4
pshuflw $0xfe,%xmm4,%xmm6
movdqa %xmm8,%xmm7
psrad  %xmm6,%xmm7
pshuflw $0x54,%xmm4,%xmm4
movdqa %xmm8,%xmm6
psrad  %xmm4,%xmm6
punpckhqdq %xmm7,%xmm6
shufps $0xcc,%xmm6,%xmm1
pshuflw $0xfe,%xmm0,%xmm4
movdqa %xmm8,%xmm7
psrad  %xmm4,%xmm7
pshuflw $0x54,%xmm0,%xmm4
movdqa %xmm8,%xmm6
psrad  %xmm4,%xmm6
punpcklqdq %xmm7,%xmm6
pshufd $0xee,%xmm0,%xmm0
pshuflw $0xfe,%xmm0,%xmm4
movdqa %xmm8,%xmm7
psrad  %xmm4,%xmm7
pshuflw $0x54,%xmm0,%xmm0
movdqa %xmm8,%xmm4
psrad  %xmm0,%xmm4
punpckhqdq %xmm7,%xmm4
shufps $0xcc,%xmm4,%xmm6
pshuflw $0xfe,%xmm3,%xmm0
movdqa %xmm8,%xmm4
psrad  %xmm0,%xmm4
pshuflw $0x54,%xmm3,%xmm7
movdqa %xmm8,%xmm0
psrad  %xmm7,%xmm0
punpcklqdq %xmm4,%xmm0
pshufd $0xee,%xmm3,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm8,%xmm7
psrad  %xmm4,%xmm7
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm8,%xmm4
psrad  %xmm3,%xmm4
punpckhqdq %xmm7,%xmm4
shufps $0xcc,%xmm4,%xmm0
pshuflw $0xfe,%xmm2,%xmm3
movdqa %xmm8,%xmm4
psrad  %xmm3,%xmm4
pshuflw $0x54,%xmm2,%xmm7
movdqa %xmm8,%xmm3
psrad  %xmm7,%xmm3
punpcklqdq %xmm4,%xmm3
pshufd $0xee,%xmm2,%xmm2
pshuflw $0xfe,%xmm2,%xmm4
movdqa %xmm8,%xmm7
psrad  %xmm4,%xmm7
pshuflw $0x54,%xmm2,%xmm2
movdqa %xmm8,%xmm4
psrad  %xmm2,%xmm4
punpckhqdq %xmm7,%xmm4
shufps $0xcc,%xmm4,%xmm3
andps  %xmm12,%xmm6
andps  %xmm12,%xmm1
pcmpeqd %xmm11,%xmm1
pcmpeqd %xmm11,%xmm6
packssdw %xmm6,%xmm1
andps  %xmm12,%xmm3
andps  %xmm12,%xmm0
pcmpeqd %xmm11,%xmm0
pcmpeqd %xmm11,%xmm3
packssdw %xmm3,%xmm0
packsswb %xmm0,%xmm1
paddb  %xmm9,%xmm1
movdqu %xmm1,0x0(%rbp,%rdi,1)
add    $0x20,%rdi
paddd  %xmm10,%xmm5
paddd  %xmm10,%xmm15
paddd  %xmm10,%xmm14
paddd  %xmm10,%xmm13
add    $0xfffffffffffffffe,%rbx
jne    11d0 <bin_append+0xc0>
test   $0x1,%r8b
je     165a <bin_append+0x54a>
add    %rax,%rdi
pshuflw $0xfe,%xmm5,%xmm0
movdqa %xmm8,%xmm2
psrad  %xmm0,%xmm2
pshuflw $0x54,%xmm5,%xmm0
movdqa %xmm8,%xmm1
psrad  %xmm0,%xmm1
punpcklqdq %xmm2,%xmm1
pshufd $0xee,%xmm5,%xmm0
pshuflw $0xfe,%xmm0,%xmm2
movdqa %xmm8,%xmm3
psrad  %xmm2,%xmm3
pshuflw $0x54,%xmm0,%xmm0
movdqa %xmm8,%xmm2
psrad  %xmm0,%xmm2
punpckhqdq %xmm3,%xmm2
shufps $0xcc,%xmm2,%xmm1
pshuflw $0xfe,%xmm15,%xmm0
movdqa %xmm8,%xmm3
psrad  %xmm0,%xmm3
pshuflw $0x54,%xmm15,%xmm0
movdqa %xmm8,%xmm2
psrad  %xmm0,%xmm2
punpcklqdq %xmm3,%xmm2
pshufd $0xee,%xmm15,%xmm0
pshuflw $0xfe,%xmm0,%xmm3
movdqa %xmm8,%xmm4
psrad  %xmm3,%xmm4
pshuflw $0x54,%xmm0,%xmm0
movdqa %xmm8,%xmm3
psrad  %xmm0,%xmm3
punpckhqdq %xmm4,%xmm3
shufps $0xcc,%xmm3,%xmm2
pshuflw $0xfe,%xmm14,%xmm0
movdqa %xmm8,%xmm3
psrad  %xmm0,%xmm3
pshuflw $0x54,%xmm14,%xmm4
movdqa %xmm8,%xmm0
psrad  %xmm4,%xmm0
punpcklqdq %xmm3,%xmm0
pshufd $0xee,%xmm14,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm8,%xmm5
psrad  %xmm4,%xmm5
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm8,%xmm4
psrad  %xmm3,%xmm4
punpckhqdq %xmm5,%xmm4
shufps $0xcc,%xmm4,%xmm0
pshuflw $0xfe,%xmm13,%xmm3
movdqa %xmm8,%xmm4
psrad  %xmm3,%xmm4
pshuflw $0x54,%xmm13,%xmm5
movdqa %xmm8,%xmm3
psrad  %xmm5,%xmm3
punpcklqdq %xmm4,%xmm3
pshufd $0xee,%xmm13,%xmm4
pshuflw $0xfe,%xmm4,%xmm5
movdqa %xmm8,%xmm6
psrad  %xmm5,%xmm6
pshuflw $0x54,%xmm4,%xmm4
psrad  %xmm4,%xmm8
punpckhqdq %xmm6,%xmm8
shufps $0xcc,%xmm8,%xmm3
andps  %xmm12,%xmm3
andps  %xmm12,%xmm0
andps  %xmm12,%xmm2
andps  %xmm12,%xmm1
pxor   %xmm4,%xmm4
pcmpeqd %xmm4,%xmm1
pcmpeqd %xmm4,%xmm2
packssdw %xmm2,%xmm1
pcmpeqd %xmm4,%xmm0
pcmpeqd %xmm4,%xmm3
packssdw %xmm3,%xmm0
packsswb %xmm0,%xmm1
paddb  0x9ec(%rip),%xmm1
movdqu %xmm1,(%r14,%rdi,1)
cmp    %r9,%rcx
je     168b <bin_append+0x57b>
lea    (%r14,%rax,1),%rdi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %esi,%edx
sar    %cl,%edx
and    %r12d,%edx
cmp    $0x1,%edx
mov    $0x31,%dl
sbb    $0x0,%dl
mov    %dl,(%rdi,%rcx,1)
add    $0x1,%rcx
cmp    %rcx,%r9
jne    1670 <bin_append+0x560>
movslq %r15d,%rcx
add    %rcx,%rax
movb   $0x0,(%r14,%rax,1)
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret
movdqa 0x958(%rip),%xmm13
movdqa 0x95f(%rip),%xmm14
movdqa 0x966(%rip),%xmm15
movdqa 0x96e(%rip),%xmm5
xor    %edi,%edi
test   $0x1,%r8b
jne    14ee <bin_append+0x3de>
jmp    165a <bin_append+0x54a>

LLVM IR (-O0):
define void @bin_append(i32 %0, i32 %1, i8* %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i64
store i32 %0, i32* %4
store i32 %1, i32* %5
store i8* %2, i8** %6
%10 = load i8*, i8** %6
%11 = call i64 @strlen(i8* %10)
store i64 %11, i64* %9
%12 = load i32, i32* %5
%13 = sub nsw i32 %12, 1
%14 = shl i32 1, %13
store i32 %14, i32* %8
store i32 0, i32* %7
br label %15
15: ; preds = %40, %3
%16 = load i32, i32* %7
%17 = load i32, i32* %5
%18 = icmp slt i32 %16, %17
br i1 %18, label %19, label %43
19: ; preds = %15
%20 = load i8*, i8** %6
%21 = load i64, i64* %9
%22 = load i32, i32* %7
%23 = sext i32 %22 to i64
%24 = add i64 %21, %23
%25 = getelementptr inbounds i8, i8* %20, i64 %24
store i8 48, i8* %25
%26 = load i32, i32* %4
%27 = load i32, i32* %8
%28 = load i32, i32* %7
%29 = ashr i32 %27, %28
%30 = and i32 %26, %29
%31 = icmp ne i32 %30, 0
br i1 %31, label %32, label %39
32: ; preds = %19
%33 = load i8*, i8** %6
%34 = load i64, i64* %9
%35 = load i32, i32* %7
%36 = sext i32 %35 to i64
%37 = add i64 %34, %36
%38 = getelementptr inbounds i8, i8* %33, i64 %37
store i8 49, i8* %38
br label %39
39: ; preds = %32, %19
br label %40
40: ; preds = %39
%41 = load i32, i32* %7
%42 = add nsw i32 %41, 1
store i32 %42, i32* %7
br label %15
43: ; preds = %15
%44 = load i8*, i8** %6
%45 = load i64, i64* %9
%46 = load i32, i32* %5
%47 = sext i32 %46 to i64
%48 = add i64 %45, %47
%49 = getelementptr inbounds i8, i8* %44, i64 %48
store i8 0, i8* %49
ret void
}

LLVM IR (-O2):
define void @bin_append(i32 %0, i32 %1, i8* nocapture %2) {
%4 = tail call i64 @strlen(i8* dereferenceable(1) %2)
%5 = add nsw i32 %1, -1
%6 = shl nuw i32 1, %5
%7 = icmp sgt i32 %1, 0
br i1 %7, label %8, label %75
8: ; preds = %3
%9 = zext i32 %1 to i64
%10 = icmp ult i32 %1, 16
br i1 %10, label %62, label %11
11: ; preds = %8
%12 = and i64 %9, 4294967280
%13 = insertelement <16 x i32> poison, i32 %6, i64 0
%14 = shufflevector <16 x i32> %13, <16 x i32> poison, <16 x i32> zeroinitializer
%15 = insertelement <16 x i32> poison, i32 %0, i64 0
%16 = shufflevector <16 x i32> %15, <16 x i32> poison, <16 x i32> zeroinitializer
%17 = add nsw i64 %12, -16
%18 = lshr exact i64 %17, 4
%19 = add nuw nsw i64 %18, 1
%20 = and i64 %19, 1
%21 = icmp eq i64 %17, 0
br i1 %21, label %48, label %22
22: ; preds = %11
%23 = and i64 %19, 2305843009213693950
br label %24
24: ; preds = %24, %22
%25 = phi i64 [ 0, %22 ], [ %44, %24 ]
%26 = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, %22 ], [ %45, %24 ]
%27 = phi i64 [ 0, %22 ], [ %46, %24 ]
%28 = add i64 %4, %25
%29 = getelementptr inbounds i8, i8* %2, i64 %28
%30 = ashr <16 x i32> %14, %26
%31 = and <16 x i32> %30, %16
%32 = icmp eq <16 x i32> %31, zeroinitializer
%33 = select <16 x i1> %32, <16 x i8> <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>, <16 x i8> <i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49>
%34 = bitcast i8* %29 to <16 x i8>*
store <16 x i8> %33, <16 x i8>* %34
%35 = or i64 %25, 16
%36 = add <16 x i32> %26, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%37 = add i64 %4, %35
%38 = getelementptr inbounds i8, i8* %2, i64 %37
%39 = ashr <16 x i32> %14, %36
%40 = and <16 x i32> %39, %16
%41 = icmp eq <16 x i32> %40, zeroinitializer
%42 = select <16 x i1> %41, <16 x i8> <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>, <16 x i8> <i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49>
%43 = bitcast i8* %38 to <16 x i8>*
store <16 x i8> %42, <16 x i8>* %43
%44 = add nuw i64 %25, 32
%45 = add <16 x i32> %26, <i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32>
%46 = add i64 %27, 2
%47 = icmp eq i64 %46, %23
br i1 %47, label %48, label %24
48: ; preds = %24, %11
%49 = phi i64 [ 0, %11 ], [ %44, %24 ]
%50 = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, %11 ], [ %45, %24 ]
%51 = icmp eq i64 %20, 0
br i1 %51, label %60, label %52
52: ; preds = %48
%53 = add i64 %4, %49
%54 = getelementptr inbounds i8, i8* %2, i64 %53
%55 = ashr <16 x i32> %14, %50
%56 = and <16 x i32> %55, %16
%57 = icmp eq <16 x i32> %56, zeroinitializer
%58 = select <16 x i1> %57, <16 x i8> <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>, <16 x i8> <i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49>
%59 = bitcast i8* %54 to <16 x i8>*
store <16 x i8> %58, <16 x i8>* %59
br label %60
60: ; preds = %48, %52
%61 = icmp eq i64 %12, %9
br i1 %61, label %75, label %62
62: ; preds = %8, %60
%63 = phi i64 [ 0, %8 ], [ %12, %60 ]
br label %64
64: ; preds = %62, %64
%65 = phi i64 [ %73, %64 ], [ %63, %62 ]
%66 = add i64 %4, %65
%67 = getelementptr inbounds i8, i8* %2, i64 %66
%68 = trunc i64 %65 to i32
%69 = ashr i32 %6, %68
%70 = and i32 %69, %0
%71 = icmp eq i32 %70, 0
%72 = select i1 %71, i8 48, i8 49
store i8 %72, i8* %67
%73 = add nuw nsw i64 %65, 1
%74 = icmp eq i64 %73, %9
br i1 %74, label %75, label %64
75: ; preds = %64, %60, %3
%76 = sext i32 %1 to i64
%77 = add i64 %4, %76
%78 = getelementptr inbounds i8, i8* %2, i64 %77
store i8 0, i8* %78
ret void
}