#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*/ CFCUtil_die(char *);
int /*<<< orphan*/ CFCUtil_wrapped_free(char *);
scalar_t__ CFCUtil_wrapped_malloc(size_t, char *, int);
scalar_t__ isspace(char);
size_t strlen(char *);
char *strstr(char *, char *);
void S_strip(char *comment) {
  size_t len = strlen(comment);
  char *scratch = (char *)CFCUtil_wrapped_malloc(
      (len + 1),
      "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
      "2022-01-22/02-19-57/repos/gitpan/Clownfish-CFC/refs/heads/master/src/"
      "CFCDocuComment.c",
      40);
  if (strstr(comment, "/**") != comment ||
      strstr(comment, "*/") != (comment + len - 2)) {
    CFCUtil_die("Malformed comment");
  }
  size_t i = 3;
  size_t max = len - 2;
  while ((isspace(comment[i]) || comment[i] == '*') && i < max) {
    i++;
  }
  size_t j = 0;
  for (; i < max; i++) {
    while (comment[i] == '\n' && i < max) {
      scratch[j++] = comment[i];
      i++;
      while (isspace(comment[i]) && comment[i] != '\n' && i < max) {
        i++;
      }
      if (comment[i] == '*') {
        i++;
      }
      if (comment[i] == ' ') {
        i++;
      }
    }
    if (i < max) {
      scratch[j++] = comment[i];
    }
  }
  for (i = 0; i < j; i++) {
    comment[i] = scratch[i];
  }
  comment[j] = '\0';
  CFCUtil_wrapped_free(scratch);
}


