#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage() {
  fprintf(stderr,
          "Usage: clipenc [-e | -d] [-g] [-k USER] [-i FILE_IN] [-o FILE_OUT] "
          "[-P PASSWD]  \n       [--key_file K_FILE] [--opt_file O_FILE] "
          "[--algo ALGO_NAME] [--kid KEY_ID] \n       [--reset_key_file] "
          "[--reset_opt_file] [--use_pwd] [-h]\n");
  fprintf(
      stderr,
      "Easy encryption/decryption tool.\n\nOptions:\n -e, --encrypt         "
      "encrypt data from standard input or FILE_IN\n                       to "
      "standard output or FILE_OUT\n -d, --decrypt         decrypt data from "
      "standard input or FILE_IN\n                       to standard output or "
      "FILE_OUT\n -g, --gen_key         generate a new key\n -k, "
      "--key_transmit    print the current key for key transmission to USER\n "
      "-i, --input_file      use FILE_IN instead of the standard input\n -o, "
      "--output_file     use FILE_OUT instead of the standard output\n -P, "
      "--pwd             use PASSWD for key file encryption\n --key_file       "
      "     use K_FILE as the key file instead of the default file\n "
      "--opt_file            use O_FILE as the option file instead of the "
      "default file\n --algo                select ALGO_NAME as the default "
      "encryption algorithm\n --kid                 select KEY_ID as the "
      "current key\n --reset_key_file      reset the default key file or "
      "K_FILE if specified\n                       warning: all the keys "
      "stored in the file are erased\n --reset_opt_file      reset the default "
      "option file or O_FILE if specified\n                       warning: all "
      "the option stored in the file are erased\n --use_pwd             "
      "encrypt the key file\n -h, --help            display this "
      "message\n\nExamples:\n - generate a new key in the default key file:\n "
      "clipenc -g\n - encrypt the message \"hello\" and store it in file "
      "msg.txt:\n echo \"hello\" | clipenc -c -o msg.txt\n - decrypt the "
      "message msg.txt and print it:\n cat msg.txt | clipenc -d\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2eb0(%rip),%rax
mov    (%rax),%edi
lea    0xfa9(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rbx
mov    0x2ec8(%rip),%rbx
mov    (%rbx),%edi
lea    0xedf(%rip),%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
lea    0xfb3(%rip),%rsi
pop    %rbx
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [226 x i8] c"Usage: clipenc [-e | -d] [-g] [-k USER] [-i FILE_IN] [-o FILE_OUT] [-P PASSWD] \0A [--key_file K_FILE] [--opt_file O_FILE] [--algo ALGO_NAME] [--kid KEY_ID] \0A [--reset_key_file] [--reset_opt_file] [--use_pwd] [-h]\0A\00"
@.str.1 = [1512 x i8] c"Easy encryption/decryption tool.\0A\0AOptions:\0A -e, --encrypt encrypt data from standard input or FILE_IN\0A to standard output or FILE_OUT\0A -d, --decrypt decrypt data from standard input or FILE_IN\0A to standard output or FILE_OUT\0A -g, --gen_key generate a new key\0A -k, --key_transmit print the current key for key transmission to USER\0A -i, --input_file use FILE_IN instead of the standard input\0A -o, --output_file use FILE_OUT instead of the standard output\0A -P, --pwd use PASSWD for key file encryption\0A --key_file use K_FILE as the key file instead of the default file\0A --opt_file use O_FILE as the option file instead of the default file\0A --algo select ALGO_NAME as the default encryption algorithm\0A --kid select KEY_ID as the current key\0A --reset_key_file reset the default key file or K_FILE if specified\0A warning: all the keys stored in the file are erased\0A --reset_opt_file reset the default option file or O_FILE if specified\0A warning: all the option stored in the file are erased\0A --use_pwd encrypt the key file\0A -h, --help display this message\0A\0AExamples:\0A - generate a new key in the default key file:\0A clipenc -g\0A - encrypt the message \22hello\22 and store it in file msg.txt:\0A echo \22hello\22 | clipenc -c -o msg.txt\0A - decrypt the message msg.txt and print it:\0A cat msg.txt | clipenc -d\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([226 x i8], [226 x i8]* @.str, i64 0, i64 0))
%3 = load i32, i32* @stderr
%4 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([1512 x i8], [1512 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [226 x i8] c"Usage: clipenc [-e | -d] [-g] [-k USER] [-i FILE_IN] [-o FILE_OUT] [-P PASSWD] \0A [--key_file K_FILE] [--opt_file O_FILE] [--algo ALGO_NAME] [--kid KEY_ID] \0A [--reset_key_file] [--reset_opt_file] [--use_pwd] [-h]\0A\00"
@.str.1 = [1512 x i8] c"Easy encryption/decryption tool.\0A\0AOptions:\0A -e, --encrypt encrypt data from standard input or FILE_IN\0A to standard output or FILE_OUT\0A -d, --decrypt decrypt data from standard input or FILE_IN\0A to standard output or FILE_OUT\0A -g, --gen_key generate a new key\0A -k, --key_transmit print the current key for key transmission to USER\0A -i, --input_file use FILE_IN instead of the standard input\0A -o, --output_file use FILE_OUT instead of the standard output\0A -P, --pwd use PASSWD for key file encryption\0A --key_file use K_FILE as the key file instead of the default file\0A --opt_file use O_FILE as the option file instead of the default file\0A --algo select ALGO_NAME as the default encryption algorithm\0A --kid select KEY_ID as the current key\0A --reset_key_file reset the default key file or K_FILE if specified\0A warning: all the keys stored in the file are erased\0A --reset_opt_file reset the default option file or O_FILE if specified\0A warning: all the option stored in the file are erased\0A --use_pwd encrypt the key file\0A -h, --help display this message\0A\0AExamples:\0A - generate a new key in the default key file:\0A clipenc -g\0A - encrypt the message \22hello\22 and store it in file msg.txt:\0A echo \22hello\22 | clipenc -c -o msg.txt\0A - decrypt the message msg.txt and print it:\0A cat msg.txt | clipenc -d\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([226 x i8], [226 x i8]* @.str, i64 0, i64 0))
%3 = load i32, i32* @stderr
%4 = tail call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([1512 x i8], [1512 x i8]* @.str.1, i64 0, i64 0))
ret void
}