#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*/ printf(char *, int, int, int, int, int, int, int, int, int,
                          int, int, int, int, int, int, ...);
void module1_section1_topic6() {
  char l, o, n, g, w, ii, nn, dd, ee, ddd, s, eee, nnn, t, eeee, nnnn, cc,
      eeeee;
  l = 'e', o = 'a', n = 't', g = 'm', w = 'y', ii = 'a', nn = 's', dd = 's',
  ee = 'a', ddd = 'n', s = 'd', eee = 'b', nnn = 'a', t = 'l', eeee = 'l',
  nnnn = 's', cc = '!', eeeee = '\n';
  printf(
      "long winded sentence using chars: %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
      l, o, n, g, w, ii, nn, dd, ee, ddd, s, eee, nnn, t, eeee, nnnn, cc,
      eeeee);
  int a = 102, nnnnn = 85, oo = 99, tt = 75, h = 32, e = 121, r = 79, sss = 117,
      eeeeee = 85, nnnnnnn = 85, ttt = 85, eeeeeee = 33, nnnnnnnn = 49,
      ccc = 33, eeeeeeee = 13;
  printf("long winded string of ints: %d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\n", a,
         nnnnn, oo, tt, h, e, r, sss, eeeeee, nnnnnnn, ttt, eeeeeee, nnnnnnnn,
         ccc, eeeeeeee);
  printf("long winded string of chars: %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", a,
         nnnnn, oo, tt, h, e, r, sss, eeeeee, nnnnnnn, ttt, eeeeeee, nnnnnnnn,
         ccc, eeeeeeee);
}


