#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*/ llib_print_f(int, char *);
void usage() {
  llib_print_f(1, "usage: lcap list (list available capabilities)\n");
  llib_print_f(
      1, "       lcap get_process pid (show capabilities of process #pid)\n");
  llib_print_f(1,
               "       lcap get_file path (show capabilities of file #path)\n");
  llib_print_f(1, "       lcap set_process pid cap_string (set capabilities of "
                  "process #pid)\n");
  llib_print_f(1, "       lcap set_file path cap_string (set capabilities of "
                  "file #path)\n");
  llib_print_f(
      1, "       format of cap_string: +|-cap_xxx:pie,.. OR +|-all:pie..\n");
  llib_print_f(1, "       example: +cap_chown:p,-all:i,-cap_sys_module:e\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    $0x1,%edi
lea    0xee0(%rip),%rsi
call   1030 <llib_print_f@plt>
mov    $0x1,%edi
lea    0xeff(%rip),%rsi
call   1030 <llib_print_f@plt>
mov    $0x1,%edi
lea    0xf2f(%rip),%rsi
call   1030 <llib_print_f@plt>
mov    $0x1,%edi
lea    0xf5b(%rip),%rsi
call   1030 <llib_print_f@plt>
mov    $0x1,%edi
lea    0xf95(%rip),%rsi
call   1030 <llib_print_f@plt>
mov    $0x1,%edi
lea    0xfcb(%rip),%rsi
call   1030 <llib_print_f@plt>
mov    $0x1,%edi
lea    0xffa(%rip),%rsi
call   1030 <llib_print_f@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xee8(%rip),%rsi
mov    $0x1,%edi
call   1030 <llib_print_f@plt>
lea    0xf07(%rip),%rsi
mov    $0x1,%edi
call   1030 <llib_print_f@plt>
lea    0xf37(%rip),%rsi
mov    $0x1,%edi
call   1030 <llib_print_f@plt>
lea    0xf63(%rip),%rsi
mov    $0x1,%edi
call   1030 <llib_print_f@plt>
lea    0xf9d(%rip),%rsi
mov    $0x1,%edi
call   1030 <llib_print_f@plt>
lea    0xfd3(%rip),%rsi
mov    $0x1,%edi
call   1030 <llib_print_f@plt>
lea    0x1002(%rip),%rsi
mov    $0x1,%edi
pop    %rax
jmp    1030 <llib_print_f@plt>

LLVM IR (-O0):
@.str = [48 x i8] c"usage: lcap list (list available capabilities)\0A\00"
@.str.1 = [65 x i8] c" lcap get_process pid (show capabilities of process #pid)\0A\00"
@.str.2 = [61 x i8] c" lcap get_file path (show capabilities of file #path)\0A\00"
@.str.3 = [75 x i8] c" lcap set_process pid cap_string (set capabilities of process #pid)\0A\00"
@.str.4 = [71 x i8] c" lcap set_file path cap_string (set capabilities of file #path)\0A\00"
@.str.5 = [64 x i8] c" format of cap_string: +|-cap_xxx:pie,.. OR +|-all:pie..\0A\00"
@.str.6 = [55 x i8] c" example: +cap_chown:p,-all:i,-cap_sys_module:e\0A\00"
define void @usage() {
%1 = call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([75 x i8], [75 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.6, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [48 x i8] c"usage: lcap list (list available capabilities)\0A\00"
@.str.1 = [65 x i8] c" lcap get_process pid (show capabilities of process #pid)\0A\00"
@.str.2 = [61 x i8] c" lcap get_file path (show capabilities of file #path)\0A\00"
@.str.3 = [75 x i8] c" lcap set_process pid cap_string (set capabilities of process #pid)\0A\00"
@.str.4 = [71 x i8] c" lcap set_file path cap_string (set capabilities of file #path)\0A\00"
@.str.5 = [64 x i8] c" format of cap_string: +|-cap_xxx:pie,.. OR +|-all:pie..\0A\00"
@.str.6 = [55 x i8] c" example: +cap_chown:p,-all:i,-cap_sys_module:e\0A\00"
define void @usage() {
%1 = tail call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.1, i64 0, i64 0))
%3 = tail call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.2, i64 0, i64 0))
%4 = tail call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([75 x i8], [75 x i8]* @.str.3, i64 0, i64 0))
%5 = tail call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.4, i64 0, i64 0))
%6 = tail call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.5, i64 0, i64 0))
%7 = tail call i32 @llib_print_f(i32 1, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.6, i64 0, i64 0))
ret void
}