#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*/ fprintf(int /*<<< orphan*/, char *, char *, int);
int /*<<< orphan*/ stderr;
scalar_t__ test_vector_face();
scalar_t__ test_vector_is_face();
scalar_t__ test_vector_is_line();
scalar_t__ test_vector_is_point();
scalar_t__ test_vector_line();
scalar_t__ test_vector_point();
scalar_t__ test_vector_scale();
scalar_t__ test_vector_typeof();
int test_vector() {
  do {
    if (test_vector_typeof()) {
      fprintf(stderr, "    in file %s, line %d\n",
              "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
              "2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/"
              "test_vector.c",
              251);
      ;
      return 251;
    }
  } while (0);
  do {
    if (test_vector_is_point()) {
      fprintf(stderr, "    in file %s, line %d\n",
              "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
              "2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/"
              "test_vector.c",
              252);
      ;
      return 252;
    }
  } while (0);
  do {
    if (test_vector_is_line()) {
      fprintf(stderr, "    in file %s, line %d\n",
              "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
              "2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/"
              "test_vector.c",
              253);
      ;
      return 253;
    }
  } while (0);
  do {
    if (test_vector_is_face()) {
      fprintf(stderr, "    in file %s, line %d\n",
              "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
              "2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/"
              "test_vector.c",
              254);
      ;
      return 254;
    }
  } while (0);
  do {
    if (test_vector_point()) {
      fprintf(stderr, "    in file %s, line %d\n",
              "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
              "2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/"
              "test_vector.c",
              255);
      ;
      return 255;
    }
  } while (0);
  do {
    if (test_vector_line()) {
      fprintf(stderr, "    in file %s, line %d\n",
              "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
              "2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/"
              "test_vector.c",
              256);
      ;
      return 256;
    }
  } while (0);
  do {
    if (test_vector_face()) {
      fprintf(stderr, "    in file %s, line %d\n",
              "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
              "2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/"
              "test_vector.c",
              257);
      ;
      return 257;
    }
  } while (0);
  do {
    if (test_vector_scale()) {
      fprintf(stderr, "    in file %s, line %d\n",
              "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
              "2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/"
              "test_vector.c",
              258);
      ;
      return 258;
    }
  } while (0);
  do {
    ;
    return 0;
  } while (0);
}


