#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*/ big_chunk_separated_test();
int /*<<< orphan*/ common_test(char *);
int /*<<< orphan*/ csv_out();
int /*<<< orphan*/ iter_test1();
int /*<<< orphan*/ iter_test2();
int /*<<< orphan*/ random_generated_test();
int /*<<< orphan*/ test1();
int /*<<< orphan*/ test2();
int /*<<< orphan*/ test3();
int /*<<< orphan*/ test4();
int /*<<< orphan*/ test5();
int /*<<< orphan*/ test6();
int main() {
  test1();
  test2();
  test3();
  test4();
  test5();
  test6();
  big_chunk_separated_test();
  random_generated_test();
  common_test("first,last,address,city,zip\n"
              "John,Doe,120 any st.,\"Anytown, WW\",08123\n");
  common_test("a,b,c\n"
              "1,\"\",\"\"\n"
              "2,3,4\n");
  common_test("a,b\n"
              "1,\"ha \"\"ha\"\" ha\"\n"
              "3,4\n");
  common_test("key,val\n"
              "1,\"{\"\"type\"\": \"\"Point\"\", \"\"coordinates\"\": [102.0, "
              "0.5]}\"\n");
  common_test("a,b,c\n"
              "1,2,3\n"
              "\"Once upon \n"
              "a time\",5,6\n"
              "7,8,9\n");
  common_test("a,b\n"
              "1,\"ha\n"
              "\"\"ha\"\"\n"
              "ha\"\n"
              "3,4\n");
  common_test(" a,b,c\n"
              "1,2,3\n"
              "4,5,а нет ли ошибок?\n");
  common_test("  www  , \"aa\"a , \"tt  \" \n");
  iter_test1();
  iter_test2();
  csv_out();
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1070 <test1@plt>
mov    $0x0,%al
call   10d0 <test2@plt>
mov    $0x0,%al
call   1060 <test3@plt>
mov    $0x0,%al
call   10c0 <test4@plt>
mov    $0x0,%al
call   1050 <test5@plt>
mov    $0x0,%al
call   10b0 <test6@plt>
mov    $0x0,%al
call   1080 <big_chunk_separated_test@plt>
mov    $0x0,%al
call   1040 <random_generated_test@plt>
lea    0xdf2(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe2c(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe35(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe43(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe79(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe98(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xea6(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xec9(%rip),%rdi
call   10e0 <common_test@plt>
mov    $0x0,%al
call   1030 <iter_test1@plt>
mov    $0x0,%al
call   10a0 <iter_test2@plt>
mov    $0x0,%al
call   1090 <csv_out@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
xor    %eax,%eax
call   1070 <test1@plt>
xor    %eax,%eax
call   10d0 <test2@plt>
xor    %eax,%eax
call   1060 <test3@plt>
xor    %eax,%eax
call   10c0 <test4@plt>
xor    %eax,%eax
call   1050 <test5@plt>
xor    %eax,%eax
call   10b0 <test6@plt>
xor    %eax,%eax
call   1080 <big_chunk_separated_test@plt>
xor    %eax,%eax
call   1040 <random_generated_test@plt>
lea    0xe00(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe3a(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe43(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe51(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xe87(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xea6(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xeb4(%rip),%rdi
call   10e0 <common_test@plt>
lea    0xed7(%rip),%rdi
call   10e0 <common_test@plt>
xor    %eax,%eax
call   1030 <iter_test1@plt>
xor    %eax,%eax
call   10a0 <iter_test2@plt>
xor    %eax,%eax
call   1090 <csv_out@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [70 x i8] c"first,last,address,city,zip\0AJohn,Doe,120 any st.,\22Anytown, WW\22,08123\0A\00"
@.str.1 = [21 x i8] c"a,b,c\0A1,\22\22,\22\22\0A2,3,4\0A\00"
@.str.2 = [26 x i8] c"a,b\0A1,\22ha \22\22ha\22\22 ha\22\0A3,4\0A\00"
@.str.3 = [66 x i8] c"key,val\0A1,\22{\22\22type\22\22: \22\22Point\22\22, \22\22coordinates\22\22: [102.0, 0.5]}\22\0A\00"
@.str.4 = [43 x i8] c"a,b,c\0A1,2,3\0A\22Once upon \0Aa time\22,5,6\0A7,8,9\0A\00"
@.str.5 = [26 x i8] c"a,b\0A1,\22ha\0A\22\22ha\22\22\0Aha\22\0A3,4\0A\00"
@.str.6 = [47 x i8] c" a,b,c\0A1,2,3\0A4,5,\D0\B0 \D0\BD\D0\B5\D1\82 \D0\BB\D0\B8 \D0\BE\D1\88\D0\B8\D0\B1\D0\BE\D0\BA?\0A\00"
@.str.7 = [26 x i8] c" www , \22aa\22a , \22tt \22 \0A\00"
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 (...) @test1()
%3 = call i32 (...) @test2()
%4 = call i32 (...) @test3()
%5 = call i32 (...) @test4()
%6 = call i32 (...) @test5()
%7 = call i32 (...) @test6()
%8 = call i32 (...) @big_chunk_separated_test()
%9 = call i32 (...) @random_generated_test()
%10 = call i32 @common_test(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str, i64 0, i64 0))
%11 = call i32 @common_test(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0))
%12 = call i32 @common_test(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%13 = call i32 @common_test(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.3, i64 0, i64 0))
%14 = call i32 @common_test(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.4, i64 0, i64 0))
%15 = call i32 @common_test(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.5, i64 0, i64 0))
%16 = call i32 @common_test(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.6, i64 0, i64 0))
%17 = call i32 @common_test(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.7, i64 0, i64 0))
%18 = call i32 (...) @iter_test1()
%19 = call i32 (...) @iter_test2()
%20 = call i32 (...) @csv_out()
ret i32 0
}

LLVM IR (-O2):
@.str = [70 x i8] c"first,last,address,city,zip\0AJohn,Doe,120 any st.,\22Anytown, WW\22,08123\0A\00"
@.str.1 = [21 x i8] c"a,b,c\0A1,\22\22,\22\22\0A2,3,4\0A\00"
@.str.2 = [26 x i8] c"a,b\0A1,\22ha \22\22ha\22\22 ha\22\0A3,4\0A\00"
@.str.3 = [66 x i8] c"key,val\0A1,\22{\22\22type\22\22: \22\22Point\22\22, \22\22coordinates\22\22: [102.0, 0.5]}\22\0A\00"
@.str.4 = [43 x i8] c"a,b,c\0A1,2,3\0A\22Once upon \0Aa time\22,5,6\0A7,8,9\0A\00"
@.str.5 = [26 x i8] c"a,b\0A1,\22ha\0A\22\22ha\22\22\0Aha\22\0A3,4\0A\00"
@.str.6 = [47 x i8] c" a,b,c\0A1,2,3\0A4,5,\D0\B0 \D0\BD\D0\B5\D1\82 \D0\BB\D0\B8 \D0\BE\D1\88\D0\B8\D0\B1\D0\BE\D0\BA?\0A\00"
@.str.7 = [26 x i8] c" www , \22aa\22a , \22tt \22 \0A\00"
define i32 @main() {
%1 = tail call i32 (...) @test1()
%2 = tail call i32 (...) @test2()
%3 = tail call i32 (...) @test3()
%4 = tail call i32 (...) @test4()
%5 = tail call i32 (...) @test5()
%6 = tail call i32 (...) @test6()
%7 = tail call i32 (...) @big_chunk_separated_test()
%8 = tail call i32 (...) @random_generated_test()
%9 = tail call i32 @common_test(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str, i64 0, i64 0))
%10 = tail call i32 @common_test(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0))
%11 = tail call i32 @common_test(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%12 = tail call i32 @common_test(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.3, i64 0, i64 0))
%13 = tail call i32 @common_test(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.4, i64 0, i64 0))
%14 = tail call i32 @common_test(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.5, i64 0, i64 0))
%15 = tail call i32 @common_test(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.6, i64 0, i64 0))
%16 = tail call i32 @common_test(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.7, i64 0, i64 0))
%17 = tail call i32 (...) @iter_test1()
%18 = tail call i32 (...) @iter_test2()
%19 = tail call i32 (...) @csv_out()
ret i32 0
}