x86 assembly (clang, -O0):
<S_strip>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
add    $0x1,%rdi
lea    0xe78(%rip),%rsi
mov    $0x28,%edx
call   1050 <CFCUtil_wrapped_malloc@plt>
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xef5(%rip),%rsi
call   1080 <strstr@plt>
cmp    -0x8(%rbp),%rax
jne    11d5 <S_strip+0x75>
mov    -0x8(%rbp),%rdi
lea    0xedf(%rip),%rsi
call   1080 <strstr@plt>
mov    -0x8(%rbp),%rcx
add    -0x10(%rbp),%rcx
add    $0xfffffffffffffffe,%rcx
cmp    %rcx,%rax
je     11e1 <S_strip+0x81>
lea    0xec1(%rip),%rdi
call   1060 <CFCUtil_die@plt>
movq   $0x3,-0x20(%rbp)
mov    -0x10(%rbp),%rax
sub    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isspace@plt>
cmp    $0x0,%rax
jne    122a <S_strip+0xca>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x2a,%ecx
mov    %al,-0x31(%rbp)
jne    1238 <S_strip+0xd8>
mov    -0x20(%rbp),%rax
cmp    -0x28(%rbp),%rax
setb   %al
mov    %al,-0x31(%rbp)
mov    -0x31(%rbp),%al
test   $0x1,%al
jne    1248 <S_strip+0xe8>
jmp    1259 <S_strip+0xf9>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    11f5 <S_strip+0x95>
movq   $0x0,-0x30(%rbp)
mov    -0x20(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    13d1 <S_strip+0x271>
jmp    1274 <S_strip+0x114>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x32(%rbp)
jne    129c <S_strip+0x13c>
mov    -0x20(%rbp),%rax
cmp    -0x28(%rbp),%rax
setb   %al
mov    %al,-0x32(%rbp)
mov    -0x32(%rbp),%al
test   $0x1,%al
jne    12ac <S_strip+0x14c>
jmp    138c <S_strip+0x22c>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    %rcx,%rsi
add    $0x1,%rsi
mov    %rsi,-0x30(%rbp)
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isspace@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x33(%rbp)
je     1324 <S_strip+0x1c4>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x33(%rbp)
je     1324 <S_strip+0x1c4>
mov    -0x20(%rbp),%rax
cmp    -0x28(%rbp),%rax
setb   %al
mov    %al,-0x33(%rbp)
mov    -0x33(%rbp),%al
test   $0x1,%al
jne    1334 <S_strip+0x1d4>
jmp    1345 <S_strip+0x1e5>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    12d9 <S_strip+0x179>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    1366 <S_strip+0x206>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    1387 <S_strip+0x227>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1274 <S_strip+0x114>
mov    -0x20(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    13bb <S_strip+0x25b>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    %rcx,%rsi
add    $0x1,%rsi
mov    %rsi,-0x30(%rbp)
mov    %dl,(%rax,%rcx,1)
jmp    13c0 <S_strip+0x260>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1261 <S_strip+0x101>
movq   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    140e <S_strip+0x2ae>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    13d9 <S_strip+0x279>
mov    -0x8(%rbp),%rax
mov    -0x30(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x18(%rbp),%rdi
call   1070 <CFCUtil_wrapped_free@plt>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<S_strip>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%r15
call   1040 <strlen@plt>
mov    %rax,%r13
lea    0x1(%rax),%rdi
lea    0xe6f(%rip),%rsi
mov    $0x28,%edx
call   1060 <CFCUtil_wrapped_malloc@plt>
mov    %rax,%r14
lea    0xef1(%rip),%rsi
mov    $0x3,%edx
mov    %r15,%rdi
call   1030 <strncmp@plt>
test   %eax,%eax
jne    11d2 <S_strip+0x62>
lea    0xedd(%rip),%rsi
mov    %r15,%rdi
call   1090 <strstr@plt>
lea    (%r15,%r13,1),%rcx
add    $0xfffffffffffffffe,%rcx
cmp    %rcx,%rax
je     11de <S_strip+0x6e>
lea    0xec4(%rip),%rdi
call   1070 <CFCUtil_die@plt>
add    $0xfffffffffffffffe,%r13
mov    $0x3,%ebx
nopw   0x0(%rax,%rax,1)
movsbl (%r15,%rbx,1),%edi
call   1050 <isspace@plt>
test   %rax,%rax
jne    1206 <S_strip+0x96>
cmpb   $0x2a,(%r15,%rbx,1)
jne    1211 <S_strip+0xa1>
cmp    %r13,%rbx
jae    1211 <S_strip+0xa1>
add    $0x1,%rbx
jmp    11f0 <S_strip+0x80>
xor    %r12d,%r12d
cmp    %r13,%rbx
jb     1238 <S_strip+0xc8>
jmp    1338 <S_strip+0x1c8>
xchg   %ax,%ax
lea    0x1(%rbp),%rax
cmp    $0x2a,%cl
cmovne %rbp,%rax
xor    %ebx,%ebx
cmpb   $0x20,(%r15,%rax,1)
sete   %bl
add    %rax,%rbx
mov    (%r15,%rbx,1),%al
cmp    %r13,%rbx
setb   %cl
cmp    $0xa,%al
jne    1287 <S_strip+0x117>
cmp    %r13,%rbx
jae    1287 <S_strip+0x117>
movb   $0xa,(%r14,%r12,1)
add    $0x1,%r12
add    $0x1,%rbx
nopl   0x0(%rax,%rax,1)
mov    %rbx,%rbp
movsbl (%r15,%rbx,1),%edi
call   1050 <isspace@plt>
movzbl (%r15,%rbx,1),%ecx
test   %rax,%rax
je     1220 <S_strip+0xb0>
cmp    $0xa,%cl
je     1220 <S_strip+0xb0>
lea    0x1(%rbp),%rbx
cmp    %r13,%rbp
jb     1260 <S_strip+0xf0>
jmp    1220 <S_strip+0xb0>
test   %cl,%cl
je     1293 <S_strip+0x123>
mov    %al,(%r14,%r12,1)
add    $0x1,%r12
add    $0x1,%rbx
cmp    %r13,%rbx
jb     1238 <S_strip+0xc8>
test   %r12,%r12
je     1335 <S_strip+0x1c5>
cmp    $0x8,%r12
jb     12c5 <S_strip+0x155>
lea    (%r14,%r12,1),%rax
cmp    %r15,%rax
jbe    1353 <S_strip+0x1e3>
lea    (%r15,%r12,1),%rax
cmp    %r14,%rax
jbe    1353 <S_strip+0x1e3>
xor    %eax,%eax
mov    %rax,%rcx
not    %rcx
add    %r12,%rcx
mov    %r12,%rdx
and    $0x3,%rdx
je     12f3 <S_strip+0x183>
nopl   0x0(%rax)
movzbl (%r14,%rax,1),%ebx
mov    %bl,(%r15,%rax,1)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    12e0 <S_strip+0x170>
cmp    $0x3,%rcx
jb     1338 <S_strip+0x1c8>
nopl   0x0(%rax)
movzbl (%r14,%rax,1),%ecx
mov    %cl,(%r15,%rax,1)
movzbl 0x1(%r14,%rax,1),%ecx
mov    %cl,0x1(%r15,%rax,1)
movzbl 0x2(%r14,%rax,1),%ecx
mov    %cl,0x2(%r15,%rax,1)
movzbl 0x3(%r14,%rax,1),%ecx
mov    %cl,0x3(%r15,%rax,1)
add    $0x4,%rax
cmp    %rax,%r12
jne    1300 <S_strip+0x190>
jmp    1338 <S_strip+0x1c8>
xor    %r12d,%r12d
movb   $0x0,(%r15,%r12,1)
mov    %r14,%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1080 <CFCUtil_wrapped_free@plt>
cmp    $0x20,%r12
jae    1360 <S_strip+0x1f0>
xor    %eax,%eax
jmp    144e <S_strip+0x2de>
mov    %r12,%rax
and    $0xffffffffffffffe0,%rax
lea    -0x20(%rax),%rsi
mov    %rsi,%rdx
shr    $0x5,%rdx
add    $0x1,%rdx
mov    %edx,%ecx
and    $0x3,%ecx
cmp    $0x60,%rsi
jae    1385 <S_strip+0x215>
xor    %esi,%esi
jmp    13f8 <S_strip+0x288>
and    $0xfffffffffffffffc,%rdx
xor    %esi,%esi
nopl   0x0(%rax,%rax,1)
movups (%r14,%rsi,1),%xmm0
movups 0x10(%r14,%rsi,1),%xmm1
movups %xmm0,(%r15,%rsi,1)
movups %xmm1,0x10(%r15,%rsi,1)
movups 0x20(%r14,%rsi,1),%xmm0
movups 0x30(%r14,%rsi,1),%xmm1
movups %xmm0,0x20(%r15,%rsi,1)
movups %xmm1,0x30(%r15,%rsi,1)
movups 0x40(%r14,%rsi,1),%xmm0
movups 0x50(%r14,%rsi,1),%xmm1
movups %xmm0,0x40(%r15,%rsi,1)
movups %xmm1,0x50(%r15,%rsi,1)
movups 0x60(%r14,%rsi,1),%xmm0
movups 0x70(%r14,%rsi,1),%xmm1
movups %xmm0,0x60(%r15,%rsi,1)
movups %xmm1,0x70(%r15,%rsi,1)
sub    $0xffffffffffffff80,%rsi
add    $0xfffffffffffffffc,%rdx
jne    1390 <S_strip+0x220>
test   %rcx,%rcx
je     143b <S_strip+0x2cb>
lea    (%r15,%rsi,1),%rdx
add    $0x10,%rdx
add    %r14,%rsi
add    $0x10,%rsi
shl    $0x5,%rcx
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups -0x10(%rsi,%rdi,1),%xmm0
movups (%rsi,%rdi,1),%xmm1
movups %xmm0,-0x10(%rdx,%rdi,1)
movups %xmm1,(%rdx,%rdi,1)
add    $0x20,%rdi
cmp    %rdi,%rcx
jne    1420 <S_strip+0x2b0>
cmp    %rax,%r12
je     1338 <S_strip+0x1c8>
test   $0x18,%r12b
je     12c7 <S_strip+0x157>
mov    %rax,%rcx
mov    %r12,%rax
and    $0xfffffffffffffff8,%rax
nopl   0x0(%rax,%rax,1)
mov    (%r14,%rcx,1),%rdx
mov    %rdx,(%r15,%rcx,1)
add    $0x8,%rcx
cmp    %rcx,%rax
jne    1460 <S_strip+0x2f0>
cmp    %rax,%r12
je     1338 <S_strip+0x1c8>
jmp    12c7 <S_strip+0x157>

LLVM IR (-O0):
@.str = [150 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/gitpan/Clownfish-CFC/refs/heads/master/src/CFCDocuComment.c\00"
@.str.1 = [4 x i8] c"/**\00"
@.str.2 = [3 x i8] c"*/\00"
@.str.3 = [18 x i8] c"Malformed comment\00"
define void @S_strip(i8* %0) {
%2 = alloca i8*
%3 = alloca i64
%4 = alloca i8*
%5 = alloca i64
%6 = alloca i64
%7 = alloca i64
store i8* %0, i8** %2
%8 = load i8*, i8** %2
%9 = call i64 @strlen(i8* %8)
store i64 %9, i64* %3
%10 = load i64, i64* %3
%11 = add i64 %10, 1
%12 = call i64 @CFCUtil_wrapped_malloc(i64 %11, i8* getelementptr inbounds ([150 x i8], [150 x i8]* @.str, i64 0, i64 0), i32 40)
%13 = inttoptr i64 %12 to i8*
store i8* %13, i8** %4
%14 = load i8*, i8** %2
%15 = call i8* @strstr(i8* %14, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%16 = load i8*, i8** %2
%17 = icmp ne i8* %15, %16
br i1 %17, label %26, label %18
18: ; preds = %1
%19 = load i8*, i8** %2
%20 = call i8* @strstr(i8* %19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
%21 = load i8*, i8** %2
%22 = load i64, i64* %3
%23 = getelementptr inbounds i8, i8* %21, i64 %22
%24 = getelementptr inbounds i8, i8* %23, i64 -2
%25 = icmp ne i8* %20, %24
br i1 %25, label %26, label %28
26: ; preds = %18, %1
%27 = call i32 @CFCUtil_die(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0))
br label %28
28: ; preds = %26, %18
store i64 3, i64* %5
%29 = load i64, i64* %3
%30 = sub i64 %29, 2
store i64 %30, i64* %6
br label %31
31: ; preds = %51, %28
%32 = load i8*, i8** %2
%33 = load i64, i64* %5
%34 = getelementptr inbounds i8, i8* %32, i64 %33
%35 = load i8, i8* %34
%36 = call i64 @isspace(i8 signext %35)
%37 = icmp ne i64 %36, 0
br i1 %37, label %45, label %38
38: ; preds = %31
%39 = load i8*, i8** %2
%40 = load i64, i64* %5
%41 = getelementptr inbounds i8, i8* %39, i64 %40
%42 = load i8, i8* %41
%43 = sext i8 %42 to i32
%44 = icmp eq i32 %43, 42
br i1 %44, label %45, label %49
45: ; preds = %38, %31
%46 = load i64, i64* %5
%47 = load i64, i64* %6
%48 = icmp ult i64 %46, %47
br label %49
49: ; preds = %45, %38
%50 = phi i1 [ false, %38 ], [ %48, %45 ]
br i1 %50, label %51, label %54
51: ; preds = %49
%52 = load i64, i64* %5
%53 = add i64 %52, 1
store i64 %53, i64* %5
br label %31
54: ; preds = %49
store i64 0, i64* %7
br label %55
55: ; preds = %142, %54
%56 = load i64, i64* %5
%57 = load i64, i64* %6
%58 = icmp ult i64 %56, %57
br i1 %58, label %59, label %145
59: ; preds = %55
br label %60
60: ; preds = %127, %59
%61 = load i8*, i8** %2
%62 = load i64, i64* %5
%63 = getelementptr inbounds i8, i8* %61, i64 %62
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 10
br i1 %66, label %67, label %71
67: ; preds = %60
%68 = load i64, i64* %5
%69 = load i64, i64* %6
%70 = icmp ult i64 %68, %69
br label %71
71: ; preds = %67, %60
%72 = phi i1 [ false, %60 ], [ %70, %67 ]
br i1 %72, label %73, label %128
73: ; preds = %71
%74 = load i8*, i8** %2
%75 = load i64, i64* %5
%76 = getelementptr inbounds i8, i8* %74, i64 %75
%77 = load i8, i8* %76
%78 = load i8*, i8** %4
%79 = load i64, i64* %7
%80 = add i64 %79, 1
store i64 %80, i64* %7
%81 = getelementptr inbounds i8, i8* %78, i64 %79
store i8 %77, i8* %81
%82 = load i64, i64* %5
%83 = add i64 %82, 1
store i64 %83, i64* %5
br label %84
84: ; preds = %104, %73
%85 = load i8*, i8** %2
%86 = load i64, i64* %5
%87 = getelementptr inbounds i8, i8* %85, i64 %86
%88 = load i8, i8* %87
%89 = call i64 @isspace(i8 signext %88)
%90 = icmp ne i64 %89, 0
br i1 %90, label %91, label %102
91: ; preds = %84
%92 = load i8*, i8** %2
%93 = load i64, i64* %5
%94 = getelementptr inbounds i8, i8* %92, i64 %93
%95 = load i8, i8* %94
%96 = sext i8 %95 to i32
%97 = icmp ne i32 %96, 10
br i1 %97, label %98, label %102
98: ; preds = %91
%99 = load i64, i64* %5
%100 = load i64, i64* %6
%101 = icmp ult i64 %99, %100
br label %102
102: ; preds = %98, %91, %84
%103 = phi i1 [ false, %91 ], [ false, %84 ], [ %101, %98 ]
br i1 %103, label %104, label %107
104: ; preds = %102
%105 = load i64, i64* %5
%106 = add i64 %105, 1
store i64 %106, i64* %5
br label %84
107: ; preds = %102
%108 = load i8*, i8** %2
%109 = load i64, i64* %5
%110 = getelementptr inbounds i8, i8* %108, i64 %109
%111 = load i8, i8* %110
%112 = sext i8 %111 to i32
%113 = icmp eq i32 %112, 42
br i1 %113, label %114, label %117
114: ; preds = %107
%115 = load i64, i64* %5
%116 = add i64 %115, 1
store i64 %116, i64* %5
br label %117
117: ; preds = %114, %107
%118 = load i8*, i8** %2
%119 = load i64, i64* %5
%120 = getelementptr inbounds i8, i8* %118, i64 %119
%121 = load i8, i8* %120
%122 = sext i8 %121 to i32
%123 = icmp eq i32 %122, 32
br i1 %123, label %124, label %127
124: ; preds = %117
%125 = load i64, i64* %5
%126 = add i64 %125, 1
store i64 %126, i64* %5
br label %127
127: ; preds = %124, %117
br label %60
128: ; preds = %71
%129 = load i64, i64* %5
%130 = load i64, i64* %6
%131 = icmp ult i64 %129, %130
br i1 %131, label %132, label %141
132: ; preds = %128
%133 = load i8*, i8** %2
%134 = load i64, i64* %5
%135 = getelementptr inbounds i8, i8* %133, i64 %134
%136 = load i8, i8* %135
%137 = load i8*, i8** %4
%138 = load i64, i64* %7
%139 = add i64 %138, 1
store i64 %139, i64* %7
%140 = getelementptr inbounds i8, i8* %137, i64 %138
store i8 %136, i8* %140
br label %141
141: ; preds = %132, %128
br label %142
142: ; preds = %141
%143 = load i64, i64* %5
%144 = add i64 %143, 1
store i64 %144, i64* %5
br label %55
145: ; preds = %55
store i64 0, i64* %5
br label %146
146: ; preds = %158, %145
%147 = load i64, i64* %5
%148 = load i64, i64* %7
%149 = icmp ult i64 %147, %148
br i1 %149, label %150, label %161
150: ; preds = %146
%151 = load i8*, i8** %4
%152 = load i64, i64* %5
%153 = getelementptr inbounds i8, i8* %151, i64 %152
%154 = load i8, i8* %153
%155 = load i8*, i8** %2
%156 = load i64, i64* %5
%157 = getelementptr inbounds i8, i8* %155, i64 %156
store i8 %154, i8* %157
br label %158
158: ; preds = %150
%159 = load i64, i64* %5
%160 = add i64 %159, 1
store i64 %160, i64* %5
br label %146
161: ; preds = %146
%162 = load i8*, i8** %2
%163 = load i64, i64* %7
%164 = getelementptr inbounds i8, i8* %162, i64 %163
store i8 0, i8* %164
%165 = load i8*, i8** %4
%166 = call i32 @CFCUtil_wrapped_free(i8* %165)
ret void
}

LLVM IR (-O2):
@.str = [150 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/gitpan/Clownfish-CFC/refs/heads/master/src/CFCDocuComment.c\00"
@.str.1 = [4 x i8] c"/**\00"
@.str.2 = [3 x i8] c"*/\00"
@.str.3 = [18 x i8] c"Malformed comment\00"
define void @S_strip(i8* %0) {
%2 = tail call i64 @strlen(i8* dereferenceable(1) %0)
%3 = add i64 %2, 1
%4 = tail call i64 @CFCUtil_wrapped_malloc(i64 %3, i8* getelementptr inbounds ([150 x i8], [150 x i8]* @.str, i64 0, i64 0), i32 40)
%5 = inttoptr i64 %4 to i8*
%6 = tail call i32 @strncmp(i8* dereferenceable(1) %0, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i64 3)
%7 = icmp eq i32 %6, 0
br i1 %7, label %8, label %13
8: ; preds = %1
%9 = tail call i8* @strstr(i8* dereferenceable(1) %0, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
%10 = getelementptr inbounds i8, i8* %0, i64 %2
%11 = getelementptr inbounds i8, i8* %10, i64 -2
%12 = icmp eq i8* %9, %11
br i1 %12, label %15, label %13
13: ; preds = %8, %1
%14 = tail call i32 @CFCUtil_die(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0))
br label %15
15: ; preds = %13, %8
%16 = add i64 %2, -2
br label %17
17: ; preds = %30, %15
%18 = phi i64 [ 3, %15 ], [ %31, %30 ]
%19 = getelementptr inbounds i8, i8* %0, i64 %18
%20 = load i8, i8* %19
%21 = tail call i64 @isspace(i8 signext %20)
%22 = icmp eq i64 %21, 0
br i1 %22, label %23, label %28
23: ; preds = %17
%24 = load i8, i8* %19
%25 = icmp eq i8 %24, 42
%26 = icmp ult i64 %18, %16
%27 = select i1 %25, i1 %26, i1 false
br i1 %27, label %30, label %32
28: ; preds = %17
%29 = icmp ult i64 %18, %16
br i1 %29, label %30, label %32
30: ; preds = %23, %28
%31 = add nuw i64 %18, 1
br label %17
32: ; preds = %23, %28
%33 = icmp ult i64 %18, %16
br i1 %33, label %34, label %230
34: ; preds = %32, %207
%35 = phi i64 [ %208, %207 ], [ 0, %32 ]
%36 = phi i64 [ %209, %207 ], [ %18, %32 ]
%37 = getelementptr inbounds i8, i8* %0, i64 %36
%38 = load i8, i8* %37
%39 = icmp eq i8 %38, 10
%40 = icmp ult i64 %36, %16
%41 = select i1 %39, i1 %40, i1 false
br i1 %41, label %168, label %199
42: ; preds = %207
%43 = icmp eq i64 %208, 0
br i1 %43, label %230, label %44
44: ; preds = %42
%45 = icmp ult i64 %208, 8
br i1 %45, label %150, label %46
46: ; preds = %44
%47 = getelementptr i8, i8* %0, i64 %208
%48 = getelementptr i8, i8* %5, i64 %208
%49 = icmp ugt i8* %48, %0
%50 = icmp ugt i8* %47, %5
%51 = and i1 %49, %50
br i1 %51, label %150, label %52
52: ; preds = %46
%53 = icmp ult i64 %208, 32
br i1 %53, label %136, label %54
54: ; preds = %52
%55 = and i64 %208, -32
%56 = add i64 %55, -32
%57 = lshr exact i64 %56, 5
%58 = add nuw nsw i64 %57, 1
%59 = and i64 %58, 3
%60 = icmp ult i64 %56, 96
br i1 %60, label %112, label %61
61: ; preds = %54
%62 = and i64 %58, 1152921504606846972
br label %63
63: ; preds = %63, %61
%64 = phi i64 [ 0, %61 ], [ %109, %63 ]
%65 = phi i64 [ 0, %61 ], [ %110, %63 ]
%66 = getelementptr inbounds i8, i8* %5, i64 %64
%67 = bitcast i8* %66 to <16 x i8>*
%68 = load <16 x i8>, <16 x i8>* %67
%69 = getelementptr inbounds i8, i8* %66, i64 16
%70 = bitcast i8* %69 to <16 x i8>*
%71 = load <16 x i8>, <16 x i8>* %70
%72 = getelementptr inbounds i8, i8* %0, i64 %64
%73 = bitcast i8* %72 to <16 x i8>*
store <16 x i8> %68, <16 x i8>* %73
%74 = getelementptr inbounds i8, i8* %72, i64 16
%75 = bitcast i8* %74 to <16 x i8>*
store <16 x i8> %71, <16 x i8>* %75
%76 = or i64 %64, 32
%77 = getelementptr inbounds i8, i8* %5, i64 %76
%78 = bitcast i8* %77 to <16 x i8>*
%79 = load <16 x i8>, <16 x i8>* %78
%80 = getelementptr inbounds i8, i8* %77, i64 16
%81 = bitcast i8* %80 to <16 x i8>*
%82 = load <16 x i8>, <16 x i8>* %81
%83 = getelementptr inbounds i8, i8* %0, i64 %76
%84 = bitcast i8* %83 to <16 x i8>*
store <16 x i8> %79, <16 x i8>* %84
%85 = getelementptr inbounds i8, i8* %83, i64 16
%86 = bitcast i8* %85 to <16 x i8>*
store <16 x i8> %82, <16 x i8>* %86
%87 = or i64 %64, 64
%88 = getelementptr inbounds i8, i8* %5, i64 %87
%89 = bitcast i8* %88 to <16 x i8>*
%90 = load <16 x i8>, <16 x i8>* %89
%91 = getelementptr inbounds i8, i8* %88, i64 16
%92 = bitcast i8* %91 to <16 x i8>*
%93 = load <16 x i8>, <16 x i8>* %92
%94 = getelementptr inbounds i8, i8* %0, i64 %87
%95 = bitcast i8* %94 to <16 x i8>*
store <16 x i8> %90, <16 x i8>* %95
%96 = getelementptr inbounds i8, i8* %94, i64 16
%97 = bitcast i8* %96 to <16 x i8>*
store <16 x i8> %93, <16 x i8>* %97
%98 = or i64 %64, 96
%99 = getelementptr inbounds i8, i8* %5, i64 %98
%100 = bitcast i8* %99 to <16 x i8>*
%101 = load <16 x i8>, <16 x i8>* %100
%102 = getelementptr inbounds i8, i8* %99, i64 16
%103 = bitcast i8* %102 to <16 x i8>*
%104 = load <16 x i8>, <16 x i8>* %103
%105 = getelementptr inbounds i8, i8* %0, i64 %98
%106 = bitcast i8* %105 to <16 x i8>*
store <16 x i8> %101, <16 x i8>* %106
%107 = getelementptr inbounds i8, i8* %105, i64 16
%108 = bitcast i8* %107 to <16 x i8>*
store <16 x i8> %104, <16 x i8>* %108
%109 = add nuw i64 %64, 128
%110 = add i64 %65, 4
%111 = icmp eq i64 %110, %62
br i1 %111, label %112, label %63
112: ; preds = %63, %54
%113 = phi i64 [ 0, %54 ], [ %109, %63 ]
%114 = icmp eq i64 %59, 0
br i1 %114, label %131, label %115
115: ; preds = %112, %115
%116 = phi i64 [ %128, %115 ], [ %113, %112 ]
%117 = phi i64 [ %129, %115 ], [ 0, %112 ]
%118 = getelementptr inbounds i8, i8* %5, i64 %116
%119 = bitcast i8* %118 to <16 x i8>*
%120 = load <16 x i8>, <16 x i8>* %119
%121 = getelementptr inbounds i8, i8* %118, i64 16
%122 = bitcast i8* %121 to <16 x i8>*
%123 = load <16 x i8>, <16 x i8>* %122
%124 = getelementptr inbounds i8, i8* %0, i64 %116
%125 = bitcast i8* %124 to <16 x i8>*
store <16 x i8> %120, <16 x i8>* %125
%126 = getelementptr inbounds i8, i8* %124, i64 16
%127 = bitcast i8* %126 to <16 x i8>*
store <16 x i8> %123, <16 x i8>* %127
%128 = add nuw i64 %116, 32
%129 = add i64 %117, 1
%130 = icmp eq i64 %129, %59
br i1 %130, label %131, label %115
131: ; preds = %115, %112
%132 = icmp eq i64 %208, %55
br i1 %132, label %230, label %133
133: ; preds = %131
%134 = and i64 %208, 24
%135 = icmp eq i64 %134, 0
br i1 %135, label %150, label %136
136: ; preds = %52, %133
%137 = phi i64 [ %55, %133 ], [ 0, %52 ]
%138 = and i64 %208, -8
br label %139
139: ; preds = %139, %136
%140 = phi i64 [ %137, %136 ], [ %146, %139 ]
%141 = getelementptr inbounds i8, i8* %5, i64 %140
%142 = bitcast i8* %141 to <8 x i8>*
%143 = load <8 x i8>, <8 x i8>* %142
%144 = getelementptr inbounds i8, i8* %0, i64 %140
%145 = bitcast i8* %144 to <8 x i8>*
store <8 x i8> %143, <8 x i8>* %145
%146 = add nuw i64 %140, 8
%147 = icmp eq i64 %146, %138
br i1 %147, label %148, label %139
148: ; preds = %139
%149 = icmp eq i64 %208, %138
br i1 %149, label %230, label %150
150: ; preds = %46, %44, %133, %148
%151 = phi i64 [ 0, %44 ], [ 0, %46 ], [ %55, %133 ], [ %138, %148 ]
%152 = xor i64 %151, -1
%153 = add i64 %208, %152
%154 = and i64 %208, 3
%155 = icmp eq i64 %154, 0
br i1 %155, label %165, label %156
156: ; preds = %150, %156
%157 = phi i64 [ %162, %156 ], [ %151, %150 ]
%158 = phi i64 [ %163, %156 ], [ 0, %150 ]
%159 = getelementptr inbounds i8, i8* %5, i64 %157
%160 = load i8, i8* %159
%161 = getelementptr inbounds i8, i8* %0, i64 %157
store i8 %160, i8* %161
%162 = add nuw i64 %157, 1
%163 = add i64 %158, 1
%164 = icmp eq i64 %163, %154
br i1 %164, label %165, label %156
165: ; preds = %156, %150
%166 = phi i64 [ %151, %150 ], [ %162, %156 ]
%167 = icmp ult i64 %153, 3
br i1 %167, label %230, label %211
168: ; preds = %34, %185
%169 = phi i64 [ %171, %185 ], [ %35, %34 ]
%170 = phi i64 [ %193, %185 ], [ %36, %34 ]
%171 = add i64 %169, 1
%172 = getelementptr inbounds i8, i8* %5, i64 %169
store i8 10, i8* %172
br label %173
173: ; preds = %181, %168
%174 = phi i64 [ %170, %168 ], [ %175, %181 ]
%175 = add nuw i64 %174, 1
%176 = getelementptr inbounds i8, i8* %0, i64 %175
%177 = load i8, i8* %176
%178 = tail call i64 @isspace(i8 signext %177)
%179 = icmp eq i64 %178, 0
%180 = load i8, i8* %176
br i1 %179, label %185, label %181
181: ; preds = %173
%182 = icmp ne i8 %180, 10
%183 = icmp ult i64 %175, %16
%184 = select i1 %182, i1 %183, i1 false
br i1 %184, label %173, label %185
185: ; preds = %181, %173
%186 = icmp eq i8 %180, 42
%187 = add i64 %174, 2
%188 = select i1 %186, i64 %187, i64 %175
%189 = getelementptr inbounds i8, i8* %0, i64 %188
%190 = load i8, i8* %189
%191 = icmp eq i8 %190, 32
%192 = zext i1 %191 to i64
%193 = add i64 %188, %192
%194 = getelementptr inbounds i8, i8* %0, i64 %193
%195 = load i8, i8* %194
%196 = icmp eq i8 %195, 10
%197 = icmp ult i64 %193, %16
%198 = select i1 %196, i1 %197, i1 false
br i1 %198, label %168, label %199
199: ; preds = %185, %34
%200 = phi i64 [ %36, %34 ], [ %193, %185 ]
%201 = phi i64 [ %35, %34 ], [ %171, %185 ]
%202 = phi i8 [ %38, %34 ], [ %195, %185 ]
%203 = phi i1 [ %40, %34 ], [ %197, %185 ]
br i1 %203, label %204, label %207
204: ; preds = %199
%205 = add i64 %201, 1
%206 = getelementptr inbounds i8, i8* %5, i64 %201
store i8 %202, i8* %206
br label %207
207: ; preds = %199, %204
%208 = phi i64 [ %205, %204 ], [ %201, %199 ]
%209 = add i64 %200, 1
%210 = icmp ult i64 %209, %16
br i1 %210, label %34, label %42
211: ; preds = %165, %211
%212 = phi i64 [ %228, %211 ], [ %166, %165 ]
%213 = getelementptr inbounds i8, i8* %5, i64 %212
%214 = load i8, i8* %213
%215 = getelementptr inbounds i8, i8* %0, i64 %212
store i8 %214, i8* %215
%216 = add nuw i64 %212, 1
%217 = getelementptr inbounds i8, i8* %5, i64 %216
%218 = load i8, i8* %217
%219 = getelementptr inbounds i8, i8* %0, i64 %216
store i8 %218, i8* %219
%220 = add nuw i64 %212, 2
%221 = getelementptr inbounds i8, i8* %5, i64 %220
%222 = load i8, i8* %221
%223 = getelementptr inbounds i8, i8* %0, i64 %220
store i8 %222, i8* %223
%224 = add nuw i64 %212, 3
%225 = getelementptr inbounds i8, i8* %5, i64 %224
%226 = load i8, i8* %225
%227 = getelementptr inbounds i8, i8* %0, i64 %224
store i8 %226, i8* %227
%228 = add nuw i64 %212, 4
%229 = icmp eq i64 %228, %208
br i1 %229, label %230, label %211
230: ; preds = %165, %211, %131, %148, %32, %42
%231 = phi i64 [ 0, %42 ], [ 0, %32 ], [ %208, %148 ], [ %208, %131 ], [ %208, %211 ], [ %208, %165 ]
%232 = getelementptr inbounds i8, i8* %0, i64 %231
store i8 0, i8* %232
%233 = tail call i32 @CFCUtil_wrapped_free(i8* %5)
ret void
}