#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 */
char *bgBlack(char *);
char *bgMagenta(char *);
char *bgRed(char *);
char *black(char *);
char *bold(char *);
int /*<<< orphan*/ cmBgBlack(char *);
int /*<<< orphan*/ cmBgBlue(char *);
int /*<<< orphan*/ cmBgCyan(char *);
int /*<<< orphan*/ cmBgGreen(char *);
int /*<<< orphan*/ cmBgMagenta(char *);
int /*<<< orphan*/ cmBgRed(char *);
int /*<<< orphan*/ cmBgWhite(char *);
int /*<<< orphan*/ cmBgYellow(char *);
int /*<<< orphan*/ cmBlack(char *);
int /*<<< orphan*/ cmBlue(char *);
int /*<<< orphan*/ cmBold(char *);
int /*<<< orphan*/ cmCyan(char *);
int /*<<< orphan*/ cmDim(char *);
int /*<<< orphan*/ cmGreen(char *);
int /*<<< orphan*/ cmInverse(char *);
int /*<<< orphan*/ cmItalic(char *);
int /*<<< orphan*/ cmMagenta(char *);
int /*<<< orphan*/ cmRed(char *);
int /*<<< orphan*/ cmUnderline(char *);
int /*<<< orphan*/ cmWhite(char *);
int /*<<< orphan*/ cmYellow(char *);
char *green(char *);
char *inverse(char *);
int /*<<< orphan*/ printf(char *);
char *red(char *);
char *underline(char *);
char *yellow(char *);
int main(int argc, char *argv[]) {
  printf("\n-- default -------------------------------\n");
  printf("should be default\n");
  printf("\n-- styles --------------------------------\n");
  cmBold("bold\n");
  cmDim("dim\n");
  cmItalic("italic\n");
  cmUnderline("underline\n");
  cmInverse("inverse\n");
  printf("\n-- colors --------------------------------\n");
  cmBlack("black");
  printf(" (black)\n");
  cmRed("red\n");
  cmGreen("green\n");
  cmYellow("yellow\n");
  cmBlue("blue\n");
  cmMagenta("magenta\n");
  cmCyan("cyan\n");
  cmWhite("white");
  printf(" (white)\n");
  printf("\n-- backgrounds ---------------------------\n");
  cmBgBlack("bgBlack\n");
  cmBgRed("bgRed\n");
  cmBgGreen("bgGreen\n");
  cmBgYellow("bgYellow\n");
  cmBgBlue("bgBlue\n");
  cmBgMagenta("bgMagenta\n");
  cmBgCyan("bgCyan\n");
  cmBgWhite("bgWhite\n");
  printf("\n-- chains (2) ---------------------------\n");
  cmBgMagenta(black("bgMagenta, black\n"));
  cmBgMagenta(bold("bgMagenta, bold\n"));
  cmBold(underline("bold, underline\n"));
  cmGreen(bold("green, bold\n"));
  cmGreen(red("green, red\n"));
  cmUnderline(bold("undeline, bold\n"));
  cmYellow(underline("yellow, underline\n"));
  cmUnderline(yellow("underline, yellow\n"));
  printf("\n-- chains (3) ---------------------------\n");
  cmGreen(bgRed(bold("green, bgRed, bold\n")));
  cmBgRed(green(bold("bgRed, green, bold\n")));
  cmYellow(bold(underline("yellow, bold, underline\n")));
  cmWhite(bgMagenta(bold("white, bgMagenta, bold\n")));
  cmBold(underline(inverse("bold, underline, inverse\n")));
  printf("\n-- chains (4) ---------------------------\n");
  cmGreen(bgRed(bold(inverse("green, bgRed, bold, inverse\n"))));
  cmBold(yellow(underline(inverse("bold, yellow, underline, inverse\n"))));
  printf("\n-- chains (5) ---------------------------\n");
  cmYellow(bgBlack(
      bold(underline(inverse("yellow, bgBlack, bold, underline, inverse\n")))));
  printf("\n-- long text ---------------------------\n");
  cmBlue(
      "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec molestie "
      "mi sed magna tempor sodales. Morbi eleifend, est vel ullamcorper "
      "rutrum, sem libero laoreet nibh, et interdum lorem dui in erat. Integer "
      "id dui velit. Sed nec augue nec est dignissim sagittis. Praesent in "
      "felis et nulla condimentum maximus nec a tortor. Donec lacinia lacinia "
      "luctus. Fusce porttitor pretium scelerisque. Proin eleifend velit in "
      "magna tempus, non facilisis felis tincidunt. Nullam erat mauris, "
      "condimentum id vestibulum vel, pretium ut dolor. Suspendisse sit amet "
      "lacus facilisis, ullamcorper mauris a, fringilla nisl. Proin lorem "
      "velit, auctor id molestie a, imperdiet a mi. Nullam mollis pellentesque "
      "enim vitae volutpat.\n Vivamus luctus finibus porttitor. Proin cursus "
      "quis justo bibendum pellentesque. Phasellus ut lorem semper, porta "
      "justo eu, volutpat urna. Cras et nisl at velit congue fringilla. Sed "
      "quam orci, commodo quis nunc volutpat, rutrum euismod felis. Donec "
      "tempus a orci vitae volutpat. Fusce pellentesque ligula sem. Phasellus "
      "dui lorem, ultrices porttitor nisl vel, dignissim gravida elit. "
      "Pellentesque porta rutrum nibh, feugiat vulputate arcu fringilla eget. "
      "Pellentesque nec velit viverra ex malesuada iaculis. Maecenas euismod "
      "dui non ante blandit, et maximus ipsum imperdiet. Curabitur euismod "
      "viverra consectetur. Donec et velit eu elit ullamcorper vehicula vitae "
      "quis odio. Ut a laoreet ante. Nulla dictum sapien sit amet laoreet "
      "hendrerit.\n Nulla scelerisque at nibh id maximus. Curabitur ut tortor "
      "sed velit laoreet sollicitudin nec vel enim. Curabitur eget nunc "
      "pulvinar, luctus massa eu, luctus libero. Vivamus ornare urna ac nibh "
      "lacinia porttitor. Vestibulum quis convallis mi, eu ullamcorper ex. "
      "Maecenas commodo, nibh ac volutpat gravida, massa felis fringilla enim, "
      "id rhoncus turpis metus nec nibh. Pellentesque volutpat mauris vel "
      "justo ultrices imperdiet. Nunc egestas, urna eu tristique sodales, "
      "lacus felis egestas neque, at blandit enim urna ac lorem. Praesent "
      "convallis placerat arcu sit amet commodo. Aliquam erat volutpat. "
      "Aliquam in felis mauris. Pellentesque scelerisque eros at est "
      "tincidunt, et molestie mi consequat. Etiam ipsum mi, pulvinar at justo "
      "sit amet, viverra porttitor velit.\n Donec ultricies scelerisque ante. "
      "Nullam suscipit mauris nec varius ornare. Nunc rhoncus nisi ac est "
      "efficitur, et efficitur augue feugiat. Donec laoreet massa ut eros "
      "semper facilisis sed quis tortor. Mauris nunc diam, facilisis et dictum "
      "ac, pulvinar nec eros. Nunc pulvinar id urna nec congue. Duis gravida "
      "accumsan augue nec laoreet. Nam vitae luctus quam, vel congue libero. "
      "Praesent sollicitudin magna non aliquet scelerisque. Integer dictum "
      "nisi nulla, a suscipit mauris vehicula id. Quisque lacinia leo id orci "
      "blandit fermentum.\n");
  cmBgMagenta(black(
      "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec molestie "
      "mi sed magna tempor sodales. Morbi eleifend, est vel ullamcorper "
      "rutrum, sem libero laoreet nibh, et interdum lorem dui in erat. Integer "
      "id dui velit. Sed nec augue nec est dignissim sagittis. Praesent in "
      "felis et nulla condimentum maximus nec a tortor. Donec lacinia lacinia "
      "luctus. Fusce porttitor pretium scelerisque. Proin eleifend velit in "
      "magna tempus, non facilisis felis tincidunt. Nullam erat mauris, "
      "condimentum id vestibulum vel, pretium ut dolor. Suspendisse sit amet "
      "lacus facilisis, ullamcorper mauris a, fringilla nisl. Proin lorem "
      "velit, auctor id molestie a, imperdiet a mi. Nullam mollis pellentesque "
      "enim vitae volutpat.\n Vivamus luctus finibus porttitor. Proin cursus "
      "quis justo bibendum pellentesque. Phasellus ut lorem semper, porta "
      "justo eu, volutpat urna. Cras et nisl at velit congue fringilla. Sed "
      "quam orci, commodo quis nunc volutpat, rutrum euismod felis. Donec "
      "tempus a orci vitae volutpat. Fusce pellentesque ligula sem. Phasellus "
      "dui lorem, ultrices porttitor nisl vel, dignissim gravida elit. "
      "Pellentesque porta rutrum nibh, feugiat vulputate arcu fringilla eget. "
      "Pellentesque nec velit viverra ex malesuada iaculis. Maecenas euismod "
      "dui non ante blandit, et maximus ipsum imperdiet. Curabitur euismod "
      "viverra consectetur. Donec et velit eu elit ullamcorper vehicula vitae "
      "quis odio. Ut a laoreet ante. Nulla dictum sapien sit amet laoreet "
      "hendrerit.\n Nulla scelerisque at nibh id maximus. Curabitur ut tortor "
      "sed velit laoreet sollicitudin nec vel enim. Curabitur eget nunc "
      "pulvinar, luctus massa eu, luctus libero. Vivamus ornare urna ac nibh "
      "lacinia porttitor. Vestibulum quis convallis mi, eu ullamcorper ex. "
      "Maecenas commodo, nibh ac volutpat gravida, massa felis fringilla enim, "
      "id rhoncus turpis metus nec nibh. Pellentesque volutpat mauris vel "
      "justo ultrices imperdiet. Nunc egestas, urna eu tristique sodales, "
      "lacus felis egestas neque, at blandit enim urna ac lorem. Praesent "
      "convallis placerat arcu sit amet commodo. Aliquam erat volutpat. "
      "Aliquam in felis mauris. Pellentesque scelerisque eros at est "
      "tincidunt, et molestie mi consequat. Etiam ipsum mi, pulvinar at justo "
      "sit amet, viverra porttitor velit.\n Donec ultricies scelerisque ante. "
      "Nullam suscipit mauris nec varius ornare. Nunc rhoncus nisi ac est "
      "efficitur, et efficitur augue feugiat. Donec laoreet massa ut eros "
      "semper facilisis sed quis tortor. Mauris nunc diam, facilisis et dictum "
      "ac, pulvinar nec eros. Nunc pulvinar id urna nec congue. Duis gravida "
      "accumsan augue nec laoreet. Nam vitae luctus quam, vel congue libero. "
      "Praesent sollicitudin magna non aliquet scelerisque. Integer dictum "
      "nisi nulla, a suscipit mauris vehicula id. Quisque lacinia leo id orci "
      "blandit fermentum.\n"));
  cmYellow(bold(underline(
      "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec molestie "
      "mi sed magna tempor sodales. Morbi eleifend, est vel ullamcorper "
      "rutrum, sem libero laoreet nibh, et interdum lorem dui in erat. Integer "
      "id dui velit. Sed nec augue nec est dignissim sagittis. Praesent in "
      "felis et nulla condimentum maximus nec a tortor. Donec lacinia lacinia "
      "luctus. Fusce porttitor pretium scelerisque. Proin eleifend velit in "
      "magna tempus, non facilisis felis tincidunt. Nullam erat mauris, "
      "condimentum id vestibulum vel, pretium ut dolor. Suspendisse sit amet "
      "lacus facilisis, ullamcorper mauris a, fringilla nisl. Proin lorem "
      "velit, auctor id molestie a, imperdiet a mi. Nullam mollis pellentesque "
      "enim vitae volutpat.\n Vivamus luctus finibus porttitor. Proin cursus "
      "quis justo bibendum pellentesque. Phasellus ut lorem semper, porta "
      "justo eu, volutpat urna. Cras et nisl at velit congue fringilla. Sed "
      "quam orci, commodo quis nunc volutpat, rutrum euismod felis. Donec "
      "tempus a orci vitae volutpat. Fusce pellentesque ligula sem. Phasellus "
      "dui lorem, ultrices porttitor nisl vel, dignissim gravida elit. "
      "Pellentesque porta rutrum nibh, feugiat vulputate arcu fringilla eget. "
      "Pellentesque nec velit viverra ex malesuada iaculis. Maecenas euismod "
      "dui non ante blandit, et maximus ipsum imperdiet. Curabitur euismod "
      "viverra consectetur. Donec et velit eu elit ullamcorper vehicula vitae "
      "quis odio. Ut a laoreet ante. Nulla dictum sapien sit amet laoreet "
      "hendrerit.\n Nulla scelerisque at nibh id maximus. Curabitur ut tortor "
      "sed velit laoreet sollicitudin nec vel enim. Curabitur eget nunc "
      "pulvinar, luctus massa eu, luctus libero. Vivamus ornare urna ac nibh "
      "lacinia porttitor. Vestibulum quis convallis mi, eu ullamcorper ex. "
      "Maecenas commodo, nibh ac volutpat gravida, massa felis fringilla enim, "
      "id rhoncus turpis metus nec nibh. Pellentesque volutpat mauris vel "
      "justo ultrices imperdiet. Nunc egestas, urna eu tristique sodales, "
      "lacus felis egestas neque, at blandit enim urna ac lorem. Praesent "
      "convallis placerat arcu sit amet commodo. Aliquam erat volutpat. "
      "Aliquam in felis mauris. Pellentesque scelerisque eros at est "
      "tincidunt, et molestie mi consequat. Etiam ipsum mi, pulvinar at justo "
      "sit amet, viverra porttitor velit.\n Donec ultricies scelerisque ante. "
      "Nullam suscipit mauris nec varius ornare. Nunc rhoncus nisi ac est "
      "efficitur, et efficitur augue feugiat. Donec laoreet massa ut eros "
      "semper facilisis sed quis tortor. Mauris nunc diam, facilisis et dictum "
      "ac, pulvinar nec eros. Nunc pulvinar id urna nec congue. Duis gravida "
      "accumsan augue nec laoreet. Nam vitae luctus quam, vel congue libero. "
      "Praesent sollicitudin magna non aliquet scelerisque. Integer dictum "
      "nisi nulla, a suscipit mauris vehicula id. Quisque lacinia leo id orci "
      "blandit fermentum.\n")));
  printf("\n-- default -------------------------------\n");
  printf("should be default\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
lea    0xce3(%rip),%rdi
call   10d0 <printf@plt>
lea    0xd04(%rip),%rdi
call   10d0 <printf@plt>
lea    0xd0b(%rip),%rdi
call   10d0 <printf@plt>
lea    0xf15(%rip),%rdi
call   1080 <cmBold@plt>
lea    0xd20(%rip),%rdi
call   1070 <cmDim@plt>
lea    0xd19(%rip),%rdi
call   10b0 <cmItalic@plt>
lea    0xed4(%rip),%rdi
call   1120 <cmUnderline@plt>
lea    0xf2b(%rip),%rdi
call   1150 <cmInverse@plt>
lea    0xcfd(%rip),%rdi
call   10d0 <printf@plt>
lea    0xd1e(%rip),%rdi
call   11e0 <cmBlack@plt>
lea    0xd18(%rip),%rdi
call   10d0 <printf@plt>
lea    0xdfb(%rip),%rdi
call   1060 <cmRed@plt>
lea    0xd0a(%rip),%rdi
call   1050 <cmGreen@plt>
lea    0xe16(%rip),%rdi
call   1140 <cmYellow@plt>
lea    0xcf9(%rip),%rdi
call   10a0 <cmBlue@plt>
lea    0xcf3(%rip),%rdi
call   11a0 <cmMagenta@plt>
lea    0xcf0(%rip),%rdi
call   11c0 <cmCyan@plt>
lea    0xcea(%rip),%rdi
call   10c0 <cmWhite@plt>
lea    0xce4(%rip),%rdi
call   10d0 <printf@plt>
lea    0xce2(%rip),%rdi
call   10d0 <printf@plt>
lea    0xd03(%rip),%rdi
call   1180 <cmBgBlack@plt>
lea    0xd00(%rip),%rdi
call   1100 <cmBgRed@plt>
lea    0xcfb(%rip),%rdi
call   1030 <cmBgGreen@plt>
lea    0xcf8(%rip),%rdi
call   1160 <cmBgYellow@plt>
lea    0xcf6(%rip),%rdi
call   11f0 <cmBgBlue@plt>
lea    0xcf2(%rip),%rdi
call   1170 <cmBgMagenta@plt>
lea    0xcf1(%rip),%rdi
call   10e0 <cmBgCyan@plt>
lea    0xced(%rip),%rdi
call   11d0 <cmBgWhite@plt>
lea    0xcea(%rip),%rdi
call   10d0 <printf@plt>
lea    0xd0a(%rip),%rdi
call   10f0 <black@plt>
mov    %rax,%rdi
call   1170 <cmBgMagenta@plt>
lea    0xdbe(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1170 <cmBgMagenta@plt>
lea    0xd92(%rip),%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1080 <cmBold@plt>
lea    0xd69(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1050 <cmGreen@plt>
lea    0xccc(%rip),%rdi
call   1090 <red@plt>
mov    %rax,%rdi
call   1050 <cmGreen@plt>
lea    0xcc4(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1120 <cmUnderline@plt>
lea    0xcc0(%rip),%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1140 <cmYellow@plt>
lea    0xcbf(%rip),%rdi
call   1210 <yellow@plt>
mov    %rax,%rdi
call   1120 <cmUnderline@plt>
lea    0xcbe(%rip),%rdi
call   10d0 <printf@plt>
lea    0xcde(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1220 <bgRed@plt>
mov    %rax,%rdi
call   1050 <cmGreen@plt>
lea    0xcd6(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1110 <green@plt>
mov    %rax,%rdi
call   1100 <cmBgRed@plt>
lea    0xcce(%rip),%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1140 <cmYellow@plt>
lea    0xccb(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1040 <bgMagenta@plt>
mov    %rax,%rdi
call   10c0 <cmWhite@plt>
lea    0xd6f(%rip),%rdi
call   1190 <inverse@plt>
mov    %rax,%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1080 <cmBold@plt>
lea    0xcab(%rip),%rdi
call   10d0 <printf@plt>
lea    0xccb(%rip),%rdi
call   1190 <inverse@plt>
mov    %rax,%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1220 <bgRed@plt>
mov    %rax,%rdi
call   1050 <cmGreen@plt>
lea    0xcc4(%rip),%rdi
call   1190 <inverse@plt>
mov    %rax,%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1210 <yellow@plt>
mov    %rax,%rdi
call   1080 <cmBold@plt>
lea    0xcc2(%rip),%rdi
call   10d0 <printf@plt>
lea    0xce2(%rip),%rdi
call   1190 <inverse@plt>
mov    %rax,%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   11b0 <bgBlack@plt>
mov    %rax,%rdi
call   1140 <cmYellow@plt>
lea    0xce1(%rip),%rdi
call   10d0 <printf@plt>
lea    0xd00(%rip),%rdi
call   10a0 <cmBlue@plt>
lea    0xcf4(%rip),%rdi
call   10f0 <black@plt>
mov    %rax,%rdi
call   1170 <cmBgMagenta@plt>
lea    0xce0(%rip),%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1140 <cmYellow@plt>
lea    0x97b(%rip),%rdi
call   10d0 <printf@plt>
lea    0x99c(%rip),%rdi
call   10d0 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
lea    0x1abf(%rip),%r14
mov    %r14,%rdi
call   1080 <puts@plt>
lea    0x1adc(%rip),%r15
mov    %r15,%rdi
call   1080 <puts@plt>
lea    0x1935(%rip),%rdi
call   1080 <puts@plt>
lea    0xded(%rip),%rdi
call   1090 <cmBold@plt>
lea    0xcbe(%rip),%rdi
call   1070 <cmDim@plt>
lea    0xcb7(%rip),%rdi
call   10c0 <cmItalic@plt>
lea    0xdac(%rip),%rdi
call   1120 <cmUnderline@plt>
lea    0xdd7(%rip),%rdi
call   1150 <cmInverse@plt>
lea    0x1919(%rip),%rdi
call   1080 <puts@plt>
lea    0xc8f(%rip),%rdi
call   11e0 <cmBlack@plt>
lea    0x192d(%rip),%rdi
call   1080 <puts@plt>
lea    0xcff(%rip),%rdi
call   1060 <cmRed@plt>
lea    0xc71(%rip),%rdi
call   1050 <cmGreen@plt>
lea    0xd1a(%rip),%rdi
call   1140 <cmYellow@plt>
lea    0xc60(%rip),%rdi
call   10b0 <cmBlue@plt>
lea    0xc5a(%rip),%rdi
call   11a0 <cmMagenta@plt>
lea    0xc57(%rip),%rdi
call   11c0 <cmCyan@plt>
lea    0xc51(%rip),%rdi
call   10d0 <cmWhite@plt>
lea    0x18d6(%rip),%rdi
call   1080 <puts@plt>
lea    0x18d3(%rip),%rdi
call   1080 <puts@plt>
lea    0xc33(%rip),%rdi
call   1180 <cmBgBlack@plt>
lea    0xc30(%rip),%rdi
call   1100 <cmBgRed@plt>
lea    0xc2b(%rip),%rdi
call   1030 <cmBgGreen@plt>
lea    0xc28(%rip),%rdi
call   1160 <cmBgYellow@plt>
lea    0xc26(%rip),%rdi
call   11f0 <cmBgBlue@plt>
lea    0xc22(%rip),%rdi
call   1170 <cmBgMagenta@plt>
lea    0xc21(%rip),%rdi
call   10e0 <cmBgCyan@plt>
lea    0xc1d(%rip),%rdi
call   11d0 <cmBgWhite@plt>
lea    0x1893(%rip),%rdi
call   1080 <puts@plt>
lea    0xc0e(%rip),%rdi
call   10f0 <black@plt>
mov    %rax,%rdi
call   1170 <cmBgMagenta@plt>
lea    0xc96(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1170 <cmBgMagenta@plt>
lea    0xc6a(%rip),%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1090 <cmBold@plt>
lea    0xc41(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1050 <cmGreen@plt>
lea    0xbd0(%rip),%rdi
call   10a0 <red@plt>
mov    %rax,%rdi
call   1050 <cmGreen@plt>
lea    0xbc8(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1120 <cmUnderline@plt>
lea    0xbc4(%rip),%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1140 <cmYellow@plt>
lea    0xbc3(%rip),%rdi
call   1210 <yellow@plt>
mov    %rax,%rdi
call   1120 <cmUnderline@plt>
lea    0x1812(%rip),%rdi
call   1080 <puts@plt>
lea    0xbb6(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1220 <bgRed@plt>
mov    %rax,%rdi
call   1050 <cmGreen@plt>
lea    0xbae(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1110 <green@plt>
mov    %rax,%rdi
call   1100 <cmBgRed@plt>
lea    0xba6(%rip),%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1140 <cmYellow@plt>
lea    0xba3(%rip),%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1040 <bgMagenta@plt>
mov    %rax,%rdi
call   10d0 <cmWhite@plt>
lea    0xbef(%rip),%rdi
call   1190 <inverse@plt>
mov    %rax,%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1090 <cmBold@plt>
lea    0x17a5(%rip),%rdi
call   1080 <puts@plt>
lea    0xb77(%rip),%rdi
call   1190 <inverse@plt>
mov    %rax,%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1220 <bgRed@plt>
mov    %rax,%rdi
call   1050 <cmGreen@plt>
lea    0xb70(%rip),%rdi
call   1190 <inverse@plt>
mov    %rax,%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1210 <yellow@plt>
mov    %rax,%rdi
call   1090 <cmBold@plt>
lea    0x177c(%rip),%rdi
call   1080 <puts@plt>
lea    0xb62(%rip),%rdi
call   1190 <inverse@plt>
mov    %rax,%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   11b0 <bgBlack@plt>
mov    %rax,%rdi
call   1140 <cmYellow@plt>
lea    0x176f(%rip),%rdi
call   1080 <puts@plt>
lea    0xb55(%rip),%rbx
mov    %rbx,%rdi
call   10b0 <cmBlue@plt>
mov    %rbx,%rdi
call   10f0 <black@plt>
mov    %rax,%rdi
call   1170 <cmBgMagenta@plt>
mov    %rbx,%rdi
call   1200 <underline@plt>
mov    %rax,%rdi
call   1130 <bold@plt>
mov    %rax,%rdi
call   1140 <cmYellow@plt>
mov    %r14,%rdi
call   1080 <puts@plt>
mov    %r15,%rdi
call   1080 <puts@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [45 x i8] c"\0A-- default -------------------------------\0A\00"
@.str.1 = [19 x i8] c"should be default\0A\00"
@.str.2 = [45 x i8] c"\0A-- styles --------------------------------\0A\00"
@.str.3 = [6 x i8] c"bold\0A\00"
@.str.4 = [5 x i8] c"dim\0A\00"
@.str.5 = [8 x i8] c"italic\0A\00"
@.str.6 = [11 x i8] c"underline\0A\00"
@.str.7 = [9 x i8] c"inverse\0A\00"
@.str.8 = [45 x i8] c"\0A-- colors --------------------------------\0A\00"
@.str.9 = [6 x i8] c"black\00"
@.str.10 = [10 x i8] c" (black)\0A\00"
@.str.11 = [5 x i8] c"red\0A\00"
@.str.12 = [7 x i8] c"green\0A\00"
@.str.13 = [8 x i8] c"yellow\0A\00"
@.str.14 = [6 x i8] c"blue\0A\00"
@.str.15 = [9 x i8] c"magenta\0A\00"
@.str.16 = [6 x i8] c"cyan\0A\00"
@.str.17 = [6 x i8] c"white\00"
@.str.18 = [10 x i8] c" (white)\0A\00"
@.str.19 = [45 x i8] c"\0A-- backgrounds ---------------------------\0A\00"
@.str.20 = [9 x i8] c"bgBlack\0A\00"
@.str.21 = [7 x i8] c"bgRed\0A\00"
@.str.22 = [9 x i8] c"bgGreen\0A\00"
@.str.23 = [10 x i8] c"bgYellow\0A\00"
@.str.24 = [8 x i8] c"bgBlue\0A\00"
@.str.25 = [11 x i8] c"bgMagenta\0A\00"
@.str.26 = [8 x i8] c"bgCyan\0A\00"
@.str.27 = [9 x i8] c"bgWhite\0A\00"
@.str.28 = [44 x i8] c"\0A-- chains (2) ---------------------------\0A\00"
@.str.29 = [18 x i8] c"bgMagenta, black\0A\00"
@.str.30 = [17 x i8] c"bgMagenta, bold\0A\00"
@.str.31 = [17 x i8] c"bold, underline\0A\00"
@.str.32 = [13 x i8] c"green, bold\0A\00"
@.str.33 = [12 x i8] c"green, red\0A\00"
@.str.34 = [16 x i8] c"undeline, bold\0A\00"
@.str.35 = [19 x i8] c"yellow, underline\0A\00"
@.str.36 = [19 x i8] c"underline, yellow\0A\00"
@.str.37 = [44 x i8] c"\0A-- chains (3) ---------------------------\0A\00"
@.str.38 = [20 x i8] c"green, bgRed, bold\0A\00"
@.str.39 = [20 x i8] c"bgRed, green, bold\0A\00"
@.str.40 = [25 x i8] c"yellow, bold, underline\0A\00"
@.str.41 = [24 x i8] c"white, bgMagenta, bold\0A\00"
@.str.42 = [26 x i8] c"bold, underline, inverse\0A\00"
@.str.43 = [44 x i8] c"\0A-- chains (4) ---------------------------\0A\00"
@.str.44 = [29 x i8] c"green, bgRed, bold, inverse\0A\00"
@.str.45 = [34 x i8] c"bold, yellow, underline, inverse\0A\00"
@.str.46 = [44 x i8] c"\0A-- chains (5) ---------------------------\0A\00"
@.str.47 = [43 x i8] c"yellow, bgBlack, bold, underline, inverse\0A\00"
@.str.48 = [43 x i8] c"\0A-- long text ---------------------------\0A\00"
@.str.49 = [2764 x i8] c"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec molestie mi sed magna tempor sodales. Morbi eleifend, est vel ullamcorper rutrum, sem libero laoreet nibh, et interdum lorem dui in erat. Integer id dui velit. Sed nec augue nec est dignissim sagittis. Praesent in felis et nulla condimentum maximus nec a tortor. Donec lacinia lacinia luctus. Fusce porttitor pretium scelerisque. Proin eleifend velit in magna tempus, non facilisis felis tincidunt. Nullam erat mauris, condimentum id vestibulum vel, pretium ut dolor. Suspendisse sit amet lacus facilisis, ullamcorper mauris a, fringilla nisl. Proin lorem velit, auctor id molestie a, imperdiet a mi. Nullam mollis pellentesque enim vitae volutpat.\0A Vivamus luctus finibus porttitor. Proin cursus quis justo bibendum pellentesque. Phasellus ut lorem semper, porta justo eu, volutpat urna. Cras et nisl at velit congue fringilla. Sed quam orci, commodo quis nunc volutpat, rutrum euismod felis. Donec tempus a orci vitae volutpat. Fusce pellentesque ligula sem. Phasellus dui lorem, ultrices porttitor nisl vel, dignissim gravida elit. Pellentesque porta rutrum nibh, feugiat vulputate arcu fringilla eget. Pellentesque nec velit viverra ex malesuada iaculis. Maecenas euismod dui non ante blandit, et maximus ipsum imperdiet. Curabitur euismod viverra consectetur. Donec et velit eu elit ullamcorper vehicula vitae quis odio. Ut a laoreet ante. Nulla dictum sapien sit amet laoreet hendrerit.\0A Nulla scelerisque at nibh id maximus. Curabitur ut tortor sed velit laoreet sollicitudin nec vel enim. Curabitur eget nunc pulvinar, luctus massa eu, luctus libero. Vivamus ornare urna ac nibh lacinia porttitor. Vestibulum quis convallis mi, eu ullamcorper ex. Maecenas commodo, nibh ac volutpat gravida, massa felis fringilla enim, id rhoncus turpis metus nec nibh. Pellentesque volutpat mauris vel justo ultrices imperdiet. Nunc egestas, urna eu tristique sodales, lacus felis egestas neque, at blandit enim urna ac lorem. Praesent convallis placerat arcu sit amet commodo. Aliquam erat volutpat. Aliquam in felis mauris. Pellentesque scelerisque eros at est tincidunt, et molestie mi consequat. Etiam ipsum mi, pulvinar at justo sit amet, viverra porttitor velit.\0A Donec ultricies scelerisque ante. Nullam suscipit mauris nec varius ornare. Nunc rhoncus nisi ac est efficitur, et efficitur augue feugiat. Donec laoreet massa ut eros semper facilisis sed quis tortor. Mauris nunc diam, facilisis et dictum ac, pulvinar nec eros. Nunc pulvinar id urna nec congue. Duis gravida accumsan augue nec laoreet. Nam vitae luctus quam, vel congue libero. Praesent sollicitudin magna non aliquet scelerisque. Integer dictum nisi nulla, a suscipit mauris vehicula id. Quisque lacinia leo id orci blandit fermentum.\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%6 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.2, i64 0, i64 0))
%9 = call i32 @cmBold(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%10 = call i32 @cmDim(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%11 = call i32 @cmItalic(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
%12 = call i32 @cmUnderline(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i64 0, i64 0))
%13 = call i32 @cmInverse(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.8, i64 0, i64 0))
%15 = call i32 @cmBlack(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0))
%17 = call i32 @cmRed(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%18 = call i32 @cmGreen(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
%19 = call i32 @cmYellow(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.13, i64 0, i64 0))
%20 = call i32 @cmBlue(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0))
%21 = call i32 @cmMagenta(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0))
%22 = call i32 @cmCyan(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
%23 = call i32 @cmWhite(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0))
%24 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0))
%25 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.19, i64 0, i64 0))
%26 = call i32 @cmBgBlack(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0))
%27 = call i32 @cmBgRed(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.21, i64 0, i64 0))
%28 = call i32 @cmBgGreen(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i64 0, i64 0))
%29 = call i32 @cmBgYellow(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.23, i64 0, i64 0))
%30 = call i32 @cmBgBlue(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.24, i64 0, i64 0))
%31 = call i32 @cmBgMagenta(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.25, i64 0, i64 0))
%32 = call i32 @cmBgCyan(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.26, i64 0, i64 0))
%33 = call i32 @cmBgWhite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.27, i64 0, i64 0))
%34 = call i32 @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.28, i64 0, i64 0))
%35 = call i8* @black(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.29, i64 0, i64 0))
%36 = call i32 @cmBgMagenta(i8* %35)
%37 = call i8* @bold(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.30, i64 0, i64 0))
%38 = call i32 @cmBgMagenta(i8* %37)
%39 = call i8* @underline(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.31, i64 0, i64 0))
%40 = call i32 @cmBold(i8* %39)
%41 = call i8* @bold(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i64 0, i64 0))
%42 = call i32 @cmGreen(i8* %41)
%43 = call i8* @red(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.33, i64 0, i64 0))
%44 = call i32 @cmGreen(i8* %43)
%45 = call i8* @bold(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0))
%46 = call i32 @cmUnderline(i8* %45)
%47 = call i8* @underline(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.35, i64 0, i64 0))
%48 = call i32 @cmYellow(i8* %47)
%49 = call i8* @yellow(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.36, i64 0, i64 0))
%50 = call i32 @cmUnderline(i8* %49)
%51 = call i32 @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.37, i64 0, i64 0))
%52 = call i8* @bold(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.38, i64 0, i64 0))
%53 = call i8* @bgRed(i8* %52)
%54 = call i32 @cmGreen(i8* %53)
%55 = call i8* @bold(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.39, i64 0, i64 0))
%56 = call i8* @green(i8* %55)
%57 = call i32 @cmBgRed(i8* %56)
%58 = call i8* @underline(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.40, i64 0, i64 0))
%59 = call i8* @bold(i8* %58)
%60 = call i32 @cmYellow(i8* %59)
%61 = call i8* @bold(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.41, i64 0, i64 0))
%62 = call i8* @bgMagenta(i8* %61)
%63 = call i32 @cmWhite(i8* %62)
%64 = call i8* @inverse(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.42, i64 0, i64 0))
%65 = call i8* @underline(i8* %64)
%66 = call i32 @cmBold(i8* %65)
%67 = call i32 @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.43, i64 0, i64 0))
%68 = call i8* @inverse(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.44, i64 0, i64 0))
%69 = call i8* @bold(i8* %68)
%70 = call i8* @bgRed(i8* %69)
%71 = call i32 @cmGreen(i8* %70)
%72 = call i8* @inverse(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.45, i64 0, i64 0))
%73 = call i8* @underline(i8* %72)
%74 = call i8* @yellow(i8* %73)
%75 = call i32 @cmBold(i8* %74)
%76 = call i32 @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.46, i64 0, i64 0))
%77 = call i8* @inverse(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.47, i64 0, i64 0))
%78 = call i8* @underline(i8* %77)
%79 = call i8* @bold(i8* %78)
%80 = call i8* @bgBlack(i8* %79)
%81 = call i32 @cmYellow(i8* %80)
%82 = call i32 @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.48, i64 0, i64 0))
%83 = call i32 @cmBlue(i8* getelementptr inbounds ([2764 x i8], [2764 x i8]* @.str.49, i64 0, i64 0))
%84 = call i8* @black(i8* getelementptr inbounds ([2764 x i8], [2764 x i8]* @.str.49, i64 0, i64 0))
%85 = call i32 @cmBgMagenta(i8* %84)
%86 = call i8* @underline(i8* getelementptr inbounds ([2764 x i8], [2764 x i8]* @.str.49, i64 0, i64 0))
%87 = call i8* @bold(i8* %86)
%88 = call i32 @cmYellow(i8* %87)
%89 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
%90 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str.3 = [6 x i8] c"bold\0A\00"
@.str.4 = [5 x i8] c"dim\0A\00"
@.str.5 = [8 x i8] c"italic\0A\00"
@.str.6 = [11 x i8] c"underline\0A\00"
@.str.7 = [9 x i8] c"inverse\0A\00"
@.str.9 = [6 x i8] c"black\00"
@.str.11 = [5 x i8] c"red\0A\00"
@.str.12 = [7 x i8] c"green\0A\00"
@.str.13 = [8 x i8] c"yellow\0A\00"
@.str.14 = [6 x i8] c"blue\0A\00"
@.str.15 = [9 x i8] c"magenta\0A\00"
@.str.16 = [6 x i8] c"cyan\0A\00"
@.str.17 = [6 x i8] c"white\00"
@.str.20 = [9 x i8] c"bgBlack\0A\00"
@.str.21 = [7 x i8] c"bgRed\0A\00"
@.str.22 = [9 x i8] c"bgGreen\0A\00"
@.str.23 = [10 x i8] c"bgYellow\0A\00"
@.str.24 = [8 x i8] c"bgBlue\0A\00"
@.str.25 = [11 x i8] c"bgMagenta\0A\00"
@.str.26 = [8 x i8] c"bgCyan\0A\00"
@.str.27 = [9 x i8] c"bgWhite\0A\00"
@.str.29 = [18 x i8] c"bgMagenta, black\0A\00"
@.str.30 = [17 x i8] c"bgMagenta, bold\0A\00"
@.str.31 = [17 x i8] c"bold, underline\0A\00"
@.str.32 = [13 x i8] c"green, bold\0A\00"
@.str.33 = [12 x i8] c"green, red\0A\00"
@.str.34 = [16 x i8] c"undeline, bold\0A\00"
@.str.35 = [19 x i8] c"yellow, underline\0A\00"
@.str.36 = [19 x i8] c"underline, yellow\0A\00"
@.str.38 = [20 x i8] c"green, bgRed, bold\0A\00"
@.str.39 = [20 x i8] c"bgRed, green, bold\0A\00"
@.str.40 = [25 x i8] c"yellow, bold, underline\0A\00"
@.str.41 = [24 x i8] c"white, bgMagenta, bold\0A\00"
@.str.42 = [26 x i8] c"bold, underline, inverse\0A\00"
@.str.44 = [29 x i8] c"green, bgRed, bold, inverse\0A\00"
@.str.45 = [34 x i8] c"bold, yellow, underline, inverse\0A\00"
@.str.47 = [43 x i8] c"yellow, bgBlack, bold, underline, inverse\0A\00"
@.str.49 = [2764 x i8] c"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec molestie mi sed magna tempor sodales. Morbi eleifend, est vel ullamcorper rutrum, sem libero laoreet nibh, et interdum lorem dui in erat. Integer id dui velit. Sed nec augue nec est dignissim sagittis. Praesent in felis et nulla condimentum maximus nec a tortor. Donec lacinia lacinia luctus. Fusce porttitor pretium scelerisque. Proin eleifend velit in magna tempus, non facilisis felis tincidunt. Nullam erat mauris, condimentum id vestibulum vel, pretium ut dolor. Suspendisse sit amet lacus facilisis, ullamcorper mauris a, fringilla nisl. Proin lorem velit, auctor id molestie a, imperdiet a mi. Nullam mollis pellentesque enim vitae volutpat.\0A Vivamus luctus finibus porttitor. Proin cursus quis justo bibendum pellentesque. Phasellus ut lorem semper, porta justo eu, volutpat urna. Cras et nisl at velit congue fringilla. Sed quam orci, commodo quis nunc volutpat, rutrum euismod felis. Donec tempus a orci vitae volutpat. Fusce pellentesque ligula sem. Phasellus dui lorem, ultrices porttitor nisl vel, dignissim gravida elit. Pellentesque porta rutrum nibh, feugiat vulputate arcu fringilla eget. Pellentesque nec velit viverra ex malesuada iaculis. Maecenas euismod dui non ante blandit, et maximus ipsum imperdiet. Curabitur euismod viverra consectetur. Donec et velit eu elit ullamcorper vehicula vitae quis odio. Ut a laoreet ante. Nulla dictum sapien sit amet laoreet hendrerit.\0A Nulla scelerisque at nibh id maximus. Curabitur ut tortor sed velit laoreet sollicitudin nec vel enim. Curabitur eget nunc pulvinar, luctus massa eu, luctus libero. Vivamus ornare urna ac nibh lacinia porttitor. Vestibulum quis convallis mi, eu ullamcorper ex. Maecenas commodo, nibh ac volutpat gravida, massa felis fringilla enim, id rhoncus turpis metus nec nibh. Pellentesque volutpat mauris vel justo ultrices imperdiet. Nunc egestas, urna eu tristique sodales, lacus felis egestas neque, at blandit enim urna ac lorem. Praesent convallis placerat arcu sit amet commodo. Aliquam erat volutpat. Aliquam in felis mauris. Pellentesque scelerisque eros at est tincidunt, et molestie mi consequat. Etiam ipsum mi, pulvinar at justo sit amet, viverra porttitor velit.\0A Donec ultricies scelerisque ante. Nullam suscipit mauris nec varius ornare. Nunc rhoncus nisi ac est efficitur, et efficitur augue feugiat. Donec laoreet massa ut eros semper facilisis sed quis tortor. Mauris nunc diam, facilisis et dictum ac, pulvinar nec eros. Nunc pulvinar id urna nec congue. Duis gravida accumsan augue nec laoreet. Nam vitae luctus quam, vel congue libero. Praesent sollicitudin magna non aliquet scelerisque. Integer dictum nisi nulla, a suscipit mauris vehicula id. Quisque lacinia leo id orci blandit fermentum.\0A\00"
@str.51 = [44 x i8] c"\0A-- styles --------------------------------\00"
@str.52 = [44 x i8] c"\0A-- colors --------------------------------\00"
@str.53 = [9 x i8] c" (black)\00"
@str.54 = [9 x i8] c" (white)\00"
@str.55 = [44 x i8] c"\0A-- backgrounds ---------------------------\00"
@str.56 = [43 x i8] c"\0A-- chains (2) ---------------------------\00"
@str.57 = [43 x i8] c"\0A-- chains (3) ---------------------------\00"
@str.58 = [43 x i8] c"\0A-- chains (4) ---------------------------\00"
@str.59 = [43 x i8] c"\0A-- chains (5) ---------------------------\00"
@str.60 = [42 x i8] c"\0A-- long text ---------------------------\00"
@str.61 = [44 x i8] c"\0A-- default -------------------------------\00"
@str.62 = [18 x i8] c"should be default\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.61, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.62, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.51, i64 0, i64 0))
%6 = tail call i32 @cmBold(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%7 = tail call i32 @cmDim(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%8 = tail call i32 @cmItalic(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
%9 = tail call i32 @cmUnderline(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i64 0, i64 0))
%10 = tail call i32 @cmInverse(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.52, i64 0, i64 0))
%12 = tail call i32 @cmBlack(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @str.53, i64 0, i64 0))
%14 = tail call i32 @cmRed(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%15 = tail call i32 @cmGreen(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
%16 = tail call i32 @cmYellow(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.13, i64 0, i64 0))
%17 = tail call i32 @cmBlue(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0))
%18 = tail call i32 @cmMagenta(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0))
%19 = tail call i32 @cmCyan(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
%20 = tail call i32 @cmWhite(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @str.54, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.55, i64 0, i64 0))
%23 = tail call i32 @cmBgBlack(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0))
%24 = tail call i32 @cmBgRed(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.21, i64 0, i64 0))
%25 = tail call i32 @cmBgGreen(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i64 0, i64 0))
%26 = tail call i32 @cmBgYellow(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.23, i64 0, i64 0))
%27 = tail call i32 @cmBgBlue(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.24, i64 0, i64 0))
%28 = tail call i32 @cmBgMagenta(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.25, i64 0, i64 0))
%29 = tail call i32 @cmBgCyan(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.26, i64 0, i64 0))
%30 = tail call i32 @cmBgWhite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.27, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.56, i64 0, i64 0))
%32 = tail call i8* @black(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.29, i64 0, i64 0))
%33 = tail call i32 @cmBgMagenta(i8* %32)
%34 = tail call i8* @bold(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.30, i64 0, i64 0))
%35 = tail call i32 @cmBgMagenta(i8* %34)
%36 = tail call i8* @underline(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.31, i64 0, i64 0))
%37 = tail call i32 @cmBold(i8* %36)
%38 = tail call i8* @bold(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i64 0, i64 0))
%39 = tail call i32 @cmGreen(i8* %38)
%40 = tail call i8* @red(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.33, i64 0, i64 0))
%41 = tail call i32 @cmGreen(i8* %40)
%42 = tail call i8* @bold(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0))
%43 = tail call i32 @cmUnderline(i8* %42)
%44 = tail call i8* @underline(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.35, i64 0, i64 0))
%45 = tail call i32 @cmYellow(i8* %44)
%46 = tail call i8* @yellow(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.36, i64 0, i64 0))
%47 = tail call i32 @cmUnderline(i8* %46)
%48 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.57, i64 0, i64 0))
%49 = tail call i8* @bold(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.38, i64 0, i64 0))
%50 = tail call i8* @bgRed(i8* %49)
%51 = tail call i32 @cmGreen(i8* %50)
%52 = tail call i8* @bold(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.39, i64 0, i64 0))
%53 = tail call i8* @green(i8* %52)
%54 = tail call i32 @cmBgRed(i8* %53)
%55 = tail call i8* @underline(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.40, i64 0, i64 0))
%56 = tail call i8* @bold(i8* %55)
%57 = tail call i32 @cmYellow(i8* %56)
%58 = tail call i8* @bold(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.41, i64 0, i64 0))
%59 = tail call i8* @bgMagenta(i8* %58)
%60 = tail call i32 @cmWhite(i8* %59)
%61 = tail call i8* @inverse(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.42, i64 0, i64 0))
%62 = tail call i8* @underline(i8* %61)
%63 = tail call i32 @cmBold(i8* %62)
%64 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.58, i64 0, i64 0))
%65 = tail call i8* @inverse(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.44, i64 0, i64 0))
%66 = tail call i8* @bold(i8* %65)
%67 = tail call i8* @bgRed(i8* %66)
%68 = tail call i32 @cmGreen(i8* %67)
%69 = tail call i8* @inverse(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.45, i64 0, i64 0))
%70 = tail call i8* @underline(i8* %69)
%71 = tail call i8* @yellow(i8* %70)
%72 = tail call i32 @cmBold(i8* %71)
%73 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.59, i64 0, i64 0))
%74 = tail call i8* @inverse(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.47, i64 0, i64 0))
%75 = tail call i8* @underline(i8* %74)
%76 = tail call i8* @bold(i8* %75)
%77 = tail call i8* @bgBlack(i8* %76)
%78 = tail call i32 @cmYellow(i8* %77)
%79 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.60, i64 0, i64 0))
%80 = tail call i32 @cmBlue(i8* getelementptr inbounds ([2764 x i8], [2764 x i8]* @.str.49, i64 0, i64 0))
%81 = tail call i8* @black(i8* getelementptr inbounds ([2764 x i8], [2764 x i8]* @.str.49, i64 0, i64 0))
%82 = tail call i32 @cmBgMagenta(i8* %81)
%83 = tail call i8* @underline(i8* getelementptr inbounds ([2764 x i8], [2764 x i8]* @.str.49, i64 0, i64 0))
%84 = tail call i8* @bold(i8* %83)
%85 = tail call i32 @cmYellow(i8* %84)
%86 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.61, i64 0, i64 0))
%87 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.62, i64 0, i64 0))
ret i32 0
}