#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*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void show_usage(int badarg) {
  fprintf(
      stderr,
      "Usage:                                                                  "
      "               \n"
      " mv_cesa_tool -h                                                        "
      "               \n"
      "   Display this help.                                                   "
      "               \n"
      "                                                                        "
      "               \n"
      " mv_cesa_tool -test  <test_mode> <iter> <req_size> <checkmode>	"
      "			\n"
      "	(can be used only in Test Mode)					"
      "		\n"
      "	test_mode: Multi, Size AES, DES, 3DES MD5 SHA1     		"
      "		\n"
      "	iter	 : number of iteration to run				"
      "		\n"
      "	req_size : size of the buffer to be encrypt/decrypt/HASING	"
      "		\n"
      "	checkmode: 0 - Fast verify 					"
      "		\n"
      "		   1 - Full verify					"
      "	        \n"
      "		   2 - without verify (for performence)			"
      "		\n"
      "									"
      "		\n"
      " mv_cesa_tool -test -s <iter> <req_size> <session_id> <data_id>	"
      "		\n"
      "       (can be used only in Test Mode)                                  "
      "               \n"
      "	+++ for debug usage only +++					"
      "		\n"
      "	req_size  : size of the buffer to be encrypt/decrypt/HASING            "
      "         \n"
      "	iter      : number of iteration to run 				"
      "		\n"
      "	session_id: which session to open out of the cesa_test session see in "
      "kernel.	\n"
      "	data_id   : which data pattern to use out of the cesa_test session see "
      "in kernel\n"
      "       checkmode : 0 - Fast verify                                      "
      "               \n"
      "                   1 - Full verify                                      "
      "               \n"
      "                   2 - without verify (for performence)                 "
      "               \n"
      "									"
      "		\n"
      " mv_cesa_tool -debug <debug_mode> [-i index] [-v] [-s size]	"
      "			\n"
      "	(Tst_req, Tst_stats and Tst_ses can be used only in Test Mode)	"
      "		\n"
      "	debug_mode: Sts       - display general status 			"
      "		\n"
      "		    Chan      - display channel index status 		"
      "		\n"
      "		    Q         - display SW Q 				"
      "		\n"
      "		    SA        - display SA index 			"
      "		\n"
      "		    SAD       - display entire SAD			"
      "		\n"
      "		    Sram - display SRAM contents			"
      "		\n"
      "		    Tst_req - display request index with buffer of size "
      "size		\n"
      "                   Tst_stats - display test statistics                  "
      "               \n"
      "		    Tst_ses - display session index			"
      "		\n"
      "	-i index  : index (only relevant for: Chan, SA, Tst_req and Tst_ses  \n"
      "	-v        : verbose mode					"
      "		\n"
      "	-s size	  : buffer size (only relevant for Tst_req)		"
      "		\n\n");
  exit(badarg);
}


