#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*/ puts(char *);
void rules(void) {
  puts("How to play:\n\n"
       "        Player 1's turn\n\n"
       "        Fig. 1 | Player indicator\n\n"
       "    Terminal Nim does not alter any of Nim's rules, so read no further "
       "if\n"
       "    you already know how to play normal Nim. If you do not already "
       "know how\n"
       "    to play, or you need a reminder, keep reading.\n\n"
       "    In Nim, there are several piles containing counters. On your turn, "
       "you\n\n"
       "        Pile 1: OOOOOOOOOOOOOOOOOO   18\n"
       "        Pile 2: OOOOOOO              7\n"
       "        Pile 3: OOOOOOOO             8\n"
       "        Pile 4: OOOOOOOOOOOOOOOOOOO  19\n"
       "        Pile 5: OOOOOOOOOOOOOOO      15\n\n"
       "        Fig. 2 | Counters display\n\n"
       "    select a pile, and remove as many counters as you want from it. "
       "There is\n"
       "    one restriction: you must make sure to remove at least one "
       "counter. The\n\n"
       "        Player 1 removed 16 counters from pile 1.\n"
       "        Counters: 18 -> 2\n\n"
       "        Fig. 3 | Taking counters\n\n"
       "    winner of the game is whoever takes the last counter.\n\n"
       "        Congratulations, Player 1! You won the game!\n\n"
       "        Fig. 4 | Winning message\n\n"
       "Playing the game:\n\n"
       "    Follow the prompts that appear in your terminal. It shouldn't be "
       "too\n\n"
       "        Which pile would you like to remove counters from? 1\n\n"
       "        How many counters would you like to remove? 16\n\n"
       "        Fig 5 | Counters prompt\n\n"
       "    hard. If for some reason the game won't work, make sure that the "
       "values\n"
       "    you're entering are valid. If that doesn't work, submit an issue "
       "to the\n"
       "    GitHub page "
       "(https://github.com/ericw31415/terminal-nim/issues/).\n\n"
       "    Have Fun!");
}


x86 assembly (clang, -O0):
<rules>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <puts@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<rules>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1479 x i8] c"How to play:\0A\0A Player 1's turn\0A\0A Fig. 1 | Player indicator\0A\0A Terminal Nim does not alter any of Nim's rules, so read no further if\0A you already know how to play normal Nim. If you do not already know how\0A to play, or you need a reminder, keep reading.\0A\0A In Nim, there are several piles containing counters. On your turn, you\0A\0A Pile 1: OOOOOOOOOOOOOOOOOO 18\0A Pile 2: OOOOOOO 7\0A Pile 3: OOOOOOOO 8\0A Pile 4: OOOOOOOOOOOOOOOOOOO 19\0A Pile 5: OOOOOOOOOOOOOOO 15\0A\0A Fig. 2 | Counters display\0A\0A select a pile, and remove as many counters as you want from it. There is\0A one restriction: you must make sure to remove at least one counter. The\0A\0A Player 1 removed 16 counters from pile 1.\0A Counters: 18 -> 2\0A\0A Fig. 3 | Taking counters\0A\0A winner of the game is whoever takes the last counter.\0A\0A Congratulations, Player 1! You won the game!\0A\0A Fig. 4 | Winning message\0A\0APlaying the game:\0A\0A Follow the prompts that appear in your terminal. It shouldn't be too\0A\0A Which pile would you like to remove counters from? 1\0A\0A How many counters would you like to remove? 16\0A\0A Fig 5 | Counters prompt\0A\0A hard. If for some reason the game won't work, make sure that the values\0A you're entering are valid. If that doesn't work, submit an issue to the\0A GitHub page (https://github.com/ericw31415/terminal-nim/issues/).\0A\0A Have Fun!\00"
define void @rules() {
%1 = call i32 @puts(i8* getelementptr inbounds ([1479 x i8], [1479 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [1479 x i8] c"How to play:\0A\0A Player 1's turn\0A\0A Fig. 1 | Player indicator\0A\0A Terminal Nim does not alter any of Nim's rules, so read no further if\0A you already know how to play normal Nim. If you do not already know how\0A to play, or you need a reminder, keep reading.\0A\0A In Nim, there are several piles containing counters. On your turn, you\0A\0A Pile 1: OOOOOOOOOOOOOOOOOO 18\0A Pile 2: OOOOOOO 7\0A Pile 3: OOOOOOOO 8\0A Pile 4: OOOOOOOOOOOOOOOOOOO 19\0A Pile 5: OOOOOOOOOOOOOOO 15\0A\0A Fig. 2 | Counters display\0A\0A select a pile, and remove as many counters as you want from it. There is\0A one restriction: you must make sure to remove at least one counter. The\0A\0A Player 1 removed 16 counters from pile 1.\0A Counters: 18 -> 2\0A\0A Fig. 3 | Taking counters\0A\0A winner of the game is whoever takes the last counter.\0A\0A Congratulations, Player 1! You won the game!\0A\0A Fig. 4 | Winning message\0A\0APlaying the game:\0A\0A Follow the prompts that appear in your terminal. It shouldn't be too\0A\0A Which pile would you like to remove counters from? 1\0A\0A How many counters would you like to remove? 16\0A\0A Fig 5 | Counters prompt\0A\0A hard. If for some reason the game won't work, make sure that the values\0A you're entering are valid. If that doesn't work, submit an issue to the\0A GitHub page (https://github.com/ericw31415/terminal-nim/issues/).\0A\0A Have Fun!\00"
define void @rules() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1479 x i8], [1479 x i8]* @.str, i64 0, i64 0))
ret void
}