#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 */
char *ft_memrealloc(char *, int);
int set_line(char **buff_p, char **line, int *size) {
  int i;
  int j;
  int nl;
  i = 0;
  while (i < 32 && (*buff_p)[i] != '\0' && (*buff_p)[i] != '\n')
    i++;
  nl = ((*buff_p)[i] == '\n');
  *line = ft_memrealloc(*line, *size + i + 1);
  j = 0;
  while (j < i) {
    (*line)[*size + j] = (*buff_p)[j];
    j++;
  }
  *size += i++;
  j = 0;
  while (j + i < 32 && (*buff_p)[j + i] != '\0') {
    (*buff_p)[j] = (*buff_p)[j + i];
    j++;
  }
  while (j < 32 && (*buff_p)[j] != '\0')
    (*buff_p)[j++] = '\0';
  return (nl);
}


x86 assembly (clang, -O0):
<set_line>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
xor    %eax,%eax
cmpl   $0x20,-0x1c(%rbp)
mov    %al,-0x25(%rbp)
jge    116f <set_line+0x5f>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x25(%rbp)
je     116f <set_line+0x5f>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
setne  %al
mov    %al,-0x25(%rbp)
mov    -0x25(%rbp),%al
test   $0x1,%al
jne    117f <set_line+0x6f>
jmp    118d <set_line+0x7d>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    112b <set_line+0x1b>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
mov    -0x18(%rbp),%rax
mov    (%rax),%esi
add    -0x1c(%rbp),%esi
add    $0x1,%esi
call   1030 <ft_memrealloc@plt>
mov    %rax,%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1211 <set_line+0x101>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%ecx
add    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11d3 <set_line+0xc3>
mov    -0x1c(%rbp),%ecx
mov    %ecx,%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%ecx
add    -0x1c(%rbp),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x26(%rbp)
jge    125c <set_line+0x14c>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    -0x20(%rbp),%ecx
add    -0x1c(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x26(%rbp)
mov    -0x26(%rbp),%al
test   $0x1,%al
jne    126c <set_line+0x15c>
jmp    129b <set_line+0x18b>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    -0x20(%rbp),%ecx
add    -0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x20(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    122b <set_line+0x11b>
jmp    12a0 <set_line+0x190>
xor    %eax,%eax
cmpl   $0x20,-0x20(%rbp)
mov    %al,-0x27(%rbp)
jge    12c7 <set_line+0x1b7>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x27(%rbp)
mov    -0x27(%rbp),%al
test   $0x1,%al
jne    12d7 <set_line+0x1c7>
jmp    12f5 <set_line+0x1e5>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
jmp    12a0 <set_line+0x190>
mov    -0x24(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<set_line>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rsi,%rax
mov    %rdi,%r12
mov    (%rdi),%rcx
mov    (%rcx),%bl
xor    %r8d,%r8d
mov    $0x1,%r15b
xor    %r13d,%r13d
mov    $0x1,%sil
test   %bl,%bl
je     121b <set_line+0x10b>
mov    $0x0,%edi
cmp    $0xa,%bl
je     121d <set_line+0x10d>
mov    0x1(%rcx),%bl
mov    $0x1,%r8d
mov    $0x1,%sil
xor    %r15d,%r15d
mov    $0x1,%r13b
test   %bl,%bl
je     121b <set_line+0x10b>
mov    $0x0,%edi
cmp    $0xa,%bl
je     121d <set_line+0x10d>
mov    0x2(%rcx),%bl
mov    $0x2,%r8d
mov    $0x1,%sil
xor    %r15d,%r15d
test   %bl,%bl
je     118b <set_line+0x7b>
cmp    $0xa,%bl
jne    1196 <set_line+0x86>
xor    %r13d,%r13d
mov    $0x1,%dil
jmp    121d <set_line+0x10d>
mov    0x3(%rcx),%bl
mov    $0x3,%r8d
xor    %r15d,%r15d
test   %bl,%bl
je     1218 <set_line+0x108>
cmp    $0xa,%bl
je     1218 <set_line+0x108>
mov    0x4(%rcx),%bl
mov    $0x4,%r8d
xor    %r15d,%r15d
test   %bl,%bl
je     1218 <set_line+0x108>
cmp    $0xa,%bl
je     1218 <set_line+0x108>
mov    0x5(%rcx),%bl
mov    $0x5,%r8d
xor    %r15d,%r15d
test   %bl,%bl
je     1218 <set_line+0x108>
cmp    $0xa,%bl
je     1218 <set_line+0x108>
mov    0x6(%rcx),%bl
mov    $0x6,%r8d
xor    %r15d,%r15d
test   %bl,%bl
je     1218 <set_line+0x108>
cmp    $0xa,%bl
je     1218 <set_line+0x108>
mov    0x7(%rcx),%bl
mov    $0x7,%r8d
xor    %r15d,%r15d
test   %bl,%bl
je     1218 <set_line+0x108>
cmp    $0xa,%bl
je     1218 <set_line+0x108>
mov    0x8(%rcx),%bl
mov    $0x8,%r8d
xor    %r15d,%r15d
test   %bl,%bl
je     1218 <set_line+0x108>
cmp    $0xa,%bl
jne    1380 <set_line+0x270>
xor    %r13d,%r13d
xor    %edi,%edi
mov    %edi,0x10(%rsp)
mov    %esi,0x14(%rsp)
mov    %bl,0xf(%rsp)
mov    %r8d,%r14d
mov    (%rax),%rdi
mov    (%rdx),%ecx
lea    (%r8,%rcx,1),%esi
add    $0x1,%esi
mov    %rax,%rbp
mov    %rdx,%rbx
call   1030 <ft_memrealloc@plt>
mov    %rbx,%r8
mov    %rax,0x0(%rbp)
test   %r15b,%r15b
jne    12ee <set_line+0x1de>
mov    (%r12),%rcx
mov    (%rcx),%cl
movslq (%r8),%rdx
mov    %cl,(%rax,%rdx,1)
test   %r13b,%r13b
jne    12ee <set_line+0x1de>
lea    -0x1(%r14),%rcx
mov    $0x1,%eax
cmpb   $0x0,0x10(%rsp)
jne    12d3 <set_line+0x1c3>
mov    %rcx,%rdx
and    $0xfffffffffffffffe,%rdx
neg    %rdx
mov    $0x1,%eax
nopw   0x0(%rax,%rax,1)
mov    0x0(%rbp),%rsi
mov    (%r12),%rdi
movzbl (%rdi,%rax,1),%ebx
mov    (%r8),%edi
add    %eax,%edi
movslq %edi,%rdi
mov    %bl,(%rsi,%rdi,1)
mov    0x0(%rbp),%rsi
mov    (%r12),%rdi
movzbl 0x1(%rdi,%rax,1),%ebx
mov    (%r8),%edi
lea    0x1(%rax,%rdi,1),%edi
movslq %edi,%rdi
mov    %bl,(%rsi,%rdi,1)
lea    (%rdx,%rax,1),%rsi
add    $0x2,%rsi
add    $0x2,%rax
cmp    $0x1,%rsi
jne    1290 <set_line+0x180>
test   $0x1,%cl
je     12ee <set_line+0x1de>
mov    0x0(%rbp),%rcx
mov    (%r12),%rdx
mov    (%rdx,%rax,1),%dl
movslq (%r8),%rsi
cltq
add    %rsi,%rax
mov    %dl,(%rcx,%rax,1)
add    %r14d,(%r8)
cmpb   $0x0,0x14(%rsp)
je     133a <set_line+0x22a>
mov    $0x1f,%ecx
sub    %r14d,%ecx
add    $0x1,%r14
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
lea    (%r14,%rax,1),%esi
mov    (%r12),%rdx
movzbl (%rdx,%rsi,1),%ebx
test   %bl,%bl
je     132c <set_line+0x21c>
mov    %bl,(%rdx,%rax,1)
add    $0x1,%rax
cmp    %rax,%rcx
jne    1310 <set_line+0x200>
test   $0xffffffe0,%eax
mov    0xf(%rsp),%r13b
jne    1368 <set_line+0x258>
jmp    1341 <set_line+0x231>
xor    %eax,%eax
mov    0xf(%rsp),%r13b
mov    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    (%r12),%rcx
cmpb   $0x0,(%rcx,%rax,1)
je     1368 <set_line+0x258>
movb   $0x0,(%rcx,%rax,1)
add    $0x1,%rax
cmp    $0x20,%rax
jne    1350 <set_line+0x240>
xor    %eax,%eax
cmp    $0xa,%r13b
sete   %al
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rdx,%r10
mov    %rax,%r11
mov    0x9(%rcx),%dl
mov    $0x9,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0xa(%rcx),%dl
mov    $0xa,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0xb(%rcx),%dl
mov    $0xb,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0xc(%rcx),%dl
mov    $0xc,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0xd(%rcx),%dl
mov    $0xd,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0xe(%rcx),%dl
mov    $0xe,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0xf(%rcx),%dl
mov    $0xf,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x10(%rcx),%dl
mov    $0x10,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x11(%rcx),%dl
mov    $0x11,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x12(%rcx),%dl
mov    $0x12,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x13(%rcx),%dl
mov    $0x13,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x14(%rcx),%dl
mov    $0x14,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x15(%rcx),%dl
mov    $0x15,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x16(%rcx),%dl
mov    $0x16,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x17(%rcx),%dl
mov    $0x17,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x18(%rcx),%dl
mov    $0x18,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x19(%rcx),%dl
mov    $0x19,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x1a(%rcx),%dl
mov    $0x1a,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x1b(%rcx),%dl
mov    $0x1b,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x1c(%rcx),%dl
mov    $0x1c,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
je     15b3 <set_line+0x4a3>
mov    0x1d(%rcx),%dl
mov    $0x1d,%r8d
mov    %edx,%esi
test   %dl,%dl
je     15b3 <set_line+0x4a3>
cmp    $0xa,%sil
jne    15cb <set_line+0x4bb>
xor    %r13d,%r13d
xor    %edi,%edi
mov    %esi,%ebx
mov    $0x1,%sil
mov    %r11,%rax
mov    %r10,%rdx
xor    %r15d,%r15d
jmp    121d <set_line+0x10d>
mov    0x1e(%rcx),%bl
mov    $0x1e,%r8d
mov    %ebx,%edx
test   %bl,%bl
je     1648 <set_line+0x538>
mov    $0x0,%r13d
mov    $0x0,%edi
mov    %edx,%ebx
cmp    $0xa,%dl
mov    $0x1,%sil
mov    %r11,%rax
mov    %r10,%rdx
mov    $0x0,%r15d
je     121d <set_line+0x10d>
mov    0x1f(%rcx),%bl
mov    $0x1f,%r8d
mov    %ebx,%edx
test   %bl,%bl
je     1654 <set_line+0x544>
mov    $0x0,%esi
mov    $0x0,%r13d
mov    $0x0,%edi
mov    %edx,%ebx
cmp    $0xa,%dl
mov    %r11,%rax
mov    %r10,%rdx
mov    $0x0,%r15d
je     121d <set_line+0x10d>
mov    0x20(%rcx),%bl
mov    $0x20,%r8d
xor    %r15d,%r15d
xor    %esi,%esi
jmp    1218 <set_line+0x108>
xor    %r13d,%r13d
xor    %edi,%edi
mov    %edx,%ebx
jmp    15ba <set_line+0x4aa>
xor    %esi,%esi
xor    %r13d,%r13d
xor    %edi,%edi
mov    %edx,%ebx
jmp    15bd <set_line+0x4ad>

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

LLVM IR (-O2):
define i32 @set_line(i8** nocapture %0, i8** nocapture %1, i32* nocapture %2) {
%4 = load i8*, i8** %0
%5 = load i8, i8* %4
switch i8 %5, label %6 [
i8 0, label %102
i8 10, label %102
]
6: ; preds = %3
%7 = getelementptr inbounds i8, i8* %4, i64 1
%8 = load i8, i8* %7
switch i8 %8, label %9 [
i8 0, label %102
i8 10, label %102
]
9: ; preds = %6
%10 = getelementptr inbounds i8, i8* %4, i64 2
%11 = load i8, i8* %10
switch i8 %11, label %12 [
i8 0, label %102
i8 10, label %102
]
12: ; preds = %9
%13 = getelementptr inbounds i8, i8* %4, i64 3
%14 = load i8, i8* %13
switch i8 %14, label %15 [
i8 0, label %102
i8 10, label %102
]
15: ; preds = %12
%16 = getelementptr inbounds i8, i8* %4, i64 4
%17 = load i8, i8* %16
switch i8 %17, label %18 [
i8 0, label %102
i8 10, label %102
]
18: ; preds = %15
%19 = getelementptr inbounds i8, i8* %4, i64 5
%20 = load i8, i8* %19
switch i8 %20, label %21 [
i8 0, label %102
i8 10, label %102
]
21: ; preds = %18
%22 = getelementptr inbounds i8, i8* %4, i64 6
%23 = load i8, i8* %22
switch i8 %23, label %24 [
i8 0, label %102
i8 10, label %102
]
24: ; preds = %21
%25 = getelementptr inbounds i8, i8* %4, i64 7
%26 = load i8, i8* %25
switch i8 %26, label %27 [
i8 0, label %102
i8 10, label %102
]
27: ; preds = %24
%28 = getelementptr inbounds i8, i8* %4, i64 8
%29 = load i8, i8* %28
switch i8 %29, label %30 [
i8 0, label %102
i8 10, label %102
]
30: ; preds = %27
%31 = getelementptr inbounds i8, i8* %4, i64 9
%32 = load i8, i8* %31
switch i8 %32, label %33 [
i8 0, label %102
i8 10, label %102
]
33: ; preds = %30
%34 = getelementptr inbounds i8, i8* %4, i64 10
%35 = load i8, i8* %34
switch i8 %35, label %36 [
i8 0, label %102
i8 10, label %102
]
36: ; preds = %33
%37 = getelementptr inbounds i8, i8* %4, i64 11
%38 = load i8, i8* %37
switch i8 %38, label %39 [
i8 0, label %102
i8 10, label %102
]
39: ; preds = %36
%40 = getelementptr inbounds i8, i8* %4, i64 12
%41 = load i8, i8* %40
switch i8 %41, label %42 [
i8 0, label %102
i8 10, label %102
]
42: ; preds = %39
%43 = getelementptr inbounds i8, i8* %4, i64 13
%44 = load i8, i8* %43
switch i8 %44, label %45 [
i8 0, label %102
i8 10, label %102
]
45: ; preds = %42
%46 = getelementptr inbounds i8, i8* %4, i64 14
%47 = load i8, i8* %46
switch i8 %47, label %48 [
i8 0, label %102
i8 10, label %102
]
48: ; preds = %45
%49 = getelementptr inbounds i8, i8* %4, i64 15
%50 = load i8, i8* %49
switch i8 %50, label %51 [
i8 0, label %102
i8 10, label %102
]
51: ; preds = %48
%52 = getelementptr inbounds i8, i8* %4, i64 16
%53 = load i8, i8* %52
switch i8 %53, label %54 [
i8 0, label %102
i8 10, label %102
]
54: ; preds = %51
%55 = getelementptr inbounds i8, i8* %4, i64 17
%56 = load i8, i8* %55
switch i8 %56, label %57 [
i8 0, label %102
i8 10, label %102
]
57: ; preds = %54
%58 = getelementptr inbounds i8, i8* %4, i64 18
%59 = load i8, i8* %58
switch i8 %59, label %60 [
i8 0, label %102
i8 10, label %102
]
60: ; preds = %57
%61 = getelementptr inbounds i8, i8* %4, i64 19
%62 = load i8, i8* %61
switch i8 %62, label %63 [
i8 0, label %102
i8 10, label %102
]
63: ; preds = %60
%64 = getelementptr inbounds i8, i8* %4, i64 20
%65 = load i8, i8* %64
switch i8 %65, label %66 [
i8 0, label %102
i8 10, label %102
]
66: ; preds = %63
%67 = getelementptr inbounds i8, i8* %4, i64 21
%68 = load i8, i8* %67
switch i8 %68, label %69 [
i8 0, label %102
i8 10, label %102
]
69: ; preds = %66
%70 = getelementptr inbounds i8, i8* %4, i64 22
%71 = load i8, i8* %70
switch i8 %71, label %72 [
i8 0, label %102
i8 10, label %102
]
72: ; preds = %69
%73 = getelementptr inbounds i8, i8* %4, i64 23
%74 = load i8, i8* %73
switch i8 %74, label %75 [
i8 0, label %102
i8 10, label %102
]
75: ; preds = %72
%76 = getelementptr inbounds i8, i8* %4, i64 24
%77 = load i8, i8* %76
switch i8 %77, label %78 [
i8 0, label %102
i8 10, label %102
]
78: ; preds = %75
%79 = getelementptr inbounds i8, i8* %4, i64 25
%80 = load i8, i8* %79
switch i8 %80, label %81 [
i8 0, label %102
i8 10, label %102
]
81: ; preds = %78
%82 = getelementptr inbounds i8, i8* %4, i64 26
%83 = load i8, i8* %82
switch i8 %83, label %84 [
i8 0, label %102
i8 10, label %102
]
84: ; preds = %81
%85 = getelementptr inbounds i8, i8* %4, i64 27
%86 = load i8, i8* %85
switch i8 %86, label %87 [
i8 0, label %102
i8 10, label %102
]
87: ; preds = %84
%88 = getelementptr inbounds i8, i8* %4, i64 28
%89 = load i8, i8* %88
switch i8 %89, label %90 [
i8 0, label %102
i8 10, label %102
]
90: ; preds = %87
%91 = getelementptr inbounds i8, i8* %4, i64 29
%92 = load i8, i8* %91
switch i8 %92, label %93 [
i8 0, label %102
i8 10, label %102
]
93: ; preds = %90
%94 = getelementptr inbounds i8, i8* %4, i64 30
%95 = load i8, i8* %94
switch i8 %95, label %96 [
i8 0, label %102
i8 10, label %102
]
96: ; preds = %93
%97 = getelementptr inbounds i8, i8* %4, i64 31
%98 = load i8, i8* %97
switch i8 %98, label %99 [
i8 0, label %102
i8 10, label %102
]
99: ; preds = %96
%100 = getelementptr inbounds i8, i8* %4, i64 32
%101 = load i8, i8* %100
br label %102
102: ; preds = %99, %96, %96, %93, %93, %90, %90, %87, %87, %84, %84, %81, %81, %78, %78, %75, %75, %72, %72, %69, %69, %66, %66, %63, %63, %60, %60, %57, %57, %54, %54, %51, %51, %48, %48, %45, %45, %42, %42, %39, %39, %36, %36, %33, %33, %30, %30, %27, %27, %24, %24, %21, %21, %18, %18, %15, %15, %12, %12, %9, %9, %6, %6, %3, %3
%103 = phi i8 [ %5, %3 ], [ %5, %3 ], [ %8, %6 ], [ %8, %6 ], [ %11, %9 ], [ %11, %9 ], [ %14, %12 ], [ %14, %12 ], [ %17, %15 ], [ %17, %15 ], [ %20, %18 ], [ %20, %18 ], [ %23, %21 ], [ %23, %21 ], [ %26, %24 ], [ %26, %24 ], [ %29, %27 ], [ %29, %27 ], [ %32, %30 ], [ %32, %30 ], [ %35, %33 ], [ %35, %33 ], [ %38, %36 ], [ %38, %36 ], [ %41, %39 ], [ %41, %39 ], [ %44, %42 ], [ %44, %42 ], [ %47, %45 ], [ %47, %45 ], [ %50, %48 ], [ %50, %48 ], [ %53, %51 ], [ %53, %51 ], [ %56, %54 ], [ %56, %54 ], [ %59, %57 ], [ %59, %57 ], [ %62, %60 ], [ %62, %60 ], [ %65, %63 ], [ %65, %63 ], [ %68, %66 ], [ %68, %66 ], [ %71, %69 ], [ %71, %69 ], [ %74, %72 ], [ %74, %72 ], [ %77, %75 ], [ %77, %75 ], [ %80, %78 ], [ %80, %78 ], [ %83, %81 ], [ %83, %81 ], [ %86, %84 ], [ %86, %84 ], [ %89, %87 ], [ %89, %87 ], [ %92, %90 ], [ %92, %90 ], [ %95, %93 ], [ %95, %93 ], [ %98, %96 ], [ %98, %96 ], [ %101, %99 ]
%104 = phi i1 [ true, %3 ], [ true, %3 ], [ false, %6 ], [ false, %6 ], [ false, %9 ], [ false, %9 ], [ false, %12 ], [ false, %12 ], [ false, %15 ], [ false, %15 ], [ false, %18 ], [ false, %18 ], [ false, %21 ], [ false, %21 ], [ false, %24 ], [ false, %24 ], [ false, %27 ], [ false, %27 ], [ false, %30 ], [ false, %30 ], [ false, %33 ], [ false, %33 ], [ false, %36 ], [ false, %36 ], [ false, %39 ], [ false, %39 ], [ false, %42 ], [ false, %42 ], [ false, %45 ], [ false, %45 ], [ false, %48 ], [ false, %48 ], [ false, %51 ], [ false, %51 ], [ false, %54 ], [ false, %54 ], [ false, %57 ], [ false, %57 ], [ false, %60 ], [ false, %60 ], [ false, %63 ], [ false, %63 ], [ false, %66 ], [ false, %66 ], [ false, %69 ], [ false, %69 ], [ false, %72 ], [ false, %72 ], [ false, %75 ], [ false, %75 ], [ false, %78 ], [ false, %78 ], [ false, %81 ], [ false, %81 ], [ false, %84 ], [ false, %84 ], [ false, %87 ], [ false, %87 ], [ false, %90 ], [ false, %90 ], [ false, %93 ], [ false, %93 ], [ false, %96 ], [ false, %96 ], [ false, %99 ]
%105 = phi i1 [ true, %3 ], [ true, %3 ], [ true, %6 ], [ true, %6 ], [ true, %9 ], [ true, %9 ], [ true, %12 ], [ true, %12 ], [ true, %15 ], [ true, %15 ], [ true, %18 ], [ true, %18 ], [ true, %21 ], [ true, %21 ], [ true, %24 ], [ true, %24 ], [ true, %27 ], [ true, %27 ], [ true, %30 ], [ true, %30 ], [ true, %33 ], [ true, %33 ], [ true, %36 ], [ true, %36 ], [ true, %39 ], [ true, %39 ], [ true, %42 ], [ true, %42 ], [ true, %45 ], [ true, %45 ], [ true, %48 ], [ true, %48 ], [ true, %51 ], [ true, %51 ], [ true, %54 ], [ true, %54 ], [ true, %57 ], [ true, %57 ], [ true, %60 ], [ true, %60 ], [ true, %63 ], [ true, %63 ], [ true, %66 ], [ true, %66 ], [ true, %69 ], [ true, %69 ], [ true, %72 ], [ true, %72 ], [ true, %75 ], [ true, %75 ], [ true, %78 ], [ true, %78 ], [ true, %81 ], [ true, %81 ], [ true, %84 ], [ true, %84 ], [ true, %87 ], [ true, %87 ], [ true, %90 ], [ true, %90 ], [ true, %93 ], [ true, %93 ], [ false, %96 ], [ false, %96 ], [ false, %99 ]
%106 = phi i1 [ false, %3 ], [ false, %3 ], [ true, %6 ], [ true, %6 ], [ false, %9 ], [ false, %9 ], [ false, %12 ], [ false, %12 ], [ false, %15 ], [ false, %15 ], [ false, %18 ], [ false, %18 ], [ false, %21 ], [ false, %21 ], [ false, %24 ], [ false, %24 ], [ false, %27 ], [ false, %27 ], [ false, %30 ], [ false, %30 ], [ false, %33 ], [ false, %33 ], [ false, %36 ], [ false, %36 ], [ false, %39 ], [ false, %39 ], [ false, %42 ], [ false, %42 ], [ false, %45 ], [ false, %45 ], [ false, %48 ], [ false, %48 ], [ false, %51 ], [ false, %51 ], [ false, %54 ], [ false, %54 ], [ false, %57 ], [ false, %57 ], [ false, %60 ], [ false, %60 ], [ false, %63 ], [ false, %63 ], [ false, %66 ], [ false, %66 ], [ false, %69 ], [ false, %69 ], [ false, %72 ], [ false, %72 ], [ false, %75 ], [ false, %75 ], [ false, %78 ], [ false, %78 ], [ false, %81 ], [ false, %81 ], [ false, %84 ], [ false, %84 ], [ false, %87 ], [ false, %87 ], [ false, %90 ], [ false, %90 ], [ false, %93 ], [ false, %93 ], [ false, %96 ], [ false, %96 ], [ false, %99 ]
%107 = phi i1 [ false, %3 ], [ false, %3 ], [ false, %6 ], [ false, %6 ], [ true, %9 ], [ true, %9 ], [ false, %12 ], [ false, %12 ], [ false, %15 ], [ false, %15 ], [ false, %18 ], [ false, %18 ], [ false, %21 ], [ false, %21 ], [ false, %24 ], [ false, %24 ], [ false, %27 ], [ false, %27 ], [ false, %30 ], [ false, %30 ], [ false, %33 ], [ false, %33 ], [ false, %36 ], [ false, %36 ], [ false, %39 ], [ false, %39 ], [ false, %42 ], [ false, %42 ], [ false, %45 ], [ false, %45 ], [ false, %48 ], [ false, %48 ], [ false, %51 ], [ false, %51 ], [ false, %54 ], [ false, %54 ], [ false, %57 ], [ false, %57 ], [ false, %60 ], [ false, %60 ], [ false, %63 ], [ false, %63 ], [ false, %66 ], [ false, %66 ], [ false, %69 ], [ false, %69 ], [ false, %72 ], [ false, %72 ], [ false, %75 ], [ false, %75 ], [ false, %78 ], [ false, %78 ], [ false, %81 ], [ false, %81 ], [ false, %84 ], [ false, %84 ], [ false, %87 ], [ false, %87 ], [ false, %90 ], [ false, %90 ], [ false, %93 ], [ false, %93 ], [ false, %96 ], [ false, %96 ], [ false, %99 ]
%108 = phi i32 [ 0, %3 ], [ 0, %3 ], [ 1, %6 ], [ 1, %6 ], [ 2, %9 ], [ 2, %9 ], [ 3, %12 ], [ 3, %12 ], [ 4, %15 ], [ 4, %15 ], [ 5, %18 ], [ 5, %18 ], [ 6, %21 ], [ 6, %21 ], [ 7, %24 ], [ 7, %24 ], [ 8, %27 ], [ 8, %27 ], [ 9, %30 ], [ 9, %30 ], [ 10, %33 ], [ 10, %33 ], [ 11, %36 ], [ 11, %36 ], [ 12, %39 ], [ 12, %39 ], [ 13, %42 ], [ 13, %42 ], [ 14, %45 ], [ 14, %45 ], [ 15, %48 ], [ 15, %48 ], [ 16, %51 ], [ 16, %51 ], [ 17, %54 ], [ 17, %54 ], [ 18, %57 ], [ 18, %57 ], [ 19, %60 ], [ 19, %60 ], [ 20, %63 ], [ 20, %63 ], [ 21, %66 ], [ 21, %66 ], [ 22, %69 ], [ 22, %69 ], [ 23, %72 ], [ 23, %72 ], [ 24, %75 ], [ 24, %75 ], [ 25, %78 ], [ 25, %78 ], [ 26, %81 ], [ 26, %81 ], [ 27, %84 ], [ 27, %84 ], [ 28, %87 ], [ 28, %87 ], [ 29, %90 ], [ 29, %90 ], [ 30, %93 ], [ 30, %93 ], [ 31, %96 ], [ 31, %96 ], [ 32, %99 ]
%109 = zext i32 %108 to i64
%110 = load i8*, i8** %1
%111 = load i32, i32* %2
%112 = add nuw nsw i32 %108, 1
%113 = add i32 %112, %111
%114 = tail call i8* @ft_memrealloc(i8* %110, i32 %113)
store i8* %114, i8** %1
br i1 %104, label %164, label %115
115: ; preds = %102
%116 = load i8*, i8** %0
%117 = load i8, i8* %116
%118 = load i32, i32* %2
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i8, i8* %114, i64 %119
store i8 %117, i8* %120
br i1 %106, label %164, label %121
121: ; preds = %115
%122 = add nsw i64 %109, -1
%123 = and i64 %122, 1
br i1 %107, label %151, label %124
124: ; preds = %121
%125 = and i64 %122, -2
br label %126
126: ; preds = %126, %124
%127 = phi i64 [ 1, %124 ], [ %148, %126 ]
%128 = phi i64 [ 0, %124 ], [ %149, %126 ]
%129 = load i8*, i8** %1
%130 = load i8*, i8** %0
%131 = getelementptr inbounds i8, i8* %130, i64 %127
%132 = load i8, i8* %131
%133 = load i32, i32* %2
%134 = trunc i64 %127 to i32
%135 = add nsw i32 %133, %134
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds i8, i8* %129, i64 %136
store i8 %132, i8* %137
%138 = add nuw nsw i64 %127, 1
%139 = load i8*, i8** %1
%140 = load i8*, i8** %0
%141 = getelementptr inbounds i8, i8* %140, i64 %138
%142 = load i8, i8* %141
%143 = load i32, i32* %2
%144 = trunc i64 %138 to i32
%145 = add nsw i32 %143, %144
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds i8, i8* %139, i64 %146
store i8 %142, i8* %147
%148 = add nuw nsw i64 %127, 2
%149 = add i64 %128, 2
%150 = icmp eq i64 %149, %125
br i1 %150, label %151, label %126
151: ; preds = %126, %121
%152 = phi i64 [ 1, %121 ], [ %148, %126 ]
%153 = icmp eq i64 %123, 0
br i1 %153, label %164, label %154
154: ; preds = %151
%155 = load i8*, i8** %1
%156 = load i8*, i8** %0
%157 = getelementptr inbounds i8, i8* %156, i64 %152
%158 = load i8, i8* %157
%159 = load i32, i32* %2
%160 = trunc i64 %152 to i32
%161 = add nsw i32 %159, %160
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds i8, i8* %155, i64 %162
store i8 %158, i8* %163
br label %164
164: ; preds = %154, %151, %115, %102
%165 = load i32, i32* %2
%166 = add nsw i32 %165, %108
store i32 %166, i32* %2
br i1 %105, label %167, label %188
167: ; preds = %164
%168 = sub nsw i32 31, %108
%169 = zext i32 %168 to i64
br label %170
170: ; preds = %167, %178
%171 = phi i64 [ 0, %167 ], [ %180, %178 ]
%172 = phi i32 [ %112, %167 ], [ %182, %178 ]
%173 = load i8*, i8** %0
%174 = zext i32 %172 to i64
%175 = getelementptr inbounds i8, i8* %173, i64 %174
%176 = load i8, i8* %175
%177 = icmp eq i8 %176, 0
br i1 %177, label %184, label %178
178: ; preds = %170
%179 = getelementptr inbounds i8, i8* %173, i64 %171
store i8 %176, i8* %179
%180 = add nuw nsw i64 %171, 1
%181 = trunc i64 %180 to i32
%182 = add nuw nsw i32 %112, %181
%183 = icmp eq i64 %180, %169
br i1 %183, label %184, label %170
184: ; preds = %178, %170
%185 = phi i64 [ %171, %170 ], [ %180, %178 ]
%186 = and i64 %185, 4294967264
%187 = icmp eq i64 %186, 0
br i1 %187, label %188, label %200
188: ; preds = %164, %184
%189 = phi i64 [ %185, %184 ], [ 0, %164 ]
%190 = and i64 %189, 4294967295
br label %191
191: ; preds = %188, %197
%192 = phi i64 [ %190, %188 ], [ %198, %197 ]
%193 = load i8*, i8** %0
%194 = getelementptr inbounds i8, i8* %193, i64 %192
%195 = load i8, i8* %194
%196 = icmp eq i8 %195, 0
br i1 %196, label %200, label %197
197: ; preds = %191
%198 = add nuw nsw i64 %192, 1
store i8 0, i8* %194
%199 = icmp eq i64 %198, 32
br i1 %199, label %200, label %191
200: ; preds = %191, %197, %184
%201 = icmp eq i8 %103, 10
%202 = zext i1 %201 to i32
ret i32 %202
}