x86 assembly (clang, -O0):
<test_vector>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    $0x0,%al
call   10b0 <test_vector_typeof@plt>
cmp    $0x0,%rax
je     11d6 <test_vector+0x46>
mov    0x2e30(%rip),%rax
mov    (%rax),%edi
lea    0xe47(%rip),%rsi
lea    0xe59(%rip),%rdx
mov    $0xfb,%ecx
call   1080 <fprintf@plt>
movl   $0xfb,-0x4(%rbp)
jmp    13df <test_vector+0x24f>
jmp    11db <test_vector+0x4b>
jmp    11e0 <test_vector+0x50>
mov    $0x0,%al
call   1070 <test_vector_is_point@plt>
cmp    $0x0,%rax
je     121e <test_vector+0x8e>
mov    0x2de8(%rip),%rax
mov    (%rax),%edi
lea    0xdff(%rip),%rsi
lea    0xe11(%rip),%rdx
mov    $0xfc,%ecx
call   1080 <fprintf@plt>
movl   $0xfc,-0x4(%rbp)
jmp    13df <test_vector+0x24f>
jmp    1223 <test_vector+0x93>
jmp    1228 <test_vector+0x98>
mov    $0x0,%al
call   10a0 <test_vector_is_line@plt>
cmp    $0x0,%rax
je     1266 <test_vector+0xd6>
mov    0x2da0(%rip),%rax
mov    (%rax),%edi
lea    0xdb7(%rip),%rsi
lea    0xdc9(%rip),%rdx
mov    $0xfd,%ecx
call   1080 <fprintf@plt>
movl   $0xfd,-0x4(%rbp)
jmp    13df <test_vector+0x24f>
jmp    126b <test_vector+0xdb>
jmp    1270 <test_vector+0xe0>
mov    $0x0,%al
call   1090 <test_vector_is_face@plt>
cmp    $0x0,%rax
je     12ae <test_vector+0x11e>
mov    0x2d58(%rip),%rax
mov    (%rax),%edi
lea    0xd6f(%rip),%rsi
lea    0xd81(%rip),%rdx
mov    $0xfe,%ecx
call   1080 <fprintf@plt>
movl   $0xfe,-0x4(%rbp)
jmp    13df <test_vector+0x24f>
jmp    12b3 <test_vector+0x123>
jmp    12b8 <test_vector+0x128>
mov    $0x0,%al
call   1040 <test_vector_point@plt>
cmp    $0x0,%rax
je     12f6 <test_vector+0x166>
mov    0x2d10(%rip),%rax
mov    (%rax),%edi
lea    0xd27(%rip),%rsi
lea    0xd39(%rip),%rdx
mov    $0xff,%ecx
call   1080 <fprintf@plt>
movl   $0xff,-0x4(%rbp)
jmp    13df <test_vector+0x24f>
jmp    12fb <test_vector+0x16b>
jmp    1300 <test_vector+0x170>
mov    $0x0,%al
call   1060 <test_vector_line@plt>
cmp    $0x0,%rax
je     133e <test_vector+0x1ae>
mov    0x2cc8(%rip),%rax
mov    (%rax),%edi
lea    0xcdf(%rip),%rsi
lea    0xcf1(%rip),%rdx
mov    $0x100,%ecx
call   1080 <fprintf@plt>
movl   $0x100,-0x4(%rbp)
jmp    13df <test_vector+0x24f>
jmp    1343 <test_vector+0x1b3>
jmp    1348 <test_vector+0x1b8>
mov    $0x0,%al
call   1030 <test_vector_face@plt>
cmp    $0x0,%rax
je     1386 <test_vector+0x1f6>
mov    0x2c80(%rip),%rax
mov    (%rax),%edi
lea    0xc97(%rip),%rsi
lea    0xca9(%rip),%rdx
mov    $0x101,%ecx
call   1080 <fprintf@plt>
movl   $0x101,-0x4(%rbp)
jmp    13df <test_vector+0x24f>
jmp    138b <test_vector+0x1fb>
jmp    1390 <test_vector+0x200>
mov    $0x0,%al
call   1050 <test_vector_scale@plt>
cmp    $0x0,%rax
je     13ce <test_vector+0x23e>
mov    0x2c38(%rip),%rax
mov    (%rax),%edi
lea    0xc4f(%rip),%rsi
lea    0xc61(%rip),%rdx
mov    $0x102,%ecx
call   1080 <fprintf@plt>
movl   $0x102,-0x4(%rbp)
jmp    13df <test_vector+0x24f>
jmp    13d3 <test_vector+0x243>
jmp    13d8 <test_vector+0x248>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_vector>:
push   %rbp
push   %rbx
push   %rax
xor    %eax,%eax
call   10b0 <test_vector_typeof@plt>
mov    $0xfb,%ebx
test   %rax,%rax
jne    121d <test_vector+0x8d>
xor    %eax,%eax
call   1070 <test_vector_is_point@plt>
mov    $0xfc,%ebx
test   %rax,%rax
jne    121d <test_vector+0x8d>
xor    %eax,%eax
call   10a0 <test_vector_is_line@plt>
mov    $0xfd,%ebx
test   %rax,%rax
jne    121d <test_vector+0x8d>
xor    %eax,%eax
call   1090 <test_vector_is_face@plt>
mov    $0xfe,%ebx
test   %rax,%rax
jne    121d <test_vector+0x8d>
xor    %eax,%eax
call   1040 <test_vector_point@plt>
mov    $0xff,%ebx
test   %rax,%rax
jne    121d <test_vector+0x8d>
xor    %eax,%eax
call   1060 <test_vector_line@plt>
mov    $0x100,%ebx
test   %rax,%rax
jne    121d <test_vector+0x8d>
xor    %ebp,%ebp
xor    %eax,%eax
call   1030 <test_vector_face@plt>
mov    $0x101,%ebx
test   %rax,%rax
jne    121d <test_vector+0x8d>
xor    %eax,%eax
call   1050 <test_vector_scale@plt>
mov    $0x102,%ebx
test   %rax,%rax
je     123d <test_vector+0xad>
mov    0x2dbc(%rip),%rax
mov    (%rax),%edi
lea    0xdd3(%rip),%rsi
lea    0xde5(%rip),%rdx
mov    %ebx,%ecx
call   1080 <fprintf@plt>
mov    %ebx,%ebp
mov    %ebp,%eax
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [25 x i8] c" in file %s, line %d\0A\00"
@.str.1 = [142 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/test_vector.c\00"
define i32 @test_vector() {
%1 = alloca i32
br label %2
2: ; preds = %0
%3 = call i64 (...) @test_vector_typeof()
%4 = icmp ne i64 %3, 0
br i1 %4, label %5, label %8
5: ; preds = %2
%6 = load i32, i32* @stderr
%7 = call i32 @fprintf(i32 %6, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 251)
store i32 251, i32* %1
br label %67
8: ; preds = %2
br label %9
9: ; preds = %8
br label %10
10: ; preds = %9
%11 = call i64 (...) @test_vector_is_point()
%12 = icmp ne i64 %11, 0
br i1 %12, label %13, label %16
13: ; preds = %10
%14 = load i32, i32* @stderr
%15 = call i32 @fprintf(i32 %14, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 252)
store i32 252, i32* %1
br label %67
16: ; preds = %10
br label %17
17: ; preds = %16
br label %18
18: ; preds = %17
%19 = call i64 (...) @test_vector_is_line()
%20 = icmp ne i64 %19, 0
br i1 %20, label %21, label %24
21: ; preds = %18
%22 = load i32, i32* @stderr
%23 = call i32 @fprintf(i32 %22, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 253)
store i32 253, i32* %1
br label %67
24: ; preds = %18
br label %25
25: ; preds = %24
br label %26
26: ; preds = %25
%27 = call i64 (...) @test_vector_is_face()
%28 = icmp ne i64 %27, 0
br i1 %28, label %29, label %32
29: ; preds = %26
%30 = load i32, i32* @stderr
%31 = call i32 @fprintf(i32 %30, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 254)
store i32 254, i32* %1
br label %67
32: ; preds = %26
br label %33
33: ; preds = %32
br label %34
34: ; preds = %33
%35 = call i64 (...) @test_vector_point()
%36 = icmp ne i64 %35, 0
br i1 %36, label %37, label %40
37: ; preds = %34
%38 = load i32, i32* @stderr
%39 = call i32 @fprintf(i32 %38, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 255)
store i32 255, i32* %1
br label %67
40: ; preds = %34
br label %41
41: ; preds = %40
br label %42
42: ; preds = %41
%43 = call i64 (...) @test_vector_line()
%44 = icmp ne i64 %43, 0
br i1 %44, label %45, label %48
45: ; preds = %42
%46 = load i32, i32* @stderr
%47 = call i32 @fprintf(i32 %46, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 256)
store i32 256, i32* %1
br label %67
48: ; preds = %42
br label %49
49: ; preds = %48
br label %50
50: ; preds = %49
%51 = call i64 (...) @test_vector_face()
%52 = icmp ne i64 %51, 0
br i1 %52, label %53, label %56
53: ; preds = %50
%54 = load i32, i32* @stderr
%55 = call i32 @fprintf(i32 %54, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 257)
store i32 257, i32* %1
br label %67
56: ; preds = %50
br label %57
57: ; preds = %56
br label %58
58: ; preds = %57
%59 = call i64 (...) @test_vector_scale()
%60 = icmp ne i64 %59, 0
br i1 %60, label %61, label %64
61: ; preds = %58
%62 = load i32, i32* @stderr
%63 = call i32 @fprintf(i32 %62, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 258)
store i32 258, i32* %1
br label %67
64: ; preds = %58
br label %65
65: ; preds = %64
br label %66
66: ; preds = %65
store i32 0, i32* %1
br label %67
67: ; preds = %5, %13, %21, %29, %37, %45, %53, %61, %66
%68 = load i32, i32* %1
ret i32 %68
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [25 x i8] c" in file %s, line %d\0A\00"
@.str.1 = [142 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/fraxtil/cfrax/refs/heads/master/tests/test_vector.c\00"
define i32 @test_vector() {
%1 = tail call i64 (...) @test_vector_typeof()
%2 = icmp eq i64 %1, 0
br i1 %2, label %3, label %24
3: ; preds = %0
%4 = tail call i64 (...) @test_vector_is_point()
%5 = icmp eq i64 %4, 0
br i1 %5, label %6, label %24
6: ; preds = %3
%7 = tail call i64 (...) @test_vector_is_line()
%8 = icmp eq i64 %7, 0
br i1 %8, label %9, label %24
9: ; preds = %6
%10 = tail call i64 (...) @test_vector_is_face()
%11 = icmp eq i64 %10, 0
br i1 %11, label %12, label %24
12: ; preds = %9
%13 = tail call i64 (...) @test_vector_point()
%14 = icmp eq i64 %13, 0
br i1 %14, label %15, label %24
15: ; preds = %12
%16 = tail call i64 (...) @test_vector_line()
%17 = icmp eq i64 %16, 0
br i1 %17, label %18, label %24
18: ; preds = %15
%19 = tail call i64 (...) @test_vector_face()
%20 = icmp eq i64 %19, 0
br i1 %20, label %21, label %24
21: ; preds = %18
%22 = tail call i64 (...) @test_vector_scale()
%23 = icmp eq i64 %22, 0
br i1 %23, label %28, label %24
24: ; preds = %21, %18, %15, %12, %9, %6, %3, %0
%25 = phi i32 [ 251, %0 ], [ 252, %3 ], [ 253, %6 ], [ 254, %9 ], [ 255, %12 ], [ 256, %15 ], [ 257, %18 ], [ 258, %21 ]
%26 = load i32, i32* @stderr
%27 = tail call i32 @fprintf(i32 %26, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([142 x i8], [142 x i8]* @.str.1, i64 0, i64 0), i32 %25)
br label %28
28: ; preds = %24, %21
%29 = phi i32 [ 0, %21 ], [ %25, %24 ]
ret i32 %29
}