void ft_resize_buff(char **buffer, int n) {
  int i;
  i = 0;
  while (i < 128) {
    if (i + n < 128)
      (*buffer)[i] = (*buffer)[i + n + 1];
    else
      (*buffer)[i] = '\0';
    ++i;
  }
}


x86 assembly (clang, -O0):
<ft_resize_buff>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x80,-0x10(%rbp)
jge    1176 <ft_resize_buff+0x76>
mov    -0x10(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0x80,%eax
jge    1159 <ft_resize_buff+0x59>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1168 <ft_resize_buff+0x68>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x10(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1112 <ft_resize_buff+0x12>
pop    %rbp
ret

x86 assembly (clang, -O2):
<ft_resize_buff>:
movslq %esi,%rax
add    $0x1,%rax
xor    %ecx,%ecx
jmp    112b <ft_resize_buff+0x2b>
nopl   0x0(%rax,%rax,1)
movzbl 0x1(%rdx,%rax,1),%esi
mov    %sil,0x1(%rdx,%rcx,1)
add    $0x2,%rcx
add    $0x2,%rax
cmp    $0x80,%rcx
je     1153 <ft_resize_buff+0x53>
lea    -0x1(%rax),%rsi
mov    (%rdi),%rdx
cmp    $0x7f,%rsi
jg     1140 <ft_resize_buff+0x40>
movzbl (%rdx,%rax,1),%esi
jmp    1142 <ft_resize_buff+0x42>
xchg   %ax,%ax
xor    %esi,%esi
mov    %sil,(%rdx,%rcx,1)
mov    (%rdi),%rdx
cmp    $0x7f,%rax
jle    1110 <ft_resize_buff+0x10>
xor    %esi,%esi
jmp    1115 <ft_resize_buff+0x15>
ret

LLVM IR (-O0):
define void @ft_resize_buff(i8** %0, i32 %1) {
%3 = alloca i8**
%4 = alloca i32
%5 = alloca i32
store i8** %0, i8*** %3
store i32 %1, i32* %4
store i32 0, i32* %5
br label %6
6: ; preds = %35, %2
%7 = load i32, i32* %5
%8 = icmp slt i32 %7, 128
br i1 %8, label %9, label %38
9: ; preds = %6
%10 = load i32, i32* %5
%11 = load i32, i32* %4
%12 = add nsw i32 %10, %11
%13 = icmp slt i32 %12, 128
br i1 %13, label %14, label %29
14: ; preds = %9
%15 = load i8**, i8*** %3
%16 = load i8*, i8** %15
%17 = load i32, i32* %5
%18 = load i32, i32* %4
%19 = add nsw i32 %17, %18
%20 = add nsw i32 %19, 1
%21 = sext i32 %20 to i64
%22 = getelementptr inbounds i8, i8* %16, i64 %21
%23 = load i8, i8* %22
%24 = load i8**, i8*** %3
%25 = load i8*, i8** %24
%26 = load i32, i32* %5
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i8, i8* %25, i64 %27
store i8 %23, i8* %28
br label %35
29: ; preds = %9
%30 = load i8**, i8*** %3
%31 = load i8*, i8** %30
%32 = load i32, i32* %5
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds i8, i8* %31, i64 %33
store i8 0, i8* %34
br label %35
35: ; preds = %29, %14
%36 = load i32, i32* %5
%37 = add nsw i32 %36, 1
store i32 %37, i32* %5
br label %6
38: ; preds = %6
ret void
}

LLVM IR (-O2):
define void @ft_resize_buff(i8** nocapture %0, i32 %1) {
%3 = sext i32 %1 to i64
br label %4
4: ; preds = %24, %2
%5 = phi i64 [ 0, %2 ], [ %27, %24 ]
%6 = add nsw i64 %5, %3
%7 = icmp slt i64 %6, 128
%8 = load i8*, i8** %0
br i1 %7, label %9, label %13
9: ; preds = %4
%10 = add nsw i64 %6, 1
%11 = getelementptr inbounds i8, i8* %8, i64 %10
%12 = load i8, i8* %11
br label %13
13: ; preds = %4, %9
%14 = phi i8 [ %12, %9 ], [ 0, %4 ]
%15 = getelementptr inbounds i8, i8* %8, i64 %5
store i8 %14, i8* %15
%16 = or i64 %5, 1
%17 = add nsw i64 %16, %3
%18 = icmp slt i64 %17, 128
%19 = load i8*, i8** %0
br i1 %18, label %20, label %24
20: ; preds = %13
%21 = add nsw i64 %17, 1
%22 = getelementptr inbounds i8, i8* %19, i64 %21
%23 = load i8, i8* %22
br label %24
24: ; preds = %20, %13
%25 = phi i8 [ %23, %20 ], [ 0, %13 ]
%26 = getelementptr inbounds i8, i8* %19, i64 %16
store i8 %25, i8* %26
%27 = add nuw nsw i64 %5, 2
%28 = icmp eq i64 %27, 128
br i1 %28, label %29, label %4
29: ; preds = %24
ret void
}