x86 assembly (clang, -O0):
<module1_section1_topic6>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xe8,%rsp
movb   $0x65,-0x29(%rbp)
movb   $0x61,-0x2a(%rbp)
movb   $0x74,-0x2b(%rbp)
movb   $0x6d,-0x2c(%rbp)
movb   $0x79,-0x2d(%rbp)
movb   $0x61,-0x2e(%rbp)
movb   $0x73,-0x2f(%rbp)
movb   $0x73,-0x30(%rbp)
movb   $0x61,-0x31(%rbp)
movb   $0x6e,-0x32(%rbp)
movb   $0x64,-0x33(%rbp)
movb   $0x62,-0x34(%rbp)
movb   $0x61,-0x35(%rbp)
movb   $0x6c,-0x36(%rbp)
movb   $0x6c,-0x37(%rbp)
movb   $0x73,-0x38(%rbp)
movb   $0x21,-0x39(%rbp)
movb   $0xa,-0x3a(%rbp)
movsbl -0x29(%rbp),%esi
movsbl -0x2a(%rbp),%edx
movsbl -0x2b(%rbp),%ecx
movsbl -0x2c(%rbp),%r8d
movsbl -0x2d(%rbp),%r9d
movsbl -0x2e(%rbp),%eax
movsbl -0x2f(%rbp),%edi
mov    %edi,-0x9c(%rbp)
movsbl -0x30(%rbp),%edi
mov    %edi,-0x98(%rbp)
movsbl -0x31(%rbp),%edi
mov    %edi,-0x94(%rbp)
movsbl -0x32(%rbp),%edi
mov    %edi,-0x90(%rbp)
movsbl -0x33(%rbp),%r13d
movsbl -0x34(%rbp),%r12d
movsbl -0x35(%rbp),%r15d
movsbl -0x36(%rbp),%r14d
movsbl -0x37(%rbp),%ebx
movsbl -0x38(%rbp),%r11d
movsbl -0x39(%rbp),%r10d
movsbl -0x3a(%rbp),%edi
mov    %edi,-0x8c(%rbp)
lea    0xe1f(%rip),%rdi
mov    %eax,(%rsp)
mov    -0x9c(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0x98(%rbp),%eax
mov    %eax,0x10(%rsp)
mov    -0x94(%rbp),%eax
mov    %eax,0x18(%rsp)
mov    -0x90(%rbp),%eax
mov    %eax,0x20(%rsp)
mov    -0x8c(%rbp),%eax
mov    %r13d,0x28(%rsp)
mov    %r12d,0x30(%rsp)
mov    %r15d,0x38(%rsp)
mov    %r14d,0x40(%rsp)
mov    %ebx,0x48(%rsp)
mov    %r11d,0x50(%rsp)
mov    %r10d,0x58(%rsp)
mov    %eax,0x60(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x66,-0x40(%rbp)
movl   $0x55,-0x44(%rbp)
movl   $0x63,-0x48(%rbp)
movl   $0x4b,-0x4c(%rbp)
movl   $0x20,-0x50(%rbp)
movl   $0x79,-0x54(%rbp)
movl   $0x4f,-0x58(%rbp)
movl   $0x75,-0x5c(%rbp)
movl   $0x55,-0x60(%rbp)
movl   $0x55,-0x64(%rbp)
movl   $0x55,-0x68(%rbp)
movl   $0x21,-0x6c(%rbp)
movl   $0x31,-0x70(%rbp)
movl   $0x21,-0x74(%rbp)
movl   $0xd,-0x78(%rbp)
mov    -0x40(%rbp),%esi
mov    -0x44(%rbp),%edx
mov    -0x48(%rbp),%ecx
mov    -0x4c(%rbp),%r8d
mov    -0x50(%rbp),%r9d
mov    -0x54(%rbp),%eax
mov    -0x58(%rbp),%edi
mov    %edi,-0x88(%rbp)
mov    -0x5c(%rbp),%r13d
mov    -0x60(%rbp),%r12d
mov    -0x64(%rbp),%r15d
mov    -0x68(%rbp),%r14d
mov    -0x6c(%rbp),%ebx
mov    -0x70(%rbp),%r11d
mov    -0x74(%rbp),%r10d
mov    -0x78(%rbp),%edi
mov    %edi,-0x84(%rbp)
lea    0xd57(%rip),%rdi
mov    %eax,(%rsp)
mov    -0x88(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0x84(%rbp),%eax
mov    %r13d,0x10(%rsp)
mov    %r12d,0x18(%rsp)
mov    %r15d,0x20(%rsp)
mov    %r14d,0x28(%rsp)
mov    %ebx,0x30(%rsp)
mov    %r11d,0x38(%rsp)
mov    %r10d,0x40(%rsp)
mov    %eax,0x48(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x40(%rbp),%esi
mov    -0x44(%rbp),%edx
mov    -0x48(%rbp),%ecx
mov    -0x4c(%rbp),%r8d
mov    -0x50(%rbp),%r9d
mov    -0x54(%rbp),%eax
mov    -0x58(%rbp),%edi
mov    %edi,-0x80(%rbp)
mov    -0x5c(%rbp),%r13d
mov    -0x60(%rbp),%r12d
mov    -0x64(%rbp),%r15d
mov    -0x68(%rbp),%r14d
mov    -0x6c(%rbp),%ebx
mov    -0x70(%rbp),%r11d
mov    -0x74(%rbp),%r10d
mov    -0x78(%rbp),%edi
mov    %edi,-0x7c(%rbp)
lea    0xd11(%rip),%rdi
mov    %eax,(%rsp)
mov    -0x80(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0x7c(%rbp),%eax
mov    %r13d,0x10(%rsp)
mov    %r12d,0x18(%rsp)
mov    %r15d,0x20(%rsp)
mov    %r14d,0x28(%rsp)
mov    %ebx,0x30(%rsp)
mov    %r11d,0x38(%rsp)
mov    %r10d,0x40(%rsp)
mov    %eax,0x48(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
add    $0xe8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<module1_section1_topic6>:
push   %rax
sub    $0x8,%rsp
lea    0xee4(%rip),%rdi
mov    $0x65,%esi
mov    $0x61,%edx
mov    $0x74,%ecx
mov    $0x6d,%r8d
mov    $0x79,%r9d
xor    %eax,%eax
push   $0xa
push   $0x21
push   $0x73
push   $0x6c
push   $0x6c
push   $0x61
push   $0x62
push   $0x64
push   $0x6e
push   $0x61
push   $0x73
push   $0x73
push   $0x61
call   1030 <printf@plt>
add    $0x70,%rsp
lea    0xee4(%rip),%rdi
mov    $0x66,%esi
mov    $0x55,%edx
mov    $0x63,%ecx
mov    $0x4b,%r8d
mov    $0x20,%r9d
xor    %eax,%eax
push   $0xd
push   $0x21
push   $0x31
push   $0x21
push   $0x55
push   $0x55
push   $0x55
push   $0x75
push   $0x4f
push   $0x79
call   1030 <printf@plt>
add    $0x50,%rsp
lea    0xedf(%rip),%rdi
mov    $0x66,%esi
mov    $0x55,%edx
mov    $0x63,%ecx
mov    $0x4b,%r8d
mov    $0x20,%r9d
xor    %eax,%eax
push   $0xd
push   $0x21
push   $0x31
push   $0x21
push   $0x55
push   $0x55
push   $0x55
push   $0x75
push   $0x4f
push   $0x79
call   1030 <printf@plt>
add    $0x50,%rsp
pop    %rax
ret

LLVM IR (-O0):
@.str = [71 x i8] c"long winded sentence using chars: %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\00"
@.str.1 = [60 x i8] c"long winded string of ints: %d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\0A\00"
@.str.2 = [60 x i8] c"long winded string of chars: %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\00"
define void @module1_section1_topic6() {
%1 = alloca i8
%2 = alloca i8
%3 = alloca i8
%4 = alloca i8
%5 = alloca i8
%6 = alloca i8
%7 = alloca i8
%8 = alloca i8
%9 = alloca i8
%10 = alloca i8
%11 = alloca i8
%12 = alloca i8
%13 = alloca i8
%14 = alloca i8
%15 = alloca i8
%16 = alloca i8
%17 = alloca i8
%18 = alloca i8
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
store i8 101, i8* %1
store i8 97, i8* %2
store i8 116, i8* %3
store i8 109, i8* %4
store i8 121, i8* %5
store i8 97, i8* %6
store i8 115, i8* %7
store i8 115, i8* %8
store i8 97, i8* %9
store i8 110, i8* %10
store i8 100, i8* %11
store i8 98, i8* %12
store i8 97, i8* %13
store i8 108, i8* %14
store i8 108, i8* %15
store i8 115, i8* %16
store i8 33, i8* %17
store i8 10, i8* %18
%34 = load i8, i8* %1
%35 = sext i8 %34 to i32
%36 = load i8, i8* %2
%37 = sext i8 %36 to i32
%38 = load i8, i8* %3
%39 = sext i8 %38 to i32
%40 = load i8, i8* %4
%41 = sext i8 %40 to i32
%42 = load i8, i8* %5
%43 = sext i8 %42 to i32
%44 = load i8, i8* %6
%45 = sext i8 %44 to i32
%46 = load i8, i8* %7
%47 = sext i8 %46 to i32
%48 = load i8, i8* %8
%49 = sext i8 %48 to i32
%50 = load i8, i8* %9
%51 = sext i8 %50 to i32
%52 = load i8, i8* %10
%53 = sext i8 %52 to i32
%54 = load i8, i8* %11
%55 = sext i8 %54 to i32
%56 = load i8, i8* %12
%57 = sext i8 %56 to i32
%58 = load i8, i8* %13
%59 = sext i8 %58 to i32
%60 = load i8, i8* %14
%61 = sext i8 %60 to i32
%62 = load i8, i8* %15
%63 = sext i8 %62 to i32
%64 = load i8, i8* %16
%65 = sext i8 %64 to i32
%66 = load i8, i8* %17
%67 = sext i8 %66 to i32
%68 = load i8, i8* %18
%69 = sext i8 %68 to i32
%70 = call i32 (i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str, i64 0, i64 0), i32 %35, i32 %37, i32 %39, i32 %41, i32 %43, i32 %45, i32 %47, i32 %49, i32 %51, i32 %53, i32 %55, i32 %57, i32 %59, i32 %61, i32 %63, i32 %65, i32 %67, i32 %69)
store i32 102, i32* %19
store i32 85, i32* %20
store i32 99, i32* %21
store i32 75, i32* %22
store i32 32, i32* %23
store i32 121, i32* %24
store i32 79, i32* %25
store i32 117, i32* %26
store i32 85, i32* %27
store i32 85, i32* %28
store i32 85, i32* %29
store i32 33, i32* %30
store i32 49, i32* %31
store i32 33, i32* %32
store i32 13, i32* %33
%71 = load i32, i32* %19
%72 = load i32, i32* %20
%73 = load i32, i32* %21
%74 = load i32, i32* %22
%75 = load i32, i32* %23
%76 = load i32, i32* %24
%77 = load i32, i32* %25
%78 = load i32, i32* %26
%79 = load i32, i32* %27
%80 = load i32, i32* %28
%81 = load i32, i32* %29
%82 = load i32, i32* %30
%83 = load i32, i32* %31
%84 = load i32, i32* %32
%85 = load i32, i32* %33
%86 = call i32 (i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.1, i64 0, i64 0), i32 %71, i32 %72, i32 %73, i32 %74, i32 %75, i32 %76, i32 %77, i32 %78, i32 %79, i32 %80, i32 %81, i32 %82, i32 %83, i32 %84, i32 %85)
%87 = load i32, i32* %19
%88 = load i32, i32* %20
%89 = load i32, i32* %21
%90 = load i32, i32* %22
%91 = load i32, i32* %23
%92 = load i32, i32* %24
%93 = load i32, i32* %25
%94 = load i32, i32* %26
%95 = load i32, i32* %27
%96 = load i32, i32* %28
%97 = load i32, i32* %29
%98 = load i32, i32* %30
%99 = load i32, i32* %31
%100 = load i32, i32* %32
%101 = load i32, i32* %33
%102 = call i32 (i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.2, i64 0, i64 0), i32 %87, i32 %88, i32 %89, i32 %90, i32 %91, i32 %92, i32 %93, i32 %94, i32 %95, i32 %96, i32 %97, i32 %98, i32 %99, i32 %100, i32 %101)
ret void
}

LLVM IR (-O2):
@.str = [71 x i8] c"long winded sentence using chars: %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\00"
@.str.1 = [60 x i8] c"long winded string of ints: %d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\0A\00"
@.str.2 = [60 x i8] c"long winded string of chars: %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\00"
define void @module1_section1_topic6() {
%1 = tail call i32 (i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str, i64 0, i64 0), i32 101, i32 97, i32 116, i32 109, i32 121, i32 97, i32 115, i32 115, i32 97, i32 110, i32 100, i32 98, i32 97, i32 108, i32 108, i32 115, i32 33, i32 10)
%2 = tail call i32 (i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.1, i64 0, i64 0), i32 102, i32 85, i32 99, i32 75, i32 32, i32 121, i32 79, i32 117, i32 85, i32 85, i32 85, i32 33, i32 49, i32 33, i32 13)
%3 = tail call i32 (i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.2, i64 0, i64 0), i32 102, i32 85, i32 99, i32 75, i32 32, i32 121, i32 79, i32 117, i32 85, i32 85, i32 85, i32 33, i32 49, i32 33, i32 13)
ret void
}