#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 *);
void print_help() {
  printf(
      "Usage: ccalc [OPTION...] EXPRESSION\nEvaluate the C-style EXPRESSION "
      "and display the result. If no expression is\ngiven, read from standard "
      "input.\n\n  -b, --binary               Print integer results in binary "
      "(base 2)\n      --bool                 Interpret the result as a "
      "boolean value and\n                             print true or false\n  "
      "-c, --caret-exp            Use caret ^ for exponentiation rather than "
      "for\n                             bitwise XOR\n  -d, --degrees          "
      "    Use degrees instead of radians for trigonometric\n                  "
      "           functions\n  -g, --grouping=DIGITS      Group each set of "
      "DIGITS digits and separate\n                             each group "
      "with spaces (use 0 for no grouping)\n  -o, --octal                Print "
      "integer results in octal (base 8)\n  -p, --precision=DIGITS     Print "
      "floating-point results with DIGITS digits\n                             "
      "after the decimal point (default 6)\n  -r, --radix=RADIX          Print "
      "integer results in base RADIX\n  -s, --scientific-notation  Always "
      "print floating-point results in\n                             "
      "scientific notation, [-]d.ddde±dd\n  -t, --time                 Show "
      "how much time the computation took\n  -u, --uppercase            Use "
      "uppercase rather than lowercase letters for\n                           "
      "  digits in bases greater than 10\n  -x, --hexadecimal          Print "
      "integer results in hexadecimal (base 16)\n  -?, --help                 "
      "Give this help list\n      --usage                Give a short usage "
      "message\n      --version              Display version information and "
      "exit\n\nMandatory or optional arguments to long options are also "
      "mandatory or\noptional for any corresponding short options.\n\nThe "
      "EXPRESSION is interpreted as a C expression and evaluated. "
      "Integer\noperations are used when possible. If a floating-point value "
      "is given\nexplicitly, or if an operation results in a non-integer "
      "value, then\nfloating-point arithmetic is used for the remainder of the "
      "calculation.\n\nWARNING: The caret ^ indicates bitwise XOR, like in C, "
      "and not\nexponentiation. This behavior can be changed with the '-c' "
      "option.\nExponentiation can also be performed using the pow function or "
      "(unlike in C)\nthe ** operator.\n\nMany mathematical functions from the "
      "C standard library are available. Common\nmathematical constants like "
      "PI and E are also defined. Consult the program\ndocumentation for a "
      "complete list.\n\nExit status:\n0  if the calculation completed "
      "successfully,\n1  if an invalid expression was given,\n2  if a system "
      "error occurred.\n");
}


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

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

LLVM IR (-O0):
@.str = [2528 x i8] c"Usage: ccalc [OPTION...] EXPRESSION\0AEvaluate the C-style EXPRESSION and display the result. If no expression is\0Agiven, read from standard input.\0A\0A -b, --binary Print integer results in binary (base 2)\0A --bool Interpret the result as a boolean value and\0A print true or false\0A -c, --caret-exp Use caret ^ for exponentiation rather than for\0A bitwise XOR\0A -d, --degrees Use degrees instead of radians for trigonometric\0A functions\0A -g, --grouping=DIGITS Group each set of DIGITS digits and separate\0A each group with spaces (use 0 for no grouping)\0A -o, --octal Print integer results in octal (base 8)\0A -p, --precision=DIGITS Print floating-point results with DIGITS digits\0A after the decimal point (default 6)\0A -r, --radix=RADIX Print integer results in base RADIX\0A -s, --scientific-notation Always print floating-point results in\0A scientific notation, [-]d.ddde\C2\B1dd\0A -t, --time Show how much time the computation took\0A -u, --uppercase Use uppercase rather than lowercase letters for\0A digits in bases greater than 10\0A -x, --hexadecimal Print integer results in hexadecimal (base 16)\0A -?, --help Give this help list\0A --usage Give a short usage message\0A --version Display version information and exit\0A\0AMandatory or optional arguments to long options are also mandatory or\0Aoptional for any corresponding short options.\0A\0AThe EXPRESSION is interpreted as a C expression and evaluated. Integer\0Aoperations are used when possible. If a floating-point value is given\0Aexplicitly, or if an operation results in a non-integer value, then\0Afloating-point arithmetic is used for the remainder of the calculation.\0A\0AWARNING: The caret ^ indicates bitwise XOR, like in C, and not\0Aexponentiation. This behavior can be changed with the '-c' option.\0AExponentiation can also be performed using the pow function or (unlike in C)\0Athe ** operator.\0A\0AMany mathematical functions from the C standard library are available. Common\0Amathematical constants like PI and E are also defined. Consult the program\0Adocumentation for a complete list.\0A\0AExit status:\0A0 if the calculation completed successfully,\0A1 if an invalid expression was given,\0A2 if a system error occurred.\0A\00"
define void @print_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([2528 x i8], [2528 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [2527 x i8] c"Usage: ccalc [OPTION...] EXPRESSION\0AEvaluate the C-style EXPRESSION and display the result. If no expression is\0Agiven, read from standard input.\0A\0A -b, --binary Print integer results in binary (base 2)\0A --bool Interpret the result as a boolean value and\0A print true or false\0A -c, --caret-exp Use caret ^ for exponentiation rather than for\0A bitwise XOR\0A -d, --degrees Use degrees instead of radians for trigonometric\0A functions\0A -g, --grouping=DIGITS Group each set of DIGITS digits and separate\0A each group with spaces (use 0 for no grouping)\0A -o, --octal Print integer results in octal (base 8)\0A -p, --precision=DIGITS Print floating-point results with DIGITS digits\0A after the decimal point (default 6)\0A -r, --radix=RADIX Print integer results in base RADIX\0A -s, --scientific-notation Always print floating-point results in\0A scientific notation, [-]d.ddde\C2\B1dd\0A -t, --time Show how much time the computation took\0A -u, --uppercase Use uppercase rather than lowercase letters for\0A digits in bases greater than 10\0A -x, --hexadecimal Print integer results in hexadecimal (base 16)\0A -?, --help Give this help list\0A --usage Give a short usage message\0A --version Display version information and exit\0A\0AMandatory or optional arguments to long options are also mandatory or\0Aoptional for any corresponding short options.\0A\0AThe EXPRESSION is interpreted as a C expression and evaluated. Integer\0Aoperations are used when possible. If a floating-point value is given\0Aexplicitly, or if an operation results in a non-integer value, then\0Afloating-point arithmetic is used for the remainder of the calculation.\0A\0AWARNING: The caret ^ indicates bitwise XOR, like in C, and not\0Aexponentiation. This behavior can be changed with the '-c' option.\0AExponentiation can also be performed using the pow function or (unlike in C)\0Athe ** operator.\0A\0AMany mathematical functions from the C standard library are available. Common\0Amathematical constants like PI and E are also defined. Consult the program\0Adocumentation for a complete list.\0A\0AExit status:\0A0 if the calculation completed successfully,\0A1 if an invalid expression was given,\0A2 if a system error occurred.\00"
define void @print_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2527 x i8], [2527 x i8]* @str, i64 0, i64 0))
ret void
}