#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 usage(void) {
  printf(
      " [-a|-r] -u <user> -g <groupid> <samhive>\n"
      "Add or remove a (local) user to/from a group\n"
      "Mode:"
      "   -a = add user to group\n"
      "   -r = remove user from group\n"
      "   -l = list groups\n"
      "   -L = list groups and also their members\n"
      "   -s = Print machine SID\n"
      "Parameters:\n"
      "   <user> can be given as a username or a RID in hex with 0x in front\n"
      "   <group> is the group number, in hex with 0x in front\n"
      "   Example:\n"
      "   -a -u theboss -g 0x220 -> add user named 'theboss' group hex 220 "
      "(administrators)\n"
      "   -a -u 0x3ea -g 0x221 -> add user with RID (hex) 3ea group hex 221 "
      "(users)\n"
      "   -r -u 0x3ff -g 0x220 -> remove user RID 0x3ff from grp 0x220\n"
      "   Usernames with international characters usually fails to be found,\n"
      "   please use RID number instead\n"
      "   If success, there will be no output, and exit code is 0\n"
      "   Also, success if user already in (or not in if -r) the group\n"
      "Options:\n"
      "   -H : Human readable output, else parsable\n"
      "   -N : No allocate mode, only allow edit of existing values with same "
      "size\n"
      "   -E : No expand mode, do not expand hive file (safe mode)\n"
      "   -t : Debug trace of allocated blocks\n"
      "   -v : Some more verbose messages/debug\n"
      "Multi call binary, if program is named:\n"
      "  samusrtogrp -- Assume -a mode: Add a user into a group\n"
      "  samusrfromgrp -- Assume -r mode: Remove user from a group\n");
}


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

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

LLVM IR (-O0):
@.str = [1269 x i8] c" [-a|-r] -u <user> -g <groupid> <samhive>\0AAdd or remove a (local) user to/from a group\0AMode: -a = add user to group\0A -r = remove user from group\0A -l = list groups\0A -L = list groups and also their members\0A -s = Print machine SID\0AParameters:\0A <user> can be given as a username or a RID in hex with 0x in front\0A <group> is the group number, in hex with 0x in front\0A Example:\0A -a -u theboss -g 0x220 -> add user named 'theboss' group hex 220 (administrators)\0A -a -u 0x3ea -g 0x221 -> add user with RID (hex) 3ea group hex 221 (users)\0A -r -u 0x3ff -g 0x220 -> remove user RID 0x3ff from grp 0x220\0A Usernames with international characters usually fails to be found,\0A please use RID number instead\0A If success, there will be no output, and exit code is 0\0A Also, success if user already in (or not in if -r) the group\0AOptions:\0A -H : Human readable output, else parsable\0A -N : No allocate mode, only allow edit of existing values with same size\0A -E : No expand mode, do not expand hive file (safe mode)\0A -t : Debug trace of allocated blocks\0A -v : Some more verbose messages/debug\0AMulti call binary, if program is named:\0A samusrtogrp -- Assume -a mode: Add a user into a group\0A samusrfromgrp -- Assume -r mode: Remove user from a group\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1269 x i8], [1269 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1268 x i8] c" [-a|-r] -u <user> -g <groupid> <samhive>\0AAdd or remove a (local) user to/from a group\0AMode: -a = add user to group\0A -r = remove user from group\0A -l = list groups\0A -L = list groups and also their members\0A -s = Print machine SID\0AParameters:\0A <user> can be given as a username or a RID in hex with 0x in front\0A <group> is the group number, in hex with 0x in front\0A Example:\0A -a -u theboss -g 0x220 -> add user named 'theboss' group hex 220 (administrators)\0A -a -u 0x3ea -g 0x221 -> add user with RID (hex) 3ea group hex 221 (users)\0A -r -u 0x3ff -g 0x220 -> remove user RID 0x3ff from grp 0x220\0A Usernames with international characters usually fails to be found,\0A please use RID number instead\0A If success, there will be no output, and exit code is 0\0A Also, success if user already in (or not in if -r) the group\0AOptions:\0A -H : Human readable output, else parsable\0A -N : No allocate mode, only allow edit of existing values with same size\0A -E : No expand mode, do not expand hive file (safe mode)\0A -t : Debug trace of allocated blocks\0A -v : Some more verbose messages/debug\0AMulti call binary, if program is named:\0A samusrtogrp -- Assume -a mode: Add a user into a group\0A samusrfromgrp -- Assume -r mode: Remove user from a group\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1268 x i8], [1268 x i8]* @str, i64 0, i64 0))
ret void
}