#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*/ test10();
int /*<<< orphan*/ test13();
int /*<<< orphan*/ test15();
int /*<<< orphan*/ test17();
int /*<<< orphan*/ test19();
int /*<<< orphan*/ test20();
int /*<<< orphan*/ test21();
int /*<<< orphan*/ test22();
int /*<<< orphan*/ test23();
int /*<<< orphan*/ test24();
int /*<<< orphan*/ test25();
int /*<<< orphan*/ test26();
int /*<<< orphan*/ test27();
int /*<<< orphan*/ test28();
int /*<<< orphan*/ test29(int);
int /*<<< orphan*/ test3();
int /*<<< orphan*/ test31();
int /*<<< orphan*/ test4(int, int, double);
int /*<<< orphan*/ test5();
int /*<<< orphan*/ test6();
int /*<<< orphan*/ test7();
int /*<<< orphan*/ test8();
int /*<<< orphan*/ testFuncBreak();
int /*<<< orphan*/ testFuncCallBool();
int /*<<< orphan*/ testFuncCompOpti1();
int /*<<< orphan*/ testFuncCompOpti2();
int /*<<< orphan*/ testFuncCompOpti3();
int /*<<< orphan*/ testFuncCompOpti4();
int /*<<< orphan*/ testFuncContinue();
int /*<<< orphan*/ testFuncGoto();
int /*<<< orphan*/ testFuncLoopFor();
int /*<<< orphan*/ testFuncLoopWhile();
int /*<<< orphan*/ testFuncMCDC1(unsigned char, unsigned char);
int /*<<< orphan*/ testFuncMultiLineStatement();
int /*<<< orphan*/ testFuncMultipleStatement();
int /*<<< orphan*/ testFuncMultipleStatementNot();
int /*<<< orphan*/ testFuncNotReturn(int, int);
int /*<<< orphan*/ testFuncQMark(int, int);
int /*<<< orphan*/ testFuncShortCircuit(unsigned char, unsigned char);
int /*<<< orphan*/ testFuncStatementComplexIf();
int /*<<< orphan*/ testFuncStatementDecision1(unsigned char, unsigned char);
int /*<<< orphan*/ testFuncStatementDecl1();
int /*<<< orphan*/ testFuncStatementInt1(int, int);
int /*<<< orphan*/ testFuncStatementNotCoverage();
int /*<<< orphan*/ testFuncStatementbool1(unsigned char, unsigned char);
int /*<<< orphan*/ testFuncStatementbool2(unsigned char, unsigned char);
int /*<<< orphan*/ testFuncStatementsinmple();
main() {
  int a;
  int b;
  int int1;
  int int2;
  unsigned char bool1;
  unsigned char bool2;
  unsigned char decision1;
  unsigned char decision2;
  int level;
  int aa;
  int bb;
  double cc;
  testFuncStatementsinmple();
  testFuncStatementComplexIf();
  testFuncStatementNotCoverage();
  testFuncLoopFor();
  testFuncLoopWhile();
  testFuncContinue();
  testFuncBreak();
  testFuncGoto();
  testFuncNotReturn(a, b);
  testFuncMultiLineStatement();
  testFuncMultipleStatement();
  testFuncMultipleStatementNot();
  testFuncCompOpti1();
  testFuncCompOpti2();
  testFuncCompOpti3();
  testFuncCompOpti4();
  testFuncStatementDecl1();
  testFuncStatementInt1(int1, int2);
  testFuncStatementbool1(bool1, bool2);
  testFuncStatementbool2(bool1, bool2);
  testFuncStatementDecision1(decision1, decision2);
  testFuncShortCircuit(bool1, bool2);
  testFuncMCDC1(decision1, decision2);
  testFuncQMark(int1, int2);
  testFuncCallBool();
  test3();
  test4(aa, bb, cc);
  test5();
  test6();
  test7();
  test8();
  test10();
  test13();
  test15();
  test17();
  test19();
  test20();
  test21();
  test22();
  test23();
  test24();
  test25();
  test26();
  test27();
  test28();
  test29(a);
  test31();
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    $0x0,%al
call   21b0 <testFuncStatementsinmple@plt>
mov    $0x0,%al
call   2150 <testFuncStatementComplexIf@plt>
mov    $0x0,%al
call   2030 <testFuncStatementNotCoverage@plt>
mov    $0x0,%al
call   2190 <testFuncLoopFor@plt>
mov    $0x0,%al
call   2040 <testFuncLoopWhile@plt>
mov    $0x0,%al
call   21d0 <testFuncContinue@plt>
mov    $0x0,%al
call   2180 <testFuncBreak@plt>
mov    $0x0,%al
call   20c0 <testFuncGoto@plt>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
call   21e0 <testFuncNotReturn@plt>
mov    $0x0,%al
call   21a0 <testFuncMultiLineStatement@plt>
mov    $0x0,%al
call   2160 <testFuncMultipleStatement@plt>
mov    $0x0,%al
call   2090 <testFuncMultipleStatementNot@plt>
mov    $0x0,%al
call   20e0 <testFuncCompOpti1@plt>
mov    $0x0,%al
call   22f0 <testFuncCompOpti2@plt>
mov    $0x0,%al
call   2170 <testFuncCompOpti3@plt>
mov    $0x0,%al
call   2300 <testFuncCompOpti4@plt>
mov    $0x0,%al
call   22d0 <testFuncStatementDecl1@plt>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
call   22e0 <testFuncStatementInt1@plt>
mov    -0x11(%rbp),%al
movzbl %al,%edi
movzbl -0x12(%rbp),%esi
call   20b0 <testFuncStatementbool1@plt>
mov    -0x11(%rbp),%al
movzbl %al,%edi
movzbl -0x12(%rbp),%esi
call   2250 <testFuncStatementbool2@plt>
mov    -0x13(%rbp),%al
movzbl %al,%edi
movzbl -0x14(%rbp),%esi
call   2100 <testFuncStatementDecision1@plt>
mov    -0x11(%rbp),%al
movzbl %al,%edi
movzbl -0x12(%rbp),%esi
call   20d0 <testFuncShortCircuit@plt>
mov    -0x13(%rbp),%al
movzbl %al,%edi
movzbl -0x14(%rbp),%esi
call   21c0 <testFuncMCDC1@plt>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
call   21f0 <testFuncQMark@plt>
mov    $0x0,%al
call   20a0 <testFuncCallBool@plt>
mov    $0x0,%al
call   2070 <test3@plt>
mov    -0x1c(%rbp),%edi
mov    -0x20(%rbp),%esi
movsd  -0x28(%rbp),%xmm0
call   2210 <test4@plt>
mov    $0x0,%al
call   2060 <test5@plt>
mov    $0x0,%al
call   2200 <test6@plt>
mov    $0x0,%al
call   2050 <test7@plt>
mov    $0x0,%al
call   2270 <test8@plt>
mov    $0x0,%al
call   2080 <test10@plt>
mov    $0x0,%al
call   2230 <test13@plt>
mov    $0x0,%al
call   2240 <test15@plt>
mov    $0x0,%al
call   2220 <test17@plt>
mov    $0x0,%al
call   2260 <test19@plt>
mov    $0x0,%al
call   2290 <test20@plt>
mov    $0x0,%al
call   2110 <test21@plt>
mov    $0x0,%al
call   2280 <test22@plt>
mov    $0x0,%al
call   20f0 <test23@plt>
mov    $0x0,%al
call   22a0 <test24@plt>
mov    $0x0,%al
call   2120 <test25@plt>
mov    $0x0,%al
call   22b0 <test26@plt>
mov    $0x0,%al
call   2130 <test27@plt>
mov    $0x0,%al
call   22c0 <test28@plt>
mov    -0x4(%rbp),%edi
call   2140 <test29@plt>
mov    $0x0,%al
call   2310 <test31@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
xor    %eax,%eax
call   21b0 <testFuncStatementsinmple@plt>
xor    %eax,%eax
call   2150 <testFuncStatementComplexIf@plt>
xor    %eax,%eax
call   2030 <testFuncStatementNotCoverage@plt>
xor    %eax,%eax
call   2190 <testFuncLoopFor@plt>
xor    %eax,%eax
call   2040 <testFuncLoopWhile@plt>
xor    %eax,%eax
call   21d0 <testFuncContinue@plt>
xor    %eax,%eax
call   2180 <testFuncBreak@plt>
xor    %eax,%eax
call   20c0 <testFuncGoto@plt>
call   21e0 <testFuncNotReturn@plt>
xor    %eax,%eax
call   21a0 <testFuncMultiLineStatement@plt>
xor    %eax,%eax
call   2160 <testFuncMultipleStatement@plt>
xor    %eax,%eax
call   2090 <testFuncMultipleStatementNot@plt>
xor    %eax,%eax
call   20e0 <testFuncCompOpti1@plt>
xor    %eax,%eax
call   22f0 <testFuncCompOpti2@plt>
xor    %eax,%eax
call   2170 <testFuncCompOpti3@plt>
xor    %eax,%eax
call   2300 <testFuncCompOpti4@plt>
xor    %eax,%eax
call   22d0 <testFuncStatementDecl1@plt>
call   22e0 <testFuncStatementInt1@plt>
xor    %edi,%edi
xor    %esi,%esi
call   20b0 <testFuncStatementbool1@plt>
xor    %edi,%edi
xor    %esi,%esi
call   2250 <testFuncStatementbool2@plt>
xor    %edi,%edi
xor    %esi,%esi
call   2100 <testFuncStatementDecision1@plt>
xor    %edi,%edi
xor    %esi,%esi
call   20d0 <testFuncShortCircuit@plt>
xor    %edi,%edi
xor    %esi,%esi
call   21c0 <testFuncMCDC1@plt>
call   21f0 <testFuncQMark@plt>
xor    %eax,%eax
call   20a0 <testFuncCallBool@plt>
xor    %eax,%eax
call   2070 <test3@plt>
call   2210 <test4@plt>
xor    %eax,%eax
call   2060 <test5@plt>
xor    %eax,%eax
call   2200 <test6@plt>
xor    %eax,%eax
call   2050 <test7@plt>
xor    %eax,%eax
call   2270 <test8@plt>
xor    %eax,%eax
call   2080 <test10@plt>
xor    %eax,%eax
call   2230 <test13@plt>
xor    %eax,%eax
call   2240 <test15@plt>
xor    %eax,%eax
call   2220 <test17@plt>
xor    %eax,%eax
call   2260 <test19@plt>
xor    %eax,%eax
call   2290 <test20@plt>
xor    %eax,%eax
call   2110 <test21@plt>
xor    %eax,%eax
call   2280 <test22@plt>
xor    %eax,%eax
call   20f0 <test23@plt>
xor    %eax,%eax
call   22a0 <test24@plt>
xor    %eax,%eax
call   2120 <test25@plt>
xor    %eax,%eax
call   22b0 <test26@plt>
xor    %eax,%eax
call   2130 <test27@plt>
xor    %eax,%eax
call   22c0 <test28@plt>
call   2140 <test29@plt>
xor    %eax,%eax
call   2310 <test31@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8
%6 = alloca i8
%7 = alloca i8
%8 = alloca i8
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca double
%13 = call i32 (...) @testFuncStatementsinmple()
%14 = call i32 (...) @testFuncStatementComplexIf()
%15 = call i32 (...) @testFuncStatementNotCoverage()
%16 = call i32 (...) @testFuncLoopFor()
%17 = call i32 (...) @testFuncLoopWhile()
%18 = call i32 (...) @testFuncContinue()
%19 = call i32 (...) @testFuncBreak()
%20 = call i32 (...) @testFuncGoto()
%21 = load i32, i32* %1
%22 = load i32, i32* %2
%23 = call i32 @testFuncNotReturn(i32 %21, i32 %22)
%24 = call i32 (...) @testFuncMultiLineStatement()
%25 = call i32 (...) @testFuncMultipleStatement()
%26 = call i32 (...) @testFuncMultipleStatementNot()
%27 = call i32 (...) @testFuncCompOpti1()
%28 = call i32 (...) @testFuncCompOpti2()
%29 = call i32 (...) @testFuncCompOpti3()
%30 = call i32 (...) @testFuncCompOpti4()
%31 = call i32 (...) @testFuncStatementDecl1()
%32 = load i32, i32* %3
%33 = load i32, i32* %4
%34 = call i32 @testFuncStatementInt1(i32 %32, i32 %33)
%35 = load i8, i8* %5
%36 = load i8, i8* %6
%37 = call i32 @testFuncStatementbool1(i8 zeroext %35, i8 zeroext %36)
%38 = load i8, i8* %5
%39 = load i8, i8* %6
%40 = call i32 @testFuncStatementbool2(i8 zeroext %38, i8 zeroext %39)
%41 = load i8, i8* %7
%42 = load i8, i8* %8
%43 = call i32 @testFuncStatementDecision1(i8 zeroext %41, i8 zeroext %42)
%44 = load i8, i8* %5
%45 = load i8, i8* %6
%46 = call i32 @testFuncShortCircuit(i8 zeroext %44, i8 zeroext %45)
%47 = load i8, i8* %7
%48 = load i8, i8* %8
%49 = call i32 @testFuncMCDC1(i8 zeroext %47, i8 zeroext %48)
%50 = load i32, i32* %3
%51 = load i32, i32* %4
%52 = call i32 @testFuncQMark(i32 %50, i32 %51)
%53 = call i32 (...) @testFuncCallBool()
%54 = call i32 (...) @test3()
%55 = load i32, i32* %10
%56 = load i32, i32* %11
%57 = load double, double* %12
%58 = call i32 @test4(i32 %55, i32 %56, double %57)
%59 = call i32 (...) @test5()
%60 = call i32 (...) @test6()
%61 = call i32 (...) @test7()
%62 = call i32 (...) @test8()
%63 = call i32 (...) @test10()
%64 = call i32 (...) @test13()
%65 = call i32 (...) @test15()
%66 = call i32 (...) @test17()
%67 = call i32 (...) @test19()
%68 = call i32 (...) @test20()
%69 = call i32 (...) @test21()
%70 = call i32 (...) @test22()
%71 = call i32 (...) @test23()
%72 = call i32 (...) @test24()
%73 = call i32 (...) @test25()
%74 = call i32 (...) @test26()
%75 = call i32 (...) @test27()
%76 = call i32 (...) @test28()
%77 = load i32, i32* %1
%78 = call i32 @test29(i32 %77)
%79 = call i32 (...) @test31()
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
%1 = tail call i32 (...) @testFuncStatementsinmple()
%2 = tail call i32 (...) @testFuncStatementComplexIf()
%3 = tail call i32 (...) @testFuncStatementNotCoverage()
%4 = tail call i32 (...) @testFuncLoopFor()
%5 = tail call i32 (...) @testFuncLoopWhile()
%6 = tail call i32 (...) @testFuncContinue()
%7 = tail call i32 (...) @testFuncBreak()
%8 = tail call i32 (...) @testFuncGoto()
%9 = tail call i32 @testFuncNotReturn(i32 undef, i32 undef)
%10 = tail call i32 (...) @testFuncMultiLineStatement()
%11 = tail call i32 (...) @testFuncMultipleStatement()
%12 = tail call i32 (...) @testFuncMultipleStatementNot()
%13 = tail call i32 (...) @testFuncCompOpti1()
%14 = tail call i32 (...) @testFuncCompOpti2()
%15 = tail call i32 (...) @testFuncCompOpti3()
%16 = tail call i32 (...) @testFuncCompOpti4()
%17 = tail call i32 (...) @testFuncStatementDecl1()
%18 = tail call i32 @testFuncStatementInt1(i32 undef, i32 undef)
%19 = tail call i32 @testFuncStatementbool1(i8 zeroext undef, i8 zeroext undef)
%20 = tail call i32 @testFuncStatementbool2(i8 zeroext undef, i8 zeroext undef)
%21 = tail call i32 @testFuncStatementDecision1(i8 zeroext undef, i8 zeroext undef)
%22 = tail call i32 @testFuncShortCircuit(i8 zeroext undef, i8 zeroext undef)
%23 = tail call i32 @testFuncMCDC1(i8 zeroext undef, i8 zeroext undef)
%24 = tail call i32 @testFuncQMark(i32 undef, i32 undef)
%25 = tail call i32 (...) @testFuncCallBool()
%26 = tail call i32 (...) @test3()
%27 = tail call i32 @test4(i32 undef, i32 undef, double undef)
%28 = tail call i32 (...) @test5()
%29 = tail call i32 (...) @test6()
%30 = tail call i32 (...) @test7()
%31 = tail call i32 (...) @test8()
%32 = tail call i32 (...) @test10()
%33 = tail call i32 (...) @test13()
%34 = tail call i32 (...) @test15()
%35 = tail call i32 (...) @test17()
%36 = tail call i32 (...) @test19()
%37 = tail call i32 (...) @test20()
%38 = tail call i32 (...) @test21()
%39 = tail call i32 (...) @test22()
%40 = tail call i32 (...) @test23()
%41 = tail call i32 (...) @test24()
%42 = tail call i32 (...) @test25()
%43 = tail call i32 (...) @test26()
%44 = tail call i32 (...) @test27()
%45 = tail call i32 (...) @test28()
%46 = tail call i32 @test29(i32 undef)
%47 = tail call i32 (...) @test31()
ret i32 0
}