x86 assembly (clang, -O0):
<show_usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
mov    0x2eae(%rip),%rax
mov    (%rax),%edi
lea    0xec5(%rip),%rsi
call   1030 <fprintf@plt>
mov    -0x4(%rbp),%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<show_usage>:
push   %rbx
mov    %edi,%ebx
mov    0x2eb6(%rip),%rax
mov    (%rax),%edi
lea    0xecd(%rip),%rsi
call   1030 <fprintf@plt>
mov    %ebx,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [2267 x i8] c"Usage: \0A mv_cesa_tool -h \0A Display this help. \0A \0A mv_cesa_tool -test <test_mode> <iter> <req_size> <checkmode>\09\09\09\09\0A\09(can be used only in Test Mode)\09\09\09\09\09\09\09\0A\09test_mode: Multi, Size AES, DES, 3DES MD5 SHA1 \09\09\09\09\0A\09iter\09 : number of iteration to run\09\09\09\09\09\09\0A\09req_size : size of the buffer to be encrypt/decrypt/HASING\09\09\09\0A\09checkmode: 0 - Fast verify \09\09\09\09\09\09\09\0A\09\09 1 - Full verify\09\09\09\09\09\09 \0A\09\09 2 - without verify (for performence)\09\09\09\09\09\0A\09\09\09\09\09\09\09\09\09\09\09\0A mv_cesa_tool -test -s <iter> <req_size> <session_id> <data_id>\09\09\09\0A (can be used only in Test Mode) \0A\09+++ for debug usage only +++\09\09\09\09\09\09\09\0A\09req_size : size of the buffer to be encrypt/decrypt/HASING \0A\09iter : number of iteration to run \09\09\09\09\09\09\0A\09session_id: which session to open out of the cesa_test session see in kernel.\09\0A\09data_id : which data pattern to use out of the cesa_test session see in kernel\0A checkmode : 0 - Fast verify \0A 1 - Full verify \0A 2 - without verify (for performence) \0A\09\09\09\09\09\09\09\09\09\09\09\0A mv_cesa_tool -debug <debug_mode> [-i index] [-v] [-s size]\09\09\09\09\0A\09(Tst_req, Tst_stats and Tst_ses can be used only in Test Mode)\09\09\09\0A\09debug_mode: Sts - display general status \09\09\09\09\09\0A\09\09 Chan - display channel index status \09\09\09\09\0A\09\09 Q - display SW Q \09\09\09\09\09\09\0A\09\09 SA - display SA index \09\09\09\09\09\0A\09\09 SAD - display entire SAD\09\09\09\09\09\0A\09\09 Sram - display SRAM contents\09\09\09\09\09\0A\09\09 Tst_req - display request index with buffer of size size\09\09\0A Tst_stats - display test statistics \0A\09\09 Tst_ses - display session index\09\09\09\09\09\0A\09-i index : index (only relevant for: Chan, SA, Tst_req and Tst_ses \0A\09-v : verbose mode\09\09\09\09\09\09\09\0A\09-s size\09 : buffer size (only relevant for Tst_req)\09\09\09\09\0A\0A\00"
define void @show_usage(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = load i32, i32* @stderr
%4 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([2267 x i8], [2267 x i8]* @.str, i64 0, i64 0))
%5 = load i32, i32* %2
%6 = call i32 @exit(i32 %5)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [2267 x i8] c"Usage: \0A mv_cesa_tool -h \0A Display this help. \0A \0A mv_cesa_tool -test <test_mode> <iter> <req_size> <checkmode>\09\09\09\09\0A\09(can be used only in Test Mode)\09\09\09\09\09\09\09\0A\09test_mode: Multi, Size AES, DES, 3DES MD5 SHA1 \09\09\09\09\0A\09iter\09 : number of iteration to run\09\09\09\09\09\09\0A\09req_size : size of the buffer to be encrypt/decrypt/HASING\09\09\09\0A\09checkmode: 0 - Fast verify \09\09\09\09\09\09\09\0A\09\09 1 - Full verify\09\09\09\09\09\09 \0A\09\09 2 - without verify (for performence)\09\09\09\09\09\0A\09\09\09\09\09\09\09\09\09\09\09\0A mv_cesa_tool -test -s <iter> <req_size> <session_id> <data_id>\09\09\09\0A (can be used only in Test Mode) \0A\09+++ for debug usage only +++\09\09\09\09\09\09\09\0A\09req_size : size of the buffer to be encrypt/decrypt/HASING \0A\09iter : number of iteration to run \09\09\09\09\09\09\0A\09session_id: which session to open out of the cesa_test session see in kernel.\09\0A\09data_id : which data pattern to use out of the cesa_test session see in kernel\0A checkmode : 0 - Fast verify \0A 1 - Full verify \0A 2 - without verify (for performence) \0A\09\09\09\09\09\09\09\09\09\09\09\0A mv_cesa_tool -debug <debug_mode> [-i index] [-v] [-s size]\09\09\09\09\0A\09(Tst_req, Tst_stats and Tst_ses can be used only in Test Mode)\09\09\09\0A\09debug_mode: Sts - display general status \09\09\09\09\09\0A\09\09 Chan - display channel index status \09\09\09\09\0A\09\09 Q - display SW Q \09\09\09\09\09\09\0A\09\09 SA - display SA index \09\09\09\09\09\0A\09\09 SAD - display entire SAD\09\09\09\09\09\0A\09\09 Sram - display SRAM contents\09\09\09\09\09\0A\09\09 Tst_req - display request index with buffer of size size\09\09\0A Tst_stats - display test statistics \0A\09\09 Tst_ses - display session index\09\09\09\09\09\0A\09-i index : index (only relevant for: Chan, SA, Tst_req and Tst_ses \0A\09-v : verbose mode\09\09\09\09\09\09\09\0A\09-s size\09 : buffer size (only relevant for Tst_req)\09\09\09\09\0A\0A\00"
define void @show_usage(i32 %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([2267 x i8], [2267 x i8]* @.str, i64 0, i64 0))
%4 = tail call i32 @exit(i32 %0)
unreachable
}