#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*/ print_usage(int /*<<< orphan*/);
int /*<<< orphan*/ puts(char *);
int /*<<< orphan*/ stdout;
void print_help() {
  print_usage(stdout);
  puts("Show members of a group.\n"
       "\n"
       "members(1) is the complement of groups(1): where groups(1) shows the "
       "groups a\n"
       "user belongs to, members(1) shows users belonging to a group.\n"
       "\n"
       "  -p, --primary              show only members for which GROUP is "
       "their\n"
       "                               primary group\n"
       "  -s, --secondary            show only members who have a secondary\n"
       "                               membership in GROUP\n"
       "  -t, --two-lines            show primary members on the first line of "
       "output\n"
       "                               and secondary members on the second "
       "line; two\n"
       "                               lines are always printed\n"
       "  -h, --help                 display this help and exit\n"
       "  -v, --version              output version information and exit\n"
       "\n"
       "Exit status:\n"
       " 0  OK\n"
       " 1  input error (e.g. no GROUP, unrecognised flag)\n"
       " 2  GROUP does not exist\n"
       " 3  GROUP exists but could not be opened (see error message)\n"
       " 4  GROUP did not have any members\n");
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
call   1040 <print_usage@plt>
lea    0xec7(%rip),%rdi
call   1030 <puts@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
call   1040 <print_usage@plt>
lea    0xeca(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@stdout = global i32 0
@.str = [929 x i8] c"Show members of a group.\0A\0Amembers(1) is the complement of groups(1): where groups(1) shows the groups a\0Auser belongs to, members(1) shows users belonging to a group.\0A\0A -p, --primary show only members for which GROUP is their\0A primary group\0A -s, --secondary show only members who have a secondary\0A membership in GROUP\0A -t, --two-lines show primary members on the first line of output\0A and secondary members on the second line; two\0A lines are always printed\0A -h, --help display this help and exit\0A -v, --version output version information and exit\0A\0AExit status:\0A 0 OK\0A 1 input error (e.g. no GROUP, unrecognised flag)\0A 2 GROUP does not exist\0A 3 GROUP exists but could not be opened (see error message)\0A 4 GROUP did not have any members\0A\00"
define void @print_help() {
%1 = load i32, i32* @stdout
%2 = call i32 @print_usage(i32 %1)
%3 = call i32 @puts(i8* getelementptr inbounds ([929 x i8], [929 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stdout = global i32 0
@.str = [929 x i8] c"Show members of a group.\0A\0Amembers(1) is the complement of groups(1): where groups(1) shows the groups a\0Auser belongs to, members(1) shows users belonging to a group.\0A\0A -p, --primary show only members for which GROUP is their\0A primary group\0A -s, --secondary show only members who have a secondary\0A membership in GROUP\0A -t, --two-lines show primary members on the first line of output\0A and secondary members on the second line; two\0A lines are always printed\0A -h, --help display this help and exit\0A -v, --version output version information and exit\0A\0AExit status:\0A 0 OK\0A 1 input error (e.g. no GROUP, unrecognised flag)\0A 2 GROUP does not exist\0A 3 GROUP exists but could not be opened (see error message)\0A 4 GROUP did not have any members\0A\00"
define void @print_help() {
%1 = load i32, i32* @stdout
%2 = tail call i32 @print_usage(i32 %1)
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([929 x i8], [929 x i8]* @.str, i64 0, i64 0))
ret void
}